summaryrefslogtreecommitdiff
path: root/REORG.TODO/sysdeps/ieee754
diff options
context:
space:
mode:
authorZack Weinberg <zackw@panix.com>2017-06-08 15:39:03 -0400
committerZack Weinberg <zackw@panix.com>2017-06-08 15:39:03 -0400
commit5046dbb4a7eba5eccfd258f92f4735c9ffc8d069 (patch)
tree4470480d904b65cf14ca524f96f79eca818c3eaf /REORG.TODO/sysdeps/ieee754
parent199fc19d3aaaf57944ef036e15904febe877fc93 (diff)
downloadglibc-5046dbb4a7eba5eccfd258f92f4735c9ffc8d069.tar.gz
Prepare for radical source tree reorganization.zack/build-layout-experiment
All top-level files and directories are moved into a temporary storage directory, REORG.TODO, except for files that will certainly still exist in their current form at top level when we're done (COPYING, COPYING.LIB, LICENSES, NEWS, README), all old ChangeLog files (which are moved to the new directory OldChangeLogs, instead), and the generated file INSTALL (which is just deleted; in the new order, there will be no generated files checked into version control).
Diffstat (limited to 'REORG.TODO/sysdeps/ieee754')
-rw-r--r--REORG.TODO/sysdeps/ieee754/Makefile4
-rw-r--r--REORG.TODO/sysdeps/ieee754/bits/huge_val.h53
-rw-r--r--REORG.TODO/sysdeps/ieee754/bits/huge_valf.h51
-rw-r--r--REORG.TODO/sysdeps/ieee754/bits/inf.h29
-rw-r--r--REORG.TODO/sysdeps/ieee754/bits/nan.h52
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/Makefile6
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/MathLib.h100
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/asincos.tbl5168
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/atnat.h154
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/atnat2.h161
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/branred.c144
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/branred.h80
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/dbl2mpn.c107
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/dla.h183
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/doasin.c84
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/doasin.h63
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/dosincos.c223
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/dosincos.h80
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/e_acos.c1
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/e_acosh.c69
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/e_asin.c647
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/e_atan2.c620
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/e_atanh.c74
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/e_cosh.c88
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/e_exp.c361
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/e_exp10.c50
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/e_exp2.c133
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/e_fmod.c173
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/e_gamma_r.c220
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/e_hypot.c161
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/e_ilogb.c63
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/e_j0.c458
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/e_j1.c466
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/e_jn.c347
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/e_lgamma_r.c310
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/e_log.c262
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/e_log10.c88
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/e_log2.c133
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/e_pow.c481
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/e_rem_pio2.c193
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/e_remainder.c152
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/e_sinh.c90
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/e_sqrt.c139
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/gamma_product.c45
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/gamma_productf.c43
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/halfulp.c152
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/k_cos.c1
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/k_rem_pio2.c362
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/k_sin.c1
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/k_tan.c1
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/lgamma_neg.c383
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/lgamma_product.c52
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/mpa-arch.h47
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/mpa.c906
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/mpa.h154
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/mpatan.c116
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/mpatan.h145
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/mpatan2.c67
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/mpexp.c163
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/mplog.c65
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/mpn2dbl.c47
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/mpsqrt.c111
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/mpsqrt.h38
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/mptan.c63
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/mydefs.h35
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/powtwo.tbl31
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/root.tbl57
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/s_asinh.c72
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/s_atan.c328
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/s_cbrt.c76
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/s_ceil.c89
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/s_copysign.c39
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/s_cos.c1
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/s_erf.c428
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/s_expm1.c262
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/s_fabs.c32
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/s_finite.c50
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/s_floor.c89
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/s_fma.c301
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/s_fmaf.c64
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/s_fpclassify.c43
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/s_frexp.c58
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/s_fromfp.c7
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/s_fromfp_main.c82
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/s_fromfpx.c7
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/s_getpayload.c37
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/s_isinf.c36
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/s_isnan.c44
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/s_issignaling.c47
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/s_llrint.c103
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/s_llround.c91
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/s_log1p.c195
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/s_logb.c52
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/s_lrint.c127
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/s_lround.c113
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/s_modf.c86
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/s_nearbyint.c78
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/s_nexttoward.c1
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/s_nextup.c58
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/s_remquo.c115
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/s_rint.c67
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/s_round.c83
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/s_roundeven.c106
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/s_scalbln.c63
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/s_scalbn.c63
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/s_setpayload.c6
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/s_setpayload_main.c69
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/s_setpayloadsig.c6
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/s_signbit.c26
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/s_sin.c927
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/s_sincos.c113
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/s_tan.c848
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/s_tanh.c98
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/s_totalorder.c54
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/s_totalordermag.c49
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/s_trunc.c62
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/s_ufromfp.c7
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/s_ufromfpx.c7
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/sincos32.c369
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/sincos32.h81
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/sincostab.c914
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/slowexp.c86
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/slowpow.c125
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/t_exp.c435
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/t_exp2.h585
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/uasncs.h69
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/uatan.tbl11134
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/uexp.h69
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/uexp.tbl1786
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/ulog.h187
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/ulog.tbl3326
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/upow.h76
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/upow.tbl10188
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/urem.h46
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/usncs.h48
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/utan.h265
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/utan.tbl1525
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/w_exp_compat.c38
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/wordsize-64/e_acosh.c67
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/wordsize-64/e_cosh.c84
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/wordsize-64/e_fmod.c105
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/wordsize-64/e_log10.c87
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/wordsize-64/e_log2.c128
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/wordsize-64/s_ceil.c54
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/wordsize-64/s_finite.c42
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/wordsize-64/s_floor.c74
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/wordsize-64/s_frexp.c69
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/wordsize-64/s_getpayload.c33
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/wordsize-64/s_isinf.c33
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/wordsize-64/s_isnan.c39
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/wordsize-64/s_issignaling.c43
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/wordsize-64/s_llround.c82
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/wordsize-64/s_logb.c48
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/wordsize-64/s_lround.c89
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/wordsize-64/s_modf.c66
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/wordsize-64/s_nearbyint.c66
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/wordsize-64/s_remquo.c114
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/wordsize-64/s_rint.c60
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/wordsize-64/s_round.c68
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/wordsize-64/s_roundeven.c72
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/wordsize-64/s_scalbln.c60
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/wordsize-64/s_scalbn.c60
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/wordsize-64/s_setpayload_main.c53
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/wordsize-64/s_totalorder.c50
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/wordsize-64/s_totalordermag.c47
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/wordsize-64/s_trunc.c57
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/x2y2m1.c75
-rw-r--r--REORG.TODO/sysdeps/ieee754/dbl-64/x2y2m1f.c32
-rw-r--r--REORG.TODO/sysdeps/ieee754/float128/Makeconfig3
-rw-r--r--REORG.TODO/sysdeps/ieee754/float128/Makefile3
-rw-r--r--REORG.TODO/sysdeps/ieee754/float128/Versions150
-rw-r--r--REORG.TODO/sysdeps/ieee754/float128/e_acosf128.c2
-rw-r--r--REORG.TODO/sysdeps/ieee754/float128/e_acoshf128.c2
-rw-r--r--REORG.TODO/sysdeps/ieee754/float128/e_asinf128.c2
-rw-r--r--REORG.TODO/sysdeps/ieee754/float128/e_atan2f128.c2
-rw-r--r--REORG.TODO/sysdeps/ieee754/float128/e_atanhf128.c2
-rw-r--r--REORG.TODO/sysdeps/ieee754/float128/e_coshf128.c2
-rw-r--r--REORG.TODO/sysdeps/ieee754/float128/e_exp10f128.c2
-rw-r--r--REORG.TODO/sysdeps/ieee754/float128/e_expf128.c2
-rw-r--r--REORG.TODO/sysdeps/ieee754/float128/e_fmodf128.c2
-rw-r--r--REORG.TODO/sysdeps/ieee754/float128/e_gammaf128_r.c2
-rw-r--r--REORG.TODO/sysdeps/ieee754/float128/e_hypotf128.c2
-rw-r--r--REORG.TODO/sysdeps/ieee754/float128/e_ilogbf128.c2
-rw-r--r--REORG.TODO/sysdeps/ieee754/float128/e_j0f128.c2
-rw-r--r--REORG.TODO/sysdeps/ieee754/float128/e_j1f128.c2
-rw-r--r--REORG.TODO/sysdeps/ieee754/float128/e_jnf128.c2
-rw-r--r--REORG.TODO/sysdeps/ieee754/float128/e_lgammaf128_r.c2
-rw-r--r--REORG.TODO/sysdeps/ieee754/float128/e_log10f128.c2
-rw-r--r--REORG.TODO/sysdeps/ieee754/float128/e_log2f128.c2
-rw-r--r--REORG.TODO/sysdeps/ieee754/float128/e_logf128.c2
-rw-r--r--REORG.TODO/sysdeps/ieee754/float128/e_powf128.c2
-rw-r--r--REORG.TODO/sysdeps/ieee754/float128/e_rem_pio2f128.c2
-rw-r--r--REORG.TODO/sysdeps/ieee754/float128/e_remainderf128.c2
-rw-r--r--REORG.TODO/sysdeps/ieee754/float128/e_scalbf128.c1
-rw-r--r--REORG.TODO/sysdeps/ieee754/float128/e_sinhf128.c2
-rw-r--r--REORG.TODO/sysdeps/ieee754/float128/float1282mpn.c20
-rw-r--r--REORG.TODO/sysdeps/ieee754/float128/float128_private.h326
-rw-r--r--REORG.TODO/sysdeps/ieee754/float128/gamma_productf128.c2
-rw-r--r--REORG.TODO/sysdeps/ieee754/float128/ieee754_float128.h140
-rw-r--r--REORG.TODO/sysdeps/ieee754/float128/k_cosf128.c2
-rw-r--r--REORG.TODO/sysdeps/ieee754/float128/k_sincosf128.c2
-rw-r--r--REORG.TODO/sysdeps/ieee754/float128/k_sinf128.c2
-rw-r--r--REORG.TODO/sysdeps/ieee754/float128/k_tanf128.c2
-rw-r--r--REORG.TODO/sysdeps/ieee754/float128/lgamma_negf128.c2
-rw-r--r--REORG.TODO/sysdeps/ieee754/float128/lgamma_productf128.c2
-rw-r--r--REORG.TODO/sysdeps/ieee754/float128/s_asinhf128.c2
-rw-r--r--REORG.TODO/sysdeps/ieee754/float128/s_atanf128.c2
-rw-r--r--REORG.TODO/sysdeps/ieee754/float128/s_cbrtf128.c2
-rw-r--r--REORG.TODO/sysdeps/ieee754/float128/s_ceilf128.c2
-rw-r--r--REORG.TODO/sysdeps/ieee754/float128/s_copysignf128.c2
-rw-r--r--REORG.TODO/sysdeps/ieee754/float128/s_cosf128.c2
-rw-r--r--REORG.TODO/sysdeps/ieee754/float128/s_erff128.c2
-rw-r--r--REORG.TODO/sysdeps/ieee754/float128/s_expm1f128.c2
-rw-r--r--REORG.TODO/sysdeps/ieee754/float128/s_fabsf128.c2
-rw-r--r--REORG.TODO/sysdeps/ieee754/float128/s_finitef128.c2
-rw-r--r--REORG.TODO/sysdeps/ieee754/float128/s_floorf128.c2
-rw-r--r--REORG.TODO/sysdeps/ieee754/float128/s_fmaf128.c2
-rw-r--r--REORG.TODO/sysdeps/ieee754/float128/s_fpclassifyf128.c2
-rw-r--r--REORG.TODO/sysdeps/ieee754/float128/s_frexpf128.c2
-rw-r--r--REORG.TODO/sysdeps/ieee754/float128/s_fromfpf128.c5
-rw-r--r--REORG.TODO/sysdeps/ieee754/float128/s_fromfpxf128.c5
-rw-r--r--REORG.TODO/sysdeps/ieee754/float128/s_getpayloadf128.c2
-rw-r--r--REORG.TODO/sysdeps/ieee754/float128/s_isinff128.c2
-rw-r--r--REORG.TODO/sysdeps/ieee754/float128/s_isnanf128.c2
-rw-r--r--REORG.TODO/sysdeps/ieee754/float128/s_issignalingf128.c2
-rw-r--r--REORG.TODO/sysdeps/ieee754/float128/s_llrintf128.c2
-rw-r--r--REORG.TODO/sysdeps/ieee754/float128/s_llroundf128.c2
-rw-r--r--REORG.TODO/sysdeps/ieee754/float128/s_log1pf128.c2
-rw-r--r--REORG.TODO/sysdeps/ieee754/float128/s_logbf128.c2
-rw-r--r--REORG.TODO/sysdeps/ieee754/float128/s_lrintf128.c2
-rw-r--r--REORG.TODO/sysdeps/ieee754/float128/s_lroundf128.c2
-rw-r--r--REORG.TODO/sysdeps/ieee754/float128/s_modff128.c2
-rw-r--r--REORG.TODO/sysdeps/ieee754/float128/s_nearbyintf128.c2
-rw-r--r--REORG.TODO/sysdeps/ieee754/float128/s_nextafterf128.c2
-rw-r--r--REORG.TODO/sysdeps/ieee754/float128/s_nexttowardf128.c1
-rw-r--r--REORG.TODO/sysdeps/ieee754/float128/s_nextupf128.c2
-rw-r--r--REORG.TODO/sysdeps/ieee754/float128/s_remquof128.c2
-rw-r--r--REORG.TODO/sysdeps/ieee754/float128/s_rintf128.c2
-rw-r--r--REORG.TODO/sysdeps/ieee754/float128/s_roundevenf128.c2
-rw-r--r--REORG.TODO/sysdeps/ieee754/float128/s_roundf128.c2
-rw-r--r--REORG.TODO/sysdeps/ieee754/float128/s_scalblnf128.c2
-rw-r--r--REORG.TODO/sysdeps/ieee754/float128/s_scalbnf128.c2
-rw-r--r--REORG.TODO/sysdeps/ieee754/float128/s_setpayloadf128.c4
-rw-r--r--REORG.TODO/sysdeps/ieee754/float128/s_setpayloadsigf128.c4
-rw-r--r--REORG.TODO/sysdeps/ieee754/float128/s_signbitf128.c2
-rw-r--r--REORG.TODO/sysdeps/ieee754/float128/s_significandf128.c1
-rw-r--r--REORG.TODO/sysdeps/ieee754/float128/s_sincosf128.c2
-rw-r--r--REORG.TODO/sysdeps/ieee754/float128/s_sinf128.c2
-rw-r--r--REORG.TODO/sysdeps/ieee754/float128/s_tanf128.c2
-rw-r--r--REORG.TODO/sysdeps/ieee754/float128/s_tanhf128.c2
-rw-r--r--REORG.TODO/sysdeps/ieee754/float128/s_totalorderf128.c2
-rw-r--r--REORG.TODO/sysdeps/ieee754/float128/s_totalordermagf128.c2
-rw-r--r--REORG.TODO/sysdeps/ieee754/float128/s_truncf128.c2
-rw-r--r--REORG.TODO/sysdeps/ieee754/float128/s_ufromfpf128.c5
-rw-r--r--REORG.TODO/sysdeps/ieee754/float128/s_ufromfpxf128.c5
-rw-r--r--REORG.TODO/sysdeps/ieee754/float128/strfromf128.c25
-rw-r--r--REORG.TODO/sysdeps/ieee754/float128/t_sincosf128.c2
-rw-r--r--REORG.TODO/sysdeps/ieee754/float128/x2y2m1f128.c2
-rw-r--r--REORG.TODO/sysdeps/ieee754/flt-32/e_acosf.c78
-rw-r--r--REORG.TODO/sysdeps/ieee754/flt-32/e_acoshf.c49
-rw-r--r--REORG.TODO/sysdeps/ieee754/flt-32/e_asinf.c104
-rw-r--r--REORG.TODO/sysdeps/ieee754/flt-32/e_atan2f.c94
-rw-r--r--REORG.TODO/sysdeps/ieee754/flt-32/e_atanhf.c74
-rw-r--r--REORG.TODO/sysdeps/ieee754/flt-32/e_coshf.c63
-rw-r--r--REORG.TODO/sysdeps/ieee754/flt-32/e_exp2f.c132
-rw-r--r--REORG.TODO/sysdeps/ieee754/flt-32/e_expf.c133
-rw-r--r--REORG.TODO/sysdeps/ieee754/flt-32/e_fmodf.c102
-rw-r--r--REORG.TODO/sysdeps/ieee754/flt-32/e_gammaf_r.c212
-rw-r--r--REORG.TODO/sysdeps/ieee754/flt-32/e_hypotf.c45
-rw-r--r--REORG.TODO/sysdeps/ieee754/flt-32/e_ilogbf.c44
-rw-r--r--REORG.TODO/sysdeps/ieee754/flt-32/e_j0f.c337
-rw-r--r--REORG.TODO/sysdeps/ieee754/flt-32/e_j1f.c347
-rw-r--r--REORG.TODO/sysdeps/ieee754/flt-32/e_jnf.c233
-rw-r--r--REORG.TODO/sysdeps/ieee754/flt-32/e_lgammaf_r.c246
-rw-r--r--REORG.TODO/sysdeps/ieee754/flt-32/e_log10f.c54
-rw-r--r--REORG.TODO/sysdeps/ieee754/flt-32/e_log2f.c86
-rw-r--r--REORG.TODO/sysdeps/ieee754/flt-32/e_logf.c85
-rw-r--r--REORG.TODO/sysdeps/ieee754/flt-32/e_powf.c258
-rw-r--r--REORG.TODO/sysdeps/ieee754/flt-32/e_rem_pio2f.c179
-rw-r--r--REORG.TODO/sysdeps/ieee754/flt-32/e_remainderf.c62
-rw-r--r--REORG.TODO/sysdeps/ieee754/flt-32/e_sinhf.c60
-rw-r--r--REORG.TODO/sysdeps/ieee754/flt-32/e_sqrtf.c86
-rw-r--r--REORG.TODO/sysdeps/ieee754/flt-32/k_cosf.c55
-rw-r--r--REORG.TODO/sysdeps/ieee754/flt-32/k_rem_pio2f.c208
-rw-r--r--REORG.TODO/sysdeps/ieee754/flt-32/k_sinf.c50
-rw-r--r--REORG.TODO/sysdeps/ieee754/flt-32/k_tanf.c101
-rw-r--r--REORG.TODO/sysdeps/ieee754/flt-32/lgamma_negf.c280
-rw-r--r--REORG.TODO/sysdeps/ieee754/flt-32/lgamma_productf.c1
-rw-r--r--REORG.TODO/sysdeps/ieee754/flt-32/mpn2flt.c41
-rw-r--r--REORG.TODO/sysdeps/ieee754/flt-32/s_asinhf.c50
-rw-r--r--REORG.TODO/sysdeps/ieee754/flt-32/s_atanf.c101
-rw-r--r--REORG.TODO/sysdeps/ieee754/flt-32/s_cbrtf.c63
-rw-r--r--REORG.TODO/sysdeps/ieee754/flt-32/s_ceilf.c48
-rw-r--r--REORG.TODO/sysdeps/ieee754/flt-32/s_copysignf.c37
-rw-r--r--REORG.TODO/sysdeps/ieee754/flt-32/s_cosf.c63
-rw-r--r--REORG.TODO/sysdeps/ieee754/flt-32/s_erff.c230
-rw-r--r--REORG.TODO/sysdeps/ieee754/flt-32/s_expm1f.c130
-rw-r--r--REORG.TODO/sysdeps/ieee754/flt-32/s_fabsf.c30
-rw-r--r--REORG.TODO/sysdeps/ieee754/flt-32/s_finitef.c41
-rw-r--r--REORG.TODO/sysdeps/ieee754/flt-32/s_floorf.c54
-rw-r--r--REORG.TODO/sysdeps/ieee754/flt-32/s_fpclassifyf.c42
-rw-r--r--REORG.TODO/sysdeps/ieee754/flt-32/s_frexpf.c44
-rw-r--r--REORG.TODO/sysdeps/ieee754/flt-32/s_fromfpf.c4
-rw-r--r--REORG.TODO/sysdeps/ieee754/flt-32/s_fromfpf_main.c82
-rw-r--r--REORG.TODO/sysdeps/ieee754/flt-32/s_fromfpxf.c4
-rw-r--r--REORG.TODO/sysdeps/ieee754/flt-32/s_getpayloadf.c33
-rw-r--r--REORG.TODO/sysdeps/ieee754/flt-32/s_isinff.c29
-rw-r--r--REORG.TODO/sysdeps/ieee754/flt-32/s_isnanf.c38
-rw-r--r--REORG.TODO/sysdeps/ieee754/flt-32/s_issignalingf.c43
-rw-r--r--REORG.TODO/sysdeps/ieee754/flt-32/s_llrintf.c86
-rw-r--r--REORG.TODO/sysdeps/ieee754/flt-32/s_llroundf.c73
-rw-r--r--REORG.TODO/sysdeps/ieee754/flt-32/s_log1pf.c102
-rw-r--r--REORG.TODO/sysdeps/ieee754/flt-32/s_logbf.c41
-rw-r--r--REORG.TODO/sysdeps/ieee754/flt-32/s_lrintf.c86
-rw-r--r--REORG.TODO/sysdeps/ieee754/flt-32/s_lroundf.c73
-rw-r--r--REORG.TODO/sysdeps/ieee754/flt-32/s_modff.c54
-rw-r--r--REORG.TODO/sysdeps/ieee754/flt-32/s_nearbyintf.c59
-rw-r--r--REORG.TODO/sysdeps/ieee754/flt-32/s_nextafterf.c73
-rw-r--r--REORG.TODO/sysdeps/ieee754/flt-32/s_nextupf.c46
-rw-r--r--REORG.TODO/sysdeps/ieee754/flt-32/s_remquof.c110
-rw-r--r--REORG.TODO/sysdeps/ieee754/flt-32/s_rintf.c50
-rw-r--r--REORG.TODO/sysdeps/ieee754/flt-32/s_roundevenf.c68
-rw-r--r--REORG.TODO/sysdeps/ieee754/flt-32/s_roundf.c63
-rw-r--r--REORG.TODO/sysdeps/ieee754/flt-32/s_scalblnf.c52
-rw-r--r--REORG.TODO/sysdeps/ieee754/flt-32/s_scalbnf.c52
-rw-r--r--REORG.TODO/sysdeps/ieee754/flt-32/s_setpayloadf.c3
-rw-r--r--REORG.TODO/sysdeps/ieee754/flt-32/s_setpayloadf_main.c53
-rw-r--r--REORG.TODO/sysdeps/ieee754/flt-32/s_setpayloadsigf.c3
-rw-r--r--REORG.TODO/sysdeps/ieee754/flt-32/s_signbitf.c26
-rw-r--r--REORG.TODO/sysdeps/ieee754/flt-32/s_sincosf.c84
-rw-r--r--REORG.TODO/sysdeps/ieee754/flt-32/s_sinf.c63
-rw-r--r--REORG.TODO/sysdeps/ieee754/flt-32/s_tanf.c49
-rw-r--r--REORG.TODO/sysdeps/ieee754/flt-32/s_tanhf.c62
-rw-r--r--REORG.TODO/sysdeps/ieee754/flt-32/s_totalorderf.c46
-rw-r--r--REORG.TODO/sysdeps/ieee754/flt-32/s_totalordermagf.c44
-rw-r--r--REORG.TODO/sysdeps/ieee754/flt-32/s_truncf.c53
-rw-r--r--REORG.TODO/sysdeps/ieee754/flt-32/s_ufromfpf.c4
-rw-r--r--REORG.TODO/sysdeps/ieee754/flt-32/s_ufromfpxf.c4
-rw-r--r--REORG.TODO/sysdeps/ieee754/flt-32/t_exp2f.h351
-rw-r--r--REORG.TODO/sysdeps/ieee754/flt-32/w_expf_compat.c34
-rw-r--r--REORG.TODO/sysdeps/ieee754/ieee754.h198
-rw-r--r--REORG.TODO/sysdeps/ieee754/k_standard.c943
-rw-r--r--REORG.TODO/sysdeps/ieee754/k_standardf.c31
-rw-r--r--REORG.TODO/sysdeps/ieee754/k_standardl.c107
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128/Makefile1
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128/bits/long-double.h20
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128/e_acoshl.c61
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128/e_acosl.c319
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128/e_asinl.c258
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128/e_atan2l.c122
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128/e_atanhl.c74
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128/e_coshl.c110
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128/e_exp10l.c49
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128/e_expl.c253
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128/e_fmodl.c131
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128/e_gammal_r.c218
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128/e_hypotl.c140
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128/e_ilogbl.c56
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128/e_j0l.c937
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128/e_j1l.c961
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128/e_jnl.c419
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128/e_lgammal_r.c1046
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128/e_log10l.c259
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128/e_log2l.c252
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128/e_logl.c282
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128/e_powl.c451
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128/e_rem_pio2l.c273
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128/e_remainderl.c71
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128/e_sinhl.c117
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128/gamma_productl.c45
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128/ieee754.h170
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128/k_cosl.c131
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128/k_sincosl.c170
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128/k_sinl.c135
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128/k_tanl.c168
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128/ldbl2mpn.c140
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128/lgamma_negl.c551
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128/lgamma_productl.c52
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128/math_ldbl.h120
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128/mpn2ldbl.c52
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128/printf_fphex.c25
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128/printf_fphex_macros.h104
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128/s_asinhl.c79
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128/s_atanl.c253
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128/s_cbrtl.c135
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128/s_ceill.c66
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128/s_copysignl.c38
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128/s_cosl.c86
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128/s_erfl.c948
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128/s_expm1l.c166
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128/s_fabsl.c34
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128/s_finitel.c36
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128/s_floorl.c67
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128/s_fma.c55
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128/s_fmal.c298
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128/s_fpclassifyl.c44
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128/s_frexpl.c54
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128/s_fromfpl.c4
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128/s_fromfpl_main.c90
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128/s_fromfpxl.c4
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128/s_getpayloadl.c57
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128/s_isinfl.c29
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128/s_isnanl.c38
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128/s_issignalingl.c46
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128/s_llrintl.c108
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128/s_llroundl.c102
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128/s_log1pl.c256
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128/s_logbl.c54
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128/s_lrintl.c137
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128/s_lroundl.c113
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128/s_modfl.c79
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128/s_nearbyintl.c67
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128/s_nextafterl.c86
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128/s_nexttoward.c89
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128/s_nexttowardf.c76
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128/s_nextupl.c56
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128/s_remquol.c112
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128/s_rintl.c62
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128/s_roundevenl.c102
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128/s_roundl.c80
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128/s_scalblnl.c62
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128/s_scalbnl.c62
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128/s_setpayloadl.c3
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128/s_setpayloadl_main.c69
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128/s_setpayloadsigl.c3
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128/s_signbitl.c27
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128/s_sincosl.c73
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128/s_sinl.c86
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128/s_tanhl.c100
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128/s_tanl.c80
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128/s_totalorderl.c54
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128/s_totalordermagl.c48
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128/s_truncl.c56
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128/s_ufromfpl.c4
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128/s_ufromfpxl.c4
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128/strtod_nan_ldouble.h33
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128/strtold_l.c37
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128/t_expl.h970
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128/t_sincosl.c696
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128/w_expl_compat.c42
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128/x2y2m1l.c76
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128ibm/Makefile16
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128ibm/bits/iscanonical.h41
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128ibm/e_acoshl.c62
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128ibm/e_acosl.c316
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128ibm/e_asinl.c250
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128ibm/e_atan2l.c122
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128ibm/e_atanhl.c71
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128ibm/e_coshl.c81
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128ibm/e_exp10l.c48
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128ibm/e_expl.c256
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128ibm/e_fmodl.c149
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128ibm/e_gammal_r.c218
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128ibm/e_hypotl.c138
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128ibm/e_ilogbl.c70
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128ibm/e_j0l.c5
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128ibm/e_j1l.c4
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128ibm/e_jnl.c421
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128ibm/e_lgammal_r.c5
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128ibm/e_log10l.c261
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128ibm/e_log2l.c254
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128ibm/e_logl.c300
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128ibm/e_powl.c415
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128ibm/e_rem_pio2l.c279
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128ibm/e_remainderl.c81
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128ibm/e_sinhl.c79
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128ibm/e_sqrtl.c102
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128ibm/gamma_productl.c42
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128ibm/ieee754.h133
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128ibm/include/bits/iscanonical.h5
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128ibm/k_cosl.c153
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128ibm/k_sincosl.c193
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128ibm/k_sinl.c157
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128ibm/k_tanl.c166
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128ibm/ldbl2mpn.c197
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128ibm/lgamma_negl.c532
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128ibm/lgamma_productl.c38
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128ibm/math_ldbl.h290
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128ibm/mpn2ldbl.c161
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128ibm/printf_fphex.c139
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_asinhl.c63
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_atanl.c250
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_cbrtl.c10
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_ceill.c62
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_copysignl.c41
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_cosl.c88
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_erfl.c970
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_expm1l.c152
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_fabsl.c44
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_finitel.c49
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_floorl.c62
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_fmal.c257
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_fpclassifyl.c97
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_frexpl.c148
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_fromfpl.c4
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_fromfpl_main.c147
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_fromfpxl.c4
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_getpayloadl.c34
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_iscanonicall.c60
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_isinfl.c40
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_isnanl.c46
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_issignalingl.c49
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_llrintl.c140
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_llroundl.c120
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_log1pl.c249
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_logbl.c63
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_lrintl.c155
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_lroundl.c135
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_modfl.c96
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_nearbyintl.c21
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_nextafterl.c160
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_nexttoward.c90
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_nexttowardf.c79
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_nextupl.c78
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_remquol.c119
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_rintl.c129
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_roundevenl.c69
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_roundl.c87
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_scalblnl.c104
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_scalbnl.c104
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_setpayloadl.c3
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_setpayloadl_main.c60
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_setpayloadsigl.c3
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_signbitl.c32
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_sincosl.c76
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_sinl.c85
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_tanhl.c87
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_tanl.c79
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_totalorderl.c62
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_totalordermagl.c64
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_truncl.c62
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_ufromfpl.c4
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_ufromfpxl.c4
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128ibm/strtod_nan_ldouble.h30
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128ibm/strtold_l.c60
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128ibm/t_sincosl.c693
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128ibm/test-canonical-ldbl-128ibm.c230
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128ibm/test-fmodl-ldbl-128ibm.c21
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128ibm/test-fmodrem-ldbl-128ibm.c84
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128ibm/test-remainderl-ldbl-128ibm.c21
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128ibm/test-remquol-ldbl-128ibm.c30
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128ibm/test-totalorderl-ldbl-128ibm.c73
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128ibm/tst-strtold-ldbl-128ibm.c85
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128ibm/w_expl_compat.c21
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-128ibm/x2y2m1l.c93
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-64-128/e_ilogbl.c2
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_asinhl.c5
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_atanl.c5
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_cbrtl.c5
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_ceill.c5
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_copysignl.c9
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_cosl.c5
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_erfl.c6
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_expm1l.c5
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_fabsl.c5
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_finitel.c17
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_floorl.c5
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_fmal.c5
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_fpclassifyl.c10
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_frexpl.c9
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_isinfl.c16
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_isnanl.c16
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_llrintl.c5
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_llroundl.c5
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_log1pl.c2
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_logbl.c5
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_lrintl.c5
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_lroundl.c5
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_modfl.c9
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_nearbyintl.c5
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_nextafterl.c6
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_nexttoward.c5
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_nexttowardf.c5
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_remquol.c5
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_rintl.c5
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_roundl.c5
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_scalblnl.c4
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_scalbnl.c4
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_signbitl.c11
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_sincosl.c5
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_sinl.c5
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_tanhl.c5
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_tanl.c5
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_truncl.c5
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-64-128/strtold_l.c60
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-64-128/w_expl_compat.c5
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-64-128/w_scalblnl.c26
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-96/Makefile21
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-96/bits/iscanonical.h34
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-96/bits/long-double.h20
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-96/e_acoshl.c61
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-96/e_asinl.c157
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-96/e_atanhl.c69
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-96/e_coshl.c87
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-96/e_gammal_r.c210
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-96/e_hypotl.c142
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-96/e_j0l.c531
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-96/e_j1l.c550
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-96/e_jnl.c404
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-96/e_lgammal_r.c439
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-96/e_rem_pio2l.c236
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-96/e_sinhl.c87
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-96/gamma_product.c43
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-96/gamma_productl.c45
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-96/include/bits/iscanonical.h5
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-96/k_cosl.c123
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-96/k_sinl.c130
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-96/k_tanl.c152
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-96/ldbl2mpn.c94
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-96/lgamma_negl.c418
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-96/lgamma_product.c37
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-96/lgamma_productl.c52
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-96/math_ldbl.h120
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-96/mpn2ldbl.c46
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-96/printf_fphex.c95
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-96/s_asinhl.c65
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-96/s_cbrtl.c70
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-96/s_copysignl.c38
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-96/s_cosl.c88
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-96/s_erfl.c451
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-96/s_fma.c101
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-96/s_fmal.c296
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-96/s_frexpl.c61
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-96/s_fromfpl.c4
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-96/s_fromfpl_main.c84
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-96/s_fromfpxl.c4
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-96/s_getpayloadl.c32
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-96/s_iscanonicall.c44
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-96/s_issignalingl.c44
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-96/s_llrintl.c91
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-96/s_llroundl.c89
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-96/s_lrintl.c126
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-96/s_lroundl.c111
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-96/s_modfl.c73
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-96/s_nexttoward.c86
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-96/s_nexttowardf.c74
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-96/s_nextupl.c84
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-96/s_remquol.c111
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-96/s_roundevenl.c124
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-96/s_roundl.c92
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-96/s_scalblnl.c60
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-96/s_setpayloadl.c3
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-96/s_setpayloadl_main.c68
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-96/s_setpayloadsigl.c3
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-96/s_signbitl.c26
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-96/s_sincosl.c76
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-96/s_sinl.c88
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-96/s_tanhl.c90
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-96/s_tanl.c81
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-96/s_totalorderl.c57
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-96/s_totalordermagl.c51
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-96/s_ufromfpl.c4
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-96/s_ufromfpxl.c4
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-96/strtod_nan_ldouble.h30
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-96/strtold_l.c37
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-96/t_sincosl.c483
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-96/test-canonical-ldbl-96.c141
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-96/test-totalorderl-ldbl-96.c82
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-96/w_expl_compat.c34
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-96/x2y2m1.c39
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-96/x2y2m1l.c75
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/Makefile167
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/Versions100
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/bits/long-double.h24
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/configure39
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/configure.ac19
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/math-type-macros-double.h38
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/math-type-macros-ldouble.h38
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/math_ldbl_opt.c3
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/math_ldbl_opt.h46
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-acos.c8
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-acosh.c8
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-asin.c8
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-asinh.c8
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-asprintf.c17
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-asprintf_chk.c15
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-atan.c8
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-atan2.c8
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-atanh.c8
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-cabs.c9
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-cacos.c9
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-cacosh.c9
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-canonicalize.c26
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-carg.c9
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-casin.c9
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-casinh.c9
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-catan.c9
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-catanh.c9
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-cbrt.c8
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-ccos.c9
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-ccosh.c9
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-ceil.c8
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-cexp.c9
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-cimag.c9
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-clog.c9
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-clog10.c11
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-compat.c1085
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-compat.h104
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-conj.c9
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-copysign.c8
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-cos.c8
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-cosh.c8
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-cpow.c9
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-cproj.c9
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-creal.c9
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-csin.c9
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-csinh.c9
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-csqrt.c9
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-ctan.c9
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-ctanh.c9
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-dprintf.c15
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-dprintf_chk.c15
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-erf.c8
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-erfc.c8
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-exp.c8
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-exp10.c8
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-exp2.c8
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-expm1.c8
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-fabs.c8
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-fdim.c8
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-finite.c10
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-floor.c8
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-fma.c8
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-fmax.c8
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-fmaxmag.c26
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-fmin.c8
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-fminmag.c26
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-fmod.c8
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-fprintf.c17
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-fprintf_chk.c15
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-frexp.c8
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-fromfp.c26
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-fromfpx.c26
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-fscanf.c15
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-fwprintf.c16
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-fwprintf_chk.c15
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-fwscanf.c15
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-gamma.c8
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-getpayload.c26
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-hypot.c8
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-ilogb.c8
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-iovfscanf.c8
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-isinf.c10
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-isnan.c10
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-isoc99_fscanf.c15
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-isoc99_fwscanf.c15
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-isoc99_scanf.c15
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-isoc99_sscanf.c15
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-isoc99_swscanf.c15
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-isoc99_vfscanf.c8
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-isoc99_vfwscanf.c8
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-isoc99_vscanf.c8
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-isoc99_vsscanf.c8
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-isoc99_vswscanf.c8
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-isoc99_vwscanf.c8
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-isoc99_wscanf.c15
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-j0.c8
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-j1.c8
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-jn.c8
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-ldexp.c8
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-lgamma.c8
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-lgamma_r.c8
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-llogb.c26
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-llrint.c8
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-llround.c8
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-log.c8
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-log10.c8
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-log1p.c8
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-log2.c8
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-logb.c8
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-lrint.c8
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-lround.c8
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-modf.c8
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-nan.c8
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-nearbyint.c8
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-nextafter.c8
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-nextdown.c27
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-nexttoward.c14
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-nexttowardf.c12
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-nextup.c27
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-obstack_printf.c13
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-obstack_printf_chk.c13
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-obstack_vprintf.c8
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-obstack_vprintf_chk.c9
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-pow.c8
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-pow10.c8
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-printf.c17
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-printf_chk.c15
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-printf_fp.c9
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-printf_size.c9
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-qecvt.c10
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-qecvt_r.c11
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-qfcvt.c10
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-qfcvt_r.c11
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-qgcvt.c10
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-remainder.c10
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-remquo.c8
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-rint.c8
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-round.c8
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-roundeven.c26
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-scalb.c8
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-scalbln.c8
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-scalbn.c8
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-scanf.c15
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-setpayload.c26
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-setpayloadsig.c26
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-signbit.c10
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-significand.c8
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-sin.c8
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-sincos.c8
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-sinh.c8
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-snprintf.c16
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-snprintf_chk.c16
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-sprintf.c17
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-sprintf_chk.c15
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-sqrt.c8
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-sscanf.c17
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-strfmon.c14
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-strfmon_l.c16
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-strfroml.c8
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-strtold.c10
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-strtold_l.c20
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-strtoldint.c10
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-swprintf.c15
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-swprintf_chk.c16
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-swscanf.c15
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-syslog.c11
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-syslog_chk.c12
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-tan.c8
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-tanh.c8
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-tgamma.c8
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-totalorder.c26
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-totalordermag.c26
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-trunc.c8
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-ufromfp.c26
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-ufromfpx.c26
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-vasprintf.c9
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-vasprintf_chk.c8
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-vdprintf.c8
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-vdprintf_chk.c8
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-vfprintf.c10
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-vfprintf_chk.c8
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-vfscanf.c10
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-vfwprintf.c9
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-vfwprintf_chk.c8
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-vfwscanf.c8
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-vprintf.c8
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-vprintf_chk.c8
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-vscanf.c9
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-vsnprintf.c10
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-vsnprintf_chk.c9
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-vsprintf.c10
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-vsprintf_chk.c9
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-vsscanf.c10
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-vswprintf.c9
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-vswprintf_chk.c9
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-vswscanf.c8
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-vsyslog.c8
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-vsyslog_chk.c8
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-vwprintf.c8
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-vwprintf_chk.c8
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-vwscanf.c9
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-wcstold.c10
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-wcstold_l.c14
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-wcstoldint.c10
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-wprintf.c15
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-wprintf_chk.c15
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-wscanf.c15
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-y0.c8
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-y1.c8
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-yn.c8
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/s_asinh.c5
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/s_atan.c5
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/s_cbrt.c5
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/s_ceil.c5
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/s_clog10l.c31
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/s_copysign.c9
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/s_erf.c6
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/s_expm1.c5
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/s_fabs.c5
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/s_finite.c18
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/s_floor.c5
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/s_fma.c5
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/s_fmal.c5
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/s_frexp.c9
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/s_isinf.c8
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/s_isnan.c8
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/s_ldexp.c30
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/s_ldexpl.c31
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/s_llrint.c5
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/s_llround.c5
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/s_log1p.c5
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/s_logb.c5
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/s_lrint.c5
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/s_lround.c5
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/s_modf.c9
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/s_nearbyint.c5
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/s_nextafter.c12
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/s_nexttowardfd.c81
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/s_remquo.c5
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/s_rint.c5
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/s_round.c5
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/s_scalbln.c9
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/s_scalbn.c9
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/s_significand.c5
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/s_significandl.c5
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/s_sin.c15
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/s_sincos.c5
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/s_tan.c5
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/s_tanh.c5
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/s_trunc.c5
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/w_acos_compat.c5
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/w_acosh_compat.c5
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/w_acoshl_compat.c5
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/w_acosl_compat.c5
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/w_asin_compat.c5
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/w_asinl_compat.c5
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/w_atan2_compat.c5
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/w_atan2l_compat.c5
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/w_atanh_compat.c5
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/w_atanhl_compat.c5
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/w_cosh_compat.c5
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/w_coshl_compat.c5
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/w_exp10_compat.c6
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/w_exp10l_compat.c6
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/w_exp_compat.c5
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/w_fmod_compat.c5
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/w_fmodl_compat.c5
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/w_hypot_compat.c5
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/w_hypotl_compat.c5
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/w_j0_compat.c6
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/w_j0l_compat.c6
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/w_j1_compat.c6
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/w_j1l_compat.c6
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/w_jn_compat.c6
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/w_jnl_compat.c6
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/w_lgamma_compat.c7
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/w_lgamma_compatl.c11
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/w_lgamma_r_compat.c5
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/w_lgammal_r_compat.c5
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/w_log10_compat.c5
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/w_log10l_compat.c5
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/w_log2_compat.c5
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/w_log2l_compat.c5
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/w_log_compat.c5
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/w_logl_compat.c5
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/w_pow_compat.c5
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/w_powl_compat.c5
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/w_remainder_compat.c7
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/w_remainderl_compat.c7
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/w_scalb_compat.c5
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/w_scalbl_compat.c5
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/w_sinh_compat.c5
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/w_sinhl_compat.c5
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/w_sqrt_compat.c5
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/w_sqrtl_compat.c5
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/w_tgamma_compat.c5
-rw-r--r--REORG.TODO/sysdeps/ieee754/ldbl-opt/w_tgammal_compat.c5
-rw-r--r--REORG.TODO/sysdeps/ieee754/s_lib_version.c41
-rw-r--r--REORG.TODO/sysdeps/ieee754/s_matherr.c28
-rw-r--r--REORG.TODO/sysdeps/ieee754/s_signgam.c4
961 files changed, 105820 insertions, 0 deletions
diff --git a/REORG.TODO/sysdeps/ieee754/Makefile b/REORG.TODO/sysdeps/ieee754/Makefile
new file mode 100644
index 0000000000..5c7fc3fc52
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/Makefile
@@ -0,0 +1,4 @@
+ifeq ($(subdir),math)
+sysdep_headers += ieee754.h
+endif
+
diff --git a/REORG.TODO/sysdeps/ieee754/bits/huge_val.h b/REORG.TODO/sysdeps/ieee754/bits/huge_val.h
new file mode 100644
index 0000000000..fb3ba69c44
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/bits/huge_val.h
@@ -0,0 +1,53 @@
+/* `HUGE_VAL' constant for IEEE 754 machines (where it is infinity).
+ Used by <stdlib.h> and <math.h> functions for overflow.
+ Copyright (C) 1992-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#ifndef _MATH_H
+# error "Never use <bits/huge_val.h> directly; include <math.h> instead."
+#endif
+
+/* IEEE positive infinity (-HUGE_VAL is negative infinity). */
+
+#if __GNUC_PREREQ(3,3)
+# define HUGE_VAL (__builtin_huge_val())
+#elif __GNUC_PREREQ(2,96)
+# define HUGE_VAL (__extension__ 0x1.0p2047)
+#elif defined __GNUC__
+
+# define HUGE_VAL \
+ (__extension__ \
+ ((union { unsigned __l __attribute__((__mode__(__DI__))); double __d; }) \
+ { __l: 0x7ff0000000000000ULL }).__d)
+
+#else /* not GCC */
+
+# include <endian.h>
+
+typedef union { unsigned char __c[8]; double __d; } __huge_val_t;
+
+# if __BYTE_ORDER == __BIG_ENDIAN
+# define __HUGE_VAL_bytes { 0x7f, 0xf0, 0, 0, 0, 0, 0, 0 }
+# endif
+# if __BYTE_ORDER == __LITTLE_ENDIAN
+# define __HUGE_VAL_bytes { 0, 0, 0, 0, 0, 0, 0xf0, 0x7f }
+# endif
+
+static __huge_val_t __huge_val = { __HUGE_VAL_bytes };
+# define HUGE_VAL (__huge_val.__d)
+
+#endif /* GCC. */
diff --git a/REORG.TODO/sysdeps/ieee754/bits/huge_valf.h b/REORG.TODO/sysdeps/ieee754/bits/huge_valf.h
new file mode 100644
index 0000000000..f24bcf452f
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/bits/huge_valf.h
@@ -0,0 +1,51 @@
+/* `HUGE_VALF' constant for IEEE 754 machines (where it is infinity).
+ Used by <stdlib.h> and <math.h> functions for overflow.
+ Copyright (C) 1992-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#ifndef _MATH_H
+# error "Never use <bits/huge_valf.h> directly; include <math.h> instead."
+#endif
+
+/* IEEE positive infinity (-HUGE_VAL is negative infinity). */
+
+#if __GNUC_PREREQ(3,3)
+# define HUGE_VALF (__builtin_huge_valf())
+#elif __GNUC_PREREQ(2,96)
+# define HUGE_VALF (__extension__ 0x1.0p255f)
+#elif defined __GNUC__
+
+# define HUGE_VALF \
+ (__extension__ \
+ ((union { unsigned __l __attribute__((__mode__(__SI__))); float __d; }) \
+ { __l: 0x7f800000UL }).__d)
+
+#else /* not GCC */
+
+typedef union { unsigned char __c[4]; float __f; } __huge_valf_t;
+
+# if __BYTE_ORDER == __BIG_ENDIAN
+# define __HUGE_VALF_bytes { 0x7f, 0x80, 0, 0 }
+# endif
+# if __BYTE_ORDER == __LITTLE_ENDIAN
+# define __HUGE_VALF_bytes { 0, 0, 0x80, 0x7f }
+# endif
+
+static __huge_valf_t __huge_valf = { __HUGE_VALF_bytes };
+# define HUGE_VALF (__huge_valf.__f)
+
+#endif /* GCC. */
diff --git a/REORG.TODO/sysdeps/ieee754/bits/inf.h b/REORG.TODO/sysdeps/ieee754/bits/inf.h
new file mode 100644
index 0000000000..eee0f2ea88
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/bits/inf.h
@@ -0,0 +1,29 @@
+/* `INFINITY' constant for IEEE 754 machines.
+ Copyright (C) 2004-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#ifndef _MATH_H
+# error "Never use <bits/inf.h> directly; include <math.h> instead."
+#endif
+
+/* IEEE positive infinity. */
+
+#if __GNUC_PREREQ(3,3)
+# define INFINITY (__builtin_inff())
+#else
+# define INFINITY HUGE_VALF
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/bits/nan.h b/REORG.TODO/sysdeps/ieee754/bits/nan.h
new file mode 100644
index 0000000000..b6e14f5873
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/bits/nan.h
@@ -0,0 +1,52 @@
+/* `NAN' constant for IEEE 754 machines.
+ Copyright (C) 1992-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#ifndef _MATH_H
+# error "Never use <bits/nan.h> directly; include <math.h> instead."
+#endif
+
+
+/* IEEE Not A Number. */
+
+#if __GNUC_PREREQ(3,3)
+
+# define NAN (__builtin_nanf (""))
+
+#elif defined __GNUC__
+
+# define NAN \
+ (__extension__ \
+ ((union { unsigned __l __attribute__ ((__mode__ (__SI__))); float __d; }) \
+ { __l: 0x7fc00000UL }).__d)
+
+#else
+
+# include <endian.h>
+
+# if __BYTE_ORDER == __BIG_ENDIAN
+# define __qnan_bytes { 0x7f, 0xc0, 0, 0 }
+# endif
+# if __BYTE_ORDER == __LITTLE_ENDIAN
+# define __qnan_bytes { 0, 0, 0xc0, 0x7f }
+# endif
+
+static union { unsigned char __c[4]; float __d; } __qnan_union
+ __attribute__ ((__unused__)) = { __qnan_bytes };
+# define NAN (__qnan_union.__d)
+
+#endif /* GCC. */
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/Makefile b/REORG.TODO/sysdeps/ieee754/dbl-64/Makefile
new file mode 100644
index 0000000000..5557c75b45
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/Makefile
@@ -0,0 +1,6 @@
+ifeq ($(subdir),math)
+# branred depends on precise IEEE double rounding
+CFLAGS-branred.c = $(config-cflags-nofma)
+CFLAGS-e_sqrt.c = $(config-cflags-nofma)
+CFLAGS-e_pow.c = $(config-cflags-nofma)
+endif
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/MathLib.h b/REORG.TODO/sysdeps/ieee754/dbl-64/MathLib.h
new file mode 100644
index 0000000000..ffda70a413
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/MathLib.h
@@ -0,0 +1,100 @@
+/*
+ * IBM Accurate Mathematical Library
+ * Written by International Business Machines Corp.
+ * Copyright (C) 2001-2017 Free Software Foundation, Inc.
+ *
+ * This program 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 2.1 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 program; if not, see <http://www.gnu.org/licenses/>.
+ */
+
+/********************************************************************/
+/* Ultimate math functions. Each function computes the exact */
+/* theoretical value of its argument rounded to nearest or even. */
+/* */
+/* Assumption: Machine arithmetic operations are performed in */
+/* round nearest mode of IEEE 754 standard. */
+/********************************************************************/
+
+#ifndef UMATH_LIB
+#define UMATH_LIB
+/********************************************************************/
+/* Function changes the precision mode to IEEE 754 double precision */
+/* and the rounding mode to nearest or even. */
+/* It returns the original status of these modes. */
+/* See further explanations of usage in DPChange.h */
+/********************************************************************/
+unsigned short Init_Lib (void);
+
+/********************************************************************/
+/* Function that changes the precision and rounding modes to the */
+/* specified by the argument received. See further explanations in */
+/* DPChange.h */
+/********************************************************************/
+void Exit_Lib (unsigned short);
+
+
+/* The asin() function calculates the arc sine of its argument. */
+/* The function returns the arc sine in radians */
+/* (between -PI/2 and PI/2). */
+/* If the argument is greater than 1 or less than -1 it returns */
+/* a NaN. */
+double uasin (double);
+
+
+/* The acos() function calculates the arc cosine of its argument. */
+/* The function returns the arc cosine in radians */
+/* (between -PI/2 and PI/2). */
+/* If the argument is greater than 1 or less than -1 it returns */
+/* a NaN. */
+double uacos (double);
+
+/* The atan() function calculates the arctanget of its argument. */
+/* The function returns the arc tangent in radians */
+/* (between -PI/2 and PI/2). */
+double uatan (double);
+
+
+/* The uatan2() function calculates the arc tangent of the two arguments x */
+/* and y (x is the right argument and y is the left one).The signs of both */
+/* arguments are used to determine the quadrant of the result. */
+/* The function returns the result in radians, which is between -PI and PI */
+double uatan2 (double, double);
+
+/* Compute log(x). The base of log is e (natural logarithm) */
+double ulog (double);
+
+/* Compute e raised to the power of argument x. */
+double uexp (double);
+
+/* Compute sin(x). The argument x is assumed to be given in radians.*/
+double usin (double);
+
+/* Compute cos(x). The argument x is assumed to be given in radians.*/
+double ucos (double);
+
+/* Compute tan(x). The argument x is assumed to be given in radians.*/
+double utan (double);
+
+/* Compute the square root of non-negative argument x. */
+/* If x is negative the returned value is NaN. */
+double usqrt (double);
+
+/* Compute x raised to the power of y, where x is the left argument */
+/* and y is the right argument. The function returns a NaN if x<0. */
+/* If x equals zero it returns -inf */
+double upow (double, double);
+
+/* Computing x mod y, where x is the left argument and y is the */
+/* right one. */
+double uremainder (double, double);
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/asincos.tbl b/REORG.TODO/sysdeps/ieee754/dbl-64/asincos.tbl
new file mode 100644
index 0000000000..5e7670c3b1
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/asincos.tbl
@@ -0,0 +1,5168 @@
+/*
+ * IBM Accurate Mathematical Library
+ * Written by International Business Machines Corp.
+ * Copyright (C) 2001-2017 Free Software Foundation, Inc.
+ *
+ * This program 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 2.1 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 program; if not, see <http://www.gnu.org/licenses/>.
+ */
+
+/***************************************************************************/
+/* Table for arcsin() and arccos() FUNCTIONS */
+/***************************************************************************/
+
+#ifdef BIG_ENDI
+static const union {int4 i[5136];double x[2568];} asncs = { .i = {
+/**/ 0x3FC04000, 0x00000000,
+/**/ 0x3FF02169, 0x88994424,
+/**/ 0x3FB0A6A2, 0xB799B115,
+/**/ 0x3FC6EF15, 0xD57409A0,
+/**/ 0x3FAA141E, 0xAF52EAA0,
+/**/ 0x3FB75591, 0xABBBE261,
+/**/ 0x3FA72B51, 0xD206D88F,
+/**/ 0x3C96B595, 0x5BB33E7D,
+/**/ 0x3FC04B41, 0xA03E2700,
+/**/ 0x3FF04000, 0x00000000,
+/**/ 0xBF7E9677, 0x66BBDC7C,
+/**/ 0x3FC0C000, 0x00000000,
+/**/ 0x3FF02386, 0xF9E23A56,
+/**/ 0x3FB1308C, 0x60FD0235,
+/**/ 0x3FC7099F, 0x14D16B02,
+/**/ 0x3FAAFED6, 0x27C01EE1,
+/**/ 0x3FB79C6F, 0xDBCD5F98,
+/**/ 0x3FA8144A, 0x4084DAAC,
+/**/ 0xBC87C092, 0x38D8505E,
+/**/ 0x3FC0CC55, 0x56C9F380,
+/**/ 0x3FF04000, 0x00000000,
+/**/ 0xBF7C7906, 0x1DC5AA24,
+/**/ 0x3FC14000, 0x00000000,
+/**/ 0x3FF025B5, 0xB27141F6,
+/**/ 0x3FB1BB18, 0x04CE7400,
+/**/ 0x3FC72514, 0x72907342,
+/**/ 0x3FABEC60, 0x0BF4222C,
+/**/ 0x3FB7E610, 0x75B3736C,
+/**/ 0x3FA9024C, 0x5199C343,
+/**/ 0xBC8AE84C, 0x06B56F60,
+/**/ 0x3FC14D7A, 0x3DEFA070,
+/**/ 0x3FF04000, 0x00000000,
+/**/ 0xBF7A4A4D, 0x8EBE0A5C,
+/**/ 0x3FC1C000, 0x00000000,
+/**/ 0x3FF027F5, 0xC6DE8F57,
+/**/ 0x3FB2464B, 0x345751E1,
+/**/ 0x3FC74178, 0xCF026805,
+/**/ 0x3FACDCD8, 0x40A9E0D6,
+/**/ 0x3FB83282, 0xEB1D9C38,
+/**/ 0x3FA9F590, 0xD7BE707B,
+/**/ 0xBCAB9768, 0x03A2A6D6,
+/**/ 0x3FC1CEB0, 0xE03B4870,
+/**/ 0x3FF04000, 0x00000000,
+/**/ 0xBF780A39, 0x2170A943,
+/**/ 0x3FC24000, 0x00000000,
+/**/ 0x3FF02A47, 0x4C759796,
+/**/ 0x3FB2D22B, 0x92771935,
+/**/ 0x3FC75ECF, 0x26ABA06D,
+/**/ 0x3FADD05B, 0x486A1932,
+/**/ 0x3FB881D7, 0x5AF971D5,
+/**/ 0x3FAAEE52, 0x831AEE0C,
+/**/ 0x3CA13F57, 0xAD1B1BEF,
+/**/ 0x3FC24FF9, 0xC8E09330,
+/**/ 0x3FF04000, 0x00000000,
+/**/ 0xBF75B8B3, 0x8A68699B,
+/**/ 0x3FC2C000, 0x00000000,
+/**/ 0x3FF02CAA, 0x59374E09,
+/**/ 0x3FB35EBE, 0xD44E8BEA,
+/**/ 0x3FC77D1A, 0x92E4BE8A,
+/**/ 0x3FAEC706, 0x4A6C34FD,
+/**/ 0x3FB8D41E, 0x972F6E07,
+/**/ 0x3FABECCD, 0xF9845F69,
+/**/ 0x3C8BA1FA, 0x945C4185,
+/**/ 0x3FC2D155, 0x83C058B0,
+/**/ 0x3FF04000, 0x00000000,
+/**/ 0xBF7355A6, 0xC8B1F774,
+/**/ 0x3FC34000, 0x00000000,
+/**/ 0x3FF02F1F, 0x03DC7745,
+/**/ 0x3FB3EC0A, 0xC1EE9F61,
+/**/ 0x3FC79C5E, 0x4A82E6D2,
+/**/ 0x3FAFC0F7, 0x19B1EF72,
+/**/ 0x3FB9296A, 0x2AA943E5,
+/**/ 0x3FACF141, 0xEF8B9DE7,
+/**/ 0xBC834081, 0x083C8716,
+/**/ 0x3FC352C4, 0x9D6E5610,
+/**/ 0x3FF04000, 0x00000000,
+/**/ 0xBF70E0FC, 0x2388BB30,
+/**/ 0x3FC3C000, 0x00000000,
+/**/ 0x3FF031A5, 0x63D81251,
+/**/ 0x3FB47A15, 0x370B721F,
+/**/ 0x3FC7BC9D, 0xA28731E5,
+/**/ 0x3FB05F26, 0x1E305BE9,
+/**/ 0x3FB981CC, 0x5FA50FBD,
+/**/ 0x3FADFBEF, 0x42AC4083,
+/**/ 0x3CA20ACB, 0xA8E107C7,
+/**/ 0x3FC3D447, 0xA336F5E0,
+/**/ 0x3FF04000, 0x00000000,
+/**/ 0xBF6CB538, 0x4FDB5D5C,
+/**/ 0x3FC44000, 0x00000000,
+/**/ 0x3FF0343D, 0x9159D86F,
+/**/ 0x3FB508E4, 0x23B3747C,
+/**/ 0x3FC7DDDC, 0x0ED597CB,
+/**/ 0x3FB0DF92, 0x79ADF104,
+/**/ 0x3FB9DD58, 0x4658D945,
+/**/ 0x3FAF0D19, 0x14ACA06B,
+/**/ 0xBCA4E10D, 0xDF636EFE,
+/**/ 0x3FC455DF, 0x23252C00,
+/**/ 0x3FF04000, 0x00000000,
+/**/ 0xBF6784DD, 0x4C4F221A,
+/**/ 0x3FC4C000, 0x00000000,
+/**/ 0x3FF036E7, 0xA550D410,
+/**/ 0x3FB5987D, 0x8D0AF1E7,
+/**/ 0x3FC8001D, 0x22F39726,
+/**/ 0x3FB161D0, 0xA1116D73,
+/**/ 0x3FBA3C21, 0xBBEA1528,
+/**/ 0x3FB01282, 0x74202FF6,
+/**/ 0x3CAA0611, 0xD10866E2,
+/**/ 0x3FC4D78B, 0xAC086560,
+/**/ 0x3FF04000, 0x00000000,
+/**/ 0xBF6230B5, 0x5E57DF8A,
+/**/ 0x3FC54000, 0x00000000,
+/**/ 0x3FF039A3, 0xB96E0F8A,
+/**/ 0x3FB628E7, 0x8E0C29F6,
+/**/ 0x3FC82364, 0x92CEDE01,
+/**/ 0x3FB1E5F0, 0xFB7B5D84,
+/**/ 0x3FBA9E3D, 0x71BD08EE,
+/**/ 0x3FB0A1FD, 0x5F7FFAB4,
+/**/ 0xBC90F980, 0xEF04F6E7,
+/**/ 0x3FC5594D, 0xCD7A8DC0,
+/**/ 0x3FF04000, 0x00000000,
+/**/ 0xBF59711A, 0x47C1D879,
+/**/ 0x3FC5C000, 0x00000000,
+/**/ 0x3FF03C71, 0xE8275C12,
+/**/ 0x3FB6BA28, 0x584C2A23,
+/**/ 0x3FC847B6, 0x338C3D4B,
+/**/ 0x3FB26C04, 0x59A55DD8,
+/**/ 0x3FBB03C0, 0xF5202D6A,
+/**/ 0x3FB13522, 0x9C6466A4,
+/**/ 0x3C983C9A, 0x2A268973,
+/**/ 0x3FC5DB26, 0x17E62A20,
+/**/ 0x3FF04000, 0x00000000,
+/**/ 0xBF4C70BE, 0xC51F7008,
+/**/ 0x3FC64000, 0x00000000,
+/**/ 0x3FF03F52, 0x4CBA31A9,
+/**/ 0x3FB74C46, 0x34C49ADE,
+/**/ 0x3FC86D15, 0xFC5F33CC,
+/**/ 0x3FB2F41B, 0xFA419D7C,
+/**/ 0x3FBB6CC2, 0xB757E82A,
+/**/ 0x3FB1CC18, 0xDA4D5C39,
+/**/ 0xBCA862D4, 0x2DFB224D,
+/**/ 0x3FC65D15, 0x1C8C8AF0,
+/**/ 0x3FF04000, 0x00000000,
+/**/ 0xBF25B668, 0xB9CADBBF,
+/**/ 0x3FC6C000, 0x00000000,
+/**/ 0x3FF04245, 0x032EA88F,
+/**/ 0x3FB7DF47, 0x84A2B473,
+/**/ 0x3FC89388, 0x076A60F5,
+/**/ 0x3FB37E49, 0x8E8394C1,
+/**/ 0x3FBBD95A, 0x160F3472,
+/**/ 0x3FB26708, 0x39844810,
+/**/ 0x3C994228, 0x698BC8EA,
+/**/ 0x3FC6DF1B, 0x6D8C14A0,
+/**/ 0x3FF04000, 0x00000000,
+/**/ 0x3F422819, 0x754477AC,
+/**/ 0x3FC74000, 0x00000000,
+/**/ 0x3FF0454A, 0x285A8CEB,
+/**/ 0x3FB87332, 0xC21B9224,
+/**/ 0x3FC8BB10, 0x92A93402,
+/**/ 0x3FB40A9F, 0x3ED3F586,
+/**/ 0x3FBC499F, 0x643217C8,
+/**/ 0x3FB3061A, 0x5D29A16B,
+/**/ 0xBCA3B2DF, 0x3DF9F2D7,
+/**/ 0x3FC76139, 0x9DE6A160,
+/**/ 0x3FF04000, 0x00000000,
+/**/ 0x3F5528A1, 0x6A33AB4B,
+/**/ 0x3FC7C000, 0x00000000,
+/**/ 0x3FF04861, 0xD9E48D58,
+/**/ 0x3FB9080E, 0x81461BF6,
+/**/ 0x3FC8E3B4, 0x00E32FFA,
+/**/ 0x3FB4992F, 0xAFB1F2A5,
+/**/ 0x3FBCBDAB, 0xF33705D5,
+/**/ 0x3FB3A97A, 0x7E23EE89,
+/**/ 0x3C7AAD12, 0xCCE44C41,
+/**/ 0x3FC7E370, 0x4187FAE0,
+/**/ 0x3FF04000, 0x00000000,
+/**/ 0x3F60C3B3, 0xC91AAF11,
+/**/ 0x3FC84000, 0x00000000,
+/**/ 0x3FF04B8C, 0x36478509,
+/**/ 0x3FB99DE1, 0x70FAC1B4,
+/**/ 0x3FC90D76, 0xDAA92166,
+/**/ 0x3FB52A0E, 0x06C416A6,
+/**/ 0x3FBD359A, 0x1CDCA344,
+/**/ 0x3FB45155, 0x7EFD4CA0,
+/**/ 0x3C396CA5, 0x35A8895D,
+/**/ 0x3FC865BF, 0xED4C6EF0,
+/**/ 0x3FF04000, 0x00000000,
+/**/ 0x3F67186C, 0x8F0A11A4,
+/**/ 0x3FC8C000, 0x00000000,
+/**/ 0x3FF04EC9, 0x5CD5E248,
+/**/ 0x3FBA34B2, 0x5BB94403,
+/**/ 0x3FC9385D, 0xCF5CA73A,
+/**/ 0x3FB5BD4D, 0xF01AFDBE,
+/**/ 0x3FBDB185, 0x4D61A7A9,
+/**/ 0x3FB4FDDA, 0x00BD47CF,
+/**/ 0xBC9D1119, 0x727E8B64,
+/**/ 0x3FC8E829, 0x37077E20,
+/**/ 0x3FF04000, 0x00000000,
+/**/ 0x3F6D92B9, 0xABC490CB,
+/**/ 0x3FC94000, 0x00000000,
+/**/ 0x3FF05219, 0x6DBD2A10,
+/**/ 0x3FBACC88, 0x2894CAA1,
+/**/ 0x3FC9646D, 0xB6427516,
+/**/ 0x3FB65303, 0xA3A864D7,
+/**/ 0x3FBE318A, 0x0E3CF3D4,
+/**/ 0x3FB5AF38, 0x78CDA678,
+/**/ 0x3CA3841D, 0xDA9D51DF,
+/**/ 0x3FC96AAC, 0xB58AA660,
+/**/ 0x3FF04000, 0x00000000,
+/**/ 0x3F72196D, 0xBD2A1052,
+/**/ 0x3FC9C000, 0x00000000,
+/**/ 0x3FF0557C, 0x8A099990,
+/**/ 0x3FBB6569, 0xDC268965,
+/**/ 0x3FC991AB, 0x8F9FBA21,
+/**/ 0x3FB6EB43, 0xEAED1E85,
+/**/ 0x3FBEB5C6, 0x115C4C63,
+/**/ 0x3FB665A3, 0x47F9AEFA,
+/**/ 0xBCA1F8FD, 0x03AB3673,
+/**/ 0x3FC9ED4B, 0x00AC4A60,
+/**/ 0x3FF04000, 0x00000000,
+/**/ 0x3F757C8A, 0x0999905B,
+/**/ 0x3FCA4000, 0x00000000,
+/**/ 0x3FF058F2, 0xD3A9E674,
+/**/ 0x3FBBFF5E, 0x99873832,
+/**/ 0x3FC9C01C, 0x85E31CE9,
+/**/ 0x3FB78624, 0x26E09FF2,
+/**/ 0x3FBF3E58, 0x3CF0885C,
+/**/ 0x3FB7214E, 0xD2986239,
+/**/ 0x3C97E3E5, 0x3E594694,
+/**/ 0x3FCA7004, 0xB14EB5D0,
+/**/ 0x3FF04000, 0x00000000,
+/**/ 0x3F78F2D3, 0xA9E6746B,
+/**/ 0x3FCAC000, 0x00000000,
+/**/ 0x3FF05C7C, 0x6D731ECB,
+/**/ 0x3FBC9A6D, 0xA34FA4B3,
+/**/ 0x3FC9EFC5, 0xEED9C253,
+/**/ 0x3FB823BA, 0x5614FAEB,
+/**/ 0x3FBFCB60, 0xB7CE698F,
+/**/ 0x3FB7E271, 0x99F3292F,
+/**/ 0xBC9842C6, 0x068D709C,
+/**/ 0x3FCAF2DA, 0x61674110,
+/**/ 0x3FF04000, 0x00000000,
+/**/ 0x3F7C7C6D, 0x731ECAE2,
+/**/ 0x3FCB4000, 0x00000000,
+/**/ 0x3FF06019, 0x7B24A973,
+/**/ 0x3FBD369E, 0x5CA0A798,
+/**/ 0x3FCA20AD, 0x4CF0DB64,
+/**/ 0x3FB8C41D, 0x1B1A3F31,
+/**/ 0x3FC02E80, 0x7B35E049,
+/**/ 0x3FB8A944, 0x56FB8A97,
+/**/ 0xBCACBF9C, 0xD337B37C,
+/**/ 0x3FCB75CC, 0xAC059370,
+/**/ 0x3FF08000, 0x00000000,
+/**/ 0xBF7FE684, 0xDB568D78,
+/**/ 0x3FCBC000, 0x00000000,
+/**/ 0x3FF063CA, 0x216C6801,
+/**/ 0x3FBDD3F8, 0x4A32C9FD,
+/**/ 0x3FCA52D8, 0x50843BC9,
+/**/ 0x3FB96763, 0xC324648A,
+/**/ 0x3FC079AD, 0xE4407899,
+/**/ 0x3FB97602, 0x1663A5DC,
+/**/ 0xBCA3ADC3, 0xC637289D,
+/**/ 0x3FCBF8DC, 0x2D5B06A0,
+/**/ 0x3FF08000, 0x00000000,
+/**/ 0xBF7C35DE, 0x9397FEA6,
+/**/ 0x3FCC4000, 0x00000000,
+/**/ 0x3FF0678E, 0x85EAFB1F,
+/**/ 0x3FBE7283, 0x136DEAC6,
+/**/ 0x3FCA864C, 0xD93A817D,
+/**/ 0x3FBA0DA6, 0x4CF7089B,
+/**/ 0x3FC0C74A, 0xB3ABB322,
+/**/ 0x3FBA48E8, 0x562E6E1E,
+/**/ 0xBC951E3E, 0x7EB8FFF8,
+/**/ 0x3FCC7C09, 0x82C22B80,
+/**/ 0x3FF08000, 0x00000000,
+/**/ 0xBF78717A, 0x1504E0D3,
+/**/ 0x3FCCC000, 0x00000000,
+/**/ 0x3FF06B66, 0xCF382A59,
+/**/ 0x3FBF1246, 0x838936FB,
+/**/ 0x3FCABB10, 0xF76F5C94,
+/**/ 0x3FBAB6FD, 0x701A77AE,
+/**/ 0x3FC11769, 0xC26702C6,
+/**/ 0x3FBB2237, 0x24CDF38E,
+/**/ 0xBC8DB69A, 0xE28307A9,
+/**/ 0x3FCCFF55, 0x4AC67190,
+/**/ 0x3FF08000, 0x00000000,
+/**/ 0xBF749930, 0xC7D5A6B9,
+/**/ 0x3FCD4000, 0x00000000,
+/**/ 0x3FF06F53, 0x24E7707F,
+/**/ 0x3FBFB34A, 0x8AB3CBB2,
+/**/ 0x3FCAF12A, 0xEDAC8D74,
+/**/ 0x3FBB6382, 0xA45DA614,
+/**/ 0x3FC16A1E, 0xAD8E9F44,
+/**/ 0x3FBC0231, 0x41E7749D,
+/**/ 0x3C76CA27, 0x22DC16A2,
+/**/ 0x3FCD82C0, 0x252BF240,
+/**/ 0x3FF08000, 0x00000000,
+/**/ 0xBF70ACDB, 0x188F814B,
+/**/ 0x3FCDC000, 0x00000000,
+/**/ 0x3FF07353, 0xAF8CADA0,
+/**/ 0x3FC02ACB, 0x9FA32DC9,
+/**/ 0x3FCB28A1, 0x32323718,
+/**/ 0x3FBC1350, 0x29A8F15E,
+/**/ 0x3FC1BF7D, 0xDEB270E1,
+/**/ 0x3FBCE91C, 0x40D67463,
+/**/ 0x3CA6E976, 0x104BAA08,
+/**/ 0x3FCE064A, 0xB2F76140,
+/**/ 0x3FF08000, 0x00000000,
+/**/ 0xBF6958A0, 0xE6A4BFC9,
+/**/ 0x3FCE4000, 0x00000000,
+/**/ 0x3FF07768, 0x98C0FFD9,
+/**/ 0x3FC07C9A, 0x6F7F1AF0,
+/**/ 0x3FCB617A, 0x708F2AFB,
+/**/ 0x3FBCC681, 0x1025B50C,
+/**/ 0x3FC2179C, 0x9487453A,
+/**/ 0x3FBDD740, 0xAD09B3AB,
+/**/ 0xBC8D32DB, 0x189038C0,
+/**/ 0x3FCE89F5, 0x96762300,
+/**/ 0x3FF08000, 0x00000000,
+/**/ 0xBF612ECE, 0x7E004D50,
+/**/ 0x3FCEC000, 0x00000000,
+/**/ 0x3FF07B92, 0x0B27C417,
+/**/ 0x3FC0CF15, 0xE821087A,
+/**/ 0x3FCB9BBD, 0x8B49DC8C,
+/**/ 0x3FBD7D31, 0x40BEF5C2,
+/**/ 0x3FC27290, 0xEC080575,
+/**/ 0x3FBECCEA, 0x3056A6A9,
+/**/ 0x3C9DE506, 0x0C9B27A2,
+/**/ 0x3FCF0DC1, 0x73468A50,
+/**/ 0x3FF08000, 0x00000000,
+/**/ 0xBF51B7D3, 0x60EFA34D,
+/**/ 0x3FCF4000, 0x00000000,
+/**/ 0x3FF07FD0, 0x3273C018,
+/**/ 0x3FC12242, 0x51B87F08,
+/**/ 0x3FCBD771, 0x9D9AB2BC,
+/**/ 0x3FBE377D, 0x85FFA125,
+/**/ 0x3FC2D071, 0xEA0CFE55,
+/**/ 0x3FBFCA67, 0xBB61DDD3,
+/**/ 0xBCA25383, 0x88A645E7,
+/**/ 0x3FCF91AE, 0xEE603F40,
+/**/ 0x3FF08000, 0x00000000,
+/**/ 0xBF07E6C6, 0x1FF422B6,
+/**/ 0x3FCFC000, 0x00000000,
+/**/ 0x3FF08423, 0x3B6C76F2,
+/**/ 0x3FC17624, 0x0A1DF897,
+/**/ 0x3FCC149D, 0xFD38779D,
+/**/ 0x3FBEF583, 0x95531ECD,
+/**/ 0x3FC33157, 0x855FA966,
+/**/ 0x3FC06805, 0xD81E6BAA,
+/**/ 0x3C86827E, 0x1B47FAEC,
+/**/ 0x3FD00ADF, 0x570E6798,
+/**/ 0x3FF08000, 0x00000000,
+/**/ 0x3F508CED, 0xB1DBC656,
+/**/ 0x3FD02000, 0x00000000,
+/**/ 0x3FF0888B, 0x53F3A97B,
+/**/ 0x3FC1CABF, 0x858525D6,
+/**/ 0x3FCC534A, 0x3C37AF90,
+/**/ 0x3FBFB762, 0x18AD312A,
+/**/ 0x3FC3955A, 0xB151CAAD,
+/**/ 0x3FC0EF16, 0x07ADE82D,
+/**/ 0x3CAEEF44, 0xFCDE8746,
+/**/ 0x3FD04CF8, 0xAD203480,
+/**/ 0x3FF08000, 0x00000000,
+/**/ 0x3F6116A7, 0xE752F5A1,
+/**/ 0x3FD06000, 0x00000000,
+/**/ 0x3FF08D08, 0xAB0B03F8,
+/**/ 0x3FC22019, 0x4F34EEE8,
+/**/ 0x3FCC937E, 0x2AFDABDE,
+/**/ 0x3FC03E9C, 0x5C4F35BA,
+/**/ 0x3FC3FC95, 0x68DF21A6,
+/**/ 0x3FC17A91, 0x53843C52,
+/**/ 0xBC9D6F54, 0xC2BB835A,
+/**/ 0x3FD08F23, 0xCE0162B8,
+/**/ 0x3FF08000, 0x00000000,
+/**/ 0x3F6A1156, 0x1607EF23,
+/**/ 0x3FD0A000, 0x00000000,
+/**/ 0x3FF0919B, 0x70D9FA87,
+/**/ 0x3FC27636, 0x0A456C09,
+/**/ 0x3FCCD541, 0xDA483778,
+/**/ 0x3FC0A394, 0x136D6630,
+/**/ 0x3FC46722, 0xBA615E9C,
+/**/ 0x3FC20AA6, 0xA2BC6F73,
+/**/ 0x3CA9D006, 0x7F1D9D86,
+/**/ 0x3FD0D161, 0x0F0C1EC8,
+/**/ 0x3FF08000, 0x00000000,
+/**/ 0x3F719B70, 0xD9FA8688,
+/**/ 0x3FD0E000, 0x00000000,
+/**/ 0x3FF09643, 0xD6B3D5D1,
+/**/ 0x3FC2CD1A, 0x72641546,
+/**/ 0x3FCD189D, 0x9D4AC7EC,
+/**/ 0x3FC10AA9, 0x149C2E66,
+/**/ 0x3FC4D51E, 0xD3DE8741,
+/**/ 0x3FC29F86, 0xF6DA4768,
+/**/ 0x3CAEA900, 0x828C2A81,
+/**/ 0x3FD113B0, 0xC65D88C8,
+/**/ 0x3FF08000, 0x00000000,
+/**/ 0x3F7643D6, 0xB3D5D119,
+/**/ 0x3FD12000, 0x00000000,
+/**/ 0x3FF09B02, 0x0F1DF195,
+/**/ 0x3FC324CB, 0x5C9E6B3F,
+/**/ 0x3FCD5D9A, 0x0BE228B7,
+/**/ 0x3FC173EC, 0xD29602B0,
+/**/ 0x3FC546A7, 0x0FFA7799,
+/**/ 0x3FC33965, 0x87BA569F,
+/**/ 0xBCAE3258, 0x9956F2C3,
+/**/ 0x3FD15613, 0x4ADA6FF0,
+/**/ 0x3FF08000, 0x00000000,
+/**/ 0x3F7B020F, 0x1DF1952F,
+/**/ 0x3FD16000, 0x00000000,
+/**/ 0x3FF09FD6, 0x4DD62EB0,
+/**/ 0x3FC37D4D, 0xB8335DE5,
+/**/ 0x3FCDA440, 0x04DFA3F1,
+/**/ 0x3FC1DF71, 0x55E59412,
+/**/ 0x3FC5BBDA, 0x0394B72E,
+/**/ 0x3FC3D877, 0xE1177398,
+/**/ 0x3CA8AC88, 0x3B5720A7,
+/**/ 0x3FD19888, 0xF43427A8,
+/**/ 0x3FF08000, 0x00000000,
+/**/ 0x3F7FD64D, 0xD62EAF85,
+/**/ 0x3FD1A000, 0x00000000,
+/**/ 0x3FF0A4C0, 0xC7D99A5F,
+/**/ 0x3FC3D6A6, 0x8F6BB942,
+/**/ 0x3FCDEC98, 0xB06CB8A9,
+/**/ 0x3FC24D49, 0x432C74B1,
+/**/ 0x3FC634D7, 0x8C1C6EC6,
+/**/ 0x3FC47CF6, 0x01BF2560,
+/**/ 0x3CA3EDE7, 0x476E25C7,
+/**/ 0x3FD1DB12, 0x1AED7720,
+/**/ 0x3FF0C000, 0x00000000,
+/**/ 0xBF7B3F38, 0x2665A126,
+/**/ 0x3FD1E000, 0x00000000,
+/**/ 0x3FF0A9C1, 0xB36B4C8B,
+/**/ 0x3FC430DB, 0x0879E39B,
+/**/ 0x3FCE36AD, 0x82887D8B,
+/**/ 0x3FC2BD87, 0xE1B33C79,
+/**/ 0x3FC6B1C0, 0xDEA4E95E,
+/**/ 0x3FC5271A, 0x7C90504A,
+/**/ 0x3CAAFAD9, 0x8A6EBD08,
+/**/ 0x3FD21DAF, 0x185FA360,
+/**/ 0x3FF0C000, 0x00000000,
+/**/ 0xBF763E4C, 0x94B3751C,
+/**/ 0x3FD22000, 0x00000000,
+/**/ 0x3FF0AED9, 0x481B7EED,
+/**/ 0x3FC48BF0, 0x66613BB3,
+/**/ 0x3FCE8288, 0x3D9FDD8F,
+/**/ 0x3FC33041, 0x22470BF2,
+/**/ 0x3FC732B8, 0x97C5B476,
+/**/ 0x3FC5D722, 0x9B614F73,
+/**/ 0x3CA96B82, 0x759745C8,
+/**/ 0x3FD26060, 0x46BF95B8,
+/**/ 0x3FF0C000, 0x00000000,
+/**/ 0xBF7126B7, 0xE48112DC,
+/**/ 0x3FD26000, 0x00000000,
+/**/ 0x3FF0B407, 0xBECEDF0E,
+/**/ 0x3FC4E7EC, 0x09E5699A,
+/**/ 0x3FCED032, 0xF541EC2D,
+/**/ 0x3FC3A589, 0xA6688484,
+/**/ 0x3FC7B7E2, 0xCC5228BD,
+/**/ 0x3FC68D4E, 0x83ECAD1F,
+/**/ 0x3CA98586, 0x7CB79363,
+/**/ 0x3FD2A326, 0x01231EC8,
+/**/ 0x3FF0C000, 0x00000000,
+/**/ 0xBF67F082, 0x6241E449,
+/**/ 0x3FD2A000, 0x00000000,
+/**/ 0x3FF0B94D, 0x51C61D1C,
+/**/ 0x3FC544D3, 0x7281F837,
+/**/ 0x3FCF1FB8, 0x10F19F89,
+/**/ 0x3FC41D76, 0xC7D08A44,
+/**/ 0x3FC84165, 0x1AF4E5E6,
+/**/ 0x3FC749E1, 0x5EE5D838,
+/**/ 0x3C8A2A36, 0xA1F9A890,
+/**/ 0x3FD2E600, 0xA3865760,
+/**/ 0x3FF0C000, 0x00000000,
+/**/ 0xBF5ACAB8, 0xE78B8E2F,
+/**/ 0x3FD2E000, 0x00000000,
+/**/ 0x3FF0BEAA, 0x3CA5B9C1,
+/**/ 0x3FC5A2AC, 0x3F6A91D3,
+/**/ 0x3FCF7122, 0x4F1650DB,
+/**/ 0x3FC4981E, 0xA04F63E7,
+/**/ 0x3FC8CF66, 0xBEBC9B64,
+/**/ 0x3FC80D21, 0x81598BF7,
+/**/ 0xBC984143, 0x8E0FD320,
+/**/ 0x3FD328F0, 0x8AD12008,
+/**/ 0x3FF0C000, 0x00000000,
+/**/ 0xBF355C35, 0xA463F3FD,
+/**/ 0x3FD32000, 0x00000000,
+/**/ 0x3FF0C41E, 0xBC7E151A,
+/**/ 0x3FC6017C, 0x30943E19,
+/**/ 0x3FCFC47C, 0xC80C760D,
+/**/ 0x3FC51598, 0x120B129D,
+/**/ 0x3FC96210, 0xA2A855B5,
+/**/ 0x3FC8D758, 0x9880230D,
+/**/ 0xBCA4D129, 0xBF178596,
+/**/ 0x3FD36BF6, 0x14DCC050,
+/**/ 0x3FF0C000, 0x00000000,
+/**/ 0x3F507AF1, 0xF854661E,
+/**/ 0x3FD36000, 0x00000000,
+/**/ 0x3FF0C9AB, 0x0FD3C135,
+/**/ 0x3FC66149, 0x27C80482,
+/**/ 0x3FD00CE9, 0x78AC0DDD,
+/**/ 0x3FC595FA, 0xD02204B1,
+/**/ 0x3FC9F98D, 0x7642750D,
+/**/ 0x3FC9A8D3, 0xD82AC48A,
+/**/ 0x3C977587, 0x289B3951,
+/**/ 0x3FD3AF11, 0xA079A6D8,
+/**/ 0x3FF0C000, 0x00000000,
+/**/ 0x3F63561F, 0xA7826A0D,
+/**/ 0x3FD3A000, 0x00000000,
+/**/ 0x3FF0CF4F, 0x76A81A69,
+/**/ 0x3FC6C219, 0x29BF5ACD,
+/**/ 0x3FD03898, 0x507D5DD4,
+/**/ 0x3FC6195F, 0x67B79439,
+/**/ 0x3FCA9609, 0xC35A709F,
+/**/ 0x3FCA81E4, 0x2BF7455C,
+/**/ 0x3CA03304, 0xF424551E,
+/**/ 0x3FD3F243, 0x8D754B40,
+/**/ 0x3FF0C000, 0x00000000,
+/**/ 0x3F6E9EED, 0x5034D2A8,
+/**/ 0x3FD3E000, 0x00000000,
+/**/ 0x3FF0D50C, 0x3282280D,
+/**/ 0x3FC723F2, 0x5F4ACC23,
+/**/ 0x3FD06551, 0x08771131,
+/**/ 0x3FC69FDF, 0x4970163E,
+/**/ 0x3FCB37B4, 0x04EE9A0A,
+/**/ 0x3FCB62DE, 0x6B79BC18,
+/**/ 0x3CAECF25, 0x02A2F456,
+/**/ 0x3FD4358C, 0x3CA032E0,
+/**/ 0x3FF0C000, 0x00000000,
+/**/ 0x3F750C32, 0x82280D28,
+/**/ 0x3FD42000, 0x00000000,
+/**/ 0x3FF0DAE1, 0x8677C82D,
+/**/ 0x3FC786DB, 0x16834ABE,
+/**/ 0x3FD09319, 0xF1631731,
+/**/ 0x3FC72994, 0xD36297AF,
+/**/ 0x3FCBDEBC, 0xBF583888,
+/**/ 0x3FCC4C1B, 0x918E2AE6,
+/**/ 0x3CA92F70, 0xF34A155C,
+/**/ 0x3FD478EC, 0x0FD419C8,
+/**/ 0x3FF0C000, 0x00000000,
+/**/ 0x3F7AE186, 0x77C82D53,
+/**/ 0x3FD46000, 0x00000000,
+/**/ 0x3FF0E0CF, 0xB73728F8,
+/**/ 0x3FC7EAD9, 0xC406A36A,
+/**/ 0x3FD0C1F9, 0x91BDA616,
+/**/ 0x3FC7B69B, 0x5B86C42B,
+/**/ 0x3FCC8B56, 0x99CD8C9F,
+/**/ 0x3FCD3DF8, 0xF7084936,
+/**/ 0xBC923B74, 0x54942387,
+/**/ 0x3FD4BC63, 0x69FA40E8,
+/**/ 0x3FF10000, 0x00000000,
+/**/ 0xBF7F3048, 0xC8D707BB,
+/**/ 0x3FD4A000, 0x00000000,
+/**/ 0x3FF0E6D7, 0x0B1092B8,
+/**/ 0x3FC84FF5, 0x043F9011,
+/**/ 0x3FD0F1F6, 0xA7AFD6EB,
+/**/ 0x3FC8470F, 0x3AA5D7B9,
+/**/ 0x3FCD3DB6, 0x794E9CFD,
+/**/ 0x3FCE38D8, 0x90FB69FD,
+/**/ 0x3C9CFA2D, 0xC2327DC5,
+/**/ 0x3FD4FFF2, 0xAF11E2C0,
+/**/ 0x3FF10000, 0x00000000,
+/**/ 0xBF7928F4, 0xEF6D4848,
+/**/ 0x3FD4E000, 0x00000000,
+/**/ 0x3FF0ECF7, 0xCA008550,
+/**/ 0x3FC8B633, 0x9CB9ECA7,
+/**/ 0x3FD12318, 0x2B20AC3D,
+/**/ 0x3FC8DB0D, 0xD7D5E860,
+/**/ 0x3FCDF613, 0x9D1315AF,
+/**/ 0x3FCF3D21, 0x32D8BC6F,
+/**/ 0x3C9C6A36, 0x92E48EEE,
+/**/ 0x3FD5439A, 0x4436D008,
+/**/ 0x3FF10000, 0x00000000,
+/**/ 0xBF730835, 0xFF7AAF92,
+/**/ 0x3FD52000, 0x00000000,
+/**/ 0x3FF0F332, 0x3DBA2C62,
+/**/ 0x3FC91D9C, 0x7D83983C,
+/**/ 0x3FD15565, 0x4FDDA02E,
+/**/ 0x3FC972B5, 0xB48747C7,
+/**/ 0x3FCEB4A7, 0xBC9105F9,
+/**/ 0x3FD0259F, 0x6A535ECF,
+/**/ 0x3C87EB36, 0xF6EA55C1,
+/**/ 0x3FD5875A, 0x8FA83538,
+/**/ 0x3FF10000, 0x00000000,
+/**/ 0xBF699B84, 0x8BA73C6A,
+/**/ 0x3FD56000, 0x00000000,
+/**/ 0x3FF0F986, 0xB1B22D42,
+/**/ 0x3FC98636, 0xC29A92ED,
+/**/ 0x3FD188E5, 0x87DBE62D,
+/**/ 0x3FCA0E26, 0x792C37EB,
+/**/ 0x3FCF79AF, 0x2735E8CD,
+/**/ 0x3FD0B1D1, 0x6ECCD4C0,
+/**/ 0x3C9502B5, 0xBEAE0510,
+/**/ 0x3FD5CB33, 0xF8CF8AC0,
+/**/ 0x3FF10000, 0x00000000,
+/**/ 0xBF59E539, 0x374AF74C,
+/**/ 0x3FD5A000, 0x00000000,
+/**/ 0x3FF0FFF5, 0x7329D23A,
+/**/ 0x3FC9F009, 0xB568F082,
+/**/ 0x3FD1BDA0, 0x85939DB2,
+/**/ 0x3FCAAD81, 0x0283B18A,
+/**/ 0x3FD022B4, 0x72F69148,
+/**/ 0x3FD14362, 0x39AD0B79,
+/**/ 0xBCAD7968, 0x80828B86,
+/**/ 0x3FD60F26, 0xE847B130,
+/**/ 0x3FF10000, 0x00000000,
+/**/ 0xBEE519AC, 0x5B8BC081,
+/**/ 0x3FD5E000, 0x00000000,
+/**/ 0x3FF1067E, 0xD13A9687,
+/**/ 0x3FCA5B1C, 0xCE4F3F61,
+/**/ 0x3FD1F39E, 0x3E764545,
+/**/ 0x3FCB50E7, 0x6F90871B,
+/**/ 0x3FD08C0B, 0x6F487F97,
+/**/ 0x3FD1DA90, 0x67265C20,
+/**/ 0x3CAE5B02, 0x995723AD,
+/**/ 0x3FD65333, 0xC7E43AA0,
+/**/ 0x3FF10000, 0x00000000,
+/**/ 0x3F59FB44, 0xEA5A1D64,
+/**/ 0x3FD62000, 0x00000000,
+/**/ 0x3FF10D23, 0x1CE216D9,
+/**/ 0x3FCAC777, 0xB63E0B53,
+/**/ 0x3FD22AE6, 0xED81D055,
+/**/ 0x3FCBF87D, 0x3046C5AC,
+/**/ 0x3FD0F8FE, 0xFCB29FE4,
+/**/ 0x3FD2779D, 0xC99A404E,
+/**/ 0xBCA2AF1E, 0xC3202AE8,
+/**/ 0x3FD6975B, 0x02B8E378,
+/**/ 0x3FF10000, 0x00000000,
+/**/ 0x3F6A4639, 0xC42DB2AB,
+/**/ 0x3FD66000, 0x00000000,
+/**/ 0x3FF113E2, 0xA90E6A24,
+/**/ 0x3FCB3522, 0x485F2C6B,
+/**/ 0x3FD26383, 0x15F1D6CC,
+/**/ 0x3FCCA467, 0x14F9D555,
+/**/ 0x3FD169B3, 0x245E397E,
+/**/ 0x3FD31ACF, 0x99479CF7,
+/**/ 0xBC730D3F, 0x8992C228,
+/**/ 0x3FD6DB9D, 0x05213B28,
+/**/ 0x3FF10000, 0x00000000,
+/**/ 0x3F73E2A9, 0x0E6A2469,
+/**/ 0x3FD6A000, 0x00000000,
+/**/ 0x3FF11ABD, 0xCAAAE6D5,
+/**/ 0x3FCBA424, 0x93CF9B23,
+/**/ 0x3FD29D7B, 0x86106AD4,
+/**/ 0x3FCD54CB, 0x5E96870B,
+/**/ 0x3FD1DE4D, 0x9975D46D,
+/**/ 0x3FD3C46E, 0xA709F8A4,
+/**/ 0xBC9CB630, 0x457B6F5C,
+/**/ 0x3FD71FFA, 0x3CC87FC8,
+/**/ 0x3FF10000, 0x00000000,
+/**/ 0x3F7ABDCA, 0xAAE6D53D,
+/**/ 0x3FD6E000, 0x00000000,
+/**/ 0x3FF121B4, 0xD8AD589E,
+/**/ 0x3FCC1486, 0xDD6A8C89,
+/**/ 0x3FD2D8D9, 0x5A283891,
+/**/ 0x3FCE09D1, 0xCFB4F5A1,
+/**/ 0x3FD256F5, 0xCF594BB6,
+/**/ 0x3FD474C7, 0x92614C29,
+/**/ 0xBC88FB31, 0x533051E9,
+/**/ 0x3FD76473, 0x18B1AD28,
+/**/ 0x3FF14000, 0x00000000,
+/**/ 0xBF7E4B27, 0x52A761D6,
+/**/ 0x3FD72000, 0x00000000,
+/**/ 0x3FF128C8, 0x2C23AB4A,
+/**/ 0x3FCC8651, 0xA1A6A356,
+/**/ 0x3FD315A5, 0xFF99ABE3,
+/**/ 0x3FCEC3A3, 0xBE8EE4C2,
+/**/ 0x3FD2D3D5, 0x11207D5D,
+/**/ 0x3FD52C2B, 0x02FE6DF8,
+/**/ 0xBCA3F304, 0xFE4D8DF3,
+/**/ 0x3FD7A908, 0x093FC1F0,
+/**/ 0x3FF14000, 0x00000000,
+/**/ 0xBF7737D3, 0xDC54B622,
+/**/ 0x3FD76000, 0x00000000,
+/**/ 0x3FF12FF8, 0x20420F33,
+/**/ 0x3FCCF98D, 0x96860D89,
+/**/ 0x3FD353EB, 0x3814F292,
+/**/ 0x3FCF826C, 0x27E81BF7,
+/**/ 0x3FD35516, 0x9A827352,
+/**/ 0x3FD5EAED, 0xE614C6DF,
+/**/ 0x3C80AEDB, 0x36C1700C,
+/**/ 0x3FD7EDB9, 0x803E3C28,
+/**/ 0x3FF14000, 0x00000000,
+/**/ 0xBF7007DF, 0xBDF0CCC6,
+/**/ 0x3FD7A000, 0x00000000,
+/**/ 0x3FF13745, 0x12719C3A,
+/**/ 0x3FCD6E43, 0xAD9A717F,
+/**/ 0x3FD393B3, 0x1CFACD12,
+/**/ 0x3FD0232B, 0xE17B8F05,
+/**/ 0x3FD3DAE7, 0xB23873BC,
+/**/ 0x3FD6B169, 0xAFB712E5,
+/**/ 0x3C994C0C, 0x0BC74599,
+/**/ 0x3FD83287, 0xF0E9CF80,
+/**/ 0x3FF14000, 0x00000000,
+/**/ 0xBF6175DB, 0x1CC78CA5,
+/**/ 0x3FD7E000, 0x00000000,
+/**/ 0x3FF13EAF, 0x625F7844,
+/**/ 0x3FCDE47D, 0x161D9978,
+/**/ 0x3FD3D508, 0x22E63DCA,
+/**/ 0x3FD087CA, 0x8B2EC7EB,
+/**/ 0x3FD46577, 0xC5F619C8,
+/**/ 0x3FD77FFC, 0xA08A73DE,
+/**/ 0x3CA1DBDE, 0x6E7B547F,
+/**/ 0x3FD87773, 0xCFF956F8,
+/**/ 0x3FF14000, 0x00000000,
+/**/ 0xBF3509DA, 0x087BC752,
+/**/ 0x3FD82000, 0x00000000,
+/**/ 0x3FF14637, 0x720C869D,
+/**/ 0x3FCE5C43, 0x3F1FD940,
+/**/ 0x3FD417F5, 0x1D614654,
+/**/ 0x3FD0EF2A, 0x472052ED,
+/**/ 0x3FD4F4F8, 0x88116DA6,
+/**/ 0x3FD8570A, 0x102117B6,
+/**/ 0xBCAB6E89, 0x214A7328,
+/**/ 0x3FD8BC7D, 0x93A70458,
+/**/ 0x3FF14000, 0x00000000,
+/**/ 0x3F58DDC8, 0x321A7479,
+/**/ 0x3FD86000, 0x00000000,
+/**/ 0x3FF14DDD, 0xA5DDA5C4,
+/**/ 0x3FCED59F, 0xD9CD3739,
+/**/ 0x3FD45C85, 0x42C70412,
+/**/ 0x3FD15964, 0x49C983A8,
+/**/ 0x3FD5899E, 0x0EF7ED0B,
+/**/ 0x3FD936FA, 0xBC543499,
+/**/ 0x3CAFF50D, 0x7B29F22E,
+/**/ 0x3FD901A5, 0xB3B9CF50,
+/**/ 0x3FF14000, 0x00000000,
+/**/ 0x3F6BBB4B, 0xBB4B87E0,
+/**/ 0x3FD8A000, 0x00000000,
+/**/ 0x3FF155A2, 0x64AC8172,
+/**/ 0x3FCF509C, 0xDBCA7047,
+/**/ 0x3FD4A2C4, 0x3055A16F,
+/**/ 0x3FD1C692, 0xD25160C7,
+/**/ 0x3FD6239E, 0xF68F9906,
+/**/ 0x3FDA203D, 0x1DFC2EE2,
+/**/ 0x3CAD2019, 0x671EF39F,
+/**/ 0x3FD946EC, 0xA98F2718,
+/**/ 0x3FF14000, 0x00000000,
+/**/ 0x3F75A264, 0xAC8171A9,
+/**/ 0x3FD8E000, 0x00000000,
+/**/ 0x3FF15D86, 0x17D8FF02,
+/**/ 0x3FCFCD44, 0x81AAFD5E,
+/**/ 0x3FD4EABD, 0xEE72B776,
+/**/ 0x3FD236D1, 0x377F943F,
+/**/ 0x3FD6C334, 0x83A56DB7,
+/**/ 0x3FDB1345, 0xC36D6C50,
+/**/ 0xBC7841E5, 0x761537BB,
+/**/ 0x3FD98C52, 0xF024E808,
+/**/ 0x3FF14000, 0x00000000,
+/**/ 0x3F7D8617, 0xD8FF01DE,
+/**/ 0x3FD92000, 0x00000000,
+/**/ 0x3FF16589, 0x2B5B4A9A,
+/**/ 0x3FD025D0, 0xA8C0A8C6,
+/**/ 0x3FD5347E, 0xF524E4B6,
+/**/ 0x3FD2AA3B, 0xF565EDBD,
+/**/ 0x3FD7689A, 0xC98D2842,
+/**/ 0x3FDC108F, 0xB128B4DD,
+/**/ 0xBC8A5EEB, 0x4452A669,
+/**/ 0x3FD9D1D9, 0x04239878,
+/**/ 0x3FF18000, 0x00000000,
+/**/ 0xBF7A76D4, 0xA4B56661,
+/**/ 0x3FD96000, 0x00000000,
+/**/ 0x3FF16DAC, 0x0DD68BC8,
+/**/ 0x3FD065DF, 0x0EC54C3A,
+/**/ 0x3FD58014, 0x30C58A12,
+/**/ 0x3FD320F0, 0xBBCBCCEF,
+/**/ 0x3FD81410, 0xD218F380,
+/**/ 0x3FDD189C, 0xC9371D29,
+/**/ 0x3C58C3C1, 0x1D6E6EC7,
+/**/ 0x3FDA177F, 0x63E8EF18,
+/**/ 0x3FF18000, 0x00000000,
+/**/ 0xBF7253F2, 0x29743866,
+/**/ 0x3FD9A000, 0x00000000,
+/**/ 0x3FF175EF, 0x30AC48A8,
+/**/ 0x3FD0A6D3, 0x037BA7C0,
+/**/ 0x3FD5CD8B, 0x06EDCD18,
+/**/ 0x3FD39B0E, 0x7D679188,
+/**/ 0x3FD8C5D8, 0xC8128143,
+/**/ 0x3FDE2BF6, 0x39B3613A,
+/**/ 0xBC874080, 0xC70C9C76,
+/**/ 0x3FDA5D46, 0x8F92A560,
+/**/ 0x3FF18000, 0x00000000,
+/**/ 0xBF64219E, 0xA76EB06E,
+/**/ 0x3FD9E000, 0x00000000,
+/**/ 0x3FF17E53, 0x08107EEF,
+/**/ 0x3FD0E8B2, 0x40691386,
+/**/ 0x3FD61CF1, 0x5BA2319A,
+/**/ 0x3FD418B5, 0x7FF30656,
+/**/ 0x3FD97E38, 0x24624146,
+/**/ 0x3FDF4B2C, 0xF30D6589,
+/**/ 0xBC8D4AD9, 0x74DD0C9B,
+/**/ 0x3FDAA32F, 0x090998F8,
+/**/ 0x3FF18000, 0x00000000,
+/**/ 0xBF3ACF7E, 0xF81116BC,
+/**/ 0x3FDA2000, 0x00000000,
+/**/ 0x3FF186D8, 0x0B1E7A9D,
+/**/ 0x3FD12B82, 0xA98356F0,
+/**/ 0x3FD66E55, 0x96C051D8,
+/**/ 0x3FD49A07, 0x6D28A49D,
+/**/ 0x3FDA3D77, 0xDE14D616,
+/**/ 0x3FE03B6D, 0x13502F53,
+/**/ 0x3CA51700, 0x4AD59707,
+/**/ 0x3FDAE939, 0x540D3F08,
+/**/ 0x3FF18000, 0x00000000,
+/**/ 0x3F5B602C, 0x79EA752F,
+/**/ 0x3FDA6000, 0x00000000,
+/**/ 0x3FF18F7E, 0xB3EE7285,
+/**/ 0x3FD16F4A, 0x4EC4AF40,
+/**/ 0x3FD6C1C6, 0xA9B275FD,
+/**/ 0x3FD51F27, 0x64B886B9,
+/**/ 0x3FDB03E4, 0x9D72A144,
+/**/ 0x3FE0D7CF, 0xE7207DD5,
+/**/ 0xBCAACE1E, 0x8E77D1B2,
+/**/ 0x3FDB2F65, 0xF63F6C78,
+/**/ 0x3FF18000, 0x00000000,
+/**/ 0x3F6EFD67, 0xDCE509F5,
+/**/ 0x3FDAA000, 0x00000000,
+/**/ 0x3FF19847, 0x7FABF325,
+/**/ 0x3FD1B40F, 0x6DD15EDB,
+/**/ 0x3FD71754, 0x156D090D,
+/**/ 0x3FD5A83A, 0x0F44EE42,
+/**/ 0x3FDBD1CE, 0xF26149CC,
+/**/ 0x3FE17B14, 0x9EBB7D53,
+/**/ 0x3CA18867, 0x054C177A,
+/**/ 0x3FDB75B5, 0x773075F8,
+/**/ 0x3FF18000, 0x00000000,
+/**/ 0x3F78477F, 0xABF3257B,
+/**/ 0x3FDAE000, 0x00000000,
+/**/ 0x3FF1A132, 0xEEAD20E6,
+/**/ 0x3FD1F9D8, 0x73AFA8F4,
+/**/ 0x3FD76F0D, 0xF0BA2B44,
+/**/ 0x3FD63565, 0xB2776412,
+/**/ 0x3FDCA78B, 0x8E4B8181,
+/**/ 0x3FE22595, 0xDE92725A,
+/**/ 0xBCABDA45, 0x225EE470,
+/**/ 0x3FDBBC28, 0x606BABE0,
+/**/ 0x3FF1C000, 0x00000000,
+/**/ 0xBF7ECD11, 0x52DF1A7E,
+/**/ 0x3FDB2000, 0x00000000,
+/**/ 0x3FF1AA41, 0x848ADB16,
+/**/ 0x3FD240AB, 0xFE932ABB,
+/**/ 0x3FD7C904, 0xEED7E85D,
+/**/ 0x3FD6C6D2, 0x4640B1B3,
+/**/ 0x3FDD8573, 0x81D01020,
+/**/ 0x3FE2D7B3, 0x9938B939,
+/**/ 0x3CA12ECB, 0x36D76E02,
+/**/ 0x3FDC02BF, 0x3D843430,
+/**/ 0x3FF1C000, 0x00000000,
+/**/ 0xBF75BE7B, 0x7524EA70,
+/**/ 0x3FDB6000, 0x00000000,
+/**/ 0x3FF1B373, 0xC839C9AC,
+/**/ 0x3FD28890, 0xDFBC912D,
+/**/ 0x3FD8254A, 0x666DE3CA,
+/**/ 0x3FD75CA9, 0x8B57457C,
+/**/ 0x3FDE6BE4, 0x7E7E55FE,
+/**/ 0x3FE391D3, 0x68EC3777,
+/**/ 0xBC9F7EFE, 0x4D8A80A5,
+/**/ 0x3FDC497A, 0x9C2247A0,
+/**/ 0x3FF1C000, 0x00000000,
+/**/ 0xBF69186F, 0x8C6CA8A7,
+/**/ 0x3FDBA000, 0x00000000,
+/**/ 0x3FF1BCCA, 0x44246029,
+/**/ 0x3FD2D18E, 0x1D6EB966,
+/**/ 0x3FD883F0, 0x58DF9E20,
+/**/ 0x3FD7F717, 0x2308FF84,
+/**/ 0x3FDF5B41, 0x1CEC1692,
+/**/ 0x3FE45460, 0xEFAE7F7E,
+/**/ 0xBCACA88A, 0xC247C281,
+/**/ 0x3FDC905B, 0x0C10D428,
+/**/ 0x3FF1C000, 0x00000000,
+/**/ 0xBF49ADDE, 0xDCFEB6F6,
+/**/ 0x3FDBE000, 0x00000000,
+/**/ 0x3FF1C645, 0x8645E0A6,
+/**/ 0x3FD31BAA, 0xF4FA598C,
+/**/ 0x3FD8E509, 0x7A00CDBD,
+/**/ 0x3FD89648, 0xA876EFA4,
+/**/ 0x3FE029F8, 0x93BB3BA0,
+/**/ 0x3FE51FCE, 0x3E769492,
+/**/ 0xBC63BD0A, 0xDAC78BA6,
+/**/ 0x3FDCD761, 0x1F4B8A08,
+/**/ 0x3FF1C000, 0x00000000,
+/**/ 0x3F591619, 0x178298DB,
+/**/ 0x3FDC2000, 0x00000000,
+/**/ 0x3FF1CFE6, 0x20466A93,
+/**/ 0x3FD366EE, 0xDCE16113,
+/**/ 0x3FD948A9, 0x3831A262,
+/**/ 0x3FD93A6D, 0xCB5336B7,
+/**/ 0x3FE0AB30, 0xF50362A5,
+/**/ 0x3FE5F494, 0x440F45E4,
+/**/ 0xBCA1B23F, 0x79A811B8,
+/**/ 0x3FDD1E8D, 0x6A0D56C8,
+/**/ 0x3FF1C000, 0x00000000,
+/**/ 0x3F6FCC40, 0x8CD52690,
+/**/ 0x3FDC6000, 0x00000000,
+/**/ 0x3FF1D9AC, 0xA798215A,
+/**/ 0x3FD3B361, 0x87135170,
+/**/ 0x3FD9AEE3, 0xC4E92F90,
+/**/ 0x3FD9E3B8, 0x6C3B0A06,
+/**/ 0x3FE13183, 0x439D6983,
+/**/ 0x3FE6D333, 0x444347EE,
+/**/ 0x3C9E6687, 0x141D7ADE,
+/**/ 0x3FDD65E0, 0x82DF5278,
+/**/ 0x3FF1C000, 0x00000000,
+/**/ 0x3F79ACA7, 0x98215A4D,
+/**/ 0x3FDCA000, 0x00000000,
+/**/ 0x3FF1E399, 0xB59577B1,
+/**/ 0x3FD4010A, 0xE343E389,
+/**/ 0x3FDA17CE, 0x1DB4A57B,
+/**/ 0x3FDA925C, 0xBAC8CA27,
+/**/ 0x3FE1BD2C, 0x29AC5009,
+/**/ 0x3FE7BC33, 0x5806ABBE,
+/**/ 0x3C89743A, 0xD953CBEA,
+/**/ 0x3FDDAD5B, 0x02A82420,
+/**/ 0x3FF20000, 0x00000000,
+/**/ 0xBF7C664A, 0x6A884EAF,
+/**/ 0x3FDCE000, 0x00000000,
+/**/ 0x3FF1EDAD, 0xE7A0AD1E,
+/**/ 0x3FD44FF3, 0x215D62D8,
+/**/ 0x3FDA837E, 0x15B2742E,
+/**/ 0x3FDB4691, 0x557C3A62,
+/**/ 0x3FE24E6B, 0x9ABECCA0,
+/**/ 0x3FE8B024, 0xF75D3619,
+/**/ 0xBC60A42B, 0x953C1F21,
+/**/ 0x3FDDF4FD, 0x84BBE168,
+/**/ 0x3FF20000, 0x00000000,
+/**/ 0xBF725218, 0x5F52E269,
+/**/ 0x3FDD2000, 0x00000000,
+/**/ 0x3FF1F7E9, 0xDF448BE1,
+/**/ 0x3FD4A022, 0xB4103D45,
+/**/ 0x3FDAF20A, 0x5F90F152,
+/**/ 0x3FDC008F, 0x6B992E26,
+/**/ 0x3FE2E585, 0x07C18F30,
+/**/ 0x3FE9AFA1, 0x8DCE89C2,
+/**/ 0xBC8B90A5, 0xE5B4E0DD,
+/**/ 0x3FDE3CC8, 0xA6EC6EF0,
+/**/ 0x3FF20000, 0x00000000,
+/**/ 0xBF602C41, 0x76E83DEE,
+/**/ 0x3FDD6000, 0x00000000,
+/**/ 0x3FF2024E, 0x42567651,
+/**/ 0x3FD4F1A2, 0x53815E48,
+/**/ 0x3FDB638A, 0x98189F26,
+/**/ 0x3FDCC092, 0xE11F7BB9,
+/**/ 0x3FE382BF, 0x968E1C3C,
+/**/ 0x3FEABB4C, 0x1A4C4551,
+/**/ 0xBCAC384D, 0xC65EE1E9,
+/**/ 0x3FDE84BD, 0x099A6620,
+/**/ 0x3FF20000, 0x00000000,
+/**/ 0x3F427212, 0xB3B2877E,
+/**/ 0x3FDDA000, 0x00000000,
+/**/ 0x3FF20CDB, 0xBB19D366,
+/**/ 0x3FD5447B, 0x00190520,
+/**/ 0x3FDBD817, 0x514AC3D7,
+/**/ 0x3FDD86DA, 0x7501B24E,
+/**/ 0x3FE42666, 0x5D5DCC91,
+/**/ 0x3FEBD3D1, 0xDB834BBA,
+/**/ 0xBCA62892, 0x64307FE4,
+/**/ 0x3FDECCDB, 0x4FC685E0,
+/**/ 0x3FF20000, 0x00000000,
+/**/ 0x3F69B776, 0x33A6CD00,
+/**/ 0x3FDDE000, 0x00000000,
+/**/ 0x3FF21792, 0xF864EB38,
+/**/ 0x3FD598B6, 0x0573E0CA,
+/**/ 0x3FDC4FCA, 0x1E1D9C05,
+/**/ 0x3FDE53A7, 0xE9C2FB44,
+/**/ 0x3FE4D0C8, 0xA26E99AF,
+/**/ 0x3FECF9EB, 0x09A8A359,
+/**/ 0xBCADF861, 0xD9AFA9E0,
+/**/ 0x3FDF1524, 0x1F23B3F8,
+/**/ 0x3FF20000, 0x00000000,
+/**/ 0x3F7792F8, 0x64EB3836,
+/**/ 0x3FDE2000, 0x00000000,
+/**/ 0x3FF22274, 0xADC744F8,
+/**/ 0x3FD5EE5C, 0xFD785957,
+/**/ 0x3FDCCABD, 0x9EE01B3A,
+/**/ 0x3FDF2740, 0x30A7B7B5,
+/**/ 0x3FE5823A, 0x202E0D0D,
+/**/ 0x3FEE2E5B, 0x9EEBE829,
+/**/ 0xBC93BB42, 0xE2EA9787,
+/**/ 0x3FDF5D98, 0x202994B8,
+/**/ 0x3FF24000, 0x00000000,
+/**/ 0xBF7D8B52, 0x38BB0864,
+/**/ 0x3FDE6000, 0x00000000,
+/**/ 0x3FF22D81, 0x93B1990A,
+/**/ 0x3FD64579, 0xD3920D0F,
+/**/ 0x3FDD490D, 0x8E4FE1FE,
+/**/ 0x3FE000F5, 0xCBD3ED59,
+/**/ 0x3FE63B13, 0x4E45F774,
+/**/ 0x3FEF71F4, 0x2FD578CE,
+/**/ 0x3CA8AD1C, 0xC0E1AC47,
+/**/ 0x3FDFA637, 0xFE27BF60,
+/**/ 0x3FF24000, 0x00000000,
+/**/ 0xBF727E6C, 0x4E66F5A1,
+/**/ 0x3FDEA000, 0x00000000,
+/**/ 0x3FF238BA, 0x679F6AE1,
+/**/ 0x3FD69E16, 0xC815A8F5,
+/**/ 0x3FDDCAD6, 0xCF6CD4C9,
+/**/ 0x3FE071FA, 0xFD2ADE38,
+/**/ 0x3FE6FBB1, 0xAFEE9630,
+/**/ 0x3FF062C9, 0x6A7ACB82,
+/**/ 0x3C7E3580, 0x35D3555B,
+/**/ 0x3FDFEF04, 0x67599588,
+/**/ 0x3FF24000, 0x00000000,
+/**/ 0xBF5D1661, 0x82547B6F,
+/**/ 0x3FDEE000, 0x00000000,
+/**/ 0x3FF2441F, 0xEC425F4B,
+/**/ 0x3FD6F83E, 0x73CF67B4,
+/**/ 0x3FDE5037, 0x7C1691BA,
+/**/ 0x3FE0E6D7, 0x7AF8190E,
+/**/ 0x3FE7C478, 0x27F29078,
+/**/ 0x3FF11512, 0x13B5FFDC,
+/**/ 0x3C6CC7A1, 0x5FEBA301,
+/**/ 0x3FE01BFF, 0x067D6224,
+/**/ 0x3FF24000, 0x00000000,
+/**/ 0x3F507FB1, 0x097D2BDC,
+/**/ 0x3FDF2000, 0x00000000,
+/**/ 0x3FF24FB2, 0xE9AF6533,
+/**/ 0x3FD753FB, 0xCBBEA804,
+/**/ 0x3FDED94E, 0xF480E731,
+/**/ 0x3FE15FB5, 0x106D90C6,
+/**/ 0x3FE895CF, 0x52DAD430,
+/**/ 0x3FF1D052, 0x28FAAE13,
+/**/ 0xBCA50976, 0xE849F35A,
+/**/ 0x3FE04092, 0xD1AE3B48,
+/**/ 0x3FF24000, 0x00000000,
+/**/ 0x3F6F65D3, 0x5ECA665D,
+/**/ 0x3FDF6000, 0x00000000,
+/**/ 0x3FF25B74, 0x2D8DC7FA,
+/**/ 0x3FD7B15A, 0x25013475,
+/**/ 0x3FDF663D, 0xEF8D6387,
+/**/ 0x3FE1DCBF, 0xA2DF4BFF,
+/**/ 0x3FE97025, 0xE7C2E4E5,
+/**/ 0x3FF29510, 0x1C2AE4AB,
+/**/ 0x3CA4C8DC, 0xB02A3D13,
+/**/ 0x3FE0653D, 0xF0FD9FD8,
+/**/ 0x3FF24000, 0x00000000,
+/**/ 0x3F7B742D, 0x8DC7FA40,
+/**/ 0x3FDFA000, 0x00000000,
+/**/ 0x3FF26764, 0x8B4843F2,
+/**/ 0x3FD81065, 0x38F10257,
+/**/ 0x3FDFF726, 0x8C1920B1,
+/**/ 0x3FE25E25, 0x5148D4E4,
+/**/ 0x3FEA53F1, 0x2061C3FE,
+/**/ 0x3FF363DB, 0x5B9300E5,
+/**/ 0xBCA47774, 0x624B8B97,
+/**/ 0x3FE08A00, 0xC1CAE338,
+/**/ 0x3FF28000, 0x00000000,
+/**/ 0xBF789B74, 0xB7BC0E50,
+/**/ 0x3FDFE000, 0x00000000,
+/**/ 0x3FF27384, 0xDC4036F2,
+/**/ 0x3FD87129, 0x29775C8F,
+/**/ 0x3FE04616, 0x31A78776,
+/**/ 0x3FE2E416, 0x95EE0C65,
+/**/ 0x3FEB41AD, 0x28E05161,
+/**/ 0x3FF43D4C, 0xFF1DF849,
+/**/ 0x3CA5941C, 0xBABBA919,
+/**/ 0x3FE0AEDB, 0xA3221C1C,
+/**/ 0x3FF28000, 0x00000000,
+/**/ 0xBF68F647, 0x7F921C27,
+/**/ 0x3FE01000, 0x00000000,
+/**/ 0x3FF27FD6, 0x00030888,
+/**/ 0x3FD8D3B2, 0x8598A1B5,
+/**/ 0x3FE092BA, 0x4E0BC755,
+/**/ 0x3FE36EC6, 0x6A428EEC,
+/**/ 0x3FEC39C0, 0x44F514C9,
+/**/ 0x3FF52205, 0x18C4EF3A,
+/**/ 0x4000C1D1, 0xA852F235,
+/**/ 0x3CA78082, 0xD00F64B8,
+/**/ 0x3FE0D3CE, 0xF5C846F8,
+/**/ 0x3FF28000, 0x00000000,
+/**/ 0xBF04FFFE, 0x7BBC39DF,
+/**/ 0x3FE03000, 0x00000000,
+/**/ 0x3FF28C58, 0xDC81E6D7,
+/**/ 0x3FD9380E, 0x4E3BF356,
+/**/ 0x3FE0E192, 0xFFC646A7,
+/**/ 0x3FE3FE6A, 0x6D34756D,
+/**/ 0x3FED3CEF, 0x139ABC91,
+/**/ 0x3FF612B8, 0xF80111C0,
+/**/ 0x4001A33C, 0x3467C688,
+/**/ 0xBC8A9954, 0x34F59445,
+/**/ 0x3FE0F8DB, 0x1C47D550,
+/**/ 0x3FF28000, 0x00000000,
+/**/ 0x3F68B1B9, 0x03CDAE3F,
+/**/ 0x3FE05000, 0x00000000,
+/**/ 0x3FF2990E, 0x5E4BF713,
+/**/ 0x3FD99E49, 0xFB326E9E,
+/**/ 0x3FE132B4, 0x8779391A,
+/**/ 0x3FE4933B, 0x0C2FE325,
+/**/ 0x3FEE4BB1, 0xAEAAE1D0,
+/**/ 0x3FF71020, 0x1F4377BD,
+/**/ 0x40029271, 0x1C886605,
+/**/ 0xBCA33AB1, 0x7130CE99,
+/**/ 0x3FE11E00, 0x7AFDAF10,
+/**/ 0x3FF28000, 0x00000000,
+/**/ 0x3F790E5E, 0x4BF712C7,
+/**/ 0x3FE07000, 0x00000000,
+/**/ 0x3FF2A5F7, 0x78CB1A3B,
+/**/ 0x3FDA0673, 0x8081C5D1,
+/**/ 0x3FE18634, 0x0D5E6499,
+/**/ 0x3FE52D73, 0xAEDD6BE6,
+/**/ 0x3FEF66A5, 0x1CF1AAA0,
+/**/ 0x3FF81B02, 0x4834E5A9,
+/**/ 0x40039066, 0xFCE48906,
+/**/ 0xBCA34E4F, 0x6BFB4C85,
+/**/ 0x3FE1433F, 0x7826AAD4,
+/**/ 0x3FF2C000, 0x00000000,
+/**/ 0xBF7A0887, 0x34E5C574,
+/**/ 0x3FE09000, 0x00000000,
+/**/ 0x3FF2B315, 0x268368DB,
+/**/ 0x3FDA7099, 0x53F655B7,
+/**/ 0x3FE1DC27, 0xAD9032EC,
+/**/ 0x3FE5CD52, 0xE5F88E23,
+/**/ 0x3FF04738, 0x0A68BDFC,
+/**/ 0x3FF93435, 0x2F057820,
+/**/ 0x40049E27, 0xDAE8A2FC,
+/**/ 0x3C86832C, 0xFAA44565,
+/**/ 0x3FE16898, 0x7BED8260,
+/**/ 0x3FF2C000, 0x00000000,
+/**/ 0xBF69D5B2, 0xF92E4A41,
+/**/ 0x3FE0B000, 0x00000000,
+/**/ 0x3FF2C068, 0x69558A9E,
+/**/ 0x3FDADCCA, 0x73011B64,
+/**/ 0x3FE234A6, 0x8511146A,
+/**/ 0x3FE6731A, 0x9D6CBF3C,
+/**/ 0x3FF0E1E1, 0xD575F00A,
+/**/ 0x3FFA5C9D, 0xADEA17E7,
+/**/ 0x4005BCD2, 0xD9123E7C,
+/**/ 0xBCA23E4F, 0xCC2AE1E4,
+/**/ 0x3FE18E0B, 0xF07948F0,
+/**/ 0x3FF2C000, 0x00000000,
+/**/ 0x3F1A1A55, 0x62A7614A,
+/**/ 0x3FE0D000, 0x00000000,
+/**/ 0x3FF2CDF2, 0x4AC410C6,
+/**/ 0x3FDB4B16, 0x68E63D97,
+/**/ 0x3FE28FC8, 0xBFA256B2,
+/**/ 0x3FE71F10, 0x51FDF05A,
+/**/ 0x3FF183AE, 0x0753C882,
+/**/ 0x3FFB9530, 0xF1921090,
+/**/ 0x4006ED9E, 0x14F942BC,
+/**/ 0x3CA27879, 0x89C77FA3,
+/**/ 0x3FE1B39A, 0x41FC691C,
+/**/ 0x3FF2C000, 0x00000000,
+/**/ 0x3F6BE495, 0x88218CD6,
+/**/ 0x3FE0F000, 0x00000000,
+/**/ 0x3FF2DBB3, 0xDC3BFD25,
+/**/ 0x3FDBBB8D, 0x55413207,
+/**/ 0x3FE2EDA7, 0xA6792BF1,
+/**/ 0x3FE7D17D, 0x4AC4E230,
+/**/ 0x3FF22D00, 0xAAE6CB05,
+/**/ 0x3FFCDEF5, 0xC9028E71,
+/**/ 0x400831D8, 0xB40C626C,
+/**/ 0x3C953FEF, 0x9873F484,
+/**/ 0x3FE1D943, 0xDEC430C0,
+/**/ 0x3FF2C000, 0x00000000,
+/**/ 0x3F7BB3DC, 0x3BFD24A1,
+/**/ 0x3FE11000, 0x00000000,
+/**/ 0x3FF2E9AE, 0x3760A19B,
+/**/ 0x3FDC2E3F, 0xF2E3E2EB,
+/**/ 0x3FE34E5D, 0xAFE1CD38,
+/**/ 0x3FE88AAE, 0xD6CE0B26,
+/**/ 0x3FF2DE44, 0x2C4B06C6,
+/**/ 0x3FFE3B06, 0x138813D2,
+/**/ 0x40098AED, 0x23FD5612,
+/**/ 0xBC91EC19, 0xB7AF0E54,
+/**/ 0x3FE1FF09, 0x3748F114,
+/**/ 0x3FF30000, 0x00000000,
+/**/ 0xBF7651C8, 0x9F5E657E,
+/**/ 0x3FE13000, 0x00000000,
+/**/ 0x3FF2F7E2, 0x7E5B072B,
+/**/ 0x3FDCA33F, 0x9F169C4D,
+/**/ 0x3FE3B206, 0x8FE1EB56,
+/**/ 0x3FE94AF6, 0x8F30E1B7,
+/**/ 0x3FF397E9, 0xCFCF9887,
+/**/ 0x3FFFAA90, 0x4FB7F25F,
+/**/ 0x400AFA63, 0x94745D90,
+/**/ 0x3C96955C, 0x2A139390,
+/**/ 0x3FE224EA, 0xBE3EBA20,
+/**/ 0x3FF30000, 0x00000000,
+/**/ 0xBF603B03, 0x49F1AA85,
+/**/ 0x3FE15000, 0x00000000,
+/**/ 0x3FF30651, 0xDC2D0E76,
+/**/ 0x3FDD1A9E, 0x613EF408,
+/**/ 0x3FE418BF, 0x49ED083D,
+/**/ 0x3FEA12AA, 0x9DFD1E23,
+/**/ 0x3FF45A6A, 0x32B75F76,
+/**/ 0x4000976C, 0xA7673F47,
+/**/ 0x400C81E4, 0xB046AC6A,
+/**/ 0x3C879FF7, 0x7D1BEB80,
+/**/ 0x3FE24AE8, 0xE8A6B8B0,
+/**/ 0x3FF30000, 0x00000000,
+/**/ 0x3F594770, 0xB439D90E,
+/**/ 0x3FE17000, 0x00000000,
+/**/ 0x3FF314FD, 0x85087ECD,
+/**/ 0x3FDD946E, 0xF2F45390,
+/**/ 0x3FE482A6, 0x43BEDA05,
+/**/ 0x3FEAE226, 0x0A640DD7,
+/**/ 0x3FF52645, 0xD6A3D695,
+/**/ 0x4001649F, 0x08098FE0,
+/**/ 0x400E233C, 0x9D2BADE7,
+/**/ 0x3C9E948C, 0x4E5F8348,
+/**/ 0x3FE27104, 0x2DE13E58,
+/**/ 0x3FF30000, 0x00000000,
+/**/ 0x3F74FD85, 0x087ECD1A,
+/**/ 0x3FE19000, 0x00000000,
+/**/ 0x3FF323E6, 0xB6AA3C67,
+/**/ 0x3FDE10C4, 0xC8894828,
+/**/ 0x3FE4EFDB, 0x59718389,
+/**/ 0x3FEBB9C9, 0x0A8D7622,
+/**/ 0x3FF5FC05, 0xB8A62B12,
+/**/ 0x40023D9A, 0xE4296831,
+/**/ 0x400FE05E, 0x49C0B830,
+/**/ 0x3CA19107, 0xC1189DE8,
+/**/ 0x3FE2973D, 0x07C07BCC,
+/**/ 0x3FF34000, 0x00000000,
+/**/ 0xBF7C1949, 0x55C3993D,
+/**/ 0x3FE1B000, 0x00000000,
+/**/ 0x3FF3330E, 0xB8B9E20B,
+/**/ 0x3FDE8FB4, 0x1A11468B,
+/**/ 0x3FE5607F, 0xF2E740E1,
+/**/ 0x3FEC99F9, 0x5B91DB14,
+/**/ 0x3FF6DC3B, 0xF50C5FAA,
+/**/ 0x4003232A, 0x0CFAC1C7,
+/**/ 0x4010DDB3, 0x894EFD30,
+/**/ 0xBCA7760F, 0x3783D916,
+/**/ 0x3FE2BD93, 0xF29BF5F0,
+/**/ 0x3FF34000, 0x00000000,
+/**/ 0xBF69E28E, 0x8C3BEA7F,
+/**/ 0x3FE1D000, 0x00000000,
+/**/ 0x3FF34276, 0xDD2DFE6D,
+/**/ 0x3FDF1151, 0xECEB226B,
+/**/ 0x3FE5D4B7, 0x1AA123CE,
+/**/ 0x3FED8322, 0xA01F65F8,
+/**/ 0x3FF7C784, 0x791CE583,
+/**/ 0x40041625, 0xC15A6B9C,
+/**/ 0x4011DB51, 0x64280FEB,
+/**/ 0x3CA10463, 0x28CA6DBB,
+/**/ 0x3FE2E409, 0x6D64BEAC,
+/**/ 0x3FF34000, 0x00000000,
+/**/ 0x3F43B6E9, 0x6FF364E1,
+/**/ 0x3FE1F000, 0x00000000,
+/**/ 0x3FF35220, 0x80B539C7,
+/**/ 0x3FDF95B4, 0x1DD91A82,
+/**/ 0x3FE64CA5, 0x961EA9CA,
+/**/ 0x3FEE75B6, 0xC65B3B2F,
+/**/ 0x3FF8BE85, 0xC412E59F,
+/**/ 0x40051778, 0x02462A51,
+/**/ 0x4012EA48, 0x109FC81B,
+/**/ 0x3C959E4C, 0x9F70CA98,
+/**/ 0x3FE30A9D, 0xF9BA7B3C,
+/**/ 0x3FF34000, 0x00000000,
+/**/ 0x3F722080, 0xB539C6A2,
+/**/ 0x3FE21000, 0x00000000,
+/**/ 0x3FF3620D, 0x0B24ACDA,
+/**/ 0x3FE00E78, 0xB5D803B6,
+/**/ 0x3FE6C871, 0xFFE457FB,
+/**/ 0x3FEF722E, 0x759EF386,
+/**/ 0x3FF9C1F1, 0xB8D0E874,
+/**/ 0x4006281D, 0x080FB06E,
+/**/ 0x40140BF2, 0xD1F69DF7,
+/**/ 0xBC8489EA, 0xCBFAF37F,
+/**/ 0x3FE33152, 0x1C0141BC,
+/**/ 0x3FF38000, 0x00000000,
+/**/ 0xBF7DF2F4, 0xDB532667,
+/**/ 0x3FE23000, 0x00000000,
+/**/ 0x3FF3723D, 0xEFEBB76D,
+/**/ 0x3FE05390, 0xC153FC4C,
+/**/ 0x3FE74844, 0xE34A2666,
+/**/ 0x3FF03C84, 0xC260A400,
+/**/ 0x3FFAD286, 0x81E70F01,
+/**/ 0x40074924, 0xDBC4A78E,
+/**/ 0x401541CB, 0x8BBCA2E0,
+/**/ 0x3C9C7528, 0x7BEA8472,
+/**/ 0x3FE35826, 0x5B7858F8,
+/**/ 0x3FF38000, 0x00000000,
+/**/ 0xBF6B8420, 0x28912510,
+/**/ 0x3FE25000, 0x00000000,
+/**/ 0x3FF382B4, 0xAE8DA9C7,
+/**/ 0x3FE09A2E, 0x842CABB9,
+/**/ 0x3FE7CC48, 0xDA356141,
+/**/ 0x3FF0C567, 0xBCD4FDB8,
+/**/ 0x3FFBF10F, 0x89B62C32,
+/**/ 0x40087BB5, 0x18ADC4B9,
+/**/ 0x40168D6D, 0xC516F6F1,
+/**/ 0xBC933A6B, 0x2E37D6A3,
+/**/ 0x3FE37F1B, 0x4251E5AC,
+/**/ 0x3FF38000, 0x00000000,
+/**/ 0x3F45A574, 0x6D4E3A7A,
+/**/ 0x3FE27000, 0x00000000,
+/**/ 0x3FF39372, 0xD3219A4C,
+/**/ 0x3FE0E25E, 0xD4394437,
+/**/ 0x3FE854AA, 0xACE4CC74,
+/**/ 0x3FF15408, 0x0981EE13,
+/**/ 0x3FFD1E66, 0x88AA5332,
+/**/ 0x4009C10A, 0xDA3BD18F,
+/**/ 0x4017F099, 0xFFE4AE21,
+/**/ 0xBCAED56B, 0x7B588ABE,
+/**/ 0x3FE3A631, 0x5DCB911C,
+/**/ 0x3FF38000, 0x00000000,
+/**/ 0x3F7372D3, 0x219A4BA9,
+/**/ 0x3FE29000, 0x00000000,
+/**/ 0x3FF3A479, 0xF6D8C6BC,
+/**/ 0x3FE12C2F, 0x11197A32,
+/**/ 0x3FE8E199, 0x73F949D5,
+/**/ 0x3FF1E8B1, 0xEE7A481D,
+/**/ 0x3FFE5B74, 0xABBE8828,
+/**/ 0x400B1A7C, 0xDB3D83BC,
+/**/ 0x40196D39, 0x6DC46100,
+/**/ 0x3CA7798C, 0xACD8F69C,
+/**/ 0x3FE3CD69, 0x3E4835E8,
+/**/ 0x3FF3C000, 0x00000000,
+/**/ 0xBF7B8609, 0x27394391,
+/**/ 0x3FE2B000, 0x00000000,
+/**/ 0x3FF3B5CB, 0xC08BE738,
+/**/ 0x3FE177AD, 0x2B5CB6B7,
+/**/ 0x3FE97346, 0xBCE90EB1,
+/**/ 0x3FF283B6, 0x68EC7F04,
+/**/ 0x3FFFA933, 0xD5B8ED04,
+/**/ 0x400C897D, 0xCBCDFF9A,
+/**/ 0x401B0562, 0x0E4ABF55,
+/**/ 0x3C881FF6, 0x1EE42043,
+/**/ 0x3FE3F4C3, 0x776AA08C,
+/**/ 0x3FF3C000, 0x00000000,
+/**/ 0xBF64687E, 0xE8319086,
+/**/ 0x3FE2D000, 0x00000000,
+/**/ 0x3FF3C769, 0xE54FE05E,
+/**/ 0x3FE1C4E7, 0xAC1A81A0,
+/**/ 0x3FEA09E6, 0xB10FA326,
+/**/ 0x3FF3256B, 0x840F679B,
+/**/ 0x40008457, 0xFEE9EF1A,
+/**/ 0x400E0F9E, 0xE4146343,
+/**/ 0x401CBB5B, 0x433496A9,
+/**/ 0xBCA57A4C, 0x59F087C0,
+/**/ 0x3FE41C40, 0xA03171A8,
+/**/ 0x3FF3C000, 0x00000000,
+/**/ 0x3F5DA795, 0x3F81773D,
+/**/ 0x3FE2F000, 0x00000000,
+/**/ 0x3FF3D956, 0x291249DC,
+/**/ 0x3FE213ED, 0xBD044AC9,
+/**/ 0x3FEAA5B0, 0x3F917FA8,
+/**/ 0x3FF3CE2C, 0xB7380A79,
+/**/ 0x40013D84, 0x576AFAE8,
+/**/ 0x400FAE92, 0xBAAB74F3,
+/**/ 0x401E91A2, 0xE9129E4A,
+/**/ 0x3C905671, 0x0CEC83F7,
+/**/ 0x3FE443E1, 0x53143194,
+/**/ 0x3FF3C000, 0x00000000,
+/**/ 0x3F795629, 0x1249DBC4,
+/**/ 0x3FE31000, 0x00000000,
+/**/ 0x3FF3EB92, 0x5F3E4715,
+/**/ 0x3FE264CF, 0x30F965D1,
+/**/ 0x3FEB46DD, 0x4A4F2FB2,
+/**/ 0x3FF47E5B, 0x4BC2E94F,
+/**/ 0x400200B9, 0x54F8F9EB,
+/**/ 0x4010B418, 0x33305D9F,
+/**/ 0x40204579, 0x826EF167,
+/**/ 0xBC9737A0, 0xE06EBCAE,
+/**/ 0x3FE46BA6, 0x2E21A53C,
+/**/ 0x3FF40000, 0x00000000,
+/**/ 0xBF746DA0, 0xC1B8EB04,
+/**/ 0x3FE33000, 0x00000000,
+/**/ 0x3FF3FE20, 0x6B6A38D5,
+/**/ 0x3FE2B79C, 0x8D26C7A0,
+/**/ 0x3FEBEDAA, 0xD62978F8,
+/**/ 0x3FF5365E, 0xCB8CC6D1,
+/**/ 0x4002CE9C, 0xD894AF54,
+/**/ 0x40119F3B, 0x79F7C63E,
+/**/ 0x40215524, 0x0C8E7B9E,
+/**/ 0x3CA485D0, 0x13DC9A80,
+/**/ 0x3FE4938F, 0xD31F754C,
+/**/ 0x3FF40000, 0x00000000,
+/**/ 0xBF3DF949, 0x5C72B1E7,
+/**/ 0x3FE35000, 0x00000000,
+/**/ 0x3FF41102, 0x420ED8E7,
+/**/ 0x3FE30C67, 0x12BCE2B2,
+/**/ 0x3FEC9A59, 0x3EDE345E,
+/**/ 0x3FF5F6A5, 0x78CAB466,
+/**/ 0x4003A7E1, 0x3EAD62EE,
+/**/ 0x401299C8, 0x9CB9A228,
+/**/ 0x40227974, 0x1BE749B0,
+/**/ 0x3CAFE28F, 0xC6A9831F,
+/**/ 0x3FE4BB9E, 0xE7AB3A40,
+/**/ 0x3FF40000, 0x00000000,
+/**/ 0x3F710242, 0x0ED8E776,
+/**/ 0x3FE37000, 0x00000000,
+/**/ 0x3FF42439, 0xE9485B43,
+/**/ 0x3FE36340, 0xC946E033,
+/**/ 0x3FED4D2C, 0x6ECC5A7E,
+/**/ 0x3FF6BFA4, 0xD027255A,
+/**/ 0x40048D46, 0x72504BE1,
+/**/ 0x4013A4ED, 0x09445BD5,
+/**/ 0x4023B435, 0x749E19F9,
+/**/ 0xBC40E7E5, 0xEAAAF53E,
+/**/ 0x3FE4E3D4, 0x155D0070,
+/**/ 0x3FF44000, 0x00000000,
+/**/ 0xBF7BC616, 0xB7A4BD36,
+/**/ 0x3FE39000, 0x00000000,
+/**/ 0x3FF437C9, 0x79A23C23,
+/**/ 0x3FE3BC3C, 0x89AF6A9D,
+/**/ 0x3FEE066C, 0x1AF553BA,
+/**/ 0x3FF791DA, 0x1622569A,
+/**/ 0x40057F9B, 0x1B18AE2B,
+/**/ 0x4014C1F0, 0x88BFF240,
+/**/ 0x40250761, 0x019A4522,
+/**/ 0x3CA4C238, 0xFDFCCB13,
+/**/ 0x3FE50C30, 0x09EB58F8,
+/**/ 0x3FF44000, 0x00000000,
+/**/ 0xBF606D0C, 0xBB87B9E1,
+/**/ 0x3FE3B000, 0x00000000,
+/**/ 0x3FF44BB3, 0x1EEE6F35,
+/**/ 0x3FE4176E, 0x0A004D1D,
+/**/ 0x3FEEC664, 0x0399FA54,
+/**/ 0x3FF86DCA, 0xF0CFD106,
+/**/ 0x40067FBD, 0xE8C80E97,
+/**/ 0x4015F237, 0xD9CD2D79,
+/**/ 0x40267521, 0xC8076345,
+/**/ 0x3CAEC756, 0xB089F7AF,
+/**/ 0x3FE534B3, 0x77510D94,
+/**/ 0x3FF44000, 0x00000000,
+/**/ 0x3F67663D, 0xDCDE698F,
+/**/ 0x3FE3D000, 0x00000000,
+/**/ 0x3FF45FF9, 0x1928B1BE,
+/**/ 0x3FE474E9, 0xE9EB53E9,
+/**/ 0x3FEF8D64, 0x39DB03B6,
+/**/ 0x3FF95406, 0x0F298B87,
+/**/ 0x40078E9E, 0xFFC72AB6,
+/**/ 0x40173747, 0x941456E7,
+/**/ 0x4027FFDA, 0x74A71E71,
+/**/ 0xBCAEED93, 0xFE7483B3,
+/**/ 0x3FE55D5F, 0x13F48EC0,
+/**/ 0x3FF44000, 0x00000000,
+/**/ 0x3F7FF919, 0x28B1BDFF,
+/**/ 0x3FE3F000, 0x00000000,
+/**/ 0x3FF4749D, 0xBD66D0C4,
+/**/ 0x3FE4D4C5, 0xC02C2013,
+/**/ 0x3FF02DE0, 0xB56768CC,
+/**/ 0x3FFA4523, 0xDF53A7BD,
+/**/ 0x4008AD41, 0x8A357386,
+/**/ 0x401892C7, 0x5E392799,
+/**/ 0x4029AA2B, 0x97746ACD,
+/**/ 0x3C924F0A, 0xB4A71E44,
+/**/ 0x3FE58633, 0x9AD13548,
+/**/ 0x3FF48000, 0x00000000,
+/**/ 0xBF66C485, 0x325E775E,
+/**/ 0x3FE41000, 0x00000000,
+/**/ 0x3FF489A3, 0x76D6C491,
+/**/ 0x3FE53718, 0x28D40829,
+/**/ 0x3FF098EA, 0x98450D83,
+/**/ 0x3FFB41C7, 0x55526E3B,
+/**/ 0x4009DCBD, 0x719F540E,
+/**/ 0x401A0685, 0x805D08D1,
+/**/ 0x402B76FA, 0xA5142633,
+/**/ 0x3C2AD9A7, 0xF1FF56FC,
+/**/ 0x3FE5AF31, 0xCBA27244,
+/**/ 0x3FF48000, 0x00000000,
+/**/ 0x3F6346ED, 0xAD892100,
+/**/ 0x3FE43000, 0x00000000,
+/**/ 0x3FF49F0C, 0xC7CB94CC,
+/**/ 0x3FE59BF8, 0xD492AA1E,
+/**/ 0x3FF107FF, 0x34D2CA82,
+/**/ 0x3FFC4A9E, 0xC3DF9E51,
+/**/ 0x400B1E41, 0x45F5874E,
+/**/ 0x401B947A, 0xDEB92648,
+/**/ 0x402D6979, 0xD903D532,
+/**/ 0x3CA43231, 0x04C67F5E,
+/**/ 0x3FE5D85A, 0x6B1109A4,
+/**/ 0x3FF48000, 0x00000000,
+/**/ 0x3F7F0CC7, 0xCB94CC1A,
+/**/ 0x3FE45000, 0x00000000,
+/**/ 0x3FF4B4DC, 0x4ADA0BF0,
+/**/ 0x3FE60380, 0x990F861F,
+/**/ 0x3FF17B50, 0xCBEC7542,
+/**/ 0x3FFD6064, 0xC93CFE8F,
+/**/ 0x400C7314, 0x56F36FE3,
+/**/ 0x401D3ECF, 0x696E5374,
+/**/ 0x402F8531, 0x1778AF1D,
+/**/ 0x3C7A53BF, 0x31EBDA84,
+/**/ 0x3FE601AE, 0x42E27660,
+/**/ 0x3FF4C000, 0x00000000,
+/**/ 0xBF66476A, 0x4BE81F81,
+/**/ 0x3FE47000, 0x00000000,
+/**/ 0x3FF4CB14, 0xB4065600,
+/**/ 0x3FE66DC9, 0x826ADA4F,
+/**/ 0x3FF1F314, 0xA3298D4D,
+/**/ 0x3FFE83E1, 0x52191CB4,
+/**/ 0x400DDC99, 0x05CA69AF,
+/**/ 0x401F07DF, 0x1079C46A,
+/**/ 0x4030E703, 0xF9440EB0,
+/**/ 0x3CA495E1, 0x5817D0DD,
+/**/ 0x3FE62B2E, 0x222A98A0,
+/**/ 0x3FF4C000, 0x00000000,
+/**/ 0x3F662968, 0x0CAC00D4,
+/**/ 0x3FE49000, 0x00000000,
+/**/ 0x3FF4E1B8, 0xD203BDC9,
+/**/ 0x3FE6DAEE, 0xE5FE0976,
+/**/ 0x3FF26F83, 0x3C44F71E,
+/**/ 0x3FFFB5EA, 0xB4D92F91,
+/**/ 0x400F5C4F, 0x55A779C8,
+/**/ 0x4020791F, 0xA66A7536,
+/**/ 0x40322428, 0x7DCE5D75,
+/**/ 0x3CADE7E8, 0x964F770B,
+/**/ 0x3FE654DA, 0xDD7FD12C,
+/**/ 0x3FF50000, 0x00000000,
+/**/ 0xBF7E472D, 0xFC42374B,
+/**/ 0x3FE4B000, 0x00000000,
+/**/ 0x3FF4F8CB, 0x8F87D541,
+/**/ 0x3FE74B0D, 0x767620C4,
+/**/ 0x3FF2F0D8, 0x9126F083,
+/**/ 0x40007BB3, 0x73F08794,
+/**/ 0x401079EB, 0xE1419117,
+/**/ 0x40218062, 0xA917F81E,
+/**/ 0x40337C6B, 0x48444DEE,
+/**/ 0x3C907A41, 0xF4061E08,
+/**/ 0x3FE67EB5, 0x4F31AF70,
+/**/ 0x3FF50000, 0x00000000,
+/**/ 0xBF5CD1C1, 0xE0AAFA85,
+/**/ 0x3FE4D000, 0x00000000,
+/**/ 0x3FF5104F, 0xF4B2718C,
+/**/ 0x3FE7BE43, 0x59659939,
+/**/ 0x3FF37754, 0x5502EAE6,
+/**/ 0x400124A6, 0x6AE0AC51,
+/**/ 0x4011527B, 0x33524D17,
+/**/ 0x40229B46, 0x7FBF7A2D,
+/**/ 0x4034F274, 0xAD716768,
+/**/ 0xBC9C610F, 0x7C204EA8,
+/**/ 0x3FE6A8BE, 0x57825A6C,
+/**/ 0x3FF50000, 0x00000000,
+/**/ 0x3F704FF4, 0xB2718C01,
+/**/ 0x3FE4F000, 0x00000000,
+/**/ 0x3FF52849, 0x288C017D,
+/**/ 0x3FE834B0, 0x3E6D3F7F,
+/**/ 0x3FF4033A, 0x3B0747CB,
+/**/ 0x4001D652, 0xE946B196,
+/**/ 0x401238CB, 0x3C2F8CB4,
+/**/ 0x4023CB80, 0x53E520C1,
+/**/ 0x40368938, 0x607BC0F6,
+/**/ 0xBC84274C, 0xCC053597,
+/**/ 0x3FE6D2F6, 0xDCE2DFB8,
+/**/ 0x3FF54000, 0x00000000,
+/**/ 0xBF77B6D7, 0x73FE8364,
+/**/ 0x3FE51000, 0x00000000,
+/**/ 0x3FF540BA, 0x729BE713,
+/**/ 0x3FE8AE75, 0x781F49A2,
+/**/ 0x3FF494D2, 0x432AC103,
+/**/ 0x40029147, 0x9B0015B6,
+/**/ 0x40132DE7, 0x156B74E9,
+/**/ 0x402512F0, 0xE8362EC8,
+/**/ 0x403843FE, 0xC8D2E0F8,
+/**/ 0xBC8F55DB, 0xBB3ACC53,
+/**/ 0x3FE6FD5F, 0xCC3296F0,
+/**/ 0x3FF54000, 0x00000000,
+/**/ 0x3F274E53, 0x7CE2565E,
+/**/ 0x3FE53000, 0x00000000,
+/**/ 0x3FF559A7, 0x3C98A101,
+/**/ 0x3FE92BB6, 0x16C3163D,
+/**/ 0x3FF52C69, 0x0DB2C44D,
+/**/ 0x4003561E, 0x0F4546B8,
+/**/ 0x401432F1, 0x7F099A82,
+/**/ 0x402673A9, 0x831E227A,
+/**/ 0x403A266F, 0xA02BBCD5,
+/**/ 0x3CA279A8, 0xAEA9CB9D,
+/**/ 0x3FE727FA, 0x1901CB44,
+/**/ 0x3FF54000, 0x00000000,
+/**/ 0x3F79A73C, 0x98A10084,
+/**/ 0x3FE55000, 0x00000000,
+/**/ 0x3FF57313, 0x1433B9BD,
+/**/ 0x3FE9AC97, 0x0523E7B2,
+/**/ 0x3FF5CA50, 0x361F7393,
+/**/ 0x4004257B, 0xB0F40825,
+/**/ 0x40154927, 0x46286025,
+/**/ 0x4027EFF1, 0x781495B4,
+/**/ 0x403C349E, 0x0A1139F1,
+/**/ 0xBC5D2C66, 0x8B6015DA,
+/**/ 0x3FE752C6, 0xBDD7E0E0,
+/**/ 0x3FF58000, 0x00000000,
+/**/ 0xBF69D9D7, 0x988C865F,
+/**/ 0x3FE57000, 0x00000000,
+/**/ 0x3FF58D01, 0xAD039E07,
+/**/ 0x3FEA313F, 0x279933CD,
+/**/ 0x3FF66EDE, 0xB63D93A6,
+/**/ 0x40050012, 0xD836441A,
+/**/ 0x401671E1, 0xF23D152C,
+/**/ 0x40298A4C, 0x65D3A1DD,
+/**/ 0x403E7316, 0x5EBDBF39,
+/**/ 0xBCAE5B6C, 0x7AAA4996,
+/**/ 0x3FE77DC6, 0xBC7D2FA0,
+/**/ 0x3FF58000, 0x00000000,
+/**/ 0x3F6A035A, 0x073C0E86,
+/**/ 0x3FE59000, 0x00000000,
+/**/ 0x3FF5A776, 0xE28DADB6,
+/**/ 0x3FEAB9D7, 0x7D7BE2B5,
+/**/ 0x3FF71A71, 0x5234C8A9,
+/**/ 0x4005E6A3, 0xF873554C,
+/**/ 0x4017AE9A, 0xC1F33F9B,
+/**/ 0x402B4581, 0x4310046E,
+/**/ 0x40407376, 0xF64B03E7,
+/**/ 0xBCA3F39B, 0xB3AB0542,
+/**/ 0x3FE7A8FB, 0x1E48D158,
+/**/ 0x3FF5C000, 0x00000000,
+/**/ 0xBF78891D, 0x725249CA,
+/**/ 0x3FE5B000, 0x00000000,
+/**/ 0x3FF5C276, 0xBA730F9B,
+/**/ 0x3FEB468B, 0x454127C3,
+/**/ 0x3FF7CD6B, 0x0E816ADB,
+/**/ 0x4006D9FE, 0xEDDAC837,
+/**/ 0x401900EE, 0x0209E3B7,
+/**/ 0x402D24A2, 0x57489C7E,
+/**/ 0x4041CAEA, 0x7F810E14,
+/**/ 0xBC84F20E, 0x24F9675B,
+/**/ 0x3FE7D464, 0xF472A690,
+/**/ 0x3FF5C000, 0x00000000,
+/**/ 0x3F43B5D3, 0x987CD623,
+/**/ 0x3FE5D000, 0x00000000,
+/**/ 0x3FF5DE05, 0x66C30CDC,
+/**/ 0x3FEBD788, 0x23798D1A,
+/**/ 0x3FF88835, 0xB0E567D8,
+/**/ 0x4007DB04, 0x6E46660A,
+/**/ 0x401A6A9E, 0xCA07CAA5,
+/**/ 0x402F2B16, 0x41ECEF64,
+/**/ 0x40434315, 0xC36F367B,
+/**/ 0xBCA08CA1, 0x542594A6,
+/**/ 0x3FE80005, 0x5869D9E8,
+/**/ 0x3FF5C000, 0x00000000,
+/**/ 0x3F7E0566, 0xC30CDBD9,
+/**/ 0x3FE5F000, 0x00000000,
+/**/ 0x3FF5FA27, 0x4875FA03,
+/**/ 0x3FEC6CFE, 0x4CF96D63,
+/**/ 0x3FF94B42, 0x4D7B8313,
+/**/ 0x4008EAA7, 0xA1B04592,
+/**/ 0x401BED9B, 0x2C5A9D87,
+/**/ 0x4030AE51, 0x1BC92F68,
+/**/ 0x4044DF8C, 0x685FBD64,
+/**/ 0xBCAC07A8, 0x30FE6378,
+/**/ 0x3FE82BDD, 0x6C30303C,
+/**/ 0x3FF60000, 0x00000000,
+/**/ 0xBF5762DE, 0x2817F40C,
+/**/ 0x3FE61000, 0x00000000,
+/**/ 0x3FF616E0, 0xF213FCD6,
+/**/ 0x3FED0720, 0xB47784FF,
+/**/ 0x3FFA1709, 0xE13C6707,
+/**/ 0x400A09EF, 0xE70B2E72,
+/**/ 0x401D8C00, 0xE976AAD9,
+/**/ 0x4031DEBA, 0xD1AE1EA8,
+/**/ 0x4046A453, 0x6424341F,
+/**/ 0x3CA13E53, 0xA65D40B1,
+/**/ 0x3FE857EE, 0x5ABA79E8,
+/**/ 0x3FF60000, 0x00000000,
+/**/ 0x3F76E0F2, 0x13FCD614,
+/**/ 0x3FE63000, 0x00000000,
+/**/ 0x3FF63437, 0x2A8B4ED8,
+/**/ 0x3FEDA625, 0x3BF69915,
+/**/ 0x3FFAEC0D, 0xFB6DF86F,
+/**/ 0x400B39FA, 0xCAF2D64B,
+/**/ 0x401F4822, 0xB7E2DC06,
+/**/ 0x4033291B, 0xB12537E3,
+/**/ 0x404895F0, 0xAF3EF0D1,
+/**/ 0x3CAEA588, 0x71E7ED76,
+/**/ 0x3FE88439, 0x5856807C,
+/**/ 0x3FF64000, 0x00000000,
+/**/ 0xBF6791AA, 0xE9624F1C,
+/**/ 0x3FE65000, 0x00000000,
+/**/ 0x3FF6522E, 0xF039F5E3,
+/**/ 0x3FEE4A44, 0xEA588E54,
+/**/ 0x3FFBCAD9, 0x77A3F8A4,
+/**/ 0x400C7BFE, 0x3669F2F2,
+/**/ 0x40209247, 0x1AEA54A4,
+/**/ 0x4034900A, 0x6B866959,
+/**/ 0x404AB97D, 0x620634CF,
+/**/ 0x3C948649, 0xDA91B0FD,
+/**/ 0x3FE8B0BF, 0xA316D3A0,
+/**/ 0x3FF64000, 0x00000000,
+/**/ 0x3F722EF0, 0x39F5E2AD,
+/**/ 0x3FE67000, 0x00000000,
+/**/ 0x3FF670CD, 0x7C2F4FC3,
+/**/ 0x3FEEF3BC, 0x2583CF60,
+/**/ 0x3FFCB401, 0x4A2E1684,
+/**/ 0x400DD14A, 0xDCB9F8FB,
+/**/ 0x40219209, 0x4E164373,
+/**/ 0x40361669, 0x8FC171BC,
+/**/ 0x404D14BA, 0xA46B7BE1,
+/**/ 0xBCABAC31, 0xBBDFE65A,
+/**/ 0x3FE8DD82, 0x8344E08C,
+/**/ 0x3FF68000, 0x00000000,
+/**/ 0xBF6E6507, 0xA1607A77,
+/**/ 0x3FE69000, 0x00000000,
+/**/ 0x3FF69018, 0x45AA3C85,
+/**/ 0x3FEFA2CA, 0xF18FBD18,
+/**/ 0x3FFDA825, 0x610C140E,
+/**/ 0x400F3B4E, 0xF08895E1,
+/**/ 0x4022A4E4, 0x272CD203,
+/**/ 0x4037BF71, 0x60C4A0EE,
+/**/ 0x404FAE29, 0xEC79351D,
+/**/ 0x3C6BF5BB, 0x3E22FB0A,
+/**/ 0x3FE90A83, 0x4BD9C858,
+/**/ 0x3FF68000, 0x00000000,
+/**/ 0x3F701845, 0xAA3C8533,
+/**/ 0x3FE6B000, 0x00000000,
+/**/ 0x3FF6B015, 0x05D92E4E,
+/**/ 0x3FF02BDA, 0x9ABD20D8,
+/**/ 0x3FFEA7F1, 0x9BC5CC13,
+/**/ 0x40105DCC, 0x94AFB2BB,
+/**/ 0x4023CC8C, 0xB382B54A,
+/**/ 0x40398EBB, 0x19C28EAE,
+/**/ 0x40514694, 0x8F7609B5,
+/**/ 0x3C9CD223, 0xF66137E5,
+/**/ 0x3FE937C3, 0x5AFE73AC,
+/**/ 0x3FF6C000, 0x00000000,
+/**/ 0xBF6FD5F4, 0x4DA36334,
+/**/ 0x3FE6D000, 0x00000000,
+/**/ 0x3FF6D0C9, 0xBBE1EF2B,
+/**/ 0x3FF08961, 0x82FBDD29,
+/**/ 0x3FFFB41E, 0xDCD403EC,
+/**/ 0x401129EE, 0x121D0023,
+/**/ 0x40250AE5, 0xB34159B2,
+/**/ 0x403B884D, 0xDB5CEAC4,
+/**/ 0x4052DD09, 0xA0B334B0,
+/**/ 0xBC96BF1D, 0xD8F14BF9,
+/**/ 0x3FE96544, 0x1A936D24,
+/**/ 0x3FF6C000, 0x00000000,
+/**/ 0x3F70C9BB, 0xE1EF2AEE,
+/**/ 0x3FE6F000, 0x00000000,
+/**/ 0x3FF6F23C, 0xB13786CF,
+/**/ 0x3FF0EA20, 0x7B7FC134,
+/**/ 0x400066BA, 0x1BD0D518,
+/**/ 0x401202F9, 0x159EC945,
+/**/ 0x40266205, 0x16FF868A,
+/**/ 0x403DB0AD, 0x87398014,
+/**/ 0x40549F33, 0x47D58711,
+/**/ 0x3C8D858F, 0x54B11A28,
+/**/ 0x3FE99307, 0x00C1184C,
+/**/ 0x3FF70000, 0x00000000,
+/**/ 0xBF6B869D, 0x90F2626A,
+/**/ 0x3FE71000, 0x00000000,
+/**/ 0x3FF71474, 0x7E455603,
+/**/ 0x3FF14E40, 0x3A65655F,
+/**/ 0x4000FA64, 0x1F4AA7A1,
+/**/ 0x4012E9F0, 0xB946C70A,
+/**/ 0x4027D43A, 0x3CC53936,
+/**/ 0x40400675, 0xEE087279,
+/**/ 0x40569278, 0x77313CEF,
+/**/ 0xBCAB1BA1, 0x772D6E62,
+/**/ 0x3FE9C10D, 0x9090E874,
+/**/ 0x3FF70000, 0x00000000,
+/**/ 0x3F74747E, 0x455602D3,
+/**/ 0x3FE73000, 0x00000000,
+/**/ 0x3FF73778, 0x0F773DEC,
+/**/ 0x3FF1B5EC, 0x1288B243,
+/**/ 0x40019581, 0x3A853FA5,
+/**/ 0x4013DFF0, 0x6D2743E5,
+/**/ 0x40296415, 0x09B4B924,
+/**/ 0x4041515E, 0x19A59D1F,
+/**/ 0x4058BD01, 0xF3E53877,
+/**/ 0x3C962269, 0xFC348BAE,
+/**/ 0x3FE9EF59, 0x5A90493C,
+/**/ 0x3FF74000, 0x00000000,
+/**/ 0xBF610FE1, 0x11842743,
+/**/ 0x3FE75000, 0x00000000,
+/**/ 0x3FF75B4E, 0xAAA78140,
+/**/ 0x3FF22152, 0x28B49576,
+/**/ 0x4002388E, 0x74D66746,
+/**/ 0x4014E62E, 0xA43083A8,
+/**/ 0x402B146E, 0x02885ED7,
+/**/ 0x4042BC45, 0x29A3BC2C,
+/**/ 0x405B25D8, 0xCDAFE7E5,
+/**/ 0x3CA8862D, 0xF03F8A74,
+/**/ 0x3FEA1DEB, 0xFD7DFBD8,
+/**/ 0x3FF74000, 0x00000000,
+/**/ 0x3F7B4EAA, 0xA7813FBA,
+/**/ 0x3FE77000, 0x00000000,
+/**/ 0x3FF77FFF, 0xF4FC0008,
+/**/ 0x3FF290A3, 0xADE499E4,
+/**/ 0x4002E412, 0xFF22FE11,
+/**/ 0x4015FDFF, 0xD7A17943,
+/**/ 0x402CE86F, 0x8AF79AEF,
+/**/ 0x40444ACA, 0x6F8EDF86,
+/**/ 0x405DD50A, 0x29CF9F92,
+/**/ 0x3CA49DB0, 0xC5865233,
+/**/ 0x3FEA4CC7, 0x2702BD90,
+/**/ 0x3FF78000, 0x00000000,
+/**/ 0xBE6607FF, 0xF08268E1,
+/**/ 0x3FE79000, 0x00000000,
+/**/ 0x3FF7A593, 0xF93D7FBC,
+/**/ 0x3FF30415, 0x1F293A81,
+/**/ 0x400398A1, 0x31649EA4,
+/**/ 0x401728D9, 0xED75DA1E,
+/**/ 0x402EE3A0, 0x7B1736CA,
+/**/ 0x40460106, 0x036EC9D4,
+/**/ 0x406069E8, 0xB3E5A09F,
+/**/ 0xBCA79BBD, 0x4E8EB882,
+/**/ 0x3FEA7BEC, 0x94762100,
+/**/ 0x3FF7C000, 0x00000000,
+/**/ 0xBF7A6C06, 0xC280445C,
+/**/ 0x3FE7B000, 0x00000000,
+/**/ 0x3FF7CC13, 0x2EB4E536,
+/**/ 0x3FF37BDE, 0x8BD25D7D,
+/**/ 0x400456D7, 0xA51DF797,
+/**/ 0x40186858, 0x103AF33E,
+/**/ 0x403084F8, 0x21121C2E,
+/**/ 0x4047E39A, 0x9D7C6DE3,
+/**/ 0x40621664, 0xEF4C9A12,
+/**/ 0x3C804D2D, 0x39DB72FF,
+/**/ 0x3FEAAB5E, 0x13B099B0,
+/**/ 0x3FF7C000, 0x00000000,
+/**/ 0x3F68265D, 0x69CA6C2F,
+/**/ 0x3FE7D000, 0x00000000,
+/**/ 0x3FF7F386, 0x809BA1CD,
+/**/ 0x3FF3F83B, 0xE298B2EB,
+/**/ 0x40051F62, 0x708A6ABE,
+/**/ 0x4019BE3F, 0x090F77AB,
+/**/ 0x4031AFE2, 0x6C13BF38,
+/**/ 0x4049F7CA, 0x65FF02A8,
+/**/ 0x4063F614, 0xDA840FE0,
+/**/ 0xBCA7BDE9, 0xAB5D1A54,
+/**/ 0x3FEADB1D, 0x83EBD320,
+/**/ 0x3FF80000, 0x00000000,
+/**/ 0xBF68F2FE, 0xC8BC6562,
+/**/ 0x3FE7F000, 0x00000000,
+/**/ 0x3FF81BF7, 0x562E1E24,
+/**/ 0x3FF4796D, 0x469724DB,
+/**/ 0x4005F2FC, 0x86E67917,
+/**/ 0x401B2C82, 0x2F5AE582,
+/**/ 0x4032F505, 0x65EE1919,
+/**/ 0x404C438F, 0x4744D220,
+/**/ 0x40661003, 0xD66309FD,
+/**/ 0x3C8470C8, 0xFC828894,
+/**/ 0x3FEB0B2C, 0xD6B287DC,
+/**/ 0x3FF80000, 0x00000000,
+/**/ 0x3F7BF756, 0x2E1E23E5,
+/**/ 0x3FE81000, 0x00000000,
+/**/ 0x3FF8456F, 0x9B70AB1D,
+/**/ 0x3FF4FFB7, 0x6D01A674,
+/**/ 0x4006D271, 0x42D7B667,
+/**/ 0x401CB549, 0x05DD4055,
+/**/ 0x40345723, 0xE490CA9B,
+/**/ 0x404ECD17, 0x47C5589B,
+/**/ 0x40686C46, 0x3D6DB036,
+/**/ 0x4084044D, 0xECF23C2E,
+/**/ 0xBC7F0990, 0x0D173A5F,
+/**/ 0x3FEB3B8E, 0x10E12D3C,
+/**/ 0x3FF84000, 0x00000000,
+/**/ 0x3F55BE6D, 0xC2AC733C,
+/**/ 0x3FE83000, 0x00000000,
+/**/ 0x3FF86FF9, 0xCAB97B9D,
+/**/ 0x3FF58B64, 0x04A71B42,
+/**/ 0x4007BE9E, 0x20C0FB6E,
+/**/ 0x401E5AF5, 0x9B426297,
+/**/ 0x4035D958, 0x013C40EE,
+/**/ 0x4050CEA9, 0x2215E48C,
+/**/ 0x406B146B, 0xB8C0669A,
+/**/ 0x40868C96, 0xFB8EB0FE,
+/**/ 0x3CA55848, 0x1FCCBAD4,
+/**/ 0x3FEB6C43, 0x4BB8EA98,
+/**/ 0x3FF88000, 0x00000000,
+/**/ 0xBF700635, 0x46846319,
+/**/ 0x3FE85000, 0x00000000,
+/**/ 0x3FF89BA0, 0xF71469BF,
+/**/ 0x3FF61CC2, 0x28717EFA,
+/**/ 0x4008B874, 0xAFB7BAF7,
+/**/ 0x40201015, 0xEC7286DB,
+/**/ 0x40377F1F, 0x8329A469,
+/**/ 0x40525E49, 0x2927F0DD,
+/**/ 0x406E135C, 0x5AE80CD9,
+/**/ 0x40897364, 0x40DF64FD,
+/**/ 0x3C89F53B, 0x1ED91B03,
+/**/ 0x3FEB9D4E, 0xB6067ABC,
+/**/ 0x3FF88000, 0x00000000,
+/**/ 0x3F7BA0F7, 0x1469BF33,
+/**/ 0x3FE87000, 0x00000000,
+/**/ 0x3FF8C870, 0xD797DABF,
+/**/ 0x3FF6B426, 0xDE42D55F,
+/**/ 0x4009C0FC, 0xC0E06552,
+/**/ 0x402103EC, 0xEB059907,
+/**/ 0x40394C6A, 0x49A75AA7,
+/**/ 0x40541A81, 0xB2A496D0,
+/**/ 0x4070BAEE, 0x209CB693,
+/**/ 0x408CC860, 0x285808C5,
+/**/ 0xBCAE6D8C, 0x9B0DC6F3,
+/**/ 0x3FEBCEB2, 0x955EC1C4,
+/**/ 0x3FF8C000, 0x00000000,
+/**/ 0x3F60E1AF, 0x2FB57EE7,
+/**/ 0x3FE89000, 0x00000000,
+/**/ 0x3FF8F675, 0xD3C502F4,
+/**/ 0x3FF751ED, 0xA3BFB2E4,
+/**/ 0x400AD956, 0xDE3987BC,
+/**/ 0x40220AA0, 0xB30AAD0A,
+/**/ 0x403B45AB, 0x16220014,
+/**/ 0x40560929, 0xEC84429C,
+/**/ 0x4072A569, 0x0D747939,
+/**/ 0x40904F10, 0x5407F41E,
+/**/ 0xBC675CEB, 0xFC269962,
+/**/ 0x3FEC0071, 0x4773138C,
+/**/ 0x3FF90000, 0x00000000,
+/**/ 0xBF631458, 0x75FA1750,
+/**/ 0x3FE8B000, 0x00000000,
+/**/ 0x3FF925BD, 0x111125DF,
+/**/ 0x3FF7F679, 0x0AD2B4C2,
+/**/ 0x400C02BF, 0x1359A3C8,
+/**/ 0x40232601, 0x88857C21,
+/**/ 0x403D6FEB, 0x2515D90E,
+/**/ 0x405830FA, 0xD421145E,
+/**/ 0x4074D1D6, 0xFD789544,
+/**/ 0x40928561, 0x4B30EBF1,
+/**/ 0x3CA13E7B, 0x7876F9D2,
+/**/ 0x3FEC328D, 0x437F5E74,
+/**/ 0x3FF94000, 0x00000000,
+/**/ 0xBF7A42EE, 0xEEDA20A4,
+/**/ 0x3FE8D000, 0x00000000,
+/**/ 0x3FF95654, 0x81B9477B,
+/**/ 0x3FF8A233, 0x67F87779,
+/**/ 0x400D3E90, 0x14665EA0,
+/**/ 0x40245815, 0x5A415747,
+/**/ 0x403FD0E1, 0x1D7511C0,
+/**/ 0x405A99B6, 0x01EC30FB,
+/**/ 0x40774A72, 0xDD7EE7A1,
+/**/ 0x40951454, 0x5C2F1724,
+/**/ 0x3C8185B3, 0x774A5205,
+/**/ 0x3FEC6509, 0x1BD4AD0C,
+/**/ 0x3FF94000, 0x00000000,
+/**/ 0x3F765481, 0xB9477AC0,
+/**/ 0x3FE8F000, 0x00000000,
+/**/ 0x3FF9884A, 0xF50630B5,
+/**/ 0x3FF9558F, 0x94B35A8D,
+/**/ 0x400E8E46, 0xD1A32B1D,
+/**/ 0x4025A31F, 0x0AEC68DB,
+/**/ 0x40413785, 0xFD21A759,
+/**/ 0x405D4C53, 0xF56DFCA6,
+/**/ 0x407A1B45, 0xF89C0F5F,
+/**/ 0x40980BB3, 0xC92C8CF3,
+/**/ 0xBC8696E8, 0xFEB6A05E,
+/**/ 0x3FEC97E7, 0x7F82B8CC,
+/**/ 0x3FF98000, 0x00000000,
+/**/ 0x3F6095EA, 0x0C6169C6,
+/**/ 0x3FE91000, 0x00000000,
+/**/ 0x3FF9BBB0, 0x292BC29F,
+/**/ 0x3FFA1109, 0xC8E3D76B,
+/**/ 0x400FF386, 0x8873C480,
+/**/ 0x402709A6, 0xDE619C77,
+/**/ 0x4042A8E9, 0x5A9417B9,
+/**/ 0x4060299D, 0xBFE20B57,
+/**/ 0x407D5283, 0xE1225431,
+/**/ 0x409B7E74, 0xC225406C,
+/**/ 0xBC879431, 0x74F396DB,
+/**/ 0x3FECCB2B, 0x3C239888,
+/**/ 0x3FF9C000, 0x00000000,
+/**/ 0xBF513F5B, 0x50F5839F,
+/**/ 0x3FE93000, 0x00000000,
+/**/ 0x3FF9F094, 0xDEF4783D,
+/**/ 0x3FFAD528, 0x8E300736,
+/**/ 0x4010B80E, 0xB2D4D4EE,
+/**/ 0x40288E84, 0x3F3D0057,
+/**/ 0x404440D4, 0xD20263C0,
+/**/ 0x4061DD42, 0x26E14927,
+/**/ 0x4080807D, 0x5EF13D09,
+/**/ 0x409F836C, 0xFE9E94BE,
+/**/ 0xBC813C84, 0xE5FD9D2D,
+/**/ 0x3FECFED7, 0x3FCCF104,
+/**/ 0x3FFA0000, 0x00000000,
+/**/ 0xBF6ED642, 0x170F854B,
+/**/ 0x3FE95000, 0x00000000,
+/**/ 0x3FFA270A, 0xEF70C9F9,
+/**/ 0x3FFBA27D, 0xD12662D9,
+/**/ 0x40118304, 0xE8433B59,
+/**/ 0x402A34E9, 0x1B4DD8D9,
+/**/ 0x4046041F, 0x58AA354C,
+/**/ 0x4063C823, 0x87EB035B,
+/**/ 0x40829D4E, 0x7F89A6B6,
+/**/ 0x40A21B1A, 0xB4BED54D,
+/**/ 0x3C855D66, 0xFD8283D4,
+/**/ 0x3FED32EE, 0x9B2A7684,
+/**/ 0x3FFA4000, 0x00000000,
+/**/ 0xBF78F510, 0x8F3606B9,
+/**/ 0x3FE97000, 0x00000000,
+/**/ 0x3FFA5F25, 0x63EA127F,
+/**/ 0x3FFC79A8, 0x1460C218,
+/**/ 0x40125BC0, 0x3D14975C,
+/**/ 0x402C006F, 0x2249DB66,
+/**/ 0x4047F856, 0xED0AEFCD,
+/**/ 0x4065F27F, 0x2E2028D0,
+/**/ 0x40850B95, 0x6CE59595,
+/**/ 0x40A4DC23, 0x18C497E2,
+/**/ 0x3C8BDFAE, 0x76BA54CA,
+/**/ 0x3FED6774, 0x83C60554,
+/**/ 0x3FFA4000, 0x00000000,
+/**/ 0x3F7F2563, 0xEA127F53,
+/**/ 0x3FE99000, 0x00000000,
+/**/ 0x3FFA98F8, 0x9061CEFE,
+/**/ 0x3FFD5B53, 0xCAA1F466,
+/**/ 0x40134379, 0xA92630E8,
+/**/ 0x402DF527, 0x41E37357,
+/**/ 0x404A23DF, 0xD7DE2305,
+/**/ 0x406865FE, 0x1911C50F,
+/**/ 0x4087D981, 0xD5CE543D,
+/**/ 0x40A8192E, 0x2134A322,
+/**/ 0xBC915CF9, 0x4FE6DAC8,
+/**/ 0x3FED9C6C, 0x56821F74,
+/**/ 0x3FFA8000, 0x00000000,
+/**/ 0x3F78F890, 0x61CEFDBB,
+/**/ 0x3FE9B000, 0x00000000,
+/**/ 0x3FFAD49A, 0x30F0DACC,
+/**/ 0x3FFE483C, 0xDDBFEE70,
+/**/ 0x40143B8C, 0xC4418459,
+/**/ 0x40300BD5, 0xE6E7E816,
+/**/ 0x404C8E1A, 0x02EE200E,
+/**/ 0x406B2DFC, 0x83038A03,
+/**/ 0x408B1814, 0xD987E3D9,
+/**/ 0x40ABEB1E, 0x8827CEFA,
+/**/ 0x3CA8829A, 0xE22AFCE0,
+/**/ 0x3FEDD1D9, 0x9A4C39D0,
+/**/ 0x3FFAC000, 0x00000000,
+/**/ 0x3F749A30, 0xF0DACB86,
+/**/ 0x3FE9D000, 0x00000000,
+/**/ 0x3FFB1221, 0x8A66E40D,
+/**/ 0x3FFF4130, 0x692DC10A,
+/**/ 0x4015457C, 0x64621A80,
+/**/ 0x4031369A, 0xED2A1AB4,
+/**/ 0x404F3F8D, 0xBC003A70,
+/**/ 0x406E57E1, 0x462E99D6,
+/**/ 0x408EDBC2, 0xC53F5717,
+/**/ 0x40B0383D, 0x0A71E453,
+/**/ 0x3C90AF9F, 0xBEDD86A9,
+/**/ 0x3FEE07C0, 0x030CF708,
+/**/ 0x3FFB0000, 0x00000000,
+/**/ 0x3F72218A, 0x66E40CBE,
+/**/ 0x3FE9F000, 0x00000000,
+/**/ 0x3FFB51A7, 0x8E9927E5,
+/**/ 0x40002387, 0x581637B3,
+/**/ 0x401662F7, 0xF5B2C17E,
+/**/ 0x40327DDB, 0x36EAC07E,
+/**/ 0x40512110, 0xC70D9C43,
+/**/ 0x4070F9C4, 0x88C52943,
+/**/ 0x40919E9E, 0xB1AB4848,
+/**/ 0x40B2E76B, 0xB1EC7695,
+/**/ 0x3CAA2400, 0x5E9F6FD9,
+/**/ 0x3FEE3E23, 0x74DD3C64,
+/**/ 0x3FFB4000, 0x00000000,
+/**/ 0x3F71A78E, 0x9927E571,
+/**/ 0x3FEA1000, 0x00000000,
+/**/ 0x3FFB9347, 0x04E0F95F,
+/**/ 0x4000AD66, 0xAC8DC27B,
+/**/ 0x401795E1, 0xAE05A580,
+/**/ 0x4033E4FA, 0x299AA0A0,
+/**/ 0x4052D0AD, 0xA33AB75C,
+/**/ 0x407309E5, 0x39D64C89,
+/**/ 0x40942D39, 0x154C34C4,
+/**/ 0x40B61A59, 0x59D15B1D,
+/**/ 0xBCAFC899, 0x114BE565,
+/**/ 0x3FEE7508, 0x0787FD30,
+/**/ 0x3FFB8000, 0x00000000,
+/**/ 0x3F734704, 0xE0F95E8B,
+/**/ 0x3FEA3000, 0x00000000,
+/**/ 0x3FFBD71C, 0xB75F37A1,
+/**/ 0x40013EBC, 0xFC9006E1,
+/**/ 0x4018E055, 0xC48D2C09,
+/**/ 0x40356FD7, 0xC2C8C9CD,
+/**/ 0x4054B557, 0x6198B971,
+/**/ 0x4075678C, 0x9680F9AF,
+/**/ 0x40972BE5, 0x8AF946DD,
+/**/ 0x40B9EDE4, 0xE1B531F9,
+/**/ 0xBC447F69, 0xE4527544,
+/**/ 0x3FEEAC72, 0x0A61AD1C,
+/**/ 0x3FFBC000, 0x00000000,
+/**/ 0x3F771CB7, 0x5F37A0DF,
+/**/ 0x3FEA5000, 0x00000000,
+/**/ 0x3FFC1D47, 0xA5B24F80,
+/**/ 0x4001D81E, 0x7EB9F789,
+/**/ 0x401A44B2, 0xDF42B6B7,
+/**/ 0x403722E5, 0xB4766752,
+/**/ 0x4056D6EE, 0xECFADFF0,
+/**/ 0x40782028, 0x8B1EB8D5,
+/**/ 0x409AB0E2, 0xCA840144,
+/**/ 0x40BE8614, 0xE2126BBF,
+/**/ 0xBC8D9A93, 0x2CC624E2,
+/**/ 0x3FEEE466, 0x087F8D20,
+/**/ 0x3FFC0000, 0x00000000,
+/**/ 0x3F7D47A5, 0xB24F8064,
+/**/ 0x3FEA7000, 0x00000000,
+/**/ 0x3FFC65E9, 0x3DE98207,
+/**/ 0x40027A2E, 0x811F641B,
+/**/ 0x401BC5A3, 0xF223266D,
+/**/ 0x40390340, 0xA6ECBE29,
+/**/ 0x40593EB6, 0xC3D499AF,
+/**/ 0x407B43D9, 0xAD8CC2F1,
+/**/ 0x409ED77C, 0xA519B816,
+/**/ 0x40C2080A, 0x5B3B703B,
+/**/ 0x3C7B187D, 0xE993C3DD,
+/**/ 0x3FEF1CE8, 0xCD5A7CE8,
+/**/ 0x3FFC8000, 0x00000000,
+/**/ 0xBF7A16C2, 0x167DF937,
+/**/ 0x3FEA9000, 0x00000000,
+/**/ 0x3FFCB125, 0x9CA2F05E,
+/**/ 0x400325A1, 0x54FC4C95,
+/**/ 0x401D662B, 0xD9C5FF75,
+/**/ 0x403B16CE, 0x8E93577D,
+/**/ 0x405BF79A, 0xE0E3029E,
+/**/ 0x407EE612, 0x04BCDF91,
+/**/ 0x40A1E0AC, 0x31EFE3F1,
+/**/ 0x40C56267, 0x85DF051C,
+/**/ 0xBCAD6122, 0x2D0BC06E,
+/**/ 0x3FEF55FF, 0x69EAB2F0,
+/**/ 0x3FFCC000, 0x00000000,
+/**/ 0xBF6DB4C6, 0xBA1F43E4,
+/**/ 0x3FEAB000, 0x00000000,
+/**/ 0x3FFCFF23, 0xD56B9F55,
+/**/ 0x4003DB3E, 0x86149A3B,
+/**/ 0x401F29B3, 0x0B8D0DAD,
+/**/ 0x403D6463, 0x40E9D1A7,
+/**/ 0x405F0E89, 0x619D6679,
+/**/ 0x40818F2E, 0x92CF3FBC,
+/**/ 0x40A4CC10, 0x844E51BD,
+/**/ 0x40C9762D, 0xF3A9EB60,
+/**/ 0x3CA20E79, 0xEF4B1E02,
+/**/ 0x3FEF8FAF, 0x3A4BC01C,
+/**/ 0x3FFD0000, 0x00000000,
+/**/ 0xBF2B8552, 0x8C156248,
+/**/ 0x3FEAD000, 0x00000000,
+/**/ 0x3FFD500E, 0x44AAD4F2,
+/**/ 0x40049BE3, 0x6B85DB68,
+/**/ 0x40208A0B, 0xE558F351,
+/**/ 0x403FF3EC, 0xC1BCC632,
+/**/ 0x40614970, 0x2A555E45,
+/**/ 0x408404AE, 0xDD057F33,
+/**/ 0x40A847D9, 0x22610A18,
+/**/ 0x40CE7146, 0x3C7AA2B4,
+/**/ 0xBC9571D0, 0x53CA14EC,
+/**/ 0x3FEFC9FD, 0xEBFAA348,
+/**/ 0x3FFD4000, 0x00000000,
+/**/ 0x3F700E44, 0xAAD4F267,
+/**/ 0x3FEAF000, 0x00000000,
+/**/ 0x3FFDA412, 0xEC9EDC5A,
+/**/ 0x40056886, 0x22B6D908,
+/**/ 0x402194E0, 0xB605B3B4,
+/**/ 0x40416754, 0x9338560C,
+/**/ 0x40634B7B, 0x34B16169,
+/**/ 0x4086E508, 0x3B1BAF9C,
+/**/ 0x40AC7475, 0xFB9DFBF5,
+/**/ 0x40D2473E, 0xF4B4BB01,
+/**/ 0x3CA82B31, 0xE9F06EFC,
+/**/ 0x3FF00278, 0xC2613F02,
+/**/ 0x3FFDC000, 0x00000000,
+/**/ 0xBF7BED13, 0x6123A5D1,
+/**/ 0x3FEB1000, 0x00000000,
+/**/ 0x3FFDFB63, 0xDF3AE0DB,
+/**/ 0x40064239, 0x08AD38CF,
+/**/ 0x4022B7DB, 0xAA166573,
+/**/ 0x4042FFB4, 0x38210D3E,
+/**/ 0x40659862, 0xFB634456,
+/**/ 0x408A45B4, 0xEE8F3E34,
+/**/ 0x40B0BD59, 0xD39A6C6F,
+/**/ 0x40D60CCD, 0x2B4867E8,
+/**/ 0xBCA6097F, 0x1CBB85B3,
+/**/ 0x3FF02048, 0x3537E800,
+/**/ 0x3FFE0000, 0x00000000,
+/**/ 0xBF527083, 0x147C93ED,
+/**/ 0x3FEB3000, 0x00000000,
+/**/ 0x3FFE5637, 0xB70F5F72,
+/**/ 0x40072A2E, 0xCA935102,
+/**/ 0x4023F5DE, 0x43559218,
+/**/ 0x4044C96E, 0xB4E19CA3,
+/**/ 0x40683D62, 0x1272DDA3,
+/**/ 0x408E4135, 0xC6BFAAED,
+/**/ 0x40B3C717, 0x099FB249,
+/**/ 0x40DABA6D, 0xD5294F7D,
+/**/ 0x3CA488B1, 0xC91FFA21,
+/**/ 0x3FF03E70, 0xB5B309E0,
+/**/ 0x3FFE4000, 0x00000000,
+/**/ 0x3F7637B7, 0x0F5F723E,
+/**/ 0x3FEB5000, 0x00000000,
+/**/ 0x3FFEB4CA, 0x21D4B842,
+/**/ 0x400821BF, 0x2BE08FC5,
+/**/ 0x40255238, 0x6A6A3BD0,
+/**/ 0x4046CC00, 0xBAC907E2,
+/**/ 0x406B4A78, 0x94202458,
+/**/ 0x40917C35, 0xFE065CA6,
+/**/ 0x40B77848, 0xE8D5B845,
+/**/ 0x40E04820, 0x0CD72D76,
+/**/ 0x3CA54B6E, 0x9CBE508B,
+/**/ 0x3FF05CF5, 0xE41C2ACE,
+/**/ 0x3FFEC000, 0x00000000,
+/**/ 0xBF666BBC, 0x568F7C18,
+/**/ 0x3FEB7000, 0x00000000,
+/**/ 0x3FFF175C, 0x7FB6EB26,
+/**/ 0x40092A6C, 0xA7BA9C35,
+/**/ 0x4026D0BC, 0x80F5BA9F,
+/**/ 0x40491048, 0x33BD74FB,
+/**/ 0x406ED319, 0x61FCE21F,
+/**/ 0x40944A2E, 0x60DF5AED,
+/**/ 0x40BBFAFC, 0x1AC97175,
+/**/ 0x40E3F145, 0xC3A8BC22,
+/**/ 0xBC994B5D, 0xA70A42D9,
+/**/ 0x3FF07BDB, 0x9F358760,
+/**/ 0x3FFF0000, 0x00000000,
+/**/ 0x3F775C7F, 0xB6EB2582,
+/**/ 0x3FEB9000, 0x00000000,
+/**/ 0x3FFF7E36, 0x9B29492C,
+/**/ 0x400A45EB, 0x1C35AD8A,
+/**/ 0x402875D7, 0xC8373BB1,
+/**/ 0x404BA0D1, 0x885E6AE6,
+/**/ 0x40717784, 0x0831631E,
+/**/ 0x4097A441, 0x7F51DA78,
+/**/ 0x40C0C2B2, 0x6D7642FB,
+/**/ 0x40E89073, 0x594961FB,
+/**/ 0xBCA5DECE, 0x96CDC181,
+/**/ 0x3FF09B26, 0x0A46374E,
+/**/ 0x3FFF8000, 0x00000000,
+/**/ 0xBF3C964D, 0x6B6D3D05,
+/**/ 0x3FEBB000, 0x00000000,
+/**/ 0x3FFFE9A7, 0x7DD9B1CF,
+/**/ 0x400B7627, 0xB9AE77AF,
+/**/ 0x402A46B0, 0x3338306D,
+/**/ 0x404E8A38, 0xA0CAACE9,
+/**/ 0x4073DDBB, 0x864F53A2,
+/**/ 0x409BAAF0, 0xD6C97F8D,
+/**/ 0x40C42EEF, 0xDFAE5A98,
+/**/ 0x40EE701A, 0xE19501DA,
+/**/ 0x3C9CC4F4, 0xC7D3D675,
+/**/ 0x3FF0BAD9, 0x93EC49AE,
+/**/ 0x40000000, 0x00000000,
+/**/ 0xBF765882, 0x264E310D,
+/**/ 0x3FEBD000, 0x00000000,
+/**/ 0x40002D03, 0x34302F3B,
+/**/ 0x400CBD52, 0x7F5AAF0D,
+/**/ 0x402C4949, 0x0C635C0A,
+/**/ 0x4050EDD1, 0xB6BB1732,
+/**/ 0x4076AE3D, 0x9691A9F4,
+/**/ 0x40A043C7, 0x61482FC6,
+/**/ 0x40C87037, 0xF81EB6E0,
+/**/ 0x40F2FA30, 0xE84FE55E,
+/**/ 0xBC9820F1, 0x228FC41D,
+/**/ 0x3FF0DAFA, 0xFDD4AE68,
+/**/ 0x40002000, 0x00000000,
+/**/ 0x3F7A0668, 0x605E76B0,
+/**/ 0x3FEBF000, 0x00000000,
+/**/ 0x400067D9, 0xF9C947A3,
+/**/ 0x400E1DE9, 0xA1722882,
+/**/ 0x402E84B0, 0x41FE0247,
+/**/ 0x4052D3AE, 0xDBD1D676,
+/**/ 0x4079FF78, 0xE088BEF5,
+/**/ 0x40A33780, 0x64D9A484,
+/**/ 0x40CDC32D, 0x1974F9B5,
+/**/ 0x40F7D295, 0xCE268611,
+/**/ 0xBCA5A192, 0xD437D23F,
+/**/ 0x3FF0FB8F, 0x657EFDCA,
+/**/ 0x40006000, 0x00000000,
+/**/ 0x3F6F67E7, 0x251E8CF3,
+/**/ 0x3FEC1000, 0x00000000,
+/**/ 0x4000A58D, 0xB1FFFA6D,
+/**/ 0x400F9AC7, 0x4E7307C3,
+/**/ 0x4030809B, 0x5EA15962,
+/**/ 0x405501D0, 0x5418E1B6,
+/**/ 0x407DED80, 0xB476D79F,
+/**/ 0x40A6D2BF, 0x37F33D5F,
+/**/ 0x40D23C31, 0xA43F6C6F,
+/**/ 0x40FE1E46, 0xDB17BBAA,
+/**/ 0xBCA7EB62, 0x41D8AD56,
+/**/ 0x3FF11C9C, 0x4E3ADE0A,
+/**/ 0x4000A000, 0x00000000,
+/**/ 0x3F6636C7, 0xFFE9B457,
+/**/ 0x3FEC3000, 0x00000000,
+/**/ 0x4000E65A, 0x1D1BDCC6,
+/**/ 0x40109B99, 0x3503CCCE,
+/**/ 0x4031E45B, 0x7580EC24,
+/**/ 0x405785CA, 0x1803E176,
+/**/ 0x40814DDB, 0x8458A77D,
+/**/ 0x40AB41D9, 0x6C115AB7,
+/**/ 0x40D67DF0, 0xD7BCE584,
+/**/ 0x41032EF5, 0xF5487646,
+/**/ 0xBC9C4040, 0xF3631254,
+/**/ 0x3FF13E27, 0xAC964DA8,
+/**/ 0x4000E000, 0x00000000,
+/**/ 0x3F696874, 0x6F731770,
+/**/ 0x3FEC5000, 0x00000000,
+/**/ 0x40012A82, 0x068FBCB4,
+/**/ 0x40117B79, 0x7FE89A5F,
+/**/ 0x40337376, 0xD37F3897,
+/**/ 0x405A704E, 0xDF3B47A2,
+/**/ 0x40841B83, 0xEB114449,
+/**/ 0x40B05F75, 0x8D323120,
+/**/ 0x40DBEFEC, 0x8AE65DDD,
+/**/ 0x4108A2A2, 0xD1814341,
+/**/ 0x3CA3E83D, 0xFB25EC76,
+/**/ 0x3FF16037, 0xF37FFEDA,
+/**/ 0x40012000, 0x00000000,
+/**/ 0x3F75040D, 0x1F796787,
+/**/ 0x3FEC7000, 0x00000000,
+/**/ 0x40017250, 0x5F8F574B,
+/**/ 0x40126F35, 0xB566493D,
+/**/ 0x403534F5, 0x95186E3D,
+/**/ 0x405DD60B, 0x947D5EA5,
+/**/ 0x40877C77, 0x568C5D73,
+/**/ 0x40B3CB66, 0xA26261F0,
+/**/ 0x40E17B06, 0xBF32194D,
+/**/ 0x410FE921, 0x11490E42,
+/**/ 0xBCA34428, 0x5376CB61,
+/**/ 0x3FF182D4, 0x236FE314,
+/**/ 0x40018000, 0x00000000,
+/**/ 0xBF7B5F40, 0xE15169A9,
+/**/ 0x3FEC9000, 0x00000000,
+/**/ 0x4001BE19, 0x91B4C8D8,
+/**/ 0x4013795B, 0xBE69BAE6,
+/**/ 0x40373151, 0xCD6F8B02,
+/**/ 0x4060E864, 0xD86A7BFF,
+/**/ 0x408B95CC, 0x515F5BD6,
+/**/ 0x40B8180C, 0xD070B4A1,
+/**/ 0x40E60D2C, 0xC9B24D80,
+/**/ 0x4114DBF6, 0xAA392CAF,
+/**/ 0xBCA89BD0, 0xF5844C55,
+/**/ 0x3FF1A603, 0xDBFAF236,
+/**/ 0x4001C000, 0x00000000,
+/**/ 0xBF4E66E4, 0xB37285FC,
+/**/ 0x3FECB000, 0x00000000,
+/**/ 0x40020E3D, 0x1757F6B1,
+/**/ 0x40149CE9, 0xAE890640,
+/**/ 0x403972D4, 0xD6174F60,
+/**/ 0x40634079, 0x8C82DF92,
+/**/ 0x40904BE6, 0xACAB5569,
+/**/ 0x40BD8A99, 0xB362E75A,
+/**/ 0x40EC0ED7, 0x389374DC,
+/**/ 0x411B8ADF, 0xCA5E9653,
+/**/ 0xBC80CBC7, 0x4A1E3E49,
+/**/ 0x3FF1C9CF, 0x704F5D26,
+/**/ 0x40020000, 0x00000000,
+/**/ 0x3F7C7A2E, 0xAFED62A2,
+/**/ 0x3FECD000, 0x00000000,
+/**/ 0x40026327, 0x6B3395AA,
+/**/ 0x4015DD66, 0x33FB1467,
+/**/ 0x403C0610, 0xDCF3437C,
+/**/ 0x406607CE, 0xC9D7C47A,
+/**/ 0x409360FB, 0xA330DC5C,
+/**/ 0x40C240B4, 0x38A3194B,
+/**/ 0x40F20437, 0xBAA6A879,
+/**/ 0x41226106, 0x04D6F19C,
+/**/ 0x3CABCCF5, 0x15E5252C,
+/**/ 0x3FF1EE3F, 0xFF35681A,
+/**/ 0x40026000, 0x00000000,
+/**/ 0x3F593B59, 0x9CAD4CE9,
+/**/ 0x3FECF000, 0x00000000,
+/**/ 0x4002BD54, 0x664A8350,
+/**/ 0x40173EFF, 0x945190A0,
+/**/ 0x403EFA80, 0xC7CC5224,
+/**/ 0x406958AA, 0x896F1658,
+/**/ 0x40973450, 0x4FD54E04,
+/**/ 0x40C6BF55, 0x4CD60C4A,
+/**/ 0x40F75EBE, 0x3EFFD07C,
+/**/ 0x4128D03C, 0x9E2E6981,
+/**/ 0xBC987CEE, 0xC8A488FF,
+/**/ 0x3FF2135F, 0x8F597306,
+/**/ 0x4002C000, 0x00000000,
+/**/ 0xBF555CCD, 0xABE583FE,
+/**/ 0x3FED1000, 0x00000000,
+/**/ 0x40031D52, 0x2A40EA5C,
+/**/ 0x4018C6B3, 0x52B4947D,
+/**/ 0x404131AE, 0x5D01146E,
+/**/ 0x406D54FB, 0x0163E71C,
+/**/ 0x409BFE8A, 0xEF3ED15B,
+/**/ 0x40CC9C28, 0xA33A6B00,
+/**/ 0x40FEA523, 0x1456E1A6,
+/**/ 0x4130F60F, 0xFC8790DB,
+/**/ 0x3CAC104F, 0x6FABCA41,
+/**/ 0x3FF23939, 0x30D87C68,
+/**/ 0x40032000, 0x00000000,
+/**/ 0xBF556EAD, 0xF8AD1CF9,
+/**/ 0x3FED3000, 0x00000000,
+/**/ 0x400383C4, 0xC053C623,
+/**/ 0x401A7A81, 0x6ADBFF2C,
+/**/ 0x40432C5B, 0xE219A24E,
+/**/ 0x40711484, 0x30F4B8D8,
+/**/ 0x40A10659, 0xBC59423E,
+/**/ 0x40D22C09, 0x3D537AE5,
+/**/ 0x410454A2, 0xA4B7D930,
+/**/ 0x41378151, 0xC151F3C3,
+/**/ 0xBCA2F226, 0x779E9951,
+/**/ 0x3FF25FD9, 0x254E3F9C,
+/**/ 0x40038000, 0x00000000,
+/**/ 0x3F5E2602, 0x9E311A8B,
+/**/ 0x3FED5000, 0x00000000,
+/**/ 0x4003F16A, 0xA2F65F8C,
+/**/ 0x401C61AF, 0x36C0308E,
+/**/ 0x40457C82, 0x5337FF7D,
+/**/ 0x407407A3, 0x7FB84BA9,
+/**/ 0x40A4E476, 0x4C74DEA7,
+/**/ 0x40D75638, 0xDF1C2124,
+/**/ 0x410B5320, 0xA2556E94,
+/**/ 0x414087CD, 0x7D68ABBE,
+/**/ 0xBCACD58C, 0x73A87AB9,
+/**/ 0x3FF2874D, 0x10017B06,
+/**/ 0x40040000, 0x00000000,
+/**/ 0xBF7D2ABA, 0x1340E849,
+/**/ 0x3FED7000, 0x00000000,
+/**/ 0x40046722, 0x7BA9A810,
+/**/ 0x401E851F, 0xCBC74735,
+/**/ 0x40483596, 0xF3879985,
+/**/ 0x4077AAEB, 0xCD297F00,
+/**/ 0x40A9E3C8, 0x31669F50,
+/**/ 0x40DE5420, 0xB7CBB664,
+/**/ 0x41129F7B, 0xB75100A0,
+/**/ 0x4147A1C1, 0x51D127BF,
+/**/ 0x3CAC647E, 0x46D9C78F,
+/**/ 0x3FF2AFA4, 0x304962AE,
+/**/ 0x40046000, 0x00000000,
+/**/ 0x3F6C89EE, 0xA6A041C9,
+/**/ 0x3FED9000, 0x00000000,
+/**/ 0x4004E5F2, 0x7A99A835,
+/**/ 0x402077E5, 0x15B0232D,
+/**/ 0x404B70C1, 0xEE468866,
+/**/ 0x407C334A, 0x43A041C3,
+/**/ 0x40B036D1, 0x53D2C164,
+/**/ 0x40E3F7B1, 0x10CCEDBE,
+/**/ 0x4119C160, 0xF6C2E560,
+/**/ 0x415131DD, 0x6D21D20F,
+/**/ 0x41878683, 0x2EC50766,
+/**/ 0xBCA95596, 0xD1134ECC,
+/**/ 0x3FF2D8EF, 0xA8F4B028,
+/**/ 0x4004E000, 0x00000000,
+/**/ 0x3F67C9EA, 0x66A0D2C7,
+/**/ 0x3FEDB000, 0x00000000,
+/**/ 0x40056F11, 0xD6373B90,
+/**/ 0x4021D7AC, 0xC3747DF3,
+/**/ 0x404F4EF3, 0x6A014D6F,
+/**/ 0x4080F4C4, 0x505C454B,
+/**/ 0x40B48D16, 0x214975C5,
+/**/ 0x40EAACFD, 0xF57BFAC6,
+/**/ 0x41222235, 0x5225A6ED,
+/**/ 0x41598643, 0xACBA67AB,
+/**/ 0x419267B9, 0xDE5D19B9,
+/**/ 0xBCAEF63C, 0x42C92439,
+/**/ 0x3FF30342, 0xD86BED76,
+/**/ 0x40056000, 0x00000000,
+/**/ 0x3F7E23AC, 0x6E771F48,
+/**/ 0x3FEDD000, 0x00000000,
+/**/ 0x400603F5, 0x3D2D8CF1,
+/**/ 0x40236A84, 0xEF4A10FA,
+/**/ 0x4051FDF3, 0x4EA265AF,
+/**/ 0x408499B5, 0xD944F636,
+/**/ 0x40BA64B8, 0x37F73BAC,
+/**/ 0x40F21B9F, 0x259B27FC,
+/**/ 0x412A0669, 0x265D5B9F,
+/**/ 0x41635D8E, 0x3DC806E2,
+/**/ 0x419D8657, 0x36AD8B00,
+/**/ 0x3CA4CEEB, 0x3FFCDCA3,
+/**/ 0x3FF32EB3, 0xC69D2D10,
+/**/ 0x40060000, 0x00000000,
+/**/ 0x3F5FA9E9, 0x6C678625,
+/**/ 0x3FEDF000, 0x00000000,
+/**/ 0x4006A65F, 0x5FCDF915,
+/**/ 0x40253B6E, 0x68321BDA,
+/**/ 0x4054D949, 0x706E8DA9,
+/**/ 0x408950EF, 0x4A70D2D7,
+/**/ 0x40C13319, 0x1F15E14E,
+/**/ 0x40F907B1, 0x846A9BD5,
+/**/ 0x4133139C, 0x17C39016,
+/**/ 0x416E1DA3, 0xBC86F11B,
+/**/ 0x41A8597F, 0xD9F86F3B,
+/**/ 0x3C32D4F8, 0x7D0D5190,
+/**/ 0x3FF35B5B, 0xAFA88354,
+/**/ 0x4006A000, 0x00000000,
+/**/ 0x3F697D7F, 0x37E455FD,
+/**/ 0x3FEE1000, 0x00000000,
+/**/ 0x40075877, 0x41D1DBF9,
+/**/ 0x402758A8, 0xF5852184,
+/**/ 0x405861EE, 0x65C0F467,
+/**/ 0x408F83C0, 0xD2D91276,
+/**/ 0x40C6CA7C, 0x43EC3B0E,
+/**/ 0x4101A722, 0x718322C8,
+/**/ 0x413CA4C6, 0x9533D806,
+/**/ 0x417812B7, 0xE9899583,
+/**/ 0x41B4B875, 0x85EE8B86,
+/**/ 0xBC99DEFB, 0xD1AEEED1,
+/**/ 0x3FF38957, 0xB510476E,
+/**/ 0x40076000, 0x00000000,
+/**/ 0xBF6E22F8, 0xB8901BF9,
+/**/ 0x3FEE3000, 0x00000000,
+/**/ 0x40081CE6, 0xE1C37E57,
+/**/ 0x4029D4F3, 0xD3DC9910,
+/**/ 0x405CD074, 0xE3095065,
+/**/ 0x4093E764, 0xC5C38224,
+/**/ 0x40CEC5AE, 0x3CAE1F31,
+/**/ 0x41097A50, 0xC0645F38,
+/**/ 0x41461866, 0xD8A7F25E,
+/**/ 0x4183DAF5, 0x8C2F04A3,
+/**/ 0x41C2450E, 0xA9143C1F,
+/**/ 0x3C7D25BE, 0x9FD995BC,
+/**/ 0x3FF3B8C9, 0xC35D33E6,
+/**/ 0x40082000, 0x00000000,
+/**/ 0xBF58C8F1, 0xE40D49E0,
+/**/ 0x3FEE5000, 0x00000000,
+/**/ 0x4008F706, 0x285640BB,
+/**/ 0x402CC96B, 0x3B2B7CD1,
+/**/ 0x40613ADF, 0xC5341328,
+/**/ 0x4099908D, 0x16E928A9,
+/**/ 0x40D53986, 0x7CC08A3C,
+/**/ 0x4112DFC5, 0x31DD3E45,
+/**/ 0x41519499, 0xE2A13787,
+/**/ 0x4190F943, 0xF94424AD,
+/**/ 0x41D0C6BC, 0xCDCD49BE,
+/**/ 0xBC9E2458, 0x6D41701D,
+/**/ 0x3FF3E9D9, 0xC088BD28,
+/**/ 0x40090000, 0x00000000,
+/**/ 0xBF71F3AF, 0x537E8A00,
+/**/ 0x3FEE7000, 0x00000000,
+/**/ 0x4009EB18, 0x6562D1E0,
+/**/ 0x40302C31, 0x75651223,
+/**/ 0x4064E431, 0x336E41C7,
+/**/ 0x40A0BCA6, 0xA065DA69,
+/**/ 0x40DE034D, 0x917AF357,
+/**/ 0x411CD2C1, 0x4168FB0F,
+/**/ 0x415CFEB6, 0x15BB794D,
+/**/ 0x419E3EE1, 0x6EFFD5E5,
+/**/ 0x41E024E7, 0x1ACB4D9C,
+/**/ 0xBC9C29C8, 0xD93F153F,
+/**/ 0x3FF41CB7, 0x2183E810,
+/**/ 0x4009E000, 0x00000000,
+/**/ 0x3F7630CA, 0xC5A3C038,
+/**/ 0x3FEE9000, 0x00000000,
+/**/ 0x400AFEA6, 0xA364196F,
+/**/ 0x403258F3, 0x0B19A2EB,
+/**/ 0x4069BDA5, 0x2520AC75,
+/**/ 0x40A669BC, 0x8F67EDEA,
+/**/ 0x40E5D78C, 0xC026C9F8,
+/**/ 0x4126CCB4, 0x1E3B36C2,
+/**/ 0x4168EDE4, 0xBF45C805,
+/**/ 0x41AC2F6A, 0x8AC89E76,
+/**/ 0x41F0675E, 0x4CA9EB55,
+/**/ 0x42336AC1, 0x0D13E3DF,
+/**/ 0x3C9B1D74, 0xF2DE93A6,
+/**/ 0x3FF4519B, 0x155FB22E,
+/**/ 0x400B0000, 0x00000000,
+/**/ 0xBF4595C9, 0xBE690E67,
+/**/ 0x3FEEB000, 0x00000000,
+/**/ 0x400C3908, 0x4BD1C065,
+/**/ 0x40350D88, 0x26C39FFD,
+/**/ 0x4070296B, 0x69D3E79E,
+/**/ 0x40AED279, 0xD7FEEA5D,
+/**/ 0x40F072A8, 0xFD5BD547,
+/**/ 0x4132CDB9, 0x4A08BB38,
+/**/ 0x41768482, 0x536BED06,
+/**/ 0x41BBE1FF, 0x2F10E88D,
+/**/ 0x4201C966, 0xABDBBDAC,
+/**/ 0x42471011, 0x02E62DDA,
+/**/ 0xBCA0855D, 0x3E907E71,
+/**/ 0x3FF488CB, 0x8FA73920,
+/**/ 0x400C4000, 0x00000000,
+/**/ 0xBF6BDED0, 0xB8FE6DDF,
+/**/ 0x3FEED000, 0x00000000,
+/**/ 0x400DA439, 0x12AAF9A9,
+/**/ 0x40387D46, 0x62F25109,
+/**/ 0x4074C339, 0x3F133A3F,
+/**/ 0x40B5E143, 0x662036F9,
+/**/ 0x40F9CF04, 0x74467831,
+/**/ 0x41404E10, 0x576C6FA8,
+/**/ 0x41859489, 0xFF4F8E88,
+/**/ 0x41CD88D2, 0xB44962A9,
+/**/ 0x4214D838, 0x97A288F3,
+/**/ 0x425DE10B, 0x6CF738B3,
+/**/ 0xBC8E9EA7, 0x5F7263CC,
+/**/ 0x3FF4C29F, 0xAA786F36,
+/**/ 0x400DA000, 0x00000000,
+/**/ 0x3F60E44A, 0xABE6A2AD,
+/**/ 0x3FEEF000, 0x00000000,
+/**/ 0x400F4E35, 0xC169B52F,
+/**/ 0x403CF773, 0x29E8699C,
+/**/ 0x407B6D37, 0xFC1818D6,
+/**/ 0x40C02655, 0x1386790A,
+/**/ 0x41054A1F, 0x4FF79D1E,
+/**/ 0x414E104A, 0x7DB0265A,
+/**/ 0x41963C39, 0xE5C8114B,
+/**/ 0x41E10156, 0xF52A87DB,
+/**/ 0x422ADD76, 0x2E9E7ABE,
+/**/ 0x427586AB, 0x6EC81361,
+/**/ 0x3C935690, 0xE395EEA6,
+/**/ 0x3FF4FF86, 0x2E5965A2,
+/**/ 0x400F4000, 0x00000000,
+/**/ 0x3F7C6B82, 0xD36A5E70 } };
+
+#else
+#ifdef LITTLE_ENDI
+static const union {int4 i[5136];double x[2568];} asncs = { .i = {
+/**/ 0x00000000, 0x3FC04000,
+/**/ 0x88994424, 0x3FF02169,
+/**/ 0xB799B115, 0x3FB0A6A2,
+/**/ 0xD57409A0, 0x3FC6EF15,
+/**/ 0xAF52EAA0, 0x3FAA141E,
+/**/ 0xABBBE261, 0x3FB75591,
+/**/ 0xD206D88F, 0x3FA72B51,
+/**/ 0x5BB33E7D, 0x3C96B595,
+/**/ 0xA03E2700, 0x3FC04B41,
+/**/ 0x00000000, 0x3FF04000,
+/**/ 0x66BBDC7C, 0xBF7E9677,
+/**/ 0x00000000, 0x3FC0C000,
+/**/ 0xF9E23A56, 0x3FF02386,
+/**/ 0x60FD0235, 0x3FB1308C,
+/**/ 0x14D16B02, 0x3FC7099F,
+/**/ 0x27C01EE1, 0x3FAAFED6,
+/**/ 0xDBCD5F98, 0x3FB79C6F,
+/**/ 0x4084DAAC, 0x3FA8144A,
+/**/ 0x38D8505E, 0xBC87C092,
+/**/ 0x56C9F380, 0x3FC0CC55,
+/**/ 0x00000000, 0x3FF04000,
+/**/ 0x1DC5AA24, 0xBF7C7906,
+/**/ 0x00000000, 0x3FC14000,
+/**/ 0xB27141F6, 0x3FF025B5,
+/**/ 0x04CE7400, 0x3FB1BB18,
+/**/ 0x72907342, 0x3FC72514,
+/**/ 0x0BF4222C, 0x3FABEC60,
+/**/ 0x75B3736C, 0x3FB7E610,
+/**/ 0x5199C343, 0x3FA9024C,
+/**/ 0x06B56F60, 0xBC8AE84C,
+/**/ 0x3DEFA070, 0x3FC14D7A,
+/**/ 0x00000000, 0x3FF04000,
+/**/ 0x8EBE0A5C, 0xBF7A4A4D,
+/**/ 0x00000000, 0x3FC1C000,
+/**/ 0xC6DE8F57, 0x3FF027F5,
+/**/ 0x345751E1, 0x3FB2464B,
+/**/ 0xCF026805, 0x3FC74178,
+/**/ 0x40A9E0D6, 0x3FACDCD8,
+/**/ 0xEB1D9C38, 0x3FB83282,
+/**/ 0xD7BE707B, 0x3FA9F590,
+/**/ 0x03A2A6D6, 0xBCAB9768,
+/**/ 0xE03B4870, 0x3FC1CEB0,
+/**/ 0x00000000, 0x3FF04000,
+/**/ 0x2170A943, 0xBF780A39,
+/**/ 0x00000000, 0x3FC24000,
+/**/ 0x4C759796, 0x3FF02A47,
+/**/ 0x92771935, 0x3FB2D22B,
+/**/ 0x26ABA06D, 0x3FC75ECF,
+/**/ 0x486A1932, 0x3FADD05B,
+/**/ 0x5AF971D5, 0x3FB881D7,
+/**/ 0x831AEE0C, 0x3FAAEE52,
+/**/ 0xAD1B1BEF, 0x3CA13F57,
+/**/ 0xC8E09330, 0x3FC24FF9,
+/**/ 0x00000000, 0x3FF04000,
+/**/ 0x8A68699B, 0xBF75B8B3,
+/**/ 0x00000000, 0x3FC2C000,
+/**/ 0x59374E09, 0x3FF02CAA,
+/**/ 0xD44E8BEA, 0x3FB35EBE,
+/**/ 0x92E4BE8A, 0x3FC77D1A,
+/**/ 0x4A6C34FD, 0x3FAEC706,
+/**/ 0x972F6E07, 0x3FB8D41E,
+/**/ 0xF9845F69, 0x3FABECCD,
+/**/ 0x945C4185, 0x3C8BA1FA,
+/**/ 0x83C058B0, 0x3FC2D155,
+/**/ 0x00000000, 0x3FF04000,
+/**/ 0xC8B1F774, 0xBF7355A6,
+/**/ 0x00000000, 0x3FC34000,
+/**/ 0x03DC7745, 0x3FF02F1F,
+/**/ 0xC1EE9F61, 0x3FB3EC0A,
+/**/ 0x4A82E6D2, 0x3FC79C5E,
+/**/ 0x19B1EF72, 0x3FAFC0F7,
+/**/ 0x2AA943E5, 0x3FB9296A,
+/**/ 0xEF8B9DE7, 0x3FACF141,
+/**/ 0x083C8716, 0xBC834081,
+/**/ 0x9D6E5610, 0x3FC352C4,
+/**/ 0x00000000, 0x3FF04000,
+/**/ 0x2388BB30, 0xBF70E0FC,
+/**/ 0x00000000, 0x3FC3C000,
+/**/ 0x63D81251, 0x3FF031A5,
+/**/ 0x370B721F, 0x3FB47A15,
+/**/ 0xA28731E5, 0x3FC7BC9D,
+/**/ 0x1E305BE9, 0x3FB05F26,
+/**/ 0x5FA50FBD, 0x3FB981CC,
+/**/ 0x42AC4083, 0x3FADFBEF,
+/**/ 0xA8E107C7, 0x3CA20ACB,
+/**/ 0xA336F5E0, 0x3FC3D447,
+/**/ 0x00000000, 0x3FF04000,
+/**/ 0x4FDB5D5C, 0xBF6CB538,
+/**/ 0x00000000, 0x3FC44000,
+/**/ 0x9159D86F, 0x3FF0343D,
+/**/ 0x23B3747C, 0x3FB508E4,
+/**/ 0x0ED597CB, 0x3FC7DDDC,
+/**/ 0x79ADF104, 0x3FB0DF92,
+/**/ 0x4658D945, 0x3FB9DD58,
+/**/ 0x14ACA06B, 0x3FAF0D19,
+/**/ 0xDF636EFE, 0xBCA4E10D,
+/**/ 0x23252C00, 0x3FC455DF,
+/**/ 0x00000000, 0x3FF04000,
+/**/ 0x4C4F221A, 0xBF6784DD,
+/**/ 0x00000000, 0x3FC4C000,
+/**/ 0xA550D410, 0x3FF036E7,
+/**/ 0x8D0AF1E7, 0x3FB5987D,
+/**/ 0x22F39726, 0x3FC8001D,
+/**/ 0xA1116D73, 0x3FB161D0,
+/**/ 0xBBEA1528, 0x3FBA3C21,
+/**/ 0x74202FF6, 0x3FB01282,
+/**/ 0xD10866E2, 0x3CAA0611,
+/**/ 0xAC086560, 0x3FC4D78B,
+/**/ 0x00000000, 0x3FF04000,
+/**/ 0x5E57DF8A, 0xBF6230B5,
+/**/ 0x00000000, 0x3FC54000,
+/**/ 0xB96E0F8A, 0x3FF039A3,
+/**/ 0x8E0C29F6, 0x3FB628E7,
+/**/ 0x92CEDE01, 0x3FC82364,
+/**/ 0xFB7B5D84, 0x3FB1E5F0,
+/**/ 0x71BD08EE, 0x3FBA9E3D,
+/**/ 0x5F7FFAB4, 0x3FB0A1FD,
+/**/ 0xEF04F6E7, 0xBC90F980,
+/**/ 0xCD7A8DC0, 0x3FC5594D,
+/**/ 0x00000000, 0x3FF04000,
+/**/ 0x47C1D879, 0xBF59711A,
+/**/ 0x00000000, 0x3FC5C000,
+/**/ 0xE8275C12, 0x3FF03C71,
+/**/ 0x584C2A23, 0x3FB6BA28,
+/**/ 0x338C3D4B, 0x3FC847B6,
+/**/ 0x59A55DD8, 0x3FB26C04,
+/**/ 0xF5202D6A, 0x3FBB03C0,
+/**/ 0x9C6466A4, 0x3FB13522,
+/**/ 0x2A268973, 0x3C983C9A,
+/**/ 0x17E62A20, 0x3FC5DB26,
+/**/ 0x00000000, 0x3FF04000,
+/**/ 0xC51F7008, 0xBF4C70BE,
+/**/ 0x00000000, 0x3FC64000,
+/**/ 0x4CBA31A9, 0x3FF03F52,
+/**/ 0x34C49ADE, 0x3FB74C46,
+/**/ 0xFC5F33CC, 0x3FC86D15,
+/**/ 0xFA419D7C, 0x3FB2F41B,
+/**/ 0xB757E82A, 0x3FBB6CC2,
+/**/ 0xDA4D5C39, 0x3FB1CC18,
+/**/ 0x2DFB224D, 0xBCA862D4,
+/**/ 0x1C8C8AF0, 0x3FC65D15,
+/**/ 0x00000000, 0x3FF04000,
+/**/ 0xB9CADBBF, 0xBF25B668,
+/**/ 0x00000000, 0x3FC6C000,
+/**/ 0x032EA88F, 0x3FF04245,
+/**/ 0x84A2B473, 0x3FB7DF47,
+/**/ 0x076A60F5, 0x3FC89388,
+/**/ 0x8E8394C1, 0x3FB37E49,
+/**/ 0x160F3472, 0x3FBBD95A,
+/**/ 0x39844810, 0x3FB26708,
+/**/ 0x698BC8EA, 0x3C994228,
+/**/ 0x6D8C14A0, 0x3FC6DF1B,
+/**/ 0x00000000, 0x3FF04000,
+/**/ 0x754477AC, 0x3F422819,
+/**/ 0x00000000, 0x3FC74000,
+/**/ 0x285A8CEB, 0x3FF0454A,
+/**/ 0xC21B9224, 0x3FB87332,
+/**/ 0x92A93402, 0x3FC8BB10,
+/**/ 0x3ED3F586, 0x3FB40A9F,
+/**/ 0x643217C8, 0x3FBC499F,
+/**/ 0x5D29A16B, 0x3FB3061A,
+/**/ 0x3DF9F2D7, 0xBCA3B2DF,
+/**/ 0x9DE6A160, 0x3FC76139,
+/**/ 0x00000000, 0x3FF04000,
+/**/ 0x6A33AB4B, 0x3F5528A1,
+/**/ 0x00000000, 0x3FC7C000,
+/**/ 0xD9E48D58, 0x3FF04861,
+/**/ 0x81461BF6, 0x3FB9080E,
+/**/ 0x00E32FFA, 0x3FC8E3B4,
+/**/ 0xAFB1F2A5, 0x3FB4992F,
+/**/ 0xF33705D5, 0x3FBCBDAB,
+/**/ 0x7E23EE89, 0x3FB3A97A,
+/**/ 0xCCE44C41, 0x3C7AAD12,
+/**/ 0x4187FAE0, 0x3FC7E370,
+/**/ 0x00000000, 0x3FF04000,
+/**/ 0xC91AAF11, 0x3F60C3B3,
+/**/ 0x00000000, 0x3FC84000,
+/**/ 0x36478509, 0x3FF04B8C,
+/**/ 0x70FAC1B4, 0x3FB99DE1,
+/**/ 0xDAA92166, 0x3FC90D76,
+/**/ 0x06C416A6, 0x3FB52A0E,
+/**/ 0x1CDCA344, 0x3FBD359A,
+/**/ 0x7EFD4CA0, 0x3FB45155,
+/**/ 0x35A8895D, 0x3C396CA5,
+/**/ 0xED4C6EF0, 0x3FC865BF,
+/**/ 0x00000000, 0x3FF04000,
+/**/ 0x8F0A11A4, 0x3F67186C,
+/**/ 0x00000000, 0x3FC8C000,
+/**/ 0x5CD5E248, 0x3FF04EC9,
+/**/ 0x5BB94403, 0x3FBA34B2,
+/**/ 0xCF5CA73A, 0x3FC9385D,
+/**/ 0xF01AFDBE, 0x3FB5BD4D,
+/**/ 0x4D61A7A9, 0x3FBDB185,
+/**/ 0x00BD47CF, 0x3FB4FDDA,
+/**/ 0x727E8B64, 0xBC9D1119,
+/**/ 0x37077E20, 0x3FC8E829,
+/**/ 0x00000000, 0x3FF04000,
+/**/ 0xABC490CB, 0x3F6D92B9,
+/**/ 0x00000000, 0x3FC94000,
+/**/ 0x6DBD2A10, 0x3FF05219,
+/**/ 0x2894CAA1, 0x3FBACC88,
+/**/ 0xB6427516, 0x3FC9646D,
+/**/ 0xA3A864D7, 0x3FB65303,
+/**/ 0x0E3CF3D4, 0x3FBE318A,
+/**/ 0x78CDA678, 0x3FB5AF38,
+/**/ 0xDA9D51DF, 0x3CA3841D,
+/**/ 0xB58AA660, 0x3FC96AAC,
+/**/ 0x00000000, 0x3FF04000,
+/**/ 0xBD2A1052, 0x3F72196D,
+/**/ 0x00000000, 0x3FC9C000,
+/**/ 0x8A099990, 0x3FF0557C,
+/**/ 0xDC268965, 0x3FBB6569,
+/**/ 0x8F9FBA21, 0x3FC991AB,
+/**/ 0xEAED1E85, 0x3FB6EB43,
+/**/ 0x115C4C63, 0x3FBEB5C6,
+/**/ 0x47F9AEFA, 0x3FB665A3,
+/**/ 0x03AB3673, 0xBCA1F8FD,
+/**/ 0x00AC4A60, 0x3FC9ED4B,
+/**/ 0x00000000, 0x3FF04000,
+/**/ 0x0999905B, 0x3F757C8A,
+/**/ 0x00000000, 0x3FCA4000,
+/**/ 0xD3A9E674, 0x3FF058F2,
+/**/ 0x99873832, 0x3FBBFF5E,
+/**/ 0x85E31CE9, 0x3FC9C01C,
+/**/ 0x26E09FF2, 0x3FB78624,
+/**/ 0x3CF0885C, 0x3FBF3E58,
+/**/ 0xD2986239, 0x3FB7214E,
+/**/ 0x3E594694, 0x3C97E3E5,
+/**/ 0xB14EB5D0, 0x3FCA7004,
+/**/ 0x00000000, 0x3FF04000,
+/**/ 0xA9E6746B, 0x3F78F2D3,
+/**/ 0x00000000, 0x3FCAC000,
+/**/ 0x6D731ECB, 0x3FF05C7C,
+/**/ 0xA34FA4B3, 0x3FBC9A6D,
+/**/ 0xEED9C253, 0x3FC9EFC5,
+/**/ 0x5614FAEB, 0x3FB823BA,
+/**/ 0xB7CE698F, 0x3FBFCB60,
+/**/ 0x99F3292F, 0x3FB7E271,
+/**/ 0x068D709C, 0xBC9842C6,
+/**/ 0x61674110, 0x3FCAF2DA,
+/**/ 0x00000000, 0x3FF04000,
+/**/ 0x731ECAE2, 0x3F7C7C6D,
+/**/ 0x00000000, 0x3FCB4000,
+/**/ 0x7B24A973, 0x3FF06019,
+/**/ 0x5CA0A798, 0x3FBD369E,
+/**/ 0x4CF0DB64, 0x3FCA20AD,
+/**/ 0x1B1A3F31, 0x3FB8C41D,
+/**/ 0x7B35E049, 0x3FC02E80,
+/**/ 0x56FB8A97, 0x3FB8A944,
+/**/ 0xD337B37C, 0xBCACBF9C,
+/**/ 0xAC059370, 0x3FCB75CC,
+/**/ 0x00000000, 0x3FF08000,
+/**/ 0xDB568D78, 0xBF7FE684,
+/**/ 0x00000000, 0x3FCBC000,
+/**/ 0x216C6801, 0x3FF063CA,
+/**/ 0x4A32C9FD, 0x3FBDD3F8,
+/**/ 0x50843BC9, 0x3FCA52D8,
+/**/ 0xC324648A, 0x3FB96763,
+/**/ 0xE4407899, 0x3FC079AD,
+/**/ 0x1663A5DC, 0x3FB97602,
+/**/ 0xC637289D, 0xBCA3ADC3,
+/**/ 0x2D5B06A0, 0x3FCBF8DC,
+/**/ 0x00000000, 0x3FF08000,
+/**/ 0x9397FEA6, 0xBF7C35DE,
+/**/ 0x00000000, 0x3FCC4000,
+/**/ 0x85EAFB1F, 0x3FF0678E,
+/**/ 0x136DEAC6, 0x3FBE7283,
+/**/ 0xD93A817D, 0x3FCA864C,
+/**/ 0x4CF7089B, 0x3FBA0DA6,
+/**/ 0xB3ABB322, 0x3FC0C74A,
+/**/ 0x562E6E1E, 0x3FBA48E8,
+/**/ 0x7EB8FFF8, 0xBC951E3E,
+/**/ 0x82C22B80, 0x3FCC7C09,
+/**/ 0x00000000, 0x3FF08000,
+/**/ 0x1504E0D3, 0xBF78717A,
+/**/ 0x00000000, 0x3FCCC000,
+/**/ 0xCF382A59, 0x3FF06B66,
+/**/ 0x838936FB, 0x3FBF1246,
+/**/ 0xF76F5C94, 0x3FCABB10,
+/**/ 0x701A77AE, 0x3FBAB6FD,
+/**/ 0xC26702C6, 0x3FC11769,
+/**/ 0x24CDF38E, 0x3FBB2237,
+/**/ 0xE28307A9, 0xBC8DB69A,
+/**/ 0x4AC67190, 0x3FCCFF55,
+/**/ 0x00000000, 0x3FF08000,
+/**/ 0xC7D5A6B9, 0xBF749930,
+/**/ 0x00000000, 0x3FCD4000,
+/**/ 0x24E7707F, 0x3FF06F53,
+/**/ 0x8AB3CBB2, 0x3FBFB34A,
+/**/ 0xEDAC8D74, 0x3FCAF12A,
+/**/ 0xA45DA614, 0x3FBB6382,
+/**/ 0xAD8E9F44, 0x3FC16A1E,
+/**/ 0x41E7749D, 0x3FBC0231,
+/**/ 0x22DC16A2, 0x3C76CA27,
+/**/ 0x252BF240, 0x3FCD82C0,
+/**/ 0x00000000, 0x3FF08000,
+/**/ 0x188F814B, 0xBF70ACDB,
+/**/ 0x00000000, 0x3FCDC000,
+/**/ 0xAF8CADA0, 0x3FF07353,
+/**/ 0x9FA32DC9, 0x3FC02ACB,
+/**/ 0x32323718, 0x3FCB28A1,
+/**/ 0x29A8F15E, 0x3FBC1350,
+/**/ 0xDEB270E1, 0x3FC1BF7D,
+/**/ 0x40D67463, 0x3FBCE91C,
+/**/ 0x104BAA08, 0x3CA6E976,
+/**/ 0xB2F76140, 0x3FCE064A,
+/**/ 0x00000000, 0x3FF08000,
+/**/ 0xE6A4BFC9, 0xBF6958A0,
+/**/ 0x00000000, 0x3FCE4000,
+/**/ 0x98C0FFD9, 0x3FF07768,
+/**/ 0x6F7F1AF0, 0x3FC07C9A,
+/**/ 0x708F2AFB, 0x3FCB617A,
+/**/ 0x1025B50C, 0x3FBCC681,
+/**/ 0x9487453A, 0x3FC2179C,
+/**/ 0xAD09B3AB, 0x3FBDD740,
+/**/ 0x189038C0, 0xBC8D32DB,
+/**/ 0x96762300, 0x3FCE89F5,
+/**/ 0x00000000, 0x3FF08000,
+/**/ 0x7E004D50, 0xBF612ECE,
+/**/ 0x00000000, 0x3FCEC000,
+/**/ 0x0B27C417, 0x3FF07B92,
+/**/ 0xE821087A, 0x3FC0CF15,
+/**/ 0x8B49DC8C, 0x3FCB9BBD,
+/**/ 0x40BEF5C2, 0x3FBD7D31,
+/**/ 0xEC080575, 0x3FC27290,
+/**/ 0x3056A6A9, 0x3FBECCEA,
+/**/ 0x0C9B27A2, 0x3C9DE506,
+/**/ 0x73468A50, 0x3FCF0DC1,
+/**/ 0x00000000, 0x3FF08000,
+/**/ 0x60EFA34D, 0xBF51B7D3,
+/**/ 0x00000000, 0x3FCF4000,
+/**/ 0x3273C018, 0x3FF07FD0,
+/**/ 0x51B87F08, 0x3FC12242,
+/**/ 0x9D9AB2BC, 0x3FCBD771,
+/**/ 0x85FFA125, 0x3FBE377D,
+/**/ 0xEA0CFE55, 0x3FC2D071,
+/**/ 0xBB61DDD3, 0x3FBFCA67,
+/**/ 0x88A645E7, 0xBCA25383,
+/**/ 0xEE603F40, 0x3FCF91AE,
+/**/ 0x00000000, 0x3FF08000,
+/**/ 0x1FF422B6, 0xBF07E6C6,
+/**/ 0x00000000, 0x3FCFC000,
+/**/ 0x3B6C76F2, 0x3FF08423,
+/**/ 0x0A1DF897, 0x3FC17624,
+/**/ 0xFD38779D, 0x3FCC149D,
+/**/ 0x95531ECD, 0x3FBEF583,
+/**/ 0x855FA966, 0x3FC33157,
+/**/ 0xD81E6BAA, 0x3FC06805,
+/**/ 0x1B47FAEC, 0x3C86827E,
+/**/ 0x570E6798, 0x3FD00ADF,
+/**/ 0x00000000, 0x3FF08000,
+/**/ 0xB1DBC656, 0x3F508CED,
+/**/ 0x00000000, 0x3FD02000,
+/**/ 0x53F3A97B, 0x3FF0888B,
+/**/ 0x858525D6, 0x3FC1CABF,
+/**/ 0x3C37AF90, 0x3FCC534A,
+/**/ 0x18AD312A, 0x3FBFB762,
+/**/ 0xB151CAAD, 0x3FC3955A,
+/**/ 0x07ADE82D, 0x3FC0EF16,
+/**/ 0xFCDE8746, 0x3CAEEF44,
+/**/ 0xAD203480, 0x3FD04CF8,
+/**/ 0x00000000, 0x3FF08000,
+/**/ 0xE752F5A1, 0x3F6116A7,
+/**/ 0x00000000, 0x3FD06000,
+/**/ 0xAB0B03F8, 0x3FF08D08,
+/**/ 0x4F34EEE8, 0x3FC22019,
+/**/ 0x2AFDABDE, 0x3FCC937E,
+/**/ 0x5C4F35BA, 0x3FC03E9C,
+/**/ 0x68DF21A6, 0x3FC3FC95,
+/**/ 0x53843C52, 0x3FC17A91,
+/**/ 0xC2BB835A, 0xBC9D6F54,
+/**/ 0xCE0162B8, 0x3FD08F23,
+/**/ 0x00000000, 0x3FF08000,
+/**/ 0x1607EF23, 0x3F6A1156,
+/**/ 0x00000000, 0x3FD0A000,
+/**/ 0x70D9FA87, 0x3FF0919B,
+/**/ 0x0A456C09, 0x3FC27636,
+/**/ 0xDA483778, 0x3FCCD541,
+/**/ 0x136D6630, 0x3FC0A394,
+/**/ 0xBA615E9C, 0x3FC46722,
+/**/ 0xA2BC6F73, 0x3FC20AA6,
+/**/ 0x7F1D9D86, 0x3CA9D006,
+/**/ 0x0F0C1EC8, 0x3FD0D161,
+/**/ 0x00000000, 0x3FF08000,
+/**/ 0xD9FA8688, 0x3F719B70,
+/**/ 0x00000000, 0x3FD0E000,
+/**/ 0xD6B3D5D1, 0x3FF09643,
+/**/ 0x72641546, 0x3FC2CD1A,
+/**/ 0x9D4AC7EC, 0x3FCD189D,
+/**/ 0x149C2E66, 0x3FC10AA9,
+/**/ 0xD3DE8741, 0x3FC4D51E,
+/**/ 0xF6DA4768, 0x3FC29F86,
+/**/ 0x828C2A81, 0x3CAEA900,
+/**/ 0xC65D88C8, 0x3FD113B0,
+/**/ 0x00000000, 0x3FF08000,
+/**/ 0xB3D5D119, 0x3F7643D6,
+/**/ 0x00000000, 0x3FD12000,
+/**/ 0x0F1DF195, 0x3FF09B02,
+/**/ 0x5C9E6B3F, 0x3FC324CB,
+/**/ 0x0BE228B7, 0x3FCD5D9A,
+/**/ 0xD29602B0, 0x3FC173EC,
+/**/ 0x0FFA7799, 0x3FC546A7,
+/**/ 0x87BA569F, 0x3FC33965,
+/**/ 0x9956F2C3, 0xBCAE3258,
+/**/ 0x4ADA6FF0, 0x3FD15613,
+/**/ 0x00000000, 0x3FF08000,
+/**/ 0x1DF1952F, 0x3F7B020F,
+/**/ 0x00000000, 0x3FD16000,
+/**/ 0x4DD62EB0, 0x3FF09FD6,
+/**/ 0xB8335DE5, 0x3FC37D4D,
+/**/ 0x04DFA3F1, 0x3FCDA440,
+/**/ 0x55E59412, 0x3FC1DF71,
+/**/ 0x0394B72E, 0x3FC5BBDA,
+/**/ 0xE1177398, 0x3FC3D877,
+/**/ 0x3B5720A7, 0x3CA8AC88,
+/**/ 0xF43427A8, 0x3FD19888,
+/**/ 0x00000000, 0x3FF08000,
+/**/ 0xD62EAF85, 0x3F7FD64D,
+/**/ 0x00000000, 0x3FD1A000,
+/**/ 0xC7D99A5F, 0x3FF0A4C0,
+/**/ 0x8F6BB942, 0x3FC3D6A6,
+/**/ 0xB06CB8A9, 0x3FCDEC98,
+/**/ 0x432C74B1, 0x3FC24D49,
+/**/ 0x8C1C6EC6, 0x3FC634D7,
+/**/ 0x01BF2560, 0x3FC47CF6,
+/**/ 0x476E25C7, 0x3CA3EDE7,
+/**/ 0x1AED7720, 0x3FD1DB12,
+/**/ 0x00000000, 0x3FF0C000,
+/**/ 0x2665A126, 0xBF7B3F38,
+/**/ 0x00000000, 0x3FD1E000,
+/**/ 0xB36B4C8B, 0x3FF0A9C1,
+/**/ 0x0879E39B, 0x3FC430DB,
+/**/ 0x82887D8B, 0x3FCE36AD,
+/**/ 0xE1B33C79, 0x3FC2BD87,
+/**/ 0xDEA4E95E, 0x3FC6B1C0,
+/**/ 0x7C90504A, 0x3FC5271A,
+/**/ 0x8A6EBD08, 0x3CAAFAD9,
+/**/ 0x185FA360, 0x3FD21DAF,
+/**/ 0x00000000, 0x3FF0C000,
+/**/ 0x94B3751C, 0xBF763E4C,
+/**/ 0x00000000, 0x3FD22000,
+/**/ 0x481B7EED, 0x3FF0AED9,
+/**/ 0x66613BB3, 0x3FC48BF0,
+/**/ 0x3D9FDD8F, 0x3FCE8288,
+/**/ 0x22470BF2, 0x3FC33041,
+/**/ 0x97C5B476, 0x3FC732B8,
+/**/ 0x9B614F73, 0x3FC5D722,
+/**/ 0x759745C8, 0x3CA96B82,
+/**/ 0x46BF95B8, 0x3FD26060,
+/**/ 0x00000000, 0x3FF0C000,
+/**/ 0xE48112DC, 0xBF7126B7,
+/**/ 0x00000000, 0x3FD26000,
+/**/ 0xBECEDF0E, 0x3FF0B407,
+/**/ 0x09E5699A, 0x3FC4E7EC,
+/**/ 0xF541EC2D, 0x3FCED032,
+/**/ 0xA6688484, 0x3FC3A589,
+/**/ 0xCC5228BD, 0x3FC7B7E2,
+/**/ 0x83ECAD1F, 0x3FC68D4E,
+/**/ 0x7CB79363, 0x3CA98586,
+/**/ 0x01231EC8, 0x3FD2A326,
+/**/ 0x00000000, 0x3FF0C000,
+/**/ 0x6241E449, 0xBF67F082,
+/**/ 0x00000000, 0x3FD2A000,
+/**/ 0x51C61D1C, 0x3FF0B94D,
+/**/ 0x7281F837, 0x3FC544D3,
+/**/ 0x10F19F89, 0x3FCF1FB8,
+/**/ 0xC7D08A44, 0x3FC41D76,
+/**/ 0x1AF4E5E6, 0x3FC84165,
+/**/ 0x5EE5D838, 0x3FC749E1,
+/**/ 0xA1F9A890, 0x3C8A2A36,
+/**/ 0xA3865760, 0x3FD2E600,
+/**/ 0x00000000, 0x3FF0C000,
+/**/ 0xE78B8E2F, 0xBF5ACAB8,
+/**/ 0x00000000, 0x3FD2E000,
+/**/ 0x3CA5B9C1, 0x3FF0BEAA,
+/**/ 0x3F6A91D3, 0x3FC5A2AC,
+/**/ 0x4F1650DB, 0x3FCF7122,
+/**/ 0xA04F63E7, 0x3FC4981E,
+/**/ 0xBEBC9B64, 0x3FC8CF66,
+/**/ 0x81598BF7, 0x3FC80D21,
+/**/ 0x8E0FD320, 0xBC984143,
+/**/ 0x8AD12008, 0x3FD328F0,
+/**/ 0x00000000, 0x3FF0C000,
+/**/ 0xA463F3FD, 0xBF355C35,
+/**/ 0x00000000, 0x3FD32000,
+/**/ 0xBC7E151A, 0x3FF0C41E,
+/**/ 0x30943E19, 0x3FC6017C,
+/**/ 0xC80C760D, 0x3FCFC47C,
+/**/ 0x120B129D, 0x3FC51598,
+/**/ 0xA2A855B5, 0x3FC96210,
+/**/ 0x9880230D, 0x3FC8D758,
+/**/ 0xBF178596, 0xBCA4D129,
+/**/ 0x14DCC050, 0x3FD36BF6,
+/**/ 0x00000000, 0x3FF0C000,
+/**/ 0xF854661E, 0x3F507AF1,
+/**/ 0x00000000, 0x3FD36000,
+/**/ 0x0FD3C135, 0x3FF0C9AB,
+/**/ 0x27C80482, 0x3FC66149,
+/**/ 0x78AC0DDD, 0x3FD00CE9,
+/**/ 0xD02204B1, 0x3FC595FA,
+/**/ 0x7642750D, 0x3FC9F98D,
+/**/ 0xD82AC48A, 0x3FC9A8D3,
+/**/ 0x289B3951, 0x3C977587,
+/**/ 0xA079A6D8, 0x3FD3AF11,
+/**/ 0x00000000, 0x3FF0C000,
+/**/ 0xA7826A0D, 0x3F63561F,
+/**/ 0x00000000, 0x3FD3A000,
+/**/ 0x76A81A69, 0x3FF0CF4F,
+/**/ 0x29BF5ACD, 0x3FC6C219,
+/**/ 0x507D5DD4, 0x3FD03898,
+/**/ 0x67B79439, 0x3FC6195F,
+/**/ 0xC35A709F, 0x3FCA9609,
+/**/ 0x2BF7455C, 0x3FCA81E4,
+/**/ 0xF424551E, 0x3CA03304,
+/**/ 0x8D754B40, 0x3FD3F243,
+/**/ 0x00000000, 0x3FF0C000,
+/**/ 0x5034D2A8, 0x3F6E9EED,
+/**/ 0x00000000, 0x3FD3E000,
+/**/ 0x3282280D, 0x3FF0D50C,
+/**/ 0x5F4ACC23, 0x3FC723F2,
+/**/ 0x08771131, 0x3FD06551,
+/**/ 0x4970163E, 0x3FC69FDF,
+/**/ 0x04EE9A0A, 0x3FCB37B4,
+/**/ 0x6B79BC18, 0x3FCB62DE,
+/**/ 0x02A2F456, 0x3CAECF25,
+/**/ 0x3CA032E0, 0x3FD4358C,
+/**/ 0x00000000, 0x3FF0C000,
+/**/ 0x82280D28, 0x3F750C32,
+/**/ 0x00000000, 0x3FD42000,
+/**/ 0x8677C82D, 0x3FF0DAE1,
+/**/ 0x16834ABE, 0x3FC786DB,
+/**/ 0xF1631731, 0x3FD09319,
+/**/ 0xD36297AF, 0x3FC72994,
+/**/ 0xBF583888, 0x3FCBDEBC,
+/**/ 0x918E2AE6, 0x3FCC4C1B,
+/**/ 0xF34A155C, 0x3CA92F70,
+/**/ 0x0FD419C8, 0x3FD478EC,
+/**/ 0x00000000, 0x3FF0C000,
+/**/ 0x77C82D53, 0x3F7AE186,
+/**/ 0x00000000, 0x3FD46000,
+/**/ 0xB73728F8, 0x3FF0E0CF,
+/**/ 0xC406A36A, 0x3FC7EAD9,
+/**/ 0x91BDA616, 0x3FD0C1F9,
+/**/ 0x5B86C42B, 0x3FC7B69B,
+/**/ 0x99CD8C9F, 0x3FCC8B56,
+/**/ 0xF7084936, 0x3FCD3DF8,
+/**/ 0x54942387, 0xBC923B74,
+/**/ 0x69FA40E8, 0x3FD4BC63,
+/**/ 0x00000000, 0x3FF10000,
+/**/ 0xC8D707BB, 0xBF7F3048,
+/**/ 0x00000000, 0x3FD4A000,
+/**/ 0x0B1092B8, 0x3FF0E6D7,
+/**/ 0x043F9011, 0x3FC84FF5,
+/**/ 0xA7AFD6EB, 0x3FD0F1F6,
+/**/ 0x3AA5D7B9, 0x3FC8470F,
+/**/ 0x794E9CFD, 0x3FCD3DB6,
+/**/ 0x90FB69FD, 0x3FCE38D8,
+/**/ 0xC2327DC5, 0x3C9CFA2D,
+/**/ 0xAF11E2C0, 0x3FD4FFF2,
+/**/ 0x00000000, 0x3FF10000,
+/**/ 0xEF6D4848, 0xBF7928F4,
+/**/ 0x00000000, 0x3FD4E000,
+/**/ 0xCA008550, 0x3FF0ECF7,
+/**/ 0x9CB9ECA7, 0x3FC8B633,
+/**/ 0x2B20AC3D, 0x3FD12318,
+/**/ 0xD7D5E860, 0x3FC8DB0D,
+/**/ 0x9D1315AF, 0x3FCDF613,
+/**/ 0x32D8BC6F, 0x3FCF3D21,
+/**/ 0x92E48EEE, 0x3C9C6A36,
+/**/ 0x4436D008, 0x3FD5439A,
+/**/ 0x00000000, 0x3FF10000,
+/**/ 0xFF7AAF92, 0xBF730835,
+/**/ 0x00000000, 0x3FD52000,
+/**/ 0x3DBA2C62, 0x3FF0F332,
+/**/ 0x7D83983C, 0x3FC91D9C,
+/**/ 0x4FDDA02E, 0x3FD15565,
+/**/ 0xB48747C7, 0x3FC972B5,
+/**/ 0xBC9105F9, 0x3FCEB4A7,
+/**/ 0x6A535ECF, 0x3FD0259F,
+/**/ 0xF6EA55C1, 0x3C87EB36,
+/**/ 0x8FA83538, 0x3FD5875A,
+/**/ 0x00000000, 0x3FF10000,
+/**/ 0x8BA73C6A, 0xBF699B84,
+/**/ 0x00000000, 0x3FD56000,
+/**/ 0xB1B22D42, 0x3FF0F986,
+/**/ 0xC29A92ED, 0x3FC98636,
+/**/ 0x87DBE62D, 0x3FD188E5,
+/**/ 0x792C37EB, 0x3FCA0E26,
+/**/ 0x2735E8CD, 0x3FCF79AF,
+/**/ 0x6ECCD4C0, 0x3FD0B1D1,
+/**/ 0xBEAE0510, 0x3C9502B5,
+/**/ 0xF8CF8AC0, 0x3FD5CB33,
+/**/ 0x00000000, 0x3FF10000,
+/**/ 0x374AF74C, 0xBF59E539,
+/**/ 0x00000000, 0x3FD5A000,
+/**/ 0x7329D23A, 0x3FF0FFF5,
+/**/ 0xB568F082, 0x3FC9F009,
+/**/ 0x85939DB2, 0x3FD1BDA0,
+/**/ 0x0283B18A, 0x3FCAAD81,
+/**/ 0x72F69148, 0x3FD022B4,
+/**/ 0x39AD0B79, 0x3FD14362,
+/**/ 0x80828B86, 0xBCAD7968,
+/**/ 0xE847B130, 0x3FD60F26,
+/**/ 0x00000000, 0x3FF10000,
+/**/ 0x5B8BC081, 0xBEE519AC,
+/**/ 0x00000000, 0x3FD5E000,
+/**/ 0xD13A9687, 0x3FF1067E,
+/**/ 0xCE4F3F61, 0x3FCA5B1C,
+/**/ 0x3E764545, 0x3FD1F39E,
+/**/ 0x6F90871B, 0x3FCB50E7,
+/**/ 0x6F487F97, 0x3FD08C0B,
+/**/ 0x67265C20, 0x3FD1DA90,
+/**/ 0x995723AD, 0x3CAE5B02,
+/**/ 0xC7E43AA0, 0x3FD65333,
+/**/ 0x00000000, 0x3FF10000,
+/**/ 0xEA5A1D64, 0x3F59FB44,
+/**/ 0x00000000, 0x3FD62000,
+/**/ 0x1CE216D9, 0x3FF10D23,
+/**/ 0xB63E0B53, 0x3FCAC777,
+/**/ 0xED81D055, 0x3FD22AE6,
+/**/ 0x3046C5AC, 0x3FCBF87D,
+/**/ 0xFCB29FE4, 0x3FD0F8FE,
+/**/ 0xC99A404E, 0x3FD2779D,
+/**/ 0xC3202AE8, 0xBCA2AF1E,
+/**/ 0x02B8E378, 0x3FD6975B,
+/**/ 0x00000000, 0x3FF10000,
+/**/ 0xC42DB2AB, 0x3F6A4639,
+/**/ 0x00000000, 0x3FD66000,
+/**/ 0xA90E6A24, 0x3FF113E2,
+/**/ 0x485F2C6B, 0x3FCB3522,
+/**/ 0x15F1D6CC, 0x3FD26383,
+/**/ 0x14F9D555, 0x3FCCA467,
+/**/ 0x245E397E, 0x3FD169B3,
+/**/ 0x99479CF7, 0x3FD31ACF,
+/**/ 0x8992C228, 0xBC730D3F,
+/**/ 0x05213B28, 0x3FD6DB9D,
+/**/ 0x00000000, 0x3FF10000,
+/**/ 0x0E6A2469, 0x3F73E2A9,
+/**/ 0x00000000, 0x3FD6A000,
+/**/ 0xCAAAE6D5, 0x3FF11ABD,
+/**/ 0x93CF9B23, 0x3FCBA424,
+/**/ 0x86106AD4, 0x3FD29D7B,
+/**/ 0x5E96870B, 0x3FCD54CB,
+/**/ 0x9975D46D, 0x3FD1DE4D,
+/**/ 0xA709F8A4, 0x3FD3C46E,
+/**/ 0x457B6F5C, 0xBC9CB630,
+/**/ 0x3CC87FC8, 0x3FD71FFA,
+/**/ 0x00000000, 0x3FF10000,
+/**/ 0xAAE6D53D, 0x3F7ABDCA,
+/**/ 0x00000000, 0x3FD6E000,
+/**/ 0xD8AD589E, 0x3FF121B4,
+/**/ 0xDD6A8C89, 0x3FCC1486,
+/**/ 0x5A283891, 0x3FD2D8D9,
+/**/ 0xCFB4F5A1, 0x3FCE09D1,
+/**/ 0xCF594BB6, 0x3FD256F5,
+/**/ 0x92614C29, 0x3FD474C7,
+/**/ 0x533051E9, 0xBC88FB31,
+/**/ 0x18B1AD28, 0x3FD76473,
+/**/ 0x00000000, 0x3FF14000,
+/**/ 0x52A761D6, 0xBF7E4B27,
+/**/ 0x00000000, 0x3FD72000,
+/**/ 0x2C23AB4A, 0x3FF128C8,
+/**/ 0xA1A6A356, 0x3FCC8651,
+/**/ 0xFF99ABE3, 0x3FD315A5,
+/**/ 0xBE8EE4C2, 0x3FCEC3A3,
+/**/ 0x11207D5D, 0x3FD2D3D5,
+/**/ 0x02FE6DF8, 0x3FD52C2B,
+/**/ 0xFE4D8DF3, 0xBCA3F304,
+/**/ 0x093FC1F0, 0x3FD7A908,
+/**/ 0x00000000, 0x3FF14000,
+/**/ 0xDC54B622, 0xBF7737D3,
+/**/ 0x00000000, 0x3FD76000,
+/**/ 0x20420F33, 0x3FF12FF8,
+/**/ 0x96860D89, 0x3FCCF98D,
+/**/ 0x3814F292, 0x3FD353EB,
+/**/ 0x27E81BF7, 0x3FCF826C,
+/**/ 0x9A827352, 0x3FD35516,
+/**/ 0xE614C6DF, 0x3FD5EAED,
+/**/ 0x36C1700C, 0x3C80AEDB,
+/**/ 0x803E3C28, 0x3FD7EDB9,
+/**/ 0x00000000, 0x3FF14000,
+/**/ 0xBDF0CCC6, 0xBF7007DF,
+/**/ 0x00000000, 0x3FD7A000,
+/**/ 0x12719C3A, 0x3FF13745,
+/**/ 0xAD9A717F, 0x3FCD6E43,
+/**/ 0x1CFACD12, 0x3FD393B3,
+/**/ 0xE17B8F05, 0x3FD0232B,
+/**/ 0xB23873BC, 0x3FD3DAE7,
+/**/ 0xAFB712E5, 0x3FD6B169,
+/**/ 0x0BC74599, 0x3C994C0C,
+/**/ 0xF0E9CF80, 0x3FD83287,
+/**/ 0x00000000, 0x3FF14000,
+/**/ 0x1CC78CA5, 0xBF6175DB,
+/**/ 0x00000000, 0x3FD7E000,
+/**/ 0x625F7844, 0x3FF13EAF,
+/**/ 0x161D9978, 0x3FCDE47D,
+/**/ 0x22E63DCA, 0x3FD3D508,
+/**/ 0x8B2EC7EB, 0x3FD087CA,
+/**/ 0xC5F619C8, 0x3FD46577,
+/**/ 0xA08A73DE, 0x3FD77FFC,
+/**/ 0x6E7B547F, 0x3CA1DBDE,
+/**/ 0xCFF956F8, 0x3FD87773,
+/**/ 0x00000000, 0x3FF14000,
+/**/ 0x087BC752, 0xBF3509DA,
+/**/ 0x00000000, 0x3FD82000,
+/**/ 0x720C869D, 0x3FF14637,
+/**/ 0x3F1FD940, 0x3FCE5C43,
+/**/ 0x1D614654, 0x3FD417F5,
+/**/ 0x472052ED, 0x3FD0EF2A,
+/**/ 0x88116DA6, 0x3FD4F4F8,
+/**/ 0x102117B6, 0x3FD8570A,
+/**/ 0x214A7328, 0xBCAB6E89,
+/**/ 0x93A70458, 0x3FD8BC7D,
+/**/ 0x00000000, 0x3FF14000,
+/**/ 0x321A7479, 0x3F58DDC8,
+/**/ 0x00000000, 0x3FD86000,
+/**/ 0xA5DDA5C4, 0x3FF14DDD,
+/**/ 0xD9CD3739, 0x3FCED59F,
+/**/ 0x42C70412, 0x3FD45C85,
+/**/ 0x49C983A8, 0x3FD15964,
+/**/ 0x0EF7ED0B, 0x3FD5899E,
+/**/ 0xBC543499, 0x3FD936FA,
+/**/ 0x7B29F22E, 0x3CAFF50D,
+/**/ 0xB3B9CF50, 0x3FD901A5,
+/**/ 0x00000000, 0x3FF14000,
+/**/ 0xBB4B87E0, 0x3F6BBB4B,
+/**/ 0x00000000, 0x3FD8A000,
+/**/ 0x64AC8172, 0x3FF155A2,
+/**/ 0xDBCA7047, 0x3FCF509C,
+/**/ 0x3055A16F, 0x3FD4A2C4,
+/**/ 0xD25160C7, 0x3FD1C692,
+/**/ 0xF68F9906, 0x3FD6239E,
+/**/ 0x1DFC2EE2, 0x3FDA203D,
+/**/ 0x671EF39F, 0x3CAD2019,
+/**/ 0xA98F2718, 0x3FD946EC,
+/**/ 0x00000000, 0x3FF14000,
+/**/ 0xAC8171A9, 0x3F75A264,
+/**/ 0x00000000, 0x3FD8E000,
+/**/ 0x17D8FF02, 0x3FF15D86,
+/**/ 0x81AAFD5E, 0x3FCFCD44,
+/**/ 0xEE72B776, 0x3FD4EABD,
+/**/ 0x377F943F, 0x3FD236D1,
+/**/ 0x83A56DB7, 0x3FD6C334,
+/**/ 0xC36D6C50, 0x3FDB1345,
+/**/ 0x761537BB, 0xBC7841E5,
+/**/ 0xF024E808, 0x3FD98C52,
+/**/ 0x00000000, 0x3FF14000,
+/**/ 0xD8FF01DE, 0x3F7D8617,
+/**/ 0x00000000, 0x3FD92000,
+/**/ 0x2B5B4A9A, 0x3FF16589,
+/**/ 0xA8C0A8C6, 0x3FD025D0,
+/**/ 0xF524E4B6, 0x3FD5347E,
+/**/ 0xF565EDBD, 0x3FD2AA3B,
+/**/ 0xC98D2842, 0x3FD7689A,
+/**/ 0xB128B4DD, 0x3FDC108F,
+/**/ 0x4452A669, 0xBC8A5EEB,
+/**/ 0x04239878, 0x3FD9D1D9,
+/**/ 0x00000000, 0x3FF18000,
+/**/ 0xA4B56661, 0xBF7A76D4,
+/**/ 0x00000000, 0x3FD96000,
+/**/ 0x0DD68BC8, 0x3FF16DAC,
+/**/ 0x0EC54C3A, 0x3FD065DF,
+/**/ 0x30C58A12, 0x3FD58014,
+/**/ 0xBBCBCCEF, 0x3FD320F0,
+/**/ 0xD218F380, 0x3FD81410,
+/**/ 0xC9371D29, 0x3FDD189C,
+/**/ 0x1D6E6EC7, 0x3C58C3C1,
+/**/ 0x63E8EF18, 0x3FDA177F,
+/**/ 0x00000000, 0x3FF18000,
+/**/ 0x29743866, 0xBF7253F2,
+/**/ 0x00000000, 0x3FD9A000,
+/**/ 0x30AC48A8, 0x3FF175EF,
+/**/ 0x037BA7C0, 0x3FD0A6D3,
+/**/ 0x06EDCD18, 0x3FD5CD8B,
+/**/ 0x7D679188, 0x3FD39B0E,
+/**/ 0xC8128143, 0x3FD8C5D8,
+/**/ 0x39B3613A, 0x3FDE2BF6,
+/**/ 0xC70C9C76, 0xBC874080,
+/**/ 0x8F92A560, 0x3FDA5D46,
+/**/ 0x00000000, 0x3FF18000,
+/**/ 0xA76EB06E, 0xBF64219E,
+/**/ 0x00000000, 0x3FD9E000,
+/**/ 0x08107EEF, 0x3FF17E53,
+/**/ 0x40691386, 0x3FD0E8B2,
+/**/ 0x5BA2319A, 0x3FD61CF1,
+/**/ 0x7FF30656, 0x3FD418B5,
+/**/ 0x24624146, 0x3FD97E38,
+/**/ 0xF30D6589, 0x3FDF4B2C,
+/**/ 0x74DD0C9B, 0xBC8D4AD9,
+/**/ 0x090998F8, 0x3FDAA32F,
+/**/ 0x00000000, 0x3FF18000,
+/**/ 0xF81116BC, 0xBF3ACF7E,
+/**/ 0x00000000, 0x3FDA2000,
+/**/ 0x0B1E7A9D, 0x3FF186D8,
+/**/ 0xA98356F0, 0x3FD12B82,
+/**/ 0x96C051D8, 0x3FD66E55,
+/**/ 0x6D28A49D, 0x3FD49A07,
+/**/ 0xDE14D616, 0x3FDA3D77,
+/**/ 0x13502F53, 0x3FE03B6D,
+/**/ 0x4AD59707, 0x3CA51700,
+/**/ 0x540D3F08, 0x3FDAE939,
+/**/ 0x00000000, 0x3FF18000,
+/**/ 0x79EA752F, 0x3F5B602C,
+/**/ 0x00000000, 0x3FDA6000,
+/**/ 0xB3EE7285, 0x3FF18F7E,
+/**/ 0x4EC4AF40, 0x3FD16F4A,
+/**/ 0xA9B275FD, 0x3FD6C1C6,
+/**/ 0x64B886B9, 0x3FD51F27,
+/**/ 0x9D72A144, 0x3FDB03E4,
+/**/ 0xE7207DD5, 0x3FE0D7CF,
+/**/ 0x8E77D1B2, 0xBCAACE1E,
+/**/ 0xF63F6C78, 0x3FDB2F65,
+/**/ 0x00000000, 0x3FF18000,
+/**/ 0xDCE509F5, 0x3F6EFD67,
+/**/ 0x00000000, 0x3FDAA000,
+/**/ 0x7FABF325, 0x3FF19847,
+/**/ 0x6DD15EDB, 0x3FD1B40F,
+/**/ 0x156D090D, 0x3FD71754,
+/**/ 0x0F44EE42, 0x3FD5A83A,
+/**/ 0xF26149CC, 0x3FDBD1CE,
+/**/ 0x9EBB7D53, 0x3FE17B14,
+/**/ 0x054C177A, 0x3CA18867,
+/**/ 0x773075F8, 0x3FDB75B5,
+/**/ 0x00000000, 0x3FF18000,
+/**/ 0xABF3257B, 0x3F78477F,
+/**/ 0x00000000, 0x3FDAE000,
+/**/ 0xEEAD20E6, 0x3FF1A132,
+/**/ 0x73AFA8F4, 0x3FD1F9D8,
+/**/ 0xF0BA2B44, 0x3FD76F0D,
+/**/ 0xB2776412, 0x3FD63565,
+/**/ 0x8E4B8181, 0x3FDCA78B,
+/**/ 0xDE92725A, 0x3FE22595,
+/**/ 0x225EE470, 0xBCABDA45,
+/**/ 0x606BABE0, 0x3FDBBC28,
+/**/ 0x00000000, 0x3FF1C000,
+/**/ 0x52DF1A7E, 0xBF7ECD11,
+/**/ 0x00000000, 0x3FDB2000,
+/**/ 0x848ADB16, 0x3FF1AA41,
+/**/ 0xFE932ABB, 0x3FD240AB,
+/**/ 0xEED7E85D, 0x3FD7C904,
+/**/ 0x4640B1B3, 0x3FD6C6D2,
+/**/ 0x81D01020, 0x3FDD8573,
+/**/ 0x9938B939, 0x3FE2D7B3,
+/**/ 0x36D76E02, 0x3CA12ECB,
+/**/ 0x3D843430, 0x3FDC02BF,
+/**/ 0x00000000, 0x3FF1C000,
+/**/ 0x7524EA70, 0xBF75BE7B,
+/**/ 0x00000000, 0x3FDB6000,
+/**/ 0xC839C9AC, 0x3FF1B373,
+/**/ 0xDFBC912D, 0x3FD28890,
+/**/ 0x666DE3CA, 0x3FD8254A,
+/**/ 0x8B57457C, 0x3FD75CA9,
+/**/ 0x7E7E55FE, 0x3FDE6BE4,
+/**/ 0x68EC3777, 0x3FE391D3,
+/**/ 0x4D8A80A5, 0xBC9F7EFE,
+/**/ 0x9C2247A0, 0x3FDC497A,
+/**/ 0x00000000, 0x3FF1C000,
+/**/ 0x8C6CA8A7, 0xBF69186F,
+/**/ 0x00000000, 0x3FDBA000,
+/**/ 0x44246029, 0x3FF1BCCA,
+/**/ 0x1D6EB966, 0x3FD2D18E,
+/**/ 0x58DF9E20, 0x3FD883F0,
+/**/ 0x2308FF84, 0x3FD7F717,
+/**/ 0x1CEC1692, 0x3FDF5B41,
+/**/ 0xEFAE7F7E, 0x3FE45460,
+/**/ 0xC247C281, 0xBCACA88A,
+/**/ 0x0C10D428, 0x3FDC905B,
+/**/ 0x00000000, 0x3FF1C000,
+/**/ 0xDCFEB6F6, 0xBF49ADDE,
+/**/ 0x00000000, 0x3FDBE000,
+/**/ 0x8645E0A6, 0x3FF1C645,
+/**/ 0xF4FA598C, 0x3FD31BAA,
+/**/ 0x7A00CDBD, 0x3FD8E509,
+/**/ 0xA876EFA4, 0x3FD89648,
+/**/ 0x93BB3BA0, 0x3FE029F8,
+/**/ 0x3E769492, 0x3FE51FCE,
+/**/ 0xDAC78BA6, 0xBC63BD0A,
+/**/ 0x1F4B8A08, 0x3FDCD761,
+/**/ 0x00000000, 0x3FF1C000,
+/**/ 0x178298DB, 0x3F591619,
+/**/ 0x00000000, 0x3FDC2000,
+/**/ 0x20466A93, 0x3FF1CFE6,
+/**/ 0xDCE16113, 0x3FD366EE,
+/**/ 0x3831A262, 0x3FD948A9,
+/**/ 0xCB5336B7, 0x3FD93A6D,
+/**/ 0xF50362A5, 0x3FE0AB30,
+/**/ 0x440F45E4, 0x3FE5F494,
+/**/ 0x79A811B8, 0xBCA1B23F,
+/**/ 0x6A0D56C8, 0x3FDD1E8D,
+/**/ 0x00000000, 0x3FF1C000,
+/**/ 0x8CD52690, 0x3F6FCC40,
+/**/ 0x00000000, 0x3FDC6000,
+/**/ 0xA798215A, 0x3FF1D9AC,
+/**/ 0x87135170, 0x3FD3B361,
+/**/ 0xC4E92F90, 0x3FD9AEE3,
+/**/ 0x6C3B0A06, 0x3FD9E3B8,
+/**/ 0x439D6983, 0x3FE13183,
+/**/ 0x444347EE, 0x3FE6D333,
+/**/ 0x141D7ADE, 0x3C9E6687,
+/**/ 0x82DF5278, 0x3FDD65E0,
+/**/ 0x00000000, 0x3FF1C000,
+/**/ 0x98215A4D, 0x3F79ACA7,
+/**/ 0x00000000, 0x3FDCA000,
+/**/ 0xB59577B1, 0x3FF1E399,
+/**/ 0xE343E389, 0x3FD4010A,
+/**/ 0x1DB4A57B, 0x3FDA17CE,
+/**/ 0xBAC8CA27, 0x3FDA925C,
+/**/ 0x29AC5009, 0x3FE1BD2C,
+/**/ 0x5806ABBE, 0x3FE7BC33,
+/**/ 0xD953CBEA, 0x3C89743A,
+/**/ 0x02A82420, 0x3FDDAD5B,
+/**/ 0x00000000, 0x3FF20000,
+/**/ 0x6A884EAF, 0xBF7C664A,
+/**/ 0x00000000, 0x3FDCE000,
+/**/ 0xE7A0AD1E, 0x3FF1EDAD,
+/**/ 0x215D62D8, 0x3FD44FF3,
+/**/ 0x15B2742E, 0x3FDA837E,
+/**/ 0x557C3A62, 0x3FDB4691,
+/**/ 0x9ABECCA0, 0x3FE24E6B,
+/**/ 0xF75D3619, 0x3FE8B024,
+/**/ 0x953C1F21, 0xBC60A42B,
+/**/ 0x84BBE168, 0x3FDDF4FD,
+/**/ 0x00000000, 0x3FF20000,
+/**/ 0x5F52E269, 0xBF725218,
+/**/ 0x00000000, 0x3FDD2000,
+/**/ 0xDF448BE1, 0x3FF1F7E9,
+/**/ 0xB4103D45, 0x3FD4A022,
+/**/ 0x5F90F152, 0x3FDAF20A,
+/**/ 0x6B992E26, 0x3FDC008F,
+/**/ 0x07C18F30, 0x3FE2E585,
+/**/ 0x8DCE89C2, 0x3FE9AFA1,
+/**/ 0xE5B4E0DD, 0xBC8B90A5,
+/**/ 0xA6EC6EF0, 0x3FDE3CC8,
+/**/ 0x00000000, 0x3FF20000,
+/**/ 0x76E83DEE, 0xBF602C41,
+/**/ 0x00000000, 0x3FDD6000,
+/**/ 0x42567651, 0x3FF2024E,
+/**/ 0x53815E48, 0x3FD4F1A2,
+/**/ 0x98189F26, 0x3FDB638A,
+/**/ 0xE11F7BB9, 0x3FDCC092,
+/**/ 0x968E1C3C, 0x3FE382BF,
+/**/ 0x1A4C4551, 0x3FEABB4C,
+/**/ 0xC65EE1E9, 0xBCAC384D,
+/**/ 0x099A6620, 0x3FDE84BD,
+/**/ 0x00000000, 0x3FF20000,
+/**/ 0xB3B2877E, 0x3F427212,
+/**/ 0x00000000, 0x3FDDA000,
+/**/ 0xBB19D366, 0x3FF20CDB,
+/**/ 0x00190520, 0x3FD5447B,
+/**/ 0x514AC3D7, 0x3FDBD817,
+/**/ 0x7501B24E, 0x3FDD86DA,
+/**/ 0x5D5DCC91, 0x3FE42666,
+/**/ 0xDB834BBA, 0x3FEBD3D1,
+/**/ 0x64307FE4, 0xBCA62892,
+/**/ 0x4FC685E0, 0x3FDECCDB,
+/**/ 0x00000000, 0x3FF20000,
+/**/ 0x33A6CD00, 0x3F69B776,
+/**/ 0x00000000, 0x3FDDE000,
+/**/ 0xF864EB38, 0x3FF21792,
+/**/ 0x0573E0CA, 0x3FD598B6,
+/**/ 0x1E1D9C05, 0x3FDC4FCA,
+/**/ 0xE9C2FB44, 0x3FDE53A7,
+/**/ 0xA26E99AF, 0x3FE4D0C8,
+/**/ 0x09A8A359, 0x3FECF9EB,
+/**/ 0xD9AFA9E0, 0xBCADF861,
+/**/ 0x1F23B3F8, 0x3FDF1524,
+/**/ 0x00000000, 0x3FF20000,
+/**/ 0x64EB3836, 0x3F7792F8,
+/**/ 0x00000000, 0x3FDE2000,
+/**/ 0xADC744F8, 0x3FF22274,
+/**/ 0xFD785957, 0x3FD5EE5C,
+/**/ 0x9EE01B3A, 0x3FDCCABD,
+/**/ 0x30A7B7B5, 0x3FDF2740,
+/**/ 0x202E0D0D, 0x3FE5823A,
+/**/ 0x9EEBE829, 0x3FEE2E5B,
+/**/ 0xE2EA9787, 0xBC93BB42,
+/**/ 0x202994B8, 0x3FDF5D98,
+/**/ 0x00000000, 0x3FF24000,
+/**/ 0x38BB0864, 0xBF7D8B52,
+/**/ 0x00000000, 0x3FDE6000,
+/**/ 0x93B1990A, 0x3FF22D81,
+/**/ 0xD3920D0F, 0x3FD64579,
+/**/ 0x8E4FE1FE, 0x3FDD490D,
+/**/ 0xCBD3ED59, 0x3FE000F5,
+/**/ 0x4E45F774, 0x3FE63B13,
+/**/ 0x2FD578CE, 0x3FEF71F4,
+/**/ 0xC0E1AC47, 0x3CA8AD1C,
+/**/ 0xFE27BF60, 0x3FDFA637,
+/**/ 0x00000000, 0x3FF24000,
+/**/ 0x4E66F5A1, 0xBF727E6C,
+/**/ 0x00000000, 0x3FDEA000,
+/**/ 0x679F6AE1, 0x3FF238BA,
+/**/ 0xC815A8F5, 0x3FD69E16,
+/**/ 0xCF6CD4C9, 0x3FDDCAD6,
+/**/ 0xFD2ADE38, 0x3FE071FA,
+/**/ 0xAFEE9630, 0x3FE6FBB1,
+/**/ 0x6A7ACB82, 0x3FF062C9,
+/**/ 0x35D3555B, 0x3C7E3580,
+/**/ 0x67599588, 0x3FDFEF04,
+/**/ 0x00000000, 0x3FF24000,
+/**/ 0x82547B6F, 0xBF5D1661,
+/**/ 0x00000000, 0x3FDEE000,
+/**/ 0xEC425F4B, 0x3FF2441F,
+/**/ 0x73CF67B4, 0x3FD6F83E,
+/**/ 0x7C1691BA, 0x3FDE5037,
+/**/ 0x7AF8190E, 0x3FE0E6D7,
+/**/ 0x27F29078, 0x3FE7C478,
+/**/ 0x13B5FFDC, 0x3FF11512,
+/**/ 0x5FEBA301, 0x3C6CC7A1,
+/**/ 0x067D6224, 0x3FE01BFF,
+/**/ 0x00000000, 0x3FF24000,
+/**/ 0x097D2BDC, 0x3F507FB1,
+/**/ 0x00000000, 0x3FDF2000,
+/**/ 0xE9AF6533, 0x3FF24FB2,
+/**/ 0xCBBEA804, 0x3FD753FB,
+/**/ 0xF480E731, 0x3FDED94E,
+/**/ 0x106D90C6, 0x3FE15FB5,
+/**/ 0x52DAD430, 0x3FE895CF,
+/**/ 0x28FAAE13, 0x3FF1D052,
+/**/ 0xE849F35A, 0xBCA50976,
+/**/ 0xD1AE3B48, 0x3FE04092,
+/**/ 0x00000000, 0x3FF24000,
+/**/ 0x5ECA665D, 0x3F6F65D3,
+/**/ 0x00000000, 0x3FDF6000,
+/**/ 0x2D8DC7FA, 0x3FF25B74,
+/**/ 0x25013475, 0x3FD7B15A,
+/**/ 0xEF8D6387, 0x3FDF663D,
+/**/ 0xA2DF4BFF, 0x3FE1DCBF,
+/**/ 0xE7C2E4E5, 0x3FE97025,
+/**/ 0x1C2AE4AB, 0x3FF29510,
+/**/ 0xB02A3D13, 0x3CA4C8DC,
+/**/ 0xF0FD9FD8, 0x3FE0653D,
+/**/ 0x00000000, 0x3FF24000,
+/**/ 0x8DC7FA40, 0x3F7B742D,
+/**/ 0x00000000, 0x3FDFA000,
+/**/ 0x8B4843F2, 0x3FF26764,
+/**/ 0x38F10257, 0x3FD81065,
+/**/ 0x8C1920B1, 0x3FDFF726,
+/**/ 0x5148D4E4, 0x3FE25E25,
+/**/ 0x2061C3FE, 0x3FEA53F1,
+/**/ 0x5B9300E5, 0x3FF363DB,
+/**/ 0x624B8B97, 0xBCA47774,
+/**/ 0xC1CAE338, 0x3FE08A00,
+/**/ 0x00000000, 0x3FF28000,
+/**/ 0xB7BC0E50, 0xBF789B74,
+/**/ 0x00000000, 0x3FDFE000,
+/**/ 0xDC4036F2, 0x3FF27384,
+/**/ 0x29775C8F, 0x3FD87129,
+/**/ 0x31A78776, 0x3FE04616,
+/**/ 0x95EE0C65, 0x3FE2E416,
+/**/ 0x28E05161, 0x3FEB41AD,
+/**/ 0xFF1DF849, 0x3FF43D4C,
+/**/ 0xBABBA919, 0x3CA5941C,
+/**/ 0xA3221C1C, 0x3FE0AEDB,
+/**/ 0x00000000, 0x3FF28000,
+/**/ 0x7F921C27, 0xBF68F647,
+/**/ 0x00000000, 0x3FE01000,
+/**/ 0x00030888, 0x3FF27FD6,
+/**/ 0x8598A1B5, 0x3FD8D3B2,
+/**/ 0x4E0BC755, 0x3FE092BA,
+/**/ 0x6A428EEC, 0x3FE36EC6,
+/**/ 0x44F514C9, 0x3FEC39C0,
+/**/ 0x18C4EF3A, 0x3FF52205,
+/**/ 0xA852F235, 0x4000C1D1,
+/**/ 0xD00F64B8, 0x3CA78082,
+/**/ 0xF5C846F8, 0x3FE0D3CE,
+/**/ 0x00000000, 0x3FF28000,
+/**/ 0x7BBC39DF, 0xBF04FFFE,
+/**/ 0x00000000, 0x3FE03000,
+/**/ 0xDC81E6D7, 0x3FF28C58,
+/**/ 0x4E3BF356, 0x3FD9380E,
+/**/ 0xFFC646A7, 0x3FE0E192,
+/**/ 0x6D34756D, 0x3FE3FE6A,
+/**/ 0x139ABC91, 0x3FED3CEF,
+/**/ 0xF80111C0, 0x3FF612B8,
+/**/ 0x3467C688, 0x4001A33C,
+/**/ 0x34F59445, 0xBC8A9954,
+/**/ 0x1C47D550, 0x3FE0F8DB,
+/**/ 0x00000000, 0x3FF28000,
+/**/ 0x03CDAE3F, 0x3F68B1B9,
+/**/ 0x00000000, 0x3FE05000,
+/**/ 0x5E4BF713, 0x3FF2990E,
+/**/ 0xFB326E9E, 0x3FD99E49,
+/**/ 0x8779391A, 0x3FE132B4,
+/**/ 0x0C2FE325, 0x3FE4933B,
+/**/ 0xAEAAE1D0, 0x3FEE4BB1,
+/**/ 0x1F4377BD, 0x3FF71020,
+/**/ 0x1C886605, 0x40029271,
+/**/ 0x7130CE99, 0xBCA33AB1,
+/**/ 0x7AFDAF10, 0x3FE11E00,
+/**/ 0x00000000, 0x3FF28000,
+/**/ 0x4BF712C7, 0x3F790E5E,
+/**/ 0x00000000, 0x3FE07000,
+/**/ 0x78CB1A3B, 0x3FF2A5F7,
+/**/ 0x8081C5D1, 0x3FDA0673,
+/**/ 0x0D5E6499, 0x3FE18634,
+/**/ 0xAEDD6BE6, 0x3FE52D73,
+/**/ 0x1CF1AAA0, 0x3FEF66A5,
+/**/ 0x4834E5A9, 0x3FF81B02,
+/**/ 0xFCE48906, 0x40039066,
+/**/ 0x6BFB4C85, 0xBCA34E4F,
+/**/ 0x7826AAD4, 0x3FE1433F,
+/**/ 0x00000000, 0x3FF2C000,
+/**/ 0x34E5C574, 0xBF7A0887,
+/**/ 0x00000000, 0x3FE09000,
+/**/ 0x268368DB, 0x3FF2B315,
+/**/ 0x53F655B7, 0x3FDA7099,
+/**/ 0xAD9032EC, 0x3FE1DC27,
+/**/ 0xE5F88E23, 0x3FE5CD52,
+/**/ 0x0A68BDFC, 0x3FF04738,
+/**/ 0x2F057820, 0x3FF93435,
+/**/ 0xDAE8A2FC, 0x40049E27,
+/**/ 0xFAA44565, 0x3C86832C,
+/**/ 0x7BED8260, 0x3FE16898,
+/**/ 0x00000000, 0x3FF2C000,
+/**/ 0xF92E4A41, 0xBF69D5B2,
+/**/ 0x00000000, 0x3FE0B000,
+/**/ 0x69558A9E, 0x3FF2C068,
+/**/ 0x73011B64, 0x3FDADCCA,
+/**/ 0x8511146A, 0x3FE234A6,
+/**/ 0x9D6CBF3C, 0x3FE6731A,
+/**/ 0xD575F00A, 0x3FF0E1E1,
+/**/ 0xADEA17E7, 0x3FFA5C9D,
+/**/ 0xD9123E7C, 0x4005BCD2,
+/**/ 0xCC2AE1E4, 0xBCA23E4F,
+/**/ 0xF07948F0, 0x3FE18E0B,
+/**/ 0x00000000, 0x3FF2C000,
+/**/ 0x62A7614A, 0x3F1A1A55,
+/**/ 0x00000000, 0x3FE0D000,
+/**/ 0x4AC410C6, 0x3FF2CDF2,
+/**/ 0x68E63D97, 0x3FDB4B16,
+/**/ 0xBFA256B2, 0x3FE28FC8,
+/**/ 0x51FDF05A, 0x3FE71F10,
+/**/ 0x0753C882, 0x3FF183AE,
+/**/ 0xF1921090, 0x3FFB9530,
+/**/ 0x14F942BC, 0x4006ED9E,
+/**/ 0x89C77FA3, 0x3CA27879,
+/**/ 0x41FC691C, 0x3FE1B39A,
+/**/ 0x00000000, 0x3FF2C000,
+/**/ 0x88218CD6, 0x3F6BE495,
+/**/ 0x00000000, 0x3FE0F000,
+/**/ 0xDC3BFD25, 0x3FF2DBB3,
+/**/ 0x55413207, 0x3FDBBB8D,
+/**/ 0xA6792BF1, 0x3FE2EDA7,
+/**/ 0x4AC4E230, 0x3FE7D17D,
+/**/ 0xAAE6CB05, 0x3FF22D00,
+/**/ 0xC9028E71, 0x3FFCDEF5,
+/**/ 0xB40C626C, 0x400831D8,
+/**/ 0x9873F484, 0x3C953FEF,
+/**/ 0xDEC430C0, 0x3FE1D943,
+/**/ 0x00000000, 0x3FF2C000,
+/**/ 0x3BFD24A1, 0x3F7BB3DC,
+/**/ 0x00000000, 0x3FE11000,
+/**/ 0x3760A19B, 0x3FF2E9AE,
+/**/ 0xF2E3E2EB, 0x3FDC2E3F,
+/**/ 0xAFE1CD38, 0x3FE34E5D,
+/**/ 0xD6CE0B26, 0x3FE88AAE,
+/**/ 0x2C4B06C6, 0x3FF2DE44,
+/**/ 0x138813D2, 0x3FFE3B06,
+/**/ 0x23FD5612, 0x40098AED,
+/**/ 0xB7AF0E54, 0xBC91EC19,
+/**/ 0x3748F114, 0x3FE1FF09,
+/**/ 0x00000000, 0x3FF30000,
+/**/ 0x9F5E657E, 0xBF7651C8,
+/**/ 0x00000000, 0x3FE13000,
+/**/ 0x7E5B072B, 0x3FF2F7E2,
+/**/ 0x9F169C4D, 0x3FDCA33F,
+/**/ 0x8FE1EB56, 0x3FE3B206,
+/**/ 0x8F30E1B7, 0x3FE94AF6,
+/**/ 0xCFCF9887, 0x3FF397E9,
+/**/ 0x4FB7F25F, 0x3FFFAA90,
+/**/ 0x94745D90, 0x400AFA63,
+/**/ 0x2A139390, 0x3C96955C,
+/**/ 0xBE3EBA20, 0x3FE224EA,
+/**/ 0x00000000, 0x3FF30000,
+/**/ 0x49F1AA85, 0xBF603B03,
+/**/ 0x00000000, 0x3FE15000,
+/**/ 0xDC2D0E76, 0x3FF30651,
+/**/ 0x613EF408, 0x3FDD1A9E,
+/**/ 0x49ED083D, 0x3FE418BF,
+/**/ 0x9DFD1E23, 0x3FEA12AA,
+/**/ 0x32B75F76, 0x3FF45A6A,
+/**/ 0xA7673F47, 0x4000976C,
+/**/ 0xB046AC6A, 0x400C81E4,
+/**/ 0x7D1BEB80, 0x3C879FF7,
+/**/ 0xE8A6B8B0, 0x3FE24AE8,
+/**/ 0x00000000, 0x3FF30000,
+/**/ 0xB439D90E, 0x3F594770,
+/**/ 0x00000000, 0x3FE17000,
+/**/ 0x85087ECD, 0x3FF314FD,
+/**/ 0xF2F45390, 0x3FDD946E,
+/**/ 0x43BEDA05, 0x3FE482A6,
+/**/ 0x0A640DD7, 0x3FEAE226,
+/**/ 0xD6A3D695, 0x3FF52645,
+/**/ 0x08098FE0, 0x4001649F,
+/**/ 0x9D2BADE7, 0x400E233C,
+/**/ 0x4E5F8348, 0x3C9E948C,
+/**/ 0x2DE13E58, 0x3FE27104,
+/**/ 0x00000000, 0x3FF30000,
+/**/ 0x087ECD1A, 0x3F74FD85,
+/**/ 0x00000000, 0x3FE19000,
+/**/ 0xB6AA3C67, 0x3FF323E6,
+/**/ 0xC8894828, 0x3FDE10C4,
+/**/ 0x59718389, 0x3FE4EFDB,
+/**/ 0x0A8D7622, 0x3FEBB9C9,
+/**/ 0xB8A62B12, 0x3FF5FC05,
+/**/ 0xE4296831, 0x40023D9A,
+/**/ 0x49C0B830, 0x400FE05E,
+/**/ 0xC1189DE8, 0x3CA19107,
+/**/ 0x07C07BCC, 0x3FE2973D,
+/**/ 0x00000000, 0x3FF34000,
+/**/ 0x55C3993D, 0xBF7C1949,
+/**/ 0x00000000, 0x3FE1B000,
+/**/ 0xB8B9E20B, 0x3FF3330E,
+/**/ 0x1A11468B, 0x3FDE8FB4,
+/**/ 0xF2E740E1, 0x3FE5607F,
+/**/ 0x5B91DB14, 0x3FEC99F9,
+/**/ 0xF50C5FAA, 0x3FF6DC3B,
+/**/ 0x0CFAC1C7, 0x4003232A,
+/**/ 0x894EFD30, 0x4010DDB3,
+/**/ 0x3783D916, 0xBCA7760F,
+/**/ 0xF29BF5F0, 0x3FE2BD93,
+/**/ 0x00000000, 0x3FF34000,
+/**/ 0x8C3BEA7F, 0xBF69E28E,
+/**/ 0x00000000, 0x3FE1D000,
+/**/ 0xDD2DFE6D, 0x3FF34276,
+/**/ 0xECEB226B, 0x3FDF1151,
+/**/ 0x1AA123CE, 0x3FE5D4B7,
+/**/ 0xA01F65F8, 0x3FED8322,
+/**/ 0x791CE583, 0x3FF7C784,
+/**/ 0xC15A6B9C, 0x40041625,
+/**/ 0x64280FEB, 0x4011DB51,
+/**/ 0x28CA6DBB, 0x3CA10463,
+/**/ 0x6D64BEAC, 0x3FE2E409,
+/**/ 0x00000000, 0x3FF34000,
+/**/ 0x6FF364E1, 0x3F43B6E9,
+/**/ 0x00000000, 0x3FE1F000,
+/**/ 0x80B539C7, 0x3FF35220,
+/**/ 0x1DD91A82, 0x3FDF95B4,
+/**/ 0x961EA9CA, 0x3FE64CA5,
+/**/ 0xC65B3B2F, 0x3FEE75B6,
+/**/ 0xC412E59F, 0x3FF8BE85,
+/**/ 0x02462A51, 0x40051778,
+/**/ 0x109FC81B, 0x4012EA48,
+/**/ 0x9F70CA98, 0x3C959E4C,
+/**/ 0xF9BA7B3C, 0x3FE30A9D,
+/**/ 0x00000000, 0x3FF34000,
+/**/ 0xB539C6A2, 0x3F722080,
+/**/ 0x00000000, 0x3FE21000,
+/**/ 0x0B24ACDA, 0x3FF3620D,
+/**/ 0xB5D803B6, 0x3FE00E78,
+/**/ 0xFFE457FB, 0x3FE6C871,
+/**/ 0x759EF386, 0x3FEF722E,
+/**/ 0xB8D0E874, 0x3FF9C1F1,
+/**/ 0x080FB06E, 0x4006281D,
+/**/ 0xD1F69DF7, 0x40140BF2,
+/**/ 0xCBFAF37F, 0xBC8489EA,
+/**/ 0x1C0141BC, 0x3FE33152,
+/**/ 0x00000000, 0x3FF38000,
+/**/ 0xDB532667, 0xBF7DF2F4,
+/**/ 0x00000000, 0x3FE23000,
+/**/ 0xEFEBB76D, 0x3FF3723D,
+/**/ 0xC153FC4C, 0x3FE05390,
+/**/ 0xE34A2666, 0x3FE74844,
+/**/ 0xC260A400, 0x3FF03C84,
+/**/ 0x81E70F01, 0x3FFAD286,
+/**/ 0xDBC4A78E, 0x40074924,
+/**/ 0x8BBCA2E0, 0x401541CB,
+/**/ 0x7BEA8472, 0x3C9C7528,
+/**/ 0x5B7858F8, 0x3FE35826,
+/**/ 0x00000000, 0x3FF38000,
+/**/ 0x28912510, 0xBF6B8420,
+/**/ 0x00000000, 0x3FE25000,
+/**/ 0xAE8DA9C7, 0x3FF382B4,
+/**/ 0x842CABB9, 0x3FE09A2E,
+/**/ 0xDA356141, 0x3FE7CC48,
+/**/ 0xBCD4FDB8, 0x3FF0C567,
+/**/ 0x89B62C32, 0x3FFBF10F,
+/**/ 0x18ADC4B9, 0x40087BB5,
+/**/ 0xC516F6F1, 0x40168D6D,
+/**/ 0x2E37D6A3, 0xBC933A6B,
+/**/ 0x4251E5AC, 0x3FE37F1B,
+/**/ 0x00000000, 0x3FF38000,
+/**/ 0x6D4E3A7A, 0x3F45A574,
+/**/ 0x00000000, 0x3FE27000,
+/**/ 0xD3219A4C, 0x3FF39372,
+/**/ 0xD4394437, 0x3FE0E25E,
+/**/ 0xACE4CC74, 0x3FE854AA,
+/**/ 0x0981EE13, 0x3FF15408,
+/**/ 0x88AA5332, 0x3FFD1E66,
+/**/ 0xDA3BD18F, 0x4009C10A,
+/**/ 0xFFE4AE21, 0x4017F099,
+/**/ 0x7B588ABE, 0xBCAED56B,
+/**/ 0x5DCB911C, 0x3FE3A631,
+/**/ 0x00000000, 0x3FF38000,
+/**/ 0x219A4BA9, 0x3F7372D3,
+/**/ 0x00000000, 0x3FE29000,
+/**/ 0xF6D8C6BC, 0x3FF3A479,
+/**/ 0x11197A32, 0x3FE12C2F,
+/**/ 0x73F949D5, 0x3FE8E199,
+/**/ 0xEE7A481D, 0x3FF1E8B1,
+/**/ 0xABBE8828, 0x3FFE5B74,
+/**/ 0xDB3D83BC, 0x400B1A7C,
+/**/ 0x6DC46100, 0x40196D39,
+/**/ 0xACD8F69C, 0x3CA7798C,
+/**/ 0x3E4835E8, 0x3FE3CD69,
+/**/ 0x00000000, 0x3FF3C000,
+/**/ 0x27394391, 0xBF7B8609,
+/**/ 0x00000000, 0x3FE2B000,
+/**/ 0xC08BE738, 0x3FF3B5CB,
+/**/ 0x2B5CB6B7, 0x3FE177AD,
+/**/ 0xBCE90EB1, 0x3FE97346,
+/**/ 0x68EC7F04, 0x3FF283B6,
+/**/ 0xD5B8ED04, 0x3FFFA933,
+/**/ 0xCBCDFF9A, 0x400C897D,
+/**/ 0x0E4ABF55, 0x401B0562,
+/**/ 0x1EE42043, 0x3C881FF6,
+/**/ 0x776AA08C, 0x3FE3F4C3,
+/**/ 0x00000000, 0x3FF3C000,
+/**/ 0xE8319086, 0xBF64687E,
+/**/ 0x00000000, 0x3FE2D000,
+/**/ 0xE54FE05E, 0x3FF3C769,
+/**/ 0xAC1A81A0, 0x3FE1C4E7,
+/**/ 0xB10FA326, 0x3FEA09E6,
+/**/ 0x840F679B, 0x3FF3256B,
+/**/ 0xFEE9EF1A, 0x40008457,
+/**/ 0xE4146343, 0x400E0F9E,
+/**/ 0x433496A9, 0x401CBB5B,
+/**/ 0x59F087C0, 0xBCA57A4C,
+/**/ 0xA03171A8, 0x3FE41C40,
+/**/ 0x00000000, 0x3FF3C000,
+/**/ 0x3F81773D, 0x3F5DA795,
+/**/ 0x00000000, 0x3FE2F000,
+/**/ 0x291249DC, 0x3FF3D956,
+/**/ 0xBD044AC9, 0x3FE213ED,
+/**/ 0x3F917FA8, 0x3FEAA5B0,
+/**/ 0xB7380A79, 0x3FF3CE2C,
+/**/ 0x576AFAE8, 0x40013D84,
+/**/ 0xBAAB74F3, 0x400FAE92,
+/**/ 0xE9129E4A, 0x401E91A2,
+/**/ 0x0CEC83F7, 0x3C905671,
+/**/ 0x53143194, 0x3FE443E1,
+/**/ 0x00000000, 0x3FF3C000,
+/**/ 0x1249DBC4, 0x3F795629,
+/**/ 0x00000000, 0x3FE31000,
+/**/ 0x5F3E4715, 0x3FF3EB92,
+/**/ 0x30F965D1, 0x3FE264CF,
+/**/ 0x4A4F2FB2, 0x3FEB46DD,
+/**/ 0x4BC2E94F, 0x3FF47E5B,
+/**/ 0x54F8F9EB, 0x400200B9,
+/**/ 0x33305D9F, 0x4010B418,
+/**/ 0x826EF167, 0x40204579,
+/**/ 0xE06EBCAE, 0xBC9737A0,
+/**/ 0x2E21A53C, 0x3FE46BA6,
+/**/ 0x00000000, 0x3FF40000,
+/**/ 0xC1B8EB04, 0xBF746DA0,
+/**/ 0x00000000, 0x3FE33000,
+/**/ 0x6B6A38D5, 0x3FF3FE20,
+/**/ 0x8D26C7A0, 0x3FE2B79C,
+/**/ 0xD62978F8, 0x3FEBEDAA,
+/**/ 0xCB8CC6D1, 0x3FF5365E,
+/**/ 0xD894AF54, 0x4002CE9C,
+/**/ 0x79F7C63E, 0x40119F3B,
+/**/ 0x0C8E7B9E, 0x40215524,
+/**/ 0x13DC9A80, 0x3CA485D0,
+/**/ 0xD31F754C, 0x3FE4938F,
+/**/ 0x00000000, 0x3FF40000,
+/**/ 0x5C72B1E7, 0xBF3DF949,
+/**/ 0x00000000, 0x3FE35000,
+/**/ 0x420ED8E7, 0x3FF41102,
+/**/ 0x12BCE2B2, 0x3FE30C67,
+/**/ 0x3EDE345E, 0x3FEC9A59,
+/**/ 0x78CAB466, 0x3FF5F6A5,
+/**/ 0x3EAD62EE, 0x4003A7E1,
+/**/ 0x9CB9A228, 0x401299C8,
+/**/ 0x1BE749B0, 0x40227974,
+/**/ 0xC6A9831F, 0x3CAFE28F,
+/**/ 0xE7AB3A40, 0x3FE4BB9E,
+/**/ 0x00000000, 0x3FF40000,
+/**/ 0x0ED8E776, 0x3F710242,
+/**/ 0x00000000, 0x3FE37000,
+/**/ 0xE9485B43, 0x3FF42439,
+/**/ 0xC946E033, 0x3FE36340,
+/**/ 0x6ECC5A7E, 0x3FED4D2C,
+/**/ 0xD027255A, 0x3FF6BFA4,
+/**/ 0x72504BE1, 0x40048D46,
+/**/ 0x09445BD5, 0x4013A4ED,
+/**/ 0x749E19F9, 0x4023B435,
+/**/ 0xEAAAF53E, 0xBC40E7E5,
+/**/ 0x155D0070, 0x3FE4E3D4,
+/**/ 0x00000000, 0x3FF44000,
+/**/ 0xB7A4BD36, 0xBF7BC616,
+/**/ 0x00000000, 0x3FE39000,
+/**/ 0x79A23C23, 0x3FF437C9,
+/**/ 0x89AF6A9D, 0x3FE3BC3C,
+/**/ 0x1AF553BA, 0x3FEE066C,
+/**/ 0x1622569A, 0x3FF791DA,
+/**/ 0x1B18AE2B, 0x40057F9B,
+/**/ 0x88BFF240, 0x4014C1F0,
+/**/ 0x019A4522, 0x40250761,
+/**/ 0xFDFCCB13, 0x3CA4C238,
+/**/ 0x09EB58F8, 0x3FE50C30,
+/**/ 0x00000000, 0x3FF44000,
+/**/ 0xBB87B9E1, 0xBF606D0C,
+/**/ 0x00000000, 0x3FE3B000,
+/**/ 0x1EEE6F35, 0x3FF44BB3,
+/**/ 0x0A004D1D, 0x3FE4176E,
+/**/ 0x0399FA54, 0x3FEEC664,
+/**/ 0xF0CFD106, 0x3FF86DCA,
+/**/ 0xE8C80E97, 0x40067FBD,
+/**/ 0xD9CD2D79, 0x4015F237,
+/**/ 0xC8076345, 0x40267521,
+/**/ 0xB089F7AF, 0x3CAEC756,
+/**/ 0x77510D94, 0x3FE534B3,
+/**/ 0x00000000, 0x3FF44000,
+/**/ 0xDCDE698F, 0x3F67663D,
+/**/ 0x00000000, 0x3FE3D000,
+/**/ 0x1928B1BE, 0x3FF45FF9,
+/**/ 0xE9EB53E9, 0x3FE474E9,
+/**/ 0x39DB03B6, 0x3FEF8D64,
+/**/ 0x0F298B87, 0x3FF95406,
+/**/ 0xFFC72AB6, 0x40078E9E,
+/**/ 0x941456E7, 0x40173747,
+/**/ 0x74A71E71, 0x4027FFDA,
+/**/ 0xFE7483B3, 0xBCAEED93,
+/**/ 0x13F48EC0, 0x3FE55D5F,
+/**/ 0x00000000, 0x3FF44000,
+/**/ 0x28B1BDFF, 0x3F7FF919,
+/**/ 0x00000000, 0x3FE3F000,
+/**/ 0xBD66D0C4, 0x3FF4749D,
+/**/ 0xC02C2013, 0x3FE4D4C5,
+/**/ 0xB56768CC, 0x3FF02DE0,
+/**/ 0xDF53A7BD, 0x3FFA4523,
+/**/ 0x8A357386, 0x4008AD41,
+/**/ 0x5E392799, 0x401892C7,
+/**/ 0x97746ACD, 0x4029AA2B,
+/**/ 0xB4A71E44, 0x3C924F0A,
+/**/ 0x9AD13548, 0x3FE58633,
+/**/ 0x00000000, 0x3FF48000,
+/**/ 0x325E775E, 0xBF66C485,
+/**/ 0x00000000, 0x3FE41000,
+/**/ 0x76D6C491, 0x3FF489A3,
+/**/ 0x28D40829, 0x3FE53718,
+/**/ 0x98450D83, 0x3FF098EA,
+/**/ 0x55526E3B, 0x3FFB41C7,
+/**/ 0x719F540E, 0x4009DCBD,
+/**/ 0x805D08D1, 0x401A0685,
+/**/ 0xA5142633, 0x402B76FA,
+/**/ 0xF1FF56FC, 0x3C2AD9A7,
+/**/ 0xCBA27244, 0x3FE5AF31,
+/**/ 0x00000000, 0x3FF48000,
+/**/ 0xAD892100, 0x3F6346ED,
+/**/ 0x00000000, 0x3FE43000,
+/**/ 0xC7CB94CC, 0x3FF49F0C,
+/**/ 0xD492AA1E, 0x3FE59BF8,
+/**/ 0x34D2CA82, 0x3FF107FF,
+/**/ 0xC3DF9E51, 0x3FFC4A9E,
+/**/ 0x45F5874E, 0x400B1E41,
+/**/ 0xDEB92648, 0x401B947A,
+/**/ 0xD903D532, 0x402D6979,
+/**/ 0x04C67F5E, 0x3CA43231,
+/**/ 0x6B1109A4, 0x3FE5D85A,
+/**/ 0x00000000, 0x3FF48000,
+/**/ 0xCB94CC1A, 0x3F7F0CC7,
+/**/ 0x00000000, 0x3FE45000,
+/**/ 0x4ADA0BF0, 0x3FF4B4DC,
+/**/ 0x990F861F, 0x3FE60380,
+/**/ 0xCBEC7542, 0x3FF17B50,
+/**/ 0xC93CFE8F, 0x3FFD6064,
+/**/ 0x56F36FE3, 0x400C7314,
+/**/ 0x696E5374, 0x401D3ECF,
+/**/ 0x1778AF1D, 0x402F8531,
+/**/ 0x31EBDA84, 0x3C7A53BF,
+/**/ 0x42E27660, 0x3FE601AE,
+/**/ 0x00000000, 0x3FF4C000,
+/**/ 0x4BE81F81, 0xBF66476A,
+/**/ 0x00000000, 0x3FE47000,
+/**/ 0xB4065600, 0x3FF4CB14,
+/**/ 0x826ADA4F, 0x3FE66DC9,
+/**/ 0xA3298D4D, 0x3FF1F314,
+/**/ 0x52191CB4, 0x3FFE83E1,
+/**/ 0x05CA69AF, 0x400DDC99,
+/**/ 0x1079C46A, 0x401F07DF,
+/**/ 0xF9440EB0, 0x4030E703,
+/**/ 0x5817D0DD, 0x3CA495E1,
+/**/ 0x222A98A0, 0x3FE62B2E,
+/**/ 0x00000000, 0x3FF4C000,
+/**/ 0x0CAC00D4, 0x3F662968,
+/**/ 0x00000000, 0x3FE49000,
+/**/ 0xD203BDC9, 0x3FF4E1B8,
+/**/ 0xE5FE0976, 0x3FE6DAEE,
+/**/ 0x3C44F71E, 0x3FF26F83,
+/**/ 0xB4D92F91, 0x3FFFB5EA,
+/**/ 0x55A779C8, 0x400F5C4F,
+/**/ 0xA66A7536, 0x4020791F,
+/**/ 0x7DCE5D75, 0x40322428,
+/**/ 0x964F770B, 0x3CADE7E8,
+/**/ 0xDD7FD12C, 0x3FE654DA,
+/**/ 0x00000000, 0x3FF50000,
+/**/ 0xFC42374B, 0xBF7E472D,
+/**/ 0x00000000, 0x3FE4B000,
+/**/ 0x8F87D541, 0x3FF4F8CB,
+/**/ 0x767620C4, 0x3FE74B0D,
+/**/ 0x9126F083, 0x3FF2F0D8,
+/**/ 0x73F08794, 0x40007BB3,
+/**/ 0xE1419117, 0x401079EB,
+/**/ 0xA917F81E, 0x40218062,
+/**/ 0x48444DEE, 0x40337C6B,
+/**/ 0xF4061E08, 0x3C907A41,
+/**/ 0x4F31AF70, 0x3FE67EB5,
+/**/ 0x00000000, 0x3FF50000,
+/**/ 0xE0AAFA85, 0xBF5CD1C1,
+/**/ 0x00000000, 0x3FE4D000,
+/**/ 0xF4B2718C, 0x3FF5104F,
+/**/ 0x59659939, 0x3FE7BE43,
+/**/ 0x5502EAE6, 0x3FF37754,
+/**/ 0x6AE0AC51, 0x400124A6,
+/**/ 0x33524D17, 0x4011527B,
+/**/ 0x7FBF7A2D, 0x40229B46,
+/**/ 0xAD716768, 0x4034F274,
+/**/ 0x7C204EA8, 0xBC9C610F,
+/**/ 0x57825A6C, 0x3FE6A8BE,
+/**/ 0x00000000, 0x3FF50000,
+/**/ 0xB2718C01, 0x3F704FF4,
+/**/ 0x00000000, 0x3FE4F000,
+/**/ 0x288C017D, 0x3FF52849,
+/**/ 0x3E6D3F7F, 0x3FE834B0,
+/**/ 0x3B0747CB, 0x3FF4033A,
+/**/ 0xE946B196, 0x4001D652,
+/**/ 0x3C2F8CB4, 0x401238CB,
+/**/ 0x53E520C1, 0x4023CB80,
+/**/ 0x607BC0F6, 0x40368938,
+/**/ 0xCC053597, 0xBC84274C,
+/**/ 0xDCE2DFB8, 0x3FE6D2F6,
+/**/ 0x00000000, 0x3FF54000,
+/**/ 0x73FE8364, 0xBF77B6D7,
+/**/ 0x00000000, 0x3FE51000,
+/**/ 0x729BE713, 0x3FF540BA,
+/**/ 0x781F49A2, 0x3FE8AE75,
+/**/ 0x432AC103, 0x3FF494D2,
+/**/ 0x9B0015B6, 0x40029147,
+/**/ 0x156B74E9, 0x40132DE7,
+/**/ 0xE8362EC8, 0x402512F0,
+/**/ 0xC8D2E0F8, 0x403843FE,
+/**/ 0xBB3ACC53, 0xBC8F55DB,
+/**/ 0xCC3296F0, 0x3FE6FD5F,
+/**/ 0x00000000, 0x3FF54000,
+/**/ 0x7CE2565E, 0x3F274E53,
+/**/ 0x00000000, 0x3FE53000,
+/**/ 0x3C98A101, 0x3FF559A7,
+/**/ 0x16C3163D, 0x3FE92BB6,
+/**/ 0x0DB2C44D, 0x3FF52C69,
+/**/ 0x0F4546B8, 0x4003561E,
+/**/ 0x7F099A82, 0x401432F1,
+/**/ 0x831E227A, 0x402673A9,
+/**/ 0xA02BBCD5, 0x403A266F,
+/**/ 0xAEA9CB9D, 0x3CA279A8,
+/**/ 0x1901CB44, 0x3FE727FA,
+/**/ 0x00000000, 0x3FF54000,
+/**/ 0x98A10084, 0x3F79A73C,
+/**/ 0x00000000, 0x3FE55000,
+/**/ 0x1433B9BD, 0x3FF57313,
+/**/ 0x0523E7B2, 0x3FE9AC97,
+/**/ 0x361F7393, 0x3FF5CA50,
+/**/ 0xB0F40825, 0x4004257B,
+/**/ 0x46286025, 0x40154927,
+/**/ 0x781495B4, 0x4027EFF1,
+/**/ 0x0A1139F1, 0x403C349E,
+/**/ 0x8B6015DA, 0xBC5D2C66,
+/**/ 0xBDD7E0E0, 0x3FE752C6,
+/**/ 0x00000000, 0x3FF58000,
+/**/ 0x988C865F, 0xBF69D9D7,
+/**/ 0x00000000, 0x3FE57000,
+/**/ 0xAD039E07, 0x3FF58D01,
+/**/ 0x279933CD, 0x3FEA313F,
+/**/ 0xB63D93A6, 0x3FF66EDE,
+/**/ 0xD836441A, 0x40050012,
+/**/ 0xF23D152C, 0x401671E1,
+/**/ 0x65D3A1DD, 0x40298A4C,
+/**/ 0x5EBDBF39, 0x403E7316,
+/**/ 0x7AAA4996, 0xBCAE5B6C,
+/**/ 0xBC7D2FA0, 0x3FE77DC6,
+/**/ 0x00000000, 0x3FF58000,
+/**/ 0x073C0E86, 0x3F6A035A,
+/**/ 0x00000000, 0x3FE59000,
+/**/ 0xE28DADB6, 0x3FF5A776,
+/**/ 0x7D7BE2B5, 0x3FEAB9D7,
+/**/ 0x5234C8A9, 0x3FF71A71,
+/**/ 0xF873554C, 0x4005E6A3,
+/**/ 0xC1F33F9B, 0x4017AE9A,
+/**/ 0x4310046E, 0x402B4581,
+/**/ 0xF64B03E7, 0x40407376,
+/**/ 0xB3AB0542, 0xBCA3F39B,
+/**/ 0x1E48D158, 0x3FE7A8FB,
+/**/ 0x00000000, 0x3FF5C000,
+/**/ 0x725249CA, 0xBF78891D,
+/**/ 0x00000000, 0x3FE5B000,
+/**/ 0xBA730F9B, 0x3FF5C276,
+/**/ 0x454127C3, 0x3FEB468B,
+/**/ 0x0E816ADB, 0x3FF7CD6B,
+/**/ 0xEDDAC837, 0x4006D9FE,
+/**/ 0x0209E3B7, 0x401900EE,
+/**/ 0x57489C7E, 0x402D24A2,
+/**/ 0x7F810E14, 0x4041CAEA,
+/**/ 0x24F9675B, 0xBC84F20E,
+/**/ 0xF472A690, 0x3FE7D464,
+/**/ 0x00000000, 0x3FF5C000,
+/**/ 0x987CD623, 0x3F43B5D3,
+/**/ 0x00000000, 0x3FE5D000,
+/**/ 0x66C30CDC, 0x3FF5DE05,
+/**/ 0x23798D1A, 0x3FEBD788,
+/**/ 0xB0E567D8, 0x3FF88835,
+/**/ 0x6E46660A, 0x4007DB04,
+/**/ 0xCA07CAA5, 0x401A6A9E,
+/**/ 0x41ECEF64, 0x402F2B16,
+/**/ 0xC36F367B, 0x40434315,
+/**/ 0x542594A6, 0xBCA08CA1,
+/**/ 0x5869D9E8, 0x3FE80005,
+/**/ 0x00000000, 0x3FF5C000,
+/**/ 0xC30CDBD9, 0x3F7E0566,
+/**/ 0x00000000, 0x3FE5F000,
+/**/ 0x4875FA03, 0x3FF5FA27,
+/**/ 0x4CF96D63, 0x3FEC6CFE,
+/**/ 0x4D7B8313, 0x3FF94B42,
+/**/ 0xA1B04592, 0x4008EAA7,
+/**/ 0x2C5A9D87, 0x401BED9B,
+/**/ 0x1BC92F68, 0x4030AE51,
+/**/ 0x685FBD64, 0x4044DF8C,
+/**/ 0x30FE6378, 0xBCAC07A8,
+/**/ 0x6C30303C, 0x3FE82BDD,
+/**/ 0x00000000, 0x3FF60000,
+/**/ 0x2817F40C, 0xBF5762DE,
+/**/ 0x00000000, 0x3FE61000,
+/**/ 0xF213FCD6, 0x3FF616E0,
+/**/ 0xB47784FF, 0x3FED0720,
+/**/ 0xE13C6707, 0x3FFA1709,
+/**/ 0xE70B2E72, 0x400A09EF,
+/**/ 0xE976AAD9, 0x401D8C00,
+/**/ 0xD1AE1EA8, 0x4031DEBA,
+/**/ 0x6424341F, 0x4046A453,
+/**/ 0xA65D40B1, 0x3CA13E53,
+/**/ 0x5ABA79E8, 0x3FE857EE,
+/**/ 0x00000000, 0x3FF60000,
+/**/ 0x13FCD614, 0x3F76E0F2,
+/**/ 0x00000000, 0x3FE63000,
+/**/ 0x2A8B4ED8, 0x3FF63437,
+/**/ 0x3BF69915, 0x3FEDA625,
+/**/ 0xFB6DF86F, 0x3FFAEC0D,
+/**/ 0xCAF2D64B, 0x400B39FA,
+/**/ 0xB7E2DC06, 0x401F4822,
+/**/ 0xB12537E3, 0x4033291B,
+/**/ 0xAF3EF0D1, 0x404895F0,
+/**/ 0x71E7ED76, 0x3CAEA588,
+/**/ 0x5856807C, 0x3FE88439,
+/**/ 0x00000000, 0x3FF64000,
+/**/ 0xE9624F1C, 0xBF6791AA,
+/**/ 0x00000000, 0x3FE65000,
+/**/ 0xF039F5E3, 0x3FF6522E,
+/**/ 0xEA588E54, 0x3FEE4A44,
+/**/ 0x77A3F8A4, 0x3FFBCAD9,
+/**/ 0x3669F2F2, 0x400C7BFE,
+/**/ 0x1AEA54A4, 0x40209247,
+/**/ 0x6B866959, 0x4034900A,
+/**/ 0x620634CF, 0x404AB97D,
+/**/ 0xDA91B0FD, 0x3C948649,
+/**/ 0xA316D3A0, 0x3FE8B0BF,
+/**/ 0x00000000, 0x3FF64000,
+/**/ 0x39F5E2AD, 0x3F722EF0,
+/**/ 0x00000000, 0x3FE67000,
+/**/ 0x7C2F4FC3, 0x3FF670CD,
+/**/ 0x2583CF60, 0x3FEEF3BC,
+/**/ 0x4A2E1684, 0x3FFCB401,
+/**/ 0xDCB9F8FB, 0x400DD14A,
+/**/ 0x4E164373, 0x40219209,
+/**/ 0x8FC171BC, 0x40361669,
+/**/ 0xA46B7BE1, 0x404D14BA,
+/**/ 0xBBDFE65A, 0xBCABAC31,
+/**/ 0x8344E08C, 0x3FE8DD82,
+/**/ 0x00000000, 0x3FF68000,
+/**/ 0xA1607A77, 0xBF6E6507,
+/**/ 0x00000000, 0x3FE69000,
+/**/ 0x45AA3C85, 0x3FF69018,
+/**/ 0xF18FBD18, 0x3FEFA2CA,
+/**/ 0x610C140E, 0x3FFDA825,
+/**/ 0xF08895E1, 0x400F3B4E,
+/**/ 0x272CD203, 0x4022A4E4,
+/**/ 0x60C4A0EE, 0x4037BF71,
+/**/ 0xEC79351D, 0x404FAE29,
+/**/ 0x3E22FB0A, 0x3C6BF5BB,
+/**/ 0x4BD9C858, 0x3FE90A83,
+/**/ 0x00000000, 0x3FF68000,
+/**/ 0xAA3C8533, 0x3F701845,
+/**/ 0x00000000, 0x3FE6B000,
+/**/ 0x05D92E4E, 0x3FF6B015,
+/**/ 0x9ABD20D8, 0x3FF02BDA,
+/**/ 0x9BC5CC13, 0x3FFEA7F1,
+/**/ 0x94AFB2BB, 0x40105DCC,
+/**/ 0xB382B54A, 0x4023CC8C,
+/**/ 0x19C28EAE, 0x40398EBB,
+/**/ 0x8F7609B5, 0x40514694,
+/**/ 0xF66137E5, 0x3C9CD223,
+/**/ 0x5AFE73AC, 0x3FE937C3,
+/**/ 0x00000000, 0x3FF6C000,
+/**/ 0x4DA36334, 0xBF6FD5F4,
+/**/ 0x00000000, 0x3FE6D000,
+/**/ 0xBBE1EF2B, 0x3FF6D0C9,
+/**/ 0x82FBDD29, 0x3FF08961,
+/**/ 0xDCD403EC, 0x3FFFB41E,
+/**/ 0x121D0023, 0x401129EE,
+/**/ 0xB34159B2, 0x40250AE5,
+/**/ 0xDB5CEAC4, 0x403B884D,
+/**/ 0xA0B334B0, 0x4052DD09,
+/**/ 0xD8F14BF9, 0xBC96BF1D,
+/**/ 0x1A936D24, 0x3FE96544,
+/**/ 0x00000000, 0x3FF6C000,
+/**/ 0xE1EF2AEE, 0x3F70C9BB,
+/**/ 0x00000000, 0x3FE6F000,
+/**/ 0xB13786CF, 0x3FF6F23C,
+/**/ 0x7B7FC134, 0x3FF0EA20,
+/**/ 0x1BD0D518, 0x400066BA,
+/**/ 0x159EC945, 0x401202F9,
+/**/ 0x16FF868A, 0x40266205,
+/**/ 0x87398014, 0x403DB0AD,
+/**/ 0x47D58711, 0x40549F33,
+/**/ 0x54B11A28, 0x3C8D858F,
+/**/ 0x00C1184C, 0x3FE99307,
+/**/ 0x00000000, 0x3FF70000,
+/**/ 0x90F2626A, 0xBF6B869D,
+/**/ 0x00000000, 0x3FE71000,
+/**/ 0x7E455603, 0x3FF71474,
+/**/ 0x3A65655F, 0x3FF14E40,
+/**/ 0x1F4AA7A1, 0x4000FA64,
+/**/ 0xB946C70A, 0x4012E9F0,
+/**/ 0x3CC53936, 0x4027D43A,
+/**/ 0xEE087279, 0x40400675,
+/**/ 0x77313CEF, 0x40569278,
+/**/ 0x772D6E62, 0xBCAB1BA1,
+/**/ 0x9090E874, 0x3FE9C10D,
+/**/ 0x00000000, 0x3FF70000,
+/**/ 0x455602D3, 0x3F74747E,
+/**/ 0x00000000, 0x3FE73000,
+/**/ 0x0F773DEC, 0x3FF73778,
+/**/ 0x1288B243, 0x3FF1B5EC,
+/**/ 0x3A853FA5, 0x40019581,
+/**/ 0x6D2743E5, 0x4013DFF0,
+/**/ 0x09B4B924, 0x40296415,
+/**/ 0x19A59D1F, 0x4041515E,
+/**/ 0xF3E53877, 0x4058BD01,
+/**/ 0xFC348BAE, 0x3C962269,
+/**/ 0x5A90493C, 0x3FE9EF59,
+/**/ 0x00000000, 0x3FF74000,
+/**/ 0x11842743, 0xBF610FE1,
+/**/ 0x00000000, 0x3FE75000,
+/**/ 0xAAA78140, 0x3FF75B4E,
+/**/ 0x28B49576, 0x3FF22152,
+/**/ 0x74D66746, 0x4002388E,
+/**/ 0xA43083A8, 0x4014E62E,
+/**/ 0x02885ED7, 0x402B146E,
+/**/ 0x29A3BC2C, 0x4042BC45,
+/**/ 0xCDAFE7E5, 0x405B25D8,
+/**/ 0xF03F8A74, 0x3CA8862D,
+/**/ 0xFD7DFBD8, 0x3FEA1DEB,
+/**/ 0x00000000, 0x3FF74000,
+/**/ 0xA7813FBA, 0x3F7B4EAA,
+/**/ 0x00000000, 0x3FE77000,
+/**/ 0xF4FC0008, 0x3FF77FFF,
+/**/ 0xADE499E4, 0x3FF290A3,
+/**/ 0xFF22FE11, 0x4002E412,
+/**/ 0xD7A17943, 0x4015FDFF,
+/**/ 0x8AF79AEF, 0x402CE86F,
+/**/ 0x6F8EDF86, 0x40444ACA,
+/**/ 0x29CF9F92, 0x405DD50A,
+/**/ 0xC5865233, 0x3CA49DB0,
+/**/ 0x2702BD90, 0x3FEA4CC7,
+/**/ 0x00000000, 0x3FF78000,
+/**/ 0xF08268E1, 0xBE6607FF,
+/**/ 0x00000000, 0x3FE79000,
+/**/ 0xF93D7FBC, 0x3FF7A593,
+/**/ 0x1F293A81, 0x3FF30415,
+/**/ 0x31649EA4, 0x400398A1,
+/**/ 0xED75DA1E, 0x401728D9,
+/**/ 0x7B1736CA, 0x402EE3A0,
+/**/ 0x036EC9D4, 0x40460106,
+/**/ 0xB3E5A09F, 0x406069E8,
+/**/ 0x4E8EB882, 0xBCA79BBD,
+/**/ 0x94762100, 0x3FEA7BEC,
+/**/ 0x00000000, 0x3FF7C000,
+/**/ 0xC280445C, 0xBF7A6C06,
+/**/ 0x00000000, 0x3FE7B000,
+/**/ 0x2EB4E536, 0x3FF7CC13,
+/**/ 0x8BD25D7D, 0x3FF37BDE,
+/**/ 0xA51DF797, 0x400456D7,
+/**/ 0x103AF33E, 0x40186858,
+/**/ 0x21121C2E, 0x403084F8,
+/**/ 0x9D7C6DE3, 0x4047E39A,
+/**/ 0xEF4C9A12, 0x40621664,
+/**/ 0x39DB72FF, 0x3C804D2D,
+/**/ 0x13B099B0, 0x3FEAAB5E,
+/**/ 0x00000000, 0x3FF7C000,
+/**/ 0x69CA6C2F, 0x3F68265D,
+/**/ 0x00000000, 0x3FE7D000,
+/**/ 0x809BA1CD, 0x3FF7F386,
+/**/ 0xE298B2EB, 0x3FF3F83B,
+/**/ 0x708A6ABE, 0x40051F62,
+/**/ 0x090F77AB, 0x4019BE3F,
+/**/ 0x6C13BF38, 0x4031AFE2,
+/**/ 0x65FF02A8, 0x4049F7CA,
+/**/ 0xDA840FE0, 0x4063F614,
+/**/ 0xAB5D1A54, 0xBCA7BDE9,
+/**/ 0x83EBD320, 0x3FEADB1D,
+/**/ 0x00000000, 0x3FF80000,
+/**/ 0xC8BC6562, 0xBF68F2FE,
+/**/ 0x00000000, 0x3FE7F000,
+/**/ 0x562E1E24, 0x3FF81BF7,
+/**/ 0x469724DB, 0x3FF4796D,
+/**/ 0x86E67917, 0x4005F2FC,
+/**/ 0x2F5AE582, 0x401B2C82,
+/**/ 0x65EE1919, 0x4032F505,
+/**/ 0x4744D220, 0x404C438F,
+/**/ 0xD66309FD, 0x40661003,
+/**/ 0xFC828894, 0x3C8470C8,
+/**/ 0xD6B287DC, 0x3FEB0B2C,
+/**/ 0x00000000, 0x3FF80000,
+/**/ 0x2E1E23E5, 0x3F7BF756,
+/**/ 0x00000000, 0x3FE81000,
+/**/ 0x9B70AB1D, 0x3FF8456F,
+/**/ 0x6D01A674, 0x3FF4FFB7,
+/**/ 0x42D7B667, 0x4006D271,
+/**/ 0x05DD4055, 0x401CB549,
+/**/ 0xE490CA9B, 0x40345723,
+/**/ 0x47C5589B, 0x404ECD17,
+/**/ 0x3D6DB036, 0x40686C46,
+/**/ 0xECF23C2E, 0x4084044D,
+/**/ 0x0D173A5F, 0xBC7F0990,
+/**/ 0x10E12D3C, 0x3FEB3B8E,
+/**/ 0x00000000, 0x3FF84000,
+/**/ 0xC2AC733C, 0x3F55BE6D,
+/**/ 0x00000000, 0x3FE83000,
+/**/ 0xCAB97B9D, 0x3FF86FF9,
+/**/ 0x04A71B42, 0x3FF58B64,
+/**/ 0x20C0FB6E, 0x4007BE9E,
+/**/ 0x9B426297, 0x401E5AF5,
+/**/ 0x013C40EE, 0x4035D958,
+/**/ 0x2215E48C, 0x4050CEA9,
+/**/ 0xB8C0669A, 0x406B146B,
+/**/ 0xFB8EB0FE, 0x40868C96,
+/**/ 0x1FCCBAD4, 0x3CA55848,
+/**/ 0x4BB8EA98, 0x3FEB6C43,
+/**/ 0x00000000, 0x3FF88000,
+/**/ 0x46846319, 0xBF700635,
+/**/ 0x00000000, 0x3FE85000,
+/**/ 0xF71469BF, 0x3FF89BA0,
+/**/ 0x28717EFA, 0x3FF61CC2,
+/**/ 0xAFB7BAF7, 0x4008B874,
+/**/ 0xEC7286DB, 0x40201015,
+/**/ 0x8329A469, 0x40377F1F,
+/**/ 0x2927F0DD, 0x40525E49,
+/**/ 0x5AE80CD9, 0x406E135C,
+/**/ 0x40DF64FD, 0x40897364,
+/**/ 0x1ED91B03, 0x3C89F53B,
+/**/ 0xB6067ABC, 0x3FEB9D4E,
+/**/ 0x00000000, 0x3FF88000,
+/**/ 0x1469BF33, 0x3F7BA0F7,
+/**/ 0x00000000, 0x3FE87000,
+/**/ 0xD797DABF, 0x3FF8C870,
+/**/ 0xDE42D55F, 0x3FF6B426,
+/**/ 0xC0E06552, 0x4009C0FC,
+/**/ 0xEB059907, 0x402103EC,
+/**/ 0x49A75AA7, 0x40394C6A,
+/**/ 0xB2A496D0, 0x40541A81,
+/**/ 0x209CB693, 0x4070BAEE,
+/**/ 0x285808C5, 0x408CC860,
+/**/ 0x9B0DC6F3, 0xBCAE6D8C,
+/**/ 0x955EC1C4, 0x3FEBCEB2,
+/**/ 0x00000000, 0x3FF8C000,
+/**/ 0x2FB57EE7, 0x3F60E1AF,
+/**/ 0x00000000, 0x3FE89000,
+/**/ 0xD3C502F4, 0x3FF8F675,
+/**/ 0xA3BFB2E4, 0x3FF751ED,
+/**/ 0xDE3987BC, 0x400AD956,
+/**/ 0xB30AAD0A, 0x40220AA0,
+/**/ 0x16220014, 0x403B45AB,
+/**/ 0xEC84429C, 0x40560929,
+/**/ 0x0D747939, 0x4072A569,
+/**/ 0x5407F41E, 0x40904F10,
+/**/ 0xFC269962, 0xBC675CEB,
+/**/ 0x4773138C, 0x3FEC0071,
+/**/ 0x00000000, 0x3FF90000,
+/**/ 0x75FA1750, 0xBF631458,
+/**/ 0x00000000, 0x3FE8B000,
+/**/ 0x111125DF, 0x3FF925BD,
+/**/ 0x0AD2B4C2, 0x3FF7F679,
+/**/ 0x1359A3C8, 0x400C02BF,
+/**/ 0x88857C21, 0x40232601,
+/**/ 0x2515D90E, 0x403D6FEB,
+/**/ 0xD421145E, 0x405830FA,
+/**/ 0xFD789544, 0x4074D1D6,
+/**/ 0x4B30EBF1, 0x40928561,
+/**/ 0x7876F9D2, 0x3CA13E7B,
+/**/ 0x437F5E74, 0x3FEC328D,
+/**/ 0x00000000, 0x3FF94000,
+/**/ 0xEEDA20A4, 0xBF7A42EE,
+/**/ 0x00000000, 0x3FE8D000,
+/**/ 0x81B9477B, 0x3FF95654,
+/**/ 0x67F87779, 0x3FF8A233,
+/**/ 0x14665EA0, 0x400D3E90,
+/**/ 0x5A415747, 0x40245815,
+/**/ 0x1D7511C0, 0x403FD0E1,
+/**/ 0x01EC30FB, 0x405A99B6,
+/**/ 0xDD7EE7A1, 0x40774A72,
+/**/ 0x5C2F1724, 0x40951454,
+/**/ 0x774A5205, 0x3C8185B3,
+/**/ 0x1BD4AD0C, 0x3FEC6509,
+/**/ 0x00000000, 0x3FF94000,
+/**/ 0xB9477AC0, 0x3F765481,
+/**/ 0x00000000, 0x3FE8F000,
+/**/ 0xF50630B5, 0x3FF9884A,
+/**/ 0x94B35A8D, 0x3FF9558F,
+/**/ 0xD1A32B1D, 0x400E8E46,
+/**/ 0x0AEC68DB, 0x4025A31F,
+/**/ 0xFD21A759, 0x40413785,
+/**/ 0xF56DFCA6, 0x405D4C53,
+/**/ 0xF89C0F5F, 0x407A1B45,
+/**/ 0xC92C8CF3, 0x40980BB3,
+/**/ 0xFEB6A05E, 0xBC8696E8,
+/**/ 0x7F82B8CC, 0x3FEC97E7,
+/**/ 0x00000000, 0x3FF98000,
+/**/ 0x0C6169C6, 0x3F6095EA,
+/**/ 0x00000000, 0x3FE91000,
+/**/ 0x292BC29F, 0x3FF9BBB0,
+/**/ 0xC8E3D76B, 0x3FFA1109,
+/**/ 0x8873C480, 0x400FF386,
+/**/ 0xDE619C77, 0x402709A6,
+/**/ 0x5A9417B9, 0x4042A8E9,
+/**/ 0xBFE20B57, 0x4060299D,
+/**/ 0xE1225431, 0x407D5283,
+/**/ 0xC225406C, 0x409B7E74,
+/**/ 0x74F396DB, 0xBC879431,
+/**/ 0x3C239888, 0x3FECCB2B,
+/**/ 0x00000000, 0x3FF9C000,
+/**/ 0x50F5839F, 0xBF513F5B,
+/**/ 0x00000000, 0x3FE93000,
+/**/ 0xDEF4783D, 0x3FF9F094,
+/**/ 0x8E300736, 0x3FFAD528,
+/**/ 0xB2D4D4EE, 0x4010B80E,
+/**/ 0x3F3D0057, 0x40288E84,
+/**/ 0xD20263C0, 0x404440D4,
+/**/ 0x26E14927, 0x4061DD42,
+/**/ 0x5EF13D09, 0x4080807D,
+/**/ 0xFE9E94BE, 0x409F836C,
+/**/ 0xE5FD9D2D, 0xBC813C84,
+/**/ 0x3FCCF104, 0x3FECFED7,
+/**/ 0x00000000, 0x3FFA0000,
+/**/ 0x170F854B, 0xBF6ED642,
+/**/ 0x00000000, 0x3FE95000,
+/**/ 0xEF70C9F9, 0x3FFA270A,
+/**/ 0xD12662D9, 0x3FFBA27D,
+/**/ 0xE8433B59, 0x40118304,
+/**/ 0x1B4DD8D9, 0x402A34E9,
+/**/ 0x58AA354C, 0x4046041F,
+/**/ 0x87EB035B, 0x4063C823,
+/**/ 0x7F89A6B6, 0x40829D4E,
+/**/ 0xB4BED54D, 0x40A21B1A,
+/**/ 0xFD8283D4, 0x3C855D66,
+/**/ 0x9B2A7684, 0x3FED32EE,
+/**/ 0x00000000, 0x3FFA4000,
+/**/ 0x8F3606B9, 0xBF78F510,
+/**/ 0x00000000, 0x3FE97000,
+/**/ 0x63EA127F, 0x3FFA5F25,
+/**/ 0x1460C218, 0x3FFC79A8,
+/**/ 0x3D14975C, 0x40125BC0,
+/**/ 0x2249DB66, 0x402C006F,
+/**/ 0xED0AEFCD, 0x4047F856,
+/**/ 0x2E2028D0, 0x4065F27F,
+/**/ 0x6CE59595, 0x40850B95,
+/**/ 0x18C497E2, 0x40A4DC23,
+/**/ 0x76BA54CA, 0x3C8BDFAE,
+/**/ 0x83C60554, 0x3FED6774,
+/**/ 0x00000000, 0x3FFA4000,
+/**/ 0xEA127F53, 0x3F7F2563,
+/**/ 0x00000000, 0x3FE99000,
+/**/ 0x9061CEFE, 0x3FFA98F8,
+/**/ 0xCAA1F466, 0x3FFD5B53,
+/**/ 0xA92630E8, 0x40134379,
+/**/ 0x41E37357, 0x402DF527,
+/**/ 0xD7DE2305, 0x404A23DF,
+/**/ 0x1911C50F, 0x406865FE,
+/**/ 0xD5CE543D, 0x4087D981,
+/**/ 0x2134A322, 0x40A8192E,
+/**/ 0x4FE6DAC8, 0xBC915CF9,
+/**/ 0x56821F74, 0x3FED9C6C,
+/**/ 0x00000000, 0x3FFA8000,
+/**/ 0x61CEFDBB, 0x3F78F890,
+/**/ 0x00000000, 0x3FE9B000,
+/**/ 0x30F0DACC, 0x3FFAD49A,
+/**/ 0xDDBFEE70, 0x3FFE483C,
+/**/ 0xC4418459, 0x40143B8C,
+/**/ 0xE6E7E816, 0x40300BD5,
+/**/ 0x02EE200E, 0x404C8E1A,
+/**/ 0x83038A03, 0x406B2DFC,
+/**/ 0xD987E3D9, 0x408B1814,
+/**/ 0x8827CEFA, 0x40ABEB1E,
+/**/ 0xE22AFCE0, 0x3CA8829A,
+/**/ 0x9A4C39D0, 0x3FEDD1D9,
+/**/ 0x00000000, 0x3FFAC000,
+/**/ 0xF0DACB86, 0x3F749A30,
+/**/ 0x00000000, 0x3FE9D000,
+/**/ 0x8A66E40D, 0x3FFB1221,
+/**/ 0x692DC10A, 0x3FFF4130,
+/**/ 0x64621A80, 0x4015457C,
+/**/ 0xED2A1AB4, 0x4031369A,
+/**/ 0xBC003A70, 0x404F3F8D,
+/**/ 0x462E99D6, 0x406E57E1,
+/**/ 0xC53F5717, 0x408EDBC2,
+/**/ 0x0A71E453, 0x40B0383D,
+/**/ 0xBEDD86A9, 0x3C90AF9F,
+/**/ 0x030CF708, 0x3FEE07C0,
+/**/ 0x00000000, 0x3FFB0000,
+/**/ 0x66E40CBE, 0x3F72218A,
+/**/ 0x00000000, 0x3FE9F000,
+/**/ 0x8E9927E5, 0x3FFB51A7,
+/**/ 0x581637B3, 0x40002387,
+/**/ 0xF5B2C17E, 0x401662F7,
+/**/ 0x36EAC07E, 0x40327DDB,
+/**/ 0xC70D9C43, 0x40512110,
+/**/ 0x88C52943, 0x4070F9C4,
+/**/ 0xB1AB4848, 0x40919E9E,
+/**/ 0xB1EC7695, 0x40B2E76B,
+/**/ 0x5E9F6FD9, 0x3CAA2400,
+/**/ 0x74DD3C64, 0x3FEE3E23,
+/**/ 0x00000000, 0x3FFB4000,
+/**/ 0x9927E571, 0x3F71A78E,
+/**/ 0x00000000, 0x3FEA1000,
+/**/ 0x04E0F95F, 0x3FFB9347,
+/**/ 0xAC8DC27B, 0x4000AD66,
+/**/ 0xAE05A580, 0x401795E1,
+/**/ 0x299AA0A0, 0x4033E4FA,
+/**/ 0xA33AB75C, 0x4052D0AD,
+/**/ 0x39D64C89, 0x407309E5,
+/**/ 0x154C34C4, 0x40942D39,
+/**/ 0x59D15B1D, 0x40B61A59,
+/**/ 0x114BE565, 0xBCAFC899,
+/**/ 0x0787FD30, 0x3FEE7508,
+/**/ 0x00000000, 0x3FFB8000,
+/**/ 0xE0F95E8B, 0x3F734704,
+/**/ 0x00000000, 0x3FEA3000,
+/**/ 0xB75F37A1, 0x3FFBD71C,
+/**/ 0xFC9006E1, 0x40013EBC,
+/**/ 0xC48D2C09, 0x4018E055,
+/**/ 0xC2C8C9CD, 0x40356FD7,
+/**/ 0x6198B971, 0x4054B557,
+/**/ 0x9680F9AF, 0x4075678C,
+/**/ 0x8AF946DD, 0x40972BE5,
+/**/ 0xE1B531F9, 0x40B9EDE4,
+/**/ 0xE4527544, 0xBC447F69,
+/**/ 0x0A61AD1C, 0x3FEEAC72,
+/**/ 0x00000000, 0x3FFBC000,
+/**/ 0x5F37A0DF, 0x3F771CB7,
+/**/ 0x00000000, 0x3FEA5000,
+/**/ 0xA5B24F80, 0x3FFC1D47,
+/**/ 0x7EB9F789, 0x4001D81E,
+/**/ 0xDF42B6B7, 0x401A44B2,
+/**/ 0xB4766752, 0x403722E5,
+/**/ 0xECFADFF0, 0x4056D6EE,
+/**/ 0x8B1EB8D5, 0x40782028,
+/**/ 0xCA840144, 0x409AB0E2,
+/**/ 0xE2126BBF, 0x40BE8614,
+/**/ 0x2CC624E2, 0xBC8D9A93,
+/**/ 0x087F8D20, 0x3FEEE466,
+/**/ 0x00000000, 0x3FFC0000,
+/**/ 0xB24F8064, 0x3F7D47A5,
+/**/ 0x00000000, 0x3FEA7000,
+/**/ 0x3DE98207, 0x3FFC65E9,
+/**/ 0x811F641B, 0x40027A2E,
+/**/ 0xF223266D, 0x401BC5A3,
+/**/ 0xA6ECBE29, 0x40390340,
+/**/ 0xC3D499AF, 0x40593EB6,
+/**/ 0xAD8CC2F1, 0x407B43D9,
+/**/ 0xA519B816, 0x409ED77C,
+/**/ 0x5B3B703B, 0x40C2080A,
+/**/ 0xE993C3DD, 0x3C7B187D,
+/**/ 0xCD5A7CE8, 0x3FEF1CE8,
+/**/ 0x00000000, 0x3FFC8000,
+/**/ 0x167DF937, 0xBF7A16C2,
+/**/ 0x00000000, 0x3FEA9000,
+/**/ 0x9CA2F05E, 0x3FFCB125,
+/**/ 0x54FC4C95, 0x400325A1,
+/**/ 0xD9C5FF75, 0x401D662B,
+/**/ 0x8E93577D, 0x403B16CE,
+/**/ 0xE0E3029E, 0x405BF79A,
+/**/ 0x04BCDF91, 0x407EE612,
+/**/ 0x31EFE3F1, 0x40A1E0AC,
+/**/ 0x85DF051C, 0x40C56267,
+/**/ 0x2D0BC06E, 0xBCAD6122,
+/**/ 0x69EAB2F0, 0x3FEF55FF,
+/**/ 0x00000000, 0x3FFCC000,
+/**/ 0xBA1F43E4, 0xBF6DB4C6,
+/**/ 0x00000000, 0x3FEAB000,
+/**/ 0xD56B9F55, 0x3FFCFF23,
+/**/ 0x86149A3B, 0x4003DB3E,
+/**/ 0x0B8D0DAD, 0x401F29B3,
+/**/ 0x40E9D1A7, 0x403D6463,
+/**/ 0x619D6679, 0x405F0E89,
+/**/ 0x92CF3FBC, 0x40818F2E,
+/**/ 0x844E51BD, 0x40A4CC10,
+/**/ 0xF3A9EB60, 0x40C9762D,
+/**/ 0xEF4B1E02, 0x3CA20E79,
+/**/ 0x3A4BC01C, 0x3FEF8FAF,
+/**/ 0x00000000, 0x3FFD0000,
+/**/ 0x8C156248, 0xBF2B8552,
+/**/ 0x00000000, 0x3FEAD000,
+/**/ 0x44AAD4F2, 0x3FFD500E,
+/**/ 0x6B85DB68, 0x40049BE3,
+/**/ 0xE558F351, 0x40208A0B,
+/**/ 0xC1BCC632, 0x403FF3EC,
+/**/ 0x2A555E45, 0x40614970,
+/**/ 0xDD057F33, 0x408404AE,
+/**/ 0x22610A18, 0x40A847D9,
+/**/ 0x3C7AA2B4, 0x40CE7146,
+/**/ 0x53CA14EC, 0xBC9571D0,
+/**/ 0xEBFAA348, 0x3FEFC9FD,
+/**/ 0x00000000, 0x3FFD4000,
+/**/ 0xAAD4F267, 0x3F700E44,
+/**/ 0x00000000, 0x3FEAF000,
+/**/ 0xEC9EDC5A, 0x3FFDA412,
+/**/ 0x22B6D908, 0x40056886,
+/**/ 0xB605B3B4, 0x402194E0,
+/**/ 0x9338560C, 0x40416754,
+/**/ 0x34B16169, 0x40634B7B,
+/**/ 0x3B1BAF9C, 0x4086E508,
+/**/ 0xFB9DFBF5, 0x40AC7475,
+/**/ 0xF4B4BB01, 0x40D2473E,
+/**/ 0xE9F06EFC, 0x3CA82B31,
+/**/ 0xC2613F02, 0x3FF00278,
+/**/ 0x00000000, 0x3FFDC000,
+/**/ 0x6123A5D1, 0xBF7BED13,
+/**/ 0x00000000, 0x3FEB1000,
+/**/ 0xDF3AE0DB, 0x3FFDFB63,
+/**/ 0x08AD38CF, 0x40064239,
+/**/ 0xAA166573, 0x4022B7DB,
+/**/ 0x38210D3E, 0x4042FFB4,
+/**/ 0xFB634456, 0x40659862,
+/**/ 0xEE8F3E34, 0x408A45B4,
+/**/ 0xD39A6C6F, 0x40B0BD59,
+/**/ 0x2B4867E8, 0x40D60CCD,
+/**/ 0x1CBB85B3, 0xBCA6097F,
+/**/ 0x3537E800, 0x3FF02048,
+/**/ 0x00000000, 0x3FFE0000,
+/**/ 0x147C93ED, 0xBF527083,
+/**/ 0x00000000, 0x3FEB3000,
+/**/ 0xB70F5F72, 0x3FFE5637,
+/**/ 0xCA935102, 0x40072A2E,
+/**/ 0x43559218, 0x4023F5DE,
+/**/ 0xB4E19CA3, 0x4044C96E,
+/**/ 0x1272DDA3, 0x40683D62,
+/**/ 0xC6BFAAED, 0x408E4135,
+/**/ 0x099FB249, 0x40B3C717,
+/**/ 0xD5294F7D, 0x40DABA6D,
+/**/ 0xC91FFA21, 0x3CA488B1,
+/**/ 0xB5B309E0, 0x3FF03E70,
+/**/ 0x00000000, 0x3FFE4000,
+/**/ 0x0F5F723E, 0x3F7637B7,
+/**/ 0x00000000, 0x3FEB5000,
+/**/ 0x21D4B842, 0x3FFEB4CA,
+/**/ 0x2BE08FC5, 0x400821BF,
+/**/ 0x6A6A3BD0, 0x40255238,
+/**/ 0xBAC907E2, 0x4046CC00,
+/**/ 0x94202458, 0x406B4A78,
+/**/ 0xFE065CA6, 0x40917C35,
+/**/ 0xE8D5B845, 0x40B77848,
+/**/ 0x0CD72D76, 0x40E04820,
+/**/ 0x9CBE508B, 0x3CA54B6E,
+/**/ 0xE41C2ACE, 0x3FF05CF5,
+/**/ 0x00000000, 0x3FFEC000,
+/**/ 0x568F7C18, 0xBF666BBC,
+/**/ 0x00000000, 0x3FEB7000,
+/**/ 0x7FB6EB26, 0x3FFF175C,
+/**/ 0xA7BA9C35, 0x40092A6C,
+/**/ 0x80F5BA9F, 0x4026D0BC,
+/**/ 0x33BD74FB, 0x40491048,
+/**/ 0x61FCE21F, 0x406ED319,
+/**/ 0x60DF5AED, 0x40944A2E,
+/**/ 0x1AC97175, 0x40BBFAFC,
+/**/ 0xC3A8BC22, 0x40E3F145,
+/**/ 0xA70A42D9, 0xBC994B5D,
+/**/ 0x9F358760, 0x3FF07BDB,
+/**/ 0x00000000, 0x3FFF0000,
+/**/ 0xB6EB2582, 0x3F775C7F,
+/**/ 0x00000000, 0x3FEB9000,
+/**/ 0x9B29492C, 0x3FFF7E36,
+/**/ 0x1C35AD8A, 0x400A45EB,
+/**/ 0xC8373BB1, 0x402875D7,
+/**/ 0x885E6AE6, 0x404BA0D1,
+/**/ 0x0831631E, 0x40717784,
+/**/ 0x7F51DA78, 0x4097A441,
+/**/ 0x6D7642FB, 0x40C0C2B2,
+/**/ 0x594961FB, 0x40E89073,
+/**/ 0x96CDC181, 0xBCA5DECE,
+/**/ 0x0A46374E, 0x3FF09B26,
+/**/ 0x00000000, 0x3FFF8000,
+/**/ 0x6B6D3D05, 0xBF3C964D,
+/**/ 0x00000000, 0x3FEBB000,
+/**/ 0x7DD9B1CF, 0x3FFFE9A7,
+/**/ 0xB9AE77AF, 0x400B7627,
+/**/ 0x3338306D, 0x402A46B0,
+/**/ 0xA0CAACE9, 0x404E8A38,
+/**/ 0x864F53A2, 0x4073DDBB,
+/**/ 0xD6C97F8D, 0x409BAAF0,
+/**/ 0xDFAE5A98, 0x40C42EEF,
+/**/ 0xE19501DA, 0x40EE701A,
+/**/ 0xC7D3D675, 0x3C9CC4F4,
+/**/ 0x93EC49AE, 0x3FF0BAD9,
+/**/ 0x00000000, 0x40000000,
+/**/ 0x264E310D, 0xBF765882,
+/**/ 0x00000000, 0x3FEBD000,
+/**/ 0x34302F3B, 0x40002D03,
+/**/ 0x7F5AAF0D, 0x400CBD52,
+/**/ 0x0C635C0A, 0x402C4949,
+/**/ 0xB6BB1732, 0x4050EDD1,
+/**/ 0x9691A9F4, 0x4076AE3D,
+/**/ 0x61482FC6, 0x40A043C7,
+/**/ 0xF81EB6E0, 0x40C87037,
+/**/ 0xE84FE55E, 0x40F2FA30,
+/**/ 0x228FC41D, 0xBC9820F1,
+/**/ 0xFDD4AE68, 0x3FF0DAFA,
+/**/ 0x00000000, 0x40002000,
+/**/ 0x605E76B0, 0x3F7A0668,
+/**/ 0x00000000, 0x3FEBF000,
+/**/ 0xF9C947A3, 0x400067D9,
+/**/ 0xA1722882, 0x400E1DE9,
+/**/ 0x41FE0247, 0x402E84B0,
+/**/ 0xDBD1D676, 0x4052D3AE,
+/**/ 0xE088BEF5, 0x4079FF78,
+/**/ 0x64D9A484, 0x40A33780,
+/**/ 0x1974F9B5, 0x40CDC32D,
+/**/ 0xCE268611, 0x40F7D295,
+/**/ 0xD437D23F, 0xBCA5A192,
+/**/ 0x657EFDCA, 0x3FF0FB8F,
+/**/ 0x00000000, 0x40006000,
+/**/ 0x251E8CF3, 0x3F6F67E7,
+/**/ 0x00000000, 0x3FEC1000,
+/**/ 0xB1FFFA6D, 0x4000A58D,
+/**/ 0x4E7307C3, 0x400F9AC7,
+/**/ 0x5EA15962, 0x4030809B,
+/**/ 0x5418E1B6, 0x405501D0,
+/**/ 0xB476D79F, 0x407DED80,
+/**/ 0x37F33D5F, 0x40A6D2BF,
+/**/ 0xA43F6C6F, 0x40D23C31,
+/**/ 0xDB17BBAA, 0x40FE1E46,
+/**/ 0x41D8AD56, 0xBCA7EB62,
+/**/ 0x4E3ADE0A, 0x3FF11C9C,
+/**/ 0x00000000, 0x4000A000,
+/**/ 0xFFE9B457, 0x3F6636C7,
+/**/ 0x00000000, 0x3FEC3000,
+/**/ 0x1D1BDCC6, 0x4000E65A,
+/**/ 0x3503CCCE, 0x40109B99,
+/**/ 0x7580EC24, 0x4031E45B,
+/**/ 0x1803E176, 0x405785CA,
+/**/ 0x8458A77D, 0x40814DDB,
+/**/ 0x6C115AB7, 0x40AB41D9,
+/**/ 0xD7BCE584, 0x40D67DF0,
+/**/ 0xF5487646, 0x41032EF5,
+/**/ 0xF3631254, 0xBC9C4040,
+/**/ 0xAC964DA8, 0x3FF13E27,
+/**/ 0x00000000, 0x4000E000,
+/**/ 0x6F731770, 0x3F696874,
+/**/ 0x00000000, 0x3FEC5000,
+/**/ 0x068FBCB4, 0x40012A82,
+/**/ 0x7FE89A5F, 0x40117B79,
+/**/ 0xD37F3897, 0x40337376,
+/**/ 0xDF3B47A2, 0x405A704E,
+/**/ 0xEB114449, 0x40841B83,
+/**/ 0x8D323120, 0x40B05F75,
+/**/ 0x8AE65DDD, 0x40DBEFEC,
+/**/ 0xD1814341, 0x4108A2A2,
+/**/ 0xFB25EC76, 0x3CA3E83D,
+/**/ 0xF37FFEDA, 0x3FF16037,
+/**/ 0x00000000, 0x40012000,
+/**/ 0x1F796787, 0x3F75040D,
+/**/ 0x00000000, 0x3FEC7000,
+/**/ 0x5F8F574B, 0x40017250,
+/**/ 0xB566493D, 0x40126F35,
+/**/ 0x95186E3D, 0x403534F5,
+/**/ 0x947D5EA5, 0x405DD60B,
+/**/ 0x568C5D73, 0x40877C77,
+/**/ 0xA26261F0, 0x40B3CB66,
+/**/ 0xBF32194D, 0x40E17B06,
+/**/ 0x11490E42, 0x410FE921,
+/**/ 0x5376CB61, 0xBCA34428,
+/**/ 0x236FE314, 0x3FF182D4,
+/**/ 0x00000000, 0x40018000,
+/**/ 0xE15169A9, 0xBF7B5F40,
+/**/ 0x00000000, 0x3FEC9000,
+/**/ 0x91B4C8D8, 0x4001BE19,
+/**/ 0xBE69BAE6, 0x4013795B,
+/**/ 0xCD6F8B02, 0x40373151,
+/**/ 0xD86A7BFF, 0x4060E864,
+/**/ 0x515F5BD6, 0x408B95CC,
+/**/ 0xD070B4A1, 0x40B8180C,
+/**/ 0xC9B24D80, 0x40E60D2C,
+/**/ 0xAA392CAF, 0x4114DBF6,
+/**/ 0xF5844C55, 0xBCA89BD0,
+/**/ 0xDBFAF236, 0x3FF1A603,
+/**/ 0x00000000, 0x4001C000,
+/**/ 0xB37285FC, 0xBF4E66E4,
+/**/ 0x00000000, 0x3FECB000,
+/**/ 0x1757F6B1, 0x40020E3D,
+/**/ 0xAE890640, 0x40149CE9,
+/**/ 0xD6174F60, 0x403972D4,
+/**/ 0x8C82DF92, 0x40634079,
+/**/ 0xACAB5569, 0x40904BE6,
+/**/ 0xB362E75A, 0x40BD8A99,
+/**/ 0x389374DC, 0x40EC0ED7,
+/**/ 0xCA5E9653, 0x411B8ADF,
+/**/ 0x4A1E3E49, 0xBC80CBC7,
+/**/ 0x704F5D26, 0x3FF1C9CF,
+/**/ 0x00000000, 0x40020000,
+/**/ 0xAFED62A2, 0x3F7C7A2E,
+/**/ 0x00000000, 0x3FECD000,
+/**/ 0x6B3395AA, 0x40026327,
+/**/ 0x33FB1467, 0x4015DD66,
+/**/ 0xDCF3437C, 0x403C0610,
+/**/ 0xC9D7C47A, 0x406607CE,
+/**/ 0xA330DC5C, 0x409360FB,
+/**/ 0x38A3194B, 0x40C240B4,
+/**/ 0xBAA6A879, 0x40F20437,
+/**/ 0x04D6F19C, 0x41226106,
+/**/ 0x15E5252C, 0x3CABCCF5,
+/**/ 0xFF35681A, 0x3FF1EE3F,
+/**/ 0x00000000, 0x40026000,
+/**/ 0x9CAD4CE9, 0x3F593B59,
+/**/ 0x00000000, 0x3FECF000,
+/**/ 0x664A8350, 0x4002BD54,
+/**/ 0x945190A0, 0x40173EFF,
+/**/ 0xC7CC5224, 0x403EFA80,
+/**/ 0x896F1658, 0x406958AA,
+/**/ 0x4FD54E04, 0x40973450,
+/**/ 0x4CD60C4A, 0x40C6BF55,
+/**/ 0x3EFFD07C, 0x40F75EBE,
+/**/ 0x9E2E6981, 0x4128D03C,
+/**/ 0xC8A488FF, 0xBC987CEE,
+/**/ 0x8F597306, 0x3FF2135F,
+/**/ 0x00000000, 0x4002C000,
+/**/ 0xABE583FE, 0xBF555CCD,
+/**/ 0x00000000, 0x3FED1000,
+/**/ 0x2A40EA5C, 0x40031D52,
+/**/ 0x52B4947D, 0x4018C6B3,
+/**/ 0x5D01146E, 0x404131AE,
+/**/ 0x0163E71C, 0x406D54FB,
+/**/ 0xEF3ED15B, 0x409BFE8A,
+/**/ 0xA33A6B00, 0x40CC9C28,
+/**/ 0x1456E1A6, 0x40FEA523,
+/**/ 0xFC8790DB, 0x4130F60F,
+/**/ 0x6FABCA41, 0x3CAC104F,
+/**/ 0x30D87C68, 0x3FF23939,
+/**/ 0x00000000, 0x40032000,
+/**/ 0xF8AD1CF9, 0xBF556EAD,
+/**/ 0x00000000, 0x3FED3000,
+/**/ 0xC053C623, 0x400383C4,
+/**/ 0x6ADBFF2C, 0x401A7A81,
+/**/ 0xE219A24E, 0x40432C5B,
+/**/ 0x30F4B8D8, 0x40711484,
+/**/ 0xBC59423E, 0x40A10659,
+/**/ 0x3D537AE5, 0x40D22C09,
+/**/ 0xA4B7D930, 0x410454A2,
+/**/ 0xC151F3C3, 0x41378151,
+/**/ 0x779E9951, 0xBCA2F226,
+/**/ 0x254E3F9C, 0x3FF25FD9,
+/**/ 0x00000000, 0x40038000,
+/**/ 0x9E311A8B, 0x3F5E2602,
+/**/ 0x00000000, 0x3FED5000,
+/**/ 0xA2F65F8C, 0x4003F16A,
+/**/ 0x36C0308E, 0x401C61AF,
+/**/ 0x5337FF7D, 0x40457C82,
+/**/ 0x7FB84BA9, 0x407407A3,
+/**/ 0x4C74DEA7, 0x40A4E476,
+/**/ 0xDF1C2124, 0x40D75638,
+/**/ 0xA2556E94, 0x410B5320,
+/**/ 0x7D68ABBE, 0x414087CD,
+/**/ 0x73A87AB9, 0xBCACD58C,
+/**/ 0x10017B06, 0x3FF2874D,
+/**/ 0x00000000, 0x40040000,
+/**/ 0x1340E849, 0xBF7D2ABA,
+/**/ 0x00000000, 0x3FED7000,
+/**/ 0x7BA9A810, 0x40046722,
+/**/ 0xCBC74735, 0x401E851F,
+/**/ 0xF3879985, 0x40483596,
+/**/ 0xCD297F00, 0x4077AAEB,
+/**/ 0x31669F50, 0x40A9E3C8,
+/**/ 0xB7CBB664, 0x40DE5420,
+/**/ 0xB75100A0, 0x41129F7B,
+/**/ 0x51D127BF, 0x4147A1C1,
+/**/ 0x46D9C78F, 0x3CAC647E,
+/**/ 0x304962AE, 0x3FF2AFA4,
+/**/ 0x00000000, 0x40046000,
+/**/ 0xA6A041C9, 0x3F6C89EE,
+/**/ 0x00000000, 0x3FED9000,
+/**/ 0x7A99A835, 0x4004E5F2,
+/**/ 0x15B0232D, 0x402077E5,
+/**/ 0xEE468866, 0x404B70C1,
+/**/ 0x43A041C3, 0x407C334A,
+/**/ 0x53D2C164, 0x40B036D1,
+/**/ 0x10CCEDBE, 0x40E3F7B1,
+/**/ 0xF6C2E560, 0x4119C160,
+/**/ 0x6D21D20F, 0x415131DD,
+/**/ 0x2EC50766, 0x41878683,
+/**/ 0xD1134ECC, 0xBCA95596,
+/**/ 0xA8F4B028, 0x3FF2D8EF,
+/**/ 0x00000000, 0x4004E000,
+/**/ 0x66A0D2C7, 0x3F67C9EA,
+/**/ 0x00000000, 0x3FEDB000,
+/**/ 0xD6373B90, 0x40056F11,
+/**/ 0xC3747DF3, 0x4021D7AC,
+/**/ 0x6A014D6F, 0x404F4EF3,
+/**/ 0x505C454B, 0x4080F4C4,
+/**/ 0x214975C5, 0x40B48D16,
+/**/ 0xF57BFAC6, 0x40EAACFD,
+/**/ 0x5225A6ED, 0x41222235,
+/**/ 0xACBA67AB, 0x41598643,
+/**/ 0xDE5D19B9, 0x419267B9,
+/**/ 0x42C92439, 0xBCAEF63C,
+/**/ 0xD86BED76, 0x3FF30342,
+/**/ 0x00000000, 0x40056000,
+/**/ 0x6E771F48, 0x3F7E23AC,
+/**/ 0x00000000, 0x3FEDD000,
+/**/ 0x3D2D8CF1, 0x400603F5,
+/**/ 0xEF4A10FA, 0x40236A84,
+/**/ 0x4EA265AF, 0x4051FDF3,
+/**/ 0xD944F636, 0x408499B5,
+/**/ 0x37F73BAC, 0x40BA64B8,
+/**/ 0x259B27FC, 0x40F21B9F,
+/**/ 0x265D5B9F, 0x412A0669,
+/**/ 0x3DC806E2, 0x41635D8E,
+/**/ 0x36AD8B00, 0x419D8657,
+/**/ 0x3FFCDCA3, 0x3CA4CEEB,
+/**/ 0xC69D2D10, 0x3FF32EB3,
+/**/ 0x00000000, 0x40060000,
+/**/ 0x6C678625, 0x3F5FA9E9,
+/**/ 0x00000000, 0x3FEDF000,
+/**/ 0x5FCDF915, 0x4006A65F,
+/**/ 0x68321BDA, 0x40253B6E,
+/**/ 0x706E8DA9, 0x4054D949,
+/**/ 0x4A70D2D7, 0x408950EF,
+/**/ 0x1F15E14E, 0x40C13319,
+/**/ 0x846A9BD5, 0x40F907B1,
+/**/ 0x17C39016, 0x4133139C,
+/**/ 0xBC86F11B, 0x416E1DA3,
+/**/ 0xD9F86F3B, 0x41A8597F,
+/**/ 0x7D0D5190, 0x3C32D4F8,
+/**/ 0xAFA88354, 0x3FF35B5B,
+/**/ 0x00000000, 0x4006A000,
+/**/ 0x37E455FD, 0x3F697D7F,
+/**/ 0x00000000, 0x3FEE1000,
+/**/ 0x41D1DBF9, 0x40075877,
+/**/ 0xF5852184, 0x402758A8,
+/**/ 0x65C0F467, 0x405861EE,
+/**/ 0xD2D91276, 0x408F83C0,
+/**/ 0x43EC3B0E, 0x40C6CA7C,
+/**/ 0x718322C8, 0x4101A722,
+/**/ 0x9533D806, 0x413CA4C6,
+/**/ 0xE9899583, 0x417812B7,
+/**/ 0x85EE8B86, 0x41B4B875,
+/**/ 0xD1AEEED1, 0xBC99DEFB,
+/**/ 0xB510476E, 0x3FF38957,
+/**/ 0x00000000, 0x40076000,
+/**/ 0xB8901BF9, 0xBF6E22F8,
+/**/ 0x00000000, 0x3FEE3000,
+/**/ 0xE1C37E57, 0x40081CE6,
+/**/ 0xD3DC9910, 0x4029D4F3,
+/**/ 0xE3095065, 0x405CD074,
+/**/ 0xC5C38224, 0x4093E764,
+/**/ 0x3CAE1F31, 0x40CEC5AE,
+/**/ 0xC0645F38, 0x41097A50,
+/**/ 0xD8A7F25E, 0x41461866,
+/**/ 0x8C2F04A3, 0x4183DAF5,
+/**/ 0xA9143C1F, 0x41C2450E,
+/**/ 0x9FD995BC, 0x3C7D25BE,
+/**/ 0xC35D33E6, 0x3FF3B8C9,
+/**/ 0x00000000, 0x40082000,
+/**/ 0xE40D49E0, 0xBF58C8F1,
+/**/ 0x00000000, 0x3FEE5000,
+/**/ 0x285640BB, 0x4008F706,
+/**/ 0x3B2B7CD1, 0x402CC96B,
+/**/ 0xC5341328, 0x40613ADF,
+/**/ 0x16E928A9, 0x4099908D,
+/**/ 0x7CC08A3C, 0x40D53986,
+/**/ 0x31DD3E45, 0x4112DFC5,
+/**/ 0xE2A13787, 0x41519499,
+/**/ 0xF94424AD, 0x4190F943,
+/**/ 0xCDCD49BE, 0x41D0C6BC,
+/**/ 0x6D41701D, 0xBC9E2458,
+/**/ 0xC088BD28, 0x3FF3E9D9,
+/**/ 0x00000000, 0x40090000,
+/**/ 0x537E8A00, 0xBF71F3AF,
+/**/ 0x00000000, 0x3FEE7000,
+/**/ 0x6562D1E0, 0x4009EB18,
+/**/ 0x75651223, 0x40302C31,
+/**/ 0x336E41C7, 0x4064E431,
+/**/ 0xA065DA69, 0x40A0BCA6,
+/**/ 0x917AF357, 0x40DE034D,
+/**/ 0x4168FB0F, 0x411CD2C1,
+/**/ 0x15BB794D, 0x415CFEB6,
+/**/ 0x6EFFD5E5, 0x419E3EE1,
+/**/ 0x1ACB4D9C, 0x41E024E7,
+/**/ 0xD93F153F, 0xBC9C29C8,
+/**/ 0x2183E810, 0x3FF41CB7,
+/**/ 0x00000000, 0x4009E000,
+/**/ 0xC5A3C038, 0x3F7630CA,
+/**/ 0x00000000, 0x3FEE9000,
+/**/ 0xA364196F, 0x400AFEA6,
+/**/ 0x0B19A2EB, 0x403258F3,
+/**/ 0x2520AC75, 0x4069BDA5,
+/**/ 0x8F67EDEA, 0x40A669BC,
+/**/ 0xC026C9F8, 0x40E5D78C,
+/**/ 0x1E3B36C2, 0x4126CCB4,
+/**/ 0xBF45C805, 0x4168EDE4,
+/**/ 0x8AC89E76, 0x41AC2F6A,
+/**/ 0x4CA9EB55, 0x41F0675E,
+/**/ 0x0D13E3DF, 0x42336AC1,
+/**/ 0xF2DE93A6, 0x3C9B1D74,
+/**/ 0x155FB22E, 0x3FF4519B,
+/**/ 0x00000000, 0x400B0000,
+/**/ 0xBE690E67, 0xBF4595C9,
+/**/ 0x00000000, 0x3FEEB000,
+/**/ 0x4BD1C065, 0x400C3908,
+/**/ 0x26C39FFD, 0x40350D88,
+/**/ 0x69D3E79E, 0x4070296B,
+/**/ 0xD7FEEA5D, 0x40AED279,
+/**/ 0xFD5BD547, 0x40F072A8,
+/**/ 0x4A08BB38, 0x4132CDB9,
+/**/ 0x536BED06, 0x41768482,
+/**/ 0x2F10E88D, 0x41BBE1FF,
+/**/ 0xABDBBDAC, 0x4201C966,
+/**/ 0x02E62DDA, 0x42471011,
+/**/ 0x3E907E71, 0xBCA0855D,
+/**/ 0x8FA73920, 0x3FF488CB,
+/**/ 0x00000000, 0x400C4000,
+/**/ 0xB8FE6DDF, 0xBF6BDED0,
+/**/ 0x00000000, 0x3FEED000,
+/**/ 0x12AAF9A9, 0x400DA439,
+/**/ 0x62F25109, 0x40387D46,
+/**/ 0x3F133A3F, 0x4074C339,
+/**/ 0x662036F9, 0x40B5E143,
+/**/ 0x74467831, 0x40F9CF04,
+/**/ 0x576C6FA8, 0x41404E10,
+/**/ 0xFF4F8E88, 0x41859489,
+/**/ 0xB44962A9, 0x41CD88D2,
+/**/ 0x97A288F3, 0x4214D838,
+/**/ 0x6CF738B3, 0x425DE10B,
+/**/ 0x5F7263CC, 0xBC8E9EA7,
+/**/ 0xAA786F36, 0x3FF4C29F,
+/**/ 0x00000000, 0x400DA000,
+/**/ 0xABE6A2AD, 0x3F60E44A,
+/**/ 0x00000000, 0x3FEEF000,
+/**/ 0xC169B52F, 0x400F4E35,
+/**/ 0x29E8699C, 0x403CF773,
+/**/ 0xFC1818D6, 0x407B6D37,
+/**/ 0x1386790A, 0x40C02655,
+/**/ 0x4FF79D1E, 0x41054A1F,
+/**/ 0x7DB0265A, 0x414E104A,
+/**/ 0xE5C8114B, 0x41963C39,
+/**/ 0xF52A87DB, 0x41E10156,
+/**/ 0x2E9E7ABE, 0x422ADD76,
+/**/ 0x6EC81361, 0x427586AB,
+/**/ 0xE395EEA6, 0x3C935690,
+/**/ 0x2E5965A2, 0x3FF4FF86,
+/**/ 0x00000000, 0x400F4000,
+/**/ 0xD36A5E70, 0x3F7C6B82 } };
+
+#endif
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/atnat.h b/REORG.TODO/sysdeps/ieee754/dbl-64/atnat.h
new file mode 100644
index 0000000000..3ba064ae59
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/atnat.h
@@ -0,0 +1,154 @@
+/*
+ * IBM Accurate Mathematical Library
+ * Written by International Business Machines Corp.
+ * Copyright (C) 2001-2017 Free Software Foundation, Inc.
+ *
+ * This program 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 2.1 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 program; if not, see <http://www.gnu.org/licenses/>.
+ */
+
+/************************************************************************/
+/* MODULE_NAME: atnat.h */
+/* */
+/* */
+/* common data and variables definition for BIG or LITTLE ENDIAN */
+/************************************************************************/
+#ifndef ATNAT_H
+#define ATNAT_H
+
+#define M 4
+
+#ifdef BIG_ENDI
+ static const number
+ /* polynomial I */
+/**/ d3 = {{0xbfd55555, 0x55555555} }, /* -0.333... */
+/**/ d5 = {{0x3fc99999, 0x999997fd} }, /* 0.199... */
+/**/ d7 = {{0xbfc24924, 0x923f7603} }, /* -0.142... */
+/**/ d9 = {{0x3fbc71c6, 0xe5129a3b} }, /* 0.111... */
+/**/ d11 = {{0xbfb74580, 0x22b13c25} }, /* -0.090... */
+/**/ d13 = {{0x3fb375f0, 0x8b31cbce} }, /* 0.076... */
+ /* polynomial II */
+/**/ f3 = {{0xbfd55555, 0x55555555} }, /* -1/3 */
+/**/ ff3 = {{0xbc755555, 0x55555555} }, /* -1/3-f3 */
+/**/ f5 = {{0x3fc99999, 0x9999999a} }, /* 1/5 */
+/**/ ff5 = {{0xbc699999, 0x9999999a} }, /* 1/5-f5 */
+/**/ f7 = {{0xbfc24924, 0x92492492} }, /* -1/7 */
+/**/ ff7 = {{0xbc624924, 0x92492492} }, /* -1/7-f7 */
+/**/ f9 = {{0x3fbc71c7, 0x1c71c71c} }, /* 1/9 */
+/**/ ff9 = {{0x3c5c71c7, 0x1c71c71c} }, /* 1/9-f9 */
+/**/ f11 = {{0xbfb745d1, 0x745d1746} }, /* -1/11 */
+/**/ f13 = {{0x3fb3b13b, 0x13b13b14} }, /* 1/13 */
+/**/ f15 = {{0xbfb11111, 0x11111111} }, /* -1/15 */
+/**/ f17 = {{0x3fae1e1e, 0x1e1e1e1e} }, /* 1/17 */
+/**/ f19 = {{0xbfaaf286, 0xbca1af28} }, /* -1/19 */
+ /* constants */
+/**/ a = {{0x3e4bb67a, 0x00000000} }, /* 1.290e-8 */
+/**/ b = {{0x3fb00000, 0x00000000} }, /* 1/16 */
+/**/ c = {{0x3ff00000, 0x00000000} }, /* 1 */
+/**/ d = {{0x40300000, 0x00000000} }, /* 16 */
+/**/ e = {{0x43349ff2, 0x00000000} }, /* 5.805e15 */
+/**/ hpi = {{0x3ff921fb, 0x54442d18} }, /* pi/2 */
+/**/ mhpi = {{0xbff921fb, 0x54442d18} }, /* -pi/2 */
+/**/ hpi1 = {{0x3c91a626, 0x33145c07} }, /* pi/2-hpi */
+/**/ u1 = {{0x3c2d3382, 0x00000000} }, /* 7.915e-19 */
+/**/ u21 = {{0x3c6dffc0, 0x00000000} }, /* 1.301e-17 */
+/**/ u22 = {{0x3c527bd0, 0x00000000} }, /* 4.008e-18 */
+/**/ u23 = {{0x3c3cd057, 0x00000000} }, /* 1.562e-18 */
+/**/ u24 = {{0x3c329cdf, 0x00000000} }, /* 1.009e-18 */
+/**/ u31 = {{0x3c3a1edf, 0x00000000} }, /* 1.416e-18 */
+/**/ u32 = {{0x3c33f0e1, 0x00000000} }, /* 1.081e-18 */
+/**/ u4 = {{0x3bf955e4, 0x00000000} }, /* 8.584e-20 */
+/**/ u5 = {{0x3aaef2d1, 0x00000000} }, /* 5e-26 */
+/**/ u6 = {{0x3a98c56d, 0x00000000} }, /* 2.001e-26 */
+/**/ u7 = {{0x3a9375de, 0x00000000} }, /* 1.572e-26 */
+/**/ u8 = {{0x3a6eeb36, 0x00000000} }, /* 3.122e-27 */
+/**/ u9[M] ={{{0x38c1aa5b, 0x00000000} }, /* 2.658e-35 */
+/**/ {{0x35c1aa4d, 0x00000000} }, /* 9.443e-50 */
+/**/ {{0x32c1aa88, 0x00000000} }, /* 3.355e-64 */
+/**/ {{0x11c1aa56, 0x00000000} }};/* 3.818e-223 */
+
+#else
+#ifdef LITTLE_ENDI
+ static const number
+ /* polynomial I */
+/**/ d3 = {{0x55555555, 0xbfd55555} }, /* -0.333... */
+/**/ d5 = {{0x999997fd, 0x3fc99999} }, /* 0.199... */
+/**/ d7 = {{0x923f7603, 0xbfc24924} }, /* -0.142... */
+/**/ d9 = {{0xe5129a3b, 0x3fbc71c6} }, /* 0.111... */
+/**/ d11 = {{0x22b13c25, 0xbfb74580} }, /* -0.090... */
+/**/ d13 = {{0x8b31cbce, 0x3fb375f0} }, /* 0.076... */
+ /* polynomial II */
+/**/ f3 = {{0x55555555, 0xbfd55555} }, /* -1/3 */
+/**/ ff3 = {{0x55555555, 0xbc755555} }, /* -1/3-f3 */
+/**/ f5 = {{0x9999999a, 0x3fc99999} }, /* 1/5 */
+/**/ ff5 = {{0x9999999a, 0xbc699999} }, /* 1/5-f5 */
+/**/ f7 = {{0x92492492, 0xbfc24924} }, /* -1/7 */
+/**/ ff7 = {{0x92492492, 0xbc624924} }, /* -1/7-f7 */
+/**/ f9 = {{0x1c71c71c, 0x3fbc71c7} }, /* 1/9 */
+/**/ ff9 = {{0x1c71c71c, 0x3c5c71c7} }, /* 1/9-f9 */
+/**/ f11 = {{0x745d1746, 0xbfb745d1} }, /* -1/11 */
+/**/ f13 = {{0x13b13b14, 0x3fb3b13b} }, /* 1/13 */
+/**/ f15 = {{0x11111111, 0xbfb11111} }, /* -1/15 */
+/**/ f17 = {{0x1e1e1e1e, 0x3fae1e1e} }, /* 1/17 */
+/**/ f19 = {{0xbca1af28, 0xbfaaf286} }, /* -1/19 */
+ /* constants */
+/**/ a = {{0x00000000, 0x3e4bb67a} }, /* 1.290e-8 */
+/**/ b = {{0x00000000, 0x3fb00000} }, /* 1/16 */
+/**/ c = {{0x00000000, 0x3ff00000} }, /* 1 */
+/**/ d = {{0x00000000, 0x40300000} }, /* 16 */
+/**/ e = {{0x00000000, 0x43349ff2} }, /* 5.805e15 */
+/**/ hpi = {{0x54442d18, 0x3ff921fb} }, /* pi/2 */
+/**/ mhpi = {{0x54442d18, 0xbff921fb} }, /* -pi/2 */
+/**/ hpi1 = {{0x33145c07, 0x3c91a626} }, /* pi/2-hpi */
+/**/ u1 = {{0x00000000, 0x3c2d3382} }, /* 7.915e-19 */
+/**/ u21 = {{0x00000000, 0x3c6dffc0} }, /* 1.301e-17 */
+/**/ u22 = {{0x00000000, 0x3c527bd0} }, /* 4.008e-18 */
+/**/ u23 = {{0x00000000, 0x3c3cd057} }, /* 1.562e-18 */
+/**/ u24 = {{0x00000000, 0x3c329cdf} }, /* 1.009e-18 */
+/**/ u31 = {{0x00000000, 0x3c3a1edf} }, /* 1.416e-18 */
+/**/ u32 = {{0x00000000, 0x3c33f0e1} }, /* 1.081e-18 */
+/**/ u4 = {{0x00000000, 0x3bf955e4} }, /* 8.584e-20 */
+/**/ u5 = {{0x00000000, 0x3aaef2d1} }, /* 5e-26 */
+/**/ u6 = {{0x00000000, 0x3a98c56d} }, /* 2.001e-26 */
+/**/ u7 = {{0x00000000, 0x3a9375de} }, /* 1.572e-26 */
+/**/ u8 = {{0x00000000, 0x3a6eeb36} }, /* 3.122e-27 */
+/**/ u9[M] ={{{0x00000000, 0x38c1aa5b} }, /* 2.658e-35 */
+/**/ {{0x00000000, 0x35c1aa4d} }, /* 9.443e-50 */
+/**/ {{0x00000000, 0x32c1aa88} }, /* 3.355e-64 */
+/**/ {{0x00000000, 0x11c1aa56} }};/* 3.818e-223 */
+
+#endif
+#endif
+
+#define A a.d
+#define B b.d
+#define C c.d
+#define D d.d
+#define E e.d
+#define HPI hpi.d
+#define MHPI mhpi.d
+#define HPI1 hpi1.d
+#define U1 u1.d
+#define U21 u21.d
+#define U22 u22.d
+#define U23 u23.d
+#define U24 u24.d
+#define U31 u31.d
+#define U32 u32.d
+#define U4 u4.d
+#define U5 u5.d
+#define U6 u6.d
+#define U7 u7.d
+#define U8 u8.d
+
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/atnat2.h b/REORG.TODO/sysdeps/ieee754/dbl-64/atnat2.h
new file mode 100644
index 0000000000..27033b6ceb
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/atnat2.h
@@ -0,0 +1,161 @@
+
+/*
+ * IBM Accurate Mathematical Library
+ * Written by International Business Machines Corp.
+ * Copyright (C) 2001-2017 Free Software Foundation, Inc.
+ *
+ * This program 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 2.1 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 program; if not, see <http://www.gnu.org/licenses/>.
+ */
+
+/************************************************************************/
+/* MODULE_NAME: atnat2.h */
+/* */
+/* */
+/* common data and variables definition for BIG or LITTLE ENDIAN */
+/************************************************************************/
+
+
+
+#ifndef ATNAT2_H
+#define ATNAT2_H
+
+
+#define MM 5
+#ifdef BIG_ENDI
+
+ static const number
+ /* polynomial I */
+/**/ d3 = {{0xbfd55555, 0x55555555} }, /* -0.333... */
+/**/ d5 = {{0x3fc99999, 0x999997fd} }, /* 0.199... */
+/**/ d7 = {{0xbfc24924, 0x923f7603} }, /* -0.142... */
+/**/ d9 = {{0x3fbc71c6, 0xe5129a3b} }, /* 0.111... */
+/**/ d11 = {{0xbfb74580, 0x22b13c25} }, /* -0.090... */
+/**/ d13 = {{0x3fb375f0, 0x8b31cbce} }, /* 0.076... */
+ /* polynomial II */
+/**/ f3 = {{0xbfd55555, 0x55555555} }, /* -1/3 */
+/**/ ff3 = {{0xbc755555, 0x55555555} }, /* -1/3-f3 */
+/**/ f5 = {{0x3fc99999, 0x9999999a} }, /* 1/5 */
+/**/ ff5 = {{0xbc699999, 0x9999999a} }, /* 1/5-f5 */
+/**/ f7 = {{0xbfc24924, 0x92492492} }, /* -1/7 */
+/**/ ff7 = {{0xbc624924, 0x92492492} }, /* -1/7-f7 */
+/**/ f9 = {{0x3fbc71c7, 0x1c71c71c} }, /* 1/9 */
+/**/ ff9 = {{0x3c5c71c7, 0x1c71c71c} }, /* 1/9-f9 */
+/**/ f11 = {{0xbfb745d1, 0x745d1746} }, /* -1/11 */
+/**/ f13 = {{0x3fb3b13b, 0x13b13b14} }, /* 1/13 */
+/**/ f15 = {{0xbfb11111, 0x11111111} }, /* -1/15 */
+/**/ f17 = {{0x3fae1e1e, 0x1e1e1e1e} }, /* 1/17 */
+/**/ f19 = {{0xbfaaf286, 0xbca1af28} }, /* -1/19 */
+ /* constants */
+/**/ inv16 = {{0x3fb00000, 0x00000000} }, /* 1/16 */
+/**/ opi = {{0x400921fb, 0x54442d18} }, /* pi */
+/**/ opi1 = {{0x3ca1a626, 0x33145c07} }, /* pi-opi */
+/**/ mopi = {{0xc00921fb, 0x54442d18} }, /* -pi */
+/**/ hpi = {{0x3ff921fb, 0x54442d18} }, /* pi/2 */
+/**/ hpi1 = {{0x3c91a626, 0x33145c07} }, /* pi/2-hpi */
+/**/ mhpi = {{0xbff921fb, 0x54442d18} }, /* -pi/2 */
+/**/ qpi = {{0x3fe921fb, 0x54442d18} }, /* pi/4 */
+/**/ mqpi = {{0xbfe921fb, 0x54442d18} }, /* -pi/4 */
+/**/ tqpi = {{0x4002d97c, 0x7f3321d2} }, /* 3pi/4 */
+/**/ mtqpi = {{0xc002d97c, 0x7f3321d2} }, /* -3pi/4 */
+/**/ u1 = {{0x3c314c2a, 0x00000000} }, /* 9.377e-19 */
+/**/ u2 = {{0x3bf955e4, 0x00000000} }, /* 8.584e-20 */
+/**/ u3 = {{0x3bf955e4, 0x00000000} }, /* 8.584e-20 */
+/**/ u4 = {{0x3bf955e4, 0x00000000} }, /* 8.584e-20 */
+/**/ u5 = {{0x3aaef2d1, 0x00000000} }, /* 5e-26 */
+/**/ u6 = {{0x3a6eeb36, 0x00000000} }, /* 3.122e-27 */
+/**/ u7 = {{0x3a6eeb36, 0x00000000} }, /* 3.122e-27 */
+/**/ u8 = {{0x3a6eeb36, 0x00000000} }, /* 3.122e-27 */
+/**/ u91 = {{0x3c6dffc0, 0x00000000} }, /* 1.301e-17 */
+/**/ u92 = {{0x3c527bd0, 0x00000000} }, /* 4.008e-18 */
+/**/ u93 = {{0x3c3cd057, 0x00000000} }, /* 1.562e-18 */
+/**/ u94 = {{0x3c329cdf, 0x00000000} }, /* 1.009e-18 */
+/**/ ua1 = {{0x3c3a1edf, 0x00000000} }, /* 1.416e-18 */
+/**/ ua2 = {{0x3c33f0e1, 0x00000000} }, /* 1.081e-18 */
+/**/ ub = {{0x3a98c56d, 0x00000000} }, /* 2.001e-26 */
+/**/ uc = {{0x3a9375de, 0x00000000} }, /* 1.572e-26 */
+/**/ ud[MM] ={{{0x38c6eddf, 0x00000000} }, /* 3.450e-35 */
+/**/ {{0x35c6ef60, 0x00000000} }, /* 1.226e-49 */
+/**/ {{0x32c6ed2f, 0x00000000} }, /* 4.354e-64 */
+/**/ {{0x23c6eee8, 0x00000000} }, /* 2.465e-136 */
+/**/ {{0x11c6ed16, 0x00000000} }},/* 4.955e-223 */
+/**/ ue = {{0x38900e9d, 0x00000000} }, /* 3.02e-36 */
+/**/ two500 = {{0x5f300000, 0x00000000} }, /* 2**500 */
+/**/ twom500 = {{0x20b00000, 0x00000000} }; /* 2**(-500) */
+
+#else
+#ifdef LITTLE_ENDI
+
+ static const number
+ /* polynomial I */
+/**/ d3 = {{0x55555555, 0xbfd55555} }, /* -0.333... */
+/**/ d5 = {{0x999997fd, 0x3fc99999} }, /* 0.199... */
+/**/ d7 = {{0x923f7603, 0xbfc24924} }, /* -0.142... */
+/**/ d9 = {{0xe5129a3b, 0x3fbc71c6} }, /* 0.111... */
+/**/ d11 = {{0x22b13c25, 0xbfb74580} }, /* -0.090... */
+/**/ d13 = {{0x8b31cbce, 0x3fb375f0} }, /* 0.076... */
+ /* polynomial II */
+/**/ f3 = {{0x55555555, 0xbfd55555} }, /* -1/3 */
+/**/ ff3 = {{0x55555555, 0xbc755555} }, /* -1/3-f3 */
+/**/ f5 = {{0x9999999a, 0x3fc99999} }, /* 1/5 */
+/**/ ff5 = {{0x9999999a, 0xbc699999} }, /* 1/5-f5 */
+/**/ f7 = {{0x92492492, 0xbfc24924} }, /* -1/7 */
+/**/ ff7 = {{0x92492492, 0xbc624924} }, /* -1/7-f7 */
+/**/ f9 = {{0x1c71c71c, 0x3fbc71c7} }, /* 1/9 */
+/**/ ff9 = {{0x1c71c71c, 0x3c5c71c7} }, /* 1/9-f9 */
+/**/ f11 = {{0x745d1746, 0xbfb745d1} }, /* -1/11 */
+/**/ f13 = {{0x13b13b14, 0x3fb3b13b} }, /* 1/13 */
+/**/ f15 = {{0x11111111, 0xbfb11111} }, /* -1/15 */
+/**/ f17 = {{0x1e1e1e1e, 0x3fae1e1e} }, /* 1/17 */
+/**/ f19 = {{0xbca1af28, 0xbfaaf286} }, /* -1/19 */
+ /* constants */
+/**/ inv16 = {{0x00000000, 0x3fb00000} }, /* 1/16 */
+/**/ opi = {{0x54442d18, 0x400921fb} }, /* pi */
+/**/ opi1 = {{0x33145c07, 0x3ca1a626} }, /* pi-opi */
+/**/ mopi = {{0x54442d18, 0xc00921fb} }, /* -pi */
+/**/ hpi = {{0x54442d18, 0x3ff921fb} }, /* pi/2 */
+/**/ hpi1 = {{0x33145c07, 0x3c91a626} }, /* pi/2-hpi */
+/**/ mhpi = {{0x54442d18, 0xbff921fb} }, /* -pi/2 */
+/**/ qpi = {{0x54442d18, 0x3fe921fb} }, /* pi/4 */
+/**/ mqpi = {{0x54442d18, 0xbfe921fb} }, /* -pi/4 */
+/**/ tqpi = {{0x7f3321d2, 0x4002d97c} }, /* 3pi/4 */
+/**/ mtqpi = {{0x7f3321d2, 0xc002d97c} }, /* -3pi/4 */
+/**/ u1 = {{0x00000000, 0x3c314c2a} }, /* 9.377e-19 */
+/**/ u2 = {{0x00000000, 0x3bf955e4} }, /* 8.584e-20 */
+/**/ u3 = {{0x00000000, 0x3bf955e4} }, /* 8.584e-20 */
+/**/ u4 = {{0x00000000, 0x3bf955e4} }, /* 8.584e-20 */
+/**/ u5 = {{0x00000000, 0x3aaef2d1} }, /* 5e-26 */
+/**/ u6 = {{0x00000000, 0x3a6eeb36} }, /* 3.122e-27 */
+/**/ u7 = {{0x00000000, 0x3a6eeb36} }, /* 3.122e-27 */
+/**/ u8 = {{0x00000000, 0x3a6eeb36} }, /* 3.122e-27 */
+/**/ u91 = {{0x00000000, 0x3c6dffc0} }, /* 1.301e-17 */
+/**/ u92 = {{0x00000000, 0x3c527bd0} }, /* 4.008e-18 */
+/**/ u93 = {{0x00000000, 0x3c3cd057} }, /* 1.562e-18 */
+/**/ u94 = {{0x00000000, 0x3c329cdf} }, /* 1.009e-18 */
+/**/ ua1 = {{0x00000000, 0x3c3a1edf} }, /* 1.416e-18 */
+/**/ ua2 = {{0x00000000, 0x3c33f0e1} }, /* 1.081e-18 */
+/**/ ub = {{0x00000000, 0x3a98c56d} }, /* 2.001e-26 */
+/**/ uc = {{0x00000000, 0x3a9375de} }, /* 1.572e-26 */
+/**/ ud[MM] ={{{0x00000000, 0x38c6eddf} }, /* 3.450e-35 */
+/**/ {{0x00000000, 0x35c6ef60} }, /* 1.226e-49 */
+/**/ {{0x00000000, 0x32c6ed2f} }, /* 4.354e-64 */
+/**/ {{0x00000000, 0x23c6eee8} }, /* 2.465e-136 */
+/**/ {{0x00000000, 0x11c6ed16} }},/* 4.955e-223 */
+/**/ ue = {{0x00000000, 0x38900e9d} }, /* 3.02e-36 */
+/**/ two500 = {{0x00000000, 0x5f300000} }, /* 2**500 */
+/**/ twom500 = {{0x00000000, 0x20b00000} }; /* 2**(-500) */
+
+#endif
+#endif
+
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/branred.c b/REORG.TODO/sysdeps/ieee754/dbl-64/branred.c
new file mode 100644
index 0000000000..30ae9c79e2
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/branred.c
@@ -0,0 +1,144 @@
+/*
+ * IBM Accurate Mathematical Library
+ * Written by International Business Machines Corp.
+ * Copyright (C) 2001-2017 Free Software Foundation, Inc.
+ *
+ * This program 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 2.1 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 program; if not, see <http://www.gnu.org/licenses/>.
+ */
+/*******************************************************************/
+/* */
+/* MODULE_NAME: branred.c */
+/* */
+/* FUNCTIONS: branred */
+/* */
+/* FILES NEEDED: branred.h mydefs.h endian.h mpa.h */
+/* mha.c */
+/* */
+/* Routine branred() performs range reduction of a double number */
+/* x into Double length number a+aa,such that */
+/* x=n*pi/2+(a+aa), abs(a+aa)<pi/4, n=0,+-1,+-2,.... */
+/* Routine returns the integer (n mod 4) of the above description */
+/* of x. */
+/*******************************************************************/
+
+#include "endian.h"
+#include "mydefs.h"
+#include "branred.h"
+#include <math.h>
+#include <math_private.h>
+
+#ifndef SECTION
+# define SECTION
+#endif
+
+
+/*******************************************************************/
+/* Routine branred() performs range reduction of a double number */
+/* x into Double length number a+aa,such that */
+/* x=n*pi/2+(a+aa), abs(a+aa)<pi/4, n=0,+-1,+-2,.... */
+/* Routine return integer (n mod 4) */
+/*******************************************************************/
+int
+SECTION
+__branred(double x, double *a, double *aa)
+{
+ int i,k;
+ mynumber u,gor;
+ double r[6],s,t,sum,b,bb,sum1,sum2,b1,bb1,b2,bb2,x1,x2,t1,t2;
+
+ x*=tm600.x;
+ t=x*split; /* split x to two numbers */
+ x1=t-(t-x);
+ x2=x-x1;
+ sum=0;
+ u.x = x1;
+ k = (u.i[HIGH_HALF]>>20)&2047;
+ k = (k-450)/24;
+ if (k<0)
+ k=0;
+ gor.x = t576.x;
+ gor.i[HIGH_HALF] -= ((k*24)<<20);
+ for (i=0;i<6;i++)
+ { r[i] = x1*toverp[k+i]*gor.x; gor.x *= tm24.x; }
+ for (i=0;i<3;i++) {
+ s=(r[i]+big.x)-big.x;
+ sum+=s;
+ r[i]-=s;
+ }
+ t=0;
+ for (i=0;i<6;i++)
+ t+=r[5-i];
+ bb=(((((r[0]-t)+r[1])+r[2])+r[3])+r[4])+r[5];
+ s=(t+big.x)-big.x;
+ sum+=s;
+ t-=s;
+ b=t+bb;
+ bb=(t-b)+bb;
+ s=(sum+big1.x)-big1.x;
+ sum-=s;
+ b1=b;
+ bb1=bb;
+ sum1=sum;
+ sum=0;
+
+ u.x = x2;
+ k = (u.i[HIGH_HALF]>>20)&2047;
+ k = (k-450)/24;
+ if (k<0)
+ k=0;
+ gor.x = t576.x;
+ gor.i[HIGH_HALF] -= ((k*24)<<20);
+ for (i=0;i<6;i++)
+ { r[i] = x2*toverp[k+i]*gor.x; gor.x *= tm24.x; }
+ for (i=0;i<3;i++) {
+ s=(r[i]+big.x)-big.x;
+ sum+=s;
+ r[i]-=s;
+ }
+ t=0;
+ for (i=0;i<6;i++)
+ t+=r[5-i];
+ bb=(((((r[0]-t)+r[1])+r[2])+r[3])+r[4])+r[5];
+ s=(t+big.x)-big.x;
+ sum+=s;
+ t-=s;
+ b=t+bb;
+ bb=(t-b)+bb;
+ s=(sum+big1.x)-big1.x;
+ sum-=s;
+
+ b2=b;
+ bb2=bb;
+ sum2=sum;
+
+ sum=sum1+sum2;
+ b=b1+b2;
+ bb = (fabs(b1)>fabs(b2))? (b1-b)+b2 : (b2-b)+b1;
+ if (b > 0.5)
+ {b-=1.0; sum+=1.0;}
+ else if (b < -0.5)
+ {b+=1.0; sum-=1.0;}
+ s=b+(bb+bb1+bb2);
+ t=((b-s)+bb)+(bb1+bb2);
+ b=s*split;
+ t1=b-(b-s);
+ t2=s-t1;
+ b=s*hp0.x;
+ bb=(((t1*mp1.x-b)+t1*mp2.x)+t2*mp1.x)+(t2*mp2.x+s*hp1.x+t*hp0.x);
+ s=b+bb;
+ t=(b-s)+bb;
+ *a=s;
+ *aa=t;
+ return ((int) sum)&3; /* return quater of unit circle */
+}
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/branred.h b/REORG.TODO/sysdeps/ieee754/dbl-64/branred.h
new file mode 100644
index 0000000000..c3fd7dd27b
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/branred.h
@@ -0,0 +1,80 @@
+/*
+ * IBM Accurate Mathematical Library
+ * Written by International Business Machines Corp.
+ * Copyright (C) 2001-2017 Free Software Foundation, Inc.
+ *
+ * This program 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 2.1 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 program; if not, see <http://www.gnu.org/licenses/>.
+ */
+/************************************************************************/
+/* MODULE_NAME: branred.h */
+/* */
+/* */
+/* common data and variables definition for BIG or LITTLE ENDIAN */
+/************************************************************************/
+
+#ifndef BRANRED_H
+#define BRANRED_H
+
+#include <dla.h>
+
+#ifdef BIG_ENDI
+static const mynumber
+
+/**/ t576 = {{0x63f00000, 0x00000000}}, /* 2 ^ 576 */
+/**/ tm600 = {{0x1a700000, 0x00000000}}, /* 2 ^- 600 */
+/**/ tm24 = {{0x3e700000, 0x00000000}}, /* 2 ^- 24 */
+/**/ big = {{0x43380000, 0x00000000}}, /* 6755399441055744 */
+/**/ big1 = {{0x43580000, 0x00000000}}, /* 27021597764222976 */
+/**/ hp0 = {{0x3FF921FB, 0x54442D18}} ,/* 1.5707963267948966 */
+/**/ hp1 = {{0x3C91A626, 0x33145C07}} ,/* 6.123233995736766e-17 */
+/**/ mp1 = {{0x3FF921FB, 0x58000000}}, /* 1.5707963407039642 */
+/**/ mp2 = {{0xBE4DDE97, 0x40000000}}; /*-1.3909067675399456e-08 */
+
+#else
+#ifdef LITTLE_ENDI
+static const mynumber
+
+/**/ t576 = {{0x00000000, 0x63f00000}}, /* 2 ^ 576 */
+/**/ tm600 = {{0x00000000, 0x1a700000}}, /* 2 ^- 600 */
+/**/ tm24 = {{0x00000000, 0x3e700000}}, /* 2 ^- 24 */
+/**/ big = {{0x00000000, 0x43380000}}, /* 6755399441055744 */
+/**/ big1 = {{0x00000000, 0x43580000}}, /* 27021597764222976 */
+/**/ hp0 = {{0x54442D18, 0x3FF921FB}}, /* 1.5707963267948966 */
+/**/ hp1 = {{0x33145C07, 0x3C91A626}}, /* 6.123233995736766e-17 */
+/**/ mp1 = {{0x58000000, 0x3FF921FB}}, /* 1.5707963407039642 */
+/**/ mp2 = {{0x40000000, 0xBE4DDE97}}; /*-1.3909067675399456e-08 */
+
+#endif
+#endif
+
+static const double toverp[75] = { /* 2/ PI base 24*/
+ 10680707.0, 7228996.0, 1387004.0, 2578385.0, 16069853.0,
+ 12639074.0, 9804092.0, 4427841.0, 16666979.0, 11263675.0,
+ 12935607.0, 2387514.0, 4345298.0, 14681673.0, 3074569.0,
+ 13734428.0, 16653803.0, 1880361.0, 10960616.0, 8533493.0,
+ 3062596.0, 8710556.0, 7349940.0, 6258241.0, 3772886.0,
+ 3769171.0, 3798172.0, 8675211.0, 12450088.0, 3874808.0,
+ 9961438.0, 366607.0, 15675153.0, 9132554.0, 7151469.0,
+ 3571407.0, 2607881.0, 12013382.0, 4155038.0, 6285869.0,
+ 7677882.0, 13102053.0, 15825725.0, 473591.0, 9065106.0,
+ 15363067.0, 6271263.0, 9264392.0, 5636912.0, 4652155.0,
+ 7056368.0, 13614112.0, 10155062.0, 1944035.0, 9527646.0,
+ 15080200.0, 6658437.0, 6231200.0, 6832269.0, 16767104.0,
+ 5075751.0, 3212806.0, 1398474.0, 7579849.0, 6349435.0,
+ 12618859.0, 4703257.0, 12806093.0, 14477321.0, 2786137.0,
+ 12875403.0, 9837734.0, 14528324.0, 13719321.0, 343717.0 };
+
+static const double split = CN; /* 2^27 + 1 */
+
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/dbl2mpn.c b/REORG.TODO/sysdeps/ieee754/dbl-64/dbl2mpn.c
new file mode 100644
index 0000000000..8294dc26ed
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/dbl2mpn.c
@@ -0,0 +1,107 @@
+/* Copyright (C) 1993-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include "gmp.h"
+#include "gmp-impl.h"
+#include "longlong.h"
+#include <ieee754.h>
+#include <float.h>
+#include <stdlib.h>
+
+/* Convert a `double' in IEEE754 standard double-precision format to a
+ multi-precision integer representing the significand scaled up by its
+ number of bits (52 for double) and an integral power of two (MPN frexp). */
+
+mp_size_t
+__mpn_extract_double (mp_ptr res_ptr, mp_size_t size,
+ int *expt, int *is_neg,
+ double value)
+{
+ union ieee754_double u;
+ u.d = value;
+
+ *is_neg = u.ieee.negative;
+ *expt = (int) u.ieee.exponent - IEEE754_DOUBLE_BIAS;
+
+#if BITS_PER_MP_LIMB == 32
+ res_ptr[0] = u.ieee.mantissa1; /* Low-order 32 bits of fraction. */
+ res_ptr[1] = u.ieee.mantissa0; /* High-order 20 bits. */
+ # define N 2
+#elif BITS_PER_MP_LIMB == 64
+ /* Hopefully the compiler will combine the two bitfield extracts
+ and this composition into just the original quadword extract. */
+ res_ptr[0] = ((mp_limb_t) u.ieee.mantissa0 << 32) | u.ieee.mantissa1;
+ # define N 1
+#else
+ # error "mp_limb size " BITS_PER_MP_LIMB "not accounted for"
+#endif
+/* The format does not fill the last limb. There are some zeros. */
+#define NUM_LEADING_ZEROS (BITS_PER_MP_LIMB \
+ - (DBL_MANT_DIG - ((N - 1) * BITS_PER_MP_LIMB)))
+
+ if (u.ieee.exponent == 0)
+ {
+ /* A biased exponent of zero is a special case.
+ Either it is a zero or it is a denormal number. */
+ if (res_ptr[0] == 0 && res_ptr[N - 1] == 0) /* Assumes N<=2. */
+ /* It's zero. */
+ *expt = 0;
+ else
+ {
+ /* It is a denormal number, meaning it has no implicit leading
+ one bit, and its exponent is in fact the format minimum. */
+ int cnt;
+
+ if (res_ptr[N - 1] != 0)
+ {
+ count_leading_zeros (cnt, res_ptr[N - 1]);
+ cnt -= NUM_LEADING_ZEROS;
+#if N == 2
+ res_ptr[N - 1] = res_ptr[1] << cnt
+ | (N - 1)
+ * (res_ptr[0] >> (BITS_PER_MP_LIMB - cnt));
+ res_ptr[0] <<= cnt;
+#else
+ res_ptr[N - 1] <<= cnt;
+#endif
+ *expt = DBL_MIN_EXP - 1 - cnt;
+ }
+ else
+ {
+ count_leading_zeros (cnt, res_ptr[0]);
+ if (cnt >= NUM_LEADING_ZEROS)
+ {
+ res_ptr[N - 1] = res_ptr[0] << (cnt - NUM_LEADING_ZEROS);
+ res_ptr[0] = 0;
+ }
+ else
+ {
+ res_ptr[N - 1] = res_ptr[0] >> (NUM_LEADING_ZEROS - cnt);
+ res_ptr[0] <<= BITS_PER_MP_LIMB - (NUM_LEADING_ZEROS - cnt);
+ }
+ *expt = DBL_MIN_EXP - 1
+ - (BITS_PER_MP_LIMB - NUM_LEADING_ZEROS) - cnt;
+ }
+ }
+ }
+ else
+ /* Add the implicit leading one bit for a normalized number. */
+ res_ptr[N - 1] |= (mp_limb_t) 1 << (DBL_MANT_DIG - 1
+ - ((N - 1) * BITS_PER_MP_LIMB));
+
+ return N;
+}
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/dla.h b/REORG.TODO/sysdeps/ieee754/dbl-64/dla.h
new file mode 100644
index 0000000000..88e8ffb1ca
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/dla.h
@@ -0,0 +1,183 @@
+/*
+ * IBM Accurate Mathematical Library
+ * Written by International Business Machines Corp.
+ * Copyright (C) 2001-2017 Free Software Foundation, Inc.
+ *
+ * This program 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 2.1 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 program; if not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <math.h>
+
+/***********************************************************************/
+/*MODULE_NAME: dla.h */
+/* */
+/* This file holds C language macros for 'Double Length Floating Point */
+/* Arithmetic'. The macros are based on the paper: */
+/* T.J.Dekker, "A floating-point Technique for extending the */
+/* Available Precision", Number. Math. 18, 224-242 (1971). */
+/* A Double-Length number is defined by a pair (r,s), of IEEE double */
+/* precision floating point numbers that satisfy, */
+/* */
+/* abs(s) <= abs(r+s)*2**(-53)/(1+2**(-53)). */
+/* */
+/* The computer arithmetic assumed is IEEE double precision in */
+/* round to nearest mode. All variables in the macros must be of type */
+/* IEEE double. */
+/***********************************************************************/
+
+/* CN = 1+2**27 = '41a0000002000000' IEEE double format. Use it to split a
+ double for better accuracy. */
+#define CN 134217729.0
+
+
+/* Exact addition of two single-length floating point numbers, Dekker. */
+/* The macro produces a double-length number (z,zz) that satisfies */
+/* z+zz = x+y exactly. */
+
+#define EADD(x,y,z,zz) \
+ z=(x)+(y); zz=(fabs(x)>fabs(y)) ? (((x)-(z))+(y)) : (((y)-(z))+(x));
+
+
+/* Exact subtraction of two single-length floating point numbers, Dekker. */
+/* The macro produces a double-length number (z,zz) that satisfies */
+/* z+zz = x-y exactly. */
+
+#define ESUB(x,y,z,zz) \
+ z=(x)-(y); zz=(fabs(x)>fabs(y)) ? (((x)-(z))-(y)) : ((x)-((y)+(z)));
+
+
+#ifdef __FP_FAST_FMA
+# define DLA_FMS(x, y, z) __builtin_fma (x, y, -(z))
+#endif
+
+/* Exact multiplication of two single-length floating point numbers, */
+/* Veltkamp. The macro produces a double-length number (z,zz) that */
+/* satisfies z+zz = x*y exactly. p,hx,tx,hy,ty are temporary */
+/* storage variables of type double. */
+
+#ifdef DLA_FMS
+# define EMULV(x, y, z, zz, p, hx, tx, hy, ty) \
+ z = x * y; zz = DLA_FMS (x, y, z);
+#else
+# define EMULV(x, y, z, zz, p, hx, tx, hy, ty) \
+ p = CN * (x); hx = ((x) - p) + p; tx = (x) - hx; \
+ p = CN * (y); hy = ((y) - p) + p; ty = (y) - hy; \
+ z = (x) * (y); zz = (((hx * hy - z) + hx * ty) + tx * hy) + tx * ty;
+#endif
+
+
+/* Exact multiplication of two single-length floating point numbers, Dekker. */
+/* The macro produces a nearly double-length number (z,zz) (see Dekker) */
+/* that satisfies z+zz = x*y exactly. p,hx,tx,hy,ty,q are temporary */
+/* storage variables of type double. */
+
+#ifdef DLA_FMS
+# define MUL12(x,y,z,zz,p,hx,tx,hy,ty,q) \
+ EMULV(x,y,z,zz,p,hx,tx,hy,ty)
+#else
+# define MUL12(x,y,z,zz,p,hx,tx,hy,ty,q) \
+ p=CN*(x); hx=((x)-p)+p; tx=(x)-hx; \
+ p=CN*(y); hy=((y)-p)+p; ty=(y)-hy; \
+ p=hx*hy; q=hx*ty+tx*hy; z=p+q; zz=((p-z)+q)+tx*ty;
+#endif
+
+
+/* Double-length addition, Dekker. The macro produces a double-length */
+/* number (z,zz) which satisfies approximately z+zz = x+xx + y+yy. */
+/* An error bound: (abs(x+xx)+abs(y+yy))*4.94e-32. (x,xx), (y,yy) */
+/* are assumed to be double-length numbers. r,s are temporary */
+/* storage variables of type double. */
+
+#define ADD2(x, xx, y, yy, z, zz, r, s) \
+ r = (x) + (y); s = (fabs (x) > fabs (y)) ? \
+ (((((x) - r) + (y)) + (yy)) + (xx)) : \
+ (((((y) - r) + (x)) + (xx)) + (yy)); \
+ z = r + s; zz = (r - z) + s;
+
+
+/* Double-length subtraction, Dekker. The macro produces a double-length */
+/* number (z,zz) which satisfies approximately z+zz = x+xx - (y+yy). */
+/* An error bound: (abs(x+xx)+abs(y+yy))*4.94e-32. (x,xx), (y,yy) */
+/* are assumed to be double-length numbers. r,s are temporary */
+/* storage variables of type double. */
+
+#define SUB2(x, xx, y, yy, z, zz, r, s) \
+ r = (x) - (y); s = (fabs (x) > fabs (y)) ? \
+ (((((x) - r) - (y)) - (yy)) + (xx)) : \
+ ((((x) - ((y) + r)) + (xx)) - (yy)); \
+ z = r + s; zz = (r - z) + s;
+
+
+/* Double-length multiplication, Dekker. The macro produces a double-length */
+/* number (z,zz) which satisfies approximately z+zz = (x+xx)*(y+yy). */
+/* An error bound: abs((x+xx)*(y+yy))*1.24e-31. (x,xx), (y,yy) */
+/* are assumed to be double-length numbers. p,hx,tx,hy,ty,q,c,cc are */
+/* temporary storage variables of type double. */
+
+#define MUL2(x, xx, y, yy, z, zz, p, hx, tx, hy, ty, q, c, cc) \
+ MUL12 (x, y, c, cc, p, hx, tx, hy, ty, q) \
+ cc = ((x) * (yy) + (xx) * (y)) + cc; z = c + cc; zz = (c - z) + cc;
+
+
+/* Double-length division, Dekker. The macro produces a double-length */
+/* number (z,zz) which satisfies approximately z+zz = (x+xx)/(y+yy). */
+/* An error bound: abs((x+xx)/(y+yy))*1.50e-31. (x,xx), (y,yy) */
+/* are assumed to be double-length numbers. p,hx,tx,hy,ty,q,c,cc,u,uu */
+/* are temporary storage variables of type double. */
+
+#define DIV2(x,xx,y,yy,z,zz,p,hx,tx,hy,ty,q,c,cc,u,uu) \
+ c=(x)/(y); MUL12(c,y,u,uu,p,hx,tx,hy,ty,q) \
+ cc=(((((x)-u)-uu)+(xx))-c*(yy))/(y); z=c+cc; zz=(c-z)+cc;
+
+
+/* Double-length addition, slower but more accurate than ADD2. */
+/* The macro produces a double-length */
+/* number (z,zz) which satisfies approximately z+zz = (x+xx)+(y+yy). */
+/* An error bound: abs(x+xx + y+yy)*1.50e-31. (x,xx), (y,yy) */
+/* are assumed to be double-length numbers. r,rr,s,ss,u,uu,w */
+/* are temporary storage variables of type double. */
+
+#define ADD2A(x, xx, y, yy, z, zz, r, rr, s, ss, u, uu, w) \
+ r = (x) + (y); \
+ if (fabs (x) > fabs (y)) { rr = ((x) - r) + (y); s = (rr + (yy)) + (xx); } \
+ else { rr = ((y) - r) + (x); s = (rr + (xx)) + (yy); } \
+ if (rr != 0.0) { \
+ z = r + s; zz = (r - z) + s; } \
+ else { \
+ ss = (fabs (xx) > fabs (yy)) ? (((xx) - s) + (yy)) : (((yy) - s) + (xx));\
+ u = r + s; \
+ uu = (fabs (r) > fabs (s)) ? ((r - u) + s) : ((s - u) + r); \
+ w = uu + ss; z = u + w; \
+ zz = (fabs (u) > fabs (w)) ? ((u - z) + w) : ((w - z) + u); }
+
+
+/* Double-length subtraction, slower but more accurate than SUB2. */
+/* The macro produces a double-length */
+/* number (z,zz) which satisfies approximately z+zz = (x+xx)-(y+yy). */
+/* An error bound: abs(x+xx - (y+yy))*1.50e-31. (x,xx), (y,yy) */
+/* are assumed to be double-length numbers. r,rr,s,ss,u,uu,w */
+/* are temporary storage variables of type double. */
+
+#define SUB2A(x, xx, y, yy, z, zz, r, rr, s, ss, u, uu, w) \
+ r = (x) - (y); \
+ if (fabs (x) > fabs (y)) { rr = ((x) - r) - (y); s = (rr - (yy)) + (xx); } \
+ else { rr = (x) - ((y) + r); s = (rr + (xx)) - (yy); } \
+ if (rr != 0.0) { \
+ z = r + s; zz = (r - z) + s; } \
+ else { \
+ ss = (fabs (xx) > fabs (yy)) ? (((xx) - s) - (yy)) : ((xx) - ((yy) + s)); \
+ u = r + s; \
+ uu = (fabs (r) > fabs (s)) ? ((r - u) + s) : ((s - u) + r); \
+ w = uu + ss; z = u + w; \
+ zz = (fabs (u) > fabs (w)) ? ((u - z) + w) : ((w - z) + u); }
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/doasin.c b/REORG.TODO/sysdeps/ieee754/dbl-64/doasin.c
new file mode 100644
index 0000000000..7c2f3c3dc2
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/doasin.c
@@ -0,0 +1,84 @@
+/*
+ * IBM Accurate Mathematical Library
+ * written by International Business Machines Corp.
+ * Copyright (C) 2001-2017 Free Software Foundation, Inc.
+ *
+ * This program 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 2.1 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 program; if not, see <http://www.gnu.org/licenses/>.
+ */
+/**********************************************************************/
+/* MODULE_NAME: doasin.c */
+/* */
+/* FUNCTION: doasin */
+/* */
+/* FILES NEEDED:endian.h mydefs.h dla.h doasin.h */
+/* mpa.c */
+/* */
+/* Compute arcsin(x,dx,v) of double-length number (x+dx) the result */
+/* stored in v where v= v[0]+v[1] =arcsin(x+dx) */
+/**********************************************************************/
+
+#include "endian.h"
+#include "mydefs.h"
+#include <dla.h>
+#include <math_private.h>
+
+#ifndef SECTION
+# define SECTION
+#endif
+
+/********************************************************************/
+/* Compute arcsin(x,dx,v) of double-length number (x+dx) the result */
+/* stored in v where v= v[0]+v[1] =arcsin(x+dx) */
+/********************************************************************/
+void
+SECTION
+__doasin(double x, double dx, double v[]) {
+
+#include "doasin.h"
+
+ static const double
+ d5 = 0.22372159090911789889975459505194491E-01,
+ d6 = 0.17352764422456822913014975683014622E-01,
+ d7 = 0.13964843843786693521653681033981614E-01,
+ d8 = 0.11551791438485242609036067259086589E-01,
+ d9 = 0.97622386568166960207425666787248914E-02,
+ d10 = 0.83638737193775788576092749009744976E-02,
+ d11 = 0.79470250400727425881446981833568758E-02;
+
+ double xx,p,pp,u,uu,r,s;
+ double tc,tcc;
+#ifndef DLA_FMS
+ double hx,tx,hy,ty,tp,tq;
+#endif
+
+
+/* Taylor series for arcsin for Double-Length numbers */
+ xx = x*x+2.0*x*dx;
+ p = ((((((d11*xx+d10)*xx+d9)*xx+d8)*xx+d7)*xx+d6)*xx+d5)*xx;
+ pp = 0;
+
+ MUL2(x,dx,x,dx,u,uu,tp,hx,tx,hy,ty,tq,tc,tcc);
+ ADD2(p,pp,c4.x,cc4.x,p,pp,r,s);
+ MUL2(p,pp,u,uu,p,pp,tp,hx,tx,hy,ty,tq,tc,tcc);
+ ADD2(p,pp,c3.x,cc3.x,p,pp,r,s);
+ MUL2(p,pp,u,uu,p,pp,tp,hx,tx,hy,ty,tq,tc,tcc);
+ ADD2(p,pp,c2.x,cc2.x,p,pp,r,s);
+ MUL2(p,pp,u,uu,p,pp,tp,hx,tx,hy,ty,tq,tc,tcc);
+ ADD2(p,pp,c1.x,cc1.x,p,pp,r,s);
+ MUL2(p,pp,u,uu,p,pp,tp,hx,tx,hy,ty,tq,tc,tcc);
+ MUL2(p,pp,x,dx,p,pp,tp,hx,tx,hy,ty,tq,tc,tcc);
+ ADD2(p,pp,x,dx,p,pp,r,s);
+ v[0]=p;
+ v[1]=pp; /* arcsin(x+dx)=v[0]+v[1] */
+}
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/doasin.h b/REORG.TODO/sysdeps/ieee754/dbl-64/doasin.h
new file mode 100644
index 0000000000..c6b64597fb
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/doasin.h
@@ -0,0 +1,63 @@
+
+/*
+ * IBM Accurate Mathematical Library
+ * Written by International Business Machines Corp.
+ * Copyright (C) 2001-2017 Free Software Foundation, Inc.
+ *
+ * This program 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 2.1 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 program; if not, see <http://www.gnu.org/licenses/>.
+ */
+
+/************************************************************************/
+/* MODULE_NAME: doasin.h */
+/* */
+/* */
+/* common data and variables definition for BIG or LITTLE ENDIAN */
+/************************************************************************/
+
+
+
+#ifndef DOASIN_H
+#define DOASIN_H
+
+#ifdef BIG_ENDI
+
+ static const mynumber
+/**/ c1 = {{0x3FC55555, 0x55555555}}, /* 0.16666666666666666 */
+/**/ cc1 = {{0x3C655555, 0x55775389}}, /* 9.2518585419753846e-18 */
+/**/ c2 = {{0x3FB33333, 0x33333333}}, /* 0.074999999999999997 */
+/**/ cc2 = {{0x3C499993, 0x63F1A115}}, /* 2.7755472886508899e-18 */
+/**/ c3 = {{0x3FA6DB6D, 0xB6DB6DB7}}, /* 0.044642857142857144 */
+/**/ cc3 = {{0xBC320FC0, 0x3D5CF0C5}}, /* -9.7911734574147224e-19 */
+/**/ c4 = {{0x3F9F1C71, 0xC71C71C5}}, /* 0.030381944444444437 */
+/**/ cc4 = {{0xBC02B240, 0xFF23ED1E}}; /* -1.2669108566898312e-19 */
+
+#else
+#ifdef LITTLE_ENDI
+
+ static const mynumber
+/**/ c1 = {{0x55555555, 0x3FC55555}}, /* 0.16666666666666666 */
+/**/ cc1 = {{0x55775389, 0x3C655555}}, /* 9.2518585419753846e-18 */
+/**/ c2 = {{0x33333333, 0x3FB33333}}, /* 0.074999999999999997 */
+/**/ cc2 = {{0x63F1A115, 0x3C499993}}, /* 2.7755472886508899e-18 */
+/**/ c3 = {{0xB6DB6DB7, 0x3FA6DB6D}}, /* 0.044642857142857144 */
+/**/ cc3 = {{0x3D5CF0C5, 0xBC320FC0}}, /* -9.7911734574147224e-19 */
+/**/ c4 = {{0xC71C71C5, 0x3F9F1C71}}, /* 0.030381944444444437 */
+/**/ cc4 = {{0xFF23ED1E, 0xBC02B240}}; /* -1.2669108566898312e-19 */
+
+
+#endif
+#endif
+
+
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/dosincos.c b/REORG.TODO/sysdeps/ieee754/dbl-64/dosincos.c
new file mode 100644
index 0000000000..372872b42b
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/dosincos.c
@@ -0,0 +1,223 @@
+/*
+ * IBM Accurate Mathematical Library
+ * written by International Business Machines Corp.
+ * Copyright (C) 2001-2017 Free Software Foundation, Inc.
+ *
+ * This program 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 2.1 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 program; if not, see <http://www.gnu.org/licenses/>.
+ */
+/********************************************************************/
+/* */
+/* MODULE_NAME: dosincos.c */
+/* */
+/* */
+/* FUNCTIONS: dubsin */
+/* dubcos */
+/* docos */
+/* FILES NEEDED: endian.h mydefs.h dla.h dosincos.h */
+/* sincos.tbl */
+/* */
+/* Routines compute sin() and cos() as Double-Length numbers */
+/********************************************************************/
+
+
+
+#include "endian.h"
+#include "mydefs.h"
+#include <dla.h>
+#include "dosincos.h"
+#include <math_private.h>
+
+#ifndef SECTION
+# define SECTION
+#endif
+
+extern const union
+{
+ int4 i[880];
+ double x[440];
+} __sincostab attribute_hidden;
+
+/***********************************************************************/
+/* Routine receive Double-Length number (x+dx) and computing sin(x+dx) */
+/* as Double-Length number and store it at array v .It computes it by */
+/* arithmetic action on Double-Length numbers */
+/*(x+dx) between 0 and PI/4 */
+/***********************************************************************/
+
+void
+SECTION
+__dubsin (double x, double dx, double v[])
+{
+ double r, s, c, cc, d, dd, d2, dd2, e, ee,
+ sn, ssn, cs, ccs, ds, dss, dc, dcc;
+#ifndef DLA_FMS
+ double p, hx, tx, hy, ty, q;
+#endif
+ mynumber u;
+ int4 k;
+
+ u.x = x + big.x;
+ k = u.i[LOW_HALF] << 2;
+ x = x - (u.x - big.x);
+ d = x + dx;
+ dd = (x - d) + dx;
+ /* sin(x+dx)=sin(Xi+t)=sin(Xi)*cos(t) + cos(Xi)sin(t) where t ->0 */
+ MUL2 (d, dd, d, dd, d2, dd2, p, hx, tx, hy, ty, q, c, cc);
+ sn = __sincostab.x[k]; /* */
+ ssn = __sincostab.x[k + 1]; /* sin(Xi) and cos(Xi) */
+ cs = __sincostab.x[k + 2]; /* */
+ ccs = __sincostab.x[k + 3]; /* */
+ /* Taylor series for sin ds=sin(t) */
+ MUL2 (d2, dd2, s7.x, ss7.x, ds, dss, p, hx, tx, hy, ty, q, c, cc);
+ ADD2 (ds, dss, s5.x, ss5.x, ds, dss, r, s);
+ MUL2 (d2, dd2, ds, dss, ds, dss, p, hx, tx, hy, ty, q, c, cc);
+ ADD2 (ds, dss, s3.x, ss3.x, ds, dss, r, s);
+ MUL2 (d2, dd2, ds, dss, ds, dss, p, hx, tx, hy, ty, q, c, cc);
+ MUL2 (d, dd, ds, dss, ds, dss, p, hx, tx, hy, ty, q, c, cc);
+ ADD2 (ds, dss, d, dd, ds, dss, r, s);
+
+ /* Taylor series for cos dc=cos(t) */
+ MUL2 (d2, dd2, c8.x, cc8.x, dc, dcc, p, hx, tx, hy, ty, q, c, cc);
+ ADD2 (dc, dcc, c6.x, cc6.x, dc, dcc, r, s);
+ MUL2 (d2, dd2, dc, dcc, dc, dcc, p, hx, tx, hy, ty, q, c, cc);
+ ADD2 (dc, dcc, c4.x, cc4.x, dc, dcc, r, s);
+ MUL2 (d2, dd2, dc, dcc, dc, dcc, p, hx, tx, hy, ty, q, c, cc);
+ ADD2 (dc, dcc, c2.x, cc2.x, dc, dcc, r, s);
+ MUL2 (d2, dd2, dc, dcc, dc, dcc, p, hx, tx, hy, ty, q, c, cc);
+
+ MUL2 (cs, ccs, ds, dss, e, ee, p, hx, tx, hy, ty, q, c, cc);
+ MUL2 (dc, dcc, sn, ssn, dc, dcc, p, hx, tx, hy, ty, q, c, cc);
+ SUB2 (e, ee, dc, dcc, e, ee, r, s);
+ ADD2 (e, ee, sn, ssn, e, ee, r, s); /* e+ee=sin(x+dx) */
+
+ v[0] = e;
+ v[1] = ee;
+}
+/**********************************************************************/
+/* Routine receive Double-Length number (x+dx) and computes cos(x+dx) */
+/* as Double-Length number and store it in array v .It computes it by */
+/* arithmetic action on Double-Length numbers */
+/*(x+dx) between 0 and PI/4 */
+/**********************************************************************/
+
+void
+SECTION
+__dubcos (double x, double dx, double v[])
+{
+ double r, s, c, cc, d, dd, d2, dd2, e, ee,
+ sn, ssn, cs, ccs, ds, dss, dc, dcc;
+#ifndef DLA_FMS
+ double p, hx, tx, hy, ty, q;
+#endif
+ mynumber u;
+ int4 k;
+ u.x = x + big.x;
+ k = u.i[LOW_HALF] << 2;
+ x = x - (u.x - big.x);
+ d = x + dx;
+ dd = (x - d) + dx; /* cos(x+dx)=cos(Xi+t)=cos(Xi)cos(t) - sin(Xi)sin(t) */
+ MUL2 (d, dd, d, dd, d2, dd2, p, hx, tx, hy, ty, q, c, cc);
+ sn = __sincostab.x[k]; /* */
+ ssn = __sincostab.x[k + 1]; /* sin(Xi) and cos(Xi) */
+ cs = __sincostab.x[k + 2]; /* */
+ ccs = __sincostab.x[k + 3]; /* */
+ MUL2 (d2, dd2, s7.x, ss7.x, ds, dss, p, hx, tx, hy, ty, q, c, cc);
+ ADD2 (ds, dss, s5.x, ss5.x, ds, dss, r, s);
+ MUL2 (d2, dd2, ds, dss, ds, dss, p, hx, tx, hy, ty, q, c, cc);
+ ADD2 (ds, dss, s3.x, ss3.x, ds, dss, r, s);
+ MUL2 (d2, dd2, ds, dss, ds, dss, p, hx, tx, hy, ty, q, c, cc);
+ MUL2 (d, dd, ds, dss, ds, dss, p, hx, tx, hy, ty, q, c, cc);
+ ADD2 (ds, dss, d, dd, ds, dss, r, s);
+
+ MUL2 (d2, dd2, c8.x, cc8.x, dc, dcc, p, hx, tx, hy, ty, q, c, cc);
+ ADD2 (dc, dcc, c6.x, cc6.x, dc, dcc, r, s);
+ MUL2 (d2, dd2, dc, dcc, dc, dcc, p, hx, tx, hy, ty, q, c, cc);
+ ADD2 (dc, dcc, c4.x, cc4.x, dc, dcc, r, s);
+ MUL2 (d2, dd2, dc, dcc, dc, dcc, p, hx, tx, hy, ty, q, c, cc);
+ ADD2 (dc, dcc, c2.x, cc2.x, dc, dcc, r, s);
+ MUL2 (d2, dd2, dc, dcc, dc, dcc, p, hx, tx, hy, ty, q, c, cc);
+
+ MUL2 (cs, ccs, ds, dss, e, ee, p, hx, tx, hy, ty, q, c, cc);
+ MUL2 (dc, dcc, sn, ssn, dc, dcc, p, hx, tx, hy, ty, q, c, cc);
+
+ MUL2 (d2, dd2, s7.x, ss7.x, ds, dss, p, hx, tx, hy, ty, q, c, cc);
+ ADD2 (ds, dss, s5.x, ss5.x, ds, dss, r, s);
+ MUL2 (d2, dd2, ds, dss, ds, dss, p, hx, tx, hy, ty, q, c, cc);
+ ADD2 (ds, dss, s3.x, ss3.x, ds, dss, r, s);
+ MUL2 (d2, dd2, ds, dss, ds, dss, p, hx, tx, hy, ty, q, c, cc);
+ MUL2 (d, dd, ds, dss, ds, dss, p, hx, tx, hy, ty, q, c, cc);
+ ADD2 (ds, dss, d, dd, ds, dss, r, s);
+ MUL2 (d2, dd2, c8.x, cc8.x, dc, dcc, p, hx, tx, hy, ty, q, c, cc);
+ ADD2 (dc, dcc, c6.x, cc6.x, dc, dcc, r, s);
+ MUL2 (d2, dd2, dc, dcc, dc, dcc, p, hx, tx, hy, ty, q, c, cc);
+ ADD2 (dc, dcc, c4.x, cc4.x, dc, dcc, r, s);
+ MUL2 (d2, dd2, dc, dcc, dc, dcc, p, hx, tx, hy, ty, q, c, cc);
+ ADD2 (dc, dcc, c2.x, cc2.x, dc, dcc, r, s);
+ MUL2 (d2, dd2, dc, dcc, dc, dcc, p, hx, tx, hy, ty, q, c, cc);
+ MUL2 (sn, ssn, ds, dss, e, ee, p, hx, tx, hy, ty, q, c, cc);
+ MUL2 (dc, dcc, cs, ccs, dc, dcc, p, hx, tx, hy, ty, q, c, cc);
+ ADD2 (e, ee, dc, dcc, e, ee, r, s);
+ SUB2 (cs, ccs, e, ee, e, ee, r, s);
+
+ v[0] = e;
+ v[1] = ee;
+}
+/**********************************************************************/
+/* Routine receive Double-Length number (x+dx) and computes cos(x+dx) */
+/* as Double-Length number and store it in array v */
+/**********************************************************************/
+void
+SECTION
+__docos (double x, double dx, double v[])
+{
+ double y, yy, p, w[2];
+ if (x > 0)
+ {
+ y = x; yy = dx;
+ }
+ else
+ {
+ y = -x; yy = -dx;
+ }
+ if (y < 0.5 * hp0.x) /* y< PI/4 */
+ {
+ __dubcos (y, yy, w); v[0] = w[0]; v[1] = w[1];
+ }
+ else if (y < 1.5 * hp0.x) /* y< 3/4 * PI */
+ {
+ p = hp0.x - y; /* p = PI/2 - y */
+ yy = hp1.x - yy;
+ y = p + yy;
+ yy = (p - y) + yy;
+ if (y > 0)
+ {
+ __dubsin (y, yy, w); v[0] = w[0]; v[1] = w[1];
+ }
+ /* cos(x) = sin ( 90 - x ) */
+ else
+ {
+ __dubsin (-y, -yy, w); v[0] = -w[0]; v[1] = -w[1];
+ }
+ }
+ else /* y>= 3/4 * PI */
+ {
+ p = 2.0 * hp0.x - y; /* p = PI- y */
+ yy = 2.0 * hp1.x - yy;
+ y = p + yy;
+ yy = (p - y) + yy;
+ __dubcos (y, yy, w);
+ v[0] = -w[0];
+ v[1] = -w[1];
+ }
+}
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/dosincos.h b/REORG.TODO/sysdeps/ieee754/dbl-64/dosincos.h
new file mode 100644
index 0000000000..9fda3d77cc
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/dosincos.h
@@ -0,0 +1,80 @@
+
+/*
+ * IBM Accurate Mathematical Library
+ * Written by International Business Machines Corp.
+ * Copyright (C) 2001-2017 Free Software Foundation, Inc.
+ *
+ * This program 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 2.1 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 program; if not, see <http://www.gnu.org/licenses/>.
+ */
+
+/************************************************************************/
+/* MODULE_NAME: dosincos.h */
+/* */
+/* */
+/* common data and variables definition for BIG or LITTLE ENDIAN */
+/************************************************************************/
+
+
+
+#ifndef DOSINCOS_H
+#define DOSINCOS_H
+
+
+#ifdef BIG_ENDI
+static const mynumber
+/**/ s3 = {{0xBFC55555, 0x55555555}},/* -0.16666666666666666 */
+/**/ ss3 = {{0xBC6553AA, 0xE77EE482}},/* -9.2490366677784492e-18 */
+/**/ s5 = {{0x3F811111, 0x11110F15}},/* 0.008333333333332452 */
+/**/ ss5 = {{0xBC21AC06, 0xDA488820}},/* -4.7899996586987931e-19 */
+/**/ s7 = {{0xBF2A019F, 0x5816C78D}},/* -0.00019841261022928957 */
+/**/ ss7 = {{0x3BCDCEC9, 0x6A18BF2A}},/* 1.2624077757871259e-20 */
+/**/ c2 = {{0x3FE00000, 0x00000000}},/* 0.5 */
+/**/ cc2 = {{0xBA282FD8, 0x00000000}},/* -1.5264073330037701e-28 */
+/**/ c4 = {{0xBFA55555, 0x55555555}},/* -0.041666666666666664 */
+/**/ cc4 = {{0xBC4554BC, 0x2FFF257E}},/* -2.312711276085743e-18 */
+/**/ c6 = {{0x3F56C16C, 0x16C16A96}},/* 0.0013888888888888055 */
+/**/ cc6 = {{0xBBD2E846, 0xE6346F14}},/* -1.6015133010194884e-20 */
+/**/ c8 = {{0xBEFA019F, 0x821D5987}},/* -2.480157866754367e-05 */
+/**/ cc8 = {{0x3B7AB71E, 0x72FFE5CC}},/* 3.5357416224857556e-22 */
+
+/**/ big = {{0x42c80000, 0x00000000}}, /* 52776558133248 */
+
+/**/ hp0 = {{0x3FF921FB, 0x54442D18}}, /* PI / 2 */
+/**/ hp1 = {{0x3C91A626, 0x33145C07}}; /* 6.123233995736766e-17 */
+#else
+#ifdef LITTLE_ENDI
+static const mynumber
+/**/ s3 = {{0x55555555, 0xBFC55555}},/* -0.16666666666666666 */
+/**/ ss3 = {{0xE77EE482, 0xBC6553AA}},/* -9.2490366677784492e-18 */
+/**/ s5 = {{0x11110F15, 0x3F811111}},/* 0.008333333333332452 */
+/**/ ss5 = {{0xDA488820, 0xBC21AC06}},/* -4.7899996586987931e-19 */
+/**/ s7 = {{0x5816C78D, 0xBF2A019F}},/* -0.00019841261022928957 */
+/**/ ss7 = {{0x6A18BF2A, 0x3BCDCEC9}},/* 1.2624077757871259e-20 */
+/**/ c2 = {{0x00000000, 0x3FE00000}},/* 0.5 */
+/**/ cc2 = {{0x00000000, 0xBA282FD8}},/* -1.5264073330037701e-28 */
+/**/ c4 = {{0x55555555, 0xBFA55555}},/* -0.041666666666666664 */
+/**/ cc4 = {{0x2FFF257E, 0xBC4554BC}},/* -2.312711276085743e-18 */
+/**/ c6 = {{0x16C16A96, 0x3F56C16C}},/* 0.0013888888888888055 */
+/**/ cc6 = {{0xE6346F14, 0xBBD2E846}},/* -1.6015133010194884e-20 */
+/**/ c8 = {{0x821D5987, 0xBEFA019F}},/* -2.480157866754367e-05 */
+/**/ cc8 = {{0x72FFE5CC, 0x3B7AB71E}},/* 3.5357416224857556e-22 */
+
+/**/ big = {{0x00000000, 0x42c80000}}, /* 52776558133248 */
+
+/**/ hp0 = {{0x54442D18, 0x3FF921FB}}, /* PI / 2 */
+/**/ hp1 = {{0x33145C07, 0x3C91A626}}; /* 6.123233995736766e-17 */
+#endif
+#endif
+
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/e_acos.c b/REORG.TODO/sysdeps/ieee754/dbl-64/e_acos.c
new file mode 100644
index 0000000000..8f7cd89249
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/e_acos.c
@@ -0,0 +1 @@
+/* In e_asin.c */
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/e_acosh.c b/REORG.TODO/sysdeps/ieee754/dbl-64/e_acosh.c
new file mode 100644
index 0000000000..c1f3590f75
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/e_acosh.c
@@ -0,0 +1,69 @@
+/* @(#)e_acosh.c 5.1 93/09/24 */
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+/* __ieee754_acosh(x)
+ * Method :
+ * Based on
+ * acosh(x) = log [ x + sqrt(x*x-1) ]
+ * we have
+ * acosh(x) := log(x)+ln2, if x is large; else
+ * acosh(x) := log(2x-1/(sqrt(x*x-1)+x)) if x>2; else
+ * acosh(x) := log1p(t+sqrt(2.0*t+t*t)); where t=x-1.
+ *
+ * Special cases:
+ * acosh(x) is NaN with signal if x<1.
+ * acosh(NaN) is NaN without signal.
+ */
+
+#include <math.h>
+#include <math_private.h>
+
+static const double
+ one = 1.0,
+ ln2 = 6.93147180559945286227e-01; /* 0x3FE62E42, 0xFEFA39EF */
+
+double
+__ieee754_acosh (double x)
+{
+ double t;
+ int32_t hx;
+ u_int32_t lx;
+ EXTRACT_WORDS (hx, lx, x);
+ if (hx < 0x3ff00000) /* x < 1 */
+ {
+ return (x - x) / (x - x);
+ }
+ else if (hx >= 0x41b00000) /* x > 2**28 */
+ {
+ if (hx >= 0x7ff00000) /* x is inf of NaN */
+ {
+ return x + x;
+ }
+ else
+ return __ieee754_log (x) + ln2; /* acosh(huge)=log(2x) */
+ }
+ else if (((hx - 0x3ff00000) | lx) == 0)
+ {
+ return 0.0; /* acosh(1) = 0 */
+ }
+ else if (hx > 0x40000000) /* 2**28 > x > 2 */
+ {
+ t = x * x;
+ return __ieee754_log (2.0 * x - one / (x + __ieee754_sqrt (t - one)));
+ }
+ else /* 1<x<2 */
+ {
+ t = x - one;
+ return __log1p (t + __ieee754_sqrt (2.0 * t + t * t));
+ }
+}
+strong_alias (__ieee754_acosh, __acosh_finite)
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/e_asin.c b/REORG.TODO/sysdeps/ieee754/dbl-64/e_asin.c
new file mode 100644
index 0000000000..9808f3981c
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/e_asin.c
@@ -0,0 +1,647 @@
+/*
+ * IBM Accurate Mathematical Library
+ * written by International Business Machines Corp.
+ * Copyright (C) 2001-2017 Free Software Foundation, Inc.
+ *
+ * This program 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 2.1 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 program; if not, see <http://www.gnu.org/licenses/>.
+ */
+/******************************************************************/
+/* MODULE_NAME:uasncs.c */
+/* */
+/* FUNCTIONS: uasin */
+/* uacos */
+/* FILES NEEDED: dla.h endian.h mpa.h mydefs.h usncs.h */
+/* doasin.c sincos32.c dosincos.c mpa.c */
+/* sincos.tbl asincos.tbl powtwo.tbl root.tbl */
+/* */
+/* Ultimate asin/acos routines. Given an IEEE double machine */
+/* number x, compute the correctly rounded value of */
+/* arcsin(x)or arccos(x) according to the function called. */
+/* Assumption: Machine arithmetic operations are performed in */
+/* round to nearest mode of IEEE 754 standard. */
+/* */
+/******************************************************************/
+#include "endian.h"
+#include "mydefs.h"
+#include "asincos.tbl"
+#include "root.tbl"
+#include "powtwo.tbl"
+#include "MathLib.h"
+#include "uasncs.h"
+#include <float.h>
+#include <math.h>
+#include <math_private.h>
+
+#ifndef SECTION
+# define SECTION
+#endif
+
+void __doasin(double x, double dx, double w[]);
+void __dubsin(double x, double dx, double v[]);
+void __dubcos(double x, double dx, double v[]);
+void __docos(double x, double dx, double v[]);
+double __sin32(double x, double res, double res1);
+double __cos32(double x, double res, double res1);
+
+/***************************************************************************/
+/* An ultimate asin routine. Given an IEEE double machine number x */
+/* it computes the correctly rounded (to nearest) value of arcsin(x) */
+/***************************************************************************/
+double
+SECTION
+__ieee754_asin(double x){
+ double x1,x2,xx,s1,s2,res1,p,t,res,r,cor,cc,y,c,z,w[2];
+ mynumber u,v;
+ int4 k,m,n;
+
+ u.x = x;
+ m = u.i[HIGH_HALF];
+ k = 0x7fffffff&m; /* no sign */
+
+ if (k < 0x3e500000)
+ {
+ math_check_force_underflow (x);
+ return x; /* for x->0 => sin(x)=x */
+ }
+ /*----------------------2^-26 <= |x| < 2^ -3 -----------------*/
+ else
+ if (k < 0x3fc00000) {
+ x2 = x*x;
+ t = (((((f6*x2 + f5)*x2 + f4)*x2 + f3)*x2 + f2)*x2 + f1)*(x2*x);
+ res = x+t; /* res=arcsin(x) according to Taylor series */
+ cor = (x-res)+t;
+ if (res == res+1.025*cor) return res;
+ else {
+ x1 = x+big;
+ xx = x*x;
+ x1 -= big;
+ x2 = x - x1;
+ p = x1*x1*x1;
+ s1 = a1.x*p;
+ s2 = ((((((c7*xx + c6)*xx + c5)*xx + c4)*xx + c3)*xx + c2)*xx*xx*x +
+ ((a1.x+a2.x)*x2*x2+ 0.5*x1*x)*x2) + a2.x*p;
+ res1 = x+s1;
+ s2 = ((x-res1)+s1)+s2;
+ res = res1+s2;
+ cor = (res1-res)+s2;
+ if (res == res+1.00014*cor) return res;
+ else {
+ __doasin(x,0,w);
+ if (w[0]==(w[0]+1.00000001*w[1])) return w[0];
+ else {
+ y=fabs(x);
+ res=fabs(w[0]);
+ res1=fabs(w[0]+1.1*w[1]);
+ return (m>0)?__sin32(y,res,res1):-__sin32(y,res,res1);
+ }
+ }
+ }
+ }
+ /*---------------------0.125 <= |x| < 0.5 -----------------------------*/
+ else if (k < 0x3fe00000) {
+ if (k<0x3fd00000) n = 11*((k&0x000fffff)>>15);
+ else n = 11*((k&0x000fffff)>>14)+352;
+ if (m>0) xx = x - asncs.x[n];
+ else xx = -x - asncs.x[n];
+ t = asncs.x[n+1]*xx;
+ p=xx*xx*(asncs.x[n+2]+xx*(asncs.x[n+3]+xx*(asncs.x[n+4]+xx*(asncs.x[n+5]
+ +xx*asncs.x[n+6]))))+asncs.x[n+7];
+ t+=p;
+ res =asncs.x[n+8] +t;
+ cor = (asncs.x[n+8]-res)+t;
+ if (res == res+1.05*cor) return (m>0)?res:-res;
+ else {
+ r=asncs.x[n+8]+xx*asncs.x[n+9];
+ t=((asncs.x[n+8]-r)+xx*asncs.x[n+9])+(p+xx*asncs.x[n+10]);
+ res = r+t;
+ cor = (r-res)+t;
+ if (res == res+1.0005*cor) return (m>0)?res:-res;
+ else {
+ res1=res+1.1*cor;
+ z=0.5*(res1-res);
+ __dubsin(res,z,w);
+ z=(w[0]-fabs(x))+w[1];
+ if (z>1.0e-27) return (m>0)?min(res,res1):-min(res,res1);
+ else if (z<-1.0e-27) return (m>0)?max(res,res1):-max(res,res1);
+ else {
+ y=fabs(x);
+ return (m>0)?__sin32(y,res,res1):-__sin32(y,res,res1);
+ }
+ }
+ }
+ } /* else if (k < 0x3fe00000) */
+ /*-------------------- 0.5 <= |x| < 0.75 -----------------------------*/
+ else
+ if (k < 0x3fe80000) {
+ n = 1056+((k&0x000fe000)>>11)*3;
+ if (m>0) xx = x - asncs.x[n];
+ else xx = -x - asncs.x[n];
+ t = asncs.x[n+1]*xx;
+ p=xx*xx*(asncs.x[n+2]+xx*(asncs.x[n+3]+xx*(asncs.x[n+4]+xx*(asncs.x[n+5]
+ +xx*(asncs.x[n+6]+xx*asncs.x[n+7])))))+asncs.x[n+8];
+ t+=p;
+ res =asncs.x[n+9] +t;
+ cor = (asncs.x[n+9]-res)+t;
+ if (res == res+1.01*cor) return (m>0)?res:-res;
+ else {
+ r=asncs.x[n+9]+xx*asncs.x[n+10];
+ t=((asncs.x[n+9]-r)+xx*asncs.x[n+10])+(p+xx*asncs.x[n+11]);
+ res = r+t;
+ cor = (r-res)+t;
+ if (res == res+1.0005*cor) return (m>0)?res:-res;
+ else {
+ res1=res+1.1*cor;
+ z=0.5*(res1-res);
+ __dubsin(res,z,w);
+ z=(w[0]-fabs(x))+w[1];
+ if (z>1.0e-27) return (m>0)?min(res,res1):-min(res,res1);
+ else if (z<-1.0e-27) return (m>0)?max(res,res1):-max(res,res1);
+ else {
+ y=fabs(x);
+ return (m>0)?__sin32(y,res,res1):-__sin32(y,res,res1);
+ }
+ }
+ }
+ } /* else if (k < 0x3fe80000) */
+ /*--------------------- 0.75 <= |x|< 0.921875 ----------------------*/
+ else
+ if (k < 0x3fed8000) {
+ n = 992+((k&0x000fe000)>>13)*13;
+ if (m>0) xx = x - asncs.x[n];
+ else xx = -x - asncs.x[n];
+ t = asncs.x[n+1]*xx;
+ p=xx*xx*(asncs.x[n+2]+xx*(asncs.x[n+3]+xx*(asncs.x[n+4]+xx*(asncs.x[n+5]
+ +xx*(asncs.x[n+6]+xx*(asncs.x[n+7]+xx*asncs.x[n+8]))))))+asncs.x[n+9];
+ t+=p;
+ res =asncs.x[n+10] +t;
+ cor = (asncs.x[n+10]-res)+t;
+ if (res == res+1.01*cor) return (m>0)?res:-res;
+ else {
+ r=asncs.x[n+10]+xx*asncs.x[n+11];
+ t=((asncs.x[n+10]-r)+xx*asncs.x[n+11])+(p+xx*asncs.x[n+12]);
+ res = r+t;
+ cor = (r-res)+t;
+ if (res == res+1.0008*cor) return (m>0)?res:-res;
+ else {
+ res1=res+1.1*cor;
+ z=0.5*(res1-res);
+ y=hp0.x-res;
+ z=((hp0.x-y)-res)+(hp1.x-z);
+ __dubcos(y,z,w);
+ z=(w[0]-fabs(x))+w[1];
+ if (z>1.0e-27) return (m>0)?min(res,res1):-min(res,res1);
+ else if (z<-1.0e-27) return (m>0)?max(res,res1):-max(res,res1);
+ else {
+ y=fabs(x);
+ return (m>0)?__sin32(y,res,res1):-__sin32(y,res,res1);
+ }
+ }
+ }
+ } /* else if (k < 0x3fed8000) */
+ /*-------------------0.921875 <= |x| < 0.953125 ------------------------*/
+ else
+ if (k < 0x3fee8000) {
+ n = 884+((k&0x000fe000)>>13)*14;
+ if (m>0) xx = x - asncs.x[n];
+ else xx = -x - asncs.x[n];
+ t = asncs.x[n+1]*xx;
+ p=xx*xx*(asncs.x[n+2]+xx*(asncs.x[n+3]+xx*(asncs.x[n+4]+
+ xx*(asncs.x[n+5]+xx*(asncs.x[n+6]
+ +xx*(asncs.x[n+7]+xx*(asncs.x[n+8]+
+ xx*asncs.x[n+9])))))))+asncs.x[n+10];
+ t+=p;
+ res =asncs.x[n+11] +t;
+ cor = (asncs.x[n+11]-res)+t;
+ if (res == res+1.01*cor) return (m>0)?res:-res;
+ else {
+ r=asncs.x[n+11]+xx*asncs.x[n+12];
+ t=((asncs.x[n+11]-r)+xx*asncs.x[n+12])+(p+xx*asncs.x[n+13]);
+ res = r+t;
+ cor = (r-res)+t;
+ if (res == res+1.0007*cor) return (m>0)?res:-res;
+ else {
+ res1=res+1.1*cor;
+ z=0.5*(res1-res);
+ y=(hp0.x-res)-z;
+ z=y+hp1.x;
+ y=(y-z)+hp1.x;
+ __dubcos(z,y,w);
+ z=(w[0]-fabs(x))+w[1];
+ if (z>1.0e-27) return (m>0)?min(res,res1):-min(res,res1);
+ else if (z<-1.0e-27) return (m>0)?max(res,res1):-max(res,res1);
+ else {
+ y=fabs(x);
+ return (m>0)?__sin32(y,res,res1):-__sin32(y,res,res1);
+ }
+ }
+ }
+ } /* else if (k < 0x3fee8000) */
+
+ /*--------------------0.953125 <= |x| < 0.96875 ------------------------*/
+ else
+ if (k < 0x3fef0000) {
+ n = 768+((k&0x000fe000)>>13)*15;
+ if (m>0) xx = x - asncs.x[n];
+ else xx = -x - asncs.x[n];
+ t = asncs.x[n+1]*xx;
+ p=xx*xx*(asncs.x[n+2]+xx*(asncs.x[n+3]+xx*(asncs.x[n+4]+
+ xx*(asncs.x[n+5]+xx*(asncs.x[n+6]
+ +xx*(asncs.x[n+7]+xx*(asncs.x[n+8]+
+ xx*(asncs.x[n+9]+xx*asncs.x[n+10]))))))))+asncs.x[n+11];
+ t+=p;
+ res =asncs.x[n+12] +t;
+ cor = (asncs.x[n+12]-res)+t;
+ if (res == res+1.01*cor) return (m>0)?res:-res;
+ else {
+ r=asncs.x[n+12]+xx*asncs.x[n+13];
+ t=((asncs.x[n+12]-r)+xx*asncs.x[n+13])+(p+xx*asncs.x[n+14]);
+ res = r+t;
+ cor = (r-res)+t;
+ if (res == res+1.0007*cor) return (m>0)?res:-res;
+ else {
+ res1=res+1.1*cor;
+ z=0.5*(res1-res);
+ y=(hp0.x-res)-z;
+ z=y+hp1.x;
+ y=(y-z)+hp1.x;
+ __dubcos(z,y,w);
+ z=(w[0]-fabs(x))+w[1];
+ if (z>1.0e-27) return (m>0)?min(res,res1):-min(res,res1);
+ else if (z<-1.0e-27) return (m>0)?max(res,res1):-max(res,res1);
+ else {
+ y=fabs(x);
+ return (m>0)?__sin32(y,res,res1):-__sin32(y,res,res1);
+ }
+ }
+ }
+ } /* else if (k < 0x3fef0000) */
+ /*--------------------0.96875 <= |x| < 1 --------------------------------*/
+ else
+ if (k<0x3ff00000) {
+ z = 0.5*((m>0)?(1.0-x):(1.0+x));
+ v.x=z;
+ k=v.i[HIGH_HALF];
+ t=inroot[(k&0x001fffff)>>14]*powtwo[511-(k>>21)];
+ r=1.0-t*t*z;
+ t = t*(rt0+r*(rt1+r*(rt2+r*rt3)));
+ c=t*z;
+ t=c*(1.5-0.5*t*c);
+ y=(c+t24)-t24;
+ cc = (z-y*y)/(t+y);
+ p=(((((f6*z+f5)*z+f4)*z+f3)*z+f2)*z+f1)*z;
+ cor = (hp1.x - 2.0*cc)-2.0*(y+cc)*p;
+ res1 = hp0.x - 2.0*y;
+ res =res1 + cor;
+ if (res == res+1.003*((res1-res)+cor)) return (m>0)?res:-res;
+ else {
+ c=y+cc;
+ cc=(y-c)+cc;
+ __doasin(c,cc,w);
+ res1=hp0.x-2.0*w[0];
+ cor=((hp0.x-res1)-2.0*w[0])+(hp1.x-2.0*w[1]);
+ res = res1+cor;
+ cor = (res1-res)+cor;
+ if (res==(res+1.0000001*cor)) return (m>0)?res:-res;
+ else {
+ y=fabs(x);
+ res1=res+1.1*cor;
+ return (m>0)?__sin32(y,res,res1):-__sin32(y,res,res1);
+ }
+ }
+ } /* else if (k < 0x3ff00000) */
+ /*---------------------------- |x|>=1 -------------------------------*/
+ else if (k==0x3ff00000 && u.i[LOW_HALF]==0) return (m>0)?hp0.x:-hp0.x;
+ else
+ if (k>0x7ff00000 || (k == 0x7ff00000 && u.i[LOW_HALF] != 0)) return x + x;
+ else {
+ u.i[HIGH_HALF]=0x7ff00000;
+ v.i[HIGH_HALF]=0x7ff00000;
+ u.i[LOW_HALF]=0;
+ v.i[LOW_HALF]=0;
+ return u.x/v.x; /* NaN */
+ }
+}
+#ifndef __ieee754_asin
+strong_alias (__ieee754_asin, __asin_finite)
+#endif
+
+/*******************************************************************/
+/* */
+/* End of arcsine, below is arccosine */
+/* */
+/*******************************************************************/
+
+double
+SECTION
+__ieee754_acos(double x)
+{
+ double x1,x2,xx,s1,s2,res1,p,t,res,r,cor,cc,y,c,z,w[2],eps;
+ mynumber u,v;
+ int4 k,m,n;
+ u.x = x;
+ m = u.i[HIGH_HALF];
+ k = 0x7fffffff&m;
+ /*------------------- |x|<2.77556*10^-17 ----------------------*/
+ if (k < 0x3c880000) return hp0.x;
+
+ /*----------------- 2.77556*10^-17 <= |x| < 2^-3 --------------*/
+ else
+ if (k < 0x3fc00000) {
+ x2 = x*x;
+ t = (((((f6*x2 + f5)*x2 + f4)*x2 + f3)*x2 + f2)*x2 + f1)*(x2*x);
+ r=hp0.x-x;
+ cor=(((hp0.x-r)-x)+hp1.x)-t;
+ res = r+cor;
+ cor = (r-res)+cor;
+ if (res == res+1.004*cor) return res;
+ else {
+ x1 = x+big;
+ xx = x*x;
+ x1 -= big;
+ x2 = x - x1;
+ p = x1*x1*x1;
+ s1 = a1.x*p;
+ s2 = ((((((c7*xx + c6)*xx + c5)*xx + c4)*xx + c3)*xx + c2)*xx*xx*x +
+ ((a1.x+a2.x)*x2*x2+ 0.5*x1*x)*x2) + a2.x*p;
+ res1 = x+s1;
+ s2 = ((x-res1)+s1)+s2;
+ r=hp0.x-res1;
+ cor=(((hp0.x-r)-res1)+hp1.x)-s2;
+ res = r+cor;
+ cor = (r-res)+cor;
+ if (res == res+1.00004*cor) return res;
+ else {
+ __doasin(x,0,w);
+ r=hp0.x-w[0];
+ cor=((hp0.x-r)-w[0])+(hp1.x-w[1]);
+ res=r+cor;
+ cor=(r-res)+cor;
+ if (res ==(res +1.00000001*cor)) return res;
+ else {
+ res1=res+1.1*cor;
+ return __cos32(x,res,res1);
+ }
+ }
+ }
+ } /* else if (k < 0x3fc00000) */
+ /*---------------------- 0.125 <= |x| < 0.5 --------------------*/
+ else
+ if (k < 0x3fe00000) {
+ if (k<0x3fd00000) n = 11*((k&0x000fffff)>>15);
+ else n = 11*((k&0x000fffff)>>14)+352;
+ if (m>0) xx = x - asncs.x[n];
+ else xx = -x - asncs.x[n];
+ t = asncs.x[n+1]*xx;
+ p=xx*xx*(asncs.x[n+2]+xx*(asncs.x[n+3]+xx*(asncs.x[n+4]+
+ xx*(asncs.x[n+5]+xx*asncs.x[n+6]))))+asncs.x[n+7];
+ t+=p;
+ y = (m>0)?(hp0.x-asncs.x[n+8]):(hp0.x+asncs.x[n+8]);
+ t = (m>0)?(hp1.x-t):(hp1.x+t);
+ res = y+t;
+ if (res == res+1.02*((y-res)+t)) return res;
+ else {
+ r=asncs.x[n+8]+xx*asncs.x[n+9];
+ t=((asncs.x[n+8]-r)+xx*asncs.x[n+9])+(p+xx*asncs.x[n+10]);
+ if (m>0)
+ {p = hp0.x-r; t = (((hp0.x-p)-r)-t)+hp1.x; }
+ else
+ {p = hp0.x+r; t = ((hp0.x-p)+r)+(hp1.x+t); }
+ res = p+t;
+ cor = (p-res)+t;
+ if (res == (res+1.0002*cor)) return res;
+ else {
+ res1=res+1.1*cor;
+ z=0.5*(res1-res);
+ __docos(res,z,w);
+ z=(w[0]-x)+w[1];
+ if (z>1.0e-27) return max(res,res1);
+ else if (z<-1.0e-27) return min(res,res1);
+ else return __cos32(x,res,res1);
+ }
+ }
+ } /* else if (k < 0x3fe00000) */
+
+ /*--------------------------- 0.5 <= |x| < 0.75 ---------------------*/
+ else
+ if (k < 0x3fe80000) {
+ n = 1056+((k&0x000fe000)>>11)*3;
+ if (m>0) {xx = x - asncs.x[n]; eps=1.04; }
+ else {xx = -x - asncs.x[n]; eps=1.02; }
+ t = asncs.x[n+1]*xx;
+ p=xx*xx*(asncs.x[n+2]+xx*(asncs.x[n+3]+xx*(asncs.x[n+4]+
+ xx*(asncs.x[n+5]+xx*(asncs.x[n+6]+
+ xx*asncs.x[n+7])))))+asncs.x[n+8];
+ t+=p;
+ y = (m>0)?(hp0.x-asncs.x[n+9]):(hp0.x+asncs.x[n+9]);
+ t = (m>0)?(hp1.x-t):(hp1.x+t);
+ res = y+t;
+ if (res == res+eps*((y-res)+t)) return res;
+ else {
+ r=asncs.x[n+9]+xx*asncs.x[n+10];
+ t=((asncs.x[n+9]-r)+xx*asncs.x[n+10])+(p+xx*asncs.x[n+11]);
+ if (m>0) {p = hp0.x-r; t = (((hp0.x-p)-r)-t)+hp1.x; eps=1.0004; }
+ else {p = hp0.x+r; t = ((hp0.x-p)+r)+(hp1.x+t); eps=1.0002; }
+ res = p+t;
+ cor = (p-res)+t;
+ if (res == (res+eps*cor)) return res;
+ else {
+ res1=res+1.1*cor;
+ z=0.5*(res1-res);
+ __docos(res,z,w);
+ z=(w[0]-x)+w[1];
+ if (z>1.0e-27) return max(res,res1);
+ else if (z<-1.0e-27) return min(res,res1);
+ else return __cos32(x,res,res1);
+ }
+ }
+ } /* else if (k < 0x3fe80000) */
+
+/*------------------------- 0.75 <= |x| < 0.921875 -------------*/
+ else
+ if (k < 0x3fed8000) {
+ n = 992+((k&0x000fe000)>>13)*13;
+ if (m>0) {xx = x - asncs.x[n]; eps = 1.04; }
+ else {xx = -x - asncs.x[n]; eps = 1.01; }
+ t = asncs.x[n+1]*xx;
+ p=xx*xx*(asncs.x[n+2]+xx*(asncs.x[n+3]+xx*(asncs.x[n+4]+
+ xx*(asncs.x[n+5]+xx*(asncs.x[n+6]+xx*(asncs.x[n+7]+
+ xx*asncs.x[n+8]))))))+asncs.x[n+9];
+ t+=p;
+ y = (m>0)?(hp0.x-asncs.x[n+10]):(hp0.x+asncs.x[n+10]);
+ t = (m>0)?(hp1.x-t):(hp1.x+t);
+ res = y+t;
+ if (res == res+eps*((y-res)+t)) return res;
+ else {
+ r=asncs.x[n+10]+xx*asncs.x[n+11];
+ t=((asncs.x[n+10]-r)+xx*asncs.x[n+11])+(p+xx*asncs.x[n+12]);
+ if (m>0) {p = hp0.x-r; t = (((hp0.x-p)-r)-t)+hp1.x; eps=1.0032; }
+ else {p = hp0.x+r; t = ((hp0.x-p)+r)+(hp1.x+t); eps=1.0008; }
+ res = p+t;
+ cor = (p-res)+t;
+ if (res == (res+eps*cor)) return res;
+ else {
+ res1=res+1.1*cor;
+ z=0.5*(res1-res);
+ __docos(res,z,w);
+ z=(w[0]-x)+w[1];
+ if (z>1.0e-27) return max(res,res1);
+ else if (z<-1.0e-27) return min(res,res1);
+ else return __cos32(x,res,res1);
+ }
+ }
+ } /* else if (k < 0x3fed8000) */
+
+/*-------------------0.921875 <= |x| < 0.953125 ------------------*/
+ else
+ if (k < 0x3fee8000) {
+ n = 884+((k&0x000fe000)>>13)*14;
+ if (m>0) {xx = x - asncs.x[n]; eps=1.04; }
+ else {xx = -x - asncs.x[n]; eps =1.005; }
+ t = asncs.x[n+1]*xx;
+ p=xx*xx*(asncs.x[n+2]+xx*(asncs.x[n+3]+xx*(asncs.x[n+4]+
+ xx*(asncs.x[n+5]+xx*(asncs.x[n+6]
+ +xx*(asncs.x[n+7]+xx*(asncs.x[n+8]+
+ xx*asncs.x[n+9])))))))+asncs.x[n+10];
+ t+=p;
+ y = (m>0)?(hp0.x-asncs.x[n+11]):(hp0.x+asncs.x[n+11]);
+ t = (m>0)?(hp1.x-t):(hp1.x+t);
+ res = y+t;
+ if (res == res+eps*((y-res)+t)) return res;
+ else {
+ r=asncs.x[n+11]+xx*asncs.x[n+12];
+ t=((asncs.x[n+11]-r)+xx*asncs.x[n+12])+(p+xx*asncs.x[n+13]);
+ if (m>0) {p = hp0.x-r; t = (((hp0.x-p)-r)-t)+hp1.x; eps=1.0030; }
+ else {p = hp0.x+r; t = ((hp0.x-p)+r)+(hp1.x+t); eps=1.0005; }
+ res = p+t;
+ cor = (p-res)+t;
+ if (res == (res+eps*cor)) return res;
+ else {
+ res1=res+1.1*cor;
+ z=0.5*(res1-res);
+ __docos(res,z,w);
+ z=(w[0]-x)+w[1];
+ if (z>1.0e-27) return max(res,res1);
+ else if (z<-1.0e-27) return min(res,res1);
+ else return __cos32(x,res,res1);
+ }
+ }
+ } /* else if (k < 0x3fee8000) */
+
+ /*--------------------0.953125 <= |x| < 0.96875 ----------------*/
+ else
+ if (k < 0x3fef0000) {
+ n = 768+((k&0x000fe000)>>13)*15;
+ if (m>0) {xx = x - asncs.x[n]; eps=1.04; }
+ else {xx = -x - asncs.x[n]; eps=1.005;}
+ t = asncs.x[n+1]*xx;
+ p=xx*xx*(asncs.x[n+2]+xx*(asncs.x[n+3]+xx*(asncs.x[n+4]+
+ xx*(asncs.x[n+5]+xx*(asncs.x[n+6]
+ +xx*(asncs.x[n+7]+xx*(asncs.x[n+8]+xx*(asncs.x[n+9]+
+ xx*asncs.x[n+10]))))))))+asncs.x[n+11];
+ t+=p;
+ y = (m>0)?(hp0.x-asncs.x[n+12]):(hp0.x+asncs.x[n+12]);
+ t = (m>0)?(hp1.x-t):(hp1.x+t);
+ res = y+t;
+ if (res == res+eps*((y-res)+t)) return res;
+ else {
+ r=asncs.x[n+12]+xx*asncs.x[n+13];
+ t=((asncs.x[n+12]-r)+xx*asncs.x[n+13])+(p+xx*asncs.x[n+14]);
+ if (m>0) {p = hp0.x-r; t = (((hp0.x-p)-r)-t)+hp1.x; eps=1.0030; }
+ else {p = hp0.x+r; t = ((hp0.x-p)+r)+(hp1.x+t); eps=1.0005; }
+ res = p+t;
+ cor = (p-res)+t;
+ if (res == (res+eps*cor)) return res;
+ else {
+ res1=res+1.1*cor;
+ z=0.5*(res1-res);
+ __docos(res,z,w);
+ z=(w[0]-x)+w[1];
+ if (z>1.0e-27) return max(res,res1);
+ else if (z<-1.0e-27) return min(res,res1);
+ else return __cos32(x,res,res1);
+ }
+ }
+ } /* else if (k < 0x3fef0000) */
+ /*-----------------0.96875 <= |x| < 1 ---------------------------*/
+
+ else
+ if (k<0x3ff00000) {
+ z = 0.5*((m>0)?(1.0-x):(1.0+x));
+ v.x=z;
+ k=v.i[HIGH_HALF];
+ t=inroot[(k&0x001fffff)>>14]*powtwo[511-(k>>21)];
+ r=1.0-t*t*z;
+ t = t*(rt0+r*(rt1+r*(rt2+r*rt3)));
+ c=t*z;
+ t=c*(1.5-0.5*t*c);
+ y = (t27*c+c)-t27*c;
+ cc = (z-y*y)/(t+y);
+ p=(((((f6*z+f5)*z+f4)*z+f3)*z+f2)*z+f1)*z;
+ if (m<0) {
+ cor = (hp1.x - cc)-(y+cc)*p;
+ res1 = hp0.x - y;
+ res =res1 + cor;
+ if (res == res+1.002*((res1-res)+cor)) return (res+res);
+ else {
+ c=y+cc;
+ cc=(y-c)+cc;
+ __doasin(c,cc,w);
+ res1=hp0.x-w[0];
+ cor=((hp0.x-res1)-w[0])+(hp1.x-w[1]);
+ res = res1+cor;
+ cor = (res1-res)+cor;
+ if (res==(res+1.000001*cor)) return (res+res);
+ else {
+ res=res+res;
+ res1=res+1.2*cor;
+ return __cos32(x,res,res1);
+ }
+ }
+ }
+ else {
+ cor = cc+p*(y+cc);
+ res = y + cor;
+ if (res == res+1.03*((y-res)+cor)) return (res+res);
+ else {
+ c=y+cc;
+ cc=(y-c)+cc;
+ __doasin(c,cc,w);
+ res = w[0];
+ cor=w[1];
+ if (res==(res+1.000001*cor)) return (res+res);
+ else {
+ res=res+res;
+ res1=res+1.2*cor;
+ return __cos32(x,res,res1);
+ }
+ }
+ }
+ } /* else if (k < 0x3ff00000) */
+
+ /*---------------------------- |x|>=1 -----------------------*/
+ else
+ if (k==0x3ff00000 && u.i[LOW_HALF]==0) return (m>0)?0:2.0*hp0.x;
+ else
+ if (k>0x7ff00000 || (k == 0x7ff00000 && u.i[LOW_HALF] != 0)) return x + x;
+ else {
+ u.i[HIGH_HALF]=0x7ff00000;
+ v.i[HIGH_HALF]=0x7ff00000;
+ u.i[LOW_HALF]=0;
+ v.i[LOW_HALF]=0;
+ return u.x/v.x;
+ }
+}
+#ifndef __ieee754_acos
+strong_alias (__ieee754_acos, __acos_finite)
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/e_atan2.c b/REORG.TODO/sysdeps/ieee754/dbl-64/e_atan2.c
new file mode 100644
index 0000000000..3c9d964b9b
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/e_atan2.c
@@ -0,0 +1,620 @@
+/*
+ * IBM Accurate Mathematical Library
+ * written by International Business Machines Corp.
+ * Copyright (C) 2001-2017 Free Software Foundation, Inc.
+ *
+ * This program 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 2.1 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 program; if not, see <http://www.gnu.org/licenses/>.
+ */
+/************************************************************************/
+/* MODULE_NAME: atnat2.c */
+/* */
+/* FUNCTIONS: uatan2 */
+/* atan2Mp */
+/* signArctan2 */
+/* normalized */
+/* */
+/* FILES NEEDED: dla.h endian.h mpa.h mydefs.h atnat2.h */
+/* mpatan.c mpatan2.c mpsqrt.c */
+/* uatan.tbl */
+/* */
+/* An ultimate atan2() routine. Given two IEEE double machine numbers y,*/
+/* x it computes the correctly rounded (to nearest) value of atan2(y,x).*/
+/* */
+/* Assumption: Machine arithmetic operations are performed in */
+/* round to nearest mode of IEEE 754 standard. */
+/* */
+/************************************************************************/
+
+#include <dla.h>
+#include "mpa.h"
+#include "MathLib.h"
+#include "uatan.tbl"
+#include "atnat2.h"
+#include <fenv.h>
+#include <float.h>
+#include <math.h>
+#include <math_private.h>
+#include <stap-probe.h>
+
+#ifndef SECTION
+# define SECTION
+#endif
+
+/************************************************************************/
+/* An ultimate atan2 routine. Given two IEEE double machine numbers y,x */
+/* it computes the correctly rounded (to nearest) value of atan2(y,x). */
+/* Assumption: Machine arithmetic operations are performed in */
+/* round to nearest mode of IEEE 754 standard. */
+/************************************************************************/
+static double atan2Mp (double, double, const int[]);
+ /* Fix the sign and return after stage 1 or stage 2 */
+static double
+signArctan2 (double y, double z)
+{
+ return __copysign (z, y);
+}
+
+static double normalized (double, double, double, double);
+void __mpatan2 (mp_no *, mp_no *, mp_no *, int);
+
+double
+SECTION
+__ieee754_atan2 (double y, double x)
+{
+ int i, de, ux, dx, uy, dy;
+ static const int pr[MM] = { 6, 8, 10, 20, 32 };
+ double ax, ay, u, du, u9, ua, v, vv, dv, t1, t2, t3, t7, t8,
+ z, zz, cor, s1, ss1, s2, ss2;
+#ifndef DLA_FMS
+ double t4, t5, t6;
+#endif
+ number num;
+
+ static const int ep = 59768832, /* 57*16**5 */
+ em = -59768832; /* -57*16**5 */
+
+ /* x=NaN or y=NaN */
+ num.d = x;
+ ux = num.i[HIGH_HALF];
+ dx = num.i[LOW_HALF];
+ if ((ux & 0x7ff00000) == 0x7ff00000)
+ {
+ if (((ux & 0x000fffff) | dx) != 0x00000000)
+ return x + y;
+ }
+ num.d = y;
+ uy = num.i[HIGH_HALF];
+ dy = num.i[LOW_HALF];
+ if ((uy & 0x7ff00000) == 0x7ff00000)
+ {
+ if (((uy & 0x000fffff) | dy) != 0x00000000)
+ return y + y;
+ }
+
+ /* y=+-0 */
+ if (uy == 0x00000000)
+ {
+ if (dy == 0x00000000)
+ {
+ if ((ux & 0x80000000) == 0x00000000)
+ return 0;
+ else
+ return opi.d;
+ }
+ }
+ else if (uy == 0x80000000)
+ {
+ if (dy == 0x00000000)
+ {
+ if ((ux & 0x80000000) == 0x00000000)
+ return -0.0;
+ else
+ return mopi.d;
+ }
+ }
+
+ /* x=+-0 */
+ if (x == 0)
+ {
+ if ((uy & 0x80000000) == 0x00000000)
+ return hpi.d;
+ else
+ return mhpi.d;
+ }
+
+ /* x=+-INF */
+ if (ux == 0x7ff00000)
+ {
+ if (dx == 0x00000000)
+ {
+ if (uy == 0x7ff00000)
+ {
+ if (dy == 0x00000000)
+ return qpi.d;
+ }
+ else if (uy == 0xfff00000)
+ {
+ if (dy == 0x00000000)
+ return mqpi.d;
+ }
+ else
+ {
+ if ((uy & 0x80000000) == 0x00000000)
+ return 0;
+ else
+ return -0.0;
+ }
+ }
+ }
+ else if (ux == 0xfff00000)
+ {
+ if (dx == 0x00000000)
+ {
+ if (uy == 0x7ff00000)
+ {
+ if (dy == 0x00000000)
+ return tqpi.d;
+ }
+ else if (uy == 0xfff00000)
+ {
+ if (dy == 0x00000000)
+ return mtqpi.d;
+ }
+ else
+ {
+ if ((uy & 0x80000000) == 0x00000000)
+ return opi.d;
+ else
+ return mopi.d;
+ }
+ }
+ }
+
+ /* y=+-INF */
+ if (uy == 0x7ff00000)
+ {
+ if (dy == 0x00000000)
+ return hpi.d;
+ }
+ else if (uy == 0xfff00000)
+ {
+ if (dy == 0x00000000)
+ return mhpi.d;
+ }
+
+ SET_RESTORE_ROUND (FE_TONEAREST);
+ /* either x/y or y/x is very close to zero */
+ ax = (x < 0) ? -x : x;
+ ay = (y < 0) ? -y : y;
+ de = (uy & 0x7ff00000) - (ux & 0x7ff00000);
+ if (de >= ep)
+ {
+ return ((y > 0) ? hpi.d : mhpi.d);
+ }
+ else if (de <= em)
+ {
+ if (x > 0)
+ {
+ double ret;
+ if ((z = ay / ax) < TWOM1022)
+ ret = normalized (ax, ay, y, z);
+ else
+ ret = signArctan2 (y, z);
+ if (fabs (ret) < DBL_MIN)
+ {
+ double vret = ret ? ret : DBL_MIN;
+ double force_underflow = vret * vret;
+ math_force_eval (force_underflow);
+ }
+ return ret;
+ }
+ else
+ {
+ return ((y > 0) ? opi.d : mopi.d);
+ }
+ }
+
+ /* if either x or y is extremely close to zero, scale abs(x), abs(y). */
+ if (ax < twom500.d || ay < twom500.d)
+ {
+ ax *= two500.d;
+ ay *= two500.d;
+ }
+
+ /* Likewise for large x and y. */
+ if (ax > two500.d || ay > two500.d)
+ {
+ ax *= twom500.d;
+ ay *= twom500.d;
+ }
+
+ /* x,y which are neither special nor extreme */
+ if (ay < ax)
+ {
+ u = ay / ax;
+ EMULV (ax, u, v, vv, t1, t2, t3, t4, t5);
+ du = ((ay - v) - vv) / ax;
+ }
+ else
+ {
+ u = ax / ay;
+ EMULV (ay, u, v, vv, t1, t2, t3, t4, t5);
+ du = ((ax - v) - vv) / ay;
+ }
+
+ if (x > 0)
+ {
+ /* (i) x>0, abs(y)< abs(x): atan(ay/ax) */
+ if (ay < ax)
+ {
+ if (u < inv16.d)
+ {
+ v = u * u;
+
+ zz = du + u * v * (d3.d
+ + v * (d5.d
+ + v * (d7.d
+ + v * (d9.d
+ + v * (d11.d
+ + v * d13.d)))));
+
+ if ((z = u + (zz - u1.d * u)) == u + (zz + u1.d * u))
+ return signArctan2 (y, z);
+
+ MUL2 (u, du, u, du, v, vv, t1, t2, t3, t4, t5, t6, t7, t8);
+ s1 = v * (f11.d + v * (f13.d
+ + v * (f15.d + v * (f17.d + v * f19.d))));
+ ADD2 (f9.d, ff9.d, s1, 0, s2, ss2, t1, t2);
+ MUL2 (v, vv, s2, ss2, s1, ss1, t1, t2, t3, t4, t5, t6, t7, t8);
+ ADD2 (f7.d, ff7.d, s1, ss1, s2, ss2, t1, t2);
+ MUL2 (v, vv, s2, ss2, s1, ss1, t1, t2, t3, t4, t5, t6, t7, t8);
+ ADD2 (f5.d, ff5.d, s1, ss1, s2, ss2, t1, t2);
+ MUL2 (v, vv, s2, ss2, s1, ss1, t1, t2, t3, t4, t5, t6, t7, t8);
+ ADD2 (f3.d, ff3.d, s1, ss1, s2, ss2, t1, t2);
+ MUL2 (v, vv, s2, ss2, s1, ss1, t1, t2, t3, t4, t5, t6, t7, t8);
+ MUL2 (u, du, s1, ss1, s2, ss2, t1, t2, t3, t4, t5, t6, t7, t8);
+ ADD2 (u, du, s2, ss2, s1, ss1, t1, t2);
+
+ if ((z = s1 + (ss1 - u5.d * s1)) == s1 + (ss1 + u5.d * s1))
+ return signArctan2 (y, z);
+
+ return atan2Mp (x, y, pr);
+ }
+
+ i = (TWO52 + TWO8 * u) - TWO52;
+ i -= 16;
+ t3 = u - cij[i][0].d;
+ EADD (t3, du, v, dv);
+ t1 = cij[i][1].d;
+ t2 = cij[i][2].d;
+ zz = v * t2 + (dv * t2
+ + v * v * (cij[i][3].d
+ + v * (cij[i][4].d
+ + v * (cij[i][5].d
+ + v * cij[i][6].d))));
+ if (i < 112)
+ {
+ if (i < 48)
+ u9 = u91.d; /* u < 1/4 */
+ else
+ u9 = u92.d;
+ } /* 1/4 <= u < 1/2 */
+ else
+ {
+ if (i < 176)
+ u9 = u93.d; /* 1/2 <= u < 3/4 */
+ else
+ u9 = u94.d;
+ } /* 3/4 <= u <= 1 */
+ if ((z = t1 + (zz - u9 * t1)) == t1 + (zz + u9 * t1))
+ return signArctan2 (y, z);
+
+ t1 = u - hij[i][0].d;
+ EADD (t1, du, v, vv);
+ s1 = v * (hij[i][11].d
+ + v * (hij[i][12].d
+ + v * (hij[i][13].d
+ + v * (hij[i][14].d
+ + v * hij[i][15].d))));
+ ADD2 (hij[i][9].d, hij[i][10].d, s1, 0, s2, ss2, t1, t2);
+ MUL2 (v, vv, s2, ss2, s1, ss1, t1, t2, t3, t4, t5, t6, t7, t8);
+ ADD2 (hij[i][7].d, hij[i][8].d, s1, ss1, s2, ss2, t1, t2);
+ MUL2 (v, vv, s2, ss2, s1, ss1, t1, t2, t3, t4, t5, t6, t7, t8);
+ ADD2 (hij[i][5].d, hij[i][6].d, s1, ss1, s2, ss2, t1, t2);
+ MUL2 (v, vv, s2, ss2, s1, ss1, t1, t2, t3, t4, t5, t6, t7, t8);
+ ADD2 (hij[i][3].d, hij[i][4].d, s1, ss1, s2, ss2, t1, t2);
+ MUL2 (v, vv, s2, ss2, s1, ss1, t1, t2, t3, t4, t5, t6, t7, t8);
+ ADD2 (hij[i][1].d, hij[i][2].d, s1, ss1, s2, ss2, t1, t2);
+
+ if ((z = s2 + (ss2 - ub.d * s2)) == s2 + (ss2 + ub.d * s2))
+ return signArctan2 (y, z);
+ return atan2Mp (x, y, pr);
+ }
+
+ /* (ii) x>0, abs(x)<=abs(y): pi/2-atan(ax/ay) */
+ if (u < inv16.d)
+ {
+ v = u * u;
+ zz = u * v * (d3.d
+ + v * (d5.d
+ + v * (d7.d
+ + v * (d9.d
+ + v * (d11.d
+ + v * d13.d)))));
+ ESUB (hpi.d, u, t2, cor);
+ t3 = ((hpi1.d + cor) - du) - zz;
+ if ((z = t2 + (t3 - u2.d)) == t2 + (t3 + u2.d))
+ return signArctan2 (y, z);
+
+ MUL2 (u, du, u, du, v, vv, t1, t2, t3, t4, t5, t6, t7, t8);
+ s1 = v * (f11.d
+ + v * (f13.d
+ + v * (f15.d + v * (f17.d + v * f19.d))));
+ ADD2 (f9.d, ff9.d, s1, 0, s2, ss2, t1, t2);
+ MUL2 (v, vv, s2, ss2, s1, ss1, t1, t2, t3, t4, t5, t6, t7, t8);
+ ADD2 (f7.d, ff7.d, s1, ss1, s2, ss2, t1, t2);
+ MUL2 (v, vv, s2, ss2, s1, ss1, t1, t2, t3, t4, t5, t6, t7, t8);
+ ADD2 (f5.d, ff5.d, s1, ss1, s2, ss2, t1, t2);
+ MUL2 (v, vv, s2, ss2, s1, ss1, t1, t2, t3, t4, t5, t6, t7, t8);
+ ADD2 (f3.d, ff3.d, s1, ss1, s2, ss2, t1, t2);
+ MUL2 (v, vv, s2, ss2, s1, ss1, t1, t2, t3, t4, t5, t6, t7, t8);
+ MUL2 (u, du, s1, ss1, s2, ss2, t1, t2, t3, t4, t5, t6, t7, t8);
+ ADD2 (u, du, s2, ss2, s1, ss1, t1, t2);
+ SUB2 (hpi.d, hpi1.d, s1, ss1, s2, ss2, t1, t2);
+
+ if ((z = s2 + (ss2 - u6.d)) == s2 + (ss2 + u6.d))
+ return signArctan2 (y, z);
+ return atan2Mp (x, y, pr);
+ }
+
+ i = (TWO52 + TWO8 * u) - TWO52;
+ i -= 16;
+ v = (u - cij[i][0].d) + du;
+
+ zz = hpi1.d - v * (cij[i][2].d
+ + v * (cij[i][3].d
+ + v * (cij[i][4].d
+ + v * (cij[i][5].d
+ + v * cij[i][6].d))));
+ t1 = hpi.d - cij[i][1].d;
+ if (i < 112)
+ ua = ua1.d; /* w < 1/2 */
+ else
+ ua = ua2.d; /* w >= 1/2 */
+ if ((z = t1 + (zz - ua)) == t1 + (zz + ua))
+ return signArctan2 (y, z);
+
+ t1 = u - hij[i][0].d;
+ EADD (t1, du, v, vv);
+
+ s1 = v * (hij[i][11].d
+ + v * (hij[i][12].d
+ + v * (hij[i][13].d
+ + v * (hij[i][14].d
+ + v * hij[i][15].d))));
+
+ ADD2 (hij[i][9].d, hij[i][10].d, s1, 0, s2, ss2, t1, t2);
+ MUL2 (v, vv, s2, ss2, s1, ss1, t1, t2, t3, t4, t5, t6, t7, t8);
+ ADD2 (hij[i][7].d, hij[i][8].d, s1, ss1, s2, ss2, t1, t2);
+ MUL2 (v, vv, s2, ss2, s1, ss1, t1, t2, t3, t4, t5, t6, t7, t8);
+ ADD2 (hij[i][5].d, hij[i][6].d, s1, ss1, s2, ss2, t1, t2);
+ MUL2 (v, vv, s2, ss2, s1, ss1, t1, t2, t3, t4, t5, t6, t7, t8);
+ ADD2 (hij[i][3].d, hij[i][4].d, s1, ss1, s2, ss2, t1, t2);
+ MUL2 (v, vv, s2, ss2, s1, ss1, t1, t2, t3, t4, t5, t6, t7, t8);
+ ADD2 (hij[i][1].d, hij[i][2].d, s1, ss1, s2, ss2, t1, t2);
+ SUB2 (hpi.d, hpi1.d, s2, ss2, s1, ss1, t1, t2);
+
+ if ((z = s1 + (ss1 - uc.d)) == s1 + (ss1 + uc.d))
+ return signArctan2 (y, z);
+ return atan2Mp (x, y, pr);
+ }
+
+ /* (iii) x<0, abs(x)< abs(y): pi/2+atan(ax/ay) */
+ if (ax < ay)
+ {
+ if (u < inv16.d)
+ {
+ v = u * u;
+ zz = u * v * (d3.d
+ + v * (d5.d
+ + v * (d7.d
+ + v * (d9.d
+ + v * (d11.d + v * d13.d)))));
+ EADD (hpi.d, u, t2, cor);
+ t3 = ((hpi1.d + cor) + du) + zz;
+ if ((z = t2 + (t3 - u3.d)) == t2 + (t3 + u3.d))
+ return signArctan2 (y, z);
+
+ MUL2 (u, du, u, du, v, vv, t1, t2, t3, t4, t5, t6, t7, t8);
+ s1 = v * (f11.d
+ + v * (f13.d + v * (f15.d + v * (f17.d + v * f19.d))));
+ ADD2 (f9.d, ff9.d, s1, 0, s2, ss2, t1, t2);
+ MUL2 (v, vv, s2, ss2, s1, ss1, t1, t2, t3, t4, t5, t6, t7, t8);
+ ADD2 (f7.d, ff7.d, s1, ss1, s2, ss2, t1, t2);
+ MUL2 (v, vv, s2, ss2, s1, ss1, t1, t2, t3, t4, t5, t6, t7, t8);
+ ADD2 (f5.d, ff5.d, s1, ss1, s2, ss2, t1, t2);
+ MUL2 (v, vv, s2, ss2, s1, ss1, t1, t2, t3, t4, t5, t6, t7, t8);
+ ADD2 (f3.d, ff3.d, s1, ss1, s2, ss2, t1, t2);
+ MUL2 (v, vv, s2, ss2, s1, ss1, t1, t2, t3, t4, t5, t6, t7, t8);
+ MUL2 (u, du, s1, ss1, s2, ss2, t1, t2, t3, t4, t5, t6, t7, t8);
+ ADD2 (u, du, s2, ss2, s1, ss1, t1, t2);
+ ADD2 (hpi.d, hpi1.d, s1, ss1, s2, ss2, t1, t2);
+
+ if ((z = s2 + (ss2 - u7.d)) == s2 + (ss2 + u7.d))
+ return signArctan2 (y, z);
+ return atan2Mp (x, y, pr);
+ }
+
+ i = (TWO52 + TWO8 * u) - TWO52;
+ i -= 16;
+ v = (u - cij[i][0].d) + du;
+ zz = hpi1.d + v * (cij[i][2].d
+ + v * (cij[i][3].d
+ + v * (cij[i][4].d
+ + v * (cij[i][5].d
+ + v * cij[i][6].d))));
+ t1 = hpi.d + cij[i][1].d;
+ if (i < 112)
+ ua = ua1.d; /* w < 1/2 */
+ else
+ ua = ua2.d; /* w >= 1/2 */
+ if ((z = t1 + (zz - ua)) == t1 + (zz + ua))
+ return signArctan2 (y, z);
+
+ t1 = u - hij[i][0].d;
+ EADD (t1, du, v, vv);
+ s1 = v * (hij[i][11].d
+ + v * (hij[i][12].d
+ + v * (hij[i][13].d
+ + v * (hij[i][14].d
+ + v * hij[i][15].d))));
+ ADD2 (hij[i][9].d, hij[i][10].d, s1, 0, s2, ss2, t1, t2);
+ MUL2 (v, vv, s2, ss2, s1, ss1, t1, t2, t3, t4, t5, t6, t7, t8);
+ ADD2 (hij[i][7].d, hij[i][8].d, s1, ss1, s2, ss2, t1, t2);
+ MUL2 (v, vv, s2, ss2, s1, ss1, t1, t2, t3, t4, t5, t6, t7, t8);
+ ADD2 (hij[i][5].d, hij[i][6].d, s1, ss1, s2, ss2, t1, t2);
+ MUL2 (v, vv, s2, ss2, s1, ss1, t1, t2, t3, t4, t5, t6, t7, t8);
+ ADD2 (hij[i][3].d, hij[i][4].d, s1, ss1, s2, ss2, t1, t2);
+ MUL2 (v, vv, s2, ss2, s1, ss1, t1, t2, t3, t4, t5, t6, t7, t8);
+ ADD2 (hij[i][1].d, hij[i][2].d, s1, ss1, s2, ss2, t1, t2);
+ ADD2 (hpi.d, hpi1.d, s2, ss2, s1, ss1, t1, t2);
+
+ if ((z = s1 + (ss1 - uc.d)) == s1 + (ss1 + uc.d))
+ return signArctan2 (y, z);
+ return atan2Mp (x, y, pr);
+ }
+
+ /* (iv) x<0, abs(y)<=abs(x): pi-atan(ax/ay) */
+ if (u < inv16.d)
+ {
+ v = u * u;
+ zz = u * v * (d3.d
+ + v * (d5.d
+ + v * (d7.d
+ + v * (d9.d + v * (d11.d + v * d13.d)))));
+ ESUB (opi.d, u, t2, cor);
+ t3 = ((opi1.d + cor) - du) - zz;
+ if ((z = t2 + (t3 - u4.d)) == t2 + (t3 + u4.d))
+ return signArctan2 (y, z);
+
+ MUL2 (u, du, u, du, v, vv, t1, t2, t3, t4, t5, t6, t7, t8);
+ s1 = v * (f11.d + v * (f13.d + v * (f15.d + v * (f17.d + v * f19.d))));
+ ADD2 (f9.d, ff9.d, s1, 0, s2, ss2, t1, t2);
+ MUL2 (v, vv, s2, ss2, s1, ss1, t1, t2, t3, t4, t5, t6, t7, t8);
+ ADD2 (f7.d, ff7.d, s1, ss1, s2, ss2, t1, t2);
+ MUL2 (v, vv, s2, ss2, s1, ss1, t1, t2, t3, t4, t5, t6, t7, t8);
+ ADD2 (f5.d, ff5.d, s1, ss1, s2, ss2, t1, t2);
+ MUL2 (v, vv, s2, ss2, s1, ss1, t1, t2, t3, t4, t5, t6, t7, t8);
+ ADD2 (f3.d, ff3.d, s1, ss1, s2, ss2, t1, t2);
+ MUL2 (v, vv, s2, ss2, s1, ss1, t1, t2, t3, t4, t5, t6, t7, t8);
+ MUL2 (u, du, s1, ss1, s2, ss2, t1, t2, t3, t4, t5, t6, t7, t8);
+ ADD2 (u, du, s2, ss2, s1, ss1, t1, t2);
+ SUB2 (opi.d, opi1.d, s1, ss1, s2, ss2, t1, t2);
+
+ if ((z = s2 + (ss2 - u8.d)) == s2 + (ss2 + u8.d))
+ return signArctan2 (y, z);
+ return atan2Mp (x, y, pr);
+ }
+
+ i = (TWO52 + TWO8 * u) - TWO52;
+ i -= 16;
+ v = (u - cij[i][0].d) + du;
+ zz = opi1.d - v * (cij[i][2].d
+ + v * (cij[i][3].d
+ + v * (cij[i][4].d
+ + v * (cij[i][5].d + v * cij[i][6].d))));
+ t1 = opi.d - cij[i][1].d;
+ if (i < 112)
+ ua = ua1.d; /* w < 1/2 */
+ else
+ ua = ua2.d; /* w >= 1/2 */
+ if ((z = t1 + (zz - ua)) == t1 + (zz + ua))
+ return signArctan2 (y, z);
+
+ t1 = u - hij[i][0].d;
+
+ EADD (t1, du, v, vv);
+
+ s1 = v * (hij[i][11].d
+ + v * (hij[i][12].d
+ + v * (hij[i][13].d
+ + v * (hij[i][14].d + v * hij[i][15].d))));
+
+ ADD2 (hij[i][9].d, hij[i][10].d, s1, 0, s2, ss2, t1, t2);
+ MUL2 (v, vv, s2, ss2, s1, ss1, t1, t2, t3, t4, t5, t6, t7, t8);
+ ADD2 (hij[i][7].d, hij[i][8].d, s1, ss1, s2, ss2, t1, t2);
+ MUL2 (v, vv, s2, ss2, s1, ss1, t1, t2, t3, t4, t5, t6, t7, t8);
+ ADD2 (hij[i][5].d, hij[i][6].d, s1, ss1, s2, ss2, t1, t2);
+ MUL2 (v, vv, s2, ss2, s1, ss1, t1, t2, t3, t4, t5, t6, t7, t8);
+ ADD2 (hij[i][3].d, hij[i][4].d, s1, ss1, s2, ss2, t1, t2);
+ MUL2 (v, vv, s2, ss2, s1, ss1, t1, t2, t3, t4, t5, t6, t7, t8);
+ ADD2 (hij[i][1].d, hij[i][2].d, s1, ss1, s2, ss2, t1, t2);
+ SUB2 (opi.d, opi1.d, s2, ss2, s1, ss1, t1, t2);
+
+ if ((z = s1 + (ss1 - uc.d)) == s1 + (ss1 + uc.d))
+ return signArctan2 (y, z);
+ return atan2Mp (x, y, pr);
+}
+
+#ifndef __ieee754_atan2
+strong_alias (__ieee754_atan2, __atan2_finite)
+#endif
+
+/* Treat the Denormalized case */
+static double
+SECTION
+normalized (double ax, double ay, double y, double z)
+{
+ int p;
+ mp_no mpx, mpy, mpz, mperr, mpz2, mpt1;
+ p = 6;
+ __dbl_mp (ax, &mpx, p);
+ __dbl_mp (ay, &mpy, p);
+ __dvd (&mpy, &mpx, &mpz, p);
+ __dbl_mp (ue.d, &mpt1, p);
+ __mul (&mpz, &mpt1, &mperr, p);
+ __sub (&mpz, &mperr, &mpz2, p);
+ __mp_dbl (&mpz2, &z, p);
+ return signArctan2 (y, z);
+}
+
+/* Stage 3: Perform a multi-Precision computation */
+static double
+SECTION
+atan2Mp (double x, double y, const int pr[])
+{
+ double z1, z2;
+ int i, p;
+ mp_no mpx, mpy, mpz, mpz1, mpz2, mperr, mpt1;
+ for (i = 0; i < MM; i++)
+ {
+ p = pr[i];
+ __dbl_mp (x, &mpx, p);
+ __dbl_mp (y, &mpy, p);
+ __mpatan2 (&mpy, &mpx, &mpz, p);
+ __dbl_mp (ud[i].d, &mpt1, p);
+ __mul (&mpz, &mpt1, &mperr, p);
+ __add (&mpz, &mperr, &mpz1, p);
+ __sub (&mpz, &mperr, &mpz2, p);
+ __mp_dbl (&mpz1, &z1, p);
+ __mp_dbl (&mpz2, &z2, p);
+ if (z1 == z2)
+ {
+ LIBC_PROBE (slowatan2, 4, &p, &x, &y, &z1);
+ return z1;
+ }
+ }
+ LIBC_PROBE (slowatan2_inexact, 4, &p, &x, &y, &z1);
+ return z1; /*if impossible to do exact computing */
+}
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/e_atanh.c b/REORG.TODO/sysdeps/ieee754/dbl-64/e_atanh.c
new file mode 100644
index 0000000000..a9d19a0472
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/e_atanh.c
@@ -0,0 +1,74 @@
+/* Copyright (C) 2011-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@gmail.com>, 2011.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+
+/* __ieee754_atanh(x)
+ Method :
+ 1.Reduced x to positive by atanh(-x) = -atanh(x)
+ 2.For x>=0.5
+ 1 2x x
+ atanh(x) = --- * log(1 + -------) = 0.5 * log1p(2 * --------)
+ 2 1 - x 1 - x
+
+ For x<0.5
+ atanh(x) = 0.5*log1p(2x+2x*x/(1-x))
+
+ Special cases:
+ atanh(x) is NaN if |x| > 1 with signal;
+ atanh(NaN) is that NaN with no signal;
+ atanh(+-1) is +-INF with signal.
+
+ */
+
+#include <float.h>
+#include <inttypes.h>
+#include <math.h>
+#include <math_private.h>
+
+static const double huge = 1e300;
+
+double
+__ieee754_atanh (double x)
+{
+ double xa = fabs (x);
+ double t;
+ if (isless (xa, 0.5))
+ {
+ if (__glibc_unlikely (xa < 0x1.0p-28))
+ {
+ math_force_eval (huge + x);
+ math_check_force_underflow (x);
+ return x;
+ }
+
+ t = xa + xa;
+ t = 0.5 * __log1p (t + t * xa / (1.0 - xa));
+ }
+ else if (__glibc_likely (isless (xa, 1.0)))
+ t = 0.5 * __log1p ((xa + xa) / (1.0 - xa));
+ else
+ {
+ if (isgreater (xa, 1.0))
+ return (x - x) / (x - x);
+
+ return x / 0.0;
+ }
+
+ return __copysign (t, x);
+}
+strong_alias (__ieee754_atanh, __atanh_finite)
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/e_cosh.c b/REORG.TODO/sysdeps/ieee754/dbl-64/e_cosh.c
new file mode 100644
index 0000000000..52a5d5007d
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/e_cosh.c
@@ -0,0 +1,88 @@
+/* Optimized by Ulrich Drepper <drepper@gmail.com>, 2011 */
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+/* __ieee754_cosh(x)
+ * Method :
+ * mathematically cosh(x) if defined to be (exp(x)+exp(-x))/2
+ * 1. Replace x by |x| (cosh(x) = cosh(-x)).
+ * 2.
+ * [ exp(x) - 1 ]^2
+ * 0 <= x <= ln2/2 : cosh(x) := 1 + -------------------
+ * 2*exp(x)
+ *
+ * exp(x) + 1/exp(x)
+ * ln2/2 <= x <= 22 : cosh(x) := -------------------
+ * 2
+ * 22 <= x <= lnovft : cosh(x) := exp(x)/2
+ * lnovft <= x <= ln2ovft: cosh(x) := exp(x/2)/2 * exp(x/2)
+ * ln2ovft < x : cosh(x) := huge*huge (overflow)
+ *
+ * Special cases:
+ * cosh(x) is |x| if x is +INF, -INF, or NaN.
+ * only cosh(0)=1 is exact for finite x.
+ */
+
+#include <math.h>
+#include <math_private.h>
+
+static const double one = 1.0, half = 0.5, huge = 1.0e300;
+
+double
+__ieee754_cosh (double x)
+{
+ double t, w;
+ int32_t ix;
+ u_int32_t lx;
+
+ /* High word of |x|. */
+ GET_HIGH_WORD (ix, x);
+ ix &= 0x7fffffff;
+
+ /* |x| in [0,22] */
+ if (ix < 0x40360000)
+ {
+ /* |x| in [0,0.5*ln2], return 1+expm1(|x|)^2/(2*exp(|x|)) */
+ if (ix < 0x3fd62e43)
+ {
+ if (ix < 0x3c800000)
+ return one; /* cosh(tiny) = 1 */
+ t = __expm1 (fabs (x));
+ w = one + t;
+ return one + (t * t) / (w + w);
+ }
+
+ /* |x| in [0.5*ln2,22], return (exp(|x|)+1/exp(|x|)/2; */
+ t = __ieee754_exp (fabs (x));
+ return half * t + half / t;
+ }
+
+ /* |x| in [22, log(maxdouble)] return half*exp(|x|) */
+ if (ix < 0x40862e42)
+ return half * __ieee754_exp (fabs (x));
+
+ /* |x| in [log(maxdouble), overflowthresold] */
+ GET_LOW_WORD (lx, x);
+ if (ix < 0x408633ce || ((ix == 0x408633ce) && (lx <= (u_int32_t) 0x8fb9f87d)))
+ {
+ w = __ieee754_exp (half * fabs (x));
+ t = half * w;
+ return t * w;
+ }
+
+ /* x is INF or NaN */
+ if (ix >= 0x7ff00000)
+ return x * x;
+
+ /* |x| > overflowthresold, cosh(x) overflow */
+ return math_narrow_eval (huge * huge);
+}
+strong_alias (__ieee754_cosh, __cosh_finite)
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/e_exp.c b/REORG.TODO/sysdeps/ieee754/dbl-64/e_exp.c
new file mode 100644
index 0000000000..6757a14ce1
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/e_exp.c
@@ -0,0 +1,361 @@
+/*
+ * IBM Accurate Mathematical Library
+ * written by International Business Machines Corp.
+ * Copyright (C) 2001-2017 Free Software Foundation, Inc.
+ *
+ * This program 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 2.1 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 program; if not, see <http://www.gnu.org/licenses/>.
+ */
+/***************************************************************************/
+/* MODULE_NAME:uexp.c */
+/* */
+/* FUNCTION:uexp */
+/* exp1 */
+/* */
+/* FILES NEEDED:dla.h endian.h mpa.h mydefs.h uexp.h */
+/* mpa.c mpexp.x slowexp.c */
+/* */
+/* An ultimate exp routine. Given an IEEE double machine number x */
+/* it computes the correctly rounded (to nearest) value of e^x */
+/* Assumption: Machine arithmetic operations are performed in */
+/* round to nearest mode of IEEE 754 standard. */
+/* */
+/***************************************************************************/
+
+#include <math.h>
+#include "endian.h"
+#include "uexp.h"
+#include "mydefs.h"
+#include "MathLib.h"
+#include "uexp.tbl"
+#include <math_private.h>
+#include <fenv.h>
+#include <float.h>
+
+#ifndef SECTION
+# define SECTION
+#endif
+
+double __slowexp (double);
+
+/* An ultimate exp routine. Given an IEEE double machine number x it computes
+ the correctly rounded (to nearest) value of e^x. */
+double
+SECTION
+__ieee754_exp (double x)
+{
+ double bexp, t, eps, del, base, y, al, bet, res, rem, cor;
+ mynumber junk1, junk2, binexp = {{0, 0}};
+ int4 i, j, m, n, ex;
+ double retval;
+
+ {
+ SET_RESTORE_ROUND (FE_TONEAREST);
+
+ junk1.x = x;
+ m = junk1.i[HIGH_HALF];
+ n = m & hugeint;
+
+ if (n > smallint && n < bigint)
+ {
+ y = x * log2e.x + three51.x;
+ bexp = y - three51.x; /* multiply the result by 2**bexp */
+
+ junk1.x = y;
+
+ eps = bexp * ln_two2.x; /* x = bexp*ln(2) + t - eps */
+ t = x - bexp * ln_two1.x;
+
+ y = t + three33.x;
+ base = y - three33.x; /* t rounded to a multiple of 2**-18 */
+ junk2.x = y;
+ del = (t - base) - eps; /* x = bexp*ln(2) + base + del */
+ eps = del + del * del * (p3.x * del + p2.x);
+
+ binexp.i[HIGH_HALF] = (junk1.i[LOW_HALF] + 1023) << 20;
+
+ i = ((junk2.i[LOW_HALF] >> 8) & 0xfffffffe) + 356;
+ j = (junk2.i[LOW_HALF] & 511) << 1;
+
+ al = coar.x[i] * fine.x[j];
+ bet = ((coar.x[i] * fine.x[j + 1] + coar.x[i + 1] * fine.x[j])
+ + coar.x[i + 1] * fine.x[j + 1]);
+
+ rem = (bet + bet * eps) + al * eps;
+ res = al + rem;
+ cor = (al - res) + rem;
+ if (res == (res + cor * err_0))
+ {
+ retval = res * binexp.x;
+ goto ret;
+ }
+ else
+ {
+ retval = __slowexp (x);
+ goto ret;
+ } /*if error is over bound */
+ }
+
+ if (n <= smallint)
+ {
+ retval = 1.0;
+ goto ret;
+ }
+
+ if (n >= badint)
+ {
+ if (n > infint)
+ {
+ retval = x + x;
+ goto ret;
+ } /* x is NaN */
+ if (n < infint)
+ {
+ if (x > 0)
+ goto ret_huge;
+ else
+ goto ret_tiny;
+ }
+ /* x is finite, cause either overflow or underflow */
+ if (junk1.i[LOW_HALF] != 0)
+ {
+ retval = x + x;
+ goto ret;
+ } /* x is NaN */
+ retval = (x > 0) ? inf.x : zero; /* |x| = inf; return either inf or 0 */
+ goto ret;
+ }
+
+ y = x * log2e.x + three51.x;
+ bexp = y - three51.x;
+ junk1.x = y;
+ eps = bexp * ln_two2.x;
+ t = x - bexp * ln_two1.x;
+ y = t + three33.x;
+ base = y - three33.x;
+ junk2.x = y;
+ del = (t - base) - eps;
+ eps = del + del * del * (p3.x * del + p2.x);
+ i = ((junk2.i[LOW_HALF] >> 8) & 0xfffffffe) + 356;
+ j = (junk2.i[LOW_HALF] & 511) << 1;
+ al = coar.x[i] * fine.x[j];
+ bet = ((coar.x[i] * fine.x[j + 1] + coar.x[i + 1] * fine.x[j])
+ + coar.x[i + 1] * fine.x[j + 1]);
+ rem = (bet + bet * eps) + al * eps;
+ res = al + rem;
+ cor = (al - res) + rem;
+ if (m >> 31)
+ {
+ ex = junk1.i[LOW_HALF];
+ if (res < 1.0)
+ {
+ res += res;
+ cor += cor;
+ ex -= 1;
+ }
+ if (ex >= -1022)
+ {
+ binexp.i[HIGH_HALF] = (1023 + ex) << 20;
+ if (res == (res + cor * err_0))
+ {
+ retval = res * binexp.x;
+ goto ret;
+ }
+ else
+ {
+ retval = __slowexp (x);
+ goto check_uflow_ret;
+ } /*if error is over bound */
+ }
+ ex = -(1022 + ex);
+ binexp.i[HIGH_HALF] = (1023 - ex) << 20;
+ res *= binexp.x;
+ cor *= binexp.x;
+ eps = 1.0000000001 + err_0 * binexp.x;
+ t = 1.0 + res;
+ y = ((1.0 - t) + res) + cor;
+ res = t + y;
+ cor = (t - res) + y;
+ if (res == (res + eps * cor))
+ {
+ binexp.i[HIGH_HALF] = 0x00100000;
+ retval = (res - 1.0) * binexp.x;
+ goto check_uflow_ret;
+ }
+ else
+ {
+ retval = __slowexp (x);
+ goto check_uflow_ret;
+ } /* if error is over bound */
+ check_uflow_ret:
+ if (retval < DBL_MIN)
+ {
+ double force_underflow = tiny * tiny;
+ math_force_eval (force_underflow);
+ }
+ if (retval == 0)
+ goto ret_tiny;
+ goto ret;
+ }
+ else
+ {
+ binexp.i[HIGH_HALF] = (junk1.i[LOW_HALF] + 767) << 20;
+ if (res == (res + cor * err_0))
+ retval = res * binexp.x * t256.x;
+ else
+ retval = __slowexp (x);
+ if (isinf (retval))
+ goto ret_huge;
+ else
+ goto ret;
+ }
+ }
+ret:
+ return retval;
+
+ ret_huge:
+ return hhuge * hhuge;
+
+ ret_tiny:
+ return tiny * tiny;
+}
+#ifndef __ieee754_exp
+strong_alias (__ieee754_exp, __exp_finite)
+#endif
+
+/* Compute e^(x+xx). The routine also receives bound of error of previous
+ calculation. If after computing exp the error exceeds the allowed bounds,
+ the routine returns a non-positive number. Otherwise it returns the
+ computed result, which is always positive. */
+double
+SECTION
+__exp1 (double x, double xx, double error)
+{
+ double bexp, t, eps, del, base, y, al, bet, res, rem, cor;
+ mynumber junk1, junk2, binexp = {{0, 0}};
+ int4 i, j, m, n, ex;
+
+ junk1.x = x;
+ m = junk1.i[HIGH_HALF];
+ n = m & hugeint; /* no sign */
+
+ if (n > smallint && n < bigint)
+ {
+ y = x * log2e.x + three51.x;
+ bexp = y - three51.x; /* multiply the result by 2**bexp */
+
+ junk1.x = y;
+
+ eps = bexp * ln_two2.x; /* x = bexp*ln(2) + t - eps */
+ t = x - bexp * ln_two1.x;
+
+ y = t + three33.x;
+ base = y - three33.x; /* t rounded to a multiple of 2**-18 */
+ junk2.x = y;
+ del = (t - base) + (xx - eps); /* x = bexp*ln(2) + base + del */
+ eps = del + del * del * (p3.x * del + p2.x);
+
+ binexp.i[HIGH_HALF] = (junk1.i[LOW_HALF] + 1023) << 20;
+
+ i = ((junk2.i[LOW_HALF] >> 8) & 0xfffffffe) + 356;
+ j = (junk2.i[LOW_HALF] & 511) << 1;
+
+ al = coar.x[i] * fine.x[j];
+ bet = ((coar.x[i] * fine.x[j + 1] + coar.x[i + 1] * fine.x[j])
+ + coar.x[i + 1] * fine.x[j + 1]);
+
+ rem = (bet + bet * eps) + al * eps;
+ res = al + rem;
+ cor = (al - res) + rem;
+ if (res == (res + cor * (1.0 + error + err_1)))
+ return res * binexp.x;
+ else
+ return -10.0;
+ }
+
+ if (n <= smallint)
+ return 1.0; /* if x->0 e^x=1 */
+
+ if (n >= badint)
+ {
+ if (n > infint)
+ return (zero / zero); /* x is NaN, return invalid */
+ if (n < infint)
+ return ((x > 0) ? (hhuge * hhuge) : (tiny * tiny));
+ /* x is finite, cause either overflow or underflow */
+ if (junk1.i[LOW_HALF] != 0)
+ return (zero / zero); /* x is NaN */
+ return ((x > 0) ? inf.x : zero); /* |x| = inf; return either inf or 0 */
+ }
+
+ y = x * log2e.x + three51.x;
+ bexp = y - three51.x;
+ junk1.x = y;
+ eps = bexp * ln_two2.x;
+ t = x - bexp * ln_two1.x;
+ y = t + three33.x;
+ base = y - three33.x;
+ junk2.x = y;
+ del = (t - base) + (xx - eps);
+ eps = del + del * del * (p3.x * del + p2.x);
+ i = ((junk2.i[LOW_HALF] >> 8) & 0xfffffffe) + 356;
+ j = (junk2.i[LOW_HALF] & 511) << 1;
+ al = coar.x[i] * fine.x[j];
+ bet = ((coar.x[i] * fine.x[j + 1] + coar.x[i + 1] * fine.x[j])
+ + coar.x[i + 1] * fine.x[j + 1]);
+ rem = (bet + bet * eps) + al * eps;
+ res = al + rem;
+ cor = (al - res) + rem;
+ if (m >> 31)
+ {
+ ex = junk1.i[LOW_HALF];
+ if (res < 1.0)
+ {
+ res += res;
+ cor += cor;
+ ex -= 1;
+ }
+ if (ex >= -1022)
+ {
+ binexp.i[HIGH_HALF] = (1023 + ex) << 20;
+ if (res == (res + cor * (1.0 + error + err_1)))
+ return res * binexp.x;
+ else
+ return -10.0;
+ }
+ ex = -(1022 + ex);
+ binexp.i[HIGH_HALF] = (1023 - ex) << 20;
+ res *= binexp.x;
+ cor *= binexp.x;
+ eps = 1.00000000001 + (error + err_1) * binexp.x;
+ t = 1.0 + res;
+ y = ((1.0 - t) + res) + cor;
+ res = t + y;
+ cor = (t - res) + y;
+ if (res == (res + eps * cor))
+ {
+ binexp.i[HIGH_HALF] = 0x00100000;
+ return (res - 1.0) * binexp.x;
+ }
+ else
+ return -10.0;
+ }
+ else
+ {
+ binexp.i[HIGH_HALF] = (junk1.i[LOW_HALF] + 767) << 20;
+ if (res == (res + cor * (1.0 + error + err_1)))
+ return res * binexp.x * t256.x;
+ else
+ return -10.0;
+ }
+}
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/e_exp10.c b/REORG.TODO/sysdeps/ieee754/dbl-64/e_exp10.c
new file mode 100644
index 0000000000..6c8783e405
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/e_exp10.c
@@ -0,0 +1,50 @@
+/* Copyright (C) 2012-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+#include <math_private.h>
+#include <float.h>
+
+static const double log10_high = 0x2.4d7637p0;
+static const double log10_low = 0x7.6aaa2b05ba95cp-28;
+
+double
+__ieee754_exp10 (double arg)
+{
+ int32_t lx;
+ double arg_high, arg_low;
+ double exp_high, exp_low;
+
+ if (!isfinite (arg))
+ return __ieee754_exp (arg);
+ if (arg < DBL_MIN_10_EXP - DBL_DIG - 10)
+ return DBL_MIN * DBL_MIN;
+ else if (arg > DBL_MAX_10_EXP + 1)
+ return DBL_MAX * DBL_MAX;
+ else if (fabs (arg) < 0x1p-56)
+ return 1.0;
+
+ GET_LOW_WORD (lx, arg);
+ lx &= 0xf8000000;
+ arg_high = arg;
+ SET_LOW_WORD (arg_high, lx);
+ arg_low = arg - arg_high;
+ exp_high = arg_high * log10_high;
+ exp_low = arg_high * log10_low + arg_low * M_LN10;
+ return __ieee754_exp (exp_high) * __ieee754_exp (exp_low);
+}
+strong_alias (__ieee754_exp10, __exp10_finite)
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/e_exp2.c b/REORG.TODO/sysdeps/ieee754/dbl-64/e_exp2.c
new file mode 100644
index 0000000000..9efda23f06
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/e_exp2.c
@@ -0,0 +1,133 @@
+/* Double-precision floating point 2^x.
+ Copyright (C) 1997-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Geoffrey Keating <geoffk@ozemail.com.au>
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+/* The basic design here is from
+ Shmuel Gal and Boris Bachelis, "An Accurate Elementary Mathematical
+ Library for the IEEE Floating Point Standard", ACM Trans. Math. Soft.,
+ 17 (1), March 1991, pp. 26-45.
+ It has been slightly modified to compute 2^x instead of e^x.
+ */
+#include <stdlib.h>
+#include <float.h>
+#include <ieee754.h>
+#include <math.h>
+#include <fenv.h>
+#include <inttypes.h>
+#include <math_private.h>
+
+#include "t_exp2.h"
+
+static const double TWO1023 = 8.988465674311579539e+307;
+static const double TWOM1000 = 9.3326361850321887899e-302;
+
+double
+__ieee754_exp2 (double x)
+{
+ static const double himark = (double) DBL_MAX_EXP;
+ static const double lomark = (double) (DBL_MIN_EXP - DBL_MANT_DIG - 1);
+
+ /* Check for usual case. */
+ if (__glibc_likely (isless (x, himark)))
+ {
+ /* Exceptional cases: */
+ if (__glibc_unlikely (!isgreaterequal (x, lomark)))
+ {
+ if (isinf (x))
+ /* e^-inf == 0, with no error. */
+ return 0;
+ else
+ /* Underflow */
+ return TWOM1000 * TWOM1000;
+ }
+
+ static const double THREEp42 = 13194139533312.0;
+ int tval, unsafe;
+ double rx, x22, result;
+ union ieee754_double ex2_u, scale_u;
+
+ if (fabs (x) < DBL_EPSILON / 4.0)
+ return 1.0 + x;
+
+ {
+ SET_RESTORE_ROUND_NOEX (FE_TONEAREST);
+
+ /* 1. Argument reduction.
+ Choose integers ex, -256 <= t < 256, and some real
+ -1/1024 <= x1 <= 1024 so that
+ x = ex + t/512 + x1.
+
+ First, calculate rx = ex + t/512. */
+ rx = x + THREEp42;
+ rx -= THREEp42;
+ x -= rx; /* Compute x=x1. */
+ /* Compute tval = (ex*512 + t)+256.
+ Now, t = (tval mod 512)-256 and ex=tval/512 [that's mod, NOT %;
+ and /-round-to-nearest not the usual c integer /]. */
+ tval = (int) (rx * 512.0 + 256.0);
+
+ /* 2. Adjust for accurate table entry.
+ Find e so that
+ x = ex + t/512 + e + x2
+ where -1e6 < e < 1e6, and
+ (double)(2^(t/512+e))
+ is accurate to one part in 2^-64. */
+
+ /* 'tval & 511' is the same as 'tval%512' except that it's always
+ positive.
+ Compute x = x2. */
+ x -= exp2_deltatable[tval & 511];
+
+ /* 3. Compute ex2 = 2^(t/512+e+ex). */
+ ex2_u.d = exp2_accuratetable[tval & 511];
+ tval >>= 9;
+ /* x2 is an integer multiple of 2^-54; avoid intermediate
+ underflow from the calculation of x22 * x. */
+ unsafe = abs (tval) >= -DBL_MIN_EXP - 56;
+ ex2_u.ieee.exponent += tval >> unsafe;
+ scale_u.d = 1.0;
+ scale_u.ieee.exponent += tval - (tval >> unsafe);
+
+ /* 4. Approximate 2^x2 - 1, using a fourth-degree polynomial,
+ with maximum error in [-2^-10-2^-30,2^-10+2^-30]
+ less than 10^-19. */
+
+ x22 = (((.0096181293647031180
+ * x + .055504110254308625)
+ * x + .240226506959100583)
+ * x + .69314718055994495) * ex2_u.d;
+ math_opt_barrier (x22);
+ }
+
+ /* 5. Return (2^x2-1) * 2^(t/512+e+ex) + 2^(t/512+e+ex). */
+ result = x22 * x + ex2_u.d;
+
+ if (!unsafe)
+ return result;
+ else
+ {
+ result *= scale_u.d;
+ math_check_force_underflow_nonneg (result);
+ return result;
+ }
+ }
+ else
+ /* Return x, if x is a NaN or Inf; or overflow, otherwise. */
+ return TWO1023 * x;
+}
+strong_alias (__ieee754_exp2, __exp2_finite)
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/e_fmod.c b/REORG.TODO/sysdeps/ieee754/dbl-64/e_fmod.c
new file mode 100644
index 0000000000..e82b302200
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/e_fmod.c
@@ -0,0 +1,173 @@
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+/*
+ * __ieee754_fmod(x,y)
+ * Return x mod y in exact arithmetic
+ * Method: shift and subtract
+ */
+
+#include <math.h>
+#include <math_private.h>
+
+static const double one = 1.0, Zero[] = { 0.0, -0.0, };
+
+double
+__ieee754_fmod (double x, double y)
+{
+ int32_t n, hx, hy, hz, ix, iy, sx, i;
+ u_int32_t lx, ly, lz;
+
+ EXTRACT_WORDS (hx, lx, x);
+ EXTRACT_WORDS (hy, ly, y);
+ sx = hx & 0x80000000; /* sign of x */
+ hx ^= sx; /* |x| */
+ hy &= 0x7fffffff; /* |y| */
+
+ /* purge off exception values */
+ if ((hy | ly) == 0 || (hx >= 0x7ff00000) || /* y=0,or x not finite */
+ ((hy | ((ly | -ly) >> 31)) > 0x7ff00000)) /* or y is NaN */
+ return (x * y) / (x * y);
+ if (hx <= hy)
+ {
+ if ((hx < hy) || (lx < ly))
+ return x; /* |x|<|y| return x */
+ if (lx == ly)
+ return Zero[(u_int32_t) sx >> 31]; /* |x|=|y| return x*0*/
+ }
+
+ /* determine ix = ilogb(x) */
+ if (__glibc_unlikely (hx < 0x00100000)) /* subnormal x */
+ {
+ if (hx == 0)
+ {
+ for (ix = -1043, i = lx; i > 0; i <<= 1)
+ ix -= 1;
+ }
+ else
+ {
+ for (ix = -1022, i = (hx << 11); i > 0; i <<= 1)
+ ix -= 1;
+ }
+ }
+ else
+ ix = (hx >> 20) - 1023;
+
+ /* determine iy = ilogb(y) */
+ if (__glibc_unlikely (hy < 0x00100000)) /* subnormal y */
+ {
+ if (hy == 0)
+ {
+ for (iy = -1043, i = ly; i > 0; i <<= 1)
+ iy -= 1;
+ }
+ else
+ {
+ for (iy = -1022, i = (hy << 11); i > 0; i <<= 1)
+ iy -= 1;
+ }
+ }
+ else
+ iy = (hy >> 20) - 1023;
+
+ /* set up {hx,lx}, {hy,ly} and align y to x */
+ if (__glibc_likely (ix >= -1022))
+ hx = 0x00100000 | (0x000fffff & hx);
+ else /* subnormal x, shift x to normal */
+ {
+ n = -1022 - ix;
+ if (n <= 31)
+ {
+ hx = (hx << n) | (lx >> (32 - n));
+ lx <<= n;
+ }
+ else
+ {
+ hx = lx << (n - 32);
+ lx = 0;
+ }
+ }
+ if (__glibc_likely (iy >= -1022))
+ hy = 0x00100000 | (0x000fffff & hy);
+ else /* subnormal y, shift y to normal */
+ {
+ n = -1022 - iy;
+ if (n <= 31)
+ {
+ hy = (hy << n) | (ly >> (32 - n));
+ ly <<= n;
+ }
+ else
+ {
+ hy = ly << (n - 32);
+ ly = 0;
+ }
+ }
+
+ /* fix point fmod */
+ n = ix - iy;
+ while (n--)
+ {
+ hz = hx - hy; lz = lx - ly; if (lx < ly)
+ hz -= 1;
+ if (hz < 0)
+ {
+ hx = hx + hx + (lx >> 31); lx = lx + lx;
+ }
+ else
+ {
+ if ((hz | lz) == 0) /* return sign(x)*0 */
+ return Zero[(u_int32_t) sx >> 31];
+ hx = hz + hz + (lz >> 31); lx = lz + lz;
+ }
+ }
+ hz = hx - hy; lz = lx - ly; if (lx < ly)
+ hz -= 1;
+ if (hz >= 0)
+ {
+ hx = hz; lx = lz;
+ }
+
+ /* convert back to floating value and restore the sign */
+ if ((hx | lx) == 0) /* return sign(x)*0 */
+ return Zero[(u_int32_t) sx >> 31];
+ while (hx < 0x00100000) /* normalize x */
+ {
+ hx = hx + hx + (lx >> 31); lx = lx + lx;
+ iy -= 1;
+ }
+ if (__glibc_likely (iy >= -1022)) /* normalize output */
+ {
+ hx = ((hx - 0x00100000) | ((iy + 1023) << 20));
+ INSERT_WORDS (x, hx | sx, lx);
+ }
+ else /* subnormal output */
+ {
+ n = -1022 - iy;
+ if (n <= 20)
+ {
+ lx = (lx >> n) | ((u_int32_t) hx << (32 - n));
+ hx >>= n;
+ }
+ else if (n <= 31)
+ {
+ lx = (hx << (32 - n)) | (lx >> n); hx = sx;
+ }
+ else
+ {
+ lx = hx >> (n - 32); hx = sx;
+ }
+ INSERT_WORDS (x, hx | sx, lx);
+ x *= one; /* create necessary signal */
+ }
+ return x; /* exact output */
+}
+strong_alias (__ieee754_fmod, __fmod_finite)
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/e_gamma_r.c b/REORG.TODO/sysdeps/ieee754/dbl-64/e_gamma_r.c
new file mode 100644
index 0000000000..818fa94766
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/e_gamma_r.c
@@ -0,0 +1,220 @@
+/* Implementation of gamma function according to ISO C.
+ Copyright (C) 1997-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+#include <math_private.h>
+#include <float.h>
+
+/* Coefficients B_2k / 2k(2k-1) of x^-(2k-1) inside exp in Stirling's
+ approximation to gamma function. */
+
+static const double gamma_coeff[] =
+ {
+ 0x1.5555555555555p-4,
+ -0xb.60b60b60b60b8p-12,
+ 0x3.4034034034034p-12,
+ -0x2.7027027027028p-12,
+ 0x3.72a3c5631fe46p-12,
+ -0x7.daac36664f1f4p-12,
+ };
+
+#define NCOEFF (sizeof (gamma_coeff) / sizeof (gamma_coeff[0]))
+
+/* Return gamma (X), for positive X less than 184, in the form R *
+ 2^(*EXP2_ADJ), where R is the return value and *EXP2_ADJ is set to
+ avoid overflow or underflow in intermediate calculations. */
+
+static double
+gamma_positive (double x, int *exp2_adj)
+{
+ int local_signgam;
+ if (x < 0.5)
+ {
+ *exp2_adj = 0;
+ return __ieee754_exp (__ieee754_lgamma_r (x + 1, &local_signgam)) / x;
+ }
+ else if (x <= 1.5)
+ {
+ *exp2_adj = 0;
+ return __ieee754_exp (__ieee754_lgamma_r (x, &local_signgam));
+ }
+ else if (x < 6.5)
+ {
+ /* Adjust into the range for using exp (lgamma). */
+ *exp2_adj = 0;
+ double n = __ceil (x - 1.5);
+ double x_adj = x - n;
+ double eps;
+ double prod = __gamma_product (x_adj, 0, n, &eps);
+ return (__ieee754_exp (__ieee754_lgamma_r (x_adj, &local_signgam))
+ * prod * (1.0 + eps));
+ }
+ else
+ {
+ double eps = 0;
+ double x_eps = 0;
+ double x_adj = x;
+ double prod = 1;
+ if (x < 12.0)
+ {
+ /* Adjust into the range for applying Stirling's
+ approximation. */
+ double n = __ceil (12.0 - x);
+ x_adj = math_narrow_eval (x + n);
+ x_eps = (x - (x_adj - n));
+ prod = __gamma_product (x_adj - n, x_eps, n, &eps);
+ }
+ /* The result is now gamma (X_ADJ + X_EPS) / (PROD * (1 + EPS)).
+ Compute gamma (X_ADJ + X_EPS) using Stirling's approximation,
+ starting by computing pow (X_ADJ, X_ADJ) with a power of 2
+ factored out. */
+ double exp_adj = -eps;
+ double x_adj_int = __round (x_adj);
+ double x_adj_frac = x_adj - x_adj_int;
+ int x_adj_log2;
+ double x_adj_mant = __frexp (x_adj, &x_adj_log2);
+ if (x_adj_mant < M_SQRT1_2)
+ {
+ x_adj_log2--;
+ x_adj_mant *= 2.0;
+ }
+ *exp2_adj = x_adj_log2 * (int) x_adj_int;
+ double ret = (__ieee754_pow (x_adj_mant, x_adj)
+ * __ieee754_exp2 (x_adj_log2 * x_adj_frac)
+ * __ieee754_exp (-x_adj)
+ * __ieee754_sqrt (2 * M_PI / x_adj)
+ / prod);
+ exp_adj += x_eps * __ieee754_log (x_adj);
+ double bsum = gamma_coeff[NCOEFF - 1];
+ double x_adj2 = x_adj * x_adj;
+ for (size_t i = 1; i <= NCOEFF - 1; i++)
+ bsum = bsum / x_adj2 + gamma_coeff[NCOEFF - 1 - i];
+ exp_adj += bsum / x_adj;
+ return ret + ret * __expm1 (exp_adj);
+ }
+}
+
+double
+__ieee754_gamma_r (double x, int *signgamp)
+{
+ int32_t hx;
+ u_int32_t lx;
+ double ret;
+
+ EXTRACT_WORDS (hx, lx, x);
+
+ if (__glibc_unlikely (((hx & 0x7fffffff) | lx) == 0))
+ {
+ /* Return value for x == 0 is Inf with divide by zero exception. */
+ *signgamp = 0;
+ return 1.0 / x;
+ }
+ if (__builtin_expect (hx < 0, 0)
+ && (u_int32_t) hx < 0xfff00000 && __rint (x) == x)
+ {
+ /* Return value for integer x < 0 is NaN with invalid exception. */
+ *signgamp = 0;
+ return (x - x) / (x - x);
+ }
+ if (__glibc_unlikely ((unsigned int) hx == 0xfff00000 && lx == 0))
+ {
+ /* x == -Inf. According to ISO this is NaN. */
+ *signgamp = 0;
+ return x - x;
+ }
+ if (__glibc_unlikely ((hx & 0x7ff00000) == 0x7ff00000))
+ {
+ /* Positive infinity (return positive infinity) or NaN (return
+ NaN). */
+ *signgamp = 0;
+ return x + x;
+ }
+
+ if (x >= 172.0)
+ {
+ /* Overflow. */
+ *signgamp = 0;
+ ret = math_narrow_eval (DBL_MAX * DBL_MAX);
+ return ret;
+ }
+ else
+ {
+ SET_RESTORE_ROUND (FE_TONEAREST);
+ if (x > 0.0)
+ {
+ *signgamp = 0;
+ int exp2_adj;
+ double tret = gamma_positive (x, &exp2_adj);
+ ret = __scalbn (tret, exp2_adj);
+ }
+ else if (x >= -DBL_EPSILON / 4.0)
+ {
+ *signgamp = 0;
+ ret = 1.0 / x;
+ }
+ else
+ {
+ double tx = __trunc (x);
+ *signgamp = (tx == 2.0 * __trunc (tx / 2.0)) ? -1 : 1;
+ if (x <= -184.0)
+ /* Underflow. */
+ ret = DBL_MIN * DBL_MIN;
+ else
+ {
+ double frac = tx - x;
+ if (frac > 0.5)
+ frac = 1.0 - frac;
+ double sinpix = (frac <= 0.25
+ ? __sin (M_PI * frac)
+ : __cos (M_PI * (0.5 - frac)));
+ int exp2_adj;
+ double tret = M_PI / (-x * sinpix
+ * gamma_positive (-x, &exp2_adj));
+ ret = __scalbn (tret, -exp2_adj);
+ math_check_force_underflow_nonneg (ret);
+ }
+ }
+ ret = math_narrow_eval (ret);
+ }
+ if (isinf (ret) && x != 0)
+ {
+ if (*signgamp < 0)
+ {
+ ret = math_narrow_eval (-__copysign (DBL_MAX, ret) * DBL_MAX);
+ ret = -ret;
+ }
+ else
+ ret = math_narrow_eval (__copysign (DBL_MAX, ret) * DBL_MAX);
+ return ret;
+ }
+ else if (ret == 0)
+ {
+ if (*signgamp < 0)
+ {
+ ret = math_narrow_eval (-__copysign (DBL_MIN, ret) * DBL_MIN);
+ ret = -ret;
+ }
+ else
+ ret = math_narrow_eval (__copysign (DBL_MIN, ret) * DBL_MIN);
+ return ret;
+ }
+ else
+ return ret;
+}
+strong_alias (__ieee754_gamma_r, __gamma_r_finite)
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/e_hypot.c b/REORG.TODO/sysdeps/ieee754/dbl-64/e_hypot.c
new file mode 100644
index 0000000000..76eb408348
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/e_hypot.c
@@ -0,0 +1,161 @@
+/* @(#)e_hypot.c 5.1 93/09/24 */
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+/* __ieee754_hypot(x,y)
+ *
+ * Method :
+ * If (assume round-to-nearest) z=x*x+y*y
+ * has error less than sqrt(2)/2 ulp, than
+ * sqrt(z) has error less than 1 ulp (exercise).
+ *
+ * So, compute sqrt(x*x+y*y) with some care as
+ * follows to get the error below 1 ulp:
+ *
+ * Assume x>y>0;
+ * (if possible, set rounding to round-to-nearest)
+ * 1. if x > 2y use
+ * x1*x1+(y*y+(x2*(x+x1))) for x*x+y*y
+ * where x1 = x with lower 32 bits cleared, x2 = x-x1; else
+ * 2. if x <= 2y use
+ * t1*y1+((x-y)*(x-y)+(t1*y2+t2*y))
+ * where t1 = 2x with lower 32 bits cleared, t2 = 2x-t1,
+ * y1= y with lower 32 bits chopped, y2 = y-y1.
+ *
+ * NOTE: scaling may be necessary if some argument is too
+ * large or too tiny
+ *
+ * Special cases:
+ * hypot(x,y) is INF if x or y is +INF or -INF; else
+ * hypot(x,y) is NAN if x or y is NAN.
+ *
+ * Accuracy:
+ * hypot(x,y) returns sqrt(x^2+y^2) with error less
+ * than 1 ulps (units in the last place)
+ */
+
+#include <math.h>
+#include <math_private.h>
+
+double
+__ieee754_hypot (double x, double y)
+{
+ double a, b, t1, t2, y1, y2, w;
+ int32_t j, k, ha, hb;
+
+ GET_HIGH_WORD (ha, x);
+ ha &= 0x7fffffff;
+ GET_HIGH_WORD (hb, y);
+ hb &= 0x7fffffff;
+ if (hb > ha)
+ {
+ a = y; b = x; j = ha; ha = hb; hb = j;
+ }
+ else
+ {
+ a = x; b = y;
+ }
+ SET_HIGH_WORD (a, ha); /* a <- |a| */
+ SET_HIGH_WORD (b, hb); /* b <- |b| */
+ if ((ha - hb) > 0x3c00000)
+ {
+ return a + b;
+ } /* x/y > 2**60 */
+ k = 0;
+ if (__glibc_unlikely (ha > 0x5f300000)) /* a>2**500 */
+ {
+ if (ha >= 0x7ff00000) /* Inf or NaN */
+ {
+ u_int32_t low;
+ w = a + b; /* for sNaN */
+ if (issignaling (a) || issignaling (b))
+ return w;
+ GET_LOW_WORD (low, a);
+ if (((ha & 0xfffff) | low) == 0)
+ w = a;
+ GET_LOW_WORD (low, b);
+ if (((hb ^ 0x7ff00000) | low) == 0)
+ w = b;
+ return w;
+ }
+ /* scale a and b by 2**-600 */
+ ha -= 0x25800000; hb -= 0x25800000; k += 600;
+ SET_HIGH_WORD (a, ha);
+ SET_HIGH_WORD (b, hb);
+ }
+ if (__builtin_expect (hb < 0x23d00000, 0)) /* b < 2**-450 */
+ {
+ if (hb <= 0x000fffff) /* subnormal b or 0 */
+ {
+ u_int32_t low;
+ GET_LOW_WORD (low, b);
+ if ((hb | low) == 0)
+ return a;
+ t1 = 0;
+ SET_HIGH_WORD (t1, 0x7fd00000); /* t1=2^1022 */
+ b *= t1;
+ a *= t1;
+ k -= 1022;
+ GET_HIGH_WORD (ha, a);
+ GET_HIGH_WORD (hb, b);
+ if (hb > ha)
+ {
+ t1 = a;
+ a = b;
+ b = t1;
+ j = ha;
+ ha = hb;
+ hb = j;
+ }
+ }
+ else /* scale a and b by 2^600 */
+ {
+ ha += 0x25800000; /* a *= 2^600 */
+ hb += 0x25800000; /* b *= 2^600 */
+ k -= 600;
+ SET_HIGH_WORD (a, ha);
+ SET_HIGH_WORD (b, hb);
+ }
+ }
+ /* medium size a and b */
+ w = a - b;
+ if (w > b)
+ {
+ t1 = 0;
+ SET_HIGH_WORD (t1, ha);
+ t2 = a - t1;
+ w = __ieee754_sqrt (t1 * t1 - (b * (-b) - t2 * (a + t1)));
+ }
+ else
+ {
+ a = a + a;
+ y1 = 0;
+ SET_HIGH_WORD (y1, hb);
+ y2 = b - y1;
+ t1 = 0;
+ SET_HIGH_WORD (t1, ha + 0x00100000);
+ t2 = a - t1;
+ w = __ieee754_sqrt (t1 * y1 - (w * (-w) - (t1 * y2 + t2 * b)));
+ }
+ if (k != 0)
+ {
+ u_int32_t high;
+ t1 = 1.0;
+ GET_HIGH_WORD (high, t1);
+ SET_HIGH_WORD (t1, high + (k << 20));
+ w *= t1;
+ math_check_force_underflow_nonneg (w);
+ return w;
+ }
+ else
+ return w;
+}
+strong_alias (__ieee754_hypot, __hypot_finite)
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/e_ilogb.c b/REORG.TODO/sysdeps/ieee754/dbl-64/e_ilogb.c
new file mode 100644
index 0000000000..1e338a59c1
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/e_ilogb.c
@@ -0,0 +1,63 @@
+/* @(#)s_ilogb.c 5.1 93/09/24 */
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: s_ilogb.c,v 1.9 1995/05/10 20:47:28 jtc Exp $";
+#endif
+
+/* ilogb(double x)
+ * return the binary exponent of non-zero x
+ * ilogb(0) = FP_ILOGB0
+ * ilogb(NaN) = FP_ILOGBNAN (no signal is raised)
+ * ilogb(+-Inf) = INT_MAX (no signal is raised)
+ */
+
+#include <limits.h>
+#include <math.h>
+#include <math_private.h>
+
+int
+__ieee754_ilogb (double x)
+{
+ int32_t hx, lx, ix;
+
+ GET_HIGH_WORD (hx, x);
+ hx &= 0x7fffffff;
+ if (hx < 0x00100000)
+ {
+ GET_LOW_WORD (lx, x);
+ if ((hx | lx) == 0)
+ return FP_ILOGB0; /* ilogb(0) = FP_ILOGB0 */
+ else /* subnormal x */
+ if (hx == 0)
+ {
+ for (ix = -1043; lx > 0; lx <<= 1)
+ ix -= 1;
+ }
+ else
+ {
+ for (ix = -1022, hx <<= 11; hx > 0; hx <<= 1)
+ ix -= 1;
+ }
+ return ix;
+ }
+ else if (hx < 0x7ff00000)
+ return (hx >> 20) - 1023;
+ else if (FP_ILOGBNAN != INT_MAX)
+ {
+ /* ISO C99 requires ilogb(+-Inf) == INT_MAX. */
+ GET_LOW_WORD (lx, x);
+ if (((hx ^ 0x7ff00000) | lx) == 0)
+ return INT_MAX;
+ }
+ return FP_ILOGBNAN;
+}
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/e_j0.c b/REORG.TODO/sysdeps/ieee754/dbl-64/e_j0.c
new file mode 100644
index 0000000000..4b440cf0d0
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/e_j0.c
@@ -0,0 +1,458 @@
+/* @(#)e_j0.c 5.1 93/09/24 */
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+/* Modified by Naohiko Shimizu/Tokai University, Japan 1997/08/26,
+ for performance improvement on pipelined processors.
+ */
+
+/* __ieee754_j0(x), __ieee754_y0(x)
+ * Bessel function of the first and second kinds of order zero.
+ * Method -- j0(x):
+ * 1. For tiny x, we use j0(x) = 1 - x^2/4 + x^4/64 - ...
+ * 2. Reduce x to |x| since j0(x)=j0(-x), and
+ * for x in (0,2)
+ * j0(x) = 1-z/4+ z^2*R0/S0, where z = x*x;
+ * (precision: |j0-1+z/4-z^2R0/S0 |<2**-63.67 )
+ * for x in (2,inf)
+ * j0(x) = sqrt(2/(pi*x))*(p0(x)*cos(x0)-q0(x)*sin(x0))
+ * where x0 = x-pi/4. It is better to compute sin(x0),cos(x0)
+ * as follow:
+ * cos(x0) = cos(x)cos(pi/4)+sin(x)sin(pi/4)
+ * = 1/sqrt(2) * (cos(x) + sin(x))
+ * sin(x0) = sin(x)cos(pi/4)-cos(x)sin(pi/4)
+ * = 1/sqrt(2) * (sin(x) - cos(x))
+ * (To avoid cancellation, use
+ * sin(x) +- cos(x) = -cos(2x)/(sin(x) -+ cos(x))
+ * to compute the worse one.)
+ *
+ * 3 Special cases
+ * j0(nan)= nan
+ * j0(0) = 1
+ * j0(inf) = 0
+ *
+ * Method -- y0(x):
+ * 1. For x<2.
+ * Since
+ * y0(x) = 2/pi*(j0(x)*(ln(x/2)+Euler) + x^2/4 - ...)
+ * therefore y0(x)-2/pi*j0(x)*ln(x) is an even function.
+ * We use the following function to approximate y0,
+ * y0(x) = U(z)/V(z) + (2/pi)*(j0(x)*ln(x)), z= x^2
+ * where
+ * U(z) = u00 + u01*z + ... + u06*z^6
+ * V(z) = 1 + v01*z + ... + v04*z^4
+ * with absolute approximation error bounded by 2**-72.
+ * Note: For tiny x, U/V = u0 and j0(x)~1, hence
+ * y0(tiny) = u0 + (2/pi)*ln(tiny), (choose tiny<2**-27)
+ * 2. For x>=2.
+ * y0(x) = sqrt(2/(pi*x))*(p0(x)*cos(x0)+q0(x)*sin(x0))
+ * where x0 = x-pi/4. It is better to compute sin(x0),cos(x0)
+ * by the method mentioned above.
+ * 3. Special cases: y0(0)=-inf, y0(x<0)=NaN, y0(inf)=0.
+ */
+
+#include <math.h>
+#include <math_private.h>
+
+static double pzero (double), qzero (double);
+
+static const double
+ huge = 1e300,
+ one = 1.0,
+ invsqrtpi = 5.64189583547756279280e-01, /* 0x3FE20DD7, 0x50429B6D */
+ tpi = 6.36619772367581382433e-01, /* 0x3FE45F30, 0x6DC9C883 */
+/* R0/S0 on [0, 2.00] */
+ R[] = { 0.0, 0.0, 1.56249999999999947958e-02, /* 0x3F8FFFFF, 0xFFFFFFFD */
+ -1.89979294238854721751e-04, /* 0xBF28E6A5, 0xB61AC6E9 */
+ 1.82954049532700665670e-06, /* 0x3EBEB1D1, 0x0C503919 */
+ -4.61832688532103189199e-09 }, /* 0xBE33D5E7, 0x73D63FCE */
+ S[] = { 0.0, 1.56191029464890010492e-02, /* 0x3F8FFCE8, 0x82C8C2A4 */
+ 1.16926784663337450260e-04, /* 0x3F1EA6D2, 0xDD57DBF4 */
+ 5.13546550207318111446e-07, /* 0x3EA13B54, 0xCE84D5A9 */
+ 1.16614003333790000205e-09 }; /* 0x3E1408BC, 0xF4745D8F */
+
+static const double zero = 0.0;
+
+double
+__ieee754_j0 (double x)
+{
+ double z, s, c, ss, cc, r, u, v, r1, r2, s1, s2, z2, z4;
+ int32_t hx, ix;
+
+ GET_HIGH_WORD (hx, x);
+ ix = hx & 0x7fffffff;
+ if (ix >= 0x7ff00000)
+ return one / (x * x);
+ x = fabs (x);
+ if (ix >= 0x40000000) /* |x| >= 2.0 */
+ {
+ __sincos (x, &s, &c);
+ ss = s - c;
+ cc = s + c;
+ if (ix < 0x7fe00000) /* make sure x+x not overflow */
+ {
+ z = -__cos (x + x);
+ if ((s * c) < zero)
+ cc = z / ss;
+ else
+ ss = z / cc;
+ }
+ /*
+ * j0(x) = 1/sqrt(pi) * (P(0,x)*cc - Q(0,x)*ss) / sqrt(x)
+ * y0(x) = 1/sqrt(pi) * (P(0,x)*ss + Q(0,x)*cc) / sqrt(x)
+ */
+ if (ix > 0x48000000)
+ z = (invsqrtpi * cc) / __ieee754_sqrt (x);
+ else
+ {
+ u = pzero (x); v = qzero (x);
+ z = invsqrtpi * (u * cc - v * ss) / __ieee754_sqrt (x);
+ }
+ return z;
+ }
+ if (ix < 0x3f200000) /* |x| < 2**-13 */
+ {
+ math_force_eval (huge + x); /* raise inexact if x != 0 */
+ if (ix < 0x3e400000)
+ return one; /* |x|<2**-27 */
+ else
+ return one - 0.25 * x * x;
+ }
+ z = x * x;
+ r1 = z * R[2]; z2 = z * z;
+ r2 = R[3] + z * R[4]; z4 = z2 * z2;
+ r = r1 + z2 * r2 + z4 * R[5];
+ s1 = one + z * S[1];
+ s2 = S[2] + z * S[3];
+ s = s1 + z2 * s2 + z4 * S[4];
+ if (ix < 0x3FF00000) /* |x| < 1.00 */
+ {
+ return one + z * (-0.25 + (r / s));
+ }
+ else
+ {
+ u = 0.5 * x;
+ return ((one + u) * (one - u) + z * (r / s));
+ }
+}
+strong_alias (__ieee754_j0, __j0_finite)
+
+static const double
+U[] = { -7.38042951086872317523e-02, /* 0xBFB2E4D6, 0x99CBD01F */
+ 1.76666452509181115538e-01, /* 0x3FC69D01, 0x9DE9E3FC */
+ -1.38185671945596898896e-02, /* 0xBF8C4CE8, 0xB16CFA97 */
+ 3.47453432093683650238e-04, /* 0x3F36C54D, 0x20B29B6B */
+ -3.81407053724364161125e-06, /* 0xBECFFEA7, 0x73D25CAD */
+ 1.95590137035022920206e-08, /* 0x3E550057, 0x3B4EABD4 */
+ -3.98205194132103398453e-11 }, /* 0xBDC5E43D, 0x693FB3C8 */
+V[] = { 1.27304834834123699328e-02, /* 0x3F8A1270, 0x91C9C71A */
+ 7.60068627350353253702e-05, /* 0x3F13ECBB, 0xF578C6C1 */
+ 2.59150851840457805467e-07, /* 0x3E91642D, 0x7FF202FD */
+ 4.41110311332675467403e-10 }; /* 0x3DFE5018, 0x3BD6D9EF */
+
+double
+__ieee754_y0 (double x)
+{
+ double z, s, c, ss, cc, u, v, z2, z4, z6, u1, u2, u3, v1, v2;
+ int32_t hx, ix, lx;
+
+ EXTRACT_WORDS (hx, lx, x);
+ ix = 0x7fffffff & hx;
+ /* Y0(NaN) is NaN, y0(-inf) is Nan, y0(inf) is 0, y0(0) is -inf. */
+ if (ix >= 0x7ff00000)
+ return one / (x + x * x);
+ if ((ix | lx) == 0)
+ return -1 / zero; /* -inf and divide by zero exception. */
+ if (hx < 0)
+ return zero / (zero * x);
+ if (ix >= 0x40000000) /* |x| >= 2.0 */
+ { /* y0(x) = sqrt(2/(pi*x))*(p0(x)*sin(x0)+q0(x)*cos(x0))
+ * where x0 = x-pi/4
+ * Better formula:
+ * cos(x0) = cos(x)cos(pi/4)+sin(x)sin(pi/4)
+ * = 1/sqrt(2) * (sin(x) + cos(x))
+ * sin(x0) = sin(x)cos(3pi/4)-cos(x)sin(3pi/4)
+ * = 1/sqrt(2) * (sin(x) - cos(x))
+ * To avoid cancellation, use
+ * sin(x) +- cos(x) = -cos(2x)/(sin(x) -+ cos(x))
+ * to compute the worse one.
+ */
+ __sincos (x, &s, &c);
+ ss = s - c;
+ cc = s + c;
+ /*
+ * j0(x) = 1/sqrt(pi) * (P(0,x)*cc - Q(0,x)*ss) / sqrt(x)
+ * y0(x) = 1/sqrt(pi) * (P(0,x)*ss + Q(0,x)*cc) / sqrt(x)
+ */
+ if (ix < 0x7fe00000) /* make sure x+x not overflow */
+ {
+ z = -__cos (x + x);
+ if ((s * c) < zero)
+ cc = z / ss;
+ else
+ ss = z / cc;
+ }
+ if (ix > 0x48000000)
+ z = (invsqrtpi * ss) / __ieee754_sqrt (x);
+ else
+ {
+ u = pzero (x); v = qzero (x);
+ z = invsqrtpi * (u * ss + v * cc) / __ieee754_sqrt (x);
+ }
+ return z;
+ }
+ if (ix <= 0x3e400000) /* x < 2**-27 */
+ {
+ return (U[0] + tpi * __ieee754_log (x));
+ }
+ z = x * x;
+ u1 = U[0] + z * U[1]; z2 = z * z;
+ u2 = U[2] + z * U[3]; z4 = z2 * z2;
+ u3 = U[4] + z * U[5]; z6 = z4 * z2;
+ u = u1 + z2 * u2 + z4 * u3 + z6 * U[6];
+ v1 = one + z * V[0];
+ v2 = V[1] + z * V[2];
+ v = v1 + z2 * v2 + z4 * V[3];
+ return (u / v + tpi * (__ieee754_j0 (x) * __ieee754_log (x)));
+}
+strong_alias (__ieee754_y0, __y0_finite)
+
+/* The asymptotic expansions of pzero is
+ * 1 - 9/128 s^2 + 11025/98304 s^4 - ..., where s = 1/x.
+ * For x >= 2, We approximate pzero by
+ * pzero(x) = 1 + (R/S)
+ * where R = pR0 + pR1*s^2 + pR2*s^4 + ... + pR5*s^10
+ * S = 1 + pS0*s^2 + ... + pS4*s^10
+ * and
+ * | pzero(x)-1-R/S | <= 2 ** ( -60.26)
+ */
+static const double pR8[6] = { /* for x in [inf, 8]=1/[0,0.125] */
+ 0.00000000000000000000e+00, /* 0x00000000, 0x00000000 */
+ -7.03124999999900357484e-02, /* 0xBFB1FFFF, 0xFFFFFD32 */
+ -8.08167041275349795626e+00, /* 0xC02029D0, 0xB44FA779 */
+ -2.57063105679704847262e+02, /* 0xC0701102, 0x7B19E863 */
+ -2.48521641009428822144e+03, /* 0xC0A36A6E, 0xCD4DCAFC */
+ -5.25304380490729545272e+03, /* 0xC0B4850B, 0x36CC643D */
+};
+static const double pS8[5] = {
+ 1.16534364619668181717e+02, /* 0x405D2233, 0x07A96751 */
+ 3.83374475364121826715e+03, /* 0x40ADF37D, 0x50596938 */
+ 4.05978572648472545552e+04, /* 0x40E3D2BB, 0x6EB6B05F */
+ 1.16752972564375915681e+05, /* 0x40FC810F, 0x8F9FA9BD */
+ 4.76277284146730962675e+04, /* 0x40E74177, 0x4F2C49DC */
+};
+
+static const double pR5[6] = { /* for x in [8,4.5454]=1/[0.125,0.22001] */
+ -1.14125464691894502584e-11, /* 0xBDA918B1, 0x47E495CC */
+ -7.03124940873599280078e-02, /* 0xBFB1FFFF, 0xE69AFBC6 */
+ -4.15961064470587782438e+00, /* 0xC010A370, 0xF90C6BBF */
+ -6.76747652265167261021e+01, /* 0xC050EB2F, 0x5A7D1783 */
+ -3.31231299649172967747e+02, /* 0xC074B3B3, 0x6742CC63 */
+ -3.46433388365604912451e+02, /* 0xC075A6EF, 0x28A38BD7 */
+};
+static const double pS5[5] = {
+ 6.07539382692300335975e+01, /* 0x404E6081, 0x0C98C5DE */
+ 1.05125230595704579173e+03, /* 0x40906D02, 0x5C7E2864 */
+ 5.97897094333855784498e+03, /* 0x40B75AF8, 0x8FBE1D60 */
+ 9.62544514357774460223e+03, /* 0x40C2CCB8, 0xFA76FA38 */
+ 2.40605815922939109441e+03, /* 0x40A2CC1D, 0xC70BE864 */
+};
+
+static const double pR3[6] = {/* for x in [4.547,2.8571]=1/[0.2199,0.35001] */
+ -2.54704601771951915620e-09, /* 0xBE25E103, 0x6FE1AA86 */
+ -7.03119616381481654654e-02, /* 0xBFB1FFF6, 0xF7C0E24B */
+ -2.40903221549529611423e+00, /* 0xC00345B2, 0xAEA48074 */
+ -2.19659774734883086467e+01, /* 0xC035F74A, 0x4CB94E14 */
+ -5.80791704701737572236e+01, /* 0xC04D0A22, 0x420A1A45 */
+ -3.14479470594888503854e+01, /* 0xC03F72AC, 0xA892D80F */
+};
+static const double pS3[5] = {
+ 3.58560338055209726349e+01, /* 0x4041ED92, 0x84077DD3 */
+ 3.61513983050303863820e+02, /* 0x40769839, 0x464A7C0E */
+ 1.19360783792111533330e+03, /* 0x4092A66E, 0x6D1061D6 */
+ 1.12799679856907414432e+03, /* 0x40919FFC, 0xB8C39B7E */
+ 1.73580930813335754692e+02, /* 0x4065B296, 0xFC379081 */
+};
+
+static const double pR2[6] = {/* for x in [2.8570,2]=1/[0.3499,0.5] */
+ -8.87534333032526411254e-08, /* 0xBE77D316, 0xE927026D */
+ -7.03030995483624743247e-02, /* 0xBFB1FF62, 0x495E1E42 */
+ -1.45073846780952986357e+00, /* 0xBFF73639, 0x8A24A843 */
+ -7.63569613823527770791e+00, /* 0xC01E8AF3, 0xEDAFA7F3 */
+ -1.11931668860356747786e+01, /* 0xC02662E6, 0xC5246303 */
+ -3.23364579351335335033e+00, /* 0xC009DE81, 0xAF8FE70F */
+};
+static const double pS2[5] = {
+ 2.22202997532088808441e+01, /* 0x40363865, 0x908B5959 */
+ 1.36206794218215208048e+02, /* 0x4061069E, 0x0EE8878F */
+ 2.70470278658083486789e+02, /* 0x4070E786, 0x42EA079B */
+ 1.53875394208320329881e+02, /* 0x40633C03, 0x3AB6FAFF */
+ 1.46576176948256193810e+01, /* 0x402D50B3, 0x44391809 */
+};
+
+static double
+pzero (double x)
+{
+ const double *p, *q;
+ double z, r, s, z2, z4, r1, r2, r3, s1, s2, s3;
+ int32_t ix;
+ GET_HIGH_WORD (ix, x);
+ ix &= 0x7fffffff;
+ /* ix >= 0x40000000 for all calls to this function. */
+ if (ix >= 0x41b00000)
+ {
+ return one;
+ }
+ else if (ix >= 0x40200000)
+ {
+ p = pR8; q = pS8;
+ }
+ else if (ix >= 0x40122E8B)
+ {
+ p = pR5; q = pS5;
+ }
+ else if (ix >= 0x4006DB6D)
+ {
+ p = pR3; q = pS3;
+ }
+ else
+ {
+ p = pR2; q = pS2;
+ }
+ z = one / (x * x);
+ r1 = p[0] + z * p[1]; z2 = z * z;
+ r2 = p[2] + z * p[3]; z4 = z2 * z2;
+ r3 = p[4] + z * p[5];
+ r = r1 + z2 * r2 + z4 * r3;
+ s1 = one + z * q[0];
+ s2 = q[1] + z * q[2];
+ s3 = q[3] + z * q[4];
+ s = s1 + z2 * s2 + z4 * s3;
+ return one + r / s;
+}
+
+
+/* For x >= 8, the asymptotic expansions of qzero is
+ * -1/8 s + 75/1024 s^3 - ..., where s = 1/x.
+ * We approximate pzero by
+ * qzero(x) = s*(-1.25 + (R/S))
+ * where R = qR0 + qR1*s^2 + qR2*s^4 + ... + qR5*s^10
+ * S = 1 + qS0*s^2 + ... + qS5*s^12
+ * and
+ * | qzero(x)/s +1.25-R/S | <= 2 ** ( -61.22)
+ */
+static const double qR8[6] = { /* for x in [inf, 8]=1/[0,0.125] */
+ 0.00000000000000000000e+00, /* 0x00000000, 0x00000000 */
+ 7.32421874999935051953e-02, /* 0x3FB2BFFF, 0xFFFFFE2C */
+ 1.17682064682252693899e+01, /* 0x40278952, 0x5BB334D6 */
+ 5.57673380256401856059e+02, /* 0x40816D63, 0x15301825 */
+ 8.85919720756468632317e+03, /* 0x40C14D99, 0x3E18F46D */
+ 3.70146267776887834771e+04, /* 0x40E212D4, 0x0E901566 */
+};
+static const double qS8[6] = {
+ 1.63776026895689824414e+02, /* 0x406478D5, 0x365B39BC */
+ 8.09834494656449805916e+03, /* 0x40BFA258, 0x4E6B0563 */
+ 1.42538291419120476348e+05, /* 0x41016652, 0x54D38C3F */
+ 8.03309257119514397345e+05, /* 0x412883DA, 0x83A52B43 */
+ 8.40501579819060512818e+05, /* 0x4129A66B, 0x28DE0B3D */
+ -3.43899293537866615225e+05, /* 0xC114FD6D, 0x2C9530C5 */
+};
+
+static const double qR5[6] = { /* for x in [8,4.5454]=1/[0.125,0.22001] */
+ 1.84085963594515531381e-11, /* 0x3DB43D8F, 0x29CC8CD9 */
+ 7.32421766612684765896e-02, /* 0x3FB2BFFF, 0xD172B04C */
+ 5.83563508962056953777e+00, /* 0x401757B0, 0xB9953DD3 */
+ 1.35111577286449829671e+02, /* 0x4060E392, 0x0A8788E9 */
+ 1.02724376596164097464e+03, /* 0x40900CF9, 0x9DC8C481 */
+ 1.98997785864605384631e+03, /* 0x409F17E9, 0x53C6E3A6 */
+};
+static const double qS5[6] = {
+ 8.27766102236537761883e+01, /* 0x4054B1B3, 0xFB5E1543 */
+ 2.07781416421392987104e+03, /* 0x40A03BA0, 0xDA21C0CE */
+ 1.88472887785718085070e+04, /* 0x40D267D2, 0x7B591E6D */
+ 5.67511122894947329769e+04, /* 0x40EBB5E3, 0x97E02372 */
+ 3.59767538425114471465e+04, /* 0x40E19118, 0x1F7A54A0 */
+ -5.35434275601944773371e+03, /* 0xC0B4EA57, 0xBEDBC609 */
+};
+
+static const double qR3[6] = {/* for x in [4.547,2.8571]=1/[0.2199,0.35001] */
+ 4.37741014089738620906e-09, /* 0x3E32CD03, 0x6ADECB82 */
+ 7.32411180042911447163e-02, /* 0x3FB2BFEE, 0x0E8D0842 */
+ 3.34423137516170720929e+00, /* 0x400AC0FC, 0x61149CF5 */
+ 4.26218440745412650017e+01, /* 0x40454F98, 0x962DAEDD */
+ 1.70808091340565596283e+02, /* 0x406559DB, 0xE25EFD1F */
+ 1.66733948696651168575e+02, /* 0x4064D77C, 0x81FA21E0 */
+};
+static const double qS3[6] = {
+ 4.87588729724587182091e+01, /* 0x40486122, 0xBFE343A6 */
+ 7.09689221056606015736e+02, /* 0x40862D83, 0x86544EB3 */
+ 3.70414822620111362994e+03, /* 0x40ACF04B, 0xE44DFC63 */
+ 6.46042516752568917582e+03, /* 0x40B93C6C, 0xD7C76A28 */
+ 2.51633368920368957333e+03, /* 0x40A3A8AA, 0xD94FB1C0 */
+ -1.49247451836156386662e+02, /* 0xC062A7EB, 0x201CF40F */
+};
+
+static const double qR2[6] = {/* for x in [2.8570,2]=1/[0.3499,0.5] */
+ 1.50444444886983272379e-07, /* 0x3E84313B, 0x54F76BDB */
+ 7.32234265963079278272e-02, /* 0x3FB2BEC5, 0x3E883E34 */
+ 1.99819174093815998816e+00, /* 0x3FFFF897, 0xE727779C */
+ 1.44956029347885735348e+01, /* 0x402CFDBF, 0xAAF96FE5 */
+ 3.16662317504781540833e+01, /* 0x403FAA8E, 0x29FBDC4A */
+ 1.62527075710929267416e+01, /* 0x403040B1, 0x71814BB4 */
+};
+static const double qS2[6] = {
+ 3.03655848355219184498e+01, /* 0x403E5D96, 0xF7C07AED */
+ 2.69348118608049844624e+02, /* 0x4070D591, 0xE4D14B40 */
+ 8.44783757595320139444e+02, /* 0x408A6645, 0x22B3BF22 */
+ 8.82935845112488550512e+02, /* 0x408B977C, 0x9C5CC214 */
+ 2.12666388511798828631e+02, /* 0x406A9553, 0x0E001365 */
+ -5.31095493882666946917e+00, /* 0xC0153E6A, 0xF8B32931 */
+};
+
+static double
+qzero (double x)
+{
+ const double *p, *q;
+ double s, r, z, z2, z4, z6, r1, r2, r3, s1, s2, s3;
+ int32_t ix;
+ GET_HIGH_WORD (ix, x);
+ ix &= 0x7fffffff;
+ /* ix >= 0x40000000 for all calls to this function. */
+ if (ix >= 0x41b00000)
+ {
+ return -.125 / x;
+ }
+ else if (ix >= 0x40200000)
+ {
+ p = qR8; q = qS8;
+ }
+ else if (ix >= 0x40122E8B)
+ {
+ p = qR5; q = qS5;
+ }
+ else if (ix >= 0x4006DB6D)
+ {
+ p = qR3; q = qS3;
+ }
+ else
+ {
+ p = qR2; q = qS2;
+ }
+ z = one / (x * x);
+ r1 = p[0] + z * p[1]; z2 = z * z;
+ r2 = p[2] + z * p[3]; z4 = z2 * z2;
+ r3 = p[4] + z * p[5]; z6 = z4 * z2;
+ r = r1 + z2 * r2 + z4 * r3;
+ s1 = one + z * q[0];
+ s2 = q[1] + z * q[2];
+ s3 = q[3] + z * q[4];
+ s = s1 + z2 * s2 + z4 * s3 + z6 * q[5];
+ return (-.125 + r / s) / x;
+}
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/e_j1.c b/REORG.TODO/sysdeps/ieee754/dbl-64/e_j1.c
new file mode 100644
index 0000000000..eb446fd102
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/e_j1.c
@@ -0,0 +1,466 @@
+/* @(#)e_j1.c 5.1 93/09/24 */
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+/* Modified by Naohiko Shimizu/Tokai University, Japan 1997/08/26,
+ for performance improvement on pipelined processors.
+ */
+
+/* __ieee754_j1(x), __ieee754_y1(x)
+ * Bessel function of the first and second kinds of order zero.
+ * Method -- j1(x):
+ * 1. For tiny x, we use j1(x) = x/2 - x^3/16 + x^5/384 - ...
+ * 2. Reduce x to |x| since j1(x)=-j1(-x), and
+ * for x in (0,2)
+ * j1(x) = x/2 + x*z*R0/S0, where z = x*x;
+ * (precision: |j1/x - 1/2 - R0/S0 |<2**-61.51 )
+ * for x in (2,inf)
+ * j1(x) = sqrt(2/(pi*x))*(p1(x)*cos(x1)-q1(x)*sin(x1))
+ * y1(x) = sqrt(2/(pi*x))*(p1(x)*sin(x1)+q1(x)*cos(x1))
+ * where x1 = x-3*pi/4. It is better to compute sin(x1),cos(x1)
+ * as follow:
+ * cos(x1) = cos(x)cos(3pi/4)+sin(x)sin(3pi/4)
+ * = 1/sqrt(2) * (sin(x) - cos(x))
+ * sin(x1) = sin(x)cos(3pi/4)-cos(x)sin(3pi/4)
+ * = -1/sqrt(2) * (sin(x) + cos(x))
+ * (To avoid cancellation, use
+ * sin(x) +- cos(x) = -cos(2x)/(sin(x) -+ cos(x))
+ * to compute the worse one.)
+ *
+ * 3 Special cases
+ * j1(nan)= nan
+ * j1(0) = 0
+ * j1(inf) = 0
+ *
+ * Method -- y1(x):
+ * 1. screen out x<=0 cases: y1(0)=-inf, y1(x<0)=NaN
+ * 2. For x<2.
+ * Since
+ * y1(x) = 2/pi*(j1(x)*(ln(x/2)+Euler)-1/x-x/2+5/64*x^3-...)
+ * therefore y1(x)-2/pi*j1(x)*ln(x)-1/x is an odd function.
+ * We use the following function to approximate y1,
+ * y1(x) = x*U(z)/V(z) + (2/pi)*(j1(x)*ln(x)-1/x), z= x^2
+ * where for x in [0,2] (abs err less than 2**-65.89)
+ * U(z) = U0[0] + U0[1]*z + ... + U0[4]*z^4
+ * V(z) = 1 + v0[0]*z + ... + v0[4]*z^5
+ * Note: For tiny x, 1/x dominate y1 and hence
+ * y1(tiny) = -2/pi/tiny, (choose tiny<2**-54)
+ * 3. For x>=2.
+ * y1(x) = sqrt(2/(pi*x))*(p1(x)*sin(x1)+q1(x)*cos(x1))
+ * where x1 = x-3*pi/4. It is better to compute sin(x1),cos(x1)
+ * by method mentioned above.
+ */
+
+#include <errno.h>
+#include <float.h>
+#include <math.h>
+#include <math_private.h>
+
+static double pone (double), qone (double);
+
+static const double
+ huge = 1e300,
+ one = 1.0,
+ invsqrtpi = 5.64189583547756279280e-01, /* 0x3FE20DD7, 0x50429B6D */
+ tpi = 6.36619772367581382433e-01, /* 0x3FE45F30, 0x6DC9C883 */
+/* R0/S0 on [0,2] */
+ R[] = { -6.25000000000000000000e-02, /* 0xBFB00000, 0x00000000 */
+ 1.40705666955189706048e-03, /* 0x3F570D9F, 0x98472C61 */
+ -1.59955631084035597520e-05, /* 0xBEF0C5C6, 0xBA169668 */
+ 4.96727999609584448412e-08 }, /* 0x3E6AAAFA, 0x46CA0BD9 */
+ S[] = { 0.0, 1.91537599538363460805e-02, /* 0x3F939D0B, 0x12637E53 */
+ 1.85946785588630915560e-04, /* 0x3F285F56, 0xB9CDF664 */
+ 1.17718464042623683263e-06, /* 0x3EB3BFF8, 0x333F8498 */
+ 5.04636257076217042715e-09, /* 0x3E35AC88, 0xC97DFF2C */
+ 1.23542274426137913908e-11 }; /* 0x3DAB2ACF, 0xCFB97ED8 */
+
+static const double zero = 0.0;
+
+double
+__ieee754_j1 (double x)
+{
+ double z, s, c, ss, cc, r, u, v, y, r1, r2, s1, s2, s3, z2, z4;
+ int32_t hx, ix;
+
+ GET_HIGH_WORD (hx, x);
+ ix = hx & 0x7fffffff;
+ if (__glibc_unlikely (ix >= 0x7ff00000))
+ return one / x;
+ y = fabs (x);
+ if (ix >= 0x40000000) /* |x| >= 2.0 */
+ {
+ __sincos (y, &s, &c);
+ ss = -s - c;
+ cc = s - c;
+ if (ix < 0x7fe00000) /* make sure y+y not overflow */
+ {
+ z = __cos (y + y);
+ if ((s * c) > zero)
+ cc = z / ss;
+ else
+ ss = z / cc;
+ }
+ /*
+ * j1(x) = 1/sqrt(pi) * (P(1,x)*cc - Q(1,x)*ss) / sqrt(x)
+ * y1(x) = 1/sqrt(pi) * (P(1,x)*ss + Q(1,x)*cc) / sqrt(x)
+ */
+ if (ix > 0x48000000)
+ z = (invsqrtpi * cc) / __ieee754_sqrt (y);
+ else
+ {
+ u = pone (y); v = qone (y);
+ z = invsqrtpi * (u * cc - v * ss) / __ieee754_sqrt (y);
+ }
+ if (hx < 0)
+ return -z;
+ else
+ return z;
+ }
+ if (__glibc_unlikely (ix < 0x3e400000)) /* |x|<2**-27 */
+ {
+ if (huge + x > one) /* inexact if x!=0 necessary */
+ {
+ double ret = math_narrow_eval (0.5 * x);
+ math_check_force_underflow (ret);
+ if (ret == 0 && x != 0)
+ __set_errno (ERANGE);
+ return ret;
+ }
+ }
+ z = x * x;
+ r1 = z * R[0]; z2 = z * z;
+ r2 = R[1] + z * R[2]; z4 = z2 * z2;
+ r = r1 + z2 * r2 + z4 * R[3];
+ r *= x;
+ s1 = one + z * S[1];
+ s2 = S[2] + z * S[3];
+ s3 = S[4] + z * S[5];
+ s = s1 + z2 * s2 + z4 * s3;
+ return (x * 0.5 + r / s);
+}
+strong_alias (__ieee754_j1, __j1_finite)
+
+static const double U0[5] = {
+ -1.96057090646238940668e-01, /* 0xBFC91866, 0x143CBC8A */
+ 5.04438716639811282616e-02, /* 0x3FA9D3C7, 0x76292CD1 */
+ -1.91256895875763547298e-03, /* 0xBF5F55E5, 0x4844F50F */
+ 2.35252600561610495928e-05, /* 0x3EF8AB03, 0x8FA6B88E */
+ -9.19099158039878874504e-08, /* 0xBE78AC00, 0x569105B8 */
+};
+static const double V0[5] = {
+ 1.99167318236649903973e-02, /* 0x3F94650D, 0x3F4DA9F0 */
+ 2.02552581025135171496e-04, /* 0x3F2A8C89, 0x6C257764 */
+ 1.35608801097516229404e-06, /* 0x3EB6C05A, 0x894E8CA6 */
+ 6.22741452364621501295e-09, /* 0x3E3ABF1D, 0x5BA69A86 */
+ 1.66559246207992079114e-11, /* 0x3DB25039, 0xDACA772A */
+};
+
+double
+__ieee754_y1 (double x)
+{
+ double z, s, c, ss, cc, u, v, u1, u2, v1, v2, v3, z2, z4;
+ int32_t hx, ix, lx;
+
+ EXTRACT_WORDS (hx, lx, x);
+ ix = 0x7fffffff & hx;
+ /* if Y1(NaN) is NaN, Y1(-inf) is NaN, Y1(inf) is 0 */
+ if (__glibc_unlikely (ix >= 0x7ff00000))
+ return one / (x + x * x);
+ if (__glibc_unlikely ((ix | lx) == 0))
+ return -1 / zero; /* -inf and divide by zero exception. */
+ /* -inf and overflow exception. */;
+ if (__glibc_unlikely (hx < 0))
+ return zero / (zero * x);
+ if (ix >= 0x40000000) /* |x| >= 2.0 */
+ {
+ __sincos (x, &s, &c);
+ ss = -s - c;
+ cc = s - c;
+ if (ix < 0x7fe00000) /* make sure x+x not overflow */
+ {
+ z = __cos (x + x);
+ if ((s * c) > zero)
+ cc = z / ss;
+ else
+ ss = z / cc;
+ }
+ /* y1(x) = sqrt(2/(pi*x))*(p1(x)*sin(x0)+q1(x)*cos(x0))
+ * where x0 = x-3pi/4
+ * Better formula:
+ * cos(x0) = cos(x)cos(3pi/4)+sin(x)sin(3pi/4)
+ * = 1/sqrt(2) * (sin(x) - cos(x))
+ * sin(x0) = sin(x)cos(3pi/4)-cos(x)sin(3pi/4)
+ * = -1/sqrt(2) * (cos(x) + sin(x))
+ * To avoid cancellation, use
+ * sin(x) +- cos(x) = -cos(2x)/(sin(x) -+ cos(x))
+ * to compute the worse one.
+ */
+ if (ix > 0x48000000)
+ z = (invsqrtpi * ss) / __ieee754_sqrt (x);
+ else
+ {
+ u = pone (x); v = qone (x);
+ z = invsqrtpi * (u * ss + v * cc) / __ieee754_sqrt (x);
+ }
+ return z;
+ }
+ if (__glibc_unlikely (ix <= 0x3c900000)) /* x < 2**-54 */
+ {
+ z = -tpi / x;
+ if (isinf (z))
+ __set_errno (ERANGE);
+ return z;
+ }
+ z = x * x;
+ u1 = U0[0] + z * U0[1]; z2 = z * z;
+ u2 = U0[2] + z * U0[3]; z4 = z2 * z2;
+ u = u1 + z2 * u2 + z4 * U0[4];
+ v1 = one + z * V0[0];
+ v2 = V0[1] + z * V0[2];
+ v3 = V0[3] + z * V0[4];
+ v = v1 + z2 * v2 + z4 * v3;
+ return (x * (u / v) + tpi * (__ieee754_j1 (x) * __ieee754_log (x) - one / x));
+}
+strong_alias (__ieee754_y1, __y1_finite)
+
+/* For x >= 8, the asymptotic expansions of pone is
+ * 1 + 15/128 s^2 - 4725/2^15 s^4 - ..., where s = 1/x.
+ * We approximate pone by
+ * pone(x) = 1 + (R/S)
+ * where R = pr0 + pr1*s^2 + pr2*s^4 + ... + pr5*s^10
+ * S = 1 + ps0*s^2 + ... + ps4*s^10
+ * and
+ * | pone(x)-1-R/S | <= 2 ** ( -60.06)
+ */
+
+static const double pr8[6] = { /* for x in [inf, 8]=1/[0,0.125] */
+ 0.00000000000000000000e+00, /* 0x00000000, 0x00000000 */
+ 1.17187499999988647970e-01, /* 0x3FBDFFFF, 0xFFFFFCCE */
+ 1.32394806593073575129e+01, /* 0x402A7A9D, 0x357F7FCE */
+ 4.12051854307378562225e+02, /* 0x4079C0D4, 0x652EA590 */
+ 3.87474538913960532227e+03, /* 0x40AE457D, 0xA3A532CC */
+ 7.91447954031891731574e+03, /* 0x40BEEA7A, 0xC32782DD */
+};
+static const double ps8[5] = {
+ 1.14207370375678408436e+02, /* 0x405C8D45, 0x8E656CAC */
+ 3.65093083420853463394e+03, /* 0x40AC85DC, 0x964D274F */
+ 3.69562060269033463555e+04, /* 0x40E20B86, 0x97C5BB7F */
+ 9.76027935934950801311e+04, /* 0x40F7D42C, 0xB28F17BB */
+ 3.08042720627888811578e+04, /* 0x40DE1511, 0x697A0B2D */
+};
+
+static const double pr5[6] = { /* for x in [8,4.5454]=1/[0.125,0.22001] */
+ 1.31990519556243522749e-11, /* 0x3DAD0667, 0xDAE1CA7D */
+ 1.17187493190614097638e-01, /* 0x3FBDFFFF, 0xE2C10043 */
+ 6.80275127868432871736e+00, /* 0x401B3604, 0x6E6315E3 */
+ 1.08308182990189109773e+02, /* 0x405B13B9, 0x452602ED */
+ 5.17636139533199752805e+02, /* 0x40802D16, 0xD052D649 */
+ 5.28715201363337541807e+02, /* 0x408085B8, 0xBB7E0CB7 */
+};
+static const double ps5[5] = {
+ 5.92805987221131331921e+01, /* 0x404DA3EA, 0xA8AF633D */
+ 9.91401418733614377743e+02, /* 0x408EFB36, 0x1B066701 */
+ 5.35326695291487976647e+03, /* 0x40B4E944, 0x5706B6FB */
+ 7.84469031749551231769e+03, /* 0x40BEA4B0, 0xB8A5BB15 */
+ 1.50404688810361062679e+03, /* 0x40978030, 0x036F5E51 */
+};
+
+static const double pr3[6] = {
+ 3.02503916137373618024e-09, /* 0x3E29FC21, 0xA7AD9EDD */
+ 1.17186865567253592491e-01, /* 0x3FBDFFF5, 0x5B21D17B */
+ 3.93297750033315640650e+00, /* 0x400F76BC, 0xE85EAD8A */
+ 3.51194035591636932736e+01, /* 0x40418F48, 0x9DA6D129 */
+ 9.10550110750781271918e+01, /* 0x4056C385, 0x4D2C1837 */
+ 4.85590685197364919645e+01, /* 0x4048478F, 0x8EA83EE5 */
+};
+static const double ps3[5] = {
+ 3.47913095001251519989e+01, /* 0x40416549, 0xA134069C */
+ 3.36762458747825746741e+02, /* 0x40750C33, 0x07F1A75F */
+ 1.04687139975775130551e+03, /* 0x40905B7C, 0x5037D523 */
+ 8.90811346398256432622e+02, /* 0x408BD67D, 0xA32E31E9 */
+ 1.03787932439639277504e+02, /* 0x4059F26D, 0x7C2EED53 */
+};
+
+static const double pr2[6] = { /* for x in [2.8570,2]=1/[0.3499,0.5] */
+ 1.07710830106873743082e-07, /* 0x3E7CE9D4, 0xF65544F4 */
+ 1.17176219462683348094e-01, /* 0x3FBDFF42, 0xBE760D83 */
+ 2.36851496667608785174e+00, /* 0x4002F2B7, 0xF98FAEC0 */
+ 1.22426109148261232917e+01, /* 0x40287C37, 0x7F71A964 */
+ 1.76939711271687727390e+01, /* 0x4031B1A8, 0x177F8EE2 */
+ 5.07352312588818499250e+00, /* 0x40144B49, 0xA574C1FE */
+};
+static const double ps2[5] = {
+ 2.14364859363821409488e+01, /* 0x40356FBD, 0x8AD5ECDC */
+ 1.25290227168402751090e+02, /* 0x405F5293, 0x14F92CD5 */
+ 2.32276469057162813669e+02, /* 0x406D08D8, 0xD5A2DBD9 */
+ 1.17679373287147100768e+02, /* 0x405D6B7A, 0xDA1884A9 */
+ 8.36463893371618283368e+00, /* 0x4020BAB1, 0xF44E5192 */
+};
+
+static double
+pone (double x)
+{
+ const double *p, *q;
+ double z, r, s, r1, r2, r3, s1, s2, s3, z2, z4;
+ int32_t ix;
+ GET_HIGH_WORD (ix, x);
+ ix &= 0x7fffffff;
+ /* ix >= 0x40000000 for all calls to this function. */
+ if (ix >= 0x41b00000)
+ {
+ return one;
+ }
+ else if (ix >= 0x40200000)
+ {
+ p = pr8; q = ps8;
+ }
+ else if (ix >= 0x40122E8B)
+ {
+ p = pr5; q = ps5;
+ }
+ else if (ix >= 0x4006DB6D)
+ {
+ p = pr3; q = ps3;
+ }
+ else
+ {
+ p = pr2; q = ps2;
+ }
+ z = one / (x * x);
+ r1 = p[0] + z * p[1]; z2 = z * z;
+ r2 = p[2] + z * p[3]; z4 = z2 * z2;
+ r3 = p[4] + z * p[5];
+ r = r1 + z2 * r2 + z4 * r3;
+ s1 = one + z * q[0];
+ s2 = q[1] + z * q[2];
+ s3 = q[3] + z * q[4];
+ s = s1 + z2 * s2 + z4 * s3;
+ return one + r / s;
+}
+
+
+/* For x >= 8, the asymptotic expansions of qone is
+ * 3/8 s - 105/1024 s^3 - ..., where s = 1/x.
+ * We approximate pone by
+ * qone(x) = s*(0.375 + (R/S))
+ * where R = qr1*s^2 + qr2*s^4 + ... + qr5*s^10
+ * S = 1 + qs1*s^2 + ... + qs6*s^12
+ * and
+ * | qone(x)/s -0.375-R/S | <= 2 ** ( -61.13)
+ */
+
+static const double qr8[6] = { /* for x in [inf, 8]=1/[0,0.125] */
+ 0.00000000000000000000e+00, /* 0x00000000, 0x00000000 */
+ -1.02539062499992714161e-01, /* 0xBFBA3FFF, 0xFFFFFDF3 */
+ -1.62717534544589987888e+01, /* 0xC0304591, 0xA26779F7 */
+ -7.59601722513950107896e+02, /* 0xC087BCD0, 0x53E4B576 */
+ -1.18498066702429587167e+04, /* 0xC0C724E7, 0x40F87415 */
+ -4.84385124285750353010e+04, /* 0xC0E7A6D0, 0x65D09C6A */
+};
+static const double qs8[6] = {
+ 1.61395369700722909556e+02, /* 0x40642CA6, 0xDE5BCDE5 */
+ 7.82538599923348465381e+03, /* 0x40BE9162, 0xD0D88419 */
+ 1.33875336287249578163e+05, /* 0x4100579A, 0xB0B75E98 */
+ 7.19657723683240939863e+05, /* 0x4125F653, 0x72869C19 */
+ 6.66601232617776375264e+05, /* 0x412457D2, 0x7719AD5C */
+ -2.94490264303834643215e+05, /* 0xC111F969, 0x0EA5AA18 */
+};
+
+static const double qr5[6] = { /* for x in [8,4.5454]=1/[0.125,0.22001] */
+ -2.08979931141764104297e-11, /* 0xBDB6FA43, 0x1AA1A098 */
+ -1.02539050241375426231e-01, /* 0xBFBA3FFF, 0xCB597FEF */
+ -8.05644828123936029840e+00, /* 0xC0201CE6, 0xCA03AD4B */
+ -1.83669607474888380239e+02, /* 0xC066F56D, 0x6CA7B9B0 */
+ -1.37319376065508163265e+03, /* 0xC09574C6, 0x6931734F */
+ -2.61244440453215656817e+03, /* 0xC0A468E3, 0x88FDA79D */
+};
+static const double qs5[6] = {
+ 8.12765501384335777857e+01, /* 0x405451B2, 0xFF5A11B2 */
+ 1.99179873460485964642e+03, /* 0x409F1F31, 0xE77BF839 */
+ 1.74684851924908907677e+04, /* 0x40D10F1F, 0x0D64CE29 */
+ 4.98514270910352279316e+04, /* 0x40E8576D, 0xAABAD197 */
+ 2.79480751638918118260e+04, /* 0x40DB4B04, 0xCF7C364B */
+ -4.71918354795128470869e+03, /* 0xC0B26F2E, 0xFCFFA004 */
+};
+
+static const double qr3[6] = {
+ -5.07831226461766561369e-09, /* 0xBE35CFA9, 0xD38FC84F */
+ -1.02537829820837089745e-01, /* 0xBFBA3FEB, 0x51AEED54 */
+ -4.61011581139473403113e+00, /* 0xC01270C2, 0x3302D9FF */
+ -5.78472216562783643212e+01, /* 0xC04CEC71, 0xC25D16DA */
+ -2.28244540737631695038e+02, /* 0xC06C87D3, 0x4718D55F */
+ -2.19210128478909325622e+02, /* 0xC06B66B9, 0x5F5C1BF6 */
+};
+static const double qs3[6] = {
+ 4.76651550323729509273e+01, /* 0x4047D523, 0xCCD367E4 */
+ 6.73865112676699709482e+02, /* 0x40850EEB, 0xC031EE3E */
+ 3.38015286679526343505e+03, /* 0x40AA684E, 0x448E7C9A */
+ 5.54772909720722782367e+03, /* 0x40B5ABBA, 0xA61D54A6 */
+ 1.90311919338810798763e+03, /* 0x409DBC7A, 0x0DD4DF4B */
+ -1.35201191444307340817e+02, /* 0xC060E670, 0x290A311F */
+};
+
+static const double qr2[6] = { /* for x in [2.8570,2]=1/[0.3499,0.5] */
+ -1.78381727510958865572e-07, /* 0xBE87F126, 0x44C626D2 */
+ -1.02517042607985553460e-01, /* 0xBFBA3E8E, 0x9148B010 */
+ -2.75220568278187460720e+00, /* 0xC0060484, 0x69BB4EDA */
+ -1.96636162643703720221e+01, /* 0xC033A9E2, 0xC168907F */
+ -4.23253133372830490089e+01, /* 0xC04529A3, 0xDE104AAA */
+ -2.13719211703704061733e+01, /* 0xC0355F36, 0x39CF6E52 */
+};
+static const double qs2[6] = {
+ 2.95333629060523854548e+01, /* 0x403D888A, 0x78AE64FF */
+ 2.52981549982190529136e+02, /* 0x406F9F68, 0xDB821CBA */
+ 7.57502834868645436472e+02, /* 0x4087AC05, 0xCE49A0F7 */
+ 7.39393205320467245656e+02, /* 0x40871B25, 0x48D4C029 */
+ 1.55949003336666123687e+02, /* 0x40637E5E, 0x3C3ED8D4 */
+ -4.95949898822628210127e+00, /* 0xC013D686, 0xE71BE86B */
+};
+
+static double
+qone (double x)
+{
+ const double *p, *q;
+ double s, r, z, r1, r2, r3, s1, s2, s3, z2, z4, z6;
+ int32_t ix;
+ GET_HIGH_WORD (ix, x);
+ ix &= 0x7fffffff;
+ /* ix >= 0x40000000 for all calls to this function. */
+ if (ix >= 0x41b00000)
+ {
+ return .375 / x;
+ }
+ else if (ix >= 0x40200000)
+ {
+ p = qr8; q = qs8;
+ }
+ else if (ix >= 0x40122E8B)
+ {
+ p = qr5; q = qs5;
+ }
+ else if (ix >= 0x4006DB6D)
+ {
+ p = qr3; q = qs3;
+ }
+ else
+ {
+ p = qr2; q = qs2;
+ }
+ z = one / (x * x);
+ r1 = p[0] + z * p[1]; z2 = z * z;
+ r2 = p[2] + z * p[3]; z4 = z2 * z2;
+ r3 = p[4] + z * p[5]; z6 = z4 * z2;
+ r = r1 + z2 * r2 + z4 * r3;
+ s1 = one + z * q[0];
+ s2 = q[1] + z * q[2];
+ s3 = q[3] + z * q[4];
+ s = s1 + z2 * s2 + z4 * s3 + z6 * q[5];
+ return (.375 + r / s) / x;
+}
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/e_jn.c b/REORG.TODO/sysdeps/ieee754/dbl-64/e_jn.c
new file mode 100644
index 0000000000..3fecf82f10
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/e_jn.c
@@ -0,0 +1,347 @@
+/* @(#)e_jn.c 5.1 93/09/24 */
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+/*
+ * __ieee754_jn(n, x), __ieee754_yn(n, x)
+ * floating point Bessel's function of the 1st and 2nd kind
+ * of order n
+ *
+ * Special cases:
+ * y0(0)=y1(0)=yn(n,0) = -inf with overflow signal;
+ * y0(-ve)=y1(-ve)=yn(n,-ve) are NaN with invalid signal.
+ * Note 2. About jn(n,x), yn(n,x)
+ * For n=0, j0(x) is called,
+ * for n=1, j1(x) is called,
+ * for n<x, forward recursion us used starting
+ * from values of j0(x) and j1(x).
+ * for n>x, a continued fraction approximation to
+ * j(n,x)/j(n-1,x) is evaluated and then backward
+ * recursion is used starting from a supposed value
+ * for j(n,x). The resulting value of j(0,x) is
+ * compared with the actual value to correct the
+ * supposed value of j(n,x).
+ *
+ * yn(n,x) is similar in all respects, except
+ * that forward recursion is used for all
+ * values of n>1.
+ *
+ */
+
+#include <errno.h>
+#include <float.h>
+#include <math.h>
+#include <math_private.h>
+
+static const double
+ invsqrtpi = 5.64189583547756279280e-01, /* 0x3FE20DD7, 0x50429B6D */
+ two = 2.00000000000000000000e+00, /* 0x40000000, 0x00000000 */
+ one = 1.00000000000000000000e+00; /* 0x3FF00000, 0x00000000 */
+
+static const double zero = 0.00000000000000000000e+00;
+
+double
+__ieee754_jn (int n, double x)
+{
+ int32_t i, hx, ix, lx, sgn;
+ double a, b, temp, di, ret;
+ double z, w;
+
+ /* J(-n,x) = (-1)^n * J(n, x), J(n, -x) = (-1)^n * J(n, x)
+ * Thus, J(-n,x) = J(n,-x)
+ */
+ EXTRACT_WORDS (hx, lx, x);
+ ix = 0x7fffffff & hx;
+ /* if J(n,NaN) is NaN */
+ if (__glibc_unlikely ((ix | ((u_int32_t) (lx | -lx)) >> 31) > 0x7ff00000))
+ return x + x;
+ if (n < 0)
+ {
+ n = -n;
+ x = -x;
+ hx ^= 0x80000000;
+ }
+ if (n == 0)
+ return (__ieee754_j0 (x));
+ if (n == 1)
+ return (__ieee754_j1 (x));
+ sgn = (n & 1) & (hx >> 31); /* even n -- 0, odd n -- sign(x) */
+ x = fabs (x);
+ {
+ SET_RESTORE_ROUND (FE_TONEAREST);
+ if (__glibc_unlikely ((ix | lx) == 0 || ix >= 0x7ff00000))
+ /* if x is 0 or inf */
+ return sgn == 1 ? -zero : zero;
+ else if ((double) n <= x)
+ {
+ /* Safe to use J(n+1,x)=2n/x *J(n,x)-J(n-1,x) */
+ if (ix >= 0x52D00000) /* x > 2**302 */
+ { /* (x >> n**2)
+ * Jn(x) = cos(x-(2n+1)*pi/4)*sqrt(2/x*pi)
+ * Yn(x) = sin(x-(2n+1)*pi/4)*sqrt(2/x*pi)
+ * Let s=sin(x), c=cos(x),
+ * xn=x-(2n+1)*pi/4, sqt2 = sqrt(2),then
+ *
+ * n sin(xn)*sqt2 cos(xn)*sqt2
+ * ----------------------------------
+ * 0 s-c c+s
+ * 1 -s-c -c+s
+ * 2 -s+c -c-s
+ * 3 s+c c-s
+ */
+ double s;
+ double c;
+ __sincos (x, &s, &c);
+ switch (n & 3)
+ {
+ case 0: temp = c + s; break;
+ case 1: temp = -c + s; break;
+ case 2: temp = -c - s; break;
+ case 3: temp = c - s; break;
+ }
+ b = invsqrtpi * temp / __ieee754_sqrt (x);
+ }
+ else
+ {
+ a = __ieee754_j0 (x);
+ b = __ieee754_j1 (x);
+ for (i = 1; i < n; i++)
+ {
+ temp = b;
+ b = b * ((double) (i + i) / x) - a; /* avoid underflow */
+ a = temp;
+ }
+ }
+ }
+ else
+ {
+ if (ix < 0x3e100000) /* x < 2**-29 */
+ { /* x is tiny, return the first Taylor expansion of J(n,x)
+ * J(n,x) = 1/n!*(x/2)^n - ...
+ */
+ if (n > 33) /* underflow */
+ b = zero;
+ else
+ {
+ temp = x * 0.5; b = temp;
+ for (a = one, i = 2; i <= n; i++)
+ {
+ a *= (double) i; /* a = n! */
+ b *= temp; /* b = (x/2)^n */
+ }
+ b = b / a;
+ }
+ }
+ else
+ {
+ /* use backward recurrence */
+ /* x x^2 x^2
+ * J(n,x)/J(n-1,x) = ---- ------ ------ .....
+ * 2n - 2(n+1) - 2(n+2)
+ *
+ * 1 1 1
+ * (for large x) = ---- ------ ------ .....
+ * 2n 2(n+1) 2(n+2)
+ * -- - ------ - ------ -
+ * x x x
+ *
+ * Let w = 2n/x and h=2/x, then the above quotient
+ * is equal to the continued fraction:
+ * 1
+ * = -----------------------
+ * 1
+ * w - -----------------
+ * 1
+ * w+h - ---------
+ * w+2h - ...
+ *
+ * To determine how many terms needed, let
+ * Q(0) = w, Q(1) = w(w+h) - 1,
+ * Q(k) = (w+k*h)*Q(k-1) - Q(k-2),
+ * When Q(k) > 1e4 good for single
+ * When Q(k) > 1e9 good for double
+ * When Q(k) > 1e17 good for quadruple
+ */
+ /* determine k */
+ double t, v;
+ double q0, q1, h, tmp; int32_t k, m;
+ w = (n + n) / (double) x; h = 2.0 / (double) x;
+ q0 = w; z = w + h; q1 = w * z - 1.0; k = 1;
+ while (q1 < 1.0e9)
+ {
+ k += 1; z += h;
+ tmp = z * q1 - q0;
+ q0 = q1;
+ q1 = tmp;
+ }
+ m = n + n;
+ for (t = zero, i = 2 * (n + k); i >= m; i -= 2)
+ t = one / (i / x - t);
+ a = t;
+ b = one;
+ /* estimate log((2/x)^n*n!) = n*log(2/x)+n*ln(n)
+ * Hence, if n*(log(2n/x)) > ...
+ * single 8.8722839355e+01
+ * double 7.09782712893383973096e+02
+ * long double 1.1356523406294143949491931077970765006170e+04
+ * then recurrent value may overflow and the result is
+ * likely underflow to zero
+ */
+ tmp = n;
+ v = two / x;
+ tmp = tmp * __ieee754_log (fabs (v * tmp));
+ if (tmp < 7.09782712893383973096e+02)
+ {
+ for (i = n - 1, di = (double) (i + i); i > 0; i--)
+ {
+ temp = b;
+ b *= di;
+ b = b / x - a;
+ a = temp;
+ di -= two;
+ }
+ }
+ else
+ {
+ for (i = n - 1, di = (double) (i + i); i > 0; i--)
+ {
+ temp = b;
+ b *= di;
+ b = b / x - a;
+ a = temp;
+ di -= two;
+ /* scale b to avoid spurious overflow */
+ if (b > 1e100)
+ {
+ a /= b;
+ t /= b;
+ b = one;
+ }
+ }
+ }
+ /* j0() and j1() suffer enormous loss of precision at and
+ * near zero; however, we know that their zero points never
+ * coincide, so just choose the one further away from zero.
+ */
+ z = __ieee754_j0 (x);
+ w = __ieee754_j1 (x);
+ if (fabs (z) >= fabs (w))
+ b = (t * z / b);
+ else
+ b = (t * w / a);
+ }
+ }
+ if (sgn == 1)
+ ret = -b;
+ else
+ ret = b;
+ ret = math_narrow_eval (ret);
+ }
+ if (ret == 0)
+ {
+ ret = math_narrow_eval (__copysign (DBL_MIN, ret) * DBL_MIN);
+ __set_errno (ERANGE);
+ }
+ else
+ math_check_force_underflow (ret);
+ return ret;
+}
+strong_alias (__ieee754_jn, __jn_finite)
+
+double
+__ieee754_yn (int n, double x)
+{
+ int32_t i, hx, ix, lx;
+ int32_t sign;
+ double a, b, temp, ret;
+
+ EXTRACT_WORDS (hx, lx, x);
+ ix = 0x7fffffff & hx;
+ /* if Y(n,NaN) is NaN */
+ if (__glibc_unlikely ((ix | ((u_int32_t) (lx | -lx)) >> 31) > 0x7ff00000))
+ return x + x;
+ if (__glibc_unlikely ((ix | lx) == 0))
+ return -HUGE_VAL + x;
+ /* -inf and overflow exception. */;
+ if (__glibc_unlikely (hx < 0))
+ return zero / (zero * x);
+ sign = 1;
+ if (n < 0)
+ {
+ n = -n;
+ sign = 1 - ((n & 1) << 1);
+ }
+ if (n == 0)
+ return (__ieee754_y0 (x));
+ {
+ SET_RESTORE_ROUND (FE_TONEAREST);
+ if (n == 1)
+ {
+ ret = sign * __ieee754_y1 (x);
+ goto out;
+ }
+ if (__glibc_unlikely (ix == 0x7ff00000))
+ return zero;
+ if (ix >= 0x52D00000) /* x > 2**302 */
+ { /* (x >> n**2)
+ * Jn(x) = cos(x-(2n+1)*pi/4)*sqrt(2/x*pi)
+ * Yn(x) = sin(x-(2n+1)*pi/4)*sqrt(2/x*pi)
+ * Let s=sin(x), c=cos(x),
+ * xn=x-(2n+1)*pi/4, sqt2 = sqrt(2),then
+ *
+ * n sin(xn)*sqt2 cos(xn)*sqt2
+ * ----------------------------------
+ * 0 s-c c+s
+ * 1 -s-c -c+s
+ * 2 -s+c -c-s
+ * 3 s+c c-s
+ */
+ double c;
+ double s;
+ __sincos (x, &s, &c);
+ switch (n & 3)
+ {
+ case 0: temp = s - c; break;
+ case 1: temp = -s - c; break;
+ case 2: temp = -s + c; break;
+ case 3: temp = s + c; break;
+ }
+ b = invsqrtpi * temp / __ieee754_sqrt (x);
+ }
+ else
+ {
+ u_int32_t high;
+ a = __ieee754_y0 (x);
+ b = __ieee754_y1 (x);
+ /* quit if b is -inf */
+ GET_HIGH_WORD (high, b);
+ for (i = 1; i < n && high != 0xfff00000; i++)
+ {
+ temp = b;
+ b = ((double) (i + i) / x) * b - a;
+ GET_HIGH_WORD (high, b);
+ a = temp;
+ }
+ /* If B is +-Inf, set up errno accordingly. */
+ if (!isfinite (b))
+ __set_errno (ERANGE);
+ }
+ if (sign > 0)
+ ret = b;
+ else
+ ret = -b;
+ }
+ out:
+ if (isinf (ret))
+ ret = __copysign (DBL_MAX, ret) * DBL_MAX;
+ return ret;
+}
+strong_alias (__ieee754_yn, __yn_finite)
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/e_lgamma_r.c b/REORG.TODO/sysdeps/ieee754/dbl-64/e_lgamma_r.c
new file mode 100644
index 0000000000..b5860d8a24
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/e_lgamma_r.c
@@ -0,0 +1,310 @@
+/* @(#)er_lgamma.c 5.1 93/09/24 */
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+/* __ieee754_lgamma_r(x, signgamp)
+ * Reentrant version of the logarithm of the Gamma function
+ * with user provide pointer for the sign of Gamma(x).
+ *
+ * Method:
+ * 1. Argument Reduction for 0 < x <= 8
+ * Since gamma(1+s)=s*gamma(s), for x in [0,8], we may
+ * reduce x to a number in [1.5,2.5] by
+ * lgamma(1+s) = log(s) + lgamma(s)
+ * for example,
+ * lgamma(7.3) = log(6.3) + lgamma(6.3)
+ * = log(6.3*5.3) + lgamma(5.3)
+ * = log(6.3*5.3*4.3*3.3*2.3) + lgamma(2.3)
+ * 2. Polynomial approximation of lgamma around its
+ * minimun ymin=1.461632144968362245 to maintain monotonicity.
+ * On [ymin-0.23, ymin+0.27] (i.e., [1.23164,1.73163]), use
+ * Let z = x-ymin;
+ * lgamma(x) = -1.214862905358496078218 + z^2*poly(z)
+ * where
+ * poly(z) is a 14 degree polynomial.
+ * 2. Rational approximation in the primary interval [2,3]
+ * We use the following approximation:
+ * s = x-2.0;
+ * lgamma(x) = 0.5*s + s*P(s)/Q(s)
+ * with accuracy
+ * |P/Q - (lgamma(x)-0.5s)| < 2**-61.71
+ * Our algorithms are based on the following observation
+ *
+ * zeta(2)-1 2 zeta(3)-1 3
+ * lgamma(2+s) = s*(1-Euler) + --------- * s - --------- * s + ...
+ * 2 3
+ *
+ * where Euler = 0.5771... is the Euler constant, which is very
+ * close to 0.5.
+ *
+ * 3. For x>=8, we have
+ * lgamma(x)~(x-0.5)log(x)-x+0.5*log(2pi)+1/(12x)-1/(360x**3)+....
+ * (better formula:
+ * lgamma(x)~(x-0.5)*(log(x)-1)-.5*(log(2pi)-1) + ...)
+ * Let z = 1/x, then we approximation
+ * f(z) = lgamma(x) - (x-0.5)(log(x)-1)
+ * by
+ * 3 5 11
+ * w = w0 + w1*z + w2*z + w3*z + ... + w6*z
+ * where
+ * |w - f(z)| < 2**-58.74
+ *
+ * 4. For negative x, since (G is gamma function)
+ * -x*G(-x)*G(x) = pi/sin(pi*x),
+ * we have
+ * G(x) = pi/(sin(pi*x)*(-x)*G(-x))
+ * since G(-x) is positive, sign(G(x)) = sign(sin(pi*x)) for x<0
+ * Hence, for x<0, signgam = sign(sin(pi*x)) and
+ * lgamma(x) = log(|Gamma(x)|)
+ * = log(pi/(|x*sin(pi*x)|)) - lgamma(-x);
+ * Note: one should avoid compute pi*(-x) directly in the
+ * computation of sin(pi*(-x)).
+ *
+ * 5. Special Cases
+ * lgamma(2+s) ~ s*(1-Euler) for tiny s
+ * lgamma(1)=lgamma(2)=0
+ * lgamma(x) ~ -log(x) for tiny x
+ * lgamma(0) = lgamma(inf) = inf
+ * lgamma(-integer) = +-inf
+ *
+ */
+
+#include <math.h>
+#include <math_private.h>
+#include <libc-diag.h>
+
+static const double
+two52= 4.50359962737049600000e+15, /* 0x43300000, 0x00000000 */
+half= 5.00000000000000000000e-01, /* 0x3FE00000, 0x00000000 */
+one = 1.00000000000000000000e+00, /* 0x3FF00000, 0x00000000 */
+pi = 3.14159265358979311600e+00, /* 0x400921FB, 0x54442D18 */
+a0 = 7.72156649015328655494e-02, /* 0x3FB3C467, 0xE37DB0C8 */
+a1 = 3.22467033424113591611e-01, /* 0x3FD4A34C, 0xC4A60FAD */
+a2 = 6.73523010531292681824e-02, /* 0x3FB13E00, 0x1A5562A7 */
+a3 = 2.05808084325167332806e-02, /* 0x3F951322, 0xAC92547B */
+a4 = 7.38555086081402883957e-03, /* 0x3F7E404F, 0xB68FEFE8 */
+a5 = 2.89051383673415629091e-03, /* 0x3F67ADD8, 0xCCB7926B */
+a6 = 1.19270763183362067845e-03, /* 0x3F538A94, 0x116F3F5D */
+a7 = 5.10069792153511336608e-04, /* 0x3F40B6C6, 0x89B99C00 */
+a8 = 2.20862790713908385557e-04, /* 0x3F2CF2EC, 0xED10E54D */
+a9 = 1.08011567247583939954e-04, /* 0x3F1C5088, 0x987DFB07 */
+a10 = 2.52144565451257326939e-05, /* 0x3EFA7074, 0x428CFA52 */
+a11 = 4.48640949618915160150e-05, /* 0x3F07858E, 0x90A45837 */
+tc = 1.46163214496836224576e+00, /* 0x3FF762D8, 0x6356BE3F */
+tf = -1.21486290535849611461e-01, /* 0xBFBF19B9, 0xBCC38A42 */
+/* tt = -(tail of tf) */
+tt = -3.63867699703950536541e-18, /* 0xBC50C7CA, 0xA48A971F */
+t0 = 4.83836122723810047042e-01, /* 0x3FDEF72B, 0xC8EE38A2 */
+t1 = -1.47587722994593911752e-01, /* 0xBFC2E427, 0x8DC6C509 */
+t2 = 6.46249402391333854778e-02, /* 0x3FB08B42, 0x94D5419B */
+t3 = -3.27885410759859649565e-02, /* 0xBFA0C9A8, 0xDF35B713 */
+t4 = 1.79706750811820387126e-02, /* 0x3F9266E7, 0x970AF9EC */
+t5 = -1.03142241298341437450e-02, /* 0xBF851F9F, 0xBA91EC6A */
+t6 = 6.10053870246291332635e-03, /* 0x3F78FCE0, 0xE370E344 */
+t7 = -3.68452016781138256760e-03, /* 0xBF6E2EFF, 0xB3E914D7 */
+t8 = 2.25964780900612472250e-03, /* 0x3F6282D3, 0x2E15C915 */
+t9 = -1.40346469989232843813e-03, /* 0xBF56FE8E, 0xBF2D1AF1 */
+t10 = 8.81081882437654011382e-04, /* 0x3F4CDF0C, 0xEF61A8E9 */
+t11 = -5.38595305356740546715e-04, /* 0xBF41A610, 0x9C73E0EC */
+t12 = 3.15632070903625950361e-04, /* 0x3F34AF6D, 0x6C0EBBF7 */
+t13 = -3.12754168375120860518e-04, /* 0xBF347F24, 0xECC38C38 */
+t14 = 3.35529192635519073543e-04, /* 0x3F35FD3E, 0xE8C2D3F4 */
+u0 = -7.72156649015328655494e-02, /* 0xBFB3C467, 0xE37DB0C8 */
+u1 = 6.32827064025093366517e-01, /* 0x3FE4401E, 0x8B005DFF */
+u2 = 1.45492250137234768737e+00, /* 0x3FF7475C, 0xD119BD6F */
+u3 = 9.77717527963372745603e-01, /* 0x3FEF4976, 0x44EA8450 */
+u4 = 2.28963728064692451092e-01, /* 0x3FCD4EAE, 0xF6010924 */
+u5 = 1.33810918536787660377e-02, /* 0x3F8B678B, 0xBF2BAB09 */
+v1 = 2.45597793713041134822e+00, /* 0x4003A5D7, 0xC2BD619C */
+v2 = 2.12848976379893395361e+00, /* 0x40010725, 0xA42B18F5 */
+v3 = 7.69285150456672783825e-01, /* 0x3FE89DFB, 0xE45050AF */
+v4 = 1.04222645593369134254e-01, /* 0x3FBAAE55, 0xD6537C88 */
+v5 = 3.21709242282423911810e-03, /* 0x3F6A5ABB, 0x57D0CF61 */
+s0 = -7.72156649015328655494e-02, /* 0xBFB3C467, 0xE37DB0C8 */
+s1 = 2.14982415960608852501e-01, /* 0x3FCB848B, 0x36E20878 */
+s2 = 3.25778796408930981787e-01, /* 0x3FD4D98F, 0x4F139F59 */
+s3 = 1.46350472652464452805e-01, /* 0x3FC2BB9C, 0xBEE5F2F7 */
+s4 = 2.66422703033638609560e-02, /* 0x3F9B481C, 0x7E939961 */
+s5 = 1.84028451407337715652e-03, /* 0x3F5E26B6, 0x7368F239 */
+s6 = 3.19475326584100867617e-05, /* 0x3F00BFEC, 0xDD17E945 */
+r1 = 1.39200533467621045958e+00, /* 0x3FF645A7, 0x62C4AB74 */
+r2 = 7.21935547567138069525e-01, /* 0x3FE71A18, 0x93D3DCDC */
+r3 = 1.71933865632803078993e-01, /* 0x3FC601ED, 0xCCFBDF27 */
+r4 = 1.86459191715652901344e-02, /* 0x3F9317EA, 0x742ED475 */
+r5 = 7.77942496381893596434e-04, /* 0x3F497DDA, 0xCA41A95B */
+r6 = 7.32668430744625636189e-06, /* 0x3EDEBAF7, 0xA5B38140 */
+w0 = 4.18938533204672725052e-01, /* 0x3FDACFE3, 0x90C97D69 */
+w1 = 8.33333333333329678849e-02, /* 0x3FB55555, 0x5555553B */
+w2 = -2.77777777728775536470e-03, /* 0xBF66C16C, 0x16B02E5C */
+w3 = 7.93650558643019558500e-04, /* 0x3F4A019F, 0x98CF38B6 */
+w4 = -5.95187557450339963135e-04, /* 0xBF4380CB, 0x8C0FE741 */
+w5 = 8.36339918996282139126e-04, /* 0x3F4B67BA, 0x4CDAD5D1 */
+w6 = -1.63092934096575273989e-03; /* 0xBF5AB89D, 0x0B9E43E4 */
+
+static const double zero= 0.00000000000000000000e+00;
+
+static double
+sin_pi(double x)
+{
+ double y,z;
+ int n,ix;
+
+ GET_HIGH_WORD(ix,x);
+ ix &= 0x7fffffff;
+
+ if(ix<0x3fd00000) return __sin(pi*x);
+ y = -x; /* x is assume negative */
+
+ /*
+ * argument reduction, make sure inexact flag not raised if input
+ * is an integer
+ */
+ z = __floor(y);
+ if(z!=y) { /* inexact anyway */
+ y *= 0.5;
+ y = 2.0*(y - __floor(y)); /* y = |x| mod 2.0 */
+ n = (int) (y*4.0);
+ } else {
+ if(ix>=0x43400000) {
+ y = zero; n = 0; /* y must be even */
+ } else {
+ if(ix<0x43300000) z = y+two52; /* exact */
+ GET_LOW_WORD(n,z);
+ n &= 1;
+ y = n;
+ n<<= 2;
+ }
+ }
+ switch (n) {
+ case 0: y = __sin(pi*y); break;
+ case 1:
+ case 2: y = __cos(pi*(0.5-y)); break;
+ case 3:
+ case 4: y = __sin(pi*(one-y)); break;
+ case 5:
+ case 6: y = -__cos(pi*(y-1.5)); break;
+ default: y = __sin(pi*(y-2.0)); break;
+ }
+ return -y;
+}
+
+
+double
+__ieee754_lgamma_r(double x, int *signgamp)
+{
+ double t,y,z,nadj,p,p1,p2,p3,q,r,w;
+ int i,hx,lx,ix;
+
+ EXTRACT_WORDS(hx,lx,x);
+
+ /* purge off +-inf, NaN, +-0, and negative arguments */
+ *signgamp = 1;
+ ix = hx&0x7fffffff;
+ if(__builtin_expect(ix>=0x7ff00000, 0)) return x*x;
+ if(__builtin_expect((ix|lx)==0, 0))
+ {
+ if (hx < 0)
+ *signgamp = -1;
+ return one/fabs(x);
+ }
+ if(__builtin_expect(ix<0x3b900000, 0)) {
+ /* |x|<2**-70, return -log(|x|) */
+ if(hx<0) {
+ *signgamp = -1;
+ return -__ieee754_log(-x);
+ } else return -__ieee754_log(x);
+ }
+ if(hx<0) {
+ if(__builtin_expect(ix>=0x43300000, 0))
+ /* |x|>=2**52, must be -integer */
+ return __fabs (x)/zero;
+ if (x < -2.0 && x > -28.0)
+ return __lgamma_neg (x, signgamp);
+ t = sin_pi(x);
+ if(t==zero) return one/fabsf(t); /* -integer */
+ nadj = __ieee754_log(pi/fabs(t*x));
+ if(t<zero) *signgamp = -1;
+ x = -x;
+ }
+
+ /* purge off 1 and 2 */
+ if((((ix-0x3ff00000)|lx)==0)||(((ix-0x40000000)|lx)==0)) r = 0;
+ /* for x < 2.0 */
+ else if(ix<0x40000000) {
+ if(ix<=0x3feccccc) { /* lgamma(x) = lgamma(x+1)-log(x) */
+ r = -__ieee754_log(x);
+ if(ix>=0x3FE76944) {y = one-x; i= 0;}
+ else if(ix>=0x3FCDA661) {y= x-(tc-one); i=1;}
+ else {y = x; i=2;}
+ } else {
+ r = zero;
+ if(ix>=0x3FFBB4C3) {y=2.0-x;i=0;} /* [1.7316,2] */
+ else if(ix>=0x3FF3B4C4) {y=x-tc;i=1;} /* [1.23,1.73] */
+ else {y=x-one;i=2;}
+ }
+ switch(i) {
+ case 0:
+ z = y*y;
+ p1 = a0+z*(a2+z*(a4+z*(a6+z*(a8+z*a10))));
+ p2 = z*(a1+z*(a3+z*(a5+z*(a7+z*(a9+z*a11)))));
+ p = y*p1+p2;
+ r += (p-0.5*y); break;
+ case 1:
+ z = y*y;
+ w = z*y;
+ p1 = t0+w*(t3+w*(t6+w*(t9 +w*t12))); /* parallel comp */
+ p2 = t1+w*(t4+w*(t7+w*(t10+w*t13)));
+ p3 = t2+w*(t5+w*(t8+w*(t11+w*t14)));
+ p = z*p1-(tt-w*(p2+y*p3));
+ r += (tf + p); break;
+ case 2:
+ p1 = y*(u0+y*(u1+y*(u2+y*(u3+y*(u4+y*u5)))));
+ p2 = one+y*(v1+y*(v2+y*(v3+y*(v4+y*v5))));
+ r += (-0.5*y + p1/p2);
+ }
+ }
+ else if(ix<0x40200000) { /* x < 8.0 */
+ i = (int)x;
+ t = zero;
+ y = x-(double)i;
+ p = y*(s0+y*(s1+y*(s2+y*(s3+y*(s4+y*(s5+y*s6))))));
+ q = one+y*(r1+y*(r2+y*(r3+y*(r4+y*(r5+y*r6)))));
+ r = half*y+p/q;
+ z = one; /* lgamma(1+s) = log(s) + lgamma(s) */
+ switch(i) {
+ case 7: z *= (y+6.0); /* FALLTHRU */
+ case 6: z *= (y+5.0); /* FALLTHRU */
+ case 5: z *= (y+4.0); /* FALLTHRU */
+ case 4: z *= (y+3.0); /* FALLTHRU */
+ case 3: z *= (y+2.0); /* FALLTHRU */
+ r += __ieee754_log(z); break;
+ }
+ /* 8.0 <= x < 2**58 */
+ } else if (ix < 0x43900000) {
+ t = __ieee754_log(x);
+ z = one/x;
+ y = z*z;
+ w = w0+z*(w1+y*(w2+y*(w3+y*(w4+y*(w5+y*w6)))));
+ r = (x-half)*(t-one)+w;
+ } else
+ /* 2**58 <= x <= inf */
+ r = math_narrow_eval (x*(__ieee754_log(x)-one));
+ /* NADJ is set for negative arguments but not otherwise,
+ resulting in warnings that it may be used uninitialized
+ although in the cases where it is used it has always been
+ set. */
+ DIAG_PUSH_NEEDS_COMMENT;
+ DIAG_IGNORE_NEEDS_COMMENT (4.9, "-Wmaybe-uninitialized");
+ if(hx<0) r = nadj - r;
+ DIAG_POP_NEEDS_COMMENT;
+ return r;
+}
+strong_alias (__ieee754_lgamma_r, __lgamma_r_finite)
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/e_log.c b/REORG.TODO/sysdeps/ieee754/dbl-64/e_log.c
new file mode 100644
index 0000000000..e7cddc29c8
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/e_log.c
@@ -0,0 +1,262 @@
+/*
+ * IBM Accurate Mathematical Library
+ * written by International Business Machines Corp.
+ * Copyright (C) 2001-2017 Free Software Foundation, Inc.
+ *
+ * This program 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 2.1 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 program; if not, see <http://www.gnu.org/licenses/>.
+ */
+/*********************************************************************/
+/* */
+/* MODULE_NAME:ulog.c */
+/* */
+/* FUNCTION:ulog */
+/* */
+/* FILES NEEDED: dla.h endian.h mpa.h mydefs.h ulog.h */
+/* mpexp.c mplog.c mpa.c */
+/* ulog.tbl */
+/* */
+/* An ultimate log routine. Given an IEEE double machine number x */
+/* it computes the correctly rounded (to nearest) value of log(x). */
+/* Assumption: Machine arithmetic operations are performed in */
+/* round to nearest mode of IEEE 754 standard. */
+/* */
+/*********************************************************************/
+
+
+#include "endian.h"
+#include <dla.h>
+#include "mpa.h"
+#include "MathLib.h"
+#include <math.h>
+#include <math_private.h>
+#include <stap-probe.h>
+
+#ifndef SECTION
+# define SECTION
+#endif
+
+void __mplog (mp_no *, mp_no *, int);
+
+/*********************************************************************/
+/* An ultimate log routine. Given an IEEE double machine number x */
+/* it computes the correctly rounded (to nearest) value of log(x). */
+/*********************************************************************/
+double
+SECTION
+__ieee754_log (double x)
+{
+#define M 4
+ static const int pr[M] = { 8, 10, 18, 32 };
+ int i, j, n, ux, dx, p;
+ double dbl_n, u, p0, q, r0, w, nln2a, luai, lubi, lvaj, lvbj,
+ sij, ssij, ttij, A, B, B0, y, y1, y2, polI, polII, sa, sb,
+ t1, t2, t7, t8, t, ra, rb, ww,
+ a0, aa0, s1, s2, ss2, s3, ss3, a1, aa1, a, aa, b, bb, c;
+#ifndef DLA_FMS
+ double t3, t4, t5, t6;
+#endif
+ number num;
+ mp_no mpx, mpy, mpy1, mpy2, mperr;
+
+#include "ulog.tbl"
+#include "ulog.h"
+
+ /* Treating special values of x ( x<=0, x=INF, x=NaN etc.). */
+
+ num.d = x;
+ ux = num.i[HIGH_HALF];
+ dx = num.i[LOW_HALF];
+ n = 0;
+ if (__glibc_unlikely (ux < 0x00100000))
+ {
+ if (__glibc_unlikely (((ux & 0x7fffffff) | dx) == 0))
+ return MHALF / 0.0; /* return -INF */
+ if (__glibc_unlikely (ux < 0))
+ return (x - x) / 0.0; /* return NaN */
+ n -= 54;
+ x *= two54.d; /* scale x */
+ num.d = x;
+ }
+ if (__glibc_unlikely (ux >= 0x7ff00000))
+ return x + x; /* INF or NaN */
+
+ /* Regular values of x */
+
+ w = x - 1;
+ if (__glibc_likely (fabs (w) > U03))
+ goto case_03;
+
+ /* log (1) is +0 in all rounding modes. */
+ if (w == 0.0)
+ return 0.0;
+
+ /*--- Stage I, the case abs(x-1) < 0.03 */
+
+ t8 = MHALF * w;
+ EMULV (t8, w, a, aa, t1, t2, t3, t4, t5);
+ EADD (w, a, b, bb);
+ /* Evaluate polynomial II */
+ polII = b7.d + w * b8.d;
+ polII = b6.d + w * polII;
+ polII = b5.d + w * polII;
+ polII = b4.d + w * polII;
+ polII = b3.d + w * polII;
+ polII = b2.d + w * polII;
+ polII = b1.d + w * polII;
+ polII = b0.d + w * polII;
+ polII *= w * w * w;
+ c = (aa + bb) + polII;
+
+ /* End stage I, case abs(x-1) < 0.03 */
+ if ((y = b + (c + b * E2)) == b + (c - b * E2))
+ return y;
+
+ /*--- Stage II, the case abs(x-1) < 0.03 */
+
+ a = d19.d + w * d20.d;
+ a = d18.d + w * a;
+ a = d17.d + w * a;
+ a = d16.d + w * a;
+ a = d15.d + w * a;
+ a = d14.d + w * a;
+ a = d13.d + w * a;
+ a = d12.d + w * a;
+ a = d11.d + w * a;
+
+ EMULV (w, a, s2, ss2, t1, t2, t3, t4, t5);
+ ADD2 (d10.d, dd10.d, s2, ss2, s3, ss3, t1, t2);
+ MUL2 (w, 0, s3, ss3, s2, ss2, t1, t2, t3, t4, t5, t6, t7, t8);
+ ADD2 (d9.d, dd9.d, s2, ss2, s3, ss3, t1, t2);
+ MUL2 (w, 0, s3, ss3, s2, ss2, t1, t2, t3, t4, t5, t6, t7, t8);
+ ADD2 (d8.d, dd8.d, s2, ss2, s3, ss3, t1, t2);
+ MUL2 (w, 0, s3, ss3, s2, ss2, t1, t2, t3, t4, t5, t6, t7, t8);
+ ADD2 (d7.d, dd7.d, s2, ss2, s3, ss3, t1, t2);
+ MUL2 (w, 0, s3, ss3, s2, ss2, t1, t2, t3, t4, t5, t6, t7, t8);
+ ADD2 (d6.d, dd6.d, s2, ss2, s3, ss3, t1, t2);
+ MUL2 (w, 0, s3, ss3, s2, ss2, t1, t2, t3, t4, t5, t6, t7, t8);
+ ADD2 (d5.d, dd5.d, s2, ss2, s3, ss3, t1, t2);
+ MUL2 (w, 0, s3, ss3, s2, ss2, t1, t2, t3, t4, t5, t6, t7, t8);
+ ADD2 (d4.d, dd4.d, s2, ss2, s3, ss3, t1, t2);
+ MUL2 (w, 0, s3, ss3, s2, ss2, t1, t2, t3, t4, t5, t6, t7, t8);
+ ADD2 (d3.d, dd3.d, s2, ss2, s3, ss3, t1, t2);
+ MUL2 (w, 0, s3, ss3, s2, ss2, t1, t2, t3, t4, t5, t6, t7, t8);
+ ADD2 (d2.d, dd2.d, s2, ss2, s3, ss3, t1, t2);
+ MUL2 (w, 0, s3, ss3, s2, ss2, t1, t2, t3, t4, t5, t6, t7, t8);
+ MUL2 (w, 0, s2, ss2, s3, ss3, t1, t2, t3, t4, t5, t6, t7, t8);
+ ADD2 (w, 0, s3, ss3, b, bb, t1, t2);
+
+ /* End stage II, case abs(x-1) < 0.03 */
+ if ((y = b + (bb + b * E4)) == b + (bb - b * E4))
+ return y;
+ goto stage_n;
+
+ /*--- Stage I, the case abs(x-1) > 0.03 */
+case_03:
+
+ /* Find n,u such that x = u*2**n, 1/sqrt(2) < u < sqrt(2) */
+ n += (num.i[HIGH_HALF] >> 20) - 1023;
+ num.i[HIGH_HALF] = (num.i[HIGH_HALF] & 0x000fffff) | 0x3ff00000;
+ if (num.d > SQRT_2)
+ {
+ num.d *= HALF;
+ n++;
+ }
+ u = num.d;
+ dbl_n = (double) n;
+
+ /* Find i such that ui=1+(i-75)/2**8 is closest to u (i= 0,1,2,...,181) */
+ num.d += h1.d;
+ i = (num.i[HIGH_HALF] & 0x000fffff) >> 12;
+
+ /* Find j such that vj=1+(j-180)/2**16 is closest to v=u/ui (j= 0,...,361) */
+ num.d = u * Iu[i].d + h2.d;
+ j = (num.i[HIGH_HALF] & 0x000fffff) >> 4;
+
+ /* Compute w=(u-ui*vj)/(ui*vj) */
+ p0 = (1 + (i - 75) * DEL_U) * (1 + (j - 180) * DEL_V);
+ q = u - p0;
+ r0 = Iu[i].d * Iv[j].d;
+ w = q * r0;
+
+ /* Evaluate polynomial I */
+ polI = w + (a2.d + a3.d * w) * w * w;
+
+ /* Add up everything */
+ nln2a = dbl_n * LN2A;
+ luai = Lu[i][0].d;
+ lubi = Lu[i][1].d;
+ lvaj = Lv[j][0].d;
+ lvbj = Lv[j][1].d;
+ EADD (luai, lvaj, sij, ssij);
+ EADD (nln2a, sij, A, ttij);
+ B0 = (((lubi + lvbj) + ssij) + ttij) + dbl_n * LN2B;
+ B = polI + B0;
+
+ /* End stage I, case abs(x-1) >= 0.03 */
+ if ((y = A + (B + E1)) == A + (B - E1))
+ return y;
+
+
+ /*--- Stage II, the case abs(x-1) > 0.03 */
+
+ /* Improve the accuracy of r0 */
+ EMULV (p0, r0, sa, sb, t1, t2, t3, t4, t5);
+ t = r0 * ((1 - sa) - sb);
+ EADD (r0, t, ra, rb);
+
+ /* Compute w */
+ MUL2 (q, 0, ra, rb, w, ww, t1, t2, t3, t4, t5, t6, t7, t8);
+
+ EADD (A, B0, a0, aa0);
+
+ /* Evaluate polynomial III */
+ s1 = (c3.d + (c4.d + c5.d * w) * w) * w;
+ EADD (c2.d, s1, s2, ss2);
+ MUL2 (s2, ss2, w, ww, s3, ss3, t1, t2, t3, t4, t5, t6, t7, t8);
+ MUL2 (s3, ss3, w, ww, s2, ss2, t1, t2, t3, t4, t5, t6, t7, t8);
+ ADD2 (s2, ss2, w, ww, s3, ss3, t1, t2);
+ ADD2 (s3, ss3, a0, aa0, a1, aa1, t1, t2);
+
+ /* End stage II, case abs(x-1) >= 0.03 */
+ if ((y = a1 + (aa1 + E3)) == a1 + (aa1 - E3))
+ return y;
+
+
+ /* Final stages. Use multi-precision arithmetic. */
+stage_n:
+
+ for (i = 0; i < M; i++)
+ {
+ p = pr[i];
+ __dbl_mp (x, &mpx, p);
+ __dbl_mp (y, &mpy, p);
+ __mplog (&mpx, &mpy, p);
+ __dbl_mp (e[i].d, &mperr, p);
+ __add (&mpy, &mperr, &mpy1, p);
+ __sub (&mpy, &mperr, &mpy2, p);
+ __mp_dbl (&mpy1, &y1, p);
+ __mp_dbl (&mpy2, &y2, p);
+ if (y1 == y2)
+ {
+ LIBC_PROBE (slowlog, 3, &p, &x, &y1);
+ return y1;
+ }
+ }
+ LIBC_PROBE (slowlog_inexact, 3, &p, &x, &y1);
+ return y1;
+}
+
+#ifndef __ieee754_log
+strong_alias (__ieee754_log, __log_finite)
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/e_log10.c b/REORG.TODO/sysdeps/ieee754/dbl-64/e_log10.c
new file mode 100644
index 0000000000..bf40bca874
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/e_log10.c
@@ -0,0 +1,88 @@
+/* @(#)e_log10.c 5.1 93/09/24 */
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+/* __ieee754_log10(x)
+ * Return the base 10 logarithm of x
+ *
+ * Method :
+ * Let log10_2hi = leading 40 bits of log10(2) and
+ * log10_2lo = log10(2) - log10_2hi,
+ * ivln10 = 1/log(10) rounded.
+ * Then
+ * n = ilogb(x),
+ * if(n<0) n = n+1;
+ * x = scalbn(x,-n);
+ * log10(x) := n*log10_2hi + (n*log10_2lo + ivln10*log(x))
+ *
+ * Note 1:
+ * To guarantee log10(10**n)=n, where 10**n is normal, the rounding
+ * mode must set to Round-to-Nearest.
+ * Note 2:
+ * [1/log(10)] rounded to 53 bits has error .198 ulps;
+ * log10 is monotonic at all binary break points.
+ *
+ * Special cases:
+ * log10(x) is NaN with signal if x < 0;
+ * log10(+INF) is +INF with no signal; log10(0) is -INF with signal;
+ * log10(NaN) is that NaN with no signal;
+ * log10(10**N) = N for N=0,1,...,22.
+ *
+ * Constants:
+ * The hexadecimal values are the intended ones for the following constants.
+ * The decimal values may be used, provided that the compiler will convert
+ * from decimal to binary accurately enough to produce the hexadecimal values
+ * shown.
+ */
+
+#include <math.h>
+#include <math_private.h>
+#include <fix-int-fp-convert-zero.h>
+
+static const double two54 = 1.80143985094819840000e+16; /* 0x43500000, 0x00000000 */
+static const double ivln10 = 4.34294481903251816668e-01; /* 0x3FDBCB7B, 0x1526E50E */
+static const double log10_2hi = 3.01029995663611771306e-01; /* 0x3FD34413, 0x509F6000 */
+static const double log10_2lo = 3.69423907715893078616e-13; /* 0x3D59FEF3, 0x11F12B36 */
+
+double
+__ieee754_log10 (double x)
+{
+ double y, z;
+ int32_t i, k, hx;
+ u_int32_t lx;
+
+ EXTRACT_WORDS (hx, lx, x);
+
+ k = 0;
+ if (hx < 0x00100000)
+ { /* x < 2**-1022 */
+ if (__glibc_unlikely (((hx & 0x7fffffff) | lx) == 0))
+ return -two54 / __fabs (x); /* log(+-0)=-inf */
+ if (__glibc_unlikely (hx < 0))
+ return (x - x) / (x - x); /* log(-#) = NaN */
+ k -= 54;
+ x *= two54; /* subnormal number, scale up x */
+ GET_HIGH_WORD (hx, x);
+ }
+ if (__glibc_unlikely (hx >= 0x7ff00000))
+ return x + x;
+ k += (hx >> 20) - 1023;
+ i = ((u_int32_t) k & 0x80000000) >> 31;
+ hx = (hx & 0x000fffff) | ((0x3ff - i) << 20);
+ y = (double) (k + i);
+ if (FIX_INT_FP_CONVERT_ZERO && y == 0.0)
+ y = 0.0;
+ SET_HIGH_WORD (x, hx);
+ z = y * log10_2lo + ivln10 * __ieee754_log (x);
+ return z + y * log10_2hi;
+}
+
+strong_alias (__ieee754_log10, __log10_finite)
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/e_log2.c b/REORG.TODO/sysdeps/ieee754/dbl-64/e_log2.c
new file mode 100644
index 0000000000..5af68d8ecc
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/e_log2.c
@@ -0,0 +1,133 @@
+/* Adapted for log2 by Ulrich Drepper <drepper@cygnus.com>. */
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+/* __ieee754_log2(x)
+ * Return the logarithm to base 2 of x
+ *
+ * Method :
+ * 1. Argument Reduction: find k and f such that
+ * x = 2^k * (1+f),
+ * where sqrt(2)/2 < 1+f < sqrt(2) .
+ *
+ * 2. Approximation of log(1+f).
+ * Let s = f/(2+f) ; based on log(1+f) = log(1+s) - log(1-s)
+ * = 2s + 2/3 s**3 + 2/5 s**5 + .....,
+ * = 2s + s*R
+ * We use a special Reme algorithm on [0,0.1716] to generate
+ * a polynomial of degree 14 to approximate R The maximum error
+ * of this polynomial approximation is bounded by 2**-58.45. In
+ * other words,
+ * 2 4 6 8 10 12 14
+ * R(z) ~ Lg1*s +Lg2*s +Lg3*s +Lg4*s +Lg5*s +Lg6*s +Lg7*s
+ * (the values of Lg1 to Lg7 are listed in the program)
+ * and
+ * | 2 14 | -58.45
+ * | Lg1*s +...+Lg7*s - R(z) | <= 2
+ * | |
+ * Note that 2s = f - s*f = f - hfsq + s*hfsq, where hfsq = f*f/2.
+ * In order to guarantee error in log below 1ulp, we compute log
+ * by
+ * log(1+f) = f - s*(f - R) (if f is not too large)
+ * log(1+f) = f - (hfsq - s*(hfsq+R)). (better accuracy)
+ *
+ * 3. Finally, log(x) = k + log(1+f).
+ * = k+(f-(hfsq-(s*(hfsq+R))))
+ *
+ * Special cases:
+ * log2(x) is NaN with signal if x < 0 (including -INF) ;
+ * log2(+INF) is +INF; log(0) is -INF with signal;
+ * log2(NaN) is that NaN with no signal.
+ *
+ * Constants:
+ * The hexadecimal values are the intended ones for the following
+ * constants. The decimal values may be used, provided that the
+ * compiler will convert from decimal to binary accurately enough
+ * to produce the hexadecimal values shown.
+ */
+
+#include <math.h>
+#include <math_private.h>
+#include <fix-int-fp-convert-zero.h>
+
+static const double ln2 = 0.69314718055994530942;
+static const double two54 = 1.80143985094819840000e+16; /* 43500000 00000000 */
+static const double Lg1 = 6.666666666666735130e-01; /* 3FE55555 55555593 */
+static const double Lg2 = 3.999999999940941908e-01; /* 3FD99999 9997FA04 */
+static const double Lg3 = 2.857142874366239149e-01; /* 3FD24924 94229359 */
+static const double Lg4 = 2.222219843214978396e-01; /* 3FCC71C5 1D8E78AF */
+static const double Lg5 = 1.818357216161805012e-01; /* 3FC74664 96CB03DE */
+static const double Lg6 = 1.531383769920937332e-01; /* 3FC39A09 D078C69F */
+static const double Lg7 = 1.479819860511658591e-01; /* 3FC2F112 DF3E5244 */
+
+static const double zero = 0.0;
+
+double
+__ieee754_log2 (double x)
+{
+ double hfsq, f, s, z, R, w, t1, t2, dk;
+ int32_t k, hx, i, j;
+ u_int32_t lx;
+
+ EXTRACT_WORDS (hx, lx, x);
+
+ k = 0;
+ if (hx < 0x00100000)
+ { /* x < 2**-1022 */
+ if (__glibc_unlikely (((hx & 0x7fffffff) | lx) == 0))
+ return -two54 / __fabs (x); /* log(+-0)=-inf */
+ if (__glibc_unlikely (hx < 0))
+ return (x - x) / (x - x); /* log(-#) = NaN */
+ k -= 54;
+ x *= two54; /* subnormal number, scale up x */
+ GET_HIGH_WORD (hx, x);
+ }
+ if (__glibc_unlikely (hx >= 0x7ff00000))
+ return x + x;
+ k += (hx >> 20) - 1023;
+ hx &= 0x000fffff;
+ i = (hx + 0x95f64) & 0x100000;
+ SET_HIGH_WORD (x, hx | (i ^ 0x3ff00000)); /* normalize x or x/2 */
+ k += (i >> 20);
+ dk = (double) k;
+ f = x - 1.0;
+ if ((0x000fffff & (2 + hx)) < 3)
+ { /* |f| < 2**-20 */
+ if (f == zero)
+ {
+ if (FIX_INT_FP_CONVERT_ZERO && dk == 0.0)
+ dk = 0.0;
+ return dk;
+ }
+ R = f * f * (0.5 - 0.33333333333333333 * f);
+ return dk - (R - f) / ln2;
+ }
+ s = f / (2.0 + f);
+ z = s * s;
+ i = hx - 0x6147a;
+ w = z * z;
+ j = 0x6b851 - hx;
+ t1 = w * (Lg2 + w * (Lg4 + w * Lg6));
+ t2 = z * (Lg1 + w * (Lg3 + w * (Lg5 + w * Lg7)));
+ i |= j;
+ R = t2 + t1;
+ if (i > 0)
+ {
+ hfsq = 0.5 * f * f;
+ return dk - ((hfsq - (s * (hfsq + R))) - f) / ln2;
+ }
+ else
+ {
+ return dk - ((s * (f - R)) - f) / ln2;
+ }
+}
+
+strong_alias (__ieee754_log2, __log2_finite)
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/e_pow.c b/REORG.TODO/sysdeps/ieee754/dbl-64/e_pow.c
new file mode 100644
index 0000000000..9f6439ee42
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/e_pow.c
@@ -0,0 +1,481 @@
+/*
+ * IBM Accurate Mathematical Library
+ * written by International Business Machines Corp.
+ * Copyright (C) 2001-2017 Free Software Foundation, Inc.
+ *
+ * This program 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 2.1 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 program; if not, see <http://www.gnu.org/licenses/>.
+ */
+/***************************************************************************/
+/* MODULE_NAME: upow.c */
+/* */
+/* FUNCTIONS: upow */
+/* power1 */
+/* my_log2 */
+/* log1 */
+/* checkint */
+/* FILES NEEDED: dla.h endian.h mpa.h mydefs.h */
+/* halfulp.c mpexp.c mplog.c slowexp.c slowpow.c mpa.c */
+/* uexp.c upow.c */
+/* root.tbl uexp.tbl upow.tbl */
+/* An ultimate power routine. Given two IEEE double machine numbers y,x */
+/* it computes the correctly rounded (to nearest) value of x^y. */
+/* Assumption: Machine arithmetic operations are performed in */
+/* round to nearest mode of IEEE 754 standard. */
+/* */
+/***************************************************************************/
+#include <math.h>
+#include "endian.h"
+#include "upow.h"
+#include <dla.h>
+#include "mydefs.h"
+#include "MathLib.h"
+#include "upow.tbl"
+#include <math_private.h>
+#include <fenv.h>
+
+#ifndef SECTION
+# define SECTION
+#endif
+
+static const double huge = 1.0e300, tiny = 1.0e-300;
+
+double __exp1 (double x, double xx, double error);
+static double log1 (double x, double *delta, double *error);
+static double my_log2 (double x, double *delta, double *error);
+double __slowpow (double x, double y, double z);
+static double power1 (double x, double y);
+static int checkint (double x);
+
+/* An ultimate power routine. Given two IEEE double machine numbers y, x it
+ computes the correctly rounded (to nearest) value of X^y. */
+double
+SECTION
+__ieee754_pow (double x, double y)
+{
+ double z, a, aa, error, t, a1, a2, y1, y2;
+ mynumber u, v;
+ int k;
+ int4 qx, qy;
+ v.x = y;
+ u.x = x;
+ if (v.i[LOW_HALF] == 0)
+ { /* of y */
+ qx = u.i[HIGH_HALF] & 0x7fffffff;
+ /* Is x a NaN? */
+ if ((((qx == 0x7ff00000) && (u.i[LOW_HALF] != 0)) || (qx > 0x7ff00000))
+ && (y != 0 || issignaling (x)))
+ return x + x;
+ if (y == 1.0)
+ return x;
+ if (y == 2.0)
+ return x * x;
+ if (y == -1.0)
+ return 1.0 / x;
+ if (y == 0)
+ return 1.0;
+ }
+ /* else */
+ if (((u.i[HIGH_HALF] > 0 && u.i[HIGH_HALF] < 0x7ff00000) || /* x>0 and not x->0 */
+ (u.i[HIGH_HALF] == 0 && u.i[LOW_HALF] != 0)) &&
+ /* 2^-1023< x<= 2^-1023 * 0x1.0000ffffffff */
+ (v.i[HIGH_HALF] & 0x7fffffff) < 0x4ff00000)
+ { /* if y<-1 or y>1 */
+ double retval;
+
+ {
+ SET_RESTORE_ROUND (FE_TONEAREST);
+
+ /* Avoid internal underflow for tiny y. The exact value of y does
+ not matter if |y| <= 2**-64. */
+ if (fabs (y) < 0x1p-64)
+ y = y < 0 ? -0x1p-64 : 0x1p-64;
+ z = log1 (x, &aa, &error); /* x^y =e^(y log (X)) */
+ t = y * CN;
+ y1 = t - (t - y);
+ y2 = y - y1;
+ t = z * CN;
+ a1 = t - (t - z);
+ a2 = (z - a1) + aa;
+ a = y1 * a1;
+ aa = y2 * a1 + y * a2;
+ a1 = a + aa;
+ a2 = (a - a1) + aa;
+ error = error * fabs (y);
+ t = __exp1 (a1, a2, 1.9e16 * error); /* return -10 or 0 if wasn't computed exactly */
+ retval = (t > 0) ? t : power1 (x, y);
+ }
+
+ if (isinf (retval))
+ retval = huge * huge;
+ else if (retval == 0)
+ retval = tiny * tiny;
+ else
+ math_check_force_underflow_nonneg (retval);
+ return retval;
+ }
+
+ if (x == 0)
+ {
+ if (((v.i[HIGH_HALF] & 0x7fffffff) == 0x7ff00000 && v.i[LOW_HALF] != 0)
+ || (v.i[HIGH_HALF] & 0x7fffffff) > 0x7ff00000) /* NaN */
+ return y + y;
+ if (fabs (y) > 1.0e20)
+ return (y > 0) ? 0 : 1.0 / 0.0;
+ k = checkint (y);
+ if (k == -1)
+ return y < 0 ? 1.0 / x : x;
+ else
+ return y < 0 ? 1.0 / 0.0 : 0.0; /* return 0 */
+ }
+
+ qx = u.i[HIGH_HALF] & 0x7fffffff; /* no sign */
+ qy = v.i[HIGH_HALF] & 0x7fffffff; /* no sign */
+
+ if (qx >= 0x7ff00000 && (qx > 0x7ff00000 || u.i[LOW_HALF] != 0)) /* NaN */
+ return x + y;
+ if (qy >= 0x7ff00000 && (qy > 0x7ff00000 || v.i[LOW_HALF] != 0)) /* NaN */
+ return x == 1.0 && !issignaling (y) ? 1.0 : y + y;
+
+ /* if x<0 */
+ if (u.i[HIGH_HALF] < 0)
+ {
+ k = checkint (y);
+ if (k == 0)
+ {
+ if (qy == 0x7ff00000)
+ {
+ if (x == -1.0)
+ return 1.0;
+ else if (x > -1.0)
+ return v.i[HIGH_HALF] < 0 ? INF.x : 0.0;
+ else
+ return v.i[HIGH_HALF] < 0 ? 0.0 : INF.x;
+ }
+ else if (qx == 0x7ff00000)
+ return y < 0 ? 0.0 : INF.x;
+ return (x - x) / (x - x); /* y not integer and x<0 */
+ }
+ else if (qx == 0x7ff00000)
+ {
+ if (k < 0)
+ return y < 0 ? nZERO.x : nINF.x;
+ else
+ return y < 0 ? 0.0 : INF.x;
+ }
+ /* if y even or odd */
+ if (k == 1)
+ return __ieee754_pow (-x, y);
+ else
+ {
+ double retval;
+ {
+ SET_RESTORE_ROUND (FE_TONEAREST);
+ retval = -__ieee754_pow (-x, y);
+ }
+ if (isinf (retval))
+ retval = -huge * huge;
+ else if (retval == 0)
+ retval = -tiny * tiny;
+ return retval;
+ }
+ }
+ /* x>0 */
+
+ if (qx == 0x7ff00000) /* x= 2^-0x3ff */
+ return y > 0 ? x : 0;
+
+ if (qy > 0x45f00000 && qy < 0x7ff00000)
+ {
+ if (x == 1.0)
+ return 1.0;
+ if (y > 0)
+ return (x > 1.0) ? huge * huge : tiny * tiny;
+ if (y < 0)
+ return (x < 1.0) ? huge * huge : tiny * tiny;
+ }
+
+ if (x == 1.0)
+ return 1.0;
+ if (y > 0)
+ return (x > 1.0) ? INF.x : 0;
+ if (y < 0)
+ return (x < 1.0) ? INF.x : 0;
+ return 0; /* unreachable, to make the compiler happy */
+}
+
+#ifndef __ieee754_pow
+strong_alias (__ieee754_pow, __pow_finite)
+#endif
+
+/* Compute x^y using more accurate but more slow log routine. */
+static double
+SECTION
+power1 (double x, double y)
+{
+ double z, a, aa, error, t, a1, a2, y1, y2;
+ z = my_log2 (x, &aa, &error);
+ t = y * CN;
+ y1 = t - (t - y);
+ y2 = y - y1;
+ t = z * CN;
+ a1 = t - (t - z);
+ a2 = z - a1;
+ a = y * z;
+ aa = ((y1 * a1 - a) + y1 * a2 + y2 * a1) + y2 * a2 + aa * y;
+ a1 = a + aa;
+ a2 = (a - a1) + aa;
+ error = error * fabs (y);
+ t = __exp1 (a1, a2, 1.9e16 * error);
+ return (t >= 0) ? t : __slowpow (x, y, z);
+}
+
+/* Compute log(x) (x is left argument). The result is the returned double + the
+ parameter DELTA. The result is bounded by ERROR. */
+static double
+SECTION
+log1 (double x, double *delta, double *error)
+{
+ unsigned int i, j;
+ int m;
+ double uu, vv, eps, nx, e, e1, e2, t, t1, t2, res, add = 0;
+ mynumber u, v;
+#ifdef BIG_ENDI
+ mynumber /**/ two52 = {{0x43300000, 0x00000000}}; /* 2**52 */
+#else
+# ifdef LITTLE_ENDI
+ mynumber /**/ two52 = {{0x00000000, 0x43300000}}; /* 2**52 */
+# endif
+#endif
+
+ u.x = x;
+ m = u.i[HIGH_HALF];
+ *error = 0;
+ *delta = 0;
+ if (m < 0x00100000) /* 1<x<2^-1007 */
+ {
+ x = x * t52.x;
+ add = -52.0;
+ u.x = x;
+ m = u.i[HIGH_HALF];
+ }
+
+ if ((m & 0x000fffff) < 0x0006a09e)
+ {
+ u.i[HIGH_HALF] = (m & 0x000fffff) | 0x3ff00000;
+ two52.i[LOW_HALF] = (m >> 20);
+ }
+ else
+ {
+ u.i[HIGH_HALF] = (m & 0x000fffff) | 0x3fe00000;
+ two52.i[LOW_HALF] = (m >> 20) + 1;
+ }
+
+ v.x = u.x + bigu.x;
+ uu = v.x - bigu.x;
+ i = (v.i[LOW_HALF] & 0x000003ff) << 2;
+ if (two52.i[LOW_HALF] == 1023) /* nx = 0 */
+ {
+ if (i > 1192 && i < 1208) /* |x-1| < 1.5*2**-10 */
+ {
+ t = x - 1.0;
+ t1 = (t + 5.0e6) - 5.0e6;
+ t2 = t - t1;
+ e1 = t - 0.5 * t1 * t1;
+ e2 = (t * t * t * (r3 + t * (r4 + t * (r5 + t * (r6 + t
+ * (r7 + t * r8)))))
+ - 0.5 * t2 * (t + t1));
+ res = e1 + e2;
+ *error = 1.0e-21 * fabs (t);
+ *delta = (e1 - res) + e2;
+ return res;
+ } /* |x-1| < 1.5*2**-10 */
+ else
+ {
+ v.x = u.x * (ui.x[i] + ui.x[i + 1]) + bigv.x;
+ vv = v.x - bigv.x;
+ j = v.i[LOW_HALF] & 0x0007ffff;
+ j = j + j + j;
+ eps = u.x - uu * vv;
+ e1 = eps * ui.x[i];
+ e2 = eps * (ui.x[i + 1] + vj.x[j] * (ui.x[i] + ui.x[i + 1]));
+ e = e1 + e2;
+ e2 = ((e1 - e) + e2);
+ t = ui.x[i + 2] + vj.x[j + 1];
+ t1 = t + e;
+ t2 = ((((t - t1) + e) + (ui.x[i + 3] + vj.x[j + 2])) + e2 + e * e
+ * (p2 + e * (p3 + e * p4)));
+ res = t1 + t2;
+ *error = 1.0e-24;
+ *delta = (t1 - res) + t2;
+ return res;
+ }
+ } /* nx = 0 */
+ else /* nx != 0 */
+ {
+ eps = u.x - uu;
+ nx = (two52.x - two52e.x) + add;
+ e1 = eps * ui.x[i];
+ e2 = eps * ui.x[i + 1];
+ e = e1 + e2;
+ e2 = (e1 - e) + e2;
+ t = nx * ln2a.x + ui.x[i + 2];
+ t1 = t + e;
+ t2 = ((((t - t1) + e) + nx * ln2b.x + ui.x[i + 3] + e2) + e * e
+ * (q2 + e * (q3 + e * (q4 + e * (q5 + e * q6)))));
+ res = t1 + t2;
+ *error = 1.0e-21;
+ *delta = (t1 - res) + t2;
+ return res;
+ } /* nx != 0 */
+}
+
+/* Slower but more accurate routine of log. The returned result is double +
+ DELTA. The result is bounded by ERROR. */
+static double
+SECTION
+my_log2 (double x, double *delta, double *error)
+{
+ unsigned int i, j;
+ int m;
+ double uu, vv, eps, nx, e, e1, e2, t, t1, t2, res, add = 0;
+ double ou1, ou2, lu1, lu2, ov, lv1, lv2, a, a1, a2;
+ double y, yy, z, zz, j1, j2, j7, j8;
+#ifndef DLA_FMS
+ double j3, j4, j5, j6;
+#endif
+ mynumber u, v;
+#ifdef BIG_ENDI
+ mynumber /**/ two52 = {{0x43300000, 0x00000000}}; /* 2**52 */
+#else
+# ifdef LITTLE_ENDI
+ mynumber /**/ two52 = {{0x00000000, 0x43300000}}; /* 2**52 */
+# endif
+#endif
+
+ u.x = x;
+ m = u.i[HIGH_HALF];
+ *error = 0;
+ *delta = 0;
+ add = 0;
+ if (m < 0x00100000)
+ { /* x < 2^-1022 */
+ x = x * t52.x;
+ add = -52.0;
+ u.x = x;
+ m = u.i[HIGH_HALF];
+ }
+
+ if ((m & 0x000fffff) < 0x0006a09e)
+ {
+ u.i[HIGH_HALF] = (m & 0x000fffff) | 0x3ff00000;
+ two52.i[LOW_HALF] = (m >> 20);
+ }
+ else
+ {
+ u.i[HIGH_HALF] = (m & 0x000fffff) | 0x3fe00000;
+ two52.i[LOW_HALF] = (m >> 20) + 1;
+ }
+
+ v.x = u.x + bigu.x;
+ uu = v.x - bigu.x;
+ i = (v.i[LOW_HALF] & 0x000003ff) << 2;
+ /*------------------------------------- |x-1| < 2**-11------------------------------- */
+ if ((two52.i[LOW_HALF] == 1023) && (i == 1200))
+ {
+ t = x - 1.0;
+ EMULV (t, s3, y, yy, j1, j2, j3, j4, j5);
+ ADD2 (-0.5, 0, y, yy, z, zz, j1, j2);
+ MUL2 (t, 0, z, zz, y, yy, j1, j2, j3, j4, j5, j6, j7, j8);
+ MUL2 (t, 0, y, yy, z, zz, j1, j2, j3, j4, j5, j6, j7, j8);
+
+ e1 = t + z;
+ e2 = ((((t - e1) + z) + zz) + t * t * t
+ * (ss3 + t * (s4 + t * (s5 + t * (s6 + t * (s7 + t * s8))))));
+ res = e1 + e2;
+ *error = 1.0e-25 * fabs (t);
+ *delta = (e1 - res) + e2;
+ return res;
+ }
+ /*----------------------------- |x-1| > 2**-11 -------------------------- */
+ else
+ { /*Computing log(x) according to log table */
+ nx = (two52.x - two52e.x) + add;
+ ou1 = ui.x[i];
+ ou2 = ui.x[i + 1];
+ lu1 = ui.x[i + 2];
+ lu2 = ui.x[i + 3];
+ v.x = u.x * (ou1 + ou2) + bigv.x;
+ vv = v.x - bigv.x;
+ j = v.i[LOW_HALF] & 0x0007ffff;
+ j = j + j + j;
+ eps = u.x - uu * vv;
+ ov = vj.x[j];
+ lv1 = vj.x[j + 1];
+ lv2 = vj.x[j + 2];
+ a = (ou1 + ou2) * (1.0 + ov);
+ a1 = (a + 1.0e10) - 1.0e10;
+ a2 = a * (1.0 - a1 * uu * vv);
+ e1 = eps * a1;
+ e2 = eps * a2;
+ e = e1 + e2;
+ e2 = (e1 - e) + e2;
+ t = nx * ln2a.x + lu1 + lv1;
+ t1 = t + e;
+ t2 = ((((t - t1) + e) + (lu2 + lv2 + nx * ln2b.x + e2)) + e * e
+ * (p2 + e * (p3 + e * p4)));
+ res = t1 + t2;
+ *error = 1.0e-27;
+ *delta = (t1 - res) + t2;
+ return res;
+ }
+}
+
+/* This function receives a double x and checks if it is an integer. If not,
+ it returns 0, else it returns 1 if even or -1 if odd. */
+static int
+SECTION
+checkint (double x)
+{
+ union
+ {
+ int4 i[2];
+ double x;
+ } u;
+ int k, m, n;
+ u.x = x;
+ m = u.i[HIGH_HALF] & 0x7fffffff; /* no sign */
+ if (m >= 0x7ff00000)
+ return 0; /* x is +/-inf or NaN */
+ if (m >= 0x43400000)
+ return 1; /* |x| >= 2**53 */
+ if (m < 0x40000000)
+ return 0; /* |x| < 2, can not be 0 or 1 */
+ n = u.i[LOW_HALF];
+ k = (m >> 20) - 1023; /* 1 <= k <= 52 */
+ if (k == 52)
+ return (n & 1) ? -1 : 1; /* odd or even */
+ if (k > 20)
+ {
+ if (n << (k - 20) != 0)
+ return 0; /* if not integer */
+ return (n << (k - 21) != 0) ? -1 : 1;
+ }
+ if (n)
+ return 0; /*if not integer */
+ if (k == 20)
+ return (m & 1) ? -1 : 1;
+ if (m << (k + 12) != 0)
+ return 0;
+ return (m << (k + 11) != 0) ? -1 : 1;
+}
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/e_rem_pio2.c b/REORG.TODO/sysdeps/ieee754/dbl-64/e_rem_pio2.c
new file mode 100644
index 0000000000..2f55ca294b
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/e_rem_pio2.c
@@ -0,0 +1,193 @@
+#ifdef NOT_NEEDED_ANYMORE
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+/* __ieee754_rem_pio2(x,y)
+ *
+ * return the remainder of x rem pi/2 in y[0]+y[1]
+ * use __kernel_rem_pio2()
+ */
+
+#include <math.h>
+#include <math_private.h>
+
+/*
+ * Table of constants for 2/pi, 396 Hex digits (476 decimal) of 2/pi
+ */
+static const int32_t two_over_pi[] = {
+0xA2F983, 0x6E4E44, 0x1529FC, 0x2757D1, 0xF534DD, 0xC0DB62,
+0x95993C, 0x439041, 0xFE5163, 0xABDEBB, 0xC561B7, 0x246E3A,
+0x424DD2, 0xE00649, 0x2EEA09, 0xD1921C, 0xFE1DEB, 0x1CB129,
+0xA73EE8, 0x8235F5, 0x2EBB44, 0x84E99C, 0x7026B4, 0x5F7E41,
+0x3991D6, 0x398353, 0x39F49C, 0x845F8B, 0xBDF928, 0x3B1FF8,
+0x97FFDE, 0x05980F, 0xEF2F11, 0x8B5A0A, 0x6D1F6D, 0x367ECF,
+0x27CB09, 0xB74F46, 0x3F669E, 0x5FEA2D, 0x7527BA, 0xC7EBE5,
+0xF17B3D, 0x0739F7, 0x8A5292, 0xEA6BFB, 0x5FB11F, 0x8D5D08,
+0x560330, 0x46FC7B, 0x6BABF0, 0xCFBC20, 0x9AF436, 0x1DA9E3,
+0x91615E, 0xE61B08, 0x659985, 0x5F14A0, 0x68408D, 0xFFD880,
+0x4D7327, 0x310606, 0x1556CA, 0x73A8C9, 0x60E27B, 0xC08C6B,
+};
+
+static const int32_t npio2_hw[] = {
+0x3FF921FB, 0x400921FB, 0x4012D97C, 0x401921FB, 0x401F6A7A, 0x4022D97C,
+0x4025FDBB, 0x402921FB, 0x402C463A, 0x402F6A7A, 0x4031475C, 0x4032D97C,
+0x40346B9C, 0x4035FDBB, 0x40378FDB, 0x403921FB, 0x403AB41B, 0x403C463A,
+0x403DD85A, 0x403F6A7A, 0x40407E4C, 0x4041475C, 0x4042106C, 0x4042D97C,
+0x4043A28C, 0x40446B9C, 0x404534AC, 0x4045FDBB, 0x4046C6CB, 0x40478FDB,
+0x404858EB, 0x404921FB,
+};
+
+/*
+ * invpio2: 53 bits of 2/pi
+ * pio2_1: first 33 bit of pi/2
+ * pio2_1t: pi/2 - pio2_1
+ * pio2_2: second 33 bit of pi/2
+ * pio2_2t: pi/2 - (pio2_1+pio2_2)
+ * pio2_3: third 33 bit of pi/2
+ * pio2_3t: pi/2 - (pio2_1+pio2_2+pio2_3)
+ */
+
+static const double
+ zero = 0.00000000000000000000e+00, /* 0x00000000, 0x00000000 */
+ half = 5.00000000000000000000e-01, /* 0x3FE00000, 0x00000000 */
+ two24 = 1.67772160000000000000e+07, /* 0x41700000, 0x00000000 */
+ invpio2 = 6.36619772367581382433e-01, /* 0x3FE45F30, 0x6DC9C883 */
+ pio2_1 = 1.57079632673412561417e+00, /* 0x3FF921FB, 0x54400000 */
+ pio2_1t = 6.07710050650619224932e-11, /* 0x3DD0B461, 0x1A626331 */
+ pio2_2 = 6.07710050630396597660e-11, /* 0x3DD0B461, 0x1A600000 */
+ pio2_2t = 2.02226624879595063154e-21, /* 0x3BA3198A, 0x2E037073 */
+ pio2_3 = 2.02226624871116645580e-21, /* 0x3BA3198A, 0x2E000000 */
+ pio2_3t = 8.47842766036889956997e-32; /* 0x397B839A, 0x252049C1 */
+
+int32_t
+__ieee754_rem_pio2 (double x, double *y)
+{
+ double z, w, t, r, fn;
+ double tx[3];
+ int32_t e0, i, j, nx, n, ix, hx;
+ u_int32_t low;
+
+ GET_HIGH_WORD (hx, x); /* high word of x */
+ ix = hx & 0x7fffffff;
+ if (ix <= 0x3fe921fb) /* |x| ~<= pi/4 , no need for reduction */
+ {
+ y[0] = x; y[1] = 0; return 0;
+ }
+ if (ix < 0x4002d97c) /* |x| < 3pi/4, special case with n=+-1 */
+ {
+ if (hx > 0)
+ {
+ z = x - pio2_1;
+ if (ix != 0x3ff921fb) /* 33+53 bit pi is good enough */
+ {
+ y[0] = z - pio2_1t;
+ y[1] = (z - y[0]) - pio2_1t;
+ }
+ else /* near pi/2, use 33+33+53 bit pi */
+ {
+ z -= pio2_2;
+ y[0] = z - pio2_2t;
+ y[1] = (z - y[0]) - pio2_2t;
+ }
+ return 1;
+ }
+ else /* negative x */
+ {
+ z = x + pio2_1;
+ if (ix != 0x3ff921fb) /* 33+53 bit pi is good enough */
+ {
+ y[0] = z + pio2_1t;
+ y[1] = (z - y[0]) + pio2_1t;
+ }
+ else /* near pi/2, use 33+33+53 bit pi */
+ {
+ z += pio2_2;
+ y[0] = z + pio2_2t;
+ y[1] = (z - y[0]) + pio2_2t;
+ }
+ return -1;
+ }
+ }
+ if (ix <= 0x413921fb) /* |x| ~<= 2^19*(pi/2), medium size */
+ {
+ t = fabs (x);
+ n = (int32_t) (t * invpio2 + half);
+ fn = (double) n;
+ r = t - fn * pio2_1;
+ w = fn * pio2_1t; /* 1st round good to 85 bit */
+ if (n < 32 && ix != npio2_hw[n - 1])
+ {
+ y[0] = r - w; /* quick check no cancellation */
+ }
+ else
+ {
+ u_int32_t high;
+ j = ix >> 20;
+ y[0] = r - w;
+ GET_HIGH_WORD (high, y[0]);
+ i = j - ((high >> 20) & 0x7ff);
+ if (i > 16) /* 2nd iteration needed, good to 118 */
+ {
+ t = r;
+ w = fn * pio2_2;
+ r = t - w;
+ w = fn * pio2_2t - ((t - r) - w);
+ y[0] = r - w;
+ GET_HIGH_WORD (high, y[0]);
+ i = j - ((high >> 20) & 0x7ff);
+ if (i > 49) /* 3rd iteration need, 151 bits acc */
+ {
+ t = r; /* will cover all possible cases */
+ w = fn * pio2_3;
+ r = t - w;
+ w = fn * pio2_3t - ((t - r) - w);
+ y[0] = r - w;
+ }
+ }
+ }
+ y[1] = (r - y[0]) - w;
+ if (hx < 0)
+ {
+ y[0] = -y[0]; y[1] = -y[1]; return -n;
+ }
+ else
+ return n;
+ }
+ /*
+ * all other (large) arguments
+ */
+ if (ix >= 0x7ff00000) /* x is inf or NaN */
+ {
+ y[0] = y[1] = x - x; return 0;
+ }
+ /* set z = scalbn(|x|,ilogb(x)-23) */
+ GET_LOW_WORD (low, x);
+ SET_LOW_WORD (z, low);
+ e0 = (ix >> 20) - 1046; /* e0 = ilogb(z)-23; */
+ SET_HIGH_WORD (z, ix - ((int32_t) (e0 << 20)));
+ for (i = 0; i < 2; i++)
+ {
+ tx[i] = (double) ((int32_t) (z));
+ z = (z - tx[i]) * two24;
+ }
+ tx[2] = z;
+ nx = 3;
+ while (tx[nx - 1] == zero)
+ nx--; /* skip zero term */
+ n = __kernel_rem_pio2 (tx, y, e0, nx, 2, two_over_pi);
+ if (hx < 0)
+ {
+ y[0] = -y[0]; y[1] = -y[1]; return -n;
+ }
+ return n;
+}
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/e_remainder.c b/REORG.TODO/sysdeps/ieee754/dbl-64/e_remainder.c
new file mode 100644
index 0000000000..1a2eeed2e1
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/e_remainder.c
@@ -0,0 +1,152 @@
+/*
+ * IBM Accurate Mathematical Library
+ * written by International Business Machines Corp.
+ * Copyright (C) 2001-2017 Free Software Foundation, Inc.
+ *
+ * This program 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 2.1 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 program; if not, see <http://www.gnu.org/licenses/>.
+ */
+/**************************************************************************/
+/* MODULE_NAME urem.c */
+/* */
+/* FUNCTION: uremainder */
+/* */
+/* An ultimate remainder routine. Given two IEEE double machine numbers x */
+/* ,y it computes the correctly rounded (to nearest) value of remainder */
+/* of dividing x by y. */
+/* Assumption: Machine arithmetic operations are performed in */
+/* round to nearest mode of IEEE 754 standard. */
+/* */
+/* ************************************************************************/
+
+#include "endian.h"
+#include "mydefs.h"
+#include "urem.h"
+#include "MathLib.h"
+#include <math.h>
+#include <math_private.h>
+
+/**************************************************************************/
+/* An ultimate remainder routine. Given two IEEE double machine numbers x */
+/* ,y it computes the correctly rounded (to nearest) value of remainder */
+/**************************************************************************/
+double
+__ieee754_remainder (double x, double y)
+{
+ double z, d, xx;
+ int4 kx, ky, n, nn, n1, m1, l;
+ mynumber u, t, w = { { 0, 0 } }, v = { { 0, 0 } }, ww = { { 0, 0 } }, r;
+ u.x = x;
+ t.x = y;
+ kx = u.i[HIGH_HALF] & 0x7fffffff; /* no sign for x*/
+ t.i[HIGH_HALF] &= 0x7fffffff; /*no sign for y */
+ ky = t.i[HIGH_HALF];
+ /*------ |x| < 2^1023 and 2^-970 < |y| < 2^1024 ------------------*/
+ if (kx < 0x7fe00000 && ky < 0x7ff00000 && ky >= 0x03500000)
+ {
+ SET_RESTORE_ROUND_NOEX (FE_TONEAREST);
+ if (kx + 0x00100000 < ky)
+ return x;
+ if ((kx - 0x01500000) < ky)
+ {
+ z = x / t.x;
+ v.i[HIGH_HALF] = t.i[HIGH_HALF];
+ d = (z + big.x) - big.x;
+ xx = (x - d * v.x) - d * (t.x - v.x);
+ if (d - z != 0.5 && d - z != -0.5)
+ return (xx != 0) ? xx : ((x > 0) ? ZERO.x : nZERO.x);
+ else
+ {
+ if (fabs (xx) > 0.5 * t.x)
+ return (z > d) ? xx - t.x : xx + t.x;
+ else
+ return xx;
+ }
+ } /* (kx<(ky+0x01500000)) */
+ else
+ {
+ r.x = 1.0 / t.x;
+ n = t.i[HIGH_HALF];
+ nn = (n & 0x7ff00000) + 0x01400000;
+ w.i[HIGH_HALF] = n;
+ ww.x = t.x - w.x;
+ l = (kx - nn) & 0xfff00000;
+ n1 = ww.i[HIGH_HALF];
+ m1 = r.i[HIGH_HALF];
+ while (l > 0)
+ {
+ r.i[HIGH_HALF] = m1 - l;
+ z = u.x * r.x;
+ w.i[HIGH_HALF] = n + l;
+ ww.i[HIGH_HALF] = (n1) ? n1 + l : n1;
+ d = (z + big.x) - big.x;
+ u.x = (u.x - d * w.x) - d * ww.x;
+ l = (u.i[HIGH_HALF] & 0x7ff00000) - nn;
+ }
+ r.i[HIGH_HALF] = m1;
+ w.i[HIGH_HALF] = n;
+ ww.i[HIGH_HALF] = n1;
+ z = u.x * r.x;
+ d = (z + big.x) - big.x;
+ u.x = (u.x - d * w.x) - d * ww.x;
+ if (fabs (u.x) < 0.5 * t.x)
+ return (u.x != 0) ? u.x : ((x > 0) ? ZERO.x : nZERO.x);
+ else
+ if (fabs (u.x) > 0.5 * t.x)
+ return (d > z) ? u.x + t.x : u.x - t.x;
+ else
+ {
+ z = u.x / t.x; d = (z + big.x) - big.x;
+ return ((u.x - d * w.x) - d * ww.x);
+ }
+ }
+ } /* (kx<0x7fe00000&&ky<0x7ff00000&&ky>=0x03500000) */
+ else
+ {
+ if (kx < 0x7fe00000 && ky < 0x7ff00000 && (ky > 0 || t.i[LOW_HALF] != 0))
+ {
+ y = fabs (y) * t128.x;
+ z = __ieee754_remainder (x, y) * t128.x;
+ z = __ieee754_remainder (z, y) * tm128.x;
+ return z;
+ }
+ else
+ {
+ if ((kx & 0x7ff00000) == 0x7fe00000 && ky < 0x7ff00000 &&
+ (ky > 0 || t.i[LOW_HALF] != 0))
+ {
+ y = fabs (y);
+ z = 2.0 * __ieee754_remainder (0.5 * x, y);
+ d = fabs (z);
+ if (d <= fabs (d - y))
+ return z;
+ else if (d == y)
+ return 0.0 * x;
+ else
+ return (z > 0) ? z - y : z + y;
+ }
+ else /* if x is too big */
+ {
+ if (ky == 0 && t.i[LOW_HALF] == 0) /* y = 0 */
+ return (x * y) / (x * y);
+ else if (kx >= 0x7ff00000 /* x not finite */
+ || (ky > 0x7ff00000 /* y is NaN */
+ || (ky == 0x7ff00000 && t.i[LOW_HALF] != 0)))
+ return (x * y) / (x * y);
+ else
+ return x;
+ }
+ }
+ }
+}
+strong_alias (__ieee754_remainder, __remainder_finite)
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/e_sinh.c b/REORG.TODO/sysdeps/ieee754/dbl-64/e_sinh.c
new file mode 100644
index 0000000000..8479bdd9b8
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/e_sinh.c
@@ -0,0 +1,90 @@
+/* @(#)e_sinh.c 5.1 93/09/24 */
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: e_sinh.c,v 1.7 1995/05/10 20:46:13 jtc Exp $";
+#endif
+
+/* __ieee754_sinh(x)
+ * Method :
+ * mathematically sinh(x) if defined to be (exp(x)-exp(-x))/2
+ * 1. Replace x by |x| (sinh(-x) = -sinh(x)).
+ * 2.
+ * E + E/(E+1)
+ * 0 <= x <= 22 : sinh(x) := --------------, E=expm1(x)
+ * 2
+ *
+ * 22 <= x <= lnovft : sinh(x) := exp(x)/2
+ * lnovft <= x <= ln2ovft: sinh(x) := exp(x/2)/2 * exp(x/2)
+ * ln2ovft < x : sinh(x) := x*shuge (overflow)
+ *
+ * Special cases:
+ * sinh(x) is |x| if x is +INF, -INF, or NaN.
+ * only sinh(0)=0 is exact for finite x.
+ */
+
+#include <float.h>
+#include <math.h>
+#include <math_private.h>
+
+static const double one = 1.0, shuge = 1.0e307;
+
+double
+__ieee754_sinh (double x)
+{
+ double t, w, h;
+ int32_t ix, jx;
+ u_int32_t lx;
+
+ /* High word of |x|. */
+ GET_HIGH_WORD (jx, x);
+ ix = jx & 0x7fffffff;
+
+ /* x is INF or NaN */
+ if (__glibc_unlikely (ix >= 0x7ff00000))
+ return x + x;
+
+ h = 0.5;
+ if (jx < 0)
+ h = -h;
+ /* |x| in [0,22], return sign(x)*0.5*(E+E/(E+1))) */
+ if (ix < 0x40360000) /* |x|<22 */
+ {
+ if (__glibc_unlikely (ix < 0x3e300000)) { /* |x|<2**-28 */
+ math_check_force_underflow (x);
+ if (shuge + x > one)
+ return x;
+ /* sinh(tiny) = tiny with inexact */
+ }
+ t = __expm1 (fabs (x));
+ if (ix < 0x3ff00000)
+ return h * (2.0 * t - t * t / (t + one));
+ return h * (t + t / (t + one));
+ }
+
+ /* |x| in [22, log(maxdouble)] return 0.5*exp(|x|) */
+ if (ix < 0x40862e42)
+ return h * __ieee754_exp (fabs (x));
+
+ /* |x| in [log(maxdouble), overflowthresold] */
+ GET_LOW_WORD (lx, x);
+ if (ix < 0x408633ce || ((ix == 0x408633ce) && (lx <= (u_int32_t) 0x8fb9f87d)))
+ {
+ w = __ieee754_exp (0.5 * fabs (x));
+ t = h * w;
+ return t * w;
+ }
+
+ /* |x| > overflowthresold, sinh(x) overflow */
+ return math_narrow_eval (x * shuge);
+}
+strong_alias (__ieee754_sinh, __sinh_finite)
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/e_sqrt.c b/REORG.TODO/sysdeps/ieee754/dbl-64/e_sqrt.c
new file mode 100644
index 0000000000..017d30416c
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/e_sqrt.c
@@ -0,0 +1,139 @@
+/*
+ * IBM Accurate Mathematical Library
+ * written by International Business Machines Corp.
+ * Copyright (C) 2001-2017 Free Software Foundation, Inc.
+ *
+ * This program 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 2.1 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 program; if not, see <http://www.gnu.org/licenses/>.
+ */
+/*********************************************************************/
+/* MODULE_NAME: uroot.c */
+/* */
+/* FUNCTION: usqrt */
+/* */
+/* FILES NEEDED: dla.h endian.h mydefs.h */
+/* uroot.tbl */
+/* */
+/* An ultimate sqrt routine. Given an IEEE double machine number x */
+/* it computes the correctly rounded (to nearest) value of square */
+/* root of x. */
+/* Assumption: Machine arithmetic operations are performed in */
+/* round to nearest mode of IEEE 754 standard. */
+/* */
+/*********************************************************************/
+
+#include "endian.h"
+#include "mydefs.h"
+#include <dla.h>
+#include "MathLib.h"
+#include "root.tbl"
+#include <math_private.h>
+
+/*********************************************************************/
+/* An ultimate sqrt routine. Given an IEEE double machine number x */
+/* it computes the correctly rounded (to nearest) value of square */
+/* root of x. */
+/*********************************************************************/
+double
+__ieee754_sqrt (double x)
+{
+ static const double
+ rt0 = 9.99999999859990725855365213134618E-01,
+ rt1 = 4.99999999495955425917856814202739E-01,
+ rt2 = 3.75017500867345182581453026130850E-01,
+ rt3 = 3.12523626554518656309172508769531E-01;
+ static const double big = 134217728.0;
+ double y, t, del, res, res1, hy, z, zz, p, hx, tx, ty, s;
+ mynumber a, c = { { 0, 0 } };
+ int4 k;
+
+ a.x = x;
+ k = a.i[HIGH_HALF];
+ a.i[HIGH_HALF] = (k & 0x001fffff) | 0x3fe00000;
+ t = inroot[(k & 0x001fffff) >> 14];
+ s = a.x;
+ /*----------------- 2^-1022 <= | x |< 2^1024 -----------------*/
+ if (k > 0x000fffff && k < 0x7ff00000)
+ {
+ int rm = __fegetround ();
+ fenv_t env;
+ libc_feholdexcept_setround (&env, FE_TONEAREST);
+ double ret;
+ y = 1.0 - t * (t * s);
+ t = t * (rt0 + y * (rt1 + y * (rt2 + y * rt3)));
+ c.i[HIGH_HALF] = 0x20000000 + ((k & 0x7fe00000) >> 1);
+ y = t * s;
+ hy = (y + big) - big;
+ del = 0.5 * t * ((s - hy * hy) - (y - hy) * (y + hy));
+ res = y + del;
+ if (res == (res + 1.002 * ((y - res) + del)))
+ ret = res * c.x;
+ else
+ {
+ res1 = res + 1.5 * ((y - res) + del);
+ EMULV (res, res1, z, zz, p, hx, tx, hy, ty); /* (z+zz)=res*res1 */
+ res = ((((z - s) + zz) < 0) ? max (res, res1) :
+ min (res, res1));
+ ret = res * c.x;
+ }
+ math_force_eval (ret);
+ libc_fesetenv (&env);
+ double dret = x / ret;
+ if (dret != ret)
+ {
+ double force_inexact = 1.0 / 3.0;
+ math_force_eval (force_inexact);
+ /* The square root is inexact, ret is the round-to-nearest
+ value which may need adjusting for other rounding
+ modes. */
+ switch (rm)
+ {
+#ifdef FE_UPWARD
+ case FE_UPWARD:
+ if (dret > ret)
+ ret = (res + 0x1p-1022) * c.x;
+ break;
+#endif
+
+#ifdef FE_DOWNWARD
+ case FE_DOWNWARD:
+#endif
+#ifdef FE_TOWARDZERO
+ case FE_TOWARDZERO:
+#endif
+#if defined FE_DOWNWARD || defined FE_TOWARDZERO
+ if (dret < ret)
+ ret = (res - 0x1p-1022) * c.x;
+ break;
+#endif
+
+ default:
+ break;
+ }
+ }
+ /* Otherwise (x / ret == ret), either the square root was exact or
+ the division was inexact. */
+ return ret;
+ }
+ else
+ {
+ if ((k & 0x7ff00000) == 0x7ff00000)
+ return x * x + x; /* sqrt(NaN)=NaN, sqrt(+inf)=+inf, sqrt(-inf)=sNaN */
+ if (x == 0)
+ return x; /* sqrt(+0)=+0, sqrt(-0)=-0 */
+ if (k < 0)
+ return (x - x) / (x - x); /* sqrt(-ve)=sNaN */
+ return 0x1p-256 * __ieee754_sqrt (x * 0x1p512);
+ }
+}
+strong_alias (__ieee754_sqrt, __sqrt_finite)
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/gamma_product.c b/REORG.TODO/sysdeps/ieee754/dbl-64/gamma_product.c
new file mode 100644
index 0000000000..d946b3c845
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/gamma_product.c
@@ -0,0 +1,45 @@
+/* Compute a product of X, X+1, ..., with an error estimate.
+ Copyright (C) 2013-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+#include <math_private.h>
+#include <mul_split.h>
+
+/* Compute the product of X + X_EPS, X + X_EPS + 1, ..., X + X_EPS + N
+ - 1, in the form R * (1 + *EPS) where the return value R is an
+ approximation to the product and *EPS is set to indicate the
+ approximate error in the return value. X is such that all the
+ values X + 1, ..., X + N - 1 are exactly representable, and X_EPS /
+ X is small enough that factors quadratic in it can be
+ neglected. */
+
+double
+__gamma_product (double x, double x_eps, int n, double *eps)
+{
+ SET_RESTORE_ROUND (FE_TONEAREST);
+ double ret = x;
+ *eps = x_eps / x;
+ for (int i = 1; i < n; i++)
+ {
+ *eps += x_eps / (x + i);
+ double lo;
+ mul_split (&ret, &lo, ret, x + i);
+ *eps += lo / ret;
+ }
+ return ret;
+}
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/gamma_productf.c b/REORG.TODO/sysdeps/ieee754/dbl-64/gamma_productf.c
new file mode 100644
index 0000000000..49c15b14b4
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/gamma_productf.c
@@ -0,0 +1,43 @@
+/* Compute a product of X, X+1, ..., with an error estimate.
+ Copyright (C) 2013-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+#include <math_private.h>
+#include <float.h>
+
+/* Compute the product of X + X_EPS, X + X_EPS + 1, ..., X + X_EPS + N
+ - 1, in the form R * (1 + *EPS) where the return value R is an
+ approximation to the product and *EPS is set to indicate the
+ approximate error in the return value. X is such that all the
+ values X + 1, ..., X + N - 1 are exactly representable, and X_EPS /
+ X is small enough that factors quadratic in it can be
+ neglected. */
+
+float
+__gamma_productf (float x, float x_eps, int n, float *eps)
+{
+ double x_full = (double) x + (double) x_eps;
+ double ret = x_full;
+ for (int i = 1; i < n; i++)
+ ret *= x_full + i;
+
+ float fret = math_narrow_eval ((float) ret);
+ *eps = (ret - fret) / fret;
+
+ return fret;
+}
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/halfulp.c b/REORG.TODO/sysdeps/ieee754/dbl-64/halfulp.c
new file mode 100644
index 0000000000..d5f8a010e2
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/halfulp.c
@@ -0,0 +1,152 @@
+/*
+ * IBM Accurate Mathematical Library
+ * written by International Business Machines Corp.
+ * Copyright (C) 2001-2017 Free Software Foundation, Inc.
+ *
+ * This program 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 2.1 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 program; if not, see <http://www.gnu.org/licenses/>.
+ */
+/************************************************************************/
+/* */
+/* MODULE_NAME:halfulp.c */
+/* */
+/* FUNCTIONS:halfulp */
+/* FILES NEEDED: mydefs.h dla.h endian.h */
+/* uroot.c */
+/* */
+/*Routine halfulp(double x, double y) computes x^y where result does */
+/*not need rounding. If the result is closer to 0 than can be */
+/*represented it returns 0. */
+/* In the following cases the function does not compute anything */
+/*and returns a negative number: */
+/*1. if the result needs rounding, */
+/*2. if y is outside the interval [0, 2^20-1], */
+/*3. if x can be represented by x=2**n for some integer n. */
+/************************************************************************/
+
+#include "endian.h"
+#include "mydefs.h"
+#include <dla.h>
+#include <math_private.h>
+
+#ifndef SECTION
+# define SECTION
+#endif
+
+static const int4 tab54[32] = {
+ 262143, 11585, 1782, 511, 210, 107, 63, 42,
+ 30, 22, 17, 14, 12, 10, 9, 7,
+ 7, 6, 5, 5, 5, 4, 4, 4,
+ 3, 3, 3, 3, 3, 3, 3, 3
+};
+
+
+double
+SECTION
+__halfulp (double x, double y)
+{
+ mynumber v;
+ double z, u, uu;
+#ifndef DLA_FMS
+ double j1, j2, j3, j4, j5;
+#endif
+ int4 k, l, m, n;
+ if (y <= 0) /*if power is negative or zero */
+ {
+ v.x = y;
+ if (v.i[LOW_HALF] != 0)
+ return -10.0;
+ v.x = x;
+ if (v.i[LOW_HALF] != 0)
+ return -10.0;
+ if ((v.i[HIGH_HALF] & 0x000fffff) != 0)
+ return -10; /* if x =2 ^ n */
+ k = ((v.i[HIGH_HALF] & 0x7fffffff) >> 20) - 1023; /* find this n */
+ z = (double) k;
+ return (z * y == -1075.0) ? 0 : -10.0;
+ }
+ /* if y > 0 */
+ v.x = y;
+ if (v.i[LOW_HALF] != 0)
+ return -10.0;
+
+ v.x = x;
+ /* case where x = 2**n for some integer n */
+ if (((v.i[HIGH_HALF] & 0x000fffff) | v.i[LOW_HALF]) == 0)
+ {
+ k = (v.i[HIGH_HALF] >> 20) - 1023;
+ return (((double) k) * y == -1075.0) ? 0 : -10.0;
+ }
+
+ v.x = y;
+ k = v.i[HIGH_HALF];
+ m = k << 12;
+ l = 0;
+ while (m)
+ {
+ m = m << 1; l++;
+ }
+ n = (k & 0x000fffff) | 0x00100000;
+ n = n >> (20 - l); /* n is the odd integer of y */
+ k = ((k >> 20) - 1023) - l; /* y = n*2**k */
+ if (k > 5)
+ return -10.0;
+ if (k > 0)
+ for (; k > 0; k--)
+ n *= 2;
+ if (n > 34)
+ return -10.0;
+ k = -k;
+ if (k > 5)
+ return -10.0;
+
+ /* now treat x */
+ while (k > 0)
+ {
+ z = __ieee754_sqrt (x);
+ EMULV (z, z, u, uu, j1, j2, j3, j4, j5);
+ if (((u - x) + uu) != 0)
+ break;
+ x = z;
+ k--;
+ }
+ if (k)
+ return -10.0;
+
+ /* it is impossible that n == 2, so the mantissa of x must be short */
+
+ v.x = x;
+ if (v.i[LOW_HALF])
+ return -10.0;
+ k = v.i[HIGH_HALF];
+ m = k << 12;
+ l = 0;
+ while (m)
+ {
+ m = m << 1; l++;
+ }
+ m = (k & 0x000fffff) | 0x00100000;
+ m = m >> (20 - l); /* m is the odd integer of x */
+
+ /* now check whether the length of m**n is at most 54 bits */
+
+ if (m > tab54[n - 3])
+ return -10.0;
+
+ /* yes, it is - now compute x**n by simple multiplications */
+
+ u = x;
+ for (k = 1; k < n; k++)
+ u = u * x;
+ return u;
+}
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/k_cos.c b/REORG.TODO/sysdeps/ieee754/dbl-64/k_cos.c
new file mode 100644
index 0000000000..cc5c205a5f
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/k_cos.c
@@ -0,0 +1 @@
+/* Not needed anymore. */
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/k_rem_pio2.c b/REORG.TODO/sysdeps/ieee754/dbl-64/k_rem_pio2.c
new file mode 100644
index 0000000000..2b5add6976
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/k_rem_pio2.c
@@ -0,0 +1,362 @@
+/* @(#)k_rem_pio2.c 5.1 93/09/24 */
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: k_rem_pio2.c,v 1.7 1995/05/10 20:46:25 jtc Exp $";
+#endif
+
+/*
+ * __kernel_rem_pio2(x,y,e0,nx,prec,ipio2)
+ * double x[],y[]; int e0,nx,prec; int ipio2[];
+ *
+ * __kernel_rem_pio2 return the last three digits of N with
+ * y = x - N*pi/2
+ * so that |y| < pi/2.
+ *
+ * The method is to compute the integer (mod 8) and fraction parts of
+ * (2/pi)*x without doing the full multiplication. In general we
+ * skip the part of the product that are known to be a huge integer (
+ * more accurately, = 0 mod 8 ). Thus the number of operations are
+ * independent of the exponent of the input.
+ *
+ * (2/pi) is represented by an array of 24-bit integers in ipio2[].
+ *
+ * Input parameters:
+ * x[] The input value (must be positive) is broken into nx
+ * pieces of 24-bit integers in double precision format.
+ * x[i] will be the i-th 24 bit of x. The scaled exponent
+ * of x[0] is given in input parameter e0 (i.e., x[0]*2^e0
+ * match x's up to 24 bits.
+ *
+ * Example of breaking a double positive z into x[0]+x[1]+x[2]:
+ * e0 = ilogb(z)-23
+ * z = scalbn(z,-e0)
+ * for i = 0,1,2
+ * x[i] = floor(z)
+ * z = (z-x[i])*2**24
+ *
+ *
+ * y[] ouput result in an array of double precision numbers.
+ * The dimension of y[] is:
+ * 24-bit precision 1
+ * 53-bit precision 2
+ * 64-bit precision 2
+ * 113-bit precision 3
+ * The actual value is the sum of them. Thus for 113-bit
+ * precision, one may have to do something like:
+ *
+ * long double t,w,r_head, r_tail;
+ * t = (long double)y[2] + (long double)y[1];
+ * w = (long double)y[0];
+ * r_head = t+w;
+ * r_tail = w - (r_head - t);
+ *
+ * e0 The exponent of x[0]
+ *
+ * nx dimension of x[]
+ *
+ * prec an integer indicating the precision:
+ * 0 24 bits (single)
+ * 1 53 bits (double)
+ * 2 64 bits (extended)
+ * 3 113 bits (quad)
+ *
+ * ipio2[]
+ * integer array, contains the (24*i)-th to (24*i+23)-th
+ * bit of 2/pi after binary point. The corresponding
+ * floating value is
+ *
+ * ipio2[i] * 2^(-24(i+1)).
+ *
+ * External function:
+ * double scalbn(), floor();
+ *
+ *
+ * Here is the description of some local variables:
+ *
+ * jk jk+1 is the initial number of terms of ipio2[] needed
+ * in the computation. The recommended value is 2,3,4,
+ * 6 for single, double, extended,and quad.
+ *
+ * jz local integer variable indicating the number of
+ * terms of ipio2[] used.
+ *
+ * jx nx - 1
+ *
+ * jv index for pointing to the suitable ipio2[] for the
+ * computation. In general, we want
+ * ( 2^e0*x[0] * ipio2[jv-1]*2^(-24jv) )/8
+ * is an integer. Thus
+ * e0-3-24*jv >= 0 or (e0-3)/24 >= jv
+ * Hence jv = max(0,(e0-3)/24).
+ *
+ * jp jp+1 is the number of terms in PIo2[] needed, jp = jk.
+ *
+ * q[] double array with integral value, representing the
+ * 24-bits chunk of the product of x and 2/pi.
+ *
+ * q0 the corresponding exponent of q[0]. Note that the
+ * exponent for q[i] would be q0-24*i.
+ *
+ * PIo2[] double precision array, obtained by cutting pi/2
+ * into 24 bits chunks.
+ *
+ * f[] ipio2[] in floating point
+ *
+ * iq[] integer array by breaking up q[] in 24-bits chunk.
+ *
+ * fq[] final product of x*(2/pi) in fq[0],..,fq[jk]
+ *
+ * ih integer. If >0 it indicates q[] is >= 0.5, hence
+ * it also indicates the *sign* of the result.
+ *
+ */
+
+
+/*
+ * Constants:
+ * The hexadecimal values are the intended ones for the following
+ * constants. The decimal values may be used, provided that the
+ * compiler will convert from decimal to binary accurately enough
+ * to produce the hexadecimal values shown.
+ */
+
+#include <math.h>
+#include <math_private.h>
+#include <libc-diag.h>
+
+static const int init_jk[] = {2,3,4,6}; /* initial value for jk */
+
+static const double PIo2[] = {
+ 1.57079625129699707031e+00, /* 0x3FF921FB, 0x40000000 */
+ 7.54978941586159635335e-08, /* 0x3E74442D, 0x00000000 */
+ 5.39030252995776476554e-15, /* 0x3CF84698, 0x80000000 */
+ 3.28200341580791294123e-22, /* 0x3B78CC51, 0x60000000 */
+ 1.27065575308067607349e-29, /* 0x39F01B83, 0x80000000 */
+ 1.22933308981111328932e-36, /* 0x387A2520, 0x40000000 */
+ 2.73370053816464559624e-44, /* 0x36E38222, 0x80000000 */
+ 2.16741683877804819444e-51, /* 0x3569F31D, 0x00000000 */
+};
+
+static const double
+ zero = 0.0,
+ one = 1.0,
+ two24 = 1.67772160000000000000e+07, /* 0x41700000, 0x00000000 */
+ twon24 = 5.96046447753906250000e-08; /* 0x3E700000, 0x00000000 */
+
+int
+__kernel_rem_pio2 (double *x, double *y, int e0, int nx, int prec,
+ const int32_t *ipio2)
+{
+ int32_t jz, jx, jv, jp, jk, carry, n, iq[20], i, j, k, m, q0, ih;
+ double z, fw, f[20], fq[20], q[20];
+
+ /* initialize jk*/
+ jk = init_jk[prec];
+ jp = jk;
+
+ /* determine jx,jv,q0, note that 3>q0 */
+ jx = nx - 1;
+ jv = (e0 - 3) / 24; if (jv < 0)
+ jv = 0;
+ q0 = e0 - 24 * (jv + 1);
+
+ /* set up f[0] to f[jx+jk] where f[jx+jk] = ipio2[jv+jk] */
+ j = jv - jx; m = jx + jk;
+ for (i = 0; i <= m; i++, j++)
+ f[i] = (j < 0) ? zero : (double) ipio2[j];
+
+ /* compute q[0],q[1],...q[jk] */
+ for (i = 0; i <= jk; i++)
+ {
+ for (j = 0, fw = 0.0; j <= jx; j++)
+ fw += x[j] * f[jx + i - j];
+ q[i] = fw;
+ }
+
+ jz = jk;
+recompute:
+ /* distill q[] into iq[] reversingly */
+ for (i = 0, j = jz, z = q[jz]; j > 0; i++, j--)
+ {
+ fw = (double) ((int32_t) (twon24 * z));
+ iq[i] = (int32_t) (z - two24 * fw);
+ z = q[j - 1] + fw;
+ }
+
+ /* compute n */
+ z = __scalbn (z, q0); /* actual value of z */
+ z -= 8.0 * __floor (z * 0.125); /* trim off integer >= 8 */
+ n = (int32_t) z;
+ z -= (double) n;
+ ih = 0;
+ if (q0 > 0) /* need iq[jz-1] to determine n */
+ {
+ i = (iq[jz - 1] >> (24 - q0)); n += i;
+ iq[jz - 1] -= i << (24 - q0);
+ ih = iq[jz - 1] >> (23 - q0);
+ }
+ else if (q0 == 0)
+ ih = iq[jz - 1] >> 23;
+ else if (z >= 0.5)
+ ih = 2;
+
+ if (ih > 0) /* q > 0.5 */
+ {
+ n += 1; carry = 0;
+ for (i = 0; i < jz; i++) /* compute 1-q */
+ {
+ j = iq[i];
+ if (carry == 0)
+ {
+ if (j != 0)
+ {
+ carry = 1; iq[i] = 0x1000000 - j;
+ }
+ }
+ else
+ iq[i] = 0xffffff - j;
+ }
+ if (q0 > 0) /* rare case: chance is 1 in 12 */
+ {
+ switch (q0)
+ {
+ case 1:
+ iq[jz - 1] &= 0x7fffff; break;
+ case 2:
+ iq[jz - 1] &= 0x3fffff; break;
+ }
+ }
+ if (ih == 2)
+ {
+ z = one - z;
+ if (carry != 0)
+ z -= __scalbn (one, q0);
+ }
+ }
+
+ /* check if recomputation is needed */
+ if (z == zero)
+ {
+ j = 0;
+ for (i = jz - 1; i >= jk; i--)
+ j |= iq[i];
+ if (j == 0) /* need recomputation */
+ {
+ /* On s390x gcc 6.1 -O3 produces the warning "array subscript is below
+ array bounds [-Werror=array-bounds]". Only __ieee754_rem_pio2l
+ calls __kernel_rem_pio2 for normal numbers and |x| > pi/4 in case
+ of ldbl-96 and |x| > 3pi/4 in case of ldbl-128[ibm].
+ Thus x can't be zero and ipio2 is not zero, too. Thus not all iq[]
+ values can't be zero. */
+ DIAG_PUSH_NEEDS_COMMENT;
+ DIAG_IGNORE_NEEDS_COMMENT (6.1, "-Warray-bounds");
+ for (k = 1; iq[jk - k] == 0; k++)
+ ; /* k = no. of terms needed */
+ DIAG_POP_NEEDS_COMMENT;
+
+ for (i = jz + 1; i <= jz + k; i++) /* add q[jz+1] to q[jz+k] */
+ {
+ f[jx + i] = (double) ipio2[jv + i];
+ for (j = 0, fw = 0.0; j <= jx; j++)
+ fw += x[j] * f[jx + i - j];
+ q[i] = fw;
+ }
+ jz += k;
+ goto recompute;
+ }
+ }
+
+ /* chop off zero terms */
+ if (z == 0.0)
+ {
+ jz -= 1; q0 -= 24;
+ while (iq[jz] == 0)
+ {
+ jz--; q0 -= 24;
+ }
+ }
+ else /* break z into 24-bit if necessary */
+ {
+ z = __scalbn (z, -q0);
+ if (z >= two24)
+ {
+ fw = (double) ((int32_t) (twon24 * z));
+ iq[jz] = (int32_t) (z - two24 * fw);
+ jz += 1; q0 += 24;
+ iq[jz] = (int32_t) fw;
+ }
+ else
+ iq[jz] = (int32_t) z;
+ }
+
+ /* convert integer "bit" chunk to floating-point value */
+ fw = __scalbn (one, q0);
+ for (i = jz; i >= 0; i--)
+ {
+ q[i] = fw * (double) iq[i]; fw *= twon24;
+ }
+
+ /* compute PIo2[0,...,jp]*q[jz,...,0] */
+ for (i = jz; i >= 0; i--)
+ {
+ for (fw = 0.0, k = 0; k <= jp && k <= jz - i; k++)
+ fw += PIo2[k] * q[i + k];
+ fq[jz - i] = fw;
+ }
+
+ /* compress fq[] into y[] */
+ switch (prec)
+ {
+ case 0:
+ fw = 0.0;
+ for (i = jz; i >= 0; i--)
+ fw += fq[i];
+ y[0] = (ih == 0) ? fw : -fw;
+ break;
+ case 1:
+ case 2:;
+ double fv = 0.0;
+ for (i = jz; i >= 0; i--)
+ fv = math_narrow_eval (fv + fq[i]);
+ y[0] = (ih == 0) ? fv : -fv;
+ fv = math_narrow_eval (fq[0] - fv);
+ for (i = 1; i <= jz; i++)
+ fv = math_narrow_eval (fv + fq[i]);
+ y[1] = (ih == 0) ? fv : -fv;
+ break;
+ case 3: /* painful */
+ for (i = jz; i > 0; i--)
+ {
+ double fv = math_narrow_eval (fq[i - 1] + fq[i]);
+ fq[i] += fq[i - 1] - fv;
+ fq[i - 1] = fv;
+ }
+ for (i = jz; i > 1; i--)
+ {
+ double fv = math_narrow_eval (fq[i - 1] + fq[i]);
+ fq[i] += fq[i - 1] - fv;
+ fq[i - 1] = fv;
+ }
+ for (fw = 0.0, i = jz; i >= 2; i--)
+ fw += fq[i];
+ if (ih == 0)
+ {
+ y[0] = fq[0]; y[1] = fq[1]; y[2] = fw;
+ }
+ else
+ {
+ y[0] = -fq[0]; y[1] = -fq[1]; y[2] = -fw;
+ }
+ }
+ return n & 7;
+}
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/k_sin.c b/REORG.TODO/sysdeps/ieee754/dbl-64/k_sin.c
new file mode 100644
index 0000000000..cc5c205a5f
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/k_sin.c
@@ -0,0 +1 @@
+/* Not needed anymore. */
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/k_tan.c b/REORG.TODO/sysdeps/ieee754/dbl-64/k_tan.c
new file mode 100644
index 0000000000..cc5c205a5f
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/k_tan.c
@@ -0,0 +1 @@
+/* Not needed anymore. */
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/lgamma_neg.c b/REORG.TODO/sysdeps/ieee754/dbl-64/lgamma_neg.c
new file mode 100644
index 0000000000..ccde9a1fe5
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/lgamma_neg.c
@@ -0,0 +1,383 @@
+/* lgamma expanding around zeros.
+ Copyright (C) 2015-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <float.h>
+#include <math.h>
+#include <math_private.h>
+
+static const double lgamma_zeros[][2] =
+ {
+ { -0x2.74ff92c01f0d8p+0, -0x2.abec9f315f1ap-56 },
+ { -0x2.bf6821437b202p+0, 0x6.866a5b4b9be14p-56 },
+ { -0x3.24c1b793cb35ep+0, -0xf.b8be699ad3d98p-56 },
+ { -0x3.f48e2a8f85fcap+0, -0x1.70d4561291237p-56 },
+ { -0x4.0a139e1665604p+0, 0xf.3c60f4f21e7fp-56 },
+ { -0x4.fdd5de9bbabf4p+0, 0xa.ef2f55bf89678p-56 },
+ { -0x5.021a95fc2db64p+0, -0x3.2a4c56e595394p-56 },
+ { -0x5.ffa4bd647d034p+0, -0x1.7dd4ed62cbd32p-52 },
+ { -0x6.005ac9625f234p+0, 0x4.9f83d2692e9c8p-56 },
+ { -0x6.fff2fddae1bcp+0, 0xc.29d949a3dc03p-60 },
+ { -0x7.000cff7b7f87cp+0, 0x1.20bb7d2324678p-52 },
+ { -0x7.fffe5fe05673cp+0, -0x3.ca9e82b522b0cp-56 },
+ { -0x8.0001a01459fc8p+0, -0x1.f60cb3cec1cedp-52 },
+ { -0x8.ffffd1c425e8p+0, -0xf.fc864e9574928p-56 },
+ { -0x9.00002e3bb47d8p+0, -0x6.d6d843fedc35p-56 },
+ { -0x9.fffffb606bep+0, 0x2.32f9d51885afap-52 },
+ { -0xa.0000049f93bb8p+0, -0x1.927b45d95e154p-52 },
+ { -0xa.ffffff9466eap+0, 0xe.4c92532d5243p-56 },
+ { -0xb.0000006b9915p+0, -0x3.15d965a6ffea4p-52 },
+ { -0xb.fffffff708938p+0, -0x7.387de41acc3d4p-56 },
+ { -0xc.00000008f76c8p+0, 0x8.cea983f0fdafp-56 },
+ { -0xc.ffffffff4f6ep+0, 0x3.09e80685a0038p-52 },
+ { -0xd.00000000b092p+0, -0x3.09c06683dd1bap-52 },
+ { -0xd.fffffffff3638p+0, 0x3.a5461e7b5c1f6p-52 },
+ { -0xe.000000000c9c8p+0, -0x3.a545e94e75ec6p-52 },
+ { -0xe.ffffffffff29p+0, 0x3.f9f399fb10cfcp-52 },
+ { -0xf.0000000000d7p+0, -0x3.f9f399bd0e42p-52 },
+ { -0xf.fffffffffff28p+0, -0xc.060c6621f513p-56 },
+ { -0x1.000000000000dp+4, -0x7.3f9f399da1424p-52 },
+ { -0x1.0ffffffffffffp+4, -0x3.569c47e7a93e2p-52 },
+ { -0x1.1000000000001p+4, 0x3.569c47e7a9778p-52 },
+ { -0x1.2p+4, 0xb.413c31dcbecdp-56 },
+ { -0x1.2p+4, -0xb.413c31dcbeca8p-56 },
+ { -0x1.3p+4, 0x9.7a4da340a0ab8p-60 },
+ { -0x1.3p+4, -0x9.7a4da340a0ab8p-60 },
+ { -0x1.4p+4, 0x7.950ae90080894p-64 },
+ { -0x1.4p+4, -0x7.950ae90080894p-64 },
+ { -0x1.5p+4, 0x5.c6e3bdb73d5c8p-68 },
+ { -0x1.5p+4, -0x5.c6e3bdb73d5c8p-68 },
+ { -0x1.6p+4, 0x4.338e5b6dfe14cp-72 },
+ { -0x1.6p+4, -0x4.338e5b6dfe14cp-72 },
+ { -0x1.7p+4, 0x2.ec368262c7034p-76 },
+ { -0x1.7p+4, -0x2.ec368262c7034p-76 },
+ { -0x1.8p+4, 0x1.f2cf01972f578p-80 },
+ { -0x1.8p+4, -0x1.f2cf01972f578p-80 },
+ { -0x1.9p+4, 0x1.3f3ccdd165fa9p-84 },
+ { -0x1.9p+4, -0x1.3f3ccdd165fa9p-84 },
+ { -0x1.ap+4, 0xc.4742fe35272dp-92 },
+ { -0x1.ap+4, -0xc.4742fe35272dp-92 },
+ { -0x1.bp+4, 0x7.46ac70b733a8cp-96 },
+ { -0x1.bp+4, -0x7.46ac70b733a8cp-96 },
+ { -0x1.cp+4, 0x4.2862898d42174p-100 },
+ };
+
+static const double e_hi = 0x2.b7e151628aed2p+0, e_lo = 0xa.6abf7158809dp-56;
+
+/* Coefficients B_2k / 2k(2k-1) of x^-(2k-1) in Stirling's
+ approximation to lgamma function. */
+
+static const double lgamma_coeff[] =
+ {
+ 0x1.5555555555555p-4,
+ -0xb.60b60b60b60b8p-12,
+ 0x3.4034034034034p-12,
+ -0x2.7027027027028p-12,
+ 0x3.72a3c5631fe46p-12,
+ -0x7.daac36664f1f4p-12,
+ 0x1.a41a41a41a41ap-8,
+ -0x7.90a1b2c3d4e6p-8,
+ 0x2.dfd2c703c0dp-4,
+ -0x1.6476701181f3ap+0,
+ 0xd.672219167003p+0,
+ -0x9.cd9292e6660d8p+4,
+ };
+
+#define NCOEFF (sizeof (lgamma_coeff) / sizeof (lgamma_coeff[0]))
+
+/* Polynomial approximations to (|gamma(x)|-1)(x-n)/(x-x0), where n is
+ the integer end-point of the half-integer interval containing x and
+ x0 is the zero of lgamma in that half-integer interval. Each
+ polynomial is expressed in terms of x-xm, where xm is the midpoint
+ of the interval for which the polynomial applies. */
+
+static const double poly_coeff[] =
+ {
+ /* Interval [-2.125, -2] (polynomial degree 10). */
+ -0x1.0b71c5c54d42fp+0,
+ -0xc.73a1dc05f3758p-4,
+ -0x1.ec84140851911p-4,
+ -0xe.37c9da23847e8p-4,
+ -0x1.03cd87cdc0ac6p-4,
+ -0xe.ae9aedce12eep-4,
+ 0x9.b11a1780cfd48p-8,
+ -0xe.f25fc460bdebp-4,
+ 0x2.6e984c61ca912p-4,
+ -0xf.83fea1c6d35p-4,
+ 0x4.760c8c8909758p-4,
+ /* Interval [-2.25, -2.125] (polynomial degree 11). */
+ -0xf.2930890d7d678p-4,
+ -0xc.a5cfde054eaa8p-4,
+ 0x3.9c9e0fdebd99cp-4,
+ -0x1.02a5ad35619d9p+0,
+ 0x9.6e9b1167c164p-4,
+ -0x1.4d8332eba090ap+0,
+ 0x1.1c0c94b1b2b6p+0,
+ -0x1.c9a70d138c74ep+0,
+ 0x1.d7d9cf1d4c196p+0,
+ -0x2.91fbf4cd6abacp+0,
+ 0x2.f6751f74b8ff8p+0,
+ -0x3.e1bb7b09e3e76p+0,
+ /* Interval [-2.375, -2.25] (polynomial degree 12). */
+ -0xd.7d28d505d618p-4,
+ -0xe.69649a3040958p-4,
+ 0xb.0d74a2827cd6p-4,
+ -0x1.924b09228a86ep+0,
+ 0x1.d49b12bcf6175p+0,
+ -0x3.0898bb530d314p+0,
+ 0x4.207a6be8fda4cp+0,
+ -0x6.39eef56d4e9p+0,
+ 0x8.e2e42acbccec8p+0,
+ -0xd.0d91c1e596a68p+0,
+ 0x1.2e20d7099c585p+4,
+ -0x1.c4eb6691b4ca9p+4,
+ 0x2.96a1a11fd85fep+4,
+ /* Interval [-2.5, -2.375] (polynomial degree 13). */
+ -0xb.74ea1bcfff948p-4,
+ -0x1.2a82bd590c376p+0,
+ 0x1.88020f828b81p+0,
+ -0x3.32279f040d7aep+0,
+ 0x5.57ac8252ce868p+0,
+ -0x9.c2aedd093125p+0,
+ 0x1.12c132716e94cp+4,
+ -0x1.ea94dfa5c0a6dp+4,
+ 0x3.66b61abfe858cp+4,
+ -0x6.0cfceb62a26e4p+4,
+ 0xa.beeba09403bd8p+4,
+ -0x1.3188d9b1b288cp+8,
+ 0x2.37f774dd14c44p+8,
+ -0x3.fdf0a64cd7136p+8,
+ /* Interval [-2.625, -2.5] (polynomial degree 13). */
+ -0x3.d10108c27ebbp-4,
+ 0x1.cd557caff7d2fp+0,
+ 0x3.819b4856d36cep+0,
+ 0x6.8505cbacfc42p+0,
+ 0xb.c1b2e6567a4dp+0,
+ 0x1.50a53a3ce6c73p+4,
+ 0x2.57adffbb1ec0cp+4,
+ 0x4.2b15549cf400cp+4,
+ 0x7.698cfd82b3e18p+4,
+ 0xd.2decde217755p+4,
+ 0x1.7699a624d07b9p+8,
+ 0x2.98ecf617abbfcp+8,
+ 0x4.d5244d44d60b4p+8,
+ 0x8.e962bf7395988p+8,
+ /* Interval [-2.75, -2.625] (polynomial degree 12). */
+ -0x6.b5d252a56e8a8p-4,
+ 0x1.28d60383da3a6p+0,
+ 0x1.db6513ada89bep+0,
+ 0x2.e217118fa8c02p+0,
+ 0x4.450112c651348p+0,
+ 0x6.4af990f589b8cp+0,
+ 0x9.2db5963d7a238p+0,
+ 0xd.62c03647da19p+0,
+ 0x1.379f81f6416afp+4,
+ 0x1.c5618b4fdb96p+4,
+ 0x2.9342d0af2ac4ep+4,
+ 0x3.d9cdf56d2b186p+4,
+ 0x5.ab9f91d5a27a4p+4,
+ /* Interval [-2.875, -2.75] (polynomial degree 11). */
+ -0x8.a41b1e4f36ff8p-4,
+ 0xc.da87d3b69dbe8p-4,
+ 0x1.1474ad5c36709p+0,
+ 0x1.761ecb90c8c5cp+0,
+ 0x1.d279bff588826p+0,
+ 0x2.4e5d003fb36a8p+0,
+ 0x2.d575575566842p+0,
+ 0x3.85152b0d17756p+0,
+ 0x4.5213d921ca13p+0,
+ 0x5.55da7dfcf69c4p+0,
+ 0x6.acef729b9404p+0,
+ 0x8.483cc21dd0668p+0,
+ /* Interval [-3, -2.875] (polynomial degree 11). */
+ -0xa.046d667e468f8p-4,
+ 0x9.70b88dcc006cp-4,
+ 0xa.a8a39421c94dp-4,
+ 0xd.2f4d1363f98ep-4,
+ 0xd.ca9aa19975b7p-4,
+ 0xf.cf09c2f54404p-4,
+ 0x1.04b1365a9adfcp+0,
+ 0x1.22b54ef213798p+0,
+ 0x1.2c52c25206bf5p+0,
+ 0x1.4aa3d798aace4p+0,
+ 0x1.5c3f278b504e3p+0,
+ 0x1.7e08292cc347bp+0,
+ };
+
+static const size_t poly_deg[] =
+ {
+ 10,
+ 11,
+ 12,
+ 13,
+ 13,
+ 12,
+ 11,
+ 11,
+ };
+
+static const size_t poly_end[] =
+ {
+ 10,
+ 22,
+ 35,
+ 49,
+ 63,
+ 76,
+ 88,
+ 100,
+ };
+
+/* Compute sin (pi * X) for -0.25 <= X <= 0.5. */
+
+static double
+lg_sinpi (double x)
+{
+ if (x <= 0.25)
+ return __sin (M_PI * x);
+ else
+ return __cos (M_PI * (0.5 - x));
+}
+
+/* Compute cos (pi * X) for -0.25 <= X <= 0.5. */
+
+static double
+lg_cospi (double x)
+{
+ if (x <= 0.25)
+ return __cos (M_PI * x);
+ else
+ return __sin (M_PI * (0.5 - x));
+}
+
+/* Compute cot (pi * X) for -0.25 <= X <= 0.5. */
+
+static double
+lg_cotpi (double x)
+{
+ return lg_cospi (x) / lg_sinpi (x);
+}
+
+/* Compute lgamma of a negative argument -28 < X < -2, setting
+ *SIGNGAMP accordingly. */
+
+double
+__lgamma_neg (double x, int *signgamp)
+{
+ /* Determine the half-integer region X lies in, handle exact
+ integers and determine the sign of the result. */
+ int i = __floor (-2 * x);
+ if ((i & 1) == 0 && i == -2 * x)
+ return 1.0 / 0.0;
+ double xn = ((i & 1) == 0 ? -i / 2 : (-i - 1) / 2);
+ i -= 4;
+ *signgamp = ((i & 2) == 0 ? -1 : 1);
+
+ SET_RESTORE_ROUND (FE_TONEAREST);
+
+ /* Expand around the zero X0 = X0_HI + X0_LO. */
+ double x0_hi = lgamma_zeros[i][0], x0_lo = lgamma_zeros[i][1];
+ double xdiff = x - x0_hi - x0_lo;
+
+ /* For arguments in the range -3 to -2, use polynomial
+ approximations to an adjusted version of the gamma function. */
+ if (i < 2)
+ {
+ int j = __floor (-8 * x) - 16;
+ double xm = (-33 - 2 * j) * 0.0625;
+ double x_adj = x - xm;
+ size_t deg = poly_deg[j];
+ size_t end = poly_end[j];
+ double g = poly_coeff[end];
+ for (size_t j = 1; j <= deg; j++)
+ g = g * x_adj + poly_coeff[end - j];
+ return __log1p (g * xdiff / (x - xn));
+ }
+
+ /* The result we want is log (sinpi (X0) / sinpi (X))
+ + log (gamma (1 - X0) / gamma (1 - X)). */
+ double x_idiff = fabs (xn - x), x0_idiff = fabs (xn - x0_hi - x0_lo);
+ double log_sinpi_ratio;
+ if (x0_idiff < x_idiff * 0.5)
+ /* Use log not log1p to avoid inaccuracy from log1p of arguments
+ close to -1. */
+ log_sinpi_ratio = __ieee754_log (lg_sinpi (x0_idiff)
+ / lg_sinpi (x_idiff));
+ else
+ {
+ /* Use log1p not log to avoid inaccuracy from log of arguments
+ close to 1. X0DIFF2 has positive sign if X0 is further from
+ XN than X is from XN, negative sign otherwise. */
+ double x0diff2 = ((i & 1) == 0 ? xdiff : -xdiff) * 0.5;
+ double sx0d2 = lg_sinpi (x0diff2);
+ double cx0d2 = lg_cospi (x0diff2);
+ log_sinpi_ratio = __log1p (2 * sx0d2
+ * (-sx0d2 + cx0d2 * lg_cotpi (x_idiff)));
+ }
+
+ double log_gamma_ratio;
+ double y0 = math_narrow_eval (1 - x0_hi);
+ double y0_eps = -x0_hi + (1 - y0) - x0_lo;
+ double y = math_narrow_eval (1 - x);
+ double y_eps = -x + (1 - y);
+ /* We now wish to compute LOG_GAMMA_RATIO
+ = log (gamma (Y0 + Y0_EPS) / gamma (Y + Y_EPS)). XDIFF
+ accurately approximates the difference Y0 + Y0_EPS - Y -
+ Y_EPS. Use Stirling's approximation. First, we may need to
+ adjust into the range where Stirling's approximation is
+ sufficiently accurate. */
+ double log_gamma_adj = 0;
+ if (i < 6)
+ {
+ int n_up = (7 - i) / 2;
+ double ny0, ny0_eps, ny, ny_eps;
+ ny0 = math_narrow_eval (y0 + n_up);
+ ny0_eps = y0 - (ny0 - n_up) + y0_eps;
+ y0 = ny0;
+ y0_eps = ny0_eps;
+ ny = math_narrow_eval (y + n_up);
+ ny_eps = y - (ny - n_up) + y_eps;
+ y = ny;
+ y_eps = ny_eps;
+ double prodm1 = __lgamma_product (xdiff, y - n_up, y_eps, n_up);
+ log_gamma_adj = -__log1p (prodm1);
+ }
+ double log_gamma_high
+ = (xdiff * __log1p ((y0 - e_hi - e_lo + y0_eps) / e_hi)
+ + (y - 0.5 + y_eps) * __log1p (xdiff / y) + log_gamma_adj);
+ /* Compute the sum of (B_2k / 2k(2k-1))(Y0^-(2k-1) - Y^-(2k-1)). */
+ double y0r = 1 / y0, yr = 1 / y;
+ double y0r2 = y0r * y0r, yr2 = yr * yr;
+ double rdiff = -xdiff / (y * y0);
+ double bterm[NCOEFF];
+ double dlast = rdiff, elast = rdiff * yr * (yr + y0r);
+ bterm[0] = dlast * lgamma_coeff[0];
+ for (size_t j = 1; j < NCOEFF; j++)
+ {
+ double dnext = dlast * y0r2 + elast;
+ double enext = elast * yr2;
+ bterm[j] = dnext * lgamma_coeff[j];
+ dlast = dnext;
+ elast = enext;
+ }
+ double log_gamma_low = 0;
+ for (size_t j = 0; j < NCOEFF; j++)
+ log_gamma_low += bterm[NCOEFF - 1 - j];
+ log_gamma_ratio = log_gamma_high + log_gamma_low;
+
+ return log_sinpi_ratio + log_gamma_ratio;
+}
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/lgamma_product.c b/REORG.TODO/sysdeps/ieee754/dbl-64/lgamma_product.c
new file mode 100644
index 0000000000..a894f488b0
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/lgamma_product.c
@@ -0,0 +1,52 @@
+/* Compute a product of 1 + (T/X), 1 + (T/(X+1)), ....
+ Copyright (C) 2015-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+#include <math_private.h>
+#include <mul_split.h>
+
+/* Compute the product of 1 + (T / (X + X_EPS)), 1 + (T / (X + X_EPS +
+ 1)), ..., 1 + (T / (X + X_EPS + N - 1)), minus 1. X is such that
+ all the values X + 1, ..., X + N - 1 are exactly representable, and
+ X_EPS / X is small enough that factors quadratic in it can be
+ neglected. */
+
+double
+__lgamma_product (double t, double x, double x_eps, int n)
+{
+ double ret = 0, ret_eps = 0;
+ for (int i = 0; i < n; i++)
+ {
+ double xi = x + i;
+ double quot = t / xi;
+ double mhi, mlo;
+ mul_split (&mhi, &mlo, quot, xi);
+ double quot_lo = (t - mhi - mlo) / xi - t * x_eps / (xi * xi);
+ /* We want (1 + RET + RET_EPS) * (1 + QUOT + QUOT_LO) - 1. */
+ double rhi, rlo;
+ mul_split (&rhi, &rlo, ret, quot);
+ double rpq = ret + quot;
+ double rpq_eps = (ret - rpq) + quot;
+ double nret = rpq + rhi;
+ double nret_eps = (rpq - nret) + rhi;
+ ret_eps += (rpq_eps + nret_eps + rlo + ret_eps * quot
+ + quot_lo + quot_lo * (ret + ret_eps));
+ ret = nret;
+ }
+ return ret + ret_eps;
+}
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/mpa-arch.h b/REORG.TODO/sysdeps/ieee754/dbl-64/mpa-arch.h
new file mode 100644
index 0000000000..4428ac1301
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/mpa-arch.h
@@ -0,0 +1,47 @@
+/* Overridable constants and operations.
+ Copyright (C) 2013-2017 Free Software Foundation, Inc.
+
+ This program 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 2.1 of the License, or
+ (at your option) any later version.
+
+ This program 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 program; if not, see <http://www.gnu.org/licenses/>. */
+
+#include <stdint.h>
+
+typedef long mantissa_t;
+typedef int64_t mantissa_store_t;
+
+#define TWOPOW(i) (1L << i)
+
+#define RADIX_EXP 24
+#define RADIX TWOPOW (RADIX_EXP) /* 2^24 */
+
+/* Divide D by RADIX and put the remainder in R. D must be a non-negative
+ integral value. */
+#define DIV_RADIX(d, r) \
+ ({ \
+ r = d & (RADIX - 1); \
+ d >>= RADIX_EXP; \
+ })
+
+/* Put the integer component of a double X in R and retain the fraction in
+ X. This is used in extracting mantissa digits for MP_NO by using the
+ integer portion of the current value of the number as the current mantissa
+ digit and then scaling by RADIX to get the next mantissa digit in the same
+ manner. */
+#define INTEGER_OF(x, i) \
+ ({ \
+ i = (mantissa_t) x; \
+ x -= i; \
+ })
+
+/* Align IN down to F. The code assumes that F is a power of two. */
+#define ALIGN_DOWN_TO(in, f) ((in) & - (f))
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/mpa.c b/REORG.TODO/sysdeps/ieee754/dbl-64/mpa.c
new file mode 100644
index 0000000000..3820335172
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/mpa.c
@@ -0,0 +1,906 @@
+/*
+ * IBM Accurate Mathematical Library
+ * written by International Business Machines Corp.
+ * Copyright (C) 2001-2017 Free Software Foundation, Inc.
+ *
+ * This program 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 2.1 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 program; if not, see <http://www.gnu.org/licenses/>.
+ */
+/************************************************************************/
+/* MODULE_NAME: mpa.c */
+/* */
+/* FUNCTIONS: */
+/* mcr */
+/* acr */
+/* cpy */
+/* norm */
+/* denorm */
+/* mp_dbl */
+/* dbl_mp */
+/* add_magnitudes */
+/* sub_magnitudes */
+/* add */
+/* sub */
+/* mul */
+/* inv */
+/* dvd */
+/* */
+/* Arithmetic functions for multiple precision numbers. */
+/* Relative errors are bounded */
+/************************************************************************/
+
+
+#include "endian.h"
+#include "mpa.h"
+#include <sys/param.h>
+#include <alloca.h>
+
+#ifndef SECTION
+# define SECTION
+#endif
+
+#ifndef NO__CONST
+const mp_no __mpone = { 1, { 1.0, 1.0 } };
+const mp_no __mptwo = { 1, { 1.0, 2.0 } };
+#endif
+
+#ifndef NO___ACR
+/* Compare mantissa of two multiple precision numbers regardless of the sign
+ and exponent of the numbers. */
+static int
+mcr (const mp_no *x, const mp_no *y, int p)
+{
+ long i;
+ long p2 = p;
+ for (i = 1; i <= p2; i++)
+ {
+ if (X[i] == Y[i])
+ continue;
+ else if (X[i] > Y[i])
+ return 1;
+ else
+ return -1;
+ }
+ return 0;
+}
+
+/* Compare the absolute values of two multiple precision numbers. */
+int
+__acr (const mp_no *x, const mp_no *y, int p)
+{
+ long i;
+
+ if (X[0] == 0)
+ {
+ if (Y[0] == 0)
+ i = 0;
+ else
+ i = -1;
+ }
+ else if (Y[0] == 0)
+ i = 1;
+ else
+ {
+ if (EX > EY)
+ i = 1;
+ else if (EX < EY)
+ i = -1;
+ else
+ i = mcr (x, y, p);
+ }
+
+ return i;
+}
+#endif
+
+#ifndef NO___CPY
+/* Copy multiple precision number X into Y. They could be the same
+ number. */
+void
+__cpy (const mp_no *x, mp_no *y, int p)
+{
+ long i;
+
+ EY = EX;
+ for (i = 0; i <= p; i++)
+ Y[i] = X[i];
+}
+#endif
+
+#ifndef NO___MP_DBL
+/* Convert a multiple precision number *X into a double precision
+ number *Y, normalized case (|x| >= 2**(-1022))). X has precision
+ P, which is positive. */
+static void
+norm (const mp_no *x, double *y, int p)
+{
+# define R RADIXI
+ long i;
+ double c;
+ mantissa_t a, u, v, z[5];
+ if (p < 5)
+ {
+ if (p == 1)
+ c = X[1];
+ else if (p == 2)
+ c = X[1] + R * X[2];
+ else if (p == 3)
+ c = X[1] + R * (X[2] + R * X[3]);
+ else /* p == 4. */
+ c = (X[1] + R * X[2]) + R * R * (X[3] + R * X[4]);
+ }
+ else
+ {
+ for (a = 1, z[1] = X[1]; z[1] < TWO23; )
+ {
+ a *= 2;
+ z[1] *= 2;
+ }
+
+ for (i = 2; i < 5; i++)
+ {
+ mantissa_store_t d, r;
+ d = X[i] * (mantissa_store_t) a;
+ DIV_RADIX (d, r);
+ z[i] = r;
+ z[i - 1] += d;
+ }
+
+ u = ALIGN_DOWN_TO (z[3], TWO19);
+ v = z[3] - u;
+
+ if (v == TWO18)
+ {
+ if (z[4] == 0)
+ {
+ for (i = 5; i <= p; i++)
+ {
+ if (X[i] == 0)
+ continue;
+ else
+ {
+ z[3] += 1;
+ break;
+ }
+ }
+ }
+ else
+ z[3] += 1;
+ }
+
+ c = (z[1] + R * (z[2] + R * z[3])) / a;
+ }
+
+ c *= X[0];
+
+ for (i = 1; i < EX; i++)
+ c *= RADIX;
+ for (i = 1; i > EX; i--)
+ c *= RADIXI;
+
+ *y = c;
+# undef R
+}
+
+/* Convert a multiple precision number *X into a double precision
+ number *Y, Denormal case (|x| < 2**(-1022))). */
+static void
+denorm (const mp_no *x, double *y, int p)
+{
+ long i, k;
+ long p2 = p;
+ double c;
+ mantissa_t u, z[5];
+
+# define R RADIXI
+ if (EX < -44 || (EX == -44 && X[1] < TWO5))
+ {
+ *y = 0;
+ return;
+ }
+
+ if (p2 == 1)
+ {
+ if (EX == -42)
+ {
+ z[1] = X[1] + TWO10;
+ z[2] = 0;
+ z[3] = 0;
+ k = 3;
+ }
+ else if (EX == -43)
+ {
+ z[1] = TWO10;
+ z[2] = X[1];
+ z[3] = 0;
+ k = 2;
+ }
+ else
+ {
+ z[1] = TWO10;
+ z[2] = 0;
+ z[3] = X[1];
+ k = 1;
+ }
+ }
+ else if (p2 == 2)
+ {
+ if (EX == -42)
+ {
+ z[1] = X[1] + TWO10;
+ z[2] = X[2];
+ z[3] = 0;
+ k = 3;
+ }
+ else if (EX == -43)
+ {
+ z[1] = TWO10;
+ z[2] = X[1];
+ z[3] = X[2];
+ k = 2;
+ }
+ else
+ {
+ z[1] = TWO10;
+ z[2] = 0;
+ z[3] = X[1];
+ k = 1;
+ }
+ }
+ else
+ {
+ if (EX == -42)
+ {
+ z[1] = X[1] + TWO10;
+ z[2] = X[2];
+ k = 3;
+ }
+ else if (EX == -43)
+ {
+ z[1] = TWO10;
+ z[2] = X[1];
+ k = 2;
+ }
+ else
+ {
+ z[1] = TWO10;
+ z[2] = 0;
+ k = 1;
+ }
+ z[3] = X[k];
+ }
+
+ u = ALIGN_DOWN_TO (z[3], TWO5);
+
+ if (u == z[3])
+ {
+ for (i = k + 1; i <= p2; i++)
+ {
+ if (X[i] == 0)
+ continue;
+ else
+ {
+ z[3] += 1;
+ break;
+ }
+ }
+ }
+
+ c = X[0] * ((z[1] + R * (z[2] + R * z[3])) - TWO10);
+
+ *y = c * TWOM1032;
+# undef R
+}
+
+/* Convert multiple precision number *X into double precision number *Y. The
+ result is correctly rounded to the nearest/even. */
+void
+__mp_dbl (const mp_no *x, double *y, int p)
+{
+ if (X[0] == 0)
+ {
+ *y = 0;
+ return;
+ }
+
+ if (__glibc_likely (EX > -42 || (EX == -42 && X[1] >= TWO10)))
+ norm (x, y, p);
+ else
+ denorm (x, y, p);
+}
+#endif
+
+/* Get the multiple precision equivalent of X into *Y. If the precision is too
+ small, the result is truncated. */
+void
+SECTION
+__dbl_mp (double x, mp_no *y, int p)
+{
+ long i, n;
+ long p2 = p;
+
+ /* Sign. */
+ if (x == 0)
+ {
+ Y[0] = 0;
+ return;
+ }
+ else if (x > 0)
+ Y[0] = 1;
+ else
+ {
+ Y[0] = -1;
+ x = -x;
+ }
+
+ /* Exponent. */
+ for (EY = 1; x >= RADIX; EY += 1)
+ x *= RADIXI;
+ for (; x < 1; EY -= 1)
+ x *= RADIX;
+
+ /* Digits. */
+ n = MIN (p2, 4);
+ for (i = 1; i <= n; i++)
+ {
+ INTEGER_OF (x, Y[i]);
+ x *= RADIX;
+ }
+ for (; i <= p2; i++)
+ Y[i] = 0;
+}
+
+/* Add magnitudes of *X and *Y assuming that abs (*X) >= abs (*Y) > 0. The
+ sign of the sum *Z is not changed. X and Y may overlap but not X and Z or
+ Y and Z. No guard digit is used. The result equals the exact sum,
+ truncated. */
+static void
+SECTION
+add_magnitudes (const mp_no *x, const mp_no *y, mp_no *z, int p)
+{
+ long i, j, k;
+ long p2 = p;
+ mantissa_t zk;
+
+ EZ = EX;
+
+ i = p2;
+ j = p2 + EY - EX;
+ k = p2 + 1;
+
+ if (__glibc_unlikely (j < 1))
+ {
+ __cpy (x, z, p);
+ return;
+ }
+
+ zk = 0;
+
+ for (; j > 0; i--, j--)
+ {
+ zk += X[i] + Y[j];
+ if (zk >= RADIX)
+ {
+ Z[k--] = zk - RADIX;
+ zk = 1;
+ }
+ else
+ {
+ Z[k--] = zk;
+ zk = 0;
+ }
+ }
+
+ for (; i > 0; i--)
+ {
+ zk += X[i];
+ if (zk >= RADIX)
+ {
+ Z[k--] = zk - RADIX;
+ zk = 1;
+ }
+ else
+ {
+ Z[k--] = zk;
+ zk = 0;
+ }
+ }
+
+ if (zk == 0)
+ {
+ for (i = 1; i <= p2; i++)
+ Z[i] = Z[i + 1];
+ }
+ else
+ {
+ Z[1] = zk;
+ EZ += 1;
+ }
+}
+
+/* Subtract the magnitudes of *X and *Y assuming that abs (*x) > abs (*y) > 0.
+ The sign of the difference *Z is not changed. X and Y may overlap but not X
+ and Z or Y and Z. One guard digit is used. The error is less than one
+ ULP. */
+static void
+SECTION
+sub_magnitudes (const mp_no *x, const mp_no *y, mp_no *z, int p)
+{
+ long i, j, k;
+ long p2 = p;
+ mantissa_t zk;
+
+ EZ = EX;
+ i = p2;
+ j = p2 + EY - EX;
+ k = p2;
+
+ /* Y is too small compared to X, copy X over to the result. */
+ if (__glibc_unlikely (j < 1))
+ {
+ __cpy (x, z, p);
+ return;
+ }
+
+ /* The relevant least significant digit in Y is non-zero, so we factor it in
+ to enhance accuracy. */
+ if (j < p2 && Y[j + 1] > 0)
+ {
+ Z[k + 1] = RADIX - Y[j + 1];
+ zk = -1;
+ }
+ else
+ zk = Z[k + 1] = 0;
+
+ /* Subtract and borrow. */
+ for (; j > 0; i--, j--)
+ {
+ zk += (X[i] - Y[j]);
+ if (zk < 0)
+ {
+ Z[k--] = zk + RADIX;
+ zk = -1;
+ }
+ else
+ {
+ Z[k--] = zk;
+ zk = 0;
+ }
+ }
+
+ /* We're done with digits from Y, so it's just digits in X. */
+ for (; i > 0; i--)
+ {
+ zk += X[i];
+ if (zk < 0)
+ {
+ Z[k--] = zk + RADIX;
+ zk = -1;
+ }
+ else
+ {
+ Z[k--] = zk;
+ zk = 0;
+ }
+ }
+
+ /* Normalize. */
+ for (i = 1; Z[i] == 0; i++)
+ ;
+ EZ = EZ - i + 1;
+ for (k = 1; i <= p2 + 1; )
+ Z[k++] = Z[i++];
+ for (; k <= p2; )
+ Z[k++] = 0;
+}
+
+/* Add *X and *Y and store the result in *Z. X and Y may overlap, but not X
+ and Z or Y and Z. One guard digit is used. The error is less than one
+ ULP. */
+void
+SECTION
+__add (const mp_no *x, const mp_no *y, mp_no *z, int p)
+{
+ int n;
+
+ if (X[0] == 0)
+ {
+ __cpy (y, z, p);
+ return;
+ }
+ else if (Y[0] == 0)
+ {
+ __cpy (x, z, p);
+ return;
+ }
+
+ if (X[0] == Y[0])
+ {
+ if (__acr (x, y, p) > 0)
+ {
+ add_magnitudes (x, y, z, p);
+ Z[0] = X[0];
+ }
+ else
+ {
+ add_magnitudes (y, x, z, p);
+ Z[0] = Y[0];
+ }
+ }
+ else
+ {
+ if ((n = __acr (x, y, p)) == 1)
+ {
+ sub_magnitudes (x, y, z, p);
+ Z[0] = X[0];
+ }
+ else if (n == -1)
+ {
+ sub_magnitudes (y, x, z, p);
+ Z[0] = Y[0];
+ }
+ else
+ Z[0] = 0;
+ }
+}
+
+/* Subtract *Y from *X and return the result in *Z. X and Y may overlap but
+ not X and Z or Y and Z. One guard digit is used. The error is less than
+ one ULP. */
+void
+SECTION
+__sub (const mp_no *x, const mp_no *y, mp_no *z, int p)
+{
+ int n;
+
+ if (X[0] == 0)
+ {
+ __cpy (y, z, p);
+ Z[0] = -Z[0];
+ return;
+ }
+ else if (Y[0] == 0)
+ {
+ __cpy (x, z, p);
+ return;
+ }
+
+ if (X[0] != Y[0])
+ {
+ if (__acr (x, y, p) > 0)
+ {
+ add_magnitudes (x, y, z, p);
+ Z[0] = X[0];
+ }
+ else
+ {
+ add_magnitudes (y, x, z, p);
+ Z[0] = -Y[0];
+ }
+ }
+ else
+ {
+ if ((n = __acr (x, y, p)) == 1)
+ {
+ sub_magnitudes (x, y, z, p);
+ Z[0] = X[0];
+ }
+ else if (n == -1)
+ {
+ sub_magnitudes (y, x, z, p);
+ Z[0] = -Y[0];
+ }
+ else
+ Z[0] = 0;
+ }
+}
+
+#ifndef NO__MUL
+/* Multiply *X and *Y and store result in *Z. X and Y may overlap but not X
+ and Z or Y and Z. For P in [1, 2, 3], the exact result is truncated to P
+ digits. In case P > 3 the error is bounded by 1.001 ULP. */
+void
+SECTION
+__mul (const mp_no *x, const mp_no *y, mp_no *z, int p)
+{
+ long i, j, k, ip, ip2;
+ long p2 = p;
+ mantissa_store_t zk;
+ const mp_no *a;
+ mantissa_store_t *diag;
+
+ /* Is z=0? */
+ if (__glibc_unlikely (X[0] * Y[0] == 0))
+ {
+ Z[0] = 0;
+ return;
+ }
+
+ /* We need not iterate through all X's and Y's since it's pointless to
+ multiply zeroes. Here, both are zero... */
+ for (ip2 = p2; ip2 > 0; ip2--)
+ if (X[ip2] != 0 || Y[ip2] != 0)
+ break;
+
+ a = X[ip2] != 0 ? y : x;
+
+ /* ... and here, at least one of them is still zero. */
+ for (ip = ip2; ip > 0; ip--)
+ if (a->d[ip] != 0)
+ break;
+
+ /* The product looks like this for p = 3 (as an example):
+
+
+ a1 a2 a3
+ x b1 b2 b3
+ -----------------------------
+ a1*b3 a2*b3 a3*b3
+ a1*b2 a2*b2 a3*b2
+ a1*b1 a2*b1 a3*b1
+
+ So our K needs to ideally be P*2, but we're limiting ourselves to P + 3
+ for P >= 3. We compute the above digits in two parts; the last P-1
+ digits and then the first P digits. The last P-1 digits are a sum of
+ products of the input digits from P to P-k where K is 0 for the least
+ significant digit and increases as we go towards the left. The product
+ term is of the form X[k]*X[P-k] as can be seen in the above example.
+
+ The first P digits are also a sum of products with the same product term,
+ except that the sum is from 1 to k. This is also evident from the above
+ example.
+
+ Another thing that becomes evident is that only the most significant
+ ip+ip2 digits of the result are non-zero, where ip and ip2 are the
+ 'internal precision' of the input numbers, i.e. digits after ip and ip2
+ are all 0. */
+
+ k = (__glibc_unlikely (p2 < 3)) ? p2 + p2 : p2 + 3;
+
+ while (k > ip + ip2 + 1)
+ Z[k--] = 0;
+
+ zk = 0;
+
+ /* Precompute sums of diagonal elements so that we can directly use them
+ later. See the next comment to know we why need them. */
+ diag = alloca (k * sizeof (mantissa_store_t));
+ mantissa_store_t d = 0;
+ for (i = 1; i <= ip; i++)
+ {
+ d += X[i] * (mantissa_store_t) Y[i];
+ diag[i] = d;
+ }
+ while (i < k)
+ diag[i++] = d;
+
+ while (k > p2)
+ {
+ long lim = k / 2;
+
+ if (k % 2 == 0)
+ /* We want to add this only once, but since we subtract it in the sum
+ of products above, we add twice. */
+ zk += 2 * X[lim] * (mantissa_store_t) Y[lim];
+
+ for (i = k - p2, j = p2; i < j; i++, j--)
+ zk += (X[i] + X[j]) * (mantissa_store_t) (Y[i] + Y[j]);
+
+ zk -= diag[k - 1];
+
+ DIV_RADIX (zk, Z[k]);
+ k--;
+ }
+
+ /* The real deal. Mantissa digit Z[k] is the sum of all X[i] * Y[j] where i
+ goes from 1 -> k - 1 and j goes the same range in reverse. To reduce the
+ number of multiplications, we halve the range and if k is an even number,
+ add the diagonal element X[k/2]Y[k/2]. Through the half range, we compute
+ X[i] * Y[j] as (X[i] + X[j]) * (Y[i] + Y[j]) - X[i] * Y[i] - X[j] * Y[j].
+
+ This reduction tells us that we're summing two things, the first term
+ through the half range and the negative of the sum of the product of all
+ terms of X and Y in the full range. i.e.
+
+ SUM(X[i] * Y[i]) for k terms. This is precalculated above for each k in
+ a single loop so that it completes in O(n) time and can hence be directly
+ used in the loop below. */
+ while (k > 1)
+ {
+ long lim = k / 2;
+
+ if (k % 2 == 0)
+ /* We want to add this only once, but since we subtract it in the sum
+ of products above, we add twice. */
+ zk += 2 * X[lim] * (mantissa_store_t) Y[lim];
+
+ for (i = 1, j = k - 1; i < j; i++, j--)
+ zk += (X[i] + X[j]) * (mantissa_store_t) (Y[i] + Y[j]);
+
+ zk -= diag[k - 1];
+
+ DIV_RADIX (zk, Z[k]);
+ k--;
+ }
+ Z[k] = zk;
+
+ /* Get the exponent sum into an intermediate variable. This is a subtle
+ optimization, where given enough registers, all operations on the exponent
+ happen in registers and the result is written out only once into EZ. */
+ int e = EX + EY;
+
+ /* Is there a carry beyond the most significant digit? */
+ if (__glibc_unlikely (Z[1] == 0))
+ {
+ for (i = 1; i <= p2; i++)
+ Z[i] = Z[i + 1];
+ e--;
+ }
+
+ EZ = e;
+ Z[0] = X[0] * Y[0];
+}
+#endif
+
+#ifndef NO__SQR
+/* Square *X and store result in *Y. X and Y may not overlap. For P in
+ [1, 2, 3], the exact result is truncated to P digits. In case P > 3 the
+ error is bounded by 1.001 ULP. This is a faster special case of
+ multiplication. */
+void
+SECTION
+__sqr (const mp_no *x, mp_no *y, int p)
+{
+ long i, j, k, ip;
+ mantissa_store_t yk;
+
+ /* Is z=0? */
+ if (__glibc_unlikely (X[0] == 0))
+ {
+ Y[0] = 0;
+ return;
+ }
+
+ /* We need not iterate through all X's since it's pointless to
+ multiply zeroes. */
+ for (ip = p; ip > 0; ip--)
+ if (X[ip] != 0)
+ break;
+
+ k = (__glibc_unlikely (p < 3)) ? p + p : p + 3;
+
+ while (k > 2 * ip + 1)
+ Y[k--] = 0;
+
+ yk = 0;
+
+ while (k > p)
+ {
+ mantissa_store_t yk2 = 0;
+ long lim = k / 2;
+
+ if (k % 2 == 0)
+ yk += X[lim] * (mantissa_store_t) X[lim];
+
+ /* In __mul, this loop (and the one within the next while loop) run
+ between a range to calculate the mantissa as follows:
+
+ Z[k] = X[k] * Y[n] + X[k+1] * Y[n-1] ... + X[n-1] * Y[k+1]
+ + X[n] * Y[k]
+
+ For X == Y, we can get away with summing halfway and doubling the
+ result. For cases where the range size is even, the mid-point needs
+ to be added separately (above). */
+ for (i = k - p, j = p; i < j; i++, j--)
+ yk2 += X[i] * (mantissa_store_t) X[j];
+
+ yk += 2 * yk2;
+
+ DIV_RADIX (yk, Y[k]);
+ k--;
+ }
+
+ while (k > 1)
+ {
+ mantissa_store_t yk2 = 0;
+ long lim = k / 2;
+
+ if (k % 2 == 0)
+ yk += X[lim] * (mantissa_store_t) X[lim];
+
+ /* Likewise for this loop. */
+ for (i = 1, j = k - 1; i < j; i++, j--)
+ yk2 += X[i] * (mantissa_store_t) X[j];
+
+ yk += 2 * yk2;
+
+ DIV_RADIX (yk, Y[k]);
+ k--;
+ }
+ Y[k] = yk;
+
+ /* Squares are always positive. */
+ Y[0] = 1;
+
+ /* Get the exponent sum into an intermediate variable. This is a subtle
+ optimization, where given enough registers, all operations on the exponent
+ happen in registers and the result is written out only once into EZ. */
+ int e = EX * 2;
+
+ /* Is there a carry beyond the most significant digit? */
+ if (__glibc_unlikely (Y[1] == 0))
+ {
+ for (i = 1; i <= p; i++)
+ Y[i] = Y[i + 1];
+ e--;
+ }
+
+ EY = e;
+}
+#endif
+
+/* Invert *X and store in *Y. Relative error bound:
+ - For P = 2: 1.001 * R ^ (1 - P)
+ - For P = 3: 1.063 * R ^ (1 - P)
+ - For P > 3: 2.001 * R ^ (1 - P)
+
+ *X = 0 is not permissible. */
+static void
+SECTION
+__inv (const mp_no *x, mp_no *y, int p)
+{
+ long i;
+ double t;
+ mp_no z, w;
+ static const int np1[] =
+ { 0, 0, 0, 0, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4
+ };
+
+ __cpy (x, &z, p);
+ z.e = 0;
+ __mp_dbl (&z, &t, p);
+ t = 1 / t;
+ __dbl_mp (t, y, p);
+ EY -= EX;
+
+ for (i = 0; i < np1[p]; i++)
+ {
+ __cpy (y, &w, p);
+ __mul (x, &w, y, p);
+ __sub (&__mptwo, y, &z, p);
+ __mul (&w, &z, y, p);
+ }
+}
+
+/* Divide *X by *Y and store result in *Z. X and Y may overlap but not X and Z
+ or Y and Z. Relative error bound:
+ - For P = 2: 2.001 * R ^ (1 - P)
+ - For P = 3: 2.063 * R ^ (1 - P)
+ - For P > 3: 3.001 * R ^ (1 - P)
+
+ *X = 0 is not permissible. */
+void
+SECTION
+__dvd (const mp_no *x, const mp_no *y, mp_no *z, int p)
+{
+ mp_no w;
+
+ if (X[0] == 0)
+ Z[0] = 0;
+ else
+ {
+ __inv (y, &w, p);
+ __mul (x, &w, z, p);
+ }
+}
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/mpa.h b/REORG.TODO/sysdeps/ieee754/dbl-64/mpa.h
new file mode 100644
index 0000000000..a665e6b8f7
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/mpa.h
@@ -0,0 +1,154 @@
+/*
+ * IBM Accurate Mathematical Library
+ * Written by International Business Machines Corp.
+ * Copyright (C) 2001-2017 Free Software Foundation, Inc.
+ *
+ * This program 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 2.1 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 program; if not, see <http://www.gnu.org/licenses/>.
+ */
+
+/************************************************************************/
+/* MODULE_NAME: mpa.h */
+/* */
+/* FUNCTIONS: */
+/* mcr */
+/* acr */
+/* cpy */
+/* mp_dbl */
+/* dbl_mp */
+/* add */
+/* sub */
+/* mul */
+/* dvd */
+/* */
+/* Arithmetic functions for multiple precision numbers. */
+/* Common types and definition */
+/************************************************************************/
+
+#include <mpa-arch.h>
+
+/* The mp_no structure holds the details of a multi-precision floating point
+ number.
+
+ - The radix of the number (R) is 2 ^ 24.
+
+ - E: The exponent of the number.
+
+ - D[0]: The sign (-1, 1) or 0 if the value is 0. In the latter case, the
+ values of the remaining members of the structure are ignored.
+
+ - D[1] - D[p]: The mantissa of the number where:
+
+ 0 <= D[i] < R and
+ P is the precision of the number and 1 <= p <= 32
+
+ D[p+1] ... D[39] have no significance.
+
+ - The value of the number is:
+
+ D[1] * R ^ (E - 1) + D[2] * R ^ (E - 2) ... D[p] * R ^ (E - p)
+
+ */
+typedef struct
+{
+ int e;
+ mantissa_t d[40];
+} mp_no;
+
+typedef union
+{
+ int i[2];
+ double d;
+} number;
+
+extern const mp_no __mpone;
+extern const mp_no __mptwo;
+
+#define X x->d
+#define Y y->d
+#define Z z->d
+#define EX x->e
+#define EY y->e
+#define EZ z->e
+
+#ifndef RADIXI
+# define RADIXI 0x1.0p-24 /* 2^-24 */
+#endif
+
+#ifndef TWO52
+# define TWO52 0x1.0p52 /* 2^52 */
+#endif
+
+#define TWO5 TWOPOW (5) /* 2^5 */
+#define TWO8 TWOPOW (8) /* 2^52 */
+#define TWO10 TWOPOW (10) /* 2^10 */
+#define TWO18 TWOPOW (18) /* 2^18 */
+#define TWO19 TWOPOW (19) /* 2^19 */
+#define TWO23 TWOPOW (23) /* 2^23 */
+
+#define HALFRAD TWO23
+
+#define TWO57 0x1.0p57 /* 2^57 */
+#define TWO71 0x1.0p71 /* 2^71 */
+#define TWOM1032 0x1.0p-1032 /* 2^-1032 */
+#define TWOM1022 0x1.0p-1022 /* 2^-1022 */
+
+#define HALF 0x1.0p-1 /* 1/2 */
+#define MHALF -0x1.0p-1 /* -1/2 */
+
+int __acr (const mp_no *, const mp_no *, int);
+void __cpy (const mp_no *, mp_no *, int);
+void __mp_dbl (const mp_no *, double *, int);
+void __dbl_mp (double, mp_no *, int);
+void __add (const mp_no *, const mp_no *, mp_no *, int);
+void __sub (const mp_no *, const mp_no *, mp_no *, int);
+void __mul (const mp_no *, const mp_no *, mp_no *, int);
+void __sqr (const mp_no *, mp_no *, int);
+void __dvd (const mp_no *, const mp_no *, mp_no *, int);
+
+extern void __mpatan (mp_no *, mp_no *, int);
+extern void __mpatan2 (mp_no *, mp_no *, mp_no *, int);
+extern void __mpsqrt (mp_no *, mp_no *, int);
+extern void __mpexp (mp_no *, mp_no *, int);
+extern void __c32 (mp_no *, mp_no *, mp_no *, int);
+extern int __mpranred (double, mp_no *, int);
+
+/* Given a power POW, build a multiprecision number 2^POW. */
+static inline void
+__pow_mp (int pow, mp_no *y, int p)
+{
+ int i, rem;
+
+ /* The exponent is E such that E is a factor of 2^24. The remainder (of the
+ form 2^x) goes entirely into the first digit of the mantissa as it is
+ always less than 2^24. */
+ EY = pow / 24;
+ rem = pow - EY * 24;
+ EY++;
+
+ /* If the remainder is negative, it means that POW was negative since
+ |EY * 24| <= |pow|. Adjust so that REM is positive and still less than
+ 24 because of which, the mantissa digit is less than 2^24. */
+ if (rem < 0)
+ {
+ EY--;
+ rem += 24;
+ }
+ /* The sign of any 2^x is always positive. */
+ Y[0] = 1;
+ Y[1] = 1 << rem;
+
+ /* Everything else is 0. */
+ for (i = 2; i <= p; i++)
+ Y[i] = 0;
+}
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/mpatan.c b/REORG.TODO/sysdeps/ieee754/dbl-64/mpatan.c
new file mode 100644
index 0000000000..b84fbc5e41
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/mpatan.c
@@ -0,0 +1,116 @@
+/*
+ * IBM Accurate Mathematical Library
+ * written by International Business Machines Corp.
+ * Copyright (C) 2001-2017 Free Software Foundation, Inc.
+ *
+ * This program 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 2.1 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 program; if not, see <http://www.gnu.org/licenses/>.
+ */
+/******************************************************************/
+/* */
+/* MODULE_NAME:mpatan.c */
+/* */
+/* FUNCTIONS:mpatan */
+/* */
+/* FILES NEEDED: mpa.h endian.h mpatan.h */
+/* mpa.c */
+/* */
+/* Multi-Precision Atan function subroutine, for precision p >= 4.*/
+/* The relative error of the result is bounded by 34.32*r**(1-p), */
+/* where r=2**24. */
+/******************************************************************/
+
+#include "endian.h"
+#include "mpa.h"
+#include <math.h>
+
+#ifndef SECTION
+# define SECTION
+#endif
+
+#include "mpatan.h"
+
+void
+SECTION
+__mpatan (mp_no *x, mp_no *y, int p)
+{
+ int i, m, n;
+ double dx;
+ mp_no mptwoim1 =
+ {
+ 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
+ }
+ };
+
+ mp_no mps, mpsm, mpt, mpt1, mpt2, mpt3;
+
+ /* Choose m and initiate mptwoim1. */
+ if (EX > 0)
+ m = 7;
+ else if (EX < 0)
+ m = 0;
+ else
+ {
+ __mp_dbl (x, &dx, p);
+ dx = fabs (dx);
+ for (m = 6; m > 0; m--)
+ {
+ if (dx > __atan_xm[m].d)
+ break;
+ }
+ }
+ mptwoim1.e = 1;
+ mptwoim1.d[0] = 1;
+
+ /* Reduce x m times. */
+ __sqr (x, &mpsm, p);
+ if (m == 0)
+ __cpy (x, &mps, p);
+ else
+ {
+ for (i = 0; i < m; i++)
+ {
+ __add (&__mpone, &mpsm, &mpt1, p);
+ __mpsqrt (&mpt1, &mpt2, p);
+ __add (&mpt2, &mpt2, &mpt1, p);
+ __add (&__mptwo, &mpsm, &mpt2, p);
+ __add (&mpt1, &mpt2, &mpt3, p);
+ __dvd (&mpsm, &mpt3, &mpt1, p);
+ __cpy (&mpt1, &mpsm, p);
+ }
+ __mpsqrt (&mpsm, &mps, p);
+ mps.d[0] = X[0];
+ }
+
+ /* Evaluate a truncated power series for Atan(s). */
+ n = __atan_np[p];
+ mptwoim1.d[1] = __atan_twonm1[p].d;
+ __dvd (&mpsm, &mptwoim1, &mpt, p);
+ for (i = n - 1; i > 1; i--)
+ {
+ mptwoim1.d[1] -= 2;
+ __dvd (&mpsm, &mptwoim1, &mpt1, p);
+ __mul (&mpsm, &mpt, &mpt2, p);
+ __sub (&mpt1, &mpt2, &mpt, p);
+ }
+ __mul (&mps, &mpt, &mpt1, p);
+ __sub (&mps, &mpt1, &mpt, p);
+
+ /* Compute Atan(x). */
+ mptwoim1.d[1] = 1 << m;
+ __mul (&mptwoim1, &mpt, y, p);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/mpatan.h b/REORG.TODO/sysdeps/ieee754/dbl-64/mpatan.h
new file mode 100644
index 0000000000..65c856be17
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/mpatan.h
@@ -0,0 +1,145 @@
+/*
+ * IBM Accurate Mathematical Library
+ * Written by International Business Machines Corp.
+ * Copyright (C) 2001-2017 Free Software Foundation, Inc.
+ *
+ * This program 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 2.1 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 program; if not, see <http://www.gnu.org/licenses/>.
+ */
+
+/******************************************************************/
+/* */
+/* MODULE_NAME:mpatan.h */
+/* */
+/* common data and variables prototype and definition */
+/******************************************************************/
+
+#ifndef MPATAN_H
+#define MPATAN_H
+
+extern const number __atan_xm[8] attribute_hidden;
+extern const number __atan_twonm1[33] attribute_hidden;
+extern const number __atan_twom[8] attribute_hidden;
+extern const int __atan_np[33] attribute_hidden;
+
+
+#ifndef AVOID_MPATAN_H
+#ifdef BIG_ENDI
+ const number
+ __atan_xm[8] = { /* x[m] */
+/**/ {{0x00000000, 0x00000000} }, /* 0.0 */
+/**/ {{0x3f8930be, 0x00000000} }, /* 0.0123 */
+/**/ {{0x3f991687, 0x00000000} }, /* 0.0245 */
+/**/ {{0x3fa923a2, 0x00000000} }, /* 0.0491 */
+/**/ {{0x3fb930be, 0x00000000} }, /* 0.0984 */
+/**/ {{0x3fc95810, 0x00000000} }, /* 0.198 */
+/**/ {{0x3fda7ef9, 0x00000000} }, /* 0.414 */
+/**/ {{0x3ff00000, 0x00000000} }, /* 1.0 */
+ };
+ const number
+ __atan_twonm1[33] = { /* 2n-1 */
+/**/ {{0x00000000, 0x00000000} }, /* 0 */
+/**/ {{0x00000000, 0x00000000} }, /* 0 */
+/**/ {{0x00000000, 0x00000000} }, /* 0 */
+/**/ {{0x00000000, 0x00000000} }, /* 0 */
+/**/ {{0x40260000, 0x00000000} }, /* 11 */
+/**/ {{0x402e0000, 0x00000000} }, /* 15 */
+/**/ {{0x40330000, 0x00000000} }, /* 19 */
+/**/ {{0x40350000, 0x00000000} }, /* 21 */
+/**/ {{0x40390000, 0x00000000} }, /* 25 */
+/**/ {{0x403d0000, 0x00000000} }, /* 29 */
+/**/ {{0x40408000, 0x00000000} }, /* 33 */
+/**/ {{0x40428000, 0x00000000} }, /* 37 */
+/**/ {{0x40448000, 0x00000000} }, /* 41 */
+/**/ {{0x40468000, 0x00000000} }, /* 45 */
+/**/ {{0x40488000, 0x00000000} }, /* 49 */
+/**/ {{0x404a8000, 0x00000000} }, /* 53 */
+/**/ {{0x404b8000, 0x00000000} }, /* 55 */
+/**/ {{0x404d8000, 0x00000000} }, /* 59 */
+/**/ {{0x404f8000, 0x00000000} }, /* 63 */
+/**/ {{0x4050c000, 0x00000000} }, /* 67 */
+/**/ {{0x4051c000, 0x00000000} }, /* 71 */
+/**/ {{0x4052c000, 0x00000000} }, /* 75 */
+/**/ {{0x4053c000, 0x00000000} }, /* 79 */
+/**/ {{0x4054c000, 0x00000000} }, /* 83 */
+/**/ {{0x40554000, 0x00000000} }, /* 85 */
+/**/ {{0x40564000, 0x00000000} }, /* 89 */
+/**/ {{0x40574000, 0x00000000} }, /* 93 */
+/**/ {{0x40584000, 0x00000000} }, /* 97 */
+/**/ {{0x40594000, 0x00000000} }, /* 101 */
+/**/ {{0x405a4000, 0x00000000} }, /* 105 */
+/**/ {{0x405b4000, 0x00000000} }, /* 109 */
+/**/ {{0x405c4000, 0x00000000} }, /* 113 */
+/**/ {{0x405d4000, 0x00000000} }, /* 117 */
+ };
+
+#else
+#ifdef LITTLE_ENDI
+
+ const number
+ __atan_xm[8] = { /* x[m] */
+/**/ {{0x00000000, 0x00000000} }, /* 0.0 */
+/**/ {{0x00000000, 0x3f8930be} }, /* 0.0123 */
+/**/ {{0x00000000, 0x3f991687} }, /* 0.0245 */
+/**/ {{0x00000000, 0x3fa923a2} }, /* 0.0491 */
+/**/ {{0x00000000, 0x3fb930be} }, /* 0.0984 */
+/**/ {{0x00000000, 0x3fc95810} }, /* 0.198 */
+/**/ {{0x00000000, 0x3fda7ef9} }, /* 0.414 */
+/**/ {{0x00000000, 0x3ff00000} }, /* 1.0 */
+ };
+ const number
+__atan_twonm1[33] = { /* 2n-1 */
+/**/ {{0x00000000, 0x00000000} }, /* 0 */
+/**/ {{0x00000000, 0x00000000} }, /* 0 */
+/**/ {{0x00000000, 0x00000000} }, /* 0 */
+/**/ {{0x00000000, 0x00000000} }, /* 0 */
+/**/ {{0x00000000, 0x40260000} }, /* 11 */
+/**/ {{0x00000000, 0x402e0000} }, /* 15 */
+/**/ {{0x00000000, 0x40330000} }, /* 19 */
+/**/ {{0x00000000, 0x40350000} }, /* 21 */
+/**/ {{0x00000000, 0x40390000} }, /* 25 */
+/**/ {{0x00000000, 0x403d0000} }, /* 29 */
+/**/ {{0x00000000, 0x40408000} }, /* 33 */
+/**/ {{0x00000000, 0x40428000} }, /* 37 */
+/**/ {{0x00000000, 0x40448000} }, /* 41 */
+/**/ {{0x00000000, 0x40468000} }, /* 45 */
+/**/ {{0x00000000, 0x40488000} }, /* 49 */
+/**/ {{0x00000000, 0x404a8000} }, /* 53 */
+/**/ {{0x00000000, 0x404b8000} }, /* 55 */
+/**/ {{0x00000000, 0x404d8000} }, /* 59 */
+/**/ {{0x00000000, 0x404f8000} }, /* 63 */
+/**/ {{0x00000000, 0x4050c000} }, /* 67 */
+/**/ {{0x00000000, 0x4051c000} }, /* 71 */
+/**/ {{0x00000000, 0x4052c000} }, /* 75 */
+/**/ {{0x00000000, 0x4053c000} }, /* 79 */
+/**/ {{0x00000000, 0x4054c000} }, /* 83 */
+/**/ {{0x00000000, 0x40554000} }, /* 85 */
+/**/ {{0x00000000, 0x40564000} }, /* 89 */
+/**/ {{0x00000000, 0x40574000} }, /* 93 */
+/**/ {{0x00000000, 0x40584000} }, /* 97 */
+/**/ {{0x00000000, 0x40594000} }, /* 101 */
+/**/ {{0x00000000, 0x405a4000} }, /* 105 */
+/**/ {{0x00000000, 0x405b4000} }, /* 109 */
+/**/ {{0x00000000, 0x405c4000} }, /* 113 */
+/**/ {{0x00000000, 0x405d4000} }, /* 117 */
+ };
+
+#endif
+#endif
+
+ const int
+ __atan_np[33] = { 0, 0, 0, 0, 6, 8,10,11,13,15,17,19,21,23,25,27,28,
+ 30,32,34,36,38,40,42,43,45,47,49,51,53,55,57,59};
+
+#endif
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/mpatan2.c b/REORG.TODO/sysdeps/ieee754/dbl-64/mpatan2.c
new file mode 100644
index 0000000000..94e4a66148
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/mpatan2.c
@@ -0,0 +1,67 @@
+/*
+ * IBM Accurate Mathematical Library
+ * written by International Business Machines Corp.
+ * Copyright (C) 2001-2017 Free Software Foundation, Inc.
+ *
+ * This program 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 2.1 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 program; if not, see <http://www.gnu.org/licenses/>.
+ */
+/******************************************************************/
+/* MODULE_NAME: mpatan2.c */
+/* */
+/* FUNCTIONS:mpatan2 */
+/* */
+/* FILES NEEDED: mpa.h */
+/* mpa.c mpatan.c mpsqrt.c */
+/* */
+/* Multi-Precision Atan2(y,x) function subroutine, */
+/* for precision p >= 4. */
+/* y=0 is not permitted if x<=0. No error messages are given. */
+/* The relative error of the result is bounded by 44.84*r**(1-p) */
+/* if x <= 0, y != 0 and by 37.33*r**(1-p) if x>0. here r=2**24. */
+/* */
+/******************************************************************/
+
+#include "mpa.h"
+
+#ifndef SECTION
+# define SECTION
+#endif
+
+/* Multi-Precision Atan2 (y, x) function subroutine, for p >= 4.
+ y = 0 is not permitted if x <= 0. No error messages are given. */
+void
+SECTION
+__mpatan2 (mp_no *y, mp_no *x, mp_no *z, int p)
+{
+ mp_no mpt1, mpt2, mpt3;
+
+ if (X[0] <= 0)
+ {
+ __dvd (x, y, &mpt1, p);
+ __mul (&mpt1, &mpt1, &mpt2, p);
+ if (mpt1.d[0] != 0)
+ mpt1.d[0] = 1;
+ __add (&mpt2, &__mpone, &mpt3, p);
+ __mpsqrt (&mpt3, &mpt2, p);
+ __add (&mpt1, &mpt2, &mpt3, p);
+ mpt3.d[0] = Y[0];
+ __mpatan (&mpt3, &mpt1, p);
+ __add (&mpt1, &mpt1, z, p);
+ }
+ else
+ {
+ __dvd (y, x, &mpt1, p);
+ __mpatan (&mpt1, z, p);
+ }
+}
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/mpexp.c b/REORG.TODO/sysdeps/ieee754/dbl-64/mpexp.c
new file mode 100644
index 0000000000..e08f424133
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/mpexp.c
@@ -0,0 +1,163 @@
+/*
+ * IBM Accurate Mathematical Library
+ * written by International Business Machines Corp.
+ * Copyright (C) 2001-2017 Free Software Foundation, Inc.
+ *
+ * This program 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 2.1 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 program; if not, see <http://www.gnu.org/licenses/>.
+ */
+/*************************************************************************/
+/* MODULE_NAME:mpexp.c */
+/* */
+/* FUNCTIONS: mpexp */
+/* */
+/* FILES NEEDED: mpa.h endian.h mpexp.h */
+/* mpa.c */
+/* */
+/* Multi-Precision exponential function subroutine */
+/* ( for p >= 4, 2**(-55) <= abs(x) <= 1024 ). */
+/*************************************************************************/
+
+#include "endian.h"
+#include "mpa.h"
+#include <assert.h>
+
+#ifndef SECTION
+# define SECTION
+#endif
+
+/* Multi-Precision exponential function subroutine (for p >= 4,
+ 2**(-55) <= abs(x) <= 1024). */
+void
+SECTION
+__mpexp (mp_no *x, mp_no *y, int p)
+{
+ int i, j, k, m, m1, m2, n;
+ mantissa_t b;
+ static const int np[33] =
+ {
+ 0, 0, 0, 0, 3, 3, 4, 4, 5, 4, 4, 5, 5, 5, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 8
+ };
+
+ static const int m1p[33] =
+ {
+ 0, 0, 0, 0,
+ 17, 23, 23, 28,
+ 27, 38, 42, 39,
+ 43, 47, 43, 47,
+ 50, 54, 57, 60,
+ 64, 67, 71, 74,
+ 68, 71, 74, 77,
+ 70, 73, 76, 78,
+ 81
+ };
+ static const int m1np[7][18] =
+ {
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+ {0, 0, 0, 0, 36, 48, 60, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+ {0, 0, 0, 0, 24, 32, 40, 48, 56, 64, 72, 0, 0, 0, 0, 0, 0, 0},
+ {0, 0, 0, 0, 17, 23, 29, 35, 41, 47, 53, 59, 65, 0, 0, 0, 0, 0},
+ {0, 0, 0, 0, 0, 0, 23, 28, 33, 38, 42, 47, 52, 57, 62, 66, 0, 0},
+ {0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 39, 43, 47, 51, 55, 59, 63},
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 47, 50, 54}
+ };
+ mp_no mps, mpk, mpt1, mpt2;
+
+ /* Choose m,n and compute a=2**(-m). */
+ n = np[p];
+ m1 = m1p[p];
+ b = X[1];
+ m2 = 24 * EX;
+ for (; b < HALFRAD; m2--)
+ b *= 2;
+ if (b == HALFRAD)
+ {
+ for (i = 2; i <= p; i++)
+ {
+ if (X[i] != 0)
+ break;
+ }
+ if (i == p + 1)
+ m2--;
+ }
+
+ m = m1 + m2;
+ if (__glibc_unlikely (m <= 0))
+ {
+ /* The m1np array which is used to determine if we can reduce the
+ polynomial expansion iterations, has only 18 elements. Besides,
+ numbers smaller than those required by p >= 18 should not come here
+ at all since the fast phase of exp returns 1.0 for anything less
+ than 2^-55. */
+ assert (p < 18);
+ m = 0;
+ for (i = n - 1; i > 0; i--, n--)
+ if (m1np[i][p] + m2 > 0)
+ break;
+ }
+
+ /* Compute s=x*2**(-m). Put result in mps. This is the range-reduced input
+ that we will use to compute e^s. For the final result, simply raise it
+ to 2^m. */
+ __pow_mp (-m, &mpt1, p);
+ __mul (x, &mpt1, &mps, p);
+
+ /* Compute the Taylor series for e^s:
+
+ 1 + x/1! + x^2/2! + x^3/3! ...
+
+ for N iterations. We compute this as:
+
+ e^x = 1 + (x * n!/1! + x^2 * n!/2! + x^3 * n!/3!) / n!
+ = 1 + (x * (n!/1! + x * (n!/2! + x * (n!/3! + x ...)))) / n!
+
+ k! is computed on the fly as KF and at the end of the polynomial loop, KF
+ is n!, which can be used directly. */
+ __cpy (&mps, &mpt2, p);
+
+ double kf = 1.0;
+
+ /* Evaluate the rest. The result will be in mpt2. */
+ for (k = n - 1; k > 0; k--)
+ {
+ /* n! / k! = n * (n - 1) ... * (n - k + 1) */
+ kf *= k + 1;
+
+ __dbl_mp (kf, &mpk, p);
+ __add (&mpt2, &mpk, &mpt1, p);
+ __mul (&mps, &mpt1, &mpt2, p);
+ }
+ __dbl_mp (kf, &mpk, p);
+ __dvd (&mpt2, &mpk, &mpt1, p);
+ __add (&__mpone, &mpt1, &mpt2, p);
+
+ /* Raise polynomial value to the power of 2**m. Put result in y. */
+ for (k = 0, j = 0; k < m;)
+ {
+ __sqr (&mpt2, &mpt1, p);
+ k++;
+ if (k == m)
+ {
+ j = 1;
+ break;
+ }
+ __sqr (&mpt1, &mpt2, p);
+ k++;
+ }
+ if (j)
+ __cpy (&mpt1, y, p);
+ else
+ __cpy (&mpt2, y, p);
+ return;
+}
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/mplog.c b/REORG.TODO/sysdeps/ieee754/dbl-64/mplog.c
new file mode 100644
index 0000000000..5b03117d07
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/mplog.c
@@ -0,0 +1,65 @@
+/*
+ * IBM Accurate Mathematical Library
+ * written by International Business Machines Corp.
+ * Copyright (C) 2001-2017 Free Software Foundation, Inc.
+ *
+ * This program 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 2.1 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 program; if not, see <http://www.gnu.org/licenses/>.
+ */
+/************************************************************************/
+/* */
+/* MODULE_NAME:mplog.c */
+/* */
+/* FUNCTIONS: mplog */
+/* */
+/* FILES NEEDED: endian.h mpa.h mplog.h */
+/* mpexp.c */
+/* */
+/* Multi-Precision logarithm function subroutine (for precision p >= 4, */
+/* 2**(-1024) < x < 2**1024) and x is outside of the interval */
+/* [1-2**(-54),1+2**(-54)]. Upon entry, x should be set to the */
+/* multi-precision value of the input and y should be set into a multi- */
+/* precision value of an approximation of log(x) with relative error */
+/* bound of at most 2**(-52). The routine improves the accuracy of y. */
+/* */
+/************************************************************************/
+#include "endian.h"
+#include "mpa.h"
+
+void
+__mplog (mp_no *x, mp_no *y, int p)
+{
+ int i, m;
+ static const int mp[33] =
+ {
+ 0, 0, 0, 0, 0, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4
+ };
+ mp_no mpt1, mpt2;
+
+ /* Choose m. */
+ m = mp[p];
+
+ /* Perform m newton iterations to solve for y: exp(y) - x = 0. The
+ iterations formula is: y(n + 1) = y(n) + (x * exp(-y(n)) - 1). */
+ __cpy (y, &mpt1, p);
+ for (i = 0; i < m; i++)
+ {
+ mpt1.d[0] = -mpt1.d[0];
+ __mpexp (&mpt1, &mpt2, p);
+ __mul (x, &mpt2, &mpt1, p);
+ __sub (&mpt1, &__mpone, &mpt2, p);
+ __add (y, &mpt2, &mpt1, p);
+ __cpy (&mpt1, y, p);
+ }
+}
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/mpn2dbl.c b/REORG.TODO/sysdeps/ieee754/dbl-64/mpn2dbl.c
new file mode 100644
index 0000000000..1fec0ce920
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/mpn2dbl.c
@@ -0,0 +1,47 @@
+/* Copyright (C) 1995-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include "gmp.h"
+#include "gmp-impl.h"
+#include <ieee754.h>
+#include <float.h>
+
+/* Convert a multi-precision integer of the needed number of bits (53 for
+ double) and an integral power of two to a `double' in IEEE754 double-
+ precision format. */
+
+double
+__mpn_construct_double (mp_srcptr frac_ptr, int expt, int negative)
+{
+ union ieee754_double u;
+
+ u.ieee.negative = negative;
+ u.ieee.exponent = expt + IEEE754_DOUBLE_BIAS;
+#if BITS_PER_MP_LIMB == 32
+ u.ieee.mantissa1 = frac_ptr[0];
+ u.ieee.mantissa0 = frac_ptr[1] & (((mp_limb_t) 1
+ << (DBL_MANT_DIG - 32)) - 1);
+#elif BITS_PER_MP_LIMB == 64
+ u.ieee.mantissa1 = frac_ptr[0] & (((mp_limb_t) 1 << 32) - 1);
+ u.ieee.mantissa0 = (frac_ptr[0] >> 32) & (((mp_limb_t) 1
+ << (DBL_MANT_DIG - 32)) - 1);
+#else
+ # error "mp_limb size " BITS_PER_MP_LIMB "not accounted for"
+#endif
+
+ return u.d;
+}
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/mpsqrt.c b/REORG.TODO/sysdeps/ieee754/dbl-64/mpsqrt.c
new file mode 100644
index 0000000000..be6d01eeef
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/mpsqrt.c
@@ -0,0 +1,111 @@
+/*
+ * IBM Accurate Mathematical Library
+ * written by International Business Machines Corp.
+ * Copyright (C) 2001-2017 Free Software Foundation, Inc.
+ *
+ * This program 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 2.1 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 program; if not, see <http://www.gnu.org/licenses/>.
+ */
+/****************************************************************************/
+/* MODULE_NAME:mpsqrt.c */
+/* */
+/* FUNCTION:mpsqrt */
+/* fastiroot */
+/* */
+/* FILES NEEDED:endian.h mpa.h mpsqrt.h */
+/* mpa.c */
+/* Multi-Precision square root function subroutine for precision p >= 4. */
+/* The relative error is bounded by 3.501*r**(1-p), where r=2**24. */
+/* */
+/****************************************************************************/
+#include "endian.h"
+#include "mpa.h"
+
+#ifndef SECTION
+# define SECTION
+#endif
+
+#include "mpsqrt.h"
+
+/****************************************************************************/
+/* Multi-Precision square root function subroutine for precision p >= 4. */
+/* The relative error is bounded by 3.501*r**(1-p), where r=2**24. */
+/* Routine receives two pointers to Multi Precision numbers: */
+/* x (left argument) and y (next argument). Routine also receives precision */
+/* p as integer. Routine computes sqrt(*x) and stores result in *y */
+/****************************************************************************/
+
+static double fastiroot (double);
+
+void
+SECTION
+__mpsqrt (mp_no *x, mp_no *y, int p)
+{
+ int i, m, ey;
+ double dx, dy;
+ static const mp_no mphalf = {0, {1.0, HALFRAD}};
+ static const mp_no mp3halfs = {1, {1.0, 1.0, HALFRAD}};
+ mp_no mpxn, mpz, mpu, mpt1, mpt2;
+
+ ey = EX / 2;
+ __cpy (x, &mpxn, p);
+ mpxn.e -= (ey + ey);
+ __mp_dbl (&mpxn, &dx, p);
+ dy = fastiroot (dx);
+ __dbl_mp (dy, &mpu, p);
+ __mul (&mpxn, &mphalf, &mpz, p);
+
+ m = __mpsqrt_mp[p];
+ for (i = 0; i < m; i++)
+ {
+ __sqr (&mpu, &mpt1, p);
+ __mul (&mpt1, &mpz, &mpt2, p);
+ __sub (&mp3halfs, &mpt2, &mpt1, p);
+ __mul (&mpu, &mpt1, &mpt2, p);
+ __cpy (&mpt2, &mpu, p);
+ }
+ __mul (&mpxn, &mpu, y, p);
+ EY += ey;
+}
+
+/***********************************************************/
+/* Compute a double precision approximation for 1/sqrt(x) */
+/* with the relative error bounded by 2**-51. */
+/***********************************************************/
+static double
+SECTION
+fastiroot (double x)
+{
+ union
+ {
+ int i[2];
+ double d;
+ } p, q;
+ double y, z, t;
+ int n;
+ static const double c0 = 0.99674, c1 = -0.53380;
+ static const double c2 = 0.45472, c3 = -0.21553;
+
+ p.d = x;
+ p.i[HIGH_HALF] = (p.i[HIGH_HALF] & 0x3FFFFFFF) | 0x3FE00000;
+ q.d = x;
+ y = p.d;
+ z = y - 1.0;
+ n = (q.i[HIGH_HALF] - p.i[HIGH_HALF]) >> 1;
+ z = ((c3 * z + c2) * z + c1) * z + c0; /* 2**-7 */
+ z = z * (1.5 - 0.5 * y * z * z); /* 2**-14 */
+ p.d = z * (1.5 - 0.5 * y * z * z); /* 2**-28 */
+ p.i[HIGH_HALF] -= n;
+ t = x * p.d;
+ return p.d * (1.5 - 0.5 * p.d * t);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/mpsqrt.h b/REORG.TODO/sysdeps/ieee754/dbl-64/mpsqrt.h
new file mode 100644
index 0000000000..66c3dc684f
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/mpsqrt.h
@@ -0,0 +1,38 @@
+/*
+ * IBM Accurate Mathematical Library
+ * Written by International Business Machines Corp.
+ * Copyright (C) 2001-2017 Free Software Foundation, Inc.
+ *
+ * This program 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 2.1 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 program; if not, see <http://www.gnu.org/licenses/>.
+ */
+
+/******************************************************************/
+/* */
+/* MODULE_NAME:mpatan.h */
+/* */
+/* common data and variables prototype and definition */
+/******************************************************************/
+
+#ifndef MPSQRT_H
+#define MPSQRT_H
+
+extern const int __mpsqrt_mp[33] attribute_hidden;
+
+
+#ifndef AVOID_MPSQRT_H
+ const int __mpsqrt_mp[33] = {0,0,0,0,1,2,2,2,2,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4};
+#endif
+
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/mptan.c b/REORG.TODO/sysdeps/ieee754/dbl-64/mptan.c
new file mode 100644
index 0000000000..6976028f8f
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/mptan.c
@@ -0,0 +1,63 @@
+/*
+ * IBM Accurate Mathematical Library
+ * written by International Business Machines Corp.
+ * Copyright (C) 2001-2017 Free Software Foundation, Inc.
+ *
+ * This program 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 2.1 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 program; if not, see <http://www.gnu.org/licenses/>.
+ */
+/**********************************************************************/
+/* MODULE_NAME:mptan.c */
+/* */
+/* FUNCTION: mptan */
+/* */
+/* FILES NEEDED: endian.h mpa.h */
+/* mpa.c sincos32.c branred.c */
+/* */
+/* Multi-Precision tan() function subroutine, for p=32. It is based */
+/* on the routines mpranred() and c32(). mpranred() performs range */
+/* reduction of a double number x into a multiple precision number */
+/* y, such that y=x-n*pi/2, abs(y)<pi/4, n=0,+-1,+-2,.... c32() */
+/* computes both sin(y), cos(y). tan(x) is either sin(y)/cos(y) */
+/* or -cos(y)/sin(y). The precision of the result is of about 559 */
+/* significant bits. */
+/* */
+/**********************************************************************/
+#include "endian.h"
+#include "mpa.h"
+
+#ifndef SECTION
+# define SECTION
+#endif
+
+void
+SECTION
+__mptan (double x, mp_no *mpy, int p)
+{
+ int n;
+ mp_no mpw, mpc, mps;
+
+ /* Negative or positive result. */
+ n = __mpranred (x, &mpw, p) & 0x00000001;
+ /* Computing sin(x) and cos(x). */
+ __c32 (&mpw, &mpc, &mps, p);
+ /* Second or fourth quarter of unit circle. */
+ if (n)
+ {
+ __dvd (&mpc, &mps, mpy, p);
+ mpy->d[0] *= -1;
+ }
+ /* tan is negative in this area. */
+ else
+ __dvd (&mps, &mpc, mpy, p);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/mydefs.h b/REORG.TODO/sysdeps/ieee754/dbl-64/mydefs.h
new file mode 100644
index 0000000000..027398e861
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/mydefs.h
@@ -0,0 +1,35 @@
+/*
+ * IBM Accurate Mathematical Library
+ * Written by International Business Machines Corp.
+ * Copyright (C) 2001-2017 Free Software Foundation, Inc.
+ *
+ * This program 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 2.1 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 program; if not, see <http://www.gnu.org/licenses/>.
+ */
+
+/******************************************************************/
+/* */
+/* MODULE_NAME:mydefs.h */
+/* */
+/* common data and definition */
+/******************************************************************/
+
+#ifndef MY_H
+#define MY_H
+
+typedef int int4;
+typedef union { int4 i[2]; double x; } mynumber;
+
+#define max(x, y) (((y) > (x)) ? (y) : (x))
+#define min(x, y) (((y) < (x)) ? (y) : (x))
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/powtwo.tbl b/REORG.TODO/sysdeps/ieee754/dbl-64/powtwo.tbl
new file mode 100644
index 0000000000..7d5ae52174
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/powtwo.tbl
@@ -0,0 +1,31 @@
+/*
+ * IBM Accurate Mathematical Library
+ * Written by International Business Machines Corp.
+ * Copyright (C) 2001-2017 Free Software Foundation, Inc.
+ *
+ * This program 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 2.1 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 program; if not, see <http://www.gnu.org/licenses/>.
+ */
+
+/****************************************************************/
+/* TABLES FOR THE upow() FUNCTION */
+/****************************************************************/
+
+
+
+static const double powtwo[] = { 1.0, 2.0, 4.0,
+ 8.0, 16.0, 32.0, 64.0, 128.0,
+ 256.0, 512.0, 1024.0, 2048.0, 4096.0,
+ 8192.0, 16384.0, 32768.0, 65536.0, 131072.0,
+ 262144.0, 524288.0, 1048576.0, 2097152.0, 4194304.0,
+ 8388608.0, 16777216.0, 33554432.0, 67108864.0, 134217728.0 };
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/root.tbl b/REORG.TODO/sysdeps/ieee754/dbl-64/root.tbl
new file mode 100644
index 0000000000..6d2760aa1f
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/root.tbl
@@ -0,0 +1,57 @@
+/*
+ * IBM Accurate Mathematical Library
+ * Written by International Business Machines Corp.
+ * Copyright (C) 2001-2017 Free Software Foundation, Inc.
+ *
+ * This program 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 2.1 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 program; if not, see <http://www.gnu.org/licenses/>.
+ */
+
+/****************************************************************/
+/* TABLES FOR THE usqrt() FUNCTION */
+/****************************************************************/
+
+
+static const double inroot[128] = {
+ 1.40872145012100, 1.39792649065766, 1.38737595123859, 1.37706074531819,
+ 1.36697225234682, 1.35710228748795, 1.34744307370643, 1.33798721601135,
+ 1.32872767765984, 1.31965775814772, 1.31077107283046, 1.30206153403386,
+ 1.29352333352711, 1.28515092624400, 1.27693901514820, 1.26888253714903,
+ 1.26097664998256, 1.25321671998073, 1.24559831065844, 1.23811717205462,
+ 1.23076923076923, 1.22355058064300, 1.21645747403153, 1.20948631362953,
+ 1.20263364480453, 1.19589614840310, 1.18927063399547, 1.18275403352732,
+ 1.17634339535009, 1.17003587860341, 1.16382874792529, 1.15771936846787,
+ 1.15170520119791, 1.14578379846309, 1.13995279980655, 1.13420992801334,
+ 1.12855298537376, 1.12297985014975, 1.11748847323133, 1.11207687497107,
+ 1.10674314218572, 1.10148542531442, 1.09630193572405, 1.09119094315276,
+ 1.08615077328341, 1.08117980543918, 1.07627647039410, 1.07143924829188,
+ 1.06666666666667, 1.06195729855996, 1.05730976072814, 1.05272271193563,
+ 1.04819485132867, 1.04372491688551, 1.03931168393861, 1.03495396376504,
+ 1.03065060224133, 1.02640047855933, 1.02220250399990, 1.01805562076124,
+ 1.01395880083916, 1.00991104495649, 1.00591138153909, 1.00195886573624,
+ 0.99611649018350, 0.98848330114434, 0.98102294317595, 0.97372899112030,
+ 0.96659534932828, 0.95961623024651, 0.95278613468066, 0.94609983358253,
+ 0.93955235122353, 0.93313894963169, 0.92685511418159, 0.92069654023750,
+ 0.91465912076005, 0.90873893479530, 0.90293223677296, 0.89723544654727,
+ 0.89164514012056, 0.88615804099474, 0.88077101210109, 0.87548104826333,
+ 0.87028526915267, 0.86518091269740, 0.86016532891275, 0.85523597411976,
+ 0.85039040552437, 0.84562627613070, 0.84094132996422, 0.83633339758291,
+ 0.83180039185606, 0.82734030399203, 0.82295119979782, 0.81863121615464,
+ 0.81437855769486, 0.81019149366693, 0.80606835497581, 0.80200753138734,
+ 0.79800746888611, 0.79406666717674, 0.79018367731967, 0.78635709949278,
+ 0.78258558087123, 0.77886781361798, 0.77520253297841, 0.77158851547266,
+ 0.76802457717971, 0.76450957210799, 0.76104239064719, 0.75762195809661,
+ 0.75424723326565, 0.75091720714229, 0.74763090162560, 0.74438736831878,
+ 0.74118568737933, 0.73802496642311, 0.73490433947940, 0.73182296599416,
+ 0.72878002987884, 0.72577473860242, 0.72280632232420, 0.71987403306536,
+ 0.71697714391715, 0.71411494828392, 0.71128675915902, 0.70849190843208 };
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/s_asinh.c b/REORG.TODO/sysdeps/ieee754/dbl-64/s_asinh.c
new file mode 100644
index 0000000000..9193301b5e
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/s_asinh.c
@@ -0,0 +1,72 @@
+/* @(#)s_asinh.c 5.1 93/09/24 */
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+/* asinh(x)
+ * Method :
+ * Based on
+ * asinh(x) = sign(x) * log [ |x| + sqrt(x*x+1) ]
+ * we have
+ * asinh(x) := x if 1+x*x=1,
+ * := sign(x)*(log(x)+ln2)) for large |x|, else
+ * := sign(x)*log(2|x|+1/(|x|+sqrt(x*x+1))) if|x|>2, else
+ * := sign(x)*log1p(|x| + x^2/(1 + sqrt(1+x^2)))
+ */
+
+#include <float.h>
+#include <math.h>
+#include <math_private.h>
+
+static const double
+ one = 1.00000000000000000000e+00, /* 0x3FF00000, 0x00000000 */
+ ln2 = 6.93147180559945286227e-01, /* 0x3FE62E42, 0xFEFA39EF */
+ huge = 1.00000000000000000000e+300;
+
+double
+__asinh (double x)
+{
+ double w;
+ int32_t hx, ix;
+ GET_HIGH_WORD (hx, x);
+ ix = hx & 0x7fffffff;
+ if (__glibc_unlikely (ix < 0x3e300000)) /* |x|<2**-28 */
+ {
+ math_check_force_underflow (x);
+ if (huge + x > one)
+ return x; /* return x inexact except 0 */
+ }
+ if (__glibc_unlikely (ix > 0x41b00000)) /* |x| > 2**28 */
+ {
+ if (ix >= 0x7ff00000)
+ return x + x; /* x is inf or NaN */
+ w = __ieee754_log (fabs (x)) + ln2;
+ }
+ else
+ {
+ double xa = fabs (x);
+ if (ix > 0x40000000) /* 2**28 > |x| > 2.0 */
+ {
+ w = __ieee754_log (2.0 * xa + one / (__ieee754_sqrt (xa * xa + one) +
+ xa));
+ }
+ else /* 2.0 > |x| > 2**-28 */
+ {
+ double t = xa * xa;
+ w = __log1p (xa + t / (one + __ieee754_sqrt (one + t)));
+ }
+ }
+ return __copysign (w, x);
+}
+weak_alias (__asinh, asinh)
+#ifdef NO_LONG_DOUBLE
+strong_alias (__asinh, __asinhl)
+weak_alias (__asinh, asinhl)
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/s_atan.c b/REORG.TODO/sysdeps/ieee754/dbl-64/s_atan.c
new file mode 100644
index 0000000000..3641a35ce1
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/s_atan.c
@@ -0,0 +1,328 @@
+/*
+ * IBM Accurate Mathematical Library
+ * written by International Business Machines Corp.
+ * Copyright (C) 2001-2017 Free Software Foundation, Inc.
+ *
+ * This program 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 2.1 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 program; if not, see <http://www.gnu.org/licenses/>.
+ */
+/************************************************************************/
+/* MODULE_NAME: atnat.c */
+/* */
+/* FUNCTIONS: uatan */
+/* atanMp */
+/* signArctan */
+/* */
+/* */
+/* FILES NEEDED: dla.h endian.h mpa.h mydefs.h atnat.h */
+/* mpatan.c mpatan2.c mpsqrt.c */
+/* uatan.tbl */
+/* */
+/* An ultimate atan() routine. Given an IEEE double machine number x */
+/* it computes the correctly rounded (to nearest) value of atan(x). */
+/* */
+/* Assumption: Machine arithmetic operations are performed in */
+/* round to nearest mode of IEEE 754 standard. */
+/* */
+/************************************************************************/
+
+#include <dla.h>
+#include "mpa.h"
+#include "MathLib.h"
+#include "uatan.tbl"
+#include "atnat.h"
+#include <fenv.h>
+#include <float.h>
+#include <math.h>
+#include <math_private.h>
+#include <stap-probe.h>
+
+void __mpatan (mp_no *, mp_no *, int); /* see definition in mpatan.c */
+static double atanMp (double, const int[]);
+
+ /* Fix the sign of y and return */
+static double
+__signArctan (double x, double y)
+{
+ return __copysign (y, x);
+}
+
+
+/* An ultimate atan() routine. Given an IEEE double machine number x, */
+/* routine computes the correctly rounded (to nearest) value of atan(x). */
+double
+atan (double x)
+{
+ double cor, s1, ss1, s2, ss2, t1, t2, t3, t7, t8, t9, t10, u, u2, u3,
+ v, vv, w, ww, y, yy, z, zz;
+#ifndef DLA_FMS
+ double t4, t5, t6;
+#endif
+ int i, ux, dx;
+ static const int pr[M] = { 6, 8, 10, 32 };
+ number num;
+
+ num.d = x;
+ ux = num.i[HIGH_HALF];
+ dx = num.i[LOW_HALF];
+
+ /* x=NaN */
+ if (((ux & 0x7ff00000) == 0x7ff00000)
+ && (((ux & 0x000fffff) | dx) != 0x00000000))
+ return x + x;
+
+ /* Regular values of x, including denormals +-0 and +-INF */
+ SET_RESTORE_ROUND (FE_TONEAREST);
+ u = (x < 0) ? -x : x;
+ if (u < C)
+ {
+ if (u < B)
+ {
+ if (u < A)
+ {
+ math_check_force_underflow_nonneg (u);
+ return x;
+ }
+ else
+ { /* A <= u < B */
+ v = x * x;
+ yy = d11.d + v * d13.d;
+ yy = d9.d + v * yy;
+ yy = d7.d + v * yy;
+ yy = d5.d + v * yy;
+ yy = d3.d + v * yy;
+ yy *= x * v;
+
+ if ((y = x + (yy - U1 * x)) == x + (yy + U1 * x))
+ return y;
+
+ EMULV (x, x, v, vv, t1, t2, t3, t4, t5); /* v+vv=x^2 */
+
+ s1 = f17.d + v * f19.d;
+ s1 = f15.d + v * s1;
+ s1 = f13.d + v * s1;
+ s1 = f11.d + v * s1;
+ s1 *= v;
+
+ ADD2 (f9.d, ff9.d, s1, 0, s2, ss2, t1, t2);
+ MUL2 (v, vv, s2, ss2, s1, ss1, t1, t2, t3, t4, t5, t6, t7, t8);
+ ADD2 (f7.d, ff7.d, s1, ss1, s2, ss2, t1, t2);
+ MUL2 (v, vv, s2, ss2, s1, ss1, t1, t2, t3, t4, t5, t6, t7, t8);
+ ADD2 (f5.d, ff5.d, s1, ss1, s2, ss2, t1, t2);
+ MUL2 (v, vv, s2, ss2, s1, ss1, t1, t2, t3, t4, t5, t6, t7, t8);
+ ADD2 (f3.d, ff3.d, s1, ss1, s2, ss2, t1, t2);
+ MUL2 (v, vv, s2, ss2, s1, ss1, t1, t2, t3, t4, t5, t6, t7, t8);
+ MUL2 (x, 0, s1, ss1, s2, ss2, t1, t2, t3, t4, t5, t6, t7,
+ t8);
+ ADD2 (x, 0, s2, ss2, s1, ss1, t1, t2);
+ if ((y = s1 + (ss1 - U5 * s1)) == s1 + (ss1 + U5 * s1))
+ return y;
+
+ return atanMp (x, pr);
+ }
+ }
+ else
+ { /* B <= u < C */
+ i = (TWO52 + TWO8 * u) - TWO52;
+ i -= 16;
+ z = u - cij[i][0].d;
+ yy = cij[i][5].d + z * cij[i][6].d;
+ yy = cij[i][4].d + z * yy;
+ yy = cij[i][3].d + z * yy;
+ yy = cij[i][2].d + z * yy;
+ yy *= z;
+
+ t1 = cij[i][1].d;
+ if (i < 112)
+ {
+ if (i < 48)
+ u2 = U21; /* u < 1/4 */
+ else
+ u2 = U22;
+ } /* 1/4 <= u < 1/2 */
+ else
+ {
+ if (i < 176)
+ u2 = U23; /* 1/2 <= u < 3/4 */
+ else
+ u2 = U24;
+ } /* 3/4 <= u <= 1 */
+ if ((y = t1 + (yy - u2 * t1)) == t1 + (yy + u2 * t1))
+ return __signArctan (x, y);
+
+ z = u - hij[i][0].d;
+
+ s1 = hij[i][14].d + z * hij[i][15].d;
+ s1 = hij[i][13].d + z * s1;
+ s1 = hij[i][12].d + z * s1;
+ s1 = hij[i][11].d + z * s1;
+ s1 *= z;
+
+ ADD2 (hij[i][9].d, hij[i][10].d, s1, 0, s2, ss2, t1, t2);
+ MUL2 (z, 0, s2, ss2, s1, ss1, t1, t2, t3, t4, t5, t6, t7, t8);
+ ADD2 (hij[i][7].d, hij[i][8].d, s1, ss1, s2, ss2, t1, t2);
+ MUL2 (z, 0, s2, ss2, s1, ss1, t1, t2, t3, t4, t5, t6, t7, t8);
+ ADD2 (hij[i][5].d, hij[i][6].d, s1, ss1, s2, ss2, t1, t2);
+ MUL2 (z, 0, s2, ss2, s1, ss1, t1, t2, t3, t4, t5, t6, t7, t8);
+ ADD2 (hij[i][3].d, hij[i][4].d, s1, ss1, s2, ss2, t1, t2);
+ MUL2 (z, 0, s2, ss2, s1, ss1, t1, t2, t3, t4, t5, t6, t7, t8);
+ ADD2 (hij[i][1].d, hij[i][2].d, s1, ss1, s2, ss2, t1, t2);
+ if ((y = s2 + (ss2 - U6 * s2)) == s2 + (ss2 + U6 * s2))
+ return __signArctan (x, y);
+
+ return atanMp (x, pr);
+ }
+ }
+ else
+ {
+ if (u < D)
+ { /* C <= u < D */
+ w = 1 / u;
+ EMULV (w, u, t1, t2, t3, t4, t5, t6, t7);
+ ww = w * ((1 - t1) - t2);
+ i = (TWO52 + TWO8 * w) - TWO52;
+ i -= 16;
+ z = (w - cij[i][0].d) + ww;
+
+ yy = cij[i][5].d + z * cij[i][6].d;
+ yy = cij[i][4].d + z * yy;
+ yy = cij[i][3].d + z * yy;
+ yy = cij[i][2].d + z * yy;
+ yy = HPI1 - z * yy;
+
+ t1 = HPI - cij[i][1].d;
+ if (i < 112)
+ u3 = U31; /* w < 1/2 */
+ else
+ u3 = U32; /* w >= 1/2 */
+ if ((y = t1 + (yy - u3)) == t1 + (yy + u3))
+ return __signArctan (x, y);
+
+ DIV2 (1, 0, u, 0, w, ww, t1, t2, t3, t4, t5, t6, t7, t8, t9,
+ t10);
+ t1 = w - hij[i][0].d;
+ EADD (t1, ww, z, zz);
+
+ s1 = hij[i][14].d + z * hij[i][15].d;
+ s1 = hij[i][13].d + z * s1;
+ s1 = hij[i][12].d + z * s1;
+ s1 = hij[i][11].d + z * s1;
+ s1 *= z;
+
+ ADD2 (hij[i][9].d, hij[i][10].d, s1, 0, s2, ss2, t1, t2);
+ MUL2 (z, zz, s2, ss2, s1, ss1, t1, t2, t3, t4, t5, t6, t7, t8);
+ ADD2 (hij[i][7].d, hij[i][8].d, s1, ss1, s2, ss2, t1, t2);
+ MUL2 (z, zz, s2, ss2, s1, ss1, t1, t2, t3, t4, t5, t6, t7, t8);
+ ADD2 (hij[i][5].d, hij[i][6].d, s1, ss1, s2, ss2, t1, t2);
+ MUL2 (z, zz, s2, ss2, s1, ss1, t1, t2, t3, t4, t5, t6, t7, t8);
+ ADD2 (hij[i][3].d, hij[i][4].d, s1, ss1, s2, ss2, t1, t2);
+ MUL2 (z, zz, s2, ss2, s1, ss1, t1, t2, t3, t4, t5, t6, t7, t8);
+ ADD2 (hij[i][1].d, hij[i][2].d, s1, ss1, s2, ss2, t1, t2);
+ SUB2 (HPI, HPI1, s2, ss2, s1, ss1, t1, t2);
+ if ((y = s1 + (ss1 - U7)) == s1 + (ss1 + U7))
+ return __signArctan (x, y);
+
+ return atanMp (x, pr);
+ }
+ else
+ {
+ if (u < E)
+ { /* D <= u < E */
+ w = 1 / u;
+ v = w * w;
+ EMULV (w, u, t1, t2, t3, t4, t5, t6, t7);
+
+ yy = d11.d + v * d13.d;
+ yy = d9.d + v * yy;
+ yy = d7.d + v * yy;
+ yy = d5.d + v * yy;
+ yy = d3.d + v * yy;
+ yy *= w * v;
+
+ ww = w * ((1 - t1) - t2);
+ ESUB (HPI, w, t3, cor);
+ yy = ((HPI1 + cor) - ww) - yy;
+ if ((y = t3 + (yy - U4)) == t3 + (yy + U4))
+ return __signArctan (x, y);
+
+ DIV2 (1, 0, u, 0, w, ww, t1, t2, t3, t4, t5, t6, t7, t8,
+ t9, t10);
+ MUL2 (w, ww, w, ww, v, vv, t1, t2, t3, t4, t5, t6, t7, t8);
+
+ s1 = f17.d + v * f19.d;
+ s1 = f15.d + v * s1;
+ s1 = f13.d + v * s1;
+ s1 = f11.d + v * s1;
+ s1 *= v;
+
+ ADD2 (f9.d, ff9.d, s1, 0, s2, ss2, t1, t2);
+ MUL2 (v, vv, s2, ss2, s1, ss1, t1, t2, t3, t4, t5, t6, t7, t8);
+ ADD2 (f7.d, ff7.d, s1, ss1, s2, ss2, t1, t2);
+ MUL2 (v, vv, s2, ss2, s1, ss1, t1, t2, t3, t4, t5, t6, t7, t8);
+ ADD2 (f5.d, ff5.d, s1, ss1, s2, ss2, t1, t2);
+ MUL2 (v, vv, s2, ss2, s1, ss1, t1, t2, t3, t4, t5, t6, t7, t8);
+ ADD2 (f3.d, ff3.d, s1, ss1, s2, ss2, t1, t2);
+ MUL2 (v, vv, s2, ss2, s1, ss1, t1, t2, t3, t4, t5, t6, t7, t8);
+ MUL2 (w, ww, s1, ss1, s2, ss2, t1, t2, t3, t4, t5, t6, t7, t8);
+ ADD2 (w, ww, s2, ss2, s1, ss1, t1, t2);
+ SUB2 (HPI, HPI1, s1, ss1, s2, ss2, t1, t2);
+
+ if ((y = s2 + (ss2 - U8)) == s2 + (ss2 + U8))
+ return __signArctan (x, y);
+
+ return atanMp (x, pr);
+ }
+ else
+ {
+ /* u >= E */
+ if (x > 0)
+ return HPI;
+ else
+ return MHPI;
+ }
+ }
+ }
+}
+
+ /* Final stages. Compute atan(x) by multiple precision arithmetic */
+static double
+atanMp (double x, const int pr[])
+{
+ mp_no mpx, mpy, mpy2, mperr, mpt1, mpy1;
+ double y1, y2;
+ int i, p;
+
+ for (i = 0; i < M; i++)
+ {
+ p = pr[i];
+ __dbl_mp (x, &mpx, p);
+ __mpatan (&mpx, &mpy, p);
+ __dbl_mp (u9[i].d, &mpt1, p);
+ __mul (&mpy, &mpt1, &mperr, p);
+ __add (&mpy, &mperr, &mpy1, p);
+ __sub (&mpy, &mperr, &mpy2, p);
+ __mp_dbl (&mpy1, &y1, p);
+ __mp_dbl (&mpy2, &y2, p);
+ if (y1 == y2)
+ {
+ LIBC_PROBE (slowatan, 3, &p, &x, &y1);
+ return y1;
+ }
+ }
+ LIBC_PROBE (slowatan_inexact, 3, &p, &x, &y1);
+ return y1; /*if impossible to do exact computing */
+}
+
+#ifdef NO_LONG_DOUBLE
+weak_alias (atan, atanl)
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/s_cbrt.c b/REORG.TODO/sysdeps/ieee754/dbl-64/s_cbrt.c
new file mode 100644
index 0000000000..689abc89ec
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/s_cbrt.c
@@ -0,0 +1,76 @@
+/* Compute cubic root of double value.
+ Copyright (C) 1997-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Dirk Alboth <dirka@uni-paderborn.de> and
+ Ulrich Drepper <drepper@cygnus.com>, 1997.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+#include <math_private.h>
+
+
+#define CBRT2 1.2599210498948731648 /* 2^(1/3) */
+#define SQR_CBRT2 1.5874010519681994748 /* 2^(2/3) */
+
+static const double factor[5] =
+{
+ 1.0 / SQR_CBRT2,
+ 1.0 / CBRT2,
+ 1.0,
+ CBRT2,
+ SQR_CBRT2
+};
+
+
+double
+__cbrt (double x)
+{
+ double xm, ym, u, t2;
+ int xe;
+
+ /* Reduce X. XM now is an range 1.0 to 0.5. */
+ xm = __frexp (fabs (x), &xe);
+
+ /* If X is not finite or is null return it (with raising exceptions
+ if necessary.
+ Note: *Our* version of `frexp' sets XE to zero if the argument is
+ Inf or NaN. This is not portable but faster. */
+ if (xe == 0 && fpclassify (x) <= FP_ZERO)
+ return x + x;
+
+ u = (0.354895765043919860
+ + ((1.50819193781584896
+ + ((-2.11499494167371287
+ + ((2.44693122563534430
+ + ((-1.83469277483613086
+ + (0.784932344976639262 - 0.145263899385486377 * xm)
+ * xm)
+ * xm))
+ * xm))
+ * xm))
+ * xm));
+
+ t2 = u * u * u;
+
+ ym = u * (t2 + 2.0 * xm) / (2.0 * t2 + xm) * factor[2 + xe % 3];
+
+ return __ldexp (x > 0.0 ? ym : -ym, xe / 3);
+}
+weak_alias (__cbrt, cbrt)
+#ifdef NO_LONG_DOUBLE
+strong_alias (__cbrt, __cbrtl)
+weak_alias (__cbrt, cbrtl)
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/s_ceil.c b/REORG.TODO/sysdeps/ieee754/dbl-64/s_ceil.c
new file mode 100644
index 0000000000..c291c26f57
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/s_ceil.c
@@ -0,0 +1,89 @@
+/* @(#)s_ceil.c 5.1 93/09/24 */
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+/*
+ * ceil(x)
+ * Return x rounded toward -inf to integral value
+ * Method:
+ * Bit twiddling.
+ */
+
+#include <math.h>
+#include <math_private.h>
+
+double
+__ceil (double x)
+{
+ int32_t i0, i1, j0;
+ u_int32_t i, j;
+ EXTRACT_WORDS (i0, i1, x);
+ j0 = ((i0 >> 20) & 0x7ff) - 0x3ff;
+ if (j0 < 20)
+ {
+ if (j0 < 0)
+ {
+ /* return 0*sign(x) if |x|<1 */
+ if (i0 < 0)
+ {
+ i0 = 0x80000000; i1 = 0;
+ }
+ else if ((i0 | i1) != 0)
+ {
+ i0 = 0x3ff00000; i1 = 0;
+ }
+ }
+ else
+ {
+ i = (0x000fffff) >> j0;
+ if (((i0 & i) | i1) == 0)
+ return x; /* x is integral */
+ if (i0 > 0)
+ i0 += (0x00100000) >> j0;
+ i0 &= (~i); i1 = 0;
+ }
+ }
+ else if (j0 > 51)
+ {
+ if (j0 == 0x400)
+ return x + x; /* inf or NaN */
+ else
+ return x; /* x is integral */
+ }
+ else
+ {
+ i = ((u_int32_t) (0xffffffff)) >> (j0 - 20);
+ if ((i1 & i) == 0)
+ return x; /* x is integral */
+ if (i0 > 0)
+ {
+ if (j0 == 20)
+ i0 += 1;
+ else
+ {
+ j = i1 + (1 << (52 - j0));
+ if (j < i1)
+ i0 += 1; /* got a carry */
+ i1 = j;
+ }
+ }
+ i1 &= (~i);
+ }
+ INSERT_WORDS (x, i0, i1);
+ return x;
+}
+#ifndef __ceil
+weak_alias (__ceil, ceil)
+# ifdef NO_LONG_DOUBLE
+strong_alias (__ceil, __ceill)
+weak_alias (__ceil, ceill)
+# endif
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/s_copysign.c b/REORG.TODO/sysdeps/ieee754/dbl-64/s_copysign.c
new file mode 100644
index 0000000000..9caf24e8f2
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/s_copysign.c
@@ -0,0 +1,39 @@
+/* @(#)s_copysign.c 5.1 93/09/24 */
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: s_copysign.c,v 1.8 1995/05/10 20:46:57 jtc Exp $";
+#endif
+
+/*
+ * copysign(double x, double y)
+ * copysign(x,y) returns a value with the magnitude of x and
+ * with the sign bit of y.
+ */
+
+#include <math.h>
+#include <math_private.h>
+
+double
+__copysign (double x, double y)
+{
+ u_int32_t hx, hy;
+ GET_HIGH_WORD (hx, x);
+ GET_HIGH_WORD (hy, y);
+ SET_HIGH_WORD (x, (hx & 0x7fffffff) | (hy & 0x80000000));
+ return x;
+}
+weak_alias (__copysign, copysign)
+#ifdef NO_LONG_DOUBLE
+strong_alias (__copysign, __copysignl)
+weak_alias (__copysign, copysignl)
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/s_cos.c b/REORG.TODO/sysdeps/ieee754/dbl-64/s_cos.c
new file mode 100644
index 0000000000..4be1276ccb
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/s_cos.c
@@ -0,0 +1 @@
+/* In s_sin.c. */
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/s_erf.c b/REORG.TODO/sysdeps/ieee754/dbl-64/s_erf.c
new file mode 100644
index 0000000000..b4975a8af8
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/s_erf.c
@@ -0,0 +1,428 @@
+/* @(#)s_erf.c 5.1 93/09/24 */
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+/* Modified by Naohiko Shimizu/Tokai University, Japan 1997/08/25,
+ for performance improvement on pipelined processors.
+*/
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: s_erf.c,v 1.8 1995/05/10 20:47:05 jtc Exp $";
+#endif
+
+/* double erf(double x)
+ * double erfc(double x)
+ * x
+ * 2 |\
+ * erf(x) = --------- | exp(-t*t)dt
+ * sqrt(pi) \|
+ * 0
+ *
+ * erfc(x) = 1-erf(x)
+ * Note that
+ * erf(-x) = -erf(x)
+ * erfc(-x) = 2 - erfc(x)
+ *
+ * Method:
+ * 1. For |x| in [0, 0.84375]
+ * erf(x) = x + x*R(x^2)
+ * erfc(x) = 1 - erf(x) if x in [-.84375,0.25]
+ * = 0.5 + ((0.5-x)-x*R) if x in [0.25,0.84375]
+ * where R = P/Q where P is an odd poly of degree 8 and
+ * Q is an odd poly of degree 10.
+ * -57.90
+ * | R - (erf(x)-x)/x | <= 2
+ *
+ *
+ * Remark. The formula is derived by noting
+ * erf(x) = (2/sqrt(pi))*(x - x^3/3 + x^5/10 - x^7/42 + ....)
+ * and that
+ * 2/sqrt(pi) = 1.128379167095512573896158903121545171688
+ * is close to one. The interval is chosen because the fix
+ * point of erf(x) is near 0.6174 (i.e., erf(x)=x when x is
+ * near 0.6174), and by some experiment, 0.84375 is chosen to
+ * guarantee the error is less than one ulp for erf.
+ *
+ * 2. For |x| in [0.84375,1.25], let s = |x| - 1, and
+ * c = 0.84506291151 rounded to single (24 bits)
+ * erf(x) = sign(x) * (c + P1(s)/Q1(s))
+ * erfc(x) = (1-c) - P1(s)/Q1(s) if x > 0
+ * 1+(c+P1(s)/Q1(s)) if x < 0
+ * |P1/Q1 - (erf(|x|)-c)| <= 2**-59.06
+ * Remark: here we use the taylor series expansion at x=1.
+ * erf(1+s) = erf(1) + s*Poly(s)
+ * = 0.845.. + P1(s)/Q1(s)
+ * That is, we use rational approximation to approximate
+ * erf(1+s) - (c = (single)0.84506291151)
+ * Note that |P1/Q1|< 0.078 for x in [0.84375,1.25]
+ * where
+ * P1(s) = degree 6 poly in s
+ * Q1(s) = degree 6 poly in s
+ *
+ * 3. For x in [1.25,1/0.35(~2.857143)],
+ * erfc(x) = (1/x)*exp(-x*x-0.5625+R1/S1)
+ * erf(x) = 1 - erfc(x)
+ * where
+ * R1(z) = degree 7 poly in z, (z=1/x^2)
+ * S1(z) = degree 8 poly in z
+ *
+ * 4. For x in [1/0.35,28]
+ * erfc(x) = (1/x)*exp(-x*x-0.5625+R2/S2) if x > 0
+ * = 2.0 - (1/x)*exp(-x*x-0.5625+R2/S2) if -6<x<0
+ * = 2.0 - tiny (if x <= -6)
+ * erf(x) = sign(x)*(1.0 - erfc(x)) if x < 6, else
+ * erf(x) = sign(x)*(1.0 - tiny)
+ * where
+ * R2(z) = degree 6 poly in z, (z=1/x^2)
+ * S2(z) = degree 7 poly in z
+ *
+ * Note1:
+ * To compute exp(-x*x-0.5625+R/S), let s be a single
+ * precision number and s := x; then
+ * -x*x = -s*s + (s-x)*(s+x)
+ * exp(-x*x-0.5626+R/S) =
+ * exp(-s*s-0.5625)*exp((s-x)*(s+x)+R/S);
+ * Note2:
+ * Here 4 and 5 make use of the asymptotic series
+ * exp(-x*x)
+ * erfc(x) ~ ---------- * ( 1 + Poly(1/x^2) )
+ * x*sqrt(pi)
+ * We use rational approximation to approximate
+ * g(s)=f(1/x^2) = log(erfc(x)*x) - x*x + 0.5625
+ * Here is the error bound for R1/S1 and R2/S2
+ * |R1/S1 - f(x)| < 2**(-62.57)
+ * |R2/S2 - f(x)| < 2**(-61.52)
+ *
+ * 5. For inf > x >= 28
+ * erf(x) = sign(x) *(1 - tiny) (raise inexact)
+ * erfc(x) = tiny*tiny (raise underflow) if x > 0
+ * = 2 - tiny if x<0
+ *
+ * 7. Special case:
+ * erf(0) = 0, erf(inf) = 1, erf(-inf) = -1,
+ * erfc(0) = 1, erfc(inf) = 0, erfc(-inf) = 2,
+ * erfc/erf(NaN) is NaN
+ */
+
+
+#include <errno.h>
+#include <float.h>
+#include <math.h>
+#include <math_private.h>
+#include <fix-int-fp-convert-zero.h>
+
+static const double
+ tiny = 1e-300,
+ half = 5.00000000000000000000e-01, /* 0x3FE00000, 0x00000000 */
+ one = 1.00000000000000000000e+00, /* 0x3FF00000, 0x00000000 */
+ two = 2.00000000000000000000e+00, /* 0x40000000, 0x00000000 */
+/* c = (float)0.84506291151 */
+ erx = 8.45062911510467529297e-01, /* 0x3FEB0AC1, 0x60000000 */
+/*
+ * Coefficients for approximation to erf on [0,0.84375]
+ */
+ efx = 1.28379167095512586316e-01, /* 0x3FC06EBA, 0x8214DB69 */
+ pp[] = { 1.28379167095512558561e-01, /* 0x3FC06EBA, 0x8214DB68 */
+ -3.25042107247001499370e-01, /* 0xBFD4CD7D, 0x691CB913 */
+ -2.84817495755985104766e-02, /* 0xBF9D2A51, 0xDBD7194F */
+ -5.77027029648944159157e-03, /* 0xBF77A291, 0x236668E4 */
+ -2.37630166566501626084e-05 }, /* 0xBEF8EAD6, 0x120016AC */
+ qq[] = { 0.0, 3.97917223959155352819e-01, /* 0x3FD97779, 0xCDDADC09 */
+ 6.50222499887672944485e-02, /* 0x3FB0A54C, 0x5536CEBA */
+ 5.08130628187576562776e-03, /* 0x3F74D022, 0xC4D36B0F */
+ 1.32494738004321644526e-04, /* 0x3F215DC9, 0x221C1A10 */
+ -3.96022827877536812320e-06 }, /* 0xBED09C43, 0x42A26120 */
+/*
+ * Coefficients for approximation to erf in [0.84375,1.25]
+ */
+ pa[] = { -2.36211856075265944077e-03, /* 0xBF6359B8, 0xBEF77538 */
+ 4.14856118683748331666e-01, /* 0x3FDA8D00, 0xAD92B34D */
+ -3.72207876035701323847e-01, /* 0xBFD7D240, 0xFBB8C3F1 */
+ 3.18346619901161753674e-01, /* 0x3FD45FCA, 0x805120E4 */
+ -1.10894694282396677476e-01, /* 0xBFBC6398, 0x3D3E28EC */
+ 3.54783043256182359371e-02, /* 0x3FA22A36, 0x599795EB */
+ -2.16637559486879084300e-03 }, /* 0xBF61BF38, 0x0A96073F */
+ qa[] = { 0.0, 1.06420880400844228286e-01, /* 0x3FBB3E66, 0x18EEE323 */
+ 5.40397917702171048937e-01, /* 0x3FE14AF0, 0x92EB6F33 */
+ 7.18286544141962662868e-02, /* 0x3FB2635C, 0xD99FE9A7 */
+ 1.26171219808761642112e-01, /* 0x3FC02660, 0xE763351F */
+ 1.36370839120290507362e-02, /* 0x3F8BEDC2, 0x6B51DD1C */
+ 1.19844998467991074170e-02 }, /* 0x3F888B54, 0x5735151D */
+/*
+ * Coefficients for approximation to erfc in [1.25,1/0.35]
+ */
+ ra[] = { -9.86494403484714822705e-03, /* 0xBF843412, 0x600D6435 */
+ -6.93858572707181764372e-01, /* 0xBFE63416, 0xE4BA7360 */
+ -1.05586262253232909814e+01, /* 0xC0251E04, 0x41B0E726 */
+ -6.23753324503260060396e+01, /* 0xC04F300A, 0xE4CBA38D */
+ -1.62396669462573470355e+02, /* 0xC0644CB1, 0x84282266 */
+ -1.84605092906711035994e+02, /* 0xC067135C, 0xEBCCABB2 */
+ -8.12874355063065934246e+01, /* 0xC0545265, 0x57E4D2F2 */
+ -9.81432934416914548592e+00 }, /* 0xC023A0EF, 0xC69AC25C */
+ sa[] = { 0.0, 1.96512716674392571292e+01, /* 0x4033A6B9, 0xBD707687 */
+ 1.37657754143519042600e+02, /* 0x4061350C, 0x526AE721 */
+ 4.34565877475229228821e+02, /* 0x407B290D, 0xD58A1A71 */
+ 6.45387271733267880336e+02, /* 0x40842B19, 0x21EC2868 */
+ 4.29008140027567833386e+02, /* 0x407AD021, 0x57700314 */
+ 1.08635005541779435134e+02, /* 0x405B28A3, 0xEE48AE2C */
+ 6.57024977031928170135e+00, /* 0x401A47EF, 0x8E484A93 */
+ -6.04244152148580987438e-02 }, /* 0xBFAEEFF2, 0xEE749A62 */
+/*
+ * Coefficients for approximation to erfc in [1/.35,28]
+ */
+ rb[] = { -9.86494292470009928597e-03, /* 0xBF843412, 0x39E86F4A */
+ -7.99283237680523006574e-01, /* 0xBFE993BA, 0x70C285DE */
+ -1.77579549177547519889e+01, /* 0xC031C209, 0x555F995A */
+ -1.60636384855821916062e+02, /* 0xC064145D, 0x43C5ED98 */
+ -6.37566443368389627722e+02, /* 0xC083EC88, 0x1375F228 */
+ -1.02509513161107724954e+03, /* 0xC0900461, 0x6A2E5992 */
+ -4.83519191608651397019e+02 }, /* 0xC07E384E, 0x9BDC383F */
+ sb[] = { 0.0, 3.03380607434824582924e+01, /* 0x403E568B, 0x261D5190 */
+ 3.25792512996573918826e+02, /* 0x40745CAE, 0x221B9F0A */
+ 1.53672958608443695994e+03, /* 0x409802EB, 0x189D5118 */
+ 3.19985821950859553908e+03, /* 0x40A8FFB7, 0x688C246A */
+ 2.55305040643316442583e+03, /* 0x40A3F219, 0xCEDF3BE6 */
+ 4.74528541206955367215e+02, /* 0x407DA874, 0xE79FE763 */
+ -2.24409524465858183362e+01 }; /* 0xC03670E2, 0x42712D62 */
+
+double
+__erf (double x)
+{
+ int32_t hx, ix, i;
+ double R, S, P, Q, s, y, z, r;
+ GET_HIGH_WORD (hx, x);
+ ix = hx & 0x7fffffff;
+ if (ix >= 0x7ff00000) /* erf(nan)=nan */
+ {
+ i = ((u_int32_t) hx >> 31) << 1;
+ return (double) (1 - i) + one / x; /* erf(+-inf)=+-1 */
+ }
+
+ if (ix < 0x3feb0000) /* |x|<0.84375 */
+ {
+ double r1, r2, s1, s2, s3, z2, z4;
+ if (ix < 0x3e300000) /* |x|<2**-28 */
+ {
+ if (ix < 0x00800000)
+ {
+ /* Avoid spurious underflow. */
+ double ret = 0.0625 * (16.0 * x + (16.0 * efx) * x);
+ math_check_force_underflow (ret);
+ return ret;
+ }
+ return x + efx * x;
+ }
+ z = x * x;
+ r1 = pp[0] + z * pp[1]; z2 = z * z;
+ r2 = pp[2] + z * pp[3]; z4 = z2 * z2;
+ s1 = one + z * qq[1];
+ s2 = qq[2] + z * qq[3];
+ s3 = qq[4] + z * qq[5];
+ r = r1 + z2 * r2 + z4 * pp[4];
+ s = s1 + z2 * s2 + z4 * s3;
+ y = r / s;
+ return x + x * y;
+ }
+ if (ix < 0x3ff40000) /* 0.84375 <= |x| < 1.25 */
+ {
+ double s2, s4, s6, P1, P2, P3, P4, Q1, Q2, Q3, Q4;
+ s = fabs (x) - one;
+ P1 = pa[0] + s * pa[1]; s2 = s * s;
+ Q1 = one + s * qa[1]; s4 = s2 * s2;
+ P2 = pa[2] + s * pa[3]; s6 = s4 * s2;
+ Q2 = qa[2] + s * qa[3];
+ P3 = pa[4] + s * pa[5];
+ Q3 = qa[4] + s * qa[5];
+ P4 = pa[6];
+ Q4 = qa[6];
+ P = P1 + s2 * P2 + s4 * P3 + s6 * P4;
+ Q = Q1 + s2 * Q2 + s4 * Q3 + s6 * Q4;
+ if (hx >= 0)
+ return erx + P / Q;
+ else
+ return -erx - P / Q;
+ }
+ if (ix >= 0x40180000) /* inf>|x|>=6 */
+ {
+ if (hx >= 0)
+ return one - tiny;
+ else
+ return tiny - one;
+ }
+ x = fabs (x);
+ s = one / (x * x);
+ if (ix < 0x4006DB6E) /* |x| < 1/0.35 */
+ {
+ double R1, R2, R3, R4, S1, S2, S3, S4, s2, s4, s6, s8;
+ R1 = ra[0] + s * ra[1]; s2 = s * s;
+ S1 = one + s * sa[1]; s4 = s2 * s2;
+ R2 = ra[2] + s * ra[3]; s6 = s4 * s2;
+ S2 = sa[2] + s * sa[3]; s8 = s4 * s4;
+ R3 = ra[4] + s * ra[5];
+ S3 = sa[4] + s * sa[5];
+ R4 = ra[6] + s * ra[7];
+ S4 = sa[6] + s * sa[7];
+ R = R1 + s2 * R2 + s4 * R3 + s6 * R4;
+ S = S1 + s2 * S2 + s4 * S3 + s6 * S4 + s8 * sa[8];
+ }
+ else /* |x| >= 1/0.35 */
+ {
+ double R1, R2, R3, S1, S2, S3, S4, s2, s4, s6;
+ R1 = rb[0] + s * rb[1]; s2 = s * s;
+ S1 = one + s * sb[1]; s4 = s2 * s2;
+ R2 = rb[2] + s * rb[3]; s6 = s4 * s2;
+ S2 = sb[2] + s * sb[3];
+ R3 = rb[4] + s * rb[5];
+ S3 = sb[4] + s * sb[5];
+ S4 = sb[6] + s * sb[7];
+ R = R1 + s2 * R2 + s4 * R3 + s6 * rb[6];
+ S = S1 + s2 * S2 + s4 * S3 + s6 * S4;
+ }
+ z = x;
+ SET_LOW_WORD (z, 0);
+ r = __ieee754_exp (-z * z - 0.5625) *
+ __ieee754_exp ((z - x) * (z + x) + R / S);
+ if (hx >= 0)
+ return one - r / x;
+ else
+ return r / x - one;
+}
+weak_alias (__erf, erf)
+#ifdef NO_LONG_DOUBLE
+strong_alias (__erf, __erfl)
+weak_alias (__erf, erfl)
+#endif
+
+double
+__erfc (double x)
+{
+ int32_t hx, ix;
+ double R, S, P, Q, s, y, z, r;
+ GET_HIGH_WORD (hx, x);
+ ix = hx & 0x7fffffff;
+ if (ix >= 0x7ff00000) /* erfc(nan)=nan */
+ { /* erfc(+-inf)=0,2 */
+ double ret = (double) (((u_int32_t) hx >> 31) << 1) + one / x;
+ if (FIX_INT_FP_CONVERT_ZERO && ret == 0.0)
+ return 0.0;
+ return ret;
+ }
+
+ if (ix < 0x3feb0000) /* |x|<0.84375 */
+ {
+ double r1, r2, s1, s2, s3, z2, z4;
+ if (ix < 0x3c700000) /* |x|<2**-56 */
+ return one - x;
+ z = x * x;
+ r1 = pp[0] + z * pp[1]; z2 = z * z;
+ r2 = pp[2] + z * pp[3]; z4 = z2 * z2;
+ s1 = one + z * qq[1];
+ s2 = qq[2] + z * qq[3];
+ s3 = qq[4] + z * qq[5];
+ r = r1 + z2 * r2 + z4 * pp[4];
+ s = s1 + z2 * s2 + z4 * s3;
+ y = r / s;
+ if (hx < 0x3fd00000) /* x<1/4 */
+ {
+ return one - (x + x * y);
+ }
+ else
+ {
+ r = x * y;
+ r += (x - half);
+ return half - r;
+ }
+ }
+ if (ix < 0x3ff40000) /* 0.84375 <= |x| < 1.25 */
+ {
+ double s2, s4, s6, P1, P2, P3, P4, Q1, Q2, Q3, Q4;
+ s = fabs (x) - one;
+ P1 = pa[0] + s * pa[1]; s2 = s * s;
+ Q1 = one + s * qa[1]; s4 = s2 * s2;
+ P2 = pa[2] + s * pa[3]; s6 = s4 * s2;
+ Q2 = qa[2] + s * qa[3];
+ P3 = pa[4] + s * pa[5];
+ Q3 = qa[4] + s * qa[5];
+ P4 = pa[6];
+ Q4 = qa[6];
+ P = P1 + s2 * P2 + s4 * P3 + s6 * P4;
+ Q = Q1 + s2 * Q2 + s4 * Q3 + s6 * Q4;
+ if (hx >= 0)
+ {
+ z = one - erx; return z - P / Q;
+ }
+ else
+ {
+ z = erx + P / Q; return one + z;
+ }
+ }
+ if (ix < 0x403c0000) /* |x|<28 */
+ {
+ x = fabs (x);
+ s = one / (x * x);
+ if (ix < 0x4006DB6D) /* |x| < 1/.35 ~ 2.857143*/
+ {
+ double R1, R2, R3, R4, S1, S2, S3, S4, s2, s4, s6, s8;
+ R1 = ra[0] + s * ra[1]; s2 = s * s;
+ S1 = one + s * sa[1]; s4 = s2 * s2;
+ R2 = ra[2] + s * ra[3]; s6 = s4 * s2;
+ S2 = sa[2] + s * sa[3]; s8 = s4 * s4;
+ R3 = ra[4] + s * ra[5];
+ S3 = sa[4] + s * sa[5];
+ R4 = ra[6] + s * ra[7];
+ S4 = sa[6] + s * sa[7];
+ R = R1 + s2 * R2 + s4 * R3 + s6 * R4;
+ S = S1 + s2 * S2 + s4 * S3 + s6 * S4 + s8 * sa[8];
+ }
+ else /* |x| >= 1/.35 ~ 2.857143 */
+ {
+ double R1, R2, R3, S1, S2, S3, S4, s2, s4, s6;
+ if (hx < 0 && ix >= 0x40180000)
+ return two - tiny; /* x < -6 */
+ R1 = rb[0] + s * rb[1]; s2 = s * s;
+ S1 = one + s * sb[1]; s4 = s2 * s2;
+ R2 = rb[2] + s * rb[3]; s6 = s4 * s2;
+ S2 = sb[2] + s * sb[3];
+ R3 = rb[4] + s * rb[5];
+ S3 = sb[4] + s * sb[5];
+ S4 = sb[6] + s * sb[7];
+ R = R1 + s2 * R2 + s4 * R3 + s6 * rb[6];
+ S = S1 + s2 * S2 + s4 * S3 + s6 * S4;
+ }
+ z = x;
+ SET_LOW_WORD (z, 0);
+ r = __ieee754_exp (-z * z - 0.5625) *
+ __ieee754_exp ((z - x) * (z + x) + R / S);
+ if (hx > 0)
+ {
+ double ret = math_narrow_eval (r / x);
+ if (ret == 0)
+ __set_errno (ERANGE);
+ return ret;
+ }
+ else
+ return two - r / x;
+ }
+ else
+ {
+ if (hx > 0)
+ {
+ __set_errno (ERANGE);
+ return tiny * tiny;
+ }
+ else
+ return two - tiny;
+ }
+}
+weak_alias (__erfc, erfc)
+#ifdef NO_LONG_DOUBLE
+strong_alias (__erfc, __erfcl)
+weak_alias (__erfc, erfcl)
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/s_expm1.c b/REORG.TODO/sysdeps/ieee754/dbl-64/s_expm1.c
new file mode 100644
index 0000000000..54d771007a
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/s_expm1.c
@@ -0,0 +1,262 @@
+/* @(#)s_expm1.c 5.1 93/09/24 */
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+/* Modified by Naohiko Shimizu/Tokai University, Japan 1997/08/25,
+ for performance improvement on pipelined processors.
+ */
+
+/* expm1(x)
+ * Returns exp(x)-1, the exponential of x minus 1.
+ *
+ * Method
+ * 1. Argument reduction:
+ * Given x, find r and integer k such that
+ *
+ * x = k*ln2 + r, |r| <= 0.5*ln2 ~ 0.34658
+ *
+ * Here a correction term c will be computed to compensate
+ * the error in r when rounded to a floating-point number.
+ *
+ * 2. Approximating expm1(r) by a special rational function on
+ * the interval [0,0.34658]:
+ * Since
+ * r*(exp(r)+1)/(exp(r)-1) = 2+ r^2/6 - r^4/360 + ...
+ * we define R1(r*r) by
+ * r*(exp(r)+1)/(exp(r)-1) = 2+ r^2/6 * R1(r*r)
+ * That is,
+ * R1(r**2) = 6/r *((exp(r)+1)/(exp(r)-1) - 2/r)
+ * = 6/r * ( 1 + 2.0*(1/(exp(r)-1) - 1/r))
+ * = 1 - r^2/60 + r^4/2520 - r^6/100800 + ...
+ * We use a special Reme algorithm on [0,0.347] to generate
+ * a polynomial of degree 5 in r*r to approximate R1. The
+ * maximum error of this polynomial approximation is bounded
+ * by 2**-61. In other words,
+ * R1(z) ~ 1.0 + Q1*z + Q2*z**2 + Q3*z**3 + Q4*z**4 + Q5*z**5
+ * where Q1 = -1.6666666666666567384E-2,
+ * Q2 = 3.9682539681370365873E-4,
+ * Q3 = -9.9206344733435987357E-6,
+ * Q4 = 2.5051361420808517002E-7,
+ * Q5 = -6.2843505682382617102E-9;
+ * (where z=r*r, and the values of Q1 to Q5 are listed below)
+ * with error bounded by
+ * | 5 | -61
+ * | 1.0+Q1*z+...+Q5*z - R1(z) | <= 2
+ * | |
+ *
+ * expm1(r) = exp(r)-1 is then computed by the following
+ * specific way which minimize the accumulation rounding error:
+ * 2 3
+ * r r [ 3 - (R1 + R1*r/2) ]
+ * expm1(r) = r + --- + --- * [--------------------]
+ * 2 2 [ 6 - r*(3 - R1*r/2) ]
+ *
+ * To compensate the error in the argument reduction, we use
+ * expm1(r+c) = expm1(r) + c + expm1(r)*c
+ * ~ expm1(r) + c + r*c
+ * Thus c+r*c will be added in as the correction terms for
+ * expm1(r+c). Now rearrange the term to avoid optimization
+ * screw up:
+ * ( 2 2 )
+ * ({ ( r [ R1 - (3 - R1*r/2) ] ) } r )
+ * expm1(r+c)~r - ({r*(--- * [--------------------]-c)-c} - --- )
+ * ({ ( 2 [ 6 - r*(3 - R1*r/2) ] ) } 2 )
+ * ( )
+ *
+ * = r - E
+ * 3. Scale back to obtain expm1(x):
+ * From step 1, we have
+ * expm1(x) = either 2^k*[expm1(r)+1] - 1
+ * = or 2^k*[expm1(r) + (1-2^-k)]
+ * 4. Implementation notes:
+ * (A). To save one multiplication, we scale the coefficient Qi
+ * to Qi*2^i, and replace z by (x^2)/2.
+ * (B). To achieve maximum accuracy, we compute expm1(x) by
+ * (i) if x < -56*ln2, return -1.0, (raise inexact if x!=inf)
+ * (ii) if k=0, return r-E
+ * (iii) if k=-1, return 0.5*(r-E)-0.5
+ * (iv) if k=1 if r < -0.25, return 2*((r+0.5)- E)
+ * else return 1.0+2.0*(r-E);
+ * (v) if (k<-2||k>56) return 2^k(1-(E-r)) - 1 (or exp(x)-1)
+ * (vi) if k <= 20, return 2^k((1-2^-k)-(E-r)), else
+ * (vii) return 2^k(1-((E+2^-k)-r))
+ *
+ * Special cases:
+ * expm1(INF) is INF, expm1(NaN) is NaN;
+ * expm1(-INF) is -1, and
+ * for finite argument, only expm1(0)=0 is exact.
+ *
+ * Accuracy:
+ * according to an error analysis, the error is always less than
+ * 1 ulp (unit in the last place).
+ *
+ * Misc. info.
+ * For IEEE double
+ * if x > 7.09782712893383973096e+02 then expm1(x) overflow
+ *
+ * Constants:
+ * The hexadecimal values are the intended ones for the following
+ * constants. The decimal values may be used, provided that the
+ * compiler will convert from decimal to binary accurately enough
+ * to produce the hexadecimal values shown.
+ */
+
+#include <errno.h>
+#include <float.h>
+#include <math.h>
+#include <math_private.h>
+#define one Q[0]
+static const double
+ huge = 1.0e+300,
+ tiny = 1.0e-300,
+ o_threshold = 7.09782712893383973096e+02, /* 0x40862E42, 0xFEFA39EF */
+ ln2_hi = 6.93147180369123816490e-01, /* 0x3fe62e42, 0xfee00000 */
+ ln2_lo = 1.90821492927058770002e-10, /* 0x3dea39ef, 0x35793c76 */
+ invln2 = 1.44269504088896338700e+00, /* 0x3ff71547, 0x652b82fe */
+/* scaled coefficients related to expm1 */
+ Q[] = { 1.0, -3.33333333333331316428e-02, /* BFA11111 111110F4 */
+ 1.58730158725481460165e-03, /* 3F5A01A0 19FE5585 */
+ -7.93650757867487942473e-05, /* BF14CE19 9EAADBB7 */
+ 4.00821782732936239552e-06, /* 3ED0CFCA 86E65239 */
+ -2.01099218183624371326e-07 }; /* BE8AFDB7 6E09C32D */
+
+double
+__expm1 (double x)
+{
+ double y, hi, lo, c, t, e, hxs, hfx, r1, h2, h4, R1, R2, R3;
+ int32_t k, xsb;
+ u_int32_t hx;
+
+ GET_HIGH_WORD (hx, x);
+ xsb = hx & 0x80000000; /* sign bit of x */
+ if (xsb == 0)
+ y = x;
+ else
+ y = -x; /* y = |x| */
+ hx &= 0x7fffffff; /* high word of |x| */
+
+ /* filter out huge and non-finite argument */
+ if (hx >= 0x4043687A) /* if |x|>=56*ln2 */
+ {
+ if (hx >= 0x40862E42) /* if |x|>=709.78... */
+ {
+ if (hx >= 0x7ff00000)
+ {
+ u_int32_t low;
+ GET_LOW_WORD (low, x);
+ if (((hx & 0xfffff) | low) != 0)
+ return x + x; /* NaN */
+ else
+ return (xsb == 0) ? x : -1.0; /* exp(+-inf)={inf,-1} */
+ }
+ if (x > o_threshold)
+ {
+ __set_errno (ERANGE);
+ return huge * huge; /* overflow */
+ }
+ }
+ if (xsb != 0) /* x < -56*ln2, return -1.0 with inexact */
+ {
+ math_force_eval (x + tiny); /* raise inexact */
+ return tiny - one; /* return -1 */
+ }
+ }
+
+ /* argument reduction */
+ if (hx > 0x3fd62e42) /* if |x| > 0.5 ln2 */
+ {
+ if (hx < 0x3FF0A2B2) /* and |x| < 1.5 ln2 */
+ {
+ if (xsb == 0)
+ {
+ hi = x - ln2_hi; lo = ln2_lo; k = 1;
+ }
+ else
+ {
+ hi = x + ln2_hi; lo = -ln2_lo; k = -1;
+ }
+ }
+ else
+ {
+ k = invln2 * x + ((xsb == 0) ? 0.5 : -0.5);
+ t = k;
+ hi = x - t * ln2_hi; /* t*ln2_hi is exact here */
+ lo = t * ln2_lo;
+ }
+ x = hi - lo;
+ c = (hi - x) - lo;
+ }
+ else if (hx < 0x3c900000) /* when |x|<2**-54, return x */
+ {
+ math_check_force_underflow (x);
+ t = huge + x; /* return x with inexact flags when x!=0 */
+ return x - (t - (huge + x));
+ }
+ else
+ k = 0;
+
+ /* x is now in primary range */
+ hfx = 0.5 * x;
+ hxs = x * hfx;
+ R1 = one + hxs * Q[1]; h2 = hxs * hxs;
+ R2 = Q[2] + hxs * Q[3]; h4 = h2 * h2;
+ R3 = Q[4] + hxs * Q[5];
+ r1 = R1 + h2 * R2 + h4 * R3;
+ t = 3.0 - r1 * hfx;
+ e = hxs * ((r1 - t) / (6.0 - x * t));
+ if (k == 0)
+ return x - (x * e - hxs); /* c is 0 */
+ else
+ {
+ e = (x * (e - c) - c);
+ e -= hxs;
+ if (k == -1)
+ return 0.5 * (x - e) - 0.5;
+ if (k == 1)
+ {
+ if (x < -0.25)
+ return -2.0 * (e - (x + 0.5));
+ else
+ return one + 2.0 * (x - e);
+ }
+ if (k <= -2 || k > 56) /* suffice to return exp(x)-1 */
+ {
+ u_int32_t high;
+ y = one - (e - x);
+ GET_HIGH_WORD (high, y);
+ SET_HIGH_WORD (y, high + (k << 20)); /* add k to y's exponent */
+ return y - one;
+ }
+ t = one;
+ if (k < 20)
+ {
+ u_int32_t high;
+ SET_HIGH_WORD (t, 0x3ff00000 - (0x200000 >> k)); /* t=1-2^-k */
+ y = t - (e - x);
+ GET_HIGH_WORD (high, y);
+ SET_HIGH_WORD (y, high + (k << 20)); /* add k to y's exponent */
+ }
+ else
+ {
+ u_int32_t high;
+ SET_HIGH_WORD (t, ((0x3ff - k) << 20)); /* 2^-k */
+ y = x - (e + t);
+ y += one;
+ GET_HIGH_WORD (high, y);
+ SET_HIGH_WORD (y, high + (k << 20)); /* add k to y's exponent */
+ }
+ }
+ return y;
+}
+weak_alias (__expm1, expm1)
+#ifdef NO_LONG_DOUBLE
+strong_alias (__expm1, __expm1l)
+weak_alias (__expm1, expm1l)
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/s_fabs.c b/REORG.TODO/sysdeps/ieee754/dbl-64/s_fabs.c
new file mode 100644
index 0000000000..73c09a269e
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/s_fabs.c
@@ -0,0 +1,32 @@
+/* @(#)s_fabs.c 5.1 93/09/24 */
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: s_fabs.c,v 1.7 1995/05/10 20:47:13 jtc Exp $";
+#endif
+
+/*
+ * fabs(x) returns the absolute value of x.
+ */
+
+#include <math.h>
+
+double
+__fabs (double x)
+{
+ return __builtin_fabs (x);
+}
+weak_alias (__fabs, fabs)
+#ifdef NO_LONG_DOUBLE
+strong_alias (__fabs, __fabsl)
+weak_alias (__fabs, fabsl)
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/s_finite.c b/REORG.TODO/sysdeps/ieee754/dbl-64/s_finite.c
new file mode 100644
index 0000000000..69141db75d
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/s_finite.c
@@ -0,0 +1,50 @@
+/* @(#)s_finite.c 5.1 93/09/24 */
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: s_finite.c,v 1.8 1995/05/10 20:47:17 jtc Exp $";
+#endif
+
+/*
+ * finite(x) returns 1 is x is finite, else 0;
+ * no branching!
+ */
+
+#include <math.h>
+#include <math_private.h>
+#include <shlib-compat.h>
+
+#undef __finite
+
+#ifndef FINITE
+# define FINITE __finite
+#endif
+
+int FINITE(double x)
+{
+ int32_t hx;
+ GET_HIGH_WORD (hx, x);
+ return (int) ((u_int32_t) ((hx & 0x7ff00000) - 0x7ff00000) >> 31);
+}
+hidden_def (__finite)
+weak_alias (__finite, finite)
+#ifdef NO_LONG_DOUBLE
+# ifdef LDBL_CLASSIFY_COMPAT
+# if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_23)
+compat_symbol (libc, __finite, __finitel, GLIBC_2_0);
+# endif
+# if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_23)
+compat_symbol (libm, __finite, __finitel, GLIBC_2_1);
+# endif
+# endif
+weak_alias (__finite, finitel)
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/s_floor.c b/REORG.TODO/sysdeps/ieee754/dbl-64/s_floor.c
new file mode 100644
index 0000000000..8f86aa31ee
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/s_floor.c
@@ -0,0 +1,89 @@
+/* @(#)s_floor.c 5.1 93/09/24 */
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+/*
+ * floor(x)
+ * Return x rounded toward -inf to integral value
+ * Method:
+ * Bit twiddling.
+ */
+
+#include <math.h>
+#include <math_private.h>
+
+double
+__floor (double x)
+{
+ int32_t i0, i1, j0;
+ u_int32_t i, j;
+ EXTRACT_WORDS (i0, i1, x);
+ j0 = ((i0 >> 20) & 0x7ff) - 0x3ff;
+ if (j0 < 20)
+ {
+ if (j0 < 0)
+ {
+ /* return 0*sign(x) if |x|<1 */
+ if (i0 >= 0)
+ {
+ i0 = i1 = 0;
+ }
+ else if (((i0 & 0x7fffffff) | i1) != 0)
+ {
+ i0 = 0xbff00000; i1 = 0;
+ }
+ }
+ else
+ {
+ i = (0x000fffff) >> j0;
+ if (((i0 & i) | i1) == 0)
+ return x; /* x is integral */
+ if (i0 < 0)
+ i0 += (0x00100000) >> j0;
+ i0 &= (~i); i1 = 0;
+ }
+ }
+ else if (j0 > 51)
+ {
+ if (j0 == 0x400)
+ return x + x; /* inf or NaN */
+ else
+ return x; /* x is integral */
+ }
+ else
+ {
+ i = ((u_int32_t) (0xffffffff)) >> (j0 - 20);
+ if ((i1 & i) == 0)
+ return x; /* x is integral */
+ if (i0 < 0)
+ {
+ if (j0 == 20)
+ i0 += 1;
+ else
+ {
+ j = i1 + (1 << (52 - j0));
+ if (j < i1)
+ i0 += 1; /* got a carry */
+ i1 = j;
+ }
+ }
+ i1 &= (~i);
+ }
+ INSERT_WORDS (x, i0, i1);
+ return x;
+}
+#ifndef __floor
+weak_alias (__floor, floor)
+# ifdef NO_LONG_DOUBLE
+strong_alias (__floor, __floorl)
+weak_alias (__floor, floorl)
+# endif
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/s_fma.c b/REORG.TODO/sysdeps/ieee754/dbl-64/s_fma.c
new file mode 100644
index 0000000000..68c8515fb1
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/s_fma.c
@@ -0,0 +1,301 @@
+/* Compute x * y + z as ternary operation.
+ Copyright (C) 2010-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Jakub Jelinek <jakub@redhat.com>, 2010.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <float.h>
+#include <math.h>
+#include <fenv.h>
+#include <ieee754.h>
+#include <math_private.h>
+#include <tininess.h>
+
+/* This implementation uses rounding to odd to avoid problems with
+ double rounding. See a paper by Boldo and Melquiond:
+ http://www.lri.fr/~melquion/doc/08-tc.pdf */
+
+double
+__fma (double x, double y, double z)
+{
+ union ieee754_double u, v, w;
+ int adjust = 0;
+ u.d = x;
+ v.d = y;
+ w.d = z;
+ if (__builtin_expect (u.ieee.exponent + v.ieee.exponent
+ >= 0x7ff + IEEE754_DOUBLE_BIAS - DBL_MANT_DIG, 0)
+ || __builtin_expect (u.ieee.exponent >= 0x7ff - DBL_MANT_DIG, 0)
+ || __builtin_expect (v.ieee.exponent >= 0x7ff - DBL_MANT_DIG, 0)
+ || __builtin_expect (w.ieee.exponent >= 0x7ff - DBL_MANT_DIG, 0)
+ || __builtin_expect (u.ieee.exponent + v.ieee.exponent
+ <= IEEE754_DOUBLE_BIAS + DBL_MANT_DIG, 0))
+ {
+ /* If z is Inf, but x and y are finite, the result should be
+ z rather than NaN. */
+ if (w.ieee.exponent == 0x7ff
+ && u.ieee.exponent != 0x7ff
+ && v.ieee.exponent != 0x7ff)
+ return (z + x) + y;
+ /* If z is zero and x are y are nonzero, compute the result
+ as x * y to avoid the wrong sign of a zero result if x * y
+ underflows to 0. */
+ if (z == 0 && x != 0 && y != 0)
+ return x * y;
+ /* If x or y or z is Inf/NaN, or if x * y is zero, compute as
+ x * y + z. */
+ if (u.ieee.exponent == 0x7ff
+ || v.ieee.exponent == 0x7ff
+ || w.ieee.exponent == 0x7ff
+ || x == 0
+ || y == 0)
+ return x * y + z;
+ /* If fma will certainly overflow, compute as x * y. */
+ if (u.ieee.exponent + v.ieee.exponent > 0x7ff + IEEE754_DOUBLE_BIAS)
+ return x * y;
+ /* If x * y is less than 1/4 of DBL_TRUE_MIN, neither the
+ result nor whether there is underflow depends on its exact
+ value, only on its sign. */
+ if (u.ieee.exponent + v.ieee.exponent
+ < IEEE754_DOUBLE_BIAS - DBL_MANT_DIG - 2)
+ {
+ int neg = u.ieee.negative ^ v.ieee.negative;
+ double tiny = neg ? -0x1p-1074 : 0x1p-1074;
+ if (w.ieee.exponent >= 3)
+ return tiny + z;
+ /* Scaling up, adding TINY and scaling down produces the
+ correct result, because in round-to-nearest mode adding
+ TINY has no effect and in other modes double rounding is
+ harmless. But it may not produce required underflow
+ exceptions. */
+ v.d = z * 0x1p54 + tiny;
+ if (TININESS_AFTER_ROUNDING
+ ? v.ieee.exponent < 55
+ : (w.ieee.exponent == 0
+ || (w.ieee.exponent == 1
+ && w.ieee.negative != neg
+ && w.ieee.mantissa1 == 0
+ && w.ieee.mantissa0 == 0)))
+ {
+ double force_underflow = x * y;
+ math_force_eval (force_underflow);
+ }
+ return v.d * 0x1p-54;
+ }
+ if (u.ieee.exponent + v.ieee.exponent
+ >= 0x7ff + IEEE754_DOUBLE_BIAS - DBL_MANT_DIG)
+ {
+ /* Compute 1p-53 times smaller result and multiply
+ at the end. */
+ if (u.ieee.exponent > v.ieee.exponent)
+ u.ieee.exponent -= DBL_MANT_DIG;
+ else
+ v.ieee.exponent -= DBL_MANT_DIG;
+ /* If x + y exponent is very large and z exponent is very small,
+ it doesn't matter if we don't adjust it. */
+ if (w.ieee.exponent > DBL_MANT_DIG)
+ w.ieee.exponent -= DBL_MANT_DIG;
+ adjust = 1;
+ }
+ else if (w.ieee.exponent >= 0x7ff - DBL_MANT_DIG)
+ {
+ /* Similarly.
+ If z exponent is very large and x and y exponents are
+ very small, adjust them up to avoid spurious underflows,
+ rather than down. */
+ if (u.ieee.exponent + v.ieee.exponent
+ <= IEEE754_DOUBLE_BIAS + 2 * DBL_MANT_DIG)
+ {
+ if (u.ieee.exponent > v.ieee.exponent)
+ u.ieee.exponent += 2 * DBL_MANT_DIG + 2;
+ else
+ v.ieee.exponent += 2 * DBL_MANT_DIG + 2;
+ }
+ else if (u.ieee.exponent > v.ieee.exponent)
+ {
+ if (u.ieee.exponent > DBL_MANT_DIG)
+ u.ieee.exponent -= DBL_MANT_DIG;
+ }
+ else if (v.ieee.exponent > DBL_MANT_DIG)
+ v.ieee.exponent -= DBL_MANT_DIG;
+ w.ieee.exponent -= DBL_MANT_DIG;
+ adjust = 1;
+ }
+ else if (u.ieee.exponent >= 0x7ff - DBL_MANT_DIG)
+ {
+ u.ieee.exponent -= DBL_MANT_DIG;
+ if (v.ieee.exponent)
+ v.ieee.exponent += DBL_MANT_DIG;
+ else
+ v.d *= 0x1p53;
+ }
+ else if (v.ieee.exponent >= 0x7ff - DBL_MANT_DIG)
+ {
+ v.ieee.exponent -= DBL_MANT_DIG;
+ if (u.ieee.exponent)
+ u.ieee.exponent += DBL_MANT_DIG;
+ else
+ u.d *= 0x1p53;
+ }
+ else /* if (u.ieee.exponent + v.ieee.exponent
+ <= IEEE754_DOUBLE_BIAS + DBL_MANT_DIG) */
+ {
+ if (u.ieee.exponent > v.ieee.exponent)
+ u.ieee.exponent += 2 * DBL_MANT_DIG + 2;
+ else
+ v.ieee.exponent += 2 * DBL_MANT_DIG + 2;
+ if (w.ieee.exponent <= 4 * DBL_MANT_DIG + 6)
+ {
+ if (w.ieee.exponent)
+ w.ieee.exponent += 2 * DBL_MANT_DIG + 2;
+ else
+ w.d *= 0x1p108;
+ adjust = -1;
+ }
+ /* Otherwise x * y should just affect inexact
+ and nothing else. */
+ }
+ x = u.d;
+ y = v.d;
+ z = w.d;
+ }
+
+ /* Ensure correct sign of exact 0 + 0. */
+ if (__glibc_unlikely ((x == 0 || y == 0) && z == 0))
+ {
+ x = math_opt_barrier (x);
+ return x * y + z;
+ }
+
+ fenv_t env;
+ libc_feholdexcept_setround (&env, FE_TONEAREST);
+
+ /* Multiplication m1 + m2 = x * y using Dekker's algorithm. */
+#define C ((1 << (DBL_MANT_DIG + 1) / 2) + 1)
+ double x1 = x * C;
+ double y1 = y * C;
+ double m1 = x * y;
+ x1 = (x - x1) + x1;
+ y1 = (y - y1) + y1;
+ double x2 = x - x1;
+ double y2 = y - y1;
+ double m2 = (((x1 * y1 - m1) + x1 * y2) + x2 * y1) + x2 * y2;
+
+ /* Addition a1 + a2 = z + m1 using Knuth's algorithm. */
+ double a1 = z + m1;
+ double t1 = a1 - z;
+ double t2 = a1 - t1;
+ t1 = m1 - t1;
+ t2 = z - t2;
+ double a2 = t1 + t2;
+ /* Ensure the arithmetic is not scheduled after feclearexcept call. */
+ math_force_eval (m2);
+ math_force_eval (a2);
+ feclearexcept (FE_INEXACT);
+
+ /* If the result is an exact zero, ensure it has the correct sign. */
+ if (a1 == 0 && m2 == 0)
+ {
+ libc_feupdateenv (&env);
+ /* Ensure that round-to-nearest value of z + m1 is not reused. */
+ z = math_opt_barrier (z);
+ return z + m1;
+ }
+
+ libc_fesetround (FE_TOWARDZERO);
+
+ /* Perform m2 + a2 addition with round to odd. */
+ u.d = a2 + m2;
+
+ if (__glibc_unlikely (adjust < 0))
+ {
+ if ((u.ieee.mantissa1 & 1) == 0)
+ u.ieee.mantissa1 |= libc_fetestexcept (FE_INEXACT) != 0;
+ v.d = a1 + u.d;
+ /* Ensure the addition is not scheduled after fetestexcept call. */
+ math_force_eval (v.d);
+ }
+
+ /* Reset rounding mode and test for inexact simultaneously. */
+ int j = libc_feupdateenv_test (&env, FE_INEXACT) != 0;
+
+ if (__glibc_likely (adjust == 0))
+ {
+ if ((u.ieee.mantissa1 & 1) == 0 && u.ieee.exponent != 0x7ff)
+ u.ieee.mantissa1 |= j;
+ /* Result is a1 + u.d. */
+ return a1 + u.d;
+ }
+ else if (__glibc_likely (adjust > 0))
+ {
+ if ((u.ieee.mantissa1 & 1) == 0 && u.ieee.exponent != 0x7ff)
+ u.ieee.mantissa1 |= j;
+ /* Result is a1 + u.d, scaled up. */
+ return (a1 + u.d) * 0x1p53;
+ }
+ else
+ {
+ /* If a1 + u.d is exact, the only rounding happens during
+ scaling down. */
+ if (j == 0)
+ return v.d * 0x1p-108;
+ /* If result rounded to zero is not subnormal, no double
+ rounding will occur. */
+ if (v.ieee.exponent > 108)
+ return (a1 + u.d) * 0x1p-108;
+ /* If v.d * 0x1p-108 with round to zero is a subnormal above
+ or equal to DBL_MIN / 2, then v.d * 0x1p-108 shifts mantissa
+ down just by 1 bit, which means v.ieee.mantissa1 |= j would
+ change the round bit, not sticky or guard bit.
+ v.d * 0x1p-108 never normalizes by shifting up,
+ so round bit plus sticky bit should be already enough
+ for proper rounding. */
+ if (v.ieee.exponent == 108)
+ {
+ /* If the exponent would be in the normal range when
+ rounding to normal precision with unbounded exponent
+ range, the exact result is known and spurious underflows
+ must be avoided on systems detecting tininess after
+ rounding. */
+ if (TININESS_AFTER_ROUNDING)
+ {
+ w.d = a1 + u.d;
+ if (w.ieee.exponent == 109)
+ return w.d * 0x1p-108;
+ }
+ /* v.ieee.mantissa1 & 2 is LSB bit of the result before rounding,
+ v.ieee.mantissa1 & 1 is the round bit and j is our sticky
+ bit. */
+ w.d = 0.0;
+ w.ieee.mantissa1 = ((v.ieee.mantissa1 & 3) << 1) | j;
+ w.ieee.negative = v.ieee.negative;
+ v.ieee.mantissa1 &= ~3U;
+ v.d *= 0x1p-108;
+ w.d *= 0x1p-2;
+ return v.d + w.d;
+ }
+ v.ieee.mantissa1 |= j;
+ return v.d * 0x1p-108;
+ }
+}
+#ifndef __fma
+weak_alias (__fma, fma)
+#endif
+
+#ifdef NO_LONG_DOUBLE
+strong_alias (__fma, __fmal)
+weak_alias (__fmal, fmal)
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/s_fmaf.c b/REORG.TODO/sysdeps/ieee754/dbl-64/s_fmaf.c
new file mode 100644
index 0000000000..e6c0fed64d
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/s_fmaf.c
@@ -0,0 +1,64 @@
+/* Compute x * y + z as ternary operation.
+ Copyright (C) 2010-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Jakub Jelinek <jakub@redhat.com>, 2010.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+#include <fenv.h>
+#include <ieee754.h>
+#include <math_private.h>
+
+/* This implementation relies on double being more than twice as
+ precise as float and uses rounding to odd in order to avoid problems
+ with double rounding.
+ See a paper by Boldo and Melquiond:
+ http://www.lri.fr/~melquion/doc/08-tc.pdf */
+
+float
+__fmaf (float x, float y, float z)
+{
+ fenv_t env;
+
+ /* Multiplication is always exact. */
+ double temp = (double) x * (double) y;
+
+ /* Ensure correct sign of an exact zero result by performing the
+ addition in the original rounding mode in that case. */
+ if (temp == -z)
+ return (float) temp + z;
+
+ union ieee754_double u;
+
+ libc_feholdexcept_setround (&env, FE_TOWARDZERO);
+
+ /* Perform addition with round to odd. */
+ u.d = temp + (double) z;
+ /* Ensure the addition is not scheduled after fetestexcept call. */
+ math_force_eval (u.d);
+
+ /* Reset rounding mode and test for inexact simultaneously. */
+ int j = libc_feupdateenv_test (&env, FE_INEXACT) != 0;
+
+ if ((u.ieee.mantissa1 & 1) == 0 && u.ieee.exponent != 0x7ff)
+ u.ieee.mantissa1 |= j;
+
+ /* And finally truncation with round to nearest. */
+ return (float) u.d;
+}
+#ifndef __fmaf
+weak_alias (__fmaf, fmaf)
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/s_fpclassify.c b/REORG.TODO/sysdeps/ieee754/dbl-64/s_fpclassify.c
new file mode 100644
index 0000000000..3fa9117ff0
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/s_fpclassify.c
@@ -0,0 +1,43 @@
+/* Return classification value corresponding to argument.
+ Copyright (C) 1997-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+
+#include <math_private.h>
+
+
+int
+__fpclassify (double x)
+{
+ u_int32_t hx, lx;
+ int retval = FP_NORMAL;
+
+ EXTRACT_WORDS (hx, lx, x);
+ lx |= hx & 0xfffff;
+ hx &= 0x7ff00000;
+ if ((hx | lx) == 0)
+ retval = FP_ZERO;
+ else if (hx == 0)
+ retval = FP_SUBNORMAL;
+ else if (hx == 0x7ff00000)
+ retval = lx != 0 ? FP_NAN : FP_INFINITE;
+
+ return retval;
+}
+libm_hidden_def (__fpclassify)
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/s_frexp.c b/REORG.TODO/sysdeps/ieee754/dbl-64/s_frexp.c
new file mode 100644
index 0000000000..874214ec7c
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/s_frexp.c
@@ -0,0 +1,58 @@
+/* @(#)s_frexp.c 5.1 93/09/24 */
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: s_frexp.c,v 1.9 1995/05/10 20:47:24 jtc Exp $";
+#endif
+
+/*
+ * for non-zero x
+ * x = frexp(arg,&exp);
+ * return a double fp quantity x such that 0.5 <= |x| <1.0
+ * and the corresponding binary exponent "exp". That is
+ * arg = x*2^exp.
+ * If arg is inf, 0.0, or NaN, then frexp(arg,&exp) returns arg
+ * with *exp=0.
+ */
+
+#include <math.h>
+#include <math_private.h>
+
+static const double
+ two54 = 1.80143985094819840000e+16; /* 0x43500000, 0x00000000 */
+
+double
+__frexp (double x, int *eptr)
+{
+ int32_t hx, ix, lx;
+ EXTRACT_WORDS (hx, lx, x);
+ ix = 0x7fffffff & hx;
+ *eptr = 0;
+ if (ix >= 0x7ff00000 || ((ix | lx) == 0))
+ return x + x; /* 0,inf,nan */
+ if (ix < 0x00100000) /* subnormal */
+ {
+ x *= two54;
+ GET_HIGH_WORD (hx, x);
+ ix = hx & 0x7fffffff;
+ *eptr = -54;
+ }
+ *eptr += (ix >> 20) - 1022;
+ hx = (hx & 0x800fffff) | 0x3fe00000;
+ SET_HIGH_WORD (x, hx);
+ return x;
+}
+weak_alias (__frexp, frexp)
+#ifdef NO_LONG_DOUBLE
+strong_alias (__frexp, __frexpl)
+weak_alias (__frexp, frexpl)
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/s_fromfp.c b/REORG.TODO/sysdeps/ieee754/dbl-64/s_fromfp.c
new file mode 100644
index 0000000000..92fbe0c162
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/s_fromfp.c
@@ -0,0 +1,7 @@
+#define UNSIGNED 0
+#define INEXACT 0
+#define FUNC fromfp
+#include <s_fromfp_main.c>
+#ifdef NO_LONG_DOUBLE
+weak_alias (fromfp, fromfpl)
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/s_fromfp_main.c b/REORG.TODO/sysdeps/ieee754/dbl-64/s_fromfp_main.c
new file mode 100644
index 0000000000..ca0aa82092
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/s_fromfp_main.c
@@ -0,0 +1,82 @@
+/* Round to integer type. dbl-64 version.
+ Copyright (C) 2016-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <errno.h>
+#include <fenv.h>
+#include <math.h>
+#include <math_private.h>
+#include <stdbool.h>
+#include <stdint.h>
+
+#define BIAS 0x3ff
+#define MANT_DIG 53
+
+#if UNSIGNED
+# define RET_TYPE uintmax_t
+#else
+# define RET_TYPE intmax_t
+#endif
+
+#include <fromfp.h>
+
+RET_TYPE
+FUNC (double x, int round, unsigned int width)
+{
+ if (width > INTMAX_WIDTH)
+ width = INTMAX_WIDTH;
+ uint64_t ix;
+ EXTRACT_WORDS64 (ix, x);
+ bool negative = (ix & 0x8000000000000000ULL) != 0;
+ if (width == 0)
+ return fromfp_domain_error (negative, width);
+ ix &= 0x7fffffffffffffffULL;
+ if (ix == 0)
+ return 0;
+ int exponent = ix >> (MANT_DIG - 1);
+ exponent -= BIAS;
+ int max_exponent = fromfp_max_exponent (negative, width);
+ if (exponent > max_exponent)
+ return fromfp_domain_error (negative, width);
+
+ ix &= ((1ULL << (MANT_DIG - 1)) - 1);
+ ix |= 1ULL << (MANT_DIG - 1);
+ uintmax_t uret;
+ bool half_bit, more_bits;
+ if (exponent >= MANT_DIG - 1)
+ {
+ uret = ix;
+ uret <<= exponent - (MANT_DIG - 1);
+ half_bit = false;
+ more_bits = false;
+ }
+ else if (exponent >= -1)
+ {
+ uint64_t h = 1ULL << (MANT_DIG - 2 - exponent);
+ half_bit = (ix & h) != 0;
+ more_bits = (ix & (h - 1)) != 0;
+ uret = ix >> (MANT_DIG - 1 - exponent);
+ }
+ else
+ {
+ uret = 0;
+ half_bit = false;
+ more_bits = true;
+ }
+ return fromfp_round_and_return (negative, uret, half_bit, more_bits, round,
+ exponent, max_exponent, width);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/s_fromfpx.c b/REORG.TODO/sysdeps/ieee754/dbl-64/s_fromfpx.c
new file mode 100644
index 0000000000..bbfb969813
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/s_fromfpx.c
@@ -0,0 +1,7 @@
+#define UNSIGNED 0
+#define INEXACT 1
+#define FUNC fromfpx
+#include <s_fromfp_main.c>
+#ifdef NO_LONG_DOUBLE
+weak_alias (fromfpx, fromfpxl)
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/s_getpayload.c b/REORG.TODO/sysdeps/ieee754/dbl-64/s_getpayload.c
new file mode 100644
index 0000000000..63288e0f45
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/s_getpayload.c
@@ -0,0 +1,37 @@
+/* Get NaN payload. dbl-64 version.
+ Copyright (C) 2016-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <fix-int-fp-convert-zero.h>
+#include <math.h>
+#include <math_private.h>
+#include <stdint.h>
+
+double
+getpayload (const double *x)
+{
+ uint32_t hx, lx;
+ EXTRACT_WORDS (hx, lx, *x);
+ hx &= 0x7ffff;
+ uint64_t ix = ((uint64_t) hx << 32) | lx;
+ if (FIX_INT_FP_CONVERT_ZERO && ix == 0)
+ return 0.0f;
+ return (double) ix;
+}
+#ifdef NO_LONG_DOUBLE
+weak_alias (getpayload, getpayloadl)
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/s_isinf.c b/REORG.TODO/sysdeps/ieee754/dbl-64/s_isinf.c
new file mode 100644
index 0000000000..c0ad54538a
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/s_isinf.c
@@ -0,0 +1,36 @@
+/*
+ * Written by J.T. Conklin <jtc@netbsd.org>.
+ * Changed to return -1 for -Inf by Ulrich Drepper <drepper@cygnus.com>.
+ * Public domain.
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: s_isinf.c,v 1.3 1995/05/11 23:20:14 jtc Exp $";
+#endif
+
+/*
+ * isinf(x) returns 1 is x is inf, -1 if x is -inf, else 0;
+ * no branching!
+ */
+
+#include <math.h>
+#include <math_private.h>
+#include <shlib-compat.h>
+
+int
+__isinf (double x)
+{
+ int32_t hx, lx;
+ EXTRACT_WORDS (hx, lx, x);
+ lx |= (hx & 0x7fffffff) ^ 0x7ff00000;
+ lx |= -lx;
+ return ~(lx >> 31) & (hx >> 30);
+}
+hidden_def (__isinf)
+weak_alias (__isinf, isinf)
+#ifdef NO_LONG_DOUBLE
+# if defined LDBL_CLASSIFY_COMPAT && SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_23)
+compat_symbol (libc, __isinf, __isinfl, GLIBC_2_0);
+# endif
+weak_alias (__isinf, isinfl)
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/s_isnan.c b/REORG.TODO/sysdeps/ieee754/dbl-64/s_isnan.c
new file mode 100644
index 0000000000..2174d988d8
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/s_isnan.c
@@ -0,0 +1,44 @@
+/* @(#)s_isnan.c 5.1 93/09/24 */
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: s_isnan.c,v 1.8 1995/05/10 20:47:36 jtc Exp $";
+#endif
+
+/*
+ * isnan(x) returns 1 is x is nan, else 0;
+ * no branching!
+ */
+
+#include <math.h>
+#include <math_private.h>
+#include <shlib-compat.h>
+
+#undef __isnan
+int
+__isnan (double x)
+{
+ int32_t hx, lx;
+ EXTRACT_WORDS (hx, lx, x);
+ hx &= 0x7fffffff;
+ hx |= (u_int32_t) (lx | (-lx)) >> 31;
+ hx = 0x7ff00000 - hx;
+ return (int) (((u_int32_t) hx) >> 31);
+}
+hidden_def (__isnan)
+weak_alias (__isnan, isnan)
+#ifdef NO_LONG_DOUBLE
+# if defined LDBL_CLASSIFY_COMPAT && SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_23)
+compat_symbol (libc, __isnan, __isnanl, GLIBC_2_0);
+# endif
+weak_alias (__isnan, isnanl)
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/s_issignaling.c b/REORG.TODO/sysdeps/ieee754/dbl-64/s_issignaling.c
new file mode 100644
index 0000000000..09e12f9a6a
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/s_issignaling.c
@@ -0,0 +1,47 @@
+/* Test for signaling NaN.
+ Copyright (C) 2013-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+#include <math_private.h>
+#include <nan-high-order-bit.h>
+
+int
+__issignaling (double x)
+{
+#if HIGH_ORDER_BIT_IS_SET_FOR_SNAN
+ u_int32_t hxi;
+ GET_HIGH_WORD (hxi, x);
+ /* We only have to care about the high-order bit of x's significand, because
+ having it set (sNaN) already makes the significand different from that
+ used to designate infinity. */
+ return (hxi & 0x7ff80000) == 0x7ff80000;
+#else
+ u_int32_t hxi, lxi;
+ EXTRACT_WORDS (hxi, lxi, x);
+ /* To keep the following comparison simple, toggle the quiet/signaling bit,
+ so that it is set for sNaNs. This is inverse to IEEE 754-2008 (as well as
+ common practice for IEEE 754-1985). */
+ hxi ^= 0x00080000;
+ /* If lxi != 0, then set any suitable bit of the significand in hxi. */
+ hxi |= (lxi | -lxi) >> 31;
+ /* We have to compare for greater (instead of greater or equal), because x's
+ significand being all-zero designates infinity not NaN. */
+ return (hxi & 0x7fffffff) > 0x7ff80000;
+#endif
+}
+libm_hidden_def (__issignaling)
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/s_llrint.c b/REORG.TODO/sysdeps/ieee754/dbl-64/s_llrint.c
new file mode 100644
index 0000000000..08781c3acd
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/s_llrint.c
@@ -0,0 +1,103 @@
+/* Round argument to nearest integral value according to current rounding
+ direction.
+ Copyright (C) 1997-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <fenv.h>
+#include <limits.h>
+#include <math.h>
+
+#include <math_private.h>
+#include <fix-fp-int-convert-overflow.h>
+
+static const double two52[2] =
+{
+ 4.50359962737049600000e+15, /* 0x43300000, 0x00000000 */
+ -4.50359962737049600000e+15, /* 0xC3300000, 0x00000000 */
+};
+
+
+long long int
+__llrint (double x)
+{
+ int32_t j0;
+ u_int32_t i1, i0;
+ long long int result;
+ double w;
+ double t;
+ int sx;
+
+ EXTRACT_WORDS (i0, i1, x);
+ j0 = ((i0 >> 20) & 0x7ff) - 0x3ff;
+ sx = i0 >> 31;
+ i0 &= 0xfffff;
+ i0 |= 0x100000;
+
+ if (j0 < 20)
+ {
+ w = math_narrow_eval (two52[sx] + x);
+ t = w - two52[sx];
+ EXTRACT_WORDS (i0, i1, t);
+ j0 = ((i0 >> 20) & 0x7ff) - 0x3ff;
+ i0 &= 0xfffff;
+ i0 |= 0x100000;
+
+ result = (j0 < 0 ? 0 : i0 >> (20 - j0));
+ }
+ else if (j0 < (int32_t) (8 * sizeof (long long int)) - 1)
+ {
+ if (j0 >= 52)
+ result = (((long long int) i0 << 32) | i1) << (j0 - 52);
+ else
+ {
+ w = math_narrow_eval (two52[sx] + x);
+ t = w - two52[sx];
+ EXTRACT_WORDS (i0, i1, t);
+ j0 = ((i0 >> 20) & 0x7ff) - 0x3ff;
+ i0 &= 0xfffff;
+ i0 |= 0x100000;
+
+ if (j0 == 20)
+ result = (long long int) i0;
+ else
+ result = ((long long int) i0 << (j0 - 20)) | (i1 >> (52 - j0));
+ }
+ }
+ else
+ {
+#ifdef FE_INVALID
+ /* The number is too large. Unless it rounds to LLONG_MIN,
+ FE_INVALID must be raised and the return value is
+ unspecified. */
+ if (FIX_DBL_LLONG_CONVERT_OVERFLOW && x != (double) LLONG_MIN)
+ {
+ feraiseexcept (FE_INVALID);
+ return sx == 0 ? LLONG_MAX : LLONG_MIN;
+ }
+#endif
+ return (long long int) x;
+ }
+
+ return sx ? -result : result;
+}
+
+weak_alias (__llrint, llrint)
+#ifdef NO_LONG_DOUBLE
+strong_alias (__llrint, __llrintl)
+weak_alias (__llrint, llrintl)
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/s_llround.c b/REORG.TODO/sysdeps/ieee754/dbl-64/s_llround.c
new file mode 100644
index 0000000000..8790e9df57
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/s_llround.c
@@ -0,0 +1,91 @@
+/* Round double value to long long int.
+ Copyright (C) 1997-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <fenv.h>
+#include <limits.h>
+#include <math.h>
+
+#include <math_private.h>
+#include <fix-fp-int-convert-overflow.h>
+
+
+long long int
+__llround (double x)
+{
+ int32_t j0;
+ u_int32_t i1, i0;
+ long long int result;
+ int sign;
+
+ EXTRACT_WORDS (i0, i1, x);
+ j0 = ((i0 >> 20) & 0x7ff) - 0x3ff;
+ sign = (i0 & 0x80000000) != 0 ? -1 : 1;
+ i0 &= 0xfffff;
+ i0 |= 0x100000;
+
+ if (j0 < 20)
+ {
+ if (j0 < 0)
+ return j0 < -1 ? 0 : sign;
+ else
+ {
+ i0 += 0x80000 >> j0;
+
+ result = i0 >> (20 - j0);
+ }
+ }
+ else if (j0 < (int32_t) (8 * sizeof (long long int)) - 1)
+ {
+ if (j0 >= 52)
+ result = (((long long int) i0 << 32) | i1) << (j0 - 52);
+ else
+ {
+ u_int32_t j = i1 + (0x80000000 >> (j0 - 20));
+ if (j < i1)
+ ++i0;
+
+ if (j0 == 20)
+ result = (long long int) i0;
+ else
+ result = ((long long int) i0 << (j0 - 20)) | (j >> (52 - j0));
+ }
+ }
+ else
+ {
+#ifdef FE_INVALID
+ /* The number is too large. Unless it rounds to LLONG_MIN,
+ FE_INVALID must be raised and the return value is
+ unspecified. */
+ if (FIX_DBL_LLONG_CONVERT_OVERFLOW && x != (double) LLONG_MIN)
+ {
+ feraiseexcept (FE_INVALID);
+ return sign == 1 ? LLONG_MAX : LLONG_MIN;
+ }
+#endif
+ return (long long int) x;
+ }
+
+ return sign * result;
+}
+
+weak_alias (__llround, llround)
+#ifdef NO_LONG_DOUBLE
+strong_alias (__llround, __llroundl)
+weak_alias (__llround, llroundl)
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/s_log1p.c b/REORG.TODO/sysdeps/ieee754/dbl-64/s_log1p.c
new file mode 100644
index 0000000000..340f6377f7
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/s_log1p.c
@@ -0,0 +1,195 @@
+/* @(#)s_log1p.c 5.1 93/09/24 */
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+/* Modified by Naohiko Shimizu/Tokai University, Japan 1997/08/25,
+ for performance improvement on pipelined processors.
+ */
+
+/* double log1p(double x)
+ *
+ * Method :
+ * 1. Argument Reduction: find k and f such that
+ * 1+x = 2^k * (1+f),
+ * where sqrt(2)/2 < 1+f < sqrt(2) .
+ *
+ * Note. If k=0, then f=x is exact. However, if k!=0, then f
+ * may not be representable exactly. In that case, a correction
+ * term is need. Let u=1+x rounded. Let c = (1+x)-u, then
+ * log(1+x) - log(u) ~ c/u. Thus, we proceed to compute log(u),
+ * and add back the correction term c/u.
+ * (Note: when x > 2**53, one can simply return log(x))
+ *
+ * 2. Approximation of log1p(f).
+ * Let s = f/(2+f) ; based on log(1+f) = log(1+s) - log(1-s)
+ * = 2s + 2/3 s**3 + 2/5 s**5 + .....,
+ * = 2s + s*R
+ * We use a special Reme algorithm on [0,0.1716] to generate
+ * a polynomial of degree 14 to approximate R The maximum error
+ * of this polynomial approximation is bounded by 2**-58.45. In
+ * other words,
+ * 2 4 6 8 10 12 14
+ * R(z) ~ Lp1*s +Lp2*s +Lp3*s +Lp4*s +Lp5*s +Lp6*s +Lp7*s
+ * (the values of Lp1 to Lp7 are listed in the program)
+ * and
+ * | 2 14 | -58.45
+ * | Lp1*s +...+Lp7*s - R(z) | <= 2
+ * | |
+ * Note that 2s = f - s*f = f - hfsq + s*hfsq, where hfsq = f*f/2.
+ * In order to guarantee error in log below 1ulp, we compute log
+ * by
+ * log1p(f) = f - (hfsq - s*(hfsq+R)).
+ *
+ * 3. Finally, log1p(x) = k*ln2 + log1p(f).
+ * = k*ln2_hi+(f-(hfsq-(s*(hfsq+R)+k*ln2_lo)))
+ * Here ln2 is split into two floating point number:
+ * ln2_hi + ln2_lo,
+ * where n*ln2_hi is always exact for |n| < 2000.
+ *
+ * Special cases:
+ * log1p(x) is NaN with signal if x < -1 (including -INF) ;
+ * log1p(+INF) is +INF; log1p(-1) is -INF with signal;
+ * log1p(NaN) is that NaN with no signal.
+ *
+ * Accuracy:
+ * according to an error analysis, the error is always less than
+ * 1 ulp (unit in the last place).
+ *
+ * Constants:
+ * The hexadecimal values are the intended ones for the following
+ * constants. The decimal values may be used, provided that the
+ * compiler will convert from decimal to binary accurately enough
+ * to produce the hexadecimal values shown.
+ *
+ * Note: Assuming log() return accurate answer, the following
+ * algorithm can be used to compute log1p(x) to within a few ULP:
+ *
+ * u = 1+x;
+ * if(u==1.0) return x ; else
+ * return log(u)*(x/(u-1.0));
+ *
+ * See HP-15C Advanced Functions Handbook, p.193.
+ */
+
+#include <float.h>
+#include <math.h>
+#include <math_private.h>
+
+static const double
+ ln2_hi = 6.93147180369123816490e-01, /* 3fe62e42 fee00000 */
+ ln2_lo = 1.90821492927058770002e-10, /* 3dea39ef 35793c76 */
+ two54 = 1.80143985094819840000e+16, /* 43500000 00000000 */
+ Lp[] = { 0.0, 6.666666666666735130e-01, /* 3FE55555 55555593 */
+ 3.999999999940941908e-01, /* 3FD99999 9997FA04 */
+ 2.857142874366239149e-01, /* 3FD24924 94229359 */
+ 2.222219843214978396e-01, /* 3FCC71C5 1D8E78AF */
+ 1.818357216161805012e-01, /* 3FC74664 96CB03DE */
+ 1.531383769920937332e-01, /* 3FC39A09 D078C69F */
+ 1.479819860511658591e-01 }; /* 3FC2F112 DF3E5244 */
+
+static const double zero = 0.0;
+
+double
+__log1p (double x)
+{
+ double hfsq, f, c, s, z, R, u, z2, z4, z6, R1, R2, R3, R4;
+ int32_t k, hx, hu, ax;
+
+ GET_HIGH_WORD (hx, x);
+ ax = hx & 0x7fffffff;
+
+ k = 1;
+ if (hx < 0x3FDA827A) /* x < 0.41422 */
+ {
+ if (__glibc_unlikely (ax >= 0x3ff00000)) /* x <= -1.0 */
+ {
+ if (x == -1.0)
+ return -two54 / zero; /* log1p(-1)=-inf */
+ else
+ return (x - x) / (x - x); /* log1p(x<-1)=NaN */
+ }
+ if (__glibc_unlikely (ax < 0x3e200000)) /* |x| < 2**-29 */
+ {
+ math_force_eval (two54 + x); /* raise inexact */
+ if (ax < 0x3c900000) /* |x| < 2**-54 */
+ {
+ math_check_force_underflow (x);
+ return x;
+ }
+ else
+ return x - x * x * 0.5;
+ }
+ if (hx > 0 || hx <= ((int32_t) 0xbfd2bec3))
+ {
+ k = 0; f = x; hu = 1;
+ } /* -0.2929<x<0.41422 */
+ }
+ else if (__glibc_unlikely (hx >= 0x7ff00000))
+ return x + x;
+ if (k != 0)
+ {
+ if (hx < 0x43400000)
+ {
+ u = 1.0 + x;
+ GET_HIGH_WORD (hu, u);
+ k = (hu >> 20) - 1023;
+ c = (k > 0) ? 1.0 - (u - x) : x - (u - 1.0); /* correction term */
+ c /= u;
+ }
+ else
+ {
+ u = x;
+ GET_HIGH_WORD (hu, u);
+ k = (hu >> 20) - 1023;
+ c = 0;
+ }
+ hu &= 0x000fffff;
+ if (hu < 0x6a09e)
+ {
+ SET_HIGH_WORD (u, hu | 0x3ff00000); /* normalize u */
+ }
+ else
+ {
+ k += 1;
+ SET_HIGH_WORD (u, hu | 0x3fe00000); /* normalize u/2 */
+ hu = (0x00100000 - hu) >> 2;
+ }
+ f = u - 1.0;
+ }
+ hfsq = 0.5 * f * f;
+ if (hu == 0) /* |f| < 2**-20 */
+ {
+ if (f == zero)
+ {
+ if (k == 0)
+ return zero;
+ else
+ {
+ c += k * ln2_lo; return k * ln2_hi + c;
+ }
+ }
+ R = hfsq * (1.0 - 0.66666666666666666 * f);
+ if (k == 0)
+ return f - R;
+ else
+ return k * ln2_hi - ((R - (k * ln2_lo + c)) - f);
+ }
+ s = f / (2.0 + f);
+ z = s * s;
+ R1 = z * Lp[1]; z2 = z * z;
+ R2 = Lp[2] + z * Lp[3]; z4 = z2 * z2;
+ R3 = Lp[4] + z * Lp[5]; z6 = z4 * z2;
+ R4 = Lp[6] + z * Lp[7];
+ R = R1 + z2 * R2 + z4 * R3 + z6 * R4;
+ if (k == 0)
+ return f - (hfsq - s * (hfsq + R));
+ else
+ return k * ln2_hi - ((hfsq - (s * (hfsq + R) + (k * ln2_lo + c))) - f);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/s_logb.c b/REORG.TODO/sysdeps/ieee754/dbl-64/s_logb.c
new file mode 100644
index 0000000000..3a26b18f78
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/s_logb.c
@@ -0,0 +1,52 @@
+/* @(#)s_logb.c 5.1 93/09/24 */
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+/*
+ * double logb(x)
+ * IEEE 754 logb. Included to pass IEEE test suite. Not recommend.
+ * Use ilogb instead.
+ */
+
+#include <math.h>
+#include <math_private.h>
+#include <fix-int-fp-convert-zero.h>
+
+double
+__logb (double x)
+{
+ int32_t lx, ix, rix;
+
+ EXTRACT_WORDS (ix, lx, x);
+ ix &= 0x7fffffff; /* high |x| */
+ if ((ix | lx) == 0)
+ return -1.0 / fabs (x);
+ if (ix >= 0x7ff00000)
+ return x * x;
+ if (__glibc_unlikely ((rix = ix >> 20) == 0))
+ {
+ /* POSIX specifies that denormal number is treated as
+ though it were normalized. */
+ int ma;
+ if (ix == 0)
+ ma = __builtin_clz (lx) + 32;
+ else
+ ma = __builtin_clz (ix);
+ rix -= ma - 12;
+ }
+ if (FIX_INT_FP_CONVERT_ZERO && rix == 1023)
+ return 0.0;
+ return (double) (rix - 1023);
+}
+weak_alias (__logb, logb)
+#ifdef NO_LONG_DOUBLE
+strong_alias (__logb, __logbl) weak_alias (__logb, logbl)
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/s_lrint.c b/REORG.TODO/sysdeps/ieee754/dbl-64/s_lrint.c
new file mode 100644
index 0000000000..ac610bfbd0
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/s_lrint.c
@@ -0,0 +1,127 @@
+/* Round argument to nearest integral value according to current rounding
+ direction.
+ Copyright (C) 1997-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <fenv.h>
+#include <limits.h>
+#include <math.h>
+
+#include <math_private.h>
+#include <fix-fp-int-convert-overflow.h>
+
+static const double two52[2] =
+{
+ 4.50359962737049600000e+15, /* 0x43300000, 0x00000000 */
+ -4.50359962737049600000e+15, /* 0xC3300000, 0x00000000 */
+};
+
+
+long int
+__lrint (double x)
+{
+ int32_t j0;
+ u_int32_t i0, i1;
+ double w;
+ double t;
+ long int result;
+ int sx;
+
+ EXTRACT_WORDS (i0, i1, x);
+ j0 = ((i0 >> 20) & 0x7ff) - 0x3ff;
+ sx = i0 >> 31;
+ i0 &= 0xfffff;
+ i0 |= 0x100000;
+
+ if (j0 < 20)
+ {
+ w = math_narrow_eval (two52[sx] + x);
+ t = w - two52[sx];
+ EXTRACT_WORDS (i0, i1, t);
+ j0 = ((i0 >> 20) & 0x7ff) - 0x3ff;
+ i0 &= 0xfffff;
+ i0 |= 0x100000;
+
+ result = (j0 < 0 ? 0 : i0 >> (20 - j0));
+ }
+ else if (j0 < (int32_t) (8 * sizeof (long int)) - 1)
+ {
+ if (j0 >= 52)
+ result = ((long int) i0 << (j0 - 20)) | ((long int) i1 << (j0 - 52));
+ else
+ {
+#if defined FE_INVALID || defined FE_INEXACT
+ /* X < LONG_MAX + 1 implied by J0 < 31. */
+ if (sizeof (long int) == 4
+ && x > (double) LONG_MAX)
+ {
+ /* In the event of overflow we must raise the "invalid"
+ exception, but not "inexact". */
+ t = __nearbyint (x);
+ feraiseexcept (t == LONG_MAX ? FE_INEXACT : FE_INVALID);
+ }
+ else
+#endif
+ {
+ w = math_narrow_eval (two52[sx] + x);
+ t = w - two52[sx];
+ }
+ EXTRACT_WORDS (i0, i1, t);
+ j0 = ((i0 >> 20) & 0x7ff) - 0x3ff;
+ i0 &= 0xfffff;
+ i0 |= 0x100000;
+
+ if (j0 == 20)
+ result = (long int) i0;
+ else
+ result = ((long int) i0 << (j0 - 20)) | (i1 >> (52 - j0));
+ }
+ }
+ else
+ {
+ /* The number is too large. Unless it rounds to LONG_MIN,
+ FE_INVALID must be raised and the return value is
+ unspecified. */
+#if defined FE_INVALID || defined FE_INEXACT
+ if (sizeof (long int) == 4
+ && x < (double) LONG_MIN
+ && x > (double) LONG_MIN - 1.0)
+ {
+ /* If truncation produces LONG_MIN, the cast will not raise
+ the exception, but may raise "inexact". */
+ t = __nearbyint (x);
+ feraiseexcept (t == LONG_MIN ? FE_INEXACT : FE_INVALID);
+ return LONG_MIN;
+ }
+ else if (FIX_DBL_LONG_CONVERT_OVERFLOW && x != (double) LONG_MIN)
+ {
+ feraiseexcept (FE_INVALID);
+ return sx == 0 ? LONG_MAX : LONG_MIN;
+ }
+#endif
+ return (long int) x;
+ }
+
+ return sx ? -result : result;
+}
+
+weak_alias (__lrint, lrint)
+#ifdef NO_LONG_DOUBLE
+strong_alias (__lrint, __lrintl)
+weak_alias (__lrint, lrintl)
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/s_lround.c b/REORG.TODO/sysdeps/ieee754/dbl-64/s_lround.c
new file mode 100644
index 0000000000..df4775e344
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/s_lround.c
@@ -0,0 +1,113 @@
+/* Round double value to long int.
+ Copyright (C) 1997-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <fenv.h>
+#include <limits.h>
+#include <math.h>
+
+#include <math_private.h>
+#include <fix-fp-int-convert-overflow.h>
+
+
+long int
+__lround (double x)
+{
+ int32_t j0;
+ u_int32_t i1, i0;
+ long int result;
+ int sign;
+
+ EXTRACT_WORDS (i0, i1, x);
+ j0 = ((i0 >> 20) & 0x7ff) - 0x3ff;
+ sign = (i0 & 0x80000000) != 0 ? -1 : 1;
+ i0 &= 0xfffff;
+ i0 |= 0x100000;
+
+ if (j0 < 20)
+ {
+ if (j0 < 0)
+ return j0 < -1 ? 0 : sign;
+ else
+ {
+ i0 += 0x80000 >> j0;
+
+ result = i0 >> (20 - j0);
+ }
+ }
+ else if (j0 < (int32_t) (8 * sizeof (long int)) - 1)
+ {
+ if (j0 >= 52)
+ result = ((long int) i0 << (j0 - 20)) | ((long int) i1 << (j0 - 52));
+ else
+ {
+ u_int32_t j = i1 + (0x80000000 >> (j0 - 20));
+ if (j < i1)
+ ++i0;
+
+ if (j0 == 20)
+ result = (long int) i0;
+ else
+ {
+ result = ((long int) i0 << (j0 - 20)) | (j >> (52 - j0));
+#ifdef FE_INVALID
+ if (sizeof (long int) == 4
+ && sign == 1
+ && result == LONG_MIN)
+ /* Rounding brought the value out of range. */
+ feraiseexcept (FE_INVALID);
+#endif
+ }
+ }
+ }
+ else
+ {
+ /* The number is too large. Unless it rounds to LONG_MIN,
+ FE_INVALID must be raised and the return value is
+ unspecified. */
+#ifdef FE_INVALID
+ if (FIX_DBL_LONG_CONVERT_OVERFLOW
+ && !(sign == -1
+ && (sizeof (long int) == 4
+ ? x > (double) LONG_MIN - 0.5
+ : x >= (double) LONG_MIN)))
+ {
+ feraiseexcept (FE_INVALID);
+ return sign == 1 ? LONG_MAX : LONG_MIN;
+ }
+ else if (!FIX_DBL_LONG_CONVERT_OVERFLOW
+ && sizeof (long int) == 4
+ && x <= (double) LONG_MIN - 0.5)
+ {
+ /* If truncation produces LONG_MIN, the cast will not raise
+ the exception, but may raise "inexact". */
+ feraiseexcept (FE_INVALID);
+ return LONG_MIN;
+ }
+#endif
+ return (long int) x;
+ }
+
+ return sign * result;
+}
+
+weak_alias (__lround, lround)
+#ifdef NO_LONG_DOUBLE
+strong_alias (__lround, __lroundl)
+weak_alias (__lround, lroundl)
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/s_modf.c b/REORG.TODO/sysdeps/ieee754/dbl-64/s_modf.c
new file mode 100644
index 0000000000..0a1e13008f
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/s_modf.c
@@ -0,0 +1,86 @@
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+/*
+ * modf(double x, double *iptr)
+ * return fraction part of x, and return x's integral part in *iptr.
+ * Method:
+ * Bit twiddling.
+ *
+ * Exception:
+ * No exception.
+ */
+
+#include <math.h>
+#include <math_private.h>
+
+static const double one = 1.0;
+
+double
+__modf (double x, double *iptr)
+{
+ int32_t i0, i1, j0;
+ u_int32_t i;
+ EXTRACT_WORDS (i0, i1, x);
+ j0 = ((i0 >> 20) & 0x7ff) - 0x3ff; /* exponent of x */
+ if (j0 < 20) /* integer part in high x */
+ {
+ if (j0 < 0) /* |x|<1 */
+ {
+ INSERT_WORDS (*iptr, i0 & 0x80000000, 0); /* *iptr = +-0 */
+ return x;
+ }
+ else
+ {
+ i = (0x000fffff) >> j0;
+ if (((i0 & i) | i1) == 0) /* x is integral */
+ {
+ *iptr = x;
+ INSERT_WORDS (x, i0 & 0x80000000, 0); /* return +-0 */
+ return x;
+ }
+ else
+ {
+ INSERT_WORDS (*iptr, i0 & (~i), 0);
+ return x - *iptr;
+ }
+ }
+ }
+ else if (__glibc_unlikely (j0 > 51)) /* no fraction part */
+ {
+ *iptr = x * one;
+ /* We must handle NaNs separately. */
+ if (j0 == 0x400 && ((i0 & 0xfffff) | i1))
+ return x * one;
+ INSERT_WORDS (x, i0 & 0x80000000, 0); /* return +-0 */
+ return x;
+ }
+ else /* fraction part in low x */
+ {
+ i = ((u_int32_t) (0xffffffff)) >> (j0 - 20);
+ if ((i1 & i) == 0) /* x is integral */
+ {
+ *iptr = x;
+ INSERT_WORDS (x, i0 & 0x80000000, 0); /* return +-0 */
+ return x;
+ }
+ else
+ {
+ INSERT_WORDS (*iptr, i0, i1 & (~i));
+ return x - *iptr;
+ }
+ }
+}
+weak_alias (__modf, modf)
+#ifdef NO_LONG_DOUBLE
+strong_alias (__modf, __modfl)
+weak_alias (__modf, modfl)
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/s_nearbyint.c b/REORG.TODO/sysdeps/ieee754/dbl-64/s_nearbyint.c
new file mode 100644
index 0000000000..dec0c5d6ee
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/s_nearbyint.c
@@ -0,0 +1,78 @@
+/* Adapted for use as nearbyint by Ulrich Drepper <drepper@cygnus.com>. */
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: s_rint.c,v 1.8 1995/05/10 20:48:04 jtc Exp $";
+#endif
+
+/*
+ * rint(x)
+ * Return x rounded to integral value according to the prevailing
+ * rounding mode.
+ * Method:
+ * Using floating addition.
+ * Exception:
+ * Inexact flag raised if x not equal to rint(x).
+ */
+
+#include <fenv.h>
+#include <math.h>
+#include <math_private.h>
+
+static const double
+ TWO52[2] = {
+ 4.50359962737049600000e+15, /* 0x43300000, 0x00000000 */
+ -4.50359962737049600000e+15, /* 0xC3300000, 0x00000000 */
+};
+
+double
+__nearbyint (double x)
+{
+ fenv_t env;
+ int32_t i0, j0, sx;
+ double w, t;
+ GET_HIGH_WORD (i0, x);
+ sx = (i0 >> 31) & 1;
+ j0 = ((i0 >> 20) & 0x7ff) - 0x3ff;
+ if (j0 < 52)
+ {
+ if (j0 < 0)
+ {
+ libc_feholdexcept (&env);
+ w = TWO52[sx] + x;
+ t = w - TWO52[sx];
+ math_force_eval (t);
+ libc_fesetenv (&env);
+ GET_HIGH_WORD (i0, t);
+ SET_HIGH_WORD (t, (i0 & 0x7fffffff) | (sx << 31));
+ return t;
+ }
+ }
+ else
+ {
+ if (j0 == 0x400)
+ return x + x; /* inf or NaN */
+ else
+ return x; /* x is integral */
+ }
+ libc_feholdexcept (&env);
+ w = TWO52[sx] + x;
+ t = w - TWO52[sx];
+ math_force_eval (t);
+ libc_fesetenv (&env);
+ return t;
+}
+weak_alias (__nearbyint, nearbyint)
+#ifdef NO_LONG_DOUBLE
+strong_alias (__nearbyint, __nearbyintl)
+weak_alias (__nearbyint, nearbyintl)
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/s_nexttoward.c b/REORG.TODO/sysdeps/ieee754/dbl-64/s_nexttoward.c
new file mode 100644
index 0000000000..c68ba98cb3
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/s_nexttoward.c
@@ -0,0 +1 @@
+/* This function is the same as nextafter so we use an alias there. */
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/s_nextup.c b/REORG.TODO/sysdeps/ieee754/dbl-64/s_nextup.c
new file mode 100644
index 0000000000..983bd662b7
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/s_nextup.c
@@ -0,0 +1,58 @@
+/* Return the least floating-point number greater than X.
+ Copyright (C) 2016-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+#include <math_private.h>
+
+/* Return the least floating-point number greater than X. */
+double
+__nextup (double x)
+{
+ int32_t hx, ix;
+ u_int32_t lx;
+
+ EXTRACT_WORDS (hx, lx, x);
+ ix = hx & 0x7fffffff;
+
+ if (((ix >= 0x7ff00000) && ((ix - 0x7ff00000) | lx) != 0)) /* x is nan. */
+ return x + x;
+ if ((ix | lx) == 0)
+ return DBL_TRUE_MIN;
+ if (hx >= 0)
+ { /* x > 0. */
+ if (isinf (x))
+ return x;
+ lx += 1;
+ if (lx == 0)
+ hx += 1;
+ }
+ else
+ { /* x < 0. */
+ if (lx == 0)
+ hx -= 1;
+ lx -= 1;
+ }
+ INSERT_WORDS (x, hx, lx);
+ return x;
+}
+
+weak_alias (__nextup, nextup)
+#ifdef NO_LONG_DOUBLE
+strong_alias (__nextup, __nextupl)
+weak_alias (__nextup, nextupl)
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/s_remquo.c b/REORG.TODO/sysdeps/ieee754/dbl-64/s_remquo.c
new file mode 100644
index 0000000000..2693c0e62c
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/s_remquo.c
@@ -0,0 +1,115 @@
+/* Compute remainder and a congruent to the quotient.
+ Copyright (C) 1997-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+
+#include <math_private.h>
+
+
+static const double zero = 0.0;
+
+
+double
+__remquo (double x, double y, int *quo)
+{
+ int32_t hx, hy;
+ u_int32_t sx, lx, ly;
+ int cquo, qs;
+
+ EXTRACT_WORDS (hx, lx, x);
+ EXTRACT_WORDS (hy, ly, y);
+ sx = hx & 0x80000000;
+ qs = sx ^ (hy & 0x80000000);
+ hy &= 0x7fffffff;
+ hx &= 0x7fffffff;
+
+ /* Purge off exception values. */
+ if ((hy | ly) == 0)
+ return (x * y) / (x * y); /* y = 0 */
+ if ((hx >= 0x7ff00000) /* x not finite */
+ || ((hy >= 0x7ff00000) /* p is NaN */
+ && (((hy - 0x7ff00000) | ly) != 0)))
+ return (x * y) / (x * y);
+
+ if (hy <= 0x7fbfffff)
+ x = __ieee754_fmod (x, 8 * y); /* now x < 8y */
+
+ if (((hx - hy) | (lx - ly)) == 0)
+ {
+ *quo = qs ? -1 : 1;
+ return zero * x;
+ }
+
+ x = fabs (x);
+ y = fabs (y);
+ cquo = 0;
+
+ if (hy <= 0x7fcfffff && x >= 4 * y)
+ {
+ x -= 4 * y;
+ cquo += 4;
+ }
+ if (hy <= 0x7fdfffff && x >= 2 * y)
+ {
+ x -= 2 * y;
+ cquo += 2;
+ }
+
+ if (hy < 0x00200000)
+ {
+ if (x + x > y)
+ {
+ x -= y;
+ ++cquo;
+ if (x + x >= y)
+ {
+ x -= y;
+ ++cquo;
+ }
+ }
+ }
+ else
+ {
+ double y_half = 0.5 * y;
+ if (x > y_half)
+ {
+ x -= y;
+ ++cquo;
+ if (x >= y_half)
+ {
+ x -= y;
+ ++cquo;
+ }
+ }
+ }
+
+ *quo = qs ? -cquo : cquo;
+
+ /* Ensure correct sign of zero result in round-downward mode. */
+ if (x == 0.0)
+ x = 0.0;
+ if (sx)
+ x = -x;
+ return x;
+}
+weak_alias (__remquo, remquo)
+#ifdef NO_LONG_DOUBLE
+strong_alias (__remquo, __remquol)
+weak_alias (__remquo, remquol)
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/s_rint.c b/REORG.TODO/sysdeps/ieee754/dbl-64/s_rint.c
new file mode 100644
index 0000000000..a9c0d27842
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/s_rint.c
@@ -0,0 +1,67 @@
+/* @(#)s_rint.c 5.1 93/09/24 */
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+/*
+ * rint(x)
+ * Return x rounded to integral value according to the prevailing
+ * rounding mode.
+ * Method:
+ * Using floating addition.
+ * Exception:
+ * Inexact flag raised if x not equal to rint(x).
+ */
+
+#include <math.h>
+#include <math_private.h>
+
+static const double
+ TWO52[2] = {
+ 4.50359962737049600000e+15, /* 0x43300000, 0x00000000 */
+ -4.50359962737049600000e+15, /* 0xC3300000, 0x00000000 */
+};
+
+double
+__rint (double x)
+{
+ int32_t i0, j0, sx;
+ double w, t;
+ GET_HIGH_WORD (i0, x);
+ sx = (i0 >> 31) & 1;
+ j0 = ((i0 >> 20) & 0x7ff) - 0x3ff;
+ if (j0 < 52)
+ {
+ if (j0 < 0)
+ {
+ w = TWO52[sx] + x;
+ t = w - TWO52[sx];
+ GET_HIGH_WORD (i0, t);
+ SET_HIGH_WORD (t, (i0 & 0x7fffffff) | (sx << 31));
+ return t;
+ }
+ }
+ else
+ {
+ if (j0 == 0x400)
+ return x + x; /* inf or NaN */
+ else
+ return x; /* x is integral */
+ }
+ w = TWO52[sx] + x;
+ return w - TWO52[sx];
+}
+#ifndef __rint
+weak_alias (__rint, rint)
+# ifdef NO_LONG_DOUBLE
+strong_alias (__rint, __rintl)
+weak_alias (__rint, rintl)
+# endif
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/s_round.c b/REORG.TODO/sysdeps/ieee754/dbl-64/s_round.c
new file mode 100644
index 0000000000..390e3f7180
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/s_round.c
@@ -0,0 +1,83 @@
+/* Round double to integer away from zero.
+ Copyright (C) 1997-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+
+#include <math_private.h>
+
+
+double
+__round (double x)
+{
+ int32_t i0, j0;
+ u_int32_t i1;
+
+ EXTRACT_WORDS (i0, i1, x);
+ j0 = ((i0 >> 20) & 0x7ff) - 0x3ff;
+ if (j0 < 20)
+ {
+ if (j0 < 0)
+ {
+ i0 &= 0x80000000;
+ if (j0 == -1)
+ i0 |= 0x3ff00000;
+ i1 = 0;
+ }
+ else
+ {
+ u_int32_t i = 0x000fffff >> j0;
+ if (((i0 & i) | i1) == 0)
+ /* X is integral. */
+ return x;
+
+ i0 += 0x00080000 >> j0;
+ i0 &= ~i;
+ i1 = 0;
+ }
+ }
+ else if (j0 > 51)
+ {
+ if (j0 == 0x400)
+ /* Inf or NaN. */
+ return x + x;
+ else
+ return x;
+ }
+ else
+ {
+ u_int32_t i = 0xffffffff >> (j0 - 20);
+ if ((i1 & i) == 0)
+ /* X is integral. */
+ return x;
+
+ u_int32_t j = i1 + (1 << (51 - j0));
+ if (j < i1)
+ i0 += 1;
+ i1 = j;
+ i1 &= ~i;
+ }
+
+ INSERT_WORDS (x, i0, i1);
+ return x;
+}
+weak_alias (__round, round)
+#ifdef NO_LONG_DOUBLE
+strong_alias (__round, __roundl)
+weak_alias (__round, roundl)
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/s_roundeven.c b/REORG.TODO/sysdeps/ieee754/dbl-64/s_roundeven.c
new file mode 100644
index 0000000000..78d81a070c
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/s_roundeven.c
@@ -0,0 +1,106 @@
+/* Round to nearest integer value, rounding halfway cases to even.
+ dbl-64 version.
+ Copyright (C) 2016-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+#include <math_private.h>
+#include <stdint.h>
+
+#define BIAS 0x3ff
+#define MANT_DIG 53
+#define MAX_EXP (2 * BIAS + 1)
+
+double
+roundeven (double x)
+{
+ uint32_t hx, lx, uhx;
+ EXTRACT_WORDS (hx, lx, x);
+ uhx = hx & 0x7fffffff;
+ int exponent = uhx >> (MANT_DIG - 1 - 32);
+ if (exponent >= BIAS + MANT_DIG - 1)
+ {
+ /* Integer, infinity or NaN. */
+ if (exponent == MAX_EXP)
+ /* Infinity or NaN; quiet signaling NaNs. */
+ return x + x;
+ else
+ return x;
+ }
+ else if (exponent >= BIAS + MANT_DIG - 32)
+ {
+ /* Not necessarily an integer; integer bit is in low word.
+ Locate the bits with exponents 0 and -1. */
+ int int_pos = (BIAS + MANT_DIG - 1) - exponent;
+ int half_pos = int_pos - 1;
+ uint32_t half_bit = 1U << half_pos;
+ uint32_t int_bit = 1U << int_pos;
+ if ((lx & (int_bit | (half_bit - 1))) != 0)
+ {
+ /* Carry into the exponent works correctly. No need to test
+ whether HALF_BIT is set. */
+ lx += half_bit;
+ hx += lx < half_bit;
+ }
+ lx &= ~(int_bit - 1);
+ }
+ else if (exponent == BIAS + MANT_DIG - 33)
+ {
+ /* Not necessarily an integer; integer bit is bottom of high
+ word, half bit is top of low word. */
+ if (((hx & 1) | (lx & 0x7fffffff)) != 0)
+ {
+ lx += 0x80000000;
+ hx += lx < 0x80000000;
+ }
+ lx = 0;
+ }
+ else if (exponent >= BIAS)
+ {
+ /* At least 1; not necessarily an integer, integer bit and half
+ bit are in the high word. Locate the bits with exponents 0
+ and -1 (when the unbiased exponent is 0, the bit with
+ exponent 0 is implicit, but as the bias is odd it is OK to
+ take it from the low bit of the exponent). */
+ int int_pos = (BIAS + MANT_DIG - 33) - exponent;
+ int half_pos = int_pos - 1;
+ uint32_t half_bit = 1U << half_pos;
+ uint32_t int_bit = 1U << int_pos;
+ if (((hx & (int_bit | (half_bit - 1))) | lx) != 0)
+ hx += half_bit;
+ hx &= ~(int_bit - 1);
+ lx = 0;
+ }
+ else if (exponent == BIAS - 1 && (uhx > 0x3fe00000 || lx != 0))
+ {
+ /* Interval (0.5, 1). */
+ hx = (hx & 0x80000000) | 0x3ff00000;
+ lx = 0;
+ }
+ else
+ {
+ /* Rounds to 0. */
+ hx &= 0x80000000;
+ lx = 0;
+ }
+ INSERT_WORDS (x, hx, lx);
+ return x;
+}
+hidden_def (roundeven)
+#ifdef NO_LONG_DOUBLE
+weak_alias (roundeven, roundevenl)
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/s_scalbln.c b/REORG.TODO/sysdeps/ieee754/dbl-64/s_scalbln.c
new file mode 100644
index 0000000000..32cd12e3b0
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/s_scalbln.c
@@ -0,0 +1,63 @@
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+/*
+ * scalbn (double x, int n)
+ * scalbn(x,n) returns x* 2**n computed by exponent
+ * manipulation rather than by actually performing an
+ * exponentiation or a multiplication.
+ */
+
+#include <math.h>
+#include <math_private.h>
+
+static const double
+ two54 = 1.80143985094819840000e+16, /* 0x43500000, 0x00000000 */
+ twom54 = 5.55111512312578270212e-17, /* 0x3C900000, 0x00000000 */
+ huge = 1.0e+300,
+ tiny = 1.0e-300;
+
+double
+__scalbln (double x, long int n)
+{
+ int32_t k, hx, lx;
+ EXTRACT_WORDS (hx, lx, x);
+ k = (hx & 0x7ff00000) >> 20; /* extract exponent */
+ if (__glibc_unlikely (k == 0)) /* 0 or subnormal x */
+ {
+ if ((lx | (hx & 0x7fffffff)) == 0)
+ return x; /* +-0 */
+ x *= two54;
+ GET_HIGH_WORD (hx, x);
+ k = ((hx & 0x7ff00000) >> 20) - 54;
+ }
+ if (__glibc_unlikely (k == 0x7ff))
+ return x + x; /* NaN or Inf */
+ if (__glibc_unlikely (n < -50000))
+ return tiny * __copysign (tiny, x); /*underflow*/
+ if (__glibc_unlikely (n > 50000 || k + n > 0x7fe))
+ return huge * __copysign (huge, x); /* overflow */
+ /* Now k and n are bounded we know that k = k+n does not
+ overflow. */
+ k = k + n;
+ if (__glibc_likely (k > 0)) /* normal result */
+ {
+ SET_HIGH_WORD (x, (hx & 0x800fffff) | (k << 20)); return x;
+ }
+ if (k <= -54)
+ return tiny * __copysign (tiny, x); /*underflow*/
+ k += 54; /* subnormal result */
+ SET_HIGH_WORD (x, (hx & 0x800fffff) | (k << 20));
+ return x * twom54;
+}
+#ifdef NO_LONG_DOUBLE
+strong_alias (__scalbln, __scalblnl)
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/s_scalbn.c b/REORG.TODO/sysdeps/ieee754/dbl-64/s_scalbn.c
new file mode 100644
index 0000000000..58c7e1b33a
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/s_scalbn.c
@@ -0,0 +1,63 @@
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+/*
+ * scalbn (double x, int n)
+ * scalbn(x,n) returns x* 2**n computed by exponent
+ * manipulation rather than by actually performing an
+ * exponentiation or a multiplication.
+ */
+
+#include <math.h>
+#include <math_private.h>
+
+static const double
+ two54 = 1.80143985094819840000e+16, /* 0x43500000, 0x00000000 */
+ twom54 = 5.55111512312578270212e-17, /* 0x3C900000, 0x00000000 */
+ huge = 1.0e+300,
+ tiny = 1.0e-300;
+
+double
+__scalbn (double x, int n)
+{
+ int32_t k, hx, lx;
+ EXTRACT_WORDS (hx, lx, x);
+ k = (hx & 0x7ff00000) >> 20; /* extract exponent */
+ if (__glibc_unlikely (k == 0)) /* 0 or subnormal x */
+ {
+ if ((lx | (hx & 0x7fffffff)) == 0)
+ return x; /* +-0 */
+ x *= two54;
+ GET_HIGH_WORD (hx, x);
+ k = ((hx & 0x7ff00000) >> 20) - 54;
+ }
+ if (__glibc_unlikely (k == 0x7ff))
+ return x + x; /* NaN or Inf */
+ if (__glibc_unlikely (n < -50000))
+ return tiny * __copysign (tiny, x); /*underflow*/
+ if (__glibc_unlikely (n > 50000 || k + n > 0x7fe))
+ return huge * __copysign (huge, x); /* overflow */
+ /* Now k and n are bounded we know that k = k+n does not
+ overflow. */
+ k = k + n;
+ if (__glibc_likely (k > 0)) /* normal result */
+ {
+ SET_HIGH_WORD (x, (hx & 0x800fffff) | (k << 20)); return x;
+ }
+ if (k <= -54)
+ return tiny * __copysign (tiny, x); /*underflow*/
+ k += 54; /* subnormal result */
+ SET_HIGH_WORD (x, (hx & 0x800fffff) | (k << 20));
+ return x * twom54;
+}
+#ifdef NO_LONG_DOUBLE
+strong_alias (__scalbn, __scalbnl)
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/s_setpayload.c b/REORG.TODO/sysdeps/ieee754/dbl-64/s_setpayload.c
new file mode 100644
index 0000000000..5ab70dee73
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/s_setpayload.c
@@ -0,0 +1,6 @@
+#define SIG 0
+#define FUNC setpayload
+#include <s_setpayload_main.c>
+#ifdef NO_LONG_DOUBLE
+weak_alias (setpayload, setpayloadl)
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/s_setpayload_main.c b/REORG.TODO/sysdeps/ieee754/dbl-64/s_setpayload_main.c
new file mode 100644
index 0000000000..c6128c7fe4
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/s_setpayload_main.c
@@ -0,0 +1,69 @@
+/* Set NaN payload. dbl-64 version.
+ Copyright (C) 2016-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+#include <math_private.h>
+#include <nan-high-order-bit.h>
+#include <stdint.h>
+
+#define SET_HIGH_BIT (HIGH_ORDER_BIT_IS_SET_FOR_SNAN ? SIG : !SIG)
+#define BIAS 0x3ff
+#define PAYLOAD_DIG 51
+#define EXPLICIT_MANT_DIG 52
+
+int
+FUNC (double *x, double payload)
+{
+ uint32_t hx, lx;
+ EXTRACT_WORDS (hx, lx, payload);
+ int exponent = hx >> (EXPLICIT_MANT_DIG - 32);
+ /* Test if argument is (a) negative or too large; (b) too small,
+ except for 0 when allowed; (c) not an integer. */
+ if (exponent >= BIAS + PAYLOAD_DIG
+ || (exponent < BIAS && !(SET_HIGH_BIT && hx == 0 && lx == 0)))
+ {
+ INSERT_WORDS (*x, 0, 0);
+ return 1;
+ }
+ int shift = BIAS + EXPLICIT_MANT_DIG - exponent;
+ if (shift < 32
+ ? (lx & ((1U << shift) - 1)) != 0
+ : (lx != 0 || (hx & ((1U << (shift - 32)) - 1)) != 0))
+ {
+ INSERT_WORDS (*x, 0, 0);
+ return 1;
+ }
+ if (exponent != 0)
+ {
+ hx &= (1U << (EXPLICIT_MANT_DIG - 32)) - 1;
+ hx |= 1U << (EXPLICIT_MANT_DIG - 32);
+ if (shift >= 32)
+ {
+ lx = hx >> (shift - 32);
+ hx = 0;
+ }
+ else if (shift != 0)
+ {
+ lx = (lx >> shift) | (hx << (32 - shift));
+ hx >>= shift;
+ }
+ }
+ hx |= 0x7ff00000 | (SET_HIGH_BIT ? 0x80000 : 0);
+ INSERT_WORDS (*x, hx, lx);
+ return 0;
+}
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/s_setpayloadsig.c b/REORG.TODO/sysdeps/ieee754/dbl-64/s_setpayloadsig.c
new file mode 100644
index 0000000000..c3d1ba1e6e
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/s_setpayloadsig.c
@@ -0,0 +1,6 @@
+#define SIG 1
+#define FUNC setpayloadsig
+#include <s_setpayload_main.c>
+#ifdef NO_LONG_DOUBLE
+weak_alias (setpayloadsig, setpayloadsigl)
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/s_signbit.c b/REORG.TODO/sysdeps/ieee754/dbl-64/s_signbit.c
new file mode 100644
index 0000000000..1beab1025c
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/s_signbit.c
@@ -0,0 +1,26 @@
+/* Return nonzero value if number is negative.
+ Copyright (C) 1997-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+
+int
+__signbit (double x)
+{
+ return __builtin_signbit (x);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/s_sin.c b/REORG.TODO/sysdeps/ieee754/dbl-64/s_sin.c
new file mode 100644
index 0000000000..c258d39e49
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/s_sin.c
@@ -0,0 +1,927 @@
+/*
+ * IBM Accurate Mathematical Library
+ * written by International Business Machines Corp.
+ * Copyright (C) 2001-2017 Free Software Foundation, Inc.
+ *
+ * This program 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 2.1 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 program; if not, see <http://www.gnu.org/licenses/>.
+ */
+/****************************************************************************/
+/* */
+/* MODULE_NAME:usncs.c */
+/* */
+/* FUNCTIONS: usin */
+/* ucos */
+/* slow */
+/* slow1 */
+/* slow2 */
+/* sloww */
+/* sloww1 */
+/* sloww2 */
+/* bsloww */
+/* bsloww1 */
+/* bsloww2 */
+/* cslow2 */
+/* FILES NEEDED: dla.h endian.h mpa.h mydefs.h usncs.h */
+/* branred.c sincos32.c dosincos.c mpa.c */
+/* sincos.tbl */
+/* */
+/* An ultimate sin and routine. Given an IEEE double machine number x */
+/* it computes the correctly rounded (to nearest) value of sin(x) or cos(x) */
+/* Assumption: Machine arithmetic operations are performed in */
+/* round to nearest mode of IEEE 754 standard. */
+/* */
+/****************************************************************************/
+
+
+#include <errno.h>
+#include <float.h>
+#include "endian.h"
+#include "mydefs.h"
+#include "usncs.h"
+#include "MathLib.h"
+#include <math.h>
+#include <math_private.h>
+#include <fenv.h>
+
+/* Helper macros to compute sin of the input values. */
+#define POLYNOMIAL2(xx) ((((s5 * (xx) + s4) * (xx) + s3) * (xx) + s2) * (xx))
+
+#define POLYNOMIAL(xx) (POLYNOMIAL2 (xx) + s1)
+
+/* The computed polynomial is a variation of the Taylor series expansion for
+ sin(a):
+
+ a - a^3/3! + a^5/5! - a^7/7! + a^9/9! + (1 - a^2) * da / 2
+
+ The constants s1, s2, s3, etc. are pre-computed values of 1/3!, 1/5! and so
+ on. The result is returned to LHS and correction in COR. */
+#define TAYLOR_SIN(xx, a, da, cor) \
+({ \
+ double t = ((POLYNOMIAL (xx) * (a) - 0.5 * (da)) * (xx) + (da)); \
+ double res = (a) + t; \
+ (cor) = ((a) - res) + t; \
+ res; \
+})
+
+/* This is again a variation of the Taylor series expansion with the term
+ x^3/3! expanded into the following for better accuracy:
+
+ bb * x ^ 3 + 3 * aa * x * x1 * x2 + aa * x1 ^ 3 + aa * x2 ^ 3
+
+ The correction term is dx and bb + aa = -1/3!
+ */
+#define TAYLOR_SLOW(x0, dx, cor) \
+({ \
+ static const double th2_36 = 206158430208.0; /* 1.5*2**37 */ \
+ double xx = (x0) * (x0); \
+ double x1 = ((x0) + th2_36) - th2_36; \
+ double y = aa * x1 * x1 * x1; \
+ double r = (x0) + y; \
+ double x2 = ((x0) - x1) + (dx); \
+ double t = (((POLYNOMIAL2 (xx) + bb) * xx + 3.0 * aa * x1 * x2) \
+ * (x0) + aa * x2 * x2 * x2 + (dx)); \
+ t = (((x0) - r) + y) + t; \
+ double res = r + t; \
+ (cor) = (r - res) + t; \
+ res; \
+})
+
+#define SINCOS_TABLE_LOOKUP(u, sn, ssn, cs, ccs) \
+({ \
+ int4 k = u.i[LOW_HALF] << 2; \
+ sn = __sincostab.x[k]; \
+ ssn = __sincostab.x[k + 1]; \
+ cs = __sincostab.x[k + 2]; \
+ ccs = __sincostab.x[k + 3]; \
+})
+
+#ifndef SECTION
+# define SECTION
+#endif
+
+extern const union
+{
+ int4 i[880];
+ double x[440];
+} __sincostab attribute_hidden;
+
+static const double
+ sn3 = -1.66666666666664880952546298448555E-01,
+ sn5 = 8.33333214285722277379541354343671E-03,
+ cs2 = 4.99999999999999999999950396842453E-01,
+ cs4 = -4.16666666666664434524222570944589E-02,
+ cs6 = 1.38888874007937613028114285595617E-03;
+
+static const double t22 = 0x1.8p22;
+
+void __dubsin (double x, double dx, double w[]);
+void __docos (double x, double dx, double w[]);
+double __mpsin (double x, double dx, bool reduce_range);
+double __mpcos (double x, double dx, bool reduce_range);
+static double slow (double x);
+static double slow1 (double x);
+static double slow2 (double x);
+static double sloww (double x, double dx, double orig, bool shift_quadrant);
+static double sloww1 (double x, double dx, double orig, bool shift_quadrant);
+static double sloww2 (double x, double dx, double orig, int n);
+static double bsloww (double x, double dx, double orig, int n);
+static double bsloww1 (double x, double dx, double orig, int n);
+static double bsloww2 (double x, double dx, double orig, int n);
+int __branred (double x, double *a, double *aa);
+static double cslow2 (double x);
+
+/* Given a number partitioned into X and DX, this function computes the cosine
+ of the number by combining the sin and cos of X (as computed by a variation
+ of the Taylor series) with the values looked up from the sin/cos table to
+ get the result in RES and a correction value in COR. */
+static inline double
+__always_inline
+do_cos (double x, double dx, double *corp)
+{
+ mynumber u;
+
+ if (x < 0)
+ dx = -dx;
+
+ u.x = big + fabs (x);
+ x = fabs (x) - (u.x - big) + dx;
+
+ double xx, s, sn, ssn, c, cs, ccs, res, cor;
+ xx = x * x;
+ s = x + x * xx * (sn3 + xx * sn5);
+ c = xx * (cs2 + xx * (cs4 + xx * cs6));
+ SINCOS_TABLE_LOOKUP (u, sn, ssn, cs, ccs);
+ cor = (ccs - s * ssn - cs * c) - sn * s;
+ res = cs + cor;
+ cor = (cs - res) + cor;
+ *corp = cor;
+ return res;
+}
+
+/* A more precise variant of DO_COS. EPS is the adjustment to the correction
+ COR. */
+static inline double
+__always_inline
+do_cos_slow (double x, double dx, double eps, double *corp)
+{
+ mynumber u;
+
+ if (x <= 0)
+ dx = -dx;
+
+ u.x = big + fabs (x);
+ x = fabs (x) - (u.x - big);
+
+ double xx, y, x1, x2, e1, e2, res, cor;
+ double s, sn, ssn, c, cs, ccs;
+ xx = x * x;
+ s = x * xx * (sn3 + xx * sn5);
+ c = x * dx + xx * (cs2 + xx * (cs4 + xx * cs6));
+ SINCOS_TABLE_LOOKUP (u, sn, ssn, cs, ccs);
+ x1 = (x + t22) - t22;
+ x2 = (x - x1) + dx;
+ e1 = (sn + t22) - t22;
+ e2 = (sn - e1) + ssn;
+ cor = (ccs - cs * c - e1 * x2 - e2 * x) - sn * s;
+ y = cs - e1 * x1;
+ cor = cor + ((cs - y) - e1 * x1);
+ res = y + cor;
+ cor = (y - res) + cor;
+ cor = 1.0005 * cor + __copysign (eps, cor);
+ *corp = cor;
+ return res;
+}
+
+/* Given a number partitioned into X and DX, this function computes the sine of
+ the number by combining the sin and cos of X (as computed by a variation of
+ the Taylor series) with the values looked up from the sin/cos table to get
+ the result in RES and a correction value in COR. */
+static inline double
+__always_inline
+do_sin (double x, double dx, double *corp)
+{
+ mynumber u;
+
+ if (x <= 0)
+ dx = -dx;
+ u.x = big + fabs (x);
+ x = fabs (x) - (u.x - big);
+
+ double xx, s, sn, ssn, c, cs, ccs, cor, res;
+ xx = x * x;
+ s = x + (dx + x * xx * (sn3 + xx * sn5));
+ c = x * dx + xx * (cs2 + xx * (cs4 + xx * cs6));
+ SINCOS_TABLE_LOOKUP (u, sn, ssn, cs, ccs);
+ cor = (ssn + s * ccs - sn * c) + cs * s;
+ res = sn + cor;
+ cor = (sn - res) + cor;
+ *corp = cor;
+ return res;
+}
+
+/* A more precise variant of DO_SIN. EPS is the adjustment to the correction
+ COR. */
+static inline double
+__always_inline
+do_sin_slow (double x, double dx, double eps, double *corp)
+{
+ mynumber u;
+
+ if (x <= 0)
+ dx = -dx;
+ u.x = big + fabs (x);
+ x = fabs (x) - (u.x - big);
+
+ double xx, y, x1, x2, c1, c2, res, cor;
+ double s, sn, ssn, c, cs, ccs;
+ xx = x * x;
+ s = x * xx * (sn3 + xx * sn5);
+ c = xx * (cs2 + xx * (cs4 + xx * cs6));
+ SINCOS_TABLE_LOOKUP (u, sn, ssn, cs, ccs);
+ x1 = (x + t22) - t22;
+ x2 = (x - x1) + dx;
+ c1 = (cs + t22) - t22;
+ c2 = (cs - c1) + ccs;
+ cor = (ssn + s * ccs + cs * s + c2 * x + c1 * x2 - sn * x * dx) - sn * c;
+ y = sn + c1 * x1;
+ cor = cor + ((sn - y) + c1 * x1);
+ res = y + cor;
+ cor = (y - res) + cor;
+ cor = 1.0005 * cor + __copysign (eps, cor);
+ *corp = cor;
+ return res;
+}
+
+/* Reduce range of X and compute sin of a + da. When SHIFT_QUADRANT is true,
+ the routine returns the cosine of a + da by rotating the quadrant once and
+ computing the sine of the result. */
+static inline double
+__always_inline
+reduce_and_compute (double x, bool shift_quadrant)
+{
+ double retval = 0, a, da;
+ unsigned int n = __branred (x, &a, &da);
+ int4 k = (n + shift_quadrant) % 4;
+ switch (k)
+ {
+ case 2:
+ a = -a;
+ da = -da;
+ /* Fall through. */
+ case 0:
+ if (a * a < 0.01588)
+ retval = bsloww (a, da, x, n);
+ else
+ retval = bsloww1 (a, da, x, n);
+ break;
+
+ case 1:
+ case 3:
+ retval = bsloww2 (a, da, x, n);
+ break;
+ }
+ return retval;
+}
+
+static inline int4
+__always_inline
+reduce_sincos_1 (double x, double *a, double *da)
+{
+ mynumber v;
+
+ double t = (x * hpinv + toint);
+ double xn = t - toint;
+ v.x = t;
+ double y = (x - xn * mp1) - xn * mp2;
+ int4 n = v.i[LOW_HALF] & 3;
+ double db = xn * mp3;
+ double b = y - db;
+ db = (y - b) - db;
+
+ *a = b;
+ *da = db;
+
+ return n;
+}
+
+/* Compute sin (A + DA). cos can be computed by passing SHIFT_QUADRANT as
+ true, which results in shifting the quadrant N clockwise. */
+static double
+__always_inline
+do_sincos_1 (double a, double da, double x, int4 n, bool shift_quadrant)
+{
+ double xx, retval, res, cor;
+ double eps = fabs (x) * 1.2e-30;
+
+ int k1 = (n + shift_quadrant) & 3;
+ switch (k1)
+ { /* quarter of unit circle */
+ case 2:
+ a = -a;
+ da = -da;
+ /* Fall through. */
+ case 0:
+ xx = a * a;
+ if (xx < 0.01588)
+ {
+ /* Taylor series. */
+ res = TAYLOR_SIN (xx, a, da, cor);
+ cor = 1.02 * cor + __copysign (eps, cor);
+ retval = (res == res + cor) ? res : sloww (a, da, x, shift_quadrant);
+ }
+ else
+ {
+ res = do_sin (a, da, &cor);
+ cor = 1.035 * cor + __copysign (eps, cor);
+ retval = ((res == res + cor) ? __copysign (res, a)
+ : sloww1 (a, da, x, shift_quadrant));
+ }
+ break;
+
+ case 1:
+ case 3:
+ res = do_cos (a, da, &cor);
+ cor = 1.025 * cor + __copysign (eps, cor);
+ retval = ((res == res + cor) ? ((n & 2) ? -res : res)
+ : sloww2 (a, da, x, n));
+ break;
+ }
+
+ return retval;
+}
+
+static inline int4
+__always_inline
+reduce_sincos_2 (double x, double *a, double *da)
+{
+ mynumber v;
+
+ double t = (x * hpinv + toint);
+ double xn = t - toint;
+ v.x = t;
+ double xn1 = (xn + 8.0e22) - 8.0e22;
+ double xn2 = xn - xn1;
+ double y = ((((x - xn1 * mp1) - xn1 * mp2) - xn2 * mp1) - xn2 * mp2);
+ int4 n = v.i[LOW_HALF] & 3;
+ double db = xn1 * pp3;
+ t = y - db;
+ db = (y - t) - db;
+ db = (db - xn2 * pp3) - xn * pp4;
+ double b = t + db;
+ db = (t - b) + db;
+
+ *a = b;
+ *da = db;
+
+ return n;
+}
+
+/* Compute sin (A + DA). cos can be computed by passing SHIFT_QUADRANT as
+ true, which results in shifting the quadrant N clockwise. */
+static double
+__always_inline
+do_sincos_2 (double a, double da, double x, int4 n, bool shift_quadrant)
+{
+ double res, retval, cor, xx;
+
+ double eps = 1.0e-24;
+
+ int4 k = (n + shift_quadrant) & 3;
+
+ switch (k)
+ {
+ case 2:
+ a = -a;
+ da = -da;
+ /* Fall through. */
+ case 0:
+ xx = a * a;
+ if (xx < 0.01588)
+ {
+ /* Taylor series. */
+ res = TAYLOR_SIN (xx, a, da, cor);
+ cor = 1.02 * cor + __copysign (eps, cor);
+ retval = (res == res + cor) ? res : bsloww (a, da, x, n);
+ }
+ else
+ {
+ res = do_sin (a, da, &cor);
+ cor = 1.035 * cor + __copysign (eps, cor);
+ retval = ((res == res + cor) ? __copysign (res, a)
+ : bsloww1 (a, da, x, n));
+ }
+ break;
+
+ case 1:
+ case 3:
+ res = do_cos (a, da, &cor);
+ cor = 1.025 * cor + __copysign (eps, cor);
+ retval = ((res == res + cor) ? ((n & 2) ? -res : res)
+ : bsloww2 (a, da, x, n));
+ break;
+ }
+
+ return retval;
+}
+
+/*******************************************************************/
+/* An ultimate sin routine. Given an IEEE double machine number x */
+/* it computes the correctly rounded (to nearest) value of sin(x) */
+/*******************************************************************/
+#ifdef IN_SINCOS
+static double
+#else
+double
+SECTION
+#endif
+__sin (double x)
+{
+ double xx, res, t, cor;
+ mynumber u;
+ int4 k, m;
+ double retval = 0;
+
+#ifndef IN_SINCOS
+ SET_RESTORE_ROUND_53BIT (FE_TONEAREST);
+#endif
+
+ u.x = x;
+ m = u.i[HIGH_HALF];
+ k = 0x7fffffff & m; /* no sign */
+ if (k < 0x3e500000) /* if x->0 =>sin(x)=x */
+ {
+ math_check_force_underflow (x);
+ retval = x;
+ }
+ /*---------------------------- 2^-26 < |x|< 0.25 ----------------------*/
+ else if (k < 0x3fd00000)
+ {
+ xx = x * x;
+ /* Taylor series. */
+ t = POLYNOMIAL (xx) * (xx * x);
+ res = x + t;
+ cor = (x - res) + t;
+ retval = (res == res + 1.07 * cor) ? res : slow (x);
+ } /* else if (k < 0x3fd00000) */
+/*---------------------------- 0.25<|x|< 0.855469---------------------- */
+ else if (k < 0x3feb6000)
+ {
+ res = do_sin (x, 0, &cor);
+ retval = (res == res + 1.096 * cor) ? res : slow1 (x);
+ retval = __copysign (retval, x);
+ } /* else if (k < 0x3feb6000) */
+
+/*----------------------- 0.855469 <|x|<2.426265 ----------------------*/
+ else if (k < 0x400368fd)
+ {
+
+ t = hp0 - fabs (x);
+ res = do_cos (t, hp1, &cor);
+ retval = (res == res + 1.020 * cor) ? res : slow2 (x);
+ retval = __copysign (retval, x);
+ } /* else if (k < 0x400368fd) */
+
+#ifndef IN_SINCOS
+/*-------------------------- 2.426265<|x|< 105414350 ----------------------*/
+ else if (k < 0x419921FB)
+ {
+ double a, da;
+ int4 n = reduce_sincos_1 (x, &a, &da);
+ retval = do_sincos_1 (a, da, x, n, false);
+ } /* else if (k < 0x419921FB ) */
+
+/*---------------------105414350 <|x|< 281474976710656 --------------------*/
+ else if (k < 0x42F00000)
+ {
+ double a, da;
+
+ int4 n = reduce_sincos_2 (x, &a, &da);
+ retval = do_sincos_2 (a, da, x, n, false);
+ } /* else if (k < 0x42F00000 ) */
+
+/* -----------------281474976710656 <|x| <2^1024----------------------------*/
+ else if (k < 0x7ff00000)
+ retval = reduce_and_compute (x, false);
+
+/*--------------------- |x| > 2^1024 ----------------------------------*/
+ else
+ {
+ if (k == 0x7ff00000 && u.i[LOW_HALF] == 0)
+ __set_errno (EDOM);
+ retval = x / x;
+ }
+#endif
+
+ return retval;
+}
+
+
+/*******************************************************************/
+/* An ultimate cos routine. Given an IEEE double machine number x */
+/* it computes the correctly rounded (to nearest) value of cos(x) */
+/*******************************************************************/
+
+#ifdef IN_SINCOS
+static double
+#else
+double
+SECTION
+#endif
+__cos (double x)
+{
+ double y, xx, res, cor, a, da;
+ mynumber u;
+ int4 k, m;
+
+ double retval = 0;
+
+#ifndef IN_SINCOS
+ SET_RESTORE_ROUND_53BIT (FE_TONEAREST);
+#endif
+
+ u.x = x;
+ m = u.i[HIGH_HALF];
+ k = 0x7fffffff & m;
+
+ /* |x|<2^-27 => cos(x)=1 */
+ if (k < 0x3e400000)
+ retval = 1.0;
+
+ else if (k < 0x3feb6000)
+ { /* 2^-27 < |x| < 0.855469 */
+ res = do_cos (x, 0, &cor);
+ retval = (res == res + 1.020 * cor) ? res : cslow2 (x);
+ } /* else if (k < 0x3feb6000) */
+
+ else if (k < 0x400368fd)
+ { /* 0.855469 <|x|<2.426265 */ ;
+ y = hp0 - fabs (x);
+ a = y + hp1;
+ da = (y - a) + hp1;
+ xx = a * a;
+ if (xx < 0.01588)
+ {
+ res = TAYLOR_SIN (xx, a, da, cor);
+ cor = 1.02 * cor + __copysign (1.0e-31, cor);
+ retval = (res == res + cor) ? res : sloww (a, da, x, true);
+ }
+ else
+ {
+ res = do_sin (a, da, &cor);
+ cor = 1.035 * cor + __copysign (1.0e-31, cor);
+ retval = ((res == res + cor) ? __copysign (res, a)
+ : sloww1 (a, da, x, true));
+ }
+
+ } /* else if (k < 0x400368fd) */
+
+
+#ifndef IN_SINCOS
+ else if (k < 0x419921FB)
+ { /* 2.426265<|x|< 105414350 */
+ double a, da;
+ int4 n = reduce_sincos_1 (x, &a, &da);
+ retval = do_sincos_1 (a, da, x, n, true);
+ } /* else if (k < 0x419921FB ) */
+
+ else if (k < 0x42F00000)
+ {
+ double a, da;
+
+ int4 n = reduce_sincos_2 (x, &a, &da);
+ retval = do_sincos_2 (a, da, x, n, true);
+ } /* else if (k < 0x42F00000 ) */
+
+ /* 281474976710656 <|x| <2^1024 */
+ else if (k < 0x7ff00000)
+ retval = reduce_and_compute (x, true);
+
+ else
+ {
+ if (k == 0x7ff00000 && u.i[LOW_HALF] == 0)
+ __set_errno (EDOM);
+ retval = x / x; /* |x| > 2^1024 */
+ }
+#endif
+
+ return retval;
+}
+
+/************************************************************************/
+/* Routine compute sin(x) for 2^-26 < |x|< 0.25 by Taylor with more */
+/* precision and if still doesn't accurate enough by mpsin or dubsin */
+/************************************************************************/
+
+static inline double
+__always_inline
+slow (double x)
+{
+ double res, cor, w[2];
+ res = TAYLOR_SLOW (x, 0, cor);
+ if (res == res + 1.0007 * cor)
+ return res;
+
+ __dubsin (fabs (x), 0, w);
+ if (w[0] == w[0] + 1.000000001 * w[1])
+ return __copysign (w[0], x);
+
+ return __copysign (__mpsin (fabs (x), 0, false), x);
+}
+
+/*******************************************************************************/
+/* Routine compute sin(x) for 0.25<|x|< 0.855469 by __sincostab.tbl and Taylor */
+/* and if result still doesn't accurate enough by mpsin or dubsin */
+/*******************************************************************************/
+
+static inline double
+__always_inline
+slow1 (double x)
+{
+ double w[2], cor, res;
+
+ res = do_sin_slow (x, 0, 0, &cor);
+ if (res == res + cor)
+ return res;
+
+ __dubsin (fabs (x), 0, w);
+ if (w[0] == w[0] + 1.000000005 * w[1])
+ return w[0];
+
+ return __mpsin (fabs (x), 0, false);
+}
+
+/**************************************************************************/
+/* Routine compute sin(x) for 0.855469 <|x|<2.426265 by __sincostab.tbl */
+/* and if result still doesn't accurate enough by mpsin or dubsin */
+/**************************************************************************/
+static inline double
+__always_inline
+slow2 (double x)
+{
+ double w[2], y, y1, y2, cor, res;
+
+ double t = hp0 - fabs (x);
+ res = do_cos_slow (t, hp1, 0, &cor);
+ if (res == res + cor)
+ return res;
+
+ y = fabs (x) - hp0;
+ y1 = y - hp1;
+ y2 = (y - y1) - hp1;
+ __docos (y1, y2, w);
+ if (w[0] == w[0] + 1.000000005 * w[1])
+ return w[0];
+
+ return __mpsin (fabs (x), 0, false);
+}
+
+/* Compute sin(x + dx) where X is small enough to use Taylor series around zero
+ and (x + dx) in the first or third quarter of the unit circle. ORIG is the
+ original value of X for computing error of the result. If the result is not
+ accurate enough, the routine calls mpsin or dubsin. SHIFT_QUADRANT rotates
+ the unit circle by 1 to compute the cosine instead of sine. */
+static inline double
+__always_inline
+sloww (double x, double dx, double orig, bool shift_quadrant)
+{
+ double y, t, res, cor, w[2], a, da, xn;
+ mynumber v;
+ int4 n;
+ res = TAYLOR_SLOW (x, dx, cor);
+
+ double eps = fabs (orig) * 3.1e-30;
+
+ cor = 1.0005 * cor + __copysign (eps, cor);
+
+ if (res == res + cor)
+ return res;
+
+ a = fabs (x);
+ da = (x > 0) ? dx : -dx;
+ __dubsin (a, da, w);
+ eps = fabs (orig) * 1.1e-30;
+ cor = 1.000000001 * w[1] + __copysign (eps, w[1]);
+
+ if (w[0] == w[0] + cor)
+ return __copysign (w[0], x);
+
+ t = (orig * hpinv + toint);
+ xn = t - toint;
+ v.x = t;
+ y = (orig - xn * mp1) - xn * mp2;
+ n = (v.i[LOW_HALF] + shift_quadrant) & 3;
+ da = xn * pp3;
+ t = y - da;
+ da = (y - t) - da;
+ y = xn * pp4;
+ a = t - y;
+ da = ((t - a) - y) + da;
+
+ if (n & 2)
+ {
+ a = -a;
+ da = -da;
+ }
+ x = fabs (a);
+ dx = (a > 0) ? da : -da;
+ __dubsin (x, dx, w);
+ eps = fabs (orig) * 1.1e-40;
+ cor = 1.000000001 * w[1] + __copysign (eps, w[1]);
+
+ if (w[0] == w[0] + cor)
+ return __copysign (w[0], a);
+
+ return shift_quadrant ? __mpcos (orig, 0, true) : __mpsin (orig, 0, true);
+}
+
+/* Compute sin(x + dx) where X is in the first or third quarter of the unit
+ circle. ORIG is the original value of X for computing error of the result.
+ If the result is not accurate enough, the routine calls mpsin or dubsin.
+ SHIFT_QUADRANT rotates the unit circle by 1 to compute the cosine instead of
+ sine. */
+static inline double
+__always_inline
+sloww1 (double x, double dx, double orig, bool shift_quadrant)
+{
+ double w[2], cor, res;
+
+ res = do_sin_slow (x, dx, 3.1e-30 * fabs (orig), &cor);
+
+ if (res == res + cor)
+ return __copysign (res, x);
+
+ dx = (x > 0 ? dx : -dx);
+ __dubsin (fabs (x), dx, w);
+
+ double eps = 1.1e-30 * fabs (orig);
+ cor = 1.000000005 * w[1] + __copysign (eps, w[1]);
+
+ if (w[0] == w[0] + cor)
+ return __copysign (w[0], x);
+
+ return shift_quadrant ? __mpcos (orig, 0, true) : __mpsin (orig, 0, true);
+}
+
+/***************************************************************************/
+/* Routine compute sin(x+dx) (Double-Length number) where x in second or */
+/* fourth quarter of unit circle.Routine receive also the original value */
+/* and quarter(n= 1or 3)of x for computing error of result.And if result not*/
+/* accurate enough routine calls mpsin1 or dubsin */
+/***************************************************************************/
+
+static inline double
+__always_inline
+sloww2 (double x, double dx, double orig, int n)
+{
+ double w[2], cor, res;
+
+ res = do_cos_slow (x, dx, 3.1e-30 * fabs (orig), &cor);
+
+ if (res == res + cor)
+ return (n & 2) ? -res : res;
+
+ dx = x > 0 ? dx : -dx;
+ __docos (fabs (x), dx, w);
+
+ double eps = 1.1e-30 * fabs (orig);
+ cor = 1.000000005 * w[1] + __copysign (eps, w[1]);
+
+ if (w[0] == w[0] + cor)
+ return (n & 2) ? -w[0] : w[0];
+
+ return (n & 1) ? __mpsin (orig, 0, true) : __mpcos (orig, 0, true);
+}
+
+/***************************************************************************/
+/* Routine compute sin(x+dx) or cos(x+dx) (Double-Length number) where x */
+/* is small enough to use Taylor series around zero and (x+dx) */
+/* in first or third quarter of unit circle.Routine receive also */
+/* (right argument) the original value of x for computing error of */
+/* result.And if result not accurate enough routine calls other routines */
+/***************************************************************************/
+
+static inline double
+__always_inline
+bsloww (double x, double dx, double orig, int n)
+{
+ double res, cor, w[2], a, da;
+
+ res = TAYLOR_SLOW (x, dx, cor);
+ cor = 1.0005 * cor + __copysign (1.1e-24, cor);
+ if (res == res + cor)
+ return res;
+
+ a = fabs (x);
+ da = (x > 0) ? dx : -dx;
+ __dubsin (a, da, w);
+ cor = 1.000000001 * w[1] + __copysign (1.1e-24, w[1]);
+
+ if (w[0] == w[0] + cor)
+ return __copysign (w[0], x);
+
+ return (n & 1) ? __mpcos (orig, 0, true) : __mpsin (orig, 0, true);
+}
+
+/***************************************************************************/
+/* Routine compute sin(x+dx) or cos(x+dx) (Double-Length number) where x */
+/* in first or third quarter of unit circle.Routine receive also */
+/* (right argument) the original value of x for computing error of result.*/
+/* And if result not accurate enough routine calls other routines */
+/***************************************************************************/
+
+static inline double
+__always_inline
+bsloww1 (double x, double dx, double orig, int n)
+{
+ double w[2], cor, res;
+
+ res = do_sin_slow (x, dx, 1.1e-24, &cor);
+ if (res == res + cor)
+ return (x > 0) ? res : -res;
+
+ dx = (x > 0) ? dx : -dx;
+ __dubsin (fabs (x), dx, w);
+
+ cor = 1.000000005 * w[1] + __copysign (1.1e-24, w[1]);
+
+ if (w[0] == w[0] + cor)
+ return __copysign (w[0], x);
+
+ return (n & 1) ? __mpcos (orig, 0, true) : __mpsin (orig, 0, true);
+}
+
+/***************************************************************************/
+/* Routine compute sin(x+dx) or cos(x+dx) (Double-Length number) where x */
+/* in second or fourth quarter of unit circle.Routine receive also the */
+/* original value and quarter(n= 1or 3)of x for computing error of result. */
+/* And if result not accurate enough routine calls other routines */
+/***************************************************************************/
+
+static inline double
+__always_inline
+bsloww2 (double x, double dx, double orig, int n)
+{
+ double w[2], cor, res;
+
+ res = do_cos_slow (x, dx, 1.1e-24, &cor);
+ if (res == res + cor)
+ return (n & 2) ? -res : res;
+
+ dx = (x > 0) ? dx : -dx;
+ __docos (fabs (x), dx, w);
+
+ cor = 1.000000005 * w[1] + __copysign (1.1e-24, w[1]);
+
+ if (w[0] == w[0] + cor)
+ return (n & 2) ? -w[0] : w[0];
+
+ return (n & 1) ? __mpsin (orig, 0, true) : __mpcos (orig, 0, true);
+}
+
+/************************************************************************/
+/* Routine compute cos(x) for 2^-27 < |x|< 0.25 by Taylor with more */
+/* precision and if still doesn't accurate enough by mpcos or docos */
+/************************************************************************/
+
+static inline double
+__always_inline
+cslow2 (double x)
+{
+ double w[2], cor, res;
+
+ res = do_cos_slow (x, 0, 0, &cor);
+ if (res == res + cor)
+ return res;
+
+ __docos (fabs (x), 0, w);
+ if (w[0] == w[0] + 1.000000005 * w[1])
+ return w[0];
+
+ return __mpcos (x, 0, false);
+}
+
+#ifndef __cos
+weak_alias (__cos, cos)
+# ifdef NO_LONG_DOUBLE
+strong_alias (__cos, __cosl)
+weak_alias (__cos, cosl)
+# endif
+#endif
+#ifndef __sin
+weak_alias (__sin, sin)
+# ifdef NO_LONG_DOUBLE
+strong_alias (__sin, __sinl)
+weak_alias (__sin, sinl)
+# endif
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/s_sincos.c b/REORG.TODO/sysdeps/ieee754/dbl-64/s_sincos.c
new file mode 100644
index 0000000000..05cff50ce8
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/s_sincos.c
@@ -0,0 +1,113 @@
+/* Compute sine and cosine of argument.
+ Copyright (C) 1997-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <errno.h>
+#include <math.h>
+
+#include <math_private.h>
+
+#define __sin __sin_local
+#define __cos __cos_local
+#define IN_SINCOS 1
+#include "s_sin.c"
+
+/* Consolidated version of reduce_and_compute in s_sin.c that does range
+ reduction only once and computes sin and cos together. */
+static inline void
+__always_inline
+reduce_and_compute_sincos (double x, double *sinx, double *cosx)
+{
+ double a, da;
+ unsigned int n = __branred (x, &a, &da);
+
+ n = n & 3;
+
+ if (n == 1 || n == 2)
+ {
+ a = -a;
+ da = -da;
+ }
+
+ if (n & 1)
+ {
+ double *temp = cosx;
+ cosx = sinx;
+ sinx = temp;
+ }
+
+ if (a * a < 0.01588)
+ *sinx = bsloww (a, da, x, n);
+ else
+ *sinx = bsloww1 (a, da, x, n);
+ *cosx = bsloww2 (a, da, x, n);
+}
+
+void
+__sincos (double x, double *sinx, double *cosx)
+{
+ mynumber u;
+ int k;
+
+ SET_RESTORE_ROUND_53BIT (FE_TONEAREST);
+
+ u.x = x;
+ k = 0x7fffffff & u.i[HIGH_HALF];
+
+ if (k < 0x400368fd)
+ {
+ *sinx = __sin_local (x);
+ *cosx = __cos_local (x);
+ return;
+ }
+ if (k < 0x419921FB)
+ {
+ double a, da;
+ int4 n = reduce_sincos_1 (x, &a, &da);
+
+ *sinx = do_sincos_1 (a, da, x, n, false);
+ *cosx = do_sincos_1 (a, da, x, n, true);
+
+ return;
+ }
+ if (k < 0x42F00000)
+ {
+ double a, da;
+ int4 n = reduce_sincos_2 (x, &a, &da);
+
+ *sinx = do_sincos_2 (a, da, x, n, false);
+ *cosx = do_sincos_2 (a, da, x, n, true);
+
+ return;
+ }
+ if (k < 0x7ff00000)
+ {
+ reduce_and_compute_sincos (x, sinx, cosx);
+ return;
+ }
+
+ if (isinf (x))
+ __set_errno (EDOM);
+
+ *sinx = *cosx = x / x;
+}
+weak_alias (__sincos, sincos)
+#ifdef NO_LONG_DOUBLE
+strong_alias (__sincos, __sincosl)
+weak_alias (__sincos, sincosl)
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/s_tan.c b/REORG.TODO/sysdeps/ieee754/dbl-64/s_tan.c
new file mode 100644
index 0000000000..b2a8681a6d
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/s_tan.c
@@ -0,0 +1,848 @@
+/*
+ * IBM Accurate Mathematical Library
+ * written by International Business Machines Corp.
+ * Copyright (C) 2001-2017 Free Software Foundation, Inc.
+ *
+ * This program 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 2.1 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 program; if not, see <http://www.gnu.org/licenses/>.
+ */
+/*********************************************************************/
+/* MODULE_NAME: utan.c */
+/* */
+/* FUNCTIONS: utan */
+/* tanMp */
+/* */
+/* FILES NEEDED:dla.h endian.h mpa.h mydefs.h utan.h */
+/* branred.c sincos32.c mptan.c */
+/* utan.tbl */
+/* */
+/* An ultimate tan routine. Given an IEEE double machine number x */
+/* it computes the correctly rounded (to nearest) value of tan(x). */
+/* Assumption: Machine arithmetic operations are performed in */
+/* round to nearest mode of IEEE 754 standard. */
+/* */
+/*********************************************************************/
+
+#include <errno.h>
+#include <float.h>
+#include "endian.h"
+#include <dla.h>
+#include "mpa.h"
+#include "MathLib.h"
+#include <math.h>
+#include <math_private.h>
+#include <fenv.h>
+#include <stap-probe.h>
+
+#ifndef SECTION
+# define SECTION
+#endif
+
+static double tanMp (double);
+void __mptan (double, mp_no *, int);
+
+double
+SECTION
+tan (double x)
+{
+#include "utan.h"
+#include "utan.tbl"
+
+ int ux, i, n;
+ double a, da, a2, b, db, c, dc, c1, cc1, c2, cc2, c3, cc3, fi, ffi, gi, pz,
+ s, sy, t, t1, t2, t3, t4, t7, t8, t9, t10, w, x2, xn, xx2, y, ya,
+ yya, z0, z, zz, z2, zz2;
+#ifndef DLA_FMS
+ double t5, t6;
+#endif
+ int p;
+ number num, v;
+ mp_no mpa, mpt1, mpt2;
+
+ double retval;
+
+ int __branred (double, double *, double *);
+ int __mpranred (double, mp_no *, int);
+
+ SET_RESTORE_ROUND_53BIT (FE_TONEAREST);
+
+ /* x=+-INF, x=NaN */
+ num.d = x;
+ ux = num.i[HIGH_HALF];
+ if ((ux & 0x7ff00000) == 0x7ff00000)
+ {
+ if ((ux & 0x7fffffff) == 0x7ff00000)
+ __set_errno (EDOM);
+ retval = x - x;
+ goto ret;
+ }
+
+ w = (x < 0.0) ? -x : x;
+
+ /* (I) The case abs(x) <= 1.259e-8 */
+ if (w <= g1.d)
+ {
+ math_check_force_underflow_nonneg (w);
+ retval = x;
+ goto ret;
+ }
+
+ /* (II) The case 1.259e-8 < abs(x) <= 0.0608 */
+ if (w <= g2.d)
+ {
+ /* First stage */
+ x2 = x * x;
+
+ t2 = d9.d + x2 * d11.d;
+ t2 = d7.d + x2 * t2;
+ t2 = d5.d + x2 * t2;
+ t2 = d3.d + x2 * t2;
+ t2 *= x * x2;
+
+ if ((y = x + (t2 - u1.d * t2)) == x + (t2 + u1.d * t2))
+ {
+ retval = y;
+ goto ret;
+ }
+
+ /* Second stage */
+ c1 = a25.d + x2 * a27.d;
+ c1 = a23.d + x2 * c1;
+ c1 = a21.d + x2 * c1;
+ c1 = a19.d + x2 * c1;
+ c1 = a17.d + x2 * c1;
+ c1 = a15.d + x2 * c1;
+ c1 *= x2;
+
+ EMULV (x, x, x2, xx2, t1, t2, t3, t4, t5);
+ ADD2 (a13.d, aa13.d, c1, 0.0, c2, cc2, t1, t2);
+ MUL2 (x2, xx2, c2, cc2, c1, cc1, t1, t2, t3, t4, t5, t6, t7, t8);
+ ADD2 (a11.d, aa11.d, c1, cc1, c2, cc2, t1, t2);
+ MUL2 (x2, xx2, c2, cc2, c1, cc1, t1, t2, t3, t4, t5, t6, t7, t8);
+ ADD2 (a9.d, aa9.d, c1, cc1, c2, cc2, t1, t2);
+ MUL2 (x2, xx2, c2, cc2, c1, cc1, t1, t2, t3, t4, t5, t6, t7, t8);
+ ADD2 (a7.d, aa7.d, c1, cc1, c2, cc2, t1, t2);
+ MUL2 (x2, xx2, c2, cc2, c1, cc1, t1, t2, t3, t4, t5, t6, t7, t8);
+ ADD2 (a5.d, aa5.d, c1, cc1, c2, cc2, t1, t2);
+ MUL2 (x2, xx2, c2, cc2, c1, cc1, t1, t2, t3, t4, t5, t6, t7, t8);
+ ADD2 (a3.d, aa3.d, c1, cc1, c2, cc2, t1, t2);
+ MUL2 (x2, xx2, c2, cc2, c1, cc1, t1, t2, t3, t4, t5, t6, t7, t8);
+ MUL2 (x, 0.0, c1, cc1, c2, cc2, t1, t2, t3, t4, t5, t6, t7, t8);
+ ADD2 (x, 0.0, c2, cc2, c1, cc1, t1, t2);
+ if ((y = c1 + (cc1 - u2.d * c1)) == c1 + (cc1 + u2.d * c1))
+ {
+ retval = y;
+ goto ret;
+ }
+ retval = tanMp (x);
+ goto ret;
+ }
+
+ /* (III) The case 0.0608 < abs(x) <= 0.787 */
+ if (w <= g3.d)
+ {
+ /* First stage */
+ i = ((int) (mfftnhf.d + TWO8 * w));
+ z = w - xfg[i][0].d;
+ z2 = z * z;
+ s = (x < 0.0) ? -1 : 1;
+ pz = z + z * z2 * (e0.d + z2 * e1.d);
+ fi = xfg[i][1].d;
+ gi = xfg[i][2].d;
+ t2 = pz * (gi + fi) / (gi - pz);
+ if ((y = fi + (t2 - fi * u3.d)) == fi + (t2 + fi * u3.d))
+ {
+ retval = (s * y);
+ goto ret;
+ }
+ t3 = (t2 < 0.0) ? -t2 : t2;
+ t4 = fi * ua3.d + t3 * ub3.d;
+ if ((y = fi + (t2 - t4)) == fi + (t2 + t4))
+ {
+ retval = (s * y);
+ goto ret;
+ }
+
+ /* Second stage */
+ ffi = xfg[i][3].d;
+ c1 = z2 * (a7.d + z2 * (a9.d + z2 * a11.d));
+ EMULV (z, z, z2, zz2, t1, t2, t3, t4, t5);
+ ADD2 (a5.d, aa5.d, c1, 0.0, c2, cc2, t1, t2);
+ MUL2 (z2, zz2, c2, cc2, c1, cc1, t1, t2, t3, t4, t5, t6, t7, t8);
+ ADD2 (a3.d, aa3.d, c1, cc1, c2, cc2, t1, t2);
+ MUL2 (z2, zz2, c2, cc2, c1, cc1, t1, t2, t3, t4, t5, t6, t7, t8);
+ MUL2 (z, 0.0, c1, cc1, c2, cc2, t1, t2, t3, t4, t5, t6, t7, t8);
+ ADD2 (z, 0.0, c2, cc2, c1, cc1, t1, t2);
+
+ ADD2 (fi, ffi, c1, cc1, c2, cc2, t1, t2);
+ MUL2 (fi, ffi, c1, cc1, c3, cc3, t1, t2, t3, t4, t5, t6, t7, t8);
+ SUB2 (1.0, 0.0, c3, cc3, c1, cc1, t1, t2);
+ DIV2 (c2, cc2, c1, cc1, c3, cc3, t1, t2, t3, t4, t5, t6, t7, t8, t9,
+ t10);
+
+ if ((y = c3 + (cc3 - u4.d * c3)) == c3 + (cc3 + u4.d * c3))
+ {
+ retval = (s * y);
+ goto ret;
+ }
+ retval = tanMp (x);
+ goto ret;
+ }
+
+ /* (---) The case 0.787 < abs(x) <= 25 */
+ if (w <= g4.d)
+ {
+ /* Range reduction by algorithm i */
+ t = (x * hpinv.d + toint.d);
+ xn = t - toint.d;
+ v.d = t;
+ t1 = (x - xn * mp1.d) - xn * mp2.d;
+ n = v.i[LOW_HALF] & 0x00000001;
+ da = xn * mp3.d;
+ a = t1 - da;
+ da = (t1 - a) - da;
+ if (a < 0.0)
+ {
+ ya = -a;
+ yya = -da;
+ sy = -1;
+ }
+ else
+ {
+ ya = a;
+ yya = da;
+ sy = 1;
+ }
+
+ /* (IV),(V) The case 0.787 < abs(x) <= 25, abs(y) <= 1e-7 */
+ if (ya <= gy1.d)
+ {
+ retval = tanMp (x);
+ goto ret;
+ }
+
+ /* (VI) The case 0.787 < abs(x) <= 25, 1e-7 < abs(y) <= 0.0608 */
+ if (ya <= gy2.d)
+ {
+ a2 = a * a;
+ t2 = d9.d + a2 * d11.d;
+ t2 = d7.d + a2 * t2;
+ t2 = d5.d + a2 * t2;
+ t2 = d3.d + a2 * t2;
+ t2 = da + a * a2 * t2;
+
+ if (n)
+ {
+ /* First stage -cot */
+ EADD (a, t2, b, db);
+ DIV2 (1.0, 0.0, b, db, c, dc, t1, t2, t3, t4, t5, t6, t7, t8,
+ t9, t10);
+ if ((y = c + (dc - u6.d * c)) == c + (dc + u6.d * c))
+ {
+ retval = (-y);
+ goto ret;
+ }
+ }
+ else
+ {
+ /* First stage tan */
+ if ((y = a + (t2 - u5.d * a)) == a + (t2 + u5.d * a))
+ {
+ retval = y;
+ goto ret;
+ }
+ }
+ /* Second stage */
+ /* Range reduction by algorithm ii */
+ t = (x * hpinv.d + toint.d);
+ xn = t - toint.d;
+ v.d = t;
+ t1 = (x - xn * mp1.d) - xn * mp2.d;
+ n = v.i[LOW_HALF] & 0x00000001;
+ da = xn * pp3.d;
+ t = t1 - da;
+ da = (t1 - t) - da;
+ t1 = xn * pp4.d;
+ a = t - t1;
+ da = ((t - a) - t1) + da;
+
+ /* Second stage */
+ EADD (a, da, t1, t2);
+ a = t1;
+ da = t2;
+ MUL2 (a, da, a, da, x2, xx2, t1, t2, t3, t4, t5, t6, t7, t8);
+
+ c1 = a25.d + x2 * a27.d;
+ c1 = a23.d + x2 * c1;
+ c1 = a21.d + x2 * c1;
+ c1 = a19.d + x2 * c1;
+ c1 = a17.d + x2 * c1;
+ c1 = a15.d + x2 * c1;
+ c1 *= x2;
+
+ ADD2 (a13.d, aa13.d, c1, 0.0, c2, cc2, t1, t2);
+ MUL2 (x2, xx2, c2, cc2, c1, cc1, t1, t2, t3, t4, t5, t6, t7, t8);
+ ADD2 (a11.d, aa11.d, c1, cc1, c2, cc2, t1, t2);
+ MUL2 (x2, xx2, c2, cc2, c1, cc1, t1, t2, t3, t4, t5, t6, t7, t8);
+ ADD2 (a9.d, aa9.d, c1, cc1, c2, cc2, t1, t2);
+ MUL2 (x2, xx2, c2, cc2, c1, cc1, t1, t2, t3, t4, t5, t6, t7, t8);
+ ADD2 (a7.d, aa7.d, c1, cc1, c2, cc2, t1, t2);
+ MUL2 (x2, xx2, c2, cc2, c1, cc1, t1, t2, t3, t4, t5, t6, t7, t8);
+ ADD2 (a5.d, aa5.d, c1, cc1, c2, cc2, t1, t2);
+ MUL2 (x2, xx2, c2, cc2, c1, cc1, t1, t2, t3, t4, t5, t6, t7, t8);
+ ADD2 (a3.d, aa3.d, c1, cc1, c2, cc2, t1, t2);
+ MUL2 (x2, xx2, c2, cc2, c1, cc1, t1, t2, t3, t4, t5, t6, t7, t8);
+ MUL2 (a, da, c1, cc1, c2, cc2, t1, t2, t3, t4, t5, t6, t7, t8);
+ ADD2 (a, da, c2, cc2, c1, cc1, t1, t2);
+
+ if (n)
+ {
+ /* Second stage -cot */
+ DIV2 (1.0, 0.0, c1, cc1, c2, cc2, t1, t2, t3, t4, t5, t6, t7,
+ t8, t9, t10);
+ if ((y = c2 + (cc2 - u8.d * c2)) == c2 + (cc2 + u8.d * c2))
+ {
+ retval = (-y);
+ goto ret;
+ }
+ }
+ else
+ {
+ /* Second stage tan */
+ if ((y = c1 + (cc1 - u7.d * c1)) == c1 + (cc1 + u7.d * c1))
+ {
+ retval = y;
+ goto ret;
+ }
+ }
+ retval = tanMp (x);
+ goto ret;
+ }
+
+ /* (VII) The case 0.787 < abs(x) <= 25, 0.0608 < abs(y) <= 0.787 */
+
+ /* First stage */
+ i = ((int) (mfftnhf.d + TWO8 * ya));
+ z = (z0 = (ya - xfg[i][0].d)) + yya;
+ z2 = z * z;
+ pz = z + z * z2 * (e0.d + z2 * e1.d);
+ fi = xfg[i][1].d;
+ gi = xfg[i][2].d;
+
+ if (n)
+ {
+ /* -cot */
+ t2 = pz * (fi + gi) / (fi + pz);
+ if ((y = gi - (t2 - gi * u10.d)) == gi - (t2 + gi * u10.d))
+ {
+ retval = (-sy * y);
+ goto ret;
+ }
+ t3 = (t2 < 0.0) ? -t2 : t2;
+ t4 = gi * ua10.d + t3 * ub10.d;
+ if ((y = gi - (t2 - t4)) == gi - (t2 + t4))
+ {
+ retval = (-sy * y);
+ goto ret;
+ }
+ }
+ else
+ {
+ /* tan */
+ t2 = pz * (gi + fi) / (gi - pz);
+ if ((y = fi + (t2 - fi * u9.d)) == fi + (t2 + fi * u9.d))
+ {
+ retval = (sy * y);
+ goto ret;
+ }
+ t3 = (t2 < 0.0) ? -t2 : t2;
+ t4 = fi * ua9.d + t3 * ub9.d;
+ if ((y = fi + (t2 - t4)) == fi + (t2 + t4))
+ {
+ retval = (sy * y);
+ goto ret;
+ }
+ }
+
+ /* Second stage */
+ ffi = xfg[i][3].d;
+ EADD (z0, yya, z, zz)
+ MUL2 (z, zz, z, zz, z2, zz2, t1, t2, t3, t4, t5, t6, t7, t8);
+ c1 = z2 * (a7.d + z2 * (a9.d + z2 * a11.d));
+ ADD2 (a5.d, aa5.d, c1, 0.0, c2, cc2, t1, t2);
+ MUL2 (z2, zz2, c2, cc2, c1, cc1, t1, t2, t3, t4, t5, t6, t7, t8);
+ ADD2 (a3.d, aa3.d, c1, cc1, c2, cc2, t1, t2);
+ MUL2 (z2, zz2, c2, cc2, c1, cc1, t1, t2, t3, t4, t5, t6, t7, t8);
+ MUL2 (z, zz, c1, cc1, c2, cc2, t1, t2, t3, t4, t5, t6, t7, t8);
+ ADD2 (z, zz, c2, cc2, c1, cc1, t1, t2);
+
+ ADD2 (fi, ffi, c1, cc1, c2, cc2, t1, t2);
+ MUL2 (fi, ffi, c1, cc1, c3, cc3, t1, t2, t3, t4, t5, t6, t7, t8);
+ SUB2 (1.0, 0.0, c3, cc3, c1, cc1, t1, t2);
+
+ if (n)
+ {
+ /* -cot */
+ DIV2 (c1, cc1, c2, cc2, c3, cc3, t1, t2, t3, t4, t5, t6, t7, t8, t9,
+ t10);
+ if ((y = c3 + (cc3 - u12.d * c3)) == c3 + (cc3 + u12.d * c3))
+ {
+ retval = (-sy * y);
+ goto ret;
+ }
+ }
+ else
+ {
+ /* tan */
+ DIV2 (c2, cc2, c1, cc1, c3, cc3, t1, t2, t3, t4, t5, t6, t7, t8, t9,
+ t10);
+ if ((y = c3 + (cc3 - u11.d * c3)) == c3 + (cc3 + u11.d * c3))
+ {
+ retval = (sy * y);
+ goto ret;
+ }
+ }
+
+ retval = tanMp (x);
+ goto ret;
+ }
+
+ /* (---) The case 25 < abs(x) <= 1e8 */
+ if (w <= g5.d)
+ {
+ /* Range reduction by algorithm ii */
+ t = (x * hpinv.d + toint.d);
+ xn = t - toint.d;
+ v.d = t;
+ t1 = (x - xn * mp1.d) - xn * mp2.d;
+ n = v.i[LOW_HALF] & 0x00000001;
+ da = xn * pp3.d;
+ t = t1 - da;
+ da = (t1 - t) - da;
+ t1 = xn * pp4.d;
+ a = t - t1;
+ da = ((t - a) - t1) + da;
+ EADD (a, da, t1, t2);
+ a = t1;
+ da = t2;
+ if (a < 0.0)
+ {
+ ya = -a;
+ yya = -da;
+ sy = -1;
+ }
+ else
+ {
+ ya = a;
+ yya = da;
+ sy = 1;
+ }
+
+ /* (+++) The case 25 < abs(x) <= 1e8, abs(y) <= 1e-7 */
+ if (ya <= gy1.d)
+ {
+ retval = tanMp (x);
+ goto ret;
+ }
+
+ /* (VIII) The case 25 < abs(x) <= 1e8, 1e-7 < abs(y) <= 0.0608 */
+ if (ya <= gy2.d)
+ {
+ a2 = a * a;
+ t2 = d9.d + a2 * d11.d;
+ t2 = d7.d + a2 * t2;
+ t2 = d5.d + a2 * t2;
+ t2 = d3.d + a2 * t2;
+ t2 = da + a * a2 * t2;
+
+ if (n)
+ {
+ /* First stage -cot */
+ EADD (a, t2, b, db);
+ DIV2 (1.0, 0.0, b, db, c, dc, t1, t2, t3, t4, t5, t6, t7, t8,
+ t9, t10);
+ if ((y = c + (dc - u14.d * c)) == c + (dc + u14.d * c))
+ {
+ retval = (-y);
+ goto ret;
+ }
+ }
+ else
+ {
+ /* First stage tan */
+ if ((y = a + (t2 - u13.d * a)) == a + (t2 + u13.d * a))
+ {
+ retval = y;
+ goto ret;
+ }
+ }
+
+ /* Second stage */
+ MUL2 (a, da, a, da, x2, xx2, t1, t2, t3, t4, t5, t6, t7, t8);
+ c1 = a25.d + x2 * a27.d;
+ c1 = a23.d + x2 * c1;
+ c1 = a21.d + x2 * c1;
+ c1 = a19.d + x2 * c1;
+ c1 = a17.d + x2 * c1;
+ c1 = a15.d + x2 * c1;
+ c1 *= x2;
+
+ ADD2 (a13.d, aa13.d, c1, 0.0, c2, cc2, t1, t2);
+ MUL2 (x2, xx2, c2, cc2, c1, cc1, t1, t2, t3, t4, t5, t6, t7, t8);
+ ADD2 (a11.d, aa11.d, c1, cc1, c2, cc2, t1, t2);
+ MUL2 (x2, xx2, c2, cc2, c1, cc1, t1, t2, t3, t4, t5, t6, t7, t8);
+ ADD2 (a9.d, aa9.d, c1, cc1, c2, cc2, t1, t2);
+ MUL2 (x2, xx2, c2, cc2, c1, cc1, t1, t2, t3, t4, t5, t6, t7, t8);
+ ADD2 (a7.d, aa7.d, c1, cc1, c2, cc2, t1, t2);
+ MUL2 (x2, xx2, c2, cc2, c1, cc1, t1, t2, t3, t4, t5, t6, t7, t8);
+ ADD2 (a5.d, aa5.d, c1, cc1, c2, cc2, t1, t2);
+ MUL2 (x2, xx2, c2, cc2, c1, cc1, t1, t2, t3, t4, t5, t6, t7, t8);
+ ADD2 (a3.d, aa3.d, c1, cc1, c2, cc2, t1, t2);
+ MUL2 (x2, xx2, c2, cc2, c1, cc1, t1, t2, t3, t4, t5, t6, t7, t8);
+ MUL2 (a, da, c1, cc1, c2, cc2, t1, t2, t3, t4, t5, t6, t7, t8);
+ ADD2 (a, da, c2, cc2, c1, cc1, t1, t2);
+
+ if (n)
+ {
+ /* Second stage -cot */
+ DIV2 (1.0, 0.0, c1, cc1, c2, cc2, t1, t2, t3, t4, t5, t6, t7,
+ t8, t9, t10);
+ if ((y = c2 + (cc2 - u16.d * c2)) == c2 + (cc2 + u16.d * c2))
+ {
+ retval = (-y);
+ goto ret;
+ }
+ }
+ else
+ {
+ /* Second stage tan */
+ if ((y = c1 + (cc1 - u15.d * c1)) == c1 + (cc1 + u15.d * c1))
+ {
+ retval = (y);
+ goto ret;
+ }
+ }
+ retval = tanMp (x);
+ goto ret;
+ }
+
+ /* (IX) The case 25 < abs(x) <= 1e8, 0.0608 < abs(y) <= 0.787 */
+ /* First stage */
+ i = ((int) (mfftnhf.d + TWO8 * ya));
+ z = (z0 = (ya - xfg[i][0].d)) + yya;
+ z2 = z * z;
+ pz = z + z * z2 * (e0.d + z2 * e1.d);
+ fi = xfg[i][1].d;
+ gi = xfg[i][2].d;
+
+ if (n)
+ {
+ /* -cot */
+ t2 = pz * (fi + gi) / (fi + pz);
+ if ((y = gi - (t2 - gi * u18.d)) == gi - (t2 + gi * u18.d))
+ {
+ retval = (-sy * y);
+ goto ret;
+ }
+ t3 = (t2 < 0.0) ? -t2 : t2;
+ t4 = gi * ua18.d + t3 * ub18.d;
+ if ((y = gi - (t2 - t4)) == gi - (t2 + t4))
+ {
+ retval = (-sy * y);
+ goto ret;
+ }
+ }
+ else
+ {
+ /* tan */
+ t2 = pz * (gi + fi) / (gi - pz);
+ if ((y = fi + (t2 - fi * u17.d)) == fi + (t2 + fi * u17.d))
+ {
+ retval = (sy * y);
+ goto ret;
+ }
+ t3 = (t2 < 0.0) ? -t2 : t2;
+ t4 = fi * ua17.d + t3 * ub17.d;
+ if ((y = fi + (t2 - t4)) == fi + (t2 + t4))
+ {
+ retval = (sy * y);
+ goto ret;
+ }
+ }
+
+ /* Second stage */
+ ffi = xfg[i][3].d;
+ EADD (z0, yya, z, zz);
+ MUL2 (z, zz, z, zz, z2, zz2, t1, t2, t3, t4, t5, t6, t7, t8);
+ c1 = z2 * (a7.d + z2 * (a9.d + z2 * a11.d));
+ ADD2 (a5.d, aa5.d, c1, 0.0, c2, cc2, t1, t2);
+ MUL2 (z2, zz2, c2, cc2, c1, cc1, t1, t2, t3, t4, t5, t6, t7, t8);
+ ADD2 (a3.d, aa3.d, c1, cc1, c2, cc2, t1, t2);
+ MUL2 (z2, zz2, c2, cc2, c1, cc1, t1, t2, t3, t4, t5, t6, t7, t8);
+ MUL2 (z, zz, c1, cc1, c2, cc2, t1, t2, t3, t4, t5, t6, t7, t8);
+ ADD2 (z, zz, c2, cc2, c1, cc1, t1, t2);
+
+ ADD2 (fi, ffi, c1, cc1, c2, cc2, t1, t2);
+ MUL2 (fi, ffi, c1, cc1, c3, cc3, t1, t2, t3, t4, t5, t6, t7, t8);
+ SUB2 (1.0, 0.0, c3, cc3, c1, cc1, t1, t2);
+
+ if (n)
+ {
+ /* -cot */
+ DIV2 (c1, cc1, c2, cc2, c3, cc3, t1, t2, t3, t4, t5, t6, t7, t8, t9,
+ t10);
+ if ((y = c3 + (cc3 - u20.d * c3)) == c3 + (cc3 + u20.d * c3))
+ {
+ retval = (-sy * y);
+ goto ret;
+ }
+ }
+ else
+ {
+ /* tan */
+ DIV2 (c2, cc2, c1, cc1, c3, cc3, t1, t2, t3, t4, t5, t6, t7, t8, t9,
+ t10);
+ if ((y = c3 + (cc3 - u19.d * c3)) == c3 + (cc3 + u19.d * c3))
+ {
+ retval = (sy * y);
+ goto ret;
+ }
+ }
+ retval = tanMp (x);
+ goto ret;
+ }
+
+ /* (---) The case 1e8 < abs(x) < 2**1024 */
+ /* Range reduction by algorithm iii */
+ n = (__branred (x, &a, &da)) & 0x00000001;
+ EADD (a, da, t1, t2);
+ a = t1;
+ da = t2;
+ if (a < 0.0)
+ {
+ ya = -a;
+ yya = -da;
+ sy = -1;
+ }
+ else
+ {
+ ya = a;
+ yya = da;
+ sy = 1;
+ }
+
+ /* (+++) The case 1e8 < abs(x) < 2**1024, abs(y) <= 1e-7 */
+ if (ya <= gy1.d)
+ {
+ retval = tanMp (x);
+ goto ret;
+ }
+
+ /* (X) The case 1e8 < abs(x) < 2**1024, 1e-7 < abs(y) <= 0.0608 */
+ if (ya <= gy2.d)
+ {
+ a2 = a * a;
+ t2 = d9.d + a2 * d11.d;
+ t2 = d7.d + a2 * t2;
+ t2 = d5.d + a2 * t2;
+ t2 = d3.d + a2 * t2;
+ t2 = da + a * a2 * t2;
+ if (n)
+ {
+ /* First stage -cot */
+ EADD (a, t2, b, db);
+ DIV2 (1.0, 0.0, b, db, c, dc, t1, t2, t3, t4, t5, t6, t7, t8, t9,
+ t10);
+ if ((y = c + (dc - u22.d * c)) == c + (dc + u22.d * c))
+ {
+ retval = (-y);
+ goto ret;
+ }
+ }
+ else
+ {
+ /* First stage tan */
+ if ((y = a + (t2 - u21.d * a)) == a + (t2 + u21.d * a))
+ {
+ retval = y;
+ goto ret;
+ }
+ }
+
+ /* Second stage */
+ /* Reduction by algorithm iv */
+ p = 10;
+ n = (__mpranred (x, &mpa, p)) & 0x00000001;
+ __mp_dbl (&mpa, &a, p);
+ __dbl_mp (a, &mpt1, p);
+ __sub (&mpa, &mpt1, &mpt2, p);
+ __mp_dbl (&mpt2, &da, p);
+
+ MUL2 (a, da, a, da, x2, xx2, t1, t2, t3, t4, t5, t6, t7, t8);
+
+ c1 = a25.d + x2 * a27.d;
+ c1 = a23.d + x2 * c1;
+ c1 = a21.d + x2 * c1;
+ c1 = a19.d + x2 * c1;
+ c1 = a17.d + x2 * c1;
+ c1 = a15.d + x2 * c1;
+ c1 *= x2;
+
+ ADD2 (a13.d, aa13.d, c1, 0.0, c2, cc2, t1, t2);
+ MUL2 (x2, xx2, c2, cc2, c1, cc1, t1, t2, t3, t4, t5, t6, t7, t8);
+ ADD2 (a11.d, aa11.d, c1, cc1, c2, cc2, t1, t2);
+ MUL2 (x2, xx2, c2, cc2, c1, cc1, t1, t2, t3, t4, t5, t6, t7, t8);
+ ADD2 (a9.d, aa9.d, c1, cc1, c2, cc2, t1, t2);
+ MUL2 (x2, xx2, c2, cc2, c1, cc1, t1, t2, t3, t4, t5, t6, t7, t8);
+ ADD2 (a7.d, aa7.d, c1, cc1, c2, cc2, t1, t2);
+ MUL2 (x2, xx2, c2, cc2, c1, cc1, t1, t2, t3, t4, t5, t6, t7, t8);
+ ADD2 (a5.d, aa5.d, c1, cc1, c2, cc2, t1, t2);
+ MUL2 (x2, xx2, c2, cc2, c1, cc1, t1, t2, t3, t4, t5, t6, t7, t8);
+ ADD2 (a3.d, aa3.d, c1, cc1, c2, cc2, t1, t2);
+ MUL2 (x2, xx2, c2, cc2, c1, cc1, t1, t2, t3, t4, t5, t6, t7, t8);
+ MUL2 (a, da, c1, cc1, c2, cc2, t1, t2, t3, t4, t5, t6, t7, t8);
+ ADD2 (a, da, c2, cc2, c1, cc1, t1, t2);
+
+ if (n)
+ {
+ /* Second stage -cot */
+ DIV2 (1.0, 0.0, c1, cc1, c2, cc2, t1, t2, t3, t4, t5, t6, t7, t8,
+ t9, t10);
+ if ((y = c2 + (cc2 - u24.d * c2)) == c2 + (cc2 + u24.d * c2))
+ {
+ retval = (-y);
+ goto ret;
+ }
+ }
+ else
+ {
+ /* Second stage tan */
+ if ((y = c1 + (cc1 - u23.d * c1)) == c1 + (cc1 + u23.d * c1))
+ {
+ retval = y;
+ goto ret;
+ }
+ }
+ retval = tanMp (x);
+ goto ret;
+ }
+
+ /* (XI) The case 1e8 < abs(x) < 2**1024, 0.0608 < abs(y) <= 0.787 */
+ /* First stage */
+ i = ((int) (mfftnhf.d + TWO8 * ya));
+ z = (z0 = (ya - xfg[i][0].d)) + yya;
+ z2 = z * z;
+ pz = z + z * z2 * (e0.d + z2 * e1.d);
+ fi = xfg[i][1].d;
+ gi = xfg[i][2].d;
+
+ if (n)
+ {
+ /* -cot */
+ t2 = pz * (fi + gi) / (fi + pz);
+ if ((y = gi - (t2 - gi * u26.d)) == gi - (t2 + gi * u26.d))
+ {
+ retval = (-sy * y);
+ goto ret;
+ }
+ t3 = (t2 < 0.0) ? -t2 : t2;
+ t4 = gi * ua26.d + t3 * ub26.d;
+ if ((y = gi - (t2 - t4)) == gi - (t2 + t4))
+ {
+ retval = (-sy * y);
+ goto ret;
+ }
+ }
+ else
+ {
+ /* tan */
+ t2 = pz * (gi + fi) / (gi - pz);
+ if ((y = fi + (t2 - fi * u25.d)) == fi + (t2 + fi * u25.d))
+ {
+ retval = (sy * y);
+ goto ret;
+ }
+ t3 = (t2 < 0.0) ? -t2 : t2;
+ t4 = fi * ua25.d + t3 * ub25.d;
+ if ((y = fi + (t2 - t4)) == fi + (t2 + t4))
+ {
+ retval = (sy * y);
+ goto ret;
+ }
+ }
+
+ /* Second stage */
+ ffi = xfg[i][3].d;
+ EADD (z0, yya, z, zz);
+ MUL2 (z, zz, z, zz, z2, zz2, t1, t2, t3, t4, t5, t6, t7, t8);
+ c1 = z2 * (a7.d + z2 * (a9.d + z2 * a11.d));
+ ADD2 (a5.d, aa5.d, c1, 0.0, c2, cc2, t1, t2);
+ MUL2 (z2, zz2, c2, cc2, c1, cc1, t1, t2, t3, t4, t5, t6, t7, t8);
+ ADD2 (a3.d, aa3.d, c1, cc1, c2, cc2, t1, t2);
+ MUL2 (z2, zz2, c2, cc2, c1, cc1, t1, t2, t3, t4, t5, t6, t7, t8);
+ MUL2 (z, zz, c1, cc1, c2, cc2, t1, t2, t3, t4, t5, t6, t7, t8);
+ ADD2 (z, zz, c2, cc2, c1, cc1, t1, t2);
+
+ ADD2 (fi, ffi, c1, cc1, c2, cc2, t1, t2);
+ MUL2 (fi, ffi, c1, cc1, c3, cc3, t1, t2, t3, t4, t5, t6, t7, t8);
+ SUB2 (1.0, 0.0, c3, cc3, c1, cc1, t1, t2);
+
+ if (n)
+ {
+ /* -cot */
+ DIV2 (c1, cc1, c2, cc2, c3, cc3, t1, t2, t3, t4, t5, t6, t7, t8, t9,
+ t10);
+ if ((y = c3 + (cc3 - u28.d * c3)) == c3 + (cc3 + u28.d * c3))
+ {
+ retval = (-sy * y);
+ goto ret;
+ }
+ }
+ else
+ {
+ /* tan */
+ DIV2 (c2, cc2, c1, cc1, c3, cc3, t1, t2, t3, t4, t5, t6, t7, t8, t9,
+ t10);
+ if ((y = c3 + (cc3 - u27.d * c3)) == c3 + (cc3 + u27.d * c3))
+ {
+ retval = (sy * y);
+ goto ret;
+ }
+ }
+ retval = tanMp (x);
+ goto ret;
+
+ret:
+ return retval;
+}
+
+/* multiple precision stage */
+/* Convert x to multi precision number,compute tan(x) by mptan() routine */
+/* and converts result back to double */
+static double
+SECTION
+tanMp (double x)
+{
+ int p;
+ double y;
+ mp_no mpy;
+ p = 32;
+ __mptan (x, &mpy, p);
+ __mp_dbl (&mpy, &y, p);
+ LIBC_PROBE (slowtan, 2, &x, &y);
+ return y;
+}
+
+#ifdef NO_LONG_DOUBLE
+weak_alias (tan, tanl)
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/s_tanh.c b/REORG.TODO/sysdeps/ieee754/dbl-64/s_tanh.c
new file mode 100644
index 0000000000..344a2f0330
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/s_tanh.c
@@ -0,0 +1,98 @@
+/* @(#)s_tanh.c 5.1 93/09/24 */
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: s_tanh.c,v 1.7 1995/05/10 20:48:22 jtc Exp $";
+#endif
+
+/* Tanh(x)
+ * Return the Hyperbolic Tangent of x
+ *
+ * Method :
+ * x -x
+ * e - e
+ * 0. tanh(x) is defined to be -----------
+ * x -x
+ * e + e
+ * 1. reduce x to non-negative by tanh(-x) = -tanh(x).
+ * 2. 0 <= x <= 2**-55 : tanh(x) := x*(one+x)
+ * -t
+ * 2**-55 < x <= 1 : tanh(x) := -----; t = expm1(-2x)
+ * t + 2
+ * 2
+ * 1 <= x <= 22.0 : tanh(x) := 1- ----- ; t=expm1(2x)
+ * t + 2
+ * 22.0 < x <= INF : tanh(x) := 1.
+ *
+ * Special cases:
+ * tanh(NaN) is NaN;
+ * only tanh(0)=0 is exact for finite argument.
+ */
+
+#include <float.h>
+#include <math.h>
+#include <math_private.h>
+
+static const double one = 1.0, two = 2.0, tiny = 1.0e-300;
+
+double
+__tanh (double x)
+{
+ double t, z;
+ int32_t jx, ix, lx;
+
+ /* High word of |x|. */
+ EXTRACT_WORDS (jx, lx, x);
+ ix = jx & 0x7fffffff;
+
+ /* x is INF or NaN */
+ if (ix >= 0x7ff00000)
+ {
+ if (jx >= 0)
+ return one / x + one; /* tanh(+-inf)=+-1 */
+ else
+ return one / x - one; /* tanh(NaN) = NaN */
+ }
+
+ /* |x| < 22 */
+ if (ix < 0x40360000) /* |x|<22 */
+ {
+ if ((ix | lx) == 0)
+ return x; /* x == +-0 */
+ if (ix < 0x3c800000) /* |x|<2**-55 */
+ {
+ math_check_force_underflow (x);
+ return x * (one + x); /* tanh(small) = small */
+ }
+ if (ix >= 0x3ff00000) /* |x|>=1 */
+ {
+ t = __expm1 (two * fabs (x));
+ z = one - two / (t + two);
+ }
+ else
+ {
+ t = __expm1 (-two * fabs (x));
+ z = -t / (t + two);
+ }
+ /* |x| > 22, return +-1 */
+ }
+ else
+ {
+ z = one - tiny; /* raised inexact flag */
+ }
+ return (jx >= 0) ? z : -z;
+}
+weak_alias (__tanh, tanh)
+#ifdef NO_LONG_DOUBLE
+strong_alias (__tanh, __tanhl)
+weak_alias (__tanh, tanhl)
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/s_totalorder.c b/REORG.TODO/sysdeps/ieee754/dbl-64/s_totalorder.c
new file mode 100644
index 0000000000..f229119c27
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/s_totalorder.c
@@ -0,0 +1,54 @@
+/* Total order operation. dbl-64 version.
+ Copyright (C) 2016-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+#include <math_private.h>
+#include <nan-high-order-bit.h>
+#include <stdint.h>
+
+int
+totalorder (double x, double y)
+{
+ int32_t hx, hy;
+ uint32_t lx, ly;
+ EXTRACT_WORDS (hx, lx, x);
+ EXTRACT_WORDS (hy, ly, y);
+#if HIGH_ORDER_BIT_IS_SET_FOR_SNAN
+ uint32_t uhx = hx & 0x7fffffff, uhy = hy & 0x7fffffff;
+ /* For the preferred quiet NaN convention, this operation is a
+ comparison of the representations of the arguments interpreted as
+ sign-magnitude integers. If both arguments are NaNs, invert the
+ quiet/signaling bit so comparing that way works. */
+ if ((uhx > 0x7ff00000 || (uhx == 0x7ff00000 && lx != 0))
+ && (uhy > 0x7ff00000 || (uhy == 0x7ff00000 && ly != 0)))
+ {
+ hx ^= 0x00080000;
+ hy ^= 0x00080000;
+ }
+#endif
+ uint32_t hx_sign = hx >> 31;
+ uint32_t hy_sign = hy >> 31;
+ hx ^= hx_sign >> 1;
+ lx ^= hx_sign;
+ hy ^= hy_sign >> 1;
+ ly ^= hy_sign;
+ return hx < hy || (hx == hy && lx <= ly);
+}
+#ifdef NO_LONG_DOUBLE
+weak_alias (totalorder, totalorderl)
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/s_totalordermag.c b/REORG.TODO/sysdeps/ieee754/dbl-64/s_totalordermag.c
new file mode 100644
index 0000000000..b1bdd833db
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/s_totalordermag.c
@@ -0,0 +1,49 @@
+/* Total order operation on absolute values. dbl-64 version.
+ Copyright (C) 2016-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+#include <math_private.h>
+#include <nan-high-order-bit.h>
+#include <stdint.h>
+
+int
+totalordermag (double x, double y)
+{
+ uint32_t hx, hy;
+ uint32_t lx, ly;
+ EXTRACT_WORDS (hx, lx, x);
+ EXTRACT_WORDS (hy, ly, y);
+ hx &= 0x7fffffff;
+ hy &= 0x7fffffff;
+#if HIGH_ORDER_BIT_IS_SET_FOR_SNAN
+ /* For the preferred quiet NaN convention, this operation is a
+ comparison of the representations of the absolute values of the
+ arguments. If both arguments are NaNs, invert the
+ quiet/signaling bit so comparing that way works. */
+ if ((hx > 0x7ff00000 || (hx == 0x7ff00000 && lx != 0))
+ && (hy > 0x7ff00000 || (hy == 0x7ff00000 && ly != 0)))
+ {
+ hx ^= 0x00080000;
+ hy ^= 0x00080000;
+ }
+#endif
+ return hx < hy || (hx == hy && lx <= ly);
+}
+#ifdef NO_LONG_DOUBLE
+weak_alias (totalordermag, totalordermagl)
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/s_trunc.c b/REORG.TODO/sysdeps/ieee754/dbl-64/s_trunc.c
new file mode 100644
index 0000000000..730c1b377c
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/s_trunc.c
@@ -0,0 +1,62 @@
+/* Truncate argument to nearest integral value not larger than the argument.
+ Copyright (C) 1997-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+
+#include <math_private.h>
+
+
+double
+__trunc (double x)
+{
+ int32_t i0, j0;
+ u_int32_t i1;
+ int sx;
+
+ EXTRACT_WORDS (i0, i1, x);
+ sx = i0 & 0x80000000;
+ j0 = ((i0 >> 20) & 0x7ff) - 0x3ff;
+ if (j0 < 20)
+ {
+ if (j0 < 0)
+ /* The magnitude of the number is < 1 so the result is +-0. */
+ INSERT_WORDS (x, sx, 0);
+ else
+ INSERT_WORDS (x, sx | (i0 & ~(0x000fffff >> j0)), 0);
+ }
+ else if (j0 > 51)
+ {
+ if (j0 == 0x400)
+ /* x is inf or NaN. */
+ return x + x;
+ }
+ else
+ {
+ INSERT_WORDS (x, i0, i1 & ~(0xffffffffu >> (j0 - 20)));
+ }
+
+ return x;
+}
+#ifndef __trunc
+weak_alias (__trunc, trunc)
+# ifdef NO_LONG_DOUBLE
+strong_alias (__trunc, __truncl)
+weak_alias (__trunc, truncl)
+# endif
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/s_ufromfp.c b/REORG.TODO/sysdeps/ieee754/dbl-64/s_ufromfp.c
new file mode 100644
index 0000000000..c3d9047930
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/s_ufromfp.c
@@ -0,0 +1,7 @@
+#define UNSIGNED 1
+#define INEXACT 0
+#define FUNC ufromfp
+#include <s_fromfp_main.c>
+#ifdef NO_LONG_DOUBLE
+weak_alias (ufromfp, ufromfpl)
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/s_ufromfpx.c b/REORG.TODO/sysdeps/ieee754/dbl-64/s_ufromfpx.c
new file mode 100644
index 0000000000..dee607f8c0
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/s_ufromfpx.c
@@ -0,0 +1,7 @@
+#define UNSIGNED 1
+#define INEXACT 1
+#define FUNC ufromfpx
+#include <s_fromfp_main.c>
+#ifdef NO_LONG_DOUBLE
+weak_alias (ufromfpx, ufromfpxl)
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/sincos32.c b/REORG.TODO/sysdeps/ieee754/dbl-64/sincos32.c
new file mode 100644
index 0000000000..9cd8e2f97f
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/sincos32.c
@@ -0,0 +1,369 @@
+/*
+ * IBM Accurate Mathematical Library
+ * written by International Business Machines Corp.
+ * Copyright (C) 2001-2017 Free Software Foundation, Inc.
+ *
+ * This program 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 2.1 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 program; if not, see <http://www.gnu.org/licenses/>.
+ */
+/****************************************************************/
+/* MODULE_NAME: sincos32.c */
+/* */
+/* FUNCTIONS: ss32 */
+/* cc32 */
+/* c32 */
+/* sin32 */
+/* cos32 */
+/* mpsin */
+/* mpcos */
+/* mpranred */
+/* mpsin1 */
+/* mpcos1 */
+/* */
+/* FILES NEEDED: endian.h mpa.h sincos32.h */
+/* mpa.c */
+/* */
+/* Multi Precision sin() and cos() function with p=32 for sin()*/
+/* cos() arcsin() and arccos() routines */
+/* In addition mpranred() routine performs range reduction of */
+/* a double number x into multi precision number y, */
+/* such that y=x-n*pi/2, abs(y)<pi/4, n=0,+-1,+-2,.... */
+/****************************************************************/
+#include "endian.h"
+#include "mpa.h"
+#include "sincos32.h"
+#include <math.h>
+#include <math_private.h>
+#include <stap-probe.h>
+
+#ifndef SECTION
+# define SECTION
+#endif
+
+/* Compute Multi-Precision sin() function for given p. Receive Multi Precision
+ number x and result stored at y. */
+static void
+SECTION
+ss32 (mp_no *x, mp_no *y, int p)
+{
+ int i;
+ double a;
+ mp_no mpt1, x2, gor, sum, mpk = {1, {1.0}};
+ for (i = 1; i <= p; i++)
+ mpk.d[i] = 0;
+
+ __sqr (x, &x2, p);
+ __cpy (&oofac27, &gor, p);
+ __cpy (&gor, &sum, p);
+ for (a = 27.0; a > 1.0; a -= 2.0)
+ {
+ mpk.d[1] = a * (a - 1.0);
+ __mul (&gor, &mpk, &mpt1, p);
+ __cpy (&mpt1, &gor, p);
+ __mul (&x2, &sum, &mpt1, p);
+ __sub (&gor, &mpt1, &sum, p);
+ }
+ __mul (x, &sum, y, p);
+}
+
+/* Compute Multi-Precision cos() function for given p. Receive Multi Precision
+ number x and result stored at y. */
+static void
+SECTION
+cc32 (mp_no *x, mp_no *y, int p)
+{
+ int i;
+ double a;
+ mp_no mpt1, x2, gor, sum, mpk = {1, {1.0}};
+ for (i = 1; i <= p; i++)
+ mpk.d[i] = 0;
+
+ __sqr (x, &x2, p);
+ mpk.d[1] = 27.0;
+ __mul (&oofac27, &mpk, &gor, p);
+ __cpy (&gor, &sum, p);
+ for (a = 26.0; a > 2.0; a -= 2.0)
+ {
+ mpk.d[1] = a * (a - 1.0);
+ __mul (&gor, &mpk, &mpt1, p);
+ __cpy (&mpt1, &gor, p);
+ __mul (&x2, &sum, &mpt1, p);
+ __sub (&gor, &mpt1, &sum, p);
+ }
+ __mul (&x2, &sum, y, p);
+}
+
+/* Compute both sin(x), cos(x) as Multi precision numbers. */
+void
+SECTION
+__c32 (mp_no *x, mp_no *y, mp_no *z, int p)
+{
+ mp_no u, t, t1, t2, c, s;
+ int i;
+ __cpy (x, &u, p);
+ u.e = u.e - 1;
+ cc32 (&u, &c, p);
+ ss32 (&u, &s, p);
+ for (i = 0; i < 24; i++)
+ {
+ __mul (&c, &s, &t, p);
+ __sub (&s, &t, &t1, p);
+ __add (&t1, &t1, &s, p);
+ __sub (&__mptwo, &c, &t1, p);
+ __mul (&t1, &c, &t2, p);
+ __add (&t2, &t2, &c, p);
+ }
+ __sub (&__mpone, &c, y, p);
+ __cpy (&s, z, p);
+}
+
+/* Receive double x and two double results of sin(x) and return result which is
+ more accurate, computing sin(x) with multi precision routine c32. */
+double
+SECTION
+__sin32 (double x, double res, double res1)
+{
+ int p;
+ mp_no a, b, c;
+ p = 32;
+ __dbl_mp (res, &a, p);
+ __dbl_mp (0.5 * (res1 - res), &b, p);
+ __add (&a, &b, &c, p);
+ if (x > 0.8)
+ {
+ __sub (&hp, &c, &a, p);
+ __c32 (&a, &b, &c, p);
+ }
+ else
+ __c32 (&c, &a, &b, p); /* b=sin(0.5*(res+res1)) */
+ __dbl_mp (x, &c, p); /* c = x */
+ __sub (&b, &c, &a, p);
+ /* if a > 0 return min (res, res1), otherwise return max (res, res1). */
+ if ((a.d[0] > 0 && res >= res1) || (a.d[0] <= 0 && res <= res1))
+ res = res1;
+ LIBC_PROBE (slowasin, 2, &res, &x);
+ return res;
+}
+
+/* Receive double x and two double results of cos(x) and return result which is
+ more accurate, computing cos(x) with multi precision routine c32. */
+double
+SECTION
+__cos32 (double x, double res, double res1)
+{
+ int p;
+ mp_no a, b, c;
+ p = 32;
+ __dbl_mp (res, &a, p);
+ __dbl_mp (0.5 * (res1 - res), &b, p);
+ __add (&a, &b, &c, p);
+ if (x > 2.4)
+ {
+ __sub (&pi, &c, &a, p);
+ __c32 (&a, &b, &c, p);
+ b.d[0] = -b.d[0];
+ }
+ else if (x > 0.8)
+ {
+ __sub (&hp, &c, &a, p);
+ __c32 (&a, &c, &b, p);
+ }
+ else
+ __c32 (&c, &b, &a, p); /* b=cos(0.5*(res+res1)) */
+ __dbl_mp (x, &c, p); /* c = x */
+ __sub (&b, &c, &a, p);
+ /* if a > 0 return max (res, res1), otherwise return min (res, res1). */
+ if ((a.d[0] > 0 && res <= res1) || (a.d[0] <= 0 && res >= res1))
+ res = res1;
+ LIBC_PROBE (slowacos, 2, &res, &x);
+ return res;
+}
+
+/* Compute sin() of double-length number (X + DX) as Multi Precision number and
+ return result as double. If REDUCE_RANGE is true, X is assumed to be the
+ original input and DX is ignored. */
+double
+SECTION
+__mpsin (double x, double dx, bool reduce_range)
+{
+ double y;
+ mp_no a, b, c, s;
+ int n;
+ int p = 32;
+
+ if (reduce_range)
+ {
+ n = __mpranred (x, &a, p); /* n is 0, 1, 2 or 3. */
+ __c32 (&a, &c, &s, p);
+ }
+ else
+ {
+ n = -1;
+ __dbl_mp (x, &b, p);
+ __dbl_mp (dx, &c, p);
+ __add (&b, &c, &a, p);
+ if (x > 0.8)
+ {
+ __sub (&hp, &a, &b, p);
+ __c32 (&b, &s, &c, p);
+ }
+ else
+ __c32 (&a, &c, &s, p); /* b = sin(x+dx) */
+ }
+
+ /* Convert result based on which quarter of unit circle y is in. */
+ switch (n)
+ {
+ case 1:
+ __mp_dbl (&c, &y, p);
+ break;
+
+ case 3:
+ __mp_dbl (&c, &y, p);
+ y = -y;
+ break;
+
+ case 2:
+ __mp_dbl (&s, &y, p);
+ y = -y;
+ break;
+
+ /* Quadrant not set, so the result must be sin (X + DX), which is also in
+ S. */
+ case 0:
+ default:
+ __mp_dbl (&s, &y, p);
+ }
+ LIBC_PROBE (slowsin, 3, &x, &dx, &y);
+ return y;
+}
+
+/* Compute cos() of double-length number (X + DX) as Multi Precision number and
+ return result as double. If REDUCE_RANGE is true, X is assumed to be the
+ original input and DX is ignored. */
+double
+SECTION
+__mpcos (double x, double dx, bool reduce_range)
+{
+ double y;
+ mp_no a, b, c, s;
+ int n;
+ int p = 32;
+
+ if (reduce_range)
+ {
+ n = __mpranred (x, &a, p); /* n is 0, 1, 2 or 3. */
+ __c32 (&a, &c, &s, p);
+ }
+ else
+ {
+ n = -1;
+ __dbl_mp (x, &b, p);
+ __dbl_mp (dx, &c, p);
+ __add (&b, &c, &a, p);
+ if (x > 0.8)
+ {
+ __sub (&hp, &a, &b, p);
+ __c32 (&b, &s, &c, p);
+ }
+ else
+ __c32 (&a, &c, &s, p); /* a = cos(x+dx) */
+ }
+
+ /* Convert result based on which quarter of unit circle y is in. */
+ switch (n)
+ {
+ case 1:
+ __mp_dbl (&s, &y, p);
+ y = -y;
+ break;
+
+ case 3:
+ __mp_dbl (&s, &y, p);
+ break;
+
+ case 2:
+ __mp_dbl (&c, &y, p);
+ y = -y;
+ break;
+
+ /* Quadrant not set, so the result must be cos (X + DX), which is also
+ stored in C. */
+ case 0:
+ default:
+ __mp_dbl (&c, &y, p);
+ }
+ LIBC_PROBE (slowcos, 3, &x, &dx, &y);
+ return y;
+}
+
+/* Perform range reduction of a double number x into multi precision number y,
+ such that y = x - n * pi / 2, abs (y) < pi / 4, n = 0, +-1, +-2, ...
+ Return int which indicates in which quarter of circle x is. */
+int
+SECTION
+__mpranred (double x, mp_no *y, int p)
+{
+ number v;
+ double t, xn;
+ int i, k, n;
+ mp_no a, b, c;
+
+ if (fabs (x) < 2.8e14)
+ {
+ t = (x * hpinv.d + toint.d);
+ xn = t - toint.d;
+ v.d = t;
+ n = v.i[LOW_HALF] & 3;
+ __dbl_mp (xn, &a, p);
+ __mul (&a, &hp, &b, p);
+ __dbl_mp (x, &c, p);
+ __sub (&c, &b, y, p);
+ return n;
+ }
+ else
+ {
+ /* If x is very big more precision required. */
+ __dbl_mp (x, &a, p);
+ a.d[0] = 1.0;
+ k = a.e - 5;
+ if (k < 0)
+ k = 0;
+ b.e = -k;
+ b.d[0] = 1.0;
+ for (i = 0; i < p; i++)
+ b.d[i + 1] = toverp[i + k];
+ __mul (&a, &b, &c, p);
+ t = c.d[c.e];
+ for (i = 1; i <= p - c.e; i++)
+ c.d[i] = c.d[i + c.e];
+ for (i = p + 1 - c.e; i <= p; i++)
+ c.d[i] = 0;
+ c.e = 0;
+ if (c.d[1] >= HALFRAD)
+ {
+ t += 1.0;
+ __sub (&c, &__mpone, &b, p);
+ __mul (&b, &hp, y, p);
+ }
+ else
+ __mul (&c, &hp, y, p);
+ n = (int) t;
+ if (x < 0)
+ {
+ y->d[0] = -y->d[0];
+ n = -n;
+ }
+ return (n & 3);
+ }
+}
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/sincos32.h b/REORG.TODO/sysdeps/ieee754/dbl-64/sincos32.h
new file mode 100644
index 0000000000..8265a23e77
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/sincos32.h
@@ -0,0 +1,81 @@
+/*
+ * IBM Accurate Mathematical Library
+ * Written by International Business Machines Corp.
+ * Copyright (C) 2001-2017 Free Software Foundation, Inc.
+ *
+ * This program 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 2.1 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 program; if not, see <http://www.gnu.org/licenses/>.
+ */
+
+/******************************************************************/
+/* */
+/* MODULE_NAME:sincos32.h */
+/* */
+/* common data and variables prototype and definition */
+/******************************************************************/
+
+#ifndef SINCOS32_H
+#define SINCCOS32_H
+
+#ifdef BIG_ENDI
+static const number
+/**/ hpinv = {{0x3FE45F30, 0x6DC9C883}}, /* 0.63661977236758138 */
+/**/ toint = {{0x43380000, 0x00000000}}; /* 6755399441055744 */
+
+#else
+#ifdef LITTLE_ENDI
+static const number
+/**/ hpinv = {{0x6DC9C883, 0x3FE45F30}}, /* 0.63661977236758138 */
+/**/ toint = {{0x00000000, 0x43380000}}; /* 6755399441055744 */
+
+#endif
+#endif
+
+static const mp_no
+ oofac27 = {-3,{1.0,7.0,4631664.0,12006312.0,13118056.0,6538613.0,646354.0,
+ 8508025.0,9131256.0,7548776.0,2529842.0,8864927.0,660489.0,15595125.0,12777885.0,
+ 11618489.0,13348664.0,5486686.0,514518.0,11275535.0,4727621.0,3575562.0,
+ 13579710.0,5829745.0,7531862.0,9507898.0,6915060.0,4079264.0,1907586.0,
+ 6078398.0,13789314.0,5504104.0,14136.0}},
+ pi = {1,{1.0,3.0,
+ 2375530.0,8947107.0,578323.0,1673774.0,225395.0,4498441.0,3678761.0,
+ 10432976.0,536314.0,10021966.0,7113029.0,2630118.0,3723283.0,7847508.0,
+ 6737716.0,15273068.0,12626985.0,12044668.0,5299519.0,8705461.0,11880201.0,
+ 1544726.0,14014857.0,7994139.0,13709579.0,10918111.0,11906095.0,16610011.0,
+ 13638367.0,12040417.0,11529578.0,2522774.0}},
+ hp = {1,{1.0, 1.0,
+ 9576373.0,4473553.0,8677769.0,9225495.0,112697.0,10637828.0,
+ 10227988.0,13605096.0,268157.0,5010983.0,3556514.0,9703667.0,
+ 1861641.0,12312362.0,3368858.0,7636534.0,6313492.0,14410942.0,
+ 2649759.0,12741338.0,14328708.0,9160971.0,7007428.0,12385677.0,
+ 15243397.0,13847663.0,14341655.0,16693613.0,15207791.0,14408816.0,
+ 14153397.0,1261387.0,6110792.0,2291862.0,4181138.0,5295267.0}};
+
+static const double toverp[75] = {
+ 10680707.0, 7228996.0, 1387004.0, 2578385.0, 16069853.0,
+ 12639074.0, 9804092.0, 4427841.0, 16666979.0, 11263675.0,
+ 12935607.0, 2387514.0, 4345298.0, 14681673.0, 3074569.0,
+ 13734428.0, 16653803.0, 1880361.0, 10960616.0, 8533493.0,
+ 3062596.0, 8710556.0, 7349940.0, 6258241.0, 3772886.0,
+ 3769171.0, 3798172.0, 8675211.0, 12450088.0, 3874808.0,
+ 9961438.0, 366607.0, 15675153.0, 9132554.0, 7151469.0,
+ 3571407.0, 2607881.0, 12013382.0, 4155038.0, 6285869.0,
+ 7677882.0, 13102053.0, 15825725.0, 473591.0, 9065106.0,
+ 15363067.0, 6271263.0, 9264392.0, 5636912.0, 4652155.0,
+ 7056368.0, 13614112.0, 10155062.0, 1944035.0, 9527646.0,
+ 15080200.0, 6658437.0, 6231200.0, 6832269.0, 16767104.0,
+ 5075751.0, 3212806.0, 1398474.0, 7579849.0, 6349435.0,
+ 12618859.0, 4703257.0, 12806093.0, 14477321.0, 2786137.0,
+ 12875403.0, 9837734.0, 14528324.0, 13719321.0, 343717.0 };
+
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/sincostab.c b/REORG.TODO/sysdeps/ieee754/dbl-64/sincostab.c
new file mode 100644
index 0000000000..b3e06bfebd
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/sincostab.c
@@ -0,0 +1,914 @@
+/*
+ * IBM Accurate Mathematical Library
+ * Written by International Business Machines Corp.
+ * Copyright (C) 2001-2017 Free Software Foundation, Inc.
+ *
+ * This program 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 2.1 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 program; if not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <mydefs.h>
+#include <endian.h>
+
+/****************************************************************/
+/* TABLES FOR THE usin() and ucos() FUNCTION */
+/****************************************************************/
+
+
+#ifdef BIG_ENDI
+const union {int4 i[880]; double x[440];}__sincostab = { .i = {
+/**/ 0x00000000, 0x00000000,
+/**/ 0x00000000, 0x00000000,
+/**/ 0x3FF00000, 0x00000000,
+/**/ 0x00000000, 0x00000000,
+/**/ 0x3F7FFFEA, 0xAAAEEEEF,
+/**/ 0xBC1E45E2, 0xEC67B77C,
+/**/ 0x3FEFFFC0, 0x00155552,
+/**/ 0x3C8F4A01, 0xA0196DAE,
+/**/ 0x3F8FFFAA, 0xAAEEEED5,
+/**/ 0xBC02AB63, 0x9A9F0777,
+/**/ 0x3FEFFF00, 0x0155549F,
+/**/ 0x3C828A28, 0xA03A5EF3,
+/**/ 0x3F97FF70, 0x01033255,
+/**/ 0x3BFEFE2B, 0x51527336,
+/**/ 0x3FEFFDC0, 0x06BFF7E6,
+/**/ 0x3C8AE6DA, 0xE86977BD,
+/**/ 0x3F9FFEAA, 0xAEEEE86F,
+/**/ 0xBC3CD406, 0xFB224AE2,
+/**/ 0x3FEFFC00, 0x155527D3,
+/**/ 0xBC83B544, 0x92D89B5B,
+/**/ 0x3FA3FEB2, 0xB12D45D5,
+/**/ 0x3C34EC54, 0x203D1C11,
+/**/ 0x3FEFF9C0, 0x3414A7BA,
+/**/ 0x3C6991F4, 0xBE6C59BF,
+/**/ 0x3FA7FDC0, 0x1032FBA9,
+/**/ 0xBC4599BD, 0xF46E997A,
+/**/ 0x3FEFF700, 0x6BFDF99F,
+/**/ 0xBC78B3B5, 0x60648D5F,
+/**/ 0x3FABFC6D, 0x78586DAC,
+/**/ 0x3C18E4FD, 0x03DBF236,
+/**/ 0x3FEFF3C0, 0xC8103A31,
+/**/ 0x3C74856D, 0xBDDC0E66,
+/**/ 0x3FAFFAAA, 0xEEED4EDB,
+/**/ 0xBC42D16D, 0x32684B69,
+/**/ 0x3FEFF001, 0x5549F4D3,
+/**/ 0x3C832838, 0x7B99426F,
+/**/ 0x3FB1FC34, 0x3D808BEF,
+/**/ 0xBC5F3D32, 0xE6F3BE4F,
+/**/ 0x3FEFEBC2, 0x22A8EF9F,
+/**/ 0x3C579349, 0x34F54C77,
+/**/ 0x3FB3FACB, 0x12D1755B,
+/**/ 0xBC592191, 0x5299468C,
+/**/ 0x3FEFE703, 0x4129EF6F,
+/**/ 0xBC6CBF43, 0x37C96F97,
+/**/ 0x3FB5F911, 0xFD10B737,
+/**/ 0xBC50184F, 0x02BE9102,
+/**/ 0x3FEFE1C4, 0xC3C873EB,
+/**/ 0xBC35A9C9, 0x057C4A02,
+/**/ 0x3FB7F701, 0x032550E4,
+/**/ 0x3C3AFC2D, 0x1800501A,
+/**/ 0x3FEFDC06, 0xBF7E6B9B,
+/**/ 0x3C831902, 0xB535F8DB,
+/**/ 0x3FB9F490, 0x2D55D1F9,
+/**/ 0x3C52696D, 0x7EAC1DC1,
+/**/ 0x3FEFD5C9, 0x4B43E000,
+/**/ 0xBC62E768, 0xCB4F92F9,
+/**/ 0x3FBBF1B7, 0x8568391D,
+/**/ 0x3C5E9184, 0x1DEA4CC8,
+/**/ 0x3FEFCF0C, 0x800E99B1,
+/**/ 0x3C6EA3D7, 0x86D186AC,
+/**/ 0x3FBDEE6F, 0x16C1CCE6,
+/**/ 0xBC450F8E, 0x2FB71673,
+/**/ 0x3FEFC7D0, 0x78D1BC88,
+/**/ 0x3C8075D2, 0x447DB685,
+/**/ 0x3FBFEAAE, 0xEE86EE36,
+/**/ 0xBC4AFCB2, 0xBCC6F03B,
+/**/ 0x3FEFC015, 0x527D5BD3,
+/**/ 0x3C8B68F3, 0x5094EFB8,
+/**/ 0x3FC0F337, 0x8DDD71D1,
+/**/ 0x3C6D8468, 0x724F0F9E,
+/**/ 0x3FEFB7DB, 0x2BFE0695,
+/**/ 0x3C821DAD, 0xF4F65AB1,
+/**/ 0x3FC1F0D3, 0xD7AFCEAF,
+/**/ 0xBC66EF95, 0x099769A5,
+/**/ 0x3FEFAF22, 0x263C4BD3,
+/**/ 0xBC552ACE, 0x133A2769,
+/**/ 0x3FC2EE28, 0x5E4AB88F,
+/**/ 0xBC6E4D0F, 0x05DEE058,
+/**/ 0x3FEFA5EA, 0x641C36F2,
+/**/ 0x3C404DA6, 0xED17CC7C,
+/**/ 0x3FC3EB31, 0x2C5D66CB,
+/**/ 0x3C647D66, 0x6B66CB91,
+/**/ 0x3FEF9C34, 0x0A7CC428,
+/**/ 0x3C8C5B6B, 0x063B7462,
+/**/ 0x3FC4E7EA, 0x4DC5F27B,
+/**/ 0x3C5949DB, 0x2AC072FC,
+/**/ 0x3FEF91FF, 0x40374D01,
+/**/ 0xBC67D03F, 0x4D3A9E4C,
+/**/ 0x3FC5E44F, 0xCFA126F3,
+/**/ 0xBC66F443, 0x063F89B6,
+/**/ 0x3FEF874C, 0x2E1EECF6,
+/**/ 0xBC8C6514, 0xE1332B16,
+/**/ 0x3FC6E05D, 0xC05A4D4C,
+/**/ 0xBBD32C5C, 0x8B81C940,
+/**/ 0x3FEF7C1A, 0xFEFFDE24,
+/**/ 0xBC78F55B, 0xC47540B1,
+/**/ 0x3FC7DC10, 0x2FBAF2B5,
+/**/ 0x3C45AB50, 0xE23C97C3,
+/**/ 0x3FEF706B, 0xDF9ECE1C,
+/**/ 0xBC8698C8, 0x0C36DCB4,
+/**/ 0x3FC8D763, 0x2EFAA944,
+/**/ 0xBC620FA2, 0x62CBB953,
+/**/ 0x3FEF643E, 0xFEB82ACD,
+/**/ 0x3C76B00A, 0xC1FE28AC,
+/**/ 0x3FC9D252, 0xD0CEC312,
+/**/ 0x3C59C43D, 0x80B1137D,
+/**/ 0x3FEF5794, 0x8CFF6797,
+/**/ 0x3C6E3A0D, 0x3E03B1D5,
+/**/ 0x3FCACCDB, 0x297A0765,
+/**/ 0xBC59883B, 0x57D6CDEB,
+/**/ 0x3FEF4A6C, 0xBD1E3A79,
+/**/ 0x3C813DF0, 0xEDAEBB57,
+/**/ 0x3FCBC6F8, 0x4EDC6199,
+/**/ 0x3C69C1A5, 0x6A7B0CAB,
+/**/ 0x3FEF3CC7, 0xC3B3D16E,
+/**/ 0xBC621A3A, 0xD28A3494,
+/**/ 0x3FCCC0A6, 0x588289A3,
+/**/ 0xBC6868D0, 0x9BC87C6B,
+/**/ 0x3FEF2EA5, 0xD753FFED,
+/**/ 0x3C8CC421, 0x5F56D583,
+/**/ 0x3FCDB9E1, 0x5FB5A5D0,
+/**/ 0xBC632E20, 0xD6CC6FC2,
+/**/ 0x3FEF2007, 0x3086649F,
+/**/ 0x3C7B9404, 0x16C1984B,
+/**/ 0x3FCEB2A5, 0x7F8AE5A3,
+/**/ 0xBC60BE06, 0xAF572CEB,
+/**/ 0x3FEF10EC, 0x09C5873B,
+/**/ 0x3C8D9072, 0x762C1283,
+/**/ 0x3FCFAAEE, 0xD4F31577,
+/**/ 0xBC615D88, 0x508E32B8,
+/**/ 0x3FEF0154, 0x9F7DEEA1,
+/**/ 0x3C8D3C1E, 0x99E5CAFD,
+/**/ 0x3FD0515C, 0xBF65155C,
+/**/ 0xBC79B8C2, 0x9DFD8EC8,
+/**/ 0x3FEEF141, 0x300D2F26,
+/**/ 0xBC82AA1B, 0x08DED372,
+/**/ 0x3FD0CD00, 0xCEF36436,
+/**/ 0xBC79FB0A, 0x0C93E2B5,
+/**/ 0x3FEEE0B1, 0xFBC0F11C,
+/**/ 0xBC4BFD23, 0x80BBC3B1,
+/**/ 0x3FD14861, 0xAA94DDEB,
+/**/ 0xBC6BE881, 0xB5B615A4,
+/**/ 0x3FEECFA7, 0x44D5EFA1,
+/**/ 0xBC556D0A, 0x4AF541D0,
+/**/ 0x3FD1C37D, 0x64C6B876,
+/**/ 0x3C746076, 0xFE0DCFF5,
+/**/ 0x3FEEBE21, 0x4F76EFA8,
+/**/ 0xBC802F9F, 0x12BA543E,
+/**/ 0x3FD23E52, 0x111AAF36,
+/**/ 0xBC74F080, 0x334EFF18,
+/**/ 0x3FEEAC20, 0x61BBAF4F,
+/**/ 0x3C62C1D5, 0x3E94658D,
+/**/ 0x3FD2B8DD, 0xC43EB49F,
+/**/ 0x3C615538, 0x99F2D807,
+/**/ 0x3FEE99A4, 0xC3A7CD83,
+/**/ 0xBC82264B, 0x1BC53CE8,
+/**/ 0x3FD3331E, 0x94049F87,
+/**/ 0x3C7E0CB6, 0xB40C302C,
+/**/ 0x3FEE86AE, 0xBF29A9ED,
+/**/ 0x3C89397A, 0xFDBB58A7,
+/**/ 0x3FD3AD12, 0x9769D3D8,
+/**/ 0x3C003D55, 0x04878398,
+/**/ 0x3FEE733E, 0xA0193D40,
+/**/ 0xBC86428B, 0x3546CE13,
+/**/ 0x3FD426B7, 0xE69EE697,
+/**/ 0xBC7F09C7, 0x5705C59F,
+/**/ 0x3FEE5F54, 0xB436E9D0,
+/**/ 0x3C87EB0F, 0xD02FC8BC,
+/**/ 0x3FD4A00C, 0x9B0F3D20,
+/**/ 0x3C7823BA, 0x6BB08EAD,
+/**/ 0x3FEE4AF1, 0x4B2A449C,
+/**/ 0xBC868CA0, 0x2E8A6833,
+/**/ 0x3FD5190E, 0xCF68A77A,
+/**/ 0x3C7B3571, 0x55EEF0F3,
+/**/ 0x3FEE3614, 0xB680D6A5,
+/**/ 0xBC727793, 0xAA015237,
+/**/ 0x3FD591BC, 0x9FA2F597,
+/**/ 0x3C67C74B, 0xAC3FE0CB,
+/**/ 0x3FEE20BF, 0x49ACD6C1,
+/**/ 0xBC5660AE, 0xC7EF636C,
+/**/ 0x3FD60A14, 0x29078775,
+/**/ 0x3C5B1FD8, 0x0BA89133,
+/**/ 0x3FEE0AF1, 0x5A03DBCE,
+/**/ 0x3C5FE8E7, 0x02771AE6,
+/**/ 0x3FD68213, 0x8A38D7F7,
+/**/ 0xBC7D8892, 0x02444AAD,
+/**/ 0x3FEDF4AB, 0x3EBD875E,
+/**/ 0xBC8E2D8A, 0x7E6736C4,
+/**/ 0x3FD6F9B8, 0xE33A0255,
+/**/ 0x3C742BC1, 0x4EE9DA0D,
+/**/ 0x3FEDDDED, 0x50F228D6,
+/**/ 0xBC6E80C8, 0xD42BA2BF,
+/**/ 0x3FD77102, 0x55764214,
+/**/ 0xBC66EAD7, 0x314BB6CE,
+/**/ 0x3FEDC6B7, 0xEB995912,
+/**/ 0x3C54B364, 0x776DCD35,
+/**/ 0x3FD7E7EE, 0x03C86D4E,
+/**/ 0xBC7B63BC, 0xDABF5AF2,
+/**/ 0x3FEDAF0B, 0x6B888E83,
+/**/ 0x3C8A249E, 0x2B5E5CEA,
+/**/ 0x3FD85E7A, 0x12826949,
+/**/ 0x3C78A40E, 0x9B5FACE0,
+/**/ 0x3FED96E8, 0x2F71A9DC,
+/**/ 0x3C8FF61B, 0xD5D2039D,
+/**/ 0x3FD8D4A4, 0xA774992F,
+/**/ 0x3C744A02, 0xEA766326,
+/**/ 0x3FED7E4E, 0x97E17B4A,
+/**/ 0xBC63B770, 0x352BED94,
+/**/ 0x3FD94A6B, 0xE9F546C5,
+/**/ 0xBC769CE1, 0x3E683F58,
+/**/ 0x3FED653F, 0x073E4040,
+/**/ 0xBC876236, 0x434BEC37,
+/**/ 0x3FD9BFCE, 0x02E80510,
+/**/ 0x3C709E39, 0xA320B0A4,
+/**/ 0x3FED4BB9, 0xE1C619E0,
+/**/ 0x3C8F34BB, 0x77858F61,
+/**/ 0x3FDA34C9, 0x1CC50CCA,
+/**/ 0xBC5A310E, 0x3B50CECD,
+/**/ 0x3FED31BF, 0x8D8D7C06,
+/**/ 0x3C7E60DD, 0x3089CBDD,
+/**/ 0x3FDAA95B, 0x63A09277,
+/**/ 0xBC66293E, 0xB13C0381,
+/**/ 0x3FED1750, 0x727D94F0,
+/**/ 0x3C80D52B, 0x1EC1A48E,
+/**/ 0x3FDB1D83, 0x05321617,
+/**/ 0xBC7AE242, 0xCB99F519,
+/**/ 0x3FECFC6C, 0xFA52AD9F,
+/**/ 0x3C88B5B5, 0x508F2A0D,
+/**/ 0x3FDB913E, 0x30DBAC43,
+/**/ 0xBC7E38AD, 0x2F6C3FF1,
+/**/ 0x3FECE115, 0x909A82E5,
+/**/ 0x3C81F139, 0xBB31109A,
+/**/ 0x3FDC048B, 0x17B140A3,
+/**/ 0x3C619FE6, 0x757E9FA7,
+/**/ 0x3FECC54A, 0xA2B2972E,
+/**/ 0x3C64EE16, 0x2BA83A98,
+/**/ 0x3FDC7767, 0xEC7FD19E,
+/**/ 0xBC5EB14D, 0x1A3D5826,
+/**/ 0x3FECA90C, 0x9FC67D0B,
+/**/ 0xBC646A81, 0x485E3462,
+/**/ 0x3FDCE9D2, 0xE3D4A51F,
+/**/ 0xBC62FC8A, 0x12DAE298,
+/**/ 0x3FEC8C5B, 0xF8CE1A84,
+/**/ 0x3C7AB3D1, 0xA1590123,
+/**/ 0x3FDD5BCA, 0x34047661,
+/**/ 0x3C728A44, 0xA75FC29C,
+/**/ 0x3FEC6F39, 0x208BE53B,
+/**/ 0xBC8741DB, 0xFBAADB42,
+/**/ 0x3FDDCD4C, 0x15329C9A,
+/**/ 0x3C70D4C6, 0xE171FD9A,
+/**/ 0x3FEC51A4, 0x8B8B175E,
+/**/ 0xBC61BBB4, 0x3B9AA880,
+/**/ 0x3FDE3E56, 0xC1582A69,
+/**/ 0xBC50A482, 0x1099F88F,
+/**/ 0x3FEC339E, 0xB01DDD81,
+/**/ 0xBC8CAAF5, 0xEE82C5C0,
+/**/ 0x3FDEAEE8, 0x744B05F0,
+/**/ 0xBC5789B4, 0x3C9B027D,
+/**/ 0x3FEC1528, 0x065B7D50,
+/**/ 0xBC889211, 0x1312E828,
+/**/ 0x3FDF1EFF, 0x6BC4F97B,
+/**/ 0x3C717212, 0xF8A7525C,
+/**/ 0x3FEBF641, 0x081E7536,
+/**/ 0x3C8B7BD7, 0x1628A9A1,
+/**/ 0x3FDF8E99, 0xE76ABC97,
+/**/ 0x3C59D950, 0xAF2D00A3,
+/**/ 0x3FEBD6EA, 0x310294F5,
+/**/ 0x3C731BBC, 0xC88C109D,
+/**/ 0x3FDFFDB6, 0x28D2F57A,
+/**/ 0x3C6F4A99, 0x2E905B6A,
+/**/ 0x3FEBB723, 0xFE630F32,
+/**/ 0x3C772BD2, 0x452D0A39,
+/**/ 0x3FE03629, 0x39C69955,
+/**/ 0xBC82D8CD, 0x78397B01,
+/**/ 0x3FEB96EE, 0xEF58840E,
+/**/ 0x3C545A3C, 0xC78FADE0,
+/**/ 0x3FE06D36, 0x86946E5B,
+/**/ 0x3C83F5AE, 0x4538FF1B,
+/**/ 0x3FEB764B, 0x84B704C2,
+/**/ 0xBC8F5848, 0xC21B389B,
+/**/ 0x3FE0A402, 0x1E9E1001,
+/**/ 0xBC86F643, 0xA13914F6,
+/**/ 0x3FEB553A, 0x410C104E,
+/**/ 0x3C58FF79, 0x47027A16,
+/**/ 0x3FE0DA8B, 0x26B5672E,
+/**/ 0xBC8A58DE, 0xF0BEE909,
+/**/ 0x3FEB33BB, 0xA89C8948,
+/**/ 0x3C8EA6A5, 0x1D1F6CA9,
+/**/ 0x3FE110D0, 0xC4B69C3B,
+/**/ 0x3C8D9189, 0x98809981,
+/**/ 0x3FEB11D0, 0x4162A4C6,
+/**/ 0x3C71DD56, 0x1EFBC0C2,
+/**/ 0x3FE146D2, 0x1F8B7F82,
+/**/ 0x3C7BF953, 0x5E2739A8,
+/**/ 0x3FEAEF78, 0x930BD275,
+/**/ 0xBC7F8362, 0x79746F94,
+/**/ 0x3FE17C8E, 0x5F2EEDB0,
+/**/ 0x3C635E57, 0x102E2488,
+/**/ 0x3FEACCB5, 0x26F69DE5,
+/**/ 0x3C88FB6A, 0x8DD6B6CC,
+/**/ 0x3FE1B204, 0xACB02FDD,
+/**/ 0xBC5F190C, 0x70CBB5FF,
+/**/ 0x3FEAA986, 0x88308913,
+/**/ 0xBC0B83D6, 0x07CD5070,
+/**/ 0x3FE1E734, 0x3236574C,
+/**/ 0x3C722A3F, 0xA4F41D5A,
+/**/ 0x3FEA85ED, 0x4373E02D,
+/**/ 0x3C69BE06, 0x385EC792,
+/**/ 0x3FE21C1C, 0x1B0394CF,
+/**/ 0x3C5E5B32, 0x4B23AA31,
+/**/ 0x3FEA61E9, 0xE72586AF,
+/**/ 0x3C858330, 0xE2FD453F,
+/**/ 0x3FE250BB, 0x93788BBB,
+/**/ 0x3C7EA3D0, 0x2457BCCE,
+/**/ 0x3FEA3D7D, 0x0352BDCF,
+/**/ 0xBC868DBA, 0xECA19669,
+/**/ 0x3FE28511, 0xC917A067,
+/**/ 0xBC801DF1, 0xD9A16B70,
+/**/ 0x3FEA18A7, 0x29AEE445,
+/**/ 0x3C395E25, 0x736C0358,
+/**/ 0x3FE2B91D, 0xEA88421E,
+/**/ 0xBC8FA371, 0xDB216AB0,
+/**/ 0x3FE9F368, 0xED912F85,
+/**/ 0xBC81D200, 0xC5791606,
+/**/ 0x3FE2ECDF, 0x279A3082,
+/**/ 0x3C8D3557, 0xE0E7E37E,
+/**/ 0x3FE9CDC2, 0xE3F25E5C,
+/**/ 0x3C83F991, 0x12993F62,
+/**/ 0x3FE32054, 0xB148BC4F,
+/**/ 0x3C8F6B42, 0x095A135B,
+/**/ 0x3FE9A7B5, 0xA36A6514,
+/**/ 0x3C8722CF, 0xCC9FA7A9,
+/**/ 0x3FE3537D, 0xB9BE0367,
+/**/ 0x3C6B327E, 0x7AF040F0,
+/**/ 0x3FE98141, 0xC42E1310,
+/**/ 0x3C8D1FF8, 0x0488F08D,
+/**/ 0x3FE38659, 0x7456282B,
+/**/ 0xBC710FAD, 0xA93B07A8,
+/**/ 0x3FE95A67, 0xE00CB1FD,
+/**/ 0xBC80BEFD, 0xA21F862D,
+/**/ 0x3FE3B8E7, 0x15A2840A,
+/**/ 0xBC797653, 0xA7D2F07B,
+/**/ 0x3FE93328, 0x926D9E92,
+/**/ 0xBC8BB770, 0x03600CDA,
+/**/ 0x3FE3EB25, 0xD36CD53A,
+/**/ 0xBC5BE570, 0xE1570FC0,
+/**/ 0x3FE90B84, 0x784DDAF7,
+/**/ 0xBC70FEB1, 0x0AB93B87,
+/**/ 0x3FE41D14, 0xE4BA6790,
+/**/ 0x3C84608F, 0xD287ECF5,
+/**/ 0x3FE8E37C, 0x303D9AD1,
+/**/ 0xBC6463A4, 0xB53D4BF8,
+/**/ 0x3FE44EB3, 0x81CF386B,
+/**/ 0xBC83ED6C, 0x1E6A5505,
+/**/ 0x3FE8BB10, 0x5A5DC900,
+/**/ 0x3C8863E0, 0x3E9474C1,
+/**/ 0x3FE48000, 0xE431159F,
+/**/ 0xBC8B194A, 0x7463ED10,
+/**/ 0x3FE89241, 0x985D871F,
+/**/ 0x3C8C48D9, 0xC413ED84,
+/**/ 0x3FE4B0FC, 0x46AAB761,
+/**/ 0x3C20DA05, 0x738CC59A,
+/**/ 0x3FE86910, 0x8D77A6C6,
+/**/ 0x3C7338FF, 0xE2BFE9DD,
+/**/ 0x3FE4E1A4, 0xE54ED51B,
+/**/ 0xBC8A492F, 0x89B7C76A,
+/**/ 0x3FE83F7D, 0xDE701CA0,
+/**/ 0xBC4152CF, 0x609BC6E8,
+/**/ 0x3FE511F9, 0xFD7B351C,
+/**/ 0xBC85C0E8, 0x61C48831,
+/**/ 0x3FE8158A, 0x31916D5D,
+/**/ 0xBC6DE8B9, 0x0B8228DE,
+/**/ 0x3FE541FA, 0xCDDBB724,
+/**/ 0x3C7232C2, 0x8520D391,
+/**/ 0x3FE7EB36, 0x2EAA1488,
+/**/ 0x3C5A1D65, 0xA4A5959F,
+/**/ 0x3FE571A6, 0x966D59B3,
+/**/ 0x3C5C843B, 0x4D0FB198,
+/**/ 0x3FE7C082, 0x7F09E54F,
+/**/ 0xBC6C73D6, 0xD72AEE68,
+/**/ 0x3FE5A0FC, 0x98813A12,
+/**/ 0xBC8D82E2, 0xB7D4227B,
+/**/ 0x3FE7956F, 0xCD7F6543,
+/**/ 0xBC8AB276, 0xE9D45AE4,
+/**/ 0x3FE5CFFC, 0x16BF8F0D,
+/**/ 0x3C896CB3, 0x70EB578A,
+/**/ 0x3FE769FE, 0xC655211F,
+/**/ 0xBC6827D5, 0xCF8C68C5,
+/**/ 0x3FE5FEA4, 0x552A9E57,
+/**/ 0x3C80B6CE, 0xF7EE20B7,
+/**/ 0x3FE73E30, 0x174EFBA1,
+/**/ 0xBC65D3AE, 0x3D94AD5F,
+/**/ 0x3FE62CF4, 0x9921AC79,
+/**/ 0xBC8EDD98, 0x55B6241A,
+/**/ 0x3FE71204, 0x6FA77678,
+/**/ 0x3C8425B0, 0xA5029C81,
+/**/ 0x3FE65AEC, 0x2963E755,
+/**/ 0x3C8126F9, 0x6B71053C,
+/**/ 0x3FE6E57C, 0x800CF55E,
+/**/ 0x3C860286, 0xDEDBD0A6,
+/**/ 0x3FE6888A, 0x4E134B2F,
+/**/ 0xBC86B7D3, 0x7644D5E6,
+/**/ 0x3FE6B898, 0xFA9EFB5D,
+/**/ 0x3C715AC7, 0x86CCF4B2,
+/**/ 0x3FE6B5CE, 0x50B7821A,
+/**/ 0xBC65D515, 0x8F702E0F,
+/**/ 0x3FE68B5A, 0x92EB6253,
+/**/ 0xBC89A91A, 0xD985F89C,
+/**/ 0x3FE6E2B7, 0x7C40BDE1,
+/**/ 0xBC70E729, 0x857FAD53,
+/**/ 0x3FE65DC1, 0xFDEB8CBA,
+/**/ 0xBC597C1B, 0x47337C77,
+/**/ 0x3FE70F45, 0x1D0A8C40,
+/**/ 0x3C697EDE, 0x3885770D,
+/**/ 0x3FE62FCF, 0xF20191C7,
+/**/ 0x3C6D9143, 0x895756EF,
+/**/ 0x3FE73B76, 0x80DEA578,
+/**/ 0xBC722483, 0x06DC12A2,
+/**/ 0x3FE60185, 0x26F563DF,
+/**/ 0x3C846CA5, 0xE0E432D0,
+/**/ 0x3FE7674A, 0xF6F7B524,
+/**/ 0x3C7E9D3F, 0x94AC84A8,
+/**/ 0x3FE5D2E2, 0x55F1F17A,
+/**/ 0x3C803141, 0x04C8892B,
+/**/ 0x3FE792C1, 0xD0041D52,
+/**/ 0xBC8ABF05, 0xEEB354EB,
+/**/ 0x3FE5A3E8, 0x39824077,
+/**/ 0x3C8428AA, 0x2759BE62,
+/**/ 0x3FE7BDDA, 0x5E28B3C2,
+/**/ 0x3C4AD119, 0x7CCD0393,
+/**/ 0x3FE57497, 0x8D8E83F2,
+/**/ 0x3C8F4714, 0xAF282D23,
+/**/ 0x3FE7E893, 0xF5037959,
+/**/ 0x3C80EEFB, 0xAA650C4C,
+/**/ 0x3FE544F1, 0x0F592CA5,
+/**/ 0xBC8E7AE8, 0xE6C7A62F,
+/**/ 0x3FE812ED, 0xE9AE4BA4,
+/**/ 0xBC87830A, 0xDF402DDA,
+/**/ 0x3FE514F5, 0x7D7BF3DA,
+/**/ 0x3C747A10, 0x8073C259 } };
+#else
+#ifdef LITTLE_ENDI
+const union {int4 i[880]; double x[440];} __sincostab = { .i = {
+/**/ 0x00000000, 0x00000000,
+/**/ 0x00000000, 0x00000000,
+/**/ 0x00000000, 0x3FF00000,
+/**/ 0x00000000, 0x00000000,
+/**/ 0xAAAEEEEF, 0x3F7FFFEA,
+/**/ 0xEC67B77C, 0xBC1E45E2,
+/**/ 0x00155552, 0x3FEFFFC0,
+/**/ 0xA0196DAE, 0x3C8F4A01,
+/**/ 0xAAEEEED5, 0x3F8FFFAA,
+/**/ 0x9A9F0777, 0xBC02AB63,
+/**/ 0x0155549F, 0x3FEFFF00,
+/**/ 0xA03A5EF3, 0x3C828A28,
+/**/ 0x01033255, 0x3F97FF70,
+/**/ 0x51527336, 0x3BFEFE2B,
+/**/ 0x06BFF7E6, 0x3FEFFDC0,
+/**/ 0xE86977BD, 0x3C8AE6DA,
+/**/ 0xAEEEE86F, 0x3F9FFEAA,
+/**/ 0xFB224AE2, 0xBC3CD406,
+/**/ 0x155527D3, 0x3FEFFC00,
+/**/ 0x92D89B5B, 0xBC83B544,
+/**/ 0xB12D45D5, 0x3FA3FEB2,
+/**/ 0x203D1C11, 0x3C34EC54,
+/**/ 0x3414A7BA, 0x3FEFF9C0,
+/**/ 0xBE6C59BF, 0x3C6991F4,
+/**/ 0x1032FBA9, 0x3FA7FDC0,
+/**/ 0xF46E997A, 0xBC4599BD,
+/**/ 0x6BFDF99F, 0x3FEFF700,
+/**/ 0x60648D5F, 0xBC78B3B5,
+/**/ 0x78586DAC, 0x3FABFC6D,
+/**/ 0x03DBF236, 0x3C18E4FD,
+/**/ 0xC8103A31, 0x3FEFF3C0,
+/**/ 0xBDDC0E66, 0x3C74856D,
+/**/ 0xEEED4EDB, 0x3FAFFAAA,
+/**/ 0x32684B69, 0xBC42D16D,
+/**/ 0x5549F4D3, 0x3FEFF001,
+/**/ 0x7B99426F, 0x3C832838,
+/**/ 0x3D808BEF, 0x3FB1FC34,
+/**/ 0xE6F3BE4F, 0xBC5F3D32,
+/**/ 0x22A8EF9F, 0x3FEFEBC2,
+/**/ 0x34F54C77, 0x3C579349,
+/**/ 0x12D1755B, 0x3FB3FACB,
+/**/ 0x5299468C, 0xBC592191,
+/**/ 0x4129EF6F, 0x3FEFE703,
+/**/ 0x37C96F97, 0xBC6CBF43,
+/**/ 0xFD10B737, 0x3FB5F911,
+/**/ 0x02BE9102, 0xBC50184F,
+/**/ 0xC3C873EB, 0x3FEFE1C4,
+/**/ 0x057C4A02, 0xBC35A9C9,
+/**/ 0x032550E4, 0x3FB7F701,
+/**/ 0x1800501A, 0x3C3AFC2D,
+/**/ 0xBF7E6B9B, 0x3FEFDC06,
+/**/ 0xB535F8DB, 0x3C831902,
+/**/ 0x2D55D1F9, 0x3FB9F490,
+/**/ 0x7EAC1DC1, 0x3C52696D,
+/**/ 0x4B43E000, 0x3FEFD5C9,
+/**/ 0xCB4F92F9, 0xBC62E768,
+/**/ 0x8568391D, 0x3FBBF1B7,
+/**/ 0x1DEA4CC8, 0x3C5E9184,
+/**/ 0x800E99B1, 0x3FEFCF0C,
+/**/ 0x86D186AC, 0x3C6EA3D7,
+/**/ 0x16C1CCE6, 0x3FBDEE6F,
+/**/ 0x2FB71673, 0xBC450F8E,
+/**/ 0x78D1BC88, 0x3FEFC7D0,
+/**/ 0x447DB685, 0x3C8075D2,
+/**/ 0xEE86EE36, 0x3FBFEAAE,
+/**/ 0xBCC6F03B, 0xBC4AFCB2,
+/**/ 0x527D5BD3, 0x3FEFC015,
+/**/ 0x5094EFB8, 0x3C8B68F3,
+/**/ 0x8DDD71D1, 0x3FC0F337,
+/**/ 0x724F0F9E, 0x3C6D8468,
+/**/ 0x2BFE0695, 0x3FEFB7DB,
+/**/ 0xF4F65AB1, 0x3C821DAD,
+/**/ 0xD7AFCEAF, 0x3FC1F0D3,
+/**/ 0x099769A5, 0xBC66EF95,
+/**/ 0x263C4BD3, 0x3FEFAF22,
+/**/ 0x133A2769, 0xBC552ACE,
+/**/ 0x5E4AB88F, 0x3FC2EE28,
+/**/ 0x05DEE058, 0xBC6E4D0F,
+/**/ 0x641C36F2, 0x3FEFA5EA,
+/**/ 0xED17CC7C, 0x3C404DA6,
+/**/ 0x2C5D66CB, 0x3FC3EB31,
+/**/ 0x6B66CB91, 0x3C647D66,
+/**/ 0x0A7CC428, 0x3FEF9C34,
+/**/ 0x063B7462, 0x3C8C5B6B,
+/**/ 0x4DC5F27B, 0x3FC4E7EA,
+/**/ 0x2AC072FC, 0x3C5949DB,
+/**/ 0x40374D01, 0x3FEF91FF,
+/**/ 0x4D3A9E4C, 0xBC67D03F,
+/**/ 0xCFA126F3, 0x3FC5E44F,
+/**/ 0x063F89B6, 0xBC66F443,
+/**/ 0x2E1EECF6, 0x3FEF874C,
+/**/ 0xE1332B16, 0xBC8C6514,
+/**/ 0xC05A4D4C, 0x3FC6E05D,
+/**/ 0x8B81C940, 0xBBD32C5C,
+/**/ 0xFEFFDE24, 0x3FEF7C1A,
+/**/ 0xC47540B1, 0xBC78F55B,
+/**/ 0x2FBAF2B5, 0x3FC7DC10,
+/**/ 0xE23C97C3, 0x3C45AB50,
+/**/ 0xDF9ECE1C, 0x3FEF706B,
+/**/ 0x0C36DCB4, 0xBC8698C8,
+/**/ 0x2EFAA944, 0x3FC8D763,
+/**/ 0x62CBB953, 0xBC620FA2,
+/**/ 0xFEB82ACD, 0x3FEF643E,
+/**/ 0xC1FE28AC, 0x3C76B00A,
+/**/ 0xD0CEC312, 0x3FC9D252,
+/**/ 0x80B1137D, 0x3C59C43D,
+/**/ 0x8CFF6797, 0x3FEF5794,
+/**/ 0x3E03B1D5, 0x3C6E3A0D,
+/**/ 0x297A0765, 0x3FCACCDB,
+/**/ 0x57D6CDEB, 0xBC59883B,
+/**/ 0xBD1E3A79, 0x3FEF4A6C,
+/**/ 0xEDAEBB57, 0x3C813DF0,
+/**/ 0x4EDC6199, 0x3FCBC6F8,
+/**/ 0x6A7B0CAB, 0x3C69C1A5,
+/**/ 0xC3B3D16E, 0x3FEF3CC7,
+/**/ 0xD28A3494, 0xBC621A3A,
+/**/ 0x588289A3, 0x3FCCC0A6,
+/**/ 0x9BC87C6B, 0xBC6868D0,
+/**/ 0xD753FFED, 0x3FEF2EA5,
+/**/ 0x5F56D583, 0x3C8CC421,
+/**/ 0x5FB5A5D0, 0x3FCDB9E1,
+/**/ 0xD6CC6FC2, 0xBC632E20,
+/**/ 0x3086649F, 0x3FEF2007,
+/**/ 0x16C1984B, 0x3C7B9404,
+/**/ 0x7F8AE5A3, 0x3FCEB2A5,
+/**/ 0xAF572CEB, 0xBC60BE06,
+/**/ 0x09C5873B, 0x3FEF10EC,
+/**/ 0x762C1283, 0x3C8D9072,
+/**/ 0xD4F31577, 0x3FCFAAEE,
+/**/ 0x508E32B8, 0xBC615D88,
+/**/ 0x9F7DEEA1, 0x3FEF0154,
+/**/ 0x99E5CAFD, 0x3C8D3C1E,
+/**/ 0xBF65155C, 0x3FD0515C,
+/**/ 0x9DFD8EC8, 0xBC79B8C2,
+/**/ 0x300D2F26, 0x3FEEF141,
+/**/ 0x08DED372, 0xBC82AA1B,
+/**/ 0xCEF36436, 0x3FD0CD00,
+/**/ 0x0C93E2B5, 0xBC79FB0A,
+/**/ 0xFBC0F11C, 0x3FEEE0B1,
+/**/ 0x80BBC3B1, 0xBC4BFD23,
+/**/ 0xAA94DDEB, 0x3FD14861,
+/**/ 0xB5B615A4, 0xBC6BE881,
+/**/ 0x44D5EFA1, 0x3FEECFA7,
+/**/ 0x4AF541D0, 0xBC556D0A,
+/**/ 0x64C6B876, 0x3FD1C37D,
+/**/ 0xFE0DCFF5, 0x3C746076,
+/**/ 0x4F76EFA8, 0x3FEEBE21,
+/**/ 0x12BA543E, 0xBC802F9F,
+/**/ 0x111AAF36, 0x3FD23E52,
+/**/ 0x334EFF18, 0xBC74F080,
+/**/ 0x61BBAF4F, 0x3FEEAC20,
+/**/ 0x3E94658D, 0x3C62C1D5,
+/**/ 0xC43EB49F, 0x3FD2B8DD,
+/**/ 0x99F2D807, 0x3C615538,
+/**/ 0xC3A7CD83, 0x3FEE99A4,
+/**/ 0x1BC53CE8, 0xBC82264B,
+/**/ 0x94049F87, 0x3FD3331E,
+/**/ 0xB40C302C, 0x3C7E0CB6,
+/**/ 0xBF29A9ED, 0x3FEE86AE,
+/**/ 0xFDBB58A7, 0x3C89397A,
+/**/ 0x9769D3D8, 0x3FD3AD12,
+/**/ 0x04878398, 0x3C003D55,
+/**/ 0xA0193D40, 0x3FEE733E,
+/**/ 0x3546CE13, 0xBC86428B,
+/**/ 0xE69EE697, 0x3FD426B7,
+/**/ 0x5705C59F, 0xBC7F09C7,
+/**/ 0xB436E9D0, 0x3FEE5F54,
+/**/ 0xD02FC8BC, 0x3C87EB0F,
+/**/ 0x9B0F3D20, 0x3FD4A00C,
+/**/ 0x6BB08EAD, 0x3C7823BA,
+/**/ 0x4B2A449C, 0x3FEE4AF1,
+/**/ 0x2E8A6833, 0xBC868CA0,
+/**/ 0xCF68A77A, 0x3FD5190E,
+/**/ 0x55EEF0F3, 0x3C7B3571,
+/**/ 0xB680D6A5, 0x3FEE3614,
+/**/ 0xAA015237, 0xBC727793,
+/**/ 0x9FA2F597, 0x3FD591BC,
+/**/ 0xAC3FE0CB, 0x3C67C74B,
+/**/ 0x49ACD6C1, 0x3FEE20BF,
+/**/ 0xC7EF636C, 0xBC5660AE,
+/**/ 0x29078775, 0x3FD60A14,
+/**/ 0x0BA89133, 0x3C5B1FD8,
+/**/ 0x5A03DBCE, 0x3FEE0AF1,
+/**/ 0x02771AE6, 0x3C5FE8E7,
+/**/ 0x8A38D7F7, 0x3FD68213,
+/**/ 0x02444AAD, 0xBC7D8892,
+/**/ 0x3EBD875E, 0x3FEDF4AB,
+/**/ 0x7E6736C4, 0xBC8E2D8A,
+/**/ 0xE33A0255, 0x3FD6F9B8,
+/**/ 0x4EE9DA0D, 0x3C742BC1,
+/**/ 0x50F228D6, 0x3FEDDDED,
+/**/ 0xD42BA2BF, 0xBC6E80C8,
+/**/ 0x55764214, 0x3FD77102,
+/**/ 0x314BB6CE, 0xBC66EAD7,
+/**/ 0xEB995912, 0x3FEDC6B7,
+/**/ 0x776DCD35, 0x3C54B364,
+/**/ 0x03C86D4E, 0x3FD7E7EE,
+/**/ 0xDABF5AF2, 0xBC7B63BC,
+/**/ 0x6B888E83, 0x3FEDAF0B,
+/**/ 0x2B5E5CEA, 0x3C8A249E,
+/**/ 0x12826949, 0x3FD85E7A,
+/**/ 0x9B5FACE0, 0x3C78A40E,
+/**/ 0x2F71A9DC, 0x3FED96E8,
+/**/ 0xD5D2039D, 0x3C8FF61B,
+/**/ 0xA774992F, 0x3FD8D4A4,
+/**/ 0xEA766326, 0x3C744A02,
+/**/ 0x97E17B4A, 0x3FED7E4E,
+/**/ 0x352BED94, 0xBC63B770,
+/**/ 0xE9F546C5, 0x3FD94A6B,
+/**/ 0x3E683F58, 0xBC769CE1,
+/**/ 0x073E4040, 0x3FED653F,
+/**/ 0x434BEC37, 0xBC876236,
+/**/ 0x02E80510, 0x3FD9BFCE,
+/**/ 0xA320B0A4, 0x3C709E39,
+/**/ 0xE1C619E0, 0x3FED4BB9,
+/**/ 0x77858F61, 0x3C8F34BB,
+/**/ 0x1CC50CCA, 0x3FDA34C9,
+/**/ 0x3B50CECD, 0xBC5A310E,
+/**/ 0x8D8D7C06, 0x3FED31BF,
+/**/ 0x3089CBDD, 0x3C7E60DD,
+/**/ 0x63A09277, 0x3FDAA95B,
+/**/ 0xB13C0381, 0xBC66293E,
+/**/ 0x727D94F0, 0x3FED1750,
+/**/ 0x1EC1A48E, 0x3C80D52B,
+/**/ 0x05321617, 0x3FDB1D83,
+/**/ 0xCB99F519, 0xBC7AE242,
+/**/ 0xFA52AD9F, 0x3FECFC6C,
+/**/ 0x508F2A0D, 0x3C88B5B5,
+/**/ 0x30DBAC43, 0x3FDB913E,
+/**/ 0x2F6C3FF1, 0xBC7E38AD,
+/**/ 0x909A82E5, 0x3FECE115,
+/**/ 0xBB31109A, 0x3C81F139,
+/**/ 0x17B140A3, 0x3FDC048B,
+/**/ 0x757E9FA7, 0x3C619FE6,
+/**/ 0xA2B2972E, 0x3FECC54A,
+/**/ 0x2BA83A98, 0x3C64EE16,
+/**/ 0xEC7FD19E, 0x3FDC7767,
+/**/ 0x1A3D5826, 0xBC5EB14D,
+/**/ 0x9FC67D0B, 0x3FECA90C,
+/**/ 0x485E3462, 0xBC646A81,
+/**/ 0xE3D4A51F, 0x3FDCE9D2,
+/**/ 0x12DAE298, 0xBC62FC8A,
+/**/ 0xF8CE1A84, 0x3FEC8C5B,
+/**/ 0xA1590123, 0x3C7AB3D1,
+/**/ 0x34047661, 0x3FDD5BCA,
+/**/ 0xA75FC29C, 0x3C728A44,
+/**/ 0x208BE53B, 0x3FEC6F39,
+/**/ 0xFBAADB42, 0xBC8741DB,
+/**/ 0x15329C9A, 0x3FDDCD4C,
+/**/ 0xE171FD9A, 0x3C70D4C6,
+/**/ 0x8B8B175E, 0x3FEC51A4,
+/**/ 0x3B9AA880, 0xBC61BBB4,
+/**/ 0xC1582A69, 0x3FDE3E56,
+/**/ 0x1099F88F, 0xBC50A482,
+/**/ 0xB01DDD81, 0x3FEC339E,
+/**/ 0xEE82C5C0, 0xBC8CAAF5,
+/**/ 0x744B05F0, 0x3FDEAEE8,
+/**/ 0x3C9B027D, 0xBC5789B4,
+/**/ 0x065B7D50, 0x3FEC1528,
+/**/ 0x1312E828, 0xBC889211,
+/**/ 0x6BC4F97B, 0x3FDF1EFF,
+/**/ 0xF8A7525C, 0x3C717212,
+/**/ 0x081E7536, 0x3FEBF641,
+/**/ 0x1628A9A1, 0x3C8B7BD7,
+/**/ 0xE76ABC97, 0x3FDF8E99,
+/**/ 0xAF2D00A3, 0x3C59D950,
+/**/ 0x310294F5, 0x3FEBD6EA,
+/**/ 0xC88C109D, 0x3C731BBC,
+/**/ 0x28D2F57A, 0x3FDFFDB6,
+/**/ 0x2E905B6A, 0x3C6F4A99,
+/**/ 0xFE630F32, 0x3FEBB723,
+/**/ 0x452D0A39, 0x3C772BD2,
+/**/ 0x39C69955, 0x3FE03629,
+/**/ 0x78397B01, 0xBC82D8CD,
+/**/ 0xEF58840E, 0x3FEB96EE,
+/**/ 0xC78FADE0, 0x3C545A3C,
+/**/ 0x86946E5B, 0x3FE06D36,
+/**/ 0x4538FF1B, 0x3C83F5AE,
+/**/ 0x84B704C2, 0x3FEB764B,
+/**/ 0xC21B389B, 0xBC8F5848,
+/**/ 0x1E9E1001, 0x3FE0A402,
+/**/ 0xA13914F6, 0xBC86F643,
+/**/ 0x410C104E, 0x3FEB553A,
+/**/ 0x47027A16, 0x3C58FF79,
+/**/ 0x26B5672E, 0x3FE0DA8B,
+/**/ 0xF0BEE909, 0xBC8A58DE,
+/**/ 0xA89C8948, 0x3FEB33BB,
+/**/ 0x1D1F6CA9, 0x3C8EA6A5,
+/**/ 0xC4B69C3B, 0x3FE110D0,
+/**/ 0x98809981, 0x3C8D9189,
+/**/ 0x4162A4C6, 0x3FEB11D0,
+/**/ 0x1EFBC0C2, 0x3C71DD56,
+/**/ 0x1F8B7F82, 0x3FE146D2,
+/**/ 0x5E2739A8, 0x3C7BF953,
+/**/ 0x930BD275, 0x3FEAEF78,
+/**/ 0x79746F94, 0xBC7F8362,
+/**/ 0x5F2EEDB0, 0x3FE17C8E,
+/**/ 0x102E2488, 0x3C635E57,
+/**/ 0x26F69DE5, 0x3FEACCB5,
+/**/ 0x8DD6B6CC, 0x3C88FB6A,
+/**/ 0xACB02FDD, 0x3FE1B204,
+/**/ 0x70CBB5FF, 0xBC5F190C,
+/**/ 0x88308913, 0x3FEAA986,
+/**/ 0x07CD5070, 0xBC0B83D6,
+/**/ 0x3236574C, 0x3FE1E734,
+/**/ 0xA4F41D5A, 0x3C722A3F,
+/**/ 0x4373E02D, 0x3FEA85ED,
+/**/ 0x385EC792, 0x3C69BE06,
+/**/ 0x1B0394CF, 0x3FE21C1C,
+/**/ 0x4B23AA31, 0x3C5E5B32,
+/**/ 0xE72586AF, 0x3FEA61E9,
+/**/ 0xE2FD453F, 0x3C858330,
+/**/ 0x93788BBB, 0x3FE250BB,
+/**/ 0x2457BCCE, 0x3C7EA3D0,
+/**/ 0x0352BDCF, 0x3FEA3D7D,
+/**/ 0xECA19669, 0xBC868DBA,
+/**/ 0xC917A067, 0x3FE28511,
+/**/ 0xD9A16B70, 0xBC801DF1,
+/**/ 0x29AEE445, 0x3FEA18A7,
+/**/ 0x736C0358, 0x3C395E25,
+/**/ 0xEA88421E, 0x3FE2B91D,
+/**/ 0xDB216AB0, 0xBC8FA371,
+/**/ 0xED912F85, 0x3FE9F368,
+/**/ 0xC5791606, 0xBC81D200,
+/**/ 0x279A3082, 0x3FE2ECDF,
+/**/ 0xE0E7E37E, 0x3C8D3557,
+/**/ 0xE3F25E5C, 0x3FE9CDC2,
+/**/ 0x12993F62, 0x3C83F991,
+/**/ 0xB148BC4F, 0x3FE32054,
+/**/ 0x095A135B, 0x3C8F6B42,
+/**/ 0xA36A6514, 0x3FE9A7B5,
+/**/ 0xCC9FA7A9, 0x3C8722CF,
+/**/ 0xB9BE0367, 0x3FE3537D,
+/**/ 0x7AF040F0, 0x3C6B327E,
+/**/ 0xC42E1310, 0x3FE98141,
+/**/ 0x0488F08D, 0x3C8D1FF8,
+/**/ 0x7456282B, 0x3FE38659,
+/**/ 0xA93B07A8, 0xBC710FAD,
+/**/ 0xE00CB1FD, 0x3FE95A67,
+/**/ 0xA21F862D, 0xBC80BEFD,
+/**/ 0x15A2840A, 0x3FE3B8E7,
+/**/ 0xA7D2F07B, 0xBC797653,
+/**/ 0x926D9E92, 0x3FE93328,
+/**/ 0x03600CDA, 0xBC8BB770,
+/**/ 0xD36CD53A, 0x3FE3EB25,
+/**/ 0xE1570FC0, 0xBC5BE570,
+/**/ 0x784DDAF7, 0x3FE90B84,
+/**/ 0x0AB93B87, 0xBC70FEB1,
+/**/ 0xE4BA6790, 0x3FE41D14,
+/**/ 0xD287ECF5, 0x3C84608F,
+/**/ 0x303D9AD1, 0x3FE8E37C,
+/**/ 0xB53D4BF8, 0xBC6463A4,
+/**/ 0x81CF386B, 0x3FE44EB3,
+/**/ 0x1E6A5505, 0xBC83ED6C,
+/**/ 0x5A5DC900, 0x3FE8BB10,
+/**/ 0x3E9474C1, 0x3C8863E0,
+/**/ 0xE431159F, 0x3FE48000,
+/**/ 0x7463ED10, 0xBC8B194A,
+/**/ 0x985D871F, 0x3FE89241,
+/**/ 0xC413ED84, 0x3C8C48D9,
+/**/ 0x46AAB761, 0x3FE4B0FC,
+/**/ 0x738CC59A, 0x3C20DA05,
+/**/ 0x8D77A6C6, 0x3FE86910,
+/**/ 0xE2BFE9DD, 0x3C7338FF,
+/**/ 0xE54ED51B, 0x3FE4E1A4,
+/**/ 0x89B7C76A, 0xBC8A492F,
+/**/ 0xDE701CA0, 0x3FE83F7D,
+/**/ 0x609BC6E8, 0xBC4152CF,
+/**/ 0xFD7B351C, 0x3FE511F9,
+/**/ 0x61C48831, 0xBC85C0E8,
+/**/ 0x31916D5D, 0x3FE8158A,
+/**/ 0x0B8228DE, 0xBC6DE8B9,
+/**/ 0xCDDBB724, 0x3FE541FA,
+/**/ 0x8520D391, 0x3C7232C2,
+/**/ 0x2EAA1488, 0x3FE7EB36,
+/**/ 0xA4A5959F, 0x3C5A1D65,
+/**/ 0x966D59B3, 0x3FE571A6,
+/**/ 0x4D0FB198, 0x3C5C843B,
+/**/ 0x7F09E54F, 0x3FE7C082,
+/**/ 0xD72AEE68, 0xBC6C73D6,
+/**/ 0x98813A12, 0x3FE5A0FC,
+/**/ 0xB7D4227B, 0xBC8D82E2,
+/**/ 0xCD7F6543, 0x3FE7956F,
+/**/ 0xE9D45AE4, 0xBC8AB276,
+/**/ 0x16BF8F0D, 0x3FE5CFFC,
+/**/ 0x70EB578A, 0x3C896CB3,
+/**/ 0xC655211F, 0x3FE769FE,
+/**/ 0xCF8C68C5, 0xBC6827D5,
+/**/ 0x552A9E57, 0x3FE5FEA4,
+/**/ 0xF7EE20B7, 0x3C80B6CE,
+/**/ 0x174EFBA1, 0x3FE73E30,
+/**/ 0x3D94AD5F, 0xBC65D3AE,
+/**/ 0x9921AC79, 0x3FE62CF4,
+/**/ 0x55B6241A, 0xBC8EDD98,
+/**/ 0x6FA77678, 0x3FE71204,
+/**/ 0xA5029C81, 0x3C8425B0,
+/**/ 0x2963E755, 0x3FE65AEC,
+/**/ 0x6B71053C, 0x3C8126F9,
+/**/ 0x800CF55E, 0x3FE6E57C,
+/**/ 0xDEDBD0A6, 0x3C860286,
+/**/ 0x4E134B2F, 0x3FE6888A,
+/**/ 0x7644D5E6, 0xBC86B7D3,
+/**/ 0xFA9EFB5D, 0x3FE6B898,
+/**/ 0x86CCF4B2, 0x3C715AC7,
+/**/ 0x50B7821A, 0x3FE6B5CE,
+/**/ 0x8F702E0F, 0xBC65D515,
+/**/ 0x92EB6253, 0x3FE68B5A,
+/**/ 0xD985F89C, 0xBC89A91A,
+/**/ 0x7C40BDE1, 0x3FE6E2B7,
+/**/ 0x857FAD53, 0xBC70E729,
+/**/ 0xFDEB8CBA, 0x3FE65DC1,
+/**/ 0x47337C77, 0xBC597C1B,
+/**/ 0x1D0A8C40, 0x3FE70F45,
+/**/ 0x3885770D, 0x3C697EDE,
+/**/ 0xF20191C7, 0x3FE62FCF,
+/**/ 0x895756EF, 0x3C6D9143,
+/**/ 0x80DEA578, 0x3FE73B76,
+/**/ 0x06DC12A2, 0xBC722483,
+/**/ 0x26F563DF, 0x3FE60185,
+/**/ 0xE0E432D0, 0x3C846CA5,
+/**/ 0xF6F7B524, 0x3FE7674A,
+/**/ 0x94AC84A8, 0x3C7E9D3F,
+/**/ 0x55F1F17A, 0x3FE5D2E2,
+/**/ 0x04C8892B, 0x3C803141,
+/**/ 0xD0041D52, 0x3FE792C1,
+/**/ 0xEEB354EB, 0xBC8ABF05,
+/**/ 0x39824077, 0x3FE5A3E8,
+/**/ 0x2759BE62, 0x3C8428AA,
+/**/ 0x5E28B3C2, 0x3FE7BDDA,
+/**/ 0x7CCD0393, 0x3C4AD119,
+/**/ 0x8D8E83F2, 0x3FE57497,
+/**/ 0xAF282D23, 0x3C8F4714,
+/**/ 0xF5037959, 0x3FE7E893,
+/**/ 0xAA650C4C, 0x3C80EEFB,
+/**/ 0x0F592CA5, 0x3FE544F1,
+/**/ 0xE6C7A62F, 0xBC8E7AE8,
+/**/ 0xE9AE4BA4, 0x3FE812ED,
+/**/ 0xDF402DDA, 0xBC87830A,
+/**/ 0x7D7BF3DA, 0x3FE514F5,
+/**/ 0x8073C259, 0x3C747A10 } };
+#endif
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/slowexp.c b/REORG.TODO/sysdeps/ieee754/dbl-64/slowexp.c
new file mode 100644
index 0000000000..e8fa2e263b
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/slowexp.c
@@ -0,0 +1,86 @@
+/*
+ * IBM Accurate Mathematical Library
+ * written by International Business Machines Corp.
+ * Copyright (C) 2001-2017 Free Software Foundation, Inc.
+ *
+ * This program 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 2.1 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 program; if not, see <http://www.gnu.org/licenses/>.
+ */
+/**************************************************************************/
+/* MODULE_NAME:slowexp.c */
+/* */
+/* FUNCTION:slowexp */
+/* */
+/* FILES NEEDED:mpa.h */
+/* mpa.c mpexp.c */
+/* */
+/*Converting from double precision to Multi-precision and calculating */
+/* e^x */
+/**************************************************************************/
+#include <math_private.h>
+
+#include <stap-probe.h>
+
+#ifndef USE_LONG_DOUBLE_FOR_MP
+# include "mpa.h"
+void __mpexp (mp_no *x, mp_no *y, int p);
+#endif
+
+#ifndef SECTION
+# define SECTION
+#endif
+
+/*Converting from double precision to Multi-precision and calculating e^x */
+double
+SECTION
+__slowexp (double x)
+{
+#ifndef USE_LONG_DOUBLE_FOR_MP
+ double w, z, res, eps = 3.0e-26;
+ int p;
+ mp_no mpx, mpy, mpz, mpw, mpeps, mpcor;
+
+ /* Use the multiple precision __MPEXP function to compute the exponential
+ First at 144 bits and if it is not accurate enough, at 768 bits. */
+ p = 6;
+ __dbl_mp (x, &mpx, p);
+ __mpexp (&mpx, &mpy, p);
+ __dbl_mp (eps, &mpeps, p);
+ __mul (&mpeps, &mpy, &mpcor, p);
+ __add (&mpy, &mpcor, &mpw, p);
+ __sub (&mpy, &mpcor, &mpz, p);
+ __mp_dbl (&mpw, &w, p);
+ __mp_dbl (&mpz, &z, p);
+ if (w == z)
+ {
+ /* Track how often we get to the slow exp code plus
+ its input/output values. */
+ LIBC_PROBE (slowexp_p6, 2, &x, &w);
+ return w;
+ }
+ else
+ {
+ p = 32;
+ __dbl_mp (x, &mpx, p);
+ __mpexp (&mpx, &mpy, p);
+ __mp_dbl (&mpy, &res, p);
+
+ /* Track how often we get to the uber-slow exp code plus
+ its input/output values. */
+ LIBC_PROBE (slowexp_p32, 2, &x, &res);
+ return res;
+ }
+#else
+ return (double) __ieee754_expl((long double)x);
+#endif
+}
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/slowpow.c b/REORG.TODO/sysdeps/ieee754/dbl-64/slowpow.c
new file mode 100644
index 0000000000..1176b2689c
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/slowpow.c
@@ -0,0 +1,125 @@
+/*
+ * IBM Accurate Mathematical Library
+ * written by International Business Machines Corp.
+ * Copyright (C) 2001-2017 Free Software Foundation, Inc.
+ *
+ * This program 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 2.1 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 program; if not, see <http://www.gnu.org/licenses/>.
+ */
+/*************************************************************************/
+/* MODULE_NAME:slowpow.c */
+/* */
+/* FUNCTION:slowpow */
+/* */
+/*FILES NEEDED:mpa.h */
+/* mpa.c mpexp.c mplog.c halfulp.c */
+/* */
+/* Given two IEEE double machine numbers y,x , routine computes the */
+/* correctly rounded (to nearest) value of x^y. Result calculated by */
+/* multiplication (in halfulp.c) or if result isn't accurate enough */
+/* then routine converts x and y into multi-precision doubles and */
+/* calls to mpexp routine */
+/*************************************************************************/
+
+#include "mpa.h"
+#include <math_private.h>
+
+#include <stap-probe.h>
+
+#ifndef SECTION
+# define SECTION
+#endif
+
+void __mpexp (mp_no *x, mp_no *y, int p);
+void __mplog (mp_no *x, mp_no *y, int p);
+double ulog (double);
+double __halfulp (double x, double y);
+
+double
+SECTION
+__slowpow (double x, double y, double z)
+{
+ double res, res1;
+ mp_no mpx, mpy, mpz, mpw, mpp, mpr, mpr1;
+ static const mp_no eps = {-3, {1.0, 4.0}};
+ int p;
+
+ /* __HALFULP returns -10 or X^Y. */
+ res = __halfulp (x, y);
+
+ /* Return if the result was computed by __HALFULP. */
+ if (res >= 0)
+ return res;
+
+ /* Compute pow as long double. This is currently only used by powerpc, where
+ one may get 106 bits of accuracy. */
+#ifdef USE_LONG_DOUBLE_FOR_MP
+ long double ldw, ldz, ldpp;
+ static const long double ldeps = 0x4.0p-96;
+
+ ldz = __ieee754_logl ((long double) x);
+ ldw = (long double) y *ldz;
+ ldpp = __ieee754_expl (ldw);
+ res = (double) (ldpp + ldeps);
+ res1 = (double) (ldpp - ldeps);
+
+ /* Return the result if it is accurate enough. */
+ if (res == res1)
+ return res;
+#endif
+
+ /* Or else, calculate using multiple precision. P = 10 implies accuracy of
+ 240 bits accuracy, since MP_NO has a radix of 2^24. */
+ p = 10;
+ __dbl_mp (x, &mpx, p);
+ __dbl_mp (y, &mpy, p);
+ __dbl_mp (z, &mpz, p);
+
+ /* z = x ^ y
+ log (z) = y * log (x)
+ z = exp (y * log (x)) */
+ __mplog (&mpx, &mpz, p);
+ __mul (&mpy, &mpz, &mpw, p);
+ __mpexp (&mpw, &mpp, p);
+
+ /* Add and subtract EPS to ensure that the result remains unchanged, i.e. we
+ have last bit accuracy. */
+ __add (&mpp, &eps, &mpr, p);
+ __mp_dbl (&mpr, &res, p);
+ __sub (&mpp, &eps, &mpr1, p);
+ __mp_dbl (&mpr1, &res1, p);
+ if (res == res1)
+ {
+ /* Track how often we get to the slow pow code plus
+ its input/output values. */
+ LIBC_PROBE (slowpow_p10, 4, &x, &y, &z, &res);
+ return res;
+ }
+
+ /* If we don't, then we repeat using a higher precision. 768 bits of
+ precision ought to be enough for anybody. */
+ p = 32;
+ __dbl_mp (x, &mpx, p);
+ __dbl_mp (y, &mpy, p);
+ __dbl_mp (z, &mpz, p);
+ __mplog (&mpx, &mpz, p);
+ __mul (&mpy, &mpz, &mpw, p);
+ __mpexp (&mpw, &mpp, p);
+ __mp_dbl (&mpp, &res, p);
+
+ /* Track how often we get to the uber-slow pow code plus
+ its input/output values. */
+ LIBC_PROBE (slowpow_p32, 4, &x, &y, &z, &res);
+
+ return res;
+}
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/t_exp.c b/REORG.TODO/sysdeps/ieee754/dbl-64/t_exp.c
new file mode 100644
index 0000000000..58866e7794
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/t_exp.c
@@ -0,0 +1,435 @@
+/* Accurate tables for exp().
+ Copyright (C) 1998-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Geoffrey Keating <geoffk@ozemail.com.au>
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+/* This table has the property that, for all integers -177 <= i <= 177,
+ exp(i/512.0 + __exp_deltatable[abs(i)]) == __exp_atable[i+177] + r
+ for some -2^-64 < r < 2^-64 (abs(r) < 2^-65 if i <= 0); and that
+ __exp_deltatable[abs(i)] == t * 2^-60
+ for integer t so that abs(t) <= 8847927 * 2^8. */
+
+#define W52 (2.22044605e-16)
+#define W55 (2.77555756e-17)
+#define W58 (3.46944695e-18)
+#define W59 (1.73472348e-18)
+#define W60 (8.67361738e-19)
+const float __exp_deltatable[178] = {
+ 0*W60, 16558714*W60, -10672149*W59, 1441652*W60,
+ -15787963*W55, 462888*W60, 7291806*W60, 1698880*W60,
+ -14375103*W58, -2021016*W60, 728829*W60, -3759654*W60,
+ 3202123*W60, -10916019*W58, -251570*W60, -1043086*W60,
+ 8207536*W60, -409964*W60, -5993931*W60, -475500*W60,
+ 2237522*W60, 324170*W60, -244117*W60, 32077*W60,
+ 123907*W60, -1019734*W60, -143*W60, 813077*W60,
+ 743345*W60, 462461*W60, 629794*W60, 2125066*W60,
+ -2339121*W60, -337951*W60, 9922067*W60, -648704*W60,
+ 149407*W60, -2687209*W60, -631608*W60, 2128280*W60,
+ -4882082*W60, 2001360*W60, 175074*W60, 2923216*W60,
+ -538947*W60, -1212193*W60, -1920926*W60, -1080577*W60,
+ 3690196*W60, 2643367*W60, 2911937*W60, 671455*W60,
+ -1128674*W60, 593282*W60, -5219347*W60, -1941490*W60,
+ 11007953*W60, 239609*W60, -2969658*W60, -1183650*W60,
+ 942998*W60, 699063*W60, 450569*W60, -329250*W60,
+ -7257875*W60, -312436*W60, 51626*W60, 555877*W60,
+ -641761*W60, 1565666*W60, 884327*W60, -10960035*W60,
+ -2004679*W60, -995793*W60, -2229051*W60, -146179*W60,
+ -510327*W60, 1453482*W60, -3778852*W60, -2238056*W60,
+ -4895983*W60, 3398883*W60, -252738*W60, 1230155*W60,
+ 346918*W60, 1109352*W60, 268941*W60, -2930483*W60,
+ -1036263*W60, -1159280*W60, 1328176*W60, 2937642*W60,
+ -9371420*W60, -6902650*W60, -1419134*W60, 1442904*W60,
+ -1319056*W60, -16369*W60, 696555*W60, -279987*W60,
+ -7919763*W60, 252741*W60, 459711*W60, -1709645*W60,
+ 354913*W60, 6025867*W60, -421460*W60, -853103*W60,
+ -338649*W60, 962151*W60, 955965*W60, 784419*W60,
+ -3633653*W60, 2277133*W60, -8847927*W52, 1223028*W60,
+ 5907079*W60, 623167*W60, 5142888*W60, 2599099*W60,
+ 1214280*W60, 4870359*W60, 593349*W60, -57705*W60,
+ 7761209*W60, -5564097*W60, 2051261*W60, 6216869*W60,
+ 4692163*W60, 601691*W60, -5264906*W60, 1077872*W60,
+ -3205949*W60, 1833082*W60, 2081746*W60, -987363*W60,
+ -1049535*W60, 2015244*W60, 874230*W60, 2168259*W60,
+ -1740124*W60, -10068269*W60, -18242*W60, -3013583*W60,
+ 580601*W60, -2547161*W60, -535689*W60, 2220815*W60,
+ 1285067*W60, 2806933*W60, -983086*W60, -1729097*W60,
+ -1162985*W60, -2561904*W60, 801988*W60, 244351*W60,
+ 1441893*W60, -7517981*W60, 271781*W60, -15021588*W60,
+ -2341588*W60, -919198*W60, 1642232*W60, 4771771*W60,
+ -1220099*W60, -3062372*W60, 628624*W60, 1278114*W60,
+ 13083513*W60, -10521925*W60, 3180310*W60, -1659307*W60,
+ 3543773*W60, 2501203*W60, 4151*W60, -340748*W60,
+ -2285625*W60, 2495202*W60
+};
+
+const double __exp_atable[355] /* __attribute__((mode(DF))) */ = {
+ 0.707722561055888932371, /* 0x0.b52d4e46605c27ffd */
+ 0.709106182438804188967, /* 0x0.b587fb96f75097ffb */
+ 0.710492508843861281234, /* 0x0.b5e2d649899167ffd */
+ 0.711881545564593931623, /* 0x0.b63dde74d36bdfffe */
+ 0.713273297897442870573, /* 0x0.b699142f945f87ffc */
+ 0.714667771153751463236, /* 0x0.b6f477909c4ea0001 */
+ 0.716064970655995725059, /* 0x0.b75008aec758f8004 */
+ 0.717464901723956938193, /* 0x0.b7abc7a0eea7e0002 */
+ 0.718867569715736398602, /* 0x0.b807b47e1586c7ff8 */
+ 0.720272979947266023271, /* 0x0.b863cf5d10e380003 */
+ 0.721681137825144314297, /* 0x0.b8c01855195c37ffb */
+ 0.723092048691992950199, /* 0x0.b91c8f7d213740004 */
+ 0.724505717938892290800, /* 0x0.b97934ec5002d0007 */
+ 0.725922150953176470431, /* 0x0.b9d608b9c92ea7ffc */
+ 0.727341353138962865022, /* 0x0.ba330afcc29e98003 */
+ 0.728763329918453162104, /* 0x0.ba903bcc8618b7ffc */
+ 0.730188086709957051568, /* 0x0.baed9b40591ba0000 */
+ 0.731615628948127705309, /* 0x0.bb4b296f931e30002 */
+ 0.733045962086486091436, /* 0x0.bba8e671a05617ff9 */
+ 0.734479091556371366251, /* 0x0.bc06d25dd49568001 */
+ 0.735915022857225542529, /* 0x0.bc64ed4bce8f6fff9 */
+ 0.737353761441304711410, /* 0x0.bcc33752f915d7ff9 */
+ 0.738795312814142124419, /* 0x0.bd21b08af98e78005 */
+ 0.740239682467211168593, /* 0x0.bd80590b65e9a8000 */
+ 0.741686875913991849885, /* 0x0.bddf30ebec4a10000 */
+ 0.743136898669507939299, /* 0x0.be3e38443c84e0007 */
+ 0.744589756269486091620, /* 0x0.be9d6f2c1d32a0002 */
+ 0.746045454254026796384, /* 0x0.befcd5bb59baf8004 */
+ 0.747503998175051087583, /* 0x0.bf5c6c09ca84c0003 */
+ 0.748965393601880857739, /* 0x0.bfbc322f5b18b7ff8 */
+ 0.750429646104262104698, /* 0x0.c01c2843f776fffff */
+ 0.751896761271877989160, /* 0x0.c07c4e5fa18b88002 */
+ 0.753366744698445112140, /* 0x0.c0dca49a5fb18fffd */
+ 0.754839601988627206827, /* 0x0.c13d2b0c444db0005 */
+ 0.756315338768691947122, /* 0x0.c19de1cd798578006 */
+ 0.757793960659406629066, /* 0x0.c1fec8f623723fffd */
+ 0.759275473314173443536, /* 0x0.c25fe09e8a0f47ff8 */
+ 0.760759882363831851927, /* 0x0.c2c128dedc88f8000 */
+ 0.762247193485956486805, /* 0x0.c322a1cf7d6e7fffa */
+ 0.763737412354726363781, /* 0x0.c3844b88cb9347ffc */
+ 0.765230544649828092739, /* 0x0.c3e626232bd8f7ffc */
+ 0.766726596071518051729, /* 0x0.c44831b719bf18002 */
+ 0.768225572321911687194, /* 0x0.c4aa6e5d12d078001 */
+ 0.769727479119219348810, /* 0x0.c50cdc2da64a37ffb */
+ 0.771232322196981678892, /* 0x0.c56f7b41744490001 */
+ 0.772740107296721268087, /* 0x0.c5d24bb1259e70004 */
+ 0.774250840160724651565, /* 0x0.c6354d95640dd0007 */
+ 0.775764526565368872643, /* 0x0.c6988106fec447fff */
+ 0.777281172269557396602, /* 0x0.c6fbe61eb1bd0ffff */
+ 0.778800783068235302750, /* 0x0.c75f7cf560942fffc */
+ 0.780323364758801041312, /* 0x0.c7c345a3f1983fffe */
+ 0.781848923151573727006, /* 0x0.c8274043594cb0002 */
+ 0.783377464064598849602, /* 0x0.c88b6cec94b3b7ff9 */
+ 0.784908993312207869935, /* 0x0.c8efcbb89cba27ffe */
+ 0.786443516765346961618, /* 0x0.c9545cc0a88c70003 */
+ 0.787981040257604625744, /* 0x0.c9b9201dc643bfffa */
+ 0.789521569657452682047, /* 0x0.ca1e15e92a5410007 */
+ 0.791065110849462849192, /* 0x0.ca833e3c1ae510005 */
+ 0.792611669712891875319, /* 0x0.cae8992fd84667ffd */
+ 0.794161252150049179450, /* 0x0.cb4e26ddbc207fff8 */
+ 0.795713864077794763584, /* 0x0.cbb3e75f301b60003 */
+ 0.797269511407239561694, /* 0x0.cc19dacd978cd8002 */
+ 0.798828200086368567220, /* 0x0.cc8001427e55d7ffb */
+ 0.800389937624300440456, /* 0x0.cce65ade24d360006 */
+ 0.801954725261124767840, /* 0x0.cd4ce7a5de839fffb */
+ 0.803522573691593189330, /* 0x0.cdb3a7c79a678fffd */
+ 0.805093487311204114563, /* 0x0.ce1a9b563965ffffc */
+ 0.806667472122675088819, /* 0x0.ce81c26b838db8000 */
+ 0.808244534127439906441, /* 0x0.cee91d213f8428002 */
+ 0.809824679342317166307, /* 0x0.cf50ab9144d92fff9 */
+ 0.811407913793616542005, /* 0x0.cfb86dd5758c2ffff */
+ 0.812994243520784198882, /* 0x0.d0206407c20e20005 */
+ 0.814583674571603966162, /* 0x0.d0888e4223facfff9 */
+ 0.816176213022088536960, /* 0x0.d0f0ec9eb3f7c8002 */
+ 0.817771864936188586101, /* 0x0.d1597f377d6768002 */
+ 0.819370636400374108252, /* 0x0.d1c24626a46eafff8 */
+ 0.820972533518165570298, /* 0x0.d22b41865ff1e7ff9 */
+ 0.822577562404315121269, /* 0x0.d2947170f32ec7ff9 */
+ 0.824185729164559344159, /* 0x0.d2fdd60097795fff8 */
+ 0.825797039949601741075, /* 0x0.d3676f4fb796d0001 */
+ 0.827411500902565544264, /* 0x0.d3d13d78b5f68fffb */
+ 0.829029118181348834154, /* 0x0.d43b40960546d8001 */
+ 0.830649897953322891022, /* 0x0.d4a578c222a058000 */
+ 0.832273846408250750368, /* 0x0.d50fe617a3ba78005 */
+ 0.833900969738858188772, /* 0x0.d57a88b1218e90002 */
+ 0.835531274148056613016, /* 0x0.d5e560a94048f8006 */
+ 0.837164765846411529371, /* 0x0.d6506e1aac8078003 */
+ 0.838801451086016225394, /* 0x0.d6bbb1204074e0001 */
+ 0.840441336100884561780, /* 0x0.d72729d4c28518004 */
+ 0.842084427144139224814, /* 0x0.d792d8530e12b0001 */
+ 0.843730730487052604790, /* 0x0.d7febcb61273e7fff */
+ 0.845380252404570153833, /* 0x0.d86ad718c308dfff9 */
+ 0.847032999194574087728, /* 0x0.d8d727962c69d7fff */
+ 0.848688977161248581090, /* 0x0.d943ae49621ce7ffb */
+ 0.850348192619261200615, /* 0x0.d9b06b4d832ef8005 */
+ 0.852010651900976245816, /* 0x0.da1d5ebdc22220005 */
+ 0.853676361342631029337, /* 0x0.da8a88b555baa0006 */
+ 0.855345327311054837175, /* 0x0.daf7e94f965f98004 */
+ 0.857017556155879489641, /* 0x0.db6580a7c98f7fff8 */
+ 0.858693054267390953857, /* 0x0.dbd34ed9617befff8 */
+ 0.860371828028939855647, /* 0x0.dc4153ffc8b65fff9 */
+ 0.862053883854957292436, /* 0x0.dcaf90368bfca8004 */
+ 0.863739228154875360306, /* 0x0.dd1e0399328d87ffe */
+ 0.865427867361348468455, /* 0x0.dd8cae435d303fff9 */
+ 0.867119807911702289458, /* 0x0.ddfb9050b1cee8006 */
+ 0.868815056264353846599, /* 0x0.de6aa9dced8448001 */
+ 0.870513618890481399881, /* 0x0.ded9fb03db7320006 */
+ 0.872215502247877139094, /* 0x0.df4983e1380657ff8 */
+ 0.873920712852848668986, /* 0x0.dfb94490ffff77ffd */
+ 0.875629257204025623884, /* 0x0.e0293d2f1cb01fff9 */
+ 0.877341141814212965880, /* 0x0.e0996dd786fff0007 */
+ 0.879056373217612985183, /* 0x0.e109d6a64f5d57ffc */
+ 0.880774957955916648615, /* 0x0.e17a77b78e72a7ffe */
+ 0.882496902590150900078, /* 0x0.e1eb5127722cc7ff8 */
+ 0.884222213673356738383, /* 0x0.e25c63121fb0c8006 */
+ 0.885950897802399772740, /* 0x0.e2cdad93ec5340003 */
+ 0.887682961567391237685, /* 0x0.e33f30c925fb97ffb */
+ 0.889418411575228162725, /* 0x0.e3b0ecce2d05ffff9 */
+ 0.891157254447957902797, /* 0x0.e422e1bf727718006 */
+ 0.892899496816652704641, /* 0x0.e4950fb9713fc7ffe */
+ 0.894645145323828439008, /* 0x0.e50776d8b0e60fff8 */
+ 0.896394206626591749641, /* 0x0.e57a1739c8fadfffc */
+ 0.898146687421414902124, /* 0x0.e5ecf0f97c5798007 */
+ 0.899902594367530173098, /* 0x0.e660043464e378005 */
+ 0.901661934163603406867, /* 0x0.e6d3510747e150006 */
+ 0.903424713533971135418, /* 0x0.e746d78f06cd97ffd */
+ 0.905190939194458810123, /* 0x0.e7ba97e879c91fffc */
+ 0.906960617885092856864, /* 0x0.e82e92309390b0007 */
+ 0.908733756358986566306, /* 0x0.e8a2c6845544afffa */
+ 0.910510361377119825629, /* 0x0.e9173500c8abc7ff8 */
+ 0.912290439722343249336, /* 0x0.e98bddc30f98b0002 */
+ 0.914073998177417412765, /* 0x0.ea00c0e84bc4c7fff */
+ 0.915861043547953501680, /* 0x0.ea75de8db8094fffe */
+ 0.917651582652244779397, /* 0x0.eaeb36d09d3137ffe */
+ 0.919445622318405764159, /* 0x0.eb60c9ce4ed3dffff */
+ 0.921243169397334638073, /* 0x0.ebd697a43995b0007 */
+ 0.923044230737526172328, /* 0x0.ec4ca06fc7768fffa */
+ 0.924848813220121135342, /* 0x0.ecc2e44e865b6fffb */
+ 0.926656923710931002014, /* 0x0.ed39635df34e70006 */
+ 0.928468569126343790092, /* 0x0.edb01dbbc2f5b7ffa */
+ 0.930283756368834757725, /* 0x0.ee2713859aab57ffa */
+ 0.932102492359406786818, /* 0x0.ee9e44d9342870004 */
+ 0.933924784042873379360, /* 0x0.ef15b1d4635438005 */
+ 0.935750638358567643520, /* 0x0.ef8d5a94f60f50007 */
+ 0.937580062297704630580, /* 0x0.f0053f38f345cffff */
+ 0.939413062815381727516, /* 0x0.f07d5fde3a2d98001 */
+ 0.941249646905368053689, /* 0x0.f0f5bca2d481a8004 */
+ 0.943089821583810716806, /* 0x0.f16e55a4e497d7ffe */
+ 0.944933593864477061592, /* 0x0.f1e72b028a2827ffb */
+ 0.946780970781518460559, /* 0x0.f2603cd9fb5430001 */
+ 0.948631959382661205081, /* 0x0.f2d98b497d2a87ff9 */
+ 0.950486566729423554277, /* 0x0.f353166f63e3dffff */
+ 0.952344799896018723290, /* 0x0.f3ccde6a11ae37ffe */
+ 0.954206665969085765512, /* 0x0.f446e357f66120000 */
+ 0.956072172053890279009, /* 0x0.f4c12557964f0fff9 */
+ 0.957941325265908139014, /* 0x0.f53ba48781046fffb */
+ 0.959814132734539637840, /* 0x0.f5b66106555d07ffa */
+ 0.961690601603558903308, /* 0x0.f6315af2c2027fffc */
+ 0.963570739036113010927, /* 0x0.f6ac926b8aeb80004 */
+ 0.965454552202857141381, /* 0x0.f728078f7c5008002 */
+ 0.967342048278315158608, /* 0x0.f7a3ba7d66a908001 */
+ 0.969233234469444204768, /* 0x0.f81fab543e1897ffb */
+ 0.971128118008140250896, /* 0x0.f89bda33122c78007 */
+ 0.973026706099345495256, /* 0x0.f9184738d4cf97ff8 */
+ 0.974929006031422851235, /* 0x0.f994f284d3a5c0008 */
+ 0.976835024947348973265, /* 0x0.fa11dc35bc7820002 */
+ 0.978744770239899142285, /* 0x0.fa8f046b4fb7f8007 */
+ 0.980658249138918636210, /* 0x0.fb0c6b449ab1cfff9 */
+ 0.982575468959622777535, /* 0x0.fb8a10e1088fb7ffa */
+ 0.984496437054508843888, /* 0x0.fc07f5602d79afffc */
+ 0.986421160608523028820, /* 0x0.fc8618e0e55e47ffb */
+ 0.988349647107594098099, /* 0x0.fd047b83571b1fffa */
+ 0.990281903873210800357, /* 0x0.fd831d66f4c018002 */
+ 0.992217938695037382475, /* 0x0.fe01fead3320bfff8 */
+ 0.994157757657894713987, /* 0x0.fe811f703491e8006 */
+ 0.996101369488558541238, /* 0x0.ff007fd5744490005 */
+ 0.998048781093141101932, /* 0x0.ff801ffa9b9280007 */
+ 1.000000000000000000000, /* 0x1.00000000000000000 */
+ 1.001955033605393285965, /* 0x1.0080200565d29ffff */
+ 1.003913889319761887310, /* 0x1.0100802aa0e80fff0 */
+ 1.005876574715736104818, /* 0x1.01812090377240007 */
+ 1.007843096764807100351, /* 0x1.020201541aad7fff6 */
+ 1.009813464316352327214, /* 0x1.0283229c4c9820007 */
+ 1.011787683565730677817, /* 0x1.030484836910a000e */
+ 1.013765762469146736174, /* 0x1.0386272b9c077fffe */
+ 1.015747708536026694351, /* 0x1.04080ab526304fff0 */
+ 1.017733529475172815584, /* 0x1.048a2f412375ffff0 */
+ 1.019723232714418781378, /* 0x1.050c94ef7ad5e000a */
+ 1.021716825883923762690, /* 0x1.058f3be0f1c2d0004 */
+ 1.023714316605201180057, /* 0x1.06122436442e2000e */
+ 1.025715712440059545995, /* 0x1.06954e0fec63afff2 */
+ 1.027721021151397406936, /* 0x1.0718b98f41c92fff6 */
+ 1.029730250269221158939, /* 0x1.079c66d49bb2ffff1 */
+ 1.031743407506447551857, /* 0x1.082056011a9230009 */
+ 1.033760500517691527387, /* 0x1.08a487359ebd50002 */
+ 1.035781537016238873464, /* 0x1.0928fa93490d4fff3 */
+ 1.037806524719013578963, /* 0x1.09adb03b3e5b3000d */
+ 1.039835471338248051878, /* 0x1.0a32a84e9e5760004 */
+ 1.041868384612101516848, /* 0x1.0ab7e2eea5340ffff */
+ 1.043905272300907460835, /* 0x1.0b3d603ca784f0009 */
+ 1.045946142174331239262, /* 0x1.0bc3205a042060000 */
+ 1.047991002016745332165, /* 0x1.0c4923682a086fffe */
+ 1.050039859627715177527, /* 0x1.0ccf698898f3a000d */
+ 1.052092722826109660856, /* 0x1.0d55f2dce5d1dfffb */
+ 1.054149599440827866881, /* 0x1.0ddcbf86b09a5fff6 */
+ 1.056210497317612961855, /* 0x1.0e63cfa7abc97fffd */
+ 1.058275424318780855142, /* 0x1.0eeb23619c146fffb */
+ 1.060344388322010722446, /* 0x1.0f72bad65714bffff */
+ 1.062417397220589476718, /* 0x1.0ffa9627c38d30004 */
+ 1.064494458915699715017, /* 0x1.1082b577d0eef0003 */
+ 1.066575581342167566880, /* 0x1.110b18e893a90000a */
+ 1.068660772440545025953, /* 0x1.1193c09c267610006 */
+ 1.070750040138235936705, /* 0x1.121cacb4959befff6 */
+ 1.072843392435016474095, /* 0x1.12a5dd543cf36ffff */
+ 1.074940837302467588937, /* 0x1.132f529d59552000b */
+ 1.077042382749654914030, /* 0x1.13b90cb250d08fff5 */
+ 1.079148036789447484528, /* 0x1.14430bb58da3dfff9 */
+ 1.081257807444460983297, /* 0x1.14cd4fc984c4a000e */
+ 1.083371702785017154417, /* 0x1.1557d910df9c7000e */
+ 1.085489730853784307038, /* 0x1.15e2a7ae292d30002 */
+ 1.087611899742884524772, /* 0x1.166dbbc422d8c0004 */
+ 1.089738217537583819804, /* 0x1.16f9157586772ffff */
+ 1.091868692357631731528, /* 0x1.1784b4e533cacfff0 */
+ 1.094003332327482702577, /* 0x1.18109a360fc23fff2 */
+ 1.096142145591650907149, /* 0x1.189cc58b155a70008 */
+ 1.098285140311341168136, /* 0x1.1929370751ea50002 */
+ 1.100432324652149906842, /* 0x1.19b5eecdd79cefff0 */
+ 1.102583706811727015711, /* 0x1.1a42ed01dbdba000e */
+ 1.104739294993289488947, /* 0x1.1ad031c69a2eafff0 */
+ 1.106899097422573863281, /* 0x1.1b5dbd3f66e120003 */
+ 1.109063122341542140286, /* 0x1.1beb8f8fa8150000b */
+ 1.111231377994659874592, /* 0x1.1c79a8dac6ad0fff4 */
+ 1.113403872669181282605, /* 0x1.1d0809445a97ffffc */
+ 1.115580614653132185460, /* 0x1.1d96b0effc9db000e */
+ 1.117761612217810673898, /* 0x1.1e25a001332190000 */
+ 1.119946873713312474002, /* 0x1.1eb4d69bdb2a9fff1 */
+ 1.122136407473298902480, /* 0x1.1f4454e3bfae00006 */
+ 1.124330221845670330058, /* 0x1.1fd41afcbb48bfff8 */
+ 1.126528325196519908506, /* 0x1.2064290abc98c0001 */
+ 1.128730725913251964394, /* 0x1.20f47f31c9aa7000f */
+ 1.130937432396844410880, /* 0x1.21851d95f776dfff0 */
+ 1.133148453059692917203, /* 0x1.2216045b6784efffa */
+ 1.135363796355857157764, /* 0x1.22a733a6692ae0004 */
+ 1.137583470716100553249, /* 0x1.2338ab9b3221a0004 */
+ 1.139807484614418608939, /* 0x1.23ca6c5e27aadfff7 */
+ 1.142035846532929888057, /* 0x1.245c7613b7f6c0004 */
+ 1.144268564977221958089, /* 0x1.24eec8e06b035000c */
+ 1.146505648458203463465, /* 0x1.258164e8cea85fff8 */
+ 1.148747105501412235671, /* 0x1.26144a5180d380009 */
+ 1.150992944689175123667, /* 0x1.26a7793f5de2efffa */
+ 1.153243174560058870217, /* 0x1.273af1d712179000d */
+ 1.155497803703682491111, /* 0x1.27ceb43d81d42fff1 */
+ 1.157756840726344771440, /* 0x1.2862c097a3d29000c */
+ 1.160020294239811677834, /* 0x1.28f7170a74cf4fff1 */
+ 1.162288172883275239058, /* 0x1.298bb7bb0faed0004 */
+ 1.164560485298402170388, /* 0x1.2a20a2ce920dffff4 */
+ 1.166837240167474476460, /* 0x1.2ab5d86a4631ffff6 */
+ 1.169118446164539637555, /* 0x1.2b4b58b36d5220009 */
+ 1.171404112007080167155, /* 0x1.2be123cf786790002 */
+ 1.173694246390975415341, /* 0x1.2c7739e3c0aac000d */
+ 1.175988858069749065617, /* 0x1.2d0d9b15deb58fff6 */
+ 1.178287955789017793514, /* 0x1.2da4478b627040002 */
+ 1.180591548323240091978, /* 0x1.2e3b3f69fb794fffc */
+ 1.182899644456603782686, /* 0x1.2ed282d76421d0004 */
+ 1.185212252993012693694, /* 0x1.2f6a11f96c685fff3 */
+ 1.187529382762033236513, /* 0x1.3001ecf60082ffffa */
+ 1.189851042595508889847, /* 0x1.309a13f30f28a0004 */
+ 1.192177241354644978669, /* 0x1.31328716a758cfff7 */
+ 1.194507987909589896687, /* 0x1.31cb4686e1e85fffb */
+ 1.196843291137896336843, /* 0x1.32645269dfd04000a */
+ 1.199183159977805113226, /* 0x1.32fdaae604c39000f */
+ 1.201527603343041317132, /* 0x1.339750219980dfff3 */
+ 1.203876630171082595692, /* 0x1.3431424300e480007 */
+ 1.206230249419600664189, /* 0x1.34cb8170b3fee000e */
+ 1.208588470077065268869, /* 0x1.35660dd14dbd4fffc */
+ 1.210951301134513435915, /* 0x1.3600e78b6bdfc0005 */
+ 1.213318751604272271958, /* 0x1.369c0ec5c38ebfff2 */
+ 1.215690830512196507537, /* 0x1.373783a718d29000f */
+ 1.218067546930756250870, /* 0x1.37d3465662f480007 */
+ 1.220448909901335365929, /* 0x1.386f56fa770fe0008 */
+ 1.222834928513994334780, /* 0x1.390bb5ba5fc540004 */
+ 1.225225611877684750397, /* 0x1.39a862bd3c7a8fff3 */
+ 1.227620969111500981433, /* 0x1.3a455e2a37bcafffd */
+ 1.230021009336254911271, /* 0x1.3ae2a8287dfbefff6 */
+ 1.232425741726685064472, /* 0x1.3b8040df76f39fffa */
+ 1.234835175450728295084, /* 0x1.3c1e287682e48fff1 */
+ 1.237249319699482263931, /* 0x1.3cbc5f151b86bfff8 */
+ 1.239668183679933477545, /* 0x1.3d5ae4e2cc0a8000f */
+ 1.242091776620540377629, /* 0x1.3df9ba07373bf0006 */
+ 1.244520107762172811399, /* 0x1.3e98deaa0d8cafffe */
+ 1.246953186383919165383, /* 0x1.3f3852f32973efff0 */
+ 1.249391019292643401078, /* 0x1.3fd816ffc72b90001 */
+ 1.251833623164381181797, /* 0x1.40782b17863250005 */
+ 1.254280999953110153911, /* 0x1.41188f42caf400000 */
+ 1.256733161434815393410, /* 0x1.41b943b42945bfffd */
+ 1.259190116985283935980, /* 0x1.425a4893e5f10000a */
+ 1.261651875958665236542, /* 0x1.42fb9e0a2df4c0009 */
+ 1.264118447754797758244, /* 0x1.439d443f608c4fff9 */
+ 1.266589841787181258708, /* 0x1.443f3b5bebf850008 */
+ 1.269066067469190262045, /* 0x1.44e183883e561fff7 */
+ 1.271547134259576328224, /* 0x1.45841cecf7a7a0001 */
+ 1.274033051628237434048, /* 0x1.462707b2c43020009 */
+ 1.276523829025464573684, /* 0x1.46ca44023aa410007 */
+ 1.279019475999373156531, /* 0x1.476dd2045d46ffff0 */
+ 1.281520002043128991825, /* 0x1.4811b1e1f1f19000b */
+ 1.284025416692967214122, /* 0x1.48b5e3c3edd74fff4 */
+ 1.286535729509738823464, /* 0x1.495a67d3613c8fff7 */
+ 1.289050950070396384145, /* 0x1.49ff3e396e19d000b */
+ 1.291571087985403654081, /* 0x1.4aa4671f5b401fff1 */
+ 1.294096152842774794011, /* 0x1.4b49e2ae56d19000d */
+ 1.296626154297237043484, /* 0x1.4befb10fd84a3fff4 */
+ 1.299161101984141142272, /* 0x1.4c95d26d41d84fff8 */
+ 1.301701005575179204100, /* 0x1.4d3c46f01d9f0fff3 */
+ 1.304245874766450485904, /* 0x1.4de30ec21097d0003 */
+ 1.306795719266019562007, /* 0x1.4e8a2a0ccce3d0002 */
+ 1.309350548792467483458, /* 0x1.4f3198fa10346fff5 */
+ 1.311910373099227200545, /* 0x1.4fd95bb3be8cffffd */
+ 1.314475201942565174546, /* 0x1.50817263bf0e5fffb */
+ 1.317045045107389400535, /* 0x1.5129dd3418575000e */
+ 1.319619912422941299109, /* 0x1.51d29c4f01c54ffff */
+ 1.322199813675649204855, /* 0x1.527bafde83a310009 */
+ 1.324784758729532718739, /* 0x1.5325180cfb8b3fffd */
+ 1.327374757430096474625, /* 0x1.53ced504b2bd0fff4 */
+ 1.329969819671041886272, /* 0x1.5478e6f02775e0001 */
+ 1.332569955346704748651, /* 0x1.55234df9d8a59fff8 */
+ 1.335175174370685002822, /* 0x1.55ce0a4c5a6a9fff6 */
+ 1.337785486688218616860, /* 0x1.56791c1263abefff7 */
+ 1.340400902247843806217, /* 0x1.57248376aef21fffa */
+ 1.343021431036279800211, /* 0x1.57d040a420c0bfff3 */
+ 1.345647083048053138662, /* 0x1.587c53c5a630f0002 */
+ 1.348277868295411074918, /* 0x1.5928bd063fd7bfff9 */
+ 1.350913796821875845231, /* 0x1.59d57c9110ad60006 */
+ 1.353554878672557082439, /* 0x1.5a8292913d68cfffc */
+ 1.356201123929036356254, /* 0x1.5b2fff3212db00007 */
+ 1.358852542671913132777, /* 0x1.5bddc29edcc06fff3 */
+ 1.361509145047255398051, /* 0x1.5c8bdd032ed16000f */
+ 1.364170941142184734180, /* 0x1.5d3a4e8a5bf61fff4 */
+ 1.366837941171020309735, /* 0x1.5de9176042f1effff */
+ 1.369510155261156381121, /* 0x1.5e9837b062f4e0005 */
+ 1.372187593620959988833, /* 0x1.5f47afa69436cfff1 */
+ 1.374870266463378287715, /* 0x1.5ff77f6eb3f8cfffd */
+ 1.377558184010425845733, /* 0x1.60a7a734a9742fff9 */
+ 1.380251356531521533853, /* 0x1.6158272490016000c */
+ 1.382949794301995272203, /* 0x1.6208ff6a8978a000f */
+ 1.385653507605306700170, /* 0x1.62ba3032c0a280004 */
+ 1.388362506772382154503, /* 0x1.636bb9a994784000f */
+ 1.391076802081129493127, /* 0x1.641d9bfb29a7bfff6 */
+ 1.393796403973427855412, /* 0x1.64cfd7545928b0002 */
+ 1.396521322756352656542, /* 0x1.65826be167badfff8 */
+ 1.399251568859207761660, /* 0x1.663559cf20826000c */
+ 1.401987152677323100733, /* 0x1.66e8a14a29486fffc */
+ 1.404728084651919228815, /* 0x1.679c427f5a4b6000b */
+ 1.407474375243217723560, /* 0x1.68503d9ba0add000f */
+ 1.410226034922914983815, /* 0x1.690492cbf6303fff9 */
+ 1.412983074197955213304, /* 0x1.69b9423d7b548fff6 */
+};
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/t_exp2.h b/REORG.TODO/sysdeps/ieee754/dbl-64/t_exp2.h
new file mode 100644
index 0000000000..1fd73338cf
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/t_exp2.h
@@ -0,0 +1,585 @@
+/* These values are accurate to 52+12 bits when represented as
+ a double. */
+static const double exp2_accuratetable[512] = {
+0.707106781187802013759 /* 0x0.b504f333fb3f80007 */,
+0.708064712808760599040 /* 0x0.b543baa0f71b38000 */,
+0.709023942160304065938 /* 0x0.b58297d3a8d518002 */,
+0.709984470998547667624 /* 0x0.b5c18ad39b4ba0001 */,
+0.710946301084324217006 /* 0x0.b60093a85e8d30001 */,
+0.711909434180505784637 /* 0x0.b63fb25984e628005 */,
+0.712873872052760648733 /* 0x0.b67ee6eea3b5f8003 */,
+0.713839616467838999908 /* 0x0.b6be316f518c98001 */,
+0.714806669195984345523 /* 0x0.b6fd91e328d148007 */,
+0.715775032009894562898 /* 0x0.b73d0851c69e20002 */,
+0.716744706683768884058 /* 0x0.b77c94c2c9b3d0003 */,
+0.717715694995770148178 /* 0x0.b7bc373dd52eb0003 */,
+0.718687998724665488852 /* 0x0.b7fbefca8cd530004 */,
+0.719661619652575468291 /* 0x0.b83bbe70981da8001 */,
+0.720636559564428180758 /* 0x0.b87ba337a194b0006 */,
+0.721612820246623098989 /* 0x0.b8bb9e27556508004 */,
+0.722590403488338473025 /* 0x0.b8fbaf4762c798006 */,
+0.723569311081411870036 /* 0x0.b93bd69f7be1d0000 */,
+0.724549544820974333906 /* 0x0.b97c1437567828007 */,
+0.725531106502312561633 /* 0x0.b9bc6816a87ae8002 */,
+0.726513997924421062181 /* 0x0.b9fcd2452bee00000 */,
+0.727498220889519875430 /* 0x0.ba3d52ca9e6148002 */,
+0.728483777200401694265 /* 0x0.ba7de9aebe05c8003 */,
+0.729470668664712662563 /* 0x0.babe96f94e62a8002 */,
+0.730458897090379144517 /* 0x0.baff5ab2134df0004 */,
+0.731448464287988597833 /* 0x0.bb4034e0d38ab0000 */,
+0.732439372072965166897 /* 0x0.bb81258d5b2d60001 */,
+0.733431622260458326859 /* 0x0.bbc22cbf75fd28001 */,
+0.734425216668725511232 /* 0x0.bc034a7ef32c00001 */,
+0.735420157118880535324 /* 0x0.bc447ed3a50fe0005 */,
+0.736416445434497690674 /* 0x0.bc85c9c560b350001 */,
+0.737414083433310718618 /* 0x0.bcc72b5bf4b4e0000 */,
+0.738413072966152328496 /* 0x0.bd08a39f5417a8007 */,
+0.739413415848264365956 /* 0x0.bd4a32974abcd0002 */,
+0.740415113911250699637 /* 0x0.bd8bd84bb68300002 */,
+0.741418168994518067562 /* 0x0.bdcd94c47ddd30003 */,
+0.742422582936659858376 /* 0x0.be0f6809865968006 */,
+0.743428357577745613238 /* 0x0.be515222b72530003 */,
+0.744435494762383687126 /* 0x0.be935317fc6ba0002 */,
+0.745443996335090397492 /* 0x0.bed56af1423de8001 */,
+0.746453864145572798553 /* 0x0.bf1799b67a6248007 */,
+0.747465100043933849969 /* 0x0.bf59df6f970e70002 */,
+0.748477705883256683178 /* 0x0.bf9c3c248dbee8001 */,
+0.749491683518965001732 /* 0x0.bfdeafdd568308000 */,
+0.750507034813367890373 /* 0x0.c0213aa1f0fc38004 */,
+0.751523761622240105153 /* 0x0.c063dc7a559ca0003 */,
+0.752541865811731880422 /* 0x0.c0a6956e883ed8000 */,
+0.753561349247157341600 /* 0x0.c0e965868bd220006 */,
+0.754582213796583967110 /* 0x0.c12c4cca664cb8002 */,
+0.755604461332336940791 /* 0x0.c16f4b42225350006 */,
+0.756628093726406381068 /* 0x0.c1b260f5ca2c48002 */,
+0.757653112855631305506 /* 0x0.c1f58ded6d72d8001 */,
+0.758679520599333412360 /* 0x0.c238d2311e7d08001 */,
+0.759707318837184453227 /* 0x0.c27c2dc8f00368005 */,
+0.760736509456435783249 /* 0x0.c2bfa0bcfd1400000 */,
+0.761767094336480043995 /* 0x0.c3032b155818d0000 */,
+0.762799075372231349951 /* 0x0.c346ccda248cc0001 */,
+0.763832454453522768941 /* 0x0.c38a8613805488005 */,
+0.764867233473625618441 /* 0x0.c3ce56c98d1ca8005 */,
+0.765903414329434539816 /* 0x0.c4123f04708d80002 */,
+0.766940998920452976510 /* 0x0.c4563ecc532dc0001 */,
+0.767979989148100838946 /* 0x0.c49a56295f9f88006 */,
+0.769020386915772125040 /* 0x0.c4de8523c2b0a0001 */,
+0.770062194131770905170 /* 0x0.c522cbc3ae94e0003 */,
+0.771105412703856241146 /* 0x0.c5672a1154e6b8004 */,
+0.772150044545352520777 /* 0x0.c5aba014ed5f18003 */,
+0.773196091570364285606 /* 0x0.c5f02dd6b09288003 */,
+0.774243555696622731700 /* 0x0.c634d35edb1260003 */,
+0.775292438842697939641 /* 0x0.c67990b5aa5c18004 */,
+0.776342742931542928455 /* 0x0.c6be65e360bed8000 */,
+0.777394469888802008854 /* 0x0.c70352f0437f50004 */,
+0.778447621641124243320 /* 0x0.c74857e498fd00006 */,
+0.779502200118583399303 /* 0x0.c78d74c8ab5b60000 */,
+0.780558207255445668515 /* 0x0.c7d2a9a4c959f8000 */,
+0.781615644985491186966 /* 0x0.c817f681412f80002 */,
+0.782674515247667956808 /* 0x0.c85d5b6666c150006 */,
+0.783734819983036512536 /* 0x0.c8a2d85c904760003 */,
+0.784796561133562109454 /* 0x0.c8e86d6c14f850002 */,
+0.785859740645942328471 /* 0x0.c92e1a9d513ec8002 */,
+0.786924360469767103536 /* 0x0.c973dff8a4b390007 */,
+0.787990422552312885808 /* 0x0.c9b9bd866c6440007 */,
+0.789057928854407064640 /* 0x0.c9ffb34f1444b0001 */,
+0.790126881326406182996 /* 0x0.ca45c15afcc570001 */,
+0.791197281930050233534 /* 0x0.ca8be7b292db38000 */,
+0.792269132620954885659 /* 0x0.cad2265e3cbee8000 */,
+0.793342435380726906957 /* 0x0.cb187d667d3d38006 */,
+0.794417192158282659010 /* 0x0.cb5eecd3b33158006 */,
+0.795493404931386649540 /* 0x0.cba574ae5d2e80001 */,
+0.796571075671306805268 /* 0x0.cbec14fef2a348004 */,
+0.797650206352955137846 /* 0x0.cc32cdcdef0000000 */,
+0.798730798954342069432 /* 0x0.cc799f23d11d18000 */,
+0.799812855456121796232 /* 0x0.ccc089091abb28004 */,
+0.800896377841454287795 /* 0x0.cd078b86505c18003 */,
+0.801981368096190028208 /* 0x0.cd4ea6a3f97720007 */,
+0.803067828208752554378 /* 0x0.cd95da6aa057b8007 */,
+0.804155760170129796375 /* 0x0.cddd26e2d21b28001 */,
+0.805245165974338261710 /* 0x0.ce248c151f3330001 */,
+0.806336047619038653883 /* 0x0.ce6c0a0a1c1350001 */,
+0.807428407102107836855 /* 0x0.ceb3a0ca5d6be0006 */,
+0.808522246427078927792 /* 0x0.cefb505e7e2550007 */,
+0.809617567597010201484 /* 0x0.cf4318cf18a268002 */,
+0.810714372621179513182 /* 0x0.cf8afa24ce1c98004 */,
+0.811812663508675536069 /* 0x0.cfd2f4683f9810005 */,
+0.812912442272482604912 /* 0x0.d01b07a2126188003 */,
+0.814013710929394895825 /* 0x0.d06333daeff618001 */,
+0.815116471495287542325 /* 0x0.d0ab791b80d028006 */,
+0.816220725993571205593 /* 0x0.d0f3d76c75b330000 */,
+0.817326476447408967199 /* 0x0.d13c4ed67f1cf8000 */,
+0.818433724883006474832 /* 0x0.d184df6250e3b0001 */,
+0.819542473330909460055 /* 0x0.d1cd8918a3a328004 */,
+0.820652723822034690935 /* 0x0.d2164c02305fa0002 */,
+0.821764478391968422618 /* 0x0.d25f2827b53fb0005 */,
+0.822877739077315761840 /* 0x0.d2a81d91f188b8000 */,
+0.823992507918612782109 /* 0x0.d2f12c49a8d290005 */,
+0.825108786960634610365 /* 0x0.d33a5457a35e40003 */,
+0.826226578247117093869 /* 0x0.d38395c4a84848007 */,
+0.827345883828319528258 /* 0x0.d3ccf09985d958004 */,
+0.828466705754248966560 /* 0x0.d41664df0a1320005 */,
+0.829589046080638992111 /* 0x0.d45ff29e094330000 */,
+0.830712906863802391671 /* 0x0.d4a999df585a20005 */,
+0.831838290163696481037 /* 0x0.d4f35aabd04a60006 */,
+0.832965198041969556729 /* 0x0.d53d350c4be258002 */,
+0.834093632565442222342 /* 0x0.d5872909aba050007 */,
+0.835223595802037643865 /* 0x0.d5d136acd138e8006 */,
+0.836355089820669306292 /* 0x0.d61b5dfe9f7780004 */,
+0.837488116698010487424 /* 0x0.d6659f0801afa8005 */,
+0.838622678508982644113 /* 0x0.d6aff9d1e147d8004 */,
+0.839758777333464490056 /* 0x0.d6fa6e652d19e0000 */,
+0.840896415254110962690 /* 0x0.d744fccad70d00003 */,
+0.842035594355151628676 /* 0x0.d78fa50bd2c3b0000 */,
+0.843176316724478125433 /* 0x0.d7da673117e730007 */,
+0.844318584453106590905 /* 0x0.d8254343a19038003 */,
+0.845462399634695271912 /* 0x0.d870394c6dbf30003 */,
+0.846607764365415071965 /* 0x0.d8bb49547d37c0004 */,
+0.847754680744707056494 /* 0x0.d9067364d45608003 */,
+0.848903150873708822763 /* 0x0.d951b7867953b0006 */,
+0.850053176859071113491 /* 0x0.d99d15c2787a30006 */,
+0.851204760807439786431 /* 0x0.d9e88e21de11a0003 */,
+0.852357904828824897169 /* 0x0.da3420adba1508003 */,
+0.853512611037803181642 /* 0x0.da7fcd6f2184d8005 */,
+0.854668881550406100980 /* 0x0.dacb946f2afaf8000 */,
+0.855826718478671755185 /* 0x0.db1775b6e8ad48000 */,
+0.856986123964844970247 /* 0x0.db63714f8e0818006 */,
+0.858147100114499461478 /* 0x0.dbaf87422625b8000 */,
+0.859309649060962410524 /* 0x0.dbfbb797daa460002 */,
+0.860473772936213743282 /* 0x0.dc480259d3a710001 */,
+0.861639473872910177676 /* 0x0.dc9467913a0f48006 */,
+0.862806754008130227807 /* 0x0.dce0e7473b9b28003 */,
+0.863975615481124226159 /* 0x0.dd2d8185086c20006 */,
+0.865146060433749419813 /* 0x0.dd7a3653d38168005 */,
+0.866318091005120138881 /* 0x0.ddc705bcccd628000 */,
+0.867491709362415264210 /* 0x0.de13efc9434100004 */,
+0.868666917636779056818 /* 0x0.de60f4825df9b8005 */,
+0.869843717989716047624 /* 0x0.deae13f16599c0003 */,
+0.871022112578215268471 /* 0x0.defb4e1f9dc388002 */,
+0.872202103559697183859 /* 0x0.df48a3164a92f0001 */,
+0.873383693097737778847 /* 0x0.df9612deb6e878007 */,
+0.874566883362160263365 /* 0x0.dfe39d82348310001 */,
+0.875751676517234511901 /* 0x0.e031430a0f0688000 */,
+0.876938074732511840819 /* 0x0.e07f037f97e548001 */,
+0.878126080186539592654 /* 0x0.e0ccdeec2a75e0006 */,
+0.879315695055312818168 /* 0x0.e11ad5591f4078001 */,
+0.880506921518618312932 /* 0x0.e168e6cfd2f880004 */,
+0.881699761760385225541 /* 0x0.e1b71359a6df60003 */,
+0.882894217964411143207 /* 0x0.e2055afffc1178000 */,
+0.884090292325693805080 /* 0x0.e253bdcc3ffbb8001 */,
+0.885287987031581180559 /* 0x0.e2a23bc7d7a1d8002 */,
+0.886487304278189114386 /* 0x0.e2f0d4fc31ab80004 */,
+0.887688246263368285778 /* 0x0.e33f8972bea8a8005 */,
+0.888890815189881999840 /* 0x0.e38e5934f49010007 */,
+0.890095013257492739835 /* 0x0.e3dd444c460bd0007 */,
+0.891300842677948068626 /* 0x0.e42c4ac232f380000 */,
+0.892508305659222567226 /* 0x0.e47b6ca036f8b8005 */,
+0.893717404414979710310 /* 0x0.e4caa9efd40e58002 */,
+0.894928141160697743242 /* 0x0.e51a02ba8e2610007 */,
+0.896140518115016826430 /* 0x0.e5697709ecab90000 */,
+0.897354537501434679237 /* 0x0.e5b906e77c61d0006 */,
+0.898570201543732793877 /* 0x0.e608b25cca5ba8005 */,
+0.899787512470129891014 /* 0x0.e6587973688ce8002 */,
+0.901006472512270728537 /* 0x0.e6a85c34ecadb8000 */,
+0.902227083902570559127 /* 0x0.e6f85aaaed4f20006 */,
+0.903449348881299796343 /* 0x0.e74874df09a530003 */,
+0.904673269686823378091 /* 0x0.e798aadadecba0007 */,
+0.905898848559668845585 /* 0x0.e7e8fca80c3ee0001 */,
+0.907126087750156795426 /* 0x0.e8396a503c3fe0005 */,
+0.908354989505901100354 /* 0x0.e889f3dd1615b0002 */,
+0.909585556079328783087 /* 0x0.e8da9958465228007 */,
+0.910817789726044213523 /* 0x0.e92b5acb7d0578001 */,
+0.912051692703457872481 /* 0x0.e97c38406c3c30003 */,
+0.913287267274154990210 /* 0x0.e9cd31c0cbb370001 */,
+0.914524515702244578108 /* 0x0.ea1e475654d540000 */,
+0.915763440256158633982 /* 0x0.ea6f790ac5cc78001 */,
+0.917004043205012497909 /* 0x0.eac0c6e7dd8448007 */,
+0.918246326823137892807 /* 0x0.eb1230f760a428007 */,
+0.919490293387826285200 /* 0x0.eb63b7431714a8007 */,
+0.920735945178816406225 /* 0x0.ebb559d4cb6f30007 */,
+0.921983284479243714322 /* 0x0.ec0718b64c0940002 */,
+0.923232313574974705626 /* 0x0.ec58f3f16a3910002 */,
+0.924483034755387955725 /* 0x0.ecaaeb8ffb3168005 */,
+0.925735450311948926408 /* 0x0.ecfcff9bd67078000 */,
+0.926989562542820610982 /* 0x0.ed4f301edad1a0007 */,
+0.928245373740515189457 /* 0x0.eda17d22e0f9b0001 */,
+0.929502886213858126045 /* 0x0.edf3e6b1d37d40001 */,
+0.930762102264245716494 /* 0x0.ee466cd594c5c8005 */,
+0.932023024199046146183 /* 0x0.ee990f980dcdb0005 */,
+0.933285654329454095216 /* 0x0.eeebcf032bc470007 */,
+0.934549994971191289044 /* 0x0.ef3eab20e0d3c0001 */,
+0.935816048439005676599 /* 0x0.ef91a3fb1e1340004 */,
+0.937083817055075818404 /* 0x0.efe4b99bdcc618006 */,
+0.938353303143720007819 /* 0x0.f037ec0d1889b8000 */,
+0.939624509028518128972 /* 0x0.f08b3b58cc2bb8006 */,
+0.940897437041863904384 /* 0x0.f0dea788fc2a90000 */,
+0.942172089516254085427 /* 0x0.f13230a7ad21b8003 */,
+0.943448468787511540534 /* 0x0.f185d6bee754e0006 */,
+0.944726577195256100890 /* 0x0.f1d999d8b73478005 */,
+0.946006417082291717338 /* 0x0.f22d79ff2cb130000 */,
+0.947287990793413858827 /* 0x0.f281773c59ec48007 */,
+0.948571300678290207925 /* 0x0.f2d5919a566268001 */,
+0.949856349088629370320 /* 0x0.f329c9233bceb0001 */,
+0.951143138379053731954 /* 0x0.f37e1de1272068002 */,
+0.952431670908847949364 /* 0x0.f3d28fde3a6728006 */,
+0.953721949039916472305 /* 0x0.f4271f249a93f0001 */,
+0.955013975135367898520 /* 0x0.f47bcbbe6deab0001 */,
+0.956307751564417496418 /* 0x0.f4d095b5e16638004 */,
+0.957603280698967163097 /* 0x0.f5257d1524f590006 */,
+0.958900564911197350604 /* 0x0.f57a81e668d628000 */,
+0.960199606581278120057 /* 0x0.f5cfa433e60e50007 */,
+0.961500408088936442422 /* 0x0.f624e407d527a0007 */,
+0.962802971817578789903 /* 0x0.f67a416c72b760006 */,
+0.964107300155846558292 /* 0x0.f6cfbc6c011458004 */,
+0.965413395493874504368 /* 0x0.f7255510c439a8002 */,
+0.966721260225105960572 /* 0x0.f77b0b6503c5b8006 */,
+0.968030896745834645873 /* 0x0.f7d0df730a7940005 */,
+0.969342307458006424716 /* 0x0.f826d145294be8003 */,
+0.970655494764855020231 /* 0x0.f87ce0e5b29fd8000 */,
+0.971970461071268720958 /* 0x0.f8d30e5efaa8f0004 */,
+0.973287208789983648852 /* 0x0.f92959bb5e3c08001 */,
+0.974605740331924708124 /* 0x0.f97fc305383028004 */,
+0.975926058115625383329 /* 0x0.f9d64a46ebb9f8004 */,
+0.977248164559556209435 /* 0x0.fa2cef8adbfc68004 */,
+0.978572062087848637573 /* 0x0.fa83b2db7253d0007 */,
+0.979897753126343307191 /* 0x0.fada944319fda0005 */,
+0.981225240104636631254 /* 0x0.fb3193cc425870002 */,
+0.982554525455618277276 /* 0x0.fb88b1815e61d0003 */,
+0.983885611617111077747 /* 0x0.fbdfed6ce683e0007 */,
+0.985218501026348891812 /* 0x0.fc3747995282f8006 */,
+0.986553196127724962867 /* 0x0.fc8ec0112202a0005 */,
+0.987889699367056062238 /* 0x0.fce656ded63710002 */,
+0.989228013193998778636 /* 0x0.fd3e0c0cf48d50005 */,
+0.990568140061241164686 /* 0x0.fd95dfa605c7b0003 */,
+0.991910082424819927754 /* 0x0.fdedd1b4965710004 */,
+0.993253842749249660216 /* 0x0.fe45e2433bfea0000 */,
+0.994599423484053835071 /* 0x0.fe9e115c7c05f0005 */,
+0.995946827107488830167 /* 0x0.fef65f0afb4c28006 */,
+0.997296056085008264529 /* 0x0.ff4ecb59509cc8001 */,
+0.998647112892057764479 /* 0x0.ffa756521dbfd0007 */,
+1.000000000000000000000 /* 0x1.00000000000000000 */,
+1.001354719891689004659 /* 0x1.0058c86da14aa0005 */,
+1.002711275050312211844 /* 0x1.00b1afa5abead0003 */,
+1.004069667960743483835 /* 0x1.010ab5b2cc0660009 */,
+1.005429901112333324093 /* 0x1.0163da9fb2af30008 */,
+1.006791976999887428009 /* 0x1.01bd1e7716f6a0008 */,
+1.008155898118476168101 /* 0x1.02168143b03890006 */,
+1.009521666967782227439 /* 0x1.027003103ae320002 */,
+1.010889286051850133326 /* 0x1.02c9a3e7783030002 */,
+1.012258757875921233497 /* 0x1.032363d42aaa8000e */,
+1.013630084952214405194 /* 0x1.037d42e11c88d0000 */,
+1.015003269791313389451 /* 0x1.03d741191635a0001 */,
+1.016378314911229763267 /* 0x1.04315e86e84630008 */,
+1.017755222831652872635 /* 0x1.048b9b35652800002 */,
+1.019133996077934645224 /* 0x1.04e5f72f65827000b */,
+1.020514637175266248212 /* 0x1.0540727fc1cfa0006 */,
+1.021897148653734488385 /* 0x1.059b0d3157ebb0002 */,
+1.023281533050062419584 /* 0x1.05f5c74f0cfeb0002 */,
+1.024667792897328677539 /* 0x1.0650a0e3c22ee0003 */,
+1.026055930738840826806 /* 0x1.06ab99fa63e1b0008 */,
+1.027445949118511947550 /* 0x1.0706b29ddf2700009 */,
+1.028837850584049418178 /* 0x1.0761ead9253ab0009 */,
+1.030231637685799839262 /* 0x1.07bd42b72a3f80008 */,
+1.031627312979383592802 /* 0x1.0818ba42e824a000c */,
+1.033024879021186448496 /* 0x1.0874518759b0b0008 */,
+1.034424338374263729911 /* 0x1.08d0088f80ffa0006 */,
+1.035825693601787333992 /* 0x1.092bdf66604e30005 */,
+1.037228947273990842283 /* 0x1.0987d617019cd000a */,
+1.038634101961269928846 /* 0x1.09e3ecac6f199000f */,
+1.040041160239590700707 /* 0x1.0a402331b91270002 */,
+1.041450124688240164200 /* 0x1.0a9c79b1f37c3000b */,
+1.042860997889083929381 /* 0x1.0af8f038352160000 */,
+1.044273782427270314011 /* 0x1.0b5586cf986890006 */,
+1.045688480893644856116 /* 0x1.0bb23d833dfbf0006 */,
+1.047105095879385272564 /* 0x1.0c0f145e46e330007 */,
+1.048523629981608529302 /* 0x1.0c6c0b6bdaadc000f */,
+1.049944085800634585634 /* 0x1.0cc922b72470a000f */,
+1.051366465939483019223 /* 0x1.0d265a4b5238b0007 */,
+1.052790773004648849929 /* 0x1.0d83b23395e510002 */,
+1.054217009607077093512 /* 0x1.0de12a7b263970006 */,
+1.055645178360430591625 /* 0x1.0e3ec32d3cf680000 */,
+1.057075281882416506511 /* 0x1.0e9c7c55184f5000e */,
+1.058507322794714378170 /* 0x1.0efa55fdfad51000a */,
+1.059941303721639416236 /* 0x1.0f58503329fed0003 */,
+1.061377227289284297385 /* 0x1.0fb66affed37f0000 */,
+1.062815096132297298980 /* 0x1.1014a66f95540000c */,
+1.064254912884593951029 /* 0x1.1073028d725850007 */,
+1.065696680185205469411 /* 0x1.10d17f64d9ea2000b */,
+1.067140400676658718053 /* 0x1.11301d012586a0007 */,
+1.068586077004890055886 /* 0x1.118edb6db26ab0003 */,
+1.070033711820396415998 /* 0x1.11edbab5e2d6e000b */,
+1.071483307775789262099 /* 0x1.124cbae51b5ef0001 */,
+1.072934867526001312439 /* 0x1.12abdc06c3240000c */,
+1.074388393734249103080 /* 0x1.130b1e264a62e0005 */,
+1.075843889063253344684 /* 0x1.136a814f20ccd0003 */,
+1.077301356179926061823 /* 0x1.13ca058cbaaed000b */,
+1.078760797756675327056 /* 0x1.1429aaea9260e000e */,
+1.080222216468626150775 /* 0x1.148971742537c0009 */,
+1.081685614993597610617 /* 0x1.14e95934f37e8000b */,
+1.083150996013011013776 /* 0x1.1549623881762000d */,
+1.084618362213087383633 /* 0x1.15a98c8a58a6a000b */,
+1.086087716284427351384 /* 0x1.1609d8360768c0008 */,
+1.087559060917626885283 /* 0x1.166a45471c13f0008 */,
+1.089032398810997337465 /* 0x1.16cad3c92d7b50009 */,
+1.090507732647478578212 /* 0x1.172b83c7c18b5000f */,
+1.091985065182095926460 /* 0x1.178c554ead72a000c */,
+1.093464399073070136880 /* 0x1.17ed48695befe000c */,
+1.094945737045367906172 /* 0x1.184e5d23812500007 */,
+1.096429081816546080591 /* 0x1.18af9388c90e40005 */,
+1.097914436104650892651 /* 0x1.1910eba4e031a0001 */,
+1.099401802629782043408 /* 0x1.19726583755720003 */,
+1.100891184121537858001 /* 0x1.19d4013041b860007 */,
+1.102382583308144647940 /* 0x1.1a35beb6fd0cd0007 */,
+1.103876002922312915544 /* 0x1.1a979e2363fa10000 */,
+1.105371445702084232160 /* 0x1.1af99f8139025000e */,
+1.106868914387219016199 /* 0x1.1b5bc2dc408b9000e */,
+1.108368411723785085252 /* 0x1.1bbe084045eb30002 */,
+1.109869940458469095340 /* 0x1.1c206fb91524c000e */,
+1.111373503344554869449 /* 0x1.1c82f952817cc0001 */,
+1.112879103137133007859 /* 0x1.1ce5a51860344000f */,
+1.114386742595953938610 /* 0x1.1d4873168babf000e */,
+1.115896424484008608911 /* 0x1.1dab6358e1d4a000f */,
+1.117408151567338414664 /* 0x1.1e0e75eb43f9c000c */,
+1.118921926613465345265 /* 0x1.1e71aad995078000f */,
+1.120437752409564780022 /* 0x1.1ed5022fcd8600003 */,
+1.121955631720569668277 /* 0x1.1f387bf9cd88b0000 */,
+1.123475567332998359439 /* 0x1.1f9c18438cdec000a */,
+1.124997562033035469759 /* 0x1.1fffd71902f970002 */,
+1.126521618608448571713 /* 0x1.2063b88629079000e */,
+1.128047739853580200284 /* 0x1.20c7bc96ff72a0002 */,
+1.129575928566289189112 /* 0x1.212be3578a81e0006 */,
+1.131106187546149888259 /* 0x1.21902cd3d05f70007 */,
+1.132638519598779369743 /* 0x1.21f49917ddda5000c */,
+1.134172927531616359481 /* 0x1.2259282fc1c24000e */,
+1.135709414157753949251 /* 0x1.22bdda27911e90007 */,
+1.137247982292643566662 /* 0x1.2322af0b638e60007 */,
+1.138788634756517259562 /* 0x1.2387a6e755f270000 */,
+1.140331374372893558110 /* 0x1.23ecc1c788c890006 */,
+1.141876203969685699176 /* 0x1.2451ffb821639000c */,
+1.143423126377846266197 /* 0x1.24b760c5486dc0009 */,
+1.144972144431494420774 /* 0x1.251ce4fb2a0cc0005 */,
+1.146523260971646252006 /* 0x1.25828c65f9fb8000d */,
+1.148076478839068270690 /* 0x1.25e85711ebaeb0000 */,
+1.149631800883562204903 /* 0x1.264e450b3c8a30008 */,
+1.151189229953253789786 /* 0x1.26b4565e281a20003 */,
+1.152748768902654319399 /* 0x1.271a8b16f0f000002 */,
+1.154310420590433317050 /* 0x1.2780e341de2fc0001 */,
+1.155874187878668246681 /* 0x1.27e75eeb3abc90007 */,
+1.157440073633736243899 /* 0x1.284dfe1f5633e000a */,
+1.159008080725518974322 /* 0x1.28b4c0ea840d90001 */,
+1.160578212048386514965 /* 0x1.291ba75932ae60000 */,
+1.162150470417516290340 /* 0x1.2982b177796850008 */,
+1.163724858777502646494 /* 0x1.29e9df51fdd900001 */,
+1.165301379991388053320 /* 0x1.2a5130f50bf34000e */,
+1.166880036952526289469 /* 0x1.2ab8a66d10fdc0008 */,
+1.168460832550151540268 /* 0x1.2b203fc675b7a000a */,
+1.170043769683112966389 /* 0x1.2b87fd0dad7260008 */,
+1.171628851252754177681 /* 0x1.2befde4f2e3da000d */,
+1.173216080163546060084 /* 0x1.2c57e397719940002 */,
+1.174805459325657830448 /* 0x1.2cc00cf2f7491000c */,
+1.176396991650083379037 /* 0x1.2d285a6e3ff90000b */,
+1.177990680055698513602 /* 0x1.2d90cc15d4ff90005 */,
+1.179586527463262646306 /* 0x1.2df961f641c57000c */,
+1.181184536796979545103 /* 0x1.2e621c1c157cd000d */,
+1.182784710984701836994 /* 0x1.2ecafa93e35af0004 */,
+1.184387052960675701386 /* 0x1.2f33fd6a459cb0000 */,
+1.185991565661414393112 /* 0x1.2f9d24abd8fd1000e */,
+1.187598252026902612178 /* 0x1.300670653e083000a */,
+1.189207115003001469262 /* 0x1.306fe0a31bc040008 */,
+1.190818157535919796833 /* 0x1.30d9757219895000e */,
+1.192431382587621380206 /* 0x1.31432edef01a1000f */,
+1.194046793097208292195 /* 0x1.31ad0cf63f0630008 */,
+1.195664392040319823392 /* 0x1.32170fc4ce0db000c */,
+1.197284182375793593084 /* 0x1.32813757527750005 */,
+1.198906167074650808198 /* 0x1.32eb83ba8eef3000f */,
+1.200530349107333139048 /* 0x1.3355f4fb457e5000d */,
+1.202156731453099647353 /* 0x1.33c08b2641df9000c */,
+1.203785317090505513368 /* 0x1.342b46484f07b0005 */,
+1.205416109005122526928 /* 0x1.3496266e3fa270005 */,
+1.207049110184904572310 /* 0x1.35012ba4e8fa10000 */,
+1.208684323627194912036 /* 0x1.356c55f92aabb0004 */,
+1.210321752322854882437 /* 0x1.35d7a577dd33f0004 */,
+1.211961399276747286580 /* 0x1.36431a2de8748000d */,
+1.213603267492579629347 /* 0x1.36aeb4283309e000c */,
+1.215247359985374142610 /* 0x1.371a7373b00160000 */,
+1.216893679753690671322 /* 0x1.3786581d404e90000 */,
+1.218542229828181611183 /* 0x1.37f26231e82e4000c */,
+1.220193013225231215567 /* 0x1.385e91be9c2d20002 */,
+1.221846032973555429280 /* 0x1.38cae6d05e66f0000 */,
+1.223501292099485437962 /* 0x1.393761742e5830001 */,
+1.225158793636904830441 /* 0x1.39a401b713cb3000e */,
+1.226818540625497444577 /* 0x1.3a10c7a61ceae0007 */,
+1.228480536107136034131 /* 0x1.3a7db34e5a4a50003 */,
+1.230144783126481566885 /* 0x1.3aeac4bcdf8d60001 */,
+1.231811284734168454619 /* 0x1.3b57fbfec6e950008 */,
+1.233480043984379381835 /* 0x1.3bc559212e7a2000f */,
+1.235151063936380300149 /* 0x1.3c32dc3139f2a0004 */,
+1.236824347652524913647 /* 0x1.3ca0853c106ac000e */,
+1.238499898199571624970 /* 0x1.3d0e544eddd240003 */,
+1.240177718649636107175 /* 0x1.3d7c4976d3fcd0000 */,
+1.241857812073360767273 /* 0x1.3dea64c1231f70004 */,
+1.243540181554270152039 /* 0x1.3e58a63b099920005 */,
+1.245224830175077013244 /* 0x1.3ec70df1c4e46000e */,
+1.246911761022835740725 /* 0x1.3f359bf29741c000e */,
+1.248600977188942806639 /* 0x1.3fa4504ac7b800009 */,
+1.250292481770148400634 /* 0x1.40132b07a330d000a */,
+1.251986277866492969263 /* 0x1.40822c367a340000b */,
+1.253682368581898742876 /* 0x1.40f153e4a18e0000d */,
+1.255380757024939564249 /* 0x1.4160a21f73289000d */,
+1.257081446308726757662 /* 0x1.41d016f44deaa000c */,
+1.258784439550028944083 /* 0x1.423fb27094c090008 */,
+1.260489739869405489991 /* 0x1.42af74a1aec1c0006 */,
+1.262197350394008266193 /* 0x1.431f5d950a453000c */,
+1.263907274252603851764 /* 0x1.438f6d58176860004 */,
+1.265619514578811388761 /* 0x1.43ffa3f84b9eb000d */,
+1.267334074511444086425 /* 0x1.44700183221180008 */,
+1.269050957191869555296 /* 0x1.44e0860618b930006 */,
+1.270770165768063009230 /* 0x1.4551318eb4d20000e */,
+1.272491703389059036805 /* 0x1.45c2042a7cc26000b */,
+1.274215573211836316547 /* 0x1.4632fde6ffacd000d */,
+1.275941778396075143580 /* 0x1.46a41ed1cfac40001 */,
+1.277670322103555911043 /* 0x1.471566f8812ac0000 */,
+1.279401207505722393185 /* 0x1.4786d668b33260005 */,
+1.281134437771823675369 /* 0x1.47f86d3002637000a */,
+1.282870016078732078362 /* 0x1.486a2b5c13c00000e */,
+1.284607945607987078432 /* 0x1.48dc10fa916bd0004 */,
+1.286348229545787758022 /* 0x1.494e1e192aaa30007 */,
+1.288090871080605159846 /* 0x1.49c052c5913df000c */,
+1.289835873406902644341 /* 0x1.4a32af0d7d8090002 */,
+1.291583239722392528754 /* 0x1.4aa532feab5e10002 */,
+1.293332973229098792374 /* 0x1.4b17dea6db8010008 */,
+1.295085077135345708087 /* 0x1.4b8ab213d57d9000d */,
+1.296839554650994097442 /* 0x1.4bfdad53629e10003 */,
+1.298596408992440220988 /* 0x1.4c70d0735358a000d */,
+1.300355643380135983739 /* 0x1.4ce41b817c99e0001 */,
+1.302117261036232376282 /* 0x1.4d578e8bb52cb0003 */,
+1.303881265192249561154 /* 0x1.4dcb299fde2920008 */,
+1.305647659079073541490 /* 0x1.4e3eeccbd7f4c0003 */,
+1.307416445934474813521 /* 0x1.4eb2d81d8a86f000b */,
+1.309187629001237640529 /* 0x1.4f26eba2e35a5000e */,
+1.310961211525240921493 /* 0x1.4f9b2769d35090009 */,
+1.312737196755087820678 /* 0x1.500f8b804e4a30000 */,
+1.314515587949291131086 /* 0x1.508417f4530d00009 */,
+1.316296388365203462468 /* 0x1.50f8ccd3df1840003 */,
+1.318079601265708777911 /* 0x1.516daa2cf60020002 */,
+1.319865229921343141607 /* 0x1.51e2b00da3c2b0007 */,
+1.321653277603506371251 /* 0x1.5257de83f5512000d */,
+1.323443747588034513690 /* 0x1.52cd359dfc7d5000e */,
+1.325236643161341820781 /* 0x1.5342b569d6baa000f */,
+1.327031967602244177939 /* 0x1.53b85df59921b0000 */,
+1.328829724206201046165 /* 0x1.542e2f4f6b17e0006 */,
+1.330629916266568235675 /* 0x1.54a4298571b27000e */,
+1.332432547083447937938 /* 0x1.551a4ca5d97190009 */,
+1.334237619959296017340 /* 0x1.559098bed16bf0008 */,
+1.336045138203900251029 /* 0x1.56070dde90c800000 */,
+1.337855105129210686631 /* 0x1.567dac13510cd0009 */,
+1.339667524053662184301 /* 0x1.56f4736b52e2c000c */,
+1.341482398296830025383 /* 0x1.576b63f4d8333000f */,
+1.343299731186792467254 /* 0x1.57e27dbe2c40e0003 */,
+1.345119526053918823702 /* 0x1.5859c0d59cd37000f */,
+1.346941786233264881662 /* 0x1.58d12d497cd9a0005 */,
+1.348766515064854010261 /* 0x1.5948c32824b87000c */,
+1.350593715891792223641 /* 0x1.59c0827ff03890007 */,
+1.352423392064920459908 /* 0x1.5a386b5f43a3e0006 */,
+1.354255546937278120764 /* 0x1.5ab07dd485af1000c */,
+1.356090183865519494030 /* 0x1.5b28b9ee21085000f */,
+1.357927306213322804534 /* 0x1.5ba11fba8816e000b */,
+1.359766917346459269620 /* 0x1.5c19af482f8f2000f */,
+1.361609020638567812980 /* 0x1.5c9268a594cc00004 */,
+1.363453619463660171403 /* 0x1.5d0b4be135916000c */,
+1.365300717204201985683 /* 0x1.5d84590998eeb0005 */,
+1.367150317245710233754 /* 0x1.5dfd902d494e40001 */,
+1.369002422974674892971 /* 0x1.5e76f15ad22c40008 */,
+1.370857037789471544224 /* 0x1.5ef07ca0cc166000b */,
+1.372714165088220639199 /* 0x1.5f6a320dcf5280006 */,
+1.374573808273481745378 /* 0x1.5fe411b0790800009 */,
+1.376435970755022220096 /* 0x1.605e1b976e4b1000e */,
+1.378300655944092456600 /* 0x1.60d84fd155d15000e */,
+1.380167867259843417228 /* 0x1.6152ae6cdf0030003 */,
+1.382037608124419003675 /* 0x1.61cd3778bc879000d */,
+1.383909881963391264069 /* 0x1.6247eb03a4dc40009 */,
+1.385784692209972801544 /* 0x1.62c2c91c56d9b0002 */,
+1.387662042298923203992 /* 0x1.633dd1d1930ec0001 */,
+1.389541935670444372533 /* 0x1.63b90532200630004 */,
+1.391424375772021271329 /* 0x1.6434634ccc4cc0007 */,
+1.393309366052102982208 /* 0x1.64afec30677e90008 */,
+1.395196909966106124701 /* 0x1.652b9febc8e0f000d */,
+1.397087010973788290271 /* 0x1.65a77e8dcc7f10004 */,
+1.398979672539331309267 /* 0x1.66238825534170000 */,
+1.400874898129892187656 /* 0x1.669fbcc1415600008 */,
+1.402772691220124823310 /* 0x1.671c1c708328e000a */,
+1.404673055288671035301 /* 0x1.6798a7420988b000d */,
+1.406575993818903302975 /* 0x1.68155d44ca77a000f */,
+1.408481510297352468121 /* 0x1.68923e87bf70e000a */,
+1.410389608216942924956 /* 0x1.690f4b19e8f74000c */,
+1.412300291075172076232 /* 0x1.698c830a4c94c0008 */
+};
+#define S (1.0/4503599627370496.0) /* 2^-52 */
+static const float exp2_deltatable[512] = {
+ 11527*S, -963*S, 884*S, -781*S, -2363*S, -3441*S, 123*S, 526*S,
+ -6*S, 1254*S, -1138*S, 1519*S, 1576*S, -65*S, 1040*S, 793*S,
+ -1662*S, -5063*S, -387*S, 968*S, -941*S, 984*S, -2856*S, -545*S,
+ 495*S, -5246*S, -2109*S, 1281*S, 2075*S, 909*S, -1642*S,-78233*S,
+-31653*S, -265*S, 130*S, 430*S, 2482*S, -742*S, 1616*S, -2213*S,
+ -519*S, 20*S, -3134*S,-13981*S, 1343*S, -1740*S, 247*S, 1679*S,
+ -1097*S, 3131*S, 871*S, -1480*S, 1936*S, -1827*S, 17325*S, 528*S,
+ -322*S, 1404*S, -152*S, -1845*S, -212*S, 2639*S, -476*S, 2960*S,
+ -962*S, -1012*S, -1231*S, 3030*S, 1659*S, -486*S, 2154*S, 1728*S,
+ -2793*S, 699*S, -1560*S, -2125*S, 2156*S, 142*S, -1888*S, 4426*S,
+-13443*S, 1970*S, -50*S, 1771*S,-43399*S, 4979*S, -2448*S, -370*S,
+ 1414*S, 1075*S, 232*S, 206*S, 873*S, 2141*S, 2970*S, 1279*S,
+ -2331*S, 336*S, -2595*S, 753*S, -3384*S, -616*S, 89*S, -818*S,
+ 5755*S, -241*S, -528*S, -661*S, -3777*S, -354*S, 250*S, 3881*S,
+ 2632*S, -2131*S, 2565*S, -316*S, 1746*S, -2541*S, -1324*S, -50*S,
+ 2564*S, -782*S, 1176*S, 6452*S, -1002*S, 1288*S, 336*S, -185*S,
+ 3063*S, 3784*S, 2169*S, 686*S, 328*S, -400*S, 312*S, -4517*S,
+ -1457*S, 1046*S, -1530*S, -685*S, 1328*S,-49815*S, -895*S, 1063*S,
+ -2091*S, -672*S, -1710*S, -665*S, 1545*S, 1819*S,-45265*S, 3548*S,
+ -554*S, -568*S, 4752*S, -1907*S,-13738*S, 675*S, 9611*S, -1115*S,
+ -815*S, 408*S, -1281*S, -937*S,-16376*S, -4772*S, -1440*S, 992*S,
+ 788*S, 10364*S, -1602*S, -661*S, -1783*S, -265*S, -20*S, -3781*S,
+ -861*S, -345*S, -994*S, 1364*S, -5339*S, 1620*S, 9390*S, -1066*S,
+ -305*S, -170*S, 175*S, 2461*S, -490*S, -769*S, -1450*S, 3315*S,
+ 2418*S, -45*S, -852*S, -1295*S, -488*S, -96*S, 1142*S, -2639*S,
+ 7905*S, -9306*S, -3859*S, 760*S, 1057*S, -1570*S, 3977*S, 209*S,
+ -514*S, 7151*S, 1646*S, 627*S, 599*S, -774*S, -1468*S, 633*S,
+ -473*S, 851*S, 2406*S, 143*S, 74*S, 4260*S, 1177*S, -913*S,
+ 2670*S, -3298*S, -1662*S, -120*S, -3264*S, -2148*S, 410*S, 2078*S,
+ -2098*S, -926*S, 3580*S, -1289*S, 2450*S, -1158*S, 907*S, -590*S,
+ 986*S, 1801*S, 1145*S, -1677*S, 3455*S, 956*S, 710*S, 144*S,
+ 153*S, -255*S, -1898*S, 28102*S, 2748*S, 1194*S, -3009*S, 7076*S,
+ 0*S, -2720*S, 711*S, 1225*S, -3034*S, -473*S, 378*S, -1046*S,
+ 962*S, -2006*S, 4647*S, 3206*S, 1769*S, -2665*S, 1254*S, 2025*S,
+ -2430*S, 6193*S, 1224*S, -856*S, -1592*S, -325*S, -1521*S, 1827*S,
+ -264*S, 2403*S, -1065*S, 967*S, -681*S, -2106*S, -474*S, 1333*S,
+ -893*S, 2296*S, 592*S, -1220*S, -326*S, 990*S, 139*S, 206*S,
+ -779*S, -1683*S, 1238*S, 6098*S, 136*S, 1197*S, 790*S, -107*S,
+ -1004*S, -2449*S, 939*S, 5568*S, 156*S, 1812*S, 2792*S, -1094*S,
+ -2677*S, -251*S, 2297*S, 943*S, -1329*S, 2883*S, -853*S, -2626*S,
+-105929*S, -6552*S, 1095*S, -1508*S, 1003*S, 5039*S, -2600*S, -749*S,
+ 1790*S, 890*S, 2016*S, -1073*S, 624*S, -2084*S, -1536*S, -1330*S,
+ 358*S, 2444*S, -179*S,-25759*S, -243*S, -552*S, -124*S, 3766*S,
+ 1192*S, -1614*S, 6*S, -1227*S, 345*S, -981*S, -295*S, -1006*S,
+ -995*S, -1195*S, 706*S, 2512*S, -1758*S, -734*S, -6286*S, -922*S,
+ 1530*S, 1542*S, 1223*S, 61*S, -83*S, 522*S,116937*S, -914*S,
+ -418*S, -7339*S, 249*S, -520*S, -762*S, 426*S, -505*S, 2664*S,
+ -1093*S, -1035*S, 2130*S, 4878*S, 1982*S, 1551*S, 2304*S, 193*S,
+ 1532*S, -7268*S, 24357*S, 531*S, 2676*S, -1170*S, 1465*S, -1917*S,
+ 2143*S, 1466*S, -7*S, -7300*S, 3297*S, -1197*S, -289*S, -1548*S,
+ 26226*S, 4401*S, 4123*S, -1588*S, 4243*S, 4069*S, -1276*S, -2010*S,
+ 1407*S, 1478*S, 488*S, -2366*S, -2909*S, -2534*S, -1285*S, 7095*S,
+ -645*S, -2089*S, -944*S, -40*S, -1363*S, -833*S, 917*S, 1609*S,
+ 1286*S, 1677*S, 1613*S, -2295*S, -1248*S, 40*S, 26*S, 2038*S,
+ 698*S, 2675*S, -1755*S, -3522*S, -1614*S, -6111*S, 270*S, 1822*S,
+ -234*S, -2844*S, -1201*S, -830*S, 1193*S, 2354*S, 47*S, 1522*S,
+ -78*S, -640*S, 2425*S, -1596*S, 1563*S, 1169*S, -1006*S, -83*S,
+ 2362*S, -3521*S, -314*S, 1814*S, -1751*S, 305*S, 1715*S, -3741*S,
+ 7847*S, 1291*S, 1206*S, 36*S, 1397*S, -1419*S, -1194*S, -2014*S,
+ 1742*S, -578*S, -207*S, 875*S, 1539*S, 2826*S, -1165*S, -909*S,
+ 1849*S, 927*S, 2018*S, -981*S, 1637*S, -463*S, 905*S, 6618*S,
+ 400*S, 630*S, 2614*S, 900*S, 2323*S, -1094*S, -1858*S, -212*S,
+ -2069*S, 747*S, 1845*S, -1450*S, 444*S, -213*S, -438*S, 1158*S,
+ 4738*S, 2497*S, -370*S, -2016*S, -518*S, -1160*S, -1510*S, 123*S
+};
+/* Maximum magnitude in above table: 116937 */
+#undef S
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/uasncs.h b/REORG.TODO/sysdeps/ieee754/dbl-64/uasncs.h
new file mode 100644
index 0000000000..d754932558
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/uasncs.h
@@ -0,0 +1,69 @@
+/*
+ * IBM Accurate Mathematical Library
+ * Written by International Business Machines Corp.
+ * Copyright (C) 2001-2017 Free Software Foundation, Inc.
+ *
+ * This program 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 2.1 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 program; if not, see <http://www.gnu.org/licenses/>.
+ */
+
+/******************************************************************/
+/* */
+/* MODULE_NAME:uasncs.h */
+/* */
+/* common data and variables prototype and definition */
+/******************************************************************/
+
+#ifndef UANSNCS_H
+#define UANSNCS_H
+
+#ifdef BIG_ENDI
+ static const mynumber
+/**/ a1 = {{0x3FC55580, 0x00000000 }}, /* 0.1666717529296875 */
+/**/ a2 = {{0xBED55555, 0x55552330 }}, /* -5.0862630208224597e-06 */
+/**/ hp0 = {{0x3FF921FB, 0x54442D18 }}, /* 1.5707963267948966 */
+/**/ hp1 = {{0x3C91A626, 0x33145C07 }}; /* 6.123233995736766e-17 */
+
+#else
+#ifdef LITTLE_ENDI
+ static const mynumber
+/**/ a1 = {{0x00000000, 0x3FC55580 }}, /* 0.1666717529296875 */
+/**/ a2 = {{0x55552330, 0xBED55555 }}, /* -5.0862630208224597e-06 */
+/**/ hp0 = {{0x54442D18, 0x3FF921FB }}, /* 1.5707963267948966 */
+/**/ hp1 = {{0x33145C07, 0x3C91A626 }}; /* 6.123233995736766e-17 */
+
+#endif
+#endif
+
+static const double
+ f1 = 1.66666666666664110590506577996662E-01,
+ f2 = 7.50000000026122686814431784722623E-02,
+ f3 = 4.46428561421059750978517350006940E-02,
+ f4 = 3.03821268582119319911193410625235E-02,
+ f5 = 2.23551211026525610742786300334557E-02,
+ f6 = 1.81382903404565056280372531963613E-02;
+static const double
+ c2 = 0.74999999999985410757087492918602258E-01,
+ c3 = 0.44642857150311968932423372477866076E-01,
+ c4 = 0.30381942574778615766200591683810471E-01,
+ c5 = 0.22372413472984868331447708777000650E-01,
+ c6 = 0.17333630246451830686009693735025490E-01,
+ c7 = 0.14710362893628210269950864741085777E-01;
+
+static const double big = 103079215104.0, t24 = 16777216.0, t27 = 134217728.0;
+static const double
+ rt0 = 9.99999999859990725855365213134618E-01,
+ rt1 = 4.99999999495955425917856814202739E-01,
+ rt2 = 3.75017500867345182581453026130850E-01,
+ rt3 = 3.12523626554518656309172508769531E-01;
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/uatan.tbl b/REORG.TODO/sysdeps/ieee754/dbl-64/uatan.tbl
new file mode 100644
index 0000000000..06608a3edb
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/uatan.tbl
@@ -0,0 +1,11134 @@
+/*
+ * IBM Accurate Mathematical Library
+ * Written by International Business Machines Corp.
+ * Copyright (C) 2001-2017 Free Software Foundation, Inc.
+ *
+ * This program 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 2.1 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 program; if not, see <http://www.gnu.org/licenses/>.
+ */
+
+/****************************************************************/
+/* TABLES FOR THE uatan() FUNCTION */
+/****************************************************************/
+
+#include "endian.h"
+
+#ifdef BIG_ENDI
+
+ static const number
+ cij[241][7] = { /* x0,cij for (1/16,1) */
+/**/ {{{0X3FB04006, 0X65E0244E} },
+/**/ {{0X3FB03A73, 0X7B53DD20} },
+/**/ {{0X3FEFDF1F, 0XCF5CFB72} },
+/**/ {{0XBFB01EB3, 0XCE2AE4C2} },
+/**/ {{0XBFD4D29E, 0XDD58A40D} },
+/**/ {{0X3FAFDA4A, 0XD907A18A} },
+/**/ {{0X3FC814DF, 0X4DF65B18} } },
+/**/ {{{0X3FB0FFFD, 0XB9B88CD8} },
+/**/ {{0X3FB0F99C, 0X63645300} },
+/**/ {{0X3FEFDC08, 0XA3DED30F} },
+/**/ {{0XBFB0D9DC, 0X669C1AED} },
+/**/ {{0XBFD4C669, 0XF7138DE2} },
+/**/ {{0X3FB0A12F, 0X29D085A7} },
+/**/ {{0X3FC7F0EE, 0XCFD48D20} } },
+/**/ {{{0X3FB1FFF1, 0X5A73D4F1} },
+/**/ {{0X3FB1F85F, 0X2BEE2040} },
+/**/ {{0X3FEFD7B3, 0X42B56D31} },
+/**/ {{0XBFB1D2B7, 0XB69DEA40} },
+/**/ {{0XBFD4B552, 0X3922ECC9} },
+/**/ {{0X3FB18F93, 0X522B1A04} },
+/**/ {{0X3FC7BEAD, 0X5660F061} } },
+/**/ {{{0X3FB2FFFD, 0XB2524AA2} },
+/**/ {{0X3FB2F716, 0XE71790A0} },
+/**/ {{0X3FEFD31F, 0X53B496A4} },
+/**/ {{0XBFB2CAD8, 0X4AAB7374} },
+/**/ {{0XBFD4A34B, 0X58DD2FB2} },
+/**/ {{0X3FB27C0A, 0XD0CECC18} },
+/**/ {{0X3FC789D2, 0X5D2743D7} } },
+/**/ {{{0X3FB3FFFE, 0X0573F3AC} },
+/**/ {{0X3FB3F59D, 0X1702F6A0} },
+/**/ {{0X3FEFCE4D, 0XB071ACC2} },
+/**/ {{0XBFB3C20F, 0X64DB3686} },
+/**/ {{0XBFD49059, 0XEB3BFE93} },
+/**/ {{0X3FB36659, 0XCAF74FED} },
+/**/ {{0X3FC75269, 0X1C011FB0} } },
+/**/ {{{0X3FB4FFEF, 0X894384D6} },
+/**/ {{0X3FB4F3ED, 0X0CE204C0} },
+/**/ {{0X3FEFC93E, 0XA8EA5A01} },
+/**/ {{0XBFB4B84F, 0X7B5457C9} },
+/**/ {{0XBFD47C80, 0X7401F2F9} },
+/**/ {{0X3FB44E64, 0XB4F67209} },
+/**/ {{0X3FC7187D, 0X4C540B77} } },
+/**/ {{{0X3FB5FFF8, 0XDF406528} },
+/**/ {{0X3FB5F22B, 0X3C73D820} },
+/**/ {{0X3FEFC3F1, 0XB1F60F13} },
+/**/ {{0XBFB5ADB2, 0XCB7FA73B} },
+/**/ {{0XBFD467BE, 0X2B1EB555} },
+/**/ {{0X3FB53435, 0X99EDC463} },
+/**/ {{0X3FC6DC1B, 0X238F5059} } },
+/**/ {{{0X3FB7000F, 0X8C4F0D56} },
+/**/ {{0X3FB6F04B, 0X495A2FA0} },
+/**/ {{0X3FEFBE67, 0X340DCE97} },
+/**/ {{0XBFB6A224, 0X4D98E1AD} },
+/**/ {{0XBFD45216, 0X14064DF1} },
+/**/ {{0X3FB617AA, 0X2BA78A66} },
+/**/ {{0X3FC69D4F, 0X50A3D7AC} } },
+/**/ {{{0X3FB8000F, 0XBB4057CF} },
+/**/ {{0X3FB7EE27, 0XBE2CD3A0} },
+/**/ {{0X3FEFB8A0, 0X39EC9246} },
+/**/ {{0XBFB79577, 0X31D9C773} },
+/**/ {{0XBFD43B8D, 0XB6DC7D72} },
+/**/ {{0X3FB6F88A, 0XD69547DF} },
+/**/ {{0X3FC65C26, 0XF633CE8C} } },
+/**/ {{{0X3FB8FFF2, 0X39CF2B7F} },
+/**/ {{0X3FB8EBB7, 0X9F979E80} },
+/**/ {{0X3FEFB29D, 0X435506E1} },
+/**/ {{0XBFB8879A, 0X69B9CDB5} },
+/**/ {{0XBFD42428, 0X85FEAFA9} },
+/**/ {{0X3FB7D6BA, 0XB6191A0E} },
+/**/ {{0X3FC618AF, 0XA7CB8BB5} } },
+/**/ {{{0X3FB9FFF9, 0X6E2F0772} },
+/**/ {{0X3FB9E93A, 0XD32A9480} },
+/**/ {{0X3FEFAC5D, 0X04A3EC40} },
+/**/ {{0XBFB978C2, 0X53F6EA97} },
+/**/ {{0XBFD40BE3, 0X089C36F6} },
+/**/ {{0X3FB8B25C, 0X885AEB77} },
+/**/ {{0X3FC5D2F7, 0X63CADCE1} } },
+/**/ {{{0X3FBB0002, 0X6316B097} },
+/**/ {{0X3FBAE68C, 0XCE24CC00} },
+/**/ {{0X3FEFA5E0, 0X938C5C66} },
+/**/ {{0XBFBA68C3, 0X76F14E4B} },
+/**/ {{0XBFD3F2C3, 0X1696CD7C} },
+/**/ {{0X3FB98B3B, 0X722A2CB4} },
+/**/ {{0X3FC58B0C, 0X9067AD62} } },
+/**/ {{{0X3FBC0008, 0X604F58B1} },
+/**/ {{0X3FBBE3A7, 0X05650780} },
+/**/ {{0X3FEF9F28, 0X5A7A2773} },
+/**/ {{0XBFBB578F, 0X3D5AC0A4} },
+/**/ {{0XBFD3D8CB, 0XF767119F} },
+/**/ {{0X3FBA613D, 0XC7E31B88} },
+/**/ {{0X3FC540FD, 0XF5594565} } },
+/**/ {{{0X3FBD0002, 0X6CCA4EBA} },
+/**/ {{0X3FBCE07E, 0XC1298A80} },
+/**/ {{0X3FEF9834, 0XE8D36C4A} },
+/**/ {{0XBFBC4513, 0X5BCAC5FE} },
+/**/ {{0XBFD3BE01, 0X8B5236F1} },
+/**/ {{0X3FBB3447, 0X2E991970} },
+/**/ {{0X3FC4F4DA, 0XB8ADB373} } },
+/**/ {{{0X3FBDFFF4, 0XB2B47FCA} },
+/**/ {{0X3FBDDD16, 0X4A051D80} },
+/**/ {{0X3FEF9106, 0X78DCC895} },
+/**/ {{0XBFBD3149, 0XF0966844} },
+/**/ {{0XBFD3A266, 0X744F9A5F} },
+/**/ {{0X3FBC0446, 0XEDB7F27A} },
+/**/ {{0X3FC4A6B2, 0X583F9ECA} } },
+/**/ {{{0X3FBF000A, 0XA9A05BE0} },
+/**/ {{0X3FBED996, 0XA3BDA540} },
+/**/ {{0X3FEF899C, 0X1B8BA97F} },
+/**/ {{0XBFBE1C51, 0X2287A677} },
+/**/ {{0XBFD385F8, 0XEDC130BB} },
+/**/ {{0X3FBCD14B, 0XF306FF50} },
+/**/ {{0X3FC45694, 0XA667A72B} } },
+/**/ {{{0X3FBFFFFA, 0XBA8F63DE} },
+/**/ {{0X3FBFD5B5, 0X69FE4780} },
+/**/ {{0X3FEF81F8, 0X4863DC7D} },
+/**/ {{0XBFBF05DB, 0XD1518706} },
+/**/ {{0XBFD368C4, 0X4687A69C} },
+/**/ {{0X3FBD9B08, 0X1B3868DA} },
+/**/ {{0X3FC40491, 0XC345ADFC} } },
+/**/ {{{0X3FC07FFA, 0X6ECCADA8} },
+/**/ {{0X3FC068D0, 0X0A396400} },
+/**/ {{0X3FEF7A19, 0XF1FCFC6B} },
+/**/ {{0XBFBFEE0C, 0X861DF0DF} },
+/**/ {{0XBFD34AC6, 0X5A586C0C} },
+/**/ {{0X3FBE618F, 0X189D637A} },
+/**/ {{0X3FC3B0BA, 0X195779D4} } },
+/**/ {{{0X3FC10003, 0X33432713} },
+/**/ {{0X3FC0E6B0, 0XF203D1A0} },
+/**/ {{0X3FEF7200, 0XFE0EB463} },
+/**/ {{0XBFC06A72, 0XE15CB19A} },
+/**/ {{0XBFD32C00, 0XB8DB761E} },
+/**/ {{0X3FBF24D8, 0XA11F5E3E} },
+/**/ {{0X3FC35B1E, 0X569E85DD} } },
+/**/ {{{0X3FC17FFC, 0XDA1C4811} },
+/**/ {{0X3FC16462, 0X29EBDA00} },
+/**/ {{0X3FEF69AF, 0X7D558737} },
+/**/ {{0XBFC0DD17, 0X0B33969B} },
+/**/ {{0XBFD30C7D, 0X33AC50D1} },
+/**/ {{0X3FBFE4AA, 0X9BE43F0F} },
+/**/ {{0X3FC303CF, 0X692539CB} } },
+/**/ {{{0X3FC1FFFF, 0X3CCA418D} },
+/**/ {{0X3FC1E1FA, 0X3B978EA0} },
+/**/ {{0X3FEF6124, 0X45D421A9} },
+/**/ {{0XBFC14F03, 0XACAC8AA8} },
+/**/ {{0XBFD2EC39, 0X62E675A3} },
+/**/ {{0X3FC0508C, 0X2FA6B426} },
+/**/ {{0X3FC2AADE, 0X780A6467} } },
+/**/ {{{0X3FC27FF7, 0XD9C78922} },
+/**/ {{0X3FC25F66, 0X1B91E640} },
+/**/ {{0X3FEF5860, 0XF52E192C} },
+/**/ {{0XBFC1C023, 0XE5DE2394} },
+/**/ {{0XBFD2CB3D, 0X6BEE0ABD} },
+/**/ {{0X3FC0ACFB, 0X5E075C1A} },
+/**/ {{0X3FC2505C, 0XDFFE453A} } },
+/**/ {{{0X3FC2FFF7, 0XA1FC1AAA} },
+/**/ {{0X3FC2DCB5, 0X83257C40} },
+/**/ {{0X3FEF4F64, 0XC719B6FB} },
+/**/ {{0XBFC23082, 0X61514083} },
+/**/ {{0XBFD2A988, 0X7F7B72D5} },
+/**/ {{0X3FC107A7, 0X7C887402} },
+/**/ {{0X3FC1F45C, 0X2C3CD6D1} } },
+/**/ {{{0X3FC38005, 0X9D78E15E} },
+/**/ {{0X3FC359EE, 0X6AC98EE0} },
+/**/ {{0X3FEF462F, 0X944CEC16} },
+/**/ {{0XBFC2A020, 0XD85B87A9} },
+/**/ {{0XBFD2871C, 0X2E4AB369} },
+/**/ {{0X3FC1608D, 0XC31A65D9} },
+/**/ {{0X3FC196EE, 0X130BBE50} } },
+/**/ {{{0X3FC40004, 0X9F431B1A} },
+/**/ {{0X3FC3D6F3, 0X6BD65360} },
+/**/ {{0X3FEF3CC3, 0XDD99B68A} },
+/**/ {{0XBFC30EE1, 0XB3DD00ED} },
+/**/ {{0XBFD26403, 0XF8482664} },
+/**/ {{0X3FC1B792, 0XFE136626} },
+/**/ {{0X3FC13824, 0X6EAC7440} } },
+/**/ {{{0X3FC48004, 0XE01D95A1} },
+/**/ {{0X3FC453D3, 0X86F00CC0} },
+/**/ {{0X3FEF3320, 0XE3970539} },
+/**/ {{0XBFC37CCF, 0X0A5279AA} },
+/**/ {{0XBFD2403F, 0X3B151D5D} },
+/**/ {{0X3FC20CBB, 0XE331C9E6} },
+/**/ {{0X3FC0D811, 0X39E3F097} } },
+/**/ {{{0X3FC4FFF7, 0XAA9382DD} },
+/**/ {{0X3FC4D07F, 0X8C590A80} },
+/**/ {{0X3FEF2948, 0X34DF28E0} },
+/**/ {{0XBFC3E9D8, 0X5B43915C} },
+/**/ {{0XBFD21BD5, 0XEB8845A2} },
+/**/ {{0X3FC25FF8, 0XAC6AC8AD} },
+/**/ {{0X3FC076C6, 0X88ED96CA} } },
+/**/ {{{0X3FC58006, 0X352408BE} },
+/**/ {{0X3FC54D1E, 0XC39A73E0} },
+/**/ {{0X3FEF1F37, 0X09AE009C} },
+/**/ {{0XBFC4561C, 0XB9BE8550} },
+/**/ {{0XBFD1F6C0, 0X0053F52E} },
+/**/ {{0X3FC2B15D, 0XEF783BE9} },
+/**/ {{0X3FC01456, 0X8615239B} } },
+/**/ {{{0X3FC5FFFF, 0X2B193F81} },
+/**/ {{0X3FC5C980, 0X4F73E000} },
+/**/ {{0X3FEF14F1, 0XAE110E29} },
+/**/ {{0XBFC4C16E, 0X9098B3D2} },
+/**/ {{0XBFD1D10F, 0X8F058241} },
+/**/ {{0X3FC300C6, 0XA14FA897} },
+/**/ {{0X3FBF61A6, 0XD56607C0} } },
+/**/ {{{0X3FC68008, 0X4460E6E1} },
+/**/ {{0X3FC645C8, 0X04A55E20} },
+/**/ {{0X3FEF0A75, 0X8FA36EC5} },
+/**/ {{0XBFC52BE9, 0XD62FA883} },
+/**/ {{0XBFD1AABD, 0X69A74048} },
+/**/ {{0X3FC34E45, 0X1679EB02} },
+/**/ {{0X3FBE989E, 0XF7C14C3D} } },
+/**/ {{{0X3FC6FFFB, 0X9E99A846} },
+/**/ {{0X3FC6C1D0, 0X4B35FD40} },
+/**/ {{0X3FEEFFC6, 0X3EF8EF95} },
+/**/ {{0XBFC5956B, 0X76A2FE63} },
+/**/ {{0XBFD183D8, 0XDDC78DDF} },
+/**/ {{0X3FC399BD, 0XAC606D66} },
+/**/ {{0X3FBDCDBA, 0X070D286A} } },
+/**/ {{{0X3FC78008, 0X0FFCD490} },
+/**/ {{0X3FC73DC5, 0XB55758E0} },
+/**/ {{0X3FEEF4E0, 0X457E2065} },
+/**/ {{0XBFC5FE16, 0X7D6FF9BC} },
+/**/ {{0XBFD15C57, 0X9FADD384} },
+/**/ {{0X3FC3E347, 0X73E52D32} },
+/**/ {{0X3FBD011C, 0X9A65AE4B} } },
+/**/ {{{0X3FC80006, 0X148E79C1} },
+/**/ {{0X3FC7B981, 0X2B7F8CA0} },
+/**/ {{0X3FEEE9C7, 0X701687ED} },
+/**/ {{0XBFC665C7, 0X0E1EF36D} },
+/**/ {{0XBFD13449, 0XCCBCBDAB} },
+/**/ {{0X3FC42AC7, 0X5C71B3E8} },
+/**/ {{0X3FBC32EB, 0X3E81980E} } },
+/**/ {{{0X3FC88006, 0X0F487C17} },
+/**/ {{0X3FC83511, 0XBC0E3640} },
+/**/ {{0X3FEEDE7A, 0XD2D55329} },
+/**/ {{0XBFC6CC87, 0X37E644BA} },
+/**/ {{0XBFD10BAE, 0X60597557} },
+/**/ {{0X3FC47043, 0X13E26FBE} },
+/**/ {{0X3FBB634A, 0X6FB18BF4} } },
+/**/ {{{0X3FC90004, 0XD3518D76} },
+/**/ {{0X3FC8B073, 0X8874C100} },
+/**/ {{0X3FEED2FB, 0X2ED6673B} },
+/**/ {{0XBFC73251, 0X2A6EBAC3} },
+/**/ {{0XBFD0E28A, 0X6924232F} },
+/**/ {{0X3FC4B3B5, 0X73BCC03F} },
+/**/ {{0X3FBA925E, 0X8C72507F} } },
+/**/ {{{0X3FC97FFF, 0XD2F20D5C} },
+/**/ {{0X3FC92BA3, 0X51AF5920} },
+/**/ {{0X3FEEC749, 0X3D32449F} },
+/**/ {{0XBFC7971F, 0XC308255F} },
+/**/ {{0XBFD0B8E2, 0XD572D28F} },
+/**/ {{0X3FC4F51A, 0X337448FE} },
+/**/ {{0X3FB9C04B, 0XCFCBC620} } },
+/**/ {{{0X3FCA0005, 0XBF80F060} },
+/**/ {{0X3FC9A6AE, 0X6E9E8960} },
+/**/ {{0X3FEEBB64, 0X1EF200E7} },
+/**/ {{0XBFC7FAFB, 0X6E96E5C1} },
+/**/ {{0XBFD08EB6, 0XEC6AD647} },
+/**/ {{0X3FC53475, 0XF53D0BA6} },
+/**/ {{0X3FB8ED36, 0X4433C20E} } },
+/**/ {{{0X3FCA7FF7, 0XDEECA8E4} },
+/**/ {{0X3FCA2176, 0X948578E0} },
+/**/ {{0X3FEEAF4F, 0X328FF98B} },
+/**/ {{0XBFC85DC9, 0X58149B1C} },
+/**/ {{0XBFD06414, 0XF933A1AB} },
+/**/ {{0X3FC571B7, 0X60C45A8F} },
+/**/ {{0X3FB81941, 0XBE58C308} } },
+/**/ {{{0X3FCAFFFF, 0X7DEFD553} },
+/**/ {{0X3FCA9C22, 0X9EBA6B80} },
+/**/ {{0X3FEEA307, 0X10A85E10} },
+/**/ {{0XBFC8BFA6, 0X7F9DEA61} },
+/**/ {{0XBFD038F3, 0X5A474E8F} },
+/**/ {{0X3FC5ACF0, 0X30C225D2} },
+/**/ {{0X3FB74491, 0XD062812F} } },
+/**/ {{{0X3FCB7FFE, 0X669932A5} },
+/**/ {{0X3FCB1694, 0XCFF6DFE0} },
+/**/ {{0X3FEE968F, 0X1921D387} },
+/**/ {{0XBFC92078, 0XE075D95A} },
+/**/ {{0XBFD00D60, 0X526793C4} },
+/**/ {{0X3FC5E610, 0X73842A52} },
+/**/ {{0X3FB66F49, 0XC5331D5A} } },
+/**/ {{{0X3FCBFFF9, 0XB44759F3} },
+/**/ {{0X3FCB90D1, 0X5073A2A0} },
+/**/ {{0X3FEE89E7, 0X56598313} },
+/**/ {{0XBFC98041, 0XCFB9203D} },
+/**/ {{0XBFCFC2BC, 0XBED91B37} },
+/**/ {{0X3FC61D19, 0X6D4FC2FC} },
+/**/ {{0X3FB5998C, 0X9411537E} } },
+/**/ {{{0X3FCC8007, 0X5568F3EC} },
+/**/ {{0X3FCC0AEC, 0X4A31DBE0} },
+/**/ {{0X3FEE7D0E, 0X18F270A8} },
+/**/ {{0XBFC9DF0E, 0XF522B132} },
+/**/ {{0XBFCF69D4, 0X2179C242} },
+/**/ {{0X3FC65213, 0X36646FCD} },
+/**/ {{0X3FB4C37C, 0XDC699095} } },
+/**/ {{{0X3FCCFFF8, 0X601A799F} },
+/**/ {{0X3FCC84B8, 0X49DB66A0} },
+/**/ {{0X3FEE7008, 0XA0EE780E} },
+/**/ {{0XBFCA3CBB, 0X3A403934} },
+/**/ {{0XBFCF102F, 0XD490BE32} },
+/**/ {{0X3FC684EA, 0X037D4137} },
+/**/ {{0X3FB3ED3C, 0XD9EC855A} } },
+/**/ {{{0X3FCD7FF9, 0X7BBF1497} },
+/**/ {{0X3FCCFE5F, 0X1E008CE0} },
+/**/ {{0X3FEE62D2, 0XF04615C7} },
+/**/ {{0XBFCA9965, 0X15AADE2C} },
+/**/ {{0XBFCEB5B9, 0X0B44B682} },
+/**/ {{0X3FC6B5AF, 0X92EC8D57} },
+/**/ {{0X3FB316EE, 0X60D831AE} } },
+/**/ {{{0X3FCE0008, 0X40209B20} },
+/**/ {{0X3FCD77DD, 0XB145A760} },
+/**/ {{0X3FEE556D, 0XBE1DFDF1} },
+/**/ {{0XBFCAF508, 0X2186AF0F} },
+/**/ {{0XBFCE5A79, 0X9420489D} },
+/**/ {{0X3FC6E462, 0X454FEB2C} },
+/**/ {{0X3FB240B2, 0XD2945A8C} } },
+/**/ {{{0X3FCE8000, 0XC0AE943C} },
+/**/ {{0X3FCDF111, 0X3CA10100} },
+/**/ {{0X3FEE47DD, 0X59E7308B} },
+/**/ {{0XBFCB4F88, 0X9439F69F} },
+/**/ {{0XBFCDFE93, 0X798DE600} },
+/**/ {{0X3FC710F5, 0X8F267389} },
+/**/ {{0X3FB16AAB, 0X1A8A373E} } },
+/**/ {{{0X3FCF0003, 0X6D532803} },
+/**/ {{0X3FCE6A17, 0XCB4E5C80} },
+/**/ {{0X3FEE3A1E, 0XE3D0F6C2} },
+/**/ {{0XBFCBA8FB, 0X6E31F768} },
+/**/ {{0XBFCDA1F7, 0XE6A382E3} },
+/**/ {{0X3FC73B75, 0XB36AC4C0} },
+/**/ {{0X3FB094F7, 0XA3470B0A} } },
+/**/ {{{0X3FCF7FFA, 0X48B8AFC3} },
+/**/ {{0X3FCEE2DB, 0XE1654560} },
+/**/ {{0X3FEE2C35, 0X43F2AB37} },
+/**/ {{0XBFCC014F, 0X598207D6} },
+/**/ {{0XBFCD44BF, 0X1EFE809A} },
+/**/ {{0X3FC763DC, 0X698A561E} },
+/**/ {{0X3FAF7F70, 0XA7CF78A3} } },
+/**/ {{{0X3FD00002, 0XEB334FAE} },
+/**/ {{0X3FCF5B7B, 0X77AB25E0} },
+/**/ {{0X3FEE1E1D, 0X78A5C127} },
+/**/ {{0XBFCC5898, 0XC555D571} },
+/**/ {{0XBFCCE6D9, 0XB706CF86} },
+/**/ {{0X3FC78A35, 0X0823F643} },
+/**/ {{0X3FADD619, 0X0B9118E8} } },
+/**/ {{{0X3FD03FFC, 0XA8AF86FE} },
+/**/ {{0X3FCFD3CB, 0XB53A0C00} },
+/**/ {{0X3FEE0FDC, 0XFDCBAC8B} },
+/**/ {{0XBFCCAEB7, 0X6C3246FF} },
+/**/ {{0XBFCC8870, 0XD6E19AD3} },
+/**/ {{0X3FC7AE73, 0XD2C48E91} },
+/**/ {{0X3FAC2E26, 0X0510FDB0} } },
+/**/ {{{0X3FD07FFC, 0XD38984B7} },
+/**/ {{0X3FD025F7, 0X5732D4A0} },
+/**/ {{0X3FEE0170, 0X49C17AB3} },
+/**/ {{0XBFCD03C2, 0X9AFE5028} },
+/**/ {{0XBFCC2971, 0X9A2C1833} },
+/**/ {{0X3FC7D0A5, 0X69041DCF} },
+/**/ {{0X3FAA87D3, 0XF497C653} } },
+/**/ {{{0X3FD0BFFF, 0X1ED2ADD7} },
+/**/ {{0X3FD061ED, 0XCD7F7420} },
+/**/ {{0X3FEDF2D8, 0XDA96B750} },
+/**/ {{0XBFCD57B2, 0XC777881E} },
+/**/ {{0XBFCBC9EA, 0X8692B503} },
+/**/ {{0X3FC7F0C9, 0X42ABF9E7} },
+/**/ {{0X3FA8E35E, 0X04B42BB4} } },
+/**/ {{{0X3FD10003, 0XA8515CDA} },
+/**/ {{0X3FD09DC9, 0X027416A0} },
+/**/ {{0X3FEDE417, 0X34899950} },
+/**/ {{0XBFCDAA86, 0X7983EDE4} },
+/**/ {{0XBFCB69E3, 0X999706B6} },
+/**/ {{0X3FC80EE1, 0XB0F126DB} },
+/**/ {{0X3FA740FE, 0X17EE9BAB} } },
+/**/ {{{0X3FD14001, 0XF3AF9CC5} },
+/**/ {{0X3FD0D980, 0XB6E1ABA0} },
+/**/ {{0X3FEDD52D, 0XE0412681} },
+/**/ {{0XBFCDFC31, 0X6863B28B} },
+/**/ {{0XBFCB0971, 0XC55B8D5A} },
+/**/ {{0X3FC82AED, 0XA6731AAC} },
+/**/ {{0X3FA5A0EC, 0XC73BD8F0} } },
+/**/ {{{0X3FD18003, 0XB6122509} },
+/**/ {{0X3FD1151D, 0XAA1E67A0} },
+/**/ {{0X3FEDC61B, 0X2E0C1F32} },
+/**/ {{0XBFCE4CBE, 0XB9BA6B7E} },
+/**/ {{0XBFCAA88E, 0X90C2431C} },
+/**/ {{0X3FC844F4, 0X8BCBDA5E} },
+/**/ {{0X3FA40361, 0X50E585FF} } },
+/**/ {{{0X3FD1BFFF, 0XA6A2A153} },
+/**/ {{0X3FD15096, 0XE7A18DC0} },
+/**/ {{0X3FEDB6E1, 0XE1218F3F} },
+/**/ {{0XBFCE9C21, 0X9621D6A2} },
+/**/ {{0XBFCA4750, 0X22627B04} },
+/**/ {{0X3FC85CF5, 0XFF8B908E} },
+/**/ {{0X3FA26891, 0X9833C0D6} } },
+/**/ {{{0X3FD1FFFD, 0X2D345AAF} },
+/**/ {{0X3FD18BF3, 0X053BF760} },
+/**/ {{0X3FEDA780, 0XCC3ACB29} },
+/**/ {{0XBFCEEA62, 0X2AA756AE} },
+/**/ {{0XBFC9E5B3, 0X47ED9793} },
+/**/ {{0X3FC872F8, 0X87AB542A} },
+/**/ {{0X3FA0D0B2, 0X158E9E9A} } },
+/**/ {{{0X3FD23FFC, 0XF14CF05A} },
+/**/ {{0X3FD1C732, 0X4D568460} },
+/**/ {{0X3FED97F8, 0X55F32D3D} },
+/**/ {{0XBFCF3780, 0X21D457C8} },
+/**/ {{0XBFC983BE, 0XF065B845} },
+/**/ {{0X3FC886FF, 0XFBA70CD8} },
+/**/ {{0X3F9E77EB, 0XAEB85CCC} } },
+/**/ {{{0X3FD27FFE, 0X0BAE6FC9} },
+/**/ {{0X3FD20253, 0X9A27C160} },
+/**/ {{0X3FED8849, 0X4619176E} },
+/**/ {{0XBFCF8379, 0X5C0AC9EC} },
+/**/ {{0XBFC9217C, 0X5E645195} },
+/**/ {{0X3FC8990F, 0XF4264515} },
+/**/ {{0X3F9B551C, 0XE6B92E65} } },
+/**/ {{{0X3FD2C001, 0XA297A7DE} },
+/**/ {{0X3FD23D57, 0XACB927C0} },
+/**/ {{0X3FED7873, 0XE4958FB6} },
+/**/ {{0XBFCFCE4E, 0X43572249} },
+/**/ {{0XBFC8BEF1, 0X9F3560F3} },
+/**/ {{0X3FC8A92C, 0XDF7F0E5B} },
+/**/ {{0X3F983958, 0X116F3B19} } },
+/**/ {{{0X3FD2FFFE, 0X7267616A} },
+/**/ {{0X3FD27835, 0XB2F378C0} },
+/**/ {{0X3FED687B, 0X13906586} },
+/**/ {{0XBFD00BF9, 0XAFDA1A0F} },
+/**/ {{0XBFC85C34, 0XC197AD7D} },
+/**/ {{0X3FC8B759, 0X1E99F0A7} },
+/**/ {{0X3F9524FA, 0X6525C365} } },
+/**/ {{{0X3FD33FFE, 0X48153B20} },
+/**/ {{0X3FD2B2F6, 0X6A2FDCC0} },
+/**/ {{0X3FED585C, 0XF827FBE4} },
+/**/ {{0XBFD03039, 0XB45A6918} },
+/**/ {{0XBFC7F93E, 0X5DFC3F72} },
+/**/ {{0X3FC8C39B, 0XC5210022} },
+/**/ {{0X3F92185E, 0X168FB62E} } },
+/**/ {{{0X3FD38003, 0X8122579A} },
+/**/ {{0X3FD2ED9B, 0XAF6EC1E0} },
+/**/ {{0X3FED4819, 0X872F20D3} },
+/**/ {{0XBFD053E8, 0X1F4C1031} },
+/**/ {{0XBFC79612, 0X621FFD79} },
+/**/ {{0X3FC8CDF9, 0XDB9D9DFC} },
+/**/ {{0X3F8E27B4, 0X80C6852F} } },
+/**/ {{{0X3FD3C003, 0X3EF39141} },
+/**/ {{0X3FD3281B, 0X4668C700} },
+/**/ {{0X3FED37B4, 0X18590D1A} },
+/**/ {{0XBFD076FE, 0XA3EF2560} },
+/**/ {{0XBFC732C9, 0X3033287A} },
+/**/ {{0X3FC8D676, 0XCA2E5458} },
+/**/ {{0X3F882F85, 0XD80944B1} } },
+/**/ {{{0X3FD40001, 0X63FA0E31} },
+/**/ {{0X3FD36278, 0X7B565000} },
+/**/ {{0X3FED272C, 0X47A813DA} },
+/**/ {{0XBFD0997F, 0X493B9D88} },
+/**/ {{0XBFC6CF64, 0X3DA9FE3C} },
+/**/ {{0X3FC8DD18, 0XC1CD3331} },
+/**/ {{0X3F8248D1, 0XF70F6E07} } },
+/**/ {{{0X3FD44003, 0X74071092} },
+/**/ {{0X3FD39CB8, 0X0F0A4000} },
+/**/ {{0X3FED1681, 0X3BA47A6B} },
+/**/ {{0XBFD0BB6C, 0XD8788947} },
+/**/ {{0XBFC66BE2, 0X589596A6} },
+/**/ {{0X3FC8E1E5, 0XC9B3EC1E} },
+/**/ {{0X3F78E868, 0XD20FAB86} } },
+/**/ {{{0X3FD48000, 0XC880F200} },
+/**/ {{0X3FD3D6D1, 0XDEFFB460} },
+/**/ {{0X3FED05B5, 0XCADC576C} },
+/**/ {{0XBFD0DCC2, 0XA1D352C2} },
+/**/ {{0XBFC60858, 0X3D7D2574} },
+/**/ {{0X3FC8E4E3, 0X03208BC0} },
+/**/ {{0X3F6AC909, 0X6379E732} } },
+/**/ {{{0X3FD4C000, 0X4D97D2CB} },
+/**/ {{0X3FD410CB, 0XF3A2E220} },
+/**/ {{0X3FECF4C8, 0XBB7ED511} },
+/**/ {{0XBFD0FD84, 0X37766A49} },
+/**/ {{0XBFC5A4C2, 0X5AABC13C} },
+/**/ {{0X3FC8E616, 0XC80DAC4B} },
+/**/ {{0X3F4038AA, 0XB04695C2} } },
+/**/ {{{0X3FD4FFFD, 0X9397539F} },
+/**/ {{0X3FD44AA2, 0X06A7DEC0} },
+/**/ {{0X3FECE3BB, 0XCF479DDE} },
+/**/ {{0XBFD11DAF, 0X4D122984} },
+/**/ {{0XBFC5412E, 0XB1024DF0} },
+/**/ {{0X3FC8E587, 0X1B2C560D} },
+/**/ {{0XBF625DA8, 0X951C088D} } },
+/**/ {{{0X3FD53FFF, 0XF304715F} },
+/**/ {{0X3FD4845A, 0X791F3900} },
+/**/ {{0X3FECD28D, 0XA45E0FD8} },
+/**/ {{0XBFD13D47, 0X8D61F221} },
+/**/ {{0XBFC4DD98, 0XD3E9BB99} },
+/**/ {{0X3FC8E33A, 0X0F181507} },
+/**/ {{0XBF743C33, 0XD08BD25C} } },
+/**/ {{{0X3FD58002, 0XE88EA386} },
+/**/ {{0X3FD4BDF0, 0XF575D6C0} },
+/**/ {{0X3FECC140, 0X02035609} },
+/**/ {{0XBFD15C4A, 0XB808071E} },
+/**/ {{0XBFC47A0E, 0XB2945FCF} },
+/**/ {{0X3FC8DF35, 0XFC056447} },
+/**/ {{0XBF7F2011, 0XB00A45CD} } },
+/**/ {{{0X3FD5BFFD, 0X70F4D590} },
+/**/ {{0X3FD4F75D, 0X284D7AE0} },
+/**/ {{0X3FECAFD5, 0XF2DE98B6} },
+/**/ {{0XBFD17AB4, 0XA2B42F42} },
+/**/ {{0XBFC416A5, 0X1C285A92} },
+/**/ {{0X3FC8D982, 0X511D6C5A} },
+/**/ {{0XBF84ECC1, 0X77008605} } },
+/**/ {{{0X3FD5FFFD, 0XB70D6E53} },
+/**/ {{0X3FD530AB, 0X8E2FF500} },
+/**/ {{0X3FEC9E4C, 0X32D2429D} },
+/**/ {{0XBFD1988C, 0X35190681} },
+/**/ {{0XBFC3B34C, 0XBF748319} },
+/**/ {{0X3FC8D224, 0X98D3A613} },
+/**/ {{0XBF8A33D4, 0XAA295F9F} } },
+/**/ {{{0X3FD63FFC, 0X5C7399E2} },
+/**/ {{0X3FD569D5, 0X4F022E80} },
+/**/ {{0X3FEC8CA5, 0X58DD180F} },
+/**/ {{0XBFD1B5CE, 0X1D701DE4} },
+/**/ {{0XBFC35017, 0XA7806A5A} },
+/**/ {{0X3FC8C924, 0X56C01CF9} },
+/**/ {{0XBF8F64D9, 0X942059E1} } },
+/**/ {{{0X3FD67FFD, 0X9A1AC7D2} },
+/**/ {{0X3FD5A2DD, 0XF50031E0} },
+/**/ {{0X3FEC7AE0, 0XCEFF6DEB} },
+/**/ {{0XBFD1D27C, 0X7C8C245B} },
+/**/ {{0XBFC2ED05, 0XC6AA933F} },
+/**/ {{0X3FC8BE87, 0XDDC5CF1F} },
+/**/ {{0XBF923FB6, 0XD594386F} } },
+/**/ {{{0X3FD6BFFD, 0X6F7B9353} },
+/**/ {{0X3FD5DBC1, 0XB4E066C0} },
+/**/ {{0X3FEC6900, 0X456B591A} },
+/**/ {{0XBFD1EE95, 0XC2D6D0AA} },
+/**/ {{0XBFC28A23, 0XB11086F7} },
+/**/ {{0X3FC8B256, 0XDDE22D5A} },
+/**/ {{0XBF94C19A, 0X489D85A4} } },
+/**/ {{{0X3FD6FFFB, 0XF02A83E4} },
+/**/ {{0X3FD61480, 0X6A237DC0} },
+/**/ {{0X3FEC5704, 0X4CC81773} },
+/**/ {{0XBFD20A1A, 0X4B9029CA} },
+/**/ {{0XBFC22777, 0X89F5FB1C} },
+/**/ {{0X3FC8A498, 0X9B09E911} },
+/**/ {{0XBF9737EC, 0X130D419A} } },
+/**/ {{{0X3FD73FFE, 0X128C213A} },
+/**/ {{0X3FD64D1E, 0X42499480} },
+/**/ {{0X3FEC44EC, 0X129C0D30} },
+/**/ {{0XBFD2250C, 0X83787259} },
+/**/ {{0XBFC1C4FF, 0XD55BE4FC} },
+/**/ {{0X3FC89553, 0X36B2D603} },
+/**/ {{0XBF99A284, 0X2E43DF46} } },
+/**/ {{{0X3FD77FFB, 0XEA0CDC7A} },
+/**/ {{0X3FD68594, 0X05B0E220} },
+/**/ {{0X3FEC32BA, 0X687132C0} },
+/**/ {{0XBFD23F69, 0X7273497E} },
+/**/ {{0XBFC162CE, 0XCD39B037} },
+/**/ {{0X3FC8848F, 0XFA930AAF} },
+/**/ {{0XBF9C013D, 0XA4554412} } },
+/**/ {{{0X3FD7C003, 0XF18EDAB8} },
+/**/ {{0X3FD6BDEE, 0X4127BEE0} },
+/**/ {{0X3FEC206B, 0XC01607BD} },
+/**/ {{0XBFD25937, 0X5FEE2F42} },
+/**/ {{0XBFC100D4, 0X307761E1} },
+/**/ {{0X3FC87252, 0X5DFEC556} },
+/**/ {{0XBF9E53F6, 0X7958F973} } },
+/**/ {{{0X3FD7FFFD, 0X41F35C4C} },
+/**/ {{0X3FD6F616, 0XDA6607A0} },
+/**/ {{0X3FEC0E07, 0XCDDC8437} },
+/**/ {{0XBFD2726C, 0XBFB4DAEA} },
+/**/ {{0XBFC09F3B, 0XE0DB1472} },
+/**/ {{0X3FC85EA9, 0X2A95AA1B} },
+/**/ {{0XBFA04D47, 0XD872CFA2} } },
+/**/ {{{0X3FD84003, 0X26C7C46B} },
+/**/ {{0X3FD72E25, 0X96B8BE00} },
+/**/ {{0X3FEBFB87, 0X4CDEDF38} },
+/**/ {{0XBFD28B14, 0XD09404F3} },
+/**/ {{0XBFC03DE1, 0XE7FB61F2} },
+/**/ {{0X3FC84993, 0XACB33BE9} },
+/**/ {{0XBFA16A76, 0X9B1DE607} } },
+/**/ {{{0X3FD88003, 0XCA90B179} },
+/**/ {{0X3FD7660A, 0XA104A220} },
+/**/ {{0X3FEBE8EF, 0XF236E2F6} },
+/**/ {{0XBFD2A329, 0X19A94DDF} },
+/**/ {{0XBFBFB9CE, 0X0856A081} },
+/**/ {{0X3FC8331F, 0X33F70280} },
+/**/ {{0XBFA2817A, 0XF01308CC} } },
+/**/ {{{0X3FD8C003, 0XE9692FD5} },
+/**/ {{0X3FD79DC9, 0XF0B2CB00} },
+/**/ {{0X3FEBD640, 0XF2966495} },
+/**/ {{0XBFD2BAAB, 0XFD6EC2EA} },
+/**/ {{0XBFBEF892, 0XE08E9C2D} },
+/**/ {{0X3FC81B52, 0X031873E3} },
+/**/ {{0XBFA39249, 0XAC12113D} } },
+/**/ {{{0X3FD8FFFE, 0X35BE5C5F} },
+/**/ {{0X3FD7D55E, 0XBDCCDFC0} },
+/**/ {{0X3FEBC37C, 0X6EABCF77} },
+/**/ {{0XBFD2D19C, 0X2D74F445} },
+/**/ {{0XBFBE382C, 0XE63F2CDB} },
+/**/ {{0X3FC80236, 0X0E6FE2AE} },
+/**/ {{0XBFA49CD9, 0X0E66AB41} } },
+/**/ {{{0X3FD94002, 0XAA8974CD} },
+/**/ {{0X3FD80CD6, 0XB8AFD880} },
+/**/ {{0X3FEBB09E, 0X4468CCBA} },
+/**/ {{0XBFD2E7FF, 0XEC84E686} },
+/**/ {{0XBFBD7876, 0X88C659E8} },
+/**/ {{0X3FC7E7CC, 0XC2F15460} },
+/**/ {{0XBFA5A120, 0XB410D3ED} } },
+/**/ {{{0X3FD98002, 0XE08EFDEA} },
+/**/ {{0X3FD84425, 0X34856920} },
+/**/ {{0X3FEB9DAB, 0X3F290478} },
+/**/ {{0XBFD2FDD2, 0XBB81EDEF} },
+/**/ {{0XBFBCB9A5, 0X31E68398} },
+/**/ {{0X3FC7CC23, 0XC2DBB11B} },
+/**/ {{0XBFA69F19, 0X98467E78} } },
+/**/ {{{0X3FD9C002, 0X75294B6B} },
+/**/ {{0X3FD87B4D, 0X299F6200} },
+/**/ {{0X3FEB8AA2, 0XDE96CF1F} },
+/**/ {{0XBFD31316, 0X8C4D45D2} },
+/**/ {{0XBFBBFBB7, 0XEDCE4DBA} },
+/**/ {{0X3FC7AF41, 0X8907FEC9} },
+/**/ {{0XBFA796BE, 0X07419F55} } },
+/**/ {{{0X3FDA0002, 0XF3E490EC} },
+/**/ {{0X3FD8B24F, 0XC21A4500} },
+/**/ {{0X3FEB7785, 0X3B5EF7DD} },
+/**/ {{0XBFD327CC, 0X8EAE70CD} },
+/**/ {{0XBFBB3EB3, 0XD49E40DA} },
+/**/ {{0X3FC7912D, 0X4D93F7EA} },
+/**/ {{0XBFA88809, 0X9E21606A} } },
+/**/ {{{0X3FDA3FFF, 0X458461B6} },
+/**/ {{0X3FD8E928, 0X7754D2C0} },
+/**/ {{0X3FEB6454, 0X6A0DAF0E} },
+/**/ {{0XBFD33BF3, 0XDC2A9A3F} },
+/**/ {{0XBFBA82B1, 0X4917D003} },
+/**/ {{0X3FC771F1, 0X7C7566CF} },
+/**/ {{0XBFA972F9, 0X3D700DD8} } },
+/**/ {{{0X3FDA8002, 0X87E12AAE} },
+/**/ {{0X3FD91FE0, 0XA5DFD000} },
+/**/ {{0X3FEB510D, 0XA0D82E05} },
+/**/ {{0XBFD34F90, 0XA76AD312} },
+/**/ {{0XBFB9C798, 0XDEEC35AD} },
+/**/ {{0X3FC75190, 0X8A0EF43E} },
+/**/ {{0XBFAA578B, 0X0872EFC8} } },
+/**/ {{{0X3FDAC001, 0X49A86C84} },
+/**/ {{0X3FD9566E, 0X5C4516E0} },
+/**/ {{0X3FEB3DB4, 0XDD03F6B6} },
+/**/ {{0XBFD362A0, 0X291C1F82} },
+/**/ {{0XBFB90D95, 0X03F6DF60} },
+/**/ {{0X3FC73018, 0X25091E92} },
+/**/ {{0XBFAB35BE, 0X577A022B} } },
+/**/ {{{0X3FDAFFFF, 0X2F4CC2E1} },
+/**/ {{0X3FD98CD4, 0X94226540} },
+/**/ {{0X3FEB2A49, 0X9297200A} },
+/**/ {{0XBFD37524, 0X5153FD01} },
+/**/ {{0XBFB854A3, 0XAE3DE27E} },
+/**/ {{0X3FC70D8E, 0X7EB3F331} },
+/**/ {{0XBFAC0D93, 0XB6AD570E} } },
+/**/ {{{0X3FDB4000, 0XC2F3711E} },
+/**/ {{0X3FD9C317, 0X01CDC4C0} },
+/**/ {{0X3FEB16CA, 0XEA63781B} },
+/**/ {{0XBFD3871F, 0X3665B649} },
+/**/ {{0XBFB79CC0, 0X3F70FBC6} },
+/**/ {{0X3FC6E9F9, 0X061DFC2E} },
+/**/ {{0XBFACDF0C, 0XD837F9C3} } },
+/**/ {{{0X3FDB8000, 0XA777E180} },
+/**/ {{0X3FD9F930, 0XF3748F20} },
+/**/ {{0X3FEB033B, 0X0FB0162A} },
+/**/ {{0XBFD39890, 0X25978CAB} },
+/**/ {{0XBFB6E602, 0X5C765AAB} },
+/**/ {{0X3FC6C562, 0X9C16D678} },
+/**/ {{0XBFADAA2C, 0X92A16EBF} } },
+/**/ {{{0X3FDBBFFD, 0X087E14ED} },
+/**/ {{0X3FDA2F20, 0XBF0DDB00} },
+/**/ {{0X3FEAEF9B, 0X1CCE6E94} },
+/**/ {{0XBFD3A977, 0X8B73E3C3} },
+/**/ {{0XBFB63077, 0X09EFD1CC} },
+/**/ {{0X3FC69FD4, 0X58408D3A} },
+/**/ {{0XBFAE6EF6, 0XD2E48013} } },
+/**/ {{{0X3FDC0000, 0XF0086783} },
+/**/ {{0X3FDA64EF, 0X8D448080} },
+/**/ {{0X3FEADBE8, 0X35990B5A} },
+/**/ {{0XBFD3B9D9, 0X27241B86} },
+/**/ {{0XBFB57C06, 0XC20E4001} },
+/**/ {{0X3FC6794F, 0X90E6C8AB} },
+/**/ {{0XBFAF2D70, 0X9A630A27} } },
+/**/ {{{0X3FDC4001, 0X863E58F8} },
+/**/ {{0X3FDA9A94, 0X1C3A1BA0} },
+/**/ {{0X3FEAC826, 0X35ED7DD2} },
+/**/ {{0XBFD3C9B3, 0X0C075B50} },
+/**/ {{0XBFB4C8D7, 0XA429793C} },
+/**/ {{0X3FC651E2, 0X95903C22} },
+/**/ {{0XBFAFE59F, 0XF0F8B649} } },
+/**/ {{{0X3FDC7FFC, 0X6C62C3BF} },
+/**/ {{0X3FDAD00C, 0X580A5840} },
+/**/ {{0X3FEAB456, 0X62D1D808} },
+/**/ {{0XBFD3D905, 0XACBB06EC} },
+/**/ {{0XBFB416F7, 0X421E42DC} },
+/**/ {{0X3FC62996, 0XE5608EFD} },
+/**/ {{0XBFB04BC5, 0XF14B649A} } },
+/**/ {{{0X3FDCC002, 0X34B2A209} },
+/**/ {{0X3FDB0565, 0XF68F3B40} },
+/**/ {{0X3FEAA074, 0X1E3DC946} },
+/**/ {{0XBFD3E7D5, 0XE2DB674E} },
+/**/ {{0XBFB3663E, 0XA4833FFE} },
+/**/ {{0X3FC60069, 0XC4F0392B} },
+/**/ {{0XBFB0A19E, 0X38B10201} } },
+/**/ {{{0X3FDCFFFC, 0XAAC5F9F9} },
+/**/ {{0X3FDB3A8E, 0X59C45CC0} },
+/**/ {{0X3FEA8C86, 0XD2389C24} },
+/**/ {{0XBFD3F61F, 0X8362B2CB} },
+/**/ {{0XBFB2B6F1, 0XC6C746A6} },
+/**/ {{0X3FC5D671, 0X426D2946} },
+/**/ {{0XBFB0F45D, 0X4981CE75} } },
+/**/ {{{0X3FDD4004, 0X0D800C64} },
+/**/ {{0X3FDB6F99, 0X88AF6580} },
+/**/ {{0X3FEA7887, 0X7498CED2} },
+/**/ {{0XBFD403E8, 0XEF8975C0} },
+/**/ {{0XBFB208D4, 0XBEA81E2B} },
+/**/ {{0X3FC5ABA5, 0X283FFA4E} },
+/**/ {{0XBFB14408, 0X11705130} } },
+/**/ {{{0X3FDD7FFE, 0XB0E64500} },
+/**/ {{0X3FDBA472, 0X2324E140} },
+/**/ {{0X3FEA647E, 0X8C5AD680} },
+/**/ {{0XBFD4112D, 0XA03F042D} },
+/**/ {{0XBFB15C33, 0X9580389C} },
+/**/ {{0X3FC5801E, 0X49D9889E} },
+/**/ {{0XBFB190A3, 0XEF96554F} } },
+/**/ {{{0X3FDDBFFE, 0X2DFCF4EB} },
+/**/ {{0X3FDBD926, 0X9F1D27A0} },
+/**/ {{0X3FEA5067, 0X1AC286CA} },
+/**/ {{0XBFD41DF2, 0X590A4DE1} },
+/**/ {{0XBFB0B0E4, 0X8BD1EFA5} },
+/**/ {{0X3FC553D8, 0X702506D0} },
+/**/ {{0XBFB1DA36, 0XADA415A6} } },
+/**/ {{{0X3FDDFFFD, 0X8A34BBC2} },
+/**/ {{0X3FDC0DB2, 0XC4F7A2C0} },
+/**/ {{0X3FEA3C43, 0X2EF70BB3} },
+/**/ {{0XBFD42A37, 0X16EE647C} },
+/**/ {{0XBFB006FA, 0XDB6270BB} },
+/**/ {{0X3FC526DE, 0X86F08DE6} },
+/**/ {{0XBFB220C6, 0X7E5061FB} } },
+/**/ {{{0X3FDE3FFD, 0XD26415C0} },
+/**/ {{0X3FDC4217, 0X58282940} },
+/**/ {{0X3FEA2812, 0XF391DDCB} },
+/**/ {{0XBFD435FD, 0X18EDDF0A} },
+/**/ {{0XBFAEBCF2, 0X88A589AF} },
+/**/ {{0X3FC4F937, 0X4CF96163} },
+/**/ {{0XBFB26459, 0XF6A18481} } },
+/**/ {{{0X3FDE7FFF, 0X37F72672} },
+/**/ {{0X3FDC7654, 0X67AA3DC0} },
+/**/ {{0X3FEA13D6, 0XD6CE86B3} },
+/**/ {{0XBFD44145, 0X74037E91} },
+/**/ {{0XBFAD6EC9, 0X3B2CC445} },
+/**/ {{0X3FC4CAEA, 0X0564F101} },
+/**/ {{0XBFB2A4F8, 0X0C49CD64} } },
+/**/ {{{0X3FDEBFFD, 0XA11BC00F} },
+/**/ {{0X3FDCAA66, 0X85E23660} },
+/**/ {{0X3FE9FF90, 0XA25C2396} },
+/**/ {{0XBFD44C10, 0X8A64724F} },
+/**/ {{0XBFAC2399, 0X2F871E82} },
+/**/ {{0X3FC49C01, 0X0AFBFB85} },
+/**/ {{0XBFB2E2A8, 0X0F0FF3FE} } },
+/**/ {{{0X3FDEFFFF, 0X3313756D} },
+/**/ {{0X3FDCDE52, 0X9D30CC20} },
+/**/ {{0X3FE9EB3E, 0XDFF9491F} },
+/**/ {{0XBFD45660, 0X7E6ABAAE} },
+/**/ {{0XBFAADB4C, 0X3E8AA98D} },
+/**/ {{0X3FC46C7F, 0X25D8FF7D} },
+/**/ {{0XBFB31D71, 0XA71D448D} } },
+/**/ {{{0X3FDF4001, 0X914B856E} },
+/**/ {{0X3FDD1216, 0XAAC1BB20} },
+/**/ {{0X3FE9D6E2, 0XC9BC4315} },
+/**/ {{0XBFD46036, 0X004E7E91} },
+/**/ {{0XBFA995F7, 0XFB901F89} },
+/**/ {{0X3FC43C6D, 0X3F5BE04A} },
+/**/ {{0XBFB3555C, 0XCE8ABF92} } },
+/**/ {{{0X3FDF8003, 0XCD144428} },
+/**/ {{0X3FDD45B1, 0XD93E9640} },
+/**/ {{0X3FE9C27D, 0X256FDFEB} },
+/**/ {{0XBFD46992, 0X09F7C145} },
+/**/ {{0XBFA853A9, 0XED521174} },
+/**/ {{0X3FC40BD3, 0X2B27751F} },
+/**/ {{0XBFB38A71, 0XCFA5C5F2} } },
+/**/ {{{0X3FDFC002, 0X00545BD9} },
+/**/ {{0X3FDD7920, 0XF536D960} },
+/**/ {{0X3FE9AE0F, 0XAAE99EA5} },
+/**/ {{0XBFD47275, 0X38DD66F4} },
+/**/ {{0XBFA7147D, 0XB5484F74} },
+/**/ {{0X3FC3DABA, 0XF8EFC373} },
+/**/ {{0XBFB3BCB9, 0X3EA6B864} } },
+/**/ {{{0X3FDFFFFB, 0XDA6F2AA8} },
+/**/ {{0X3FDDAC63, 0XB420FAA0} },
+/**/ {{0X3FE9999A, 0XED4D0CAB} },
+/**/ {{0XBFD47AE0, 0XBFCC6072} },
+/**/ {{0XBFA5D87C, 0X25BF7A4A} },
+/**/ {{0X3FC3A92B, 0XF5999EE5} },
+/**/ {{0XBFB3EC3B, 0XF7F09D08} } },
+/**/ {{{0X3FE01FFF, 0XA65118C8} },
+/**/ {{0X3FDDDF85, 0X2BF70C00} },
+/**/ {{0X3FE9851A, 0XECD72AE5} },
+/**/ {{0XBFD482D7, 0X8F5794C5} },
+/**/ {{0XBFA49F68, 0X2E4A020B} },
+/**/ {{0X3FC37722, 0X25A156DA} },
+/**/ {{0XBFB41903, 0X19F58064} } },
+/**/ {{{0X3FE04001, 0X9C0B0556} },
+/**/ {{0X3FDE127D, 0XFA2BA200} },
+/**/ {{0X3FE97093, 0X08C17A55} },
+/**/ {{0XBFD48A59, 0X957A7EFD} },
+/**/ {{0XBFA36976, 0X2648F2BB} },
+/**/ {{0X3FC344AB, 0X592569B1} },
+/**/ {{0XBFB44318, 0X03752DDB} } },
+/**/ {{{0X3FE05FFF, 0XC24501DB} },
+/**/ {{0X3FDE4547, 0XA495BCC0} },
+/**/ {{0X3FE95C06, 0X4F225B79} },
+/**/ {{0XBFD49167, 0X2163F5B8} },
+/**/ {{0XBFA236D3, 0X4B79B89F} },
+/**/ {{0X3FC311D4, 0XB530B7BE} },
+/**/ {{0XBFB46A84, 0X4D931476} } },
+/**/ {{{0X3FE07FFE, 0X865125FC} },
+/**/ {{0X3FDE77E9, 0X2A5FAD60} },
+/**/ {{0X3FE94772, 0X5C13B0EA} },
+/**/ {{0XBFD49802, 0X6F33ABCA} },
+/**/ {{0XBFA1075A, 0XDE947C6B} },
+/**/ {{0X3FC2DE9D, 0XD8D5E01B} },
+/**/ {{0XBFB48F51, 0XCA17CA60} } },
+/**/ {{{0X3FE0A002, 0X107EAC25} },
+/**/ {{0X3FDEAA69, 0X08243180} },
+/**/ {{0X3FE932D4, 0XF339824B} },
+/**/ {{0XBFD49E2D, 0X7145F475} },
+/**/ {{0XBF9FB5D8, 0X00571424} },
+/**/ {{0X3FC2AB06, 0X85D1CF84} },
+/**/ {{0XBFB4B18A, 0X7DBBBABE} } },
+/**/ {{{0X3FE0BFFF, 0X7376E5D4} },
+/**/ {{0X3FDEDCB5, 0XF79FF560} },
+/**/ {{0X3FE91E35, 0X8EE1B492} },
+/**/ {{0XBFD4A3E7, 0X49498453} },
+/**/ {{0XBF9D63E4, 0XBE685C6F} },
+/**/ {{0X3FC27726, 0XC4B1F032} },
+/**/ {{0XBFB4D138, 0X9E6ECC3A} } },
+/**/ {{{0X3FE0DFFE, 0X1715EE2E} },
+/**/ {{0X3FDF0EDB, 0X9BE1BB80} },
+/**/ {{0X3FE9098F, 0XD993BD60} },
+/**/ {{0XBFD4A932, 0X9B84E907} },
+/**/ {{0XBF9B185A, 0XE07DBA5E} },
+/**/ {{0X3FC242F8, 0XF2D7A804} },
+/**/ {{0XBFB4EE66, 0X8DDAA340} } },
+/**/ {{{0X3FE10001, 0X7F3D776C} },
+/**/ {{0X3FDF40DF, 0X6119E100} },
+/**/ {{0X3FE8F4E1, 0XFB44BCFB} },
+/**/ {{0XBFD4AE11, 0X16E3467E} },
+/**/ {{0XBF98D304, 0XCF368422} },
+/**/ {{0X3FC20E7D, 0X736708AE} },
+/**/ {{0XBFB5091E, 0XD7B3658D} } },
+/**/ {{{0X3FE11FFE, 0XFD8C7B65} },
+/**/ {{0X3FDF72B0, 0X8FD21560} },
+/**/ {{0X3FE8E033, 0X4770FB0A} },
+/**/ {{0XBFD4B282, 0X5C0F6783} },
+/**/ {{0XBF9694AC, 0X7FFE0364} },
+/**/ {{0X3FC1D9CB, 0XE529BF4C} },
+/**/ {{0XBFB5216C, 0X2C73E5F0} } },
+/**/ {{{0X3FE14000, 0XAFA3EE71} },
+/**/ {{0X3FDFA45E, 0XE3324D60} },
+/**/ {{0X3FE8CB7D, 0X9FF684DF} },
+/**/ {{0XBFD4B689, 0X17ADD34D} },
+/**/ {{0XBF945CA3, 0X67276E70} },
+/**/ {{0X3FC1A4D9, 0XA1FBF3B1} },
+/**/ {{0XBFB53759, 0X5FBA2374} } },
+/**/ {{{0X3FE15FFF, 0X73336187} },
+/**/ {{0X3FDFD5DF, 0X3DE48D00} },
+/**/ {{0X3FE8B6C6, 0X0CBE3546} },
+/**/ {{0XBFD4BA25, 0X9B291BCB} },
+/**/ {{0XBF922B6F, 0X5FB712CC} },
+/**/ {{0X3FC16FB8, 0X55E28B0B} },
+/**/ {{0XBFB54AF1, 0X633F423C} } },
+/**/ {{{0X3FE17FFF, 0X6C447B82} },
+/**/ {{0X3FE0039C, 0X0208ECC0} },
+/**/ {{0X3FE8A20A, 0X48F15926} },
+/**/ {{0XBFD4BD59, 0XA5808AC3} },
+/**/ {{0XBF9000CD, 0X5EEF6F2A} },
+/**/ {{0X3FC13A66, 0XEBE54AA7} },
+/**/ {{0XBFB55C3F, 0X45420CE4} } },
+/**/ {{{0X3FE19FFF, 0XAE932B61} },
+/**/ {{0X3FE01C33, 0XE0091BC0} },
+/**/ {{0X3FE88D4B, 0X55664E00} },
+/**/ {{0XBFD4C026, 0X579F5ABB} },
+/**/ {{0XBF8BB9A6, 0X8797C32A} },
+/**/ {{0X3FC104EC, 0X95D4F64E} },
+/**/ {{0XBFB56B4E, 0X2BBC325E} } },
+/**/ {{{0X3FE1BFFF, 0XBA12AE50} },
+/**/ {{0X3FE034B6, 0XD3ABA020} },
+/**/ {{0X3FE87889, 0XEBDCCF04} },
+/**/ {{0XBFD4C28C, 0XE6D463C1} },
+/**/ {{0XBF877F1C, 0XB36211FC} },
+/**/ {{0X3FC0CF4F, 0XB90B11E7} },
+/**/ {{0XBFB57829, 0X52DCBE1A} } },
+/**/ {{{0X3FE1E001, 0X4B459E41} },
+/**/ {{0X3FE04D26, 0X2DC05800} },
+/**/ {{0X3FE863C5, 0X51625B6A} },
+/**/ {{0XBFD4C48E, 0XAFFDD399} },
+/**/ {{0XBF8351CB, 0X603059CA} },
+/**/ {{0X3FC09992, 0XDE65D0D9} },
+/**/ {{0XBFB582DC, 0X087BB367} } },
+/**/ {{{0X3FE20000, 0X32306F33} },
+/**/ {{0X3FE0657E, 0XBAFB6CE0} },
+/**/ {{0X3FE84F00, 0XA1E2EEC3} },
+/**/ {{0XBFD4C62C, 0XB79EC8C6} },
+/**/ {{0XBF7E6488, 0XD95DE8D1} },
+/**/ {{0X3FC063C2, 0X661DF241} },
+/**/ {{0XBFB58B71, 0XAAA63BAD} } },
+/**/ {{{0X3FE22000, 0XD30A486C} },
+/**/ {{0X3FE07DC3, 0XD2165080} },
+/**/ {{0X3FE83A39, 0X66B3E5BF} },
+/**/ {{0XBFD4C768, 0X7DE04DEE} },
+/**/ {{0XBF763FF7, 0X800F052F} },
+/**/ {{0X3FC02DDC, 0X28F35EDD} },
+/**/ {{0XBFB591F5, 0XA351CF91} } },
+/**/ {{{0X3FE23FFE, 0X215E03FC} },
+/**/ {{0X3FE095F1, 0X9F380A00} },
+/**/ {{0X3FE82573, 0X48BE5F3F} },
+/**/ {{0XBFD4C843, 0X1B793F77} },
+/**/ {{0XBF6C6E63, 0X625993B8} },
+/**/ {{0X3FBFEFDB, 0X8C5E4B3B} },
+/**/ {{0XBFB59673, 0X66FE9CA7} } },
+/**/ {{{0X3FE26000, 0X6833D65D} },
+/**/ {{0X3FE0AE0E, 0X6496A8C0} },
+/**/ {{0X3FE810A9, 0X45B44AA3} },
+/**/ {{0XBFD4C8BE, 0X055B407A} },
+/**/ {{0XBF5920A7, 0XAE83F0A4} },
+/**/ {{0X3FBF83DC, 0X860A6A5E} },
+/**/ {{0XBFB598F6, 0X70D98EE7} } },
+/**/ {{{0X3FE28000, 0XE82D4D50} },
+/**/ {{0X3FE0C615, 0X095F5300} },
+/**/ {{0X3FE7FBE0, 0X1E9337B7} },
+/**/ {{0XBFD4C8DA, 0X573C6F6A} },
+/**/ {{0X3F38B6C7, 0XC50F565D} },
+/**/ {{0X3FBF17DB, 0XC9C4B6CA} },
+/**/ {{0XBFB5998A, 0X45D6DAE0} } },
+/**/ {{{0X3FE29FFF, 0X203B6A0B} },
+/**/ {{0X3FE0DE05, 0X30852720} },
+/**/ {{0X3FE7E718, 0X8520538D} },
+/**/ {{0XBFD4C899, 0X668C6963} },
+/**/ {{0X3F6286EC, 0XBECA8AB0} },
+/**/ {{0X3FBEABE4, 0X9B6AC5BD} },
+/**/ {{0XBFB5983A, 0X575A9684} } },
+/**/ {{{0X3FE2C001, 0XE91A9D93} },
+/**/ {{0X3FE0F5E3, 0XF7817A20} },
+/**/ {{0X3FE7D24E, 0X63A45D97} },
+/**/ {{0XBFD4C7FC, 0X5F83C46D} },
+/**/ {{0X3F70E199, 0X5D9C800A} },
+/**/ {{0X3FBE3FE9, 0X3721A8E0} },
+/**/ {{0XBFB59512, 0X377DA840} } },
+/**/ {{{0X3FE2DFFF, 0XC6FB4948} },
+/**/ {{0X3FE10DAA, 0X4CE36040} },
+/**/ {{0X3FE7BD88, 0X3E39011F} },
+/**/ {{0XBFD4C704, 0XB5EAE11F} },
+/**/ {{0X3F786398, 0X192C622B} },
+/**/ {{0X3FBDD412, 0XB62BA357} },
+/**/ {{0XBFB5901D, 0X5F0E020E} } },
+/**/ {{{0X3FE2FFFF, 0X39CB4EED} },
+/**/ {{0X3FE1255D, 0X0970AD60} },
+/**/ {{0X3FE7A8C2, 0X365B7A9B} },
+/**/ {{0XBFD4C5B3, 0X8925F532} },
+/**/ {{0X3F7FCB03, 0X785E3070} },
+/**/ {{0X3FBD6854, 0X0EEDF3B3} },
+/**/ {{0XBFB58967, 0X479C252A} } },
+/**/ {{{0X3FE31FFE, 0X002E31CB} },
+/**/ {{0X3FE13CFA, 0X81FD3780} },
+/**/ {{0X3FE793FE, 0X1BBE9667} },
+/**/ {{0XBFD4C40A, 0X3046F4C7} },
+/**/ {{0X3F838BAE, 0X8F5E6BF1} },
+/**/ {{0X3FBCFCBD, 0X83775C98} },
+/**/ {{0XBFB580FB, 0X62E887AB} } },
+/**/ {{{0X3FE34000, 0XEDC7BFFD} },
+/**/ {{0X3FE15486, 0X44D05200} },
+/**/ {{0X3FE77F39, 0X244A1DA5} },
+/**/ {{0XBFD4C209, 0X9FB764C1} },
+/**/ {{0X3F8724E2, 0X851B0BE5} },
+/**/ {{0X3FBC9147, 0X507C76E0} },
+/**/ {{0XBFB576E5, 0X19C7F0AB} } },
+/**/ {{{0X3FE36001, 0XCE042830} },
+/**/ {{0X3FE16BFB, 0XC1656AE0} },
+/**/ {{0X3FE76A77, 0XAD3B2B77} },
+/**/ {{0XBFD4BFB3, 0X74AAC296} },
+/**/ {{0X3F8AB070, 0X05B229C2} },
+/**/ {{0X3FBC260E, 0X87DCA54B} },
+/**/ {{0XBFB56B2F, 0XC90DF763} } },
+/**/ {{{0X3FE37FFE, 0X89B8FC54} },
+/**/ {{0X3FE18359, 0X77D0BA80} },
+/**/ {{0X3FE755BB, 0X660CAA3D} },
+/**/ {{0XBFD4BD09, 0X308BB975} },
+/**/ {{0X3F8E2E26, 0XFE0A1240} },
+/**/ {{0X3FBBBB22, 0X18790F26} },
+/**/ {{0XBFB55DE6, 0XC094F3DA} } },
+/**/ {{{0X3FE3A001, 0X9B4DA842} },
+/**/ {{0X3FE19AA7, 0X100CD140} },
+/**/ {{0X3FE740FD, 0XD801F889} },
+/**/ {{0XBFD4BA0B, 0X2C32C656} },
+/**/ {{0X3F90CF99, 0X8ECA44A2} },
+/**/ {{0X3FBB5066, 0XC9863443} },
+/**/ {{0XBFB54F15, 0X406672B5} } },
+/**/ {{{0X3FE3C000, 0XCE6B63E8} },
+/**/ {{0X3FE1B1DD, 0X1D0B0AE0} },
+/**/ {{0X3FE72C45, 0XF28670E6} },
+/**/ {{0XBFD4B6BB, 0X92422E2E} },
+/**/ {{0X3F928141, 0XA0D32146} },
+/**/ {{0X3FBAE606, 0X37452321} },
+/**/ {{0XBFB53EC6, 0X77D91F56} } },
+/**/ {{{0X3FE3DFFF, 0X114A2607} },
+/**/ {{0X3FE1C8FD, 0XC6FF6F20} },
+/**/ {{0X3FE71792, 0X206847A7} },
+/**/ {{0XBFD4B31B, 0X669BD306} },
+/**/ {{0X3F942C3A, 0X04FFD28A} },
+/**/ {{0X3FBA7BFD, 0XE7FC0825} },
+/**/ {{0XBFB52D05, 0X82F471BA} } },
+/**/ {{{0X3FE3FFFF, 0XC1DA9B7D} },
+/**/ {{0X3FE1E00B, 0X7F2E8840} },
+/**/ {{0X3FE702E0, 0X84371133} },
+/**/ {{0XBFD4AF2B, 0X8012FBE4} },
+/**/ {{0X3F95D0B4, 0XBFC47F4B} },
+/**/ {{0X3FBA1249, 0XD80AB6C5} },
+/**/ {{0XBFB519DD, 0X69A4108D} } },
+/**/ {{{0X3FE41FFE, 0XE11D9C33} },
+/**/ {{0X3FE1F703, 0X67C3EC20} },
+/**/ {{0X3FE6EE34, 0X026A76A0} },
+/**/ {{0XBFD4AAED, 0X96514B12} },
+/**/ {{0X3F976E83, 0X07BA2905} },
+/**/ {{0X3FB9A8FE, 0X261A1221} },
+/**/ {{0XBFB50559, 0X1D552BA0} } },
+/**/ {{{0X3FE43FFF, 0XFA174676} },
+/**/ {{0X3FE20DE8, 0X0FAFF860} },
+/**/ {{0X3FE6D98A, 0X9EA6D162} },
+/**/ {{0XBFD4A662, 0X6B927B3B} },
+/**/ {{0X3F9905D8, 0XF84ADBB0} },
+/**/ {{0X3FB94015, 0XDD484DB5} },
+/**/ {{0XBFB4EF83, 0X783EEF44} } },
+/**/ {{{0X3FE45FFF, 0X0D457FA4} },
+/**/ {{0X3FE224B6, 0X9F675300} },
+/**/ {{0X3FE6C4E7, 0X3A093351} },
+/**/ {{0XBFD4A18B, 0XCBF2BFF8} },
+/**/ {{0X3F9A968A, 0X84BB8C16} },
+/**/ {{0X3FB8D7A4, 0X93FBB975} },
+/**/ {{0XBFB4D867, 0X3B37E4FB} } },
+/**/ {{{0X3FE47FFE, 0X8F910E57} },
+/**/ {{0X3FE23B70, 0XDD92B840} },
+/**/ {{0X3FE6B048, 0X89B04359} },
+/**/ {{0XBFD49C6A, 0X974B07FF} },
+/**/ {{0X3F9C20BE, 0X25F20251} },
+/**/ {{0X3FB86FA8, 0X82E9673D} },
+/**/ {{0XBFB4C00F, 0X0D12F550} } },
+/**/ {{{0X3FE4A001, 0X7323FC6B} },
+/**/ {{0X3FE25218, 0XE34E3420} },
+/**/ {{0X3FE69BAC, 0XF277FE27} },
+/**/ {{0XBFD496FF, 0X7F856ABA} },
+/**/ {{0X3F9DA49E, 0X9928150C} },
+/**/ {{0X3FB8081E, 0X3EB66A26} },
+/**/ {{0XBFB4A685, 0X78AB06C5} } },
+/**/ {{{0X3FE4C000, 0XB1BF0500} },
+/**/ {{0X3FE268A9, 0XBD8B2C80} },
+/**/ {{0X3FE68719, 0X42ABBD42} },
+/**/ {{0XBFD4914C, 0XEC74E64A} },
+/**/ {{0X3F9F21DE, 0XD0C3EEEC} },
+/**/ {{0X3FB7A122, 0X5B30AA05} },
+/**/ {{0XBFB48BD4, 0XEC53EF43} } },
+/**/ {{{0X3FE4E001, 0X1D07207B} },
+/**/ {{0X3FE27F26, 0XDA64F7A0} },
+/**/ {{0X3FE6728A, 0XA7CFBEB2} },
+/**/ {{0XBFD48B53, 0X3FCBB247} },
+/**/ {{0X3FA04C60, 0XA7354A41} },
+/**/ {{0X3FB73AAA, 0XEFF6F27A} },
+/**/ {{0XBFB47007, 0XB81A6BB2} } },
+/**/ {{{0X3FE4FFFE, 0X5F36EB46} },
+/**/ {{0X3FE2958D, 0X35DDD180} },
+/**/ {{0X3FE65E04, 0X307B6AF3} },
+/**/ {{0XBFD48514, 0X828BB6E6} },
+/**/ {{0X3FA1048E, 0X48993ED9} },
+/**/ {{0X3FB6D4CB, 0X468D7C59} },
+/**/ {{0XBFB45328, 0X0D484989} } },
+/**/ {{{0X3FE52001, 0X2AFDF759} },
+/**/ {{0X3FE2ABE2, 0XEB1C3280} },
+/**/ {{0X3FE64980, 0X8DC5DAAD} },
+/**/ {{0XBFD47E90, 0X2C11E3B7} },
+/**/ {{0X3FA1B9AE, 0X88E1B343} },
+/**/ {{0X3FB66F6C, 0XFF4501BF} },
+/**/ {{0XBFB4353F, 0XFCD6B8DE} } },
+/**/ {{{0X3FE54001, 0XDFDB2423} },
+/**/ {{0X3FE2C222, 0XAB0402C0} },
+/**/ {{0X3FE63504, 0XE7E657FB} },
+/**/ {{0XBFD477C8, 0XEEE53FA9} },
+/**/ {{0X3FA26B9A, 0X696CD845} },
+/**/ {{0X3FB60AAD, 0X6A3AA6EF} },
+/**/ {{0XBFB41659, 0X7704E1F4} } },
+/**/ {{{0X3FE55FFE, 0X72D2A74F} },
+/**/ {{0X3FE2D84B, 0X16BE7240} },
+/**/ {{0X3FE62092, 0XCE54AEDE} },
+/**/ {{0XBFD470C0, 0X7B764156} },
+/**/ {{0X3FA31A4C, 0X4D9ABEE7} },
+/**/ {{0X3FB5A697, 0XA899A63D} },
+/**/ {{0XBFB3F67E, 0X49FA7FB1} } },
+/**/ {{{0X3FE58000, 0XEE716C33} },
+/**/ {{0X3FE2EE63, 0X284F3FE0} },
+/**/ {{0X3FE60C24, 0X181C5720} },
+/**/ {{0XBFD46975, 0XC383B0C1} },
+/**/ {{0X3FA3C5FF, 0XC40A1A5A} },
+/**/ {{0X3FB54311, 0X0B7B3B72} },
+/**/ {{0XBFB3D5B8, 0X21700401} } },
+/**/ {{{0X3FE59FFF, 0X9825CD2A} },
+/**/ {{0X3FE30464, 0X2DEFCF40} },
+/**/ {{0X3FE5F7BF, 0X3C14A317} },
+/**/ {{0XBFD461EC, 0X227A4CDE} },
+/**/ {{0X3FA46E85, 0X6DA8D837} },
+/**/ {{0X3FB4E03C, 0X6162F4C8} },
+/**/ {{0XBFB3B410, 0X857F5976} } },
+/**/ {{{0X3FE5BFFD, 0XFE2A42CD} },
+/**/ {{0X3FE31A50, 0XA5110DC0} },
+/**/ {{0X3FE5E362, 0X33CF1268} },
+/**/ {{0XBFD45A23, 0XF68B7DBC} },
+/**/ {{0X3FA513F5, 0XDE40F0E9} },
+/**/ {{0X3FB47E12, 0XDE05901E} },
+/**/ {{0XBFB39190, 0XDA5CABB5} } },
+/**/ {{{0X3FE5E000, 0X57330799} },
+/**/ {{0X3FE3302B, 0X75253480} },
+/**/ {{0X3FE5CF0A, 0X901DA45A} },
+/**/ {{0XBFD4521D, 0X552754CF} },
+/**/ {{0X3FA5B66B, 0XBBF000BB} },
+/**/ {{0X3FB41C8B, 0XD2BAF7B2} },
+/**/ {{0XBFB36E42, 0X5F53241A} } },
+/**/ {{{0X3FE60001, 0X4D6055DA} },
+/**/ {{0X3FE345F0, 0XFF2EDA60} },
+/**/ {{0X3FE5BABB, 0XF2EA5900} },
+/**/ {{0XBFD449DA, 0XB2008754} },
+/**/ {{0X3FA655D1, 0X18F56FBB} },
+/**/ {{0X3FB3BBBB, 0X89A0C1B2} },
+/**/ {{0XBFB34A2E, 0X2E8D60FC} } },
+/**/ {{{0X3FE62001, 0X2C3809CB} },
+/**/ {{0X3FE35BA1, 0X812D5040} },
+/**/ {{0X3FE5A676, 0X671E49E9} },
+/**/ {{0XBFD4415D, 0X230E6216} },
+/**/ {{0X3FA6F22D, 0X6B05C7F7} },
+/**/ {{0X3FB35BA4, 0XCFE6B72B} },
+/**/ {{0XBFB3255D, 0X3C3BFA3B} } },
+/**/ {{{0X3FE64000, 0X87B47ECC} },
+/**/ {{0X3FE3713D, 0X69715580} },
+/**/ {{0X3FE59239, 0XC8FB0E69} },
+/**/ {{0XBFD438A5, 0XA5BD1F6E} },
+/**/ {{0X3FA78B89, 0X7F9B13CF} },
+/**/ {{0X3FB2FC49, 0X74F57C8F} },
+/**/ {{0XBFB2FFD8, 0X566CAACA} } },
+/**/ {{{0X3FE66000, 0XA746397F} },
+/**/ {{0X3FE386C5, 0X9D968940} },
+/**/ {{0X3FE57E05, 0X83073C58} },
+/**/ {{0XBFD42FB4, 0XFE3D0083} },
+/**/ {{0X3FA821F1, 0X4B9E1EEB} },
+/**/ {{0X3FB29DA9, 0X1952EE82} },
+/**/ {{0XBFB2D9A8, 0X245866A8} } },
+/**/ {{{0X3FE68000, 0XE4E3094B} },
+/**/ {{0X3FE39C39, 0XB5FE3900} },
+/**/ {{0X3FE569DA, 0X36DD131E} },
+/**/ {{0XBFD4268C, 0X74778FE0} },
+/**/ {{0X3FA8B567, 0X9AB0310F} },
+/**/ {{0X3FB23FC8, 0XF2E43205} },
+/**/ {{0XBFB2B2D5, 0X26483573} } },
+/**/ {{{0X3FE6A001, 0XE2E37787} },
+/**/ {{0X3FE3B19A, 0X27D52620} },
+/**/ {{0X3FE555B7, 0XB5D865CD} },
+/**/ {{0XBFD41D2C, 0XF1600CD3} },
+/**/ {{0X3FA945F5, 0X4B79E859} },
+/**/ {{0X3FB1E2AA, 0X46A0B02D} },
+/**/ {{0XBFB28B67, 0XB508A35B} } },
+/**/ {{{0X3FE6BFFE, 0X0DF4BBFB} },
+/**/ {{0X3FE3C6E3, 0X46F2B6E0} },
+/**/ {{0X3FE541A1, 0XB658AFBE} },
+/**/ {{0XBFD41399, 0X388DA137} },
+/**/ {{0X3FA9D387, 0XE5B3C2BA} },
+/**/ {{0X3FB18660, 0X173397F9} },
+/**/ {{0XBFB26368, 0X01DB4945} } },
+/**/ {{{0X3FE6DFFF, 0XEA406CEA} },
+/**/ {{0X3FE3DC1C, 0X1BB3D400} },
+/**/ {{0X3FE52D91, 0XD33FFE8E} },
+/**/ {{0XBFD409CF, 0X36BCFFE9} },
+/**/ {{0X3FAA5E54, 0X174405AF} },
+/**/ {{0X3FB12ACE, 0XDC041806} },
+/**/ {{0XBFB23ADE, 0X160D6557} } },
+/**/ {{{0X3FE70000, 0XED01EA65} },
+/**/ {{0X3FE3F140, 0X54E51400} },
+/**/ {{0X3FE5198C, 0X5C8B9119} },
+/**/ {{0XBFD3FFD1, 0XF2EA4FF7} },
+/**/ {{0X3FAAE643, 0X308C81CD} },
+/**/ {{0X3FB0D00C, 0X1960AAF7} },
+/**/ {{0XBFB211D1, 0XD2F50D25} } },
+/**/ {{{0X3FE72002, 0X00D515EB} },
+/**/ {{0X3FE40650, 0X983BB3E0} },
+/**/ {{0X3FE50590, 0XF2175C71} },
+/**/ {{0XBFD3F5A2, 0X361BB15C} },
+/**/ {{0X3FAB6B5F, 0X9B536AFC} },
+/**/ {{0X3FB07617, 0XA731624D} },
+/**/ {{0XBFB1E84A, 0XF1A8C054} } },
+/**/ {{{0X3FE74001, 0X1323DE6D} },
+/**/ {{0X3FE41B4B, 0X9483E720} },
+/**/ {{0X3FE4F1A1, 0X1027BA01} },
+/**/ {{0XBFD3EB41, 0XBB978C8F} },
+/**/ {{0X3FABEDA7, 0X7765626A} },
+/**/ {{0X3FB01CF9, 0X97F58C8A} },
+/**/ {{0XBFB1BE51, 0X03074348} } },
+/**/ {{{0X3FE75FFF, 0X25CAB4CA} },
+/**/ {{0X3FE43032, 0X0001D5C0} },
+/**/ {{0X3FE4DDBC, 0X4573FB6C} },
+/**/ {{0XBFD3E0B1, 0X41F21D2A} },
+/**/ {{0X3FAC6D25, 0XD1BDA00F} },
+/**/ {{0X3FAF8962, 0X5935EE68} },
+/**/ {{0XBFB193EB, 0X6F8E0689} } },
+/**/ {{{0X3FE77FFE, 0X90921F76} },
+/**/ {{0X3FE44505, 0X6CC6AF00} },
+/**/ {{0X3FE4C9E1, 0X4CFFBDAE} },
+/**/ {{0XBFD3D5F1, 0X0B247EC4} },
+/**/ {{0X3FACE9EA, 0X943F4516} },
+/**/ {{0X3FAEDA73, 0XF24A8AF1} },
+/**/ {{0XBFB16921, 0X776AAC42} } },
+/**/ {{{0X3FE79FFE, 0X47B2F83B} },
+/**/ {{0X3FE459C5, 0X35C19F20} },
+/**/ {{0X3FE4B610, 0XFC8F20BD} },
+/**/ {{0XBFD3CB02, 0X73DF2A0D} },
+/**/ {{0X3FAD63F8, 0X23C5D6DE} },
+/**/ {{0X3FAE2D31, 0X9C5116AB} },
+/**/ {{0XBFB13DFA, 0X326E2972} } },
+/**/ {{{0X3FE7BFFF, 0X2F1E79A9} },
+/**/ {{0X3FE46E71, 0XF84DF5C0} },
+/**/ {{0X3FE4A24A, 0XF586B1BD} },
+/**/ {{0XBFD3BFE6, 0X2EF81E5B} },
+/**/ {{0X3FADDB58, 0X738896F0} },
+/**/ {{0X3FAD819A, 0X2515DE78} },
+/**/ {{0XBFB1127C, 0X9026FDD0} } },
+/**/ {{{0X3FE7E001, 0X973C8D05} },
+/**/ {{0X3FE4830B, 0XF0FB9580} },
+/**/ {{0X3FE48E8F, 0X3466B08E} },
+/**/ {{0XBFD3B49D, 0X1C53A01A} },
+/**/ {{0X3FAE5013, 0X25103EED} },
+/**/ {{0X3FACD7AF, 0X5290F4AF} },
+/**/ {{0XBFB0E6AF, 0X57EF003B} } },
+/**/ {{{0X3FE7FFFF, 0X69EFC092} },
+/**/ {{0X3FE4978F, 0X431C3800} },
+/**/ {{0X3FE47AE1, 0XA3E1064A} },
+/**/ {{0XBFD3A92A, 0X666C50C4} },
+/**/ {{0X3FAEC219, 0X4098A4BE} },
+/**/ {{0X3FAC2F94, 0X2EEE57E0} },
+/**/ {{0XBFB0BA99, 0X290D5730} } },
+/**/ {{{0X3FE82001, 0XC52B5232} },
+/**/ {{0X3FE4AC01, 0XD2B83340} },
+/**/ {{0X3FE4673C, 0XD31B7CF5} },
+/**/ {{0XBFD39D8B, 0XC67D05F0} },
+/**/ {{0X3FAF3192, 0X2A81B5D5} },
+/**/ {{0X3FAB891B, 0X8AA20E90} },
+/**/ {{0XBFB08E40, 0X7ADCEFD6} } },
+/**/ {{{0X3FE84000, 0XBD4D4E3F} },
+/**/ {{0X3FE4C05E, 0X9B1DBC60} },
+/**/ {{0X3FE453A5, 0XC8D629F7} },
+/**/ {{0XBFD391C5, 0X13E9EF47} },
+/**/ {{0X3FAF9E69, 0X17383D6B} },
+/**/ {{0X3FAAE471, 0X278E21B9} },
+/**/ {{0XBFB061AB, 0X9CF54D10} } },
+/**/ {{{0X3FE86001, 0X8C869CBD} },
+/**/ {{0X3FE4D4A8, 0XFD2285A0} },
+/**/ {{0X3FE44019, 0X79B82471} },
+/**/ {{0XBFD385D5, 0X5C3E2929} },
+/**/ {{0X3FB0045B, 0X7B2C8FF2} },
+/**/ {{0X3FAA417C, 0X39D7CA4F} },
+/**/ {{0XBFB034E0, 0XB767B7D4} } },
+/**/ {{{0X3FE87FFE, 0XB5DB3710} },
+/**/ {{0X3FE4E8DD, 0X8B93BCA0} },
+/**/ {{0X3FE42C9B, 0X66C6E6BF} },
+/**/ {{0XBFD379BF, 0XA32EE2A1} },
+/**/ {{0X3FB03838, 0X6187FE0F} },
+/**/ {{0X3FA9A05A, 0X8B3A0B33} },
+/**/ {{0XBFB007E5, 0XCAEE03A9} } },
+/**/ {{{0X3FE8A000, 0X863C77E3} },
+/**/ {{0X3FE4FD01, 0X8FCD1E80} },
+/**/ {{0X3FE41926, 0XA8A8093F} },
+/**/ {{0XBFD36D81, 0XB5EE344D} },
+/**/ {{0X3FB06ADC, 0X2841F292} },
+/**/ {{0X3FA900E4, 0X2484560B} },
+/**/ {{0XBFAFB581, 0X62792F0A} } },
+/**/ {{{0X3FE8BFFF, 0X0ED982AF} },
+/**/ {{0X3FE51110, 0X16E28AC0} },
+/**/ {{0X3FE405C0, 0X389112EE} },
+/**/ {{0XBFD3611F, 0X89D38DC7} },
+/**/ {{0X3FB09C3D, 0XB450B9F7} },
+/**/ {{0X3FA86342, 0X312D0C4A} },
+/**/ {{0XBFAF5AEE, 0X3A6CA012} } },
+/**/ {{{0X3FE8E000, 0X02C3AEAE} },
+/**/ {{0X3FE5250C, 0XC0AB0A40} },
+/**/ {{0X3FE3F264, 0XC65593C5} },
+/**/ {{0XBFD35497, 0XD82BE900} },
+/**/ {{0X3FB0CC69, 0X68546D39} },
+/**/ {{0X3FA7C759, 0XDB8499FD} },
+/**/ {{0XBFAF001D, 0X36A32337} } },
+/**/ {{{0X3FE90000, 0XECBFA97B} },
+/**/ {{0X3FE538F6, 0X0E8D4EE0} },
+/**/ {{0X3FE3DF15, 0XF4119333} },
+/**/ {{0XBFD347EC, 0X7D2149F4} },
+/**/ {{0X3FB0FB5E, 0XFA921D3C} },
+/**/ {{0X3FA72D38, 0X69693E89} },
+/**/ {{0XBFAEA519, 0X23A0F5F3} } },
+/**/ {{{0X3FE91FFF, 0XD251C01C} },
+/**/ {{0X3FE54CCA, 0XD3F3BD20} },
+/**/ {{0X3FE3CBD5, 0X1554DD15} },
+/**/ {{0XBFD33B1F, 0X2BC94245} },
+/**/ {{0X3FB1291F, 0X2FC4C3F6} },
+/**/ {{0X3FA694E8, 0X1B7A765C} },
+/**/ {{0XBFAE49EC, 0X826E86F6} } },
+/**/ {{{0X3FE94001, 0XD90AF4E6} },
+/**/ {{0X3FE5608E, 0X4D4EC640} },
+/**/ {{0X3FE3B89F, 0X3445EF72} },
+/**/ {{0XBFD32E2E, 0XB7BBD79A} },
+/**/ {{0X3FB155B4, 0XE401D071} },
+/**/ {{0X3FA5FE51, 0X3A256F1C} },
+/**/ {{0XBFADEEA1, 0X890FF662} } },
+/**/ {{{0X3FE96001, 0X04FD6C17} },
+/**/ {{0X3FE5743C, 0XD5673C20} },
+/**/ {{0X3FE3A578, 0X09EBC6E2} },
+/**/ {{0XBFD3211E, 0X6DA5039C} },
+/**/ {{0X3FB1811B, 0X4E62286B} },
+/**/ {{0X3FA56990, 0X71BECE9D} },
+/**/ {{0XBFAD9342, 0X23911641} } },
+/**/ {{{0X3FE98000, 0X2D214B82} },
+/**/ {{0X3FE587D8, 0X3B0D6120} },
+/**/ {{0X3FE3925E, 0X01EAAC3E} },
+/**/ {{0XBFD313EE, 0X08425504} },
+/**/ {{0X3FB1AB5A, 0X02BDB571} },
+/**/ {{0X3FA4D698, 0X9EBD70B8} },
+/**/ {{0XBFAD37D7, 0XF482965A} } },
+/**/ {{{0X3FE99FFD, 0XEB980651} },
+/**/ {{0X3FE59B5F, 0XB16BA7A0} },
+/**/ {{0X3FE37F52, 0X10B1AB7A} },
+/**/ {{0XBFD3069E, 0XF993D676} },
+/**/ {{0X3FB1D472, 0XCDED25A8} },
+/**/ {{0X3FA44570, 0X2D0ABD9A} },
+/**/ {{0XBFACDC6C, 0X56221AA1} } },
+/**/ {{{0X3FE9BFFF, 0XE5504053} },
+/**/ {{0X3FE5AED6, 0XB55DE6A0} },
+/**/ {{0X3FE36C50, 0XFA91C51E} },
+/**/ {{0XBFD2F92F, 0XBE311E56} },
+/**/ {{0X3FB1FC70, 0X5BE3AF05} },
+/**/ {{0X3FA3B5FD, 0XACD5CDC7} },
+/**/ {{0XBFAC8108, 0X5ADBB9B8} } },
+/**/ {{{0X3FE9E001, 0X6E60A234} },
+/**/ {{0X3FE5C23A, 0X79ACD480} },
+/**/ {{0X3FE3595D, 0XA5FAB2EA} },
+/**/ {{0XBFD2EBA3, 0X1DDECEEA} },
+/**/ {{0X3FB22350, 0X35736518} },
+/**/ {{0X3FA32856, 0X22F9FD28} },
+/**/ {{0XBFAC25B4, 0XCE8B2259} } },
+/**/ {{{0X3FE9FFFF, 0XB685741B} },
+/**/ {{0X3FE5D589, 0X5AD40460} },
+/**/ {{0X3FE34679, 0XD832B8D3} },
+/**/ {{0XBFD2DDFB, 0X230EDA41} },
+/**/ {{0X3FB24912, 0XB23C0BA2} },
+/**/ {{0X3FA29C85, 0X4C4E86DA} },
+/**/ {{0XBFABCA7A, 0X37002A55} } },
+/**/ {{{0X3FEA2001, 0X9D59B943} },
+/**/ {{0X3FE5E8C7, 0X8C187EA0} },
+/**/ {{0X3FE333A1, 0X9EDE2183} },
+/**/ {{0XBFD2D035, 0XB0043779} },
+/**/ {{0X3FB26DC3, 0X7AB9110C} },
+/**/ {{0X3FA2126C, 0X959CFC0E} },
+/**/ {{0XBFAB6F60, 0XD556233E} } },
+/**/ {{{0X3FEA3FFF, 0XBE9E153F} },
+/**/ {{0X3FE5FBF0, 0XA9C08AE0} },
+/**/ {{0X3FE320D9, 0X6F7861AA} },
+/**/ {{0XBFD2C256, 0XC2200F18} },
+/**/ {{0X3FB2915D, 0XA6795293} },
+/**/ {{0X3FA18A2B, 0X256A8FDE} },
+/**/ {{0XBFAB1470, 0XA67A4E89} } },
+/**/ {{{0X3FEA5FFE, 0X7A23A1CE} },
+/**/ {{0X3FE60F07, 0X63200600} },
+/**/ {{0X3FE30E1E, 0XD13D395E} },
+/**/ {{0XBFD2B45D, 0X44403932} },
+/**/ {{0X3FB2B3E9, 0XC967F013} },
+/**/ {{0X3FA103AD, 0X35D002B8} },
+/**/ {{0XBFAAB9B1, 0X6496A8F1} } },
+/**/ {{{0X3FEA8001, 0X57F250B8} },
+/**/ {{0X3FE6220D, 0XDD6453A0} },
+/**/ {{0X3FE2FB6F, 0XCFFFCC1E} },
+/**/ {{0XBFD2A648, 0X6F8D8291} },
+/**/ {{0X3FB2D56F, 0X03654CC3} },
+/**/ {{0X3FA07EE3, 0X4BB6E7A6} },
+/**/ {{0XBFAA5F2A, 0X87992F03} } },
+/**/ {{{0X3FEAA000, 0XDD839D49} },
+/**/ {{0X3FE634FF, 0XB412C9A0} },
+/**/ {{0X3FE2E8D0, 0XE2D59E01} },
+/**/ {{0XBFD2981C, 0X5467CFDD} },
+/**/ {{0X3FB2F5E8, 0XFF1FADB5} },
+/**/ {{0X3F9FF7D6, 0XA3BA803C} },
+/**/ {{0XBFAA04E3, 0X46AF8DB7} } },
+/**/ {{{0X3FEAC000, 0X770DF220} },
+/**/ {{0X3FE647DE, 0XFEF70020} },
+/**/ {{0X3FE2D640, 0X220AFF7F} },
+/**/ {{0XBFD289D8, 0X36F9E74F} },
+/**/ {{0X3FB3155E, 0XE509140A} },
+/**/ {{0X3F9EF56B, 0X61AB0B7F} },
+/**/ {{0XBFA9AAE2, 0X98CE391F} } },
+/**/ {{{0X3FEAE001, 0X125BBE48} },
+/**/ {{0X3FE65AAC, 0X57A24D20} },
+/**/ {{0X3FE2C3BD, 0X1BFB3559} },
+/**/ {{0XBFD27B7C, 0X6DDE55DD} },
+/**/ {{0X3FB333D5, 0X15C4C270} },
+/**/ {{0X3F9DF67A, 0X9BAC4ECF} },
+/**/ {{0XBFA9512F, 0X363A972B} } },
+/**/ {{{0X3FEAFFFE, 0X7C321839} },
+/**/ {{0X3FE66D65, 0X569B83C0} },
+/**/ {{0X3FE2B14A, 0X53FBF8D9} },
+/**/ {{0XBFD26D0B, 0X9CFA03CE} },
+/**/ {{0X3FB3514B, 0X2CAA2E0C} },
+/**/ {{0X3F9CFB22, 0X4597BE9A} },
+/**/ {{0XBFA8F7CF, 0X99110022} } },
+/**/ {{{0X3FEB1FFE, 0X75486924} },
+/**/ {{0X3FE6800D, 0X68CEFB40} },
+/**/ {{0X3FE29EE4, 0X8E6AA814} },
+/**/ {{0XBFD25E83, 0XE8AFA7EB} },
+/**/ {{0X3FB36DC9, 0XFB0E8AC8} },
+/**/ {{0X3F9C0331, 0XAD5D66CA} },
+/**/ {{0XBFA89EC9, 0XFEDB1E8B} } },
+/**/ {{{0X3FEB4001, 0X5FB8DEB8} },
+/**/ {{0X3FE692A4, 0XD137C500} },
+/**/ {{0X3FE28C8B, 0XABFF668E} },
+/**/ {{0XBFD24FE5, 0XD8E71E0A} },
+/**/ {{0X3FB38955, 0X1297317A} },
+/**/ {{0X3F9B0EA3, 0X1D844655} },
+/**/ {{0XBFA84624, 0X6914067D} } },
+/**/ {{{0X3FEB6000, 0X386C27B9} },
+/**/ {{0X3FE6A527, 0X8CDF6FC0} },
+/**/ {{0X3FE27A43, 0XC5758DB8} },
+/**/ {{0XBFD24135, 0X59CADCE0} },
+/**/ {{0X3FB3A3E9, 0XEE34AE91} },
+/**/ {{0X3F9A1DA8, 0X1C5FFF05} },
+/**/ {{0XBFA7EDE4, 0X9EC8AAC6} } },
+/**/ {{{0X3FEB8000, 0XD1EFDDB3} },
+/**/ {{0X3FE6B799, 0X0ACCB660} },
+/**/ {{0X3FE26809, 0X9983AAB2} },
+/**/ {{0XBFD23270, 0X76047E08} },
+/**/ {{0X3FB3BD90, 0XF132139B} },
+/**/ {{0X3F993010, 0X58DEB3E1} },
+/**/ {{0XBFA79610, 0X2D194CE9} } },
+/**/ {{{0X3FEB9FFE, 0X42CC4047} },
+/**/ {{0X3FE6C9F6, 0X86445E60} },
+/**/ {{0X3FE255E0, 0X069F871F} },
+/**/ {{0XBFD2239A, 0X25461639} },
+/**/ {{0X3FB3D649, 0XA926C127} },
+/**/ {{0X3F9845FB, 0XC5A21F70} },
+/**/ {{0XBFA73EAC, 0X68E20BE6} } },
+/**/ {{{0X3FEBC001, 0X951AEAAD} },
+/**/ {{0X3FE6DC45, 0X3C4E45A0} },
+/**/ {{0X3FE243C1, 0XFF6573B0} },
+/**/ {{0XBFD214AE, 0XE38FA7E7} },
+/**/ {{0X3FB3EE1E, 0X5EA1330F} },
+/**/ {{0X3F975F24, 0X2BCCE6DF} },
+/**/ {{0XBFA6E7BE, 0X6F3902C5} } },
+/**/ {{{0X3FEBDFFE, 0X6616FE11} },
+/**/ {{0X3FE6EE7E, 0X27106FE0} },
+/**/ {{0X3FE231B6, 0X97B587F0} },
+/**/ {{0XBFD205B5, 0X240FEF32} },
+/**/ {{0X3FB40509, 0X44EB818C} },
+/**/ {{0X3F967BDE, 0X108160F9} },
+/**/ {{0XBFA6914B, 0X271D18AD} } },
+/**/ {{{0X3FEBFFFF, 0X54511C72} },
+/**/ {{0X3FE700A7, 0X643BBB40} },
+/**/ {{0X3FE21FB7, 0XE1823C8B} },
+/**/ {{0XBFD1F6A8, 0X9A854F7A} },
+/**/ {{0X3FB41B15, 0X71F04837} },
+/**/ {{0X3F959BD8, 0XBBD10F7C} },
+/**/ {{0XBFA63B57, 0X41F03711} } },
+/**/ {{{0X3FEC2000, 0XC537593E} },
+/**/ {{0X3FE712BE, 0XF36D6400} },
+/**/ {{0X3FE20DC7, 0XF754B2D5} },
+/**/ {{0XBFD1E78B, 0X9D24DBED} },
+/**/ {{0X3FB43043, 0X94F485E0} },
+/**/ {{0X3F94BF29, 0X122A6884} },
+/**/ {{0XBFA5E5E7, 0X3D2AA4E9} } },
+/**/ {{{0X3FEC4000, 0XDDD35719} },
+/**/ {{0X3FE724C3, 0XD7FA3000} },
+/**/ {{0X3FE1FBE7, 0XF2A8B1BF} },
+/**/ {{0XBFD1D85F, 0XB25DDDF6} },
+/**/ {{0X3FB44495, 0XD2E3B20F} },
+/**/ {{0X3F93E5D6, 0X7FCC1B30} },
+/**/ {{0XBFA590FF, 0X62D0D00F} } },
+/**/ {{{0X3FEC6000, 0X402375B6} },
+/**/ {{0X3FE736B6, 0X7DFF3720} },
+/**/ {{0X3FE1EA17, 0X86C92387} },
+/**/ {{0XBFD1C925, 0X31DDFC58} },
+/**/ {{0X3FB4580F, 0XF8B6CBC2} },
+/**/ {{0X3F930FD7, 0X00CE998E} },
+/**/ {{0XBFA53CA3, 0XCB299E5F} } },
+/**/ {{{0X3FEC7FFF, 0X19904FE4} },
+/**/ {{0X3FE74897, 0X0F395860} },
+/**/ {{0X3FE1D856, 0XA825BA33} },
+/**/ {{0XBFD1B9DC, 0XA75E0FC5} },
+/**/ {{0X3FB46AB5, 0X79F8FD7D} },
+/**/ {{0X3F923D23, 0XA5A90AFE} },
+/**/ {{0XBFA4E8D8, 0X5D2F574B} } },
+/**/ {{{0X3FEC9FFE, 0XF9E2409D} },
+/**/ {{0X3FE75A66, 0X79E7F1C0} },
+/**/ {{0X3FE1C6A4, 0X8740D2E9} },
+/**/ {{0XBFD1AA85, 0XF198392C} },
+/**/ {{0X3FB47C8A, 0X808C583A} },
+/**/ {{0X3F916DAC, 0X857F2526} },
+/**/ {{0XBFA495A0, 0XD0477576} } },
+/**/ {{{0X3FECC001, 0XE038EF72} },
+/**/ {{0X3FE76C25, 0XE6815140} },
+/**/ {{0X3FE1B500, 0X19BDADF8} },
+/**/ {{0XBFD19B20, 0XB4A469AE} },
+/**/ {{0X3FB48D93, 0X42387EA2} },
+/**/ {{0X3F90A15F, 0X7305BAF5} },
+/**/ {{0XBFA44300, 0XACAE4E17} } },
+/**/ {{{0X3FECDFFE, 0XEB72037F} },
+/**/ {{0X3FE77DD0, 0X7A7A4AA0} },
+/**/ {{0X3FE1A36E, 0X4F1F6702} },
+/**/ {{0XBFD18BB1, 0XD0992CF8} },
+/**/ {{0X3FB49DCE, 0X5AA4990D} },
+/**/ {{0X3F8FB0DD, 0X63759665} },
+/**/ {{0XBFA3F0FB, 0X4D2F0C0F} } },
+/**/ {{{0X3FECFFFF, 0XEA4839ED} },
+/**/ {{0X3FE78F6B, 0XB17088C0} },
+/**/ {{0X3FE191E9, 0XCF32122F} },
+/**/ {{0XBFD17C35, 0X220400AC} },
+/**/ {{0X3FB4AD44, 0X0A159641} },
+/**/ {{0X3F8E252C, 0X80894CA9} },
+/**/ {{0XBFA39F93, 0XDF89C265} } },
+/**/ {{{0X3FED1FFD, 0XEC3EC8B2} },
+/**/ {{0X3FE7A0F3, 0XC8C6C880} },
+/**/ {{0X3FE18076, 0X729F01D6} },
+/**/ {{0XBFD16CAE, 0X98515540} },
+/**/ {{0X3FB4BBF4, 0X1B0933FF} },
+/**/ {{0X3F8C9FF5, 0XE09A60CD} },
+/**/ {{0XBFA34ECD, 0X662A5704} } },
+/**/ {{{0X3FED3FFF, 0X7084EDD4} },
+/**/ {{0X3FE7B26C, 0X5F02F220} },
+/**/ {{0X3FE16F10, 0XB9973206} },
+/**/ {{0XBFD15D1B, 0X9E1E0A54} },
+/**/ {{0X3FB4C9E4, 0XAC2C9A30} },
+/**/ {{0X3F8B20DD, 0XEFCE76CC} },
+/**/ {{0XBFA2FEAA, 0XB888BC37} } },
+/**/ {{{0X3FED5FFE, 0X8D728E7C} },
+/**/ {{0X3FE7C3D2, 0X488D7E80} },
+/**/ {{0X3FE15DBB, 0XE622A5A7} },
+/**/ {{0XBFD14D7F, 0XA305CEB2} },
+/**/ {{0X3FB4D716, 0X417BF1C7} },
+/**/ {{0X3F89A81E, 0XE19FE239} },
+/**/ {{0XBFA2AF2E, 0X84DDAD07} } },
+/**/ {{{0X3FED7FFF, 0X70AA3B03} },
+/**/ {{0X3FE7D527, 0XDB239580} },
+/**/ {{0X3FE14C75, 0XBE4FEA01} },
+/**/ {{0XBFD13DD9, 0X2AD706AA} },
+/**/ {{0X3FB4E38D, 0XB49D32AA} },
+/**/ {{0X3F88357A, 0X37DF2B6D} },
+/**/ {{0XBFA2605B, 0X507CD77B} } },
+/**/ {{{0X3FED9FFF, 0X1434FBA3} },
+/**/ {{0X3FE7E66B, 0X82C8A720} },
+/**/ {{0X3FE13B3F, 0XED9B7FED} },
+/**/ {{0XBFD12E2A, 0X3AC9D646} },
+/**/ {{0X3FB4EF4C, 0XE7B01CF5} },
+/**/ {{0X3F86C905, 0XD25FD52D} },
+/**/ {{0XBFA21233, 0X798666EF} } },
+/**/ {{{0X3FEDBFFE, 0XA8C8DE8C} },
+/**/ {{0X3FE7F79D, 0XF4A0A520} },
+/**/ {{0X3FE12A19, 0XD7FC2119} },
+/**/ {{0XBFD11E72, 0XC6BE19DF} },
+/**/ {{0X3FB4FA57, 0X634E1B91} },
+/**/ {{0X3F8562A6, 0X47F96DF5} },
+/**/ {{0XBFA1C4B9, 0X373AF599} } },
+/**/ {{{0X3FEDE000, 0X26573DF5} },
+/**/ {{0X3FE808C0, 0X4DBCB960} },
+/**/ {{0X3FE11902, 0X7903E4B9} },
+/**/ {{0XBFD10EB2, 0X5CDFED06} },
+/**/ {{0X3FB504B0, 0XCCA681FA} },
+/**/ {{0X3F840238, 0X6F3CDE09} },
+/**/ {{0XBFA177EE, 0X9BA8FA6A} } },
+/**/ {{{0X3FEDFFFE, 0X35009B66} },
+/**/ {{0X3FE819CF, 0XC2CB5340} },
+/**/ {{0X3FE107FC, 0XB1C942B5} },
+/**/ {{0XBFD0FEEC, 0X230D7D92} },
+/**/ {{0X3FB50E5A, 0X75C5B4F1} },
+/**/ {{0X3F82A7E8, 0XE3C139D8} },
+/**/ {{0XBFA12BD5, 0X93FA642B} } },
+/**/ {{{0X3FEE2000, 0X492D4C68} },
+/**/ {{0X3FE82AD0, 0X5CCB8680} },
+/**/ {{0X3FE0F704, 0X928E55DF} },
+/**/ {{0XBFD0EF1C, 0XEE0B0721} },
+/**/ {{0X3FB51759, 0X937BFB74} },
+/**/ {{0X3F815359, 0X2BC9FDDB} },
+/**/ {{0XBFA0E06F, 0XEA1D1824} } },
+/**/ {{{0X3FEE4000, 0X9412BB65} },
+/**/ {{0X3FE83BBF, 0X14001A60} },
+/**/ {{0X3FE0E61D, 0X37F485DA} },
+/**/ {{0XBFD0DF48, 0X1B2BD37D} },
+/**/ {{0X3FB51FAF, 0X64024D14} },
+/**/ {{0X3F8004B9, 0X9B849698} },
+/**/ {{0XBFA095BF, 0X450A2434} } },
+/**/ {{{0X3FEE5FFF, 0X4758EF2F} },
+/**/ {{0X3FE84C9C, 0X1531C180} },
+/**/ {{0X3FE0D546, 0X8B7FECE7} },
+/**/ {{0XBFD0CF6E, 0X105BFE1E} },
+/**/ {{0X3FB5275E, 0XF9C5E03A} },
+/**/ {{0X3F7D77F2, 0X17AA1137} },
+/**/ {{0XBFA04BC5, 0X2A6891E1} } },
+/**/ {{{0X3FEE8000, 0X380F819F} },
+/**/ {{0X3FE85D69, 0X74CCC060} },
+/**/ {{0X3FE0C47E, 0X8F1DA5B5} },
+/**/ {{0XBFD0BF8D, 0X62AD700F} },
+/**/ {{0X3FB52E6C, 0X1F3FBC2B} },
+/**/ {{0X3F7AF1C3, 0XEE24AD7D} },
+/**/ {{0XBFA00282, 0XFECE26C9} } },
+/**/ {{{0X3FEEA000, 0XA6D8CB7B} },
+/**/ {{0X3FE86E25, 0XD00E3A60} },
+/**/ {{0X3FE0B3C6, 0XBA314D62} },
+/**/ {{0XBFD0AFA7, 0XE7CB2D84} },
+/**/ {{0X3FB534D9, 0X08E9071F} },
+/**/ {{0X3F787704, 0X4CE5E5C9} },
+/**/ {{0XBF9F73F4, 0X0EB7C9D5} } },
+/**/ {{{0X3FEEC000, 0X5A13BA60} },
+/**/ {{0X3FE87ED1, 0X19B163E0} },
+/**/ {{0X3FE0A31F, 0X2EBB7AD7} },
+/**/ {{0XBFD09FBE, 0X33A3FCE1} },
+/**/ {{0X3FB53AA8, 0X89D9AF5D} },
+/**/ {{0X3F760799, 0XF7F7040B} },
+/**/ {{0XBF9EE456, 0XD3F0B3FB} } },
+/**/ {{{0X3FEEDFFF, 0X58F8DD18} },
+/**/ {{0X3FE88F6B, 0X6681CA80} },
+/**/ {{0X3FE09287, 0XEC4360B3} },
+/**/ {{0XBFD08FD0, 0XB7CE07E5} },
+/**/ {{0X3FB53FDD, 0X7BDEDD3F} },
+/**/ {{0X3F73A366, 0X70C52E66} },
+/**/ {{0XBF9E5630, 0X5DCA7315} } },
+/**/ {{{0X3FEEFFFF, 0XBE033400} },
+/**/ {{0X3FE89FF5, 0XDD4D7960} },
+/**/ {{0X3FE081FF, 0XDFFE15BD} },
+/**/ {{0XBFD07FDE, 0XDAE56C0F} },
+/**/ {{0X3FB5447A, 0XF84D6F5D} },
+/**/ {{0X3F714A24, 0X7982941E} },
+/**/ {{0XBF9DC982, 0X81E68835} } },
+/**/ {{{0X3FEF2001, 0XE6B5125D} },
+/**/ {{0X3FE8B070, 0XBBE88160} },
+/**/ {{0X3FE07186, 0XDF7122E2} },
+/**/ {{0XBFD06FE8, 0XDE905325} },
+/**/ {{0X3FB54883, 0XB5DEEC7A} },
+/**/ {{0X3F6DF762, 0XB4A186D5} },
+/**/ {{0XBF9D3E4E, 0XDE20F495} } },
+/**/ {{{0X3FEF3FFD, 0XF770E0DB} },
+/**/ {{0X3FE8C0D8, 0X09E96380} },
+/**/ {{0X3FE06120, 0XF5A576A9} },
+/**/ {{0XBFD05FF3, 0X1D2912FF} },
+/**/ {{0X3FB54BF9, 0X8CD1001F} },
+/**/ {{0X3F6970FC, 0X6E90DC16} },
+/**/ {{0XBF9CB496, 0XD8EB587E} } },
+/**/ {{{0X3FEF5FFE, 0X4E16DA33} },
+/**/ {{0X3FE8D131, 0X29BCCDC0} },
+/**/ {{0X3FE050C8, 0XD33BA4E9} },
+/**/ {{0XBFD04FF8, 0XD74C83D2} },
+/**/ {{0X3FB54EE0, 0X592BB252} },
+/**/ {{0X3F64FF61, 0X7193EEB5} },
+/**/ {{0XBF9C2C5B, 0XA459AC86} } },
+/**/ {{{0X3FEF8000, 0X4576FF2E} },
+/**/ {{0X3FE8E17A, 0XCCE443A0} },
+/**/ {{0X3FE0407F, 0XD8A97B6C} },
+/**/ {{0XBFD03FFB, 0XC91B3E55} },
+/**/ {{0X3FB5513A, 0X5F3357F7} },
+/**/ {{0X3F60A2BA, 0X14C92B53} },
+/**/ {{0XBF9BA59E, 0X3E70DF71} } },
+/**/ {{{0X3FEF9FFF, 0X39B6A330} },
+/**/ {{0X3FE8F1B2, 0XA7F515A0} },
+/**/ {{0X3FE03048, 0X63064158} },
+/**/ {{0XBFD02FFE, 0XACBAADA8} },
+/**/ {{0X3FB55309, 0XF27448C0} },
+/**/ {{0X3F58B6D6, 0X4850006B} },
+/**/ {{0XBF9B205F, 0X742323DF} } },
+/**/ {{{0X3FEFC001, 0XAA76C0B9} },
+/**/ {{0X3FE901DC, 0X15D66D80} },
+/**/ {{0X3FE0201F, 0X28D9B4AA} },
+/**/ {{0XBFD01FFE, 0XA98D4C38} },
+/**/ {{0X3FB55452, 0X089780F8} },
+/**/ {{0X3F5050B5, 0X7F35C5BB} },
+/**/ {{0XBF9A9C9F, 0XE19247AF} } },
+/**/ {{{0X3FEFDFFE, 0X39A592CA} },
+/**/ {{0X3FE911F2, 0X6D88A780} },
+/**/ {{0X3FE01008, 0XE40C6538} },
+/**/ {{0XBFD01000, 0XD31688DE} },
+/**/ {{0X3FB55514, 0XE32F1816} },
+/**/ {{0X3F402A15, 0X4E1628D2} },
+/**/ {{0XBF9A1A5F, 0XF4FAF5A0} } },
+/**/ {{{0X3FEFF801, 0X8E92D1B0} },
+/**/ {{0X3FE91DFB, 0X9BB4BF00} },
+/**/ {{0X3FE003FF, 0XB884C5A9} },
+/**/ {{0XBFD003FF, 0X3876A954} },
+/**/ {{0X3FB55551, 0X5539DDFB} },
+/**/ {{0X3F2007E7, 0X7B95E6C2} },
+/**/ {{0XBF99B9A7, 0X18A3BA58} } },
+ };
+
+ static const number
+ hij[241][16] = { /* x0,hij for (1/16,1) */
+/**/ {{{0x3fb04000, 0x00000000} },
+/**/ {{0x3fb03a6d, 0x1c06693d} },
+/**/ {{0xbc428a02, 0xd4e7f128} },
+/**/ {{0x3fefdf1f, 0xe92592ae} },
+/**/ {{0x3c88bfc0, 0xb5490162} },
+/**/ {{0xbfb01ead, 0x8f7e4151} },
+/**/ {{0xbc5395e8, 0x0b64d205} },
+/**/ {{0xbfd4d29f, 0x433dd49b} },
+/**/ {{0xbc75b19d, 0x4aa42633} },
+/**/ {{0x3fafda41, 0xce35961d} },
+/**/ {{0x3c4e6a5f, 0x425d7696} },
+/**/ {{0x3fc814dd, 0x6c1bb5e2} },
+/**/ {{0xbfaf4cb7, 0x2b33739f} },
+/**/ {{0xbfc048b2, 0xc267d8ec} },
+/**/ {{0x3fae9649, 0xe8ababc6} },
+/**/ {{0x3fb78293, 0xfe802692} } },
+/**/ {{{0x3fb10000, 0x00000000} },
+/**/ {{0x3fb0f99e, 0xa71d52a7} },
+/**/ {{0xbc22069f, 0xeec3624f} },
+/**/ {{0x3fefdc08, 0x9a49d2a9} },
+/**/ {{0x3c7780f7, 0x68b2ce25} },
+/**/ {{0xbfb0d9de, 0x9da73e1d} },
+/**/ {{0x3c4ebf46, 0xa1a487bf} },
+/**/ {{0xbfd4c669, 0xd13ea108} },
+/**/ {{0x3c7354bc, 0xebb4528c} },
+/**/ {{0x3fb0a137, 0x789374c1} },
+/**/ {{0xbc56c223, 0xc3f2c5c2} },
+/**/ {{0x3fc7f0e7, 0x79c60cda} },
+/**/ {{0xbfb05062, 0xcdcc7b81} },
+/**/ {{0xbfc019e4, 0xc5266783} },
+/**/ {{0x3fafd0b2, 0xf2540289} },
+/**/ {{0x3fb71107, 0xf6d3cd8a} } },
+/**/ {{{0x3fb20000, 0x00000000} },
+/**/ {{0x3fb1f86d, 0xbf082d59} },
+/**/ {{0xbc4095dc, 0x7732ef81} },
+/**/ {{0x3fefd7b3, 0x01722b81} },
+/**/ {{0xbc5e618c, 0x8a212e02} },
+/**/ {{0xbfb1d2c5, 0xee4e9cfa} },
+/**/ {{0x3c426273, 0x29abece0} },
+/**/ {{0xbfd4b551, 0x37eb7f46} },
+/**/ {{0x3c73b360, 0x01d8bf12} },
+/**/ {{0x3fb18fa7, 0x6adb6a7c} },
+/**/ {{0xbc5c00d8, 0x398999ad} },
+/**/ {{0x3fc7bea5, 0xf4a7cff3} },
+/**/ {{0xbfb13008, 0x61f84829} },
+/**/ {{0xbfbfb14f, 0xa8e135a1} },
+/**/ {{0x3fb0b532, 0x4324f177} },
+/**/ {{0x3fb6734a, 0x3498dd9d} } },
+/**/ {{{0x3fb30000, 0x00000000} },
+/**/ {{0x3fb2f719, 0x318a4a9a} },
+/**/ {{0x3c03fd17, 0x79b9801f} },
+/**/ {{0x3fefd31f, 0x48e238fe} },
+/**/ {{0xbc876a7a, 0xd8c45327} },
+/**/ {{0xbfb2cada, 0x852096e2} },
+/**/ {{0x3c460860, 0x11efd787} },
+/**/ {{0xbfd4a34b, 0x2e476a39} },
+/**/ {{0x3c7254f2, 0xeb11ee51} },
+/**/ {{0x3fb27c13, 0xc54ae225} },
+/**/ {{0x3c513096, 0x4ae66f0c} },
+/**/ {{0x3fc789ca, 0xef0d59d0} },
+/**/ {{0xbfb20c06, 0x6d9aaa8c} },
+/**/ {{0xbfbf2885, 0x846ba912} },
+/**/ {{0x3fb17c5f, 0xc697ef5e} },
+/**/ {{0x3fb5ce93, 0xcad31e6e} } },
+/**/ {{{0x3fb40000, 0x00000000} },
+/**/ {{0x3fb3f59f, 0x0e7c559d} },
+/**/ {{0x3c5ac4ce, 0x285df847} },
+/**/ {{0x3fefce4d, 0xa6ab93e9} },
+/**/ {{0xbc6be46b, 0x18a97736} },
+/**/ {{0xbfb3c211, 0x4d22b635} },
+/**/ {{0x3c42033c, 0x6950679f} },
+/**/ {{0xbfd49059, 0xc4d74033} },
+/**/ {{0x3c57dd7c, 0xd7e376aa} },
+/**/ {{0x3fb36662, 0xc0896a7c} },
+/**/ {{0xbc36cf6a, 0xd79232cf} },
+/**/ {{0x3fc75261, 0xa13a97a2} },
+/**/ {{0xbfb2e431, 0x5fdd1509} },
+/**/ {{0xbfbe9999, 0x6e52db32} },
+/**/ {{0x3fb23da4, 0xb0a71e9f} },
+/**/ {{0x3fb52335, 0xe3bc8178} } },
+/**/ {{{0x3fb50000, 0x00000000} },
+/**/ {{0x3fb4f3fd, 0x677292fb} },
+/**/ {{0x3c4008d3, 0x6264979e} },
+/**/ {{0x3fefc93e, 0x53a1ee0d} },
+/**/ {{0xbc64421a, 0x20fd2bdf} },
+/**/ {{0xbfb4b85f, 0x4aba88e3} },
+/**/ {{0x3c54f184, 0x3c9d1e89} },
+/**/ {{0xbfd47c7f, 0x25ae4668} },
+/**/ {{0xbc7d7581, 0x816630d1} },
+/**/ {{0x3fb44e7b, 0x07f85056} },
+/**/ {{0x3c56d63c, 0x910bdf4f} },
+/**/ {{0x3fc71875, 0xc439029c} },
+/**/ {{0xbfb3b85e, 0xf2bcfa10} },
+/**/ {{0xbfbe04bb, 0x9707b205} },
+/**/ {{0x3fb2f8c6, 0x95e3e0cc} },
+/**/ {{0x3fb47184, 0x8093431b} } },
+/**/ {{{0x3fb60000, 0x00000000} },
+/**/ {{0x3fb5f232, 0x4fd2d7b2} },
+/**/ {{0x3c58a8da, 0x4401318e} },
+/**/ {{0x3fefc3f1, 0x8b549418} },
+/**/ {{0x3c34d896, 0x836f8130} },
+/**/ {{0xbfb5adb9, 0x9cdd92e7} },
+/**/ {{0x3c4d4161, 0xeb397cc3} },
+/**/ {{0xbfd467bd, 0x93f8f1dc} },
+/**/ {{0xbc609d7b, 0xffc760ad} },
+/**/ {{0x3fb53443, 0xbea6b2fe} },
+/**/ {{0x3c5eb03c, 0x4b24f5db} },
+/**/ {{0x3fc6dc13, 0x8de3d005} },
+/**/ {{0xbfb48866, 0x37d2d99d} },
+/**/ {{0xbfbd6a1d, 0xf6663fcb} },
+/**/ {{0x3fb3ad8e, 0x0adff464} },
+/**/ {{0x3fb3b9d6, 0x4159c223} } },
+/**/ {{{0x3fb70000, 0x00000000} },
+/**/ {{0x3fb6f03b, 0xdcea4b0d} },
+/**/ {{0xbc33f00e, 0x512fa17d} },
+/**/ {{0x3fefbe67, 0x8c07a436} },
+/**/ {{0xbc84baaa, 0x46250d6f} },
+/**/ {{0xbfb6a215, 0x7e3ba4c7} },
+/**/ {{0xbc3504e7, 0x54503f8d} },
+/**/ {{0xbfd45217, 0x6b82d03a} },
+/**/ {{0x3c7d1f0d, 0xbebdd1db} },
+/**/ {{0x3fb617a4, 0x841d5604} },
+/**/ {{0xbc47168b, 0x6681c436} },
+/**/ {{0x3fc69d47, 0xaccec6ce} },
+/**/ {{0xbfb5541f, 0xa4715800} },
+/**/ {{0xbfbcc9f4, 0x335a1c1b} },
+/**/ {{0x3fb45bc6, 0xbac0061f} },
+/**/ {{0x3fb2fc84, 0x2b3853b6} } },
+/**/ {{{0x3fb80000, 0x00000000} },
+/**/ {{0x3fb7ee18, 0x2602f10f} },
+/**/ {{0xbc5cfb65, 0x4c0c3d98} },
+/**/ {{0x3fefb8a0, 0x96acfacc} },
+/**/ {{0xbc82962e, 0x18495af3} },
+/**/ {{0xbfb79568, 0x46635c89} },
+/**/ {{0x3c5ac468, 0xa6bfd498} },
+/**/ {{0xbfd43b8f, 0x2037b997} },
+/**/ {{0xbc72ad53, 0xe2f12373} },
+/**/ {{0x3fb6f885, 0x7900c4ee} },
+/**/ {{0x3c53145d, 0x0aef1f9d} },
+/**/ {{0x3fc65c1f, 0x4409ba0e} },
+/**/ {{0xbfb61b65, 0x1d176e0c} },
+/**/ {{0xbfbc2473, 0x8ad65152} },
+/**/ {{0x3fb5033f, 0x7bc246c1} },
+/**/ {{0x3fb239e9, 0x6db30b46} } },
+/**/ {{{0x3fb90000, 0x00000000} },
+/**/ {{0x3fb8ebc5, 0x4478fb28} },
+/**/ {{0x3c473288, 0x0cad24cc} },
+/**/ {{0x3fefb29c, 0xeedcd6d7} },
+/**/ {{0x3c8efa9e, 0x23ea50f0} },
+/**/ {{0xbfb887a7, 0x6ae09982} },
+/**/ {{0x3c5b2275, 0x53801511} },
+/**/ {{0xbfd42427, 0x3da0757c} },
+/**/ {{0xbc7199e5, 0x311c7ac8} },
+/**/ {{0x3fb7d6cf, 0x4388717b} },
+/**/ {{0xbc5c4eb2, 0x3dd070b4} },
+/**/ {{0x3fc618a7, 0xe6c2b5f3} },
+/**/ {{0xbfb6de12, 0x00313569} },
+/**/ {{0xbfbb79d2, 0xb6316619} },
+/**/ {{0x3fb5a3ca, 0x61af5c21} },
+/**/ {{0x3fb17263, 0x26e60289} } },
+/**/ {{{0x3fba0000, 0x00000000} },
+/**/ {{0x3fb9e941, 0x53cfdcf1} },
+/**/ {{0x3c5a332e, 0x1d69c47e} },
+/**/ {{0x3fefac5c, 0xdace3776} },
+/**/ {{0xbc8c9a78, 0x1ad91ab5} },
+/**/ {{0xbfb978c8, 0x8054ad75} },
+/**/ {{0xbc5e35b8, 0x8ed66c17} },
+/**/ {{0xbfd40be2, 0x665afed1} },
+/**/ {{0x3c62eeef, 0x08ef10fb} },
+/**/ {{0x3fb8b26b, 0x13c989d2} },
+/**/ {{0x3c329f11, 0xbfeab3ba} },
+/**/ {{0x3fc5d2ef, 0x93c8f97c} },
+/**/ {{0xbfb79c03, 0x30234881} },
+/**/ {{0xbfbaca49, 0xd0f650c8} },
+/**/ {{0x3fb63d3c, 0xce2dcccc} },
+/**/ {{0x3fb0a650, 0x26fb0af2} } },
+/**/ {{{0x3fbb0000, 0x00000000} },
+/**/ {{0x3fbae68a, 0x71c722b8} },
+/**/ {{0x3c4c014e, 0x6910b9db} },
+/**/ {{0x3fefa5e0, 0xa34ef42b} },
+/**/ {{0xbc836583, 0xeb56d5b9} },
+/**/ {{0xbfba68c1, 0x3b881779} },
+/**/ {{0xbc473a0d, 0x13a09314} },
+/**/ {{0xbfd3f2c3, 0x538e939c} },
+/**/ {{0xbc68ed49, 0xee53e648} },
+/**/ {{0x3fb98b42, 0xa7d45973} },
+/**/ {{0xbc523943, 0x461ca7c4} },
+/**/ {{0x3fc58b04, 0xb0f2e2bb} },
+/**/ {{0xbfb85517, 0x1c9d23dc} },
+/**/ {{0xbfba1612, 0x3e3b5a66} },
+/**/ {{0x3fb6cf6f, 0x7ef1d0b9} },
+/**/ {{0x3fafac21, 0x6617b315} } },
+/**/ {{{0x3fbc0000, 0x00000000} },
+/**/ {{0x3fbbe39e, 0xbe6f07c3} },
+/**/ {{0x3c5f7b8f, 0x29a05987} },
+/**/ {{0x3fef9f28, 0x93bb9192} },
+/**/ {{0x3c78260b, 0x7cd1bdab} },
+/**/ {{0xbfbb5787, 0x72759741} },
+/**/ {{0x3c52f93f, 0xa6767247} },
+/**/ {{0xbfd3d8cc, 0xd45bbe91} },
+/**/ {{0x3c664839, 0x2edc0762} },
+/**/ {{0x3fba6140, 0x4fa31d26} },
+/**/ {{0x3c400647, 0x97891510} },
+/**/ {{0x3fc540f6, 0x0668fd66} },
+/**/ {{0xbfb9092d, 0xcb2f6e8f} },
+/**/ {{0xbfb95d66, 0x8d902073} },
+/**/ {{0x3fb75a3e, 0x99c53d16} },
+/**/ {{0x3fae040c, 0x8f475e61} } },
+/**/ {{{0x3fbd0000, 0x00000000} },
+/**/ {{0x3fbce07c, 0x5c3cca32} },
+/**/ {{0x3c4138e6, 0x425918a7} },
+/**/ {{0x3fef9834, 0xf9f6d421} },
+/**/ {{0x3c6f3089, 0x8c22a239} },
+/**/ {{0xbfbc4511, 0x1d4e69a5} },
+/**/ {{0x3c254c0f, 0xd2083ce8} },
+/**/ {{0xbfd3be01, 0xcd488978} },
+/**/ {{0x3c5612db, 0x6362ec0f} },
+/**/ {{0x3fbb344e, 0xf0d94873} },
+/**/ {{0xbc182beb, 0xfdf7db72} },
+/**/ {{0x3fc4f4d2, 0xb9d86c04} },
+/**/ {{0xbfb9b828, 0xdf238807} },
+/**/ {{0xbfb8a082, 0x5f93ffd6} },
+/**/ {{0x3fb7dd89, 0xb6650b0c} },
+/**/ {{0x3fac5526, 0xb62676ef} } },
+/**/ {{{0x3fbe0000, 0x00000000} },
+/**/ {{0x3fbddd21, 0x701eba6e} },
+/**/ {{0x3c594eff, 0xcd76fe58} },
+/**/ {{0x3fef9106, 0x266112ba} },
+/**/ {{0x3c74c302, 0x6b7e18b1} },
+/**/ {{0xbfbd3154, 0x5777816c} },
+/**/ {{0x3c5dc7e4, 0x1f9dbddd} },
+/**/ {{0xbfd3a265, 0x37a90881} },
+/**/ {{0xbc75bd61, 0xeb7ba840} },
+/**/ {{0x3fbc045a, 0x0a52514b} },
+/**/ {{0xbc35ca88, 0xcff49a99} },
+/**/ {{0x3fc4a6aa, 0x498eeb56} },
+/**/ {{0xbfba61eb, 0xa09232cf} },
+/**/ {{0xbfb7dfa2, 0x4a464027} },
+/**/ {{0x3fb85933, 0xe633c053} },
+/**/ {{0x3faaa036, 0x3f920107} } },
+/**/ {{{0x3fbf0000, 0x00000000} },
+/**/ {{0x3fbed98c, 0x2190043b} },
+/**/ {{0xbc23a598, 0x592c7b13} },
+/**/ {{0x3fef899c, 0x6bcf4ad8} },
+/**/ {{0x3c55fd73, 0x912c09b0} },
+/**/ {{0xbfbe1c47, 0x607f91a0} },
+/**/ {{0x3c576677, 0x5b5db022} },
+/**/ {{0xbfd385fa, 0x21046f5f} },
+/**/ {{0x3c7f01c3, 0x4487f4b8} },
+/**/ {{0x3fbcd14d, 0xb77f2d51} },
+/**/ {{0x3c57a86d, 0x30a2ccfe} },
+/**/ {{0x3fc4568c, 0x8782b530} },
+/**/ {{0xbfbb065b, 0x02b7ad2d} },
+/**/ {{0xbfb71b03, 0xbd215555} },
+/**/ {{0x3fb8cd23, 0xb9c1c1de} },
+/**/ {{0x3fa8e602, 0x8dbfa69b} } },
+/**/ {{{0x3fc00000, 0x00000000} },
+/**/ {{0x3fbfd5ba, 0x9aac2f6e} },
+/**/ {{0xbc4cd376, 0x86760c17} },
+/**/ {{0x3fef81f8, 0x1f81f820} },
+/**/ {{0xbc8f81f8, 0x1f81f820} },
+/**/ {{0xbfbf05e0, 0x9d0dc11b} },
+/**/ {{0xbc35a199, 0x1d821725} },
+/**/ {{0xbfd368c3, 0xaa76e1d7} },
+/**/ {{0xbc672d4c, 0xc796f8cd} },
+/**/ {{0x3fbd9b16, 0xb391c2e3} },
+/**/ {{0x3c58051b, 0x8086c51d} },
+/**/ {{0x3fc40489, 0x94488c86} },
+/**/ {{0xbfbba55d, 0xa98401c8} },
+/**/ {{0xbfb652e4, 0xe5127e64} },
+/**/ {{0x3fb93943, 0x442e53ae} },
+/**/ {{0x3fa72753, 0x86286f75} } },
+/**/ {{{0x3fc08000, 0x00000000} },
+/**/ {{0x3fc068d5, 0x84212b3e} },
+/**/ {{0xbc69e2d2, 0x83019bfd} },
+/**/ {{0x3fef7a19, 0x991bb133} },
+/**/ {{0x3c7a956a, 0x66627723} },
+/**/ {{0xbfbfee16, 0x97c8e137} },
+/**/ {{0x3c4d9399, 0x66dbe7af} },
+/**/ {{0xbfd34ac5, 0x0810323a} },
+/**/ {{0x3c6a1a57, 0x6bc6c512} },
+/**/ {{0x3fbe61a2, 0x5c75a6f9} },
+/**/ {{0xbc492b99, 0xd75c8f85} },
+/**/ {{0x3fc3b0b1, 0xd9fa3f20} },
+/**/ {{0xbfbc3edb, 0xee66d309} },
+/**/ {{0xbfb58784, 0x905eeb33} },
+/**/ {{0x3fb99d80, 0x1c65bb14} },
+/**/ {{0x3fa564f1, 0x18a09884} } },
+/**/ {{{0x3fc10000, 0x00000000} },
+/**/ {{0x3fc0e6ad, 0xccf40882} },
+/**/ {{0xbc6d71a3, 0x1bb98d0d} },
+/**/ {{0x3fef7201, 0x32978bad} },
+/**/ {{0x3c816476, 0x599381e9} },
+/**/ {{0xbfc06a70, 0x011b81fd} },
+/**/ {{0xbc422f5d, 0x9ba697ca} },
+/**/ {{0xbfd32c01, 0x802fc0a5} },
+/**/ {{0x3c7d8e47, 0x08a20868} },
+/**/ {{0x3fbf24de, 0xb59597fe} },
+/**/ {{0xbc43288f, 0x410d31eb} },
+/**/ {{0x3fc35b16, 0x070feb24} },
+/**/ {{0xbfbcd2bf, 0xe4565b78} },
+/**/ {{0xbfb4b922, 0x128768c6} },
+/**/ {{0x3fb9f9cb, 0x5c42a097} },
+/**/ {{0x3fa39fa2, 0xc7f97f2e} } },
+/**/ {{{0x3fc18000, 0x00000000} },
+/**/ {{0x3fc16465, 0x41060850} },
+/**/ {{0x3c66bcee, 0x8ae7ea92} },
+/**/ {{0x3fef69af, 0x483f492b} },
+/**/ {{0xbc6e3280, 0x57db963e} },
+/**/ {{0xbfc0dd19, 0xdacaa844} },
+/**/ {{0xbc6133c7, 0xad7fc21e} },
+/**/ {{0xbfd30c7c, 0x6addaea8} },
+/**/ {{0xbc71443d, 0x89161c76} },
+/**/ {{0x3fbfe4ba, 0x6a6d3cd2} },
+/**/ {{0x3c50d4b8, 0x423ee67a} },
+/**/ {{0x3fc303c7, 0x092e569a} },
+/**/ {{0xbfbd60f5, 0x5b11d3b6} },
+/**/ {{0xbfb3e7fd, 0x283b5c55} },
+/**/ {{0x3fba4e19, 0x9d9a6ab7} },
+/**/ {{0x3fa1d82f, 0x3487cc29} } },
+/**/ {{{0x3fc20000, 0x00000000} },
+/**/ {{0x3fc1e1fa, 0xfb043727} },
+/**/ {{0xbc4b4859, 0x14dacf8c} },
+/**/ {{0x3fef6124, 0x38a14f5e} },
+/**/ {{0x3c798e9e, 0x001f6124} },
+/**/ {{0xbfc14f04, 0x59d3fb7c} },
+/**/ {{0x3c531efa, 0x4cc99cb2} },
+/**/ {{0xbfd2ec39, 0x31219b34} },
+/**/ {{0xbc618697, 0x6e004611} },
+/**/ {{0x3fc05092, 0x68736312} },
+/**/ {{0x3c67aad4, 0x8a06e4b5} },
+/**/ {{0x3fc2aad6, 0x07eca5ec} },
+/**/ {{0xbfbde969, 0xe19fe31c} },
+/**/ {{0xbfb31455, 0xdb6b9127} },
+/**/ {{0x3fba9a62, 0xf53dd9ee} },
+/**/ {{0x3fa00f5b, 0xa8e4ede0} } },
+/**/ {{{0x3fc28000, 0x00000000} },
+/**/ {{0x3fc25f6e, 0x171a535c} },
+/**/ {{0x3c67c6d7, 0xbde1a310} },
+/**/ {{0x3fef5860, 0x64866d22} },
+/**/ {{0x3c88c6ff, 0xd1f6326c} },
+/**/ {{0xbfc1c02b, 0x13c11396} },
+/**/ {{0xbc51b469, 0xffeb1a0f} },
+/**/ {{0xbfd2cb3b, 0x4c571b0f} },
+/**/ {{0x3c6e4f76, 0x2fb0b163} },
+/**/ {{0x3fc0ad06, 0xf5c213ab} },
+/**/ {{0x3c625bf2, 0xabea9e66} },
+/**/ {{0x3fc25054, 0x5f93bbb2} },
+/**/ {{0xbfbe6c0c, 0xc80a32c8} },
+/**/ {{0xbfb23e6c, 0x678d0d1e} },
+/**/ {{0x3fbadea2, 0xebf8ae4b} },
+/**/ {{0x3f9c8bd7, 0x527f133b} } },
+/**/ {{{0x3fc30000, 0x00000000} },
+/**/ {{0x3fc2dcbd, 0xb2fba1ff} },
+/**/ {{0x3c58f287, 0x05561534} },
+/**/ {{0x3fef4f64, 0x2ee76e94} },
+/**/ {{0x3c80ec89, 0xc6da5865} },
+/**/ {{0xbfc23089, 0xb322f867} },
+/**/ {{0x3c4c2b54, 0x5fcd0d6f} },
+/**/ {{0xbfd2a986, 0x45802261} },
+/**/ {{0xbc79a132, 0x5ae78b8a} },
+/**/ {{0x3fc107b3, 0x35a9d974} },
+/**/ {{0x3c5ef22d, 0xb725e335} },
+/**/ {{0x3fc1f453, 0x9bd98832} },
+/**/ {{0xbfbee8cf, 0x2057aad4} },
+/**/ {{0xbfb16681, 0x1e1bc3a1} },
+/**/ {{0x3fbb1ad8, 0x759c8f58} },
+/**/ {{0x3f98f941, 0x0b15b4aa} } },
+/**/ {{{0x3fc38000, 0x00000000} },
+/**/ {{0x3fc359e8, 0xedeb99a4} },
+/**/ {{0xbc6a5fd7, 0x4e4604c6} },
+/**/ {{0x3fef462f, 0xfce28238} },
+/**/ {{0x3c83dc01, 0xd90595d1} },
+/**/ {{0xbfc2a01b, 0xf7edfa6d} },
+/**/ {{0xbc6b11fb, 0x4a3b5c9a} },
+/**/ {{0xbfd2871d, 0xb4959402} },
+/**/ {{0xbc4a3702, 0x2fcf7ea3} },
+/**/ {{0x3fc1608f, 0xd8d7fe8c} },
+/**/ {{0x3c61ac60, 0xf8f1d41c} },
+/**/ {{0x3fc196e5, 0x729a89ca} },
+/**/ {{0xbfbf5fa3, 0xbec74f31} },
+/**/ {{0xbfb08cd4, 0x4b6c9767} },
+/**/ {{0x3fbb4f05, 0xe624ce15} },
+/**/ {{0x3f956871, 0xddb2020c} } },
+/**/ {{{0x3fc40000, 0x00000000} },
+/**/ {{0x3fc3d6ee, 0xe8c6626c} },
+/**/ {{0x3c661a3b, 0x0ce9281b} },
+/**/ {{0x3fef3cc4, 0x35b0713c} },
+/**/ {{0x3c81d0a7, 0xe69ea094} },
+/**/ {{0xbfc30edd, 0xb7d169f0} },
+/**/ {{0x3c6b3394, 0xae999b97} },
+/**/ {{0xbfd26405, 0x3fd62b3c} },
+/**/ {{0x3c73e339, 0xc0736df9} },
+/**/ {{0x3fc1b795, 0xe8e57ee3} },
+/**/ {{0xbc6130dc, 0x0a42c7f6} },
+/**/ {{0x3fc1381b, 0xbe93b8e5} },
+/**/ {{0xbfbfd07f, 0x394e1bf7} },
+/**/ {{0xbfaf634c, 0x37bb5315} },
+/**/ {{0x3fbb7b30, 0xe501e57b} },
+/**/ {{0x3f91dae1, 0x20503792} } },
+/**/ {{{0x3fc48000, 0x00000000} },
+/**/ {{0x3fc453ce, 0xc6092a9e} },
+/**/ {{0x3c61f653, 0xb3a5a78b} },
+/**/ {{0x3fef3321, 0x4299ace8} },
+/**/ {{0xbc87414c, 0x3a742b30} },
+/**/ {{0xbfc37cca, 0xde8b2323} },
+/**/ {{0x3c649378, 0x7b50aedf} },
+/**/ {{0xbfd24040, 0x9b13f4d0} },
+/**/ {{0x3c7e271f, 0xb7dc85c0} },
+/**/ {{0x3fc20cbe, 0xc9024068} },
+/**/ {{0x3c50921f, 0x88ef3da7} },
+/**/ {{0x3fc0d808, 0x7a1f1270} },
+/**/ {{0xbfc01dab, 0xf32d5436} },
+/**/ {{0xbfadaa6d, 0x02e6f09c} },
+/**/ {{0x3fbb9f62, 0x5e9cd766} },
+/**/ {{0x3f8ca3fe, 0xab964c04} } },
+/**/ {{{0x3fc50000, 0x00000000} },
+/**/ {{0x3fc4d087, 0xa9da4f17} },
+/**/ {{0x3c61f323, 0xf1adf158} },
+/**/ {{0x3fef2947, 0x8eeb3352} },
+/**/ {{0x3c871eb0, 0x8799a164} },
+/**/ {{0xbfc3e9df, 0x6e36e75c} },
+/**/ {{0x3c541555, 0x4e37666f} },
+/**/ {{0xbfd21bd3, 0x87008bd0} },
+/**/ {{0xbc609e14, 0xc24ff75f} },
+/**/ {{0x3fc26004, 0x36860504} },
+/**/ {{0xbc58f8ca, 0x1ebc8c40} },
+/**/ {{0x3fc076bd, 0xb9f4ead3} },
+/**/ {{0xbfc05012, 0xed70ddd5} },
+/**/ {{0xbfabef8a, 0x33e194b1} },
+/**/ {{0x3fbbbba6, 0x7423a91f} },
+/**/ {{0x3f859e6a, 0xdd99da12} } },
+/**/ {{{0x3fc58000, 0x00000000} },
+/**/ {{0x3fc54d18, 0xba11570a} },
+/**/ {{0x3c618282, 0xf2884073} },
+/**/ {{0x3fef1f37, 0x87eb4d7d} },
+/**/ {{0x3c8476f0, 0xedda13e6} },
+/**/ {{0xbfc45617, 0x7f997c7c} },
+/**/ {{0xbc46bf5b, 0x6423ceda} },
+/**/ {{0xbfd1f6c1, 0xd0784ec7} },
+/**/ {{0xbc74ec12, 0xd106a8e0} },
+/**/ {{0x3fc2b160, 0x4967338d} },
+/**/ {{0x3c5309c0, 0x61339c25} },
+/**/ {{0x3fc0144d, 0xa7f42962} },
+/**/ {{0xbfc07f71, 0x73dbaeec} },
+/**/ {{0xbfaa3322, 0x2aeda9a4} },
+/**/ {{0x3fbbd00c, 0x69b152b3} },
+/**/ {{0x3f7d4f90, 0x4c782821} } },
+/**/ {{{0x3fc60000, 0x00000000} },
+/**/ {{0x3fc5c981, 0x1e3ec26a} },
+/**/ {{0xbc5054ab, 0x2c010f3d} },
+/**/ {{0x3fef14f1, 0x9cce28eb} },
+/**/ {{0xbc8b7c25, 0x2708cd6e} },
+/**/ {{0xbfc4c16f, 0x42678d07} },
+/**/ {{0x3c5f55ba, 0xc1560017} },
+/**/ {{0xbfd1d10f, 0x4fccc153} },
+/**/ {{0x3c529588, 0x1bcc361d} },
+/**/ {{0x3fc300cd, 0x74979f8c} },
+/**/ {{0xbc6b1da5, 0x0bc1e891} },
+/**/ {{0x3fbf6194, 0xfbe70208} },
+/**/ {{0xbfc0abc5, 0x4b1c266f} },
+/**/ {{0xbfa875b2, 0x3b74e858} },
+/**/ {{0x3fbbdca6, 0x92e46f11} },
+/**/ {{0x3f6f0b17, 0x9de94aef} } },
+/**/ {{{0x3fc68000, 0x00000000} },
+/**/ {{0x3fc645bf, 0xffb3aa74} },
+/**/ {{0xbc3f536b, 0x677c2cb4} },
+/**/ {{0x3fef0a76, 0x3eaa4ed6} },
+/**/ {{0x3c888c52, 0x0b06c761} },
+/**/ {{0xbfc52be2, 0xfd884489} },
+/**/ {{0x3c67ec59, 0xbe5c728a} },
+/**/ {{0xbfd1aabf, 0xe80e4e0a} },
+/**/ {{0xbc71320e, 0xe90c909e} },
+/**/ {{0x3fc34e46, 0x864781ca} },
+/**/ {{0x3c42fcb3, 0x126138ee} },
+/**/ {{0x3fbe988d, 0x013b5d4f} },
+/**/ {{0xbfc0d50d, 0x122409a2} },
+/**/ {{0xbfa6b7b6, 0x7bb562c1} },
+/**/ {{0x3fbbe18a, 0x3df8dee8} },
+/**/ {{0x3f3e4009, 0x8809e1ef} } },
+/**/ {{{0x3fc70000, 0x00000000} },
+/**/ {{0x3fc6c1d4, 0x898933d9} },
+/**/ {{0xbc52954a, 0x7603c427} },
+/**/ {{0x3feeffc5, 0xe06cfb34} },
+/**/ {{0xbc85c037, 0x379877c2} },
+/**/ {{0xbfc5956f, 0x0f53a52c} },
+/**/ {{0x3c4d46a2, 0xe566376c} },
+/**/ {{0xbfd183d7, 0x86559c11} },
+/**/ {{0x3c7d2520, 0x64734c7f} },
+/**/ {{0x3fc399c6, 0xa80eddd5} },
+/**/ {{0x3c616c26, 0x40fbef6f} },
+/**/ {{0x3fbdcda7, 0xf4b571a7} },
+/**/ {{0xbfc0fb48, 0x3fd42996} },
+/**/ {{0xbfa4f9a9, 0x95c85118} },
+/**/ {{0x3fbbdecf, 0x9d795df4} },
+/**/ {{0xbf672003, 0xb85bf719} } },
+/**/ {{{0x3fc78000, 0x00000000} },
+/**/ {{0x3fc73dbd, 0xe8a7d202} },
+/**/ {{0xbc55ad0f, 0x6d4a665d} },
+/**/ {{0x3feef4e0, 0xf6ce5590} },
+/**/ {{0xbc833df6, 0x556900ef} },
+/**/ {{0xbfc5fe0f, 0xedcc9488} },
+/**/ {{0x3c5078de, 0xd2b9e35c} },
+/**/ {{0xbfd15c5a, 0x210cab36} },
+/**/ {{0x3c67fa93, 0xf55e532a} },
+/**/ {{0x3fc3e349, 0x5efd9a41} },
+/**/ {{0xbc6cf709, 0xc8573a12} },
+/**/ {{0x3fbd010a, 0x6c903aef} },
+/**/ {{0xbfc11e77, 0x20571328} },
+/**/ {{0xbfa33c04, 0x9a1875dd} },
+/**/ {{0x3fbbd491, 0xb09ec0ce} },
+/**/ {{0xbf78d197, 0x35537a65} } },
+/**/ {{{0x3fc80000, 0x00000000} },
+/**/ {{0x3fc7b97b, 0x4bce5b02} },
+/**/ {{0x3c5347b0, 0xb4f881ca} },
+/**/ {{0x3feee9c7, 0xf8458e02} },
+/**/ {{0xbc616380, 0x7ba71fe1} },
+/**/ {{0xbfc665c2, 0x26d69eeb} },
+/**/ {{0xbc572a33, 0xfdb5eea8} },
+/**/ {{0xbfd1344b, 0xb737e8f3} },
+/**/ {{0xbc757b70, 0x62badf41} },
+/**/ {{0x3fc42aca, 0x8b929b0b} },
+/**/ {{0x3c43cdb5, 0x7a8b7d91} },
+/**/ {{0x3fbc32d8, 0xf683981c} },
+/**/ {{0xbfc13e9a, 0xd22d5ecc} },
+/**/ {{0xbfa17f3e, 0xd35c8c33} },
+/**/ {{0x3fbbc2ee, 0x2a73307e} },
+/**/ {{0xbf82ee04, 0x2bddc834} } },
+/**/ {{{0x3fc88000, 0x00000000} },
+/**/ {{0x3fc8350b, 0xe398ebc8} },
+/**/ {{0xbc55a913, 0x32b9c90d} },
+/**/ {{0x3feede7b, 0x5cfce04c} },
+/**/ {{0x3c8507c2, 0x3b51a72f} },
+/**/ {{0xbfc6cc82, 0x6067718b} },
+/**/ {{0x3c6d00ca, 0xdbfc430f} },
+/**/ {{0xbfd10bb0, 0x4fbf6fe8} },
+/**/ {{0x3c321748, 0x53749c72} },
+/**/ {{0x3fc47046, 0x699a36ad} },
+/**/ {{0xbc63924c, 0x3994d40c} },
+/**/ {{0x3fbb6338, 0x0dfb7483} },
+/**/ {{0xbfc15bb5, 0x42ee5820} },
+/**/ {{0xbf9f879b, 0x385194fc} },
+/**/ {{0x3fbbaa05, 0x57d040e9} },
+/**/ {{0xbf895566, 0xada71ca0} } },
+/**/ {{{0x3fc90000, 0x00000000} },
+/**/ {{0x3fc8b06e, 0xe2879c29} },
+/**/ {{0xbc6118cd, 0x30308c4f} },
+/**/ {{0x3feed2fb, 0x9ec57f51} },
+/**/ {{0xbc83fdc5, 0xc0d106ba} },
+/**/ {{0xbfc7324d, 0x58b40d27} },
+/**/ {{0x3c68e240, 0xfc062163} },
+/**/ {{0xbfd0e28b, 0xf8b8a2bf} },
+/**/ {{0xbc7b8d8a, 0x64c55b39} },
+/**/ {{0x3fc4b3b9, 0x8ff46730} },
+/**/ {{0xbc5af146, 0x988563da} },
+/**/ {{0x3fba924c, 0x1277a10d} },
+/**/ {{0xbfc175c9, 0x2bbfd54d} },
+/**/ {{0xbf9c1448, 0x6c522340} },
+/**/ {{0x3fbb89fa, 0x044f2f6b} },
+/**/ {{0xbf8f9cc7, 0xaaecc742} } },
+/**/ {{{0x3fc98000, 0x00000000} },
+/**/ {{0x3fc92ba3, 0x7d050272} },
+/**/ {{0xbc60d3de, 0xd0ff4764} },
+/**/ {{0x3feec749, 0x390b6afe} },
+/**/ {{0xbc5c3d17, 0x4e3659ca} },
+/**/ {{0xbfc7971f, 0xe659b3de} },
+/**/ {{0x3c4cab11, 0x373f554d} },
+/**/ {{0xbfd0b8e2, 0xc6b052a4} },
+/**/ {{0x3c7da014, 0x6f3b74bc} },
+/**/ {{0x3fc4f520, 0xf0432146} },
+/**/ {{0xbc6769ad, 0xa8027290} },
+/**/ {{0x3fb9c039, 0x3e17b570} },
+/**/ {{0xbfc18cda, 0x0d8833a4} },
+/**/ {{0xbf98a567, 0x4627d340} },
+/**/ {{0x3fbb62f1, 0x5e42eff7} },
+/**/ {{0xbf92e10a, 0x7ee3bed3} } },
+/**/ {{{0x3fca0000, 0x00000000} },
+/**/ {{0x3fc9a6a8, 0xe96c8626} },
+/**/ {{0x3c4cf601, 0xe7b4348e} },
+/**/ {{0x3feebb64, 0xa8c932d7} },
+/**/ {{0x3c20538d, 0x79aae302} },
+/**/ {{0xbfc7faf6, 0xf88295fe} },
+/**/ {{0xbc687a81, 0x932909e9} },
+/**/ {{0xbfd08eb8, 0xd3f5a07b} },
+/**/ {{0xbc620a05, 0xfb7d6aaa} },
+/**/ {{0x3fc53479, 0xd6814372} },
+/**/ {{0xbc53c682, 0x0a0c6620} },
+/**/ {{0x3fb8ed23, 0x9c562d77} },
+/**/ {{0xbfc1a0ec, 0x2cdd89fd} },
+/**/ {{0xbf953bd4, 0xfec9df82} },
+/**/ {{0x3fbb3512, 0xd9d3f0f6} },
+/**/ {{0xbf95e1ab, 0x4534ccf5} } },
+/**/ {{{0x3fca8000, 0x00000000} },
+/**/ {{0x3fca217e, 0x601081a6} },
+/**/ {{0xbc60def8, 0xa60af374} },
+/**/ {{0x3feeaf4e, 0x6c7ba732} },
+/**/ {{0x3c89fa72, 0xe91fffe1} },
+/**/ {{0xbfc85dcf, 0x970642c3} },
+/**/ {{0xbc5732c2, 0x5b7f0ad0} },
+/**/ {{0xbfd06412, 0x3fe5c74d} },
+/**/ {{0xbc7d0053, 0x4a82f9b1} },
+/**/ {{0x3fc571c1, 0xe882973d} },
+/**/ {{0x3c59d9a3, 0x9090f12c} },
+/**/ {{0x3fb8192f, 0x00f5d0e0} },
+/**/ {{0xbfc1b204, 0x8db53983} },
+/**/ {{0xbf91d869, 0xbdd7b47e} },
+/**/ {{0x3fbb0088, 0x1355a903} },
+/**/ {{0xbf98cf57, 0x724a2ad9} } },
+/**/ {{{0x3fcb0000, 0x00000000} },
+/**/ {{0x3fca9c23, 0x1b403279} },
+/**/ {{0x3c60e8bb, 0xe89cca85} },
+/**/ {{0x3feea307, 0x04157b4f} },
+/**/ {{0x3c8ad743, 0xfd8bf1f0} },
+/**/ {{0xbfc8bfa6, 0xe285e2fd} },
+/**/ {{0xbc6ce765, 0x9c834c8f} },
+/**/ {{0xbfd038f3, 0x2e38fd26} },
+/**/ {{0x3c6a42ec, 0xef212a80} },
+/**/ {{0x3fc5acf7, 0x255d65d5} },
+/**/ {{0xbc619fba, 0xbe486771} },
+/**/ {{0x3fb7447e, 0xff244e15} },
+/**/ {{0xbfc1c028, 0xeed71b69} },
+/**/ {{0xbf8cf7f0, 0xaceecf68} },
+/**/ {{0x3fbac57c, 0xb0ee161b} },
+/**/ {{0xbf9ba92d, 0xefc8f53e} } },
+/**/ {{{0x3fcb8000, 0x00000000} },
+/**/ {{0x3fcb1696, 0x574d780c} },
+/**/ {{0xbc585ab8, 0xfc15a673} },
+/**/ {{0x3fee968e, 0xf0f2da5a} },
+/**/ {{0xbc6fffe1, 0x69710f0d} },
+/**/ {{0xbfc9207a, 0x148444b5} },
+/**/ {{0xbc66661a, 0x1802fa91} },
+/**/ {{0xbfd00d5f, 0xc65096ca} },
+/**/ {{0x3c7f2a2e, 0x8920e744} },
+/**/ {{0x3fc5e617, 0xe4be288d} },
+/**/ {{0x3c67fa48, 0x99be934f} },
+/**/ {{0x3fb66f36, 0xe0d4c87a} },
+/**/ {{0xbfc1cb5f, 0xc5179ce8} },
+/**/ {{0xbf864e9c, 0x1011bb6c} },
+/**/ {{0x3fba841e, 0x43a75476} },
+/**/ {{0xbf9e6e5b, 0x845fc859} } },
+/**/ {{{0x3fcc0000, 0x00000000} },
+/**/ {{0x3fcb90d7, 0x529260a2} },
+/**/ {{0x3c217b10, 0xd2e0e5ab} },
+/**/ {{0x3fee89e6, 0xb5ccf172} },
+/**/ {{0x3c820357, 0x153be26a} },
+/**/ {{0xbfc98046, 0x7f79bfd6} },
+/**/ {{0xbc0799ee, 0xf5d60955} },
+/**/ {{0xbfcfc2b8, 0x650d32f4} },
+/**/ {{0xbc6b59de, 0x4d01b49e} },
+/**/ {{0x3fc61d22, 0xd625e475} },
+/**/ {{0xbc68013f, 0xe23c6105} },
+/**/ {{0x3fb59979, 0x9e54f300} },
+/**/ {{0xbfc1d3b0, 0x365c2b85} },
+/**/ {{0xbf7f6cc9, 0x0afb6b97} },
+/**/ {{0x3fba3c9c, 0x28035c12} },
+/**/ {{0xbfa08f0d, 0x8331488a} } },
+/**/ {{{0x3fcc8000, 0x00000000} },
+/**/ {{0x3fcc0ae5, 0x4d768467} },
+/**/ {{0xbc604cdb, 0xf55f26dc} },
+/**/ {{0x3fee7d0e, 0xd6ad70cb} },
+/**/ {{0x3c8e6761, 0xee20d17d} },
+/**/ {{0xbfc9df09, 0x8ee3fcf8} },
+/**/ {{0x3c62daa3, 0xed723e81} },
+/**/ {{0xbfcf69d9, 0x3efdc9b4} },
+/**/ {{0x3c6c7b6f, 0x85a20110} },
+/**/ {{0x3fc65217, 0x0013c661} },
+/**/ {{0xbc678a0c, 0xab1387be} },
+/**/ {{0x3fb4c369, 0xd61f268e} },
+/**/ {{0xbfc1d922, 0x146d6110} },
+/**/ {{0xbf726199, 0xc0b0ed0a} },
+/**/ {{0x3fb9ef27, 0x6629c856} },
+/**/ {{0xbfa1dbda, 0xc1ea955d} } },
+/**/ {{{0x3fcd0000, 0x00000000} },
+/**/ {{0x3fcc84bf, 0x8a742e6e} },
+/**/ {{0xbc595bdd, 0x0682ea26} },
+/**/ {{0x3fee7007, 0xd8e205ea} },
+/**/ {{0x3c816199, 0x7b2991c1} },
+/**/ {{0xbfca3cc0, 0xc751a854} },
+/**/ {{0xbc66a2fd, 0x4efbc78c} },
+/**/ {{0xbfcf102a, 0x76f43baa} },
+/**/ {{0x3c6cfc38, 0x38d996b1} },
+/**/ {{0x3fc684f3, 0xbf1a9ad6} },
+/**/ {{0x3c52eaf7, 0x7c3b6690} },
+/**/ {{0x3fb3ed29, 0xc4ebba84} },
+/**/ {{0xbfc1dbbd, 0xd79a6a53} },
+/**/ {{0xbf55fa5b, 0xfd09510e} },
+/**/ {{0x3fb99bf2, 0x91c74d50} },
+/**/ {{0xbfa31d41, 0x3002c38b} } },
+/**/ {{{0x3fcd8000, 0x00000000} },
+/**/ {{0x3fccfe65, 0x4e1d5395} },
+/**/ {{0x3c647b9a, 0x3f71eafb} },
+/**/ {{0x3fee62d2, 0x42efd10e} },
+/**/ {{0x3c850a65, 0xa021973e} },
+/**/ {{0xbfca9969, 0xc66a1be4} },
+/**/ {{0x3c326164, 0x3753f036} },
+/**/ {{0xbfceb5b4, 0x6b550477} },
+/**/ {{0xbc64cacb, 0xa3ef610f} },
+/**/ {{0x3fc6b5b8, 0xc4e2c295} },
+/**/ {{0x3c66b228, 0x98b2ac7f} },
+/**/ {{0x3fb316db, 0x3e03bb80} },
+/**/ {{0xbfc1db8c, 0x99312ba1} },
+/**/ {{0x3f5ce5b0, 0x8536556f} },
+/**/ {{0x3fb94331, 0xa9b62abf} },
+/**/ {{0xbfa452f3, 0xb36f42fc} } },
+/**/ {{{0x3fce0000, 0x00000000} },
+/**/ {{0x3fcd77d5, 0xdf205736} },
+/**/ {{0x3c6c648d, 0x1534597e} },
+/**/ {{0x3fee556e, 0x9c86d7c6} },
+/**/ {{0xbc830c25, 0x34c9abfd} },
+/**/ {{0xbfcaf502, 0x42f10c89} },
+/**/ {{0xbc411261, 0xf8576d95} },
+/**/ {{0xbfce5a7f, 0x7b1596d9} },
+/**/ {{0x3c574baa, 0x78f7ae18} },
+/**/ {{0x3fc6e466, 0x171949b1} },
+/**/ {{0xbc6ff86b, 0x52f9c399} },
+/**/ {{0x3fb2409f, 0xa3d6f244} },
+/**/ {{0xbfc1d898, 0x0dceacbf} },
+/**/ {{0x3f73c3b6, 0xdc715080} },
+/**/ {{0x3fb8e519, 0xf78687ab} },
+/**/ {{0xbfa57cac, 0x6b1251ec} } },
+/**/ {{{0x3fce8000, 0x00000000} },
+/**/ {{0x3fcdf110, 0x864c9d9e} },
+/**/ {{0xbc35818b, 0x53bf4781} },
+/**/ {{0x3fee47dd, 0x6e7576a6} },
+/**/ {{0x3c89d322, 0x24b84595} },
+/**/ {{0xbfcb4f88, 0x0cc64717} },
+/**/ {{0xbc624035, 0x44bb97a3} },
+/**/ {{0xbfcdfe94, 0x046e8a3b} },
+/**/ {{0xbc6078ee, 0xd278da00} },
+/**/ {{0x3fc710fc, 0x0e4ccbb7} },
+/**/ {{0xbc58c89c, 0x1da51f71} },
+/**/ {{0x3fb16a97, 0xe0d7022a} },
+/**/ {{0xbfc1d2ea, 0x7f8b58f8} },
+/**/ {{0x3f800ed5, 0xaf259d18} },
+/**/ {{0x3fb881e1, 0xeefd29c7} },
+/**/ {{0xbfa69a2c, 0xae6aa0c1} } },
+/**/ {{{0x3fcf0000, 0x00000000} },
+/**/ {{0x3fce6a14, 0x8e96ec4d} },
+/**/ {{0x3c6866b2, 0x2029f765} },
+/**/ {{0x3fee3a1f, 0x429bd423} },
+/**/ {{0xbc86174a, 0x48961291} },
+/**/ {{0xbfcba8f9, 0x0ce18ad9} },
+/**/ {{0x3c62e3e9, 0xb50eb15d} },
+/**/ {{0xbfcda1fa, 0x63927806} },
+/**/ {{0xbbed7b15, 0x8073bacf} },
+/**/ {{0x3fc73b7b, 0x54b8d3bb} },
+/**/ {{0x3c602afb, 0x74869c1c} },
+/**/ {{0x3fb094e4, 0x60993bd6} },
+/**/ {{0xbfc1ca8e, 0xc806a157} },
+/**/ {{0x3f862263, 0xa854d278} },
+/**/ {{0x3fb819c1, 0x0d9e7452} },
+/**/ {{0xbfa7ab3d, 0x08743869} } },
+/**/ {{{0x3fcf8000, 0x00000000} },
+/**/ {{0x3fcee2e1, 0x451d980d} },
+/**/ {{0xbc59a770, 0x8c46ba91} },
+/**/ {{0x3fee2c34, 0xa3df5666} },
+/**/ {{0xbc8ef949, 0x19a92865} },
+/**/ {{0xbfcc0153, 0x454a9009} },
+/**/ {{0x3c5572bf, 0xda1123ca} },
+/**/ {{0xbfcd44ba, 0xf169cd42} },
+/**/ {{0xbc6db0f2, 0xf1052e0a} },
+/**/ {{0x3fc763e4, 0xe5006ad1} },
+/**/ {{0x3c66e21a, 0x3e902796} },
+/**/ {{0x3faf7f4a, 0x12812c7d} },
+/**/ {{0xbfc1bf90, 0x4a558d9d} },
+/**/ {{0x3f8c1b52, 0x2be7fbfd} },
+/**/ {{0x3fb7acef, 0xba5b0263} },
+/**/ {{0xbfa8afad, 0x2dddf4e5} } },
+/**/ {{{0x3fd00000, 0x00000000} },
+/**/ {{0x3fcf5b75, 0xf92c80dd} },
+/**/ {{0x3c68ab6e, 0x3cf7afbd} },
+/**/ {{0x3fee1e1e, 0x1e1e1e1e} },
+/**/ {{0x3c6e1e1e, 0x1e1e1e1e} },
+/**/ {{0xbfcc5894, 0xd10d4986} },
+/**/ {{0x3c5f00e2, 0xc4a6886a} },
+/**/ {{0xbfcce6de, 0x0253d27e} },
+/**/ {{0xbc65d764, 0x3c5fce89} },
+/**/ {{0x3fc78a3a, 0x08d88b02} },
+/**/ {{0x3c4fc5d6, 0x32bd57e4} },
+/**/ {{0x3fadd5f2, 0x6a622b44} },
+/**/ {{0xbfc1b1fa, 0xecd7c4e0} },
+/**/ {{0x3f90fc3e, 0x1fc8b549} },
+/**/ {{0x3fb73ba7, 0x25728acf} },
+/**/ {{0xbfa9a753, 0xeeba051f} } },
+/**/ {{{0x3fd04000, 0x00000000} },
+/**/ {{0x3fcfd3d1, 0xfc40dbe4} },
+/**/ {{0x3c437146, 0xf3a1c5ea} },
+/**/ {{0x3fee0fdc, 0x3e228818} },
+/**/ {{0xbc62e075, 0x8c042ef5} },
+/**/ {{0xbfccaebb, 0xe42a71b9} },
+/**/ {{0xbc69fa0a, 0x8025fd1d} },
+/**/ {{0xbfcc886b, 0xe4ed28e5} },
+/**/ {{0xbc59ccc3, 0x7604b95a} },
+/**/ {{0x3fc7ae7c, 0x57a32fb9} },
+/**/ {{0x3c67393b, 0xe36848c2} },
+/**/ {{0x3fac2dff, 0x5a1b7b6f} },
+/**/ {{0xbfc1a1db, 0x12f690d4} },
+/**/ {{0x3f93dc65, 0xa575dc1d} },
+/**/ {{0x3fb6c621, 0x28a107f6} },
+/**/ {{0xbfaa920f, 0x23d2c35f} } },
+/**/ {{{0x3fd08000, 0x00000000} },
+/**/ {{0x3fd025fa, 0x510665b6} },
+/**/ {{0xbc7672df, 0x6832fa48} },
+/**/ {{0x3fee016f, 0x9196b776} },
+/**/ {{0x3c81da3a, 0xb14efc08} },
+/**/ {{0xbfcd03c6, 0xcb847375} },
+/**/ {{0xbc6819f2, 0xfc4c6f52} },
+/**/ {{0xbfcc296c, 0xe0dbf8a5} },
+/**/ {{0xbc55cc84, 0x27fb1c17} },
+/**/ {{0x3fc7d0ad, 0xb4fbbf40} },
+/**/ {{0x3c6378b3, 0x41b71641} },
+/**/ {{0x3faa87ad, 0x440404cd} },
+/**/ {{0xbfc18f3d, 0x96d156a8} },
+/**/ {{0x3f96ad9b, 0x9ef40490} },
+/**/ {{0x3fb64c98, 0x27a95e14} },
+/**/ {{0xbfab6fc3, 0x97cfdce0} } },
+/**/ {{{0x3fd0c000, 0x00000000} },
+/**/ {{0x3fd061ee, 0xa03d6291} },
+/**/ {{0xbc45f760, 0xdb154301} },
+/**/ {{0x3fedf2d8, 0xa6f82a61} },
+/**/ {{0xbc6cedbb, 0x560866af} },
+/**/ {{0xbfcd57b3, 0xecc8c02c} },
+/**/ {{0x3c641512, 0x85b9541c} },
+/**/ {{0xbfcbc9e9, 0x35a209c0} },
+/**/ {{0x3c65bfd8, 0x4914a5d1} },
+/**/ {{0x3fc7f0d0, 0x4f358b07} },
+/**/ {{0xbc60dc70, 0x3f47a5cc} },
+/**/ {{0x3fa8e337, 0x50af01c1} },
+/**/ {{0xbfc17a2f, 0xc2daf61b} },
+/**/ {{0x3f996f63, 0x57b649f0} },
+/**/ {{0x3fb5cf46, 0xf14fef28} },
+/**/ {{0xbfac405c, 0xec5a22c2} } },
+/**/ {{{0x3fd10000, 0x00000000} },
+/**/ {{0x3fd09dc5, 0x97d86362} },
+/**/ {{0x3c762e47, 0x390cb865} },
+/**/ {{0x3fede418, 0x0d8b5ae6} },
+/**/ {{0x3c719298, 0x23f66cf0} },
+/**/ {{0xbfcdaa81, 0xc655a596} },
+/**/ {{0x3c666d0d, 0x6a90480b} },
+/**/ {{0xbfcb69e9, 0x1974fd6c} },
+/**/ {{0xbc68e199, 0xec28723f} },
+/**/ {{0x3fc80ee6, 0x9dcd2641} },
+/**/ {{0x3c37ccfe, 0x45b4bb82} },
+/**/ {{0x3fa740d7, 0x64b143be} },
+/**/ {{0xbfc162bf, 0x4b6b7330} },
+/**/ {{0x3f9c2147, 0x7a20d203} },
+/**/ {{0x3fb54e68, 0xa0d6b625} },
+/**/ {{0xbfad03cd, 0x7b6e81ad} } },
+/**/ {{{0x3fd14000, 0x00000000} },
+/**/ {{0x3fd0d97e, 0xe509acb3} },
+/**/ {{0x3c747c31, 0x7bd5a3eb} },
+/**/ {{0x3fedd52e, 0x554f6dcf} },
+/**/ {{0xbc75c686, 0xddcd060b} },
+/**/ {{0xbfcdfc2e, 0xef1cb578} },
+/**/ {{0xbc46ae20, 0xd1677d50} },
+/**/ {{0xbfcb0974, 0xb81cdb34} },
+/**/ {{0x3c36ed8e, 0xda61c86c} },
+/**/ {{0x3fc82af3, 0x5fcd53c1} },
+/**/ {{0xbc424fe5, 0x57b559e7} },
+/**/ {{0x3fa5a0c6, 0x17013aef} },
+/**/ {{0xbfc148fa, 0x484940dd} },
+/**/ {{0x3f9ec2da, 0x1737ca6d} },
+/**/ {{0x3fb4ca38, 0x800ba495} },
+/**/ {{0xbfadba0e, 0x35128042} } },
+/**/ {{{0x3fd18000, 0x00000000} },
+/**/ {{0x3fd1151a, 0x362431ca} },
+/**/ {{0xbc74dc8d, 0xc9077b9f} },
+/**/ {{0x3fedc61c, 0x0ef1f116} },
+/**/ {{0xbc8fe39f, 0x2d41c166} },
+/**/ {{0xbfce4cba, 0x1681d2c9} },
+/**/ {{0x3c340fb4, 0x369a3c18} },
+/**/ {{0xbfcaa894, 0x31d921e2} },
+/**/ {{0x3c6bf59e, 0x64c48da4} },
+/**/ {{0x3fc844f9, 0x9a284cea} },
+/**/ {{0xbc563be0, 0x629cfeb8} },
+/**/ {{0x3fa4033a, 0xa7f26285} },
+/**/ {{0xbfc12cef, 0x2e2d72ea} },
+/**/ {{0x3fa0a9da, 0x554d151d} },
+/**/ {{0x3fb442f1, 0xe9f9174f} },
+/**/ {{0xbfae631e, 0x799e467c} } },
+/**/ {{{0x3fd1c000, 0x00000000} },
+/**/ {{0x3fd15097, 0x3a9ce547} },
+/**/ {{0xbc7796ba, 0x7f9ca328} },
+/**/ {{0x3fedb6e1, 0xcbc2abaa} },
+/**/ {{0xbc823b7a, 0xc39a4e7c} },
+/**/ {{0xbfce9c22, 0x0436f806} },
+/**/ {{0xbc64a5ec, 0x885803cb} },
+/**/ {{0xbfca474f, 0x9a4c8963} },
+/**/ {{0x3c671cf3, 0x6793b663} },
+/**/ {{0x3fc85cfc, 0x9606243b} },
+/**/ {{0x3c5fd2b2, 0x1dcd45ed} },
+/**/ {{0x3fa2686a, 0xf8cc655f} },
+/**/ {{0xbfc10eac, 0xc8460b94} },
+/**/ {{0x3fa1e9bc, 0x0d6eb5ba} },
+/**/ {{0x3fb3b8d0, 0x2e4749c2} },
+/**/ {{0xbfaeff03, 0xf0d19201} } },
+/**/ {{{0x3fd20000, 0x00000000} },
+/**/ {{0x3fd18bf5, 0xa30bf178} },
+/**/ {{0x3c630ca4, 0x748b1bf9} },
+/**/ {{0x3feda780, 0x1da7801e} },
+/**/ {{0xbc861ff8, 0x961ff896} },
+/**/ {{0xbfceea65, 0x9814cb11} },
+/**/ {{0xbc5f9845, 0x34cb01ca} },
+/**/ {{0xbfc9e5ae, 0xf76f9fa1} },
+/**/ {{0x3c688b7a, 0xa3ee6a86} },
+/**/ {{0x3fc872ff, 0xdf090624} },
+/**/ {{0x3c31016f, 0x6fbad4bb} },
+/**/ {{0x3fa0d08b, 0x83fe02bc} },
+/**/ {{0xbfc0ee42, 0x31b98637} },
+/**/ {{0x3fa320e6, 0x5b309f28} },
+/**/ {{0x3fb32c0e, 0x755cbc43} },
+/**/ {{0xbfaf8dca, 0x5dea1ddb} } },
+/**/ {{{0x3fd24000, 0x00000000} },
+/**/ {{0x3fd1c735, 0x212dd884} },
+/**/ {{0xbc67d9ac, 0x78cb2f2e} },
+/**/ {{0x3fed97f7, 0x971063d2} },
+/**/ {{0x3c67a20b, 0xc8b326b7} },
+/**/ {{0xbfcf3783, 0xc9f01359} },
+/**/ {{0x3c4a8b96, 0xd0a651ad} },
+/**/ {{0xbfc983ba, 0x408a6757} },
+/**/ {{0x3c6dfff9, 0xe6424f06} },
+/**/ {{0x3fc88707, 0x41881aad} },
+/**/ {{0xbc63baf9, 0x2204fd29} },
+/**/ {{0x3f9e779e, 0xabd6e10d} },
+/**/ {{0xbfc0cbbe, 0xcf2eab41} },
+/**/ {{0x3fa44f31, 0x1659f377} },
+/**/ {{0x3fb29ce7, 0xa54a8a94} },
+/**/ {{0xbfb007c1, 0xb87973d7} } },
+/**/ {{{0x3fd28000, 0x00000000} },
+/**/ {{0x3fd20255, 0x67e47c96} },
+/**/ {{0xbc618323, 0x28f4290e} },
+/**/ {{0x3fed8848, 0xcaeb6c2a} },
+/**/ {{0x3c81e70d, 0xa08296a2} },
+/**/ {{0xbfcf837b, 0xa96c2792} },
+/**/ {{0xbc6ab5ce, 0xc6884369} },
+/**/ {{0xbfc92179, 0x5d351cdb} },
+/**/ {{0x3c617000, 0x68719d81} },
+/**/ {{0x3fc89916, 0xc8c1ca07} },
+/**/ {{0xbc6a3339, 0x18b0f81b} },
+/**/ {{0x3f9b54d0, 0x0caf6121} },
+/**/ {{0xbfc0a732, 0x485ba392} },
+/**/ {{0x3fa57477, 0xc250c31e} },
+/**/ {{0x3fb20b96, 0x4790b4a8} },
+/**/ {{0xbfb04223, 0x4ac23178} } },
+/**/ {{{0x3fd2c000, 0x00000000} },
+/**/ {{0x3fd23d56, 0x2b381042} },
+/**/ {{0xbc5c5317, 0x16200088} },
+/**/ {{0x3fed7874, 0x4c98f347} },
+/**/ {{0xbc8a7dac, 0x9a72647e} },
+/**/ {{0xbfcfce4c, 0x5dca68a2} },
+/**/ {{0x3c6433de, 0x8fb9ffdd} },
+/**/ {{0xbfc8bef4, 0x246041ce} },
+/**/ {{0xbc66c620, 0x1fb39160} },
+/**/ {{0x3fc8a932, 0xbd062535} },
+/**/ {{0xbc6e24c7, 0xfbc3a86c} },
+/**/ {{0x3f98390b, 0x64d0109d} },
+/**/ {{0xbfc080ac, 0x819f2998} },
+/**/ {{0x3fa69099, 0x8784ffb8} },
+/**/ {{0x3fb17854, 0x6fc55e9b} },
+/**/ {{0xbfb07618, 0x5f970a81} } },
+/**/ {{{0x3fd30000, 0x00000000} },
+/**/ {{0x3fd27837, 0x2057ef46} },
+/**/ {{0xbc7077cd, 0xd36dfc81} },
+/**/ {{0x3fed687a, 0xafdfd5ba} },
+/**/ {{0xbc782e68, 0xe19d8d3d} },
+/**/ {{0xbfd00bfa, 0x92db6fdb} },
+/**/ {{0x3c7854cd, 0xc0af523f} },
+/**/ {{0xbfc85c32, 0x5b640da2} },
+/**/ {{0x3c5d5bdd, 0x5e6f23d6} },
+/**/ {{0x3fc8b75f, 0xa1da32d2} },
+/**/ {{0x3c2788df, 0x29860bfe} },
+/**/ {{0x3f9524ad, 0xee810d60} },
+/**/ {{0xbfc0583d, 0x95a69dea} },
+/**/ {{0x3fa7a379, 0x2b4d3dec} },
+/**/ {{0x3fb0e35b, 0xa3290dfe} },
+/**/ {{0xbfb0a3b2, 0x19e12287} } },
+/**/ {{{0x3fd34000, 0x00000000} },
+/**/ {{0x3fd2b2f7, 0xfd9b5fe2} },
+/**/ {{0x3c2423cf, 0xc1c2d443} },
+/**/ {{0x3fed585c, 0x88e1caa2} },
+/**/ {{0xbc2c8af2, 0x01239e18} },
+/**/ {{0xbfd0303a, 0xab890af7} },
+/**/ {{0x3c7d42bf, 0x726290e6} },
+/**/ {{0xbfc7f93b, 0xb5175de0} },
+/**/ {{0x3c5d5d4b, 0xe0ddc367} },
+/**/ {{0x3fc8c3a2, 0x3414de7c} },
+/**/ {{0x3c5ade9b, 0xba92bfce} },
+/**/ {{0x3f921811, 0xda70853d} },
+/**/ {{0xbfc02df5, 0xcf23aaf0} },
+/**/ {{0x3fa8acfd, 0x06445ff8} },
+/**/ {{0x3fb04ce4, 0xc130eba4} },
+/**/ {{0xbfb0cb04, 0x29de3135} } },
+/**/ {{{0x3fd38000, 0x00000000} },
+/**/ {{0x3fd2ed98, 0x7a823cfe} },
+/**/ {{0x3c6b9125, 0x8ea012ca} },
+/**/ {{0x3fed481a, 0x6c0fd782} },
+/**/ {{0x3c82dda4, 0x85ff74ea} },
+/**/ {{0xbfd053e6, 0x2f5c1e18} },
+/**/ {{0xbc679cf2, 0x8ec637b8} },
+/**/ {{0xbfc79617, 0xd0ee3e3b} },
+/**/ {{0xbc4e91e0, 0x732049a6} },
+/**/ {{0x3fc8cdff, 0x67f6478d} },
+/**/ {{0xbc5cb659, 0xf5079e63} },
+/**/ {{0x3f8e271c, 0x8e8ef686} },
+/**/ {{0xbfc001e5, 0xa2940881} },
+/**/ {{0x3fa9ad0e, 0xf937caae} },
+/**/ {{0x3faf6a4f, 0xda1e257f} },
+/**/ {{0xbfb0ec24, 0xb07d42be} } },
+/**/ {{{0x3fd3c000, 0x00000000} },
+/**/ {{0x3fd32818, 0x4fb58952} },
+/**/ {{0xbc7a95f0, 0xa9939f2f} },
+/**/ {{0x3fed37b4, 0xee1ee130} },
+/**/ {{0x3c747541, 0x6fbb1f2d} },
+/**/ {{0xbfd076fc, 0xe022dd0d} },
+/**/ {{0x3c6d8659, 0x5534523a} },
+/**/ {{0xbfc732ce, 0x3a201d6b} },
+/**/ {{0xbc56a551, 0xc98a3a62} },
+/**/ {{0x3fc8d67c, 0x673a29b8} },
+/**/ {{0xbc54ae9d, 0xff95efe6} },
+/**/ {{0x3f882eee, 0x74ce6814} },
+/**/ {{0xbfbfa83b, 0x503ba8f4} },
+/**/ {{0x3faaa39c, 0x60b63f75} },
+/**/ {{0x3fae38b8, 0xf07ff274} },
+/**/ {{0xbfb1072c, 0x2200fe4d} } },
+/**/ {{{0x3fd40000, 0x00000000} },
+/**/ {{0x3fd36277, 0x3707ebcc} },
+/**/ {{0xbc6963a5, 0x44b672d8} },
+/**/ {{0x3fed272c, 0xa3fc5b1a} },
+/**/ {{0x3c8ae01d, 0x272ca3fc} },
+/**/ {{0xbfd0997e, 0x8aec9d8e} },
+/**/ {{0x3c74aeda, 0x72595f36} },
+/**/ {{0xbfc6cf66, 0x66d5c0ff} },
+/**/ {{0x3c410e2a, 0x3ca66cc1} },
+/**/ {{0x3fc8dd1e, 0x8f2617b5} },
+/**/ {{0xbc6d173e, 0x4facfb67} },
+/**/ {{0x3f82483b, 0x33966883} },
+/**/ {{0xbfbf495d, 0x2b05b16b} },
+/**/ {{0x3fab9096, 0x074fdeaf} },
+/**/ {{0x3fad0571, 0x9c4605c9} },
+/**/ {{0xbfb11c35, 0x280318fd} } },
+/**/ {{{0x3fd44000, 0x00000000} },
+/**/ {{0x3fd39cb4, 0xeb76157c} },
+/**/ {{0xbc72f4da, 0x5a214713} },
+/**/ {{0x3fed1682, 0x22c31625} },
+/**/ {{0x3c8ac111, 0xd5e51b41} },
+/**/ {{0xbfd0bb6b, 0x07e9a89a} },
+/**/ {{0x3c76fb53, 0x7faa1dda} },
+/**/ {{0xbfc66be7, 0xb75f0772} },
+/**/ {{0xbc69a77d, 0xee6d618b} },
+/**/ {{0x3fc8e1eb, 0x6e943d69} },
+/**/ {{0xbc6982c4, 0xc5ec9ebe} },
+/**/ {{0x3f78e73c, 0x9c2d3c0c} },
+/**/ {{0xbfbee752, 0x7059f387} },
+/**/ {{0x3fac73f0, 0x16982f58} },
+/**/ {{0x3fabd0e4, 0xc146b407} },
+/**/ {{0xbfb12b5c, 0x82f43254} } },
+/**/ {{{0x3fd48000, 0x00000000} },
+/**/ {{0x3fd3d6d1, 0x29271134} },
+/**/ {{0x3c7137ca, 0x41cc958a} },
+/**/ {{0x3fed05b5, 0xffb0304c} },
+/**/ {{0xbc8fc921, 0x33e896e5} },
+/**/ {{0xbfd0dcc2, 0x3a49e254} },
+/**/ {{0x3c704578, 0x925cb599} },
+/**/ {{0xbfc60859, 0x75708502} },
+/**/ {{0xbc5f88bc, 0x9feebe6c} },
+/**/ {{0x3fc8e4e8, 0xc3fb5c1c} },
+/**/ {{0x3c6de114, 0xd6b77a05} },
+/**/ {{0x3f6ac6b3, 0xdbc6c857} },
+/**/ {{0xbfbe823c, 0xdeabd793} },
+/**/ {{0x3fad4da2, 0x06fb52a7} },
+/**/ {{0x3faa9b7b, 0x2bea698c} },
+/**/ {{0xbfb134c0, 0xeb32d745} } },
+/**/ {{{0x3fd4c000, 0x00000000} },
+/**/ {{0x3fd410cb, 0xad6c7d33} },
+/**/ {{0xbc7b0c8b, 0xae13b512} },
+/**/ {{0x3fecf4c8, 0xd0182625} },
+/**/ {{0x3c8e6308, 0xf4103798} },
+/**/ {{0xbfd0fd84, 0x101a5438} },
+/**/ {{0x3c425fcd, 0x7d2e3e34} },
+/**/ {{0xbfc5a4c2, 0xd36904f6} },
+/**/ {{0x3c5d3583, 0x54f27bb6} },
+/**/ {{0x3fc8e61c, 0x7b74b00c} },
+/**/ {{0x3c32f7ad, 0xefe568b6} },
+/**/ {{0x3f402f60, 0xaa3667f2} },
+/**/ {{0xbfbe1a3e, 0x4c9859c0} },
+/**/ {{0x3fae1da6, 0x8e77c589} },
+/**/ {{0x3fa9659b, 0x6ed5823e} },
+/**/ {{0xbfb13882, 0xf1d3d420} } },
+/**/ {{{0x3fd50000, 0x00000000} },
+/**/ {{0x3fd44aa4, 0x36c2af0a} },
+/**/ {{0xbc75d5e4, 0x3c55b3ba} },
+/**/ {{0x3fece3bb, 0x295c0773} },
+/**/ {{0xbc826fd5, 0x91851b41} },
+/**/ {{0xbfd11db0, 0x8221a582} },
+/**/ {{0x3c7e9654, 0xa9f31d11} },
+/**/ {{0xbfc5412a, 0xeb9ef661} },
+/**/ {{0x3c573faf, 0x5e60433c} },
+/**/ {{0x3fc8e58c, 0xacc06b3a} },
+/**/ {{0xbc5dba9a, 0x64dd81ed} },
+/**/ {{0xbf625ff7, 0xcfe3f01e} },
+/**/ {{0xbfbdaf78, 0x9dae4b1c} },
+/**/ {{0x3faee3fb, 0x8e4e3e16} },
+/**/ {{0x3fa82fa9, 0xc2c60fed} },
+/**/ {{0xbfb136c4, 0xe13555d9} } },
+/**/ {{{0x3fd54000, 0x00000000} },
+/**/ {{0x3fd4845a, 0x84d0c21b} },
+/**/ {{0x3c71e28a, 0x7563c6a6} },
+/**/ {{0x3fecd28d, 0xa0decfad} },
+/**/ {{0xbc72b2c8, 0x49610c12} },
+/**/ {{0xbfd13d47, 0x93bb8da8} },
+/**/ {{0x3c5df07a, 0x1b48d912} },
+/**/ {{0xbfc4dd98, 0xbfb5c8b7} },
+/**/ {{0x3c58a9ff, 0x39a108d7} },
+/**/ {{0x3fc8e33f, 0x99496dc4} },
+/**/ {{0x3c380d8b, 0x19d3995c} },
+/**/ {{0xbf743d59, 0xba1bc2d2} },
+/**/ {{0xbfbd420d, 0xb77862a1} },
+/**/ {{0x3fafa0a1, 0xffb9511c} },
+/**/ {{0x3fa6fa07, 0xe8a86cad} },
+/**/ {{0xbfb12faa, 0x9d75a109} } },
+/**/ {{{0x3fd58000, 0x00000000} },
+/**/ {{0x3fd4bdee, 0x586890e7} },
+/**/ {{0xbc6e4dc7, 0x7c22a757} },
+/**/ {{0x3fecc140, 0xcbfae3a7} },
+/**/ {{0xbc41045d, 0xd8b6f9b9} },
+/**/ {{0xbfd15c49, 0x52b34cdc} },
+/**/ {{0x3c729992, 0x2daa60ac} },
+/**/ {{0xbfc47a13, 0x37fb39ef} },
+/**/ {{0x3c5cb3b2, 0x3482d371} },
+/**/ {{0x3fc8df3b, 0xaa28e022} },
+/**/ {{0xbc61a8ab, 0x969a5447} },
+/**/ {{0xbf7f2135, 0xc651ecb4} },
+/**/ {{0xbfbcd21f, 0x76cc63f7} },
+/**/ {{0x3fb029ce, 0xefdf4de1} },
+/**/ {{0x3fa5c515, 0x0de3bf96} },
+/**/ {{0xbfb12359, 0x84e55ab4} } },
+/**/ {{{0x3fd5c000, 0x00000000} },
+/**/ {{0x3fd4f75f, 0x73869979} },
+/**/ {{0xbc595a1c, 0xf7ff1108} },
+/**/ {{0x3fecafd5, 0x3ff7b52c} },
+/**/ {{0x3c86e099, 0x684b6314} },
+/**/ {{0xbfd17ab5, 0xd71d366e} },
+/**/ {{0x3c602f2c, 0xae2f7b71} },
+/**/ {{0xbfc416a1, 0x22cc956f} },
+/**/ {{0x3c61d29e, 0xe98c24c1} },
+/**/ {{0x3fc8d987, 0x6e2a4f9f} },
+/**/ {{0xbc60de73, 0x4a6a7880} },
+/**/ {{0xbf84ed52, 0x909e42ec} },
+/**/ {{0xbfbc5fcf, 0xa56263a8} },
+/**/ {{0x3fb07e7b, 0x0d159803} },
+/**/ {{0x3fa4912d, 0xb2ddf20b} },
+/**/ {{0xbfb111f8, 0x508c8585} } },
+/**/ {{{0x3fd60000, 0x00000000} },
+/**/ {{0x3fd530ad, 0x9951cd4a} },
+/**/ {{0xbc625664, 0x80884082} },
+/**/ {{0x3fec9e4b, 0x91ff8d87} },
+/**/ {{0xbc7723ff, 0x1b0da370} },
+/**/ {{0xbfd1988d, 0x432f5908} },
+/**/ {{0x3c7d065e, 0xf8714cda} },
+/**/ {{0xbfc3b349, 0x3403e07c} },
+/**/ {{0x3c6b571d, 0x2717fbb0} },
+/**/ {{0x3fc8d229, 0x97d0e938} },
+/**/ {{0x3c66b228, 0xb08a0625} },
+/**/ {{0xbf8a3464, 0xc2fe9cde} },
+/**/ {{0xbfbbeb3f, 0xefb6f244} },
+/**/ {{0x3fb0ce5a, 0x39e67c0b} },
+/**/ {{0x3fa35eab, 0x93b4fb73} },
+/**/ {{0xbfb0fbae, 0xf4d86f78} } },
+/**/ {{{0x3fd64000, 0x00000000} },
+/**/ {{0x3fd569d8, 0x8e1b4cd8} },
+/**/ {{0xbc6fec61, 0xe713cfe2} },
+/**/ {{0x3fec8ca4, 0x57157fc9} },
+/**/ {{0x3c70da14, 0x515734ba} },
+/**/ {{0xbfd1b5cf, 0xc3195094} },
+/**/ {{0x3c740cce, 0xa9537e45} },
+/**/ {{0xbfc35012, 0x046cee83} },
+/**/ {{0xbc651b6c, 0xe446fd10} },
+/**/ {{0x3fc8c928, 0xfb5e6a95} },
+/**/ {{0x3c656cd2, 0x82469bf3} },
+/**/ {{0xbf8f6568, 0xa4afbb1b} },
+/**/ {{0xbfbb7491, 0xdb3aba50} },
+/**/ {{0x3fb11972, 0xb9fd56ec} },
+/**/ {{0x3fa22de5, 0x9329e15e} },
+/**/ {{0xbfb0e0a6, 0x8287d93d} } },
+/**/ {{{0x3fd68000, 0x00000000} },
+/**/ {{0x3fd5a2e0, 0x175e0f4e} },
+/**/ {{0x3c713b7a, 0x8f82e457} },
+/**/ {{0x3fec7ae0, 0x240b83ae} },
+/**/ {{0xbc885b56, 0x10d398ed} },
+/**/ {{0xbfd1d27d, 0x8cdb4db0} },
+/**/ {{0x3c11d95f, 0x2db0447f} },
+/**/ {{0xbfc2ed02, 0x11425541} },
+/**/ {{0xbc11d124, 0x6b2cbaa3} },
+/**/ {{0x3fc8be8c, 0x8cdc5c4d} },
+/**/ {{0xbc542511, 0x794444b0} },
+/**/ {{0xbf923ffd, 0xd25a5415} },
+/**/ {{0xbfbafbe6, 0xbcd1df44} },
+/**/ {{0x3fb15fcc, 0x26bdf05c} },
+/**/ {{0x3fa0ff2f, 0xa7b853e6} },
+/**/ {{0xbfb0c109, 0x07e9a35f} } },
+/**/ {{{0x3fd6c000, 0x00000000} },
+/**/ {{0x3fd5dbc3, 0xfbbe768d} },
+/**/ {{0x3c6ea0ec, 0x1b76f7da} },
+/**/ {{0x3fec68ff, 0x8d78b9ce} },
+/**/ {{0xbc83ab41, 0x4cb5a0c3} },
+/**/ {{0xbfd1ee96, 0xe01c5e6e} },
+/**/ {{0x3c73922c, 0xfb76d8dd} },
+/**/ {{0xbfc28a1f, 0xbbb23677} },
+/**/ {{0x3c6e592a, 0x288601f2} },
+/**/ {{0x3fc8b25b, 0x5e282403} },
+/**/ {{0xbbef7d58, 0x707e09fa} },
+/**/ {{0xbf94c1e0, 0xb65add31} },
+/**/ {{0xbfba815f, 0xafa52f1b} },
+/**/ {{0x3fb1a16f, 0x63712acc} },
+/**/ {{0x3f9fa5b5, 0x95a8d3ad} },
+/**/ {{0xbfb09d01, 0x72814750} } },
+/**/ {{{0x3fd70000, 0x00000000} },
+/**/ {{0x3fd61484, 0x0309cfe2} },
+/**/ {{0xbc7a7257, 0x15711f00} },
+/**/ {{0x3fec5703, 0x27afd9eb} },
+/**/ {{0x3c63c2ab, 0xb32c1d72} },
+/**/ {{0xbfd20a1c, 0x06000419} },
+/**/ {{0xbc7b5fe7, 0xf51a3a28} },
+/**/ {{0xbfc22771, 0x486ad2c8} },
+/**/ {{0xbc499ab5, 0xf84a7eae} },
+/**/ {{0x3fc8a49c, 0x9d027817} },
+/**/ {{0xbc53fcab, 0x2e376ecc} },
+/**/ {{0xbf973831, 0xeaabcb23} },
+/**/ {{0xbfba051d, 0x8c46fbce} },
+/**/ {{0x3fb1de66, 0x9132e9cc} },
+/**/ {{0x3f9d5269, 0xd48d5d65} },
+/**/ {{0xbfb074bb, 0x712354a4} } },
+/**/ {{{0x3fd74000, 0x00000000} },
+/**/ {{0x3fd64d1f, 0xf635c1c6} },
+/**/ {{0xbc7fa403, 0xe7c0fdbe} },
+/**/ {{0x3fec44eb, 0x86b5cbf8} },
+/**/ {{0xbc6a4101, 0xbc5b562d} },
+/**/ {{0xbfd2250d, 0x50fb21ad} },
+/**/ {{0xbc750066, 0xa39bdc1a} },
+/**/ {{0xbfc1c4fc, 0xdf2ed728} },
+/**/ {{0x3c6a87bb, 0x006772e9} },
+/**/ {{0x3fc89557, 0x9122b9b7} },
+/**/ {{0xbc05454e, 0x45b04f75} },
+/**/ {{0xbf99a2c9, 0x6c7888f1} },
+/**/ {{0xbfb98740, 0xe02d36ad} },
+/**/ {{0x3fb216bd, 0x02a99665} },
+/**/ {{0x3f9b0511, 0xb73aeccb} },
+/**/ {{0xbfb04863, 0x569b1738} } },
+/**/ {{{0x3fd78000, 0x00000000} },
+/**/ {{0x3fd68597, 0x9f5fa6fe} },
+/**/ {{0xbc425781, 0x4d1ada9c} },
+/**/ {{0x3fec32b9, 0x3e386c7f} },
+/**/ {{0x3c756033, 0x8cbaa5bf} },
+/**/ {{0xbfd23f6b, 0x1ca84e79} },
+/**/ {{0x3c604cc0, 0xf123d574} },
+/**/ {{0xbfc162c8, 0x8a715435} },
+/**/ {{0x3c5cf6db, 0x454fb8fd} },
+/**/ {{0x3fc88493, 0x9a4eb534} },
+/**/ {{0xbc668a5c, 0x42b959b0} },
+/**/ {{0xbf9c0182, 0x42580bb5} },
+/**/ {{0xbfb907e9, 0xe5822d56} },
+/**/ {{0x3fb24a7f, 0x2f8f8273} },
+/**/ {{0x3f98be3c, 0xa3527f46} },
+/**/ {{0xbfb01825, 0xfce97270} } },
+/**/ {{{0x3fd7c000, 0x00000000} },
+/**/ {{0x3fd6bdea, 0xc9cbd76d} },
+/**/ {{0xbc5a5c56, 0x3e6de828} },
+/**/ {{0x3fec206c, 0xe1857d04} },
+/**/ {{0xbc80439f, 0xf5c83872} },
+/**/ {{0xbfd25935, 0xcd9b9870} },
+/**/ {{0x3c6aaf98, 0xf1ec7306} },
+/**/ {{0xbfc100da, 0x36f94d02} },
+/**/ {{0xbc6e72ca, 0xd96d84ff} },
+/**/ {{0x3fc87258, 0x2e774351} },
+/**/ {{0x3c6c50a2, 0xb8860ef0} },
+/**/ {{0xbf9e543a, 0x741ef0ec} },
+/**/ {{0xbfb88738, 0x7b4d0ec2} },
+/**/ {{0x3fb279ba, 0xa8164103} },
+/**/ {{0x3f967e73, 0xa7f1ae35} },
+/**/ {{0xbfafc861, 0x5257c3de} } },
+/**/ {{{0x3fd80000, 0x00000000} },
+/**/ {{0x3fd6f619, 0x41e4def1} },
+/**/ {{0xbc7c63aa, 0xe6f6e918} },
+/**/ {{0x3fec0e07, 0x0381c0e0} },
+/**/ {{0x3c8c0e07, 0x0381c0e0} },
+/**/ {{0xbfd2726d, 0xd135c174} },
+/**/ {{0xbc2d352d, 0xe0951cf8} },
+/**/ {{0xbfc09f37, 0xb38cc8cf} },
+/**/ {{0xbc69db81, 0xae75327f} },
+/**/ {{0x3fc85eac, 0xd7da413c} },
+/**/ {{0x3c5b1a89, 0x6ebae2bc} },
+/**/ {{0xbfa04d69, 0x80fcc815} },
+/**/ {{0xbfb8054c, 0x1df326f9} },
+/**/ {{0x3fb2a47e, 0x082bda60} },
+/**/ {{0x3f944639, 0x7091d5a4} },
+/**/ {{0xbfaf5961, 0xe072e48c} } },
+/**/ {{{0x3fd84000, 0x00000000} },
+/**/ {{0x3fd72e22, 0xd53aa2aa} },
+/**/ {{0xbc7d9c93, 0x4e79f27c} },
+/**/ {{0x3febfb88, 0x36a04729} },
+/**/ {{0xbc872745, 0x9ac2ea21} },
+/**/ {{0xbfd28b13, 0x9d7702cf} },
+/**/ {{0x3c7819b9, 0x4be8bff6} },
+/**/ {{0xbfc03de6, 0xb0a35176} },
+/**/ {{0x3c5dbfb0, 0xc83347af} },
+/**/ {{0x3fc84999, 0x332a4f86} },
+/**/ {{0x3c5d304e, 0x0a22d12d} },
+/**/ {{0xbfa16a97, 0xed6b2d30} },
+/**/ {{0xbfb78243, 0xe0128950} },
+/**/ {{0x3fb2cad8, 0xeaa98f57} },
+/**/ {{0x3f92160a, 0x3bb39c5b} },
+/**/ {{0xbfaee3a9, 0x3804caa3} } },
+/**/ {{{0x3fd88000, 0x00000000} },
+/**/ {{0x3fd76607, 0x52817502} },
+/**/ {{0xbc4dd117, 0x91cc7600} },
+/**/ {{0x3febe8f1, 0x0cd9e1fe} },
+/**/ {{0xbc7a9688, 0xa21e102a} },
+/**/ {{0xbfd2a327, 0xb0d161e9} },
+/**/ {{0xbc60a2a9, 0x14b44140} },
+/**/ {{0xbfbfb9d9, 0x803f8d3b} },
+/**/ {{0x3c5e5779, 0x2a5c4097} },
+/**/ {{0x3fc83324, 0xedbcc363} },
+/**/ {{0x3c651fbc, 0xa0442744} },
+/**/ {{0xbfa2819b, 0xe91477c3} },
+/**/ {{0xbfb6fe3e, 0x63b6abf0} },
+/**/ {{0x3fb2ecdb, 0xdc73a89a} },
+/**/ {{0x3f8fdcb7, 0xaa755298} },
+/**/ {{0xbfae6793, 0x237c2f3d} } },
+/**/ {{{0x3fd8c000, 0x00000000} },
+/**/ {{0x3fd79dc6, 0x899118d1} },
+/**/ {{0x3c2b7413, 0xa0ef606d} },
+/**/ {{0x3febd642, 0x17a4cbc3} },
+/**/ {{0xbc55ee5d, 0x3200a548} },
+/**/ {{0xbfd2baaa, 0x91faa133} },
+/**/ {{0xbc6bd391, 0xfaf41548} },
+/**/ {{0xbfbef89e, 0xaa22d832} },
+/**/ {{0x3c413b3b, 0xc874fdb9} },
+/**/ {{0x3fc81b57, 0xc3be300a} },
+/**/ {{0x3c6baf9b, 0xc01a615f} },
+/**/ {{0xbfa3926a, 0x4a872ec7} },
+/**/ {{0xbfb67959, 0xd3e743cd} },
+/**/ {{0x3fb30a98, 0x4f919505} },
+/**/ {{0x3f8b9f3b, 0x28b78b08} },
+/**/ {{0xbfade57b, 0x71e33e9d} } },
+/**/ {{{0x3fd90000, 0x00000000} },
+/**/ {{0x3fd7d560, 0x4b63b3f7} },
+/**/ {{0x3c769c88, 0x5c2b249a} },
+/**/ {{0x3febc37b, 0xe7ec7a8d} },
+/**/ {{0xbc6f1246, 0x2b0e2727} },
+/**/ {{0xbfd2d19c, 0xcfbdd7fa} },
+/**/ {{0x3c7d0b11, 0x5e00c582} },
+/**/ {{0xbfbe3827, 0x86f8309b} },
+/**/ {{0x3c5d64e9, 0xfa6c56a7} },
+/**/ {{0x3fc80239, 0x7e6de8de} },
+/**/ {{0x3c68d62f, 0x7776e849} },
+/**/ {{0xbfa49cf9, 0x4f6d8017} },
+/**/ {{0xbfb5f3b3, 0xde917e27} },
+/**/ {{0x3fb32420, 0x8e455cc2} },
+/**/ {{0x3f877470, 0xb9fc88fe} },
+/**/ {{0xbfad5dbd, 0xc6b10536} } },
+/**/ {{{0x3fd94000, 0x00000000} },
+/**/ {{0x3fd80cd4, 0x6a14b1d1} },
+/**/ {{0xbc7e79f9, 0x9684fa19} },
+/**/ {{0x3febb09f, 0x0e09a222} },
+/**/ {{0x3c85748e, 0x7e047edd} },
+/**/ {{0xbfd2e7ff, 0x00ccbbc8} },
+/**/ {{0xbc78eb0a, 0x96875561} },
+/**/ {{0xbfbd787e, 0x804ecc06} },
+/**/ {{0xbc27263b, 0x2e4351f8} },
+/**/ {{0x3fc7e7d1, 0xf260d7b4} },
+/**/ {{0xbc430525, 0x8ed258e3} },
+/**/ {{0xbfa5a140, 0x968d3d02} },
+/**/ {{0xbfb56d69, 0xaecb845e} },
+/**/ {{0x3fb33987, 0xae292f95} },
+/**/ {{0x3f835d1d, 0x48e09ecd} },
+/**/ {{0xbfacd0b5, 0x6b6f9aca} } },
+/**/ {{{0x3fd98000, 0x00000000} },
+/**/ {{0x3fd84422, 0xb8df95d7} },
+/**/ {{0x3c7d76a0, 0x299b41b6} },
+/**/ {{0x3feb9dac, 0x19ba64d6} },
+/**/ {{0xbc4f643a, 0xa13ee09f} },
+/**/ {{0xbfd2fdd1, 0xc390a5c9} },
+/**/ {{0x3c575152, 0xaa856fcc} },
+/**/ {{0xbfbcb9ad, 0xc0e99751} },
+/**/ {{0x3c4e2d44, 0x1347a357} },
+/**/ {{0x3fc7cc28, 0xfdcbfd40} },
+/**/ {{0x3c60dc32, 0xe516db08} },
+/**/ {{0xbfa69f39, 0x19851d86} },
+/**/ {{0xbfb4e697, 0xe772087d} },
+/**/ {{0x3fb34ae1, 0x835992de} },
+/**/ {{0x3f7eb3f1, 0xe5326389} },
+/**/ {{0xbfac3ebd, 0x234575e8} } },
+/**/ {{{0x3fd9c000, 0x00000000} },
+/**/ {{0x3fd87b4b, 0x0c1ebedc} },
+/**/ {{0xbc76dcfa, 0xa2fa470f} },
+/**/ {{0x3feb8aa3, 0x9a1ab378} },
+/**/ {{0x3c8efdb0, 0xb797ab93} },
+/**/ {{0xbfd31315, 0xbdfb5e5a} },
+/**/ {{0x3c5813a8, 0x862f0c0d} },
+/**/ {{0xbfbbfbbf, 0x3478f169} },
+/**/ {{0xbc51e810, 0xd9e52582} },
+/**/ {{0x3fc7af46, 0x86d6ec76} },
+/**/ {{0xbc6336de, 0x3c13b159} },
+/**/ {{0xbfa796dd, 0x264b8050} },
+/**/ {{0xbfb45f5a, 0x9e1f6bef} },
+/**/ {{0x3fb35842, 0x93b26fc1} },
+/**/ {{0x3f76d75e, 0x39bc3abf} },
+/**/ {{0xbfaba82f, 0x006e38b2} } },
+/**/ {{{0x3fda0000, 0x00000000} },
+/**/ {{0x3fd8b24d, 0x394a1b25} },
+/**/ {{0x3c7b6d0b, 0xa3748fa8} },
+/**/ {{0x3feb7786, 0x1d9cdc98} },
+/**/ {{0xbc62e22c, 0x345bd7a8} },
+/**/ {{0xbfd327cb, 0x9d57b8f5} },
+/**/ {{0xbc135343, 0x753cc4f1} },
+/**/ {{0xbfbb3ebc, 0x8761b154} },
+/**/ {{0x3c5abeec, 0x8c168fdd} },
+/**/ {{0x3fc79132, 0x79f68c54} },
+/**/ {{0xbc658ab9, 0xd8d15eda} },
+/**/ {{0xbfa88828, 0x5872d73c} },
+/**/ {{0xbfb3d7cd, 0x567be750} },
+/**/ {{0x3fb361c0, 0x0a24fc71} },
+/**/ {{0x3f6e4b7a, 0x46aa98b6} },
+/**/ {{0xbfab0d64, 0x3bad3a76} } },
+/**/ {{{0x3fda4000, 0x00000000} },
+/**/ {{0x3fd8e929, 0x16f5cde8} },
+/**/ {{0x3c74c0a7, 0xe12bfafb} },
+/**/ {{0x3feb6454, 0x32024b37} },
+/**/ {{0xbc7987f7, 0x69cc9b53} },
+/**/ {{0xbfd33bf4, 0x161a0a40} },
+/**/ {{0x3c7a2321, 0x83ff46db} },
+/**/ {{0xbfba82af, 0x26913418} },
+/**/ {{0x3c3c4c62, 0x10a559fe} },
+/**/ {{0x3fc771f4, 0xc8506679} },
+/**/ {{0xbc54aaed, 0x63c7ccc3} },
+/**/ {{0xbfa97317, 0x9237e7ff} },
+/**/ {{0xbfb3500a, 0xfde5f112} },
+/**/ {{0x3fb3676f, 0xaa2c3459} },
+/**/ {{0x3f5e80cd, 0x04721907} },
+/**/ {{0xbfaa6eb5, 0x0dc212a5} } },
+/**/ {{{0x3fda8000, 0x00000000} },
+/**/ {{0x3fd91fde, 0x7cd0c662} },
+/**/ {{0x3c710741, 0x88054b53} },
+/**/ {{0x3feb510e, 0x6454751c} },
+/**/ {{0xbc199bfd, 0x7e0f2dca} },
+/**/ {{0xbfd34f8f, 0xe3b081f4} },
+/**/ {{0x3c7d7209, 0x3e2c0515} },
+/**/ {{0xbfb9c7a0, 0x3f5e2d2f} },
+/**/ {{0xbc20b02e, 0xea3bd312} },
+/**/ {{0x3fc75195, 0x6626c39a} },
+/**/ {{0x3c6f30d2, 0xb4219a8a} },
+/**/ {{0xbfaa57a8, 0xf55dfea5} },
+/**/ {{0xbfb2c82d, 0xe771fa17} },
+/**/ {{0x3fb36967, 0xc3654ab4} },
+/**/ {{0x3f11f322, 0xa23eb6eb} },
+/**/ {{0xbfa9cc78, 0x8ae579b1} } },
+/**/ {{{0x3fdac000, 0x00000000} },
+/**/ {{0x3fd9566d, 0x43a34907} },
+/**/ {{0x3c69b015, 0x37e0af2b} },
+/**/ {{0x3feb3db5, 0x40ddf8d3} },
+/**/ {{0xbc616f46, 0x793c10b8} },
+/**/ {{0xbfd3629f, 0xc8537217} },
+/**/ {{0x3c505738, 0x38143614} },
+/**/ {{0xbfb90d98, 0xbf75f20a} },
+/**/ {{0x3c4dc715, 0x6b842647} },
+/**/ {{0x3fc7301c, 0x494dd1e6} },
+/**/ {{0x3c5ec3d6, 0xf49f85b4} },
+/**/ {{0xbfab35db, 0xdbdd23b1} },
+/**/ {{0xbfb2404f, 0xc8407216} },
+/**/ {{0x3fb367bf, 0x255139f9} },
+/**/ {{0xbf5b8a0d, 0x65acd6da} },
+/**/ {{0xbfa92704, 0x8052f51d} } },
+/**/ {{{0x3fdb0000, 0x00000000} },
+/**/ {{0x3fd98cd5, 0x454d6b18} },
+/**/ {{0x3c79e6c9, 0x88fd0a77} },
+/**/ {{0x3feb2a49, 0x5323eb6a} },
+/**/ {{0xbc572202, 0x70cc9678} },
+/**/ {{0xbfd37524, 0x8cd58cc4} },
+/**/ {{0x3c6978a3, 0xda42aa4e} },
+/**/ {{0xbfb854a1, 0x54d5f784} },
+/**/ {{0xbc5e9a15, 0xb33b3d0d} },
+/**/ {{0x3fc70d91, 0x67aa0c46} },
+/**/ {{0xbc6aa72f, 0xa4ac9df8} },
+/**/ {{0xbfac0db0, 0xd0665a46} },
+/**/ {{0xbfb1b889, 0xb428e30d} },
+/**/ {{0x3fb3628d, 0x134448b0} },
+/**/ {{0xbf6bbbc1, 0x67619c9c} },
+/**/ {{0xbfa87ead, 0x53e1f653} } },
+/**/ {{{0x3fdb4000, 0x00000000} },
+/**/ {{0x3fd9c316, 0x5cc58107} },
+/**/ {{0x3c4b6696, 0x02250cfb} },
+/**/ {{0x3feb16cb, 0x25df55f4} },
+/**/ {{0xbc653abc, 0xf48e26bc} },
+/**/ {{0xbfd3871f, 0x00742189} },
+/**/ {{0xbc725ae2, 0xc05df451} },
+/**/ {{0xbfb79cc2, 0x6dd13675} },
+/**/ {{0x3be1d4e0, 0x991905e4} },
+/**/ {{0x3fc6e9fc, 0xb5b8147e} },
+/**/ {{0x3c46463b, 0xa57d4eca} },
+/**/ {{0xbfacdf29, 0x86c1db89} },
+/**/ {{0xbfb130f4, 0x1ab8d1c4} },
+/**/ {{0x3fb359e9, 0x38881228} },
+/**/ {{0xbf74a987, 0x53bec2ff} },
+/**/ {{0xbfa7d3c5, 0xe5af58b6} } },
+/**/ {{{0x3fdb8000, 0x00000000} },
+/**/ {{0x3fd9f930, 0x66168002} },
+/**/ {{0xbc7c8270, 0x47c9439a} },
+/**/ {{0x3feb033b, 0x42f6e2c9} },
+/**/ {{0xbc6eb80c, 0xc48702a7} },
+/**/ {{0xbfd3988f, 0xf8a76337} },
+/**/ {{0xbc636968, 0x5b1bb38a} },
+/**/ {{0xbfb6e604, 0x39212b04} },
+/**/ {{0xbc3c2e20, 0xba255e71} },
+/**/ {{0x3fc6c566, 0x251e2d41} },
+/**/ {{0x3c230ab3, 0x47236369} },
+/**/ {{0xbfadaa48, 0xd40b3417} },
+/**/ {{0xbfb0a9a6, 0xc484f2cc} },
+/**/ {{0x3fb34deb, 0x9cb4573e} },
+/**/ {{0xbf7b44ca, 0x1def6f17} },
+/**/ {{0xbfa7269f, 0x73d683b8} } },
+/**/ {{{0x3fdbc000, 0x00000000} },
+/**/ {{0x3fda2f23, 0x3e5e530b} },
+/**/ {{0x3c5814d5, 0xf797086b} },
+/**/ {{0x3feaef9a, 0x3378ba79} },
+/**/ {{0x3c7da16a, 0x4476e241} },
+/**/ {{0xbfd3a978, 0x50f2beab} },
+/**/ {{0x3c7b7e7f, 0xad5a31ea} },
+/**/ {{0xbfb6306e, 0xa602212f} },
+/**/ {{0xbc31ec15, 0x9ec38d55} },
+/**/ {{0x3fc69fd5, 0xa3477c6a} },
+/**/ {{0x3c571f2f, 0xb2996038} },
+/**/ {{0xbfae6f12, 0xa6cf162d} },
+/**/ {{0xbfb022b8, 0xd0cb2655} },
+/**/ {{0x3fb33eac, 0x9842912f} },
+/**/ {{0xbf80d789, 0x4919e78d} },
+/**/ {{0xbfa67789, 0x8037e242} } },
+/**/ {{{0x3fdc0000, 0x00000000} },
+/**/ {{0x3fda64ee, 0xc3cc23fd} },
+/**/ {{0xbc724dec, 0x1b50b7ff} },
+/**/ {{0x3feadbe8, 0x7f94905e} },
+/**/ {{0x3c2adbe8, 0x7f94905e} },
+/**/ {{0xbfd3b9d8, 0xeab54af9} },
+/**/ {{0x3c75b97d, 0x54fd0941} },
+/**/ {{0xbfb57c09, 0x645a7f9e} },
+/**/ {{0xbc5e79f6, 0x09320811} },
+/**/ {{0x3fc67953, 0x180938f2} },
+/**/ {{0x3c6246f2, 0xe7aee726} },
+/**/ {{0xbfaf2d8b, 0xff0ea012} },
+/**/ {{0xbfaf3881, 0x66c7250c} },
+/**/ {{0x3fb32c44, 0xc95ff694} },
+/**/ {{0xbf83f3f0, 0x25d7ff49} },
+/**/ {{0xbfa5c6d1, 0xb848e1d1} } },
+/**/ {{{0x3fdc4000, 0x00000000} },
+/**/ {{0x3fda9a92, 0xd59e98cf} },
+/**/ {{0x3c42e42d, 0xff75d817} },
+/**/ {{0x3feac826, 0xae95dea9} },
+/**/ {{0xbc534eec, 0x633dec57} },
+/**/ {{0xbfd3c9b2, 0xacfa5b18} },
+/**/ {{0x3c7a7e0c, 0x6c4d8d27} },
+/**/ {{0xbfb4c8db, 0xe4ecc0f6} },
+/**/ {{0xbc534990, 0xc0c32772} },
+/**/ {{0x3fc651e6, 0x6451e377} },
+/**/ {{0xbc6ea814, 0x2a9bb1f1} },
+/**/ {{0xbfafe5ba, 0xe62bc1b2} },
+/**/ {{0xbfae2ca8, 0x65fe3642} },
+/**/ {{0x3fb316cd, 0x09015968} },
+/**/ {{0xbf86f764, 0x3ce97a26} },
+/**/ {{0xbfa514c3, 0xdee8421b} } },
+/**/ {{{0x3fdc8000, 0x00000000} },
+/**/ {{0x3fdad00f, 0x5422058b} },
+/**/ {{0x3c7fc4c3, 0x3891d2e8} },
+/**/ {{0x3feab455, 0x46de51cf} },
+/**/ {{0xbc5b834a, 0xdbc38cc9} },
+/**/ {{0xbfd3d906, 0x844a38eb} },
+/**/ {{0x3c6198e5, 0xbc44eee8} },
+/**/ {{0xbfb416ed, 0x5993cade} },
+/**/ {{0xbc235ccb, 0xfa289b6c} },
+/**/ {{0x3fc62997, 0x60e2a3af} },
+/**/ {{0xbc69a660, 0xcf7bda0e} },
+/**/ {{0xbfb04bd3, 0x33612b72} },
+/**/ {{0xbfad2210, 0xcf62bcd9} },
+/**/ {{0x3fb2fe5e, 0x603bfc37} },
+/**/ {{0xbf89e1ba, 0xa9bce7ec} },
+/**/ {{0xbfa461a9, 0xb83029d5} } },
+/**/ {{{0x3fdcc000, 0x00000000} },
+/**/ {{0x3fdb0564, 0x20ae9344} },
+/**/ {{0xbc793139, 0x46363455} },
+/**/ {{0x3feaa074, 0xcde0631f} },
+/**/ {{0x3c84b49a, 0x143fe6d4} },
+/**/ {{0xbfd3e7d5, 0x627b115b} },
+/**/ {{0x3c77a502, 0x332989c0} },
+/**/ {{0xbfb36644, 0xb589513f} },
+/**/ {{0x3c3abdc9, 0x105eec96} },
+/**/ {{0x3fc6006d, 0xdd12e0be} },
+/**/ {{0xbc4f0281, 0x5d67cb35} },
+/**/ {{0xbfb0a1ab, 0x4238ba83} },
+/**/ {{0xbfac18e3, 0x73889526} },
+/**/ {{0x3fb2e311, 0xfde6351a} },
+/**/ {{0xbf8cb2d2, 0xc256833f} },
+/**/ {{0xbfa3adca, 0xf73e36f0} } },
+/**/ {{{0x3fdd0000, 0x00000000} },
+/**/ {{0x3fdb3a91, 0x1da65c6c} },
+/**/ {{0x3c7ae187, 0xb1ca5040} },
+/**/ {{0x3fea8c85, 0xc81a2254} },
+/**/ {{0xbc83c191, 0x8d67728b} },
+/**/ {{0xbfd3f620, 0x3e8218e0} },
+/**/ {{0xbc72bf32, 0x52bd43ef} },
+/**/ {{0xbfb2b6e8, 0xadb5f398} },
+/**/ {{0x3c340287, 0x6b74d451} },
+/**/ {{0x3fc5d671, 0x9d9e25fc} },
+/**/ {{0x3c639669, 0x518d7a71} },
+/**/ {{0xbfb0f46a, 0x19cc29a0} },
+/**/ {{0xbfab1147, 0xc1a69750} },
+/**/ {{0x3fb2c501, 0x2c826e6b} },
+/**/ {{0xbf8f6a95, 0xcbc1b186} },
+/**/ {{0xbfa2f96d, 0x2de89811} } },
+/**/ {{{0x3fdd4000, 0x00000000} },
+/**/ {{0x3fdb6f96, 0x2e737efc} },
+/**/ {{0xbc5ca534, 0x64981e71} },
+/**/ {{0x3fea7888, 0xb9102ddc} },
+/**/ {{0xbc7791b2, 0x3c46d7d5} },
+/**/ {{0xbfd403e8, 0x1444efb5} },
+/**/ {{0xbc6047c5, 0x4f3d22a6} },
+/**/ {{0xbfb208df, 0xb90ac1cc} },
+/**/ {{0x3c4078b1, 0x2d2115d8} },
+/**/ {{0x3fc5abaa, 0x5b7c61a2} },
+/**/ {{0x3c3eef6a, 0x2bd2d19a} },
+/**/ {{0xbfb14414, 0xa8850e1a} },
+/**/ {{0xbfaa0b63, 0xc6580343} },
+/**/ {{0x3fb2a445, 0x4876cfdf} },
+/**/ {{0xbf91047b, 0x562d0829} },
+/**/ {{0xbfa244d3, 0xbe562a83} } },
+/**/ {{{0x3fdd8000, 0x00000000} },
+/**/ {{0x3fdba473, 0x378624a5} },
+/**/ {{0x3c7519a1, 0xb46e4aff} },
+/**/ {{0x3fea647e, 0x2348d9a3} },
+/**/ {{0xbc84f6c2, 0x9156e59f} },
+/**/ {{0xbfd4112d, 0xe46b4c91} },
+/**/ {{0xbc78c11d, 0x110fe0b7} },
+/**/ {{0xbfb15c30, 0x10e3d572} },
+/**/ {{0x3c53b45b, 0x4427c00b} },
+/**/ {{0x3fc5801f, 0xc2c486ae} },
+/**/ {{0xbc49bb5e, 0xc20ced8b} },
+/**/ {{0xbfb190b0, 0x4cddef65} },
+/**/ {{0xbfa9075c, 0x2ae4bcd0} },
+/**/ {{0x3fb280f7, 0xb69396b9} },
+/**/ {{0xbf9246f8, 0xce179ccb} },
+/**/ {{0xbfa1903f, 0xce6e9b2b} } },
+/**/ {{{0x3fddc000, 0x00000000} },
+/**/ {{0x3fdbd928, 0x1e528192} },
+/**/ {{0xbc74b154, 0x39af6b66} },
+/**/ {{0x3fea5066, 0x88478403} },
+/**/ {{0xbc85c7e8, 0xbe71620f} },
+/**/ {{0xbfd41df2, 0xb430f4ac} },
+/**/ {{0xbc55db82, 0xe79c7595} },
+/**/ {{0xbfb0b0df, 0xb173ac76} },
+/**/ {{0x3c57f440, 0xe4738d25} },
+/**/ {{0x3fc553d9, 0x7199976b} },
+/**/ {{0x3c54990c, 0x2a872a12} },
+/**/ {{0xbfb1da42, 0xd137dd01} },
+/**/ {{0xbfa80554, 0x350bfdb5} },
+/**/ {{0x3fb25b31, 0xdae9e17f} },
+/**/ {{0xbf937cc5, 0xe9e265b4} },
+/**/ {{0xbfa0dbf0, 0x3d16a202} } },
+/**/ {{{0x3fde0000, 0x00000000} },
+/**/ {{0x3fdc0db4, 0xc94ec9f0} },
+/**/ {{0xbc7cc1ce, 0x70934c34} },
+/**/ {{0x3fea3c42, 0x68881898} },
+/**/ {{0x3c8f907f, 0xe5c3bd97} },
+/**/ {{0xbfd42a37, 0x8d38076d} },
+/**/ {{0xbc6b8354, 0x7e19d62d} },
+/**/ {{0xbfb006f4, 0x5a36f1bd} },
+/**/ {{0xbc41701e, 0xca398c09} },
+/**/ {{0x3fc526de, 0xf7221a2a} },
+/**/ {{0xbc211868, 0x8041247e} },
+/**/ {{0xbfb220d2, 0x67b0229a} },
+/**/ {{0xbfa7056d, 0xc74d0c66} },
+/**/ {{0x3fb2330d, 0x0ff472e2} },
+/**/ {{0xbf94a5e9, 0x9cb74216} },
+/**/ {{0xbfa02821, 0x992b9e1f} } },
+/**/ {{{0x3fde4000, 0x00000000} },
+/**/ {{0x3fdc4219, 0x1ff11eb7} },
+/**/ {{0xbc7b17df, 0x434b3eee} },
+/**/ {{0x3fea2812, 0x437ac09e} },
+/**/ {{0xbc540368, 0xf9618c21} },
+/**/ {{0xbfd435fd, 0x7d5ba406} },
+/**/ {{0x3c75605b, 0x5e0a732a} },
+/**/ {{0xbfaebce7, 0x1ce0c104} },
+/**/ {{0xbc446d02, 0xd4eb3297} },
+/**/ {{0x3fc4f937, 0xd289f60b} },
+/**/ {{0x3c5b88b7, 0xe736fa8b} },
+/**/ {{0xbfb26465, 0xa5f78db4} },
+/**/ {{0xbfa607c9, 0x61a972db} },
+/**/ {{0x3fb208a2, 0x9e13b088} },
+/**/ {{0xbf95c26f, 0x06c33653} },
+/**/ {{0xbf9eea1c, 0x346237b1} } },
+/**/ {{{0x3fde8000, 0x00000000} },
+/**/ {{0x3fdc7655, 0x0aad71f9} },
+/**/ {{0xbc774b8b, 0xff7043e4} },
+/**/ {{0x3fea13d6, 0x977fc070} },
+/**/ {{0xbc86c451, 0xd9440881} },
+/**/ {{0xbfd44145, 0x9682eee2} },
+/**/ {{0x3c74156f, 0xb13901b4} },
+/**/ {{0xbfad6ec5, 0x2b58de73} },
+/**/ {{0x3c2ced26, 0xdf653988} },
+/**/ {{0x3fc4caeb, 0x720eb232} },
+/**/ {{0x3c614246, 0x92f3f809} },
+/**/ {{0xbfb2a503, 0x812caa81} },
+/**/ {{0xbfa50c86, 0x22dc20a7} },
+/**/ {{0x3fb1dc0b, 0xb35de59d} },
+/**/ {{0xbf96d265, 0x4adc8c38} },
+/**/ {{0xbf9d85db, 0x35444e0c} } },
+/**/ {{{0x3fdec000, 0x00000000} },
+/**/ {{0x3fdcaa68, 0x72f3631b} },
+/**/ {{0x3c295067, 0x81636f48} },
+/**/ {{0x3fe9ff8f, 0xe1e381db} },
+/**/ {{0xbc6fffe6, 0x00701e1c} },
+/**/ {{0xbfd44c10, 0xee747cac} },
+/**/ {{0xbc7a7f22, 0xced401ad} },
+/**/ {{0xbfac238c, 0xf898de26} },
+/**/ {{0x3c1eb191, 0xdaa7d32f} },
+/**/ {{0x3fc49c01, 0x32160e42} },
+/**/ {{0x3c649f02, 0x03d0023c} },
+/**/ {{0xbfb2e2b3, 0x49ba4fb7} },
+/**/ {{0xbfa413c1, 0xca00d6c7} },
+/**/ {{0x3fb1ad61, 0x5bc495cf} },
+/**/ {{0xbf97d5df, 0x63d0ff69} },
+/**/ {{0xbf9c23eb, 0x27af7010} } },
+/**/ {{{0x3fdf0000, 0x00000000} },
+/**/ {{0x3fdcde53, 0x432c1351} },
+/**/ {{0xbc7a2cfa, 0x4418f1ad} },
+/**/ {{0x3fe9eb3e, 0x9edacacc} },
+/**/ {{0xbc8942c5, 0x87d23ca5} },
+/**/ {{0xbfd45660, 0x9eaa285d} },
+/**/ {{0x3c4fe8e6, 0x52cf85b4} },
+/**/ {{0xbfaadb48, 0x28319af3} },
+/**/ {{0xbc207b46, 0x31b456b0} },
+/**/ {{0x3fc46c80, 0x5c4ee7c2} },
+/**/ {{0x3c4bdfc1, 0xb4443c76} },
+/**/ {{0xbfb31d7c, 0xa73bc33f} },
+/**/ {{0xbfa31d98, 0xb8a731f5} },
+/**/ {{0x3fb17cbc, 0x798f7481} },
+/**/ {{0xbf98ccf3, 0xf977e9ca} },
+/**/ {{0xbf9ac4b2, 0x36ea1578} } },
+/**/ {{{0x3fdf4000, 0x00000000} },
+/**/ {{0x3fdd1215, 0x66b7f2ad} },
+/**/ {{0x3c7be678, 0x35886c30} },
+/**/ {{0x3fe9d6e3, 0x497f1fed} },
+/**/ {{0xbc8ec056, 0x9a35c454} },
+/**/ {{0xbfd46035, 0xc4255988} },
+/**/ {{0x3c7ddb7b, 0x7144427c} },
+/**/ {{0xbfa995ff, 0xe9b44acd} },
+/**/ {{0x3c3c9d56, 0xb529cf65} },
+/**/ {{0x3fc43c70, 0x26dc5cda} },
+/**/ {{0x3c6d6ee6, 0xfde6cd82} },
+/**/ {{0xbfb35567, 0x9467b39a} },
+/**/ {{0xbfa22a25, 0xf54ca1ba} },
+/**/ {{0x3fb14a35, 0xbe2d5d2d} },
+/**/ {{0xbf99b7bd, 0x35a34e74} },
+/**/ {{0xbf996891, 0xc4948489} } },
+/**/ {{{0x3fdf8000, 0x00000000} },
+/**/ {{0x3fdd45ae, 0xc9ec862b} },
+/**/ {{0x3c689421, 0x163ef92d} },
+/**/ {{0x3fe9c27e, 0x5bcb52c7} },
+/**/ {{0xbc892d91, 0xf148a350} },
+/**/ {{0xbfd46991, 0x7f43bff0} },
+/**/ {{0xbc738b23, 0x8da13c27} },
+/**/ {{0xbfa853bc, 0xf9f19dcd} },
+/**/ {{0x3c2ea7a9, 0x2433c5cf} },
+/**/ {{0x3fc40bd7, 0xb38b19e0} },
+/**/ {{0xbc5d466e, 0x1c2a2863} },
+/**/ {{0xbfb38a7c, 0x5b0333a7} },
+/**/ {{0xbfa13983, 0x2e3896d7} },
+/**/ {{0x3fb115e5, 0xa35b7545} },
+/**/ {{0xbf9a9658, 0x99098556} },
+/**/ {{0xbf980fe6, 0x693ac59e} } },
+/**/ {{{0x3fdfc000, 0x00000000} },
+/**/ {{0x3fdd791f, 0x5a1226f5} },
+/**/ {{0xbc64017e, 0xa5b64a76} },
+/**/ {{0x3fe9ae10, 0x4e983ae9} },
+/**/ {{0xbc8d45ed, 0x52b783d7} },
+/**/ {{0xbfd47274, 0xf394891f} },
+/**/ {{0xbc7cd478, 0x22e08713} },
+/**/ {{0xbfa71487, 0xa445379d} },
+/**/ {{0x3c1569aa, 0x831d87b7} },
+/**/ {{0x3fc3dabe, 0x0f10bc36} },
+/**/ {{0x3bd8df2b, 0x1cb9bbe6} },
+/**/ {{0xbfb3bcc3, 0x8fddd862} },
+/**/ {{0xbfa04bc8, 0xbcb632d9} },
+/**/ {{0x3fb0dfe4, 0x64a26d77} },
+/**/ {{0xbf9b68e6, 0xd04027d1} },
+/**/ {{0xbf96bb07, 0xf792c5d9} } },
+/**/ {{{0x3fe00000, 0x00000000} },
+/**/ {{0x3fddac67, 0x0561bb4f} },
+/**/ {{0x3c7a2b7f, 0x222f65e2} },
+/**/ {{0x3fe99999, 0x9999999a} },
+/**/ {{0xbc899999, 0x9999999a} },
+/**/ {{0xbfd47ae1, 0x47ae147b} },
+/**/ {{0x3c5eb851, 0xeb851eb8} },
+/**/ {{0xbfa5d867, 0xc3ece2a5} },
+/**/ {{0xbc3a485c, 0xd7b900af} },
+/**/ {{0x3fc3a92a, 0x30553261} },
+/**/ {{0x3c6f06f6, 0x94467382} },
+/**/ {{0xbfb3ec46, 0x0ed80a18} },
+/**/ {{0xbf9ec21b, 0x514d88d8} },
+/**/ {{0x3fb0a849, 0xf929a833} },
+/**/ {{0xbf9c2f8b, 0x88dfb80c} },
+/**/ {{0xbf956a49, 0x8245bf09} } },
+/**/ {{{0x3fe02000, 0x00000000} },
+/**/ {{0x3fdddf85, 0xbb026974} },
+/**/ {{0x3c643bbb, 0x0c0a1226} },
+/**/ {{0x3fe9851a, 0xb35b2797} },
+/**/ {{0x3c89cd14, 0x18a8fead} },
+/**/ {{0xbfd482d7, 0xa5042a2d} },
+/**/ {{0x3c0dbc04, 0xa8224d16} },
+/**/ {{0xbfa49f64, 0xc56ade02} },
+/**/ {{0x3c451e52, 0x47da7eea} },
+/**/ {{0x3fc37722, 0xf7c5fe7d} },
+/**/ {{0xbc5165be, 0xd22c4b5c} },
+/**/ {{0xbfb4190c, 0xf6f48c5d} },
+/**/ {{0xbf9cf2cf, 0x58d0c132} },
+/**/ {{0x3fb06f2e, 0x0ddfdd74} },
+/**/ {{0xbf9cea6d, 0x46e65336} },
+/**/ {{0xbf941df9, 0x6423af3b} } },
+/**/ {{{0x3fe04000, 0x00000000} },
+/**/ {{0x3fde127b, 0x6b0744b0} },
+/**/ {{0xbc52b098, 0x6398d4ab} },
+/**/ {{0x3fe97094, 0x113dcc5a} },
+/**/ {{0xbc842780, 0x4de8c575} },
+/**/ {{0xbfd48a59, 0x37beb8e5} },
+/**/ {{0xbc601dd2, 0x9dc7541e} },
+/**/ {{0xbfa36985, 0xa7f2a8fe} },
+/**/ {{0xbc45e414, 0x7437d42d} },
+/**/ {{0x3fc344af, 0x2eb33dd6} },
+/**/ {{0xbc6d66e9, 0xe3a3193c} },
+/**/ {{0xbfb44321, 0xa6763232} },
+/**/ {{0xbf9b29d6, 0x7217dfc9} },
+/**/ {{0x3fb034a7, 0xfff8a866} },
+/**/ {{0xbf9d99b5, 0x3a6e931d} },
+/**/ {{0xbf92d661, 0x4a9f7e19} } },
+/**/ {{{0x3fe06000, 0x00000000} },
+/**/ {{0x3fde4548, 0x066cf51a} },
+/**/ {{0x3c43a3aa, 0x12ce98f2} },
+/**/ {{0x3fe95c06, 0x2774fe53} },
+/**/ {{0x3c810dfd, 0x3b851412} },
+/**/ {{0xbfd49167, 0x2e911e43} },
+/**/ {{0xbc7f6506, 0x09466fcd} },
+/**/ {{0xbfa236d0, 0xfedfb0c1} },
+/**/ {{0xbc3f6870, 0x79cb63a9} },
+/**/ {{0x3fc311d5, 0x86b6561c} },
+/**/ {{0x3c561982, 0x9543fc9a} },
+/**/ {{0xbfb46a8d, 0xb70aa5a7} },
+/**/ {{0xbf996756, 0xf5ac1efc} },
+/**/ {{0x3faff19d, 0xaf7c84b3} },
+/**/ {{0xbf9e3d8f, 0x15ce96b8} },
+/**/ {{0xbf9193c6, 0x42726021} } },
+/**/ {{{0x3fe08000, 0x00000000} },
+/**/ {{0x3fde77eb, 0x7f175a34} },
+/**/ {{0x3c70e53d, 0xc1bf3435} },
+/**/ {{0x3fe94771, 0x69044ba4} },
+/**/ {{0xbc7d53e2, 0x92d5fbc1} },
+/**/ {{0xbfd49802, 0xba91fd89} },
+/**/ {{0x3c71963e, 0xc3c8c4f3} },
+/**/ {{0xbfa1074c, 0xf33546d5} },
+/**/ {{0x3c4bc296, 0xc71ad288} },
+/**/ {{0x3fc2de9c, 0x99222665} },
+/**/ {{0x3c6e4a10, 0x28dadb64} },
+/**/ {{0xbfb48f5a, 0xfa031cb1} },
+/**/ {{0xbf97ab74, 0xbc0c6420} },
+/**/ {{0x3faf7772, 0x876d0f75} },
+/**/ {{0xbf9ed628, 0xe431fc96} },
+/**/ {{0xbf905668, 0xc64515ec} } },
+/**/ {{{0x3fe0a000, 0x00000000} },
+/**/ {{0x3fdeaa65, 0xc7cf28c4} },
+/**/ {{0x3c62fb2c, 0xeca3bf05} },
+/**/ {{0x3fe932d6, 0x47bd0aaa} },
+/**/ {{0x3c6bdfec, 0x697b6e3c} },
+/**/ {{0xbfd49e2d, 0x0f13a7e8} },
+/**/ {{0x3c6198c5, 0x20412940} },
+/**/ {{0xbf9fb5fe, 0x8a4e92df} },
+/**/ {{0xbc3cbb58, 0x6309a51a} },
+/**/ {{0x3fc2ab0a, 0xe67c9829} },
+/**/ {{0xbc647643, 0x06a4c4ef} },
+/**/ {{0xbfb4b193, 0x749bc711} },
+/**/ {{0xbf95f651, 0x27bef265} },
+/**/ {{0x3faefafb, 0x28347ebf} },
+/**/ {{0xbf9f63b2, 0xe0c06e2f} },
+/**/ {{0xbf8e3d09, 0x9e7b9dd7} } },
+/**/ {{{0x3fe0c000, 0x00000000} },
+/**/ {{0x3fdedcb6, 0xd43f8435} },
+/**/ {{0xbc5fc976, 0x330884e4} },
+/**/ {{0x3fe91e35, 0x343c31e5} },
+/**/ {{0xbc8fd46f, 0x9bb96799} },
+/**/ {{0xbfd4a3e7, 0x617d19a1} },
+/**/ {{0xbc7d7303, 0xea58b250} },
+/**/ {{0xbf9d63da, 0x9b55d156} },
+/**/ {{0xbc14bf72, 0xd5b4cc6c} },
+/**/ {{0x3fc27726, 0xd6016a7c} },
+/**/ {{0x3c4eba22, 0x435ec4b4} },
+/**/ {{0xbfb4d141, 0x5c52b3c6} },
+/**/ {{0xbf94480b, 0x2fdd9fbd} },
+/**/ {{0x3fae7c63, 0x6d3af4b6} },
+/**/ {{0xbf9fe65f, 0x4e61315b} },
+/**/ {{0xbf8bd8a3, 0xcea37283} } },
+/**/ {{{0x3fe0e000, 0x00000000} },
+/**/ {{0x3fdf0ede, 0x98f393d0} },
+/**/ {{0xbc72f40a, 0x87cb1894} },
+/**/ {{0x3fe9098e, 0x9de85688} },
+/**/ {{0xbc7c2de1, 0xa3791e64} },
+/**/ {{0xbfd4a932, 0xe9238ed7} },
+/**/ {{0xbc67a1bb, 0x28864386} },
+/**/ {{0xbf9b1838, 0x001dec68} },
+/**/ {{0xbc33ee0e, 0x8f0ffbdd} },
+/**/ {{0x3fc242f6, 0xb52e1005} },
+/**/ {{0xbc5476eb, 0x371fd2c1} },
+/**/ {{0xbfb4ee6f, 0x134edf2d} },
+/**/ {{0xbf92a0bf, 0x6b13becc} },
+/**/ {{0x3fadfbd6, 0x650f859c} },
+/**/ {{0xbfa02f31, 0x281586f4} },
+/**/ {{0xbf898006, 0x7a73449e} } },
+/**/ {{{0x3fe10000, 0x00000000} },
+/**/ {{0x3fdf40dd, 0x0b541418} },
+/**/ {{0xbc6a3992, 0xdc382a23} },
+/**/ {{0x3fe8f4e2, 0xf2efd135} },
+/**/ {{0xbc74c3c0, 0xd4218911} },
+/**/ {{0xbfd4ae10, 0xdf24b2d1} },
+/**/ {{0x3c713b12, 0x79d0ac37} },
+/**/ {{0xbf98d31f, 0xd7365f3f} },
+/**/ {{0xbc18bf3b, 0x62531dc5} },
+/**/ {{0x3fc20e80, 0xb7567664} },
+/**/ {{0xbc54a699, 0xd450197f} },
+/**/ {{0xbfb50927, 0x24d80ddd} },
+/**/ {{0xbf910088, 0x1b0516ab} },
+/**/ {{0x3fad797e, 0x4a356567} },
+/**/ {{0xbfa065f8, 0xe14758ed} },
+/**/ {{0xbf87338f, 0x73d2f6bb} } },
+/**/ {{{0x3fe12000, 0x00000000} },
+/**/ {{0x3fdf72b2, 0x21a4e495} },
+/**/ {{0x3c5489c2, 0x0f7eb740} },
+/**/ {{0x3fe8e032, 0xa0470831} },
+/**/ {{0xbc8c154a, 0xe75570cd} },
+/**/ {{0xbfd4b282, 0x7e416c35} },
+/**/ {{0xbc7f1837, 0x60646afd} },
+/**/ {{0xbf96949a, 0x7a6bec27} },
+/**/ {{0x3c38238f, 0xe6b77ba9} },
+/**/ {{0x3fc1d9ca, 0xf5428c61} },
+/**/ {{0x3c6a968d, 0xcd7881aa} },
+/**/ {{0xbfb52174, 0x41e00b6e} },
+/**/ {{0xbf8ecefa, 0x702ad3de} },
+/**/ {{0x3facf584, 0x7c8ae0dc} },
+/**/ {{0xbfa097a2, 0x8aa44fa8} },
+/**/ {{0xbf84f394, 0x2ed63408} } },
+/**/ {{{0x3fe14000, 0x00000000} },
+/**/ {{0x3fdfa45d, 0xd3029259} },
+/**/ {{0xbc7ca563, 0xdc28d8b5} },
+/**/ {{0x3fe8cb7e, 0x11a6de80} },
+/**/ {{0x3c610be6, 0xac22b8f8} },
+/**/ {{0xbfd4b689, 0x02b9488a} },
+/**/ {{0x3c5ea0bd, 0xaf91d442} },
+/**/ {{0xbf945caf, 0x821fd17e} },
+/**/ {{0x3c38e464, 0x0e51a049} },
+/**/ {{0x3fc1a4db, 0x6cd45aad} },
+/**/ {{0x3c2288e0, 0xf4200d5e} },
+/**/ {{0xbfb53761, 0x3d9dd7c4} },
+/**/ {{0xbf8bab68, 0xfb107457} },
+/**/ {{0x3fac7011, 0x7b46ebd1} },
+/**/ {{0xbfa0c44a, 0x93134a8f} },
+/**/ {{0xbf82c061, 0xf1fa4589} } },
+/**/ {{{0x3fe16000, 0x00000000} },
+/**/ {{0x3fdfd5e0, 0x175fdf83} },
+/**/ {{0x3c63a87b, 0x1ec49b15} },
+/**/ {{0x3fe8b6c5, 0xb18b4749} },
+/**/ {{0xbc5fabb8, 0xb7d58c0a} },
+/**/ {{0xbfd4ba25, 0xaa26890c} },
+/**/ {{0x3c50e395, 0x0ef9b688} },
+/**/ {{0xbf922b65, 0xc8a9b4c0} },
+/**/ {{0x3c2835ee, 0xd319146f} },
+/**/ {{0x3fc16fb8, 0x00b681bd} },
+/**/ {{0x3c1df633, 0x279133b0} },
+/**/ {{0xbfb54af9, 0x0a3b410c} },
+/**/ {{0xbf889682, 0xebe14682} },
+/**/ {{0x3fabe94c, 0xdf89e086} },
+/**/ {{0xbfa0ec0e, 0x0e55a6f8} },
+/**/ {{0xbf809a3e, 0x08af68f3} } },
+/**/ {{{0x3fe18000, 0x00000000} },
+/**/ {{0x3fe0039c, 0x73c1a40c} },
+/**/ {{0xbc8b32c9, 0x49c9d593} },
+/**/ {{0x3fe8a209, 0xe931fcd3} },
+/**/ {{0x3c6cb8f0, 0x8e68c94c} },
+/**/ {{0xbfd4bd59, 0xb35ad2d8} },
+/**/ {{0xbc61ac1a, 0xcaa606b4} },
+/**/ {{0xbf9000c3, 0x6dc339ef} },
+/**/ {{0x3c2c62e2, 0xaeaeaa73} },
+/**/ {{0x3fc13a66, 0x7812ee2d} },
+/**/ {{0x3c6a8cc2, 0x948ffe5b} },
+/**/ {{0xbfb55c46, 0xb5955c9c} },
+/**/ {{0xbf85906b, 0x0fd2b503} },
+/**/ {{0x3fab615d, 0x577de2da} },
+/**/ {{0xbfa10f0a, 0xa34d31ec} },
+/**/ {{0xbf7d02cb, 0xefe48ad0} } },
+/**/ {{{0x3fe1a000, 0x00000000} },
+/**/ {{0x3fe01c34, 0x1e82422d} },
+/**/ {{0x3c83db44, 0xfcca90ee} },
+/**/ {{0x3fe88d4b, 0x20995a88} },
+/**/ {{0x3c802777, 0x1e42e681} },
+/**/ {{0xbfd4c026, 0x5e3c840f} },
+/**/ {{0x3c7d7c65, 0x3800420d} },
+/**/ {{0xbf8bb99b, 0xb3f88703} },
+/**/ {{0x3c1f62ec, 0x4bf63e82} },
+/**/ {{0x3fc104ec, 0x7e5193ee} },
+/**/ {{0xbc27771e, 0xbae4e07d} },
+/**/ {{0xbfb56b55, 0x66104515} },
+/**/ {{0xbf829940, 0x061a20d1} },
+/**/ {{0x3faad868, 0xa20334d9} },
+/**/ {{0xbfa12d5e, 0x7aba8ee6} },
+/**/ {{0xbf78ec1f, 0x69774b8d} } },
+/**/ {{{0x3fe1c000, 0x00000000} },
+/**/ {{0x3fe034b7, 0x09250488} },
+/**/ {{0x3c78f9b3, 0x8d855410} },
+/**/ {{0x3fe87889, 0xbe7f594b} },
+/**/ {{0xbc7530e1, 0xc826e7a3} },
+/**/ {{0xbfd4c28c, 0xeba4af80} },
+/**/ {{0x3c7104a9, 0xe6a95faa} },
+/**/ {{0xbf877f13, 0x846dba10} },
+/**/ {{0x3c2bc924, 0x4abd0010} },
+/**/ {{0x3fc0cf4f, 0xa2deff9f} },
+/**/ {{0xbc67d17e, 0xa013c015} },
+/**/ {{0xbfb57830, 0x577e7899} },
+/**/ {{0xbf7f6238, 0xb49ea16d} },
+/**/ {{0x3faa4e93, 0x8ae4a926} },
+/**/ {{0xbfa14728, 0x2e77f633} },
+/**/ {{0xbf74f0d3, 0xb81c893e} } },
+/**/ {{{0x3fe1e000, 0x00000000} },
+/**/ {{0x3fe04d25, 0x314342e6} },
+/**/ {{0xbc81c863, 0x6442c767} },
+/**/ {{0x3fe863c6, 0x2860ad7e} },
+/**/ {{0xbc81dcb2, 0x137a2d8f} },
+/**/ {{0xbfd4c48e, 0x9d3dc03a} },
+/**/ {{0xbc7d92af, 0x197b1db9} },
+/**/ {{0xbf8351f6, 0x5653b1a7} },
+/**/ {{0xbbe368b4, 0x2127dea7} },
+/**/ {{0x3fc09995, 0x58fa8ca4} },
+/**/ {{0xbc446391, 0x530429e5} },
+/**/ {{0xbfb582e2, 0xd81c26eb} },
+/**/ {{0xbf79b02d, 0x3e63c109} },
+/**/ {{0x3fa9c401, 0xe7904294} },
+/**/ {{0xbfa15c86, 0xb933b0f3} },
+/**/ {{0xbf711137, 0xd8d860e1} } },
+/**/ {{{0x3fe20000, 0x00000000} },
+/**/ {{0x3fe0657e, 0x94db30d0} },
+/**/ {{0xbc7d5b49, 0x5f6349e6} },
+/**/ {{0x3fe84f00, 0xc2780614} },
+/**/ {{0xbc7fe7b0, 0xff3d87fa} },
+/**/ {{0xbfd4c62c, 0xb562c625} },
+/**/ {{0x3c77b2c3, 0xa78e848c} },
+/**/ {{0xbf7e6495, 0xb3a4bcb7} },
+/**/ {{0x3c14eb89, 0xe3f2b0a5} },
+/**/ {{0x3fc063c2, 0xf78c0dc4} },
+/**/ {{0xbc6badf0, 0x7539dc13} },
+/**/ {{0xbfb58b78, 0x459eb443} },
+/**/ {{0xbf741c83, 0x1386e6b4} },
+/**/ {{0x3fa938d6, 0x944ff706} },
+/**/ {{0xbfa16d99, 0x66ad4037} },
+/**/ {{0xbf6a9b1a, 0x01fc736a} } },
+/**/ {{{0x3fe22000, 0x00000000} },
+/**/ {{0x3fe07dc3, 0x324e9b38} },
+/**/ {{0x3c7b70c9, 0xe04450ac} },
+/**/ {{0x3fe83a39, 0xefbd6bfe} },
+/**/ {{0xbc7b2885, 0x21f5de26} },
+/**/ {{0xbfd4c768, 0x76ff6c9e} },
+/**/ {{0x3c56a2c0, 0xdebc1603} },
+/**/ {{0xbf76402c, 0xd9cccfd7} },
+/**/ {{0xbc1b39c0, 0x4e9786c1} },
+/**/ {{0x3fc02ddd, 0xb900b57a} },
+/**/ {{0x3c45d916, 0xea88a215} },
+/**/ {{0xbfb591fc, 0x0a58ab40} },
+/**/ {{0xbf6d4eb0, 0x32a37ac9} },
+/**/ {{0x3fa8ad33, 0x71fe75f8} },
+/**/ {{0xbfa17a7f, 0xc477a855} },
+/**/ {{0xbf634c0e, 0x2b035011} } },
+/**/ {{{0x3fe24000, 0x00000000} },
+/**/ {{0x3fe095f3, 0x0861a590} },
+/**/ {{0xbc7121b2, 0x0a15a9f3} },
+/**/ {{0x3fe82572, 0x11e5c14d} },
+/**/ {{0xbc7df9fc, 0xacd80b09} },
+/**/ {{0xbfd4c843, 0x25709bff} },
+/**/ {{0x3c7a9ef6, 0x1790f484} },
+/**/ {{0xbf6c6d74, 0x8a0def34} },
+/**/ {{0xbc051e57, 0x2a8142d7} },
+/**/ {{0x3fbfefd5, 0x765e156b} },
+/**/ {{0xbc3e6048, 0xf0e29c9e} },
+/**/ {{0xbfb59679, 0x9a724e28} },
+/**/ {{0xbf62a185, 0xcf13e192} },
+/**/ {{0x3fa82139, 0x6433c13f} },
+/**/ {{0xbfa18359, 0x9342e95d} },
+/**/ {{0xbf586b34, 0x8f974107} } },
+/**/ {{{0x3fe26000, 0x00000000} },
+/**/ {{0x3fe0ae0e, 0x1639866c} },
+/**/ {{0x3c7075ab, 0xf2de445a} },
+/**/ {{0x3fe810a9, 0x89625f5d} },
+/**/ {{0xbc8e4bea, 0x0fcf7262} },
+/**/ {{0xbfd4c8be, 0x0465c69b} },
+/**/ {{0x3c462ef4, 0xd7f7f89c} },
+/**/ {{0xbf59210e, 0x4de612d5} },
+/**/ {{0xbbf43659, 0xba53898d} },
+/**/ {{0x3fbf83dd, 0xfe836c69} },
+/**/ {{0xbc36cb56, 0x27f5499a} },
+/**/ {{0xbfb598fc, 0x7136edda} },
+/**/ {{0xbf50634c, 0x00013fb7} },
+/**/ {{0x3fa79508, 0x4fe557c2} },
+/**/ {{0xbfa18846, 0xb8ae41dc} },
+/**/ {{0xbf455fce, 0xe36bd239} } },
+/**/ {{{0x3fe28000, 0x00000000} },
+/**/ {{0x3fe0c614, 0x5b5b43da} },
+/**/ {{0x3c5974fa, 0x13b5404f} },
+/**/ {{0x3fe7fbe0, 0xb560d35c} },
+/**/ {{0xbc84f066, 0xae5a0887} },
+/**/ {{0xbfd4c8da, 0x57c2e1cb} },
+/**/ {{0x3c73de0e, 0xe0a3774c} },
+/**/ {{0x3f38b341, 0x61c69f3c} },
+/**/ {{0x3bd7b2e2, 0x7b200371} },
+/**/ {{0x3fbf17de, 0xd351e8ed} },
+/**/ {{0x3c5bce38, 0x650c5a9c} },
+/**/ {{0xbfb59990, 0x0e77234c} },
+/**/ {{0x3f3006ef, 0x99f594ee} },
+/**/ {{0x3fa708bf, 0x1a75a6cc} },
+/**/ {{0xbfa18967, 0x31a471d5} },
+/**/ {{0x3f24cc7e, 0x59bf0521} } },
+/**/ {{{0x3fe2a000, 0x00000000} },
+/**/ {{0x3fe0de05, 0xd7aa6f7d} },
+/**/ {{0xbc783684, 0xb1c529ab} },
+/**/ {{0x3fe7e717, 0xf3cab884} },
+/**/ {{0x3c7e1b21, 0x3b1fa4c7} },
+/**/ {{0xbfd4c899, 0x63830b4b} },
+/**/ {{0xbc7b6e32, 0xae3ffeff} },
+/**/ {{0x3f628757, 0xfc06cc4f} },
+/**/ {{0xbbb4c155, 0x56f01f66} },
+/**/ {{0x3fbeabe1, 0x8424efd8} },
+/**/ {{0x3bdf5129, 0x6e5604ea} },
+/**/ {{0xbfb5983f, 0xf3ffff64} },
+/**/ {{0x3f57ec04, 0x1f564189} },
+/**/ {{0x3fa67c7b, 0xa92e6e68} },
+/**/ {{0xbfa186db, 0x0542d0ff} },
+/**/ {{0x3f4ee247, 0x11a37bde} } },
+/**/ {{{0x3fe2c000, 0x00000000} },
+/**/ {{0x3fe0f5e2, 0x8b67e295} },
+/**/ {{0x3be311b1, 0x7ec990d0} },
+/**/ {{0x3fe7d24f, 0xa145af59} },
+/**/ {{0xbc83c6d1, 0xabdb623b} },
+/**/ {{0xbfd4c7fc, 0x6b9bdb30} },
+/**/ {{0x3c7c2fae, 0xd3bbb84b} },
+/**/ {{0x3f70e125, 0xc729b366} },
+/**/ {{0x3c1291fb, 0x7a19993c} },
+/**/ {{0x3fbe3fef, 0x66cf0dd8} },
+/**/ {{0xbc5428b7, 0xcd5e7640} },
+/**/ {{0xbfb59517, 0xa3273c21} },
+/**/ {{0x3f65adcf, 0x36891acb} },
+/**/ {{0x3fa5f05a, 0xe121c017} },
+/**/ {{0xbfa180c2, 0x384bad65} },
+/**/ {{0x3f5bd6f1, 0xd31e02a7} } },
+/**/ {{{0x3fe2e000, 0x00000000} },
+/**/ {{0x3fe10daa, 0x77307a0d} },
+/**/ {{0x3c869c33, 0xd44c7b05} },
+/**/ {{0x3fe7bd88, 0x19337139} },
+/**/ {{0xbc7fd248, 0x00e777ef} },
+/**/ {{0xbfd4c704, 0xb3e16264} },
+/**/ {{0xbc7ed720, 0xd46ed4e3} },
+/**/ {{0x3f7863a5, 0x62c1daf7} },
+/**/ {{0x3c155e73, 0x30cc82d1} },
+/**/ {{0x3fbdd411, 0x97a241da} },
+/**/ {{0x3c27a15a, 0x9ac44edd} },
+/**/ {{0xbfb59022, 0x9a6c71a6} },
+/**/ {{0x3f6f285a, 0xb5534ebe} },
+/**/ {{0x3fa56478, 0xa76d3cf7} },
+/**/ {{0xbfa1773c, 0xc1240db6} },
+/**/ {{0x3f63e5a1, 0x3891a70c} } },
+/**/ {{{0x3fe30000, 0x00000000} },
+/**/ {{0x3fe1255d, 0x9bfbd2a9} },
+/**/ {{0xbc52bdae, 0xe1c0ee35} },
+/**/ {{0x3fe7a8c1, 0xb5b1ffa1} },
+/**/ {{0x3c873e4a, 0x4e005ea3} },
+/**/ {{0xbfd4c5b3, 0x7fead5b8} },
+/**/ {{0x3c77958e, 0x55abc25a} },
+/**/ {{0x3f7fcb31, 0x01e4c970} },
+/**/ {{0xbc1ad968, 0xc5337fda} },
+/**/ {{0x3fbd6850, 0xf983ecf1} },
+/**/ {{0xbc3e45e6, 0x02ed6910} },
+/**/ {{0xbfb5896c, 0x532f49b6} },
+/**/ {{0x3f7432e2, 0xeaefcf7f} },
+/**/ {{0x3fa4d8ef, 0xe1db38f0} },
+/**/ {{0xbfa16a6a, 0x7c5c9def} },
+/**/ {{0x3f69a742, 0x7b6fe5d0} } },
+/**/ {{{0x3fe32000, 0x00000000} },
+/**/ {{0x3fe13cfb, 0xfb1b056e} },
+/**/ {{0x3c83110e, 0x6fc3ed38} },
+/**/ {{0x3fe793fc, 0xcf9bee6c} },
+/**/ {{0xbc8dc7d2, 0xd8d91b6c} },
+/**/ {{0xbfd4c40a, 0x12f7e51f} },
+/**/ {{0x3c7d1e10, 0x0d5d686d} },
+/**/ {{0x3f838be8, 0x839d28fa} },
+/**/ {{0x3c13427a, 0x52131640} },
+/**/ {{0x3fbcfcb6, 0x360bfed5} },
+/**/ {{0xbc5e3cb4, 0xa36f599f} },
+/**/ {{0xbfb58100, 0x3f7aa463} },
+/**/ {{0x3f78b31e, 0xb76f2bc0} },
+/**/ {{0x3fa44dda, 0x77dd6b80} },
+/**/ {{0xbfa15a6b, 0x21c53ca9} },
+/**/ {{0x3f6f30a7, 0x6cd99ed4} } },
+/**/ {{{0x3fe34000, 0x00000000} },
+/**/ {{0x3fe15485, 0x9637646a} },
+/**/ {{0xbc84ba7c, 0x548bf3c3} },
+/**/ {{0x3fe77f39, 0xbe88c85e} },
+/**/ {{0xbc6a983f, 0x9b6750c8} },
+/**/ {{0xbfd4c209, 0xafd6bee5} },
+/**/ {{0x3c7d21ef, 0x5e73e93a} },
+/**/ {{0x3f8724c7, 0xfc556ca7} },
+/**/ {{0xbc23cef2, 0x42e5673e} },
+/**/ {{0x3fbc9149, 0xbdaef67d} },
+/**/ {{0xbc1e549c, 0x3f04fcdc} },
+/**/ {{0xbfb576e9, 0xc7e4996a} },
+/**/ {{0x3f7d14fc, 0xba6ceedb} },
+/**/ {{0x3fa3c351, 0x53dcdc4a} },
+/**/ {{0xbfa1475e, 0x3a0a53a1} },
+/**/ {{0x3f724116, 0x62102619} } },
+/**/ {{{0x3fe36000, 0x00000000} },
+/**/ {{0x3fe16bfa, 0x6f5137e1} },
+/**/ {{0x3c79606f, 0xe141bd35} },
+/**/ {{0x3fe76a78, 0xd8cd8d65} },
+/**/ {{0x3c854a99, 0xddf1f71f} },
+/**/ {{0xbfd4bfb3, 0x98cabe40} },
+/**/ {{0xbc61e24d, 0x9ef99598} },
+/**/ {{0x3f8ab03d, 0x388e6864} },
+/**/ {{0x3c210541, 0xc340d113} },
+/**/ {{0x3fbc2613, 0xc7f24ec4} },
+/**/ {{0x3c54042a, 0x0a59af31} },
+/**/ {{0xbfb56b34, 0x49833ac1} },
+/**/ {{0x3f80ac4f, 0x22f6cd28} },
+/**/ {{0x3fa3396c, 0x64dac153} },
+/**/ {{0xbfa13163, 0x14dadf32} },
+/**/ {{0x3f74ce20, 0x21aeee27} } },
+/**/ {{{0x3fe38000, 0x00000000} },
+/**/ {{0x3fe1835a, 0x88be7c13} },
+/**/ {{0x3c8c621c, 0xec00c301} },
+/**/ {{0x3fe755ba, 0x737d49ca} },
+/**/ {{0xbc8abaf3, 0xd4cb44c6} },
+/**/ {{0xbfd4bd09, 0x0f73c4b3} },
+/**/ {{0x3c3e9ebf, 0xa9936e0b} },
+/**/ {{0x3f8e2e4f, 0x8920477f} },
+/**/ {{0xbc0889e3, 0x0360e009} },
+/**/ {{0x3fbbbb1c, 0x53aaefa0} },
+/**/ {{0xbc5edb26, 0xa1007b7f} },
+/**/ {{0xbfb55deb, 0x13f5f619} },
+/**/ {{0x3f82bf14, 0xe675741e} },
+/**/ {{0x3fa2b042, 0xa05e0ebf} },
+/**/ {{0xbfa11898, 0xbf95c5c1} },
+/**/ {{0x3f773faf, 0xe421ee51} } },
+/**/ {{{0x3fe3a000, 0x00000000} },
+/**/ {{0x3fe19aa5, 0xe5299f9a} },
+/**/ {{0xbc8a606c, 0x2c58f835} },
+/**/ {{0x3fe740fe, 0xe269c5b3} },
+/**/ {{0x3c873eff, 0x4c82509c} },
+/**/ {{0xbfd4ba0b, 0x54b63d79} },
+/**/ {{0xbc51d68a, 0x75bceeff} },
+/**/ {{0x3f90cf83, 0x9d9b3eb0} },
+/**/ {{0xbc107399, 0x68a7ca2f} },
+/**/ {{0x3fbb506b, 0x27453d35} },
+/**/ {{0x3c326b36, 0x00bdfedd} },
+/**/ {{0xbfb54f19, 0x67836cef} },
+/**/ {{0x3f84c2e5, 0x567ed6e8} },
+/**/ {{0x3fa227ea, 0x04a983e8} },
+/**/ {{0xbfa0fd1d, 0xfc7ce22f} },
+/**/ {{0x3f79960c, 0x2ffea71d} } },
+/**/ {{{0x3fe3c000, 0x00000000} },
+/**/ {{0x3fe1b1dc, 0x87904285} },
+/**/ {{0xbc621e8c, 0x8aef8f29} },
+/**/ {{0x3fe72c46, 0x78244c5a} },
+/**/ {{0x3c888c36, 0xe664f3a2} },
+/**/ {{0xbfd4b6bb, 0xa8a3ca2f} },
+/**/ {{0xbc778793, 0x1e1f3e19} },
+/**/ {{0x3f928136, 0xc8a3d8bb} },
+/**/ {{0x3c3dc4d8, 0x140daf1c} },
+/**/ {{0x3fbae607, 0xd1165ef3} },
+/**/ {{0xbc5fbfaa, 0x6305876c} },
+/**/ {{0xbfb53eca, 0x734b94bd} },
+/**/ {{0x3f86b7d8, 0x7c458eb1} },
+/**/ {{0x3fa1a077, 0x9b360f57} },
+/**/ {{0xbfa0df11, 0x3a6beabd} },
+/**/ {{0x3f7bd182, 0xaf42dc87} } },
+/**/ {{{0x3fe3e000, 0x00000000} },
+/**/ {{0x3fe1c8fe, 0x7341f64f} },
+/**/ {{0x3c728bbc, 0x9d5e792a} },
+/**/ {{0x3fe71791, 0x85fe8a32} },
+/**/ {{0x3c8f15bd, 0xe8bbb0d0} },
+/**/ {{0xbfd4b31b, 0x4a6497be} },
+/**/ {{0x3c737223, 0x782968f7} },
+/**/ {{0x3f942c46, 0x5e0c3122} },
+/**/ {{0xbc33e26a, 0x86422b13} },
+/**/ {{0x3fba7bf9, 0xa7b659b8} },
+/**/ {{0xbc3cdf63, 0x25381986} },
+/**/ {{0xbfb52d09, 0x538deb45} },
+/**/ {{0x3f889e08, 0xa0c1f425} },
+/**/ {{0x3fa119ff, 0x7b6d72e6} },
+/**/ {{0xbfa0be90, 0x8d11287b} },
+/**/ {{0x3f7df267, 0xbce83ad4} } },
+/**/ {{{0x3fe40000, 0x00000000} },
+/**/ {{0x3fe1e00b, 0xabdefeb4} },
+/**/ {{0xbc5928df, 0x287a668f} },
+/**/ {{0x3fe702e0, 0x5c0b8170} },
+/**/ {{0x3c7702e0, 0x5c0b8170} },
+/**/ {{0xbfd4af2b, 0x78215a76} },
+/**/ {{0xbc581c2e, 0xab3a13d8} },
+/**/ {{0x3f95d0b7, 0xe9e4a9d0} },
+/**/ {{0xbc3aa02a, 0xebf91fc7} },
+/**/ {{0x3fba1247, 0xca629942} },
+/**/ {{0xbc46961a, 0xc245db83} },
+/**/ {{0xbfb519e1, 0x100385b4} },
+/**/ {{0x3f8a7592, 0x32616ed8} },
+/**/ {{0x3fa09494, 0xcda1223a} },
+/**/ {{0xbfa09bb9, 0xa5a5c251} },
+/**/ {{0x3f7ff915, 0xf489d8ba} } },
+/**/ {{{0x3fe42000, 0x00000000} },
+/**/ {{0x3fe1f704, 0x3557138a} },
+/**/ {{0x3c76c659, 0xf6d7dd47} },
+/**/ {{0x3fe6ee33, 0x4920943e} },
+/**/ {{0xbc62723e, 0x61a3a541} },
+/**/ {{0xbfd4aaed, 0x6eedf042} },
+/**/ {{0x3c5b337a, 0xe7561ed4} },
+/**/ {{0x3f976e91, 0x68796803} },
+/**/ {{0xbc0e806f, 0x44d1db93} },
+/**/ {{0x3fb9a8f9, 0x21688625} },
+/**/ {{0x3c540185, 0xb1ec0554} },
+/**/ {{0xbfb5055c, 0x9a4cbc61} },
+/**/ {{0x3f8c3e93, 0xab0be204} },
+/**/ {{0x3fa01049, 0xce3968a1} },
+/**/ {{0xbfa076a9, 0xcc2331ba} },
+/**/ {{0x3f80f2f6, 0xe220db7e} } },
+/**/ {{{0x3fe44000, 0x00000000} },
+/**/ {{0x3fe20de8, 0x13e823b2} },
+/**/ {{0xbc8791d7, 0x53ebb744} },
+/**/ {{0x3fe6d98a, 0x9ad6a3fd} },
+/**/ {{0xbc808110, 0xc4e69862} },
+/**/ {{0xbfd4a662, 0x6ab4a79d} },
+/**/ {{0x3c52ed25, 0x9fc1cc2b} },
+/**/ {{0x3f9905d9, 0x42e6dc28} },
+/**/ {{0xbc228c79, 0xe39b7707} },
+/**/ {{0x3fb94014, 0x5e97c6f4} },
+/**/ {{0xbc52b822, 0xf8779202} },
+/**/ {{0xbfb4ef86, 0xcc723054} },
+/**/ {{0x3f8df92d, 0x76852811} },
+/**/ {{0x3f9f1a5f, 0xa231ee3f} },
+/**/ {{0xbfa04f7d, 0xd8f34e77} },
+/**/ {{0x3f81dcaa, 0x80706a34} } },
+/**/ {{{0x3fe46000, 0x00000000} },
+/**/ {{0x3fe224b7, 0x4c1d192a} },
+/**/ {{0x3c8d6d3d, 0xf88a60c4} },
+/**/ {{0x3fe6c4e6, 0x9d8b44ec} },
+/**/ {{0xbc589d5c, 0x4ed04ec2} },
+/**/ {{0xbfd4a18b, 0xa6222a08} },
+/**/ {{0xbc66c919, 0xd3867dbd} },
+/**/ {{0x3f9a9696, 0x4bb5a8a0} },
+/**/ {{0x3c36698e, 0x927bb5bd} },
+/**/ {{0x3fb8d79f, 0xfdbbcc76} },
+/**/ {{0x3c2578bd, 0x4efb71a1} },
+/**/ {{0xbfb4d86a, 0x6778e363} },
+/**/ {{0x3f8fa581, 0xd930230d} },
+/**/ {{0x3f9e16ae, 0x8a6221aa} },
+/**/ {{0xbfa02652, 0x2f183972} },
+/**/ {{0x3f82b9db, 0x3e507f4f} } },
+/**/ {{{0x3fe48000, 0x00000000} },
+/**/ {{0x3fe23b71, 0xe2cc9e6a} },
+/**/ {{0x3c6c421c, 0x9f38224e} },
+/**/ {{0x3fe6b047, 0x9c620595} },
+/**/ {{0x3c8867df, 0x07d7f0c2} },
+/**/ {{0xbfd49c6a, 0x5a920887} },
+/**/ {{0xbc764547, 0x37bcc433} },
+/**/ {{0x3f9c20cf, 0xbb7e5931} },
+/**/ {{0xbc3d86f5, 0x4db6bef2} },
+/**/ {{0x3fb86fa2, 0x451c4a5d} },
+/**/ {{0xbc475142, 0x15afb52c} },
+/**/ {{0xbfb4c012, 0x120917da} },
+/**/ {{0x3f90a1da, 0x6b9c3fad} },
+/**/ {{0x3f9d159f, 0x708543e5} },
+/**/ {{0xbf9ff685, 0x6d929bce} },
+/**/ {{0x3f838ac0, 0xd0361a66} } },
+/**/ {{{0x3fe4a000, 0x00000000} },
+/**/ {{0x3fe25217, 0xdd17e501} },
+/**/ {{0x3c856aa8, 0x8c1b679c} },
+/**/ {{0x3fe69bad, 0xe145c95d} },
+/**/ {{0xbc873257, 0x5605046d} },
+/**/ {{0xbfd496ff, 0xbffbe8a8} },
+/**/ {{0x3c36a5c5, 0xc7b45e6f} },
+/**/ {{0x3f9da48d, 0x2d9556eb} },
+/**/ {{0x3c3ff0e8, 0x1871a19d} },
+/**/ {{0x3fb80821, 0x46043f42} },
+/**/ {{0x3c550eec, 0xe660cfa1} },
+/**/ {{0xbfb4a688, 0x5727a8cb} },
+/**/ {{0x3f9169f6, 0x0e13efbc} },
+/**/ {{0x3f9c174f, 0xb59149dd} },
+/**/ {{0xbf9f9cd5, 0xb10444dd} },
+/**/ {{0x3f844f95, 0x03e91dd9} } },
+/**/ {{{0x3fe4c000, 0x00000000} },
+/**/ {{0x3fe268a9, 0x40696da6} },
+/**/ {{0x3c5d1348, 0xa04c73cc} },
+/**/ {{0x3fe68719, 0xb4ea3592} },
+/**/ {{0xbc7ecf86, 0x088ed284} },
+/**/ {{0xbfd4914d, 0x0ce1507d} },
+/**/ {{0xbc6410ef, 0x4dff2946} },
+/**/ {{0x3f9f21d6, 0x9cbf7eb7} },
+/**/ {{0x3c39bc22, 0xeaaad7e2} },
+/**/ {{0x3fb7a122, 0xdd4f3070} },
+/**/ {{0x3c50d950, 0x1cfe44af} },
+/**/ {{0xbfb48bd7, 0xa50188df} },
+/**/ {{0x3f922b27, 0x71756204} },
+/**/ {{0x3f9b1bdb, 0x0810a33a} },
+/**/ {{0xbf9f3fca, 0xf1011313} },
+/**/ {{0x3f850893, 0x8fe0f49b} } },
+/**/ {{{0x3fe4e000, 0x00000000} },
+/**/ {{0x3fe27f26, 0x1273d1b3} },
+/**/ {{0x3c843bf3, 0x6151dd9f} },
+/**/ {{0x3fe6728b, 0x5ecd3069} },
+/**/ {{0x3c67417b, 0x539f23ff} },
+/**/ {{0xbfd48b53, 0x763c0fe8} },
+/**/ {{0xbc677a1a, 0x6027975c} },
+/**/ {{0x3fa04c5a, 0x2ff7dd6a} },
+/**/ {{0xbc40808e, 0x496202e8} },
+/**/ {{0x3fb73aac, 0xb3fc3f7c} },
+/**/ {{0x3c4b58cb, 0x86b114ff} },
+/**/ {{0xbfb4700a, 0x4bc91249} },
+/**/ {{0x3f92e582, 0xef2490f8} },
+/**/ {{0x3f9a235b, 0x6c875580} },
+/**/ {{0xbf9edf99, 0xe55cd596} },
+/**/ {{0x3f85b5f9, 0xe40c5a18} } },
+/**/ {{{0x3fe50000, 0x00000000} },
+/**/ {{0x3fe2958e, 0x59308e31} },
+/**/ {{0xbc709e73, 0xb0c6c087} },
+/**/ {{0x3fe65e03, 0x2538713c} },
+/**/ {{0xbc601392, 0x42c09163} },
+/**/ {{0xbfd48514, 0x2f6d4575} },
+/**/ {{0xbc356341, 0x4568af3f} },
+/**/ {{0x3fa10497, 0x9386fd1d} },
+/**/ {{0xbc4a756a, 0x230a452f} },
+/**/ {{0x3fb6d4c4, 0x3fc6c180} },
+/**/ {{0x3c5ab2b9, 0xdb3fe137} },
+/**/ {{0xbfb4532a, 0x7ca4cfd0} },
+/**/ {{0x3f93991d, 0x90eb1d30} },
+/**/ {{0x3f992de9, 0x46163051} },
+/**/ {{0xbf9e7c76, 0x2de874ff} },
+/**/ {{0x3f865806, 0xfc0c1cb2} } },
+/**/ {{{0x3fe52000, 0x00000000} },
+/**/ {{0x3fe2abe2, 0x1aded073} },
+/**/ {{0x3c8c28c0, 0x01ad022e} },
+/**/ {{0x3fe64981, 0x4d432177} },
+/**/ {{0x3c83f41b, 0x055e240c} },
+/**/ {{0xbfd47e90, 0x6a2cfd01} },
+/**/ {{0x3c628585, 0xf152d080} },
+/**/ {{0x3fa1b9a7, 0xfbe3ed9e} },
+/**/ {{0xbc18a085, 0xf259fe04} },
+/**/ {{0x3fb66f6e, 0xc3c40175} },
+/**/ {{0x3c41d80a, 0xb0fda762} },
+/**/ {{0xbfb43542, 0x48af643a} },
+/**/ {{0x3f94460d, 0x05ad7652} },
+/**/ {{0x3f983b9b, 0x5f55ab26} },
+/**/ {{0xbf9e1692, 0x4be18b23} },
+/**/ {{0x3f86eefb, 0x32e755a3} } },
+/**/ {{{0x3fe54000, 0x00000000} },
+/**/ {{0x3fe2c221, 0x5e024466} },
+/**/ {{0xbc44b810, 0xda3a4be1} },
+/**/ {{0x3fe63506, 0x1ad38da0} },
+/**/ {{0xbc67f12a, 0x94ec14b0} },
+/**/ {{0xbfd477c9, 0x567a6652} },
+/**/ {{0x3c7be71c, 0xbbb9df88} },
+/**/ {{0x3fa26b90, 0x1535acb9} },
+/**/ {{0xbc30ff6c, 0xff041454} },
+/**/ {{0x3fb60ab1, 0x5105d8fa} },
+/**/ {{0x3c535a89, 0x3f2d6492} },
+/**/ {{0xbfb4165b, 0xa0083319} },
+/**/ {{0x3f94ec67, 0x965eb0a7} },
+/**/ {{0x3f974c86, 0xf36231e5} },
+/**/ {{0xbf9dae1f, 0x9c25f4a4} },
+/**/ {{0x3f877b18, 0x183e42dc} } },
+/**/ {{{0x3fe56000, 0x00000000} },
+/**/ {{0x3fe2d84c, 0x2961e48c} },
+/**/ {{0xbc7f2542, 0x0a36e506} },
+/**/ {{0x3fe62091, 0xd0a0e5d4} },
+/**/ {{0x3c82a27d, 0xcccb008e} },
+/**/ {{0xbfd470c0, 0x228ca1b6} },
+/**/ {{0xbc788e9b, 0x32884415} },
+/**/ {{0x3fa31a54, 0xb365e4d9} },
+/**/ {{0x3c3e6e70, 0xda0f99ae} },
+/**/ {{0x3fb5a690, 0xc741ccb7} },
+/**/ {{0xbc383905, 0x6508ffe1} },
+/**/ {{0xbfb3f680, 0x50f46c17} },
+/**/ {{0x3f958c44, 0x1b344c30} },
+/**/ {{0x3f9660bf, 0xb713db8a} },
+/**/ {{0xbf9d434e, 0x5224992a} },
+/**/ {{0x3f87fca0, 0x46ffb16e} } },
+/**/ {{{0x3fe58000, 0x00000000} },
+/**/ {{0x3fe2ee62, 0x8406cbca} },
+/**/ {{0x3c8c5d5e, 0x9ff0cf8d} },
+/**/ {{0x3fe60c24, 0xb0350d38} },
+/**/ {{0x3c81ffe9, 0xf3db4fcb} },
+/**/ {{0xbfd46975, 0xfac420bd} },
+/**/ {{0x3c7e6994, 0x850528a0} },
+/**/ {{0x3fa3c5fa, 0xd098b4ee} },
+/**/ {{0x3c353c41, 0xaa6a6874} },
+/**/ {{0x3fb54311, 0xd57c5b53} },
+/**/ {{0x3c50d02e, 0x72d146e0} },
+/**/ {{0xbfb3d5ba, 0x071017e0} },
+/**/ {{0x3f9625b9, 0xf11b08a7} },
+/**/ {{0x3f957857, 0xe25bbc6f} },
+/**/ {{0xbf9cd64d, 0x7384981f} },
+/**/ {{0x3f8873d7, 0x3da3b8d5} } },
+/**/ {{{0x3fe5a000, 0x00000000} },
+/**/ {{0x3fe30464, 0x753b090b} },
+/**/ {{0xbc73e712, 0x61da18f3} },
+/**/ {{0x3fe5f7be, 0xf9ee77b6} },
+/**/ {{0x3c8949f7, 0x854f9928} },
+/**/ {{0xbfd461ec, 0x099c98f6} },
+/**/ {{0x3c5da491, 0x3eafe889} },
+/**/ {{0x3fa46e87, 0x8ba9e286} },
+/**/ {{0x3c42573a, 0x5377a1a9} },
+/**/ {{0x3fb4e038, 0xfab82ffb} },
+/**/ {{0xbc414e45, 0x402ef939} },
+/**/ {{0xbfb3b412, 0x4a8ec478} },
+/**/ {{0x3f96b8e0, 0xef6dba07} },
+/**/ {{0x3f949360, 0x39c13c6e} },
+/**/ {{0xbf9c674a, 0xd47bfddb} },
+/**/ {{0x3f88e101, 0x37ed6935} } },
+/**/ {{{0x3fe5c000, 0x00000000} },
+/**/ {{0x3fe31a52, 0x048874be} },
+/**/ {{0x3c840cab, 0x87a7ac24} },
+/**/ {{0x3fe5e360, 0xed021586} },
+/**/ {{0x3c86a444, 0xb32ab7e4} },
+/**/ {{0xbfd45a23, 0x779f86c4} },
+/**/ {{0xbc75b9dc, 0x6b782501} },
+/**/ {{0x3fa51400, 0x26af940c} },
+/**/ {{0x3c4f700e, 0xf9ce64e2} },
+/**/ {{0x3fb47e0a, 0x86a8eb42} },
+/**/ {{0xbc5a4df9, 0x36377584} },
+/**/ {{0xbfb39192, 0x7f8b6d42} },
+/**/ {{0x3f9745d1, 0x5deeeabc} },
+/**/ {{0x3f93b1e8, 0x17fa1033} },
+/**/ {{0xbf9bf673, 0x14cf2061} },
+/**/ {{0x3f894463, 0x0a340016} } },
+/**/ {{{0x3fe5e000, 0x00000000} },
+/**/ {{0x3fe3302b, 0x39b78856} },
+/**/ {{0x3c85dd2e, 0xd87ba82b} },
+/**/ {{0x3fe5cf0a, 0xc77d4bea} },
+/**/ {{0xbc8684ab, 0x0d42ab66} },
+/**/ {{0xbfd4521d, 0x6b573e11} },
+/**/ {{0xbc7601b9, 0xb90c9c27} },
+/**/ {{0x3fa5b66a, 0x0582aeaa} },
+/**/ {{0x3c281575, 0x8cc985ad} },
+/**/ {{0x3fb41c8a, 0x9a69373d} },
+/**/ {{0xbc33df07, 0x25ea8f67} },
+/**/ {{0xbfb36e43, 0xe5673a18} },
+/**/ {{0x3f97cca3, 0xeb05f3bc} },
+/**/ {{0x3f92d3fd, 0x7797abe9} },
+/**/ {{0xbf9b83f1, 0x9d71c254} },
+/**/ {{0x3f899e41, 0xfe333861} } },
+/**/ {{{0x3fe60000, 0x00000000} },
+/**/ {{0x3fe345f0, 0x1cce37bb} },
+/**/ {{0x3c810211, 0x37c71102} },
+/**/ {{0x3fe5babc, 0xc647fa91} },
+/**/ {{0x3c84339b, 0x8056eaf3} },
+/**/ {{0xbfd449db, 0x094286d0} },
+/**/ {{0x3c75e178, 0x512b1c7b} },
+/**/ {{0x3fa655ca, 0xac4cf102} },
+/**/ {{0xbc27a1e4, 0x61e8206a} },
+/**/ {{0x3fb3bbbd, 0x2933dd9c} },
+/**/ {{0xbc517633, 0xbd42c006} },
+/**/ {{0xbfb34a2f, 0x9636afc9} },
+/**/ {{0x3f984d71, 0xa2400f6f} },
+/**/ {{0x3f91f9ac, 0xfcc53cab} },
+/**/ {{0xbf9b0ff0, 0x9ec31ef1} },
+/**/ {{0x3f89eee3, 0xb1615b05} } },
+/**/ {{{0x3fe62000, 0x00000000} },
+/**/ {{0x3fe35ba0, 0xb60eccce} },
+/**/ {{0x3c8e3ba1, 0x9b9368b9} },
+/**/ {{0x3fe5a677, 0x25268d22} },
+/**/ {{0x3c7bc76e, 0xaf72cee6} },
+/**/ {{0xbfd4415d, 0x73c8c31c} },
+/**/ {{0xbc3e5b3c, 0xe00e5645} },
+/**/ {{0x3fa6f227, 0xbe1ce1b6} },
+/**/ {{0xbc04a922, 0xe699fcac} },
+/**/ {{0x3fb35ba5, 0xf91f9885} },
+/**/ {{0xbc43f8be, 0x418827b3} },
+/**/ {{0xbfb3255e, 0x863cebc9} },
+/**/ {{0x3f98c853, 0xe315ca66} },
+/**/ {{0x3f912301, 0xff116cac} },
+/**/ {{0xbf9a9a99, 0x0f5e09c2} },
+/**/ {{0x3f8a368d, 0xf4c8d587} } },
+/**/ {{{0x3fe64000, 0x00000000} },
+/**/ {{0x3fe3713d, 0x0df6c504} },
+/**/ {{0xbc54f789, 0xe031606d} },
+/**/ {{0x3fe5923a, 0x1ebc184f} },
+/**/ {{0x3c829fe8, 0xbe5956dd} },
+/**/ {{0xbfd438a5, 0xcb2e9cc9} },
+/**/ {{0xbc7c1839, 0x7d6ce3eb} },
+/**/ {{0x3fa78b86, 0xfb7fa678} },
+/**/ {{0x3befb53e, 0xd082025e} },
+/**/ {{0x3fb2fc48, 0xa3dd5905} },
+/**/ {{0x3c5fd567, 0x06b78682} },
+/**/ {{0xbfb2ffd9, 0x8374843c} },
+/**/ {{0x3f993d64, 0x57f51471} },
+/**/ {{0x3f905006, 0x933f6cc5} },
+/**/ {{0xbf9a2412, 0xab7658df} },
+/**/ {{0x3f8a7586, 0xae624ab4} } },
+/**/ {{{0x3fe66000, 0x00000000} },
+/**/ {{0x3fe386c5, 0x2d3db11f} },
+/**/ {{0xbc8b78e1, 0xcbebe6a0} },
+/**/ {{0x3fe57e05, 0xec8c8203} },
+/**/ {{0x3c8ea585, 0x5e7f92dc} },
+/**/ {{0xbfd42fb5, 0x2d8b381e} },
+/**/ {{0xbc63afe6, 0x5cff451e} },
+/**/ {{0x3fa821ee, 0x4120d643} },
+/**/ {{0xbc3e664f, 0xcbc4d2dc} },
+/**/ {{0x3fb29da8, 0x9778bfdb} },
+/**/ {{0x3c3760dd, 0x7c2057a5} },
+/**/ {{0xbfb2d9a9, 0x3525a55a} },
+/**/ {{0x3f99acbc, 0xed9015c8} },
+/**/ {{0x3f8f0187, 0x2a35e7d2} },
+/**/ {{0xbf99ac83, 0xf4bcdfc7} },
+/**/ {{0x3f8aac13, 0xbbeb4f11} } },
+/**/ {{{0x3fe68000, 0x00000000} },
+/**/ {{0x3fe39c39, 0x1cd4171a} },
+/**/ {{0xbc823043, 0x31d8bf46} },
+/**/ {{0x3fe569da, 0xc6feb417} },
+/**/ {{0x3c803ce5, 0x0625e450} },
+/**/ {{0xbfd4268c, 0xb6bde980} },
+/**/ {{0xbc6e8f76, 0xe8258561} },
+/**/ {{0x3fa8b563, 0x86705749} },
+/**/ {{0x3c418e14, 0xe6172281} },
+/**/ {{0x3fb23fc9, 0x171a8768} },
+/**/ {{0xbc562184, 0x3225d825} },
+/**/ {{0xbfb2b2d6, 0x1b8904fd} },
+/**/ {{0x3f9a1677, 0xca70ce88} },
+/**/ {{0x3f8d6a81, 0x62963581} },
+/**/ {{0xbf993412, 0x32c353bb} },
+/**/ {{0x3f8ada7a, 0xd7354ec0} } },
+/**/ {{{0x3fe6a000, 0x00000000} },
+/**/ {{0x3fe3b198, 0xe5e2564b} },
+/**/ {{0xbc72f922, 0x1f0752ac} },
+/**/ {{0x3fe555b8, 0xe55ed910} },
+/**/ {{0xbc5615bc, 0x656f2eb2} },
+/**/ {{0xbfd41d2d, 0x80646bca} },
+/**/ {{0xbc75d1d6, 0x1ff3506f} },
+/**/ {{0x3fa945ec, 0xdc4e5727} },
+/**/ {{0x3c213c8e, 0x18968922} },
+/**/ {{0x3fb1e2ad, 0x3bcc9fa4} },
+/**/ {{0x3c2b899c, 0x0a43c591} },
+/**/ {{0xbfb28b68, 0x8f774533} },
+/**/ {{0x3f9a7aaf, 0x46d16acc} },
+/**/ {{0x3f8bdb08, 0xde405cc6} },
+/**/ {{0xbf98bae1, 0x73d9884b} },
+/**/ {{0x3f8b0101, 0x7be7742a} } },
+/**/ {{{0x3fe6c000, 0x00000000} },
+/**/ {{0x3fe3c6e4, 0x91c78dc5} },
+/**/ {{0xbc8e1450, 0x94fd0ba7} },
+/**/ {{0x3fe541a0, 0x7de0a269} },
+/**/ {{0x3c8b9072, 0x163b639c} },
+/**/ {{0xbfd41398, 0xa1d194fc} },
+/**/ {{0xbc7ef191, 0x8629402d} },
+/**/ {{0x3fa9d390, 0x6bbd69eb} },
+/**/ {{0x3c488aec, 0xd2c4a6a5} },
+/**/ {{0x3fb18657, 0xf53fbee6} },
+/**/ {{0x3c54e6aa, 0x0104d1dd} },
+/**/ {{0xbfb26368, 0xc2245ee6} },
+/**/ {{0x3f9ad97d, 0xe4b91b16} },
+/**/ {{0x3f8a5328, 0x74b192c7} },
+/**/ {{0xbf984114, 0x8e5d8b31} },
+/**/ {{0x3f8b1fec, 0xceadce82} } },
+/**/ {{{0x3fe6e000, 0x00000000} },
+/**/ {{0x3fe3dc1c, 0x2a188504} },
+/**/ {{0x3c82ce63, 0x70f4e971} },
+/**/ {{0x3fe52d91, 0xc5a197ed} },
+/**/ {{0xbc804b92, 0x1baab820} },
+/**/ {{0xbfd409cf, 0x300486f8} },
+/**/ {{0xbc6d3bb8, 0xae804189} },
+/**/ {{0x3faa5e54, 0x749adab8} },
+/**/ {{0x3c20b0d5, 0xc631cfd3} },
+/**/ {{0x3fb12acc, 0x0a922c54} },
+/**/ {{0x3c521a06, 0x7cbc4417} },
+/**/ {{0xbfb23ade, 0xbce6ae05} },
+/**/ {{0x3f9b32fe, 0x485d279b} },
+/**/ {{0x3f88d2e8, 0xd9b56b96} },
+/**/ {{0xbf97c6cd, 0x227841f4} },
+/**/ {{0x3f8b3781, 0x85cf6ba0} } },
+/**/ {{{0x3fe70000, 0x00000000} },
+/**/ {{0x3fe3f13f, 0xb89e96f4} },
+/**/ {{0x3c7ecf8b, 0x492644f0} },
+/**/ {{0x3fe5198c, 0xf0ab6f99} },
+/**/ {{0x3c71b875, 0x5e1ffaba} },
+/**/ {{0xbfd3ffd2, 0x3da059f4} },
+/**/ {{0x3c5bba8e, 0x77eee53d} },
+/**/ {{0x3faae63f, 0x4c5d36dc} },
+/**/ {{0xbc4e6e4e, 0x2a3994d6} },
+/**/ {{0x3fb0d00c, 0x1b178ada} },
+/**/ {{0x3c4b94c3, 0xb3e710cc} },
+/**/ {{0xbfb211d2, 0x61093929} },
+/**/ {{0x3f9b874b, 0x30c5dd59} },
+/**/ {{0x3f875a50, 0xb0b899ed} },
+/**/ {{0xbf974c2b, 0x9c404912} },
+/**/ {{0x3f8b4803, 0xd3249a4d} } },
+/**/ {{{0x3fe72000, 0x00000000} },
+/**/ {{0x3fe4064f, 0x47569f49} },
+/**/ {{0xbc8aad88, 0xf91bf2b2} },
+/**/ {{0x3fe50592, 0x31f66da7} },
+/**/ {{0xbc8837f1, 0x134b7507} },
+/**/ {{0xbfd3f5a2, 0xdae43e4d} },
+/**/ {{0xbc7f29b0, 0xdc59e382} },
+/**/ {{0x3fab6b57, 0x5cd91a8c} },
+/**/ {{0xbc225bf7, 0xd6ab0dfc} },
+/**/ {{0x3fb0761a, 0x9f216d7a} },
+/**/ {{0x3c577818, 0xe546203e} },
+/**/ {{0xbfb1e84b, 0x67a8cf31} },
+/**/ {{0x3f9bd67f, 0x70b6dd6f} },
+/**/ {{0x3f85e964, 0x9ff677e5} },
+/**/ {{0xbf96d14f, 0x363cf426} },
+/**/ {{0x3f8b51b7, 0x4f6617de} } },
+/**/ {{{0x3fe74000, 0x00000000} },
+/**/ {{0x3fe41b4a, 0xe06fea41} },
+/**/ {{0x3c63d60a, 0x53277652} },
+/**/ {{0x3fe4f1a1, 0xbb6bcc2c} },
+/**/ {{0x3c5c8d69, 0x7c81f558} },
+/**/ {{0xbfd3eb42, 0x15a41364} },
+/**/ {{0x3c728a9c, 0x617c316a} },
+/**/ {{0x3fabeda3, 0x230c44b8} },
+/**/ {{0x3c41fa15, 0x50d9e9da} },
+/**/ {{0x3fb01cf9, 0xe8c87fc3} },
+/**/ {{0x3c410990, 0xa175df34} },
+/**/ {{0xbfb1be51, 0x619b963c} },
+/**/ {{0x3f9c20b5, 0xe7da421c} },
+/**/ {{0x3f848027, 0x637b86b0} },
+/**/ {{0xbf965655, 0xfc436ff1} },
+/**/ {{0x3f8b54de, 0xe6cd859f} } },
+/**/ {{{0x3fe76000, 0x00000000} },
+/**/ {{0x3fe43032, 0x8e4b26d6} },
+/**/ {{0xbc813159, 0x1070b99f} },
+/**/ {{0x3fe4ddbb, 0xbde829f5} },
+/**/ {{0xbc735ff2, 0xb6d17615} },
+/**/ {{0xbfd3e0b0, 0xf941711a} },
+/**/ {{0x3c7d3454, 0xe9027227} },
+/**/ {{0x3fac6d29, 0x2deef5c2} },
+/**/ {{0x3c476533, 0x0ba13bb6} },
+/**/ {{0x3faf8958, 0x496c1e5e} },
+/**/ {{0x3c49ebf2, 0xe1abdf2f} },
+/**/ {{0xbfb193eb, 0xb762a82c} },
+/**/ {{0x3f9c6609, 0x7c2df93f} },
+/**/ {{0x3f831e99, 0xdff7724a} },
+/**/ {{0xbf95db5c, 0xcea82a5a} },
+/**/ {{0x3f8b51bc, 0xc6ff27bb} } },
+/**/ {{{0x3fe78000, 0x00000000} },
+/**/ {{0x3fe44506, 0x5b795b56} },
+/**/ {{0xbc7f76d0, 0x163f79c8} },
+/**/ {{0x3fe4c9e0, 0x693e0015} },
+/**/ {{0xbc7b0fcb, 0x60fff59b} },
+/**/ {{0xbfd3d5f0, 0x8ea521a8} },
+/**/ {{0x3c561573, 0xb5bcc402} },
+/**/ {{0x3face9f0, 0x1d4b9b62} },
+/**/ {{0x3c481226, 0xf2c93cfb} },
+/**/ {{0x3faeda66, 0xb5db8847} },
+/**/ {{0xbc44ec99, 0x3a386670} },
+/**/ {{0xbfb16921, 0xa92559e3} },
+/**/ {{0x3f9ca695, 0x13b2a17d} },
+/**/ {{0x3f81c4bb, 0x355982b3} },
+/**/ {{0xbf95607f, 0x65bec936} },
+/**/ {{0x3f8b4892, 0x4e349f67} } },
+/**/ {{{0x3fe7a000, 0x00000000} },
+/**/ {{0x3fe459c6, 0x52badc7f} },
+/**/ {{0x3c819969, 0x8e8e135c} },
+/**/ {{0x3fe4b60f, 0xec381dcb} },
+/**/ {{0xbc6b9874, 0x4724e4f2} },
+/**/ {{0xbfd3cb01, 0xdc390960} },
+/**/ {{0xbc7243b1, 0x7ba1320c} },
+/**/ {{0x3fad63fe, 0xa09cca72} },
+/**/ {{0x3c48308c, 0xe5ab8d04} },
+/**/ {{0x3fae2d22, 0xdf2eb652} },
+/**/ {{0xbc4988a3, 0x4eb29ad3} },
+/**/ {{0xbfb13dfa, 0x4eb5cb96} },
+/**/ {{0x3f9ce273, 0x8e5b2657} },
+/**/ {{0x3f807288, 0xd132be74} },
+/**/ {{0xbf94e5d8, 0x55a31e9e} },
+/**/ {{0x3f8b399f, 0xfba00cb2} } },
+/**/ {{{0x3fe7c000, 0x00000000} },
+/**/ {{0x3fe46e72, 0x7efe4716} },
+/**/ {{0xbc639b9b, 0x1b844cc9} },
+/**/ {{0x3fe4a24a, 0x749c2a47} },
+/**/ {{0xbc8f9d05, 0x82d8a2e5} },
+/**/ {{0xbfd3bfe5, 0xe5e27a03} },
+/**/ {{0xbc5047da, 0xb30f6d58} },
+/**/ {{0x3faddb5b, 0x75f185ec} },
+/**/ {{0x3c43b680, 0x23d5084a} },
+/**/ {{0x3fad8190, 0x479061d2} },
+/**/ {{0xbbf4565c, 0x602d3547} },
+/**/ {{0xbfb1127c, 0x979e619e} },
+/**/ {{0x3f9d19bf, 0xc03c4720} },
+/**/ {{0x3f7e4ffd, 0x01b2b45f} },
+/**/ {{0xbf946b81, 0x1245b0bb} },
+/**/ {{0x3f8b2525, 0x60fec8ec} } },
+/**/ {{{0x3fe7e000, 0x00000000} },
+/**/ {{0x3fe4830a, 0xeb5f7bfe} },
+/**/ {{0xbc5a2656, 0x66764a73} },
+/**/ {{0x3fe48e90, 0x2f2d2be4} },
+/**/ {{0x3c810a8e, 0x969bba3b} },
+/**/ {{0xbfd3b49d, 0xacfcef4d} },
+/**/ {{0xbc6a4f98, 0xb7a61548} },
+/**/ {{0x3fae500d, 0x68d7d101} },
+/**/ {{0xbc305c3e, 0x04860c21} },
+/**/ {{0x3facd7b2, 0x2c98ea9c} },
+/**/ {{0x3c48692b, 0xd46adca0} },
+/**/ {{0xbfb0e6af, 0x4b37c6a5} },
+/**/ {{0x3f9d4c94, 0x6bfb2662} },
+/**/ {{0x3f7bca2d, 0x0692cc75} },
+/**/ {{0xbf93f191, 0xf3b69312} },
+/**/ {{0x3f8b0b61, 0x1552b8ee} } },
+/**/ {{{0x3fe80000, 0x00000000} },
+/**/ {{0x3fe4978f, 0xa3269ee1} },
+/**/ {{0x3c72419a, 0x87f2a458} },
+/**/ {{0x3fe47ae1, 0x47ae147b} },
+/**/ {{0xbc6eb851, 0xeb851eb8} },
+/**/ {{0xbfd3a92a, 0x30553261} },
+/**/ {{0xbc7f06f6, 0x94467382} },
+/**/ {{0x3faec21b, 0x514d88d8} },
+/**/ {{0x3c3cd061, 0xf45873a6} },
+/**/ {{0x3fac2f8b, 0x88dfb80c} },
+/**/ {{0xbc14fcbc, 0x53add20b} },
+/**/ {{0xbfb0ba99, 0x08c71945} },
+/**/ {{0x3f9d7b0c, 0x3d79f13f} },
+/**/ {{0x3f795393, 0x357dfc67} },
+/**/ {{0xbf937822, 0x3aa97829} },
+/**/ {{0x3f8aec90, 0xa8b90db0} } },
+/**/ {{{0x3fe82000, 0x00000000} },
+/**/ {{0x3fe4ac00, 0xb1c71762} },
+/**/ {{0x3c8b20e7, 0x2382b900} },
+/**/ {{0x3fe4673d, 0xe8e45252} },
+/**/ {{0x3c57d208, 0x67458f9c} },
+/**/ {{0xbfd39d8c, 0x6c24e1b3} },
+/**/ {{0xbc7830c5, 0x973c6d15} },
+/**/ {{0x3faf318c, 0x12b78147} },
+/**/ {{0xbc4fa440, 0xd318184c} },
+/**/ {{0x3fab891f, 0x158b44e7} },
+/**/ {{0x3c4d5f9f, 0x45d7f1f3} },
+/**/ {{0xbfb08e40, 0x47a3e8ba} },
+/**/ {{0x3f9da541, 0xc4c1a21a} },
+/**/ {{0x3f76ec1e, 0x3c0d1d71} },
+/**/ {{0xbf92ff48, 0x152e0bfc} },
+/**/ {{0x3f8ac8f0, 0x9955298f} } },
+/**/ {{{0x3fe84000, 0x00000000} },
+/**/ {{0x3fe4c05e, 0x22de94e5} },
+/**/ {{0xbc8c0ac1, 0xf09f2edf} },
+/**/ {{0x3fe453a6, 0x3c9a6560} },
+/**/ {{0x3c77a95f, 0x828bba02} },
+/**/ {{0xbfd391c5, 0x5a0e5b1c} },
+/**/ {{0x3c7d553d, 0xcd3f76d2} },
+/**/ {{0x3faf9e66, 0x9adede86} },
+/**/ {{0xbc225e54, 0xd6d2bac0} },
+/**/ {{0x3faae46f, 0x4bdf89d7} },
+/**/ {{0x3c39c98c, 0x2b25b8d9} },
+/**/ {{0xbfb061ab, 0x5765a5c1} },
+/**/ {{0x3f9dcb4f, 0x7127d649} },
+/**/ {{0x3f7493ba, 0x13002646} },
+/**/ {{0xbf928718, 0xa397d1a6} },
+/**/ {{0x3f8aa0bc, 0x494648b5} } },
+/**/ {{{0x3fe86000, 0x00000000} },
+/**/ {{0x3fe4d4a8, 0x023414e8} },
+/**/ {{0x3c6e3a89, 0x1daa88b0} },
+/**/ {{0x3fe4401a, 0x6ba2786e} },
+/**/ {{0xbc4b8213, 0xe3b5f317} },
+/**/ {{0xbfd385d5, 0xf11905c0} },
+/**/ {{0xbc72a1e9, 0xa2f42dd1} },
+/**/ {{0x3fb00458, 0xf07a526f} },
+/**/ {{0xbc14f965, 0xac5fd817} },
+/**/ {{0x3faa417e, 0x66ca7da2} },
+/**/ {{0x3c4b1e1a, 0xa050b433} },
+/**/ {{0xbfb034e0, 0x60182e4f} },
+/**/ {{0x3f9ded4f, 0x8cafa41b} },
+/**/ {{0x3f724a50, 0x1fa4f037} },
+/**/ {{0xbf920fa7, 0xfd90e915} },
+/**/ {{0x3f8a742d, 0xf59e7acf} } },
+/**/ {{{0x3fe88000, 0x00000000} },
+/**/ {{0x3fe4e8de, 0x5bb6ec04} },
+/**/ {{0x3c84a33d, 0xbeb3796c} },
+/**/ {{0x3fe42c9a, 0x9dd8fdc1} },
+/**/ {{0x3c5192da, 0xaf80050b} },
+/**/ {{0xbfd379bf, 0x25adf97f} },
+/**/ {{0xbc774019, 0x20cd3651} },
+/**/ {{0x3fb0383a, 0x724dbb01} },
+/**/ {{0x3c5c4e67, 0xeb93e538} },
+/**/ {{0x3fa9a04e, 0x646e65df} },
+/**/ {{0x3c21a7cb, 0x894a6b77} },
+/**/ {{0xbfb007e5, 0x62771c79} },
+/**/ {{0x3f9e0b5c, 0x37a45544} },
+/**/ {{0x3f700fc7, 0x54993092} },
+/**/ {{0xbf919909, 0x37534c25} },
+/**/ {{0x3f8a437e, 0xae51732a} } },
+/**/ {{{0x3fe8a000, 0x00000000} },
+/**/ {{0x3fe4fd01, 0x3b7dd17e} },
+/**/ {{0x3c7d513f, 0x3e7c24b5} },
+/**/ {{0x3fe41926, 0xfa274ef1} },
+/**/ {{0x3c8ad830, 0x4d72ecb3} },
+/**/ {{0xbfd36d81, 0xe995018a} },
+/**/ {{0x3c7e7ec5, 0x6fd6094d} },
+/**/ {{0x3fb06adb, 0x567bb975} },
+/**/ {{0x3c5212c1, 0xf0d7364f} },
+/**/ {{0x3fa900e1, 0x07a9b624} },
+/**/ {{0xbc4e5b5b, 0xc16bcc85} },
+/**/ {{0xbfafb580, 0x705f052b} },
+/**/ {{0x3f9e258f, 0x646ce12e} },
+/**/ {{0x3f6bc808, 0xa3c63841} },
+/**/ {{0xbf91234e, 0x67043d41} },
+/**/ {{0x3f8a0ee6, 0x4f11b221} } },
+/**/ {{{0x3fe8c000, 0x00000000} },
+/**/ {{0x3fe51110, 0xadc5ed81} },
+/**/ {{0x3c723dcd, 0x6832a63e} },
+/**/ {{0x3fe405bf, 0xa6864f90} },
+/**/ {{0xbc7419c5, 0x662cd5df} },
+/**/ {{0xbfd3611f, 0x2bf1f7e4} },
+/**/ {{0xbc6e94dd, 0x65483b78} },
+/**/ {{0x3fb09c3f, 0x23e21be9} },
+/**/ {{0x3c22db63, 0xcaca858d} },
+/**/ {{0x3fa86337, 0xd99c3f1d} },
+/**/ {{0x3c034382, 0xdc0a6dfc} },
+/**/ {{0xbfaf5aed, 0x284f8093} },
+/**/ {{0x3f9e3c02, 0xd396fb43} },
+/**/ {{0x3f678dd3, 0x08b96150} },
+/**/ {{0xbf90ae88, 0xaa2dcc3a} },
+/**/ {{0x3f89d69b, 0x79128ee7} } },
+/**/ {{{0x3fe8e000, 0x00000000} },
+/**/ {{0x3fe5250c, 0xbef1e9fb} },
+/**/ {{0xbc5539b7, 0xa3228870} },
+/**/ {{0x3fe3f264, 0xc8011245} },
+/**/ {{0xbc6641f1, 0x44cc720b} },
+/**/ {{0xbfd35497, 0xd942778a} },
+/**/ {{0x3c750a5a, 0x9bd7dbd6} },
+/**/ {{0x3fb0cc69, 0x6438739e} },
+/**/ {{0x3bf5d933, 0x435f798d} },
+/**/ {{0x3fa7c754, 0x2b29722f} },
+/**/ {{0xbbe736fe, 0x5b3af27b} },
+/**/ {{0xbfaf001c, 0x059a3c24} },
+/**/ {{0x3f9e4ed0, 0x101882b0} },
+/**/ {{0x3f6370ae, 0x88dc4269} },
+/**/ {{0xbf903ac8, 0x2b5280b6} },
+/**/ {{0x3f899ad3, 0x8da5b2ad} } },
+/**/ {{{0x3fe90000, 0x00000000} },
+/**/ {{0x3fe538f5, 0x7b89061f} },
+/**/ {{0xbc81bb74, 0xabda520c} },
+/**/ {{0x3fe3df16, 0x82b78014} },
+/**/ {{0xbc7074be, 0xa43ff610} },
+/**/ {{0xbfd347ec, 0xdb5be2e4} },
+/**/ {{0x3c7848c8, 0x8a0e9303} },
+/**/ {{0x3fb0fb5d, 0xa3a11be4} },
+/**/ {{0x3c3d68f2, 0x09dd0d69} },
+/**/ {{0x3fa72d37, 0x16778170} },
+/**/ {{0xbc4ea85d, 0x2200d1d4} },
+/**/ {{0xbfaea517, 0xd4cdbd49} },
+/**/ {{0x3f9e5e10, 0x6bc61b6f} },
+/**/ {{0x3f5ee0af, 0xd0517524} },
+/**/ {{0xbf8f9038, 0x4f2ec799} },
+/**/ {{0x3f895bc2, 0xa9aaa5bb} } },
+/**/ {{{0x3fe92000, 0x00000000} },
+/**/ {{0x3fe54cca, 0xf0362c8f} },
+/**/ {{0x3c88a324, 0x7f8f43c1} },
+/**/ {{0x3fe3cbd4, 0xf9e1016e} },
+/**/ {{0xbc88dea6, 0x431b67e7} },
+/**/ {{0xbfd33b1f, 0x1969bc63} },
+/**/ {{0x3c6ef16e, 0x5f3d8fd8} },
+/**/ {{0x3fb1291f, 0x703d3bf6} },
+/**/ {{0xbc566e82, 0xb04e0672} },
+/**/ {{0x3fa694e1, 0x806b26f2} },
+/**/ {{0x3c302819, 0xafcee740} },
+/**/ {{0xbfae49eb, 0x16dcee96} },
+/**/ {{0x3f9e69dc, 0xfbfdb35f} },
+/**/ {{0x3f571910, 0x70c48510} },
+/**/ {{0xbf8ead25, 0xe90198c8} },
+/**/ {{0x3f89199b, 0xa1c723cb} } },
+/**/ {{{0x3fe94000, 0x00000000} },
+/**/ {{0x3fe5608d, 0x29c70c34} },
+/**/ {{0x3c89939c, 0xf0de8088} },
+/**/ {{0x3fe3b8a0, 0x4fcf28c3} },
+/**/ {{0xbc469c2b, 0xcb80013c} },
+/**/ {{0xbfd32e2f, 0x77ec4ef9} },
+/**/ {{0x3c7f9d06, 0xc61f7341} },
+/**/ {{0x3fb155b2, 0x59c3bcdf} },
+/**/ {{0xbc2d692e, 0x3583c01b} },
+/**/ {{0x3fa5fe54, 0x1a1fe15d} },
+/**/ {{0x3c430dc5, 0x5d9bad81} },
+/**/ {{0xbfadeea0, 0x01d944a8} },
+/**/ {{0x3f9e724e, 0x9683b244} },
+/**/ {{0x3f4f13d4, 0x491379ef} },
+/**/ {{0xbf8dcc74, 0x0b7cf74b} },
+/**/ {{0x3f88d48f, 0xff5f0625} } },
+/**/ {{{0x3fe96000, 0x00000000} },
+/**/ {{0x3fe5743c, 0x352b33ba} },
+/**/ {{0xbc8ea00d, 0x34c87ea6} },
+/**/ {{0x3fe3a578, 0xa5f05e48} },
+/**/ {{0xbc8ba1ec, 0x00e4639b} },
+/**/ {{0xbfd3211e, 0xd8b7a43f} },
+/**/ {{0xbc6d4b54, 0x676e23a8} },
+/**/ {{0x3fb18119, 0xf11b2c2d} },
+/**/ {{0x3c34855b, 0x3a3bf5fa} },
+/**/ {{0x3fa5698f, 0x625c76bf} },
+/**/ {{0xbc2f758a, 0xbedb0264} },
+/**/ {{0xbfad9340, 0x81b60103} },
+/**/ {{0x3f9e777d, 0xce91900f} },
+/**/ {{0x3f406543, 0x34fddb2f} },
+/**/ {{0xbf8cee3b, 0xe6077f81} },
+/**/ {{0x3f888ccf, 0xfe42afde} } },
+/**/ {{{0x3fe98000, 0x00000000} },
+/**/ {{0x3fe587d8, 0x1f732fbb} },
+/**/ {{0xbc75e5c9, 0xd8c5a950} },
+/**/ {{0x3fe3925e, 0x1cd28c98} },
+/**/ {{0x3c8c8443, 0x1ffec6da} },
+/**/ {{0xbfd313ee, 0x1af2c622} },
+/**/ {{0x3c0a0e9b, 0xbc3f7ac8} },
+/**/ {{0x3fb1ab59, 0xc7f683c3} },
+/**/ {{0x3c5eaf17, 0x12c04500} },
+/**/ {{0x3fa4d693, 0xa7039179} },
+/**/ {{0xbc4c8d74, 0xa4ce58a2} },
+/**/ {{0xbfad37d6, 0x391400b3} },
+/**/ {{0x3f9e7982, 0xf2148a36} },
+/**/ {{0x3f112956, 0xb6df63ca} },
+/**/ {{0xbf8c1294, 0xfbd0f7ee} },
+/**/ {{0x3f88428a, 0x8b0b0a0e} } },
+/**/ {{{0x3fe9a000, 0x00000000} },
+/**/ {{0x3fe59b60, 0xf5cfab9e} },
+/**/ {{0xbc81b04c, 0x41026bc5} },
+/**/ {{0x3fe37f50, 0xd425cdfc} },
+/**/ {{0x3c865633, 0x518aef64} },
+/**/ {{0xbfd3069e, 0x1b1749db} },
+/**/ {{0xbc311c20, 0xa119d9bc} },
+/**/ {{0x3fb1d475, 0x7074cee3} },
+/**/ {{0xbc5102e0, 0x4ff61e2c} },
+/**/ {{0x3fa44561, 0x06804def} },
+/**/ {{0x3c4e829f, 0xc3865804} },
+/**/ {{0xbfacdc6a, 0x82158836} },
+/**/ {{0x3f9e7876, 0x071b2eec} },
+/**/ {{0xbf375b85, 0xf17c4beb} },
+/**/ {{0xbf8b3995, 0x2fa03971} },
+/**/ {{0x3f87f5ed, 0x421a433b} } },
+/**/ {{{0x3fe9c000, 0x00000000} },
+/**/ {{0x3fe5aed6, 0xc5909517} },
+/**/ {{0x3c87312f, 0x714a9436} },
+/**/ {{0x3fe36c50, 0xeabf19f5} },
+/**/ {{0x3c70d1dc, 0x52485cca} },
+/**/ {{0xbfd2f92f, 0xb2f12226} },
+/**/ {{0x3c5400ba, 0x3e5d3d61} },
+/**/ {{0x3fb1fc70, 0x7cc3a41b} },
+/**/ {{0x3c4b58e7, 0x8819ff5b} },
+/**/ {{0x3fa3b5f7, 0x712e9269} },
+/**/ {{0xbc4e436a, 0x7879d8ab} },
+/**/ {{0xbfac8106, 0x6f398221} },
+/**/ {{0x3f9e746e, 0xc97073c7} },
+/**/ {{0xbf4914de, 0xecfc2d6a} },
+/**/ {{0xbf8a6350, 0xcfa74bd5} },
+/**/ {{0x3f87a724, 0x6f38ad9e} } },
+/**/ {{{0x3fe9e000, 0x00000000} },
+/**/ {{0x3fe5c239, 0x9c244261} },
+/**/ {{0xbc831bd4, 0xe9e56b35} },
+/**/ {{0x3fe3595e, 0x7e9af2dc} },
+/**/ {{0x3c81ef2d, 0x9dc90e6a} },
+/**/ {{0xbfd2eba3, 0xb99eb689} },
+/**/ {{0xbc7b12ef, 0x6a2f2701} },
+/**/ {{0x3fb2234e, 0x7ec46b9b} },
+/**/ {{0x3c59f30c, 0x8d415d66} },
+/**/ {{0x3fa32856, 0xaabf0d26} },
+/**/ {{0xbc122571, 0x3f33d7ea} },
+/**/ {{0xbfac25b2, 0xcc3da9ce} },
+/**/ {{0x3f9e6d84, 0xa8630cad} },
+/**/ {{0xbf5308c5, 0xbeba707a} },
+/**/ {{0xbf898fda, 0xa1585fd1} },
+/**/ {{0x3f87565b, 0x0dc54356} } },
+/**/ {{{0x3fea0000, 0x00000000} },
+/**/ {{0x3fe5d589, 0x87169b18} },
+/**/ {{0x3c60028e, 0x4bc5e7ca} },
+/**/ {{0x3fe34679, 0xace01346} },
+/**/ {{0x3c8e6b38, 0x04d19e6b} },
+/**/ {{0xbfd2ddfb, 0x03913da2} },
+/**/ {{0xbc763ec8, 0x9a19adbd} },
+/**/ {{0x3fb24913, 0x07b46905} },
+/**/ {{0xbc4e7be8, 0xd6f0307f} },
+/**/ {{0x3fa29c7e, 0x4b96b773} },
+/**/ {{0xbc24c2cd, 0x9182d783} },
+/**/ {{0xbfabca78, 0x1f071f44} },
+/**/ {{0x3f9e63ce, 0xc4b7b7c4} },
+/**/ {{0xbf59529a, 0x125f35b0} },
+/**/ {{0xbf88bf43, 0xed369b2b} },
+/**/ {{0x3f8703ba, 0xc97185cd} } },
+/**/ {{{0x3fea2000, 0x00000000} },
+/**/ {{0x3fe5e8c6, 0x941043d0} },
+/**/ {{0xbc70bf75, 0xbe451e70} },
+/**/ {{0x3fe333a2, 0x91e21aec} },
+/**/ {{0x3c7ae035, 0x7acfc84f} },
+/**/ {{0xbfd2d036, 0x628d5861} },
+/**/ {{0x3c67c5fb, 0xe463d006} },
+/**/ {{0x3fb26dc1, 0xa7d77fb2} },
+/**/ {{0xbc5432bd, 0xc47ba861} },
+/**/ {{0x3fa2126d, 0xc229bece} },
+/**/ {{0xbc4be1bf, 0x1da8ed9e} },
+/**/ {{0xbfab6f5e, 0xa890e568} },
+/**/ {{0x3f9e5763, 0xeec5339a} },
+/**/ {{0xbf5f68a6, 0x5274aa52} },
+/**/ {{0xbf87f19c, 0x8a9df558} },
+/**/ {{0x3f86af6b, 0xff809dc5} } },
+/**/ {{{0x3fea4000, 0x00000000} },
+/**/ {{0x3fe5fbf0, 0xd0d5cc4a} },
+/**/ {{0xbc5b4cfd, 0x000b7158} },
+/**/ {{0x3fe320d9, 0x49243ad8} },
+/**/ {{0xbc8ce5e0, 0x433f7be5} },
+/**/ {{0xbfd2c256, 0xa5abec2f} },
+/**/ {{0xbc68785b, 0x04494dc1} },
+/**/ {{0x3fb2915d, 0xee25a81c} },
+/**/ {{0x3c3e7045, 0x68b37e8b} },
+/**/ {{0x3fa18a24, 0x5451b7d2} },
+/**/ {{0xbc3b2d29, 0x79d21dd5} },
+/**/ {{0xbfab146e, 0x65dfcf66} },
+/**/ {{0x3f9e485a, 0xa4b895b9} },
+/**/ {{0xbf62a5d4, 0x14770b65} },
+/**/ {{0xbf8726f2, 0xeb7dab0f} },
+/**/ {{0x3f865995, 0xc081d40d} } },
+/**/ {{{0x3fea6000, 0x00000000} },
+/**/ {{0x3fe60f08, 0x4b46e05f} },
+/**/ {{0xbc8dbb86, 0x99945193} },
+/**/ {{0x3fe30e1d, 0xed5be099} },
+/**/ {{0x3c6c6e78, 0x373fae45} },
+/**/ {{0xbfd2b45c, 0x995b3a02} },
+/**/ {{0x3c7cb97b, 0xe7cea2ad} },
+/**/ {{0x3fb2b3eb, 0x67fb0cde} },
+/**/ {{0xbc402927, 0x4920d50b} },
+/**/ {{0x3fa103a1, 0x209f00e4} },
+/**/ {{0xbc36fb57, 0xecac275a} },
+/**/ {{0xbfaab9af, 0x10fb6629} },
+/**/ {{0x3f9e36c9, 0x1100b94a} },
+/**/ {{0xbf657e30, 0x58620e6c} },
+/**/ {{0xbf865f54, 0x2801158e} },
+/**/ {{0x3f86025d, 0xd27eaf07} } },
+/**/ {{{0x3fea8000, 0x00000000} },
+/**/ {{0x3fe6220d, 0x115d7b8e} },
+/**/ {{0xbc62b785, 0x350ee8c1} },
+/**/ {{0x3fe2fb70, 0x98736048} },
+/**/ {{0x3c87a751, 0x4df7c4fa} },
+/**/ {{0xbfd2a649, 0x07603054} },
+/**/ {{0x3c7c41eb, 0xf564247c} },
+/**/ {{0x3fb2d56d, 0xa0cac592} },
+/**/ {{0x3c333138, 0x4e757ddf} },
+/**/ {{0x3fa07ee3, 0x1fa53ce5} },
+/**/ {{0xbc41bd0c, 0x28113a76} },
+/**/ {{0xbfaa5f28, 0x21eb5271} },
+/**/ {{0x3f9e22c5, 0x08df7f4f} },
+/**/ {{0xbf683dca, 0x107b528f} },
+/**/ {{0xbf859acc, 0x0a22f693} },
+/**/ {{0x3f85a9e8, 0xb39536ba} } },
+/**/ {{{0x3feaa000, 0x00000000} },
+/**/ {{0x3fe634ff, 0x312d1f3b} },
+/**/ {{0x3c89d2f3, 0x15f2b598} },
+/**/ {{0x3fe2e8d1, 0x638c9d15} },
+/**/ {{0x3c831ae5, 0xfe1a437d} },
+/**/ {{0xbfd2981c, 0xb6d7f622} },
+/**/ {{0xbc53da87, 0x86e9fe4d} },
+/**/ {{0x3fb2f5e8, 0x21d425b2} },
+/**/ {{0xbc186482, 0xae2616cb} },
+/**/ {{0x3f9ff7d2, 0x4a85a0e4} },
+/**/ {{0xbc294288, 0xe2d9205b} },
+/**/ {{0xbfaa04e0, 0xcfb8dc09} },
+/**/ {{0x3f9e0c64, 0x0b1f9c73} },
+/**/ {{0xbf6ae504, 0xbd3845d8} },
+/**/ {{0xbf84d965, 0x19278cae} },
+/**/ {{0x3f855059, 0x9cf7183b} } },
+/**/ {{{0x3feac000, 0x00000000} },
+/**/ {{0x3fe647de, 0xb8e20b90} },
+/**/ {{0xbc5eca04, 0x023a51cf} },
+/**/ {{0x3fe2d640, 0x6703b033} },
+/**/ {{0x3c870ae6, 0x38039b02} },
+/**/ {{0xbfd289d8, 0x6c39acf5} },
+/**/ {{0xbc71f038, 0x0238a7ee} },
+/**/ {{0x3fb3155e, 0x71da955f} },
+/**/ {{0xbc5faa02, 0xd41f84df} },
+/**/ {{0x3f9ef563, 0xc3c69caa} },
+/**/ {{0x3c331d29, 0x75403dbd} },
+/**/ {{0xbfa9aae0, 0x1174124f} },
+/**/ {{0x3f9df3bb, 0x3eedb30b} },
+/**/ {{0xbf6d7445, 0x1c632765} },
+/**/ {{0xbf841b28, 0xa4fa03e7} },
+/**/ {{0x3f84f5d2, 0x8646990d} } },
+/**/ {{{0x3feae000, 0x00000000} },
+/**/ {{0x3fe65aab, 0xb6c07b03} },
+/**/ {{0xbc67939b, 0x3af32729} },
+/**/ {{0x3fe2c3bd, 0xba718de8} },
+/**/ {{0xbc82d2fc, 0xc4990a2b} },
+/**/ {{0xbfd27b7c, 0xe9586818} },
+/**/ {{0x3c780d5e, 0x880839ca} },
+/**/ {{0x3fb333d4, 0x14dfe9e3} },
+/**/ {{0x3c536469, 0xbce74cae} },
+/**/ {{0x3f9df677, 0xc77983b8} },
+/**/ {{0x3c373272, 0xb42f53aa} },
+/**/ {{0xbfa9512c, 0x9f3c360e} },
+/**/ {{0x3f9dd8df, 0x72d37b24} },
+/**/ {{0xbf6febf1, 0x02e417f5} },
+/**/ {{0xbf83601e, 0xd16a1579} },
+/**/ {{0x3f849a74, 0x294a83e4} } },
+/**/ {{{0x3feb0000, 0x00000000} },
+/**/ {{0x3fe66d66, 0x3923e087} },
+/**/ {{0xbc76ea6f, 0xebe8bbba} },
+/**/ {{0x3fe2b149, 0x74aea886} },
+/**/ {{0x3c868ffd, 0xa9d6d16a} },
+/**/ {{0xbfd26d0a, 0xed65571e} },
+/**/ {{0x3c6cf972, 0x476fb5f2} },
+/**/ {{0x3fb3514c, 0x8be1339f} },
+/**/ {{0x3c5c8c0f, 0x3f722216} },
+/**/ {{0x3f9cfb0b, 0x300f8f9b} },
+/**/ {{0xbc0edd81, 0x38d1c932} },
+/**/ {{0xbfa8f7cc, 0xf34b004f} },
+/**/ {{0x3f9dbbe5, 0x1bd3bde0} },
+/**/ {{0xbf712637, 0x9bf7dceb} },
+/**/ {{0xbf82a84e, 0xa146e5b2} },
+/**/ {{0x3f843e5e, 0x05f2718e} } },
+/**/ {{{0x3feb2000, 0x00000000} },
+/**/ {{0x3fe6800e, 0x4e7e2858} },
+/**/ {{0xbc58ea6a, 0x1b3e90f0} },
+/**/ {{0x3fe29ee3, 0xabd5912c} },
+/**/ {{0xbc61b3cd, 0xb17c28e3} },
+/**/ {{0xbfd25e83, 0x34f221eb} },
+/**/ {{0xbc74c483, 0xfa300585} },
+/**/ {{0x3fb36dcb, 0x5495f6e3} },
+/**/ {{0x3c59b55b, 0x311973fe} },
+/**/ {{0x3f9c031a, 0x9864d139} },
+/**/ {{0x3c28fdf3, 0xbd00e171} },
+/**/ {{0xbfa89ec7, 0x4b026585} },
+/**/ {{0x3f9d9ce0, 0x54a5ed3d} },
+/**/ {{0xbf724b13, 0xa8cb6dfc} },
+/**/ {{0xbf81f3be, 0x015469a9} },
+/**/ {{0x3f83e1ae, 0x66a50a89} } },
+/**/ {{{0x3feb4000, 0x00000000} },
+/**/ {{0x3fe692a4, 0x0556fb6a} },
+/**/ {{0x3c8d94b9, 0x5a8ea2cc} },
+/**/ {{0x3fe28c8c, 0x75459603} },
+/**/ {{0x3c8b1c3b, 0x2945fc08} },
+/**/ {{0xbfd24fe6, 0x79f37468} },
+/**/ {{0xbc4e3751, 0x0ec1ef94} },
+/**/ {{0x3fb38953, 0xe931c53b} },
+/**/ {{0xbc3b108d, 0x16d80688} },
+/**/ {{0x3f9b0ea2, 0x5e1b50b5} },
+/**/ {{0x3c0074c0, 0x63fd1067} },
+/**/ {{0xbfa84621, 0xa7fc7800} },
+/**/ {{0x3f9d7be4, 0xdd10256e} },
+/**/ {{0xbf7364c0, 0xc9592c5e} },
+/**/ {{0xbf814271, 0xd318d707} },
+/**/ {{0x3f838482, 0x64d217b8} } },
+/**/ {{{0x3feb6000, 0x00000000} },
+/**/ {{0x3fe6a527, 0x6c4b0576} },
+/**/ {{0xbc8f6b65, 0x9c46a69e} },
+/**/ {{0x3fe27a43, 0xe5a55de9} },
+/**/ {{0x3c66846e, 0xedc25d49} },
+/**/ {{0xbfd24135, 0x73c3b821} },
+/**/ {{0xbc79202a, 0x56ab5808} },
+/**/ {{0x3fb3a3e9, 0xc0282c84} },
+/**/ {{0x3c4057ca, 0x03d25dab} },
+/**/ {{0x3f9a1d9e, 0xa3eb854d} },
+/**/ {{0xbc3775ed, 0xf03e2fb1} },
+/**/ {{0xbfa7ede1, 0xd11d1043} },
+/**/ {{0x3f9d5906, 0x195e6961} },
+/**/ {{0xbf747373, 0x65130256} },
+/**/ {{0xbf80946d, 0xf77fd664} },
+/**/ {{0x3f8326f5, 0xedc272c2} } },
+/**/ {{{0x3feb8000, 0x00000000} },
+/**/ {{0x3fe6b798, 0x920b3d99} },
+/**/ {{0xbc8a8038, 0x6188c50e} },
+/**/ {{0x3fe2680a, 0x10e5813e} },
+/**/ {{0xbc8f5497, 0x2242a6bc} },
+/**/ {{0xbfd23270, 0xd725fa1c} },
+/**/ {{0x3c757282, 0x5c781b14} },
+/**/ {{0x3fb3bd90, 0x4bf2f124} },
+/**/ {{0x3c31ae9c, 0x6a14ed74} },
+/**/ {{0x3f99300b, 0x53ea1533} },
+/**/ {{0x3c2a8d88, 0x68f98d7e} },
+/**/ {{0xbfa7960d, 0x53a4e537} },
+/**/ {{0x3f9d3457, 0x11f5f086} },
+/**/ {{0xbf757760, 0x19baa1da} },
+/**/ {{0xbf7fd36a, 0xb2a2ca7e} },
+/**/ {{0x3f82c923, 0xc7a02081} } },
+/**/ {{{0x3feba000, 0x00000000} },
+/**/ {{0x3fe6c9f7, 0x855c3198} },
+/**/ {{0x3c7c09de, 0x29bd280d} },
+/**/ {{0x3fe255df, 0x0a431fbd} },
+/**/ {{0x3c8d9866, 0xf09a745d} },
+/**/ {{0xbfd22399, 0x5648fb1f} },
+/**/ {{0x3c412100, 0xb4df0b3e} },
+/**/ {{0x3fb3d64a, 0xfada8899} },
+/**/ {{0x3c3dd891, 0x659c4346} },
+/**/ {{0x3f9845e4, 0x21c2d0a1} },
+/**/ {{0x3c28c6b1, 0xf397827c} },
+/**/ {{0xbfa73ea9, 0x8445c1cc} },
+/**/ {{0x3f9d0dea, 0x730360f8} },
+/**/ {{0xbf7670bb, 0xac51ce30} },
+/**/ {{0xbf7e8493, 0xeef50deb} },
+/**/ {{0x3f826b25, 0x96b119a9} } },
+/**/ {{{0x3febc000, 0x00000000} },
+/**/ {{0x3fe6dc44, 0x551553af} },
+/**/ {{0xbc5bf886, 0x3573828e} },
+/**/ {{0x3fe243c2, 0xe44a7335} },
+/**/ {{0xbc667287, 0x65d1ffd7} },
+/**/ {{0xbfd214af, 0xa0ca68d3} },
+/**/ {{0xbc71296c, 0x88820895} },
+/**/ {{0x3fb3ee1d, 0x36c0c9a2} },
+/**/ {{0x3c540bf6, 0x831dfabe} },
+/**/ {{0x3f975f24, 0x8ce8de84} },
+/**/ {{0xbc125368, 0x43eb5853} },
+/**/ {{0xbfa6e7bb, 0x803788f8} },
+/**/ {{0x3f9ce5d2, 0x8c42d5f9} },
+/**/ {{0xbf775fba, 0xfaadb3ab} },
+/**/ {{0xbf7d3c59, 0xde4c28da} },
+/**/ {{0x3f820d13, 0xe2bf7ef5} } },
+/**/ {{{0x3febe000, 0x00000000} },
+/**/ {{0x3fe6ee7f, 0x10204aef} },
+/**/ {{0x3c8692ee, 0xa3066272} },
+/**/ {{0x3fe231b5, 0xb0d95ee5} },
+/**/ {{0x3c7aae7e, 0x1eb505b6} },
+/**/ {{0xbfd205b4, 0x63ba3e08} },
+/**/ {{0x3c71c6d1, 0xb975517d} },
+/**/ {{0x3fb4050a, 0x64edc729} },
+/**/ {{0x3c4960ed, 0x715db809} },
+/**/ {{0x3f967bc7, 0xe2bc143b} },
+/**/ {{0xbc2cbf17, 0xf0823143} },
+/**/ {{0xbfa69148, 0x2e4dbc47} },
+/**/ {{0x3f9cbc21, 0x50e0982e} },
+/**/ {{0xbf784492, 0xedaa432a} },
+/**/ {{0xbf7bfabd, 0x0b4850f3} },
+/**/ {{0x3f81af06, 0x1caa2f2c} } },
+/**/ {{{0x3fec0000, 0x00000000} },
+/**/ {{0x3fe700a7, 0xc5784634} },
+/**/ {{0xbc78c34d, 0x25aadef6} },
+/**/ {{0x3fe21fb7, 0x8121fb78} },
+/**/ {{0x3c621fb7, 0x8121fb78} },
+/**/ {{0xbfd1f6a8, 0x499e4889} },
+/**/ {{0xbc60e934, 0x6d4e0249} },
+/**/ {{0x3fb41b15, 0xe5decb17} },
+/**/ {{0x3c5194f4, 0xab3541e6} },
+/**/ {{0x3f959bc9, 0x40a374b5} },
+/**/ {{0xbc39dc6e, 0x54be0e10} },
+/**/ {{0xbfa63b54, 0x400d3c9a} },
+/**/ {{0x3f9c90e8, 0x57717232} },
+/**/ {{0xbf791f78, 0x6bfa704e} },
+/**/ {{0xbf7abfbc, 0x643da6dd} },
+/**/ {{0x3f815112, 0xa418ed31} } },
+/**/ {{{0x3fec2000, 0x00000000} },
+/**/ {{0x3fe712be, 0x84295198} },
+/**/ {{0x3c85cd90, 0x337d8881} },
+/**/ {{0x3fe20dc8, 0x65ad1f5b} },
+/**/ {{0xbc88102a, 0xd7b50d48} },
+/**/ {{0xbfd1e78b, 0xfa75d2f4} },
+/**/ {{0x3c723734, 0x619624d2} },
+/**/ {{0x3fb43043, 0x1517663e} },
+/**/ {{0xbc4af8a4, 0xe5e1ddf1} },
+/**/ {{0x3f94bf23, 0x961cd605} },
+/**/ {{0xbc26e86e, 0x5ca14507} },
+/**/ {{0xbfa5e5e4, 0x32c1ffd7} },
+/**/ {{0x3f9c6438, 0xda0191cd} },
+/**/ {{0xbf79f0a0, 0x4d921d2b} },
+/**/ {{0xbf798b55, 0x4e35d54e} },
+/**/ {{0x3f80f34e, 0xcd4f7bfd} } },
+/**/ {{{0x3fec4000, 0x00000000} },
+/**/ {{0x3fe724c3, 0x5b4fae7b} },
+/**/ {{0x3c5948b3, 0x2db3499b} },
+/**/ {{0x3fe1fbe8, 0x6e5ce35d} },
+/**/ {{0x3c8101d1, 0x561e27a3} },
+/**/ {{0xbfd1d860, 0x1bbd70f4} },
+/**/ {{0xbc7b4c97, 0xfa32c4d1} },
+/**/ {{0x3fb44495, 0x48f48a77} },
+/**/ {{0xbc2ccfed, 0xb47fdf89} },
+/**/ {{0x3f93e5d1, 0xa6c1af2c} },
+/**/ {{0xbc14af58, 0xc3b5a19b} },
+/**/ {{0xbfa590fc, 0x5094795f} },
+/**/ {{0x3f9c3623, 0xb638ebc2} },
+/**/ {{0xbf7ab83f, 0x4fa66d0e} },
+/**/ {{0xbf785d83, 0xb787e297} },
+/**/ {{0x3f8095ce, 0xe71b4cea} } },
+/**/ {{{0x3fec6000, 0x00000000} },
+/**/ {{0x3fe736b6, 0x5a172dff} },
+/**/ {{0x3c7775fd, 0x06a892d1} },
+/**/ {{0x3fe1ea17, 0xaa6f2377} },
+/**/ {{0xbc8395a8, 0xcb44ec07} },
+/**/ {{0xbfd1c925, 0x5072ec76} },
+/**/ {{0xbc6e11b3, 0xf650d5de} },
+/**/ {{0x3fb4580f, 0xd281a42b} },
+/**/ {{0xbc55bbce, 0xf63226cb} },
+/**/ {{0x3f930fce, 0x0c411254} },
+/**/ {{0x3c3a4412, 0xc9852726} },
+/**/ {{0xbfa53ca0, 0xb19e766e} },
+/**/ {{0x3f9c06b9, 0x6d941dd5} },
+/**/ {{0xbf7b768a, 0x094128b2} },
+/**/ {{0xbf773642, 0x2a047c42} },
+/**/ {{0x3f8038a6, 0x40d7925f} } },
+/**/ {{{0x3fec8000, 0x00000000} },
+/**/ {{0x3fe74897, 0x8fba8e0f} },
+/**/ {{0x3c47b2a6, 0x165884a1} },
+/**/ {{0x3fe1d856, 0x287ffb8a} },
+/**/ {{0xbc658a1f, 0xfee27a9d} },
+/**/ {{0xbfd1b9dc, 0x39195240} },
+/**/ {{0x3c604646, 0x551dc6bf} },
+/**/ {{0x3fb46ab5, 0xfd4fa866} },
+/**/ {{0x3c5f62a7, 0xc2febe43} },
+/**/ {{0x3f923d13, 0x384eda2c} },
+/**/ {{0x3c3b9a7c, 0x1dfd9f34} },
+/**/ {{0xbfa4e8d5, 0x3cff324c} },
+/**/ {{0x3f9bd60a, 0x25b0d0ad} },
+/**/ {{0xbf7c2bb4, 0xe063d1e6} },
+/**/ {{0xbf761589, 0xdcb54dd5} },
+/**/ {{0x3f7fb7ce, 0x61077b85} } },
+/**/ {{{0x3feca000, 0x00000000} },
+/**/ {{0x3fe75a67, 0x0b82d8d8} },
+/**/ {{0x3c8ee4ac, 0x4c729087} },
+/**/ {{0x3fe1c6a3, 0xf68c4011} },
+/**/ {{0xbc8e54e4, 0x32671c29} },
+/**/ {{0xbfd1aa85, 0x73bd1c8f} },
+/**/ {{0x3c7525ad, 0x41d7bd80} },
+/**/ {{0x3fb47c8b, 0x0f4e0cc0} },
+/**/ {{0x3c2efdd1, 0xd854875c} },
+/**/ {{0x3f916d9b, 0x7688134d} },
+/**/ {{0xbc1abef6, 0x42a6f922} },
+/**/ {{0xbfa4959d, 0xa9ee694e} },
+/**/ {{0x3f9ba425, 0xa8aca118} },
+/**/ {{0xbf7cd7f3, 0xffb6fa1f} },
+/**/ {{0xbf74fb52, 0xc52e395a} },
+/**/ {{0x3f7eff46, 0x31d14661} } },
+/**/ {{{0x3fecc000, 0x00000000} },
+/**/ {{0x3fe76c24, 0xdcc6c6c0} },
+/**/ {{0x3c819525, 0x51adc83d} },
+/**/ {{0x3fe1b501, 0x21f3f28c} },
+/**/ {{0xbc45712f, 0x5f1d67b6} },
+/**/ {{0xbfd19b21, 0x9bf87a43} },
+/**/ {{0xbc64520a, 0xb2071e48} },
+/**/ {{0x3fb48d92, 0x48a59e43} },
+/**/ {{0x3c5f8e56, 0x42014b8b} },
+/**/ {{0x3f90a160, 0xee4caccb} },
+/**/ {{0x3c2bd92b, 0x7b6daa67} },
+/**/ {{0xbfa442fd, 0x80ce3489} },
+/**/ {{0x3f9b711b, 0x65959e45} },
+/**/ {{0xbf7d7b7b, 0x4cc2673a} },
+/**/ {{0xbf73e793, 0xa86f8a8e} },
+/**/ {{0x3f7e47d4, 0xdf91602d} } },
+/**/ {{{0x3fece000, 0x00000000} },
+/**/ {{0x3fe77dd1, 0x12ea22c7} },
+/**/ {{0x3c873260, 0x8fc10d3d} },
+/**/ {{0x3fe1a36d, 0xb77cb1a2} },
+/**/ {{0xbc42c20d, 0x6e625be9} },
+/**/ {{0xbfd18bb1, 0x4af7b13c} },
+/**/ {{0xbc68446b, 0xbc063e5a} },
+/**/ {{0x3fb49dce, 0xe3952cbb} },
+/**/ {{0x3c588e60, 0x58cf9123} },
+/**/ {{0x3f8fb0bb, 0x491cfa44} },
+/**/ {{0x3c1534fc, 0x0e3f2a43} },
+/**/ {{0xbfa3f0f8, 0x1c3b7aca} },
+/**/ {{0x3f9b3cfa, 0x70eb708a} },
+/**/ {{0xbf7e167e, 0x5eaa8b7f} },
+/**/ {{0xbf72da42, 0x2b587c04} },
+/**/ {{0x3f7d9199, 0x882fa65b} } },
+/**/ {{{0x3fed0000, 0x00000000} },
+/**/ {{0x3fe78f6b, 0xbd5d315e} },
+/**/ {{0x3c8406a0, 0x89803740} },
+/**/ {{0x3fe191e9, 0xc35424ca} },
+/**/ {{0xbc8fa3c1, 0xf4be863f} },
+/**/ {{0xbfd17c35, 0x177d9a85} },
+/**/ {{0xbc717b81, 0x6a99d546} },
+/**/ {{0x3fb4ad44, 0x144fffae} },
+/**/ {{0x3c3538b3, 0xdccca2a3} },
+/**/ {{0x3f8e2516, 0xfb2b5523} },
+/**/ {{0x3c0f7c11, 0x60181bd9} },
+/**/ {{0xbfa39f90, 0xaa1cc641} },
+/**/ {{0x3f9b07d1, 0x85304289} },
+/**/ {{0xbf7ea930, 0x756fd193} },
+/**/ {{0xbf71d352, 0xe2a9a0de} },
+/**/ {{0x3f7cdcb1, 0x886fc912} } },
+/**/ {{{0x3fed2000, 0x00000000} },
+/**/ {{0x3fe7a0f4, 0xeb9c19a2} },
+/**/ {{0x3c613c67, 0xcd815f57} },
+/**/ {{0x3fe18075, 0x5112636f} },
+/**/ {{0x3c80a172, 0x7a335b20} },
+/**/ {{0xbfd16cad, 0x95e83705} },
+/**/ {{0x3c62a94b, 0x7b21d5e1} },
+/**/ {{0x3fb4bbf5, 0x08de0a7c} },
+/**/ {{0x3c3570d0, 0x057457a0} },
+/**/ {{0x3f8c9fc8, 0x7d750fdf} },
+/**/ {{0x3c2900a7, 0xfe4cff3c} },
+/**/ {{0xbfa34eca, 0x2caf50ea} },
+/**/ {{0x3f9ad1af, 0x03888c77} },
+/**/ {{0xbf7f33c4, 0x71ac3a86} },
+/**/ {{0xbf70d2b9, 0x6296fd58} },
+/**/ {{0x3f7c2938, 0x886d16b8} } },
+/**/ {{{0x3fed4000, 0x00000000} },
+/**/ {{0x3fe7b26c, 0xad2e50fe} },
+/**/ {{0xbc8ce80d, 0xf30411fb} },
+/**/ {{0x3fe16f10, 0x6bbc577a} },
+/**/ {{0xbc7d0db6, 0xbd8abf47} },
+/**/ {{0xbfd15d1b, 0x58355b5f} },
+/**/ {{0xbc5b5457, 0xbcc70038} },
+/**/ {{0x3fb4c9e4, 0xe8fdd51d} },
+/**/ {{0x3c462959, 0x28ac9383} },
+/**/ {{0x3f8b20c3, 0x2029f143} },
+/**/ {{0xbc2f8a44, 0x2b420400} },
+/**/ {{0xbfa2fea7, 0x7b921c49} },
+/**/ {{0x3f9a9aa0, 0xf468e79e} },
+/**/ {{0xbf7fb66c, 0xcccbcb4f} },
+/**/ {{0xbf6fb0d0, 0x9bd39a5f} },
+/**/ {{0x3f7b7748, 0x8813998f} } },
+/**/ {{{0x3fed6000, 0x00000000} },
+/**/ {{0x3fe7c3d3, 0x11a6092b} },
+/**/ {{0x3c8bb3cb, 0x2d303288} },
+/**/ {{0x3fe15dbb, 0x1dc61b17} },
+/**/ {{0xbc8f0487, 0xbb77dc56} },
+/**/ {{0xbfd14d7e, 0xee0771ca} },
+/**/ {{0x3c72d38b, 0xdc2fcbd0} },
+/**/ {{0x3fb4d716, 0xd6080f0e} },
+/**/ {{0xbc5cb5bc, 0xa9fbc2c3} },
+/**/ {{0x3f89a7f9, 0xfc42e02f} },
+/**/ {{0xbc201eec, 0x857be8a4} },
+/**/ {{0xbfa2af2b, 0x44ceebb3} },
+/**/ {{0x3f9a62b5, 0x08511639} },
+/**/ {{0xbf8018ad, 0xc8de23de} },
+/**/ {{0xbf6dc8a2, 0xc964501a} },
+/**/ {{0x3f7ac6f9, 0xeb913697} } },
+/**/ {{{0x3fed8000, 0x00000000} },
+/**/ {{0x3fe7d528, 0x289fa093} },
+/**/ {{0x3c856082, 0x1e2f3aa9} },
+/**/ {{0x3fe14c75, 0x711551bb} },
+/**/ {{0xbc80c88e, 0x71970f2c} },
+/**/ {{0xbfd13dd8, 0xe4aa5095} },
+/**/ {{0x3c66dd31, 0xb4b7ae12} },
+/**/ {{0x3fb4e38d, 0xead4c211} },
+/**/ {{0x3c513fb0, 0xe392a31e} },
+/**/ {{0x3f88355f, 0xf6b74576} },
+/**/ {{0x3ba8cb44, 0xf3561ab7} },
+/**/ {{0xbfa26058, 0x0de0faaa} },
+/**/ {{0x3f9a29f8, 0x989371f0} },
+/**/ {{0xbf805261, 0x2b085d9a} },
+/**/ {{0xbf6beccb, 0x2511c555} },
+/**/ {{0x3f7a1863, 0x87b9d333} } },
+/**/ {{{0x3feda000, 0x00000000} },
+/**/ {{0x3fe7e66c, 0x01c114fe} },
+/**/ {{0xbc8c82b8, 0x8b760b8d} },
+/**/ {{0x3fe13b3f, 0x6f037c44} },
+/**/ {{0xbc635393, 0x8562c8c0} },
+/**/ {{0xbfd12e29, 0xc7182435} },
+/**/ {{0xbc73da80, 0x0d0fda95} },
+/**/ {{0x3fb4ef4d, 0x3ba21a8b} },
+/**/ {{0xbc17c450, 0x9aa41146} },
+/**/ {{0x3f86c8e7, 0xc39dff46} },
+/**/ {{0x3c1ddd70, 0x800ba9ae} },
+/**/ {{0xbfa21230, 0x34b94b56} },
+/**/ {{0x3f99f078, 0xa827f95a} },
+/**/ {{0xbf808869, 0x19caa997} },
+/**/ {{0xbf6a1d29, 0xf8c46d26} },
+/**/ {{0x3f796b9a, 0xae59da17} } },
+/**/ {{{0x3fedc000, 0x00000000} },
+/**/ {{0x3fe7f79e, 0xacb97898} },
+/**/ {{0x3c8fd5ca, 0x80ead221} },
+/**/ {{0x3fe12a19, 0x20604825} },
+/**/ {{0xbc5cc7d6, 0xa18970f8} },
+/**/ {{0xbfd11e72, 0x1dfe6ba4} },
+/**/ {{0x3c706717, 0x9d653d1c} },
+/**/ {{0x3fb4fa57, 0xd5fcbb3b} },
+/**/ {{0x3c1922c8, 0x5f50bc06} },
+/**/ {{0x3f856283, 0xe93a179f} },
+/**/ {{0xbc01c2ec, 0x5ea7135a} },
+/**/ {{0xbfa1c4b5, 0xf0c06b4f} },
+/**/ {{0x3f99b641, 0xe48a3b04} },
+/**/ {{0xbf80badd, 0xe1280a21} },
+/**/ {{0xbf68599e, 0x1be3c5dd} },
+/**/ {{0x3f78c0b3, 0x3a72c8e6} } },
+/**/ {{{0x3fede000, 0x00000000} },
+/**/ {{0x3fe808c0, 0x3940694b} },
+/**/ {{0xbc800f32, 0x7715f6a5} },
+/**/ {{0x3fe11902, 0x8d73d98e} },
+/**/ {{0x3c71d158, 0x30f8e290} },
+/**/ {{0xbfd10eb2, 0x6fc305eb} },
+/**/ {{0xbc7fd2e3, 0x3858c4b7} },
+/**/ {{0x3fb504b0, 0xc0a99255} },
+/**/ {{0x3c55c054, 0x142e134f} },
+/**/ {{0x3f840226, 0xc2f371cf} },
+/**/ {{0xbbfc85b0, 0xfc7d6225} },
+/**/ {{0xbfa177eb, 0x53d58f53} },
+/**/ {{0x3f997b60, 0xa6a1627d} },
+/**/ {{0xbf80e9d7, 0x89757c78} },
+/**/ {{0xbf66a205, 0x0d433cd6} },
+/**/ {{0x3f7817bf, 0x9c5dbd9f} } },
+/**/ {{{0x3fee0000, 0x00000000} },
+/**/ {{0x3fe819d0, 0xb7158a4d} },
+/**/ {{0xbc7bf762, 0x29d3b917} },
+/**/ {{0x3fe107fb, 0xbe011080} },
+/**/ {{0xbc8107fb, 0xbe011080} },
+/**/ {{0xbfd0feeb, 0x40894fcd} },
+/**/ {{0x3c76fbb9, 0xc155af9a} },
+/**/ {{0x3fb50e5a, 0xfb9125f7} },
+/**/ {{0x3c357762, 0x2f3313b0} },
+/**/ {{0x3f82a7c2, 0x843ba55a} },
+/**/ {{0x3c1f4994, 0x3fc197b7} },
+/**/ {{0xbfa12bd2, 0x4b4ae875} },
+/**/ {{0x3f993fe0, 0xf3b1b1ee} },
+/**/ {{0xbf81156d, 0xd4c2083b} },
+/**/ {{0xbf64f63b, 0x0c35aa9c} },
+/**/ {{0x3f7770d0, 0xe5d0462f} } },
+/**/ {{{0x3fee2000, 0x00000000} },
+/**/ {{0x3fe82ad0, 0x36000005} },
+/**/ {{0x3c74592f, 0xce924d24} },
+/**/ {{0x3fe0f704, 0xb947c8b7} },
+/**/ {{0x3c436cd7, 0x48a651b3} },
+/**/ {{0xbfd0ef1d, 0x1237505b} },
+/**/ {{0x3c69239b, 0x1b86b9d1} },
+/**/ {{0x3fb51759, 0x7fac4e21} },
+/**/ {{0xbc42a8cc, 0xbfce0e36} },
+/**/ {{0x3f815349, 0x3b5f3edd} },
+/**/ {{0xbc25e1f1, 0x88c702d9} },
+/**/ {{0xbfa0e06c, 0xa0df17a9} },
+/**/ {{0x3f9903ce, 0x7e56b8b1} },
+/**/ {{0xbf813db8, 0x3c701e30} },
+/**/ {{0xbf63561b, 0x30c99e47} },
+/**/ {{0x3f76cbf6, 0xd5bffce0} } },
+/**/ {{{0x3fee4000, 0x00000000} },
+/**/ {{0x3fe83bbe, 0xc5cdee22} },
+/**/ {{0x3c631071, 0x04ffc6c3} },
+/**/ {{0x3fe0e61d, 0x86071468} },
+/**/ {{0xbc70ccc4, 0x59be09c9} },
+/**/ {{0xbfd0df48, 0x647af38b} },
+/**/ {{0x3c7dd47c, 0x427c295b} },
+/**/ {{0x3fb51faf, 0x3ef25277} },
+/**/ {{0x3bdf056a, 0xa81026a7} },
+/**/ {{0x3f8004ac, 0xd443a18b} },
+/**/ {{0x3c027610, 0x8178f329} },
+/**/ {{0xbfa095bb, 0xfbb3a658} },
+/**/ {{0x3f98c734, 0xa7859d46} },
+/**/ {{0xbf8162cd, 0xeefe9a81} },
+/**/ {{0xbf61c17f, 0x8330eac0} },
+/**/ {{0x3f76293f, 0xe421c20a} } },
+/**/ {{{0x3fee6000, 0x00000000} },
+/**/ {{0x3fe84c9c, 0x7653f7eb} },
+/**/ {{0xbc383611, 0xfe0a3e8f} },
+/**/ {{0x3fe0d546, 0x2a7f71b5} },
+/**/ {{0x3c757061, 0x596848c6} },
+/**/ {{0xbfd0cf6d, 0xb4cf51a6} },
+/**/ {{0x3c4c99ab, 0x5b18bb8c} },
+/**/ {{0x3fb5275f, 0x24486227} },
+/**/ {{0x3c5b4a59, 0xbb1f4f56} },
+/**/ {{0x3f7d77be, 0x36238bb2} },
+/**/ {{0x3c1ddbd1, 0xcaec6ba2} },
+/**/ {{0xbfa04bc1, 0xe1406cd0} },
+/**/ {{0x3f988a1e, 0x7f96d6ca} },
+/**/ {{0xbf8184c5, 0xcdffc380} },
+/**/ {{0xbf603841, 0x12561f8b} },
+/**/ {{0x3f7588b9, 0x4d81a668} } },
+/**/ {{{0x3fee8000, 0x00000000} },
+/**/ {{0x3fe85d69, 0x576cc2c5} },
+/**/ {{0x3c66b66e, 0x7fc8b8c3} },
+/**/ {{0x3fe0c47e, 0xac74fadc} },
+/**/ {{0xbc8035f8, 0x77bb1887} },
+/**/ {{0xbfd0bf8d, 0x7e8202a9} },
+/**/ {{0x3c798048, 0x1f4d2357} },
+/**/ {{0x3fb52e6c, 0x13725c73} },
+/**/ {{0xbc34c3af, 0xf5b19ded} },
+/**/ {{0x3f7af1a3, 0x7d9c2711} },
+/**/ {{0x3bea7ec7, 0x1af1098d} },
+/**/ {{0xbfa0027f, 0xb643d11f} },
+/**/ {{0x3f984c96, 0xc756b7d7} },
+/**/ {{0xbf81a3b6, 0x6c3ca3ae} },
+/**/ {{0xbf5d7470, 0x13459246} },
+/**/ {{0x3f74ea6f, 0x1e70d9a4} } },
+/**/ {{{0x3feea000, 0x00000000} },
+/**/ {{0x3fe86e25, 0x78f87ae5} },
+/**/ {{0x3c8022b1, 0x375cfe34} },
+/**/ {{0x3fe0b3c7, 0x11319104} },
+/**/ {{0x3c8ac394, 0x25152519} },
+/**/ {{0xbfd0afa8, 0x3ab87c8a} },
+/**/ {{0x3c724f26, 0x27b31384} },
+/**/ {{0x3fb534d8, 0xe904e078} },
+/**/ {{0xbc55bfde, 0xf8948323} },
+/**/ {{0x3f7876ec, 0xa7bb2dfb} },
+/**/ {{0xbc197116, 0x8a87be50} },
+/**/ {{0xbf9f73ed, 0x7f5f95b4} },
+/**/ {{0x3f980ea7, 0xf11c3266} },
+/**/ {{0xbf81bfb6, 0x0c032389} },
+/**/ {{0xbf5a8e77, 0x8bf305a1} },
+/**/ {{0x3f744e6c, 0x3ec72e6d} } },
+/**/ {{{0x3feec000, 0x00000000} },
+/**/ {{0x3fe87ed0, 0xeadc5a2a} },
+/**/ {{0x3c70af5a, 0xd957f4bc} },
+/**/ {{0x3fe0a31f, 0x5d8701b3} },
+/**/ {{0xbc869b25, 0x263ce937} },
+/**/ {{0xbfd09fbe, 0x60757b83} },
+/**/ {{0x3c767aff, 0xa96db9ef} },
+/**/ {{0x3fb53aa8, 0x7a589afb} },
+/**/ {{0xbc4b7e8e, 0x0844ff86} },
+/**/ {{0x3f76077c, 0xacf1a65c} },
+/**/ {{0xbc19a3b2, 0xb13331a9} },
+/**/ {{0xbf9ee450, 0x472733eb} },
+/**/ {{0x3f97d05c, 0x21e541d7} },
+/**/ {{0xbf81d8da, 0x9d9d4dfc} },
+/**/ {{0xbf57be45, 0xd3ce1b4a} },
+/**/ {{0x3f73b4ba, 0x7cb60047} } },
+/**/ {{{0x3feee000, 0x00000000} },
+/**/ {{0x3fe88f6b, 0xbd023119} },
+/**/ {{0xbc532d1d, 0x25aba660} },
+/**/ {{0x3fe09287, 0x95d126c6} },
+/**/ {{0x3c85aad3, 0xeccc37a6} },
+/**/ {{0xbfd08fd0, 0x649e7367} },
+/**/ {{0x3c71e96c, 0xed21a127} },
+/**/ {{0x3fb53fdd, 0x957ec910} },
+/**/ {{0xbc339c23, 0xaf97a601} },
+/**/ {{0x3f73a336, 0x5a18e5a2} },
+/**/ {{0xbc1f7225, 0x477571de} },
+/**/ {{0xbf9e5629, 0xd4044135} },
+/**/ {{0x3f9791bd, 0x32786dc4} },
+/**/ {{0xbf81ef39, 0xbdf030c4} },
+/**/ {{0xbf550386, 0xe21b8bcb} },
+/**/ {{0x3f731d62, 0x97aa7fb2} } },
+/**/ {{{0x3fef0000, 0x00000000} },
+/**/ {{0x3fe89ff5, 0xff57f1f8} },
+/**/ {{0xbc855b9a, 0x5e177a1b} },
+/**/ {{0x3fe081ff, 0xbdf80108} },
+/**/ {{0x3c6ffbdf, 0x80108200} },
+/**/ {{0xbfd07fde, 0xba010928} },
+/**/ {{0x3c38d37f, 0x7bae0295} },
+/**/ {{0x3fb5447b, 0x0136e69f} },
+/**/ {{0x3c50316a, 0x0dda278d} },
+/**/ {{0x3f7149fc, 0x55103947} },
+/**/ {{0x3c176e96, 0x849e505f} },
+/**/ {{0xbf9dc97b, 0xfbe9a2ee} },
+/**/ {{0x3f9752d4, 0xb08adda9} },
+/**/ {{0xbf8202e8, 0xb540d106} },
+/**/ {{0xbf525de5, 0x859de3e9} },
+/**/ {{0x3f72886c, 0x4afd9f21} } },
+/**/ {{{0x3fef2000, 0x00000000} },
+/**/ {{0x3fe8b06f, 0xc1cf3dff} },
+/**/ {{0xbc80fb31, 0x2656db6d} },
+/**/ {{0x3fe07187, 0xd971cd38} },
+/**/ {{0x3c89baa4, 0x202c20ac} },
+/**/ {{0xbfd06fe9, 0xd15893ab} },
+/**/ {{0xbc7a864b, 0xdc0cb586} },
+/**/ {{0x3fb54883, 0x7ce57fed} },
+/**/ {{0xbc49498e, 0x294f4b18} },
+/**/ {{0x3f6df762, 0x426ebecc} },
+/**/ {{0xbc022f08, 0xf28644c0} },
+/**/ {{0xbf9d3e48, 0x5c564b44} },
+/**/ {{0x3f9713ab, 0xdfea7acf} },
+/**/ {{0xbf8213fc, 0x761db35c} },
+/**/ {{0xbf4f9a17, 0x10d60f49} },
+/**/ {{0x3f71f5de, 0x58700e9b} } },
+/**/ {{{0x3fef4000, 0x00000000} },
+/**/ {{0x3fe8c0d9, 0x145cf49d} },
+/**/ {{0x3c8bea40, 0x76dc4333} },
+/**/ {{0x3fe0611f, 0xeb45139a} },
+/**/ {{0x3c7e4998, 0x65aadb1f} },
+/**/ {{0xbfd05ff2, 0x1953a316} },
+/**/ {{0x3c759922, 0xa1b67b0f} },
+/**/ {{0x3fb54bf9, 0xc08c1d66} },
+/**/ {{0x3c5b9353, 0xd220330c} },
+/**/ {{0x3f69706e, 0x478cb604} },
+/**/ {{0xbbfdb6d3, 0xa22fd45a} },
+/**/ {{0xbf9cb490, 0x5c0d1d38} },
+/**/ {{0x3f96d44b, 0xbbaba2f2} },
+/**/ {{0xbf822289, 0x9c6b7de1} },
+/**/ {{0xbf4aa143, 0xa49803b6} },
+/**/ {{0x3f7165be, 0x9270e49e} } },
+/**/ {{{0x3fef6000, 0x00000000} },
+/**/ {{0x3fe8d132, 0x06f8c4cb} },
+/**/ {{0xbc7b018c, 0xbaa89a8b} },
+/**/ {{0x3fe050c7, 0xf60ab1f4} },
+/**/ {{0x3c63f8e2, 0xc6cf5796} },
+/**/ {{0xbfd04ff7, 0xfe998dc0} },
+/**/ {{0x3c77873c, 0x7dc56419} },
+/**/ {{0x3fb54ee0, 0x7cc24121} },
+/**/ {{0x3c313117, 0x8e5c84c5} },
+/**/ {{0x3f64fee1, 0x50066301} },
+/**/ {{0x3c043698, 0x017261a1} },
+/**/ {{0xbf9c2c55, 0x2cc5b4f1} },
+/**/ {{0x3f9694bc, 0xf759f369} },
+/**/ {{0xbf822ea4, 0x6c93426a} },
+/**/ {{0xbf45d0a1, 0x135d6c51} },
+/**/ {{0x3f70d811, 0xe62dc18f} } },
+/**/ {{{0x3fef8000, 0x00000000} },
+/**/ {{0x3fe8e17a, 0xa99cc05e} },
+/**/ {{0xbc7ec182, 0xab042f61} },
+/**/ {{0x3fe0407f, 0xfbefe001} },
+/**/ {{0x3c401ffe, 0xfbf80041} },
+/**/ {{0xbfd03ffb, 0xebd00209} },
+/**/ {{0xbc53ff3c, 0xb9004112} },
+/**/ {{0x3fb5513a, 0x5aaf6d91} },
+/**/ {{0x3c54a20d, 0xc0516ddb} },
+/**/ {{0x3f60a27f, 0xc6ac4038} },
+/**/ {{0x3bf06bee, 0x2a340912} },
+/**/ {{0xbf9ba597, 0xccd6032a} },
+/**/ {{0x3f965508, 0x002bb974} },
+/**/ {{0xbf823860, 0xd2d1068b} },
+/**/ {{0xbf41277e, 0x666265bc} },
+/**/ {{0x3f704cdc, 0x656b66ea} } },
+/**/ {{{0x3fefa000, 0x00000000} },
+/**/ {{0x3fe8f1b3, 0x0c44f167} },
+/**/ {{0x3c6dd1ca, 0xb93933fd} },
+/**/ {{0x3fe03047, 0xfeb82e4e} },
+/**/ {{0x3c69ee56, 0x5272e5ac} },
+/**/ {{0xbfd02ffe, 0x49a09c45} },
+/**/ {{0xbc700a59, 0xb26267bb} },
+/**/ {{0x3fb55309, 0xfc062d2f} },
+/**/ {{0x3c5dba48, 0xb11938e0} },
+/**/ {{0x3f58b61b, 0xe4f365be} },
+/**/ {{0x3bf8b585, 0xa79ad31a} },
+/**/ {{0xbf9b2059, 0x08d4ad17} },
+/**/ {{0x3f961534, 0xfe379940} },
+/**/ {{0xbf823fd2, 0x62a1270e} },
+/**/ {{0xbf394a53, 0x3f3a0aec} },
+/**/ {{0x3f6f8842, 0xa04bcae2} } },
+/**/ {{{0x3fefc000, 0x00000000} },
+/**/ {{0x3fe901db, 0x3eeef187} },
+/**/ {{0x3c868665, 0xe5603c8f} },
+/**/ {{0x3fe0201f, 0xffbf7f80} },
+/**/ {{0x3c20201f, 0xffbf7f80} },
+/**/ {{0xbfd01fff, 0x7ebe8004} },
+/**/ {{0xbc4213ff, 0xcf979001} },
+/**/ {{0x3fb55451, 0xfb0012db} },
+/**/ {{0xbc395606, 0xf73aa59f} },
+/**/ {{0x3f50509f, 0xfc757100} },
+/**/ {{0x3bebc7da, 0xfee554d0} },
+/**/ {{0xbf9a9c99, 0x7d3424d0} },
+/**/ {{0x3f95d54b, 0xd5ac0217} },
+/**/ {{0xbf82450c, 0x564b3c49} },
+/**/ {{0xbf3091df, 0xe6d3e986} },
+/**/ {{0x3f6e7bc6, 0x3bef5a22} } },
+/**/ {{{0x3fefe000, 0x00000000} },
+/**/ {{0x3fe911f3, 0x5199833b} },
+/**/ {{0x3c63ae8a, 0x0edbf522} },
+/**/ {{0x3fe01007, 0xfffbfbfe} },
+/**/ {{0x3ba01007, 0xfffbfbfe} },
+/**/ {{0xbfd00fff, 0xefebf400} },
+/**/ {{0xbc401209, 0xfff9f97d} },
+/**/ {{0x3fb55514, 0xea5aaaf6} },
+/**/ {{0xbc529baa, 0xb5b7b240} },
+/**/ {{0x3f402827, 0xffc7abc4} },
+/**/ {{0x3b5ba3d6, 0xbfee6ab3} },
+/**/ {{0xbf9a1a59, 0x97d67093} },
+/**/ {{0x3f959554, 0x28080aaf} },
+/**/ {{0xbf824821, 0x8e892ce2} },
+/**/ {{0xbf204877, 0xfe70a2a6} },
+/**/ {{0x3f6d7447, 0x0e8ddd67} } },
+/**/ {{{0x3feff800, 0x00000000} },
+/**/ {{0x3fe91dfa, 0xd439826e} },
+/**/ {{0xbc786a19, 0x6df48d55} },
+/**/ {{0x3fe00400, 0x7ffffbff} },
+/**/ {{0xbbeffffe, 0xffbff800} },
+/**/ {{0xbfd003ff, 0xffbfebfd} },
+/**/ {{0xbb600480, 0x9ffff9fe} },
+/**/ {{0x3fb55551, 0x53aa5aab} },
+/**/ {{0xbc542a4a, 0x9baaab5b} },
+/**/ {{0x3f200a02, 0x7fffc7eb} },
+/**/ {{0xbb7dfffe, 0x4770e940} },
+/**/ {{0xbf99b9a5, 0x9997d8d0} },
+/**/ {{0x3f956555, 0x50a80a03} },
+/**/ {{0xbf824914, 0x86456493} },
+/**/ {{0xbf001207, 0x7ffe7329} },
+/**/ {{0x3f6cb1ef, 0x1c63fe2a} } },
+ };
+
+#else
+#ifdef LITTLE_ENDI
+
+ static const number
+ cij[241][7] = { /* x0,cij for (1/16,1) */
+/**/ {{{0X65E0244E, 0X3FB04006} },
+/**/ {{0X7B53DD20, 0X3FB03A73} },
+/**/ {{0XCF5CFB72, 0X3FEFDF1F} },
+/**/ {{0XCE2AE4C2, 0XBFB01EB3} },
+/**/ {{0XDD58A40D, 0XBFD4D29E} },
+/**/ {{0XD907A18A, 0X3FAFDA4A} },
+/**/ {{0X4DF65B18, 0X3FC814DF} } },
+/**/ {{{0XB9B88CD8, 0X3FB0FFFD} },
+/**/ {{0X63645300, 0X3FB0F99C} },
+/**/ {{0XA3DED30F, 0X3FEFDC08} },
+/**/ {{0X669C1AED, 0XBFB0D9DC} },
+/**/ {{0XF7138DE2, 0XBFD4C669} },
+/**/ {{0X29D085A7, 0X3FB0A12F} },
+/**/ {{0XCFD48D20, 0X3FC7F0EE} } },
+/**/ {{{0X5A73D4F1, 0X3FB1FFF1} },
+/**/ {{0X2BEE2040, 0X3FB1F85F} },
+/**/ {{0X42B56D31, 0X3FEFD7B3} },
+/**/ {{0XB69DEA40, 0XBFB1D2B7} },
+/**/ {{0X3922ECC9, 0XBFD4B552} },
+/**/ {{0X522B1A04, 0X3FB18F93} },
+/**/ {{0X5660F061, 0X3FC7BEAD} } },
+/**/ {{{0XB2524AA2, 0X3FB2FFFD} },
+/**/ {{0XE71790A0, 0X3FB2F716} },
+/**/ {{0X53B496A4, 0X3FEFD31F} },
+/**/ {{0X4AAB7374, 0XBFB2CAD8} },
+/**/ {{0X58DD2FB2, 0XBFD4A34B} },
+/**/ {{0XD0CECC18, 0X3FB27C0A} },
+/**/ {{0X5D2743D7, 0X3FC789D2} } },
+/**/ {{{0X0573F3AC, 0X3FB3FFFE} },
+/**/ {{0X1702F6A0, 0X3FB3F59D} },
+/**/ {{0XB071ACC2, 0X3FEFCE4D} },
+/**/ {{0X64DB3686, 0XBFB3C20F} },
+/**/ {{0XEB3BFE93, 0XBFD49059} },
+/**/ {{0XCAF74FED, 0X3FB36659} },
+/**/ {{0X1C011FB0, 0X3FC75269} } },
+/**/ {{{0X894384D6, 0X3FB4FFEF} },
+/**/ {{0X0CE204C0, 0X3FB4F3ED} },
+/**/ {{0XA8EA5A01, 0X3FEFC93E} },
+/**/ {{0X7B5457C9, 0XBFB4B84F} },
+/**/ {{0X7401F2F9, 0XBFD47C80} },
+/**/ {{0XB4F67209, 0X3FB44E64} },
+/**/ {{0X4C540B77, 0X3FC7187D} } },
+/**/ {{{0XDF406528, 0X3FB5FFF8} },
+/**/ {{0X3C73D820, 0X3FB5F22B} },
+/**/ {{0XB1F60F13, 0X3FEFC3F1} },
+/**/ {{0XCB7FA73B, 0XBFB5ADB2} },
+/**/ {{0X2B1EB555, 0XBFD467BE} },
+/**/ {{0X99EDC463, 0X3FB53435} },
+/**/ {{0X238F5059, 0X3FC6DC1B} } },
+/**/ {{{0X8C4F0D56, 0X3FB7000F} },
+/**/ {{0X495A2FA0, 0X3FB6F04B} },
+/**/ {{0X340DCE97, 0X3FEFBE67} },
+/**/ {{0X4D98E1AD, 0XBFB6A224} },
+/**/ {{0X14064DF1, 0XBFD45216} },
+/**/ {{0X2BA78A66, 0X3FB617AA} },
+/**/ {{0X50A3D7AC, 0X3FC69D4F} } },
+/**/ {{{0XBB4057CF, 0X3FB8000F} },
+/**/ {{0XBE2CD3A0, 0X3FB7EE27} },
+/**/ {{0X39EC9246, 0X3FEFB8A0} },
+/**/ {{0X31D9C773, 0XBFB79577} },
+/**/ {{0XB6DC7D72, 0XBFD43B8D} },
+/**/ {{0XD69547DF, 0X3FB6F88A} },
+/**/ {{0XF633CE8C, 0X3FC65C26} } },
+/**/ {{{0X39CF2B7F, 0X3FB8FFF2} },
+/**/ {{0X9F979E80, 0X3FB8EBB7} },
+/**/ {{0X435506E1, 0X3FEFB29D} },
+/**/ {{0X69B9CDB5, 0XBFB8879A} },
+/**/ {{0X85FEAFA9, 0XBFD42428} },
+/**/ {{0XB6191A0E, 0X3FB7D6BA} },
+/**/ {{0XA7CB8BB5, 0X3FC618AF} } },
+/**/ {{{0X6E2F0772, 0X3FB9FFF9} },
+/**/ {{0XD32A9480, 0X3FB9E93A} },
+/**/ {{0X04A3EC40, 0X3FEFAC5D} },
+/**/ {{0X53F6EA97, 0XBFB978C2} },
+/**/ {{0X089C36F6, 0XBFD40BE3} },
+/**/ {{0X885AEB77, 0X3FB8B25C} },
+/**/ {{0X63CADCE1, 0X3FC5D2F7} } },
+/**/ {{{0X6316B097, 0X3FBB0002} },
+/**/ {{0XCE24CC00, 0X3FBAE68C} },
+/**/ {{0X938C5C66, 0X3FEFA5E0} },
+/**/ {{0X76F14E4B, 0XBFBA68C3} },
+/**/ {{0X1696CD7C, 0XBFD3F2C3} },
+/**/ {{0X722A2CB4, 0X3FB98B3B} },
+/**/ {{0X9067AD62, 0X3FC58B0C} } },
+/**/ {{{0X604F58B1, 0X3FBC0008} },
+/**/ {{0X05650780, 0X3FBBE3A7} },
+/**/ {{0X5A7A2773, 0X3FEF9F28} },
+/**/ {{0X3D5AC0A4, 0XBFBB578F} },
+/**/ {{0XF767119F, 0XBFD3D8CB} },
+/**/ {{0XC7E31B88, 0X3FBA613D} },
+/**/ {{0XF5594565, 0X3FC540FD} } },
+/**/ {{{0X6CCA4EBA, 0X3FBD0002} },
+/**/ {{0XC1298A80, 0X3FBCE07E} },
+/**/ {{0XE8D36C4A, 0X3FEF9834} },
+/**/ {{0X5BCAC5FE, 0XBFBC4513} },
+/**/ {{0X8B5236F1, 0XBFD3BE01} },
+/**/ {{0X2E991970, 0X3FBB3447} },
+/**/ {{0XB8ADB373, 0X3FC4F4DA} } },
+/**/ {{{0XB2B47FCA, 0X3FBDFFF4} },
+/**/ {{0X4A051D80, 0X3FBDDD16} },
+/**/ {{0X78DCC895, 0X3FEF9106} },
+/**/ {{0XF0966844, 0XBFBD3149} },
+/**/ {{0X744F9A5F, 0XBFD3A266} },
+/**/ {{0XEDB7F27A, 0X3FBC0446} },
+/**/ {{0X583F9ECA, 0X3FC4A6B2} } },
+/**/ {{{0XA9A05BE0, 0X3FBF000A} },
+/**/ {{0XA3BDA540, 0X3FBED996} },
+/**/ {{0X1B8BA97F, 0X3FEF899C} },
+/**/ {{0X2287A677, 0XBFBE1C51} },
+/**/ {{0XEDC130BB, 0XBFD385F8} },
+/**/ {{0XF306FF50, 0X3FBCD14B} },
+/**/ {{0XA667A72B, 0X3FC45694} } },
+/**/ {{{0XBA8F63DE, 0X3FBFFFFA} },
+/**/ {{0X69FE4780, 0X3FBFD5B5} },
+/**/ {{0X4863DC7D, 0X3FEF81F8} },
+/**/ {{0XD1518706, 0XBFBF05DB} },
+/**/ {{0X4687A69C, 0XBFD368C4} },
+/**/ {{0X1B3868DA, 0X3FBD9B08} },
+/**/ {{0XC345ADFC, 0X3FC40491} } },
+/**/ {{{0X6ECCADA8, 0X3FC07FFA} },
+/**/ {{0X0A396400, 0X3FC068D0} },
+/**/ {{0XF1FCFC6B, 0X3FEF7A19} },
+/**/ {{0X861DF0DF, 0XBFBFEE0C} },
+/**/ {{0X5A586C0C, 0XBFD34AC6} },
+/**/ {{0X189D637A, 0X3FBE618F} },
+/**/ {{0X195779D4, 0X3FC3B0BA} } },
+/**/ {{{0X33432713, 0X3FC10003} },
+/**/ {{0XF203D1A0, 0X3FC0E6B0} },
+/**/ {{0XFE0EB463, 0X3FEF7200} },
+/**/ {{0XE15CB19A, 0XBFC06A72} },
+/**/ {{0XB8DB761E, 0XBFD32C00} },
+/**/ {{0XA11F5E3E, 0X3FBF24D8} },
+/**/ {{0X569E85DD, 0X3FC35B1E} } },
+/**/ {{{0XDA1C4811, 0X3FC17FFC} },
+/**/ {{0X29EBDA00, 0X3FC16462} },
+/**/ {{0X7D558737, 0X3FEF69AF} },
+/**/ {{0X0B33969B, 0XBFC0DD17} },
+/**/ {{0X33AC50D1, 0XBFD30C7D} },
+/**/ {{0X9BE43F0F, 0X3FBFE4AA} },
+/**/ {{0X692539CB, 0X3FC303CF} } },
+/**/ {{{0X3CCA418D, 0X3FC1FFFF} },
+/**/ {{0X3B978EA0, 0X3FC1E1FA} },
+/**/ {{0X45D421A9, 0X3FEF6124} },
+/**/ {{0XACAC8AA8, 0XBFC14F03} },
+/**/ {{0X62E675A3, 0XBFD2EC39} },
+/**/ {{0X2FA6B426, 0X3FC0508C} },
+/**/ {{0X780A6467, 0X3FC2AADE} } },
+/**/ {{{0XD9C78922, 0X3FC27FF7} },
+/**/ {{0X1B91E640, 0X3FC25F66} },
+/**/ {{0XF52E192C, 0X3FEF5860} },
+/**/ {{0XE5DE2394, 0XBFC1C023} },
+/**/ {{0X6BEE0ABD, 0XBFD2CB3D} },
+/**/ {{0X5E075C1A, 0X3FC0ACFB} },
+/**/ {{0XDFFE453A, 0X3FC2505C} } },
+/**/ {{{0XA1FC1AAA, 0X3FC2FFF7} },
+/**/ {{0X83257C40, 0X3FC2DCB5} },
+/**/ {{0XC719B6FB, 0X3FEF4F64} },
+/**/ {{0X61514083, 0XBFC23082} },
+/**/ {{0X7F7B72D5, 0XBFD2A988} },
+/**/ {{0X7C887402, 0X3FC107A7} },
+/**/ {{0X2C3CD6D1, 0X3FC1F45C} } },
+/**/ {{{0X9D78E15E, 0X3FC38005} },
+/**/ {{0X6AC98EE0, 0X3FC359EE} },
+/**/ {{0X944CEC16, 0X3FEF462F} },
+/**/ {{0XD85B87A9, 0XBFC2A020} },
+/**/ {{0X2E4AB369, 0XBFD2871C} },
+/**/ {{0XC31A65D9, 0X3FC1608D} },
+/**/ {{0X130BBE50, 0X3FC196EE} } },
+/**/ {{{0X9F431B1A, 0X3FC40004} },
+/**/ {{0X6BD65360, 0X3FC3D6F3} },
+/**/ {{0XDD99B68A, 0X3FEF3CC3} },
+/**/ {{0XB3DD00ED, 0XBFC30EE1} },
+/**/ {{0XF8482664, 0XBFD26403} },
+/**/ {{0XFE136626, 0X3FC1B792} },
+/**/ {{0X6EAC7440, 0X3FC13824} } },
+/**/ {{{0XE01D95A1, 0X3FC48004} },
+/**/ {{0X86F00CC0, 0X3FC453D3} },
+/**/ {{0XE3970539, 0X3FEF3320} },
+/**/ {{0X0A5279AA, 0XBFC37CCF} },
+/**/ {{0X3B151D5D, 0XBFD2403F} },
+/**/ {{0XE331C9E6, 0X3FC20CBB} },
+/**/ {{0X39E3F097, 0X3FC0D811} } },
+/**/ {{{0XAA9382DD, 0X3FC4FFF7} },
+/**/ {{0X8C590A80, 0X3FC4D07F} },
+/**/ {{0X34DF28E0, 0X3FEF2948} },
+/**/ {{0X5B43915C, 0XBFC3E9D8} },
+/**/ {{0XEB8845A2, 0XBFD21BD5} },
+/**/ {{0XAC6AC8AD, 0X3FC25FF8} },
+/**/ {{0X88ED96CA, 0X3FC076C6} } },
+/**/ {{{0X352408BE, 0X3FC58006} },
+/**/ {{0XC39A73E0, 0X3FC54D1E} },
+/**/ {{0X09AE009C, 0X3FEF1F37} },
+/**/ {{0XB9BE8550, 0XBFC4561C} },
+/**/ {{0X0053F52E, 0XBFD1F6C0} },
+/**/ {{0XEF783BE9, 0X3FC2B15D} },
+/**/ {{0X8615239B, 0X3FC01456} } },
+/**/ {{{0X2B193F81, 0X3FC5FFFF} },
+/**/ {{0X4F73E000, 0X3FC5C980} },
+/**/ {{0XAE110E29, 0X3FEF14F1} },
+/**/ {{0X9098B3D2, 0XBFC4C16E} },
+/**/ {{0X8F058241, 0XBFD1D10F} },
+/**/ {{0XA14FA897, 0X3FC300C6} },
+/**/ {{0XD56607C0, 0X3FBF61A6} } },
+/**/ {{{0X4460E6E1, 0X3FC68008} },
+/**/ {{0X04A55E20, 0X3FC645C8} },
+/**/ {{0X8FA36EC5, 0X3FEF0A75} },
+/**/ {{0XD62FA883, 0XBFC52BE9} },
+/**/ {{0X69A74048, 0XBFD1AABD} },
+/**/ {{0X1679EB02, 0X3FC34E45} },
+/**/ {{0XF7C14C3D, 0X3FBE989E} } },
+/**/ {{{0X9E99A846, 0X3FC6FFFB} },
+/**/ {{0X4B35FD40, 0X3FC6C1D0} },
+/**/ {{0X3EF8EF95, 0X3FEEFFC6} },
+/**/ {{0X76A2FE63, 0XBFC5956B} },
+/**/ {{0XDDC78DDF, 0XBFD183D8} },
+/**/ {{0XAC606D66, 0X3FC399BD} },
+/**/ {{0X070D286A, 0X3FBDCDBA} } },
+/**/ {{{0X0FFCD490, 0X3FC78008} },
+/**/ {{0XB55758E0, 0X3FC73DC5} },
+/**/ {{0X457E2065, 0X3FEEF4E0} },
+/**/ {{0X7D6FF9BC, 0XBFC5FE16} },
+/**/ {{0X9FADD384, 0XBFD15C57} },
+/**/ {{0X73E52D32, 0X3FC3E347} },
+/**/ {{0X9A65AE4B, 0X3FBD011C} } },
+/**/ {{{0X148E79C1, 0X3FC80006} },
+/**/ {{0X2B7F8CA0, 0X3FC7B981} },
+/**/ {{0X701687ED, 0X3FEEE9C7} },
+/**/ {{0X0E1EF36D, 0XBFC665C7} },
+/**/ {{0XCCBCBDAB, 0XBFD13449} },
+/**/ {{0X5C71B3E8, 0X3FC42AC7} },
+/**/ {{0X3E81980E, 0X3FBC32EB} } },
+/**/ {{{0X0F487C17, 0X3FC88006} },
+/**/ {{0XBC0E3640, 0X3FC83511} },
+/**/ {{0XD2D55329, 0X3FEEDE7A} },
+/**/ {{0X37E644BA, 0XBFC6CC87} },
+/**/ {{0X60597557, 0XBFD10BAE} },
+/**/ {{0X13E26FBE, 0X3FC47043} },
+/**/ {{0X6FB18BF4, 0X3FBB634A} } },
+/**/ {{{0XD3518D76, 0X3FC90004} },
+/**/ {{0X8874C100, 0X3FC8B073} },
+/**/ {{0X2ED6673B, 0X3FEED2FB} },
+/**/ {{0X2A6EBAC3, 0XBFC73251} },
+/**/ {{0X6924232F, 0XBFD0E28A} },
+/**/ {{0X73BCC03F, 0X3FC4B3B5} },
+/**/ {{0X8C72507F, 0X3FBA925E} } },
+/**/ {{{0XD2F20D5C, 0X3FC97FFF} },
+/**/ {{0X51AF5920, 0X3FC92BA3} },
+/**/ {{0X3D32449F, 0X3FEEC749} },
+/**/ {{0XC308255F, 0XBFC7971F} },
+/**/ {{0XD572D28F, 0XBFD0B8E2} },
+/**/ {{0X337448FE, 0X3FC4F51A} },
+/**/ {{0XCFCBC620, 0X3FB9C04B} } },
+/**/ {{{0XBF80F060, 0X3FCA0005} },
+/**/ {{0X6E9E8960, 0X3FC9A6AE} },
+/**/ {{0X1EF200E7, 0X3FEEBB64} },
+/**/ {{0X6E96E5C1, 0XBFC7FAFB} },
+/**/ {{0XEC6AD647, 0XBFD08EB6} },
+/**/ {{0XF53D0BA6, 0X3FC53475} },
+/**/ {{0X4433C20E, 0X3FB8ED36} } },
+/**/ {{{0XDEECA8E4, 0X3FCA7FF7} },
+/**/ {{0X948578E0, 0X3FCA2176} },
+/**/ {{0X328FF98B, 0X3FEEAF4F} },
+/**/ {{0X58149B1C, 0XBFC85DC9} },
+/**/ {{0XF933A1AB, 0XBFD06414} },
+/**/ {{0X60C45A8F, 0X3FC571B7} },
+/**/ {{0XBE58C308, 0X3FB81941} } },
+/**/ {{{0X7DEFD553, 0X3FCAFFFF} },
+/**/ {{0X9EBA6B80, 0X3FCA9C22} },
+/**/ {{0X10A85E10, 0X3FEEA307} },
+/**/ {{0X7F9DEA61, 0XBFC8BFA6} },
+/**/ {{0X5A474E8F, 0XBFD038F3} },
+/**/ {{0X30C225D2, 0X3FC5ACF0} },
+/**/ {{0XD062812F, 0X3FB74491} } },
+/**/ {{{0X669932A5, 0X3FCB7FFE} },
+/**/ {{0XCFF6DFE0, 0X3FCB1694} },
+/**/ {{0X1921D387, 0X3FEE968F} },
+/**/ {{0XE075D95A, 0XBFC92078} },
+/**/ {{0X526793C4, 0XBFD00D60} },
+/**/ {{0X73842A52, 0X3FC5E610} },
+/**/ {{0XC5331D5A, 0X3FB66F49} } },
+/**/ {{{0XB44759F3, 0X3FCBFFF9} },
+/**/ {{0X5073A2A0, 0X3FCB90D1} },
+/**/ {{0X56598313, 0X3FEE89E7} },
+/**/ {{0XCFB9203D, 0XBFC98041} },
+/**/ {{0XBED91B37, 0XBFCFC2BC} },
+/**/ {{0X6D4FC2FC, 0X3FC61D19} },
+/**/ {{0X9411537E, 0X3FB5998C} } },
+/**/ {{{0X5568F3EC, 0X3FCC8007} },
+/**/ {{0X4A31DBE0, 0X3FCC0AEC} },
+/**/ {{0X18F270A8, 0X3FEE7D0E} },
+/**/ {{0XF522B132, 0XBFC9DF0E} },
+/**/ {{0X2179C242, 0XBFCF69D4} },
+/**/ {{0X36646FCD, 0X3FC65213} },
+/**/ {{0XDC699095, 0X3FB4C37C} } },
+/**/ {{{0X601A799F, 0X3FCCFFF8} },
+/**/ {{0X49DB66A0, 0X3FCC84B8} },
+/**/ {{0XA0EE780E, 0X3FEE7008} },
+/**/ {{0X3A403934, 0XBFCA3CBB} },
+/**/ {{0XD490BE32, 0XBFCF102F} },
+/**/ {{0X037D4137, 0X3FC684EA} },
+/**/ {{0XD9EC855A, 0X3FB3ED3C} } },
+/**/ {{{0X7BBF1497, 0X3FCD7FF9} },
+/**/ {{0X1E008CE0, 0X3FCCFE5F} },
+/**/ {{0XF04615C7, 0X3FEE62D2} },
+/**/ {{0X15AADE2C, 0XBFCA9965} },
+/**/ {{0X0B44B682, 0XBFCEB5B9} },
+/**/ {{0X92EC8D57, 0X3FC6B5AF} },
+/**/ {{0X60D831AE, 0X3FB316EE} } },
+/**/ {{{0X40209B20, 0X3FCE0008} },
+/**/ {{0XB145A760, 0X3FCD77DD} },
+/**/ {{0XBE1DFDF1, 0X3FEE556D} },
+/**/ {{0X2186AF0F, 0XBFCAF508} },
+/**/ {{0X9420489D, 0XBFCE5A79} },
+/**/ {{0X454FEB2C, 0X3FC6E462} },
+/**/ {{0XD2945A8C, 0X3FB240B2} } },
+/**/ {{{0XC0AE943C, 0X3FCE8000} },
+/**/ {{0X3CA10100, 0X3FCDF111} },
+/**/ {{0X59E7308B, 0X3FEE47DD} },
+/**/ {{0X9439F69F, 0XBFCB4F88} },
+/**/ {{0X798DE600, 0XBFCDFE93} },
+/**/ {{0X8F267389, 0X3FC710F5} },
+/**/ {{0X1A8A373E, 0X3FB16AAB} } },
+/**/ {{{0X6D532803, 0X3FCF0003} },
+/**/ {{0XCB4E5C80, 0X3FCE6A17} },
+/**/ {{0XE3D0F6C2, 0X3FEE3A1E} },
+/**/ {{0X6E31F768, 0XBFCBA8FB} },
+/**/ {{0XE6A382E3, 0XBFCDA1F7} },
+/**/ {{0XB36AC4C0, 0X3FC73B75} },
+/**/ {{0XA3470B0A, 0X3FB094F7} } },
+/**/ {{{0X48B8AFC3, 0X3FCF7FFA} },
+/**/ {{0XE1654560, 0X3FCEE2DB} },
+/**/ {{0X43F2AB37, 0X3FEE2C35} },
+/**/ {{0X598207D6, 0XBFCC014F} },
+/**/ {{0X1EFE809A, 0XBFCD44BF} },
+/**/ {{0X698A561E, 0X3FC763DC} },
+/**/ {{0XA7CF78A3, 0X3FAF7F70} } },
+/**/ {{{0XEB334FAE, 0X3FD00002} },
+/**/ {{0X77AB25E0, 0X3FCF5B7B} },
+/**/ {{0X78A5C127, 0X3FEE1E1D} },
+/**/ {{0XC555D571, 0XBFCC5898} },
+/**/ {{0XB706CF86, 0XBFCCE6D9} },
+/**/ {{0X0823F643, 0X3FC78A35} },
+/**/ {{0X0B9118E8, 0X3FADD619} } },
+/**/ {{{0XA8AF86FE, 0X3FD03FFC} },
+/**/ {{0XB53A0C00, 0X3FCFD3CB} },
+/**/ {{0XFDCBAC8B, 0X3FEE0FDC} },
+/**/ {{0X6C3246FF, 0XBFCCAEB7} },
+/**/ {{0XD6E19AD3, 0XBFCC8870} },
+/**/ {{0XD2C48E91, 0X3FC7AE73} },
+/**/ {{0X0510FDB0, 0X3FAC2E26} } },
+/**/ {{{0XD38984B7, 0X3FD07FFC} },
+/**/ {{0X5732D4A0, 0X3FD025F7} },
+/**/ {{0X49C17AB3, 0X3FEE0170} },
+/**/ {{0X9AFE5028, 0XBFCD03C2} },
+/**/ {{0X9A2C1833, 0XBFCC2971} },
+/**/ {{0X69041DCF, 0X3FC7D0A5} },
+/**/ {{0XF497C653, 0X3FAA87D3} } },
+/**/ {{{0X1ED2ADD7, 0X3FD0BFFF} },
+/**/ {{0XCD7F7420, 0X3FD061ED} },
+/**/ {{0XDA96B750, 0X3FEDF2D8} },
+/**/ {{0XC777881E, 0XBFCD57B2} },
+/**/ {{0X8692B503, 0XBFCBC9EA} },
+/**/ {{0X42ABF9E7, 0X3FC7F0C9} },
+/**/ {{0X04B42BB4, 0X3FA8E35E} } },
+/**/ {{{0XA8515CDA, 0X3FD10003} },
+/**/ {{0X027416A0, 0X3FD09DC9} },
+/**/ {{0X34899950, 0X3FEDE417} },
+/**/ {{0X7983EDE4, 0XBFCDAA86} },
+/**/ {{0X999706B6, 0XBFCB69E3} },
+/**/ {{0XB0F126DB, 0X3FC80EE1} },
+/**/ {{0X17EE9BAB, 0X3FA740FE} } },
+/**/ {{{0XF3AF9CC5, 0X3FD14001} },
+/**/ {{0XB6E1ABA0, 0X3FD0D980} },
+/**/ {{0XE0412681, 0X3FEDD52D} },
+/**/ {{0X6863B28B, 0XBFCDFC31} },
+/**/ {{0XC55B8D5A, 0XBFCB0971} },
+/**/ {{0XA6731AAC, 0X3FC82AED} },
+/**/ {{0XC73BD8F0, 0X3FA5A0EC} } },
+/**/ {{{0XB6122509, 0X3FD18003} },
+/**/ {{0XAA1E67A0, 0X3FD1151D} },
+/**/ {{0X2E0C1F32, 0X3FEDC61B} },
+/**/ {{0XB9BA6B7E, 0XBFCE4CBE} },
+/**/ {{0X90C2431C, 0XBFCAA88E} },
+/**/ {{0X8BCBDA5E, 0X3FC844F4} },
+/**/ {{0X50E585FF, 0X3FA40361} } },
+/**/ {{{0XA6A2A153, 0X3FD1BFFF} },
+/**/ {{0XE7A18DC0, 0X3FD15096} },
+/**/ {{0XE1218F3F, 0X3FEDB6E1} },
+/**/ {{0X9621D6A2, 0XBFCE9C21} },
+/**/ {{0X22627B04, 0XBFCA4750} },
+/**/ {{0XFF8B908E, 0X3FC85CF5} },
+/**/ {{0X9833C0D6, 0X3FA26891} } },
+/**/ {{{0X2D345AAF, 0X3FD1FFFD} },
+/**/ {{0X053BF760, 0X3FD18BF3} },
+/**/ {{0XCC3ACB29, 0X3FEDA780} },
+/**/ {{0X2AA756AE, 0XBFCEEA62} },
+/**/ {{0X47ED9793, 0XBFC9E5B3} },
+/**/ {{0X87AB542A, 0X3FC872F8} },
+/**/ {{0X158E9E9A, 0X3FA0D0B2} } },
+/**/ {{{0XF14CF05A, 0X3FD23FFC} },
+/**/ {{0X4D568460, 0X3FD1C732} },
+/**/ {{0X55F32D3D, 0X3FED97F8} },
+/**/ {{0X21D457C8, 0XBFCF3780} },
+/**/ {{0XF065B845, 0XBFC983BE} },
+/**/ {{0XFBA70CD8, 0X3FC886FF} },
+/**/ {{0XAEB85CCC, 0X3F9E77EB} } },
+/**/ {{{0X0BAE6FC9, 0X3FD27FFE} },
+/**/ {{0X9A27C160, 0X3FD20253} },
+/**/ {{0X4619176E, 0X3FED8849} },
+/**/ {{0X5C0AC9EC, 0XBFCF8379} },
+/**/ {{0X5E645195, 0XBFC9217C} },
+/**/ {{0XF4264515, 0X3FC8990F} },
+/**/ {{0XE6B92E65, 0X3F9B551C} } },
+/**/ {{{0XA297A7DE, 0X3FD2C001} },
+/**/ {{0XACB927C0, 0X3FD23D57} },
+/**/ {{0XE4958FB6, 0X3FED7873} },
+/**/ {{0X43572249, 0XBFCFCE4E} },
+/**/ {{0X9F3560F3, 0XBFC8BEF1} },
+/**/ {{0XDF7F0E5B, 0X3FC8A92C} },
+/**/ {{0X116F3B19, 0X3F983958} } },
+/**/ {{{0X7267616A, 0X3FD2FFFE} },
+/**/ {{0XB2F378C0, 0X3FD27835} },
+/**/ {{0X13906586, 0X3FED687B} },
+/**/ {{0XAFDA1A0F, 0XBFD00BF9} },
+/**/ {{0XC197AD7D, 0XBFC85C34} },
+/**/ {{0X1E99F0A7, 0X3FC8B759} },
+/**/ {{0X6525C365, 0X3F9524FA} } },
+/**/ {{{0X48153B20, 0X3FD33FFE} },
+/**/ {{0X6A2FDCC0, 0X3FD2B2F6} },
+/**/ {{0XF827FBE4, 0X3FED585C} },
+/**/ {{0XB45A6918, 0XBFD03039} },
+/**/ {{0X5DFC3F72, 0XBFC7F93E} },
+/**/ {{0XC5210022, 0X3FC8C39B} },
+/**/ {{0X168FB62E, 0X3F92185E} } },
+/**/ {{{0X8122579A, 0X3FD38003} },
+/**/ {{0XAF6EC1E0, 0X3FD2ED9B} },
+/**/ {{0X872F20D3, 0X3FED4819} },
+/**/ {{0X1F4C1031, 0XBFD053E8} },
+/**/ {{0X621FFD79, 0XBFC79612} },
+/**/ {{0XDB9D9DFC, 0X3FC8CDF9} },
+/**/ {{0X80C6852F, 0X3F8E27B4} } },
+/**/ {{{0X3EF39141, 0X3FD3C003} },
+/**/ {{0X4668C700, 0X3FD3281B} },
+/**/ {{0X18590D1A, 0X3FED37B4} },
+/**/ {{0XA3EF2560, 0XBFD076FE} },
+/**/ {{0X3033287A, 0XBFC732C9} },
+/**/ {{0XCA2E5458, 0X3FC8D676} },
+/**/ {{0XD80944B1, 0X3F882F85} } },
+/**/ {{{0X63FA0E31, 0X3FD40001} },
+/**/ {{0X7B565000, 0X3FD36278} },
+/**/ {{0X47A813DA, 0X3FED272C} },
+/**/ {{0X493B9D88, 0XBFD0997F} },
+/**/ {{0X3DA9FE3C, 0XBFC6CF64} },
+/**/ {{0XC1CD3331, 0X3FC8DD18} },
+/**/ {{0XF70F6E07, 0X3F8248D1} } },
+/**/ {{{0X74071092, 0X3FD44003} },
+/**/ {{0X0F0A4000, 0X3FD39CB8} },
+/**/ {{0X3BA47A6B, 0X3FED1681} },
+/**/ {{0XD8788947, 0XBFD0BB6C} },
+/**/ {{0X589596A6, 0XBFC66BE2} },
+/**/ {{0XC9B3EC1E, 0X3FC8E1E5} },
+/**/ {{0XD20FAB86, 0X3F78E868} } },
+/**/ {{{0XC880F200, 0X3FD48000} },
+/**/ {{0XDEFFB460, 0X3FD3D6D1} },
+/**/ {{0XCADC576C, 0X3FED05B5} },
+/**/ {{0XA1D352C2, 0XBFD0DCC2} },
+/**/ {{0X3D7D2574, 0XBFC60858} },
+/**/ {{0X03208BC0, 0X3FC8E4E3} },
+/**/ {{0X6379E732, 0X3F6AC909} } },
+/**/ {{{0X4D97D2CB, 0X3FD4C000} },
+/**/ {{0XF3A2E220, 0X3FD410CB} },
+/**/ {{0XBB7ED511, 0X3FECF4C8} },
+/**/ {{0X37766A49, 0XBFD0FD84} },
+/**/ {{0X5AABC13C, 0XBFC5A4C2} },
+/**/ {{0XC80DAC4B, 0X3FC8E616} },
+/**/ {{0XB04695C2, 0X3F4038AA} } },
+/**/ {{{0X9397539F, 0X3FD4FFFD} },
+/**/ {{0X06A7DEC0, 0X3FD44AA2} },
+/**/ {{0XCF479DDE, 0X3FECE3BB} },
+/**/ {{0X4D122984, 0XBFD11DAF} },
+/**/ {{0XB1024DF0, 0XBFC5412E} },
+/**/ {{0X1B2C560D, 0X3FC8E587} },
+/**/ {{0X951C088D, 0XBF625DA8} } },
+/**/ {{{0XF304715F, 0X3FD53FFF} },
+/**/ {{0X791F3900, 0X3FD4845A} },
+/**/ {{0XA45E0FD8, 0X3FECD28D} },
+/**/ {{0X8D61F221, 0XBFD13D47} },
+/**/ {{0XD3E9BB99, 0XBFC4DD98} },
+/**/ {{0X0F181507, 0X3FC8E33A} },
+/**/ {{0XD08BD25C, 0XBF743C33} } },
+/**/ {{{0XE88EA386, 0X3FD58002} },
+/**/ {{0XF575D6C0, 0X3FD4BDF0} },
+/**/ {{0X02035609, 0X3FECC140} },
+/**/ {{0XB808071E, 0XBFD15C4A} },
+/**/ {{0XB2945FCF, 0XBFC47A0E} },
+/**/ {{0XFC056447, 0X3FC8DF35} },
+/**/ {{0XB00A45CD, 0XBF7F2011} } },
+/**/ {{{0X70F4D590, 0X3FD5BFFD} },
+/**/ {{0X284D7AE0, 0X3FD4F75D} },
+/**/ {{0XF2DE98B6, 0X3FECAFD5} },
+/**/ {{0XA2B42F42, 0XBFD17AB4} },
+/**/ {{0X1C285A92, 0XBFC416A5} },
+/**/ {{0X511D6C5A, 0X3FC8D982} },
+/**/ {{0X77008605, 0XBF84ECC1} } },
+/**/ {{{0XB70D6E53, 0X3FD5FFFD} },
+/**/ {{0X8E2FF500, 0X3FD530AB} },
+/**/ {{0X32D2429D, 0X3FEC9E4C} },
+/**/ {{0X35190681, 0XBFD1988C} },
+/**/ {{0XBF748319, 0XBFC3B34C} },
+/**/ {{0X98D3A613, 0X3FC8D224} },
+/**/ {{0XAA295F9F, 0XBF8A33D4} } },
+/**/ {{{0X5C7399E2, 0X3FD63FFC} },
+/**/ {{0X4F022E80, 0X3FD569D5} },
+/**/ {{0X58DD180F, 0X3FEC8CA5} },
+/**/ {{0X1D701DE4, 0XBFD1B5CE} },
+/**/ {{0XA7806A5A, 0XBFC35017} },
+/**/ {{0X56C01CF9, 0X3FC8C924} },
+/**/ {{0X942059E1, 0XBF8F64D9} } },
+/**/ {{{0X9A1AC7D2, 0X3FD67FFD} },
+/**/ {{0XF50031E0, 0X3FD5A2DD} },
+/**/ {{0XCEFF6DEB, 0X3FEC7AE0} },
+/**/ {{0X7C8C245B, 0XBFD1D27C} },
+/**/ {{0XC6AA933F, 0XBFC2ED05} },
+/**/ {{0XDDC5CF1F, 0X3FC8BE87} },
+/**/ {{0XD594386F, 0XBF923FB6} } },
+/**/ {{{0X6F7B9353, 0X3FD6BFFD} },
+/**/ {{0XB4E066C0, 0X3FD5DBC1} },
+/**/ {{0X456B591A, 0X3FEC6900} },
+/**/ {{0XC2D6D0AA, 0XBFD1EE95} },
+/**/ {{0XB11086F7, 0XBFC28A23} },
+/**/ {{0XDDE22D5A, 0X3FC8B256} },
+/**/ {{0X489D85A4, 0XBF94C19A} } },
+/**/ {{{0XF02A83E4, 0X3FD6FFFB} },
+/**/ {{0X6A237DC0, 0X3FD61480} },
+/**/ {{0X4CC81773, 0X3FEC5704} },
+/**/ {{0X4B9029CA, 0XBFD20A1A} },
+/**/ {{0X89F5FB1C, 0XBFC22777} },
+/**/ {{0X9B09E911, 0X3FC8A498} },
+/**/ {{0X130D419A, 0XBF9737EC} } },
+/**/ {{{0X128C213A, 0X3FD73FFE} },
+/**/ {{0X42499480, 0X3FD64D1E} },
+/**/ {{0X129C0D30, 0X3FEC44EC} },
+/**/ {{0X83787259, 0XBFD2250C} },
+/**/ {{0XD55BE4FC, 0XBFC1C4FF} },
+/**/ {{0X36B2D603, 0X3FC89553} },
+/**/ {{0X2E43DF46, 0XBF99A284} } },
+/**/ {{{0XEA0CDC7A, 0X3FD77FFB} },
+/**/ {{0X05B0E220, 0X3FD68594} },
+/**/ {{0X687132C0, 0X3FEC32BA} },
+/**/ {{0X7273497E, 0XBFD23F69} },
+/**/ {{0XCD39B037, 0XBFC162CE} },
+/**/ {{0XFA930AAF, 0X3FC8848F} },
+/**/ {{0XA4554412, 0XBF9C013D} } },
+/**/ {{{0XF18EDAB8, 0X3FD7C003} },
+/**/ {{0X4127BEE0, 0X3FD6BDEE} },
+/**/ {{0XC01607BD, 0X3FEC206B} },
+/**/ {{0X5FEE2F42, 0XBFD25937} },
+/**/ {{0X307761E1, 0XBFC100D4} },
+/**/ {{0X5DFEC556, 0X3FC87252} },
+/**/ {{0X7958F973, 0XBF9E53F6} } },
+/**/ {{{0X41F35C4C, 0X3FD7FFFD} },
+/**/ {{0XDA6607A0, 0X3FD6F616} },
+/**/ {{0XCDDC8437, 0X3FEC0E07} },
+/**/ {{0XBFB4DAEA, 0XBFD2726C} },
+/**/ {{0XE0DB1472, 0XBFC09F3B} },
+/**/ {{0X2A95AA1B, 0X3FC85EA9} },
+/**/ {{0XD872CFA2, 0XBFA04D47} } },
+/**/ {{{0X26C7C46B, 0X3FD84003} },
+/**/ {{0X96B8BE00, 0X3FD72E25} },
+/**/ {{0X4CDEDF38, 0X3FEBFB87} },
+/**/ {{0XD09404F3, 0XBFD28B14} },
+/**/ {{0XE7FB61F2, 0XBFC03DE1} },
+/**/ {{0XACB33BE9, 0X3FC84993} },
+/**/ {{0X9B1DE607, 0XBFA16A76} } },
+/**/ {{{0XCA90B179, 0X3FD88003} },
+/**/ {{0XA104A220, 0X3FD7660A} },
+/**/ {{0XF236E2F6, 0X3FEBE8EF} },
+/**/ {{0X19A94DDF, 0XBFD2A329} },
+/**/ {{0X0856A081, 0XBFBFB9CE} },
+/**/ {{0X33F70280, 0X3FC8331F} },
+/**/ {{0XF01308CC, 0XBFA2817A} } },
+/**/ {{{0XE9692FD5, 0X3FD8C003} },
+/**/ {{0XF0B2CB00, 0X3FD79DC9} },
+/**/ {{0XF2966495, 0X3FEBD640} },
+/**/ {{0XFD6EC2EA, 0XBFD2BAAB} },
+/**/ {{0XE08E9C2D, 0XBFBEF892} },
+/**/ {{0X031873E3, 0X3FC81B52} },
+/**/ {{0XAC12113D, 0XBFA39249} } },
+/**/ {{{0X35BE5C5F, 0X3FD8FFFE} },
+/**/ {{0XBDCCDFC0, 0X3FD7D55E} },
+/**/ {{0X6EABCF77, 0X3FEBC37C} },
+/**/ {{0X2D74F445, 0XBFD2D19C} },
+/**/ {{0XE63F2CDB, 0XBFBE382C} },
+/**/ {{0X0E6FE2AE, 0X3FC80236} },
+/**/ {{0X0E66AB41, 0XBFA49CD9} } },
+/**/ {{{0XAA8974CD, 0X3FD94002} },
+/**/ {{0XB8AFD880, 0X3FD80CD6} },
+/**/ {{0X4468CCBA, 0X3FEBB09E} },
+/**/ {{0XEC84E686, 0XBFD2E7FF} },
+/**/ {{0X88C659E8, 0XBFBD7876} },
+/**/ {{0XC2F15460, 0X3FC7E7CC} },
+/**/ {{0XB410D3ED, 0XBFA5A120} } },
+/**/ {{{0XE08EFDEA, 0X3FD98002} },
+/**/ {{0X34856920, 0X3FD84425} },
+/**/ {{0X3F290478, 0X3FEB9DAB} },
+/**/ {{0XBB81EDEF, 0XBFD2FDD2} },
+/**/ {{0X31E68398, 0XBFBCB9A5} },
+/**/ {{0XC2DBB11B, 0X3FC7CC23} },
+/**/ {{0X98467E78, 0XBFA69F19} } },
+/**/ {{{0X75294B6B, 0X3FD9C002} },
+/**/ {{0X299F6200, 0X3FD87B4D} },
+/**/ {{0XDE96CF1F, 0X3FEB8AA2} },
+/**/ {{0X8C4D45D2, 0XBFD31316} },
+/**/ {{0XEDCE4DBA, 0XBFBBFBB7} },
+/**/ {{0X8907FEC9, 0X3FC7AF41} },
+/**/ {{0X07419F55, 0XBFA796BE} } },
+/**/ {{{0XF3E490EC, 0X3FDA0002} },
+/**/ {{0XC21A4500, 0X3FD8B24F} },
+/**/ {{0X3B5EF7DD, 0X3FEB7785} },
+/**/ {{0X8EAE70CD, 0XBFD327CC} },
+/**/ {{0XD49E40DA, 0XBFBB3EB3} },
+/**/ {{0X4D93F7EA, 0X3FC7912D} },
+/**/ {{0X9E21606A, 0XBFA88809} } },
+/**/ {{{0X458461B6, 0X3FDA3FFF} },
+/**/ {{0X7754D2C0, 0X3FD8E928} },
+/**/ {{0X6A0DAF0E, 0X3FEB6454} },
+/**/ {{0XDC2A9A3F, 0XBFD33BF3} },
+/**/ {{0X4917D003, 0XBFBA82B1} },
+/**/ {{0X7C7566CF, 0X3FC771F1} },
+/**/ {{0X3D700DD8, 0XBFA972F9} } },
+/**/ {{{0X87E12AAE, 0X3FDA8002} },
+/**/ {{0XA5DFD000, 0X3FD91FE0} },
+/**/ {{0XA0D82E05, 0X3FEB510D} },
+/**/ {{0XA76AD312, 0XBFD34F90} },
+/**/ {{0XDEEC35AD, 0XBFB9C798} },
+/**/ {{0X8A0EF43E, 0X3FC75190} },
+/**/ {{0X0872EFC8, 0XBFAA578B} } },
+/**/ {{{0X49A86C84, 0X3FDAC001} },
+/**/ {{0X5C4516E0, 0X3FD9566E} },
+/**/ {{0XDD03F6B6, 0X3FEB3DB4} },
+/**/ {{0X291C1F82, 0XBFD362A0} },
+/**/ {{0X03F6DF60, 0XBFB90D95} },
+/**/ {{0X25091E92, 0X3FC73018} },
+/**/ {{0X577A022B, 0XBFAB35BE} } },
+/**/ {{{0X2F4CC2E1, 0X3FDAFFFF} },
+/**/ {{0X94226540, 0X3FD98CD4} },
+/**/ {{0X9297200A, 0X3FEB2A49} },
+/**/ {{0X5153FD01, 0XBFD37524} },
+/**/ {{0XAE3DE27E, 0XBFB854A3} },
+/**/ {{0X7EB3F331, 0X3FC70D8E} },
+/**/ {{0XB6AD570E, 0XBFAC0D93} } },
+/**/ {{{0XC2F3711E, 0X3FDB4000} },
+/**/ {{0X01CDC4C0, 0X3FD9C317} },
+/**/ {{0XEA63781B, 0X3FEB16CA} },
+/**/ {{0X3665B649, 0XBFD3871F} },
+/**/ {{0X3F70FBC6, 0XBFB79CC0} },
+/**/ {{0X061DFC2E, 0X3FC6E9F9} },
+/**/ {{0XD837F9C3, 0XBFACDF0C} } },
+/**/ {{{0XA777E180, 0X3FDB8000} },
+/**/ {{0XF3748F20, 0X3FD9F930} },
+/**/ {{0X0FB0162A, 0X3FEB033B} },
+/**/ {{0X25978CAB, 0XBFD39890} },
+/**/ {{0X5C765AAB, 0XBFB6E602} },
+/**/ {{0X9C16D678, 0X3FC6C562} },
+/**/ {{0X92A16EBF, 0XBFADAA2C} } },
+/**/ {{{0X087E14ED, 0X3FDBBFFD} },
+/**/ {{0XBF0DDB00, 0X3FDA2F20} },
+/**/ {{0X1CCE6E94, 0X3FEAEF9B} },
+/**/ {{0X8B73E3C3, 0XBFD3A977} },
+/**/ {{0X09EFD1CC, 0XBFB63077} },
+/**/ {{0X58408D3A, 0X3FC69FD4} },
+/**/ {{0XD2E48013, 0XBFAE6EF6} } },
+/**/ {{{0XF0086783, 0X3FDC0000} },
+/**/ {{0X8D448080, 0X3FDA64EF} },
+/**/ {{0X35990B5A, 0X3FEADBE8} },
+/**/ {{0X27241B86, 0XBFD3B9D9} },
+/**/ {{0XC20E4001, 0XBFB57C06} },
+/**/ {{0X90E6C8AB, 0X3FC6794F} },
+/**/ {{0X9A630A27, 0XBFAF2D70} } },
+/**/ {{{0X863E58F8, 0X3FDC4001} },
+/**/ {{0X1C3A1BA0, 0X3FDA9A94} },
+/**/ {{0X35ED7DD2, 0X3FEAC826} },
+/**/ {{0X0C075B50, 0XBFD3C9B3} },
+/**/ {{0XA429793C, 0XBFB4C8D7} },
+/**/ {{0X95903C22, 0X3FC651E2} },
+/**/ {{0XF0F8B649, 0XBFAFE59F} } },
+/**/ {{{0X6C62C3BF, 0X3FDC7FFC} },
+/**/ {{0X580A5840, 0X3FDAD00C} },
+/**/ {{0X62D1D808, 0X3FEAB456} },
+/**/ {{0XACBB06EC, 0XBFD3D905} },
+/**/ {{0X421E42DC, 0XBFB416F7} },
+/**/ {{0XE5608EFD, 0X3FC62996} },
+/**/ {{0XF14B649A, 0XBFB04BC5} } },
+/**/ {{{0X34B2A209, 0X3FDCC002} },
+/**/ {{0XF68F3B40, 0X3FDB0565} },
+/**/ {{0X1E3DC946, 0X3FEAA074} },
+/**/ {{0XE2DB674E, 0XBFD3E7D5} },
+/**/ {{0XA4833FFE, 0XBFB3663E} },
+/**/ {{0XC4F0392B, 0X3FC60069} },
+/**/ {{0X38B10201, 0XBFB0A19E} } },
+/**/ {{{0XAAC5F9F9, 0X3FDCFFFC} },
+/**/ {{0X59C45CC0, 0X3FDB3A8E} },
+/**/ {{0XD2389C24, 0X3FEA8C86} },
+/**/ {{0X8362B2CB, 0XBFD3F61F} },
+/**/ {{0XC6C746A6, 0XBFB2B6F1} },
+/**/ {{0X426D2946, 0X3FC5D671} },
+/**/ {{0X4981CE75, 0XBFB0F45D} } },
+/**/ {{{0X0D800C64, 0X3FDD4004} },
+/**/ {{0X88AF6580, 0X3FDB6F99} },
+/**/ {{0X7498CED2, 0X3FEA7887} },
+/**/ {{0XEF8975C0, 0XBFD403E8} },
+/**/ {{0XBEA81E2B, 0XBFB208D4} },
+/**/ {{0X283FFA4E, 0X3FC5ABA5} },
+/**/ {{0X11705130, 0XBFB14408} } },
+/**/ {{{0XB0E64500, 0X3FDD7FFE} },
+/**/ {{0X2324E140, 0X3FDBA472} },
+/**/ {{0X8C5AD680, 0X3FEA647E} },
+/**/ {{0XA03F042D, 0XBFD4112D} },
+/**/ {{0X9580389C, 0XBFB15C33} },
+/**/ {{0X49D9889E, 0X3FC5801E} },
+/**/ {{0XEF96554F, 0XBFB190A3} } },
+/**/ {{{0X2DFCF4EB, 0X3FDDBFFE} },
+/**/ {{0X9F1D27A0, 0X3FDBD926} },
+/**/ {{0X1AC286CA, 0X3FEA5067} },
+/**/ {{0X590A4DE1, 0XBFD41DF2} },
+/**/ {{0X8BD1EFA5, 0XBFB0B0E4} },
+/**/ {{0X702506D0, 0X3FC553D8} },
+/**/ {{0XADA415A6, 0XBFB1DA36} } },
+/**/ {{{0X8A34BBC2, 0X3FDDFFFD} },
+/**/ {{0XC4F7A2C0, 0X3FDC0DB2} },
+/**/ {{0X2EF70BB3, 0X3FEA3C43} },
+/**/ {{0X16EE647C, 0XBFD42A37} },
+/**/ {{0XDB6270BB, 0XBFB006FA} },
+/**/ {{0X86F08DE6, 0X3FC526DE} },
+/**/ {{0X7E5061FB, 0XBFB220C6} } },
+/**/ {{{0XD26415C0, 0X3FDE3FFD} },
+/**/ {{0X58282940, 0X3FDC4217} },
+/**/ {{0XF391DDCB, 0X3FEA2812} },
+/**/ {{0X18EDDF0A, 0XBFD435FD} },
+/**/ {{0X88A589AF, 0XBFAEBCF2} },
+/**/ {{0X4CF96163, 0X3FC4F937} },
+/**/ {{0XF6A18481, 0XBFB26459} } },
+/**/ {{{0X37F72672, 0X3FDE7FFF} },
+/**/ {{0X67AA3DC0, 0X3FDC7654} },
+/**/ {{0XD6CE86B3, 0X3FEA13D6} },
+/**/ {{0X74037E91, 0XBFD44145} },
+/**/ {{0X3B2CC445, 0XBFAD6EC9} },
+/**/ {{0X0564F101, 0X3FC4CAEA} },
+/**/ {{0X0C49CD64, 0XBFB2A4F8} } },
+/**/ {{{0XA11BC00F, 0X3FDEBFFD} },
+/**/ {{0X85E23660, 0X3FDCAA66} },
+/**/ {{0XA25C2396, 0X3FE9FF90} },
+/**/ {{0X8A64724F, 0XBFD44C10} },
+/**/ {{0X2F871E82, 0XBFAC2399} },
+/**/ {{0X0AFBFB85, 0X3FC49C01} },
+/**/ {{0X0F0FF3FE, 0XBFB2E2A8} } },
+/**/ {{{0X3313756D, 0X3FDEFFFF} },
+/**/ {{0X9D30CC20, 0X3FDCDE52} },
+/**/ {{0XDFF9491F, 0X3FE9EB3E} },
+/**/ {{0X7E6ABAAE, 0XBFD45660} },
+/**/ {{0X3E8AA98D, 0XBFAADB4C} },
+/**/ {{0X25D8FF7D, 0X3FC46C7F} },
+/**/ {{0XA71D448D, 0XBFB31D71} } },
+/**/ {{{0X914B856E, 0X3FDF4001} },
+/**/ {{0XAAC1BB20, 0X3FDD1216} },
+/**/ {{0XC9BC4315, 0X3FE9D6E2} },
+/**/ {{0X004E7E91, 0XBFD46036} },
+/**/ {{0XFB901F89, 0XBFA995F7} },
+/**/ {{0X3F5BE04A, 0X3FC43C6D} },
+/**/ {{0XCE8ABF92, 0XBFB3555C} } },
+/**/ {{{0XCD144428, 0X3FDF8003} },
+/**/ {{0XD93E9640, 0X3FDD45B1} },
+/**/ {{0X256FDFEB, 0X3FE9C27D} },
+/**/ {{0X09F7C145, 0XBFD46992} },
+/**/ {{0XED521174, 0XBFA853A9} },
+/**/ {{0X2B27751F, 0X3FC40BD3} },
+/**/ {{0XCFA5C5F2, 0XBFB38A71} } },
+/**/ {{{0X00545BD9, 0X3FDFC002} },
+/**/ {{0XF536D960, 0X3FDD7920} },
+/**/ {{0XAAE99EA5, 0X3FE9AE0F} },
+/**/ {{0X38DD66F4, 0XBFD47275} },
+/**/ {{0XB5484F74, 0XBFA7147D} },
+/**/ {{0XF8EFC373, 0X3FC3DABA} },
+/**/ {{0X3EA6B864, 0XBFB3BCB9} } },
+/**/ {{{0XDA6F2AA8, 0X3FDFFFFB} },
+/**/ {{0XB420FAA0, 0X3FDDAC63} },
+/**/ {{0XED4D0CAB, 0X3FE9999A} },
+/**/ {{0XBFCC6072, 0XBFD47AE0} },
+/**/ {{0X25BF7A4A, 0XBFA5D87C} },
+/**/ {{0XF5999EE5, 0X3FC3A92B} },
+/**/ {{0XF7F09D08, 0XBFB3EC3B} } },
+/**/ {{{0XA65118C8, 0X3FE01FFF} },
+/**/ {{0X2BF70C00, 0X3FDDDF85} },
+/**/ {{0XECD72AE5, 0X3FE9851A} },
+/**/ {{0X8F5794C5, 0XBFD482D7} },
+/**/ {{0X2E4A020B, 0XBFA49F68} },
+/**/ {{0X25A156DA, 0X3FC37722} },
+/**/ {{0X19F58064, 0XBFB41903} } },
+/**/ {{{0X9C0B0556, 0X3FE04001} },
+/**/ {{0XFA2BA200, 0X3FDE127D} },
+/**/ {{0X08C17A55, 0X3FE97093} },
+/**/ {{0X957A7EFD, 0XBFD48A59} },
+/**/ {{0X2648F2BB, 0XBFA36976} },
+/**/ {{0X592569B1, 0X3FC344AB} },
+/**/ {{0X03752DDB, 0XBFB44318} } },
+/**/ {{{0XC24501DB, 0X3FE05FFF} },
+/**/ {{0XA495BCC0, 0X3FDE4547} },
+/**/ {{0X4F225B79, 0X3FE95C06} },
+/**/ {{0X2163F5B8, 0XBFD49167} },
+/**/ {{0X4B79B89F, 0XBFA236D3} },
+/**/ {{0XB530B7BE, 0X3FC311D4} },
+/**/ {{0X4D931476, 0XBFB46A84} } },
+/**/ {{{0X865125FC, 0X3FE07FFE} },
+/**/ {{0X2A5FAD60, 0X3FDE77E9} },
+/**/ {{0X5C13B0EA, 0X3FE94772} },
+/**/ {{0X6F33ABCA, 0XBFD49802} },
+/**/ {{0XDE947C6B, 0XBFA1075A} },
+/**/ {{0XD8D5E01B, 0X3FC2DE9D} },
+/**/ {{0XCA17CA60, 0XBFB48F51} } },
+/**/ {{{0X107EAC25, 0X3FE0A002} },
+/**/ {{0X08243180, 0X3FDEAA69} },
+/**/ {{0XF339824B, 0X3FE932D4} },
+/**/ {{0X7145F475, 0XBFD49E2D} },
+/**/ {{0X00571424, 0XBF9FB5D8} },
+/**/ {{0X85D1CF84, 0X3FC2AB06} },
+/**/ {{0X7DBBBABE, 0XBFB4B18A} } },
+/**/ {{{0X7376E5D4, 0X3FE0BFFF} },
+/**/ {{0XF79FF560, 0X3FDEDCB5} },
+/**/ {{0X8EE1B492, 0X3FE91E35} },
+/**/ {{0X49498453, 0XBFD4A3E7} },
+/**/ {{0XBE685C6F, 0XBF9D63E4} },
+/**/ {{0XC4B1F032, 0X3FC27726} },
+/**/ {{0X9E6ECC3A, 0XBFB4D138} } },
+/**/ {{{0X1715EE2E, 0X3FE0DFFE} },
+/**/ {{0X9BE1BB80, 0X3FDF0EDB} },
+/**/ {{0XD993BD60, 0X3FE9098F} },
+/**/ {{0X9B84E907, 0XBFD4A932} },
+/**/ {{0XE07DBA5E, 0XBF9B185A} },
+/**/ {{0XF2D7A804, 0X3FC242F8} },
+/**/ {{0X8DDAA340, 0XBFB4EE66} } },
+/**/ {{{0X7F3D776C, 0X3FE10001} },
+/**/ {{0X6119E100, 0X3FDF40DF} },
+/**/ {{0XFB44BCFB, 0X3FE8F4E1} },
+/**/ {{0X16E3467E, 0XBFD4AE11} },
+/**/ {{0XCF368422, 0XBF98D304} },
+/**/ {{0X736708AE, 0X3FC20E7D} },
+/**/ {{0XD7B3658D, 0XBFB5091E} } },
+/**/ {{{0XFD8C7B65, 0X3FE11FFE} },
+/**/ {{0X8FD21560, 0X3FDF72B0} },
+/**/ {{0X4770FB0A, 0X3FE8E033} },
+/**/ {{0X5C0F6783, 0XBFD4B282} },
+/**/ {{0X7FFE0364, 0XBF9694AC} },
+/**/ {{0XE529BF4C, 0X3FC1D9CB} },
+/**/ {{0X2C73E5F0, 0XBFB5216C} } },
+/**/ {{{0XAFA3EE71, 0X3FE14000} },
+/**/ {{0XE3324D60, 0X3FDFA45E} },
+/**/ {{0X9FF684DF, 0X3FE8CB7D} },
+/**/ {{0X17ADD34D, 0XBFD4B689} },
+/**/ {{0X67276E70, 0XBF945CA3} },
+/**/ {{0XA1FBF3B1, 0X3FC1A4D9} },
+/**/ {{0X5FBA2374, 0XBFB53759} } },
+/**/ {{{0X73336187, 0X3FE15FFF} },
+/**/ {{0X3DE48D00, 0X3FDFD5DF} },
+/**/ {{0X0CBE3546, 0X3FE8B6C6} },
+/**/ {{0X9B291BCB, 0XBFD4BA25} },
+/**/ {{0X5FB712CC, 0XBF922B6F} },
+/**/ {{0X55E28B0B, 0X3FC16FB8} },
+/**/ {{0X633F423C, 0XBFB54AF1} } },
+/**/ {{{0X6C447B82, 0X3FE17FFF} },
+/**/ {{0X0208ECC0, 0X3FE0039C} },
+/**/ {{0X48F15926, 0X3FE8A20A} },
+/**/ {{0XA5808AC3, 0XBFD4BD59} },
+/**/ {{0X5EEF6F2A, 0XBF9000CD} },
+/**/ {{0XEBE54AA7, 0X3FC13A66} },
+/**/ {{0X45420CE4, 0XBFB55C3F} } },
+/**/ {{{0XAE932B61, 0X3FE19FFF} },
+/**/ {{0XE0091BC0, 0X3FE01C33} },
+/**/ {{0X55664E00, 0X3FE88D4B} },
+/**/ {{0X579F5ABB, 0XBFD4C026} },
+/**/ {{0X8797C32A, 0XBF8BB9A6} },
+/**/ {{0X95D4F64E, 0X3FC104EC} },
+/**/ {{0X2BBC325E, 0XBFB56B4E} } },
+/**/ {{{0XBA12AE50, 0X3FE1BFFF} },
+/**/ {{0XD3ABA020, 0X3FE034B6} },
+/**/ {{0XEBDCCF04, 0X3FE87889} },
+/**/ {{0XE6D463C1, 0XBFD4C28C} },
+/**/ {{0XB36211FC, 0XBF877F1C} },
+/**/ {{0XB90B11E7, 0X3FC0CF4F} },
+/**/ {{0X52DCBE1A, 0XBFB57829} } },
+/**/ {{{0X4B459E41, 0X3FE1E001} },
+/**/ {{0X2DC05800, 0X3FE04D26} },
+/**/ {{0X51625B6A, 0X3FE863C5} },
+/**/ {{0XAFFDD399, 0XBFD4C48E} },
+/**/ {{0X603059CA, 0XBF8351CB} },
+/**/ {{0XDE65D0D9, 0X3FC09992} },
+/**/ {{0X087BB367, 0XBFB582DC} } },
+/**/ {{{0X32306F33, 0X3FE20000} },
+/**/ {{0XBAFB6CE0, 0X3FE0657E} },
+/**/ {{0XA1E2EEC3, 0X3FE84F00} },
+/**/ {{0XB79EC8C6, 0XBFD4C62C} },
+/**/ {{0XD95DE8D1, 0XBF7E6488} },
+/**/ {{0X661DF241, 0X3FC063C2} },
+/**/ {{0XAAA63BAD, 0XBFB58B71} } },
+/**/ {{{0XD30A486C, 0X3FE22000} },
+/**/ {{0XD2165080, 0X3FE07DC3} },
+/**/ {{0X66B3E5BF, 0X3FE83A39} },
+/**/ {{0X7DE04DEE, 0XBFD4C768} },
+/**/ {{0X800F052F, 0XBF763FF7} },
+/**/ {{0X28F35EDD, 0X3FC02DDC} },
+/**/ {{0XA351CF91, 0XBFB591F5} } },
+/**/ {{{0X215E03FC, 0X3FE23FFE} },
+/**/ {{0X9F380A00, 0X3FE095F1} },
+/**/ {{0X48BE5F3F, 0X3FE82573} },
+/**/ {{0X1B793F77, 0XBFD4C843} },
+/**/ {{0X625993B8, 0XBF6C6E63} },
+/**/ {{0X8C5E4B3B, 0X3FBFEFDB} },
+/**/ {{0X66FE9CA7, 0XBFB59673} } },
+/**/ {{{0X6833D65D, 0X3FE26000} },
+/**/ {{0X6496A8C0, 0X3FE0AE0E} },
+/**/ {{0X45B44AA3, 0X3FE810A9} },
+/**/ {{0X055B407A, 0XBFD4C8BE} },
+/**/ {{0XAE83F0A4, 0XBF5920A7} },
+/**/ {{0X860A6A5E, 0X3FBF83DC} },
+/**/ {{0X70D98EE7, 0XBFB598F6} } },
+/**/ {{{0XE82D4D50, 0X3FE28000} },
+/**/ {{0X095F5300, 0X3FE0C615} },
+/**/ {{0X1E9337B7, 0X3FE7FBE0} },
+/**/ {{0X573C6F6A, 0XBFD4C8DA} },
+/**/ {{0XC50F565D, 0X3F38B6C7} },
+/**/ {{0XC9C4B6CA, 0X3FBF17DB} },
+/**/ {{0X45D6DAE0, 0XBFB5998A} } },
+/**/ {{{0X203B6A0B, 0X3FE29FFF} },
+/**/ {{0X30852720, 0X3FE0DE05} },
+/**/ {{0X8520538D, 0X3FE7E718} },
+/**/ {{0X668C6963, 0XBFD4C899} },
+/**/ {{0XBECA8AB0, 0X3F6286EC} },
+/**/ {{0X9B6AC5BD, 0X3FBEABE4} },
+/**/ {{0X575A9684, 0XBFB5983A} } },
+/**/ {{{0XE91A9D93, 0X3FE2C001} },
+/**/ {{0XF7817A20, 0X3FE0F5E3} },
+/**/ {{0X63A45D97, 0X3FE7D24E} },
+/**/ {{0X5F83C46D, 0XBFD4C7FC} },
+/**/ {{0X5D9C800A, 0X3F70E199} },
+/**/ {{0X3721A8E0, 0X3FBE3FE9} },
+/**/ {{0X377DA840, 0XBFB59512} } },
+/**/ {{{0XC6FB4948, 0X3FE2DFFF} },
+/**/ {{0X4CE36040, 0X3FE10DAA} },
+/**/ {{0X3E39011F, 0X3FE7BD88} },
+/**/ {{0XB5EAE11F, 0XBFD4C704} },
+/**/ {{0X192C622B, 0X3F786398} },
+/**/ {{0XB62BA357, 0X3FBDD412} },
+/**/ {{0X5F0E020E, 0XBFB5901D} } },
+/**/ {{{0X39CB4EED, 0X3FE2FFFF} },
+/**/ {{0X0970AD60, 0X3FE1255D} },
+/**/ {{0X365B7A9B, 0X3FE7A8C2} },
+/**/ {{0X8925F532, 0XBFD4C5B3} },
+/**/ {{0X785E3070, 0X3F7FCB03} },
+/**/ {{0X0EEDF3B3, 0X3FBD6854} },
+/**/ {{0X479C252A, 0XBFB58967} } },
+/**/ {{{0X002E31CB, 0X3FE31FFE} },
+/**/ {{0X81FD3780, 0X3FE13CFA} },
+/**/ {{0X1BBE9667, 0X3FE793FE} },
+/**/ {{0X3046F4C7, 0XBFD4C40A} },
+/**/ {{0X8F5E6BF1, 0X3F838BAE} },
+/**/ {{0X83775C98, 0X3FBCFCBD} },
+/**/ {{0X62E887AB, 0XBFB580FB} } },
+/**/ {{{0XEDC7BFFD, 0X3FE34000} },
+/**/ {{0X44D05200, 0X3FE15486} },
+/**/ {{0X244A1DA5, 0X3FE77F39} },
+/**/ {{0X9FB764C1, 0XBFD4C209} },
+/**/ {{0X851B0BE5, 0X3F8724E2} },
+/**/ {{0X507C76E0, 0X3FBC9147} },
+/**/ {{0X19C7F0AB, 0XBFB576E5} } },
+/**/ {{{0XCE042830, 0X3FE36001} },
+/**/ {{0XC1656AE0, 0X3FE16BFB} },
+/**/ {{0XAD3B2B77, 0X3FE76A77} },
+/**/ {{0X74AAC296, 0XBFD4BFB3} },
+/**/ {{0X05B229C2, 0X3F8AB070} },
+/**/ {{0X87DCA54B, 0X3FBC260E} },
+/**/ {{0XC90DF763, 0XBFB56B2F} } },
+/**/ {{{0X89B8FC54, 0X3FE37FFE} },
+/**/ {{0X77D0BA80, 0X3FE18359} },
+/**/ {{0X660CAA3D, 0X3FE755BB} },
+/**/ {{0X308BB975, 0XBFD4BD09} },
+/**/ {{0XFE0A1240, 0X3F8E2E26} },
+/**/ {{0X18790F26, 0X3FBBBB22} },
+/**/ {{0XC094F3DA, 0XBFB55DE6} } },
+/**/ {{{0X9B4DA842, 0X3FE3A001} },
+/**/ {{0X100CD140, 0X3FE19AA7} },
+/**/ {{0XD801F889, 0X3FE740FD} },
+/**/ {{0X2C32C656, 0XBFD4BA0B} },
+/**/ {{0X8ECA44A2, 0X3F90CF99} },
+/**/ {{0XC9863443, 0X3FBB5066} },
+/**/ {{0X406672B5, 0XBFB54F15} } },
+/**/ {{{0XCE6B63E8, 0X3FE3C000} },
+/**/ {{0X1D0B0AE0, 0X3FE1B1DD} },
+/**/ {{0XF28670E6, 0X3FE72C45} },
+/**/ {{0X92422E2E, 0XBFD4B6BB} },
+/**/ {{0XA0D32146, 0X3F928141} },
+/**/ {{0X37452321, 0X3FBAE606} },
+/**/ {{0X77D91F56, 0XBFB53EC6} } },
+/**/ {{{0X114A2607, 0X3FE3DFFF} },
+/**/ {{0XC6FF6F20, 0X3FE1C8FD} },
+/**/ {{0X206847A7, 0X3FE71792} },
+/**/ {{0X669BD306, 0XBFD4B31B} },
+/**/ {{0X04FFD28A, 0X3F942C3A} },
+/**/ {{0XE7FC0825, 0X3FBA7BFD} },
+/**/ {{0X82F471BA, 0XBFB52D05} } },
+/**/ {{{0XC1DA9B7D, 0X3FE3FFFF} },
+/**/ {{0X7F2E8840, 0X3FE1E00B} },
+/**/ {{0X84371133, 0X3FE702E0} },
+/**/ {{0X8012FBE4, 0XBFD4AF2B} },
+/**/ {{0XBFC47F4B, 0X3F95D0B4} },
+/**/ {{0XD80AB6C5, 0X3FBA1249} },
+/**/ {{0X69A4108D, 0XBFB519DD} } },
+/**/ {{{0XE11D9C33, 0X3FE41FFE} },
+/**/ {{0X67C3EC20, 0X3FE1F703} },
+/**/ {{0X026A76A0, 0X3FE6EE34} },
+/**/ {{0X96514B12, 0XBFD4AAED} },
+/**/ {{0X07BA2905, 0X3F976E83} },
+/**/ {{0X261A1221, 0X3FB9A8FE} },
+/**/ {{0X1D552BA0, 0XBFB50559} } },
+/**/ {{{0XFA174676, 0X3FE43FFF} },
+/**/ {{0X0FAFF860, 0X3FE20DE8} },
+/**/ {{0X9EA6D162, 0X3FE6D98A} },
+/**/ {{0X6B927B3B, 0XBFD4A662} },
+/**/ {{0XF84ADBB0, 0X3F9905D8} },
+/**/ {{0XDD484DB5, 0X3FB94015} },
+/**/ {{0X783EEF44, 0XBFB4EF83} } },
+/**/ {{{0X0D457FA4, 0X3FE45FFF} },
+/**/ {{0X9F675300, 0X3FE224B6} },
+/**/ {{0X3A093351, 0X3FE6C4E7} },
+/**/ {{0XCBF2BFF8, 0XBFD4A18B} },
+/**/ {{0X84BB8C16, 0X3F9A968A} },
+/**/ {{0X93FBB975, 0X3FB8D7A4} },
+/**/ {{0X3B37E4FB, 0XBFB4D867} } },
+/**/ {{{0X8F910E57, 0X3FE47FFE} },
+/**/ {{0XDD92B840, 0X3FE23B70} },
+/**/ {{0X89B04359, 0X3FE6B048} },
+/**/ {{0X974B07FF, 0XBFD49C6A} },
+/**/ {{0X25F20251, 0X3F9C20BE} },
+/**/ {{0X82E9673D, 0X3FB86FA8} },
+/**/ {{0X0D12F550, 0XBFB4C00F} } },
+/**/ {{{0X7323FC6B, 0X3FE4A001} },
+/**/ {{0XE34E3420, 0X3FE25218} },
+/**/ {{0XF277FE27, 0X3FE69BAC} },
+/**/ {{0X7F856ABA, 0XBFD496FF} },
+/**/ {{0X9928150C, 0X3F9DA49E} },
+/**/ {{0X3EB66A26, 0X3FB8081E} },
+/**/ {{0X78AB06C5, 0XBFB4A685} } },
+/**/ {{{0XB1BF0500, 0X3FE4C000} },
+/**/ {{0XBD8B2C80, 0X3FE268A9} },
+/**/ {{0X42ABBD42, 0X3FE68719} },
+/**/ {{0XEC74E64A, 0XBFD4914C} },
+/**/ {{0XD0C3EEEC, 0X3F9F21DE} },
+/**/ {{0X5B30AA05, 0X3FB7A122} },
+/**/ {{0XEC53EF43, 0XBFB48BD4} } },
+/**/ {{{0X1D07207B, 0X3FE4E001} },
+/**/ {{0XDA64F7A0, 0X3FE27F26} },
+/**/ {{0XA7CFBEB2, 0X3FE6728A} },
+/**/ {{0X3FCBB247, 0XBFD48B53} },
+/**/ {{0XA7354A41, 0X3FA04C60} },
+/**/ {{0XEFF6F27A, 0X3FB73AAA} },
+/**/ {{0XB81A6BB2, 0XBFB47007} } },
+/**/ {{{0X5F36EB46, 0X3FE4FFFE} },
+/**/ {{0X35DDD180, 0X3FE2958D} },
+/**/ {{0X307B6AF3, 0X3FE65E04} },
+/**/ {{0X828BB6E6, 0XBFD48514} },
+/**/ {{0X48993ED9, 0X3FA1048E} },
+/**/ {{0X468D7C59, 0X3FB6D4CB} },
+/**/ {{0X0D484989, 0XBFB45328} } },
+/**/ {{{0X2AFDF759, 0X3FE52001} },
+/**/ {{0XEB1C3280, 0X3FE2ABE2} },
+/**/ {{0X8DC5DAAD, 0X3FE64980} },
+/**/ {{0X2C11E3B7, 0XBFD47E90} },
+/**/ {{0X88E1B343, 0X3FA1B9AE} },
+/**/ {{0XFF4501BF, 0X3FB66F6C} },
+/**/ {{0XFCD6B8DE, 0XBFB4353F} } },
+/**/ {{{0XDFDB2423, 0X3FE54001} },
+/**/ {{0XAB0402C0, 0X3FE2C222} },
+/**/ {{0XE7E657FB, 0X3FE63504} },
+/**/ {{0XEEE53FA9, 0XBFD477C8} },
+/**/ {{0X696CD845, 0X3FA26B9A} },
+/**/ {{0X6A3AA6EF, 0X3FB60AAD} },
+/**/ {{0X7704E1F4, 0XBFB41659} } },
+/**/ {{{0X72D2A74F, 0X3FE55FFE} },
+/**/ {{0X16BE7240, 0X3FE2D84B} },
+/**/ {{0XCE54AEDE, 0X3FE62092} },
+/**/ {{0X7B764156, 0XBFD470C0} },
+/**/ {{0X4D9ABEE7, 0X3FA31A4C} },
+/**/ {{0XA899A63D, 0X3FB5A697} },
+/**/ {{0X49FA7FB1, 0XBFB3F67E} } },
+/**/ {{{0XEE716C33, 0X3FE58000} },
+/**/ {{0X284F3FE0, 0X3FE2EE63} },
+/**/ {{0X181C5720, 0X3FE60C24} },
+/**/ {{0XC383B0C1, 0XBFD46975} },
+/**/ {{0XC40A1A5A, 0X3FA3C5FF} },
+/**/ {{0X0B7B3B72, 0X3FB54311} },
+/**/ {{0X21700401, 0XBFB3D5B8} } },
+/**/ {{{0X9825CD2A, 0X3FE59FFF} },
+/**/ {{0X2DEFCF40, 0X3FE30464} },
+/**/ {{0X3C14A317, 0X3FE5F7BF} },
+/**/ {{0X227A4CDE, 0XBFD461EC} },
+/**/ {{0X6DA8D837, 0X3FA46E85} },
+/**/ {{0X6162F4C8, 0X3FB4E03C} },
+/**/ {{0X857F5976, 0XBFB3B410} } },
+/**/ {{{0XFE2A42CD, 0X3FE5BFFD} },
+/**/ {{0XA5110DC0, 0X3FE31A50} },
+/**/ {{0X33CF1268, 0X3FE5E362} },
+/**/ {{0XF68B7DBC, 0XBFD45A23} },
+/**/ {{0XDE40F0E9, 0X3FA513F5} },
+/**/ {{0XDE05901E, 0X3FB47E12} },
+/**/ {{0XDA5CABB5, 0XBFB39190} } },
+/**/ {{{0X57330799, 0X3FE5E000} },
+/**/ {{0X75253480, 0X3FE3302B} },
+/**/ {{0X901DA45A, 0X3FE5CF0A} },
+/**/ {{0X552754CF, 0XBFD4521D} },
+/**/ {{0XBBF000BB, 0X3FA5B66B} },
+/**/ {{0XD2BAF7B2, 0X3FB41C8B} },
+/**/ {{0X5F53241A, 0XBFB36E42} } },
+/**/ {{{0X4D6055DA, 0X3FE60001} },
+/**/ {{0XFF2EDA60, 0X3FE345F0} },
+/**/ {{0XF2EA5900, 0X3FE5BABB} },
+/**/ {{0XB2008754, 0XBFD449DA} },
+/**/ {{0X18F56FBB, 0X3FA655D1} },
+/**/ {{0X89A0C1B2, 0X3FB3BBBB} },
+/**/ {{0X2E8D60FC, 0XBFB34A2E} } },
+/**/ {{{0X2C3809CB, 0X3FE62001} },
+/**/ {{0X812D5040, 0X3FE35BA1} },
+/**/ {{0X671E49E9, 0X3FE5A676} },
+/**/ {{0X230E6216, 0XBFD4415D} },
+/**/ {{0X6B05C7F7, 0X3FA6F22D} },
+/**/ {{0XCFE6B72B, 0X3FB35BA4} },
+/**/ {{0X3C3BFA3B, 0XBFB3255D} } },
+/**/ {{{0X87B47ECC, 0X3FE64000} },
+/**/ {{0X69715580, 0X3FE3713D} },
+/**/ {{0XC8FB0E69, 0X3FE59239} },
+/**/ {{0XA5BD1F6E, 0XBFD438A5} },
+/**/ {{0X7F9B13CF, 0X3FA78B89} },
+/**/ {{0X74F57C8F, 0X3FB2FC49} },
+/**/ {{0X566CAACA, 0XBFB2FFD8} } },
+/**/ {{{0XA746397F, 0X3FE66000} },
+/**/ {{0X9D968940, 0X3FE386C5} },
+/**/ {{0X83073C58, 0X3FE57E05} },
+/**/ {{0XFE3D0083, 0XBFD42FB4} },
+/**/ {{0X4B9E1EEB, 0X3FA821F1} },
+/**/ {{0X1952EE82, 0X3FB29DA9} },
+/**/ {{0X245866A8, 0XBFB2D9A8} } },
+/**/ {{{0XE4E3094B, 0X3FE68000} },
+/**/ {{0XB5FE3900, 0X3FE39C39} },
+/**/ {{0X36DD131E, 0X3FE569DA} },
+/**/ {{0X74778FE0, 0XBFD4268C} },
+/**/ {{0X9AB0310F, 0X3FA8B567} },
+/**/ {{0XF2E43205, 0X3FB23FC8} },
+/**/ {{0X26483573, 0XBFB2B2D5} } },
+/**/ {{{0XE2E37787, 0X3FE6A001} },
+/**/ {{0X27D52620, 0X3FE3B19A} },
+/**/ {{0XB5D865CD, 0X3FE555B7} },
+/**/ {{0XF1600CD3, 0XBFD41D2C} },
+/**/ {{0X4B79E859, 0X3FA945F5} },
+/**/ {{0X46A0B02D, 0X3FB1E2AA} },
+/**/ {{0XB508A35B, 0XBFB28B67} } },
+/**/ {{{0X0DF4BBFB, 0X3FE6BFFE} },
+/**/ {{0X46F2B6E0, 0X3FE3C6E3} },
+/**/ {{0XB658AFBE, 0X3FE541A1} },
+/**/ {{0X388DA137, 0XBFD41399} },
+/**/ {{0XE5B3C2BA, 0X3FA9D387} },
+/**/ {{0X173397F9, 0X3FB18660} },
+/**/ {{0X01DB4945, 0XBFB26368} } },
+/**/ {{{0XEA406CEA, 0X3FE6DFFF} },
+/**/ {{0X1BB3D400, 0X3FE3DC1C} },
+/**/ {{0XD33FFE8E, 0X3FE52D91} },
+/**/ {{0X36BCFFE9, 0XBFD409CF} },
+/**/ {{0X174405AF, 0X3FAA5E54} },
+/**/ {{0XDC041806, 0X3FB12ACE} },
+/**/ {{0X160D6557, 0XBFB23ADE} } },
+/**/ {{{0XED01EA65, 0X3FE70000} },
+/**/ {{0X54E51400, 0X3FE3F140} },
+/**/ {{0X5C8B9119, 0X3FE5198C} },
+/**/ {{0XF2EA4FF7, 0XBFD3FFD1} },
+/**/ {{0X308C81CD, 0X3FAAE643} },
+/**/ {{0X1960AAF7, 0X3FB0D00C} },
+/**/ {{0XD2F50D25, 0XBFB211D1} } },
+/**/ {{{0X00D515EB, 0X3FE72002} },
+/**/ {{0X983BB3E0, 0X3FE40650} },
+/**/ {{0XF2175C71, 0X3FE50590} },
+/**/ {{0X361BB15C, 0XBFD3F5A2} },
+/**/ {{0X9B536AFC, 0X3FAB6B5F} },
+/**/ {{0XA731624D, 0X3FB07617} },
+/**/ {{0XF1A8C054, 0XBFB1E84A} } },
+/**/ {{{0X1323DE6D, 0X3FE74001} },
+/**/ {{0X9483E720, 0X3FE41B4B} },
+/**/ {{0X1027BA01, 0X3FE4F1A1} },
+/**/ {{0XBB978C8F, 0XBFD3EB41} },
+/**/ {{0X7765626A, 0X3FABEDA7} },
+/**/ {{0X97F58C8A, 0X3FB01CF9} },
+/**/ {{0X03074348, 0XBFB1BE51} } },
+/**/ {{{0X25CAB4CA, 0X3FE75FFF} },
+/**/ {{0X0001D5C0, 0X3FE43032} },
+/**/ {{0X4573FB6C, 0X3FE4DDBC} },
+/**/ {{0X41F21D2A, 0XBFD3E0B1} },
+/**/ {{0XD1BDA00F, 0X3FAC6D25} },
+/**/ {{0X5935EE68, 0X3FAF8962} },
+/**/ {{0X6F8E0689, 0XBFB193EB} } },
+/**/ {{{0X90921F76, 0X3FE77FFE} },
+/**/ {{0X6CC6AF00, 0X3FE44505} },
+/**/ {{0X4CFFBDAE, 0X3FE4C9E1} },
+/**/ {{0X0B247EC4, 0XBFD3D5F1} },
+/**/ {{0X943F4516, 0X3FACE9EA} },
+/**/ {{0XF24A8AF1, 0X3FAEDA73} },
+/**/ {{0X776AAC42, 0XBFB16921} } },
+/**/ {{{0X47B2F83B, 0X3FE79FFE} },
+/**/ {{0X35C19F20, 0X3FE459C5} },
+/**/ {{0XFC8F20BD, 0X3FE4B610} },
+/**/ {{0X73DF2A0D, 0XBFD3CB02} },
+/**/ {{0X23C5D6DE, 0X3FAD63F8} },
+/**/ {{0X9C5116AB, 0X3FAE2D31} },
+/**/ {{0X326E2972, 0XBFB13DFA} } },
+/**/ {{{0X2F1E79A9, 0X3FE7BFFF} },
+/**/ {{0XF84DF5C0, 0X3FE46E71} },
+/**/ {{0XF586B1BD, 0X3FE4A24A} },
+/**/ {{0X2EF81E5B, 0XBFD3BFE6} },
+/**/ {{0X738896F0, 0X3FADDB58} },
+/**/ {{0X2515DE78, 0X3FAD819A} },
+/**/ {{0X9026FDD0, 0XBFB1127C} } },
+/**/ {{{0X973C8D05, 0X3FE7E001} },
+/**/ {{0XF0FB9580, 0X3FE4830B} },
+/**/ {{0X3466B08E, 0X3FE48E8F} },
+/**/ {{0X1C53A01A, 0XBFD3B49D} },
+/**/ {{0X25103EED, 0X3FAE5013} },
+/**/ {{0X5290F4AF, 0X3FACD7AF} },
+/**/ {{0X57EF003B, 0XBFB0E6AF} } },
+/**/ {{{0X69EFC092, 0X3FE7FFFF} },
+/**/ {{0X431C3800, 0X3FE4978F} },
+/**/ {{0XA3E1064A, 0X3FE47AE1} },
+/**/ {{0X666C50C4, 0XBFD3A92A} },
+/**/ {{0X4098A4BE, 0X3FAEC219} },
+/**/ {{0X2EEE57E0, 0X3FAC2F94} },
+/**/ {{0X290D5730, 0XBFB0BA99} } },
+/**/ {{{0XC52B5232, 0X3FE82001} },
+/**/ {{0XD2B83340, 0X3FE4AC01} },
+/**/ {{0XD31B7CF5, 0X3FE4673C} },
+/**/ {{0XC67D05F0, 0XBFD39D8B} },
+/**/ {{0X2A81B5D5, 0X3FAF3192} },
+/**/ {{0X8AA20E90, 0X3FAB891B} },
+/**/ {{0X7ADCEFD6, 0XBFB08E40} } },
+/**/ {{{0XBD4D4E3F, 0X3FE84000} },
+/**/ {{0X9B1DBC60, 0X3FE4C05E} },
+/**/ {{0XC8D629F7, 0X3FE453A5} },
+/**/ {{0X13E9EF47, 0XBFD391C5} },
+/**/ {{0X17383D6B, 0X3FAF9E69} },
+/**/ {{0X278E21B9, 0X3FAAE471} },
+/**/ {{0X9CF54D10, 0XBFB061AB} } },
+/**/ {{{0X8C869CBD, 0X3FE86001} },
+/**/ {{0XFD2285A0, 0X3FE4D4A8} },
+/**/ {{0X79B82471, 0X3FE44019} },
+/**/ {{0X5C3E2929, 0XBFD385D5} },
+/**/ {{0X7B2C8FF2, 0X3FB0045B} },
+/**/ {{0X39D7CA4F, 0X3FAA417C} },
+/**/ {{0XB767B7D4, 0XBFB034E0} } },
+/**/ {{{0XB5DB3710, 0X3FE87FFE} },
+/**/ {{0X8B93BCA0, 0X3FE4E8DD} },
+/**/ {{0X66C6E6BF, 0X3FE42C9B} },
+/**/ {{0XA32EE2A1, 0XBFD379BF} },
+/**/ {{0X6187FE0F, 0X3FB03838} },
+/**/ {{0X8B3A0B33, 0X3FA9A05A} },
+/**/ {{0XCAEE03A9, 0XBFB007E5} } },
+/**/ {{{0X863C77E3, 0X3FE8A000} },
+/**/ {{0X8FCD1E80, 0X3FE4FD01} },
+/**/ {{0XA8A8093F, 0X3FE41926} },
+/**/ {{0XB5EE344D, 0XBFD36D81} },
+/**/ {{0X2841F292, 0X3FB06ADC} },
+/**/ {{0X2484560B, 0X3FA900E4} },
+/**/ {{0X62792F0A, 0XBFAFB581} } },
+/**/ {{{0X0ED982AF, 0X3FE8BFFF} },
+/**/ {{0X16E28AC0, 0X3FE51110} },
+/**/ {{0X389112EE, 0X3FE405C0} },
+/**/ {{0X89D38DC7, 0XBFD3611F} },
+/**/ {{0XB450B9F7, 0X3FB09C3D} },
+/**/ {{0X312D0C4A, 0X3FA86342} },
+/**/ {{0X3A6CA012, 0XBFAF5AEE} } },
+/**/ {{{0X02C3AEAE, 0X3FE8E000} },
+/**/ {{0XC0AB0A40, 0X3FE5250C} },
+/**/ {{0XC65593C5, 0X3FE3F264} },
+/**/ {{0XD82BE900, 0XBFD35497} },
+/**/ {{0X68546D39, 0X3FB0CC69} },
+/**/ {{0XDB8499FD, 0X3FA7C759} },
+/**/ {{0X36A32337, 0XBFAF001D} } },
+/**/ {{{0XECBFA97B, 0X3FE90000} },
+/**/ {{0X0E8D4EE0, 0X3FE538F6} },
+/**/ {{0XF4119333, 0X3FE3DF15} },
+/**/ {{0X7D2149F4, 0XBFD347EC} },
+/**/ {{0XFA921D3C, 0X3FB0FB5E} },
+/**/ {{0X69693E89, 0X3FA72D38} },
+/**/ {{0X23A0F5F3, 0XBFAEA519} } },
+/**/ {{{0XD251C01C, 0X3FE91FFF} },
+/**/ {{0XD3F3BD20, 0X3FE54CCA} },
+/**/ {{0X1554DD15, 0X3FE3CBD5} },
+/**/ {{0X2BC94245, 0XBFD33B1F} },
+/**/ {{0X2FC4C3F6, 0X3FB1291F} },
+/**/ {{0X1B7A765C, 0X3FA694E8} },
+/**/ {{0X826E86F6, 0XBFAE49EC} } },
+/**/ {{{0XD90AF4E6, 0X3FE94001} },
+/**/ {{0X4D4EC640, 0X3FE5608E} },
+/**/ {{0X3445EF72, 0X3FE3B89F} },
+/**/ {{0XB7BBD79A, 0XBFD32E2E} },
+/**/ {{0XE401D071, 0X3FB155B4} },
+/**/ {{0X3A256F1C, 0X3FA5FE51} },
+/**/ {{0X890FF662, 0XBFADEEA1} } },
+/**/ {{{0X04FD6C17, 0X3FE96001} },
+/**/ {{0XD5673C20, 0X3FE5743C} },
+/**/ {{0X09EBC6E2, 0X3FE3A578} },
+/**/ {{0X6DA5039C, 0XBFD3211E} },
+/**/ {{0X4E62286B, 0X3FB1811B} },
+/**/ {{0X71BECE9D, 0X3FA56990} },
+/**/ {{0X23911641, 0XBFAD9342} } },
+/**/ {{{0X2D214B82, 0X3FE98000} },
+/**/ {{0X3B0D6120, 0X3FE587D8} },
+/**/ {{0X01EAAC3E, 0X3FE3925E} },
+/**/ {{0X08425504, 0XBFD313EE} },
+/**/ {{0X02BDB571, 0X3FB1AB5A} },
+/**/ {{0X9EBD70B8, 0X3FA4D698} },
+/**/ {{0XF482965A, 0XBFAD37D7} } },
+/**/ {{{0XEB980651, 0X3FE99FFD} },
+/**/ {{0XB16BA7A0, 0X3FE59B5F} },
+/**/ {{0X10B1AB7A, 0X3FE37F52} },
+/**/ {{0XF993D676, 0XBFD3069E} },
+/**/ {{0XCDED25A8, 0X3FB1D472} },
+/**/ {{0X2D0ABD9A, 0X3FA44570} },
+/**/ {{0X56221AA1, 0XBFACDC6C} } },
+/**/ {{{0XE5504053, 0X3FE9BFFF} },
+/**/ {{0XB55DE6A0, 0X3FE5AED6} },
+/**/ {{0XFA91C51E, 0X3FE36C50} },
+/**/ {{0XBE311E56, 0XBFD2F92F} },
+/**/ {{0X5BE3AF05, 0X3FB1FC70} },
+/**/ {{0XACD5CDC7, 0X3FA3B5FD} },
+/**/ {{0X5ADBB9B8, 0XBFAC8108} } },
+/**/ {{{0X6E60A234, 0X3FE9E001} },
+/**/ {{0X79ACD480, 0X3FE5C23A} },
+/**/ {{0XA5FAB2EA, 0X3FE3595D} },
+/**/ {{0X1DDECEEA, 0XBFD2EBA3} },
+/**/ {{0X35736518, 0X3FB22350} },
+/**/ {{0X22F9FD28, 0X3FA32856} },
+/**/ {{0XCE8B2259, 0XBFAC25B4} } },
+/**/ {{{0XB685741B, 0X3FE9FFFF} },
+/**/ {{0X5AD40460, 0X3FE5D589} },
+/**/ {{0XD832B8D3, 0X3FE34679} },
+/**/ {{0X230EDA41, 0XBFD2DDFB} },
+/**/ {{0XB23C0BA2, 0X3FB24912} },
+/**/ {{0X4C4E86DA, 0X3FA29C85} },
+/**/ {{0X37002A55, 0XBFABCA7A} } },
+/**/ {{{0X9D59B943, 0X3FEA2001} },
+/**/ {{0X8C187EA0, 0X3FE5E8C7} },
+/**/ {{0X9EDE2183, 0X3FE333A1} },
+/**/ {{0XB0043779, 0XBFD2D035} },
+/**/ {{0X7AB9110C, 0X3FB26DC3} },
+/**/ {{0X959CFC0E, 0X3FA2126C} },
+/**/ {{0XD556233E, 0XBFAB6F60} } },
+/**/ {{{0XBE9E153F, 0X3FEA3FFF} },
+/**/ {{0XA9C08AE0, 0X3FE5FBF0} },
+/**/ {{0X6F7861AA, 0X3FE320D9} },
+/**/ {{0XC2200F18, 0XBFD2C256} },
+/**/ {{0XA6795293, 0X3FB2915D} },
+/**/ {{0X256A8FDE, 0X3FA18A2B} },
+/**/ {{0XA67A4E89, 0XBFAB1470} } },
+/**/ {{{0X7A23A1CE, 0X3FEA5FFE} },
+/**/ {{0X63200600, 0X3FE60F07} },
+/**/ {{0XD13D395E, 0X3FE30E1E} },
+/**/ {{0X44403932, 0XBFD2B45D} },
+/**/ {{0XC967F013, 0X3FB2B3E9} },
+/**/ {{0X35D002B8, 0X3FA103AD} },
+/**/ {{0X6496A8F1, 0XBFAAB9B1} } },
+/**/ {{{0X57F250B8, 0X3FEA8001} },
+/**/ {{0XDD6453A0, 0X3FE6220D} },
+/**/ {{0XCFFFCC1E, 0X3FE2FB6F} },
+/**/ {{0X6F8D8291, 0XBFD2A648} },
+/**/ {{0X03654CC3, 0X3FB2D56F} },
+/**/ {{0X4BB6E7A6, 0X3FA07EE3} },
+/**/ {{0X87992F03, 0XBFAA5F2A} } },
+/**/ {{{0XDD839D49, 0X3FEAA000} },
+/**/ {{0XB412C9A0, 0X3FE634FF} },
+/**/ {{0XE2D59E01, 0X3FE2E8D0} },
+/**/ {{0X5467CFDD, 0XBFD2981C} },
+/**/ {{0XFF1FADB5, 0X3FB2F5E8} },
+/**/ {{0XA3BA803C, 0X3F9FF7D6} },
+/**/ {{0X46AF8DB7, 0XBFAA04E3} } },
+/**/ {{{0X770DF220, 0X3FEAC000} },
+/**/ {{0XFEF70020, 0X3FE647DE} },
+/**/ {{0X220AFF7F, 0X3FE2D640} },
+/**/ {{0X36F9E74F, 0XBFD289D8} },
+/**/ {{0XE509140A, 0X3FB3155E} },
+/**/ {{0X61AB0B7F, 0X3F9EF56B} },
+/**/ {{0X98CE391F, 0XBFA9AAE2} } },
+/**/ {{{0X125BBE48, 0X3FEAE001} },
+/**/ {{0X57A24D20, 0X3FE65AAC} },
+/**/ {{0X1BFB3559, 0X3FE2C3BD} },
+/**/ {{0X6DDE55DD, 0XBFD27B7C} },
+/**/ {{0X15C4C270, 0X3FB333D5} },
+/**/ {{0X9BAC4ECF, 0X3F9DF67A} },
+/**/ {{0X363A972B, 0XBFA9512F} } },
+/**/ {{{0X7C321839, 0X3FEAFFFE} },
+/**/ {{0X569B83C0, 0X3FE66D65} },
+/**/ {{0X53FBF8D9, 0X3FE2B14A} },
+/**/ {{0X9CFA03CE, 0XBFD26D0B} },
+/**/ {{0X2CAA2E0C, 0X3FB3514B} },
+/**/ {{0X4597BE9A, 0X3F9CFB22} },
+/**/ {{0X99110022, 0XBFA8F7CF} } },
+/**/ {{{0X75486924, 0X3FEB1FFE} },
+/**/ {{0X68CEFB40, 0X3FE6800D} },
+/**/ {{0X8E6AA814, 0X3FE29EE4} },
+/**/ {{0XE8AFA7EB, 0XBFD25E83} },
+/**/ {{0XFB0E8AC8, 0X3FB36DC9} },
+/**/ {{0XAD5D66CA, 0X3F9C0331} },
+/**/ {{0XFEDB1E8B, 0XBFA89EC9} } },
+/**/ {{{0X5FB8DEB8, 0X3FEB4001} },
+/**/ {{0XD137C500, 0X3FE692A4} },
+/**/ {{0XABFF668E, 0X3FE28C8B} },
+/**/ {{0XD8E71E0A, 0XBFD24FE5} },
+/**/ {{0X1297317A, 0X3FB38955} },
+/**/ {{0X1D844655, 0X3F9B0EA3} },
+/**/ {{0X6914067D, 0XBFA84624} } },
+/**/ {{{0X386C27B9, 0X3FEB6000} },
+/**/ {{0X8CDF6FC0, 0X3FE6A527} },
+/**/ {{0XC5758DB8, 0X3FE27A43} },
+/**/ {{0X59CADCE0, 0XBFD24135} },
+/**/ {{0XEE34AE91, 0X3FB3A3E9} },
+/**/ {{0X1C5FFF05, 0X3F9A1DA8} },
+/**/ {{0X9EC8AAC6, 0XBFA7EDE4} } },
+/**/ {{{0XD1EFDDB3, 0X3FEB8000} },
+/**/ {{0X0ACCB660, 0X3FE6B799} },
+/**/ {{0X9983AAB2, 0X3FE26809} },
+/**/ {{0X76047E08, 0XBFD23270} },
+/**/ {{0XF132139B, 0X3FB3BD90} },
+/**/ {{0X58DEB3E1, 0X3F993010} },
+/**/ {{0X2D194CE9, 0XBFA79610} } },
+/**/ {{{0X42CC4047, 0X3FEB9FFE} },
+/**/ {{0X86445E60, 0X3FE6C9F6} },
+/**/ {{0X069F871F, 0X3FE255E0} },
+/**/ {{0X25461639, 0XBFD2239A} },
+/**/ {{0XA926C127, 0X3FB3D649} },
+/**/ {{0XC5A21F70, 0X3F9845FB} },
+/**/ {{0X68E20BE6, 0XBFA73EAC} } },
+/**/ {{{0X951AEAAD, 0X3FEBC001} },
+/**/ {{0X3C4E45A0, 0X3FE6DC45} },
+/**/ {{0XFF6573B0, 0X3FE243C1} },
+/**/ {{0XE38FA7E7, 0XBFD214AE} },
+/**/ {{0X5EA1330F, 0X3FB3EE1E} },
+/**/ {{0X2BCCE6DF, 0X3F975F24} },
+/**/ {{0X6F3902C5, 0XBFA6E7BE} } },
+/**/ {{{0X6616FE11, 0X3FEBDFFE} },
+/**/ {{0X27106FE0, 0X3FE6EE7E} },
+/**/ {{0X97B587F0, 0X3FE231B6} },
+/**/ {{0X240FEF32, 0XBFD205B5} },
+/**/ {{0X44EB818C, 0X3FB40509} },
+/**/ {{0X108160F9, 0X3F967BDE} },
+/**/ {{0X271D18AD, 0XBFA6914B} } },
+/**/ {{{0X54511C72, 0X3FEBFFFF} },
+/**/ {{0X643BBB40, 0X3FE700A7} },
+/**/ {{0XE1823C8B, 0X3FE21FB7} },
+/**/ {{0X9A854F7A, 0XBFD1F6A8} },
+/**/ {{0X71F04837, 0X3FB41B15} },
+/**/ {{0XBBD10F7C, 0X3F959BD8} },
+/**/ {{0X41F03711, 0XBFA63B57} } },
+/**/ {{{0XC537593E, 0X3FEC2000} },
+/**/ {{0XF36D6400, 0X3FE712BE} },
+/**/ {{0XF754B2D5, 0X3FE20DC7} },
+/**/ {{0X9D24DBED, 0XBFD1E78B} },
+/**/ {{0X94F485E0, 0X3FB43043} },
+/**/ {{0X122A6884, 0X3F94BF29} },
+/**/ {{0X3D2AA4E9, 0XBFA5E5E7} } },
+/**/ {{{0XDDD35719, 0X3FEC4000} },
+/**/ {{0XD7FA3000, 0X3FE724C3} },
+/**/ {{0XF2A8B1BF, 0X3FE1FBE7} },
+/**/ {{0XB25DDDF6, 0XBFD1D85F} },
+/**/ {{0XD2E3B20F, 0X3FB44495} },
+/**/ {{0X7FCC1B30, 0X3F93E5D6} },
+/**/ {{0X62D0D00F, 0XBFA590FF} } },
+/**/ {{{0X402375B6, 0X3FEC6000} },
+/**/ {{0X7DFF3720, 0X3FE736B6} },
+/**/ {{0X86C92387, 0X3FE1EA17} },
+/**/ {{0X31DDFC58, 0XBFD1C925} },
+/**/ {{0XF8B6CBC2, 0X3FB4580F} },
+/**/ {{0X00CE998E, 0X3F930FD7} },
+/**/ {{0XCB299E5F, 0XBFA53CA3} } },
+/**/ {{{0X19904FE4, 0X3FEC7FFF} },
+/**/ {{0X0F395860, 0X3FE74897} },
+/**/ {{0XA825BA33, 0X3FE1D856} },
+/**/ {{0XA75E0FC5, 0XBFD1B9DC} },
+/**/ {{0X79F8FD7D, 0X3FB46AB5} },
+/**/ {{0XA5A90AFE, 0X3F923D23} },
+/**/ {{0X5D2F574B, 0XBFA4E8D8} } },
+/**/ {{{0XF9E2409D, 0X3FEC9FFE} },
+/**/ {{0X79E7F1C0, 0X3FE75A66} },
+/**/ {{0X8740D2E9, 0X3FE1C6A4} },
+/**/ {{0XF198392C, 0XBFD1AA85} },
+/**/ {{0X808C583A, 0X3FB47C8A} },
+/**/ {{0X857F2526, 0X3F916DAC} },
+/**/ {{0XD0477576, 0XBFA495A0} } },
+/**/ {{{0XE038EF72, 0X3FECC001} },
+/**/ {{0XE6815140, 0X3FE76C25} },
+/**/ {{0X19BDADF8, 0X3FE1B500} },
+/**/ {{0XB4A469AE, 0XBFD19B20} },
+/**/ {{0X42387EA2, 0X3FB48D93} },
+/**/ {{0X7305BAF5, 0X3F90A15F} },
+/**/ {{0XACAE4E17, 0XBFA44300} } },
+/**/ {{{0XEB72037F, 0X3FECDFFE} },
+/**/ {{0X7A7A4AA0, 0X3FE77DD0} },
+/**/ {{0X4F1F6702, 0X3FE1A36E} },
+/**/ {{0XD0992CF8, 0XBFD18BB1} },
+/**/ {{0X5AA4990D, 0X3FB49DCE} },
+/**/ {{0X63759665, 0X3F8FB0DD} },
+/**/ {{0X4D2F0C0F, 0XBFA3F0FB} } },
+/**/ {{{0XEA4839ED, 0X3FECFFFF} },
+/**/ {{0XB17088C0, 0X3FE78F6B} },
+/**/ {{0XCF32122F, 0X3FE191E9} },
+/**/ {{0X220400AC, 0XBFD17C35} },
+/**/ {{0X0A159641, 0X3FB4AD44} },
+/**/ {{0X80894CA9, 0X3F8E252C} },
+/**/ {{0XDF89C265, 0XBFA39F93} } },
+/**/ {{{0XEC3EC8B2, 0X3FED1FFD} },
+/**/ {{0XC8C6C880, 0X3FE7A0F3} },
+/**/ {{0X729F01D6, 0X3FE18076} },
+/**/ {{0X98515540, 0XBFD16CAE} },
+/**/ {{0X1B0933FF, 0X3FB4BBF4} },
+/**/ {{0XE09A60CD, 0X3F8C9FF5} },
+/**/ {{0X662A5704, 0XBFA34ECD} } },
+/**/ {{{0X7084EDD4, 0X3FED3FFF} },
+/**/ {{0X5F02F220, 0X3FE7B26C} },
+/**/ {{0XB9973206, 0X3FE16F10} },
+/**/ {{0X9E1E0A54, 0XBFD15D1B} },
+/**/ {{0XAC2C9A30, 0X3FB4C9E4} },
+/**/ {{0XEFCE76CC, 0X3F8B20DD} },
+/**/ {{0XB888BC37, 0XBFA2FEAA} } },
+/**/ {{{0X8D728E7C, 0X3FED5FFE} },
+/**/ {{0X488D7E80, 0X3FE7C3D2} },
+/**/ {{0XE622A5A7, 0X3FE15DBB} },
+/**/ {{0XA305CEB2, 0XBFD14D7F} },
+/**/ {{0X417BF1C7, 0X3FB4D716} },
+/**/ {{0XE19FE239, 0X3F89A81E} },
+/**/ {{0X84DDAD07, 0XBFA2AF2E} } },
+/**/ {{{0X70AA3B03, 0X3FED7FFF} },
+/**/ {{0XDB239580, 0X3FE7D527} },
+/**/ {{0XBE4FEA01, 0X3FE14C75} },
+/**/ {{0X2AD706AA, 0XBFD13DD9} },
+/**/ {{0XB49D32AA, 0X3FB4E38D} },
+/**/ {{0X37DF2B6D, 0X3F88357A} },
+/**/ {{0X507CD77B, 0XBFA2605B} } },
+/**/ {{{0X1434FBA3, 0X3FED9FFF} },
+/**/ {{0X82C8A720, 0X3FE7E66B} },
+/**/ {{0XED9B7FED, 0X3FE13B3F} },
+/**/ {{0X3AC9D646, 0XBFD12E2A} },
+/**/ {{0XE7B01CF5, 0X3FB4EF4C} },
+/**/ {{0XD25FD52D, 0X3F86C905} },
+/**/ {{0X798666EF, 0XBFA21233} } },
+/**/ {{{0XA8C8DE8C, 0X3FEDBFFE} },
+/**/ {{0XF4A0A520, 0X3FE7F79D} },
+/**/ {{0XD7FC2119, 0X3FE12A19} },
+/**/ {{0XC6BE19DF, 0XBFD11E72} },
+/**/ {{0X634E1B91, 0X3FB4FA57} },
+/**/ {{0X47F96DF5, 0X3F8562A6} },
+/**/ {{0X373AF599, 0XBFA1C4B9} } },
+/**/ {{{0X26573DF5, 0X3FEDE000} },
+/**/ {{0X4DBCB960, 0X3FE808C0} },
+/**/ {{0X7903E4B9, 0X3FE11902} },
+/**/ {{0X5CDFED06, 0XBFD10EB2} },
+/**/ {{0XCCA681FA, 0X3FB504B0} },
+/**/ {{0X6F3CDE09, 0X3F840238} },
+/**/ {{0X9BA8FA6A, 0XBFA177EE} } },
+/**/ {{{0X35009B66, 0X3FEDFFFE} },
+/**/ {{0XC2CB5340, 0X3FE819CF} },
+/**/ {{0XB1C942B5, 0X3FE107FC} },
+/**/ {{0X230D7D92, 0XBFD0FEEC} },
+/**/ {{0X75C5B4F1, 0X3FB50E5A} },
+/**/ {{0XE3C139D8, 0X3F82A7E8} },
+/**/ {{0X93FA642B, 0XBFA12BD5} } },
+/**/ {{{0X492D4C68, 0X3FEE2000} },
+/**/ {{0X5CCB8680, 0X3FE82AD0} },
+/**/ {{0X928E55DF, 0X3FE0F704} },
+/**/ {{0XEE0B0721, 0XBFD0EF1C} },
+/**/ {{0X937BFB74, 0X3FB51759} },
+/**/ {{0X2BC9FDDB, 0X3F815359} },
+/**/ {{0XEA1D1824, 0XBFA0E06F} } },
+/**/ {{{0X9412BB65, 0X3FEE4000} },
+/**/ {{0X14001A60, 0X3FE83BBF} },
+/**/ {{0X37F485DA, 0X3FE0E61D} },
+/**/ {{0X1B2BD37D, 0XBFD0DF48} },
+/**/ {{0X64024D14, 0X3FB51FAF} },
+/**/ {{0X9B849698, 0X3F8004B9} },
+/**/ {{0X450A2434, 0XBFA095BF} } },
+/**/ {{{0X4758EF2F, 0X3FEE5FFF} },
+/**/ {{0X1531C180, 0X3FE84C9C} },
+/**/ {{0X8B7FECE7, 0X3FE0D546} },
+/**/ {{0X105BFE1E, 0XBFD0CF6E} },
+/**/ {{0XF9C5E03A, 0X3FB5275E} },
+/**/ {{0X17AA1137, 0X3F7D77F2} },
+/**/ {{0X2A6891E1, 0XBFA04BC5} } },
+/**/ {{{0X380F819F, 0X3FEE8000} },
+/**/ {{0X74CCC060, 0X3FE85D69} },
+/**/ {{0X8F1DA5B5, 0X3FE0C47E} },
+/**/ {{0X62AD700F, 0XBFD0BF8D} },
+/**/ {{0X1F3FBC2B, 0X3FB52E6C} },
+/**/ {{0XEE24AD7D, 0X3F7AF1C3} },
+/**/ {{0XFECE26C9, 0XBFA00282} } },
+/**/ {{{0XA6D8CB7B, 0X3FEEA000} },
+/**/ {{0XD00E3A60, 0X3FE86E25} },
+/**/ {{0XBA314D62, 0X3FE0B3C6} },
+/**/ {{0XE7CB2D84, 0XBFD0AFA7} },
+/**/ {{0X08E9071F, 0X3FB534D9} },
+/**/ {{0X4CE5E5C9, 0X3F787704} },
+/**/ {{0X0EB7C9D5, 0XBF9F73F4} } },
+/**/ {{{0X5A13BA60, 0X3FEEC000} },
+/**/ {{0X19B163E0, 0X3FE87ED1} },
+/**/ {{0X2EBB7AD7, 0X3FE0A31F} },
+/**/ {{0X33A3FCE1, 0XBFD09FBE} },
+/**/ {{0X89D9AF5D, 0X3FB53AA8} },
+/**/ {{0XF7F7040B, 0X3F760799} },
+/**/ {{0XD3F0B3FB, 0XBF9EE456} } },
+/**/ {{{0X58F8DD18, 0X3FEEDFFF} },
+/**/ {{0X6681CA80, 0X3FE88F6B} },
+/**/ {{0XEC4360B3, 0X3FE09287} },
+/**/ {{0XB7CE07E5, 0XBFD08FD0} },
+/**/ {{0X7BDEDD3F, 0X3FB53FDD} },
+/**/ {{0X70C52E66, 0X3F73A366} },
+/**/ {{0X5DCA7315, 0XBF9E5630} } },
+/**/ {{{0XBE033400, 0X3FEEFFFF} },
+/**/ {{0XDD4D7960, 0X3FE89FF5} },
+/**/ {{0XDFFE15BD, 0X3FE081FF} },
+/**/ {{0XDAE56C0F, 0XBFD07FDE} },
+/**/ {{0XF84D6F5D, 0X3FB5447A} },
+/**/ {{0X7982941E, 0X3F714A24} },
+/**/ {{0X81E68835, 0XBF9DC982} } },
+/**/ {{{0XE6B5125D, 0X3FEF2001} },
+/**/ {{0XBBE88160, 0X3FE8B070} },
+/**/ {{0XDF7122E2, 0X3FE07186} },
+/**/ {{0XDE905325, 0XBFD06FE8} },
+/**/ {{0XB5DEEC7A, 0X3FB54883} },
+/**/ {{0XB4A186D5, 0X3F6DF762} },
+/**/ {{0XDE20F495, 0XBF9D3E4E} } },
+/**/ {{{0XF770E0DB, 0X3FEF3FFD} },
+/**/ {{0X09E96380, 0X3FE8C0D8} },
+/**/ {{0XF5A576A9, 0X3FE06120} },
+/**/ {{0X1D2912FF, 0XBFD05FF3} },
+/**/ {{0X8CD1001F, 0X3FB54BF9} },
+/**/ {{0X6E90DC16, 0X3F6970FC} },
+/**/ {{0XD8EB587E, 0XBF9CB496} } },
+/**/ {{{0X4E16DA33, 0X3FEF5FFE} },
+/**/ {{0X29BCCDC0, 0X3FE8D131} },
+/**/ {{0XD33BA4E9, 0X3FE050C8} },
+/**/ {{0XD74C83D2, 0XBFD04FF8} },
+/**/ {{0X592BB252, 0X3FB54EE0} },
+/**/ {{0X7193EEB5, 0X3F64FF61} },
+/**/ {{0XA459AC86, 0XBF9C2C5B} } },
+/**/ {{{0X4576FF2E, 0X3FEF8000} },
+/**/ {{0XCCE443A0, 0X3FE8E17A} },
+/**/ {{0XD8A97B6C, 0X3FE0407F} },
+/**/ {{0XC91B3E55, 0XBFD03FFB} },
+/**/ {{0X5F3357F7, 0X3FB5513A} },
+/**/ {{0X14C92B53, 0X3F60A2BA} },
+/**/ {{0X3E70DF71, 0XBF9BA59E} } },
+/**/ {{{0X39B6A330, 0X3FEF9FFF} },
+/**/ {{0XA7F515A0, 0X3FE8F1B2} },
+/**/ {{0X63064158, 0X3FE03048} },
+/**/ {{0XACBAADA8, 0XBFD02FFE} },
+/**/ {{0XF27448C0, 0X3FB55309} },
+/**/ {{0X4850006B, 0X3F58B6D6} },
+/**/ {{0X742323DF, 0XBF9B205F} } },
+/**/ {{{0XAA76C0B9, 0X3FEFC001} },
+/**/ {{0X15D66D80, 0X3FE901DC} },
+/**/ {{0X28D9B4AA, 0X3FE0201F} },
+/**/ {{0XA98D4C38, 0XBFD01FFE} },
+/**/ {{0X089780F8, 0X3FB55452} },
+/**/ {{0X7F35C5BB, 0X3F5050B5} },
+/**/ {{0XE19247AF, 0XBF9A9C9F} } },
+/**/ {{{0X39A592CA, 0X3FEFDFFE} },
+/**/ {{0X6D88A780, 0X3FE911F2} },
+/**/ {{0XE40C6538, 0X3FE01008} },
+/**/ {{0XD31688DE, 0XBFD01000} },
+/**/ {{0XE32F1816, 0X3FB55514} },
+/**/ {{0X4E1628D2, 0X3F402A15} },
+/**/ {{0XF4FAF5A0, 0XBF9A1A5F} } },
+/**/ {{{0X8E92D1B0, 0X3FEFF801} },
+/**/ {{0X9BB4BF00, 0X3FE91DFB} },
+/**/ {{0XB884C5A9, 0X3FE003FF} },
+/**/ {{0X3876A954, 0XBFD003FF} },
+/**/ {{0X5539DDFB, 0X3FB55551} },
+/**/ {{0X7B95E6C2, 0X3F2007E7} },
+/**/ {{0X18A3BA58, 0XBF99B9A7} } },
+ };
+
+ static const number
+ hij[241][16] = { /* x0,hij for (1/16,1) */
+/**/ {{{0x00000000, 0x3fb04000} },
+/**/ {{0x1c06693d, 0x3fb03a6d} },
+/**/ {{0xd4e7f128, 0xbc428a02} },
+/**/ {{0xe92592ae, 0x3fefdf1f} },
+/**/ {{0xb5490162, 0x3c88bfc0} },
+/**/ {{0x8f7e4151, 0xbfb01ead} },
+/**/ {{0x0b64d205, 0xbc5395e8} },
+/**/ {{0x433dd49b, 0xbfd4d29f} },
+/**/ {{0x4aa42633, 0xbc75b19d} },
+/**/ {{0xce35961d, 0x3fafda41} },
+/**/ {{0x425d7696, 0x3c4e6a5f} },
+/**/ {{0x6c1bb5e2, 0x3fc814dd} },
+/**/ {{0x2b33739f, 0xbfaf4cb7} },
+/**/ {{0xc267d8ec, 0xbfc048b2} },
+/**/ {{0xe8ababc6, 0x3fae9649} },
+/**/ {{0xfe802692, 0x3fb78293} } },
+/**/ {{{0x00000000, 0x3fb10000} },
+/**/ {{0xa71d52a7, 0x3fb0f99e} },
+/**/ {{0xeec3624f, 0xbc22069f} },
+/**/ {{0x9a49d2a9, 0x3fefdc08} },
+/**/ {{0x68b2ce25, 0x3c7780f7} },
+/**/ {{0x9da73e1d, 0xbfb0d9de} },
+/**/ {{0xa1a487bf, 0x3c4ebf46} },
+/**/ {{0xd13ea108, 0xbfd4c669} },
+/**/ {{0xebb4528c, 0x3c7354bc} },
+/**/ {{0x789374c1, 0x3fb0a137} },
+/**/ {{0xc3f2c5c2, 0xbc56c223} },
+/**/ {{0x79c60cda, 0x3fc7f0e7} },
+/**/ {{0xcdcc7b81, 0xbfb05062} },
+/**/ {{0xc5266783, 0xbfc019e4} },
+/**/ {{0xf2540289, 0x3fafd0b2} },
+/**/ {{0xf6d3cd8a, 0x3fb71107} } },
+/**/ {{{0x00000000, 0x3fb20000} },
+/**/ {{0xbf082d59, 0x3fb1f86d} },
+/**/ {{0x7732ef81, 0xbc4095dc} },
+/**/ {{0x01722b81, 0x3fefd7b3} },
+/**/ {{0x8a212e02, 0xbc5e618c} },
+/**/ {{0xee4e9cfa, 0xbfb1d2c5} },
+/**/ {{0x29abece0, 0x3c426273} },
+/**/ {{0x37eb7f46, 0xbfd4b551} },
+/**/ {{0x01d8bf12, 0x3c73b360} },
+/**/ {{0x6adb6a7c, 0x3fb18fa7} },
+/**/ {{0x398999ad, 0xbc5c00d8} },
+/**/ {{0xf4a7cff3, 0x3fc7bea5} },
+/**/ {{0x61f84829, 0xbfb13008} },
+/**/ {{0xa8e135a1, 0xbfbfb14f} },
+/**/ {{0x4324f177, 0x3fb0b532} },
+/**/ {{0x3498dd9d, 0x3fb6734a} } },
+/**/ {{{0x00000000, 0x3fb30000} },
+/**/ {{0x318a4a9a, 0x3fb2f719} },
+/**/ {{0x79b9801f, 0x3c03fd17} },
+/**/ {{0x48e238fe, 0x3fefd31f} },
+/**/ {{0xd8c45327, 0xbc876a7a} },
+/**/ {{0x852096e2, 0xbfb2cada} },
+/**/ {{0x11efd787, 0x3c460860} },
+/**/ {{0x2e476a39, 0xbfd4a34b} },
+/**/ {{0xeb11ee51, 0x3c7254f2} },
+/**/ {{0xc54ae225, 0x3fb27c13} },
+/**/ {{0x4ae66f0c, 0x3c513096} },
+/**/ {{0xef0d59d0, 0x3fc789ca} },
+/**/ {{0x6d9aaa8c, 0xbfb20c06} },
+/**/ {{0x846ba912, 0xbfbf2885} },
+/**/ {{0xc697ef5e, 0x3fb17c5f} },
+/**/ {{0xcad31e6e, 0x3fb5ce93} } },
+/**/ {{{0x00000000, 0x3fb40000} },
+/**/ {{0x0e7c559d, 0x3fb3f59f} },
+/**/ {{0x285df847, 0x3c5ac4ce} },
+/**/ {{0xa6ab93e9, 0x3fefce4d} },
+/**/ {{0x18a97736, 0xbc6be46b} },
+/**/ {{0x4d22b635, 0xbfb3c211} },
+/**/ {{0x6950679f, 0x3c42033c} },
+/**/ {{0xc4d74033, 0xbfd49059} },
+/**/ {{0xd7e376aa, 0x3c57dd7c} },
+/**/ {{0xc0896a7c, 0x3fb36662} },
+/**/ {{0xd79232cf, 0xbc36cf6a} },
+/**/ {{0xa13a97a2, 0x3fc75261} },
+/**/ {{0x5fdd1509, 0xbfb2e431} },
+/**/ {{0x6e52db32, 0xbfbe9999} },
+/**/ {{0xb0a71e9f, 0x3fb23da4} },
+/**/ {{0xe3bc8178, 0x3fb52335} } },
+/**/ {{{0x00000000, 0x3fb50000} },
+/**/ {{0x677292fb, 0x3fb4f3fd} },
+/**/ {{0x6264979e, 0x3c4008d3} },
+/**/ {{0x53a1ee0d, 0x3fefc93e} },
+/**/ {{0x20fd2bdf, 0xbc64421a} },
+/**/ {{0x4aba88e3, 0xbfb4b85f} },
+/**/ {{0x3c9d1e89, 0x3c54f184} },
+/**/ {{0x25ae4668, 0xbfd47c7f} },
+/**/ {{0x816630d1, 0xbc7d7581} },
+/**/ {{0x07f85056, 0x3fb44e7b} },
+/**/ {{0x910bdf4f, 0x3c56d63c} },
+/**/ {{0xc439029c, 0x3fc71875} },
+/**/ {{0xf2bcfa10, 0xbfb3b85e} },
+/**/ {{0x9707b205, 0xbfbe04bb} },
+/**/ {{0x95e3e0cc, 0x3fb2f8c6} },
+/**/ {{0x8093431b, 0x3fb47184} } },
+/**/ {{{0x00000000, 0x3fb60000} },
+/**/ {{0x4fd2d7b2, 0x3fb5f232} },
+/**/ {{0x4401318e, 0x3c58a8da} },
+/**/ {{0x8b549418, 0x3fefc3f1} },
+/**/ {{0x836f8130, 0x3c34d896} },
+/**/ {{0x9cdd92e7, 0xbfb5adb9} },
+/**/ {{0xeb397cc3, 0x3c4d4161} },
+/**/ {{0x93f8f1dc, 0xbfd467bd} },
+/**/ {{0xffc760ad, 0xbc609d7b} },
+/**/ {{0xbea6b2fe, 0x3fb53443} },
+/**/ {{0x4b24f5db, 0x3c5eb03c} },
+/**/ {{0x8de3d005, 0x3fc6dc13} },
+/**/ {{0x37d2d99d, 0xbfb48866} },
+/**/ {{0xf6663fcb, 0xbfbd6a1d} },
+/**/ {{0x0adff464, 0x3fb3ad8e} },
+/**/ {{0x4159c223, 0x3fb3b9d6} } },
+/**/ {{{0x00000000, 0x3fb70000} },
+/**/ {{0xdcea4b0d, 0x3fb6f03b} },
+/**/ {{0x512fa17d, 0xbc33f00e} },
+/**/ {{0x8c07a436, 0x3fefbe67} },
+/**/ {{0x46250d6f, 0xbc84baaa} },
+/**/ {{0x7e3ba4c7, 0xbfb6a215} },
+/**/ {{0x54503f8d, 0xbc3504e7} },
+/**/ {{0x6b82d03a, 0xbfd45217} },
+/**/ {{0xbebdd1db, 0x3c7d1f0d} },
+/**/ {{0x841d5604, 0x3fb617a4} },
+/**/ {{0x6681c436, 0xbc47168b} },
+/**/ {{0xaccec6ce, 0x3fc69d47} },
+/**/ {{0xa4715800, 0xbfb5541f} },
+/**/ {{0x335a1c1b, 0xbfbcc9f4} },
+/**/ {{0xbac0061f, 0x3fb45bc6} },
+/**/ {{0x2b3853b6, 0x3fb2fc84} } },
+/**/ {{{0x00000000, 0x3fb80000} },
+/**/ {{0x2602f10f, 0x3fb7ee18} },
+/**/ {{0x4c0c3d98, 0xbc5cfb65} },
+/**/ {{0x96acfacc, 0x3fefb8a0} },
+/**/ {{0x18495af3, 0xbc82962e} },
+/**/ {{0x46635c89, 0xbfb79568} },
+/**/ {{0xa6bfd498, 0x3c5ac468} },
+/**/ {{0x2037b997, 0xbfd43b8f} },
+/**/ {{0xe2f12373, 0xbc72ad53} },
+/**/ {{0x7900c4ee, 0x3fb6f885} },
+/**/ {{0x0aef1f9d, 0x3c53145d} },
+/**/ {{0x4409ba0e, 0x3fc65c1f} },
+/**/ {{0x1d176e0c, 0xbfb61b65} },
+/**/ {{0x8ad65152, 0xbfbc2473} },
+/**/ {{0x7bc246c1, 0x3fb5033f} },
+/**/ {{0x6db30b46, 0x3fb239e9} } },
+/**/ {{{0x00000000, 0x3fb90000} },
+/**/ {{0x4478fb28, 0x3fb8ebc5} },
+/**/ {{0x0cad24cc, 0x3c473288} },
+/**/ {{0xeedcd6d7, 0x3fefb29c} },
+/**/ {{0x23ea50f0, 0x3c8efa9e} },
+/**/ {{0x6ae09982, 0xbfb887a7} },
+/**/ {{0x53801511, 0x3c5b2275} },
+/**/ {{0x3da0757c, 0xbfd42427} },
+/**/ {{0x311c7ac8, 0xbc7199e5} },
+/**/ {{0x4388717b, 0x3fb7d6cf} },
+/**/ {{0x3dd070b4, 0xbc5c4eb2} },
+/**/ {{0xe6c2b5f3, 0x3fc618a7} },
+/**/ {{0x00313569, 0xbfb6de12} },
+/**/ {{0xb6316619, 0xbfbb79d2} },
+/**/ {{0x61af5c21, 0x3fb5a3ca} },
+/**/ {{0x26e60289, 0x3fb17263} } },
+/**/ {{{0x00000000, 0x3fba0000} },
+/**/ {{0x53cfdcf1, 0x3fb9e941} },
+/**/ {{0x1d69c47e, 0x3c5a332e} },
+/**/ {{0xdace3776, 0x3fefac5c} },
+/**/ {{0x1ad91ab5, 0xbc8c9a78} },
+/**/ {{0x8054ad75, 0xbfb978c8} },
+/**/ {{0x8ed66c17, 0xbc5e35b8} },
+/**/ {{0x665afed1, 0xbfd40be2} },
+/**/ {{0x08ef10fb, 0x3c62eeef} },
+/**/ {{0x13c989d2, 0x3fb8b26b} },
+/**/ {{0xbfeab3ba, 0x3c329f11} },
+/**/ {{0x93c8f97c, 0x3fc5d2ef} },
+/**/ {{0x30234881, 0xbfb79c03} },
+/**/ {{0xd0f650c8, 0xbfbaca49} },
+/**/ {{0xce2dcccc, 0x3fb63d3c} },
+/**/ {{0x26fb0af2, 0x3fb0a650} } },
+/**/ {{{0x00000000, 0x3fbb0000} },
+/**/ {{0x71c722b8, 0x3fbae68a} },
+/**/ {{0x6910b9db, 0x3c4c014e} },
+/**/ {{0xa34ef42b, 0x3fefa5e0} },
+/**/ {{0xeb56d5b9, 0xbc836583} },
+/**/ {{0x3b881779, 0xbfba68c1} },
+/**/ {{0x13a09314, 0xbc473a0d} },
+/**/ {{0x538e939c, 0xbfd3f2c3} },
+/**/ {{0xee53e648, 0xbc68ed49} },
+/**/ {{0xa7d45973, 0x3fb98b42} },
+/**/ {{0x461ca7c4, 0xbc523943} },
+/**/ {{0xb0f2e2bb, 0x3fc58b04} },
+/**/ {{0x1c9d23dc, 0xbfb85517} },
+/**/ {{0x3e3b5a66, 0xbfba1612} },
+/**/ {{0x7ef1d0b9, 0x3fb6cf6f} },
+/**/ {{0x6617b315, 0x3fafac21} } },
+/**/ {{{0x00000000, 0x3fbc0000} },
+/**/ {{0xbe6f07c3, 0x3fbbe39e} },
+/**/ {{0x29a05987, 0x3c5f7b8f} },
+/**/ {{0x93bb9192, 0x3fef9f28} },
+/**/ {{0x7cd1bdab, 0x3c78260b} },
+/**/ {{0x72759741, 0xbfbb5787} },
+/**/ {{0xa6767247, 0x3c52f93f} },
+/**/ {{0xd45bbe91, 0xbfd3d8cc} },
+/**/ {{0x2edc0762, 0x3c664839} },
+/**/ {{0x4fa31d26, 0x3fba6140} },
+/**/ {{0x97891510, 0x3c400647} },
+/**/ {{0x0668fd66, 0x3fc540f6} },
+/**/ {{0xcb2f6e8f, 0xbfb9092d} },
+/**/ {{0x8d902073, 0xbfb95d66} },
+/**/ {{0x99c53d16, 0x3fb75a3e} },
+/**/ {{0x8f475e61, 0x3fae040c} } },
+/**/ {{{0x00000000, 0x3fbd0000} },
+/**/ {{0x5c3cca32, 0x3fbce07c} },
+/**/ {{0x425918a7, 0x3c4138e6} },
+/**/ {{0xf9f6d421, 0x3fef9834} },
+/**/ {{0x8c22a239, 0x3c6f3089} },
+/**/ {{0x1d4e69a5, 0xbfbc4511} },
+/**/ {{0xd2083ce8, 0x3c254c0f} },
+/**/ {{0xcd488978, 0xbfd3be01} },
+/**/ {{0x6362ec0f, 0x3c5612db} },
+/**/ {{0xf0d94873, 0x3fbb344e} },
+/**/ {{0xfdf7db72, 0xbc182beb} },
+/**/ {{0xb9d86c04, 0x3fc4f4d2} },
+/**/ {{0xdf238807, 0xbfb9b828} },
+/**/ {{0x5f93ffd6, 0xbfb8a082} },
+/**/ {{0xb6650b0c, 0x3fb7dd89} },
+/**/ {{0xb62676ef, 0x3fac5526} } },
+/**/ {{{0x00000000, 0x3fbe0000} },
+/**/ {{0x701eba6e, 0x3fbddd21} },
+/**/ {{0xcd76fe58, 0x3c594eff} },
+/**/ {{0x266112ba, 0x3fef9106} },
+/**/ {{0x6b7e18b1, 0x3c74c302} },
+/**/ {{0x5777816c, 0xbfbd3154} },
+/**/ {{0x1f9dbddd, 0x3c5dc7e4} },
+/**/ {{0x37a90881, 0xbfd3a265} },
+/**/ {{0xeb7ba840, 0xbc75bd61} },
+/**/ {{0x0a52514b, 0x3fbc045a} },
+/**/ {{0xcff49a99, 0xbc35ca88} },
+/**/ {{0x498eeb56, 0x3fc4a6aa} },
+/**/ {{0xa09232cf, 0xbfba61eb} },
+/**/ {{0x4a464027, 0xbfb7dfa2} },
+/**/ {{0xe633c053, 0x3fb85933} },
+/**/ {{0x3f920107, 0x3faaa036} } },
+/**/ {{{0x00000000, 0x3fbf0000} },
+/**/ {{0x2190043b, 0x3fbed98c} },
+/**/ {{0x592c7b13, 0xbc23a598} },
+/**/ {{0x6bcf4ad8, 0x3fef899c} },
+/**/ {{0x912c09b0, 0x3c55fd73} },
+/**/ {{0x607f91a0, 0xbfbe1c47} },
+/**/ {{0x5b5db022, 0x3c576677} },
+/**/ {{0x21046f5f, 0xbfd385fa} },
+/**/ {{0x4487f4b8, 0x3c7f01c3} },
+/**/ {{0xb77f2d51, 0x3fbcd14d} },
+/**/ {{0x30a2ccfe, 0x3c57a86d} },
+/**/ {{0x8782b530, 0x3fc4568c} },
+/**/ {{0x02b7ad2d, 0xbfbb065b} },
+/**/ {{0xbd215555, 0xbfb71b03} },
+/**/ {{0xb9c1c1de, 0x3fb8cd23} },
+/**/ {{0x8dbfa69b, 0x3fa8e602} } },
+/**/ {{{0x00000000, 0x3fc00000} },
+/**/ {{0x9aac2f6e, 0x3fbfd5ba} },
+/**/ {{0x86760c17, 0xbc4cd376} },
+/**/ {{0x1f81f820, 0x3fef81f8} },
+/**/ {{0x1f81f820, 0xbc8f81f8} },
+/**/ {{0x9d0dc11b, 0xbfbf05e0} },
+/**/ {{0x1d821725, 0xbc35a199} },
+/**/ {{0xaa76e1d7, 0xbfd368c3} },
+/**/ {{0xc796f8cd, 0xbc672d4c} },
+/**/ {{0xb391c2e3, 0x3fbd9b16} },
+/**/ {{0x8086c51d, 0x3c58051b} },
+/**/ {{0x94488c86, 0x3fc40489} },
+/**/ {{0xa98401c8, 0xbfbba55d} },
+/**/ {{0xe5127e64, 0xbfb652e4} },
+/**/ {{0x442e53ae, 0x3fb93943} },
+/**/ {{0x86286f75, 0x3fa72753} } },
+/**/ {{{0x00000000, 0x3fc08000} },
+/**/ {{0x84212b3e, 0x3fc068d5} },
+/**/ {{0x83019bfd, 0xbc69e2d2} },
+/**/ {{0x991bb133, 0x3fef7a19} },
+/**/ {{0x66627723, 0x3c7a956a} },
+/**/ {{0x97c8e137, 0xbfbfee16} },
+/**/ {{0x66dbe7af, 0x3c4d9399} },
+/**/ {{0x0810323a, 0xbfd34ac5} },
+/**/ {{0x6bc6c512, 0x3c6a1a57} },
+/**/ {{0x5c75a6f9, 0x3fbe61a2} },
+/**/ {{0xd75c8f85, 0xbc492b99} },
+/**/ {{0xd9fa3f20, 0x3fc3b0b1} },
+/**/ {{0xee66d309, 0xbfbc3edb} },
+/**/ {{0x905eeb33, 0xbfb58784} },
+/**/ {{0x1c65bb14, 0x3fb99d80} },
+/**/ {{0x18a09884, 0x3fa564f1} } },
+/**/ {{{0x00000000, 0x3fc10000} },
+/**/ {{0xccf40882, 0x3fc0e6ad} },
+/**/ {{0x1bb98d0d, 0xbc6d71a3} },
+/**/ {{0x32978bad, 0x3fef7201} },
+/**/ {{0x599381e9, 0x3c816476} },
+/**/ {{0x011b81fd, 0xbfc06a70} },
+/**/ {{0x9ba697ca, 0xbc422f5d} },
+/**/ {{0x802fc0a5, 0xbfd32c01} },
+/**/ {{0x08a20868, 0x3c7d8e47} },
+/**/ {{0xb59597fe, 0x3fbf24de} },
+/**/ {{0x410d31eb, 0xbc43288f} },
+/**/ {{0x070feb24, 0x3fc35b16} },
+/**/ {{0xe4565b78, 0xbfbcd2bf} },
+/**/ {{0x128768c6, 0xbfb4b922} },
+/**/ {{0x5c42a097, 0x3fb9f9cb} },
+/**/ {{0xc7f97f2e, 0x3fa39fa2} } },
+/**/ {{{0x00000000, 0x3fc18000} },
+/**/ {{0x41060850, 0x3fc16465} },
+/**/ {{0x8ae7ea92, 0x3c66bcee} },
+/**/ {{0x483f492b, 0x3fef69af} },
+/**/ {{0x57db963e, 0xbc6e3280} },
+/**/ {{0xdacaa844, 0xbfc0dd19} },
+/**/ {{0xad7fc21e, 0xbc6133c7} },
+/**/ {{0x6addaea8, 0xbfd30c7c} },
+/**/ {{0x89161c76, 0xbc71443d} },
+/**/ {{0x6a6d3cd2, 0x3fbfe4ba} },
+/**/ {{0x423ee67a, 0x3c50d4b8} },
+/**/ {{0x092e569a, 0x3fc303c7} },
+/**/ {{0x5b11d3b6, 0xbfbd60f5} },
+/**/ {{0x283b5c55, 0xbfb3e7fd} },
+/**/ {{0x9d9a6ab7, 0x3fba4e19} },
+/**/ {{0x3487cc29, 0x3fa1d82f} } },
+/**/ {{{0x00000000, 0x3fc20000} },
+/**/ {{0xfb043727, 0x3fc1e1fa} },
+/**/ {{0x14dacf8c, 0xbc4b4859} },
+/**/ {{0x38a14f5e, 0x3fef6124} },
+/**/ {{0x001f6124, 0x3c798e9e} },
+/**/ {{0x59d3fb7c, 0xbfc14f04} },
+/**/ {{0x4cc99cb2, 0x3c531efa} },
+/**/ {{0x31219b34, 0xbfd2ec39} },
+/**/ {{0x6e004611, 0xbc618697} },
+/**/ {{0x68736312, 0x3fc05092} },
+/**/ {{0x8a06e4b5, 0x3c67aad4} },
+/**/ {{0x07eca5ec, 0x3fc2aad6} },
+/**/ {{0xe19fe31c, 0xbfbde969} },
+/**/ {{0xdb6b9127, 0xbfb31455} },
+/**/ {{0xf53dd9ee, 0x3fba9a62} },
+/**/ {{0xa8e4ede0, 0x3fa00f5b} } },
+/**/ {{{0x00000000, 0x3fc28000} },
+/**/ {{0x171a535c, 0x3fc25f6e} },
+/**/ {{0xbde1a310, 0x3c67c6d7} },
+/**/ {{0x64866d22, 0x3fef5860} },
+/**/ {{0xd1f6326c, 0x3c88c6ff} },
+/**/ {{0x13c11396, 0xbfc1c02b} },
+/**/ {{0xffeb1a0f, 0xbc51b469} },
+/**/ {{0x4c571b0f, 0xbfd2cb3b} },
+/**/ {{0x2fb0b163, 0x3c6e4f76} },
+/**/ {{0xf5c213ab, 0x3fc0ad06} },
+/**/ {{0xabea9e66, 0x3c625bf2} },
+/**/ {{0x5f93bbb2, 0x3fc25054} },
+/**/ {{0xc80a32c8, 0xbfbe6c0c} },
+/**/ {{0x678d0d1e, 0xbfb23e6c} },
+/**/ {{0xebf8ae4b, 0x3fbadea2} },
+/**/ {{0x527f133b, 0x3f9c8bd7} } },
+/**/ {{{0x00000000, 0x3fc30000} },
+/**/ {{0xb2fba1ff, 0x3fc2dcbd} },
+/**/ {{0x05561534, 0x3c58f287} },
+/**/ {{0x2ee76e94, 0x3fef4f64} },
+/**/ {{0xc6da5865, 0x3c80ec89} },
+/**/ {{0xb322f867, 0xbfc23089} },
+/**/ {{0x5fcd0d6f, 0x3c4c2b54} },
+/**/ {{0x45802261, 0xbfd2a986} },
+/**/ {{0x5ae78b8a, 0xbc79a132} },
+/**/ {{0x35a9d974, 0x3fc107b3} },
+/**/ {{0xb725e335, 0x3c5ef22d} },
+/**/ {{0x9bd98832, 0x3fc1f453} },
+/**/ {{0x2057aad4, 0xbfbee8cf} },
+/**/ {{0x1e1bc3a1, 0xbfb16681} },
+/**/ {{0x759c8f58, 0x3fbb1ad8} },
+/**/ {{0x0b15b4aa, 0x3f98f941} } },
+/**/ {{{0x00000000, 0x3fc38000} },
+/**/ {{0xedeb99a4, 0x3fc359e8} },
+/**/ {{0x4e4604c6, 0xbc6a5fd7} },
+/**/ {{0xfce28238, 0x3fef462f} },
+/**/ {{0xd90595d1, 0x3c83dc01} },
+/**/ {{0xf7edfa6d, 0xbfc2a01b} },
+/**/ {{0x4a3b5c9a, 0xbc6b11fb} },
+/**/ {{0xb4959402, 0xbfd2871d} },
+/**/ {{0x2fcf7ea3, 0xbc4a3702} },
+/**/ {{0xd8d7fe8c, 0x3fc1608f} },
+/**/ {{0xf8f1d41c, 0x3c61ac60} },
+/**/ {{0x729a89ca, 0x3fc196e5} },
+/**/ {{0xbec74f31, 0xbfbf5fa3} },
+/**/ {{0x4b6c9767, 0xbfb08cd4} },
+/**/ {{0xe624ce15, 0x3fbb4f05} },
+/**/ {{0xddb2020c, 0x3f956871} } },
+/**/ {{{0x00000000, 0x3fc40000} },
+/**/ {{0xe8c6626c, 0x3fc3d6ee} },
+/**/ {{0x0ce9281b, 0x3c661a3b} },
+/**/ {{0x35b0713c, 0x3fef3cc4} },
+/**/ {{0xe69ea094, 0x3c81d0a7} },
+/**/ {{0xb7d169f0, 0xbfc30edd} },
+/**/ {{0xae999b97, 0x3c6b3394} },
+/**/ {{0x3fd62b3c, 0xbfd26405} },
+/**/ {{0xc0736df9, 0x3c73e339} },
+/**/ {{0xe8e57ee3, 0x3fc1b795} },
+/**/ {{0x0a42c7f6, 0xbc6130dc} },
+/**/ {{0xbe93b8e5, 0x3fc1381b} },
+/**/ {{0x394e1bf7, 0xbfbfd07f} },
+/**/ {{0x37bb5315, 0xbfaf634c} },
+/**/ {{0xe501e57b, 0x3fbb7b30} },
+/**/ {{0x20503792, 0x3f91dae1} } },
+/**/ {{{0x00000000, 0x3fc48000} },
+/**/ {{0xc6092a9e, 0x3fc453ce} },
+/**/ {{0xb3a5a78b, 0x3c61f653} },
+/**/ {{0x4299ace8, 0x3fef3321} },
+/**/ {{0x3a742b30, 0xbc87414c} },
+/**/ {{0xde8b2323, 0xbfc37cca} },
+/**/ {{0x7b50aedf, 0x3c649378} },
+/**/ {{0x9b13f4d0, 0xbfd24040} },
+/**/ {{0xb7dc85c0, 0x3c7e271f} },
+/**/ {{0xc9024068, 0x3fc20cbe} },
+/**/ {{0x88ef3da7, 0x3c50921f} },
+/**/ {{0x7a1f1270, 0x3fc0d808} },
+/**/ {{0xf32d5436, 0xbfc01dab} },
+/**/ {{0x02e6f09c, 0xbfadaa6d} },
+/**/ {{0x5e9cd766, 0x3fbb9f62} },
+/**/ {{0xab964c04, 0x3f8ca3fe} } },
+/**/ {{{0x00000000, 0x3fc50000} },
+/**/ {{0xa9da4f17, 0x3fc4d087} },
+/**/ {{0xf1adf158, 0x3c61f323} },
+/**/ {{0x8eeb3352, 0x3fef2947} },
+/**/ {{0x8799a164, 0x3c871eb0} },
+/**/ {{0x6e36e75c, 0xbfc3e9df} },
+/**/ {{0x4e37666f, 0x3c541555} },
+/**/ {{0x87008bd0, 0xbfd21bd3} },
+/**/ {{0xc24ff75f, 0xbc609e14} },
+/**/ {{0x36860504, 0x3fc26004} },
+/**/ {{0x1ebc8c40, 0xbc58f8ca} },
+/**/ {{0xb9f4ead3, 0x3fc076bd} },
+/**/ {{0xed70ddd5, 0xbfc05012} },
+/**/ {{0x33e194b1, 0xbfabef8a} },
+/**/ {{0x7423a91f, 0x3fbbbba6} },
+/**/ {{0xdd99da12, 0x3f859e6a} } },
+/**/ {{{0x00000000, 0x3fc58000} },
+/**/ {{0xba11570a, 0x3fc54d18} },
+/**/ {{0xf2884073, 0x3c618282} },
+/**/ {{0x87eb4d7d, 0x3fef1f37} },
+/**/ {{0xedda13e6, 0x3c8476f0} },
+/**/ {{0x7f997c7c, 0xbfc45617} },
+/**/ {{0x6423ceda, 0xbc46bf5b} },
+/**/ {{0xd0784ec7, 0xbfd1f6c1} },
+/**/ {{0xd106a8e0, 0xbc74ec12} },
+/**/ {{0x4967338d, 0x3fc2b160} },
+/**/ {{0x61339c25, 0x3c5309c0} },
+/**/ {{0xa7f42962, 0x3fc0144d} },
+/**/ {{0x73dbaeec, 0xbfc07f71} },
+/**/ {{0x2aeda9a4, 0xbfaa3322} },
+/**/ {{0x69b152b3, 0x3fbbd00c} },
+/**/ {{0x4c782821, 0x3f7d4f90} } },
+/**/ {{{0x00000000, 0x3fc60000} },
+/**/ {{0x1e3ec26a, 0x3fc5c981} },
+/**/ {{0x2c010f3d, 0xbc5054ab} },
+/**/ {{0x9cce28eb, 0x3fef14f1} },
+/**/ {{0x2708cd6e, 0xbc8b7c25} },
+/**/ {{0x42678d07, 0xbfc4c16f} },
+/**/ {{0xc1560017, 0x3c5f55ba} },
+/**/ {{0x4fccc153, 0xbfd1d10f} },
+/**/ {{0x1bcc361d, 0x3c529588} },
+/**/ {{0x74979f8c, 0x3fc300cd} },
+/**/ {{0x0bc1e891, 0xbc6b1da5} },
+/**/ {{0xfbe70208, 0x3fbf6194} },
+/**/ {{0x4b1c266f, 0xbfc0abc5} },
+/**/ {{0x3b74e858, 0xbfa875b2} },
+/**/ {{0x92e46f11, 0x3fbbdca6} },
+/**/ {{0x9de94aef, 0x3f6f0b17} } },
+/**/ {{{0x00000000, 0x3fc68000} },
+/**/ {{0xffb3aa74, 0x3fc645bf} },
+/**/ {{0x677c2cb4, 0xbc3f536b} },
+/**/ {{0x3eaa4ed6, 0x3fef0a76} },
+/**/ {{0x0b06c761, 0x3c888c52} },
+/**/ {{0xfd884489, 0xbfc52be2} },
+/**/ {{0xbe5c728a, 0x3c67ec59} },
+/**/ {{0xe80e4e0a, 0xbfd1aabf} },
+/**/ {{0xe90c909e, 0xbc71320e} },
+/**/ {{0x864781ca, 0x3fc34e46} },
+/**/ {{0x126138ee, 0x3c42fcb3} },
+/**/ {{0x013b5d4f, 0x3fbe988d} },
+/**/ {{0x122409a2, 0xbfc0d50d} },
+/**/ {{0x7bb562c1, 0xbfa6b7b6} },
+/**/ {{0x3df8dee8, 0x3fbbe18a} },
+/**/ {{0x8809e1ef, 0x3f3e4009} } },
+/**/ {{{0x00000000, 0x3fc70000} },
+/**/ {{0x898933d9, 0x3fc6c1d4} },
+/**/ {{0x7603c427, 0xbc52954a} },
+/**/ {{0xe06cfb34, 0x3feeffc5} },
+/**/ {{0x379877c2, 0xbc85c037} },
+/**/ {{0x0f53a52c, 0xbfc5956f} },
+/**/ {{0xe566376c, 0x3c4d46a2} },
+/**/ {{0x86559c11, 0xbfd183d7} },
+/**/ {{0x64734c7f, 0x3c7d2520} },
+/**/ {{0xa80eddd5, 0x3fc399c6} },
+/**/ {{0x40fbef6f, 0x3c616c26} },
+/**/ {{0xf4b571a7, 0x3fbdcda7} },
+/**/ {{0x3fd42996, 0xbfc0fb48} },
+/**/ {{0x95c85118, 0xbfa4f9a9} },
+/**/ {{0x9d795df4, 0x3fbbdecf} },
+/**/ {{0xb85bf719, 0xbf672003} } },
+/**/ {{{0x00000000, 0x3fc78000} },
+/**/ {{0xe8a7d202, 0x3fc73dbd} },
+/**/ {{0x6d4a665d, 0xbc55ad0f} },
+/**/ {{0xf6ce5590, 0x3feef4e0} },
+/**/ {{0x556900ef, 0xbc833df6} },
+/**/ {{0xedcc9488, 0xbfc5fe0f} },
+/**/ {{0xd2b9e35c, 0x3c5078de} },
+/**/ {{0x210cab36, 0xbfd15c5a} },
+/**/ {{0xf55e532a, 0x3c67fa93} },
+/**/ {{0x5efd9a41, 0x3fc3e349} },
+/**/ {{0xc8573a12, 0xbc6cf709} },
+/**/ {{0x6c903aef, 0x3fbd010a} },
+/**/ {{0x20571328, 0xbfc11e77} },
+/**/ {{0x9a1875dd, 0xbfa33c04} },
+/**/ {{0xb09ec0ce, 0x3fbbd491} },
+/**/ {{0x35537a65, 0xbf78d197} } },
+/**/ {{{0x00000000, 0x3fc80000} },
+/**/ {{0x4bce5b02, 0x3fc7b97b} },
+/**/ {{0xb4f881ca, 0x3c5347b0} },
+/**/ {{0xf8458e02, 0x3feee9c7} },
+/**/ {{0x7ba71fe1, 0xbc616380} },
+/**/ {{0x26d69eeb, 0xbfc665c2} },
+/**/ {{0xfdb5eea8, 0xbc572a33} },
+/**/ {{0xb737e8f3, 0xbfd1344b} },
+/**/ {{0x62badf41, 0xbc757b70} },
+/**/ {{0x8b929b0b, 0x3fc42aca} },
+/**/ {{0x7a8b7d91, 0x3c43cdb5} },
+/**/ {{0xf683981c, 0x3fbc32d8} },
+/**/ {{0xd22d5ecc, 0xbfc13e9a} },
+/**/ {{0xd35c8c33, 0xbfa17f3e} },
+/**/ {{0x2a73307e, 0x3fbbc2ee} },
+/**/ {{0x2bddc834, 0xbf82ee04} } },
+/**/ {{{0x00000000, 0x3fc88000} },
+/**/ {{0xe398ebc8, 0x3fc8350b} },
+/**/ {{0x32b9c90d, 0xbc55a913} },
+/**/ {{0x5cfce04c, 0x3feede7b} },
+/**/ {{0x3b51a72f, 0x3c8507c2} },
+/**/ {{0x6067718b, 0xbfc6cc82} },
+/**/ {{0xdbfc430f, 0x3c6d00ca} },
+/**/ {{0x4fbf6fe8, 0xbfd10bb0} },
+/**/ {{0x53749c72, 0x3c321748} },
+/**/ {{0x699a36ad, 0x3fc47046} },
+/**/ {{0x3994d40c, 0xbc63924c} },
+/**/ {{0x0dfb7483, 0x3fbb6338} },
+/**/ {{0x42ee5820, 0xbfc15bb5} },
+/**/ {{0x385194fc, 0xbf9f879b} },
+/**/ {{0x57d040e9, 0x3fbbaa05} },
+/**/ {{0xada71ca0, 0xbf895566} } },
+/**/ {{{0x00000000, 0x3fc90000} },
+/**/ {{0xe2879c29, 0x3fc8b06e} },
+/**/ {{0x30308c4f, 0xbc6118cd} },
+/**/ {{0x9ec57f51, 0x3feed2fb} },
+/**/ {{0xc0d106ba, 0xbc83fdc5} },
+/**/ {{0x58b40d27, 0xbfc7324d} },
+/**/ {{0xfc062163, 0x3c68e240} },
+/**/ {{0xf8b8a2bf, 0xbfd0e28b} },
+/**/ {{0x64c55b39, 0xbc7b8d8a} },
+/**/ {{0x8ff46730, 0x3fc4b3b9} },
+/**/ {{0x988563da, 0xbc5af146} },
+/**/ {{0x1277a10d, 0x3fba924c} },
+/**/ {{0x2bbfd54d, 0xbfc175c9} },
+/**/ {{0x6c522340, 0xbf9c1448} },
+/**/ {{0x044f2f6b, 0x3fbb89fa} },
+/**/ {{0xaaecc742, 0xbf8f9cc7} } },
+/**/ {{{0x00000000, 0x3fc98000} },
+/**/ {{0x7d050272, 0x3fc92ba3} },
+/**/ {{0xd0ff4764, 0xbc60d3de} },
+/**/ {{0x390b6afe, 0x3feec749} },
+/**/ {{0x4e3659ca, 0xbc5c3d17} },
+/**/ {{0xe659b3de, 0xbfc7971f} },
+/**/ {{0x373f554d, 0x3c4cab11} },
+/**/ {{0xc6b052a4, 0xbfd0b8e2} },
+/**/ {{0x6f3b74bc, 0x3c7da014} },
+/**/ {{0xf0432146, 0x3fc4f520} },
+/**/ {{0xa8027290, 0xbc6769ad} },
+/**/ {{0x3e17b570, 0x3fb9c039} },
+/**/ {{0x0d8833a4, 0xbfc18cda} },
+/**/ {{0x4627d340, 0xbf98a567} },
+/**/ {{0x5e42eff7, 0x3fbb62f1} },
+/**/ {{0x7ee3bed3, 0xbf92e10a} } },
+/**/ {{{0x00000000, 0x3fca0000} },
+/**/ {{0xe96c8626, 0x3fc9a6a8} },
+/**/ {{0xe7b4348e, 0x3c4cf601} },
+/**/ {{0xa8c932d7, 0x3feebb64} },
+/**/ {{0x79aae302, 0x3c20538d} },
+/**/ {{0xf88295fe, 0xbfc7faf6} },
+/**/ {{0x932909e9, 0xbc687a81} },
+/**/ {{0xd3f5a07b, 0xbfd08eb8} },
+/**/ {{0xfb7d6aaa, 0xbc620a05} },
+/**/ {{0xd6814372, 0x3fc53479} },
+/**/ {{0x0a0c6620, 0xbc53c682} },
+/**/ {{0x9c562d77, 0x3fb8ed23} },
+/**/ {{0x2cdd89fd, 0xbfc1a0ec} },
+/**/ {{0xfec9df82, 0xbf953bd4} },
+/**/ {{0xd9d3f0f6, 0x3fbb3512} },
+/**/ {{0x4534ccf5, 0xbf95e1ab} } },
+/**/ {{{0x00000000, 0x3fca8000} },
+/**/ {{0x601081a6, 0x3fca217e} },
+/**/ {{0xa60af374, 0xbc60def8} },
+/**/ {{0x6c7ba732, 0x3feeaf4e} },
+/**/ {{0xe91fffe1, 0x3c89fa72} },
+/**/ {{0x970642c3, 0xbfc85dcf} },
+/**/ {{0x5b7f0ad0, 0xbc5732c2} },
+/**/ {{0x3fe5c74d, 0xbfd06412} },
+/**/ {{0x4a82f9b1, 0xbc7d0053} },
+/**/ {{0xe882973d, 0x3fc571c1} },
+/**/ {{0x9090f12c, 0x3c59d9a3} },
+/**/ {{0x00f5d0e0, 0x3fb8192f} },
+/**/ {{0x8db53983, 0xbfc1b204} },
+/**/ {{0xbdd7b47e, 0xbf91d869} },
+/**/ {{0x1355a903, 0x3fbb0088} },
+/**/ {{0x724a2ad9, 0xbf98cf57} } },
+/**/ {{{0x00000000, 0x3fcb0000} },
+/**/ {{0x1b403279, 0x3fca9c23} },
+/**/ {{0xe89cca85, 0x3c60e8bb} },
+/**/ {{0x04157b4f, 0x3feea307} },
+/**/ {{0xfd8bf1f0, 0x3c8ad743} },
+/**/ {{0xe285e2fd, 0xbfc8bfa6} },
+/**/ {{0x9c834c8f, 0xbc6ce765} },
+/**/ {{0x2e38fd26, 0xbfd038f3} },
+/**/ {{0xef212a80, 0x3c6a42ec} },
+/**/ {{0x255d65d5, 0x3fc5acf7} },
+/**/ {{0xbe486771, 0xbc619fba} },
+/**/ {{0xff244e15, 0x3fb7447e} },
+/**/ {{0xeed71b69, 0xbfc1c028} },
+/**/ {{0xaceecf68, 0xbf8cf7f0} },
+/**/ {{0xb0ee161b, 0x3fbac57c} },
+/**/ {{0xefc8f53e, 0xbf9ba92d} } },
+/**/ {{{0x00000000, 0x3fcb8000} },
+/**/ {{0x574d780c, 0x3fcb1696} },
+/**/ {{0xfc15a673, 0xbc585ab8} },
+/**/ {{0xf0f2da5a, 0x3fee968e} },
+/**/ {{0x69710f0d, 0xbc6fffe1} },
+/**/ {{0x148444b5, 0xbfc9207a} },
+/**/ {{0x1802fa91, 0xbc66661a} },
+/**/ {{0xc65096ca, 0xbfd00d5f} },
+/**/ {{0x8920e744, 0x3c7f2a2e} },
+/**/ {{0xe4be288d, 0x3fc5e617} },
+/**/ {{0x99be934f, 0x3c67fa48} },
+/**/ {{0xe0d4c87a, 0x3fb66f36} },
+/**/ {{0xc5179ce8, 0xbfc1cb5f} },
+/**/ {{0x1011bb6c, 0xbf864e9c} },
+/**/ {{0x43a75476, 0x3fba841e} },
+/**/ {{0x845fc859, 0xbf9e6e5b} } },
+/**/ {{{0x00000000, 0x3fcc0000} },
+/**/ {{0x529260a2, 0x3fcb90d7} },
+/**/ {{0xd2e0e5ab, 0x3c217b10} },
+/**/ {{0xb5ccf172, 0x3fee89e6} },
+/**/ {{0x153be26a, 0x3c820357} },
+/**/ {{0x7f79bfd6, 0xbfc98046} },
+/**/ {{0xf5d60955, 0xbc0799ee} },
+/**/ {{0x650d32f4, 0xbfcfc2b8} },
+/**/ {{0x4d01b49e, 0xbc6b59de} },
+/**/ {{0xd625e475, 0x3fc61d22} },
+/**/ {{0xe23c6105, 0xbc68013f} },
+/**/ {{0x9e54f300, 0x3fb59979} },
+/**/ {{0x365c2b85, 0xbfc1d3b0} },
+/**/ {{0x0afb6b97, 0xbf7f6cc9} },
+/**/ {{0x28035c12, 0x3fba3c9c} },
+/**/ {{0x8331488a, 0xbfa08f0d} } },
+/**/ {{{0x00000000, 0x3fcc8000} },
+/**/ {{0x4d768467, 0x3fcc0ae5} },
+/**/ {{0xf55f26dc, 0xbc604cdb} },
+/**/ {{0xd6ad70cb, 0x3fee7d0e} },
+/**/ {{0xee20d17d, 0x3c8e6761} },
+/**/ {{0x8ee3fcf8, 0xbfc9df09} },
+/**/ {{0xed723e81, 0x3c62daa3} },
+/**/ {{0x3efdc9b4, 0xbfcf69d9} },
+/**/ {{0x85a20110, 0x3c6c7b6f} },
+/**/ {{0x0013c661, 0x3fc65217} },
+/**/ {{0xab1387be, 0xbc678a0c} },
+/**/ {{0xd61f268e, 0x3fb4c369} },
+/**/ {{0x146d6110, 0xbfc1d922} },
+/**/ {{0xc0b0ed0a, 0xbf726199} },
+/**/ {{0x6629c856, 0x3fb9ef27} },
+/**/ {{0xc1ea955d, 0xbfa1dbda} } },
+/**/ {{{0x00000000, 0x3fcd0000} },
+/**/ {{0x8a742e6e, 0x3fcc84bf} },
+/**/ {{0x0682ea26, 0xbc595bdd} },
+/**/ {{0xd8e205ea, 0x3fee7007} },
+/**/ {{0x7b2991c1, 0x3c816199} },
+/**/ {{0xc751a854, 0xbfca3cc0} },
+/**/ {{0x4efbc78c, 0xbc66a2fd} },
+/**/ {{0x76f43baa, 0xbfcf102a} },
+/**/ {{0x38d996b1, 0x3c6cfc38} },
+/**/ {{0xbf1a9ad6, 0x3fc684f3} },
+/**/ {{0x7c3b6690, 0x3c52eaf7} },
+/**/ {{0xc4ebba84, 0x3fb3ed29} },
+/**/ {{0xd79a6a53, 0xbfc1dbbd} },
+/**/ {{0xfd09510e, 0xbf55fa5b} },
+/**/ {{0x91c74d50, 0x3fb99bf2} },
+/**/ {{0x3002c38b, 0xbfa31d41} } },
+/**/ {{{0x00000000, 0x3fcd8000} },
+/**/ {{0x4e1d5395, 0x3fccfe65} },
+/**/ {{0x3f71eafb, 0x3c647b9a} },
+/**/ {{0x42efd10e, 0x3fee62d2} },
+/**/ {{0xa021973e, 0x3c850a65} },
+/**/ {{0xc66a1be4, 0xbfca9969} },
+/**/ {{0x3753f036, 0x3c326164} },
+/**/ {{0x6b550477, 0xbfceb5b4} },
+/**/ {{0xa3ef610f, 0xbc64cacb} },
+/**/ {{0xc4e2c295, 0x3fc6b5b8} },
+/**/ {{0x98b2ac7f, 0x3c66b228} },
+/**/ {{0x3e03bb80, 0x3fb316db} },
+/**/ {{0x99312ba1, 0xbfc1db8c} },
+/**/ {{0x8536556f, 0x3f5ce5b0} },
+/**/ {{0xa9b62abf, 0x3fb94331} },
+/**/ {{0xb36f42fc, 0xbfa452f3} } },
+/**/ {{{0x00000000, 0x3fce0000} },
+/**/ {{0xdf205736, 0x3fcd77d5} },
+/**/ {{0x1534597e, 0x3c6c648d} },
+/**/ {{0x9c86d7c6, 0x3fee556e} },
+/**/ {{0x34c9abfd, 0xbc830c25} },
+/**/ {{0x42f10c89, 0xbfcaf502} },
+/**/ {{0xf8576d95, 0xbc411261} },
+/**/ {{0x7b1596d9, 0xbfce5a7f} },
+/**/ {{0x78f7ae18, 0x3c574baa} },
+/**/ {{0x171949b1, 0x3fc6e466} },
+/**/ {{0x52f9c399, 0xbc6ff86b} },
+/**/ {{0xa3d6f244, 0x3fb2409f} },
+/**/ {{0x0dceacbf, 0xbfc1d898} },
+/**/ {{0xdc715080, 0x3f73c3b6} },
+/**/ {{0xf78687ab, 0x3fb8e519} },
+/**/ {{0x6b1251ec, 0xbfa57cac} } },
+/**/ {{{0x00000000, 0x3fce8000} },
+/**/ {{0x864c9d9e, 0x3fcdf110} },
+/**/ {{0x53bf4781, 0xbc35818b} },
+/**/ {{0x6e7576a6, 0x3fee47dd} },
+/**/ {{0x24b84595, 0x3c89d322} },
+/**/ {{0x0cc64717, 0xbfcb4f88} },
+/**/ {{0x44bb97a3, 0xbc624035} },
+/**/ {{0x046e8a3b, 0xbfcdfe94} },
+/**/ {{0xd278da00, 0xbc6078ee} },
+/**/ {{0x0e4ccbb7, 0x3fc710fc} },
+/**/ {{0x1da51f71, 0xbc58c89c} },
+/**/ {{0xe0d7022a, 0x3fb16a97} },
+/**/ {{0x7f8b58f8, 0xbfc1d2ea} },
+/**/ {{0xaf259d18, 0x3f800ed5} },
+/**/ {{0xeefd29c7, 0x3fb881e1} },
+/**/ {{0xae6aa0c1, 0xbfa69a2c} } },
+/**/ {{{0x00000000, 0x3fcf0000} },
+/**/ {{0x8e96ec4d, 0x3fce6a14} },
+/**/ {{0x2029f765, 0x3c6866b2} },
+/**/ {{0x429bd423, 0x3fee3a1f} },
+/**/ {{0x48961291, 0xbc86174a} },
+/**/ {{0x0ce18ad9, 0xbfcba8f9} },
+/**/ {{0xb50eb15d, 0x3c62e3e9} },
+/**/ {{0x63927806, 0xbfcda1fa} },
+/**/ {{0x8073bacf, 0xbbed7b15} },
+/**/ {{0x54b8d3bb, 0x3fc73b7b} },
+/**/ {{0x74869c1c, 0x3c602afb} },
+/**/ {{0x60993bd6, 0x3fb094e4} },
+/**/ {{0xc806a157, 0xbfc1ca8e} },
+/**/ {{0xa854d278, 0x3f862263} },
+/**/ {{0x0d9e7452, 0x3fb819c1} },
+/**/ {{0x08743869, 0xbfa7ab3d} } },
+/**/ {{{0x00000000, 0x3fcf8000} },
+/**/ {{0x451d980d, 0x3fcee2e1} },
+/**/ {{0x8c46ba91, 0xbc59a770} },
+/**/ {{0xa3df5666, 0x3fee2c34} },
+/**/ {{0x19a92865, 0xbc8ef949} },
+/**/ {{0x454a9009, 0xbfcc0153} },
+/**/ {{0xda1123ca, 0x3c5572bf} },
+/**/ {{0xf169cd42, 0xbfcd44ba} },
+/**/ {{0xf1052e0a, 0xbc6db0f2} },
+/**/ {{0xe5006ad1, 0x3fc763e4} },
+/**/ {{0x3e902796, 0x3c66e21a} },
+/**/ {{0x12812c7d, 0x3faf7f4a} },
+/**/ {{0x4a558d9d, 0xbfc1bf90} },
+/**/ {{0x2be7fbfd, 0x3f8c1b52} },
+/**/ {{0xba5b0263, 0x3fb7acef} },
+/**/ {{0x2dddf4e5, 0xbfa8afad} } },
+/**/ {{{0x00000000, 0x3fd00000} },
+/**/ {{0xf92c80dd, 0x3fcf5b75} },
+/**/ {{0x3cf7afbd, 0x3c68ab6e} },
+/**/ {{0x1e1e1e1e, 0x3fee1e1e} },
+/**/ {{0x1e1e1e1e, 0x3c6e1e1e} },
+/**/ {{0xd10d4986, 0xbfcc5894} },
+/**/ {{0xc4a6886a, 0x3c5f00e2} },
+/**/ {{0x0253d27e, 0xbfcce6de} },
+/**/ {{0x3c5fce89, 0xbc65d764} },
+/**/ {{0x08d88b02, 0x3fc78a3a} },
+/**/ {{0x32bd57e4, 0x3c4fc5d6} },
+/**/ {{0x6a622b44, 0x3fadd5f2} },
+/**/ {{0xecd7c4e0, 0xbfc1b1fa} },
+/**/ {{0x1fc8b549, 0x3f90fc3e} },
+/**/ {{0x25728acf, 0x3fb73ba7} },
+/**/ {{0xeeba051f, 0xbfa9a753} } },
+/**/ {{{0x00000000, 0x3fd04000} },
+/**/ {{0xfc40dbe4, 0x3fcfd3d1} },
+/**/ {{0xf3a1c5ea, 0x3c437146} },
+/**/ {{0x3e228818, 0x3fee0fdc} },
+/**/ {{0x8c042ef5, 0xbc62e075} },
+/**/ {{0xe42a71b9, 0xbfccaebb} },
+/**/ {{0x8025fd1d, 0xbc69fa0a} },
+/**/ {{0xe4ed28e5, 0xbfcc886b} },
+/**/ {{0x7604b95a, 0xbc59ccc3} },
+/**/ {{0x57a32fb9, 0x3fc7ae7c} },
+/**/ {{0xe36848c2, 0x3c67393b} },
+/**/ {{0x5a1b7b6f, 0x3fac2dff} },
+/**/ {{0x12f690d4, 0xbfc1a1db} },
+/**/ {{0xa575dc1d, 0x3f93dc65} },
+/**/ {{0x28a107f6, 0x3fb6c621} },
+/**/ {{0x23d2c35f, 0xbfaa920f} } },
+/**/ {{{0x00000000, 0x3fd08000} },
+/**/ {{0x510665b6, 0x3fd025fa} },
+/**/ {{0x6832fa48, 0xbc7672df} },
+/**/ {{0x9196b776, 0x3fee016f} },
+/**/ {{0xb14efc08, 0x3c81da3a} },
+/**/ {{0xcb847375, 0xbfcd03c6} },
+/**/ {{0xfc4c6f52, 0xbc6819f2} },
+/**/ {{0xe0dbf8a5, 0xbfcc296c} },
+/**/ {{0x27fb1c17, 0xbc55cc84} },
+/**/ {{0xb4fbbf40, 0x3fc7d0ad} },
+/**/ {{0x41b71641, 0x3c6378b3} },
+/**/ {{0x440404cd, 0x3faa87ad} },
+/**/ {{0x96d156a8, 0xbfc18f3d} },
+/**/ {{0x9ef40490, 0x3f96ad9b} },
+/**/ {{0x27a95e14, 0x3fb64c98} },
+/**/ {{0x97cfdce0, 0xbfab6fc3} } },
+/**/ {{{0x00000000, 0x3fd0c000} },
+/**/ {{0xa03d6291, 0x3fd061ee} },
+/**/ {{0xdb154301, 0xbc45f760} },
+/**/ {{0xa6f82a61, 0x3fedf2d8} },
+/**/ {{0x560866af, 0xbc6cedbb} },
+/**/ {{0xecc8c02c, 0xbfcd57b3} },
+/**/ {{0x85b9541c, 0x3c641512} },
+/**/ {{0x35a209c0, 0xbfcbc9e9} },
+/**/ {{0x4914a5d1, 0x3c65bfd8} },
+/**/ {{0x4f358b07, 0x3fc7f0d0} },
+/**/ {{0x3f47a5cc, 0xbc60dc70} },
+/**/ {{0x50af01c1, 0x3fa8e337} },
+/**/ {{0xc2daf61b, 0xbfc17a2f} },
+/**/ {{0x57b649f0, 0x3f996f63} },
+/**/ {{0xf14fef28, 0x3fb5cf46} },
+/**/ {{0xec5a22c2, 0xbfac405c} } },
+/**/ {{{0x00000000, 0x3fd10000} },
+/**/ {{0x97d86362, 0x3fd09dc5} },
+/**/ {{0x390cb865, 0x3c762e47} },
+/**/ {{0x0d8b5ae6, 0x3fede418} },
+/**/ {{0x23f66cf0, 0x3c719298} },
+/**/ {{0xc655a596, 0xbfcdaa81} },
+/**/ {{0x6a90480b, 0x3c666d0d} },
+/**/ {{0x1974fd6c, 0xbfcb69e9} },
+/**/ {{0xec28723f, 0xbc68e199} },
+/**/ {{0x9dcd2641, 0x3fc80ee6} },
+/**/ {{0x45b4bb82, 0x3c37ccfe} },
+/**/ {{0x64b143be, 0x3fa740d7} },
+/**/ {{0x4b6b7330, 0xbfc162bf} },
+/**/ {{0x7a20d203, 0x3f9c2147} },
+/**/ {{0xa0d6b625, 0x3fb54e68} },
+/**/ {{0x7b6e81ad, 0xbfad03cd} } },
+/**/ {{{0x00000000, 0x3fd14000} },
+/**/ {{0xe509acb3, 0x3fd0d97e} },
+/**/ {{0x7bd5a3eb, 0x3c747c31} },
+/**/ {{0x554f6dcf, 0x3fedd52e} },
+/**/ {{0xddcd060b, 0xbc75c686} },
+/**/ {{0xef1cb578, 0xbfcdfc2e} },
+/**/ {{0xd1677d50, 0xbc46ae20} },
+/**/ {{0xb81cdb34, 0xbfcb0974} },
+/**/ {{0xda61c86c, 0x3c36ed8e} },
+/**/ {{0x5fcd53c1, 0x3fc82af3} },
+/**/ {{0x57b559e7, 0xbc424fe5} },
+/**/ {{0x17013aef, 0x3fa5a0c6} },
+/**/ {{0x484940dd, 0xbfc148fa} },
+/**/ {{0x1737ca6d, 0x3f9ec2da} },
+/**/ {{0x800ba495, 0x3fb4ca38} },
+/**/ {{0x35128042, 0xbfadba0e} } },
+/**/ {{{0x00000000, 0x3fd18000} },
+/**/ {{0x362431ca, 0x3fd1151a} },
+/**/ {{0xc9077b9f, 0xbc74dc8d} },
+/**/ {{0x0ef1f116, 0x3fedc61c} },
+/**/ {{0x2d41c166, 0xbc8fe39f} },
+/**/ {{0x1681d2c9, 0xbfce4cba} },
+/**/ {{0x369a3c18, 0x3c340fb4} },
+/**/ {{0x31d921e2, 0xbfcaa894} },
+/**/ {{0x64c48da4, 0x3c6bf59e} },
+/**/ {{0x9a284cea, 0x3fc844f9} },
+/**/ {{0x629cfeb8, 0xbc563be0} },
+/**/ {{0xa7f26285, 0x3fa4033a} },
+/**/ {{0x2e2d72ea, 0xbfc12cef} },
+/**/ {{0x554d151d, 0x3fa0a9da} },
+/**/ {{0xe9f9174f, 0x3fb442f1} },
+/**/ {{0x799e467c, 0xbfae631e} } },
+/**/ {{{0x00000000, 0x3fd1c000} },
+/**/ {{0x3a9ce547, 0x3fd15097} },
+/**/ {{0x7f9ca328, 0xbc7796ba} },
+/**/ {{0xcbc2abaa, 0x3fedb6e1} },
+/**/ {{0xc39a4e7c, 0xbc823b7a} },
+/**/ {{0x0436f806, 0xbfce9c22} },
+/**/ {{0x885803cb, 0xbc64a5ec} },
+/**/ {{0x9a4c8963, 0xbfca474f} },
+/**/ {{0x6793b663, 0x3c671cf3} },
+/**/ {{0x9606243b, 0x3fc85cfc} },
+/**/ {{0x1dcd45ed, 0x3c5fd2b2} },
+/**/ {{0xf8cc655f, 0x3fa2686a} },
+/**/ {{0xc8460b94, 0xbfc10eac} },
+/**/ {{0x0d6eb5ba, 0x3fa1e9bc} },
+/**/ {{0x2e4749c2, 0x3fb3b8d0} },
+/**/ {{0xf0d19201, 0xbfaeff03} } },
+/**/ {{{0x00000000, 0x3fd20000} },
+/**/ {{0xa30bf178, 0x3fd18bf5} },
+/**/ {{0x748b1bf9, 0x3c630ca4} },
+/**/ {{0x1da7801e, 0x3feda780} },
+/**/ {{0x961ff896, 0xbc861ff8} },
+/**/ {{0x9814cb11, 0xbfceea65} },
+/**/ {{0x34cb01ca, 0xbc5f9845} },
+/**/ {{0xf76f9fa1, 0xbfc9e5ae} },
+/**/ {{0xa3ee6a86, 0x3c688b7a} },
+/**/ {{0xdf090624, 0x3fc872ff} },
+/**/ {{0x6fbad4bb, 0x3c31016f} },
+/**/ {{0x83fe02bc, 0x3fa0d08b} },
+/**/ {{0x31b98637, 0xbfc0ee42} },
+/**/ {{0x5b309f28, 0x3fa320e6} },
+/**/ {{0x755cbc43, 0x3fb32c0e} },
+/**/ {{0x5dea1ddb, 0xbfaf8dca} } },
+/**/ {{{0x00000000, 0x3fd24000} },
+/**/ {{0x212dd884, 0x3fd1c735} },
+/**/ {{0x78cb2f2e, 0xbc67d9ac} },
+/**/ {{0x971063d2, 0x3fed97f7} },
+/**/ {{0xc8b326b7, 0x3c67a20b} },
+/**/ {{0xc9f01359, 0xbfcf3783} },
+/**/ {{0xd0a651ad, 0x3c4a8b96} },
+/**/ {{0x408a6757, 0xbfc983ba} },
+/**/ {{0xe6424f06, 0x3c6dfff9} },
+/**/ {{0x41881aad, 0x3fc88707} },
+/**/ {{0x2204fd29, 0xbc63baf9} },
+/**/ {{0xabd6e10d, 0x3f9e779e} },
+/**/ {{0xcf2eab41, 0xbfc0cbbe} },
+/**/ {{0x1659f377, 0x3fa44f31} },
+/**/ {{0xa54a8a94, 0x3fb29ce7} },
+/**/ {{0xb87973d7, 0xbfb007c1} } },
+/**/ {{{0x00000000, 0x3fd28000} },
+/**/ {{0x67e47c96, 0x3fd20255} },
+/**/ {{0x28f4290e, 0xbc618323} },
+/**/ {{0xcaeb6c2a, 0x3fed8848} },
+/**/ {{0xa08296a2, 0x3c81e70d} },
+/**/ {{0xa96c2792, 0xbfcf837b} },
+/**/ {{0xc6884369, 0xbc6ab5ce} },
+/**/ {{0x5d351cdb, 0xbfc92179} },
+/**/ {{0x68719d81, 0x3c617000} },
+/**/ {{0xc8c1ca07, 0x3fc89916} },
+/**/ {{0x18b0f81b, 0xbc6a3339} },
+/**/ {{0x0caf6121, 0x3f9b54d0} },
+/**/ {{0x485ba392, 0xbfc0a732} },
+/**/ {{0xc250c31e, 0x3fa57477} },
+/**/ {{0x4790b4a8, 0x3fb20b96} },
+/**/ {{0x4ac23178, 0xbfb04223} } },
+/**/ {{{0x00000000, 0x3fd2c000} },
+/**/ {{0x2b381042, 0x3fd23d56} },
+/**/ {{0x16200088, 0xbc5c5317} },
+/**/ {{0x4c98f347, 0x3fed7874} },
+/**/ {{0x9a72647e, 0xbc8a7dac} },
+/**/ {{0x5dca68a2, 0xbfcfce4c} },
+/**/ {{0x8fb9ffdd, 0x3c6433de} },
+/**/ {{0x246041ce, 0xbfc8bef4} },
+/**/ {{0x1fb39160, 0xbc66c620} },
+/**/ {{0xbd062535, 0x3fc8a932} },
+/**/ {{0xfbc3a86c, 0xbc6e24c7} },
+/**/ {{0x64d0109d, 0x3f98390b} },
+/**/ {{0x819f2998, 0xbfc080ac} },
+/**/ {{0x8784ffb8, 0x3fa69099} },
+/**/ {{0x6fc55e9b, 0x3fb17854} },
+/**/ {{0x5f970a81, 0xbfb07618} } },
+/**/ {{{0x00000000, 0x3fd30000} },
+/**/ {{0x2057ef46, 0x3fd27837} },
+/**/ {{0xd36dfc81, 0xbc7077cd} },
+/**/ {{0xafdfd5ba, 0x3fed687a} },
+/**/ {{0xe19d8d3d, 0xbc782e68} },
+/**/ {{0x92db6fdb, 0xbfd00bfa} },
+/**/ {{0xc0af523f, 0x3c7854cd} },
+/**/ {{0x5b640da2, 0xbfc85c32} },
+/**/ {{0x5e6f23d6, 0x3c5d5bdd} },
+/**/ {{0xa1da32d2, 0x3fc8b75f} },
+/**/ {{0x29860bfe, 0x3c2788df} },
+/**/ {{0xee810d60, 0x3f9524ad} },
+/**/ {{0x95a69dea, 0xbfc0583d} },
+/**/ {{0x2b4d3dec, 0x3fa7a379} },
+/**/ {{0xa3290dfe, 0x3fb0e35b} },
+/**/ {{0x19e12287, 0xbfb0a3b2} } },
+/**/ {{{0x00000000, 0x3fd34000} },
+/**/ {{0xfd9b5fe2, 0x3fd2b2f7} },
+/**/ {{0xc1c2d443, 0x3c2423cf} },
+/**/ {{0x88e1caa2, 0x3fed585c} },
+/**/ {{0x01239e18, 0xbc2c8af2} },
+/**/ {{0xab890af7, 0xbfd0303a} },
+/**/ {{0x726290e6, 0x3c7d42bf} },
+/**/ {{0xb5175de0, 0xbfc7f93b} },
+/**/ {{0xe0ddc367, 0x3c5d5d4b} },
+/**/ {{0x3414de7c, 0x3fc8c3a2} },
+/**/ {{0xba92bfce, 0x3c5ade9b} },
+/**/ {{0xda70853d, 0x3f921811} },
+/**/ {{0xcf23aaf0, 0xbfc02df5} },
+/**/ {{0x06445ff8, 0x3fa8acfd} },
+/**/ {{0xc130eba4, 0x3fb04ce4} },
+/**/ {{0x29de3135, 0xbfb0cb04} } },
+/**/ {{{0x00000000, 0x3fd38000} },
+/**/ {{0x7a823cfe, 0x3fd2ed98} },
+/**/ {{0x8ea012ca, 0x3c6b9125} },
+/**/ {{0x6c0fd782, 0x3fed481a} },
+/**/ {{0x85ff74ea, 0x3c82dda4} },
+/**/ {{0x2f5c1e18, 0xbfd053e6} },
+/**/ {{0x8ec637b8, 0xbc679cf2} },
+/**/ {{0xd0ee3e3b, 0xbfc79617} },
+/**/ {{0x732049a6, 0xbc4e91e0} },
+/**/ {{0x67f6478d, 0x3fc8cdff} },
+/**/ {{0xf5079e63, 0xbc5cb659} },
+/**/ {{0x8e8ef686, 0x3f8e271c} },
+/**/ {{0xa2940881, 0xbfc001e5} },
+/**/ {{0xf937caae, 0x3fa9ad0e} },
+/**/ {{0xda1e257f, 0x3faf6a4f} },
+/**/ {{0xb07d42be, 0xbfb0ec24} } },
+/**/ {{{0x00000000, 0x3fd3c000} },
+/**/ {{0x4fb58952, 0x3fd32818} },
+/**/ {{0xa9939f2f, 0xbc7a95f0} },
+/**/ {{0xee1ee130, 0x3fed37b4} },
+/**/ {{0x6fbb1f2d, 0x3c747541} },
+/**/ {{0xe022dd0d, 0xbfd076fc} },
+/**/ {{0x5534523a, 0x3c6d8659} },
+/**/ {{0x3a201d6b, 0xbfc732ce} },
+/**/ {{0xc98a3a62, 0xbc56a551} },
+/**/ {{0x673a29b8, 0x3fc8d67c} },
+/**/ {{0xff95efe6, 0xbc54ae9d} },
+/**/ {{0x74ce6814, 0x3f882eee} },
+/**/ {{0x503ba8f4, 0xbfbfa83b} },
+/**/ {{0x60b63f75, 0x3faaa39c} },
+/**/ {{0xf07ff274, 0x3fae38b8} },
+/**/ {{0x2200fe4d, 0xbfb1072c} } },
+/**/ {{{0x00000000, 0x3fd40000} },
+/**/ {{0x3707ebcc, 0x3fd36277} },
+/**/ {{0x44b672d8, 0xbc6963a5} },
+/**/ {{0xa3fc5b1a, 0x3fed272c} },
+/**/ {{0x272ca3fc, 0x3c8ae01d} },
+/**/ {{0x8aec9d8e, 0xbfd0997e} },
+/**/ {{0x72595f36, 0x3c74aeda} },
+/**/ {{0x66d5c0ff, 0xbfc6cf66} },
+/**/ {{0x3ca66cc1, 0x3c410e2a} },
+/**/ {{0x8f2617b5, 0x3fc8dd1e} },
+/**/ {{0x4facfb67, 0xbc6d173e} },
+/**/ {{0x33966883, 0x3f82483b} },
+/**/ {{0x2b05b16b, 0xbfbf495d} },
+/**/ {{0x074fdeaf, 0x3fab9096} },
+/**/ {{0x9c4605c9, 0x3fad0571} },
+/**/ {{0x280318fd, 0xbfb11c35} } },
+/**/ {{{0x00000000, 0x3fd44000} },
+/**/ {{0xeb76157c, 0x3fd39cb4} },
+/**/ {{0x5a214713, 0xbc72f4da} },
+/**/ {{0x22c31625, 0x3fed1682} },
+/**/ {{0xd5e51b41, 0x3c8ac111} },
+/**/ {{0x07e9a89a, 0xbfd0bb6b} },
+/**/ {{0x7faa1dda, 0x3c76fb53} },
+/**/ {{0xb75f0772, 0xbfc66be7} },
+/**/ {{0xee6d618b, 0xbc69a77d} },
+/**/ {{0x6e943d69, 0x3fc8e1eb} },
+/**/ {{0xc5ec9ebe, 0xbc6982c4} },
+/**/ {{0x9c2d3c0c, 0x3f78e73c} },
+/**/ {{0x7059f387, 0xbfbee752} },
+/**/ {{0x16982f58, 0x3fac73f0} },
+/**/ {{0xc146b407, 0x3fabd0e4} },
+/**/ {{0x82f43254, 0xbfb12b5c} } },
+/**/ {{{0x00000000, 0x3fd48000} },
+/**/ {{0x29271134, 0x3fd3d6d1} },
+/**/ {{0x41cc958a, 0x3c7137ca} },
+/**/ {{0xffb0304c, 0x3fed05b5} },
+/**/ {{0x33e896e5, 0xbc8fc921} },
+/**/ {{0x3a49e254, 0xbfd0dcc2} },
+/**/ {{0x925cb599, 0x3c704578} },
+/**/ {{0x75708502, 0xbfc60859} },
+/**/ {{0x9feebe6c, 0xbc5f88bc} },
+/**/ {{0xc3fb5c1c, 0x3fc8e4e8} },
+/**/ {{0xd6b77a05, 0x3c6de114} },
+/**/ {{0xdbc6c857, 0x3f6ac6b3} },
+/**/ {{0xdeabd793, 0xbfbe823c} },
+/**/ {{0x06fb52a7, 0x3fad4da2} },
+/**/ {{0x2bea698c, 0x3faa9b7b} },
+/**/ {{0xeb32d745, 0xbfb134c0} } },
+/**/ {{{0x00000000, 0x3fd4c000} },
+/**/ {{0xad6c7d33, 0x3fd410cb} },
+/**/ {{0xae13b512, 0xbc7b0c8b} },
+/**/ {{0xd0182625, 0x3fecf4c8} },
+/**/ {{0xf4103798, 0x3c8e6308} },
+/**/ {{0x101a5438, 0xbfd0fd84} },
+/**/ {{0x7d2e3e34, 0x3c425fcd} },
+/**/ {{0xd36904f6, 0xbfc5a4c2} },
+/**/ {{0x54f27bb6, 0x3c5d3583} },
+/**/ {{0x7b74b00c, 0x3fc8e61c} },
+/**/ {{0xefe568b6, 0x3c32f7ad} },
+/**/ {{0xaa3667f2, 0x3f402f60} },
+/**/ {{0x4c9859c0, 0xbfbe1a3e} },
+/**/ {{0x8e77c589, 0x3fae1da6} },
+/**/ {{0x6ed5823e, 0x3fa9659b} },
+/**/ {{0xf1d3d420, 0xbfb13882} } },
+/**/ {{{0x00000000, 0x3fd50000} },
+/**/ {{0x36c2af0a, 0x3fd44aa4} },
+/**/ {{0x3c55b3ba, 0xbc75d5e4} },
+/**/ {{0x295c0773, 0x3fece3bb} },
+/**/ {{0x91851b41, 0xbc826fd5} },
+/**/ {{0x8221a582, 0xbfd11db0} },
+/**/ {{0xa9f31d11, 0x3c7e9654} },
+/**/ {{0xeb9ef661, 0xbfc5412a} },
+/**/ {{0x5e60433c, 0x3c573faf} },
+/**/ {{0xacc06b3a, 0x3fc8e58c} },
+/**/ {{0x64dd81ed, 0xbc5dba9a} },
+/**/ {{0xcfe3f01e, 0xbf625ff7} },
+/**/ {{0x9dae4b1c, 0xbfbdaf78} },
+/**/ {{0x8e4e3e16, 0x3faee3fb} },
+/**/ {{0xc2c60fed, 0x3fa82fa9} },
+/**/ {{0xe13555d9, 0xbfb136c4} } },
+/**/ {{{0x00000000, 0x3fd54000} },
+/**/ {{0x84d0c21b, 0x3fd4845a} },
+/**/ {{0x7563c6a6, 0x3c71e28a} },
+/**/ {{0xa0decfad, 0x3fecd28d} },
+/**/ {{0x49610c12, 0xbc72b2c8} },
+/**/ {{0x93bb8da8, 0xbfd13d47} },
+/**/ {{0x1b48d912, 0x3c5df07a} },
+/**/ {{0xbfb5c8b7, 0xbfc4dd98} },
+/**/ {{0x39a108d7, 0x3c58a9ff} },
+/**/ {{0x99496dc4, 0x3fc8e33f} },
+/**/ {{0x19d3995c, 0x3c380d8b} },
+/**/ {{0xba1bc2d2, 0xbf743d59} },
+/**/ {{0xb77862a1, 0xbfbd420d} },
+/**/ {{0xffb9511c, 0x3fafa0a1} },
+/**/ {{0xe8a86cad, 0x3fa6fa07} },
+/**/ {{0x9d75a109, 0xbfb12faa} } },
+/**/ {{{0x00000000, 0x3fd58000} },
+/**/ {{0x586890e7, 0x3fd4bdee} },
+/**/ {{0x7c22a757, 0xbc6e4dc7} },
+/**/ {{0xcbfae3a7, 0x3fecc140} },
+/**/ {{0xd8b6f9b9, 0xbc41045d} },
+/**/ {{0x52b34cdc, 0xbfd15c49} },
+/**/ {{0x2daa60ac, 0x3c729992} },
+/**/ {{0x37fb39ef, 0xbfc47a13} },
+/**/ {{0x3482d371, 0x3c5cb3b2} },
+/**/ {{0xaa28e022, 0x3fc8df3b} },
+/**/ {{0x969a5447, 0xbc61a8ab} },
+/**/ {{0xc651ecb4, 0xbf7f2135} },
+/**/ {{0x76cc63f7, 0xbfbcd21f} },
+/**/ {{0xefdf4de1, 0x3fb029ce} },
+/**/ {{0x0de3bf96, 0x3fa5c515} },
+/**/ {{0x84e55ab4, 0xbfb12359} } },
+/**/ {{{0x00000000, 0x3fd5c000} },
+/**/ {{0x73869979, 0x3fd4f75f} },
+/**/ {{0xf7ff1108, 0xbc595a1c} },
+/**/ {{0x3ff7b52c, 0x3fecafd5} },
+/**/ {{0x684b6314, 0x3c86e099} },
+/**/ {{0xd71d366e, 0xbfd17ab5} },
+/**/ {{0xae2f7b71, 0x3c602f2c} },
+/**/ {{0x22cc956f, 0xbfc416a1} },
+/**/ {{0xe98c24c1, 0x3c61d29e} },
+/**/ {{0x6e2a4f9f, 0x3fc8d987} },
+/**/ {{0x4a6a7880, 0xbc60de73} },
+/**/ {{0x909e42ec, 0xbf84ed52} },
+/**/ {{0xa56263a8, 0xbfbc5fcf} },
+/**/ {{0x0d159803, 0x3fb07e7b} },
+/**/ {{0xb2ddf20b, 0x3fa4912d} },
+/**/ {{0x508c8585, 0xbfb111f8} } },
+/**/ {{{0x00000000, 0x3fd60000} },
+/**/ {{0x9951cd4a, 0x3fd530ad} },
+/**/ {{0x80884082, 0xbc625664} },
+/**/ {{0x91ff8d87, 0x3fec9e4b} },
+/**/ {{0x1b0da370, 0xbc7723ff} },
+/**/ {{0x432f5908, 0xbfd1988d} },
+/**/ {{0xf8714cda, 0x3c7d065e} },
+/**/ {{0x3403e07c, 0xbfc3b349} },
+/**/ {{0x2717fbb0, 0x3c6b571d} },
+/**/ {{0x97d0e938, 0x3fc8d229} },
+/**/ {{0xb08a0625, 0x3c66b228} },
+/**/ {{0xc2fe9cde, 0xbf8a3464} },
+/**/ {{0xefb6f244, 0xbfbbeb3f} },
+/**/ {{0x39e67c0b, 0x3fb0ce5a} },
+/**/ {{0x93b4fb73, 0x3fa35eab} },
+/**/ {{0xf4d86f78, 0xbfb0fbae} } },
+/**/ {{{0x00000000, 0x3fd64000} },
+/**/ {{0x8e1b4cd8, 0x3fd569d8} },
+/**/ {{0xe713cfe2, 0xbc6fec61} },
+/**/ {{0x57157fc9, 0x3fec8ca4} },
+/**/ {{0x515734ba, 0x3c70da14} },
+/**/ {{0xc3195094, 0xbfd1b5cf} },
+/**/ {{0xa9537e45, 0x3c740cce} },
+/**/ {{0x046cee83, 0xbfc35012} },
+/**/ {{0xe446fd10, 0xbc651b6c} },
+/**/ {{0xfb5e6a95, 0x3fc8c928} },
+/**/ {{0x82469bf3, 0x3c656cd2} },
+/**/ {{0xa4afbb1b, 0xbf8f6568} },
+/**/ {{0xdb3aba50, 0xbfbb7491} },
+/**/ {{0xb9fd56ec, 0x3fb11972} },
+/**/ {{0x9329e15e, 0x3fa22de5} },
+/**/ {{0x8287d93d, 0xbfb0e0a6} } },
+/**/ {{{0x00000000, 0x3fd68000} },
+/**/ {{0x175e0f4e, 0x3fd5a2e0} },
+/**/ {{0x8f82e457, 0x3c713b7a} },
+/**/ {{0x240b83ae, 0x3fec7ae0} },
+/**/ {{0x10d398ed, 0xbc885b56} },
+/**/ {{0x8cdb4db0, 0xbfd1d27d} },
+/**/ {{0x2db0447f, 0x3c11d95f} },
+/**/ {{0x11425541, 0xbfc2ed02} },
+/**/ {{0x6b2cbaa3, 0xbc11d124} },
+/**/ {{0x8cdc5c4d, 0x3fc8be8c} },
+/**/ {{0x794444b0, 0xbc542511} },
+/**/ {{0xd25a5415, 0xbf923ffd} },
+/**/ {{0xbcd1df44, 0xbfbafbe6} },
+/**/ {{0x26bdf05c, 0x3fb15fcc} },
+/**/ {{0xa7b853e6, 0x3fa0ff2f} },
+/**/ {{0x07e9a35f, 0xbfb0c109} } },
+/**/ {{{0x00000000, 0x3fd6c000} },
+/**/ {{0xfbbe768d, 0x3fd5dbc3} },
+/**/ {{0x1b76f7da, 0x3c6ea0ec} },
+/**/ {{0x8d78b9ce, 0x3fec68ff} },
+/**/ {{0x4cb5a0c3, 0xbc83ab41} },
+/**/ {{0xe01c5e6e, 0xbfd1ee96} },
+/**/ {{0xfb76d8dd, 0x3c73922c} },
+/**/ {{0xbbb23677, 0xbfc28a1f} },
+/**/ {{0x288601f2, 0x3c6e592a} },
+/**/ {{0x5e282403, 0x3fc8b25b} },
+/**/ {{0x707e09fa, 0xbbef7d58} },
+/**/ {{0xb65add31, 0xbf94c1e0} },
+/**/ {{0xafa52f1b, 0xbfba815f} },
+/**/ {{0x63712acc, 0x3fb1a16f} },
+/**/ {{0x95a8d3ad, 0x3f9fa5b5} },
+/**/ {{0x72814750, 0xbfb09d01} } },
+/**/ {{{0x00000000, 0x3fd70000} },
+/**/ {{0x0309cfe2, 0x3fd61484} },
+/**/ {{0x15711f00, 0xbc7a7257} },
+/**/ {{0x27afd9eb, 0x3fec5703} },
+/**/ {{0xb32c1d72, 0x3c63c2ab} },
+/**/ {{0x06000419, 0xbfd20a1c} },
+/**/ {{0xf51a3a28, 0xbc7b5fe7} },
+/**/ {{0x486ad2c8, 0xbfc22771} },
+/**/ {{0xf84a7eae, 0xbc499ab5} },
+/**/ {{0x9d027817, 0x3fc8a49c} },
+/**/ {{0x2e376ecc, 0xbc53fcab} },
+/**/ {{0xeaabcb23, 0xbf973831} },
+/**/ {{0x8c46fbce, 0xbfba051d} },
+/**/ {{0x9132e9cc, 0x3fb1de66} },
+/**/ {{0xd48d5d65, 0x3f9d5269} },
+/**/ {{0x712354a4, 0xbfb074bb} } },
+/**/ {{{0x00000000, 0x3fd74000} },
+/**/ {{0xf635c1c6, 0x3fd64d1f} },
+/**/ {{0xe7c0fdbe, 0xbc7fa403} },
+/**/ {{0x86b5cbf8, 0x3fec44eb} },
+/**/ {{0xbc5b562d, 0xbc6a4101} },
+/**/ {{0x50fb21ad, 0xbfd2250d} },
+/**/ {{0xa39bdc1a, 0xbc750066} },
+/**/ {{0xdf2ed728, 0xbfc1c4fc} },
+/**/ {{0x006772e9, 0x3c6a87bb} },
+/**/ {{0x9122b9b7, 0x3fc89557} },
+/**/ {{0x45b04f75, 0xbc05454e} },
+/**/ {{0x6c7888f1, 0xbf99a2c9} },
+/**/ {{0xe02d36ad, 0xbfb98740} },
+/**/ {{0x02a99665, 0x3fb216bd} },
+/**/ {{0xb73aeccb, 0x3f9b0511} },
+/**/ {{0x569b1738, 0xbfb04863} } },
+/**/ {{{0x00000000, 0x3fd78000} },
+/**/ {{0x9f5fa6fe, 0x3fd68597} },
+/**/ {{0x4d1ada9c, 0xbc425781} },
+/**/ {{0x3e386c7f, 0x3fec32b9} },
+/**/ {{0x8cbaa5bf, 0x3c756033} },
+/**/ {{0x1ca84e79, 0xbfd23f6b} },
+/**/ {{0xf123d574, 0x3c604cc0} },
+/**/ {{0x8a715435, 0xbfc162c8} },
+/**/ {{0x454fb8fd, 0x3c5cf6db} },
+/**/ {{0x9a4eb534, 0x3fc88493} },
+/**/ {{0x42b959b0, 0xbc668a5c} },
+/**/ {{0x42580bb5, 0xbf9c0182} },
+/**/ {{0xe5822d56, 0xbfb907e9} },
+/**/ {{0x2f8f8273, 0x3fb24a7f} },
+/**/ {{0xa3527f46, 0x3f98be3c} },
+/**/ {{0xfce97270, 0xbfb01825} } },
+/**/ {{{0x00000000, 0x3fd7c000} },
+/**/ {{0xc9cbd76d, 0x3fd6bdea} },
+/**/ {{0x3e6de828, 0xbc5a5c56} },
+/**/ {{0xe1857d04, 0x3fec206c} },
+/**/ {{0xf5c83872, 0xbc80439f} },
+/**/ {{0xcd9b9870, 0xbfd25935} },
+/**/ {{0xf1ec7306, 0x3c6aaf98} },
+/**/ {{0x36f94d02, 0xbfc100da} },
+/**/ {{0xd96d84ff, 0xbc6e72ca} },
+/**/ {{0x2e774351, 0x3fc87258} },
+/**/ {{0xb8860ef0, 0x3c6c50a2} },
+/**/ {{0x741ef0ec, 0xbf9e543a} },
+/**/ {{0x7b4d0ec2, 0xbfb88738} },
+/**/ {{0xa8164103, 0x3fb279ba} },
+/**/ {{0xa7f1ae35, 0x3f967e73} },
+/**/ {{0x5257c3de, 0xbfafc861} } },
+/**/ {{{0x00000000, 0x3fd80000} },
+/**/ {{0x41e4def1, 0x3fd6f619} },
+/**/ {{0xe6f6e918, 0xbc7c63aa} },
+/**/ {{0x0381c0e0, 0x3fec0e07} },
+/**/ {{0x0381c0e0, 0x3c8c0e07} },
+/**/ {{0xd135c174, 0xbfd2726d} },
+/**/ {{0xe0951cf8, 0xbc2d352d} },
+/**/ {{0xb38cc8cf, 0xbfc09f37} },
+/**/ {{0xae75327f, 0xbc69db81} },
+/**/ {{0xd7da413c, 0x3fc85eac} },
+/**/ {{0x6ebae2bc, 0x3c5b1a89} },
+/**/ {{0x80fcc815, 0xbfa04d69} },
+/**/ {{0x1df326f9, 0xbfb8054c} },
+/**/ {{0x082bda60, 0x3fb2a47e} },
+/**/ {{0x7091d5a4, 0x3f944639} },
+/**/ {{0xe072e48c, 0xbfaf5961} } },
+/**/ {{{0x00000000, 0x3fd84000} },
+/**/ {{0xd53aa2aa, 0x3fd72e22} },
+/**/ {{0x4e79f27c, 0xbc7d9c93} },
+/**/ {{0x36a04729, 0x3febfb88} },
+/**/ {{0x9ac2ea21, 0xbc872745} },
+/**/ {{0x9d7702cf, 0xbfd28b13} },
+/**/ {{0x4be8bff6, 0x3c7819b9} },
+/**/ {{0xb0a35176, 0xbfc03de6} },
+/**/ {{0xc83347af, 0x3c5dbfb0} },
+/**/ {{0x332a4f86, 0x3fc84999} },
+/**/ {{0x0a22d12d, 0x3c5d304e} },
+/**/ {{0xed6b2d30, 0xbfa16a97} },
+/**/ {{0xe0128950, 0xbfb78243} },
+/**/ {{0xeaa98f57, 0x3fb2cad8} },
+/**/ {{0x3bb39c5b, 0x3f92160a} },
+/**/ {{0x3804caa3, 0xbfaee3a9} } },
+/**/ {{{0x00000000, 0x3fd88000} },
+/**/ {{0x52817502, 0x3fd76607} },
+/**/ {{0x91cc7600, 0xbc4dd117} },
+/**/ {{0x0cd9e1fe, 0x3febe8f1} },
+/**/ {{0xa21e102a, 0xbc7a9688} },
+/**/ {{0xb0d161e9, 0xbfd2a327} },
+/**/ {{0x14b44140, 0xbc60a2a9} },
+/**/ {{0x803f8d3b, 0xbfbfb9d9} },
+/**/ {{0x2a5c4097, 0x3c5e5779} },
+/**/ {{0xedbcc363, 0x3fc83324} },
+/**/ {{0xa0442744, 0x3c651fbc} },
+/**/ {{0xe91477c3, 0xbfa2819b} },
+/**/ {{0x63b6abf0, 0xbfb6fe3e} },
+/**/ {{0xdc73a89a, 0x3fb2ecdb} },
+/**/ {{0xaa755298, 0x3f8fdcb7} },
+/**/ {{0x237c2f3d, 0xbfae6793} } },
+/**/ {{{0x00000000, 0x3fd8c000} },
+/**/ {{0x899118d1, 0x3fd79dc6} },
+/**/ {{0xa0ef606d, 0x3c2b7413} },
+/**/ {{0x17a4cbc3, 0x3febd642} },
+/**/ {{0x3200a548, 0xbc55ee5d} },
+/**/ {{0x91faa133, 0xbfd2baaa} },
+/**/ {{0xfaf41548, 0xbc6bd391} },
+/**/ {{0xaa22d832, 0xbfbef89e} },
+/**/ {{0xc874fdb9, 0x3c413b3b} },
+/**/ {{0xc3be300a, 0x3fc81b57} },
+/**/ {{0xc01a615f, 0x3c6baf9b} },
+/**/ {{0x4a872ec7, 0xbfa3926a} },
+/**/ {{0xd3e743cd, 0xbfb67959} },
+/**/ {{0x4f919505, 0x3fb30a98} },
+/**/ {{0x28b78b08, 0x3f8b9f3b} },
+/**/ {{0x71e33e9d, 0xbfade57b} } },
+/**/ {{{0x00000000, 0x3fd90000} },
+/**/ {{0x4b63b3f7, 0x3fd7d560} },
+/**/ {{0x5c2b249a, 0x3c769c88} },
+/**/ {{0xe7ec7a8d, 0x3febc37b} },
+/**/ {{0x2b0e2727, 0xbc6f1246} },
+/**/ {{0xcfbdd7fa, 0xbfd2d19c} },
+/**/ {{0x5e00c582, 0x3c7d0b11} },
+/**/ {{0x86f8309b, 0xbfbe3827} },
+/**/ {{0xfa6c56a7, 0x3c5d64e9} },
+/**/ {{0x7e6de8de, 0x3fc80239} },
+/**/ {{0x7776e849, 0x3c68d62f} },
+/**/ {{0x4f6d8017, 0xbfa49cf9} },
+/**/ {{0xde917e27, 0xbfb5f3b3} },
+/**/ {{0x8e455cc2, 0x3fb32420} },
+/**/ {{0xb9fc88fe, 0x3f877470} },
+/**/ {{0xc6b10536, 0xbfad5dbd} } },
+/**/ {{{0x00000000, 0x3fd94000} },
+/**/ {{0x6a14b1d1, 0x3fd80cd4} },
+/**/ {{0x9684fa19, 0xbc7e79f9} },
+/**/ {{0x0e09a222, 0x3febb09f} },
+/**/ {{0x7e047edd, 0x3c85748e} },
+/**/ {{0x00ccbbc8, 0xbfd2e7ff} },
+/**/ {{0x96875561, 0xbc78eb0a} },
+/**/ {{0x804ecc06, 0xbfbd787e} },
+/**/ {{0x2e4351f8, 0xbc27263b} },
+/**/ {{0xf260d7b4, 0x3fc7e7d1} },
+/**/ {{0x8ed258e3, 0xbc430525} },
+/**/ {{0x968d3d02, 0xbfa5a140} },
+/**/ {{0xaecb845e, 0xbfb56d69} },
+/**/ {{0xae292f95, 0x3fb33987} },
+/**/ {{0x48e09ecd, 0x3f835d1d} },
+/**/ {{0x6b6f9aca, 0xbfacd0b5} } },
+/**/ {{{0x00000000, 0x3fd98000} },
+/**/ {{0xb8df95d7, 0x3fd84422} },
+/**/ {{0x299b41b6, 0x3c7d76a0} },
+/**/ {{0x19ba64d6, 0x3feb9dac} },
+/**/ {{0xa13ee09f, 0xbc4f643a} },
+/**/ {{0xc390a5c9, 0xbfd2fdd1} },
+/**/ {{0xaa856fcc, 0x3c575152} },
+/**/ {{0xc0e99751, 0xbfbcb9ad} },
+/**/ {{0x1347a357, 0x3c4e2d44} },
+/**/ {{0xfdcbfd40, 0x3fc7cc28} },
+/**/ {{0xe516db08, 0x3c60dc32} },
+/**/ {{0x19851d86, 0xbfa69f39} },
+/**/ {{0xe772087d, 0xbfb4e697} },
+/**/ {{0x835992de, 0x3fb34ae1} },
+/**/ {{0xe5326389, 0x3f7eb3f1} },
+/**/ {{0x234575e8, 0xbfac3ebd} } },
+/**/ {{{0x00000000, 0x3fd9c000} },
+/**/ {{0x0c1ebedc, 0x3fd87b4b} },
+/**/ {{0xa2fa470f, 0xbc76dcfa} },
+/**/ {{0x9a1ab378, 0x3feb8aa3} },
+/**/ {{0xb797ab93, 0x3c8efdb0} },
+/**/ {{0xbdfb5e5a, 0xbfd31315} },
+/**/ {{0x862f0c0d, 0x3c5813a8} },
+/**/ {{0x3478f169, 0xbfbbfbbf} },
+/**/ {{0xd9e52582, 0xbc51e810} },
+/**/ {{0x86d6ec76, 0x3fc7af46} },
+/**/ {{0x3c13b159, 0xbc6336de} },
+/**/ {{0x264b8050, 0xbfa796dd} },
+/**/ {{0x9e1f6bef, 0xbfb45f5a} },
+/**/ {{0x93b26fc1, 0x3fb35842} },
+/**/ {{0x39bc3abf, 0x3f76d75e} },
+/**/ {{0x006e38b2, 0xbfaba82f} } },
+/**/ {{{0x00000000, 0x3fda0000} },
+/**/ {{0x394a1b25, 0x3fd8b24d} },
+/**/ {{0xa3748fa8, 0x3c7b6d0b} },
+/**/ {{0x1d9cdc98, 0x3feb7786} },
+/**/ {{0x345bd7a8, 0xbc62e22c} },
+/**/ {{0x9d57b8f5, 0xbfd327cb} },
+/**/ {{0x753cc4f1, 0xbc135343} },
+/**/ {{0x8761b154, 0xbfbb3ebc} },
+/**/ {{0x8c168fdd, 0x3c5abeec} },
+/**/ {{0x79f68c54, 0x3fc79132} },
+/**/ {{0xd8d15eda, 0xbc658ab9} },
+/**/ {{0x5872d73c, 0xbfa88828} },
+/**/ {{0x567be750, 0xbfb3d7cd} },
+/**/ {{0x0a24fc71, 0x3fb361c0} },
+/**/ {{0x46aa98b6, 0x3f6e4b7a} },
+/**/ {{0x3bad3a76, 0xbfab0d64} } },
+/**/ {{{0x00000000, 0x3fda4000} },
+/**/ {{0x16f5cde8, 0x3fd8e929} },
+/**/ {{0xe12bfafb, 0x3c74c0a7} },
+/**/ {{0x32024b37, 0x3feb6454} },
+/**/ {{0x69cc9b53, 0xbc7987f7} },
+/**/ {{0x161a0a40, 0xbfd33bf4} },
+/**/ {{0x83ff46db, 0x3c7a2321} },
+/**/ {{0x26913418, 0xbfba82af} },
+/**/ {{0x10a559fe, 0x3c3c4c62} },
+/**/ {{0xc8506679, 0x3fc771f4} },
+/**/ {{0x63c7ccc3, 0xbc54aaed} },
+/**/ {{0x9237e7ff, 0xbfa97317} },
+/**/ {{0xfde5f112, 0xbfb3500a} },
+/**/ {{0xaa2c3459, 0x3fb3676f} },
+/**/ {{0x04721907, 0x3f5e80cd} },
+/**/ {{0x0dc212a5, 0xbfaa6eb5} } },
+/**/ {{{0x00000000, 0x3fda8000} },
+/**/ {{0x7cd0c662, 0x3fd91fde} },
+/**/ {{0x88054b53, 0x3c710741} },
+/**/ {{0x6454751c, 0x3feb510e} },
+/**/ {{0x7e0f2dca, 0xbc199bfd} },
+/**/ {{0xe3b081f4, 0xbfd34f8f} },
+/**/ {{0x3e2c0515, 0x3c7d7209} },
+/**/ {{0x3f5e2d2f, 0xbfb9c7a0} },
+/**/ {{0xea3bd312, 0xbc20b02e} },
+/**/ {{0x6626c39a, 0x3fc75195} },
+/**/ {{0xb4219a8a, 0x3c6f30d2} },
+/**/ {{0xf55dfea5, 0xbfaa57a8} },
+/**/ {{0xe771fa17, 0xbfb2c82d} },
+/**/ {{0xc3654ab4, 0x3fb36967} },
+/**/ {{0xa23eb6eb, 0x3f11f322} },
+/**/ {{0x8ae579b1, 0xbfa9cc78} } },
+/**/ {{{0x00000000, 0x3fdac000} },
+/**/ {{0x43a34907, 0x3fd9566d} },
+/**/ {{0x37e0af2b, 0x3c69b015} },
+/**/ {{0x40ddf8d3, 0x3feb3db5} },
+/**/ {{0x793c10b8, 0xbc616f46} },
+/**/ {{0xc8537217, 0xbfd3629f} },
+/**/ {{0x38143614, 0x3c505738} },
+/**/ {{0xbf75f20a, 0xbfb90d98} },
+/**/ {{0x6b842647, 0x3c4dc715} },
+/**/ {{0x494dd1e6, 0x3fc7301c} },
+/**/ {{0xf49f85b4, 0x3c5ec3d6} },
+/**/ {{0xdbdd23b1, 0xbfab35db} },
+/**/ {{0xc8407216, 0xbfb2404f} },
+/**/ {{0x255139f9, 0x3fb367bf} },
+/**/ {{0x65acd6da, 0xbf5b8a0d} },
+/**/ {{0x8052f51d, 0xbfa92704} } },
+/**/ {{{0x00000000, 0x3fdb0000} },
+/**/ {{0x454d6b18, 0x3fd98cd5} },
+/**/ {{0x88fd0a77, 0x3c79e6c9} },
+/**/ {{0x5323eb6a, 0x3feb2a49} },
+/**/ {{0x70cc9678, 0xbc572202} },
+/**/ {{0x8cd58cc4, 0xbfd37524} },
+/**/ {{0xda42aa4e, 0x3c6978a3} },
+/**/ {{0x54d5f784, 0xbfb854a1} },
+/**/ {{0xb33b3d0d, 0xbc5e9a15} },
+/**/ {{0x67aa0c46, 0x3fc70d91} },
+/**/ {{0xa4ac9df8, 0xbc6aa72f} },
+/**/ {{0xd0665a46, 0xbfac0db0} },
+/**/ {{0xb428e30d, 0xbfb1b889} },
+/**/ {{0x134448b0, 0x3fb3628d} },
+/**/ {{0x67619c9c, 0xbf6bbbc1} },
+/**/ {{0x53e1f653, 0xbfa87ead} } },
+/**/ {{{0x00000000, 0x3fdb4000} },
+/**/ {{0x5cc58107, 0x3fd9c316} },
+/**/ {{0x02250cfb, 0x3c4b6696} },
+/**/ {{0x25df55f4, 0x3feb16cb} },
+/**/ {{0xf48e26bc, 0xbc653abc} },
+/**/ {{0x00742189, 0xbfd3871f} },
+/**/ {{0xc05df451, 0xbc725ae2} },
+/**/ {{0x6dd13675, 0xbfb79cc2} },
+/**/ {{0x991905e4, 0x3be1d4e0} },
+/**/ {{0xb5b8147e, 0x3fc6e9fc} },
+/**/ {{0xa57d4eca, 0x3c46463b} },
+/**/ {{0x86c1db89, 0xbfacdf29} },
+/**/ {{0x1ab8d1c4, 0xbfb130f4} },
+/**/ {{0x38881228, 0x3fb359e9} },
+/**/ {{0x53bec2ff, 0xbf74a987} },
+/**/ {{0xe5af58b6, 0xbfa7d3c5} } },
+/**/ {{{0x00000000, 0x3fdb8000} },
+/**/ {{0x66168002, 0x3fd9f930} },
+/**/ {{0x47c9439a, 0xbc7c8270} },
+/**/ {{0x42f6e2c9, 0x3feb033b} },
+/**/ {{0xc48702a7, 0xbc6eb80c} },
+/**/ {{0xf8a76337, 0xbfd3988f} },
+/**/ {{0x5b1bb38a, 0xbc636968} },
+/**/ {{0x39212b04, 0xbfb6e604} },
+/**/ {{0xba255e71, 0xbc3c2e20} },
+/**/ {{0x251e2d41, 0x3fc6c566} },
+/**/ {{0x47236369, 0x3c230ab3} },
+/**/ {{0xd40b3417, 0xbfadaa48} },
+/**/ {{0xc484f2cc, 0xbfb0a9a6} },
+/**/ {{0x9cb4573e, 0x3fb34deb} },
+/**/ {{0x1def6f17, 0xbf7b44ca} },
+/**/ {{0x73d683b8, 0xbfa7269f} } },
+/**/ {{{0x00000000, 0x3fdbc000} },
+/**/ {{0x3e5e530b, 0x3fda2f23} },
+/**/ {{0xf797086b, 0x3c5814d5} },
+/**/ {{0x3378ba79, 0x3feaef9a} },
+/**/ {{0x4476e241, 0x3c7da16a} },
+/**/ {{0x50f2beab, 0xbfd3a978} },
+/**/ {{0xad5a31ea, 0x3c7b7e7f} },
+/**/ {{0xa602212f, 0xbfb6306e} },
+/**/ {{0x9ec38d55, 0xbc31ec15} },
+/**/ {{0xa3477c6a, 0x3fc69fd5} },
+/**/ {{0xb2996038, 0x3c571f2f} },
+/**/ {{0xa6cf162d, 0xbfae6f12} },
+/**/ {{0xd0cb2655, 0xbfb022b8} },
+/**/ {{0x9842912f, 0x3fb33eac} },
+/**/ {{0x4919e78d, 0xbf80d789} },
+/**/ {{0x8037e242, 0xbfa67789} } },
+/**/ {{{0x00000000, 0x3fdc0000} },
+/**/ {{0xc3cc23fd, 0x3fda64ee} },
+/**/ {{0x1b50b7ff, 0xbc724dec} },
+/**/ {{0x7f94905e, 0x3feadbe8} },
+/**/ {{0x7f94905e, 0x3c2adbe8} },
+/**/ {{0xeab54af9, 0xbfd3b9d8} },
+/**/ {{0x54fd0941, 0x3c75b97d} },
+/**/ {{0x645a7f9e, 0xbfb57c09} },
+/**/ {{0x09320811, 0xbc5e79f6} },
+/**/ {{0x180938f2, 0x3fc67953} },
+/**/ {{0xe7aee726, 0x3c6246f2} },
+/**/ {{0xff0ea012, 0xbfaf2d8b} },
+/**/ {{0x66c7250c, 0xbfaf3881} },
+/**/ {{0xc95ff694, 0x3fb32c44} },
+/**/ {{0x25d7ff49, 0xbf83f3f0} },
+/**/ {{0xb848e1d1, 0xbfa5c6d1} } },
+/**/ {{{0x00000000, 0x3fdc4000} },
+/**/ {{0xd59e98cf, 0x3fda9a92} },
+/**/ {{0xff75d817, 0x3c42e42d} },
+/**/ {{0xae95dea9, 0x3feac826} },
+/**/ {{0x633dec57, 0xbc534eec} },
+/**/ {{0xacfa5b18, 0xbfd3c9b2} },
+/**/ {{0x6c4d8d27, 0x3c7a7e0c} },
+/**/ {{0xe4ecc0f6, 0xbfb4c8db} },
+/**/ {{0xc0c32772, 0xbc534990} },
+/**/ {{0x6451e377, 0x3fc651e6} },
+/**/ {{0x2a9bb1f1, 0xbc6ea814} },
+/**/ {{0xe62bc1b2, 0xbfafe5ba} },
+/**/ {{0x65fe3642, 0xbfae2ca8} },
+/**/ {{0x09015968, 0x3fb316cd} },
+/**/ {{0x3ce97a26, 0xbf86f764} },
+/**/ {{0xdee8421b, 0xbfa514c3} } },
+/**/ {{{0x00000000, 0x3fdc8000} },
+/**/ {{0x5422058b, 0x3fdad00f} },
+/**/ {{0x3891d2e8, 0x3c7fc4c3} },
+/**/ {{0x46de51cf, 0x3feab455} },
+/**/ {{0xdbc38cc9, 0xbc5b834a} },
+/**/ {{0x844a38eb, 0xbfd3d906} },
+/**/ {{0xbc44eee8, 0x3c6198e5} },
+/**/ {{0x5993cade, 0xbfb416ed} },
+/**/ {{0xfa289b6c, 0xbc235ccb} },
+/**/ {{0x60e2a3af, 0x3fc62997} },
+/**/ {{0xcf7bda0e, 0xbc69a660} },
+/**/ {{0x33612b72, 0xbfb04bd3} },
+/**/ {{0xcf62bcd9, 0xbfad2210} },
+/**/ {{0x603bfc37, 0x3fb2fe5e} },
+/**/ {{0xa9bce7ec, 0xbf89e1ba} },
+/**/ {{0xb83029d5, 0xbfa461a9} } },
+/**/ {{{0x00000000, 0x3fdcc000} },
+/**/ {{0x20ae9344, 0x3fdb0564} },
+/**/ {{0x46363455, 0xbc793139} },
+/**/ {{0xcde0631f, 0x3feaa074} },
+/**/ {{0x143fe6d4, 0x3c84b49a} },
+/**/ {{0x627b115b, 0xbfd3e7d5} },
+/**/ {{0x332989c0, 0x3c77a502} },
+/**/ {{0xb589513f, 0xbfb36644} },
+/**/ {{0x105eec96, 0x3c3abdc9} },
+/**/ {{0xdd12e0be, 0x3fc6006d} },
+/**/ {{0x5d67cb35, 0xbc4f0281} },
+/**/ {{0x4238ba83, 0xbfb0a1ab} },
+/**/ {{0x73889526, 0xbfac18e3} },
+/**/ {{0xfde6351a, 0x3fb2e311} },
+/**/ {{0xc256833f, 0xbf8cb2d2} },
+/**/ {{0xf73e36f0, 0xbfa3adca} } },
+/**/ {{{0x00000000, 0x3fdd0000} },
+/**/ {{0x1da65c6c, 0x3fdb3a91} },
+/**/ {{0xb1ca5040, 0x3c7ae187} },
+/**/ {{0xc81a2254, 0x3fea8c85} },
+/**/ {{0x8d67728b, 0xbc83c191} },
+/**/ {{0x3e8218e0, 0xbfd3f620} },
+/**/ {{0x52bd43ef, 0xbc72bf32} },
+/**/ {{0xadb5f398, 0xbfb2b6e8} },
+/**/ {{0x6b74d451, 0x3c340287} },
+/**/ {{0x9d9e25fc, 0x3fc5d671} },
+/**/ {{0x518d7a71, 0x3c639669} },
+/**/ {{0x19cc29a0, 0xbfb0f46a} },
+/**/ {{0xc1a69750, 0xbfab1147} },
+/**/ {{0x2c826e6b, 0x3fb2c501} },
+/**/ {{0xcbc1b186, 0xbf8f6a95} },
+/**/ {{0x2de89811, 0xbfa2f96d} } },
+/**/ {{{0x00000000, 0x3fdd4000} },
+/**/ {{0x2e737efc, 0x3fdb6f96} },
+/**/ {{0x64981e71, 0xbc5ca534} },
+/**/ {{0xb9102ddc, 0x3fea7888} },
+/**/ {{0x3c46d7d5, 0xbc7791b2} },
+/**/ {{0x1444efb5, 0xbfd403e8} },
+/**/ {{0x4f3d22a6, 0xbc6047c5} },
+/**/ {{0xb90ac1cc, 0xbfb208df} },
+/**/ {{0x2d2115d8, 0x3c4078b1} },
+/**/ {{0x5b7c61a2, 0x3fc5abaa} },
+/**/ {{0x2bd2d19a, 0x3c3eef6a} },
+/**/ {{0xa8850e1a, 0xbfb14414} },
+/**/ {{0xc6580343, 0xbfaa0b63} },
+/**/ {{0x4876cfdf, 0x3fb2a445} },
+/**/ {{0x562d0829, 0xbf91047b} },
+/**/ {{0xbe562a83, 0xbfa244d3} } },
+/**/ {{{0x00000000, 0x3fdd8000} },
+/**/ {{0x378624a5, 0x3fdba473} },
+/**/ {{0xb46e4aff, 0x3c7519a1} },
+/**/ {{0x2348d9a3, 0x3fea647e} },
+/**/ {{0x9156e59f, 0xbc84f6c2} },
+/**/ {{0xe46b4c91, 0xbfd4112d} },
+/**/ {{0x110fe0b7, 0xbc78c11d} },
+/**/ {{0x10e3d572, 0xbfb15c30} },
+/**/ {{0x4427c00b, 0x3c53b45b} },
+/**/ {{0xc2c486ae, 0x3fc5801f} },
+/**/ {{0xc20ced8b, 0xbc49bb5e} },
+/**/ {{0x4cddef65, 0xbfb190b0} },
+/**/ {{0x2ae4bcd0, 0xbfa9075c} },
+/**/ {{0xb69396b9, 0x3fb280f7} },
+/**/ {{0xce179ccb, 0xbf9246f8} },
+/**/ {{0xce6e9b2b, 0xbfa1903f} } },
+/**/ {{{0x00000000, 0x3fddc000} },
+/**/ {{0x1e528192, 0x3fdbd928} },
+/**/ {{0x39af6b66, 0xbc74b154} },
+/**/ {{0x88478403, 0x3fea5066} },
+/**/ {{0xbe71620f, 0xbc85c7e8} },
+/**/ {{0xb430f4ac, 0xbfd41df2} },
+/**/ {{0xe79c7595, 0xbc55db82} },
+/**/ {{0xb173ac76, 0xbfb0b0df} },
+/**/ {{0xe4738d25, 0x3c57f440} },
+/**/ {{0x7199976b, 0x3fc553d9} },
+/**/ {{0x2a872a12, 0x3c54990c} },
+/**/ {{0xd137dd01, 0xbfb1da42} },
+/**/ {{0x350bfdb5, 0xbfa80554} },
+/**/ {{0xdae9e17f, 0x3fb25b31} },
+/**/ {{0xe9e265b4, 0xbf937cc5} },
+/**/ {{0x3d16a202, 0xbfa0dbf0} } },
+/**/ {{{0x00000000, 0x3fde0000} },
+/**/ {{0xc94ec9f0, 0x3fdc0db4} },
+/**/ {{0x70934c34, 0xbc7cc1ce} },
+/**/ {{0x68881898, 0x3fea3c42} },
+/**/ {{0xe5c3bd97, 0x3c8f907f} },
+/**/ {{0x8d38076d, 0xbfd42a37} },
+/**/ {{0x7e19d62d, 0xbc6b8354} },
+/**/ {{0x5a36f1bd, 0xbfb006f4} },
+/**/ {{0xca398c09, 0xbc41701e} },
+/**/ {{0xf7221a2a, 0x3fc526de} },
+/**/ {{0x8041247e, 0xbc211868} },
+/**/ {{0x67b0229a, 0xbfb220d2} },
+/**/ {{0xc74d0c66, 0xbfa7056d} },
+/**/ {{0x0ff472e2, 0x3fb2330d} },
+/**/ {{0x9cb74216, 0xbf94a5e9} },
+/**/ {{0x992b9e1f, 0xbfa02821} } },
+/**/ {{{0x00000000, 0x3fde4000} },
+/**/ {{0x1ff11eb7, 0x3fdc4219} },
+/**/ {{0x434b3eee, 0xbc7b17df} },
+/**/ {{0x437ac09e, 0x3fea2812} },
+/**/ {{0xf9618c21, 0xbc540368} },
+/**/ {{0x7d5ba406, 0xbfd435fd} },
+/**/ {{0x5e0a732a, 0x3c75605b} },
+/**/ {{0x1ce0c104, 0xbfaebce7} },
+/**/ {{0xd4eb3297, 0xbc446d02} },
+/**/ {{0xd289f60b, 0x3fc4f937} },
+/**/ {{0xe736fa8b, 0x3c5b88b7} },
+/**/ {{0xa5f78db4, 0xbfb26465} },
+/**/ {{0x61a972db, 0xbfa607c9} },
+/**/ {{0x9e13b088, 0x3fb208a2} },
+/**/ {{0x06c33653, 0xbf95c26f} },
+/**/ {{0x346237b1, 0xbf9eea1c} } },
+/**/ {{{0x00000000, 0x3fde8000} },
+/**/ {{0x0aad71f9, 0x3fdc7655} },
+/**/ {{0xff7043e4, 0xbc774b8b} },
+/**/ {{0x977fc070, 0x3fea13d6} },
+/**/ {{0xd9440881, 0xbc86c451} },
+/**/ {{0x9682eee2, 0xbfd44145} },
+/**/ {{0xb13901b4, 0x3c74156f} },
+/**/ {{0x2b58de73, 0xbfad6ec5} },
+/**/ {{0xdf653988, 0x3c2ced26} },
+/**/ {{0x720eb232, 0x3fc4caeb} },
+/**/ {{0x92f3f809, 0x3c614246} },
+/**/ {{0x812caa81, 0xbfb2a503} },
+/**/ {{0x22dc20a7, 0xbfa50c86} },
+/**/ {{0xb35de59d, 0x3fb1dc0b} },
+/**/ {{0x4adc8c38, 0xbf96d265} },
+/**/ {{0x35444e0c, 0xbf9d85db} } },
+/**/ {{{0x00000000, 0x3fdec000} },
+/**/ {{0x72f3631b, 0x3fdcaa68} },
+/**/ {{0x81636f48, 0x3c295067} },
+/**/ {{0xe1e381db, 0x3fe9ff8f} },
+/**/ {{0x00701e1c, 0xbc6fffe6} },
+/**/ {{0xee747cac, 0xbfd44c10} },
+/**/ {{0xced401ad, 0xbc7a7f22} },
+/**/ {{0xf898de26, 0xbfac238c} },
+/**/ {{0xdaa7d32f, 0x3c1eb191} },
+/**/ {{0x32160e42, 0x3fc49c01} },
+/**/ {{0x03d0023c, 0x3c649f02} },
+/**/ {{0x49ba4fb7, 0xbfb2e2b3} },
+/**/ {{0xca00d6c7, 0xbfa413c1} },
+/**/ {{0x5bc495cf, 0x3fb1ad61} },
+/**/ {{0x63d0ff69, 0xbf97d5df} },
+/**/ {{0x27af7010, 0xbf9c23eb} } },
+/**/ {{{0x00000000, 0x3fdf0000} },
+/**/ {{0x432c1351, 0x3fdcde53} },
+/**/ {{0x4418f1ad, 0xbc7a2cfa} },
+/**/ {{0x9edacacc, 0x3fe9eb3e} },
+/**/ {{0x87d23ca5, 0xbc8942c5} },
+/**/ {{0x9eaa285d, 0xbfd45660} },
+/**/ {{0x52cf85b4, 0x3c4fe8e6} },
+/**/ {{0x28319af3, 0xbfaadb48} },
+/**/ {{0x31b456b0, 0xbc207b46} },
+/**/ {{0x5c4ee7c2, 0x3fc46c80} },
+/**/ {{0xb4443c76, 0x3c4bdfc1} },
+/**/ {{0xa73bc33f, 0xbfb31d7c} },
+/**/ {{0xb8a731f5, 0xbfa31d98} },
+/**/ {{0x798f7481, 0x3fb17cbc} },
+/**/ {{0xf977e9ca, 0xbf98ccf3} },
+/**/ {{0x36ea1578, 0xbf9ac4b2} } },
+/**/ {{{0x00000000, 0x3fdf4000} },
+/**/ {{0x66b7f2ad, 0x3fdd1215} },
+/**/ {{0x35886c30, 0x3c7be678} },
+/**/ {{0x497f1fed, 0x3fe9d6e3} },
+/**/ {{0x9a35c454, 0xbc8ec056} },
+/**/ {{0xc4255988, 0xbfd46035} },
+/**/ {{0x7144427c, 0x3c7ddb7b} },
+/**/ {{0xe9b44acd, 0xbfa995ff} },
+/**/ {{0xb529cf65, 0x3c3c9d56} },
+/**/ {{0x26dc5cda, 0x3fc43c70} },
+/**/ {{0xfde6cd82, 0x3c6d6ee6} },
+/**/ {{0x9467b39a, 0xbfb35567} },
+/**/ {{0xf54ca1ba, 0xbfa22a25} },
+/**/ {{0xbe2d5d2d, 0x3fb14a35} },
+/**/ {{0x35a34e74, 0xbf99b7bd} },
+/**/ {{0xc4948489, 0xbf996891} } },
+/**/ {{{0x00000000, 0x3fdf8000} },
+/**/ {{0xc9ec862b, 0x3fdd45ae} },
+/**/ {{0x163ef92d, 0x3c689421} },
+/**/ {{0x5bcb52c7, 0x3fe9c27e} },
+/**/ {{0xf148a350, 0xbc892d91} },
+/**/ {{0x7f43bff0, 0xbfd46991} },
+/**/ {{0x8da13c27, 0xbc738b23} },
+/**/ {{0xf9f19dcd, 0xbfa853bc} },
+/**/ {{0x2433c5cf, 0x3c2ea7a9} },
+/**/ {{0xb38b19e0, 0x3fc40bd7} },
+/**/ {{0x1c2a2863, 0xbc5d466e} },
+/**/ {{0x5b0333a7, 0xbfb38a7c} },
+/**/ {{0x2e3896d7, 0xbfa13983} },
+/**/ {{0xa35b7545, 0x3fb115e5} },
+/**/ {{0x99098556, 0xbf9a9658} },
+/**/ {{0x693ac59e, 0xbf980fe6} } },
+/**/ {{{0x00000000, 0x3fdfc000} },
+/**/ {{0x5a1226f5, 0x3fdd791f} },
+/**/ {{0xa5b64a76, 0xbc64017e} },
+/**/ {{0x4e983ae9, 0x3fe9ae10} },
+/**/ {{0x52b783d7, 0xbc8d45ed} },
+/**/ {{0xf394891f, 0xbfd47274} },
+/**/ {{0x22e08713, 0xbc7cd478} },
+/**/ {{0xa445379d, 0xbfa71487} },
+/**/ {{0x831d87b7, 0x3c1569aa} },
+/**/ {{0x0f10bc36, 0x3fc3dabe} },
+/**/ {{0x1cb9bbe6, 0x3bd8df2b} },
+/**/ {{0x8fddd862, 0xbfb3bcc3} },
+/**/ {{0xbcb632d9, 0xbfa04bc8} },
+/**/ {{0x64a26d77, 0x3fb0dfe4} },
+/**/ {{0xd04027d1, 0xbf9b68e6} },
+/**/ {{0xf792c5d9, 0xbf96bb07} } },
+/**/ {{{0x00000000, 0x3fe00000} },
+/**/ {{0x0561bb4f, 0x3fddac67} },
+/**/ {{0x222f65e2, 0x3c7a2b7f} },
+/**/ {{0x9999999a, 0x3fe99999} },
+/**/ {{0x9999999a, 0xbc899999} },
+/**/ {{0x47ae147b, 0xbfd47ae1} },
+/**/ {{0xeb851eb8, 0x3c5eb851} },
+/**/ {{0xc3ece2a5, 0xbfa5d867} },
+/**/ {{0xd7b900af, 0xbc3a485c} },
+/**/ {{0x30553261, 0x3fc3a92a} },
+/**/ {{0x94467382, 0x3c6f06f6} },
+/**/ {{0x0ed80a18, 0xbfb3ec46} },
+/**/ {{0x514d88d8, 0xbf9ec21b} },
+/**/ {{0xf929a833, 0x3fb0a849} },
+/**/ {{0x88dfb80c, 0xbf9c2f8b} },
+/**/ {{0x8245bf09, 0xbf956a49} } },
+/**/ {{{0x00000000, 0x3fe02000} },
+/**/ {{0xbb026974, 0x3fdddf85} },
+/**/ {{0x0c0a1226, 0x3c643bbb} },
+/**/ {{0xb35b2797, 0x3fe9851a} },
+/**/ {{0x18a8fead, 0x3c89cd14} },
+/**/ {{0xa5042a2d, 0xbfd482d7} },
+/**/ {{0xa8224d16, 0x3c0dbc04} },
+/**/ {{0xc56ade02, 0xbfa49f64} },
+/**/ {{0x47da7eea, 0x3c451e52} },
+/**/ {{0xf7c5fe7d, 0x3fc37722} },
+/**/ {{0xd22c4b5c, 0xbc5165be} },
+/**/ {{0xf6f48c5d, 0xbfb4190c} },
+/**/ {{0x58d0c132, 0xbf9cf2cf} },
+/**/ {{0x0ddfdd74, 0x3fb06f2e} },
+/**/ {{0x46e65336, 0xbf9cea6d} },
+/**/ {{0x6423af3b, 0xbf941df9} } },
+/**/ {{{0x00000000, 0x3fe04000} },
+/**/ {{0x6b0744b0, 0x3fde127b} },
+/**/ {{0x6398d4ab, 0xbc52b098} },
+/**/ {{0x113dcc5a, 0x3fe97094} },
+/**/ {{0x4de8c575, 0xbc842780} },
+/**/ {{0x37beb8e5, 0xbfd48a59} },
+/**/ {{0x9dc7541e, 0xbc601dd2} },
+/**/ {{0xa7f2a8fe, 0xbfa36985} },
+/**/ {{0x7437d42d, 0xbc45e414} },
+/**/ {{0x2eb33dd6, 0x3fc344af} },
+/**/ {{0xe3a3193c, 0xbc6d66e9} },
+/**/ {{0xa6763232, 0xbfb44321} },
+/**/ {{0x7217dfc9, 0xbf9b29d6} },
+/**/ {{0xfff8a866, 0x3fb034a7} },
+/**/ {{0x3a6e931d, 0xbf9d99b5} },
+/**/ {{0x4a9f7e19, 0xbf92d661} } },
+/**/ {{{0x00000000, 0x3fe06000} },
+/**/ {{0x066cf51a, 0x3fde4548} },
+/**/ {{0x12ce98f2, 0x3c43a3aa} },
+/**/ {{0x2774fe53, 0x3fe95c06} },
+/**/ {{0x3b851412, 0x3c810dfd} },
+/**/ {{0x2e911e43, 0xbfd49167} },
+/**/ {{0x09466fcd, 0xbc7f6506} },
+/**/ {{0xfedfb0c1, 0xbfa236d0} },
+/**/ {{0x79cb63a9, 0xbc3f6870} },
+/**/ {{0x86b6561c, 0x3fc311d5} },
+/**/ {{0x9543fc9a, 0x3c561982} },
+/**/ {{0xb70aa5a7, 0xbfb46a8d} },
+/**/ {{0xf5ac1efc, 0xbf996756} },
+/**/ {{0xaf7c84b3, 0x3faff19d} },
+/**/ {{0x15ce96b8, 0xbf9e3d8f} },
+/**/ {{0x42726021, 0xbf9193c6} } },
+/**/ {{{0x00000000, 0x3fe08000} },
+/**/ {{0x7f175a34, 0x3fde77eb} },
+/**/ {{0xc1bf3435, 0x3c70e53d} },
+/**/ {{0x69044ba4, 0x3fe94771} },
+/**/ {{0x92d5fbc1, 0xbc7d53e2} },
+/**/ {{0xba91fd89, 0xbfd49802} },
+/**/ {{0xc3c8c4f3, 0x3c71963e} },
+/**/ {{0xf33546d5, 0xbfa1074c} },
+/**/ {{0xc71ad288, 0x3c4bc296} },
+/**/ {{0x99222665, 0x3fc2de9c} },
+/**/ {{0x28dadb64, 0x3c6e4a10} },
+/**/ {{0xfa031cb1, 0xbfb48f5a} },
+/**/ {{0xbc0c6420, 0xbf97ab74} },
+/**/ {{0x876d0f75, 0x3faf7772} },
+/**/ {{0xe431fc96, 0xbf9ed628} },
+/**/ {{0xc64515ec, 0xbf905668} } },
+/**/ {{{0x00000000, 0x3fe0a000} },
+/**/ {{0xc7cf28c4, 0x3fdeaa65} },
+/**/ {{0xeca3bf05, 0x3c62fb2c} },
+/**/ {{0x47bd0aaa, 0x3fe932d6} },
+/**/ {{0x697b6e3c, 0x3c6bdfec} },
+/**/ {{0x0f13a7e8, 0xbfd49e2d} },
+/**/ {{0x20412940, 0x3c6198c5} },
+/**/ {{0x8a4e92df, 0xbf9fb5fe} },
+/**/ {{0x6309a51a, 0xbc3cbb58} },
+/**/ {{0xe67c9829, 0x3fc2ab0a} },
+/**/ {{0x06a4c4ef, 0xbc647643} },
+/**/ {{0x749bc711, 0xbfb4b193} },
+/**/ {{0x27bef265, 0xbf95f651} },
+/**/ {{0x28347ebf, 0x3faefafb} },
+/**/ {{0xe0c06e2f, 0xbf9f63b2} },
+/**/ {{0x9e7b9dd7, 0xbf8e3d09} } },
+/**/ {{{0x00000000, 0x3fe0c000} },
+/**/ {{0xd43f8435, 0x3fdedcb6} },
+/**/ {{0x330884e4, 0xbc5fc976} },
+/**/ {{0x343c31e5, 0x3fe91e35} },
+/**/ {{0x9bb96799, 0xbc8fd46f} },
+/**/ {{0x617d19a1, 0xbfd4a3e7} },
+/**/ {{0xea58b250, 0xbc7d7303} },
+/**/ {{0x9b55d156, 0xbf9d63da} },
+/**/ {{0xd5b4cc6c, 0xbc14bf72} },
+/**/ {{0xd6016a7c, 0x3fc27726} },
+/**/ {{0x435ec4b4, 0x3c4eba22} },
+/**/ {{0x5c52b3c6, 0xbfb4d141} },
+/**/ {{0x2fdd9fbd, 0xbf94480b} },
+/**/ {{0x6d3af4b6, 0x3fae7c63} },
+/**/ {{0x4e61315b, 0xbf9fe65f} },
+/**/ {{0xcea37283, 0xbf8bd8a3} } },
+/**/ {{{0x00000000, 0x3fe0e000} },
+/**/ {{0x98f393d0, 0x3fdf0ede} },
+/**/ {{0x87cb1894, 0xbc72f40a} },
+/**/ {{0x9de85688, 0x3fe9098e} },
+/**/ {{0xa3791e64, 0xbc7c2de1} },
+/**/ {{0xe9238ed7, 0xbfd4a932} },
+/**/ {{0x28864386, 0xbc67a1bb} },
+/**/ {{0x001dec68, 0xbf9b1838} },
+/**/ {{0x8f0ffbdd, 0xbc33ee0e} },
+/**/ {{0xb52e1005, 0x3fc242f6} },
+/**/ {{0x371fd2c1, 0xbc5476eb} },
+/**/ {{0x134edf2d, 0xbfb4ee6f} },
+/**/ {{0x6b13becc, 0xbf92a0bf} },
+/**/ {{0x650f859c, 0x3fadfbd6} },
+/**/ {{0x281586f4, 0xbfa02f31} },
+/**/ {{0x7a73449e, 0xbf898006} } },
+/**/ {{{0x00000000, 0x3fe10000} },
+/**/ {{0x0b541418, 0x3fdf40dd} },
+/**/ {{0xdc382a23, 0xbc6a3992} },
+/**/ {{0xf2efd135, 0x3fe8f4e2} },
+/**/ {{0xd4218911, 0xbc74c3c0} },
+/**/ {{0xdf24b2d1, 0xbfd4ae10} },
+/**/ {{0x79d0ac37, 0x3c713b12} },
+/**/ {{0xd7365f3f, 0xbf98d31f} },
+/**/ {{0x62531dc5, 0xbc18bf3b} },
+/**/ {{0xb7567664, 0x3fc20e80} },
+/**/ {{0xd450197f, 0xbc54a699} },
+/**/ {{0x24d80ddd, 0xbfb50927} },
+/**/ {{0x1b0516ab, 0xbf910088} },
+/**/ {{0x4a356567, 0x3fad797e} },
+/**/ {{0xe14758ed, 0xbfa065f8} },
+/**/ {{0x73d2f6bb, 0xbf87338f} } },
+/**/ {{{0x00000000, 0x3fe12000} },
+/**/ {{0x21a4e495, 0x3fdf72b2} },
+/**/ {{0x0f7eb740, 0x3c5489c2} },
+/**/ {{0xa0470831, 0x3fe8e032} },
+/**/ {{0xe75570cd, 0xbc8c154a} },
+/**/ {{0x7e416c35, 0xbfd4b282} },
+/**/ {{0x60646afd, 0xbc7f1837} },
+/**/ {{0x7a6bec27, 0xbf96949a} },
+/**/ {{0xe6b77ba9, 0x3c38238f} },
+/**/ {{0xf5428c61, 0x3fc1d9ca} },
+/**/ {{0xcd7881aa, 0x3c6a968d} },
+/**/ {{0x41e00b6e, 0xbfb52174} },
+/**/ {{0x702ad3de, 0xbf8ecefa} },
+/**/ {{0x7c8ae0dc, 0x3facf584} },
+/**/ {{0x8aa44fa8, 0xbfa097a2} },
+/**/ {{0x2ed63408, 0xbf84f394} } },
+/**/ {{{0x00000000, 0x3fe14000} },
+/**/ {{0xd3029259, 0x3fdfa45d} },
+/**/ {{0xdc28d8b5, 0xbc7ca563} },
+/**/ {{0x11a6de80, 0x3fe8cb7e} },
+/**/ {{0xac22b8f8, 0x3c610be6} },
+/**/ {{0x02b9488a, 0xbfd4b689} },
+/**/ {{0xaf91d442, 0x3c5ea0bd} },
+/**/ {{0x821fd17e, 0xbf945caf} },
+/**/ {{0x0e51a049, 0x3c38e464} },
+/**/ {{0x6cd45aad, 0x3fc1a4db} },
+/**/ {{0xf4200d5e, 0x3c2288e0} },
+/**/ {{0x3d9dd7c4, 0xbfb53761} },
+/**/ {{0xfb107457, 0xbf8bab68} },
+/**/ {{0x7b46ebd1, 0x3fac7011} },
+/**/ {{0x93134a8f, 0xbfa0c44a} },
+/**/ {{0xf1fa4589, 0xbf82c061} } },
+/**/ {{{0x00000000, 0x3fe16000} },
+/**/ {{0x175fdf83, 0x3fdfd5e0} },
+/**/ {{0x1ec49b15, 0x3c63a87b} },
+/**/ {{0xb18b4749, 0x3fe8b6c5} },
+/**/ {{0xb7d58c0a, 0xbc5fabb8} },
+/**/ {{0xaa26890c, 0xbfd4ba25} },
+/**/ {{0x0ef9b688, 0x3c50e395} },
+/**/ {{0xc8a9b4c0, 0xbf922b65} },
+/**/ {{0xd319146f, 0x3c2835ee} },
+/**/ {{0x00b681bd, 0x3fc16fb8} },
+/**/ {{0x279133b0, 0x3c1df633} },
+/**/ {{0x0a3b410c, 0xbfb54af9} },
+/**/ {{0xebe14682, 0xbf889682} },
+/**/ {{0xdf89e086, 0x3fabe94c} },
+/**/ {{0x0e55a6f8, 0xbfa0ec0e} },
+/**/ {{0x08af68f3, 0xbf809a3e} } },
+/**/ {{{0x00000000, 0x3fe18000} },
+/**/ {{0x73c1a40c, 0x3fe0039c} },
+/**/ {{0x49c9d593, 0xbc8b32c9} },
+/**/ {{0xe931fcd3, 0x3fe8a209} },
+/**/ {{0x8e68c94c, 0x3c6cb8f0} },
+/**/ {{0xb35ad2d8, 0xbfd4bd59} },
+/**/ {{0xcaa606b4, 0xbc61ac1a} },
+/**/ {{0x6dc339ef, 0xbf9000c3} },
+/**/ {{0xaeaeaa73, 0x3c2c62e2} },
+/**/ {{0x7812ee2d, 0x3fc13a66} },
+/**/ {{0x948ffe5b, 0x3c6a8cc2} },
+/**/ {{0xb5955c9c, 0xbfb55c46} },
+/**/ {{0x0fd2b503, 0xbf85906b} },
+/**/ {{0x577de2da, 0x3fab615d} },
+/**/ {{0xa34d31ec, 0xbfa10f0a} },
+/**/ {{0xefe48ad0, 0xbf7d02cb} } },
+/**/ {{{0x00000000, 0x3fe1a000} },
+/**/ {{0x1e82422d, 0x3fe01c34} },
+/**/ {{0xfcca90ee, 0x3c83db44} },
+/**/ {{0x20995a88, 0x3fe88d4b} },
+/**/ {{0x1e42e681, 0x3c802777} },
+/**/ {{0x5e3c840f, 0xbfd4c026} },
+/**/ {{0x3800420d, 0x3c7d7c65} },
+/**/ {{0xb3f88703, 0xbf8bb99b} },
+/**/ {{0x4bf63e82, 0x3c1f62ec} },
+/**/ {{0x7e5193ee, 0x3fc104ec} },
+/**/ {{0xbae4e07d, 0xbc27771e} },
+/**/ {{0x66104515, 0xbfb56b55} },
+/**/ {{0x061a20d1, 0xbf829940} },
+/**/ {{0xa20334d9, 0x3faad868} },
+/**/ {{0x7aba8ee6, 0xbfa12d5e} },
+/**/ {{0x69774b8d, 0xbf78ec1f} } },
+/**/ {{{0x00000000, 0x3fe1c000} },
+/**/ {{0x09250488, 0x3fe034b7} },
+/**/ {{0x8d855410, 0x3c78f9b3} },
+/**/ {{0xbe7f594b, 0x3fe87889} },
+/**/ {{0xc826e7a3, 0xbc7530e1} },
+/**/ {{0xeba4af80, 0xbfd4c28c} },
+/**/ {{0xe6a95faa, 0x3c7104a9} },
+/**/ {{0x846dba10, 0xbf877f13} },
+/**/ {{0x4abd0010, 0x3c2bc924} },
+/**/ {{0xa2deff9f, 0x3fc0cf4f} },
+/**/ {{0xa013c015, 0xbc67d17e} },
+/**/ {{0x577e7899, 0xbfb57830} },
+/**/ {{0xb49ea16d, 0xbf7f6238} },
+/**/ {{0x8ae4a926, 0x3faa4e93} },
+/**/ {{0x2e77f633, 0xbfa14728} },
+/**/ {{0xb81c893e, 0xbf74f0d3} } },
+/**/ {{{0x00000000, 0x3fe1e000} },
+/**/ {{0x314342e6, 0x3fe04d25} },
+/**/ {{0x6442c767, 0xbc81c863} },
+/**/ {{0x2860ad7e, 0x3fe863c6} },
+/**/ {{0x137a2d8f, 0xbc81dcb2} },
+/**/ {{0x9d3dc03a, 0xbfd4c48e} },
+/**/ {{0x197b1db9, 0xbc7d92af} },
+/**/ {{0x5653b1a7, 0xbf8351f6} },
+/**/ {{0x2127dea7, 0xbbe368b4} },
+/**/ {{0x58fa8ca4, 0x3fc09995} },
+/**/ {{0x530429e5, 0xbc446391} },
+/**/ {{0xd81c26eb, 0xbfb582e2} },
+/**/ {{0x3e63c109, 0xbf79b02d} },
+/**/ {{0xe7904294, 0x3fa9c401} },
+/**/ {{0xb933b0f3, 0xbfa15c86} },
+/**/ {{0xd8d860e1, 0xbf711137} } },
+/**/ {{{0x00000000, 0x3fe20000} },
+/**/ {{0x94db30d0, 0x3fe0657e} },
+/**/ {{0x5f6349e6, 0xbc7d5b49} },
+/**/ {{0xc2780614, 0x3fe84f00} },
+/**/ {{0xff3d87fa, 0xbc7fe7b0} },
+/**/ {{0xb562c625, 0xbfd4c62c} },
+/**/ {{0xa78e848c, 0x3c77b2c3} },
+/**/ {{0xb3a4bcb7, 0xbf7e6495} },
+/**/ {{0xe3f2b0a5, 0x3c14eb89} },
+/**/ {{0xf78c0dc4, 0x3fc063c2} },
+/**/ {{0x7539dc13, 0xbc6badf0} },
+/**/ {{0x459eb443, 0xbfb58b78} },
+/**/ {{0x1386e6b4, 0xbf741c83} },
+/**/ {{0x944ff706, 0x3fa938d6} },
+/**/ {{0x66ad4037, 0xbfa16d99} },
+/**/ {{0x01fc736a, 0xbf6a9b1a} } },
+/**/ {{{0x00000000, 0x3fe22000} },
+/**/ {{0x324e9b38, 0x3fe07dc3} },
+/**/ {{0xe04450ac, 0x3c7b70c9} },
+/**/ {{0xefbd6bfe, 0x3fe83a39} },
+/**/ {{0x21f5de26, 0xbc7b2885} },
+/**/ {{0x76ff6c9e, 0xbfd4c768} },
+/**/ {{0xdebc1603, 0x3c56a2c0} },
+/**/ {{0xd9cccfd7, 0xbf76402c} },
+/**/ {{0x4e9786c1, 0xbc1b39c0} },
+/**/ {{0xb900b57a, 0x3fc02ddd} },
+/**/ {{0xea88a215, 0x3c45d916} },
+/**/ {{0x0a58ab40, 0xbfb591fc} },
+/**/ {{0x32a37ac9, 0xbf6d4eb0} },
+/**/ {{0x71fe75f8, 0x3fa8ad33} },
+/**/ {{0xc477a855, 0xbfa17a7f} },
+/**/ {{0x2b035011, 0xbf634c0e} } },
+/**/ {{{0x00000000, 0x3fe24000} },
+/**/ {{0x0861a590, 0x3fe095f3} },
+/**/ {{0x0a15a9f3, 0xbc7121b2} },
+/**/ {{0x11e5c14d, 0x3fe82572} },
+/**/ {{0xacd80b09, 0xbc7df9fc} },
+/**/ {{0x25709bff, 0xbfd4c843} },
+/**/ {{0x1790f484, 0x3c7a9ef6} },
+/**/ {{0x8a0def34, 0xbf6c6d74} },
+/**/ {{0x2a8142d7, 0xbc051e57} },
+/**/ {{0x765e156b, 0x3fbfefd5} },
+/**/ {{0xf0e29c9e, 0xbc3e6048} },
+/**/ {{0x9a724e28, 0xbfb59679} },
+/**/ {{0xcf13e192, 0xbf62a185} },
+/**/ {{0x6433c13f, 0x3fa82139} },
+/**/ {{0x9342e95d, 0xbfa18359} },
+/**/ {{0x8f974107, 0xbf586b34} } },
+/**/ {{{0x00000000, 0x3fe26000} },
+/**/ {{0x1639866c, 0x3fe0ae0e} },
+/**/ {{0xf2de445a, 0x3c7075ab} },
+/**/ {{0x89625f5d, 0x3fe810a9} },
+/**/ {{0x0fcf7262, 0xbc8e4bea} },
+/**/ {{0x0465c69b, 0xbfd4c8be} },
+/**/ {{0xd7f7f89c, 0x3c462ef4} },
+/**/ {{0x4de612d5, 0xbf59210e} },
+/**/ {{0xba53898d, 0xbbf43659} },
+/**/ {{0xfe836c69, 0x3fbf83dd} },
+/**/ {{0x27f5499a, 0xbc36cb56} },
+/**/ {{0x7136edda, 0xbfb598fc} },
+/**/ {{0x00013fb7, 0xbf50634c} },
+/**/ {{0x4fe557c2, 0x3fa79508} },
+/**/ {{0xb8ae41dc, 0xbfa18846} },
+/**/ {{0xe36bd239, 0xbf455fce} } },
+/**/ {{{0x00000000, 0x3fe28000} },
+/**/ {{0x5b5b43da, 0x3fe0c614} },
+/**/ {{0x13b5404f, 0x3c5974fa} },
+/**/ {{0xb560d35c, 0x3fe7fbe0} },
+/**/ {{0xae5a0887, 0xbc84f066} },
+/**/ {{0x57c2e1cb, 0xbfd4c8da} },
+/**/ {{0xe0a3774c, 0x3c73de0e} },
+/**/ {{0x61c69f3c, 0x3f38b341} },
+/**/ {{0x7b200371, 0x3bd7b2e2} },
+/**/ {{0xd351e8ed, 0x3fbf17de} },
+/**/ {{0x650c5a9c, 0x3c5bce38} },
+/**/ {{0x0e77234c, 0xbfb59990} },
+/**/ {{0x99f594ee, 0x3f3006ef} },
+/**/ {{0x1a75a6cc, 0x3fa708bf} },
+/**/ {{0x31a471d5, 0xbfa18967} },
+/**/ {{0x59bf0521, 0x3f24cc7e} } },
+/**/ {{{0x00000000, 0x3fe2a000} },
+/**/ {{0xd7aa6f7d, 0x3fe0de05} },
+/**/ {{0xb1c529ab, 0xbc783684} },
+/**/ {{0xf3cab884, 0x3fe7e717} },
+/**/ {{0x3b1fa4c7, 0x3c7e1b21} },
+/**/ {{0x63830b4b, 0xbfd4c899} },
+/**/ {{0xae3ffeff, 0xbc7b6e32} },
+/**/ {{0xfc06cc4f, 0x3f628757} },
+/**/ {{0x56f01f66, 0xbbb4c155} },
+/**/ {{0x8424efd8, 0x3fbeabe1} },
+/**/ {{0x6e5604ea, 0x3bdf5129} },
+/**/ {{0xf3ffff64, 0xbfb5983f} },
+/**/ {{0x1f564189, 0x3f57ec04} },
+/**/ {{0xa92e6e68, 0x3fa67c7b} },
+/**/ {{0x0542d0ff, 0xbfa186db} },
+/**/ {{0x11a37bde, 0x3f4ee247} } },
+/**/ {{{0x00000000, 0x3fe2c000} },
+/**/ {{0x8b67e295, 0x3fe0f5e2} },
+/**/ {{0x7ec990d0, 0x3be311b1} },
+/**/ {{0xa145af59, 0x3fe7d24f} },
+/**/ {{0xabdb623b, 0xbc83c6d1} },
+/**/ {{0x6b9bdb30, 0xbfd4c7fc} },
+/**/ {{0xd3bbb84b, 0x3c7c2fae} },
+/**/ {{0xc729b366, 0x3f70e125} },
+/**/ {{0x7a19993c, 0x3c1291fb} },
+/**/ {{0x66cf0dd8, 0x3fbe3fef} },
+/**/ {{0xcd5e7640, 0xbc5428b7} },
+/**/ {{0xa3273c21, 0xbfb59517} },
+/**/ {{0x36891acb, 0x3f65adcf} },
+/**/ {{0xe121c017, 0x3fa5f05a} },
+/**/ {{0x384bad65, 0xbfa180c2} },
+/**/ {{0xd31e02a7, 0x3f5bd6f1} } },
+/**/ {{{0x00000000, 0x3fe2e000} },
+/**/ {{0x77307a0d, 0x3fe10daa} },
+/**/ {{0xd44c7b05, 0x3c869c33} },
+/**/ {{0x19337139, 0x3fe7bd88} },
+/**/ {{0x00e777ef, 0xbc7fd248} },
+/**/ {{0xb3e16264, 0xbfd4c704} },
+/**/ {{0xd46ed4e3, 0xbc7ed720} },
+/**/ {{0x62c1daf7, 0x3f7863a5} },
+/**/ {{0x30cc82d1, 0x3c155e73} },
+/**/ {{0x97a241da, 0x3fbdd411} },
+/**/ {{0x9ac44edd, 0x3c27a15a} },
+/**/ {{0x9a6c71a6, 0xbfb59022} },
+/**/ {{0xb5534ebe, 0x3f6f285a} },
+/**/ {{0xa76d3cf7, 0x3fa56478} },
+/**/ {{0xc1240db6, 0xbfa1773c} },
+/**/ {{0x3891a70c, 0x3f63e5a1} } },
+/**/ {{{0x00000000, 0x3fe30000} },
+/**/ {{0x9bfbd2a9, 0x3fe1255d} },
+/**/ {{0xe1c0ee35, 0xbc52bdae} },
+/**/ {{0xb5b1ffa1, 0x3fe7a8c1} },
+/**/ {{0x4e005ea3, 0x3c873e4a} },
+/**/ {{0x7fead5b8, 0xbfd4c5b3} },
+/**/ {{0x55abc25a, 0x3c77958e} },
+/**/ {{0x01e4c970, 0x3f7fcb31} },
+/**/ {{0xc5337fda, 0xbc1ad968} },
+/**/ {{0xf983ecf1, 0x3fbd6850} },
+/**/ {{0x02ed6910, 0xbc3e45e6} },
+/**/ {{0x532f49b6, 0xbfb5896c} },
+/**/ {{0xeaefcf7f, 0x3f7432e2} },
+/**/ {{0xe1db38f0, 0x3fa4d8ef} },
+/**/ {{0x7c5c9def, 0xbfa16a6a} },
+/**/ {{0x7b6fe5d0, 0x3f69a742} } },
+/**/ {{{0x00000000, 0x3fe32000} },
+/**/ {{0xfb1b056e, 0x3fe13cfb} },
+/**/ {{0x6fc3ed38, 0x3c83110e} },
+/**/ {{0xcf9bee6c, 0x3fe793fc} },
+/**/ {{0xd8d91b6c, 0xbc8dc7d2} },
+/**/ {{0x12f7e51f, 0xbfd4c40a} },
+/**/ {{0x0d5d686d, 0x3c7d1e10} },
+/**/ {{0x839d28fa, 0x3f838be8} },
+/**/ {{0x52131640, 0x3c13427a} },
+/**/ {{0x360bfed5, 0x3fbcfcb6} },
+/**/ {{0xa36f599f, 0xbc5e3cb4} },
+/**/ {{0x3f7aa463, 0xbfb58100} },
+/**/ {{0xb76f2bc0, 0x3f78b31e} },
+/**/ {{0x77dd6b80, 0x3fa44dda} },
+/**/ {{0x21c53ca9, 0xbfa15a6b} },
+/**/ {{0x6cd99ed4, 0x3f6f30a7} } },
+/**/ {{{0x00000000, 0x3fe34000} },
+/**/ {{0x9637646a, 0x3fe15485} },
+/**/ {{0x548bf3c3, 0xbc84ba7c} },
+/**/ {{0xbe88c85e, 0x3fe77f39} },
+/**/ {{0x9b6750c8, 0xbc6a983f} },
+/**/ {{0xafd6bee5, 0xbfd4c209} },
+/**/ {{0x5e73e93a, 0x3c7d21ef} },
+/**/ {{0xfc556ca7, 0x3f8724c7} },
+/**/ {{0x42e5673e, 0xbc23cef2} },
+/**/ {{0xbdaef67d, 0x3fbc9149} },
+/**/ {{0x3f04fcdc, 0xbc1e549c} },
+/**/ {{0xc7e4996a, 0xbfb576e9} },
+/**/ {{0xba6ceedb, 0x3f7d14fc} },
+/**/ {{0x53dcdc4a, 0x3fa3c351} },
+/**/ {{0x3a0a53a1, 0xbfa1475e} },
+/**/ {{0x62102619, 0x3f724116} } },
+/**/ {{{0x00000000, 0x3fe36000} },
+/**/ {{0x6f5137e1, 0x3fe16bfa} },
+/**/ {{0xe141bd35, 0x3c79606f} },
+/**/ {{0xd8cd8d65, 0x3fe76a78} },
+/**/ {{0xddf1f71f, 0x3c854a99} },
+/**/ {{0x98cabe40, 0xbfd4bfb3} },
+/**/ {{0x9ef99598, 0xbc61e24d} },
+/**/ {{0x388e6864, 0x3f8ab03d} },
+/**/ {{0xc340d113, 0x3c210541} },
+/**/ {{0xc7f24ec4, 0x3fbc2613} },
+/**/ {{0x0a59af31, 0x3c54042a} },
+/**/ {{0x49833ac1, 0xbfb56b34} },
+/**/ {{0x22f6cd28, 0x3f80ac4f} },
+/**/ {{0x64dac153, 0x3fa3396c} },
+/**/ {{0x14dadf32, 0xbfa13163} },
+/**/ {{0x21aeee27, 0x3f74ce20} } },
+/**/ {{{0x00000000, 0x3fe38000} },
+/**/ {{0x88be7c13, 0x3fe1835a} },
+/**/ {{0xec00c301, 0x3c8c621c} },
+/**/ {{0x737d49ca, 0x3fe755ba} },
+/**/ {{0xd4cb44c6, 0xbc8abaf3} },
+/**/ {{0x0f73c4b3, 0xbfd4bd09} },
+/**/ {{0xa9936e0b, 0x3c3e9ebf} },
+/**/ {{0x8920477f, 0x3f8e2e4f} },
+/**/ {{0x0360e009, 0xbc0889e3} },
+/**/ {{0x53aaefa0, 0x3fbbbb1c} },
+/**/ {{0xa1007b7f, 0xbc5edb26} },
+/**/ {{0x13f5f619, 0xbfb55deb} },
+/**/ {{0xe675741e, 0x3f82bf14} },
+/**/ {{0xa05e0ebf, 0x3fa2b042} },
+/**/ {{0xbf95c5c1, 0xbfa11898} },
+/**/ {{0xe421ee51, 0x3f773faf} } },
+/**/ {{{0x00000000, 0x3fe3a000} },
+/**/ {{0xe5299f9a, 0x3fe19aa5} },
+/**/ {{0x2c58f835, 0xbc8a606c} },
+/**/ {{0xe269c5b3, 0x3fe740fe} },
+/**/ {{0x4c82509c, 0x3c873eff} },
+/**/ {{0x54b63d79, 0xbfd4ba0b} },
+/**/ {{0x75bceeff, 0xbc51d68a} },
+/**/ {{0x9d9b3eb0, 0x3f90cf83} },
+/**/ {{0x68a7ca2f, 0xbc107399} },
+/**/ {{0x27453d35, 0x3fbb506b} },
+/**/ {{0x00bdfedd, 0x3c326b36} },
+/**/ {{0x67836cef, 0xbfb54f19} },
+/**/ {{0x567ed6e8, 0x3f84c2e5} },
+/**/ {{0x04a983e8, 0x3fa227ea} },
+/**/ {{0xfc7ce22f, 0xbfa0fd1d} },
+/**/ {{0x2ffea71d, 0x3f79960c} } },
+/**/ {{{0x00000000, 0x3fe3c000} },
+/**/ {{0x87904285, 0x3fe1b1dc} },
+/**/ {{0x8aef8f29, 0xbc621e8c} },
+/**/ {{0x78244c5a, 0x3fe72c46} },
+/**/ {{0xe664f3a2, 0x3c888c36} },
+/**/ {{0xa8a3ca2f, 0xbfd4b6bb} },
+/**/ {{0x1e1f3e19, 0xbc778793} },
+/**/ {{0xc8a3d8bb, 0x3f928136} },
+/**/ {{0x140daf1c, 0x3c3dc4d8} },
+/**/ {{0xd1165ef3, 0x3fbae607} },
+/**/ {{0x6305876c, 0xbc5fbfaa} },
+/**/ {{0x734b94bd, 0xbfb53eca} },
+/**/ {{0x7c458eb1, 0x3f86b7d8} },
+/**/ {{0x9b360f57, 0x3fa1a077} },
+/**/ {{0x3a6beabd, 0xbfa0df11} },
+/**/ {{0xaf42dc87, 0x3f7bd182} } },
+/**/ {{{0x00000000, 0x3fe3e000} },
+/**/ {{0x7341f64f, 0x3fe1c8fe} },
+/**/ {{0x9d5e792a, 0x3c728bbc} },
+/**/ {{0x85fe8a32, 0x3fe71791} },
+/**/ {{0xe8bbb0d0, 0x3c8f15bd} },
+/**/ {{0x4a6497be, 0xbfd4b31b} },
+/**/ {{0x782968f7, 0x3c737223} },
+/**/ {{0x5e0c3122, 0x3f942c46} },
+/**/ {{0x86422b13, 0xbc33e26a} },
+/**/ {{0xa7b659b8, 0x3fba7bf9} },
+/**/ {{0x25381986, 0xbc3cdf63} },
+/**/ {{0x538deb45, 0xbfb52d09} },
+/**/ {{0xa0c1f425, 0x3f889e08} },
+/**/ {{0x7b6d72e6, 0x3fa119ff} },
+/**/ {{0x8d11287b, 0xbfa0be90} },
+/**/ {{0xbce83ad4, 0x3f7df267} } },
+/**/ {{{0x00000000, 0x3fe40000} },
+/**/ {{0xabdefeb4, 0x3fe1e00b} },
+/**/ {{0x287a668f, 0xbc5928df} },
+/**/ {{0x5c0b8170, 0x3fe702e0} },
+/**/ {{0x5c0b8170, 0x3c7702e0} },
+/**/ {{0x78215a76, 0xbfd4af2b} },
+/**/ {{0xab3a13d8, 0xbc581c2e} },
+/**/ {{0xe9e4a9d0, 0x3f95d0b7} },
+/**/ {{0xebf91fc7, 0xbc3aa02a} },
+/**/ {{0xca629942, 0x3fba1247} },
+/**/ {{0xc245db83, 0xbc46961a} },
+/**/ {{0x100385b4, 0xbfb519e1} },
+/**/ {{0x32616ed8, 0x3f8a7592} },
+/**/ {{0xcda1223a, 0x3fa09494} },
+/**/ {{0xa5a5c251, 0xbfa09bb9} },
+/**/ {{0xf489d8ba, 0x3f7ff915} } },
+/**/ {{{0x00000000, 0x3fe42000} },
+/**/ {{0x3557138a, 0x3fe1f704} },
+/**/ {{0xf6d7dd47, 0x3c76c659} },
+/**/ {{0x4920943e, 0x3fe6ee33} },
+/**/ {{0x61a3a541, 0xbc62723e} },
+/**/ {{0x6eedf042, 0xbfd4aaed} },
+/**/ {{0xe7561ed4, 0x3c5b337a} },
+/**/ {{0x68796803, 0x3f976e91} },
+/**/ {{0x44d1db93, 0xbc0e806f} },
+/**/ {{0x21688625, 0x3fb9a8f9} },
+/**/ {{0xb1ec0554, 0x3c540185} },
+/**/ {{0x9a4cbc61, 0xbfb5055c} },
+/**/ {{0xab0be204, 0x3f8c3e93} },
+/**/ {{0xce3968a1, 0x3fa01049} },
+/**/ {{0xcc2331ba, 0xbfa076a9} },
+/**/ {{0xe220db7e, 0x3f80f2f6} } },
+/**/ {{{0x00000000, 0x3fe44000} },
+/**/ {{0x13e823b2, 0x3fe20de8} },
+/**/ {{0x53ebb744, 0xbc8791d7} },
+/**/ {{0x9ad6a3fd, 0x3fe6d98a} },
+/**/ {{0xc4e69862, 0xbc808110} },
+/**/ {{0x6ab4a79d, 0xbfd4a662} },
+/**/ {{0x9fc1cc2b, 0x3c52ed25} },
+/**/ {{0x42e6dc28, 0x3f9905d9} },
+/**/ {{0xe39b7707, 0xbc228c79} },
+/**/ {{0x5e97c6f4, 0x3fb94014} },
+/**/ {{0xf8779202, 0xbc52b822} },
+/**/ {{0xcc723054, 0xbfb4ef86} },
+/**/ {{0x76852811, 0x3f8df92d} },
+/**/ {{0xa231ee3f, 0x3f9f1a5f} },
+/**/ {{0xd8f34e77, 0xbfa04f7d} },
+/**/ {{0x80706a34, 0x3f81dcaa} } },
+/**/ {{{0x00000000, 0x3fe46000} },
+/**/ {{0x4c1d192a, 0x3fe224b7} },
+/**/ {{0xf88a60c4, 0x3c8d6d3d} },
+/**/ {{0x9d8b44ec, 0x3fe6c4e6} },
+/**/ {{0x4ed04ec2, 0xbc589d5c} },
+/**/ {{0xa6222a08, 0xbfd4a18b} },
+/**/ {{0xd3867dbd, 0xbc66c919} },
+/**/ {{0x4bb5a8a0, 0x3f9a9696} },
+/**/ {{0x927bb5bd, 0x3c36698e} },
+/**/ {{0xfdbbcc76, 0x3fb8d79f} },
+/**/ {{0x4efb71a1, 0x3c2578bd} },
+/**/ {{0x6778e363, 0xbfb4d86a} },
+/**/ {{0xd930230d, 0x3f8fa581} },
+/**/ {{0x8a6221aa, 0x3f9e16ae} },
+/**/ {{0x2f183972, 0xbfa02652} },
+/**/ {{0x3e507f4f, 0x3f82b9db} } },
+/**/ {{{0x00000000, 0x3fe48000} },
+/**/ {{0xe2cc9e6a, 0x3fe23b71} },
+/**/ {{0x9f38224e, 0x3c6c421c} },
+/**/ {{0x9c620595, 0x3fe6b047} },
+/**/ {{0x07d7f0c2, 0x3c8867df} },
+/**/ {{0x5a920887, 0xbfd49c6a} },
+/**/ {{0x37bcc433, 0xbc764547} },
+/**/ {{0xbb7e5931, 0x3f9c20cf} },
+/**/ {{0x4db6bef2, 0xbc3d86f5} },
+/**/ {{0x451c4a5d, 0x3fb86fa2} },
+/**/ {{0x15afb52c, 0xbc475142} },
+/**/ {{0x120917da, 0xbfb4c012} },
+/**/ {{0x6b9c3fad, 0x3f90a1da} },
+/**/ {{0x708543e5, 0x3f9d159f} },
+/**/ {{0x6d929bce, 0xbf9ff685} },
+/**/ {{0xd0361a66, 0x3f838ac0} } },
+/**/ {{{0x00000000, 0x3fe4a000} },
+/**/ {{0xdd17e501, 0x3fe25217} },
+/**/ {{0x8c1b679c, 0x3c856aa8} },
+/**/ {{0xe145c95d, 0x3fe69bad} },
+/**/ {{0x5605046d, 0xbc873257} },
+/**/ {{0xbffbe8a8, 0xbfd496ff} },
+/**/ {{0xc7b45e6f, 0x3c36a5c5} },
+/**/ {{0x2d9556eb, 0x3f9da48d} },
+/**/ {{0x1871a19d, 0x3c3ff0e8} },
+/**/ {{0x46043f42, 0x3fb80821} },
+/**/ {{0xe660cfa1, 0x3c550eec} },
+/**/ {{0x5727a8cb, 0xbfb4a688} },
+/**/ {{0x0e13efbc, 0x3f9169f6} },
+/**/ {{0xb59149dd, 0x3f9c174f} },
+/**/ {{0xb10444dd, 0xbf9f9cd5} },
+/**/ {{0x03e91dd9, 0x3f844f95} } },
+/**/ {{{0x00000000, 0x3fe4c000} },
+/**/ {{0x40696da6, 0x3fe268a9} },
+/**/ {{0xa04c73cc, 0x3c5d1348} },
+/**/ {{0xb4ea3592, 0x3fe68719} },
+/**/ {{0x088ed284, 0xbc7ecf86} },
+/**/ {{0x0ce1507d, 0xbfd4914d} },
+/**/ {{0x4dff2946, 0xbc6410ef} },
+/**/ {{0x9cbf7eb7, 0x3f9f21d6} },
+/**/ {{0xeaaad7e2, 0x3c39bc22} },
+/**/ {{0xdd4f3070, 0x3fb7a122} },
+/**/ {{0x1cfe44af, 0x3c50d950} },
+/**/ {{0xa50188df, 0xbfb48bd7} },
+/**/ {{0x71756204, 0x3f922b27} },
+/**/ {{0x0810a33a, 0x3f9b1bdb} },
+/**/ {{0xf1011313, 0xbf9f3fca} },
+/**/ {{0x8fe0f49b, 0x3f850893} } },
+/**/ {{{0x00000000, 0x3fe4e000} },
+/**/ {{0x1273d1b3, 0x3fe27f26} },
+/**/ {{0x6151dd9f, 0x3c843bf3} },
+/**/ {{0x5ecd3069, 0x3fe6728b} },
+/**/ {{0x539f23ff, 0x3c67417b} },
+/**/ {{0x763c0fe8, 0xbfd48b53} },
+/**/ {{0x6027975c, 0xbc677a1a} },
+/**/ {{0x2ff7dd6a, 0x3fa04c5a} },
+/**/ {{0x496202e8, 0xbc40808e} },
+/**/ {{0xb3fc3f7c, 0x3fb73aac} },
+/**/ {{0x86b114ff, 0x3c4b58cb} },
+/**/ {{0x4bc91249, 0xbfb4700a} },
+/**/ {{0xef2490f8, 0x3f92e582} },
+/**/ {{0x6c875580, 0x3f9a235b} },
+/**/ {{0xe55cd596, 0xbf9edf99} },
+/**/ {{0xe40c5a18, 0x3f85b5f9} } },
+/**/ {{{0x00000000, 0x3fe50000} },
+/**/ {{0x59308e31, 0x3fe2958e} },
+/**/ {{0xb0c6c087, 0xbc709e73} },
+/**/ {{0x2538713c, 0x3fe65e03} },
+/**/ {{0x42c09163, 0xbc601392} },
+/**/ {{0x2f6d4575, 0xbfd48514} },
+/**/ {{0x4568af3f, 0xbc356341} },
+/**/ {{0x9386fd1d, 0x3fa10497} },
+/**/ {{0x230a452f, 0xbc4a756a} },
+/**/ {{0x3fc6c180, 0x3fb6d4c4} },
+/**/ {{0xdb3fe137, 0x3c5ab2b9} },
+/**/ {{0x7ca4cfd0, 0xbfb4532a} },
+/**/ {{0x90eb1d30, 0x3f93991d} },
+/**/ {{0x46163051, 0x3f992de9} },
+/**/ {{0x2de874ff, 0xbf9e7c76} },
+/**/ {{0xfc0c1cb2, 0x3f865806} } },
+/**/ {{{0x00000000, 0x3fe52000} },
+/**/ {{0x1aded073, 0x3fe2abe2} },
+/**/ {{0x01ad022e, 0x3c8c28c0} },
+/**/ {{0x4d432177, 0x3fe64981} },
+/**/ {{0x055e240c, 0x3c83f41b} },
+/**/ {{0x6a2cfd01, 0xbfd47e90} },
+/**/ {{0xf152d080, 0x3c628585} },
+/**/ {{0xfbe3ed9e, 0x3fa1b9a7} },
+/**/ {{0xf259fe04, 0xbc18a085} },
+/**/ {{0xc3c40175, 0x3fb66f6e} },
+/**/ {{0xb0fda762, 0x3c41d80a} },
+/**/ {{0x48af643a, 0xbfb43542} },
+/**/ {{0x05ad7652, 0x3f94460d} },
+/**/ {{0x5f55ab26, 0x3f983b9b} },
+/**/ {{0x4be18b23, 0xbf9e1692} },
+/**/ {{0x32e755a3, 0x3f86eefb} } },
+/**/ {{{0x00000000, 0x3fe54000} },
+/**/ {{0x5e024466, 0x3fe2c221} },
+/**/ {{0xda3a4be1, 0xbc44b810} },
+/**/ {{0x1ad38da0, 0x3fe63506} },
+/**/ {{0x94ec14b0, 0xbc67f12a} },
+/**/ {{0x567a6652, 0xbfd477c9} },
+/**/ {{0xbbb9df88, 0x3c7be71c} },
+/**/ {{0x1535acb9, 0x3fa26b90} },
+/**/ {{0xff041454, 0xbc30ff6c} },
+/**/ {{0x5105d8fa, 0x3fb60ab1} },
+/**/ {{0x3f2d6492, 0x3c535a89} },
+/**/ {{0xa0083319, 0xbfb4165b} },
+/**/ {{0x965eb0a7, 0x3f94ec67} },
+/**/ {{0xf36231e5, 0x3f974c86} },
+/**/ {{0x9c25f4a4, 0xbf9dae1f} },
+/**/ {{0x183e42dc, 0x3f877b18} } },
+/**/ {{{0x00000000, 0x3fe56000} },
+/**/ {{0x2961e48c, 0x3fe2d84c} },
+/**/ {{0x0a36e506, 0xbc7f2542} },
+/**/ {{0xd0a0e5d4, 0x3fe62091} },
+/**/ {{0xcccb008e, 0x3c82a27d} },
+/**/ {{0x228ca1b6, 0xbfd470c0} },
+/**/ {{0x32884415, 0xbc788e9b} },
+/**/ {{0xb365e4d9, 0x3fa31a54} },
+/**/ {{0xda0f99ae, 0x3c3e6e70} },
+/**/ {{0xc741ccb7, 0x3fb5a690} },
+/**/ {{0x6508ffe1, 0xbc383905} },
+/**/ {{0x50f46c17, 0xbfb3f680} },
+/**/ {{0x1b344c30, 0x3f958c44} },
+/**/ {{0xb713db8a, 0x3f9660bf} },
+/**/ {{0x5224992a, 0xbf9d434e} },
+/**/ {{0x46ffb16e, 0x3f87fca0} } },
+/**/ {{{0x00000000, 0x3fe58000} },
+/**/ {{0x8406cbca, 0x3fe2ee62} },
+/**/ {{0x9ff0cf8d, 0x3c8c5d5e} },
+/**/ {{0xb0350d38, 0x3fe60c24} },
+/**/ {{0xf3db4fcb, 0x3c81ffe9} },
+/**/ {{0xfac420bd, 0xbfd46975} },
+/**/ {{0x850528a0, 0x3c7e6994} },
+/**/ {{0xd098b4ee, 0x3fa3c5fa} },
+/**/ {{0xaa6a6874, 0x3c353c41} },
+/**/ {{0xd57c5b53, 0x3fb54311} },
+/**/ {{0x72d146e0, 0x3c50d02e} },
+/**/ {{0x071017e0, 0xbfb3d5ba} },
+/**/ {{0xf11b08a7, 0x3f9625b9} },
+/**/ {{0xe25bbc6f, 0x3f957857} },
+/**/ {{0x7384981f, 0xbf9cd64d} },
+/**/ {{0x3da3b8d5, 0x3f8873d7} } },
+/**/ {{{0x00000000, 0x3fe5a000} },
+/**/ {{0x753b090b, 0x3fe30464} },
+/**/ {{0x61da18f3, 0xbc73e712} },
+/**/ {{0xf9ee77b6, 0x3fe5f7be} },
+/**/ {{0x854f9928, 0x3c8949f7} },
+/**/ {{0x099c98f6, 0xbfd461ec} },
+/**/ {{0x3eafe889, 0x3c5da491} },
+/**/ {{0x8ba9e286, 0x3fa46e87} },
+/**/ {{0x5377a1a9, 0x3c42573a} },
+/**/ {{0xfab82ffb, 0x3fb4e038} },
+/**/ {{0x402ef939, 0xbc414e45} },
+/**/ {{0x4a8ec478, 0xbfb3b412} },
+/**/ {{0xef6dba07, 0x3f96b8e0} },
+/**/ {{0x39c13c6e, 0x3f949360} },
+/**/ {{0xd47bfddb, 0xbf9c674a} },
+/**/ {{0x37ed6935, 0x3f88e101} } },
+/**/ {{{0x00000000, 0x3fe5c000} },
+/**/ {{0x048874be, 0x3fe31a52} },
+/**/ {{0x87a7ac24, 0x3c840cab} },
+/**/ {{0xed021586, 0x3fe5e360} },
+/**/ {{0xb32ab7e4, 0x3c86a444} },
+/**/ {{0x779f86c4, 0xbfd45a23} },
+/**/ {{0x6b782501, 0xbc75b9dc} },
+/**/ {{0x26af940c, 0x3fa51400} },
+/**/ {{0xf9ce64e2, 0x3c4f700e} },
+/**/ {{0x86a8eb42, 0x3fb47e0a} },
+/**/ {{0x36377584, 0xbc5a4df9} },
+/**/ {{0x7f8b6d42, 0xbfb39192} },
+/**/ {{0x5deeeabc, 0x3f9745d1} },
+/**/ {{0x17fa1033, 0x3f93b1e8} },
+/**/ {{0x14cf2061, 0xbf9bf673} },
+/**/ {{0x0a340016, 0x3f894463} } },
+/**/ {{{0x00000000, 0x3fe5e000} },
+/**/ {{0x39b78856, 0x3fe3302b} },
+/**/ {{0xd87ba82b, 0x3c85dd2e} },
+/**/ {{0xc77d4bea, 0x3fe5cf0a} },
+/**/ {{0x0d42ab66, 0xbc8684ab} },
+/**/ {{0x6b573e11, 0xbfd4521d} },
+/**/ {{0xb90c9c27, 0xbc7601b9} },
+/**/ {{0x0582aeaa, 0x3fa5b66a} },
+/**/ {{0x8cc985ad, 0x3c281575} },
+/**/ {{0x9a69373d, 0x3fb41c8a} },
+/**/ {{0x25ea8f67, 0xbc33df07} },
+/**/ {{0xe5673a18, 0xbfb36e43} },
+/**/ {{0xeb05f3bc, 0x3f97cca3} },
+/**/ {{0x7797abe9, 0x3f92d3fd} },
+/**/ {{0x9d71c254, 0xbf9b83f1} },
+/**/ {{0xfe333861, 0x3f899e41} } },
+/**/ {{{0x00000000, 0x3fe60000} },
+/**/ {{0x1cce37bb, 0x3fe345f0} },
+/**/ {{0x37c71102, 0x3c810211} },
+/**/ {{0xc647fa91, 0x3fe5babc} },
+/**/ {{0x8056eaf3, 0x3c84339b} },
+/**/ {{0x094286d0, 0xbfd449db} },
+/**/ {{0x512b1c7b, 0x3c75e178} },
+/**/ {{0xac4cf102, 0x3fa655ca} },
+/**/ {{0x61e8206a, 0xbc27a1e4} },
+/**/ {{0x2933dd9c, 0x3fb3bbbd} },
+/**/ {{0xbd42c006, 0xbc517633} },
+/**/ {{0x9636afc9, 0xbfb34a2f} },
+/**/ {{0xa2400f6f, 0x3f984d71} },
+/**/ {{0xfcc53cab, 0x3f91f9ac} },
+/**/ {{0x9ec31ef1, 0xbf9b0ff0} },
+/**/ {{0xb1615b05, 0x3f89eee3} } },
+/**/ {{{0x00000000, 0x3fe62000} },
+/**/ {{0xb60eccce, 0x3fe35ba0} },
+/**/ {{0x9b9368b9, 0x3c8e3ba1} },
+/**/ {{0x25268d22, 0x3fe5a677} },
+/**/ {{0xaf72cee6, 0x3c7bc76e} },
+/**/ {{0x73c8c31c, 0xbfd4415d} },
+/**/ {{0xe00e5645, 0xbc3e5b3c} },
+/**/ {{0xbe1ce1b6, 0x3fa6f227} },
+/**/ {{0xe699fcac, 0xbc04a922} },
+/**/ {{0xf91f9885, 0x3fb35ba5} },
+/**/ {{0x418827b3, 0xbc43f8be} },
+/**/ {{0x863cebc9, 0xbfb3255e} },
+/**/ {{0xe315ca66, 0x3f98c853} },
+/**/ {{0xff116cac, 0x3f912301} },
+/**/ {{0x0f5e09c2, 0xbf9a9a99} },
+/**/ {{0xf4c8d587, 0x3f8a368d} } },
+/**/ {{{0x00000000, 0x3fe64000} },
+/**/ {{0x0df6c504, 0x3fe3713d} },
+/**/ {{0xe031606d, 0xbc54f789} },
+/**/ {{0x1ebc184f, 0x3fe5923a} },
+/**/ {{0xbe5956dd, 0x3c829fe8} },
+/**/ {{0xcb2e9cc9, 0xbfd438a5} },
+/**/ {{0x7d6ce3eb, 0xbc7c1839} },
+/**/ {{0xfb7fa678, 0x3fa78b86} },
+/**/ {{0xd082025e, 0x3befb53e} },
+/**/ {{0xa3dd5905, 0x3fb2fc48} },
+/**/ {{0x06b78682, 0x3c5fd567} },
+/**/ {{0x8374843c, 0xbfb2ffd9} },
+/**/ {{0x57f51471, 0x3f993d64} },
+/**/ {{0x933f6cc5, 0x3f905006} },
+/**/ {{0xab7658df, 0xbf9a2412} },
+/**/ {{0xae624ab4, 0x3f8a7586} } },
+/**/ {{{0x00000000, 0x3fe66000} },
+/**/ {{0x2d3db11f, 0x3fe386c5} },
+/**/ {{0xcbebe6a0, 0xbc8b78e1} },
+/**/ {{0xec8c8203, 0x3fe57e05} },
+/**/ {{0x5e7f92dc, 0x3c8ea585} },
+/**/ {{0x2d8b381e, 0xbfd42fb5} },
+/**/ {{0x5cff451e, 0xbc63afe6} },
+/**/ {{0x4120d643, 0x3fa821ee} },
+/**/ {{0xcbc4d2dc, 0xbc3e664f} },
+/**/ {{0x9778bfdb, 0x3fb29da8} },
+/**/ {{0x7c2057a5, 0x3c3760dd} },
+/**/ {{0x3525a55a, 0xbfb2d9a9} },
+/**/ {{0xed9015c8, 0x3f99acbc} },
+/**/ {{0x2a35e7d2, 0x3f8f0187} },
+/**/ {{0xf4bcdfc7, 0xbf99ac83} },
+/**/ {{0xbbeb4f11, 0x3f8aac13} } },
+/**/ {{{0x00000000, 0x3fe68000} },
+/**/ {{0x1cd4171a, 0x3fe39c39} },
+/**/ {{0x31d8bf46, 0xbc823043} },
+/**/ {{0xc6feb417, 0x3fe569da} },
+/**/ {{0x0625e450, 0x3c803ce5} },
+/**/ {{0xb6bde980, 0xbfd4268c} },
+/**/ {{0xe8258561, 0xbc6e8f76} },
+/**/ {{0x86705749, 0x3fa8b563} },
+/**/ {{0xe6172281, 0x3c418e14} },
+/**/ {{0x171a8768, 0x3fb23fc9} },
+/**/ {{0x3225d825, 0xbc562184} },
+/**/ {{0x1b8904fd, 0xbfb2b2d6} },
+/**/ {{0xca70ce88, 0x3f9a1677} },
+/**/ {{0x62963581, 0x3f8d6a81} },
+/**/ {{0x32c353bb, 0xbf993412} },
+/**/ {{0xd7354ec0, 0x3f8ada7a} } },
+/**/ {{{0x00000000, 0x3fe6a000} },
+/**/ {{0xe5e2564b, 0x3fe3b198} },
+/**/ {{0x1f0752ac, 0xbc72f922} },
+/**/ {{0xe55ed910, 0x3fe555b8} },
+/**/ {{0x656f2eb2, 0xbc5615bc} },
+/**/ {{0x80646bca, 0xbfd41d2d} },
+/**/ {{0x1ff3506f, 0xbc75d1d6} },
+/**/ {{0xdc4e5727, 0x3fa945ec} },
+/**/ {{0x18968922, 0x3c213c8e} },
+/**/ {{0x3bcc9fa4, 0x3fb1e2ad} },
+/**/ {{0x0a43c591, 0x3c2b899c} },
+/**/ {{0x8f774533, 0xbfb28b68} },
+/**/ {{0x46d16acc, 0x3f9a7aaf} },
+/**/ {{0xde405cc6, 0x3f8bdb08} },
+/**/ {{0x73d9884b, 0xbf98bae1} },
+/**/ {{0x7be7742a, 0x3f8b0101} } },
+/**/ {{{0x00000000, 0x3fe6c000} },
+/**/ {{0x91c78dc5, 0x3fe3c6e4} },
+/**/ {{0x94fd0ba7, 0xbc8e1450} },
+/**/ {{0x7de0a269, 0x3fe541a0} },
+/**/ {{0x163b639c, 0x3c8b9072} },
+/**/ {{0xa1d194fc, 0xbfd41398} },
+/**/ {{0x8629402d, 0xbc7ef191} },
+/**/ {{0x6bbd69eb, 0x3fa9d390} },
+/**/ {{0xd2c4a6a5, 0x3c488aec} },
+/**/ {{0xf53fbee6, 0x3fb18657} },
+/**/ {{0x0104d1dd, 0x3c54e6aa} },
+/**/ {{0xc2245ee6, 0xbfb26368} },
+/**/ {{0xe4b91b16, 0x3f9ad97d} },
+/**/ {{0x74b192c7, 0x3f8a5328} },
+/**/ {{0x8e5d8b31, 0xbf984114} },
+/**/ {{0xceadce82, 0x3f8b1fec} } },
+/**/ {{{0x00000000, 0x3fe6e000} },
+/**/ {{0x2a188504, 0x3fe3dc1c} },
+/**/ {{0x70f4e971, 0x3c82ce63} },
+/**/ {{0xc5a197ed, 0x3fe52d91} },
+/**/ {{0x1baab820, 0xbc804b92} },
+/**/ {{0x300486f8, 0xbfd409cf} },
+/**/ {{0xae804189, 0xbc6d3bb8} },
+/**/ {{0x749adab8, 0x3faa5e54} },
+/**/ {{0xc631cfd3, 0x3c20b0d5} },
+/**/ {{0x0a922c54, 0x3fb12acc} },
+/**/ {{0x7cbc4417, 0x3c521a06} },
+/**/ {{0xbce6ae05, 0xbfb23ade} },
+/**/ {{0x485d279b, 0x3f9b32fe} },
+/**/ {{0xd9b56b96, 0x3f88d2e8} },
+/**/ {{0x227841f4, 0xbf97c6cd} },
+/**/ {{0x85cf6ba0, 0x3f8b3781} } },
+/**/ {{{0x00000000, 0x3fe70000} },
+/**/ {{0xb89e96f4, 0x3fe3f13f} },
+/**/ {{0x492644f0, 0x3c7ecf8b} },
+/**/ {{0xf0ab6f99, 0x3fe5198c} },
+/**/ {{0x5e1ffaba, 0x3c71b875} },
+/**/ {{0x3da059f4, 0xbfd3ffd2} },
+/**/ {{0x77eee53d, 0x3c5bba8e} },
+/**/ {{0x4c5d36dc, 0x3faae63f} },
+/**/ {{0x2a3994d6, 0xbc4e6e4e} },
+/**/ {{0x1b178ada, 0x3fb0d00c} },
+/**/ {{0xb3e710cc, 0x3c4b94c3} },
+/**/ {{0x61093929, 0xbfb211d2} },
+/**/ {{0x30c5dd59, 0x3f9b874b} },
+/**/ {{0xb0b899ed, 0x3f875a50} },
+/**/ {{0x9c404912, 0xbf974c2b} },
+/**/ {{0xd3249a4d, 0x3f8b4803} } },
+/**/ {{{0x00000000, 0x3fe72000} },
+/**/ {{0x47569f49, 0x3fe4064f} },
+/**/ {{0xf91bf2b2, 0xbc8aad88} },
+/**/ {{0x31f66da7, 0x3fe50592} },
+/**/ {{0x134b7507, 0xbc8837f1} },
+/**/ {{0xdae43e4d, 0xbfd3f5a2} },
+/**/ {{0xdc59e382, 0xbc7f29b0} },
+/**/ {{0x5cd91a8c, 0x3fab6b57} },
+/**/ {{0xd6ab0dfc, 0xbc225bf7} },
+/**/ {{0x9f216d7a, 0x3fb0761a} },
+/**/ {{0xe546203e, 0x3c577818} },
+/**/ {{0x67a8cf31, 0xbfb1e84b} },
+/**/ {{0x70b6dd6f, 0x3f9bd67f} },
+/**/ {{0x9ff677e5, 0x3f85e964} },
+/**/ {{0x363cf426, 0xbf96d14f} },
+/**/ {{0x4f6617de, 0x3f8b51b7} } },
+/**/ {{{0x00000000, 0x3fe74000} },
+/**/ {{0xe06fea41, 0x3fe41b4a} },
+/**/ {{0x53277652, 0x3c63d60a} },
+/**/ {{0xbb6bcc2c, 0x3fe4f1a1} },
+/**/ {{0x7c81f558, 0x3c5c8d69} },
+/**/ {{0x15a41364, 0xbfd3eb42} },
+/**/ {{0x617c316a, 0x3c728a9c} },
+/**/ {{0x230c44b8, 0x3fabeda3} },
+/**/ {{0x50d9e9da, 0x3c41fa15} },
+/**/ {{0xe8c87fc3, 0x3fb01cf9} },
+/**/ {{0xa175df34, 0x3c410990} },
+/**/ {{0x619b963c, 0xbfb1be51} },
+/**/ {{0xe7da421c, 0x3f9c20b5} },
+/**/ {{0x637b86b0, 0x3f848027} },
+/**/ {{0xfc436ff1, 0xbf965655} },
+/**/ {{0xe6cd859f, 0x3f8b54de} } },
+/**/ {{{0x00000000, 0x3fe76000} },
+/**/ {{0x8e4b26d6, 0x3fe43032} },
+/**/ {{0x1070b99f, 0xbc813159} },
+/**/ {{0xbde829f5, 0x3fe4ddbb} },
+/**/ {{0xb6d17615, 0xbc735ff2} },
+/**/ {{0xf941711a, 0xbfd3e0b0} },
+/**/ {{0xe9027227, 0x3c7d3454} },
+/**/ {{0x2deef5c2, 0x3fac6d29} },
+/**/ {{0x0ba13bb6, 0x3c476533} },
+/**/ {{0x496c1e5e, 0x3faf8958} },
+/**/ {{0xe1abdf2f, 0x3c49ebf2} },
+/**/ {{0xb762a82c, 0xbfb193eb} },
+/**/ {{0x7c2df93f, 0x3f9c6609} },
+/**/ {{0xdff7724a, 0x3f831e99} },
+/**/ {{0xcea82a5a, 0xbf95db5c} },
+/**/ {{0xc6ff27bb, 0x3f8b51bc} } },
+/**/ {{{0x00000000, 0x3fe78000} },
+/**/ {{0x5b795b56, 0x3fe44506} },
+/**/ {{0x163f79c8, 0xbc7f76d0} },
+/**/ {{0x693e0015, 0x3fe4c9e0} },
+/**/ {{0x60fff59b, 0xbc7b0fcb} },
+/**/ {{0x8ea521a8, 0xbfd3d5f0} },
+/**/ {{0xb5bcc402, 0x3c561573} },
+/**/ {{0x1d4b9b62, 0x3face9f0} },
+/**/ {{0xf2c93cfb, 0x3c481226} },
+/**/ {{0xb5db8847, 0x3faeda66} },
+/**/ {{0x3a386670, 0xbc44ec99} },
+/**/ {{0xa92559e3, 0xbfb16921} },
+/**/ {{0x13b2a17d, 0x3f9ca695} },
+/**/ {{0x355982b3, 0x3f81c4bb} },
+/**/ {{0x65bec936, 0xbf95607f} },
+/**/ {{0x4e349f67, 0x3f8b4892} } },
+/**/ {{{0x00000000, 0x3fe7a000} },
+/**/ {{0x52badc7f, 0x3fe459c6} },
+/**/ {{0x8e8e135c, 0x3c819969} },
+/**/ {{0xec381dcb, 0x3fe4b60f} },
+/**/ {{0x4724e4f2, 0xbc6b9874} },
+/**/ {{0xdc390960, 0xbfd3cb01} },
+/**/ {{0x7ba1320c, 0xbc7243b1} },
+/**/ {{0xa09cca72, 0x3fad63fe} },
+/**/ {{0xe5ab8d04, 0x3c48308c} },
+/**/ {{0xdf2eb652, 0x3fae2d22} },
+/**/ {{0x4eb29ad3, 0xbc4988a3} },
+/**/ {{0x4eb5cb96, 0xbfb13dfa} },
+/**/ {{0x8e5b2657, 0x3f9ce273} },
+/**/ {{0xd132be74, 0x3f807288} },
+/**/ {{0x55a31e9e, 0xbf94e5d8} },
+/**/ {{0xfba00cb2, 0x3f8b399f} } },
+/**/ {{{0x00000000, 0x3fe7c000} },
+/**/ {{0x7efe4716, 0x3fe46e72} },
+/**/ {{0x1b844cc9, 0xbc639b9b} },
+/**/ {{0x749c2a47, 0x3fe4a24a} },
+/**/ {{0x82d8a2e5, 0xbc8f9d05} },
+/**/ {{0xe5e27a03, 0xbfd3bfe5} },
+/**/ {{0xb30f6d58, 0xbc5047da} },
+/**/ {{0x75f185ec, 0x3faddb5b} },
+/**/ {{0x23d5084a, 0x3c43b680} },
+/**/ {{0x479061d2, 0x3fad8190} },
+/**/ {{0x602d3547, 0xbbf4565c} },
+/**/ {{0x979e619e, 0xbfb1127c} },
+/**/ {{0xc03c4720, 0x3f9d19bf} },
+/**/ {{0x01b2b45f, 0x3f7e4ffd} },
+/**/ {{0x1245b0bb, 0xbf946b81} },
+/**/ {{0x60fec8ec, 0x3f8b2525} } },
+/**/ {{{0x00000000, 0x3fe7e000} },
+/**/ {{0xeb5f7bfe, 0x3fe4830a} },
+/**/ {{0x66764a73, 0xbc5a2656} },
+/**/ {{0x2f2d2be4, 0x3fe48e90} },
+/**/ {{0x969bba3b, 0x3c810a8e} },
+/**/ {{0xacfcef4d, 0xbfd3b49d} },
+/**/ {{0xb7a61548, 0xbc6a4f98} },
+/**/ {{0x68d7d101, 0x3fae500d} },
+/**/ {{0x04860c21, 0xbc305c3e} },
+/**/ {{0x2c98ea9c, 0x3facd7b2} },
+/**/ {{0xd46adca0, 0x3c48692b} },
+/**/ {{0x4b37c6a5, 0xbfb0e6af} },
+/**/ {{0x6bfb2662, 0x3f9d4c94} },
+/**/ {{0x0692cc75, 0x3f7bca2d} },
+/**/ {{0xf3b69312, 0xbf93f191} },
+/**/ {{0x1552b8ee, 0x3f8b0b61} } },
+/**/ {{{0x00000000, 0x3fe80000} },
+/**/ {{0xa3269ee1, 0x3fe4978f} },
+/**/ {{0x87f2a458, 0x3c72419a} },
+/**/ {{0x47ae147b, 0x3fe47ae1} },
+/**/ {{0xeb851eb8, 0xbc6eb851} },
+/**/ {{0x30553261, 0xbfd3a92a} },
+/**/ {{0x94467382, 0xbc7f06f6} },
+/**/ {{0x514d88d8, 0x3faec21b} },
+/**/ {{0xf45873a6, 0x3c3cd061} },
+/**/ {{0x88dfb80c, 0x3fac2f8b} },
+/**/ {{0x53add20b, 0xbc14fcbc} },
+/**/ {{0x08c71945, 0xbfb0ba99} },
+/**/ {{0x3d79f13f, 0x3f9d7b0c} },
+/**/ {{0x357dfc67, 0x3f795393} },
+/**/ {{0x3aa97829, 0xbf937822} },
+/**/ {{0xa8b90db0, 0x3f8aec90} } },
+/**/ {{{0x00000000, 0x3fe82000} },
+/**/ {{0xb1c71762, 0x3fe4ac00} },
+/**/ {{0x2382b900, 0x3c8b20e7} },
+/**/ {{0xe8e45252, 0x3fe4673d} },
+/**/ {{0x67458f9c, 0x3c57d208} },
+/**/ {{0x6c24e1b3, 0xbfd39d8c} },
+/**/ {{0x973c6d15, 0xbc7830c5} },
+/**/ {{0x12b78147, 0x3faf318c} },
+/**/ {{0xd318184c, 0xbc4fa440} },
+/**/ {{0x158b44e7, 0x3fab891f} },
+/**/ {{0x45d7f1f3, 0x3c4d5f9f} },
+/**/ {{0x47a3e8ba, 0xbfb08e40} },
+/**/ {{0xc4c1a21a, 0x3f9da541} },
+/**/ {{0x3c0d1d71, 0x3f76ec1e} },
+/**/ {{0x152e0bfc, 0xbf92ff48} },
+/**/ {{0x9955298f, 0x3f8ac8f0} } },
+/**/ {{{0x00000000, 0x3fe84000} },
+/**/ {{0x22de94e5, 0x3fe4c05e} },
+/**/ {{0xf09f2edf, 0xbc8c0ac1} },
+/**/ {{0x3c9a6560, 0x3fe453a6} },
+/**/ {{0x828bba02, 0x3c77a95f} },
+/**/ {{0x5a0e5b1c, 0xbfd391c5} },
+/**/ {{0xcd3f76d2, 0x3c7d553d} },
+/**/ {{0x9adede86, 0x3faf9e66} },
+/**/ {{0xd6d2bac0, 0xbc225e54} },
+/**/ {{0x4bdf89d7, 0x3faae46f} },
+/**/ {{0x2b25b8d9, 0x3c39c98c} },
+/**/ {{0x5765a5c1, 0xbfb061ab} },
+/**/ {{0x7127d649, 0x3f9dcb4f} },
+/**/ {{0x13002646, 0x3f7493ba} },
+/**/ {{0xa397d1a6, 0xbf928718} },
+/**/ {{0x494648b5, 0x3f8aa0bc} } },
+/**/ {{{0x00000000, 0x3fe86000} },
+/**/ {{0x023414e8, 0x3fe4d4a8} },
+/**/ {{0x1daa88b0, 0x3c6e3a89} },
+/**/ {{0x6ba2786e, 0x3fe4401a} },
+/**/ {{0xe3b5f317, 0xbc4b8213} },
+/**/ {{0xf11905c0, 0xbfd385d5} },
+/**/ {{0xa2f42dd1, 0xbc72a1e9} },
+/**/ {{0xf07a526f, 0x3fb00458} },
+/**/ {{0xac5fd817, 0xbc14f965} },
+/**/ {{0x66ca7da2, 0x3faa417e} },
+/**/ {{0xa050b433, 0x3c4b1e1a} },
+/**/ {{0x60182e4f, 0xbfb034e0} },
+/**/ {{0x8cafa41b, 0x3f9ded4f} },
+/**/ {{0x1fa4f037, 0x3f724a50} },
+/**/ {{0xfd90e915, 0xbf920fa7} },
+/**/ {{0xf59e7acf, 0x3f8a742d} } },
+/**/ {{{0x00000000, 0x3fe88000} },
+/**/ {{0x5bb6ec04, 0x3fe4e8de} },
+/**/ {{0xbeb3796c, 0x3c84a33d} },
+/**/ {{0x9dd8fdc1, 0x3fe42c9a} },
+/**/ {{0xaf80050b, 0x3c5192da} },
+/**/ {{0x25adf97f, 0xbfd379bf} },
+/**/ {{0x20cd3651, 0xbc774019} },
+/**/ {{0x724dbb01, 0x3fb0383a} },
+/**/ {{0xeb93e538, 0x3c5c4e67} },
+/**/ {{0x646e65df, 0x3fa9a04e} },
+/**/ {{0x894a6b77, 0x3c21a7cb} },
+/**/ {{0x62771c79, 0xbfb007e5} },
+/**/ {{0x37a45544, 0x3f9e0b5c} },
+/**/ {{0x54993092, 0x3f700fc7} },
+/**/ {{0x37534c25, 0xbf919909} },
+/**/ {{0xae51732a, 0x3f8a437e} } },
+/**/ {{{0x00000000, 0x3fe8a000} },
+/**/ {{0x3b7dd17e, 0x3fe4fd01} },
+/**/ {{0x3e7c24b5, 0x3c7d513f} },
+/**/ {{0xfa274ef1, 0x3fe41926} },
+/**/ {{0x4d72ecb3, 0x3c8ad830} },
+/**/ {{0xe995018a, 0xbfd36d81} },
+/**/ {{0x6fd6094d, 0x3c7e7ec5} },
+/**/ {{0x567bb975, 0x3fb06adb} },
+/**/ {{0xf0d7364f, 0x3c5212c1} },
+/**/ {{0x07a9b624, 0x3fa900e1} },
+/**/ {{0xc16bcc85, 0xbc4e5b5b} },
+/**/ {{0x705f052b, 0xbfafb580} },
+/**/ {{0x646ce12e, 0x3f9e258f} },
+/**/ {{0xa3c63841, 0x3f6bc808} },
+/**/ {{0x67043d41, 0xbf91234e} },
+/**/ {{0x4f11b221, 0x3f8a0ee6} } },
+/**/ {{{0x00000000, 0x3fe8c000} },
+/**/ {{0xadc5ed81, 0x3fe51110} },
+/**/ {{0x6832a63e, 0x3c723dcd} },
+/**/ {{0xa6864f90, 0x3fe405bf} },
+/**/ {{0x662cd5df, 0xbc7419c5} },
+/**/ {{0x2bf1f7e4, 0xbfd3611f} },
+/**/ {{0x65483b78, 0xbc6e94dd} },
+/**/ {{0x23e21be9, 0x3fb09c3f} },
+/**/ {{0xcaca858d, 0x3c22db63} },
+/**/ {{0xd99c3f1d, 0x3fa86337} },
+/**/ {{0xdc0a6dfc, 0x3c034382} },
+/**/ {{0x284f8093, 0xbfaf5aed} },
+/**/ {{0xd396fb43, 0x3f9e3c02} },
+/**/ {{0x08b96150, 0x3f678dd3} },
+/**/ {{0xaa2dcc3a, 0xbf90ae88} },
+/**/ {{0x79128ee7, 0x3f89d69b} } },
+/**/ {{{0x00000000, 0x3fe8e000} },
+/**/ {{0xbef1e9fb, 0x3fe5250c} },
+/**/ {{0xa3228870, 0xbc5539b7} },
+/**/ {{0xc8011245, 0x3fe3f264} },
+/**/ {{0x44cc720b, 0xbc6641f1} },
+/**/ {{0xd942778a, 0xbfd35497} },
+/**/ {{0x9bd7dbd6, 0x3c750a5a} },
+/**/ {{0x6438739e, 0x3fb0cc69} },
+/**/ {{0x435f798d, 0x3bf5d933} },
+/**/ {{0x2b29722f, 0x3fa7c754} },
+/**/ {{0x5b3af27b, 0xbbe736fe} },
+/**/ {{0x059a3c24, 0xbfaf001c} },
+/**/ {{0x101882b0, 0x3f9e4ed0} },
+/**/ {{0x88dc4269, 0x3f6370ae} },
+/**/ {{0x2b5280b6, 0xbf903ac8} },
+/**/ {{0x8da5b2ad, 0x3f899ad3} } },
+/**/ {{{0x00000000, 0x3fe90000} },
+/**/ {{0x7b89061f, 0x3fe538f5} },
+/**/ {{0xabda520c, 0xbc81bb74} },
+/**/ {{0x82b78014, 0x3fe3df16} },
+/**/ {{0xa43ff610, 0xbc7074be} },
+/**/ {{0xdb5be2e4, 0xbfd347ec} },
+/**/ {{0x8a0e9303, 0x3c7848c8} },
+/**/ {{0xa3a11be4, 0x3fb0fb5d} },
+/**/ {{0x09dd0d69, 0x3c3d68f2} },
+/**/ {{0x16778170, 0x3fa72d37} },
+/**/ {{0x2200d1d4, 0xbc4ea85d} },
+/**/ {{0xd4cdbd49, 0xbfaea517} },
+/**/ {{0x6bc61b6f, 0x3f9e5e10} },
+/**/ {{0xd0517524, 0x3f5ee0af} },
+/**/ {{0x4f2ec799, 0xbf8f9038} },
+/**/ {{0xa9aaa5bb, 0x3f895bc2} } },
+/**/ {{{0x00000000, 0x3fe92000} },
+/**/ {{0xf0362c8f, 0x3fe54cca} },
+/**/ {{0x7f8f43c1, 0x3c88a324} },
+/**/ {{0xf9e1016e, 0x3fe3cbd4} },
+/**/ {{0x431b67e7, 0xbc88dea6} },
+/**/ {{0x1969bc63, 0xbfd33b1f} },
+/**/ {{0x5f3d8fd8, 0x3c6ef16e} },
+/**/ {{0x703d3bf6, 0x3fb1291f} },
+/**/ {{0xb04e0672, 0xbc566e82} },
+/**/ {{0x806b26f2, 0x3fa694e1} },
+/**/ {{0xafcee740, 0x3c302819} },
+/**/ {{0x16dcee96, 0xbfae49eb} },
+/**/ {{0xfbfdb35f, 0x3f9e69dc} },
+/**/ {{0x70c48510, 0x3f571910} },
+/**/ {{0xe90198c8, 0xbf8ead25} },
+/**/ {{0xa1c723cb, 0x3f89199b} } },
+/**/ {{{0x00000000, 0x3fe94000} },
+/**/ {{0x29c70c34, 0x3fe5608d} },
+/**/ {{0xf0de8088, 0x3c89939c} },
+/**/ {{0x4fcf28c3, 0x3fe3b8a0} },
+/**/ {{0xcb80013c, 0xbc469c2b} },
+/**/ {{0x77ec4ef9, 0xbfd32e2f} },
+/**/ {{0xc61f7341, 0x3c7f9d06} },
+/**/ {{0x59c3bcdf, 0x3fb155b2} },
+/**/ {{0x3583c01b, 0xbc2d692e} },
+/**/ {{0x1a1fe15d, 0x3fa5fe54} },
+/**/ {{0x5d9bad81, 0x3c430dc5} },
+/**/ {{0x01d944a8, 0xbfadeea0} },
+/**/ {{0x9683b244, 0x3f9e724e} },
+/**/ {{0x491379ef, 0x3f4f13d4} },
+/**/ {{0x0b7cf74b, 0xbf8dcc74} },
+/**/ {{0xff5f0625, 0x3f88d48f} } },
+/**/ {{{0x00000000, 0x3fe96000} },
+/**/ {{0x352b33ba, 0x3fe5743c} },
+/**/ {{0x34c87ea6, 0xbc8ea00d} },
+/**/ {{0xa5f05e48, 0x3fe3a578} },
+/**/ {{0x00e4639b, 0xbc8ba1ec} },
+/**/ {{0xd8b7a43f, 0xbfd3211e} },
+/**/ {{0x676e23a8, 0xbc6d4b54} },
+/**/ {{0xf11b2c2d, 0x3fb18119} },
+/**/ {{0x3a3bf5fa, 0x3c34855b} },
+/**/ {{0x625c76bf, 0x3fa5698f} },
+/**/ {{0xbedb0264, 0xbc2f758a} },
+/**/ {{0x81b60103, 0xbfad9340} },
+/**/ {{0xce91900f, 0x3f9e777d} },
+/**/ {{0x34fddb2f, 0x3f406543} },
+/**/ {{0xe6077f81, 0xbf8cee3b} },
+/**/ {{0xfe42afde, 0x3f888ccf} } },
+/**/ {{{0x00000000, 0x3fe98000} },
+/**/ {{0x1f732fbb, 0x3fe587d8} },
+/**/ {{0xd8c5a950, 0xbc75e5c9} },
+/**/ {{0x1cd28c98, 0x3fe3925e} },
+/**/ {{0x1ffec6da, 0x3c8c8443} },
+/**/ {{0x1af2c622, 0xbfd313ee} },
+/**/ {{0xbc3f7ac8, 0x3c0a0e9b} },
+/**/ {{0xc7f683c3, 0x3fb1ab59} },
+/**/ {{0x12c04500, 0x3c5eaf17} },
+/**/ {{0xa7039179, 0x3fa4d693} },
+/**/ {{0xa4ce58a2, 0xbc4c8d74} },
+/**/ {{0x391400b3, 0xbfad37d6} },
+/**/ {{0xf2148a36, 0x3f9e7982} },
+/**/ {{0xb6df63ca, 0x3f112956} },
+/**/ {{0xfbd0f7ee, 0xbf8c1294} },
+/**/ {{0x8b0b0a0e, 0x3f88428a} } },
+/**/ {{{0x00000000, 0x3fe9a000} },
+/**/ {{0xf5cfab9e, 0x3fe59b60} },
+/**/ {{0x41026bc5, 0xbc81b04c} },
+/**/ {{0xd425cdfc, 0x3fe37f50} },
+/**/ {{0x518aef64, 0x3c865633} },
+/**/ {{0x1b1749db, 0xbfd3069e} },
+/**/ {{0xa119d9bc, 0xbc311c20} },
+/**/ {{0x7074cee3, 0x3fb1d475} },
+/**/ {{0x4ff61e2c, 0xbc5102e0} },
+/**/ {{0x06804def, 0x3fa44561} },
+/**/ {{0xc3865804, 0x3c4e829f} },
+/**/ {{0x82158836, 0xbfacdc6a} },
+/**/ {{0x071b2eec, 0x3f9e7876} },
+/**/ {{0xf17c4beb, 0xbf375b85} },
+/**/ {{0x2fa03971, 0xbf8b3995} },
+/**/ {{0x421a433b, 0x3f87f5ed} } },
+/**/ {{{0x00000000, 0x3fe9c000} },
+/**/ {{0xc5909517, 0x3fe5aed6} },
+/**/ {{0x714a9436, 0x3c87312f} },
+/**/ {{0xeabf19f5, 0x3fe36c50} },
+/**/ {{0x52485cca, 0x3c70d1dc} },
+/**/ {{0xb2f12226, 0xbfd2f92f} },
+/**/ {{0x3e5d3d61, 0x3c5400ba} },
+/**/ {{0x7cc3a41b, 0x3fb1fc70} },
+/**/ {{0x8819ff5b, 0x3c4b58e7} },
+/**/ {{0x712e9269, 0x3fa3b5f7} },
+/**/ {{0x7879d8ab, 0xbc4e436a} },
+/**/ {{0x6f398221, 0xbfac8106} },
+/**/ {{0xc97073c7, 0x3f9e746e} },
+/**/ {{0xecfc2d6a, 0xbf4914de} },
+/**/ {{0xcfa74bd5, 0xbf8a6350} },
+/**/ {{0x6f38ad9e, 0x3f87a724} } },
+/**/ {{{0x00000000, 0x3fe9e000} },
+/**/ {{0x9c244261, 0x3fe5c239} },
+/**/ {{0xe9e56b35, 0xbc831bd4} },
+/**/ {{0x7e9af2dc, 0x3fe3595e} },
+/**/ {{0x9dc90e6a, 0x3c81ef2d} },
+/**/ {{0xb99eb689, 0xbfd2eba3} },
+/**/ {{0x6a2f2701, 0xbc7b12ef} },
+/**/ {{0x7ec46b9b, 0x3fb2234e} },
+/**/ {{0x8d415d66, 0x3c59f30c} },
+/**/ {{0xaabf0d26, 0x3fa32856} },
+/**/ {{0x3f33d7ea, 0xbc122571} },
+/**/ {{0xcc3da9ce, 0xbfac25b2} },
+/**/ {{0xa8630cad, 0x3f9e6d84} },
+/**/ {{0xbeba707a, 0xbf5308c5} },
+/**/ {{0xa1585fd1, 0xbf898fda} },
+/**/ {{0x0dc54356, 0x3f87565b} } },
+/**/ {{{0x00000000, 0x3fea0000} },
+/**/ {{0x87169b18, 0x3fe5d589} },
+/**/ {{0x4bc5e7ca, 0x3c60028e} },
+/**/ {{0xace01346, 0x3fe34679} },
+/**/ {{0x04d19e6b, 0x3c8e6b38} },
+/**/ {{0x03913da2, 0xbfd2ddfb} },
+/**/ {{0x9a19adbd, 0xbc763ec8} },
+/**/ {{0x07b46905, 0x3fb24913} },
+/**/ {{0xd6f0307f, 0xbc4e7be8} },
+/**/ {{0x4b96b773, 0x3fa29c7e} },
+/**/ {{0x9182d783, 0xbc24c2cd} },
+/**/ {{0x1f071f44, 0xbfabca78} },
+/**/ {{0xc4b7b7c4, 0x3f9e63ce} },
+/**/ {{0x125f35b0, 0xbf59529a} },
+/**/ {{0xed369b2b, 0xbf88bf43} },
+/**/ {{0xc97185cd, 0x3f8703ba} } },
+/**/ {{{0x00000000, 0x3fea2000} },
+/**/ {{0x941043d0, 0x3fe5e8c6} },
+/**/ {{0xbe451e70, 0xbc70bf75} },
+/**/ {{0x91e21aec, 0x3fe333a2} },
+/**/ {{0x7acfc84f, 0x3c7ae035} },
+/**/ {{0x628d5861, 0xbfd2d036} },
+/**/ {{0xe463d006, 0x3c67c5fb} },
+/**/ {{0xa7d77fb2, 0x3fb26dc1} },
+/**/ {{0xc47ba861, 0xbc5432bd} },
+/**/ {{0xc229bece, 0x3fa2126d} },
+/**/ {{0x1da8ed9e, 0xbc4be1bf} },
+/**/ {{0xa890e568, 0xbfab6f5e} },
+/**/ {{0xeec5339a, 0x3f9e5763} },
+/**/ {{0x5274aa52, 0xbf5f68a6} },
+/**/ {{0x8a9df558, 0xbf87f19c} },
+/**/ {{0xff809dc5, 0x3f86af6b} } },
+/**/ {{{0x00000000, 0x3fea4000} },
+/**/ {{0xd0d5cc4a, 0x3fe5fbf0} },
+/**/ {{0x000b7158, 0xbc5b4cfd} },
+/**/ {{0x49243ad8, 0x3fe320d9} },
+/**/ {{0x433f7be5, 0xbc8ce5e0} },
+/**/ {{0xa5abec2f, 0xbfd2c256} },
+/**/ {{0x04494dc1, 0xbc68785b} },
+/**/ {{0xee25a81c, 0x3fb2915d} },
+/**/ {{0x68b37e8b, 0x3c3e7045} },
+/**/ {{0x5451b7d2, 0x3fa18a24} },
+/**/ {{0x79d21dd5, 0xbc3b2d29} },
+/**/ {{0x65dfcf66, 0xbfab146e} },
+/**/ {{0xa4b895b9, 0x3f9e485a} },
+/**/ {{0x14770b65, 0xbf62a5d4} },
+/**/ {{0xeb7dab0f, 0xbf8726f2} },
+/**/ {{0xc081d40d, 0x3f865995} } },
+/**/ {{{0x00000000, 0x3fea6000} },
+/**/ {{0x4b46e05f, 0x3fe60f08} },
+/**/ {{0x99945193, 0xbc8dbb86} },
+/**/ {{0xed5be099, 0x3fe30e1d} },
+/**/ {{0x373fae45, 0x3c6c6e78} },
+/**/ {{0x995b3a02, 0xbfd2b45c} },
+/**/ {{0xe7cea2ad, 0x3c7cb97b} },
+/**/ {{0x67fb0cde, 0x3fb2b3eb} },
+/**/ {{0x4920d50b, 0xbc402927} },
+/**/ {{0x209f00e4, 0x3fa103a1} },
+/**/ {{0xecac275a, 0xbc36fb57} },
+/**/ {{0x10fb6629, 0xbfaab9af} },
+/**/ {{0x1100b94a, 0x3f9e36c9} },
+/**/ {{0x58620e6c, 0xbf657e30} },
+/**/ {{0x2801158e, 0xbf865f54} },
+/**/ {{0xd27eaf07, 0x3f86025d} } },
+/**/ {{{0x00000000, 0x3fea8000} },
+/**/ {{0x115d7b8e, 0x3fe6220d} },
+/**/ {{0x350ee8c1, 0xbc62b785} },
+/**/ {{0x98736048, 0x3fe2fb70} },
+/**/ {{0x4df7c4fa, 0x3c87a751} },
+/**/ {{0x07603054, 0xbfd2a649} },
+/**/ {{0xf564247c, 0x3c7c41eb} },
+/**/ {{0xa0cac592, 0x3fb2d56d} },
+/**/ {{0x4e757ddf, 0x3c333138} },
+/**/ {{0x1fa53ce5, 0x3fa07ee3} },
+/**/ {{0x28113a76, 0xbc41bd0c} },
+/**/ {{0x21eb5271, 0xbfaa5f28} },
+/**/ {{0x08df7f4f, 0x3f9e22c5} },
+/**/ {{0x107b528f, 0xbf683dca} },
+/**/ {{0x0a22f693, 0xbf859acc} },
+/**/ {{0xb39536ba, 0x3f85a9e8} } },
+/**/ {{{0x00000000, 0x3feaa000} },
+/**/ {{0x312d1f3b, 0x3fe634ff} },
+/**/ {{0x15f2b598, 0x3c89d2f3} },
+/**/ {{0x638c9d15, 0x3fe2e8d1} },
+/**/ {{0xfe1a437d, 0x3c831ae5} },
+/**/ {{0xb6d7f622, 0xbfd2981c} },
+/**/ {{0x86e9fe4d, 0xbc53da87} },
+/**/ {{0x21d425b2, 0x3fb2f5e8} },
+/**/ {{0xae2616cb, 0xbc186482} },
+/**/ {{0x4a85a0e4, 0x3f9ff7d2} },
+/**/ {{0xe2d9205b, 0xbc294288} },
+/**/ {{0xcfb8dc09, 0xbfaa04e0} },
+/**/ {{0x0b1f9c73, 0x3f9e0c64} },
+/**/ {{0xbd3845d8, 0xbf6ae504} },
+/**/ {{0x19278cae, 0xbf84d965} },
+/**/ {{0x9cf7183b, 0x3f855059} } },
+/**/ {{{0x00000000, 0x3feac000} },
+/**/ {{0xb8e20b90, 0x3fe647de} },
+/**/ {{0x023a51cf, 0xbc5eca04} },
+/**/ {{0x6703b033, 0x3fe2d640} },
+/**/ {{0x38039b02, 0x3c870ae6} },
+/**/ {{0x6c39acf5, 0xbfd289d8} },
+/**/ {{0x0238a7ee, 0xbc71f038} },
+/**/ {{0x71da955f, 0x3fb3155e} },
+/**/ {{0xd41f84df, 0xbc5faa02} },
+/**/ {{0xc3c69caa, 0x3f9ef563} },
+/**/ {{0x75403dbd, 0x3c331d29} },
+/**/ {{0x1174124f, 0xbfa9aae0} },
+/**/ {{0x3eedb30b, 0x3f9df3bb} },
+/**/ {{0x1c632765, 0xbf6d7445} },
+/**/ {{0xa4fa03e7, 0xbf841b28} },
+/**/ {{0x8646990d, 0x3f84f5d2} } },
+/**/ {{{0x00000000, 0x3feae000} },
+/**/ {{0xb6c07b03, 0x3fe65aab} },
+/**/ {{0x3af32729, 0xbc67939b} },
+/**/ {{0xba718de8, 0x3fe2c3bd} },
+/**/ {{0xc4990a2b, 0xbc82d2fc} },
+/**/ {{0xe9586818, 0xbfd27b7c} },
+/**/ {{0x880839ca, 0x3c780d5e} },
+/**/ {{0x14dfe9e3, 0x3fb333d4} },
+/**/ {{0xbce74cae, 0x3c536469} },
+/**/ {{0xc77983b8, 0x3f9df677} },
+/**/ {{0xb42f53aa, 0x3c373272} },
+/**/ {{0x9f3c360e, 0xbfa9512c} },
+/**/ {{0x72d37b24, 0x3f9dd8df} },
+/**/ {{0x02e417f5, 0xbf6febf1} },
+/**/ {{0xd16a1579, 0xbf83601e} },
+/**/ {{0x294a83e4, 0x3f849a74} } },
+/**/ {{{0x00000000, 0x3feb0000} },
+/**/ {{0x3923e087, 0x3fe66d66} },
+/**/ {{0xebe8bbba, 0xbc76ea6f} },
+/**/ {{0x74aea886, 0x3fe2b149} },
+/**/ {{0xa9d6d16a, 0x3c868ffd} },
+/**/ {{0xed65571e, 0xbfd26d0a} },
+/**/ {{0x476fb5f2, 0x3c6cf972} },
+/**/ {{0x8be1339f, 0x3fb3514c} },
+/**/ {{0x3f722216, 0x3c5c8c0f} },
+/**/ {{0x300f8f9b, 0x3f9cfb0b} },
+/**/ {{0x38d1c932, 0xbc0edd81} },
+/**/ {{0xf34b004f, 0xbfa8f7cc} },
+/**/ {{0x1bd3bde0, 0x3f9dbbe5} },
+/**/ {{0x9bf7dceb, 0xbf712637} },
+/**/ {{0xa146e5b2, 0xbf82a84e} },
+/**/ {{0x05f2718e, 0x3f843e5e} } },
+/**/ {{{0x00000000, 0x3feb2000} },
+/**/ {{0x4e7e2858, 0x3fe6800e} },
+/**/ {{0x1b3e90f0, 0xbc58ea6a} },
+/**/ {{0xabd5912c, 0x3fe29ee3} },
+/**/ {{0xb17c28e3, 0xbc61b3cd} },
+/**/ {{0x34f221eb, 0xbfd25e83} },
+/**/ {{0xfa300585, 0xbc74c483} },
+/**/ {{0x5495f6e3, 0x3fb36dcb} },
+/**/ {{0x311973fe, 0x3c59b55b} },
+/**/ {{0x9864d139, 0x3f9c031a} },
+/**/ {{0xbd00e171, 0x3c28fdf3} },
+/**/ {{0x4b026585, 0xbfa89ec7} },
+/**/ {{0x54a5ed3d, 0x3f9d9ce0} },
+/**/ {{0xa8cb6dfc, 0xbf724b13} },
+/**/ {{0x015469a9, 0xbf81f3be} },
+/**/ {{0x66a50a89, 0x3f83e1ae} } },
+/**/ {{{0x00000000, 0x3feb4000} },
+/**/ {{0x0556fb6a, 0x3fe692a4} },
+/**/ {{0x5a8ea2cc, 0x3c8d94b9} },
+/**/ {{0x75459603, 0x3fe28c8c} },
+/**/ {{0x2945fc08, 0x3c8b1c3b} },
+/**/ {{0x79f37468, 0xbfd24fe6} },
+/**/ {{0x0ec1ef94, 0xbc4e3751} },
+/**/ {{0xe931c53b, 0x3fb38953} },
+/**/ {{0x16d80688, 0xbc3b108d} },
+/**/ {{0x5e1b50b5, 0x3f9b0ea2} },
+/**/ {{0x63fd1067, 0x3c0074c0} },
+/**/ {{0xa7fc7800, 0xbfa84621} },
+/**/ {{0xdd10256e, 0x3f9d7be4} },
+/**/ {{0xc9592c5e, 0xbf7364c0} },
+/**/ {{0xd318d707, 0xbf814271} },
+/**/ {{0x64d217b8, 0x3f838482} } },
+/**/ {{{0x00000000, 0x3feb6000} },
+/**/ {{0x6c4b0576, 0x3fe6a527} },
+/**/ {{0x9c46a69e, 0xbc8f6b65} },
+/**/ {{0xe5a55de9, 0x3fe27a43} },
+/**/ {{0xedc25d49, 0x3c66846e} },
+/**/ {{0x73c3b821, 0xbfd24135} },
+/**/ {{0x56ab5808, 0xbc79202a} },
+/**/ {{0xc0282c84, 0x3fb3a3e9} },
+/**/ {{0x03d25dab, 0x3c4057ca} },
+/**/ {{0xa3eb854d, 0x3f9a1d9e} },
+/**/ {{0xf03e2fb1, 0xbc3775ed} },
+/**/ {{0xd11d1043, 0xbfa7ede1} },
+/**/ {{0x195e6961, 0x3f9d5906} },
+/**/ {{0x65130256, 0xbf747373} },
+/**/ {{0xf77fd664, 0xbf80946d} },
+/**/ {{0xedc272c2, 0x3f8326f5} } },
+/**/ {{{0x00000000, 0x3feb8000} },
+/**/ {{0x920b3d99, 0x3fe6b798} },
+/**/ {{0x6188c50e, 0xbc8a8038} },
+/**/ {{0x10e5813e, 0x3fe2680a} },
+/**/ {{0x2242a6bc, 0xbc8f5497} },
+/**/ {{0xd725fa1c, 0xbfd23270} },
+/**/ {{0x5c781b14, 0x3c757282} },
+/**/ {{0x4bf2f124, 0x3fb3bd90} },
+/**/ {{0x6a14ed74, 0x3c31ae9c} },
+/**/ {{0x53ea1533, 0x3f99300b} },
+/**/ {{0x68f98d7e, 0x3c2a8d88} },
+/**/ {{0x53a4e537, 0xbfa7960d} },
+/**/ {{0x11f5f086, 0x3f9d3457} },
+/**/ {{0x19baa1da, 0xbf757760} },
+/**/ {{0xb2a2ca7e, 0xbf7fd36a} },
+/**/ {{0xc7a02081, 0x3f82c923} } },
+/**/ {{{0x00000000, 0x3feba000} },
+/**/ {{0x855c3198, 0x3fe6c9f7} },
+/**/ {{0x29bd280d, 0x3c7c09de} },
+/**/ {{0x0a431fbd, 0x3fe255df} },
+/**/ {{0xf09a745d, 0x3c8d9866} },
+/**/ {{0x5648fb1f, 0xbfd22399} },
+/**/ {{0xb4df0b3e, 0x3c412100} },
+/**/ {{0xfada8899, 0x3fb3d64a} },
+/**/ {{0x659c4346, 0x3c3dd891} },
+/**/ {{0x21c2d0a1, 0x3f9845e4} },
+/**/ {{0xf397827c, 0x3c28c6b1} },
+/**/ {{0x8445c1cc, 0xbfa73ea9} },
+/**/ {{0x730360f8, 0x3f9d0dea} },
+/**/ {{0xac51ce30, 0xbf7670bb} },
+/**/ {{0xeef50deb, 0xbf7e8493} },
+/**/ {{0x96b119a9, 0x3f826b25} } },
+/**/ {{{0x00000000, 0x3febc000} },
+/**/ {{0x551553af, 0x3fe6dc44} },
+/**/ {{0x3573828e, 0xbc5bf886} },
+/**/ {{0xe44a7335, 0x3fe243c2} },
+/**/ {{0x65d1ffd7, 0xbc667287} },
+/**/ {{0xa0ca68d3, 0xbfd214af} },
+/**/ {{0x88820895, 0xbc71296c} },
+/**/ {{0x36c0c9a2, 0x3fb3ee1d} },
+/**/ {{0x831dfabe, 0x3c540bf6} },
+/**/ {{0x8ce8de84, 0x3f975f24} },
+/**/ {{0x43eb5853, 0xbc125368} },
+/**/ {{0x803788f8, 0xbfa6e7bb} },
+/**/ {{0x8c42d5f9, 0x3f9ce5d2} },
+/**/ {{0xfaadb3ab, 0xbf775fba} },
+/**/ {{0xde4c28da, 0xbf7d3c59} },
+/**/ {{0xe2bf7ef5, 0x3f820d13} } },
+/**/ {{{0x00000000, 0x3febe000} },
+/**/ {{0x10204aef, 0x3fe6ee7f} },
+/**/ {{0xa3066272, 0x3c8692ee} },
+/**/ {{0xb0d95ee5, 0x3fe231b5} },
+/**/ {{0x1eb505b6, 0x3c7aae7e} },
+/**/ {{0x63ba3e08, 0xbfd205b4} },
+/**/ {{0xb975517d, 0x3c71c6d1} },
+/**/ {{0x64edc729, 0x3fb4050a} },
+/**/ {{0x715db809, 0x3c4960ed} },
+/**/ {{0xe2bc143b, 0x3f967bc7} },
+/**/ {{0xf0823143, 0xbc2cbf17} },
+/**/ {{0x2e4dbc47, 0xbfa69148} },
+/**/ {{0x50e0982e, 0x3f9cbc21} },
+/**/ {{0xedaa432a, 0xbf784492} },
+/**/ {{0x0b4850f3, 0xbf7bfabd} },
+/**/ {{0x1caa2f2c, 0x3f81af06} } },
+/**/ {{{0x00000000, 0x3fec0000} },
+/**/ {{0xc5784634, 0x3fe700a7} },
+/**/ {{0x25aadef6, 0xbc78c34d} },
+/**/ {{0x8121fb78, 0x3fe21fb7} },
+/**/ {{0x8121fb78, 0x3c621fb7} },
+/**/ {{0x499e4889, 0xbfd1f6a8} },
+/**/ {{0x6d4e0249, 0xbc60e934} },
+/**/ {{0xe5decb17, 0x3fb41b15} },
+/**/ {{0xab3541e6, 0x3c5194f4} },
+/**/ {{0x40a374b5, 0x3f959bc9} },
+/**/ {{0x54be0e10, 0xbc39dc6e} },
+/**/ {{0x400d3c9a, 0xbfa63b54} },
+/**/ {{0x57717232, 0x3f9c90e8} },
+/**/ {{0x6bfa704e, 0xbf791f78} },
+/**/ {{0x643da6dd, 0xbf7abfbc} },
+/**/ {{0xa418ed31, 0x3f815112} } },
+/**/ {{{0x00000000, 0x3fec2000} },
+/**/ {{0x84295198, 0x3fe712be} },
+/**/ {{0x337d8881, 0x3c85cd90} },
+/**/ {{0x65ad1f5b, 0x3fe20dc8} },
+/**/ {{0xd7b50d48, 0xbc88102a} },
+/**/ {{0xfa75d2f4, 0xbfd1e78b} },
+/**/ {{0x619624d2, 0x3c723734} },
+/**/ {{0x1517663e, 0x3fb43043} },
+/**/ {{0xe5e1ddf1, 0xbc4af8a4} },
+/**/ {{0x961cd605, 0x3f94bf23} },
+/**/ {{0x5ca14507, 0xbc26e86e} },
+/**/ {{0x32c1ffd7, 0xbfa5e5e4} },
+/**/ {{0xda0191cd, 0x3f9c6438} },
+/**/ {{0x4d921d2b, 0xbf79f0a0} },
+/**/ {{0x4e35d54e, 0xbf798b55} },
+/**/ {{0xcd4f7bfd, 0x3f80f34e} } },
+/**/ {{{0x00000000, 0x3fec4000} },
+/**/ {{0x5b4fae7b, 0x3fe724c3} },
+/**/ {{0x2db3499b, 0x3c5948b3} },
+/**/ {{0x6e5ce35d, 0x3fe1fbe8} },
+/**/ {{0x561e27a3, 0x3c8101d1} },
+/**/ {{0x1bbd70f4, 0xbfd1d860} },
+/**/ {{0xfa32c4d1, 0xbc7b4c97} },
+/**/ {{0x48f48a77, 0x3fb44495} },
+/**/ {{0xb47fdf89, 0xbc2ccfed} },
+/**/ {{0xa6c1af2c, 0x3f93e5d1} },
+/**/ {{0xc3b5a19b, 0xbc14af58} },
+/**/ {{0x5094795f, 0xbfa590fc} },
+/**/ {{0xb638ebc2, 0x3f9c3623} },
+/**/ {{0x4fa66d0e, 0xbf7ab83f} },
+/**/ {{0xb787e297, 0xbf785d83} },
+/**/ {{0xe71b4cea, 0x3f8095ce} } },
+/**/ {{{0x00000000, 0x3fec6000} },
+/**/ {{0x5a172dff, 0x3fe736b6} },
+/**/ {{0x06a892d1, 0x3c7775fd} },
+/**/ {{0xaa6f2377, 0x3fe1ea17} },
+/**/ {{0xcb44ec07, 0xbc8395a8} },
+/**/ {{0x5072ec76, 0xbfd1c925} },
+/**/ {{0xf650d5de, 0xbc6e11b3} },
+/**/ {{0xd281a42b, 0x3fb4580f} },
+/**/ {{0xf63226cb, 0xbc55bbce} },
+/**/ {{0x0c411254, 0x3f930fce} },
+/**/ {{0xc9852726, 0x3c3a4412} },
+/**/ {{0xb19e766e, 0xbfa53ca0} },
+/**/ {{0x6d941dd5, 0x3f9c06b9} },
+/**/ {{0x094128b2, 0xbf7b768a} },
+/**/ {{0x2a047c42, 0xbf773642} },
+/**/ {{0x40d7925f, 0x3f8038a6} } },
+/**/ {{{0x00000000, 0x3fec8000} },
+/**/ {{0x8fba8e0f, 0x3fe74897} },
+/**/ {{0x165884a1, 0x3c47b2a6} },
+/**/ {{0x287ffb8a, 0x3fe1d856} },
+/**/ {{0xfee27a9d, 0xbc658a1f} },
+/**/ {{0x39195240, 0xbfd1b9dc} },
+/**/ {{0x551dc6bf, 0x3c604646} },
+/**/ {{0xfd4fa866, 0x3fb46ab5} },
+/**/ {{0xc2febe43, 0x3c5f62a7} },
+/**/ {{0x384eda2c, 0x3f923d13} },
+/**/ {{0x1dfd9f34, 0x3c3b9a7c} },
+/**/ {{0x3cff324c, 0xbfa4e8d5} },
+/**/ {{0x25b0d0ad, 0x3f9bd60a} },
+/**/ {{0xe063d1e6, 0xbf7c2bb4} },
+/**/ {{0xdcb54dd5, 0xbf761589} },
+/**/ {{0x61077b85, 0x3f7fb7ce} } },
+/**/ {{{0x00000000, 0x3feca000} },
+/**/ {{0x0b82d8d8, 0x3fe75a67} },
+/**/ {{0x4c729087, 0x3c8ee4ac} },
+/**/ {{0xf68c4011, 0x3fe1c6a3} },
+/**/ {{0x32671c29, 0xbc8e54e4} },
+/**/ {{0x73bd1c8f, 0xbfd1aa85} },
+/**/ {{0x41d7bd80, 0x3c7525ad} },
+/**/ {{0x0f4e0cc0, 0x3fb47c8b} },
+/**/ {{0xd854875c, 0x3c2efdd1} },
+/**/ {{0x7688134d, 0x3f916d9b} },
+/**/ {{0x42a6f922, 0xbc1abef6} },
+/**/ {{0xa9ee694e, 0xbfa4959d} },
+/**/ {{0xa8aca118, 0x3f9ba425} },
+/**/ {{0xffb6fa1f, 0xbf7cd7f3} },
+/**/ {{0xc52e395a, 0xbf74fb52} },
+/**/ {{0x31d14661, 0x3f7eff46} } },
+/**/ {{{0x00000000, 0x3fecc000} },
+/**/ {{0xdcc6c6c0, 0x3fe76c24} },
+/**/ {{0x51adc83d, 0x3c819525} },
+/**/ {{0x21f3f28c, 0x3fe1b501} },
+/**/ {{0x5f1d67b6, 0xbc45712f} },
+/**/ {{0x9bf87a43, 0xbfd19b21} },
+/**/ {{0xb2071e48, 0xbc64520a} },
+/**/ {{0x48a59e43, 0x3fb48d92} },
+/**/ {{0x42014b8b, 0x3c5f8e56} },
+/**/ {{0xee4caccb, 0x3f90a160} },
+/**/ {{0x7b6daa67, 0x3c2bd92b} },
+/**/ {{0x80ce3489, 0xbfa442fd} },
+/**/ {{0x65959e45, 0x3f9b711b} },
+/**/ {{0x4cc2673a, 0xbf7d7b7b} },
+/**/ {{0xa86f8a8e, 0xbf73e793} },
+/**/ {{0xdf91602d, 0x3f7e47d4} } },
+/**/ {{{0x00000000, 0x3fece000} },
+/**/ {{0x12ea22c7, 0x3fe77dd1} },
+/**/ {{0x8fc10d3d, 0x3c873260} },
+/**/ {{0xb77cb1a2, 0x3fe1a36d} },
+/**/ {{0x6e625be9, 0xbc42c20d} },
+/**/ {{0x4af7b13c, 0xbfd18bb1} },
+/**/ {{0xbc063e5a, 0xbc68446b} },
+/**/ {{0xe3952cbb, 0x3fb49dce} },
+/**/ {{0x58cf9123, 0x3c588e60} },
+/**/ {{0x491cfa44, 0x3f8fb0bb} },
+/**/ {{0x0e3f2a43, 0x3c1534fc} },
+/**/ {{0x1c3b7aca, 0xbfa3f0f8} },
+/**/ {{0x70eb708a, 0x3f9b3cfa} },
+/**/ {{0x5eaa8b7f, 0xbf7e167e} },
+/**/ {{0x2b587c04, 0xbf72da42} },
+/**/ {{0x882fa65b, 0x3f7d9199} } },
+/**/ {{{0x00000000, 0x3fed0000} },
+/**/ {{0xbd5d315e, 0x3fe78f6b} },
+/**/ {{0x89803740, 0x3c8406a0} },
+/**/ {{0xc35424ca, 0x3fe191e9} },
+/**/ {{0xf4be863f, 0xbc8fa3c1} },
+/**/ {{0x177d9a85, 0xbfd17c35} },
+/**/ {{0x6a99d546, 0xbc717b81} },
+/**/ {{0x144fffae, 0x3fb4ad44} },
+/**/ {{0xdccca2a3, 0x3c3538b3} },
+/**/ {{0xfb2b5523, 0x3f8e2516} },
+/**/ {{0x60181bd9, 0x3c0f7c11} },
+/**/ {{0xaa1cc641, 0xbfa39f90} },
+/**/ {{0x85304289, 0x3f9b07d1} },
+/**/ {{0x756fd193, 0xbf7ea930} },
+/**/ {{0xe2a9a0de, 0xbf71d352} },
+/**/ {{0x886fc912, 0x3f7cdcb1} } },
+/**/ {{{0x00000000, 0x3fed2000} },
+/**/ {{0xeb9c19a2, 0x3fe7a0f4} },
+/**/ {{0xcd815f57, 0x3c613c67} },
+/**/ {{0x5112636f, 0x3fe18075} },
+/**/ {{0x7a335b20, 0x3c80a172} },
+/**/ {{0x95e83705, 0xbfd16cad} },
+/**/ {{0x7b21d5e1, 0x3c62a94b} },
+/**/ {{0x08de0a7c, 0x3fb4bbf5} },
+/**/ {{0x057457a0, 0x3c3570d0} },
+/**/ {{0x7d750fdf, 0x3f8c9fc8} },
+/**/ {{0xfe4cff3c, 0x3c2900a7} },
+/**/ {{0x2caf50ea, 0xbfa34eca} },
+/**/ {{0x03888c77, 0x3f9ad1af} },
+/**/ {{0x71ac3a86, 0xbf7f33c4} },
+/**/ {{0x6296fd58, 0xbf70d2b9} },
+/**/ {{0x886d16b8, 0x3f7c2938} } },
+/**/ {{{0x00000000, 0x3fed4000} },
+/**/ {{0xad2e50fe, 0x3fe7b26c} },
+/**/ {{0xf30411fb, 0xbc8ce80d} },
+/**/ {{0x6bbc577a, 0x3fe16f10} },
+/**/ {{0xbd8abf47, 0xbc7d0db6} },
+/**/ {{0x58355b5f, 0xbfd15d1b} },
+/**/ {{0xbcc70038, 0xbc5b5457} },
+/**/ {{0xe8fdd51d, 0x3fb4c9e4} },
+/**/ {{0x28ac9383, 0x3c462959} },
+/**/ {{0x2029f143, 0x3f8b20c3} },
+/**/ {{0x2b420400, 0xbc2f8a44} },
+/**/ {{0x7b921c49, 0xbfa2fea7} },
+/**/ {{0xf468e79e, 0x3f9a9aa0} },
+/**/ {{0xcccbcb4f, 0xbf7fb66c} },
+/**/ {{0x9bd39a5f, 0xbf6fb0d0} },
+/**/ {{0x8813998f, 0x3f7b7748} } },
+/**/ {{{0x00000000, 0x3fed6000} },
+/**/ {{0x11a6092b, 0x3fe7c3d3} },
+/**/ {{0x2d303288, 0x3c8bb3cb} },
+/**/ {{0x1dc61b17, 0x3fe15dbb} },
+/**/ {{0xbb77dc56, 0xbc8f0487} },
+/**/ {{0xee0771ca, 0xbfd14d7e} },
+/**/ {{0xdc2fcbd0, 0x3c72d38b} },
+/**/ {{0xd6080f0e, 0x3fb4d716} },
+/**/ {{0xa9fbc2c3, 0xbc5cb5bc} },
+/**/ {{0xfc42e02f, 0x3f89a7f9} },
+/**/ {{0x857be8a4, 0xbc201eec} },
+/**/ {{0x44ceebb3, 0xbfa2af2b} },
+/**/ {{0x08511639, 0x3f9a62b5} },
+/**/ {{0xc8de23de, 0xbf8018ad} },
+/**/ {{0xc964501a, 0xbf6dc8a2} },
+/**/ {{0xeb913697, 0x3f7ac6f9} } },
+/**/ {{{0x00000000, 0x3fed8000} },
+/**/ {{0x289fa093, 0x3fe7d528} },
+/**/ {{0x1e2f3aa9, 0x3c856082} },
+/**/ {{0x711551bb, 0x3fe14c75} },
+/**/ {{0x71970f2c, 0xbc80c88e} },
+/**/ {{0xe4aa5095, 0xbfd13dd8} },
+/**/ {{0xb4b7ae12, 0x3c66dd31} },
+/**/ {{0xead4c211, 0x3fb4e38d} },
+/**/ {{0xe392a31e, 0x3c513fb0} },
+/**/ {{0xf6b74576, 0x3f88355f} },
+/**/ {{0xf3561ab7, 0x3ba8cb44} },
+/**/ {{0x0de0faaa, 0xbfa26058} },
+/**/ {{0x989371f0, 0x3f9a29f8} },
+/**/ {{0x2b085d9a, 0xbf805261} },
+/**/ {{0x2511c555, 0xbf6beccb} },
+/**/ {{0x87b9d333, 0x3f7a1863} } },
+/**/ {{{0x00000000, 0x3feda000} },
+/**/ {{0x01c114fe, 0x3fe7e66c} },
+/**/ {{0x8b760b8d, 0xbc8c82b8} },
+/**/ {{0x6f037c44, 0x3fe13b3f} },
+/**/ {{0x8562c8c0, 0xbc635393} },
+/**/ {{0xc7182435, 0xbfd12e29} },
+/**/ {{0x0d0fda95, 0xbc73da80} },
+/**/ {{0x3ba21a8b, 0x3fb4ef4d} },
+/**/ {{0x9aa41146, 0xbc17c450} },
+/**/ {{0xc39dff46, 0x3f86c8e7} },
+/**/ {{0x800ba9ae, 0x3c1ddd70} },
+/**/ {{0x34b94b56, 0xbfa21230} },
+/**/ {{0xa827f95a, 0x3f99f078} },
+/**/ {{0x19caa997, 0xbf808869} },
+/**/ {{0xf8c46d26, 0xbf6a1d29} },
+/**/ {{0xae59da17, 0x3f796b9a} } },
+/**/ {{{0x00000000, 0x3fedc000} },
+/**/ {{0xacb97898, 0x3fe7f79e} },
+/**/ {{0x80ead221, 0x3c8fd5ca} },
+/**/ {{0x20604825, 0x3fe12a19} },
+/**/ {{0xa18970f8, 0xbc5cc7d6} },
+/**/ {{0x1dfe6ba4, 0xbfd11e72} },
+/**/ {{0x9d653d1c, 0x3c706717} },
+/**/ {{0xd5fcbb3b, 0x3fb4fa57} },
+/**/ {{0x5f50bc06, 0x3c1922c8} },
+/**/ {{0xe93a179f, 0x3f856283} },
+/**/ {{0x5ea7135a, 0xbc01c2ec} },
+/**/ {{0xf0c06b4f, 0xbfa1c4b5} },
+/**/ {{0xe48a3b04, 0x3f99b641} },
+/**/ {{0xe1280a21, 0xbf80badd} },
+/**/ {{0x1be3c5dd, 0xbf68599e} },
+/**/ {{0x3a72c8e6, 0x3f78c0b3} } },
+/**/ {{{0x00000000, 0x3fede000} },
+/**/ {{0x3940694b, 0x3fe808c0} },
+/**/ {{0x7715f6a5, 0xbc800f32} },
+/**/ {{0x8d73d98e, 0x3fe11902} },
+/**/ {{0x30f8e290, 0x3c71d158} },
+/**/ {{0x6fc305eb, 0xbfd10eb2} },
+/**/ {{0x3858c4b7, 0xbc7fd2e3} },
+/**/ {{0xc0a99255, 0x3fb504b0} },
+/**/ {{0x142e134f, 0x3c55c054} },
+/**/ {{0xc2f371cf, 0x3f840226} },
+/**/ {{0xfc7d6225, 0xbbfc85b0} },
+/**/ {{0x53d58f53, 0xbfa177eb} },
+/**/ {{0xa6a1627d, 0x3f997b60} },
+/**/ {{0x89757c78, 0xbf80e9d7} },
+/**/ {{0x0d433cd6, 0xbf66a205} },
+/**/ {{0x9c5dbd9f, 0x3f7817bf} } },
+/**/ {{{0x00000000, 0x3fee0000} },
+/**/ {{0xb7158a4d, 0x3fe819d0} },
+/**/ {{0x29d3b917, 0xbc7bf762} },
+/**/ {{0xbe011080, 0x3fe107fb} },
+/**/ {{0xbe011080, 0xbc8107fb} },
+/**/ {{0x40894fcd, 0xbfd0feeb} },
+/**/ {{0xc155af9a, 0x3c76fbb9} },
+/**/ {{0xfb9125f7, 0x3fb50e5a} },
+/**/ {{0x2f3313b0, 0x3c357762} },
+/**/ {{0x843ba55a, 0x3f82a7c2} },
+/**/ {{0x3fc197b7, 0x3c1f4994} },
+/**/ {{0x4b4ae875, 0xbfa12bd2} },
+/**/ {{0xf3b1b1ee, 0x3f993fe0} },
+/**/ {{0xd4c2083b, 0xbf81156d} },
+/**/ {{0x0c35aa9c, 0xbf64f63b} },
+/**/ {{0xe5d0462f, 0x3f7770d0} } },
+/**/ {{{0x00000000, 0x3fee2000} },
+/**/ {{0x36000005, 0x3fe82ad0} },
+/**/ {{0xce924d24, 0x3c74592f} },
+/**/ {{0xb947c8b7, 0x3fe0f704} },
+/**/ {{0x48a651b3, 0x3c436cd7} },
+/**/ {{0x1237505b, 0xbfd0ef1d} },
+/**/ {{0x1b86b9d1, 0x3c69239b} },
+/**/ {{0x7fac4e21, 0x3fb51759} },
+/**/ {{0xbfce0e36, 0xbc42a8cc} },
+/**/ {{0x3b5f3edd, 0x3f815349} },
+/**/ {{0x88c702d9, 0xbc25e1f1} },
+/**/ {{0xa0df17a9, 0xbfa0e06c} },
+/**/ {{0x7e56b8b1, 0x3f9903ce} },
+/**/ {{0x3c701e30, 0xbf813db8} },
+/**/ {{0x30c99e47, 0xbf63561b} },
+/**/ {{0xd5bffce0, 0x3f76cbf6} } },
+/**/ {{{0x00000000, 0x3fee4000} },
+/**/ {{0xc5cdee22, 0x3fe83bbe} },
+/**/ {{0x04ffc6c3, 0x3c631071} },
+/**/ {{0x86071468, 0x3fe0e61d} },
+/**/ {{0x59be09c9, 0xbc70ccc4} },
+/**/ {{0x647af38b, 0xbfd0df48} },
+/**/ {{0x427c295b, 0x3c7dd47c} },
+/**/ {{0x3ef25277, 0x3fb51faf} },
+/**/ {{0xa81026a7, 0x3bdf056a} },
+/**/ {{0xd443a18b, 0x3f8004ac} },
+/**/ {{0x8178f329, 0x3c027610} },
+/**/ {{0xfbb3a658, 0xbfa095bb} },
+/**/ {{0xa7859d46, 0x3f98c734} },
+/**/ {{0xeefe9a81, 0xbf8162cd} },
+/**/ {{0x8330eac0, 0xbf61c17f} },
+/**/ {{0xe421c20a, 0x3f76293f} } },
+/**/ {{{0x00000000, 0x3fee6000} },
+/**/ {{0x7653f7eb, 0x3fe84c9c} },
+/**/ {{0xfe0a3e8f, 0xbc383611} },
+/**/ {{0x2a7f71b5, 0x3fe0d546} },
+/**/ {{0x596848c6, 0x3c757061} },
+/**/ {{0xb4cf51a6, 0xbfd0cf6d} },
+/**/ {{0x5b18bb8c, 0x3c4c99ab} },
+/**/ {{0x24486227, 0x3fb5275f} },
+/**/ {{0xbb1f4f56, 0x3c5b4a59} },
+/**/ {{0x36238bb2, 0x3f7d77be} },
+/**/ {{0xcaec6ba2, 0x3c1ddbd1} },
+/**/ {{0xe1406cd0, 0xbfa04bc1} },
+/**/ {{0x7f96d6ca, 0x3f988a1e} },
+/**/ {{0xcdffc380, 0xbf8184c5} },
+/**/ {{0x12561f8b, 0xbf603841} },
+/**/ {{0x4d81a668, 0x3f7588b9} } },
+/**/ {{{0x00000000, 0x3fee8000} },
+/**/ {{0x576cc2c5, 0x3fe85d69} },
+/**/ {{0x7fc8b8c3, 0x3c66b66e} },
+/**/ {{0xac74fadc, 0x3fe0c47e} },
+/**/ {{0x77bb1887, 0xbc8035f8} },
+/**/ {{0x7e8202a9, 0xbfd0bf8d} },
+/**/ {{0x1f4d2357, 0x3c798048} },
+/**/ {{0x13725c73, 0x3fb52e6c} },
+/**/ {{0xf5b19ded, 0xbc34c3af} },
+/**/ {{0x7d9c2711, 0x3f7af1a3} },
+/**/ {{0x1af1098d, 0x3bea7ec7} },
+/**/ {{0xb643d11f, 0xbfa0027f} },
+/**/ {{0xc756b7d7, 0x3f984c96} },
+/**/ {{0x6c3ca3ae, 0xbf81a3b6} },
+/**/ {{0x13459246, 0xbf5d7470} },
+/**/ {{0x1e70d9a4, 0x3f74ea6f} } },
+/**/ {{{0x00000000, 0x3feea000} },
+/**/ {{0x78f87ae5, 0x3fe86e25} },
+/**/ {{0x375cfe34, 0x3c8022b1} },
+/**/ {{0x11319104, 0x3fe0b3c7} },
+/**/ {{0x25152519, 0x3c8ac394} },
+/**/ {{0x3ab87c8a, 0xbfd0afa8} },
+/**/ {{0x27b31384, 0x3c724f26} },
+/**/ {{0xe904e078, 0x3fb534d8} },
+/**/ {{0xf8948323, 0xbc55bfde} },
+/**/ {{0xa7bb2dfb, 0x3f7876ec} },
+/**/ {{0x8a87be50, 0xbc197116} },
+/**/ {{0x7f5f95b4, 0xbf9f73ed} },
+/**/ {{0xf11c3266, 0x3f980ea7} },
+/**/ {{0x0c032389, 0xbf81bfb6} },
+/**/ {{0x8bf305a1, 0xbf5a8e77} },
+/**/ {{0x3ec72e6d, 0x3f744e6c} } },
+/**/ {{{0x00000000, 0x3feec000} },
+/**/ {{0xeadc5a2a, 0x3fe87ed0} },
+/**/ {{0xd957f4bc, 0x3c70af5a} },
+/**/ {{0x5d8701b3, 0x3fe0a31f} },
+/**/ {{0x263ce937, 0xbc869b25} },
+/**/ {{0x60757b83, 0xbfd09fbe} },
+/**/ {{0xa96db9ef, 0x3c767aff} },
+/**/ {{0x7a589afb, 0x3fb53aa8} },
+/**/ {{0x0844ff86, 0xbc4b7e8e} },
+/**/ {{0xacf1a65c, 0x3f76077c} },
+/**/ {{0xb13331a9, 0xbc19a3b2} },
+/**/ {{0x472733eb, 0xbf9ee450} },
+/**/ {{0x21e541d7, 0x3f97d05c} },
+/**/ {{0x9d9d4dfc, 0xbf81d8da} },
+/**/ {{0xd3ce1b4a, 0xbf57be45} },
+/**/ {{0x7cb60047, 0x3f73b4ba} } },
+/**/ {{{0x00000000, 0x3feee000} },
+/**/ {{0xbd023119, 0x3fe88f6b} },
+/**/ {{0x25aba660, 0xbc532d1d} },
+/**/ {{0x95d126c6, 0x3fe09287} },
+/**/ {{0xeccc37a6, 0x3c85aad3} },
+/**/ {{0x649e7367, 0xbfd08fd0} },
+/**/ {{0xed21a127, 0x3c71e96c} },
+/**/ {{0x957ec910, 0x3fb53fdd} },
+/**/ {{0xaf97a601, 0xbc339c23} },
+/**/ {{0x5a18e5a2, 0x3f73a336} },
+/**/ {{0x477571de, 0xbc1f7225} },
+/**/ {{0xd4044135, 0xbf9e5629} },
+/**/ {{0x32786dc4, 0x3f9791bd} },
+/**/ {{0xbdf030c4, 0xbf81ef39} },
+/**/ {{0xe21b8bcb, 0xbf550386} },
+/**/ {{0x97aa7fb2, 0x3f731d62} } },
+/**/ {{{0x00000000, 0x3fef0000} },
+/**/ {{0xff57f1f8, 0x3fe89ff5} },
+/**/ {{0x5e177a1b, 0xbc855b9a} },
+/**/ {{0xbdf80108, 0x3fe081ff} },
+/**/ {{0x80108200, 0x3c6ffbdf} },
+/**/ {{0xba010928, 0xbfd07fde} },
+/**/ {{0x7bae0295, 0x3c38d37f} },
+/**/ {{0x0136e69f, 0x3fb5447b} },
+/**/ {{0x0dda278d, 0x3c50316a} },
+/**/ {{0x55103947, 0x3f7149fc} },
+/**/ {{0x849e505f, 0x3c176e96} },
+/**/ {{0xfbe9a2ee, 0xbf9dc97b} },
+/**/ {{0xb08adda9, 0x3f9752d4} },
+/**/ {{0xb540d106, 0xbf8202e8} },
+/**/ {{0x859de3e9, 0xbf525de5} },
+/**/ {{0x4afd9f21, 0x3f72886c} } },
+/**/ {{{0x00000000, 0x3fef2000} },
+/**/ {{0xc1cf3dff, 0x3fe8b06f} },
+/**/ {{0x2656db6d, 0xbc80fb31} },
+/**/ {{0xd971cd38, 0x3fe07187} },
+/**/ {{0x202c20ac, 0x3c89baa4} },
+/**/ {{0xd15893ab, 0xbfd06fe9} },
+/**/ {{0xdc0cb586, 0xbc7a864b} },
+/**/ {{0x7ce57fed, 0x3fb54883} },
+/**/ {{0x294f4b18, 0xbc49498e} },
+/**/ {{0x426ebecc, 0x3f6df762} },
+/**/ {{0xf28644c0, 0xbc022f08} },
+/**/ {{0x5c564b44, 0xbf9d3e48} },
+/**/ {{0xdfea7acf, 0x3f9713ab} },
+/**/ {{0x761db35c, 0xbf8213fc} },
+/**/ {{0x10d60f49, 0xbf4f9a17} },
+/**/ {{0x58700e9b, 0x3f71f5de} } },
+/**/ {{{0x00000000, 0x3fef4000} },
+/**/ {{0x145cf49d, 0x3fe8c0d9} },
+/**/ {{0x76dc4333, 0x3c8bea40} },
+/**/ {{0xeb45139a, 0x3fe0611f} },
+/**/ {{0x65aadb1f, 0x3c7e4998} },
+/**/ {{0x1953a316, 0xbfd05ff2} },
+/**/ {{0xa1b67b0f, 0x3c759922} },
+/**/ {{0xc08c1d66, 0x3fb54bf9} },
+/**/ {{0xd220330c, 0x3c5b9353} },
+/**/ {{0x478cb604, 0x3f69706e} },
+/**/ {{0xa22fd45a, 0xbbfdb6d3} },
+/**/ {{0x5c0d1d38, 0xbf9cb490} },
+/**/ {{0xbbaba2f2, 0x3f96d44b} },
+/**/ {{0x9c6b7de1, 0xbf822289} },
+/**/ {{0xa49803b6, 0xbf4aa143} },
+/**/ {{0x9270e49e, 0x3f7165be} } },
+/**/ {{{0x00000000, 0x3fef6000} },
+/**/ {{0x06f8c4cb, 0x3fe8d132} },
+/**/ {{0xbaa89a8b, 0xbc7b018c} },
+/**/ {{0xf60ab1f4, 0x3fe050c7} },
+/**/ {{0xc6cf5796, 0x3c63f8e2} },
+/**/ {{0xfe998dc0, 0xbfd04ff7} },
+/**/ {{0x7dc56419, 0x3c77873c} },
+/**/ {{0x7cc24121, 0x3fb54ee0} },
+/**/ {{0x8e5c84c5, 0x3c313117} },
+/**/ {{0x50066301, 0x3f64fee1} },
+/**/ {{0x017261a1, 0x3c043698} },
+/**/ {{0x2cc5b4f1, 0xbf9c2c55} },
+/**/ {{0xf759f369, 0x3f9694bc} },
+/**/ {{0x6c93426a, 0xbf822ea4} },
+/**/ {{0x135d6c51, 0xbf45d0a1} },
+/**/ {{0xe62dc18f, 0x3f70d811} } },
+/**/ {{{0x00000000, 0x3fef8000} },
+/**/ {{0xa99cc05e, 0x3fe8e17a} },
+/**/ {{0xab042f61, 0xbc7ec182} },
+/**/ {{0xfbefe001, 0x3fe0407f} },
+/**/ {{0xfbf80041, 0x3c401ffe} },
+/**/ {{0xebd00209, 0xbfd03ffb} },
+/**/ {{0xb9004112, 0xbc53ff3c} },
+/**/ {{0x5aaf6d91, 0x3fb5513a} },
+/**/ {{0xc0516ddb, 0x3c54a20d} },
+/**/ {{0xc6ac4038, 0x3f60a27f} },
+/**/ {{0x2a340912, 0x3bf06bee} },
+/**/ {{0xccd6032a, 0xbf9ba597} },
+/**/ {{0x002bb974, 0x3f965508} },
+/**/ {{0xd2d1068b, 0xbf823860} },
+/**/ {{0x666265bc, 0xbf41277e} },
+/**/ {{0x656b66ea, 0x3f704cdc} } },
+/**/ {{{0x00000000, 0x3fefa000} },
+/**/ {{0x0c44f167, 0x3fe8f1b3} },
+/**/ {{0xb93933fd, 0x3c6dd1ca} },
+/**/ {{0xfeb82e4e, 0x3fe03047} },
+/**/ {{0x5272e5ac, 0x3c69ee56} },
+/**/ {{0x49a09c45, 0xbfd02ffe} },
+/**/ {{0xb26267bb, 0xbc700a59} },
+/**/ {{0xfc062d2f, 0x3fb55309} },
+/**/ {{0xb11938e0, 0x3c5dba48} },
+/**/ {{0xe4f365be, 0x3f58b61b} },
+/**/ {{0xa79ad31a, 0x3bf8b585} },
+/**/ {{0x08d4ad17, 0xbf9b2059} },
+/**/ {{0xfe379940, 0x3f961534} },
+/**/ {{0x62a1270e, 0xbf823fd2} },
+/**/ {{0x3f3a0aec, 0xbf394a53} },
+/**/ {{0xa04bcae2, 0x3f6f8842} } },
+/**/ {{{0x00000000, 0x3fefc000} },
+/**/ {{0x3eeef187, 0x3fe901db} },
+/**/ {{0xe5603c8f, 0x3c868665} },
+/**/ {{0xffbf7f80, 0x3fe0201f} },
+/**/ {{0xffbf7f80, 0x3c20201f} },
+/**/ {{0x7ebe8004, 0xbfd01fff} },
+/**/ {{0xcf979001, 0xbc4213ff} },
+/**/ {{0xfb0012db, 0x3fb55451} },
+/**/ {{0xf73aa59f, 0xbc395606} },
+/**/ {{0xfc757100, 0x3f50509f} },
+/**/ {{0xfee554d0, 0x3bebc7da} },
+/**/ {{0x7d3424d0, 0xbf9a9c99} },
+/**/ {{0xd5ac0217, 0x3f95d54b} },
+/**/ {{0x564b3c49, 0xbf82450c} },
+/**/ {{0xe6d3e986, 0xbf3091df} },
+/**/ {{0x3bef5a22, 0x3f6e7bc6} } },
+/**/ {{{0x00000000, 0x3fefe000} },
+/**/ {{0x5199833b, 0x3fe911f3} },
+/**/ {{0x0edbf522, 0x3c63ae8a} },
+/**/ {{0xfffbfbfe, 0x3fe01007} },
+/**/ {{0xfffbfbfe, 0x3ba01007} },
+/**/ {{0xefebf400, 0xbfd00fff} },
+/**/ {{0xfff9f97d, 0xbc401209} },
+/**/ {{0xea5aaaf6, 0x3fb55514} },
+/**/ {{0xb5b7b240, 0xbc529baa} },
+/**/ {{0xffc7abc4, 0x3f402827} },
+/**/ {{0xbfee6ab3, 0x3b5ba3d6} },
+/**/ {{0x97d67093, 0xbf9a1a59} },
+/**/ {{0x28080aaf, 0x3f959554} },
+/**/ {{0x8e892ce2, 0xbf824821} },
+/**/ {{0xfe70a2a6, 0xbf204877} },
+/**/ {{0x0e8ddd67, 0x3f6d7447} } },
+/**/ {{{0x00000000, 0x3feff800} },
+/**/ {{0xd439826e, 0x3fe91dfa} },
+/**/ {{0x6df48d55, 0xbc786a19} },
+/**/ {{0x7ffffbff, 0x3fe00400} },
+/**/ {{0xffbff800, 0xbbeffffe} },
+/**/ {{0xffbfebfd, 0xbfd003ff} },
+/**/ {{0x9ffff9fe, 0xbb600480} },
+/**/ {{0x53aa5aab, 0x3fb55551} },
+/**/ {{0x9baaab5b, 0xbc542a4a} },
+/**/ {{0x7fffc7eb, 0x3f200a02} },
+/**/ {{0x4770e940, 0xbb7dfffe} },
+/**/ {{0x9997d8d0, 0xbf99b9a5} },
+/**/ {{0x50a80a03, 0x3f956555} },
+/**/ {{0x86456493, 0xbf824914} },
+/**/ {{0x7ffe7329, 0xbf001207} },
+/**/ {{0x1c63fe2a, 0x3f6cb1ef} } },
+ };
+
+#endif
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/uexp.h b/REORG.TODO/sysdeps/ieee754/dbl-64/uexp.h
new file mode 100644
index 0000000000..83f9b618f6
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/uexp.h
@@ -0,0 +1,69 @@
+/*
+ * IBM Accurate Mathematical Library
+ * Written by International Business Machines Corp.
+ * Copyright (C) 2001-2017 Free Software Foundation, Inc.
+ *
+ * This program 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 2.1 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 program; if not, see <http://www.gnu.org/licenses/>.
+ */
+
+/******************************************************************/
+/* */
+/* MODULE_NAME:uexp.h */
+/* */
+/* common data and variables prototype and definition */
+/******************************************************************/
+
+#ifndef UEXP_H
+#define UEXP_H
+
+#include "mydefs.h"
+
+const static double zero = 0.0, hhuge = 1.0e300, tiny = 1.0e-300,
+err_0 = 1.000014, err_1 = 0.000016;
+const static int4 bigint = 0x40862002,
+ badint = 0x40876000,smallint = 0x3C8fffff;
+const static int4 hugeint = 0x7FFFFFFF, infint = 0x7ff00000;
+
+#ifdef BIG_ENDI
+const static mynumber inf = {{0x7FF00000, 0}}; /* inf */
+const static mynumber t256 = {{0x4ff00000, 0}}; /* 2^256 */
+
+const static mynumber ln_two1 = {{0x3FE62E42, 0xFEFA3800}};/*0.69314718055989033 */
+const static mynumber ln_two2 = {{0x3D2EF357, 0x93C76730}};/*5.4979230187083712e-14*/
+const static mynumber log2e = {{0x3FF71547, 0x652B82FE}};/* 1.4426950408889634 */
+
+const static mynumber p2 = {{0x3FE00000, 0x000004DC}};/* 0.50000000000013811 */
+const static mynumber p3 = {{0x3FC55555, 0x55555A0F}};/* 0.16666666666670024 */
+
+const static mynumber three33 = {{0x42180000, 0}}; /* 25769803776 */
+const static mynumber three51 = {{0x43380000, 0}}; /* 6755399441055744 */
+
+#else
+#ifdef LITTLE_ENDI
+ const static mynumber inf = {{0, 0x7FF00000}}; /* inf */
+ const static mynumber t256 = {{0, 0x4ff00000}}; /* 2^256 */
+
+ const static mynumber ln_two1 = {{0xFEFA3800, 0x3FE62E42}};/*0.69314718055989033 */
+ const static mynumber ln_two2 = {{0x93C76730, 0x3D2EF357}};/*5.4979230187083712e-14*/
+ const static mynumber log2e = {{0x652B82FE, 0x3FF71547}};/* 1.4426950408889634 */
+
+ const static mynumber p2 = {{0x000004DC, 0x3FE00000}};/* 0.50000000000013811 */
+ const static mynumber p3 = {{0x55555A0F, 0x3FC55555}};/* 0.16666666666670024 */
+
+ const static mynumber three33 = {{0, 0x42180000}}; /* 25769803776 */
+ const static mynumber three51 = {{0, 0x43380000}}; /* 6755399441055744 */
+
+#endif
+#endif
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/uexp.tbl b/REORG.TODO/sysdeps/ieee754/dbl-64/uexp.tbl
new file mode 100644
index 0000000000..3e5fdc5783
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/uexp.tbl
@@ -0,0 +1,1786 @@
+/*
+ * IBM Accurate Mathematical Library
+ * Written by International Business Machines Corp.
+ * Copyright (C) 2001-2017 Free Software Foundation, Inc.
+ *
+ * This program 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 2.1 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 program; if not, see <http://www.gnu.org/licenses/>.
+ */
+
+/****************************************************************/
+/* TABLES FOR THE ulog() FUNCTION */
+/****************************************************************/
+
+#ifdef BIG_ENDI
+
+static const union {
+ int i[1424];
+ double x[712];
+} coar = { .i = {
+ 0x3FE69A59, 0xC8000000, 0x3DF22D4D, 0x6079C9F7,
+ 0x3FE6A5A9, 0xC8000000, 0x3E19882D, 0x25AF6823,
+ 0x3FE6B0FF, 0x74000000, 0xBE221476, 0x31DABF59,
+ 0x3FE6BC5A, 0xC8000000, 0x3E2312AC, 0x99A2DC0A,
+ 0x3FE6C7BB, 0xD0000000, 0xBE265926, 0xCE9F9355,
+ 0x3FE6D322, 0x84000000, 0x3E2F2C26, 0x2D298DED,
+ 0x3FE6DE8E, 0xF4000000, 0xBE2EC28E, 0x1E748D2F,
+ 0x3FE6EA01, 0x14000000, 0x3E2D8C6D, 0xC68CB7E5,
+ 0x3FE6F578, 0xF4000000, 0x3DEE1A9E, 0x419FE2F0,
+ 0x3FE700F6, 0x90000000, 0xBDFF1AFD, 0xDEAEAE34,
+ 0x3FE70C79, 0xEC000000, 0xBE0730FE, 0x558B7122,
+ 0x3FE71803, 0x0C000000, 0xBE25CB85, 0x2D280C3B,
+ 0x3FE72391, 0xF0000000, 0xBE06F2CE, 0x337B7B54,
+ 0x3FE72F26, 0x9C000000, 0x3E289BCA, 0x45C02B72,
+ 0x3FE73AC1, 0x18000000, 0xBE18DEA6, 0x5039F1CA,
+ 0x3FE74661, 0x60000000, 0xBE09D090, 0x86CE0538,
+ 0x3FE75207, 0x78000000, 0x3E290E79, 0xCFCE5DDB,
+ 0x3FE75DB3, 0x68000000, 0x3DD61DF0, 0xB249A17C,
+ 0x3FE76965, 0x2C000000, 0x3E2F22F7, 0xE13445F7,
+ 0x3FE7751C, 0xD0000000, 0xBE2CD454, 0x874E75CE,
+ 0x3FE780DA, 0x4C000000, 0xBE0159CE, 0xDF43E3BC,
+ 0x3FE78C9D, 0xA8000000, 0x3E279291, 0x699A1332,
+ 0x3FE79866, 0xEC000000, 0xBE2A0BCD, 0x2DD98C6C,
+ 0x3FE7A436, 0x10000000, 0x3E25F375, 0x15AC979E,
+ 0x3FE7B00B, 0x20000000, 0x3E26CCF5, 0x2FEAFCF6,
+ 0x3FE7BBE6, 0x1C000000, 0x3E27D4F4, 0x53ADAD67,
+ 0x3FE7C7C7, 0x08000000, 0x3E10EEC7, 0x7FBD9566,
+ 0x3FE7D3AD, 0xE4000000, 0x3E2837F0, 0x9A831D86,
+ 0x3FE7DF9A, 0xB8000000, 0xBE129BE0, 0x5CB4C35B,
+ 0x3FE7EB8D, 0x80000000, 0x3E23990A, 0x0234F04D,
+ 0x3FE7F786, 0x44000000, 0x3E2EB807, 0x64D5C842,
+ 0x3FE80385, 0x08000000, 0x3E0FC86F, 0x02B4E9E8,
+ 0x3FE80F89, 0xCC000000, 0xBDD7B5B3, 0x7B4274BF,
+ 0x3FE81B94, 0x94000000, 0xBE16888B, 0xB899B00F,
+ 0x3FE827A5, 0x60000000, 0x3E288971, 0x5E94D155,
+ 0x3FE833BC, 0x38000000, 0x3E2AEEB2, 0x099F3E5E,
+ 0x3FE83FD9, 0x20000000, 0xBE23B922, 0x3FF60B7C,
+ 0x3FE84BFC, 0x14000000, 0xBDF7D3B1, 0x2DBD8012,
+ 0x3FE85825, 0x1C000000, 0xBDF24BA3, 0xA8872BEB,
+ 0x3FE86454, 0x38000000, 0x3E2EFE04, 0x01AA18A7,
+ 0x3FE87089, 0x70000000, 0x3E21986C, 0x944496A2,
+ 0x3FE87CC4, 0xC4000000, 0x3E096A8B, 0xB71FFAFF,
+ 0x3FE88906, 0x38000000, 0xBE21CE0A, 0xBC4C7AC5,
+ 0x3FE8954D, 0xCC000000, 0xBE076F45, 0xBAC02491,
+ 0x3FE8A19B, 0x84000000, 0x3E2B4FA2, 0xD922B925,
+ 0x3FE8ADEF, 0x68000000, 0x3DF759DB, 0x641863AF,
+ 0x3FE8BA49, 0x78000000, 0xBE2DB97C, 0xC6AB5E04,
+ 0x3FE8C6A9, 0xB4000000, 0xBE25364C, 0xE2156713,
+ 0x3FE8D310, 0x20000000, 0x3E1BEB7C, 0x862BEFF7,
+ 0x3FE8DF7C, 0xC4000000, 0xBDF4DD0C, 0x1CEA33A5,
+ 0x3FE8EBEF, 0xA0000000, 0xBE2537DF, 0x51797D47,
+ 0x3FE8F868, 0xB4000000, 0x3E0FB1C4, 0xF0107B28,
+ 0x3FE904E8, 0x08000000, 0x3E0AD6A1, 0xE01B68BD,
+ 0x3FE9116D, 0x9C000000, 0x3E292117, 0x1F78D9D9,
+ 0x3FE91DF9, 0x78000000, 0xBE1D75DA, 0x4F50E5CF,
+ 0x3FE92A8B, 0x98000000, 0x3DE5102B, 0x74959E58,
+ 0x3FE93724, 0x04000000, 0xBE01CA50, 0xD2216C35,
+ 0x3FE943C2, 0xBC000000, 0x3E225BFD, 0xB0B05884,
+ 0x3FE95067, 0xC8000000, 0xBE0F2183, 0x60B7C5C1,
+ 0x3FE95D13, 0x24000000, 0x3E2FB47A, 0xB5860441,
+ 0x3FE969C4, 0xDC000000, 0xBE01FFD2, 0xE2D4059E,
+ 0x3FE9767C, 0xEC000000, 0xBDE9ED72, 0x12BB6A8D,
+ 0x3FE9833B, 0x58000000, 0x3E2B3815, 0x43BFFB24,
+ 0x3FE99000, 0x28000000, 0x3E03FA22, 0xEE9EAD1E,
+ 0x3FE99CCB, 0x5C000000, 0xBE213841, 0x377138F7,
+ 0x3FE9A99C, 0xF4000000, 0x3E178105, 0xDB636C94,
+ 0x3FE9B674, 0xF8000000, 0x3E1E5E7A, 0xF5720122,
+ 0x3FE9C353, 0x6C000000, 0xBE238BFF, 0xA2AC5AAE,
+ 0x3FE9D038, 0x4C000000, 0x3E270893, 0xF93BDBD8,
+ 0x3FE9DD23, 0xA4000000, 0x3DF40420, 0x354B86CF,
+ 0x3FE9EA15, 0x74000000, 0xBE2D76D3, 0x88CB06B7,
+ 0x3FE9F70D, 0xBC000000, 0xBE251639, 0x9ED0EC60,
+ 0x3FEA040C, 0x80000000, 0x3E1F06E9, 0xE2DDE506,
+ 0x3FEA1111, 0xC8000000, 0x3E014549, 0x8E6DB477,
+ 0x3FEA1E1D, 0x94000000, 0xBDF4BC17, 0xF8716509,
+ 0x3FEA2B2F, 0xE8000000, 0xBE2107DB, 0xDA723A49,
+ 0x3FEA3848, 0xC4000000, 0x3E1A932A, 0x986AA369,
+ 0x3FEA4568, 0x30000000, 0x3E198092, 0x41592CDB,
+ 0x3FEA528E, 0x30000000, 0xBE2E260F, 0x676BCAB8,
+ 0x3FEA5FBA, 0xC0000000, 0x3DE2E821, 0x2D5D5610,
+ 0x3FEA6CED, 0xE8000000, 0x3E2F7046, 0x7DA20167,
+ 0x3FEA7A27, 0xB0000000, 0xBE1D2832, 0xF9FAAD30,
+ 0x3FEA8768, 0x14000000, 0xBE23F788, 0x43FA6C45,
+ 0x3FEA94AF, 0x18000000, 0x3E011E27, 0xAA082732,
+ 0x3FEAA1FC, 0xC4000000, 0xBE20BACB, 0xC682F0BF,
+ 0x3FEAAF51, 0x18000000, 0xBE2DC7DD, 0x7BD08C78,
+ 0x3FEABCAC, 0x14000000, 0x3E2271A2, 0xA3B10F9A,
+ 0x3FEACA0D, 0xC4000000, 0xBE15449C, 0x7966F94C,
+ 0x3FEAD776, 0x24000000, 0x3DD06137, 0x6FD8F3EE,
+ 0x3FEAE4E5, 0x3C000000, 0xBE267CD1, 0x8C5A144A,
+ 0x3FEAF25B, 0x0C000000, 0xBE29E584, 0xB59DA94B,
+ 0x3FEAFFD7, 0x98000000, 0xBE23DFCF, 0x7B52192F,
+ 0x3FEB0D5A, 0xE4000000, 0xBE1CF2FE, 0x78A76B45,
+ 0x3FEB1AE4, 0xF4000000, 0xBE23A561, 0x7EC80FF6,
+ 0x3FEB2875, 0xC8000000, 0x3E22C4C9, 0x932EED68,
+ 0x3FEB360D, 0x68000000, 0x3E2B085C, 0xB5833C97,
+ 0x3FEB43AB, 0xD8000000, 0xBE01F093, 0x93B9319A,
+ 0x3FEB5151, 0x18000000, 0xBE254F01, 0xFABCE670,
+ 0x3FEB5EFD, 0x28000000, 0x3E2F24C2, 0x627ABFB0,
+ 0x3FEB6CB0, 0x14000000, 0x3E1F1EEC, 0xE6AC0B48,
+ 0x3FEB7A69, 0xDC000000, 0xBE1A8671, 0x127F9ABC,
+ 0x3FEB882A, 0x80000000, 0xBDCB0C28, 0xC87C73B3,
+ 0x3FEB95F2, 0x08000000, 0xBE22E8DD, 0x7F2B5A97,
+ 0x3FEBA3C0, 0x74000000, 0xBE1B3645, 0x2D22A9D5,
+ 0x3FEBB195, 0xC8000000, 0x3E0ADACA, 0x428F8B88,
+ 0x3FEBBF72, 0x0C000000, 0xBE2E9E07, 0xCDF9F681,
+ 0x3FEBCD55, 0x3C000000, 0xBE08A127, 0x7FA54ACF,
+ 0x3FEBDB3F, 0x60000000, 0x3E0E92CE, 0x8225B385,
+ 0x3FEBE930, 0x7C000000, 0x3DF38C2A, 0x7BB09485,
+ 0x3FEBF728, 0x94000000, 0xBE2DFD64, 0xF681FA5F,
+ 0x3FEC0527, 0xA4000000, 0x3E2E384D, 0xDCE88BD2,
+ 0x3FEC132D, 0xBC000000, 0xBE20F111, 0xFE46A893,
+ 0x3FEC213A, 0xD4000000, 0x3E193DA1, 0xB189BFDA,
+ 0x3FEC2F4E, 0xF8000000, 0xBE20E3A1, 0x0E39FB00,
+ 0x3FEC3D6A, 0x24000000, 0x3E1DB044, 0x30F0FAC5,
+ 0x3FEC4B8C, 0x64000000, 0xBE2BC12C, 0x97446B17,
+ 0x3FEC59B5, 0xB4000000, 0xBE282696, 0x963F4150,
+ 0x3FEC67E6, 0x18000000, 0x3E224D26, 0x3049824B,
+ 0x3FEC761D, 0x98000000, 0x3E2C5BA5, 0x87F84C7D,
+ 0x3FEC845C, 0x38000000, 0xBDE1D14D, 0xC4852339,
+ 0x3FEC92A1, 0xF8000000, 0xBE1A451E, 0x5588D9E1,
+ 0x3FECA0EE, 0xDC000000, 0xBE1D3B96, 0x68BFF457,
+ 0x3FECAF42, 0xE8000000, 0xBE18B670, 0x4DADF774,
+ 0x3FECBD9E, 0x20000000, 0xBE1A1548, 0x7FB1FC01,
+ 0x3FECCC00, 0x88000000, 0xBE273F2E, 0x78FC5AF0,
+ 0x3FECDA6A, 0x20000000, 0x3E1D218F, 0xA6F4A841,
+ 0x3FECE8DA, 0xF0000000, 0x3E2E0BA9, 0x4D002CA0,
+ 0x3FECF752, 0xFC000000, 0x3E20F4BB, 0x065EF979,
+ 0x3FED05D2, 0x48000000, 0xBE2ED3D5, 0x11793B33,
+ 0x3FED1458, 0xD0000000, 0x3E115E3C, 0x913341B3,
+ 0x3FED22E6, 0xA0000000, 0x3DE97C02, 0xB3546109,
+ 0x3FED317B, 0xB8000000, 0x3E087540, 0x1BF898EF,
+ 0x3FED4018, 0x1C000000, 0x3E209430, 0x346F9641,
+ 0x3FED4EBB, 0xD0000000, 0x3E2B6DF4, 0x88F4B20B,
+ 0x3FED5D66, 0xDC000000, 0xBE2EC68F, 0x0CB26035,
+ 0x3FED6C19, 0x38000000, 0x3E2CA2C8, 0x1F44D9C3,
+ 0x3FED7AD2, 0xF4000000, 0x3E10E6F4, 0x41704EE0,
+ 0x3FED8994, 0x0C000000, 0x3E2F9273, 0x25F8F0E2,
+ 0x3FED985C, 0x88000000, 0x3E2D041A, 0x318798DE,
+ 0x3FEDA72C, 0x6C000000, 0xBE005680, 0x9349CF58,
+ 0x3FEDB603, 0xB8000000, 0xBE10F665, 0xCF0C934D,
+ 0x3FEDC4E2, 0x70000000, 0x3E166124, 0x19461C64,
+ 0x3FEDD3C8, 0x9C000000, 0xBE1B2ED6, 0x405624C8,
+ 0x3FEDE2B6, 0x3C000000, 0xBE273A7F, 0x62171501,
+ 0x3FEDF1AB, 0x54000000, 0xBE26022B, 0xE36E1450,
+ 0x3FEE00A7, 0xE8000000, 0xBE1C341E, 0x2E07AE15,
+ 0x3FEE0FAB, 0xFC000000, 0xBDFC7EAE, 0x18D0E701,
+ 0x3FEE1EB7, 0x94000000, 0x3E06B34F, 0xECD1FF8B,
+ 0x3FEE2DCA, 0xB4000000, 0x3E1394A3, 0x6813A649,
+ 0x3FEE3CE5, 0x60000000, 0x3E045496, 0xC1754D14,
+ 0x3FEE4C07, 0x9C000000, 0xBE180FFF, 0xF5C6087C,
+ 0x3FEE5B31, 0x68000000, 0x3E22FBCD, 0xADD9A300,
+ 0x3FEE6A62, 0xCC000000, 0x3E2EC7C7, 0xAF0289E5,
+ 0x3FEE799B, 0xCC000000, 0x3E242182, 0x3FB3EDD4,
+ 0x3FEE88DC, 0x6C000000, 0xBE201304, 0x04E39885,
+ 0x3FEE9824, 0xAC000000, 0xBE20D352, 0xE6831D31,
+ 0x3FEEA774, 0x90000000, 0x3E1E032D, 0x618DFCEB,
+ 0x3FEEB6CC, 0x20000000, 0x3E1956A3, 0xF9BB457E,
+ 0x3FEEC62B, 0x60000000, 0xBE2A77E0, 0x50845DB2,
+ 0x3FEED592, 0x4C000000, 0x3E2714F7, 0x47C43858,
+ 0x3FEEE500, 0xF0000000, 0x3E2EED96, 0x71813A66,
+ 0x3FEEF477, 0x50000000, 0xBE04CDBE, 0x4FB4AA34,
+ 0x3FEF03F5, 0x6C000000, 0xBE2774A2, 0x86EB4FF5,
+ 0x3FEF137B, 0x48000000, 0xBE29DD95, 0xAD43B2D2,
+ 0x3FEF2308, 0xE8000000, 0xBE1CADB0, 0xAC16E506,
+ 0x3FEF329E, 0x50000000, 0x3E12AC33, 0x58745C7B,
+ 0x3FEF423B, 0x88000000, 0xBE248118, 0x6EC2D854,
+ 0x3FEF51E0, 0x8C000000, 0x3E26986B, 0x304ACE08,
+ 0x3FEF618D, 0x68000000, 0x3E126D81, 0x3B09354E,
+ 0x3FEF7142, 0x1C000000, 0x3DF06AAE, 0x773C23B3,
+ 0x3FEF80FE, 0xAC000000, 0xBDA105B6, 0xD82EF423,
+ 0x3FEF90C3, 0x1C000000, 0x3DECDEED, 0x465499B8,
+ 0x3FEFA08F, 0x70000000, 0x3E0AEFD4, 0xE2EF03AE,
+ 0x3FEFB063, 0xAC000000, 0x3E1BD4C0, 0x0567B2E7,
+ 0x3FEFC03F, 0xD4000000, 0x3E26AA22, 0x4F97FCBF,
+ 0x3FEFD023, 0xF0000000, 0xBE2F9420, 0x5E4E88D1,
+ 0x3FEFE00F, 0xFC000000, 0xBE254004, 0x438E52E2,
+ 0x3FEFF004, 0x00000000, 0xBE1552AA, 0xEEE93EFC,
+ 0x3FF00000, 0x00000000, 0x00000000, 0x00000000,
+ 0x3FF00802, 0x00000000, 0x3E155800, 0x4449F507,
+ 0x3FF01008, 0x04000000, 0xBE354AA8, 0x882D75D6,
+ 0x3FF01812, 0x08000000, 0x3E303610, 0x3740DE56,
+ 0x3FF02020, 0x14000000, 0x3E360044, 0x5B0C3264,
+ 0x3FF02832, 0x28000000, 0x3E3C4C26, 0x0197EDC3,
+ 0x3FF03048, 0x48000000, 0x3E0B103B, 0x5046CA09,
+ 0x3FF03862, 0x74000000, 0xBE34659C, 0xF9A62624,
+ 0x3FF04080, 0xAC000000, 0xBE254438, 0xDD0A8F37,
+ 0x3FF048A2, 0xF4000000, 0x3DF256C2, 0x97AFB6E2,
+ 0x3FF050C9, 0x50000000, 0xBE3085DF, 0x923D25E1,
+ 0x3FF058F3, 0xC0000000, 0xBE3F0A93, 0x5EA3B091,
+ 0x3FF06122, 0x44000000, 0xBE237DE4, 0x5D63534C,
+ 0x3FF06954, 0xE0000000, 0x3E301719, 0xFF0C58B7,
+ 0x3FF0718B, 0x98000000, 0x3E2E8410, 0x9DF7B665,
+ 0x3FF079C6, 0x6C000000, 0x3E349CB9, 0x3B127222,
+ 0x3FF08205, 0x60000000, 0x3DF127EC, 0x98E0BD08,
+ 0x3FF08A48, 0x74000000, 0xBE24C1B6, 0x706CC41F,
+ 0x3FF0928F, 0xA8000000, 0x3E334EF9, 0x093044EF,
+ 0x3FF09ADB, 0x04000000, 0xBE1304B1, 0x56BC6C83,
+ 0x3FF0A32A, 0x84000000, 0x3E2D383E, 0xB028B984,
+ 0x3FF0AB7E, 0x30000000, 0xBE315B1E, 0x64E7A202,
+ 0x3FF0B3D6, 0x04000000, 0xBE0AC1E6, 0xC678291E,
+ 0x3FF0BC32, 0x04000000, 0x3E3A0418, 0x2F12FFE2,
+ 0x3FF0C492, 0x38000000, 0xBE37D617, 0x43D6D302,
+ 0x3FF0CCF6, 0x98000000, 0x3E2133F2, 0x152CC8FA,
+ 0x3FF0D55F, 0x2C000000, 0x3E3CE5D1, 0xE966E6B7,
+ 0x3FF0DDCB, 0xF8000000, 0x3E1ABF24, 0x7BCACA64,
+ 0x3FF0E63C, 0xFC000000, 0xBE3854F6, 0x2E8CDBED,
+ 0x3FF0EEB2, 0x38000000, 0xBE3E6463, 0x0C32156B,
+ 0x3FF0F72B, 0xAC000000, 0x3E365671, 0xB69772CC,
+ 0x3FF0FFA9, 0x64000000, 0xBE383E9A, 0x02B1201A,
+ 0x3FF1082B, 0x58000000, 0xBE205962, 0x50549CC0,
+ 0x3FF110B1, 0x90000000, 0xBE376BFE, 0xFFDACA72,
+ 0x3FF1193C, 0x08000000, 0x3E3C1C59, 0x5C43E2F3,
+ 0x3FF121CA, 0xCC000000, 0xBE26D374, 0xF7067C8B,
+ 0x3FF12A5D, 0xD4000000, 0x3E343CCC, 0x4DDAFE1D,
+ 0x3FF132F5, 0x28000000, 0x3E3D5C16, 0x58EBCB7F,
+ 0x3FF13B90, 0xCC000000, 0xBE2B5D12, 0xB66E8B53,
+ 0x3FF14430, 0xBC000000, 0xBE24E919, 0xB326B482,
+ 0x3FF14CD4, 0xFC000000, 0x3E23139A, 0xC8AABD43,
+ 0x3FF1557D, 0x90000000, 0x3E30DD8B, 0x16743B55,
+ 0x3FF15E2A, 0x7C000000, 0xBE31D701, 0x35904C50,
+ 0x3FF166DB, 0xBC000000, 0x3E107F42, 0x30E0CA83,
+ 0x3FF16F91, 0x58000000, 0xBE24F1F2, 0xDA1B7123,
+ 0x3FF1784B, 0x50000000, 0xBE3ACAF2, 0x0DC79E23,
+ 0x3FF18109, 0xA4000000, 0xBE23DC79, 0x609374EE,
+ 0x3FF189CC, 0x58000000, 0x3E262CF7, 0x3A40C3B7,
+ 0x3FF19293, 0x70000000, 0x3E1D3833, 0x5A24F463,
+ 0x3FF19B5E, 0xEC000000, 0x3E2BA9AD, 0x8A2E4440,
+ 0x3FF1A42E, 0xD0000000, 0x3DFD8CBC, 0x61C41828,
+ 0x3FF1AD03, 0x1C000000, 0x3E1A65E6, 0x5A4DDF0D,
+ 0x3FF1B5DB, 0xD4000000, 0xBDE2FDBB, 0x9F828DB5,
+ 0x3FF1BEB8, 0xF8000000, 0x3E2F4EE8, 0xB79B700F,
+ 0x3FF1C79A, 0x8C000000, 0x3E3ACC35, 0x0DE1D7E8,
+ 0x3FF1D080, 0x94000000, 0x3E11729E, 0xFF9E20A0,
+ 0x3FF1D96B, 0x10000000, 0xBE300F18, 0x6C2EA70B,
+ 0x3FF1E25A, 0x00000000, 0x3DF32E02, 0xCE425A35,
+ 0x3FF1EB4D, 0x68000000, 0x3E3BDE56, 0x9A322D12,
+ 0x3FF1F445, 0x50000000, 0xBE3C3F0D, 0xBA737AEF,
+ 0x3FF1FD41, 0xB0000000, 0xBE0A2DD0, 0xC896DB7A,
+ 0x3FF20642, 0x90000000, 0x3E2577B0, 0xF8B782F6,
+ 0x3FF20F47, 0xF4000000, 0xBE2C6DA3, 0x73607FC8,
+ 0x3FF21851, 0xD8000000, 0x3E35F7D1, 0xC8917348,
+ 0x3FF22160, 0x44000000, 0x3E3B6F5C, 0xCF9CED69,
+ 0x3FF22A73, 0x3C000000, 0xBE39967E, 0x85775C2E,
+ 0x3FF2338A, 0xB8000000, 0x3E3B3213, 0x497226D4,
+ 0x3FF23CA6, 0xC4000000, 0x3E3E2710, 0x30733227,
+ 0x3FF245C7, 0x60000000, 0x3E33B8A9, 0xAF215A72,
+ 0x3FF24EEC, 0x90000000, 0xBE3F96B2, 0x1365623F,
+ 0x3FF25816, 0x50000000, 0xBE37324F, 0x27DEE202,
+ 0x3FF26144, 0xA4000000, 0x3E318CD5, 0x4E484D87,
+ 0x3FF26A77, 0x94000000, 0xBDE3FD37, 0xA94519E8,
+ 0x3FF273AF, 0x1C000000, 0x3E37132F, 0xEE788C29,
+ 0x3FF27CEB, 0x44000000, 0xBE03DDB7, 0xE842E5C0,
+ 0x3FF2862C, 0x08000000, 0x3E37A3FB, 0xE17C9693,
+ 0x3FF28F71, 0x70000000, 0x3E24EABF, 0xAEB3D9A0,
+ 0x3FF298BB, 0x7C000000, 0xBE13C7B6, 0x853B0733,
+ 0x3FF2A20A, 0x2C000000, 0x3E2D2C80, 0xC7B588B5,
+ 0x3FF2AB5D, 0x88000000, 0xBE35B750, 0x708F3912,
+ 0x3FF2B4B5, 0x8C000000, 0xBE291A70, 0xD5FD9130,
+ 0x3FF2BE12, 0x3C000000, 0x3E2EE937, 0x0CCF9F73,
+ 0x3FF2C773, 0xA0000000, 0xBE3C3F0C, 0xD42CF76C,
+ 0x3FF2D0D9, 0xB0000000, 0x3E35DD54, 0x60763D61,
+ 0x3FF2DA44, 0x78000000, 0x3E26C418, 0xE7D6AA3B,
+ 0x3FF2E3B3, 0xF8000000, 0xBE3605C6, 0x6FB9B7A8,
+ 0x3FF2ED28, 0x2C000000, 0x3E3763D4, 0x24DCDDF5,
+ 0x3FF2F6A1, 0x20000000, 0xBE1A411E, 0xA8EC1AA8,
+ 0x3FF3001E, 0xD0000000, 0xBE23FCA1, 0x1FE8546F,
+ 0x3FF309A1, 0x40000000, 0xBE29DF0D, 0x3AAEE75E,
+ 0x3FF31328, 0x70000000, 0x3E36A5D6, 0x3C2C4206,
+ 0x3FF31CB4, 0x68000000, 0x3E1B7A3E, 0xB4C979B0,
+ 0x3FF32645, 0x28000000, 0xBE36157D, 0x706CD593,
+ 0x3FF32FDA, 0xB0000000, 0xBE39F357, 0x8DA4C646,
+ 0x3FF33975, 0x04000000, 0xBE3E64DE, 0xD575FE6F,
+ 0x3FF34314, 0x24000000, 0x3E07F9E3, 0x44D008E0,
+ 0x3FF34CB8, 0x18000000, 0xBE2E94F9, 0x5A563E77,
+ 0x3FF35660, 0xDC000000, 0x3E314DC2, 0x2475EF19,
+ 0x3FF3600E, 0x78000000, 0x3E26D623, 0xA33AC606,
+ 0x3FF369C0, 0xEC000000, 0x3E170F86, 0xC05B3160,
+ 0x3FF37378, 0x3C000000, 0xBE38DDFE, 0xDB0AE31A,
+ 0x3FF37D34, 0x64000000, 0x3E3662A9, 0x5706B570,
+ 0x3FF386F5, 0x70000000, 0xBE1625E4, 0x6770731E,
+ 0x3FF390BB, 0x5C000000, 0xBE1678F1, 0x62971091,
+ 0x3FF39A86, 0x2C000000, 0xBE061F7C, 0xD045CB0C,
+ 0x3FF3A455, 0xE4000000, 0xBE35CF51, 0x568B1CA2,
+ 0x3FF3AE2A, 0x84000000, 0xBE378185, 0x7FB61F58,
+ 0x3FF3B804, 0x0C000000, 0x3E3F77F4, 0x4FA133AF,
+ 0x3FF3C1E2, 0x88000000, 0xBE22F96A, 0xB00B73FE,
+ 0x3FF3CBC5, 0xF0000000, 0x3E351A64, 0x1EB4CE2F,
+ 0x3FF3D5AE, 0x50000000, 0xBE3D3516, 0xD3755639,
+ 0x3FF3DF9B, 0xA0000000, 0x3E1CD938, 0x43E8C10E,
+ 0x3FF3E98D, 0xEC000000, 0xBE35EE23, 0x455C8842,
+ 0x3FF3F385, 0x30000000, 0xBE29B282, 0x96C9F4ED,
+ 0x3FF3FD81, 0x70000000, 0x3E24A40E, 0x3168CC0B,
+ 0x3FF40782, 0xB0000000, 0x3E3784BC, 0x86C72839,
+ 0x3FF41188, 0xF4000000, 0x3E061F19, 0x0785D847,
+ 0x3FF41B94, 0x3C000000, 0xBE27AEF2, 0xE654A9C9,
+ 0x3FF425A4, 0x88000000, 0x3E33DFC3, 0xF9E4C1BA,
+ 0x3FF42FB9, 0xE0000000, 0x3E2455A8, 0x593D0C75,
+ 0x3FF439D4, 0x44000000, 0xBDE41D4E, 0x238B65D1,
+ 0x3FF443F3, 0xB4000000, 0x3E3BE616, 0x454CBECB,
+ 0x3FF44E18, 0x38000000, 0x3E207B3C, 0x931C5332,
+ 0x3FF45841, 0xD0000000, 0xBE330846, 0x7615DCC9,
+ 0x3FF46270, 0x7C000000, 0xBE2A8A7B, 0xE497F84E,
+ 0x3FF46CA4, 0x40000000, 0x3E020B50, 0xF737AF78,
+ 0x3FF476DD, 0x20000000, 0x3E116B19, 0xE34AFBD3,
+ 0x3FF4811B, 0x20000000, 0xBE3E15A7, 0x841EDB52,
+ 0x3FF48B5E, 0x3C000000, 0x3E0F40C3, 0x33B3DE1E,
+ 0x3FF495A6, 0x7C000000, 0x3E33607F, 0x92EFEE02,
+ 0x3FF49FF3, 0xE4000000, 0xBE1A2DB5, 0x14F7E168,
+ 0x3FF4AA46, 0x70000000, 0x3E3F59EC, 0x3EBA1C94,
+ 0x3FF4B49E, 0x2C000000, 0xBE31A539, 0x8B9AE885,
+ 0x3FF4BEFB, 0x10000000, 0x3E2FAC0B, 0xF13C8C95,
+ 0x3FF4C95D, 0x28000000, 0xBE32C0BB, 0xF8B74775,
+ 0x3FF4D3C4, 0x70000000, 0xBE2FC24E, 0x4F9474BB,
+ 0x3FF4DE30, 0xEC000000, 0x3E008F30, 0x09DA911F,
+ 0x3FF4E8A2, 0xA0000000, 0x3E2994C1, 0xBAF8D98B,
+ 0x3FF4F319, 0x90000000, 0xBE17C38C, 0x18648D0A,
+ 0x3FF4FD95, 0xBC000000, 0xBE288852, 0xF22F8698,
+ 0x3FF50817, 0x28000000, 0xBE3C3EC3, 0x30A2C153,
+ 0x3FF5129D, 0xD4000000, 0xBE27B606, 0x968492AA,
+ 0x3FF51D29, 0xC4000000, 0x3E2E0396, 0x61101629,
+ 0x3FF527BA, 0xFC000000, 0x3E3E876F, 0xDAEEAB38,
+ 0x3FF53251, 0x80000000, 0x3E29F59E, 0xED945B30,
+ 0x3FF53CED, 0x50000000, 0x3E12D7DA, 0x0B4AE3F1,
+ 0x3FF5478E, 0x70000000, 0xBE2FAFB8, 0x5FB946D0,
+ 0x3FF55234, 0xE0000000, 0xBE18A8B3, 0x87D80C66,
+ 0x3FF55CE0, 0xA4000000, 0x3E28B18F, 0x764CF85C,
+ 0x3FF56791, 0xC0000000, 0x3E326017, 0x2BDBC6F4,
+ 0x3FF57248, 0x38000000, 0xBE229F98, 0x53D523FE,
+ 0x3FF57D04, 0x0C000000, 0xBE3BDD08, 0x4D9B8720,
+ 0x3FF587C5, 0x3C000000, 0x3E169EBC, 0x09D8749E,
+ 0x3FF5928B, 0xD0000000, 0x3E190C8C, 0x339C2080,
+ 0x3FF59D57, 0xC8000000, 0x3E310FA4, 0xDE75E9CA,
+ 0x3FF5A829, 0x28000000, 0x3E313D18, 0x1097F186,
+ 0x3FF5B2FF, 0xF4000000, 0xBE2BDE04, 0xD51C23F6,
+ 0x3FF5BDDC, 0x28000000, 0x3E3EE67E, 0x8938C386,
+ 0x3FF5C8BD, 0xD0000000, 0x3E0973B8, 0x47DF6575,
+ 0x3FF5D3A4, 0xE8000000, 0x3E24DF02, 0x1DB97781,
+ 0x3FF5DE91, 0x78000000, 0xBE3FBA00, 0xAC4AECDC,
+ 0x3FF5E983, 0x7C000000, 0xBE2F37AF, 0x939F646A,
+ 0x3FF5F47A, 0xFC000000, 0xBE396DEF, 0x58A6EEE9,
+ 0x3FF5FF77, 0xF8000000, 0xBE315248, 0xE3613C7B,
+ 0x3FF60A7A, 0x74000000, 0xBE26A9E2, 0xF1553706,
+ 0x3FF61582, 0x74000000, 0xBE3B6BF6, 0xAE4D7CB6,
+ 0x3FF6208F, 0xF8000000, 0xBE35775B, 0x9EB5EBA5,
+ 0x3FF62BA3, 0x04000000, 0xBE2A821B, 0xC1E43506,
+ 0x3FF636BB, 0x9C000000, 0xBE367CDA, 0x7B2D8CF4,
+ 0x3FF641D9, 0xC0000000, 0xBE13218B, 0x3E907A1D,
+ 0x3FF64CFD, 0x74000000, 0x3E3454EE, 0x7BF5DFE4,
+ 0x3FF65826, 0xC0000000, 0xBE3E960F, 0x6366C5FD,
+ 0x3FF66355, 0x9C000000, 0x3E2E378F, 0x8B43C17E,
+ 0x3FF66E8A, 0x14000000, 0x3E244BE0, 0xA4306535,
+ 0x3FF679C4, 0x28000000, 0xBDE4B6C1, 0x8DF63D6E,
+ 0x3FF68503, 0xD8000000, 0x3E3BA122, 0xE6A239CF,
+ 0x3FF69049, 0x2C000000, 0x3E27F286, 0x59FB5F30,
+ 0x3FF69B94, 0x24000000, 0xBE044041, 0x971D3970 } };
+
+static const union {
+ int4 i[2048];
+ double x[1024];
+} fine = { .i = {
+ 0x3FF00000, 0x00000000, 0x00000000, 0x00000000,
+ 0x3FF00004, 0x00000000, 0x3DA00001, 0x55556AAB,
+ 0x3FF00008, 0x00000000, 0x3DC00002, 0xAAAB0000,
+ 0x3FF0000C, 0x00000000, 0x3DD20004, 0x8000D800,
+ 0x3FF00010, 0x00000000, 0x3DE00005, 0x5556AAAB,
+ 0x3FF00014, 0x00000000, 0x3DE9000A, 0x6AADEC01,
+ 0x3FF00018, 0x00000000, 0x3DF20009, 0x00036001,
+ 0x3FF0001C, 0x00000000, 0x3DF8800E, 0x4AB0EB58,
+ 0x3FF00020, 0x00000000, 0x3E00000A, 0xAAB00002,
+ 0x3FF00024, 0x00000000, 0x3E04400F, 0x30088B04,
+ 0x3FF00028, 0x00000000, 0x3E090014, 0xD5625AB1,
+ 0x3FF0002C, 0x00000000, 0x3E0E401B, 0xBABDBB0A,
+ 0x3FF00030, 0x00000000, 0x3E120012, 0x000D8008,
+ 0x3FF00034, 0x00000000, 0x3E152016, 0xE2BD42E1,
+ 0x3FF00038, 0x00000000, 0x3E18801C, 0x956E5812,
+ 0x3FF0003C, 0x00000000, 0x3E1C2023, 0x2820F599,
+ 0x3FF00040, 0x00000000, 0x3E200015, 0x556AAABC,
+ 0x3FF00044, 0x00000000, 0x3E221019, 0x96C5DAD7,
+ 0x3FF00048, 0x00000000, 0x3E24401E, 0x60222C1F,
+ 0x3FF0004C, 0x00000000, 0x3E269023, 0xB97FC193,
+ 0x3FF00050, 0x00000000, 0x3E290029, 0xAADEC034,
+ 0x3FF00054, 0x00000000, 0x3E2B9030, 0x3C3F4F02,
+ 0x3FF00058, 0x00000000, 0x3E2E4037, 0x75A196FF,
+ 0x3FF0005C, 0x00000000, 0x3E30881F, 0xAF82E194,
+ 0x3FF00060, 0x00000000, 0x3E320024, 0x00360041,
+ 0x3FF00064, 0x00000000, 0x3E338828, 0xB0EA3F05,
+ 0x3FF00068, 0x00000000, 0x3E35202D, 0xC59FB661,
+ 0x3FF0006C, 0x00000000, 0x3E36C833, 0x42567FD5,
+ 0x3FF00070, 0x00000000, 0x3E388039, 0x2B0EB5E1,
+ 0x3FF00074, 0x00000000, 0x3E3A483F, 0x83C87407,
+ 0x3FF00078, 0x00000000, 0x3E3C2046, 0x5083D6C6,
+ 0x3FF0007C, 0x00000000, 0x3E3E084D, 0x9540FB9E,
+ 0x3FF00080, 0x04000000, 0xBE3FFFAA, 0xA9FFFEEF,
+ 0x3FF00084, 0x04000000, 0xBE3DF7A2, 0x693EF962,
+ 0x3FF00088, 0x04000000, 0xBE3BDF99, 0xA47BD339,
+ 0x3FF0008C, 0x04000000, 0xBE39B790, 0x57B66AF5,
+ 0x3FF00090, 0x04000000, 0xBE377F86, 0x7EEE9E14,
+ 0x3FF00094, 0x04000000, 0xBE35377C, 0x16244916,
+ 0x3FF00098, 0x04000000, 0xBE32DF71, 0x1957477B,
+ 0x3FF0009C, 0x04000000, 0xBE307765, 0x848773C2,
+ 0x3FF000A0, 0x04000000, 0xBE2BFEB2, 0xA7694ED3,
+ 0x3FF000A4, 0x04000000, 0xBE26EE99, 0x05BD75E2,
+ 0x3FF000A8, 0x04000000, 0xBE21BE7E, 0x1C0B0BB1,
+ 0x3FF000AC, 0x04000000, 0xBE18DCC3, 0xC4A37A79,
+ 0x3FF000B0, 0x04000000, 0xBE0BF911, 0x4244D60F,
+ 0x3FF000B4, 0x04000000, 0xBDE6E255, 0xEC91D848,
+ 0x3FF000B8, 0x04000000, 0x3E0107EB, 0xEC1B8F0C,
+ 0x3FF000BC, 0x04000000, 0x3E142439, 0x89BE52AA,
+ 0x3FF000C0, 0x04000000, 0x3E200240, 0x06C01033,
+ 0x3FF000C4, 0x04000000, 0x3E261264, 0xC8A9F760,
+ 0x3FF000C8, 0x04000000, 0x3E2C428B, 0x129D3FDE,
+ 0x3FF000CC, 0x04000000, 0x3E314959, 0x764D2658,
+ 0x3FF000D0, 0x04000000, 0x3E34816E, 0x2F50C16C,
+ 0x3FF000D4, 0x04000000, 0x3E37C983, 0xB859A4AB,
+ 0x3FF000D8, 0x04000000, 0x3E3B219A, 0x15680499,
+ 0x3FF000DC, 0x04000000, 0x3E3E89B1, 0x4A7C16B5,
+ 0x3FF000E0, 0x08000000, 0xBE3DFE36, 0xA469EE7E,
+ 0x3FF000E4, 0x08000000, 0xBE3A761D, 0xB349D37F,
+ 0x3FF000E8, 0x08000000, 0xBE36DE03, 0xDE235FCD,
+ 0x3FF000EC, 0x08000000, 0xBE3335E9, 0x20F659E6,
+ 0x3FF000F0, 0x08000000, 0xBE2EFB9A, 0xEF850E8F,
+ 0x3FF000F4, 0x08000000, 0xBE276B61, 0xBD0F58E2,
+ 0x3FF000F8, 0x08000000, 0xBE1F764D, 0x45163381,
+ 0x3FF000FC, 0x08000000, 0xBE0FABA6, 0x5FDF589A,
+ 0x3FF00100, 0x08000000, 0x3D8555AA, 0xABBBBE94,
+ 0x3FF00104, 0x08000000, 0x3E102B2C, 0xDABB690B,
+ 0x3FF00108, 0x08000000, 0x3E2045D9, 0x7820FBA0,
+ 0x3FF0010C, 0x08000000, 0x3E28961E, 0x92F54742,
+ 0x3FF00110, 0x08000000, 0x3E308332, 0xE2ED8E39,
+ 0x3FF00114, 0x08000000, 0x3E34CB57, 0x8C698119,
+ 0x3FF00118, 0x08000000, 0x3E39237D, 0x49EEC0C4,
+ 0x3FF0011C, 0x08000000, 0x3E3D8BA4, 0x1F7D92BC,
+ 0x3FF00120, 0x0C000000, 0xBE3DFC33, 0xEEE9C27D,
+ 0x3FF00124, 0x0C000000, 0xBE39740A, 0xDD46F763,
+ 0x3FF00128, 0x0C000000, 0xBE34DBE0, 0xA799C375,
+ 0x3FF0012C, 0x0C000000, 0xBE3033B5, 0x49E1DD2F,
+ 0x3FF00130, 0x0C000000, 0xBE26F711, 0x803DF41F,
+ 0x3FF00134, 0x0C000000, 0xBE1ACD6C, 0x19433A4C,
+ 0x3FF00138, 0x0C000000, 0xBDFDB2C1, 0x8770E36F,
+ 0x3FF0013C, 0x0C000000, 0x3E086820, 0x6B74A43E,
+ 0x3FF00140, 0x0C000000, 0x3E200A6A, 0xDEC0D058,
+ 0x3FF00144, 0x0C000000, 0x3E2A1AD0, 0x22BD7872,
+ 0x3FF00148, 0x0C000000, 0x3E32259B, 0xF769E132,
+ 0x3FF0014C, 0x0C000000, 0x3E374DD1, 0x2582289A,
+ 0x3FF00150, 0x0C000000, 0x3E3C8607, 0x9FA7E4F4,
+ 0x3FF00154, 0x10000000, 0xBE3E31C0, 0x9624963C,
+ 0x3FF00158, 0x10000000, 0xBE38D987, 0x77E2F472,
+ 0x3FF0015C, 0x10000000, 0xBE33714D, 0x0192E02C,
+ 0x3FF00160, 0x10000000, 0xBE2BF222, 0x5E6805CB,
+ 0x3FF00164, 0x10000000, 0xBE20E1A7, 0xF98C0A34,
+ 0x3FF00168, 0x10000000, 0xBE06C4AB, 0x32447238,
+ 0x3FF0016C, 0x10000000, 0x3E067D54, 0xC225D8C1,
+ 0x3FF00170, 0x10000000, 0x3E210FD8, 0x05C4630F,
+ 0x3FF00174, 0x10000000, 0x3E2CA05D, 0xBB206115,
+ 0x3FF00178, 0x10000000, 0x3E342873, 0x2C4F14A6,
+ 0x3FF0017C, 0x10000000, 0x3E3A10B8, 0xF31F3B5E,
+ 0x3FF00180, 0x14000000, 0xBE3FF6FF, 0xC9FEFCC9,
+ 0x3FF00184, 0x14000000, 0xBE39EEB7, 0x070B344A,
+ 0x3FF00188, 0x14000000, 0xBE33D66C, 0xC0050AA2,
+ 0x3FF0018C, 0x14000000, 0xBE2B5C41, 0xE1D83C97,
+ 0x3FF00190, 0x14000000, 0xBE1DD74E, 0x57003305,
+ 0x3FF00194, 0x14000000, 0xBDF2D84A, 0xA80727F1,
+ 0x3FF00198, 0x14000000, 0x3E14AB2F, 0x534C5401,
+ 0x3FF0019C, 0x14000000, 0x3E27263B, 0xD875DE83,
+ 0x3FF001A0, 0x14000000, 0x3E320B71, 0x9FB782CA,
+ 0x3FF001A4, 0x14000000, 0x3E3893C6, 0xF349371F,
+ 0x3FF001A8, 0x14000000, 0x3E3F2C1D, 0xEAF074C6,
+ 0x3FF001AC, 0x18000000, 0xBE3A2B89, 0x75525ABC,
+ 0x3FF001B0, 0x18000000, 0xBE33732F, 0x297ECCE2,
+ 0x3FF001B4, 0x18000000, 0xBE2955A6, 0x5B28EC49,
+ 0x3FF001B8, 0x18000000, 0xBE1749D5, 0xF64BA7FD,
+ 0x3FF001BC, 0x18000000, 0x3DF15E9E, 0xA8645141,
+ 0x3FF001C0, 0x18000000, 0x3E201C96, 0x1D6F0B37,
+ 0x3FF001C4, 0x18000000, 0x3E2E2D5B, 0xE6028E39,
+ 0x3FF001C8, 0x18000000, 0x3E362F12, 0x9B63FA1E,
+ 0x3FF001CC, 0x18000000, 0x3E3D5779, 0x0BE01026,
+ 0x3FF001D0, 0x1C000000, 0xBE3B701E, 0xB78A0445,
+ 0x3FF001D4, 0x1C000000, 0xBE3427B4, 0xAAD9CF9D,
+ 0x3FF001D8, 0x1C000000, 0xBE299E91, 0x941DBAB5,
+ 0x3FF001DC, 0x1C000000, 0xBE159B6C, 0x44A2DFDD,
+ 0x3FF001E0, 0x1C000000, 0x3E008CA4, 0x1EC8B89C,
+ 0x3FF001E4, 0x1C000000, 0x3E23340B, 0xF1EE0E9A,
+ 0x3FF001E8, 0x1C000000, 0x3E313279, 0x5231913C,
+ 0x3FF001EC, 0x1C000000, 0x3E38DAEE, 0x93892E68,
+ 0x3FF001F0, 0x20000000, 0xBE3F6C9A, 0x3F01A6A8,
+ 0x3FF001F4, 0x20000000, 0xBE37A421, 0x216E726C,
+ 0x3FF001F8, 0x20000000, 0xBE2F974C, 0x1F7970B9,
+ 0x3FF001FC, 0x20000000, 0xBE1F8CA4, 0x17AFEBC8,
+ 0x3FF00200, 0x20000000, 0x3DB55600, 0x04445B06,
+ 0x3FF00204, 0x20000000, 0x3E203BAE, 0x0C290A26,
+ 0x3FF00208, 0x20000000, 0x3E30365A, 0x104547BD,
+ 0x3FF0020C, 0x20000000, 0x3E385EDF, 0x22970DE3,
+ 0x3FF00210, 0x24000000, 0xBE3F6899, 0xBEF5A5F4,
+ 0x3FF00214, 0x24000000, 0xBE372010, 0x90605040,
+ 0x3FF00218, 0x24000000, 0xBE2D8F0A, 0x9B50D8EE,
+ 0x3FF0021C, 0x24000000, 0xBE197BDF, 0xCB35D444,
+ 0x3FF00220, 0x24000000, 0x3E00CCBC, 0x2188E3D5,
+ 0x3FF00224, 0x24000000, 0x3E254452, 0x36A79F6A,
+ 0x3FF00228, 0x24000000, 0x3E333ABC, 0xD69B2D28,
+ 0x3FF0022C, 0x24000000, 0x3E3BE352, 0xBA07BE5B,
+ 0x3FF00230, 0x28000000, 0xBE3B6415, 0x3665F227,
+ 0x3FF00234, 0x28000000, 0xBE329B7A, 0xF6AD58D5,
+ 0x3FF00238, 0x28000000, 0xBE2385BD, 0x059BD24A,
+ 0x3FF0023C, 0x28000000, 0xBDEB47FA, 0xD8E2B1B4,
+ 0x3FF00240, 0x28000000, 0x3E203CC2, 0x22CF60F6,
+ 0x3FF00244, 0x28000000, 0x3E312704, 0x39BEF87F,
+ 0x3FF00248, 0x28000000, 0x3E3A3FA9, 0xA63F5309,
+ 0x3FF0024C, 0x2C000000, 0xBE3C97AE, 0xA516AE5E,
+ 0x3FF00250, 0x2C000000, 0xBE335F04, 0xA442792A,
+ 0x3FF00254, 0x2C000000, 0xBE242CB0, 0xA686F3A2,
+ 0x3FF00258, 0x2C000000, 0xBDE7B535, 0xC3237903,
+ 0x3FF0025C, 0x2C000000, 0x3E21560E, 0x9E7A6CF7,
+ 0x3FF00260, 0x2C000000, 0x3E3223BA, 0xA8C01385,
+ 0x3FF00264, 0x2C000000, 0x3E3BAC70, 0x627012DF,
+ 0x3FF00268, 0x30000000, 0xBE3ABAD7, 0x7FB232EA,
+ 0x3FF0026C, 0x30000000, 0xBE31121C, 0xF9A6244B,
+ 0x3FF00270, 0x30000000, 0xBE1D6580, 0x1DAC9AE4,
+ 0x3FF00274, 0x30000000, 0x3E037AFA, 0xD7FB0AC3,
+ 0x3FF00278, 0x30000000, 0x3E289042, 0x633420EB,
+ 0x3FF0027C, 0x30000000, 0x3E3630E5, 0x8065842A,
+ 0x3FF00280, 0x34000000, 0xBE3FD653, 0xB49DA4FF,
+ 0x3FF00284, 0x34000000, 0xBE35CD8A, 0x696ECB76,
+ 0x3FF00288, 0x34000000, 0xBE27697D, 0x341A9D63,
+ 0x3FF0028C, 0x34000000, 0xBDF8BF04, 0x2788D238,
+ 0x3FF00290, 0x34000000, 0x3E2159C1, 0x42A03782,
+ 0x3FF00294, 0x34000000, 0x3E32F5B4, 0x154D4F89,
+ 0x3FF00298, 0x34000000, 0x3E3D4E8A, 0x1D7FB2C1,
+ 0x3FF0029C, 0x38000000, 0xBE38489D, 0x42181508,
+ 0x3FF002A0, 0x38000000, 0xBE2B9F84, 0x0AF2C28C,
+ 0x3FF002A4, 0x38000000, 0xBE0A3721, 0x451C5357,
+ 0x3FF002A8, 0x38000000, 0x3E1D47F1, 0x61A8605E,
+ 0x3FF002AC, 0x38000000, 0x3E31FADF, 0x81B02FCF,
+ 0x3FF002B0, 0x38000000, 0x3E3CB3C5, 0x572F674A,
+ 0x3FF002B4, 0x3C000000, 0xBE388352, 0x231795EA,
+ 0x3FF002B8, 0x3C000000, 0xBE2B54CD, 0xD248367A,
+ 0x3FF002BC, 0x3C000000, 0xBE060BC7, 0xB7ABD90D,
+ 0x3FF002C0, 0x3C000000, 0x3E206EEF, 0x6EE9F1EF,
+ 0x3FF002C4, 0x3C000000, 0x3E33406B, 0x261BF09E,
+ 0x3FF002C8, 0x3C000000, 0x3E3E5961, 0x59001C60,
+ 0x3FF002CC, 0x40000000, 0xBE367DA5, 0xABDDD232,
+ 0x3FF002D0, 0x40000000, 0xBE268953, 0xC8FA5113,
+ 0x3FF002D4, 0x40000000, 0x3D9152CC, 0x8B33A701,
+ 0x3FF002D8, 0x40000000, 0x3E26BAAC, 0x3E058570,
+ 0x3FF002DC, 0x40000000, 0x3E36C65A, 0x63236E71,
+ 0x3FF002E0, 0x44000000, 0xBE3DC09E, 0x7C7A795C,
+ 0x3FF002E4, 0x44000000, 0xBE323794, 0x7BD63D1D,
+ 0x3FF002E8, 0x44000000, 0xBE1A7A1E, 0x5BBC9105,
+ 0x3FF002EC, 0x44000000, 0x3E142A20, 0xD8EE2B1B,
+ 0x3FF002F0, 0x44000000, 0x3E30C39A, 0xEFAA8A8D,
+ 0x3FF002F4, 0x44000000, 0x3E3C8CB0, 0x995E96A2,
+ 0x3FF002F8, 0x48000000, 0xBE379A36, 0xC8A79469,
+ 0x3FF002FC, 0x48000000, 0xBE276236, 0x64CE7203,
+ 0x3FF00300, 0x48000000, 0x3DD200D8, 0x0819DA68,
+ 0x3FF00304, 0x48000000, 0x3E28A249, 0xE5E018D4,
+ 0x3FF00308, 0x48000000, 0x3E386A49, 0x8A087692,
+ 0x3FF0030C, 0x4C000000, 0xBE3B6C8E, 0xD695988B,
+ 0x3FF00310, 0x4C000000, 0xBE2E66C8, 0x55D2BCBA,
+ 0x3FF00314, 0x4C000000, 0xBE0751B3, 0x7790BA7A,
+ 0x3FF00318, 0x4C000000, 0x3E22DDF4, 0xC2A20261,
+ 0x3FF0031C, 0x4C000000, 0x3E35D82E, 0x49E0B0B5,
+ 0x3FF00320, 0x50000000, 0xBE3DAE9A, 0xB142422E,
+ 0x3FF00324, 0x50000000, 0xBE312560, 0x8C170FE6,
+ 0x3FF00328, 0x50000000, 0xBE12308D, 0x0A73BF77,
+ 0x3FF0032C, 0x50000000, 0x3E203A3A, 0x5E59CEFA,
+ 0x3FF00330, 0x50000000, 0x3E34D660, 0xCD4740BF,
+ 0x3FF00334, 0x54000000, 0xBE3E6058, 0x644D1883,
+ 0x3FF00338, 0x54000000, 0xBE31870E, 0x618F57B6,
+ 0x3FF0033C, 0x54000000, 0xBE127704, 0x99FABD0F,
+ 0x3FF00340, 0x54000000, 0x3E20B71E, 0xA1CB5ECF,
+ 0x3FF00344, 0x54000000, 0x3E3564E3, 0x089E93E1,
+ 0x3FF00348, 0x58000000, 0xBE3D81C5, 0xFB533142,
+ 0x3FF0034C, 0x58000000, 0xBE30586B, 0xB6EECE6C,
+ 0x3FF00350, 0x58000000, 0xBE08F871, 0x319B883E,
+ 0x3FF00354, 0x58000000, 0x3E2454A5, 0x75BF7503,
+ 0x3FF00358, 0x58000000, 0x3E3783B6, 0xF04B88C5,
+ 0x3FF0035C, 0x5C000000, 0xBE3B12E1, 0x81EF30A7,
+ 0x3FF00360, 0x5C000000, 0xBE2B32ED, 0x2F9F3657,
+ 0x3FF00364, 0x5C000000, 0xBDB0084D, 0x54DF31BC,
+ 0x3FF00368, 0x5C000000, 0x3E2B12D2, 0xC303B7B9,
+ 0x3FF0036C, 0x5C000000, 0x3E3B32DE, 0x78B56F97,
+ 0x3FF00370, 0x60000000, 0xBE3713A9, 0x03B9496C,
+ 0x3FF00374, 0x60000000, 0xBE22945A, 0x1F92E726,
+ 0x3FF00378, 0x60000000, 0x3E123D49, 0x621736DF,
+ 0x3FF0037C, 0x60000000, 0x3E3278D5, 0x3935580D,
+ 0x3FF00380, 0x64000000, 0xBE3F8DA4, 0x69B9F5FB,
+ 0x3FF00384, 0x64000000, 0xBE31841A, 0x8C473CC8,
+ 0x3FF00388, 0x64000000, 0xBE0B5469, 0x538CDE07,
+ 0x3FF0038C, 0x64000000, 0x3E257E07, 0x7F8F9D65,
+ 0x3FF00390, 0x64000000, 0x3E38F898, 0x3665E52B,
+ 0x3FF00394, 0x68000000, 0xBE38BDCF, 0xC29674BD,
+ 0x3FF00398, 0x68000000, 0xBE24C868, 0x4E58B4D9,
+ 0x3FF0039C, 0x68000000, 0x3E1015AC, 0x329466D7,
+ 0x3FF003A0, 0x68000000, 0x3E327F0D, 0xDCDECE44,
+ 0x3FF003A4, 0x6C000000, 0xBE3EF74B, 0xB27E5528,
+ 0x3FF003A8, 0x6C000000, 0xBE305DA1, 0x9D7167F2,
+ 0x3FF003AC, 0x6C000000, 0xBDFB3F3D, 0xFF980820,
+ 0x3FF003B0, 0x6C000000, 0x3E2A0B7B, 0x13D49789,
+ 0x3FF003B4, 0x6C000000, 0x3E3BCF72, 0xA43AE87C,
+ 0x3FF003B8, 0x70000000, 0xBE3556D4, 0x8D06BDC0,
+ 0x3FF003BC, 0x70000000, 0xBE19B460, 0x1766E54D,
+ 0x3FF003C0, 0x70000000, 0x3E211950, 0x7B85C8BA,
+ 0x3FF003C4, 0x70000000, 0x3E37966C, 0x41D00AED,
+ 0x3FF003C8, 0x74000000, 0xBE394FCB, 0xF5B15507,
+ 0x3FF003CC, 0x74000000, 0xBE244C00, 0xC98093C4,
+ 0x3FF003D0, 0x74000000, 0x3E144F3B, 0xE2907BDF,
+ 0x3FF003D4, 0x74000000, 0x3E345DA2, 0x267CD924,
+ 0x3FF003D8, 0x78000000, 0xBE3C4886, 0xD73526C0,
+ 0x3FF003DC, 0x78000000, 0xBE29BD57, 0xF8E1D62E,
+ 0x3FF003E0, 0x78000000, 0x3E04D995, 0xD65415E1,
+ 0x3FF003E4, 0x78000000, 0x3E322515, 0x527E1A58,
+ 0x3FF003E8, 0x7C000000, 0xBE3E4104, 0x31552BA5,
+ 0x3FF003EC, 0x7C000000, 0xBE2D2E33, 0x995CAB3B,
+ 0x3FF003F0, 0x7C000000, 0x3DF22D48, 0x473970DC,
+ 0x3FF003F4, 0x7C000000, 0x3E30ECC6, 0xC61195FC,
+ 0x3FF003F8, 0x80000000, 0xBE3F3943, 0x03D35C34,
+ 0x3FF003FC, 0x80000000, 0xBE2E9E91, 0xAA7483C7,
+ 0x3FF00400, 0x80000000, 0x3DE556AA, 0xBBBC71CE,
+ 0x3FF00404, 0x80000000, 0x3E30B4B7, 0x817613C1,
+ 0x3FF00408, 0x84000000, 0xBE3F3142, 0x4E70B0AC,
+ 0x3FF0040C, 0x84000000, 0xBE2E0E70, 0x2BAAD02F,
+ 0x3FF00410, 0x84000000, 0x3DF32D62, 0xF48F01F2,
+ 0x3FF00414, 0x84000000, 0x3E317CE8, 0x84EB5B98,
+ 0x3FF00418, 0x88000000, 0xBE3E2901, 0x10ED210B,
+ 0x3FF0041C, 0x88000000, 0xBE2B7DCD, 0x1C7F0051,
+ 0x3FF00420, 0x88000000, 0x3E05D9C0, 0x87AA2706,
+ 0x3FF00424, 0x88000000, 0x3E33455A, 0xD0B235B3,
+ 0x3FF00428, 0x8C000000, 0xBE3C207E, 0x4B07A510,
+ 0x3FF0042C, 0x8C000000, 0xBE26ECA6, 0x7C6E838B,
+ 0x3FF00430, 0x8C000000, 0x3E150F6F, 0xEC91A8D5,
+ 0x3FF00434, 0x8C000000, 0x3E360E0F, 0x650C6A83,
+ 0x3FF00438, 0x90000000, 0xBE3917B8, 0xFC7E3439,
+ 0x3FF0043C, 0x90000000, 0xBE205AFA, 0x4AF4C8B6,
+ 0x3FF00440, 0x90000000, 0x3E219985, 0xDC31D181,
+ 0x3FF00444, 0x90000000, 0x3E39D707, 0x423CC2BE,
+ 0x3FF00448, 0x94000000, 0xBE350EB0, 0x250DC5BF,
+ 0x3FF0044C, 0x94000000, 0xBE0F231A, 0x1E2CF893,
+ 0x3FF00450, 0x94000000, 0x3E2AABDB, 0xD42C92D4,
+ 0x3FF00454, 0x94000000, 0x3E3EA043, 0x6887075B,
+ 0x3FF00458, 0x98000000, 0xBE300562, 0xC472509B,
+ 0x3FF0045C, 0x98000000, 0x3DF64FB6, 0x72B572E0,
+ 0x3FF00460, 0x98000000, 0x3E32DF5D, 0xEF61155C,
+ 0x3FF00464, 0x9C000000, 0xBE3B963B, 0x27CFFE6A,
+ 0x3FF00468, 0x9C000000, 0xBE23F79F, 0xB4CD96FE,
+ 0x3FF0046C, 0x9C000000, 0x3E1EBA7F, 0x6E771F13,
+ 0x3FF00470, 0x9C000000, 0x3E396913, 0xFE3ED608,
+ 0x3FF00474, 0xA0000000, 0xBE34CC73, 0x6E82850F,
+ 0x3FF00478, 0xA0000000, 0xBE078FB3, 0x352966B7,
+ 0x3FF0047C, 0xA0000000, 0x3E2DF116, 0x33AFF8AE,
+ 0x3FF00480, 0xA4000000, 0xBE3F0CEE, 0xE909EADD,
+ 0x3FF00484, 0xA4000000, 0xBE2A04C8, 0xD6938597,
+ 0x3FF00488, 0xA4000000, 0x3E1460AA, 0x5C6654D8,
+ 0x3FF0048C, 0xA4000000, 0x3E3742BE, 0x22213ECF,
+ 0x3FF00490, 0xA8000000, 0xBE3682A9, 0xC631A356,
+ 0x3FF00494, 0xA8000000, 0xBE10E034, 0x7777B644,
+ 0x3FF00498, 0xA8000000, 0x3E2C4528, 0x3E3B0991,
+ 0x3FF0049C, 0xAC000000, 0xBE3F72C6, 0x0B3E269F,
+ 0x3FF004A0, 0xAC000000, 0xBE29F037, 0x31DF923B,
+ 0x3FF004A4, 0xAC000000, 0x3E164A4D, 0xE82713DE,
+ 0x3FF004A8, 0xAC000000, 0x3E382D47, 0x31AFAC4B,
+ 0x3FF004AC, 0xB0000000, 0xBE352800, 0x6DFCE978,
+ 0x3FF004B0, 0xB0000000, 0xBE036A1B, 0x07D68D27,
+ 0x3FF004B4, 0xB0000000, 0x3E305D7E, 0x5CB71F6F,
+ 0x3FF004B8, 0xB4000000, 0xBE3CC7BB, 0x30E5E990,
+ 0x3FF004BC, 0xB4000000, 0xBE23B9E0, 0x0BA17DEA,
+ 0x3FF004C0, 0xB4000000, 0x3E223BBF, 0xC3EF9BD8,
+ 0x3FF004C4, 0xB4000000, 0x3E3C28B4, 0x8A74ECC0,
+ 0x3FF004C8, 0xB8000000, 0xBE30BC72, 0x085831CA,
+ 0x3FF004CC, 0xB8000000, 0x3E037361, 0x6C8D1FC8,
+ 0x3FF004D0, 0xB8000000, 0x3E35A94F, 0x3033A0B8,
+ 0x3FF004D4, 0xBC000000, 0xBE370BC8, 0xFC7107DE,
+ 0x3FF004D8, 0xBC000000, 0xBE0D86E2, 0xA2D908DA,
+ 0x3FF004DC, 0xBC000000, 0x3E2F742A, 0x58ED155E,
+ 0x3FF004E0, 0xC0000000, 0xBE3CCAF4, 0x75FACDD0,
+ 0x3FF004E4, 0xC0000000, 0xBE227FF2, 0x6F5BE5D3,
+ 0x3FF004E8, 0xC0000000, 0x3E24B60D, 0xD6BCA827,
+ 0x3FF004EC, 0xC0000000, 0x3E3E060B, 0xF72B40D6,
+ 0x3FF004F0, 0xC4000000, 0xBE2C7DD4, 0x208BE3E3,
+ 0x3FF004F4, 0xC4000000, 0x3E163093, 0x642FDDB8,
+ 0x3FF004F8, 0xC4000000, 0x3E396738, 0xB72239A5,
+ 0x3FF004FC, 0xC8000000, 0xBE32ADAE, 0x7201ED9B,
+ 0x3FF00500, 0xC8000000, 0x3DF4D6F6, 0x1A0C05F3,
+ 0x3FF00504, 0xC8000000, 0x3E355892, 0x360B8346,
+ 0x3FF00508, 0xCC000000, 0xBE368C45, 0xF0C06435,
+ 0x3FF0050C, 0xCC000000, 0xBE0308C8, 0x760DA2F6,
+ 0x3FF00510, 0xCC000000, 0x3E31DA18, 0xE008D57B,
+ 0x3FF00514, 0xD0000000, 0xBE39DAB0, 0x205F82F4,
+ 0x3FF00518, 0xD0000000, 0xBE15FDD0, 0x2FE5E3E3,
+ 0x3FF0051C, 0xD0000000, 0x3E2DD79A, 0x42787241,
+ 0x3FF00520, 0xD4000000, 0xBE3C98EC, 0x94BD25F4,
+ 0x3FF00524, 0xD4000000, 0xBE201B42, 0x53C89D03,
+ 0x3FF00528, 0xD4000000, 0x3E291B5E, 0xCB901057,
+ 0x3FF0052C, 0xD8000000, 0xBE3EC6FA, 0xE1B6D837,
+ 0x3FF00530, 0xD8000000, 0xBE24173F, 0xF8BF49E7,
+ 0x3FF00534, 0xD8000000, 0x3E257F80, 0x339DDB57,
+ 0x3FF00538, 0xD8000000, 0x3E3F9B25, 0x64D62C5C,
+ 0x3FF0053C, 0xDC000000, 0xBE26F2E0, 0x2E913659,
+ 0x3FF00540, 0xDC000000, 0x3E2303FF, 0x52E7CB93,
+ 0x3FF00544, 0xDC000000, 0x3E3E8D74, 0xAB0CFEF5,
+ 0x3FF00548, 0xE0000000, 0xBE28AE22, 0x1CF7FDE6,
+ 0x3FF0054C, 0xE0000000, 0x3E21A8DD, 0x01B47B93,
+ 0x3FF00550, 0xE0000000, 0x3E3E0FF3, 0x5D1107E2,
+ 0x3FF00554, 0xE4000000, 0xBE294904, 0xEBAC99E1,
+ 0x3FF00558, 0xE4000000, 0x3E216E1A, 0x184B2814,
+ 0x3FF0055C, 0xE4000000, 0x3E3E22A1, 0xE706008B,
+ 0x3FF00560, 0xE8000000, 0xBE28C387, 0xC267616A,
+ 0x3FF00564, 0xE8000000, 0x3E2253B7, 0x6EF3B008,
+ 0x3FF00568, 0xE8000000, 0x3E3EC580, 0xB50FF371,
+ 0x3FF0056C, 0xEC000000, 0xBE271DA9, 0xC8E0096B,
+ 0x3FF00570, 0xEC000000, 0x3E2459B5, 0xDDF69498,
+ 0x3FF00574, 0xEC000000, 0x3E3FF890, 0x33533C31,
+ 0x3FF00578, 0xF0000000, 0xBE24576A, 0x26CDA497,
+ 0x3FF0057C, 0xF0000000, 0x3E278016, 0x3D9CF923,
+ 0x3FF00580, 0xF4000000, 0xBE3E442F, 0x320B787B,
+ 0x3FF00584, 0xF4000000, 0xBE2070C8, 0x03E6A36B,
+ 0x3FF00588, 0xF4000000, 0x3E2BC6D9, 0x6630A33F,
+ 0x3FF0058C, 0xF8000000, 0xBE3BF0BD, 0x0EE72CBF,
+ 0x3FF00590, 0xF8000000, 0xBE16D385, 0x0FC1A853,
+ 0x3FF00594, 0xF8000000, 0x3E309700, 0x17FDFD5D,
+ 0x3FF00598, 0xFC000000, 0xBE390D18, 0xF71A91AC,
+ 0x3FF0059C, 0xFC000000, 0xBE050963, 0x69C58B86,
+ 0x3FF005A0, 0xFC000000, 0x3E33DAC5, 0xB9A504CD,
+ 0x3FF005A5, 0x00000000, 0xBE359942, 0x7E800734,
+ 0x3FF005A9, 0x00000000, 0x3DF02BAE, 0xE59934CD,
+ 0x3FF005AD, 0x00000000, 0x3E37AEBE, 0x04333E0E,
+ 0x3FF005B1, 0x04000000, 0xBE319539, 0x38F19C2F,
+ 0x3FF005B5, 0x04000000, 0x3E14DB54, 0xEBB1C157,
+ 0x3FF005B9, 0x04000000, 0x3E3C12E9, 0x63CED05D,
+ 0x3FF005BD, 0x08000000, 0xBE2A01F9, 0x74921CAF,
+ 0x3FF005C1, 0x08000000, 0x3E23F645, 0xC94C85F2,
+ 0x3FF005C5, 0x0C000000, 0xBE3EF8B7, 0xBB61CBEE,
+ 0x3FF005C9, 0x0C000000, 0xBE1F7232, 0x597F2931,
+ 0x3FF005CD, 0x0C000000, 0x3E2E9F48, 0xAF5B7345,
+ 0x3FF005D1, 0x10000000, 0xBE397424, 0xED37CD5F,
+ 0x3FF005D5, 0x10000000, 0xBE013F43, 0x08775C6B,
+ 0x3FF005D9, 0x10000000, 0x3E35345A, 0x0029D3DB,
+ 0x3FF005DD, 0x14000000, 0xBE335F5D, 0xC58C1962,
+ 0x3FF005E1, 0x14000000, 0x3E1073C1, 0x47430E04,
+ 0x3FF005E5, 0x14000000, 0x3E3BA944, 0x4A41E248,
+ 0x3FF005E9, 0x18000000, 0xBE2974C3, 0xB06E888E,
+ 0x3FF005ED, 0x18000000, 0x3E25E3FB, 0xDCCD9333,
+ 0x3FF005F1, 0x1C000000, 0xBE3D519C, 0x5DE27951,
+ 0x3FF005F5, 0x1C000000, 0xBE1614C2, 0xE4464502,
+ 0x3FF005F9, 0x1C000000, 0x3E325740, 0xE0DAFE93,
+ 0x3FF005FD, 0x20000000, 0xBE35BC47, 0x8C1B4C10,
+ 0x3FF00601, 0x20000000, 0x3E0201B0, 0x20686CE9,
+ 0x3FF00605, 0x20000000, 0x3E3A4CB9, 0x95558B63,
+ 0x3FF00609, 0x24000000, 0xBE2B2D79, 0xA880A3EB,
+ 0x3FF0060D, 0x24000000, 0x3E252BA5, 0x9699EEB7,
+ 0x3FF00611, 0x28000000, 0xBE3D2D97, 0x880115E1,
+ 0x3FF00615, 0x28000000, 0xBE1383EF, 0x28A3D788,
+ 0x3FF00619, 0x28000000, 0x3E337BA6, 0x08D6DC23,
+ 0x3FF0061D, 0x2C000000, 0xBE3417B2, 0x0B001A08,
+ 0x3FF00621, 0x2C000000, 0x3E1193EF, 0xF94EB99A,
+ 0x3FF00625, 0x2C000000, 0x3E3CF1B0, 0x28D3BD3B,
+ 0x3FF00629, 0x30000000, 0xBE24E32B, 0x0EFCC982,
+ 0x3FF0062D, 0x30000000, 0x3E2C7655, 0xE2BDA47F,
+ 0x3FF00631, 0x34000000, 0xBE39080E, 0x689312F8,
+ 0x3FF00635, 0x34000000, 0xBDCDA0C8, 0xA9444DB4,
+ 0x3FF00639, 0x34000000, 0x3E38A191, 0x7B21FE23,
+ 0x3FF0063D, 0x38000000, 0xBE2CE32A, 0x7E67E1E1,
+ 0x3FF00641, 0x38000000, 0x3E251694, 0x875A71F0,
+ 0x3FF00645, 0x3C000000, 0xBE3C67CF, 0xF838F455,
+ 0x3FF00649, 0x3C000000, 0xBE0A571F, 0x77274052,
+ 0x3FF0064D, 0x3C000000, 0x3E35E20E, 0x63AAEFA8,
+ 0x3FF00651, 0x40000000, 0xBE30E0F8, 0xFC87DA70,
+ 0x3FF00655, 0x40000000, 0x3E20D80B, 0xE9089AFD,
+ 0x3FF00659, 0x44000000, 0xBE3E36F4, 0xC52F03BD,
+ 0x3FF0065D, 0x44000000, 0xBE1327A4, 0x9680E14E,
+ 0x3FF00661, 0x44000000, 0x3E34B328, 0xD732468D,
+ 0x3FF00665, 0x48000000, 0xBE31BFBE, 0xCAB5EF4A,
+ 0x3FF00669, 0x48000000, 0x3E1F757F, 0xE2A2FBE1,
+ 0x3FF0066D, 0x4C000000, 0xBE3E757A, 0xDAB014DA,
+ 0x3FF00671, 0x4C000000, 0xBE12E13D, 0x02FB3FBB,
+ 0x3FF00675, 0x4C000000, 0x3E3514E2, 0xCA7E298D,
+ 0x3FF00679, 0x50000000, 0xBE310DE4, 0xB4F78B94,
+ 0x3FF0067D, 0x50000000, 0x3E21BEB4, 0x89C35D05,
+ 0x3FF00681, 0x54000000, 0xBE3D2360, 0x43F4895C,
+ 0x3FF00685, 0x54000000, 0xBE08B0A2, 0x5BC49ADF,
+ 0x3FF00689, 0x54000000, 0x3E37073E, 0x32573159,
+ 0x3FF0068D, 0x58000000, 0xBE2D96D1, 0x8D0732D2,
+ 0x3FF00691, 0x58000000, 0x3E26E3ED, 0x9BF15E67,
+ 0x3FF00695, 0x5C000000, 0xBE3A40A3, 0x0C3250FB,
+ 0x3FF00699, 0x5C000000, 0x3DBCC9AE, 0xFD0AE214,
+ 0x3FF0069D, 0x5C000000, 0x3E3A8A3D, 0x038868A1,
+ 0x3FF006A1, 0x60000000, 0xBE25F092, 0x151D21CE,
+ 0x3FF006A5, 0x60000000, 0x3E2F2A6F, 0x11738C43,
+ 0x3FF006A9, 0x64000000, 0xBE35CD41, 0x3E9CE96D,
+ 0x3FF006AD, 0x64000000, 0x3E138132, 0x8DBC2918,
+ 0x3FF006B1, 0x64000000, 0x3E3F9DE1, 0x32DF4C13,
+ 0x3FF006B5, 0x68000000, 0xBE16520E, 0x3129E0B2,
+ 0x3FF006B9, 0x68000000, 0x3E35491E, 0x69F36A61,
+ 0x3FF006BD, 0x6C000000, 0xBE2F9271, 0xCCCABCD4,
+ 0x3FF006C1, 0x6C000000, 0x3E2668ED, 0x0D59B899,
+ 0x3FF006C5, 0x70000000, 0xBE39BDD3, 0x4AD435A0,
+ 0x3FF006C9, 0x70000000, 0x3DF5FE9A, 0x9191CABB,
+ 0x3FF006CD, 0x70000000, 0x3E3C8DAD, 0x6676850B,
+ 0x3FF006D1, 0x74000000, 0xBE206910, 0x1D74934A,
+ 0x3FF006D5, 0x74000000, 0x3E331949, 0x4D886478,
+ 0x3FF006D9, 0x78000000, 0xBE3188DE, 0x80BFBBC2,
+ 0x3FF006DD, 0x78000000, 0x3E23CA01, 0x14DE1719,
+ 0x3FF006E1, 0x7C000000, 0xBE3A9D19, 0x8CE98EC0,
+ 0x3FF006E5, 0x7C000000, 0x3DEE1A67, 0xA705A6E7,
+ 0x3FF006E9, 0x7C000000, 0x3E3C8EC6, 0xECD5F851,
+ 0x3FF006ED, 0x80000000, 0xBE1F0CF9, 0xE839CE4D,
+ 0x3FF006F1, 0x80000000, 0x3E33FAC3, 0x0C8CA46A,
+ 0x3FF006F5, 0x84000000, 0xBE303734, 0x7B5703D8,
+ 0x3FF006F9, 0x84000000, 0x3E274DB5, 0xE490A112,
+ 0x3FF006FD, 0x88000000, 0xBE386B0E, 0xA693A093,
+ 0x3FF00701, 0x88000000, 0x3E0C9875, 0xF0B73DAA,
+ 0x3FF00705, 0x88000000, 0x3E3FA133, 0x2449A944,
+ 0x3FF00709, 0x8C000000, 0xBE110285, 0xBFE66C14,
+ 0x3FF0070D, 0x8C000000, 0x3E37ED91, 0x054EDCBD,
+ 0x3FF00711, 0x90000000, 0xBE27A86A, 0xEFB65924,
+ 0x3FF00715, 0x90000000, 0x3E307A0B, 0x1C8A0CF1,
+ 0x3FF00719, 0x94000000, 0xBE3327AD, 0x397FB1D6,
+ 0x3FF0071D, 0x94000000, 0x3E228D43, 0x1412B9FB,
+ 0x3FF00721, 0x98000000, 0xBE3A3B08, 0x94D8FFB0,
+ 0x3FF00725, 0x98000000, 0x3E029AA3, 0x6ED80040,
+ 0x3FF00729, 0x98000000, 0x3E3EF1B8, 0x9627250A,
+ 0x3FF0072D, 0x9C000000, 0xBE117F70, 0x5FCB1B09,
+ 0x3FF00731, 0x9C000000, 0x3E385E96, 0x678F0789,
+ 0x3FF00735, 0xA0000000, 0xBE25A5DF, 0xCEA3485B,
+ 0x3FF00739, 0xA0000000, 0x3E320B90, 0xFF6D0303,
+ 0x3FF0073D, 0xA4000000, 0xBE3105E6, 0xE03334FF,
+ 0x3FF00741, 0xA4000000, 0x3E27F150, 0xFB9F056D,
+ 0x3FF00745, 0xA8000000, 0xBE36F8C0, 0xE28905F4,
+ 0x3FF00749, 0xA8000000, 0x3E189774, 0x0B1407AA,
+ 0x3FF0074D, 0xAC000000, 0xBE3CAB7D, 0xCE4493C4,
+ 0x3FF00751, 0xAC000000, 0x3DE265D5, 0xCB817D78,
+ 0x3FF00755, 0xAC000000, 0x3E3DE1E2, 0x7CA8B4E3,
+ 0x3FF00759, 0xB0000000, 0xBE12FD89, 0x7D730FC6,
+ 0x3FF0075D, 0xB0000000, 0x3E38AF60, 0x1E4D7759,
+ 0x3FF00761, 0xB4000000, 0xBE23A3AC, 0x0CAD84A2,
+ 0x3FF00765, 0xB4000000, 0x3E33BCFB, 0x36B866FD,
+ 0x3FF00769, 0xB8000000, 0xBE2D4858, 0x4D0667A1,
+ 0x3FF0076D, 0xB8000000, 0x3E2E1567, 0xCBF08E6A,
+ 0x3FF00771, 0xBC000000, 0xBE333664, 0x9FD34D05,
+ 0x3FF00775, 0xBC000000, 0x3E253114, 0x9837D6E0,
+ 0x3FF00779, 0xC0000000, 0xBE37887F, 0x5238327D,
+ 0x3FF0077D, 0xC0000000, 0x3E1999FA, 0x24C8DC90,
+ 0x3FF00781, 0xC4000000, 0xBE3B9A7C, 0x1DA2F8BE,
+ 0x3FF00785, 0xC4000000, 0x3E03A485, 0xEA50EE6A,
+ 0x3FF00789, 0xC8000000, 0xBE3F6C5A, 0xE204A449,
+ 0x3FF0078D, 0xC8000000, 0xBDF3D3EF, 0x78D5D0F3,
+ 0x3FF00791, 0xC8000000, 0x3E3D01E4, 0x80B1D66C,
+ 0x3FF00795, 0xCC000000, 0xBE12BBC1, 0xD5149796,
+ 0x3FF00799, 0xCC000000, 0x3E39B042, 0x2A8F92F0,
+ 0x3FF0079D, 0xD0000000, 0xBE1F820E, 0x6F386487,
+ 0x3FF007A1, 0xD0000000, 0x3E369EBE, 0x3BA3BCDA,
+ 0x3FF007A5, 0xD4000000, 0xBE25A3F0, 0x96320652,
+ 0x3FF007A9, 0xD4000000, 0x3E33CD58, 0xD3FD8FCA,
+ 0x3FF007AD, 0xD8000000, 0xBE2B069C, 0xC62D40B1,
+ 0x3FF007B1, 0xD8000000, 0x3E313C12, 0x13AC5766,
+ 0x3FF007B5, 0xDC000000, 0xBE2FE90B, 0x876F3A0B,
+ 0x3FF007B9, 0xDC000000, 0x3E2DD5D4, 0x357EDEB8,
+ 0x3FF007BD, 0xE0000000, 0xBE32259E, 0x4CEC957E,
+ 0x3FF007C1, 0xE0000000, 0x3E29B3C2, 0x128C86C6,
+ 0x3FF007C5, 0xE4000000, 0xBE341697, 0xDEA61608,
+ 0x3FF007C9, 0xE4000000, 0x3E2611ED, 0xFEA09E70,
+ 0x3FF007CD, 0xE8000000, 0xBE35C772, 0x58D49AE3,
+ 0x3FF007D1, 0xE8000000, 0x3E22F058, 0x39DA3D42,
+ 0x3FF007D5, 0xEC000000, 0xBE37382D, 0x9B689043,
+ 0x3FF007D9, 0xEC000000, 0x3E204F01, 0x04589AD6,
+ 0x3FF007DD, 0xF0000000, 0xBE3868C9, 0x86525259,
+ 0x3FF007E1, 0xF0000000, 0x3E1C5BD1, 0x3C761DAC,
+ 0x3FF007E5, 0xF4000000, 0xBE395945, 0xF9822D4C,
+ 0x3FF007E9, 0xF4000000, 0x3E191A1E, 0x8F4221F9,
+ 0x3FF007ED, 0xF8000000, 0xBE3A09A2, 0xD4E85D3A,
+ 0x3FF007F1, 0xF8000000, 0x3E16D8EA, 0x81547225,
+ 0x3FF007F5, 0xFC000000, 0xBE3A79DF, 0xF8750E3B,
+ 0x3FF007F9, 0xFC000000, 0x3E159835, 0x92EC7DE3,
+ 0x3FF007FE, 0x00000000, 0xBE3AA9FD, 0x44185C5D } };
+
+#else
+#ifdef LITTLE_ENDI
+
+static const union {
+ int i[1424];
+ double x[712];
+} coar = { .i = {
+ 0xC8000000, 0x3FE69A59, 0x6079C9F7, 0x3DF22D4D,
+ 0xC8000000, 0x3FE6A5A9, 0x25AF6823, 0x3E19882D,
+ 0x74000000, 0x3FE6B0FF, 0x31DABF59, 0xBE221476,
+ 0xC8000000, 0x3FE6BC5A, 0x99A2DC0A, 0x3E2312AC,
+ 0xD0000000, 0x3FE6C7BB, 0xCE9F9355, 0xBE265926,
+ 0x84000000, 0x3FE6D322, 0x2D298DED, 0x3E2F2C26,
+ 0xF4000000, 0x3FE6DE8E, 0x1E748D2F, 0xBE2EC28E,
+ 0x14000000, 0x3FE6EA01, 0xC68CB7E5, 0x3E2D8C6D,
+ 0xF4000000, 0x3FE6F578, 0x419FE2F0, 0x3DEE1A9E,
+ 0x90000000, 0x3FE700F6, 0xDEAEAE34, 0xBDFF1AFD,
+ 0xEC000000, 0x3FE70C79, 0x558B7122, 0xBE0730FE,
+ 0x0C000000, 0x3FE71803, 0x2D280C3B, 0xBE25CB85,
+ 0xF0000000, 0x3FE72391, 0x337B7B54, 0xBE06F2CE,
+ 0x9C000000, 0x3FE72F26, 0x45C02B72, 0x3E289BCA,
+ 0x18000000, 0x3FE73AC1, 0x5039F1CA, 0xBE18DEA6,
+ 0x60000000, 0x3FE74661, 0x86CE0538, 0xBE09D090,
+ 0x78000000, 0x3FE75207, 0xCFCE5DDB, 0x3E290E79,
+ 0x68000000, 0x3FE75DB3, 0xB249A17C, 0x3DD61DF0,
+ 0x2C000000, 0x3FE76965, 0xE13445F7, 0x3E2F22F7,
+ 0xD0000000, 0x3FE7751C, 0x874E75CE, 0xBE2CD454,
+ 0x4C000000, 0x3FE780DA, 0xDF43E3BC, 0xBE0159CE,
+ 0xA8000000, 0x3FE78C9D, 0x699A1332, 0x3E279291,
+ 0xEC000000, 0x3FE79866, 0x2DD98C6C, 0xBE2A0BCD,
+ 0x10000000, 0x3FE7A436, 0x15AC979E, 0x3E25F375,
+ 0x20000000, 0x3FE7B00B, 0x2FEAFCF6, 0x3E26CCF5,
+ 0x1C000000, 0x3FE7BBE6, 0x53ADAD67, 0x3E27D4F4,
+ 0x08000000, 0x3FE7C7C7, 0x7FBD9566, 0x3E10EEC7,
+ 0xE4000000, 0x3FE7D3AD, 0x9A831D86, 0x3E2837F0,
+ 0xB8000000, 0x3FE7DF9A, 0x5CB4C35B, 0xBE129BE0,
+ 0x80000000, 0x3FE7EB8D, 0x0234F04D, 0x3E23990A,
+ 0x44000000, 0x3FE7F786, 0x64D5C842, 0x3E2EB807,
+ 0x08000000, 0x3FE80385, 0x02B4E9E8, 0x3E0FC86F,
+ 0xCC000000, 0x3FE80F89, 0x7B4274BF, 0xBDD7B5B3,
+ 0x94000000, 0x3FE81B94, 0xB899B00F, 0xBE16888B,
+ 0x60000000, 0x3FE827A5, 0x5E94D155, 0x3E288971,
+ 0x38000000, 0x3FE833BC, 0x099F3E5E, 0x3E2AEEB2,
+ 0x20000000, 0x3FE83FD9, 0x3FF60B7C, 0xBE23B922,
+ 0x14000000, 0x3FE84BFC, 0x2DBD8012, 0xBDF7D3B1,
+ 0x1C000000, 0x3FE85825, 0xA8872BEB, 0xBDF24BA3,
+ 0x38000000, 0x3FE86454, 0x01AA18A7, 0x3E2EFE04,
+ 0x70000000, 0x3FE87089, 0x944496A2, 0x3E21986C,
+ 0xC4000000, 0x3FE87CC4, 0xB71FFAFF, 0x3E096A8B,
+ 0x38000000, 0x3FE88906, 0xBC4C7AC5, 0xBE21CE0A,
+ 0xCC000000, 0x3FE8954D, 0xBAC02491, 0xBE076F45,
+ 0x84000000, 0x3FE8A19B, 0xD922B925, 0x3E2B4FA2,
+ 0x68000000, 0x3FE8ADEF, 0x641863AF, 0x3DF759DB,
+ 0x78000000, 0x3FE8BA49, 0xC6AB5E04, 0xBE2DB97C,
+ 0xB4000000, 0x3FE8C6A9, 0xE2156713, 0xBE25364C,
+ 0x20000000, 0x3FE8D310, 0x862BEFF7, 0x3E1BEB7C,
+ 0xC4000000, 0x3FE8DF7C, 0x1CEA33A5, 0xBDF4DD0C,
+ 0xA0000000, 0x3FE8EBEF, 0x51797D47, 0xBE2537DF,
+ 0xB4000000, 0x3FE8F868, 0xF0107B28, 0x3E0FB1C4,
+ 0x08000000, 0x3FE904E8, 0xE01B68BD, 0x3E0AD6A1,
+ 0x9C000000, 0x3FE9116D, 0x1F78D9D9, 0x3E292117,
+ 0x78000000, 0x3FE91DF9, 0x4F50E5CF, 0xBE1D75DA,
+ 0x98000000, 0x3FE92A8B, 0x74959E58, 0x3DE5102B,
+ 0x04000000, 0x3FE93724, 0xD2216C35, 0xBE01CA50,
+ 0xBC000000, 0x3FE943C2, 0xB0B05884, 0x3E225BFD,
+ 0xC8000000, 0x3FE95067, 0x60B7C5C1, 0xBE0F2183,
+ 0x24000000, 0x3FE95D13, 0xB5860441, 0x3E2FB47A,
+ 0xDC000000, 0x3FE969C4, 0xE2D4059E, 0xBE01FFD2,
+ 0xEC000000, 0x3FE9767C, 0x12BB6A8D, 0xBDE9ED72,
+ 0x58000000, 0x3FE9833B, 0x43BFFB24, 0x3E2B3815,
+ 0x28000000, 0x3FE99000, 0xEE9EAD1E, 0x3E03FA22,
+ 0x5C000000, 0x3FE99CCB, 0x377138F7, 0xBE213841,
+ 0xF4000000, 0x3FE9A99C, 0xDB636C94, 0x3E178105,
+ 0xF8000000, 0x3FE9B674, 0xF5720122, 0x3E1E5E7A,
+ 0x6C000000, 0x3FE9C353, 0xA2AC5AAE, 0xBE238BFF,
+ 0x4C000000, 0x3FE9D038, 0xF93BDBD8, 0x3E270893,
+ 0xA4000000, 0x3FE9DD23, 0x354B86CF, 0x3DF40420,
+ 0x74000000, 0x3FE9EA15, 0x88CB06B7, 0xBE2D76D3,
+ 0xBC000000, 0x3FE9F70D, 0x9ED0EC60, 0xBE251639,
+ 0x80000000, 0x3FEA040C, 0xE2DDE506, 0x3E1F06E9,
+ 0xC8000000, 0x3FEA1111, 0x8E6DB477, 0x3E014549,
+ 0x94000000, 0x3FEA1E1D, 0xF8716509, 0xBDF4BC17,
+ 0xE8000000, 0x3FEA2B2F, 0xDA723A49, 0xBE2107DB,
+ 0xC4000000, 0x3FEA3848, 0x986AA369, 0x3E1A932A,
+ 0x30000000, 0x3FEA4568, 0x41592CDB, 0x3E198092,
+ 0x30000000, 0x3FEA528E, 0x676BCAB8, 0xBE2E260F,
+ 0xC0000000, 0x3FEA5FBA, 0x2D5D5610, 0x3DE2E821,
+ 0xE8000000, 0x3FEA6CED, 0x7DA20167, 0x3E2F7046,
+ 0xB0000000, 0x3FEA7A27, 0xF9FAAD30, 0xBE1D2832,
+ 0x14000000, 0x3FEA8768, 0x43FA6C45, 0xBE23F788,
+ 0x18000000, 0x3FEA94AF, 0xAA082732, 0x3E011E27,
+ 0xC4000000, 0x3FEAA1FC, 0xC682F0BF, 0xBE20BACB,
+ 0x18000000, 0x3FEAAF51, 0x7BD08C78, 0xBE2DC7DD,
+ 0x14000000, 0x3FEABCAC, 0xA3B10F9A, 0x3E2271A2,
+ 0xC4000000, 0x3FEACA0D, 0x7966F94C, 0xBE15449C,
+ 0x24000000, 0x3FEAD776, 0x6FD8F3EE, 0x3DD06137,
+ 0x3C000000, 0x3FEAE4E5, 0x8C5A144A, 0xBE267CD1,
+ 0x0C000000, 0x3FEAF25B, 0xB59DA94B, 0xBE29E584,
+ 0x98000000, 0x3FEAFFD7, 0x7B52192F, 0xBE23DFCF,
+ 0xE4000000, 0x3FEB0D5A, 0x78A76B45, 0xBE1CF2FE,
+ 0xF4000000, 0x3FEB1AE4, 0x7EC80FF6, 0xBE23A561,
+ 0xC8000000, 0x3FEB2875, 0x932EED68, 0x3E22C4C9,
+ 0x68000000, 0x3FEB360D, 0xB5833C97, 0x3E2B085C,
+ 0xD8000000, 0x3FEB43AB, 0x93B9319A, 0xBE01F093,
+ 0x18000000, 0x3FEB5151, 0xFABCE670, 0xBE254F01,
+ 0x28000000, 0x3FEB5EFD, 0x627ABFB0, 0x3E2F24C2,
+ 0x14000000, 0x3FEB6CB0, 0xE6AC0B48, 0x3E1F1EEC,
+ 0xDC000000, 0x3FEB7A69, 0x127F9ABC, 0xBE1A8671,
+ 0x80000000, 0x3FEB882A, 0xC87C73B3, 0xBDCB0C28,
+ 0x08000000, 0x3FEB95F2, 0x7F2B5A97, 0xBE22E8DD,
+ 0x74000000, 0x3FEBA3C0, 0x2D22A9D5, 0xBE1B3645,
+ 0xC8000000, 0x3FEBB195, 0x428F8B88, 0x3E0ADACA,
+ 0x0C000000, 0x3FEBBF72, 0xCDF9F681, 0xBE2E9E07,
+ 0x3C000000, 0x3FEBCD55, 0x7FA54ACF, 0xBE08A127,
+ 0x60000000, 0x3FEBDB3F, 0x8225B385, 0x3E0E92CE,
+ 0x7C000000, 0x3FEBE930, 0x7BB09485, 0x3DF38C2A,
+ 0x94000000, 0x3FEBF728, 0xF681FA5F, 0xBE2DFD64,
+ 0xA4000000, 0x3FEC0527, 0xDCE88BD2, 0x3E2E384D,
+ 0xBC000000, 0x3FEC132D, 0xFE46A893, 0xBE20F111,
+ 0xD4000000, 0x3FEC213A, 0xB189BFDA, 0x3E193DA1,
+ 0xF8000000, 0x3FEC2F4E, 0x0E39FB00, 0xBE20E3A1,
+ 0x24000000, 0x3FEC3D6A, 0x30F0FAC5, 0x3E1DB044,
+ 0x64000000, 0x3FEC4B8C, 0x97446B17, 0xBE2BC12C,
+ 0xB4000000, 0x3FEC59B5, 0x963F4150, 0xBE282696,
+ 0x18000000, 0x3FEC67E6, 0x3049824B, 0x3E224D26,
+ 0x98000000, 0x3FEC761D, 0x87F84C7D, 0x3E2C5BA5,
+ 0x38000000, 0x3FEC845C, 0xC4852339, 0xBDE1D14D,
+ 0xF8000000, 0x3FEC92A1, 0x5588D9E1, 0xBE1A451E,
+ 0xDC000000, 0x3FECA0EE, 0x68BFF457, 0xBE1D3B96,
+ 0xE8000000, 0x3FECAF42, 0x4DADF774, 0xBE18B670,
+ 0x20000000, 0x3FECBD9E, 0x7FB1FC01, 0xBE1A1548,
+ 0x88000000, 0x3FECCC00, 0x78FC5AF0, 0xBE273F2E,
+ 0x20000000, 0x3FECDA6A, 0xA6F4A841, 0x3E1D218F,
+ 0xF0000000, 0x3FECE8DA, 0x4D002CA0, 0x3E2E0BA9,
+ 0xFC000000, 0x3FECF752, 0x065EF979, 0x3E20F4BB,
+ 0x48000000, 0x3FED05D2, 0x11793B33, 0xBE2ED3D5,
+ 0xD0000000, 0x3FED1458, 0x913341B3, 0x3E115E3C,
+ 0xA0000000, 0x3FED22E6, 0xB3546109, 0x3DE97C02,
+ 0xB8000000, 0x3FED317B, 0x1BF898EF, 0x3E087540,
+ 0x1C000000, 0x3FED4018, 0x346F9641, 0x3E209430,
+ 0xD0000000, 0x3FED4EBB, 0x88F4B20B, 0x3E2B6DF4,
+ 0xDC000000, 0x3FED5D66, 0x0CB26035, 0xBE2EC68F,
+ 0x38000000, 0x3FED6C19, 0x1F44D9C3, 0x3E2CA2C8,
+ 0xF4000000, 0x3FED7AD2, 0x41704EE0, 0x3E10E6F4,
+ 0x0C000000, 0x3FED8994, 0x25F8F0E2, 0x3E2F9273,
+ 0x88000000, 0x3FED985C, 0x318798DE, 0x3E2D041A,
+ 0x6C000000, 0x3FEDA72C, 0x9349CF58, 0xBE005680,
+ 0xB8000000, 0x3FEDB603, 0xCF0C934D, 0xBE10F665,
+ 0x70000000, 0x3FEDC4E2, 0x19461C64, 0x3E166124,
+ 0x9C000000, 0x3FEDD3C8, 0x405624C8, 0xBE1B2ED6,
+ 0x3C000000, 0x3FEDE2B6, 0x62171501, 0xBE273A7F,
+ 0x54000000, 0x3FEDF1AB, 0xE36E1450, 0xBE26022B,
+ 0xE8000000, 0x3FEE00A7, 0x2E07AE15, 0xBE1C341E,
+ 0xFC000000, 0x3FEE0FAB, 0x18D0E701, 0xBDFC7EAE,
+ 0x94000000, 0x3FEE1EB7, 0xECD1FF8B, 0x3E06B34F,
+ 0xB4000000, 0x3FEE2DCA, 0x6813A649, 0x3E1394A3,
+ 0x60000000, 0x3FEE3CE5, 0xC1754D14, 0x3E045496,
+ 0x9C000000, 0x3FEE4C07, 0xF5C6087C, 0xBE180FFF,
+ 0x68000000, 0x3FEE5B31, 0xADD9A300, 0x3E22FBCD,
+ 0xCC000000, 0x3FEE6A62, 0xAF0289E5, 0x3E2EC7C7,
+ 0xCC000000, 0x3FEE799B, 0x3FB3EDD4, 0x3E242182,
+ 0x6C000000, 0x3FEE88DC, 0x04E39885, 0xBE201304,
+ 0xAC000000, 0x3FEE9824, 0xE6831D31, 0xBE20D352,
+ 0x90000000, 0x3FEEA774, 0x618DFCEB, 0x3E1E032D,
+ 0x20000000, 0x3FEEB6CC, 0xF9BB457E, 0x3E1956A3,
+ 0x60000000, 0x3FEEC62B, 0x50845DB2, 0xBE2A77E0,
+ 0x4C000000, 0x3FEED592, 0x47C43858, 0x3E2714F7,
+ 0xF0000000, 0x3FEEE500, 0x71813A66, 0x3E2EED96,
+ 0x50000000, 0x3FEEF477, 0x4FB4AA34, 0xBE04CDBE,
+ 0x6C000000, 0x3FEF03F5, 0x86EB4FF5, 0xBE2774A2,
+ 0x48000000, 0x3FEF137B, 0xAD43B2D2, 0xBE29DD95,
+ 0xE8000000, 0x3FEF2308, 0xAC16E506, 0xBE1CADB0,
+ 0x50000000, 0x3FEF329E, 0x58745C7B, 0x3E12AC33,
+ 0x88000000, 0x3FEF423B, 0x6EC2D854, 0xBE248118,
+ 0x8C000000, 0x3FEF51E0, 0x304ACE08, 0x3E26986B,
+ 0x68000000, 0x3FEF618D, 0x3B09354E, 0x3E126D81,
+ 0x1C000000, 0x3FEF7142, 0x773C23B3, 0x3DF06AAE,
+ 0xAC000000, 0x3FEF80FE, 0xD82EF423, 0xBDA105B6,
+ 0x1C000000, 0x3FEF90C3, 0x465499B8, 0x3DECDEED,
+ 0x70000000, 0x3FEFA08F, 0xE2EF03AE, 0x3E0AEFD4,
+ 0xAC000000, 0x3FEFB063, 0x0567B2E7, 0x3E1BD4C0,
+ 0xD4000000, 0x3FEFC03F, 0x4F97FCBF, 0x3E26AA22,
+ 0xF0000000, 0x3FEFD023, 0x5E4E88D1, 0xBE2F9420,
+ 0xFC000000, 0x3FEFE00F, 0x438E52E2, 0xBE254004,
+ 0x00000000, 0x3FEFF004, 0xEEE93EFC, 0xBE1552AA,
+ 0x00000000, 0x3FF00000, 0x00000000, 0x00000000,
+ 0x00000000, 0x3FF00802, 0x4449F507, 0x3E155800,
+ 0x04000000, 0x3FF01008, 0x882D75D6, 0xBE354AA8,
+ 0x08000000, 0x3FF01812, 0x3740DE56, 0x3E303610,
+ 0x14000000, 0x3FF02020, 0x5B0C3264, 0x3E360044,
+ 0x28000000, 0x3FF02832, 0x0197EDC3, 0x3E3C4C26,
+ 0x48000000, 0x3FF03048, 0x5046CA09, 0x3E0B103B,
+ 0x74000000, 0x3FF03862, 0xF9A62624, 0xBE34659C,
+ 0xAC000000, 0x3FF04080, 0xDD0A8F37, 0xBE254438,
+ 0xF4000000, 0x3FF048A2, 0x97AFB6E2, 0x3DF256C2,
+ 0x50000000, 0x3FF050C9, 0x923D25E1, 0xBE3085DF,
+ 0xC0000000, 0x3FF058F3, 0x5EA3B091, 0xBE3F0A93,
+ 0x44000000, 0x3FF06122, 0x5D63534C, 0xBE237DE4,
+ 0xE0000000, 0x3FF06954, 0xFF0C58B7, 0x3E301719,
+ 0x98000000, 0x3FF0718B, 0x9DF7B665, 0x3E2E8410,
+ 0x6C000000, 0x3FF079C6, 0x3B127222, 0x3E349CB9,
+ 0x60000000, 0x3FF08205, 0x98E0BD08, 0x3DF127EC,
+ 0x74000000, 0x3FF08A48, 0x706CC41F, 0xBE24C1B6,
+ 0xA8000000, 0x3FF0928F, 0x093044EF, 0x3E334EF9,
+ 0x04000000, 0x3FF09ADB, 0x56BC6C83, 0xBE1304B1,
+ 0x84000000, 0x3FF0A32A, 0xB028B984, 0x3E2D383E,
+ 0x30000000, 0x3FF0AB7E, 0x64E7A202, 0xBE315B1E,
+ 0x04000000, 0x3FF0B3D6, 0xC678291E, 0xBE0AC1E6,
+ 0x04000000, 0x3FF0BC32, 0x2F12FFE2, 0x3E3A0418,
+ 0x38000000, 0x3FF0C492, 0x43D6D302, 0xBE37D617,
+ 0x98000000, 0x3FF0CCF6, 0x152CC8FA, 0x3E2133F2,
+ 0x2C000000, 0x3FF0D55F, 0xE966E6B7, 0x3E3CE5D1,
+ 0xF8000000, 0x3FF0DDCB, 0x7BCACA64, 0x3E1ABF24,
+ 0xFC000000, 0x3FF0E63C, 0x2E8CDBED, 0xBE3854F6,
+ 0x38000000, 0x3FF0EEB2, 0x0C32156B, 0xBE3E6463,
+ 0xAC000000, 0x3FF0F72B, 0xB69772CC, 0x3E365671,
+ 0x64000000, 0x3FF0FFA9, 0x02B1201A, 0xBE383E9A,
+ 0x58000000, 0x3FF1082B, 0x50549CC0, 0xBE205962,
+ 0x90000000, 0x3FF110B1, 0xFFDACA72, 0xBE376BFE,
+ 0x08000000, 0x3FF1193C, 0x5C43E2F3, 0x3E3C1C59,
+ 0xCC000000, 0x3FF121CA, 0xF7067C8B, 0xBE26D374,
+ 0xD4000000, 0x3FF12A5D, 0x4DDAFE1D, 0x3E343CCC,
+ 0x28000000, 0x3FF132F5, 0x58EBCB7F, 0x3E3D5C16,
+ 0xCC000000, 0x3FF13B90, 0xB66E8B53, 0xBE2B5D12,
+ 0xBC000000, 0x3FF14430, 0xB326B482, 0xBE24E919,
+ 0xFC000000, 0x3FF14CD4, 0xC8AABD43, 0x3E23139A,
+ 0x90000000, 0x3FF1557D, 0x16743B55, 0x3E30DD8B,
+ 0x7C000000, 0x3FF15E2A, 0x35904C50, 0xBE31D701,
+ 0xBC000000, 0x3FF166DB, 0x30E0CA83, 0x3E107F42,
+ 0x58000000, 0x3FF16F91, 0xDA1B7123, 0xBE24F1F2,
+ 0x50000000, 0x3FF1784B, 0x0DC79E23, 0xBE3ACAF2,
+ 0xA4000000, 0x3FF18109, 0x609374EE, 0xBE23DC79,
+ 0x58000000, 0x3FF189CC, 0x3A40C3B7, 0x3E262CF7,
+ 0x70000000, 0x3FF19293, 0x5A24F463, 0x3E1D3833,
+ 0xEC000000, 0x3FF19B5E, 0x8A2E4440, 0x3E2BA9AD,
+ 0xD0000000, 0x3FF1A42E, 0x61C41828, 0x3DFD8CBC,
+ 0x1C000000, 0x3FF1AD03, 0x5A4DDF0D, 0x3E1A65E6,
+ 0xD4000000, 0x3FF1B5DB, 0x9F828DB5, 0xBDE2FDBB,
+ 0xF8000000, 0x3FF1BEB8, 0xB79B700F, 0x3E2F4EE8,
+ 0x8C000000, 0x3FF1C79A, 0x0DE1D7E8, 0x3E3ACC35,
+ 0x94000000, 0x3FF1D080, 0xFF9E20A0, 0x3E11729E,
+ 0x10000000, 0x3FF1D96B, 0x6C2EA70B, 0xBE300F18,
+ 0x00000000, 0x3FF1E25A, 0xCE425A35, 0x3DF32E02,
+ 0x68000000, 0x3FF1EB4D, 0x9A322D12, 0x3E3BDE56,
+ 0x50000000, 0x3FF1F445, 0xBA737AEF, 0xBE3C3F0D,
+ 0xB0000000, 0x3FF1FD41, 0xC896DB7A, 0xBE0A2DD0,
+ 0x90000000, 0x3FF20642, 0xF8B782F6, 0x3E2577B0,
+ 0xF4000000, 0x3FF20F47, 0x73607FC8, 0xBE2C6DA3,
+ 0xD8000000, 0x3FF21851, 0xC8917348, 0x3E35F7D1,
+ 0x44000000, 0x3FF22160, 0xCF9CED69, 0x3E3B6F5C,
+ 0x3C000000, 0x3FF22A73, 0x85775C2E, 0xBE39967E,
+ 0xB8000000, 0x3FF2338A, 0x497226D4, 0x3E3B3213,
+ 0xC4000000, 0x3FF23CA6, 0x30733227, 0x3E3E2710,
+ 0x60000000, 0x3FF245C7, 0xAF215A72, 0x3E33B8A9,
+ 0x90000000, 0x3FF24EEC, 0x1365623F, 0xBE3F96B2,
+ 0x50000000, 0x3FF25816, 0x27DEE202, 0xBE37324F,
+ 0xA4000000, 0x3FF26144, 0x4E484D87, 0x3E318CD5,
+ 0x94000000, 0x3FF26A77, 0xA94519E8, 0xBDE3FD37,
+ 0x1C000000, 0x3FF273AF, 0xEE788C29, 0x3E37132F,
+ 0x44000000, 0x3FF27CEB, 0xE842E5C0, 0xBE03DDB7,
+ 0x08000000, 0x3FF2862C, 0xE17C9693, 0x3E37A3FB,
+ 0x70000000, 0x3FF28F71, 0xAEB3D9A0, 0x3E24EABF,
+ 0x7C000000, 0x3FF298BB, 0x853B0733, 0xBE13C7B6,
+ 0x2C000000, 0x3FF2A20A, 0xC7B588B5, 0x3E2D2C80,
+ 0x88000000, 0x3FF2AB5D, 0x708F3912, 0xBE35B750,
+ 0x8C000000, 0x3FF2B4B5, 0xD5FD9130, 0xBE291A70,
+ 0x3C000000, 0x3FF2BE12, 0x0CCF9F73, 0x3E2EE937,
+ 0xA0000000, 0x3FF2C773, 0xD42CF76C, 0xBE3C3F0C,
+ 0xB0000000, 0x3FF2D0D9, 0x60763D61, 0x3E35DD54,
+ 0x78000000, 0x3FF2DA44, 0xE7D6AA3B, 0x3E26C418,
+ 0xF8000000, 0x3FF2E3B3, 0x6FB9B7A8, 0xBE3605C6,
+ 0x2C000000, 0x3FF2ED28, 0x24DCDDF5, 0x3E3763D4,
+ 0x20000000, 0x3FF2F6A1, 0xA8EC1AA8, 0xBE1A411E,
+ 0xD0000000, 0x3FF3001E, 0x1FE8546F, 0xBE23FCA1,
+ 0x40000000, 0x3FF309A1, 0x3AAEE75E, 0xBE29DF0D,
+ 0x70000000, 0x3FF31328, 0x3C2C4206, 0x3E36A5D6,
+ 0x68000000, 0x3FF31CB4, 0xB4C979B0, 0x3E1B7A3E,
+ 0x28000000, 0x3FF32645, 0x706CD593, 0xBE36157D,
+ 0xB0000000, 0x3FF32FDA, 0x8DA4C646, 0xBE39F357,
+ 0x04000000, 0x3FF33975, 0xD575FE6F, 0xBE3E64DE,
+ 0x24000000, 0x3FF34314, 0x44D008E0, 0x3E07F9E3,
+ 0x18000000, 0x3FF34CB8, 0x5A563E77, 0xBE2E94F9,
+ 0xDC000000, 0x3FF35660, 0x2475EF19, 0x3E314DC2,
+ 0x78000000, 0x3FF3600E, 0xA33AC606, 0x3E26D623,
+ 0xEC000000, 0x3FF369C0, 0xC05B3160, 0x3E170F86,
+ 0x3C000000, 0x3FF37378, 0xDB0AE31A, 0xBE38DDFE,
+ 0x64000000, 0x3FF37D34, 0x5706B570, 0x3E3662A9,
+ 0x70000000, 0x3FF386F5, 0x6770731E, 0xBE1625E4,
+ 0x5C000000, 0x3FF390BB, 0x62971091, 0xBE1678F1,
+ 0x2C000000, 0x3FF39A86, 0xD045CB0C, 0xBE061F7C,
+ 0xE4000000, 0x3FF3A455, 0x568B1CA2, 0xBE35CF51,
+ 0x84000000, 0x3FF3AE2A, 0x7FB61F58, 0xBE378185,
+ 0x0C000000, 0x3FF3B804, 0x4FA133AF, 0x3E3F77F4,
+ 0x88000000, 0x3FF3C1E2, 0xB00B73FE, 0xBE22F96A,
+ 0xF0000000, 0x3FF3CBC5, 0x1EB4CE2F, 0x3E351A64,
+ 0x50000000, 0x3FF3D5AE, 0xD3755639, 0xBE3D3516,
+ 0xA0000000, 0x3FF3DF9B, 0x43E8C10E, 0x3E1CD938,
+ 0xEC000000, 0x3FF3E98D, 0x455C8842, 0xBE35EE23,
+ 0x30000000, 0x3FF3F385, 0x96C9F4ED, 0xBE29B282,
+ 0x70000000, 0x3FF3FD81, 0x3168CC0B, 0x3E24A40E,
+ 0xB0000000, 0x3FF40782, 0x86C72839, 0x3E3784BC,
+ 0xF4000000, 0x3FF41188, 0x0785D847, 0x3E061F19,
+ 0x3C000000, 0x3FF41B94, 0xE654A9C9, 0xBE27AEF2,
+ 0x88000000, 0x3FF425A4, 0xF9E4C1BA, 0x3E33DFC3,
+ 0xE0000000, 0x3FF42FB9, 0x593D0C75, 0x3E2455A8,
+ 0x44000000, 0x3FF439D4, 0x238B65D1, 0xBDE41D4E,
+ 0xB4000000, 0x3FF443F3, 0x454CBECB, 0x3E3BE616,
+ 0x38000000, 0x3FF44E18, 0x931C5332, 0x3E207B3C,
+ 0xD0000000, 0x3FF45841, 0x7615DCC9, 0xBE330846,
+ 0x7C000000, 0x3FF46270, 0xE497F84E, 0xBE2A8A7B,
+ 0x40000000, 0x3FF46CA4, 0xF737AF78, 0x3E020B50,
+ 0x20000000, 0x3FF476DD, 0xE34AFBD3, 0x3E116B19,
+ 0x20000000, 0x3FF4811B, 0x841EDB52, 0xBE3E15A7,
+ 0x3C000000, 0x3FF48B5E, 0x33B3DE1E, 0x3E0F40C3,
+ 0x7C000000, 0x3FF495A6, 0x92EFEE02, 0x3E33607F,
+ 0xE4000000, 0x3FF49FF3, 0x14F7E168, 0xBE1A2DB5,
+ 0x70000000, 0x3FF4AA46, 0x3EBA1C94, 0x3E3F59EC,
+ 0x2C000000, 0x3FF4B49E, 0x8B9AE885, 0xBE31A539,
+ 0x10000000, 0x3FF4BEFB, 0xF13C8C95, 0x3E2FAC0B,
+ 0x28000000, 0x3FF4C95D, 0xF8B74775, 0xBE32C0BB,
+ 0x70000000, 0x3FF4D3C4, 0x4F9474BB, 0xBE2FC24E,
+ 0xEC000000, 0x3FF4DE30, 0x09DA911F, 0x3E008F30,
+ 0xA0000000, 0x3FF4E8A2, 0xBAF8D98B, 0x3E2994C1,
+ 0x90000000, 0x3FF4F319, 0x18648D0A, 0xBE17C38C,
+ 0xBC000000, 0x3FF4FD95, 0xF22F8698, 0xBE288852,
+ 0x28000000, 0x3FF50817, 0x30A2C153, 0xBE3C3EC3,
+ 0xD4000000, 0x3FF5129D, 0x968492AA, 0xBE27B606,
+ 0xC4000000, 0x3FF51D29, 0x61101629, 0x3E2E0396,
+ 0xFC000000, 0x3FF527BA, 0xDAEEAB38, 0x3E3E876F,
+ 0x80000000, 0x3FF53251, 0xED945B30, 0x3E29F59E,
+ 0x50000000, 0x3FF53CED, 0x0B4AE3F1, 0x3E12D7DA,
+ 0x70000000, 0x3FF5478E, 0x5FB946D0, 0xBE2FAFB8,
+ 0xE0000000, 0x3FF55234, 0x87D80C66, 0xBE18A8B3,
+ 0xA4000000, 0x3FF55CE0, 0x764CF85C, 0x3E28B18F,
+ 0xC0000000, 0x3FF56791, 0x2BDBC6F4, 0x3E326017,
+ 0x38000000, 0x3FF57248, 0x53D523FE, 0xBE229F98,
+ 0x0C000000, 0x3FF57D04, 0x4D9B8720, 0xBE3BDD08,
+ 0x3C000000, 0x3FF587C5, 0x09D8749E, 0x3E169EBC,
+ 0xD0000000, 0x3FF5928B, 0x339C2080, 0x3E190C8C,
+ 0xC8000000, 0x3FF59D57, 0xDE75E9CA, 0x3E310FA4,
+ 0x28000000, 0x3FF5A829, 0x1097F186, 0x3E313D18,
+ 0xF4000000, 0x3FF5B2FF, 0xD51C23F6, 0xBE2BDE04,
+ 0x28000000, 0x3FF5BDDC, 0x8938C386, 0x3E3EE67E,
+ 0xD0000000, 0x3FF5C8BD, 0x47DF6575, 0x3E0973B8,
+ 0xE8000000, 0x3FF5D3A4, 0x1DB97781, 0x3E24DF02,
+ 0x78000000, 0x3FF5DE91, 0xAC4AECDC, 0xBE3FBA00,
+ 0x7C000000, 0x3FF5E983, 0x939F646A, 0xBE2F37AF,
+ 0xFC000000, 0x3FF5F47A, 0x58A6EEE9, 0xBE396DEF,
+ 0xF8000000, 0x3FF5FF77, 0xE3613C7B, 0xBE315248,
+ 0x74000000, 0x3FF60A7A, 0xF1553706, 0xBE26A9E2,
+ 0x74000000, 0x3FF61582, 0xAE4D7CB6, 0xBE3B6BF6,
+ 0xF8000000, 0x3FF6208F, 0x9EB5EBA5, 0xBE35775B,
+ 0x04000000, 0x3FF62BA3, 0xC1E43506, 0xBE2A821B,
+ 0x9C000000, 0x3FF636BB, 0x7B2D8CF4, 0xBE367CDA,
+ 0xC0000000, 0x3FF641D9, 0x3E907A1D, 0xBE13218B,
+ 0x74000000, 0x3FF64CFD, 0x7BF5DFE4, 0x3E3454EE,
+ 0xC0000000, 0x3FF65826, 0x6366C5FD, 0xBE3E960F,
+ 0x9C000000, 0x3FF66355, 0x8B43C17E, 0x3E2E378F,
+ 0x14000000, 0x3FF66E8A, 0xA4306535, 0x3E244BE0,
+ 0x28000000, 0x3FF679C4, 0x8DF63D6E, 0xBDE4B6C1,
+ 0xD8000000, 0x3FF68503, 0xE6A239CF, 0x3E3BA122,
+ 0x2C000000, 0x3FF69049, 0x59FB5F30, 0x3E27F286,
+ 0x24000000, 0x3FF69B94, 0x971D3970, 0xBE044041 } };
+
+static const union {
+ int4 i[2048];
+ double x[1024];
+} fine = { .i = {
+ 0x00000000, 0x3FF00000, 0x00000000, 0x00000000,
+ 0x00000000, 0x3FF00004, 0x55556AAB, 0x3DA00001,
+ 0x00000000, 0x3FF00008, 0xAAAB0000, 0x3DC00002,
+ 0x00000000, 0x3FF0000C, 0x8000D800, 0x3DD20004,
+ 0x00000000, 0x3FF00010, 0x5556AAAB, 0x3DE00005,
+ 0x00000000, 0x3FF00014, 0x6AADEC01, 0x3DE9000A,
+ 0x00000000, 0x3FF00018, 0x00036001, 0x3DF20009,
+ 0x00000000, 0x3FF0001C, 0x4AB0EB58, 0x3DF8800E,
+ 0x00000000, 0x3FF00020, 0xAAB00002, 0x3E00000A,
+ 0x00000000, 0x3FF00024, 0x30088B04, 0x3E04400F,
+ 0x00000000, 0x3FF00028, 0xD5625AB1, 0x3E090014,
+ 0x00000000, 0x3FF0002C, 0xBABDBB0A, 0x3E0E401B,
+ 0x00000000, 0x3FF00030, 0x000D8008, 0x3E120012,
+ 0x00000000, 0x3FF00034, 0xE2BD42E1, 0x3E152016,
+ 0x00000000, 0x3FF00038, 0x956E5812, 0x3E18801C,
+ 0x00000000, 0x3FF0003C, 0x2820F599, 0x3E1C2023,
+ 0x00000000, 0x3FF00040, 0x556AAABC, 0x3E200015,
+ 0x00000000, 0x3FF00044, 0x96C5DAD7, 0x3E221019,
+ 0x00000000, 0x3FF00048, 0x60222C1F, 0x3E24401E,
+ 0x00000000, 0x3FF0004C, 0xB97FC193, 0x3E269023,
+ 0x00000000, 0x3FF00050, 0xAADEC034, 0x3E290029,
+ 0x00000000, 0x3FF00054, 0x3C3F4F02, 0x3E2B9030,
+ 0x00000000, 0x3FF00058, 0x75A196FF, 0x3E2E4037,
+ 0x00000000, 0x3FF0005C, 0xAF82E194, 0x3E30881F,
+ 0x00000000, 0x3FF00060, 0x00360041, 0x3E320024,
+ 0x00000000, 0x3FF00064, 0xB0EA3F05, 0x3E338828,
+ 0x00000000, 0x3FF00068, 0xC59FB661, 0x3E35202D,
+ 0x00000000, 0x3FF0006C, 0x42567FD5, 0x3E36C833,
+ 0x00000000, 0x3FF00070, 0x2B0EB5E1, 0x3E388039,
+ 0x00000000, 0x3FF00074, 0x83C87407, 0x3E3A483F,
+ 0x00000000, 0x3FF00078, 0x5083D6C6, 0x3E3C2046,
+ 0x00000000, 0x3FF0007C, 0x9540FB9E, 0x3E3E084D,
+ 0x04000000, 0x3FF00080, 0xA9FFFEEF, 0xBE3FFFAA,
+ 0x04000000, 0x3FF00084, 0x693EF962, 0xBE3DF7A2,
+ 0x04000000, 0x3FF00088, 0xA47BD339, 0xBE3BDF99,
+ 0x04000000, 0x3FF0008C, 0x57B66AF5, 0xBE39B790,
+ 0x04000000, 0x3FF00090, 0x7EEE9E14, 0xBE377F86,
+ 0x04000000, 0x3FF00094, 0x16244916, 0xBE35377C,
+ 0x04000000, 0x3FF00098, 0x1957477B, 0xBE32DF71,
+ 0x04000000, 0x3FF0009C, 0x848773C2, 0xBE307765,
+ 0x04000000, 0x3FF000A0, 0xA7694ED3, 0xBE2BFEB2,
+ 0x04000000, 0x3FF000A4, 0x05BD75E2, 0xBE26EE99,
+ 0x04000000, 0x3FF000A8, 0x1C0B0BB1, 0xBE21BE7E,
+ 0x04000000, 0x3FF000AC, 0xC4A37A79, 0xBE18DCC3,
+ 0x04000000, 0x3FF000B0, 0x4244D60F, 0xBE0BF911,
+ 0x04000000, 0x3FF000B4, 0xEC91D848, 0xBDE6E255,
+ 0x04000000, 0x3FF000B8, 0xEC1B8F0C, 0x3E0107EB,
+ 0x04000000, 0x3FF000BC, 0x89BE52AA, 0x3E142439,
+ 0x04000000, 0x3FF000C0, 0x06C01033, 0x3E200240,
+ 0x04000000, 0x3FF000C4, 0xC8A9F760, 0x3E261264,
+ 0x04000000, 0x3FF000C8, 0x129D3FDE, 0x3E2C428B,
+ 0x04000000, 0x3FF000CC, 0x764D2658, 0x3E314959,
+ 0x04000000, 0x3FF000D0, 0x2F50C16C, 0x3E34816E,
+ 0x04000000, 0x3FF000D4, 0xB859A4AB, 0x3E37C983,
+ 0x04000000, 0x3FF000D8, 0x15680499, 0x3E3B219A,
+ 0x04000000, 0x3FF000DC, 0x4A7C16B5, 0x3E3E89B1,
+ 0x08000000, 0x3FF000E0, 0xA469EE7E, 0xBE3DFE36,
+ 0x08000000, 0x3FF000E4, 0xB349D37F, 0xBE3A761D,
+ 0x08000000, 0x3FF000E8, 0xDE235FCD, 0xBE36DE03,
+ 0x08000000, 0x3FF000EC, 0x20F659E6, 0xBE3335E9,
+ 0x08000000, 0x3FF000F0, 0xEF850E8F, 0xBE2EFB9A,
+ 0x08000000, 0x3FF000F4, 0xBD0F58E2, 0xBE276B61,
+ 0x08000000, 0x3FF000F8, 0x45163381, 0xBE1F764D,
+ 0x08000000, 0x3FF000FC, 0x5FDF589A, 0xBE0FABA6,
+ 0x08000000, 0x3FF00100, 0xABBBBE94, 0x3D8555AA,
+ 0x08000000, 0x3FF00104, 0xDABB690B, 0x3E102B2C,
+ 0x08000000, 0x3FF00108, 0x7820FBA0, 0x3E2045D9,
+ 0x08000000, 0x3FF0010C, 0x92F54742, 0x3E28961E,
+ 0x08000000, 0x3FF00110, 0xE2ED8E39, 0x3E308332,
+ 0x08000000, 0x3FF00114, 0x8C698119, 0x3E34CB57,
+ 0x08000000, 0x3FF00118, 0x49EEC0C4, 0x3E39237D,
+ 0x08000000, 0x3FF0011C, 0x1F7D92BC, 0x3E3D8BA4,
+ 0x0C000000, 0x3FF00120, 0xEEE9C27D, 0xBE3DFC33,
+ 0x0C000000, 0x3FF00124, 0xDD46F763, 0xBE39740A,
+ 0x0C000000, 0x3FF00128, 0xA799C375, 0xBE34DBE0,
+ 0x0C000000, 0x3FF0012C, 0x49E1DD2F, 0xBE3033B5,
+ 0x0C000000, 0x3FF00130, 0x803DF41F, 0xBE26F711,
+ 0x0C000000, 0x3FF00134, 0x19433A4C, 0xBE1ACD6C,
+ 0x0C000000, 0x3FF00138, 0x8770E36F, 0xBDFDB2C1,
+ 0x0C000000, 0x3FF0013C, 0x6B74A43E, 0x3E086820,
+ 0x0C000000, 0x3FF00140, 0xDEC0D058, 0x3E200A6A,
+ 0x0C000000, 0x3FF00144, 0x22BD7872, 0x3E2A1AD0,
+ 0x0C000000, 0x3FF00148, 0xF769E132, 0x3E32259B,
+ 0x0C000000, 0x3FF0014C, 0x2582289A, 0x3E374DD1,
+ 0x0C000000, 0x3FF00150, 0x9FA7E4F4, 0x3E3C8607,
+ 0x10000000, 0x3FF00154, 0x9624963C, 0xBE3E31C0,
+ 0x10000000, 0x3FF00158, 0x77E2F472, 0xBE38D987,
+ 0x10000000, 0x3FF0015C, 0x0192E02C, 0xBE33714D,
+ 0x10000000, 0x3FF00160, 0x5E6805CB, 0xBE2BF222,
+ 0x10000000, 0x3FF00164, 0xF98C0A34, 0xBE20E1A7,
+ 0x10000000, 0x3FF00168, 0x32447238, 0xBE06C4AB,
+ 0x10000000, 0x3FF0016C, 0xC225D8C1, 0x3E067D54,
+ 0x10000000, 0x3FF00170, 0x05C4630F, 0x3E210FD8,
+ 0x10000000, 0x3FF00174, 0xBB206115, 0x3E2CA05D,
+ 0x10000000, 0x3FF00178, 0x2C4F14A6, 0x3E342873,
+ 0x10000000, 0x3FF0017C, 0xF31F3B5E, 0x3E3A10B8,
+ 0x14000000, 0x3FF00180, 0xC9FEFCC9, 0xBE3FF6FF,
+ 0x14000000, 0x3FF00184, 0x070B344A, 0xBE39EEB7,
+ 0x14000000, 0x3FF00188, 0xC0050AA2, 0xBE33D66C,
+ 0x14000000, 0x3FF0018C, 0xE1D83C97, 0xBE2B5C41,
+ 0x14000000, 0x3FF00190, 0x57003305, 0xBE1DD74E,
+ 0x14000000, 0x3FF00194, 0xA80727F1, 0xBDF2D84A,
+ 0x14000000, 0x3FF00198, 0x534C5401, 0x3E14AB2F,
+ 0x14000000, 0x3FF0019C, 0xD875DE83, 0x3E27263B,
+ 0x14000000, 0x3FF001A0, 0x9FB782CA, 0x3E320B71,
+ 0x14000000, 0x3FF001A4, 0xF349371F, 0x3E3893C6,
+ 0x14000000, 0x3FF001A8, 0xEAF074C6, 0x3E3F2C1D,
+ 0x18000000, 0x3FF001AC, 0x75525ABC, 0xBE3A2B89,
+ 0x18000000, 0x3FF001B0, 0x297ECCE2, 0xBE33732F,
+ 0x18000000, 0x3FF001B4, 0x5B28EC49, 0xBE2955A6,
+ 0x18000000, 0x3FF001B8, 0xF64BA7FD, 0xBE1749D5,
+ 0x18000000, 0x3FF001BC, 0xA8645141, 0x3DF15E9E,
+ 0x18000000, 0x3FF001C0, 0x1D6F0B37, 0x3E201C96,
+ 0x18000000, 0x3FF001C4, 0xE6028E39, 0x3E2E2D5B,
+ 0x18000000, 0x3FF001C8, 0x9B63FA1E, 0x3E362F12,
+ 0x18000000, 0x3FF001CC, 0x0BE01026, 0x3E3D5779,
+ 0x1C000000, 0x3FF001D0, 0xB78A0445, 0xBE3B701E,
+ 0x1C000000, 0x3FF001D4, 0xAAD9CF9D, 0xBE3427B4,
+ 0x1C000000, 0x3FF001D8, 0x941DBAB5, 0xBE299E91,
+ 0x1C000000, 0x3FF001DC, 0x44A2DFDD, 0xBE159B6C,
+ 0x1C000000, 0x3FF001E0, 0x1EC8B89C, 0x3E008CA4,
+ 0x1C000000, 0x3FF001E4, 0xF1EE0E9A, 0x3E23340B,
+ 0x1C000000, 0x3FF001E8, 0x5231913C, 0x3E313279,
+ 0x1C000000, 0x3FF001EC, 0x93892E68, 0x3E38DAEE,
+ 0x20000000, 0x3FF001F0, 0x3F01A6A8, 0xBE3F6C9A,
+ 0x20000000, 0x3FF001F4, 0x216E726C, 0xBE37A421,
+ 0x20000000, 0x3FF001F8, 0x1F7970B9, 0xBE2F974C,
+ 0x20000000, 0x3FF001FC, 0x17AFEBC8, 0xBE1F8CA4,
+ 0x20000000, 0x3FF00200, 0x04445B06, 0x3DB55600,
+ 0x20000000, 0x3FF00204, 0x0C290A26, 0x3E203BAE,
+ 0x20000000, 0x3FF00208, 0x104547BD, 0x3E30365A,
+ 0x20000000, 0x3FF0020C, 0x22970DE3, 0x3E385EDF,
+ 0x24000000, 0x3FF00210, 0xBEF5A5F4, 0xBE3F6899,
+ 0x24000000, 0x3FF00214, 0x90605040, 0xBE372010,
+ 0x24000000, 0x3FF00218, 0x9B50D8EE, 0xBE2D8F0A,
+ 0x24000000, 0x3FF0021C, 0xCB35D444, 0xBE197BDF,
+ 0x24000000, 0x3FF00220, 0x2188E3D5, 0x3E00CCBC,
+ 0x24000000, 0x3FF00224, 0x36A79F6A, 0x3E254452,
+ 0x24000000, 0x3FF00228, 0xD69B2D28, 0x3E333ABC,
+ 0x24000000, 0x3FF0022C, 0xBA07BE5B, 0x3E3BE352,
+ 0x28000000, 0x3FF00230, 0x3665F227, 0xBE3B6415,
+ 0x28000000, 0x3FF00234, 0xF6AD58D5, 0xBE329B7A,
+ 0x28000000, 0x3FF00238, 0x059BD24A, 0xBE2385BD,
+ 0x28000000, 0x3FF0023C, 0xD8E2B1B4, 0xBDEB47FA,
+ 0x28000000, 0x3FF00240, 0x22CF60F6, 0x3E203CC2,
+ 0x28000000, 0x3FF00244, 0x39BEF87F, 0x3E312704,
+ 0x28000000, 0x3FF00248, 0xA63F5309, 0x3E3A3FA9,
+ 0x2C000000, 0x3FF0024C, 0xA516AE5E, 0xBE3C97AE,
+ 0x2C000000, 0x3FF00250, 0xA442792A, 0xBE335F04,
+ 0x2C000000, 0x3FF00254, 0xA686F3A2, 0xBE242CB0,
+ 0x2C000000, 0x3FF00258, 0xC3237903, 0xBDE7B535,
+ 0x2C000000, 0x3FF0025C, 0x9E7A6CF7, 0x3E21560E,
+ 0x2C000000, 0x3FF00260, 0xA8C01385, 0x3E3223BA,
+ 0x2C000000, 0x3FF00264, 0x627012DF, 0x3E3BAC70,
+ 0x30000000, 0x3FF00268, 0x7FB232EA, 0xBE3ABAD7,
+ 0x30000000, 0x3FF0026C, 0xF9A6244B, 0xBE31121C,
+ 0x30000000, 0x3FF00270, 0x1DAC9AE4, 0xBE1D6580,
+ 0x30000000, 0x3FF00274, 0xD7FB0AC3, 0x3E037AFA,
+ 0x30000000, 0x3FF00278, 0x633420EB, 0x3E289042,
+ 0x30000000, 0x3FF0027C, 0x8065842A, 0x3E3630E5,
+ 0x34000000, 0x3FF00280, 0xB49DA4FF, 0xBE3FD653,
+ 0x34000000, 0x3FF00284, 0x696ECB76, 0xBE35CD8A,
+ 0x34000000, 0x3FF00288, 0x341A9D63, 0xBE27697D,
+ 0x34000000, 0x3FF0028C, 0x2788D238, 0xBDF8BF04,
+ 0x34000000, 0x3FF00290, 0x42A03782, 0x3E2159C1,
+ 0x34000000, 0x3FF00294, 0x154D4F89, 0x3E32F5B4,
+ 0x34000000, 0x3FF00298, 0x1D7FB2C1, 0x3E3D4E8A,
+ 0x38000000, 0x3FF0029C, 0x42181508, 0xBE38489D,
+ 0x38000000, 0x3FF002A0, 0x0AF2C28C, 0xBE2B9F84,
+ 0x38000000, 0x3FF002A4, 0x451C5357, 0xBE0A3721,
+ 0x38000000, 0x3FF002A8, 0x61A8605E, 0x3E1D47F1,
+ 0x38000000, 0x3FF002AC, 0x81B02FCF, 0x3E31FADF,
+ 0x38000000, 0x3FF002B0, 0x572F674A, 0x3E3CB3C5,
+ 0x3C000000, 0x3FF002B4, 0x231795EA, 0xBE388352,
+ 0x3C000000, 0x3FF002B8, 0xD248367A, 0xBE2B54CD,
+ 0x3C000000, 0x3FF002BC, 0xB7ABD90D, 0xBE060BC7,
+ 0x3C000000, 0x3FF002C0, 0x6EE9F1EF, 0x3E206EEF,
+ 0x3C000000, 0x3FF002C4, 0x261BF09E, 0x3E33406B,
+ 0x3C000000, 0x3FF002C8, 0x59001C60, 0x3E3E5961,
+ 0x40000000, 0x3FF002CC, 0xABDDD232, 0xBE367DA5,
+ 0x40000000, 0x3FF002D0, 0xC8FA5113, 0xBE268953,
+ 0x40000000, 0x3FF002D4, 0x8B33A701, 0x3D9152CC,
+ 0x40000000, 0x3FF002D8, 0x3E058570, 0x3E26BAAC,
+ 0x40000000, 0x3FF002DC, 0x63236E71, 0x3E36C65A,
+ 0x44000000, 0x3FF002E0, 0x7C7A795C, 0xBE3DC09E,
+ 0x44000000, 0x3FF002E4, 0x7BD63D1D, 0xBE323794,
+ 0x44000000, 0x3FF002E8, 0x5BBC9105, 0xBE1A7A1E,
+ 0x44000000, 0x3FF002EC, 0xD8EE2B1B, 0x3E142A20,
+ 0x44000000, 0x3FF002F0, 0xEFAA8A8D, 0x3E30C39A,
+ 0x44000000, 0x3FF002F4, 0x995E96A2, 0x3E3C8CB0,
+ 0x48000000, 0x3FF002F8, 0xC8A79469, 0xBE379A36,
+ 0x48000000, 0x3FF002FC, 0x64CE7203, 0xBE276236,
+ 0x48000000, 0x3FF00300, 0x0819DA68, 0x3DD200D8,
+ 0x48000000, 0x3FF00304, 0xE5E018D4, 0x3E28A249,
+ 0x48000000, 0x3FF00308, 0x8A087692, 0x3E386A49,
+ 0x4C000000, 0x3FF0030C, 0xD695988B, 0xBE3B6C8E,
+ 0x4C000000, 0x3FF00310, 0x55D2BCBA, 0xBE2E66C8,
+ 0x4C000000, 0x3FF00314, 0x7790BA7A, 0xBE0751B3,
+ 0x4C000000, 0x3FF00318, 0xC2A20261, 0x3E22DDF4,
+ 0x4C000000, 0x3FF0031C, 0x49E0B0B5, 0x3E35D82E,
+ 0x50000000, 0x3FF00320, 0xB142422E, 0xBE3DAE9A,
+ 0x50000000, 0x3FF00324, 0x8C170FE6, 0xBE312560,
+ 0x50000000, 0x3FF00328, 0x0A73BF77, 0xBE12308D,
+ 0x50000000, 0x3FF0032C, 0x5E59CEFA, 0x3E203A3A,
+ 0x50000000, 0x3FF00330, 0xCD4740BF, 0x3E34D660,
+ 0x54000000, 0x3FF00334, 0x644D1883, 0xBE3E6058,
+ 0x54000000, 0x3FF00338, 0x618F57B6, 0xBE31870E,
+ 0x54000000, 0x3FF0033C, 0x99FABD0F, 0xBE127704,
+ 0x54000000, 0x3FF00340, 0xA1CB5ECF, 0x3E20B71E,
+ 0x54000000, 0x3FF00344, 0x089E93E1, 0x3E3564E3,
+ 0x58000000, 0x3FF00348, 0xFB533142, 0xBE3D81C5,
+ 0x58000000, 0x3FF0034C, 0xB6EECE6C, 0xBE30586B,
+ 0x58000000, 0x3FF00350, 0x319B883E, 0xBE08F871,
+ 0x58000000, 0x3FF00354, 0x75BF7503, 0x3E2454A5,
+ 0x58000000, 0x3FF00358, 0xF04B88C5, 0x3E3783B6,
+ 0x5C000000, 0x3FF0035C, 0x81EF30A7, 0xBE3B12E1,
+ 0x5C000000, 0x3FF00360, 0x2F9F3657, 0xBE2B32ED,
+ 0x5C000000, 0x3FF00364, 0x54DF31BC, 0xBDB0084D,
+ 0x5C000000, 0x3FF00368, 0xC303B7B9, 0x3E2B12D2,
+ 0x5C000000, 0x3FF0036C, 0x78B56F97, 0x3E3B32DE,
+ 0x60000000, 0x3FF00370, 0x03B9496C, 0xBE3713A9,
+ 0x60000000, 0x3FF00374, 0x1F92E726, 0xBE22945A,
+ 0x60000000, 0x3FF00378, 0x621736DF, 0x3E123D49,
+ 0x60000000, 0x3FF0037C, 0x3935580D, 0x3E3278D5,
+ 0x64000000, 0x3FF00380, 0x69B9F5FB, 0xBE3F8DA4,
+ 0x64000000, 0x3FF00384, 0x8C473CC8, 0xBE31841A,
+ 0x64000000, 0x3FF00388, 0x538CDE07, 0xBE0B5469,
+ 0x64000000, 0x3FF0038C, 0x7F8F9D65, 0x3E257E07,
+ 0x64000000, 0x3FF00390, 0x3665E52B, 0x3E38F898,
+ 0x68000000, 0x3FF00394, 0xC29674BD, 0xBE38BDCF,
+ 0x68000000, 0x3FF00398, 0x4E58B4D9, 0xBE24C868,
+ 0x68000000, 0x3FF0039C, 0x329466D7, 0x3E1015AC,
+ 0x68000000, 0x3FF003A0, 0xDCDECE44, 0x3E327F0D,
+ 0x6C000000, 0x3FF003A4, 0xB27E5528, 0xBE3EF74B,
+ 0x6C000000, 0x3FF003A8, 0x9D7167F2, 0xBE305DA1,
+ 0x6C000000, 0x3FF003AC, 0xFF980820, 0xBDFB3F3D,
+ 0x6C000000, 0x3FF003B0, 0x13D49789, 0x3E2A0B7B,
+ 0x6C000000, 0x3FF003B4, 0xA43AE87C, 0x3E3BCF72,
+ 0x70000000, 0x3FF003B8, 0x8D06BDC0, 0xBE3556D4,
+ 0x70000000, 0x3FF003BC, 0x1766E54D, 0xBE19B460,
+ 0x70000000, 0x3FF003C0, 0x7B85C8BA, 0x3E211950,
+ 0x70000000, 0x3FF003C4, 0x41D00AED, 0x3E37966C,
+ 0x74000000, 0x3FF003C8, 0xF5B15507, 0xBE394FCB,
+ 0x74000000, 0x3FF003CC, 0xC98093C4, 0xBE244C00,
+ 0x74000000, 0x3FF003D0, 0xE2907BDF, 0x3E144F3B,
+ 0x74000000, 0x3FF003D4, 0x267CD924, 0x3E345DA2,
+ 0x78000000, 0x3FF003D8, 0xD73526C0, 0xBE3C4886,
+ 0x78000000, 0x3FF003DC, 0xF8E1D62E, 0xBE29BD57,
+ 0x78000000, 0x3FF003E0, 0xD65415E1, 0x3E04D995,
+ 0x78000000, 0x3FF003E4, 0x527E1A58, 0x3E322515,
+ 0x7C000000, 0x3FF003E8, 0x31552BA5, 0xBE3E4104,
+ 0x7C000000, 0x3FF003EC, 0x995CAB3B, 0xBE2D2E33,
+ 0x7C000000, 0x3FF003F0, 0x473970DC, 0x3DF22D48,
+ 0x7C000000, 0x3FF003F4, 0xC61195FC, 0x3E30ECC6,
+ 0x80000000, 0x3FF003F8, 0x03D35C34, 0xBE3F3943,
+ 0x80000000, 0x3FF003FC, 0xAA7483C7, 0xBE2E9E91,
+ 0x80000000, 0x3FF00400, 0xBBBC71CE, 0x3DE556AA,
+ 0x80000000, 0x3FF00404, 0x817613C1, 0x3E30B4B7,
+ 0x84000000, 0x3FF00408, 0x4E70B0AC, 0xBE3F3142,
+ 0x84000000, 0x3FF0040C, 0x2BAAD02F, 0xBE2E0E70,
+ 0x84000000, 0x3FF00410, 0xF48F01F2, 0x3DF32D62,
+ 0x84000000, 0x3FF00414, 0x84EB5B98, 0x3E317CE8,
+ 0x88000000, 0x3FF00418, 0x10ED210B, 0xBE3E2901,
+ 0x88000000, 0x3FF0041C, 0x1C7F0051, 0xBE2B7DCD,
+ 0x88000000, 0x3FF00420, 0x87AA2706, 0x3E05D9C0,
+ 0x88000000, 0x3FF00424, 0xD0B235B3, 0x3E33455A,
+ 0x8C000000, 0x3FF00428, 0x4B07A510, 0xBE3C207E,
+ 0x8C000000, 0x3FF0042C, 0x7C6E838B, 0xBE26ECA6,
+ 0x8C000000, 0x3FF00430, 0xEC91A8D5, 0x3E150F6F,
+ 0x8C000000, 0x3FF00434, 0x650C6A83, 0x3E360E0F,
+ 0x90000000, 0x3FF00438, 0xFC7E3439, 0xBE3917B8,
+ 0x90000000, 0x3FF0043C, 0x4AF4C8B6, 0xBE205AFA,
+ 0x90000000, 0x3FF00440, 0xDC31D181, 0x3E219985,
+ 0x90000000, 0x3FF00444, 0x423CC2BE, 0x3E39D707,
+ 0x94000000, 0x3FF00448, 0x250DC5BF, 0xBE350EB0,
+ 0x94000000, 0x3FF0044C, 0x1E2CF893, 0xBE0F231A,
+ 0x94000000, 0x3FF00450, 0xD42C92D4, 0x3E2AABDB,
+ 0x94000000, 0x3FF00454, 0x6887075B, 0x3E3EA043,
+ 0x98000000, 0x3FF00458, 0xC472509B, 0xBE300562,
+ 0x98000000, 0x3FF0045C, 0x72B572E0, 0x3DF64FB6,
+ 0x98000000, 0x3FF00460, 0xEF61155C, 0x3E32DF5D,
+ 0x9C000000, 0x3FF00464, 0x27CFFE6A, 0xBE3B963B,
+ 0x9C000000, 0x3FF00468, 0xB4CD96FE, 0xBE23F79F,
+ 0x9C000000, 0x3FF0046C, 0x6E771F13, 0x3E1EBA7F,
+ 0x9C000000, 0x3FF00470, 0xFE3ED608, 0x3E396913,
+ 0xA0000000, 0x3FF00474, 0x6E82850F, 0xBE34CC73,
+ 0xA0000000, 0x3FF00478, 0x352966B7, 0xBE078FB3,
+ 0xA0000000, 0x3FF0047C, 0x33AFF8AE, 0x3E2DF116,
+ 0xA4000000, 0x3FF00480, 0xE909EADD, 0xBE3F0CEE,
+ 0xA4000000, 0x3FF00484, 0xD6938597, 0xBE2A04C8,
+ 0xA4000000, 0x3FF00488, 0x5C6654D8, 0x3E1460AA,
+ 0xA4000000, 0x3FF0048C, 0x22213ECF, 0x3E3742BE,
+ 0xA8000000, 0x3FF00490, 0xC631A356, 0xBE3682A9,
+ 0xA8000000, 0x3FF00494, 0x7777B644, 0xBE10E034,
+ 0xA8000000, 0x3FF00498, 0x3E3B0991, 0x3E2C4528,
+ 0xAC000000, 0x3FF0049C, 0x0B3E269F, 0xBE3F72C6,
+ 0xAC000000, 0x3FF004A0, 0x31DF923B, 0xBE29F037,
+ 0xAC000000, 0x3FF004A4, 0xE82713DE, 0x3E164A4D,
+ 0xAC000000, 0x3FF004A8, 0x31AFAC4B, 0x3E382D47,
+ 0xB0000000, 0x3FF004AC, 0x6DFCE978, 0xBE352800,
+ 0xB0000000, 0x3FF004B0, 0x07D68D27, 0xBE036A1B,
+ 0xB0000000, 0x3FF004B4, 0x5CB71F6F, 0x3E305D7E,
+ 0xB4000000, 0x3FF004B8, 0x30E5E990, 0xBE3CC7BB,
+ 0xB4000000, 0x3FF004BC, 0x0BA17DEA, 0xBE23B9E0,
+ 0xB4000000, 0x3FF004C0, 0xC3EF9BD8, 0x3E223BBF,
+ 0xB4000000, 0x3FF004C4, 0x8A74ECC0, 0x3E3C28B4,
+ 0xB8000000, 0x3FF004C8, 0x085831CA, 0xBE30BC72,
+ 0xB8000000, 0x3FF004CC, 0x6C8D1FC8, 0x3E037361,
+ 0xB8000000, 0x3FF004D0, 0x3033A0B8, 0x3E35A94F,
+ 0xBC000000, 0x3FF004D4, 0xFC7107DE, 0xBE370BC8,
+ 0xBC000000, 0x3FF004D8, 0xA2D908DA, 0xBE0D86E2,
+ 0xBC000000, 0x3FF004DC, 0x58ED155E, 0x3E2F742A,
+ 0xC0000000, 0x3FF004E0, 0x75FACDD0, 0xBE3CCAF4,
+ 0xC0000000, 0x3FF004E4, 0x6F5BE5D3, 0xBE227FF2,
+ 0xC0000000, 0x3FF004E8, 0xD6BCA827, 0x3E24B60D,
+ 0xC0000000, 0x3FF004EC, 0xF72B40D6, 0x3E3E060B,
+ 0xC4000000, 0x3FF004F0, 0x208BE3E3, 0xBE2C7DD4,
+ 0xC4000000, 0x3FF004F4, 0x642FDDB8, 0x3E163093,
+ 0xC4000000, 0x3FF004F8, 0xB72239A5, 0x3E396738,
+ 0xC8000000, 0x3FF004FC, 0x7201ED9B, 0xBE32ADAE,
+ 0xC8000000, 0x3FF00500, 0x1A0C05F3, 0x3DF4D6F6,
+ 0xC8000000, 0x3FF00504, 0x360B8346, 0x3E355892,
+ 0xCC000000, 0x3FF00508, 0xF0C06435, 0xBE368C45,
+ 0xCC000000, 0x3FF0050C, 0x760DA2F6, 0xBE0308C8,
+ 0xCC000000, 0x3FF00510, 0xE008D57B, 0x3E31DA18,
+ 0xD0000000, 0x3FF00514, 0x205F82F4, 0xBE39DAB0,
+ 0xD0000000, 0x3FF00518, 0x2FE5E3E3, 0xBE15FDD0,
+ 0xD0000000, 0x3FF0051C, 0x42787241, 0x3E2DD79A,
+ 0xD4000000, 0x3FF00520, 0x94BD25F4, 0xBE3C98EC,
+ 0xD4000000, 0x3FF00524, 0x53C89D03, 0xBE201B42,
+ 0xD4000000, 0x3FF00528, 0xCB901057, 0x3E291B5E,
+ 0xD8000000, 0x3FF0052C, 0xE1B6D837, 0xBE3EC6FA,
+ 0xD8000000, 0x3FF00530, 0xF8BF49E7, 0xBE24173F,
+ 0xD8000000, 0x3FF00534, 0x339DDB57, 0x3E257F80,
+ 0xD8000000, 0x3FF00538, 0x64D62C5C, 0x3E3F9B25,
+ 0xDC000000, 0x3FF0053C, 0x2E913659, 0xBE26F2E0,
+ 0xDC000000, 0x3FF00540, 0x52E7CB93, 0x3E2303FF,
+ 0xDC000000, 0x3FF00544, 0xAB0CFEF5, 0x3E3E8D74,
+ 0xE0000000, 0x3FF00548, 0x1CF7FDE6, 0xBE28AE22,
+ 0xE0000000, 0x3FF0054C, 0x01B47B93, 0x3E21A8DD,
+ 0xE0000000, 0x3FF00550, 0x5D1107E2, 0x3E3E0FF3,
+ 0xE4000000, 0x3FF00554, 0xEBAC99E1, 0xBE294904,
+ 0xE4000000, 0x3FF00558, 0x184B2814, 0x3E216E1A,
+ 0xE4000000, 0x3FF0055C, 0xE706008B, 0x3E3E22A1,
+ 0xE8000000, 0x3FF00560, 0xC267616A, 0xBE28C387,
+ 0xE8000000, 0x3FF00564, 0x6EF3B008, 0x3E2253B7,
+ 0xE8000000, 0x3FF00568, 0xB50FF371, 0x3E3EC580,
+ 0xEC000000, 0x3FF0056C, 0xC8E0096B, 0xBE271DA9,
+ 0xEC000000, 0x3FF00570, 0xDDF69498, 0x3E2459B5,
+ 0xEC000000, 0x3FF00574, 0x33533C31, 0x3E3FF890,
+ 0xF0000000, 0x3FF00578, 0x26CDA497, 0xBE24576A,
+ 0xF0000000, 0x3FF0057C, 0x3D9CF923, 0x3E278016,
+ 0xF4000000, 0x3FF00580, 0x320B787B, 0xBE3E442F,
+ 0xF4000000, 0x3FF00584, 0x03E6A36B, 0xBE2070C8,
+ 0xF4000000, 0x3FF00588, 0x6630A33F, 0x3E2BC6D9,
+ 0xF8000000, 0x3FF0058C, 0x0EE72CBF, 0xBE3BF0BD,
+ 0xF8000000, 0x3FF00590, 0x0FC1A853, 0xBE16D385,
+ 0xF8000000, 0x3FF00594, 0x17FDFD5D, 0x3E309700,
+ 0xFC000000, 0x3FF00598, 0xF71A91AC, 0xBE390D18,
+ 0xFC000000, 0x3FF0059C, 0x69C58B86, 0xBE050963,
+ 0xFC000000, 0x3FF005A0, 0xB9A504CD, 0x3E33DAC5,
+ 0x00000000, 0x3FF005A5, 0x7E800734, 0xBE359942,
+ 0x00000000, 0x3FF005A9, 0xE59934CD, 0x3DF02BAE,
+ 0x00000000, 0x3FF005AD, 0x04333E0E, 0x3E37AEBE,
+ 0x04000000, 0x3FF005B1, 0x38F19C2F, 0xBE319539,
+ 0x04000000, 0x3FF005B5, 0xEBB1C157, 0x3E14DB54,
+ 0x04000000, 0x3FF005B9, 0x63CED05D, 0x3E3C12E9,
+ 0x08000000, 0x3FF005BD, 0x74921CAF, 0xBE2A01F9,
+ 0x08000000, 0x3FF005C1, 0xC94C85F2, 0x3E23F645,
+ 0x0C000000, 0x3FF005C5, 0xBB61CBEE, 0xBE3EF8B7,
+ 0x0C000000, 0x3FF005C9, 0x597F2931, 0xBE1F7232,
+ 0x0C000000, 0x3FF005CD, 0xAF5B7345, 0x3E2E9F48,
+ 0x10000000, 0x3FF005D1, 0xED37CD5F, 0xBE397424,
+ 0x10000000, 0x3FF005D5, 0x08775C6B, 0xBE013F43,
+ 0x10000000, 0x3FF005D9, 0x0029D3DB, 0x3E35345A,
+ 0x14000000, 0x3FF005DD, 0xC58C1962, 0xBE335F5D,
+ 0x14000000, 0x3FF005E1, 0x47430E04, 0x3E1073C1,
+ 0x14000000, 0x3FF005E5, 0x4A41E248, 0x3E3BA944,
+ 0x18000000, 0x3FF005E9, 0xB06E888E, 0xBE2974C3,
+ 0x18000000, 0x3FF005ED, 0xDCCD9333, 0x3E25E3FB,
+ 0x1C000000, 0x3FF005F1, 0x5DE27951, 0xBE3D519C,
+ 0x1C000000, 0x3FF005F5, 0xE4464502, 0xBE1614C2,
+ 0x1C000000, 0x3FF005F9, 0xE0DAFE93, 0x3E325740,
+ 0x20000000, 0x3FF005FD, 0x8C1B4C10, 0xBE35BC47,
+ 0x20000000, 0x3FF00601, 0x20686CE9, 0x3E0201B0,
+ 0x20000000, 0x3FF00605, 0x95558B63, 0x3E3A4CB9,
+ 0x24000000, 0x3FF00609, 0xA880A3EB, 0xBE2B2D79,
+ 0x24000000, 0x3FF0060D, 0x9699EEB7, 0x3E252BA5,
+ 0x28000000, 0x3FF00611, 0x880115E1, 0xBE3D2D97,
+ 0x28000000, 0x3FF00615, 0x28A3D788, 0xBE1383EF,
+ 0x28000000, 0x3FF00619, 0x08D6DC23, 0x3E337BA6,
+ 0x2C000000, 0x3FF0061D, 0x0B001A08, 0xBE3417B2,
+ 0x2C000000, 0x3FF00621, 0xF94EB99A, 0x3E1193EF,
+ 0x2C000000, 0x3FF00625, 0x28D3BD3B, 0x3E3CF1B0,
+ 0x30000000, 0x3FF00629, 0x0EFCC982, 0xBE24E32B,
+ 0x30000000, 0x3FF0062D, 0xE2BDA47F, 0x3E2C7655,
+ 0x34000000, 0x3FF00631, 0x689312F8, 0xBE39080E,
+ 0x34000000, 0x3FF00635, 0xA9444DB4, 0xBDCDA0C8,
+ 0x34000000, 0x3FF00639, 0x7B21FE23, 0x3E38A191,
+ 0x38000000, 0x3FF0063D, 0x7E67E1E1, 0xBE2CE32A,
+ 0x38000000, 0x3FF00641, 0x875A71F0, 0x3E251694,
+ 0x3C000000, 0x3FF00645, 0xF838F455, 0xBE3C67CF,
+ 0x3C000000, 0x3FF00649, 0x77274052, 0xBE0A571F,
+ 0x3C000000, 0x3FF0064D, 0x63AAEFA8, 0x3E35E20E,
+ 0x40000000, 0x3FF00651, 0xFC87DA70, 0xBE30E0F8,
+ 0x40000000, 0x3FF00655, 0xE9089AFD, 0x3E20D80B,
+ 0x44000000, 0x3FF00659, 0xC52F03BD, 0xBE3E36F4,
+ 0x44000000, 0x3FF0065D, 0x9680E14E, 0xBE1327A4,
+ 0x44000000, 0x3FF00661, 0xD732468D, 0x3E34B328,
+ 0x48000000, 0x3FF00665, 0xCAB5EF4A, 0xBE31BFBE,
+ 0x48000000, 0x3FF00669, 0xE2A2FBE1, 0x3E1F757F,
+ 0x4C000000, 0x3FF0066D, 0xDAB014DA, 0xBE3E757A,
+ 0x4C000000, 0x3FF00671, 0x02FB3FBB, 0xBE12E13D,
+ 0x4C000000, 0x3FF00675, 0xCA7E298D, 0x3E3514E2,
+ 0x50000000, 0x3FF00679, 0xB4F78B94, 0xBE310DE4,
+ 0x50000000, 0x3FF0067D, 0x89C35D05, 0x3E21BEB4,
+ 0x54000000, 0x3FF00681, 0x43F4895C, 0xBE3D2360,
+ 0x54000000, 0x3FF00685, 0x5BC49ADF, 0xBE08B0A2,
+ 0x54000000, 0x3FF00689, 0x32573159, 0x3E37073E,
+ 0x58000000, 0x3FF0068D, 0x8D0732D2, 0xBE2D96D1,
+ 0x58000000, 0x3FF00691, 0x9BF15E67, 0x3E26E3ED,
+ 0x5C000000, 0x3FF00695, 0x0C3250FB, 0xBE3A40A3,
+ 0x5C000000, 0x3FF00699, 0xFD0AE214, 0x3DBCC9AE,
+ 0x5C000000, 0x3FF0069D, 0x038868A1, 0x3E3A8A3D,
+ 0x60000000, 0x3FF006A1, 0x151D21CE, 0xBE25F092,
+ 0x60000000, 0x3FF006A5, 0x11738C43, 0x3E2F2A6F,
+ 0x64000000, 0x3FF006A9, 0x3E9CE96D, 0xBE35CD41,
+ 0x64000000, 0x3FF006AD, 0x8DBC2918, 0x3E138132,
+ 0x64000000, 0x3FF006B1, 0x32DF4C13, 0x3E3F9DE1,
+ 0x68000000, 0x3FF006B5, 0x3129E0B2, 0xBE16520E,
+ 0x68000000, 0x3FF006B9, 0x69F36A61, 0x3E35491E,
+ 0x6C000000, 0x3FF006BD, 0xCCCABCD4, 0xBE2F9271,
+ 0x6C000000, 0x3FF006C1, 0x0D59B899, 0x3E2668ED,
+ 0x70000000, 0x3FF006C5, 0x4AD435A0, 0xBE39BDD3,
+ 0x70000000, 0x3FF006C9, 0x9191CABB, 0x3DF5FE9A,
+ 0x70000000, 0x3FF006CD, 0x6676850B, 0x3E3C8DAD,
+ 0x74000000, 0x3FF006D1, 0x1D74934A, 0xBE206910,
+ 0x74000000, 0x3FF006D5, 0x4D886478, 0x3E331949,
+ 0x78000000, 0x3FF006D9, 0x80BFBBC2, 0xBE3188DE,
+ 0x78000000, 0x3FF006DD, 0x14DE1719, 0x3E23CA01,
+ 0x7C000000, 0x3FF006E1, 0x8CE98EC0, 0xBE3A9D19,
+ 0x7C000000, 0x3FF006E5, 0xA705A6E7, 0x3DEE1A67,
+ 0x7C000000, 0x3FF006E9, 0xECD5F851, 0x3E3C8EC6,
+ 0x80000000, 0x3FF006ED, 0xE839CE4D, 0xBE1F0CF9,
+ 0x80000000, 0x3FF006F1, 0x0C8CA46A, 0x3E33FAC3,
+ 0x84000000, 0x3FF006F5, 0x7B5703D8, 0xBE303734,
+ 0x84000000, 0x3FF006F9, 0xE490A112, 0x3E274DB5,
+ 0x88000000, 0x3FF006FD, 0xA693A093, 0xBE386B0E,
+ 0x88000000, 0x3FF00701, 0xF0B73DAA, 0x3E0C9875,
+ 0x88000000, 0x3FF00705, 0x2449A944, 0x3E3FA133,
+ 0x8C000000, 0x3FF00709, 0xBFE66C14, 0xBE110285,
+ 0x8C000000, 0x3FF0070D, 0x054EDCBD, 0x3E37ED91,
+ 0x90000000, 0x3FF00711, 0xEFB65924, 0xBE27A86A,
+ 0x90000000, 0x3FF00715, 0x1C8A0CF1, 0x3E307A0B,
+ 0x94000000, 0x3FF00719, 0x397FB1D6, 0xBE3327AD,
+ 0x94000000, 0x3FF0071D, 0x1412B9FB, 0x3E228D43,
+ 0x98000000, 0x3FF00721, 0x94D8FFB0, 0xBE3A3B08,
+ 0x98000000, 0x3FF00725, 0x6ED80040, 0x3E029AA3,
+ 0x98000000, 0x3FF00729, 0x9627250A, 0x3E3EF1B8,
+ 0x9C000000, 0x3FF0072D, 0x5FCB1B09, 0xBE117F70,
+ 0x9C000000, 0x3FF00731, 0x678F0789, 0x3E385E96,
+ 0xA0000000, 0x3FF00735, 0xCEA3485B, 0xBE25A5DF,
+ 0xA0000000, 0x3FF00739, 0xFF6D0303, 0x3E320B90,
+ 0xA4000000, 0x3FF0073D, 0xE03334FF, 0xBE3105E6,
+ 0xA4000000, 0x3FF00741, 0xFB9F056D, 0x3E27F150,
+ 0xA8000000, 0x3FF00745, 0xE28905F4, 0xBE36F8C0,
+ 0xA8000000, 0x3FF00749, 0x0B1407AA, 0x3E189774,
+ 0xAC000000, 0x3FF0074D, 0xCE4493C4, 0xBE3CAB7D,
+ 0xAC000000, 0x3FF00751, 0xCB817D78, 0x3DE265D5,
+ 0xAC000000, 0x3FF00755, 0x7CA8B4E3, 0x3E3DE1E2,
+ 0xB0000000, 0x3FF00759, 0x7D730FC6, 0xBE12FD89,
+ 0xB0000000, 0x3FF0075D, 0x1E4D7759, 0x3E38AF60,
+ 0xB4000000, 0x3FF00761, 0x0CAD84A2, 0xBE23A3AC,
+ 0xB4000000, 0x3FF00765, 0x36B866FD, 0x3E33BCFB,
+ 0xB8000000, 0x3FF00769, 0x4D0667A1, 0xBE2D4858,
+ 0xB8000000, 0x3FF0076D, 0xCBF08E6A, 0x3E2E1567,
+ 0xBC000000, 0x3FF00771, 0x9FD34D05, 0xBE333664,
+ 0xBC000000, 0x3FF00775, 0x9837D6E0, 0x3E253114,
+ 0xC0000000, 0x3FF00779, 0x5238327D, 0xBE37887F,
+ 0xC0000000, 0x3FF0077D, 0x24C8DC90, 0x3E1999FA,
+ 0xC4000000, 0x3FF00781, 0x1DA2F8BE, 0xBE3B9A7C,
+ 0xC4000000, 0x3FF00785, 0xEA50EE6A, 0x3E03A485,
+ 0xC8000000, 0x3FF00789, 0xE204A449, 0xBE3F6C5A,
+ 0xC8000000, 0x3FF0078D, 0x78D5D0F3, 0xBDF3D3EF,
+ 0xC8000000, 0x3FF00791, 0x80B1D66C, 0x3E3D01E4,
+ 0xCC000000, 0x3FF00795, 0xD5149796, 0xBE12BBC1,
+ 0xCC000000, 0x3FF00799, 0x2A8F92F0, 0x3E39B042,
+ 0xD0000000, 0x3FF0079D, 0x6F386487, 0xBE1F820E,
+ 0xD0000000, 0x3FF007A1, 0x3BA3BCDA, 0x3E369EBE,
+ 0xD4000000, 0x3FF007A5, 0x96320652, 0xBE25A3F0,
+ 0xD4000000, 0x3FF007A9, 0xD3FD8FCA, 0x3E33CD58,
+ 0xD8000000, 0x3FF007AD, 0xC62D40B1, 0xBE2B069C,
+ 0xD8000000, 0x3FF007B1, 0x13AC5766, 0x3E313C12,
+ 0xDC000000, 0x3FF007B5, 0x876F3A0B, 0xBE2FE90B,
+ 0xDC000000, 0x3FF007B9, 0x357EDEB8, 0x3E2DD5D4,
+ 0xE0000000, 0x3FF007BD, 0x4CEC957E, 0xBE32259E,
+ 0xE0000000, 0x3FF007C1, 0x128C86C6, 0x3E29B3C2,
+ 0xE4000000, 0x3FF007C5, 0xDEA61608, 0xBE341697,
+ 0xE4000000, 0x3FF007C9, 0xFEA09E70, 0x3E2611ED,
+ 0xE8000000, 0x3FF007CD, 0x58D49AE3, 0xBE35C772,
+ 0xE8000000, 0x3FF007D1, 0x39DA3D42, 0x3E22F058,
+ 0xEC000000, 0x3FF007D5, 0x9B689043, 0xBE37382D,
+ 0xEC000000, 0x3FF007D9, 0x04589AD6, 0x3E204F01,
+ 0xF0000000, 0x3FF007DD, 0x86525259, 0xBE3868C9,
+ 0xF0000000, 0x3FF007E1, 0x3C761DAC, 0x3E1C5BD1,
+ 0xF4000000, 0x3FF007E5, 0xF9822D4C, 0xBE395945,
+ 0xF4000000, 0x3FF007E9, 0x8F4221F9, 0x3E191A1E,
+ 0xF8000000, 0x3FF007ED, 0xD4E85D3A, 0xBE3A09A2,
+ 0xF8000000, 0x3FF007F1, 0x81547225, 0x3E16D8EA,
+ 0xFC000000, 0x3FF007F5, 0xF8750E3B, 0xBE3A79DF,
+ 0xFC000000, 0x3FF007F9, 0x92EC7DE3, 0x3E159835,
+ 0x00000000, 0x3FF007FE, 0x44185C5D, 0xBE3AA9FD } };
+
+#endif
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/ulog.h b/REORG.TODO/sysdeps/ieee754/dbl-64/ulog.h
new file mode 100644
index 0000000000..e5fbad044e
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/ulog.h
@@ -0,0 +1,187 @@
+/*
+ * IBM Accurate Mathematical Library
+ * Written by International Business Machines Corp.
+ * Copyright (C) 2001-2017 Free Software Foundation, Inc.
+ *
+ * This program 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 2.1 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 program; if not, see <http://www.gnu.org/licenses/>.
+ */
+
+/******************************************************************/
+/* */
+/* MODULE_NAME:ulog.h */
+/* */
+/* common data and variables prototype and definition */
+/******************************************************************/
+
+#ifndef ULOG_H
+#define ULOG_H
+
+#ifdef BIG_ENDI
+ static const number
+ /* polynomial I */
+/**/ a2 = {{0xbfe00000, 0x0001aa8f} }, /* -0.500... */
+/**/ a3 = {{0x3fd55555, 0x55588d2e} }, /* 0.333... */
+ /* polynomial II */
+/**/ b0 = {{0x3fd55555, 0x55555555} }, /* 0.333... */
+/**/ b1 = {{0xbfcfffff, 0xffffffbb} }, /* -0.249... */
+/**/ b2 = {{0x3fc99999, 0x9999992f} }, /* 0.199... */
+/**/ b3 = {{0xbfc55555, 0x556503fd} }, /* -0.166... */
+/**/ b4 = {{0x3fc24924, 0x925b3d62} }, /* 0.142... */
+/**/ b5 = {{0xbfbffffe, 0x160472fc} }, /* -0.124... */
+/**/ b6 = {{0x3fbc71c5, 0x25db58ac} }, /* 0.111... */
+/**/ b7 = {{0xbfb9a4ac, 0x11a2a61c} }, /* -0.100... */
+/**/ b8 = {{0x3fb75077, 0x0df2b591} }, /* 0.091... */
+ /* polynomial III */
+#if 0
+/**/ c1 = {{0x3ff00000, 0x00000000} }, /* 1 */
+#endif
+/**/ c2 = {{0xbfe00000, 0x00000000} }, /* -1/2 */
+/**/ c3 = {{0x3fd55555, 0x55555555} }, /* 1/3 */
+/**/ c4 = {{0xbfd00000, 0x00000000} }, /* -1/4 */
+/**/ c5 = {{0x3fc99999, 0x9999999a} }, /* 1/5 */
+ /* polynomial IV */
+/**/ d2 = {{0xbfe00000, 0x00000000} }, /* -1/2 */
+/**/ dd2 = {{0x00000000, 0x00000000} }, /* -1/2-d2 */
+/**/ d3 = {{0x3fd55555, 0x55555555} }, /* 1/3 */
+/**/ dd3 = {{0x3c755555, 0x55555555} }, /* 1/3-d3 */
+/**/ d4 = {{0xbfd00000, 0x00000000} }, /* -1/4 */
+/**/ dd4 = {{0x00000000, 0x00000000} }, /* -1/4-d4 */
+/**/ d5 = {{0x3fc99999, 0x9999999a} }, /* 1/5 */
+/**/ dd5 = {{0xbc699999, 0x9999999a} }, /* 1/5-d5 */
+/**/ d6 = {{0xbfc55555, 0x55555555} }, /* -1/6 */
+/**/ dd6 = {{0xbc655555, 0x55555555} }, /* -1/6-d6 */
+/**/ d7 = {{0x3fc24924, 0x92492492} }, /* 1/7 */
+/**/ dd7 = {{0x3c624924, 0x92492492} }, /* 1/7-d7 */
+/**/ d8 = {{0xbfc00000, 0x00000000} }, /* -1/8 */
+/**/ dd8 = {{0x00000000, 0x00000000} }, /* -1/8-d8 */
+/**/ d9 = {{0x3fbc71c7, 0x1c71c71c} }, /* 1/9 */
+/**/ dd9 = {{0x3c5c71c7, 0x1c71c71c} }, /* 1/9-d9 */
+/**/ d10 = {{0xbfb99999, 0x9999999a} }, /* -1/10 */
+/**/ dd10 = {{0x3c599999, 0x9999999a} }, /* -1/10-d10 */
+/**/ d11 = {{0x3fb745d1, 0x745d1746} }, /* 1/11 */
+/**/ d12 = {{0xbfb55555, 0x55555555} }, /* -1/12 */
+/**/ d13 = {{0x3fb3b13b, 0x13b13b14} }, /* 1/13 */
+/**/ d14 = {{0xbfb24924, 0x92492492} }, /* -1/14 */
+/**/ d15 = {{0x3fb11111, 0x11111111} }, /* 1/15 */
+/**/ d16 = {{0xbfb00000, 0x00000000} }, /* -1/16 */
+/**/ d17 = {{0x3fae1e1e, 0x1e1e1e1e} }, /* 1/17 */
+/**/ d18 = {{0xbfac71c7, 0x1c71c71c} }, /* -1/18 */
+/**/ d19 = {{0x3faaf286, 0xbca1af28} }, /* 1/19 */
+/**/ d20 = {{0xbfa99999, 0x9999999a} }, /* -1/20 */
+ /* constants */
+/**/ sqrt_2 = {{0x3ff6a09e, 0x667f3bcc} }, /* sqrt(2) */
+/**/ h1 = {{0x3fd2e000, 0x00000000} }, /* 151/2**9 */
+/**/ h2 = {{0x3f669000, 0x00000000} }, /* 361/2**17 */
+/**/ delu = {{0x3f700000, 0x00000000} }, /* 1/2**8 */
+/**/ delv = {{0x3ef00000, 0x00000000} }, /* 1/2**16 */
+/**/ ln2a = {{0x3fe62e42, 0xfefa3800} }, /* ln(2) 43 bits */
+/**/ ln2b = {{0x3d2ef357, 0x93c76730} }, /* ln(2)-ln2a */
+/**/ e1 = {{0x3bbcc868, 0x00000000} }, /* 6.095e-21 */
+/**/ e2 = {{0x3c1138ce, 0x00000000} }, /* 2.334e-19 */
+/**/ e3 = {{0x3aa1565d, 0x00000000} }, /* 2.801e-26 */
+/**/ e4 = {{0x39809d88, 0x00000000} }, /* 1.024e-31 */
+/**/ e[M] ={{{0x37da223a, 0x00000000} }, /* 1.2e-39 */
+/**/ {{0x35c851c4, 0x00000000} }, /* 1.3e-49 */
+/**/ {{0x2ab85e51, 0x00000000} }, /* 6.8e-103 */
+/**/ {{0x17383827, 0x00000000} }},/* 8.1e-197 */
+/**/ two54 = {{0x43500000, 0x00000000} }, /* 2**54 */
+/**/ u03 = {{0x3f9eb851, 0xeb851eb8} }; /* 0.03 */
+
+#else
+#ifdef LITTLE_ENDI
+ static const number
+ /* polynomial I */
+/**/ a2 = {{0x0001aa8f, 0xbfe00000} }, /* -0.500... */
+/**/ a3 = {{0x55588d2e, 0x3fd55555} }, /* 0.333... */
+ /* polynomial II */
+/**/ b0 = {{0x55555555, 0x3fd55555} }, /* 0.333... */
+/**/ b1 = {{0xffffffbb, 0xbfcfffff} }, /* -0.249... */
+/**/ b2 = {{0x9999992f, 0x3fc99999} }, /* 0.199... */
+/**/ b3 = {{0x556503fd, 0xbfc55555} }, /* -0.166... */
+/**/ b4 = {{0x925b3d62, 0x3fc24924} }, /* 0.142... */
+/**/ b5 = {{0x160472fc, 0xbfbffffe} }, /* -0.124... */
+/**/ b6 = {{0x25db58ac, 0x3fbc71c5} }, /* 0.111... */
+/**/ b7 = {{0x11a2a61c, 0xbfb9a4ac} }, /* -0.100... */
+/**/ b8 = {{0x0df2b591, 0x3fb75077} }, /* 0.091... */
+ /* polynomial III */
+#if 0
+/**/ c1 = {{0x00000000, 0x3ff00000} }, /* 1 */
+#endif
+/**/ c2 = {{0x00000000, 0xbfe00000} }, /* -1/2 */
+/**/ c3 = {{0x55555555, 0x3fd55555} }, /* 1/3 */
+/**/ c4 = {{0x00000000, 0xbfd00000} }, /* -1/4 */
+/**/ c5 = {{0x9999999a, 0x3fc99999} }, /* 1/5 */
+ /* polynomial IV */
+/**/ d2 = {{0x00000000, 0xbfe00000} }, /* -1/2 */
+/**/ dd2 = {{0x00000000, 0x00000000} }, /* -1/2-d2 */
+/**/ d3 = {{0x55555555, 0x3fd55555} }, /* 1/3 */
+/**/ dd3 = {{0x55555555, 0x3c755555} }, /* 1/3-d3 */
+/**/ d4 = {{0x00000000, 0xbfd00000} }, /* -1/4 */
+/**/ dd4 = {{0x00000000, 0x00000000} }, /* -1/4-d4 */
+/**/ d5 = {{0x9999999a, 0x3fc99999} }, /* 1/5 */
+/**/ dd5 = {{0x9999999a, 0xbc699999} }, /* 1/5-d5 */
+/**/ d6 = {{0x55555555, 0xbfc55555} }, /* -1/6 */
+/**/ dd6 = {{0x55555555, 0xbc655555} }, /* -1/6-d6 */
+/**/ d7 = {{0x92492492, 0x3fc24924} }, /* 1/7 */
+/**/ dd7 = {{0x92492492, 0x3c624924} }, /* 1/7-d7 */
+/**/ d8 = {{0x00000000, 0xbfc00000} }, /* -1/8 */
+/**/ dd8 = {{0x00000000, 0x00000000} }, /* -1/8-d8 */
+/**/ d9 = {{0x1c71c71c, 0x3fbc71c7} }, /* 1/9 */
+/**/ dd9 = {{0x1c71c71c, 0x3c5c71c7} }, /* 1/9-d9 */
+/**/ d10 = {{0x9999999a, 0xbfb99999} }, /* -1/10 */
+/**/ dd10 = {{0x9999999a, 0x3c599999} }, /* -1/10-d10 */
+/**/ d11 = {{0x745d1746, 0x3fb745d1} }, /* 1/11 */
+/**/ d12 = {{0x55555555, 0xbfb55555} }, /* -1/12 */
+/**/ d13 = {{0x13b13b14, 0x3fb3b13b} }, /* 1/13 */
+/**/ d14 = {{0x92492492, 0xbfb24924} }, /* -1/14 */
+/**/ d15 = {{0x11111111, 0x3fb11111} }, /* 1/15 */
+/**/ d16 = {{0x00000000, 0xbfb00000} }, /* -1/16 */
+/**/ d17 = {{0x1e1e1e1e, 0x3fae1e1e} }, /* 1/17 */
+/**/ d18 = {{0x1c71c71c, 0xbfac71c7} }, /* -1/18 */
+/**/ d19 = {{0xbca1af28, 0x3faaf286} }, /* 1/19 */
+/**/ d20 = {{0x9999999a, 0xbfa99999} }, /* -1/20 */
+ /* constants */
+/**/ sqrt_2 = {{0x667f3bcc, 0x3ff6a09e} }, /* sqrt(2) */
+/**/ h1 = {{0x00000000, 0x3fd2e000} }, /* 151/2**9 */
+/**/ h2 = {{0x00000000, 0x3f669000} }, /* 361/2**17 */
+/**/ delu = {{0x00000000, 0x3f700000} }, /* 1/2**8 */
+/**/ delv = {{0x00000000, 0x3ef00000} }, /* 1/2**16 */
+/**/ ln2a = {{0xfefa3800, 0x3fe62e42} }, /* ln(2) 43 bits */
+/**/ ln2b = {{0x93c76730, 0x3d2ef357} }, /* ln(2)-ln2a */
+/**/ e1 = {{0x00000000, 0x3bbcc868} }, /* 6.095e-21 */
+/**/ e2 = {{0x00000000, 0x3c1138ce} }, /* 2.334e-19 */
+/**/ e3 = {{0x00000000, 0x3aa1565d} }, /* 2.801e-26 */
+/**/ e4 = {{0x00000000, 0x39809d88} }, /* 1.024e-31 */
+/**/ e[M] ={{{0x00000000, 0x37da223a} }, /* 1.2e-39 */
+/**/ {{0x00000000, 0x35c851c4} }, /* 1.3e-49 */
+/**/ {{0x00000000, 0x2ab85e51} }, /* 6.8e-103 */
+/**/ {{0x00000000, 0x17383827} }},/* 8.1e-197 */
+/**/ two54 = {{0x00000000, 0x43500000} }, /* 2**54 */
+/**/ u03 = {{0xeb851eb8, 0x3f9eb851} }; /* 0.03 */
+
+#endif
+#endif
+
+#define SQRT_2 sqrt_2.d
+#define DEL_U delu.d
+#define DEL_V delv.d
+#define LN2A ln2a.d
+#define LN2B ln2b.d
+#define E1 e1.d
+#define E2 e2.d
+#define E3 e3.d
+#define E4 e4.d
+#define U03 u03.d
+
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/ulog.tbl b/REORG.TODO/sysdeps/ieee754/dbl-64/ulog.tbl
new file mode 100644
index 0000000000..8714ea3a6a
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/ulog.tbl
@@ -0,0 +1,3326 @@
+/*
+ * IBM Accurate Mathematical Library
+ * Written by International Business Machines Corp.
+ * Copyright (C) 2001-2017 Free Software Foundation, Inc.
+ *
+ * This program 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 2.1 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 program; if not, see <http://www.gnu.org/licenses/>.
+ */
+
+/****************************************************************/
+/* TABLES FOR THE ulog() FUNCTION */
+/****************************************************************/
+
+#ifdef BIG_ENDI
+ static const number
+ Iu[182] = { /* 1/ui */
+/**/ {{0x3ff6a13c, 0xd1537290} },
+/**/ {{0x3ff68168, 0x16816817} },
+/**/ {{0x3ff661ec, 0x6a5122f9} },
+/**/ {{0x3ff642c8, 0x590b2164} },
+/**/ {{0x3ff623fa, 0x77016240} },
+/**/ {{0x3ff60581, 0x60581606} },
+/**/ {{0x3ff5e75b, 0xb8d015e7} },
+/**/ {{0x3ff5c988, 0x2b931057} },
+/**/ {{0x3ff5ac05, 0x6b015ac0} },
+/**/ {{0x3ff58ed2, 0x308158ed} },
+/**/ {{0x3ff571ed, 0x3c506b3a} },
+/**/ {{0x3ff55555, 0x55555555} },
+/**/ {{0x3ff53909, 0x48f40feb} },
+/**/ {{0x3ff51d07, 0xeae2f815} },
+/**/ {{0x3ff50150, 0x15015015} },
+/**/ {{0x3ff4e5e0, 0xa72f0539} },
+/**/ {{0x3ff4cab8, 0x8725af6e} },
+/**/ {{0x3ff4afd6, 0xa052bf5b} },
+/**/ {{0x3ff49539, 0xe3b2d067} },
+/**/ {{0x3ff47ae1, 0x47ae147b} },
+/**/ {{0x3ff460cb, 0xc7f5cf9a} },
+/**/ {{0x3ff446f8, 0x6562d9fb} },
+/**/ {{0x3ff42d66, 0x25d51f87} },
+/**/ {{0x3ff41414, 0x14141414} },
+/**/ {{0x3ff3fb01, 0x3fb013fb} },
+/**/ {{0x3ff3e22c, 0xbce4a902} },
+/**/ {{0x3ff3c995, 0xa47babe7} },
+/**/ {{0x3ff3b13b, 0x13b13b14} },
+/**/ {{0x3ff3991c, 0x2c187f63} },
+/**/ {{0x3ff38138, 0x13813814} },
+/**/ {{0x3ff3698d, 0xf3de0748} },
+/**/ {{0x3ff3521c, 0xfb2b78c1} },
+/**/ {{0x3ff33ae4, 0x5b57bcb2} },
+/**/ {{0x3ff323e3, 0x4a2b10bf} },
+/**/ {{0x3ff30d19, 0x0130d190} },
+/**/ {{0x3ff2f684, 0xbda12f68} },
+/**/ {{0x3ff2e025, 0xc04b8097} },
+/**/ {{0x3ff2c9fb, 0x4d812ca0} },
+/**/ {{0x3ff2b404, 0xad012b40} },
+/**/ {{0x3ff29e41, 0x29e4129e} },
+/**/ {{0x3ff288b0, 0x1288b013} },
+/**/ {{0x3ff27350, 0xb8812735} },
+/**/ {{0x3ff25e22, 0x708092f1} },
+/**/ {{0x3ff24924, 0x92492492} },
+/**/ {{0x3ff23456, 0x789abcdf} },
+/**/ {{0x3ff21fb7, 0x8121fb78} },
+/**/ {{0x3ff20b47, 0x0c67c0d9} },
+/**/ {{0x3ff1f704, 0x7dc11f70} },
+/**/ {{0x3ff1e2ef, 0x3b3fb874} },
+/**/ {{0x3ff1cf06, 0xada2811d} },
+/**/ {{0x3ff1bb4a, 0x4046ed29} },
+/**/ {{0x3ff1a7b9, 0x611a7b96} },
+/**/ {{0x3ff19453, 0x808ca29c} },
+/**/ {{0x3ff18118, 0x11811812} },
+/**/ {{0x3ff16e06, 0x89427379} },
+/**/ {{0x3ff15b1e, 0x5f75270d} },
+/**/ {{0x3ff1485f, 0x0e0acd3b} },
+/**/ {{0x3ff135c8, 0x1135c811} },
+/**/ {{0x3ff12358, 0xe75d3033} },
+/**/ {{0x3ff11111, 0x11111111} },
+/**/ {{0x3ff0fef0, 0x10fef011} },
+/**/ {{0x3ff0ecf5, 0x6be69c90} },
+/**/ {{0x3ff0db20, 0xa88f4696} },
+/**/ {{0x3ff0c971, 0x4fbcda3b} },
+/**/ {{0x3ff0b7e6, 0xec259dc8} },
+/**/ {{0x3ff0a681, 0x0a6810a7} },
+/**/ {{0x3ff0953f, 0x39010954} },
+/**/ {{0x3ff08421, 0x08421084} },
+/**/ {{0x3ff07326, 0x0a47f7c6} },
+/**/ {{0x3ff0624d, 0xd2f1a9fc} },
+/**/ {{0x3ff05197, 0xf7d73404} },
+/**/ {{0x3ff04104, 0x10410410} },
+/**/ {{0x3ff03091, 0xb51f5e1a} },
+/**/ {{0x3ff02040, 0x81020408} },
+/**/ {{0x3ff01010, 0x10101010} },
+/**/ {{0x3ff00000, 0x00000000} },
+/**/ {{0x3fefe01f, 0xe01fe020} },
+/**/ {{0x3fefc07f, 0x01fc07f0} },
+/**/ {{0x3fefa11c, 0xaa01fa12} },
+/**/ {{0x3fef81f8, 0x1f81f820} },
+/**/ {{0x3fef6310, 0xaca0dbb5} },
+/**/ {{0x3fef4465, 0x9e4a4271} },
+/**/ {{0x3fef25f6, 0x44230ab5} },
+/**/ {{0x3fef07c1, 0xf07c1f08} },
+/**/ {{0x3feee9c7, 0xf8458e02} },
+/**/ {{0x3feecc07, 0xb301ecc0} },
+/**/ {{0x3feeae80, 0x7aba01eb} },
+/**/ {{0x3fee9131, 0xabf0b767} },
+/**/ {{0x3fee741a, 0xa59750e4} },
+/**/ {{0x3fee573a, 0xc901e574} },
+/**/ {{0x3fee3a91, 0x79dc1a73} },
+/**/ {{0x3fee1e1e, 0x1e1e1e1e} },
+/**/ {{0x3fee01e0, 0x1e01e01e} },
+/**/ {{0x3fede5d6, 0xe3f8868a} },
+/**/ {{0x3fedca01, 0xdca01dca} },
+/**/ {{0x3fedae60, 0x76b981db} },
+/**/ {{0x3fed92f2, 0x231e7f8a} },
+/**/ {{0x3fed77b6, 0x54b82c34} },
+/**/ {{0x3fed5cac, 0x807572b2} },
+/**/ {{0x3fed41d4, 0x1d41d41d} },
+/**/ {{0x3fed272c, 0xa3fc5b1a} },
+/**/ {{0x3fed0cb5, 0x8f6ec074} },
+/**/ {{0x3fecf26e, 0x5c44bfc6} },
+/**/ {{0x3fecd856, 0x89039b0b} },
+/**/ {{0x3fecbe6d, 0x9601cbe7} },
+/**/ {{0x3feca4b3, 0x055ee191} },
+/**/ {{0x3fec8b26, 0x5afb8a42} },
+/**/ {{0x3fec71c7, 0x1c71c71c} },
+/**/ {{0x3fec5894, 0xd10d4986} },
+/**/ {{0x3fec3f8f, 0x01c3f8f0} },
+/**/ {{0x3fec26b5, 0x392ea01c} },
+/**/ {{0x3fec0e07, 0x0381c0e0} },
+/**/ {{0x3febf583, 0xee868d8b} },
+/**/ {{0x3febdd2b, 0x899406f7} },
+/**/ {{0x3febc4fd, 0x65883e7b} },
+/**/ {{0x3febacf9, 0x14c1bad0} },
+/**/ {{0x3feb951e, 0x2b18ff23} },
+/**/ {{0x3feb7d6c, 0x3dda338b} },
+/**/ {{0x3feb65e2, 0xe3beee05} },
+/**/ {{0x3feb4e81, 0xb4e81b4f} },
+/**/ {{0x3feb3748, 0x4ad806ce} },
+/**/ {{0x3feb2036, 0x406c80d9} },
+/**/ {{0x3feb094b, 0x31d922a4} },
+/**/ {{0x3feaf286, 0xbca1af28} },
+/**/ {{0x3feadbe8, 0x7f94905e} },
+/**/ {{0x3feac570, 0x1ac5701b} },
+/**/ {{0x3feaaf1d, 0x2f87ebfd} },
+/**/ {{0x3fea98ef, 0x606a63be} },
+/**/ {{0x3fea82e6, 0x5130e159} },
+/**/ {{0x3fea6d01, 0xa6d01a6d} },
+/**/ {{0x3fea5741, 0x07688a4a} },
+/**/ {{0x3fea41a4, 0x1a41a41a} },
+/**/ {{0x3fea2c2a, 0x87c51ca0} },
+/**/ {{0x3fea16d3, 0xf97a4b02} },
+/**/ {{0x3fea01a0, 0x1a01a01a} },
+/**/ {{0x3fe9ec8e, 0x951033d9} },
+/**/ {{0x3fe9d79f, 0x176b682d} },
+/**/ {{0x3fe9c2d1, 0x4ee4a102} },
+/**/ {{0x3fe9ae24, 0xea5510da} },
+/**/ {{0x3fe99999, 0x9999999a} },
+/**/ {{0x3fe9852f, 0x0d8ec0ff} },
+/**/ {{0x3fe970e4, 0xf80cb872} },
+/**/ {{0x3fe95cbb, 0x0be377ae} },
+/**/ {{0x3fe948b0, 0xfcd6e9e0} },
+/**/ {{0x3fe934c6, 0x7f9b2ce6} },
+/**/ {{0x3fe920fb, 0x49d0e229} },
+/**/ {{0x3fe90d4f, 0x120190d5} },
+/**/ {{0x3fe8f9c1, 0x8f9c18fa} },
+/**/ {{0x3fe8e652, 0x7af1373f} },
+/**/ {{0x3fe8d301, 0x8d3018d3} },
+/**/ {{0x3fe8bfce, 0x8062ff3a} },
+/**/ {{0x3fe8acb9, 0x0f6bf3aa} },
+/**/ {{0x3fe899c0, 0xf601899c} },
+/**/ {{0x3fe886e5, 0xf0abb04a} },
+/**/ {{0x3fe87427, 0xbcc092b9} },
+/**/ {{0x3fe86186, 0x18618618} },
+/**/ {{0x3fe84f00, 0xc2780614} },
+/**/ {{0x3fe83c97, 0x7ab2bedd} },
+/**/ {{0x3fe82a4a, 0x0182a4a0} },
+/**/ {{0x3fe81818, 0x18181818} },
+/**/ {{0x3fe80601, 0x80601806} },
+/**/ {{0x3fe7f405, 0xfd017f40} },
+/**/ {{0x3fe7e225, 0x515a4f1d} },
+/**/ {{0x3fe7d05f, 0x417d05f4} },
+/**/ {{0x3fe7beb3, 0x922e017c} },
+/**/ {{0x3fe7ad22, 0x08e0ecc3} },
+/**/ {{0x3fe79baa, 0x6bb6398b} },
+/**/ {{0x3fe78a4c, 0x8178a4c8} },
+/**/ {{0x3fe77908, 0x119ac60d} },
+/**/ {{0x3fe767dc, 0xe434a9b1} },
+/**/ {{0x3fe756ca, 0xc201756d} },
+/**/ {{0x3fe745d1, 0x745d1746} },
+/**/ {{0x3fe734f0, 0xc541fe8d} },
+/**/ {{0x3fe72428, 0x7f46debc} },
+/**/ {{0x3fe71378, 0x6d9c7c09} },
+/**/ {{0x3fe702e0, 0x5c0b8170} },
+/**/ {{0x3fe6f260, 0x16f26017} },
+/**/ {{0x3fe6e1f7, 0x6b4337c7} },
+/**/ {{0x3fe6d1a6, 0x2681c861} },
+/**/ {{0x3fe6c16c, 0x16c16c17} },
+/**/ {{0x3fe6b149, 0x0aa31a3d} },
+/**/ {{0x3fe6a13c, 0xd1537290} },
+ };
+
+ static const number
+ Iv[362] = { /* 1/vj */
+/**/ {{0x3ff00b47, 0xee93bfe3} },
+/**/ {{0x3ff00b37, 0xd80c106f} },
+/**/ {{0x3ff00b27, 0xc1a4a47a} },
+/**/ {{0x3ff00b17, 0xab5d7ba2} },
+/**/ {{0x3ff00b07, 0x95369587} },
+/**/ {{0x3ff00af7, 0x7f2ff1c6} },
+/**/ {{0x3ff00ae7, 0x69499000} },
+/**/ {{0x3ff00ad7, 0x53836fd3} },
+/**/ {{0x3ff00ac7, 0x3ddd90dd} },
+/**/ {{0x3ff00ab7, 0x2857f2bf} },
+/**/ {{0x3ff00aa7, 0x12f29517} },
+/**/ {{0x3ff00a96, 0xfdad7784} },
+/**/ {{0x3ff00a86, 0xe88899a5} },
+/**/ {{0x3ff00a76, 0xd383fb19} },
+/**/ {{0x3ff00a66, 0xbe9f9b7f} },
+/**/ {{0x3ff00a56, 0xa9db7a76} },
+/**/ {{0x3ff00a46, 0x9537979d} },
+/**/ {{0x3ff00a36, 0x80b3f293} },
+/**/ {{0x3ff00a26, 0x6c508af8} },
+/**/ {{0x3ff00a16, 0x580d606a} },
+/**/ {{0x3ff00a06, 0x43ea7288} },
+/**/ {{0x3ff009f6, 0x2fe7c0f1} },
+/**/ {{0x3ff009e6, 0x1c054b44} },
+/**/ {{0x3ff009d6, 0x08431122} },
+/**/ {{0x3ff009c5, 0xf4a11227} },
+/**/ {{0x3ff009b5, 0xe11f4df4} },
+/**/ {{0x3ff009a5, 0xcdbdc428} },
+/**/ {{0x3ff00995, 0xba7c7462} },
+/**/ {{0x3ff00985, 0xa75b5e40} },
+/**/ {{0x3ff00975, 0x945a8162} },
+/**/ {{0x3ff00965, 0x8179dd68} },
+/**/ {{0x3ff00955, 0x6eb971ef} },
+/**/ {{0x3ff00945, 0x5c193e98} },
+/**/ {{0x3ff00935, 0x49994301} },
+/**/ {{0x3ff00925, 0x37397eca} },
+/**/ {{0x3ff00915, 0x24f9f192} },
+/**/ {{0x3ff00905, 0x12da9af7} },
+/**/ {{0x3ff008f5, 0x00db7a99} },
+/**/ {{0x3ff008e4, 0xeefc9018} },
+/**/ {{0x3ff008d4, 0xdd3ddb12} },
+/**/ {{0x3ff008c4, 0xcb9f5b26} },
+/**/ {{0x3ff008b4, 0xba210ff4} },
+/**/ {{0x3ff008a4, 0xa8c2f91a} },
+/**/ {{0x3ff00894, 0x97851639} },
+/**/ {{0x3ff00884, 0x866766ef} },
+/**/ {{0x3ff00874, 0x7569eadb} },
+/**/ {{0x3ff00864, 0x648ca19d} },
+/**/ {{0x3ff00854, 0x53cf8ad3} },
+/**/ {{0x3ff00844, 0x4332a61e} },
+/**/ {{0x3ff00834, 0x32b5f31b} },
+/**/ {{0x3ff00824, 0x2259716c} },
+/**/ {{0x3ff00814, 0x121d20ad} },
+/**/ {{0x3ff00804, 0x02010080} },
+/**/ {{0x3ff007f3, 0xf2051083} },
+/**/ {{0x3ff007e3, 0xe2295056} },
+/**/ {{0x3ff007d3, 0xd26dbf97} },
+/**/ {{0x3ff007c3, 0xc2d25de5} },
+/**/ {{0x3ff007b3, 0xb3572ae2} },
+/**/ {{0x3ff007a3, 0xa3fc262a} },
+/**/ {{0x3ff00793, 0x94c14f5f} },
+/**/ {{0x3ff00783, 0x85a6a61e} },
+/**/ {{0x3ff00773, 0x76ac2a08} },
+/**/ {{0x3ff00763, 0x67d1dabb} },
+/**/ {{0x3ff00753, 0x5917b7d7} },
+/**/ {{0x3ff00743, 0x4a7dc0fb} },
+/**/ {{0x3ff00733, 0x3c03f5c7} },
+/**/ {{0x3ff00723, 0x2daa55da} },
+/**/ {{0x3ff00713, 0x1f70e0d3} },
+/**/ {{0x3ff00703, 0x11579652} },
+/**/ {{0x3ff006f3, 0x035e75f5} },
+/**/ {{0x3ff006e2, 0xf5857f5d} },
+/**/ {{0x3ff006d2, 0xe7ccb228} },
+/**/ {{0x3ff006c2, 0xda340df6} },
+/**/ {{0x3ff006b2, 0xccbb9266} },
+/**/ {{0x3ff006a2, 0xbf633f18} },
+/**/ {{0x3ff00692, 0xb22b13ab} },
+/**/ {{0x3ff00682, 0xa5130fbe} },
+/**/ {{0x3ff00672, 0x981b32f1} },
+/**/ {{0x3ff00662, 0x8b437ce4} },
+/**/ {{0x3ff00652, 0x7e8bed35} },
+/**/ {{0x3ff00642, 0x71f48383} },
+/**/ {{0x3ff00632, 0x657d3f70} },
+/**/ {{0x3ff00622, 0x59262098} },
+/**/ {{0x3ff00612, 0x4cef269e} },
+/**/ {{0x3ff00602, 0x40d8511e} },
+/**/ {{0x3ff005f2, 0x34e19fba} },
+/**/ {{0x3ff005e2, 0x290b1211} },
+/**/ {{0x3ff005d2, 0x1d54a7c1} },
+/**/ {{0x3ff005c2, 0x11be606b} },
+/**/ {{0x3ff005b2, 0x06483bad} },
+/**/ {{0x3ff005a1, 0xfaf23928} },
+/**/ {{0x3ff00591, 0xefbc587b} },
+/**/ {{0x3ff00581, 0xe4a69945} },
+/**/ {{0x3ff00571, 0xd9b0fb25} },
+/**/ {{0x3ff00561, 0xcedb7dbc} },
+/**/ {{0x3ff00551, 0xc42620a9} },
+/**/ {{0x3ff00541, 0xb990e38b} },
+/**/ {{0x3ff00531, 0xaf1bc601} },
+/**/ {{0x3ff00521, 0xa4c6c7ac} },
+/**/ {{0x3ff00511, 0x9a91e82a} },
+/**/ {{0x3ff00501, 0x907d271c} },
+/**/ {{0x3ff004f1, 0x86888421} },
+/**/ {{0x3ff004e1, 0x7cb3fed8} },
+/**/ {{0x3ff004d1, 0x72ff96e0} },
+/**/ {{0x3ff004c1, 0x696b4bdb} },
+/**/ {{0x3ff004b1, 0x5ff71d66} },
+/**/ {{0x3ff004a1, 0x56a30b21} },
+/**/ {{0x3ff00491, 0x4d6f14ad} },
+/**/ {{0x3ff00481, 0x445b39a8} },
+/**/ {{0x3ff00471, 0x3b6779b3} },
+/**/ {{0x3ff00461, 0x3293d46c} },
+/**/ {{0x3ff00451, 0x29e04974} },
+/**/ {{0x3ff00441, 0x214cd869} },
+/**/ {{0x3ff00431, 0x18d980ed} },
+/**/ {{0x3ff00421, 0x1086429d} },
+/**/ {{0x3ff00411, 0x08531d1a} },
+/**/ {{0x3ff00401, 0x00401004} },
+/**/ {{0x3ff003f0, 0xf84d1afa} },
+/**/ {{0x3ff003e0, 0xf07a3d9b} },
+/**/ {{0x3ff003d0, 0xe8c77787} },
+/**/ {{0x3ff003c0, 0xe134c85f} },
+/**/ {{0x3ff003b0, 0xd9c22fc1} },
+/**/ {{0x3ff003a0, 0xd26fad4d} },
+/**/ {{0x3ff00390, 0xcb3d40a3} },
+/**/ {{0x3ff00380, 0xc42ae963} },
+/**/ {{0x3ff00370, 0xbd38a72c} },
+/**/ {{0x3ff00360, 0xb666799e} },
+/**/ {{0x3ff00350, 0xafb46058} },
+/**/ {{0x3ff00340, 0xa9225afa} },
+/**/ {{0x3ff00330, 0xa2b06925} },
+/**/ {{0x3ff00320, 0x9c5e8a77} },
+/**/ {{0x3ff00310, 0x962cbe90} },
+/**/ {{0x3ff00300, 0x901b0511} },
+/**/ {{0x3ff002f0, 0x8a295d98} },
+/**/ {{0x3ff002e0, 0x8457c7c6} },
+/**/ {{0x3ff002d0, 0x7ea6433a} },
+/**/ {{0x3ff002c0, 0x7914cf94} },
+/**/ {{0x3ff002b0, 0x73a36c73} },
+/**/ {{0x3ff002a0, 0x6e521978} },
+/**/ {{0x3ff00290, 0x6920d642} },
+/**/ {{0x3ff00280, 0x640fa271} },
+/**/ {{0x3ff00270, 0x5f1e7da5} },
+/**/ {{0x3ff00260, 0x5a4d677d} },
+/**/ {{0x3ff00250, 0x559c5f9a} },
+/**/ {{0x3ff00240, 0x510b659a} },
+/**/ {{0x3ff00230, 0x4c9a791f} },
+/**/ {{0x3ff00220, 0x484999c6} },
+/**/ {{0x3ff00210, 0x4418c732} },
+/**/ {{0x3ff00200, 0x40080100} },
+/**/ {{0x3ff001f0, 0x3c1746d2} },
+/**/ {{0x3ff001e0, 0x38469846} },
+/**/ {{0x3ff001d0, 0x3495f4fd} },
+/**/ {{0x3ff001c0, 0x31055c96} },
+/**/ {{0x3ff001b0, 0x2d94ceb2} },
+/**/ {{0x3ff001a0, 0x2a444af0} },
+/**/ {{0x3ff00190, 0x2713d0ef} },
+/**/ {{0x3ff00180, 0x24036051} },
+/**/ {{0x3ff00170, 0x2112f8b4} },
+/**/ {{0x3ff00160, 0x1e4299b9} },
+/**/ {{0x3ff00150, 0x1b9242ff} },
+/**/ {{0x3ff00140, 0x1901f427} },
+/**/ {{0x3ff00130, 0x1691acd0} },
+/**/ {{0x3ff00120, 0x14416c9a} },
+/**/ {{0x3ff00110, 0x12113324} },
+/**/ {{0x3ff00100, 0x10010010} },
+/**/ {{0x3ff000f0, 0x0e10d2fc} },
+/**/ {{0x3ff000e0, 0x0c40ab89} },
+/**/ {{0x3ff000d0, 0x0a908957} },
+/**/ {{0x3ff000c0, 0x09006c05} },
+/**/ {{0x3ff000b0, 0x07905334} },
+/**/ {{0x3ff000a0, 0x06403e82} },
+/**/ {{0x3ff00090, 0x05102d92} },
+/**/ {{0x3ff00080, 0x04002001} },
+/**/ {{0x3ff00070, 0x03101571} },
+/**/ {{0x3ff00060, 0x02400d80} },
+/**/ {{0x3ff00050, 0x019007d0} },
+/**/ {{0x3ff00040, 0x01000400} },
+/**/ {{0x3ff00030, 0x009001b0} },
+/**/ {{0x3ff00020, 0x00400080} },
+/**/ {{0x3ff00010, 0x00100010} },
+/**/ {{0x3ff00000, 0x00000000} },
+/**/ {{0x3fefffe0, 0x001fffe0} },
+/**/ {{0x3fefffc0, 0x007fff00} },
+/**/ {{0x3fefffa0, 0x011ffca0} },
+/**/ {{0x3fefff80, 0x01fff800} },
+/**/ {{0x3fefff60, 0x031ff060} },
+/**/ {{0x3fefff40, 0x047fe501} },
+/**/ {{0x3fefff20, 0x061fd521} },
+/**/ {{0x3fefff00, 0x07ffc002} },
+/**/ {{0x3feffee0, 0x0a1fa4e3} },
+/**/ {{0x3feffec0, 0x0c7f8305} },
+/**/ {{0x3feffea0, 0x0f1f59a7} },
+/**/ {{0x3feffe80, 0x11ff280a} },
+/**/ {{0x3feffe60, 0x151eed6e} },
+/**/ {{0x3feffe40, 0x187ea913} },
+/**/ {{0x3feffe20, 0x1c1e5a39} },
+/**/ {{0x3feffe00, 0x1ffe0020} },
+/**/ {{0x3feffde0, 0x241d9a09} },
+/**/ {{0x3feffdc0, 0x287d2733} },
+/**/ {{0x3feffda0, 0x2d1ca6e0} },
+/**/ {{0x3feffd80, 0x31fc184e} },
+/**/ {{0x3feffd60, 0x371b7abf} },
+/**/ {{0x3feffd40, 0x3c7acd72} },
+/**/ {{0x3feffd20, 0x421a0fa9} },
+/**/ {{0x3feffd00, 0x47f940a2} },
+/**/ {{0x3feffce0, 0x4e185f9f} },
+/**/ {{0x3feffcc0, 0x54776bdf} },
+/**/ {{0x3feffca0, 0x5b1664a3} },
+/**/ {{0x3feffc80, 0x61f5492c} },
+/**/ {{0x3feffc60, 0x691418b9} },
+/**/ {{0x3feffc40, 0x7072d28b} },
+/**/ {{0x3feffc20, 0x781175e3} },
+/**/ {{0x3feffc00, 0x7ff00200} },
+/**/ {{0x3feffbe0, 0x880e7623} },
+/**/ {{0x3feffbc0, 0x906cd18c} },
+/**/ {{0x3feffba0, 0x990b137c} },
+/**/ {{0x3feffb80, 0xa1e93b34} },
+/**/ {{0x3feffb60, 0xab0747f3} },
+/**/ {{0x3feffb40, 0xb46538fa} },
+/**/ {{0x3feffb20, 0xbe030d89} },
+/**/ {{0x3feffb00, 0xc7e0c4e1} },
+/**/ {{0x3feffae0, 0xd1fe5e43} },
+/**/ {{0x3feffac0, 0xdc5bd8ee} },
+/**/ {{0x3feffaa0, 0xe6f93424} },
+/**/ {{0x3feffa80, 0xf1d66f25} },
+/**/ {{0x3feffa60, 0xfcf38931} },
+/**/ {{0x3feffa41, 0x08508189} },
+/**/ {{0x3feffa21, 0x13ed576d} },
+/**/ {{0x3feffa01, 0x1fca0a1e} },
+/**/ {{0x3feff9e1, 0x2be698dd} },
+/**/ {{0x3feff9c1, 0x384302e9} },
+/**/ {{0x3feff9a1, 0x44df4785} },
+/**/ {{0x3feff981, 0x51bb65ef} },
+/**/ {{0x3feff961, 0x5ed75d6a} },
+/**/ {{0x3feff941, 0x6c332d34} },
+/**/ {{0x3feff921, 0x79ced490} },
+/**/ {{0x3feff901, 0x87aa52be} },
+/**/ {{0x3feff8e1, 0x95c5a6fe} },
+/**/ {{0x3feff8c1, 0xa420d091} },
+/**/ {{0x3feff8a1, 0xb2bbceb7} },
+/**/ {{0x3feff881, 0xc196a0b2} },
+/**/ {{0x3feff861, 0xd0b145c2} },
+/**/ {{0x3feff841, 0xe00bbd28} },
+/**/ {{0x3feff821, 0xefa60624} },
+/**/ {{0x3feff801, 0xff801ff8} },
+/**/ {{0x3feff7e2, 0x0f9a09e3} },
+/**/ {{0x3feff7c2, 0x1ff3c328} },
+/**/ {{0x3feff7a2, 0x308d4b05} },
+/**/ {{0x3feff782, 0x4166a0bd} },
+/**/ {{0x3feff762, 0x527fc390} },
+/**/ {{0x3feff742, 0x63d8b2bf} },
+/**/ {{0x3feff722, 0x75716d8b} },
+/**/ {{0x3feff702, 0x8749f334} },
+/**/ {{0x3feff6e2, 0x996242fb} },
+/**/ {{0x3feff6c2, 0xabba5c21} },
+/**/ {{0x3feff6a2, 0xbe523de8} },
+/**/ {{0x3feff682, 0xd129e78f} },
+/**/ {{0x3feff662, 0xe4415858} },
+/**/ {{0x3feff642, 0xf7988f84} },
+/**/ {{0x3feff623, 0x0b2f8c54} },
+/**/ {{0x3feff603, 0x1f064e08} },
+/**/ {{0x3feff5e3, 0x331cd3e1} },
+/**/ {{0x3feff5c3, 0x47731d21} },
+/**/ {{0x3feff5a3, 0x5c092908} },
+/**/ {{0x3feff583, 0x70def6d7} },
+/**/ {{0x3feff563, 0x85f485d0} },
+/**/ {{0x3feff543, 0x9b49d532} },
+/**/ {{0x3feff523, 0xb0dee440} },
+/**/ {{0x3feff503, 0xc6b3b23b} },
+/**/ {{0x3feff4e3, 0xdcc83e62} },
+/**/ {{0x3feff4c3, 0xf31c87f8} },
+/**/ {{0x3feff4a4, 0x09b08e3d} },
+/**/ {{0x3feff484, 0x20845073} },
+/**/ {{0x3feff464, 0x3797cdda} },
+/**/ {{0x3feff444, 0x4eeb05b4} },
+/**/ {{0x3feff424, 0x667df741} },
+/**/ {{0x3feff404, 0x7e50a1c3} },
+/**/ {{0x3feff3e4, 0x9663047b} },
+/**/ {{0x3feff3c4, 0xaeb51eaa} },
+/**/ {{0x3feff3a4, 0xc746ef91} },
+/**/ {{0x3feff384, 0xe0187672} },
+/**/ {{0x3feff364, 0xf929b28d} },
+/**/ {{0x3feff345, 0x127aa323} },
+/**/ {{0x3feff325, 0x2c0b4776} },
+/**/ {{0x3feff305, 0x45db9ec7} },
+/**/ {{0x3feff2e5, 0x5feba858} },
+/**/ {{0x3feff2c5, 0x7a3b6369} },
+/**/ {{0x3feff2a5, 0x94cacf3b} },
+/**/ {{0x3feff285, 0xaf99eb11} },
+/**/ {{0x3feff265, 0xcaa8b62a} },
+/**/ {{0x3feff245, 0xe5f72fc9} },
+/**/ {{0x3feff226, 0x0185572f} },
+/**/ {{0x3feff206, 0x1d532b9d} },
+/**/ {{0x3feff1e6, 0x3960ac54} },
+/**/ {{0x3feff1c6, 0x55add896} },
+/**/ {{0x3feff1a6, 0x723aafa3} },
+/**/ {{0x3feff186, 0x8f0730be} },
+/**/ {{0x3feff166, 0xac135b27} },
+/**/ {{0x3feff146, 0xc95f2e21} },
+/**/ {{0x3feff126, 0xe6eaa8eb} },
+/**/ {{0x3feff107, 0x04b5cac9} },
+/**/ {{0x3feff0e7, 0x22c092fb} },
+/**/ {{0x3feff0c7, 0x410b00c2} },
+/**/ {{0x3feff0a7, 0x5f951360} },
+/**/ {{0x3feff087, 0x7e5eca16} },
+/**/ {{0x3feff067, 0x9d682426} },
+/**/ {{0x3feff047, 0xbcb120d2} },
+/**/ {{0x3feff027, 0xdc39bf5a} },
+/**/ {{0x3feff007, 0xfc01ff00} },
+/**/ {{0x3fefefe8, 0x1c09df07} },
+/**/ {{0x3fefefc8, 0x3c515eae} },
+/**/ {{0x3fefefa8, 0x5cd87d38} },
+/**/ {{0x3fefef88, 0x7d9f39e6} },
+/**/ {{0x3fefef68, 0x9ea593fa} },
+/**/ {{0x3fefef48, 0xbfeb8ab5} },
+/**/ {{0x3fefef28, 0xe1711d5a} },
+/**/ {{0x3fefef09, 0x03364b28} },
+/**/ {{0x3fefeee9, 0x253b1363} },
+/**/ {{0x3fefeec9, 0x477f754b} },
+/**/ {{0x3fefeea9, 0x6a037022} },
+/**/ {{0x3fefee89, 0x8cc7032a} },
+/**/ {{0x3fefee69, 0xafca2da5} },
+/**/ {{0x3fefee49, 0xd30ceed4} },
+/**/ {{0x3fefee29, 0xf68f45f8} },
+/**/ {{0x3fefee0a, 0x1a513254} },
+/**/ {{0x3fefedea, 0x3e52b329} },
+/**/ {{0x3fefedca, 0x6293c7b8} },
+/**/ {{0x3fefedaa, 0x87146f44} },
+/**/ {{0x3fefed8a, 0xabd4a90e} },
+/**/ {{0x3fefed6a, 0xd0d47458} },
+/**/ {{0x3fefed4a, 0xf613d064} },
+/**/ {{0x3fefed2b, 0x1b92bc73} },
+/**/ {{0x3fefed0b, 0x415137c7} },
+/**/ {{0x3fefeceb, 0x674f41a2} },
+/**/ {{0x3fefeccb, 0x8d8cd945} },
+/**/ {{0x3fefecab, 0xb409fdf3} },
+/**/ {{0x3fefec8b, 0xdac6aeed} },
+/**/ {{0x3fefec6c, 0x01c2eb76} },
+/**/ {{0x3fefec4c, 0x28feb2ce} },
+/**/ {{0x3fefec2c, 0x507a0437} },
+/**/ {{0x3fefec0c, 0x7834def5} },
+/**/ {{0x3fefebec, 0xa02f4247} },
+/**/ {{0x3fefebcc, 0xc8692d71} },
+/**/ {{0x3fefebac, 0xf0e29fb4} },
+/**/ {{0x3fefeb8d, 0x199b9852} },
+/**/ {{0x3fefeb6d, 0x4294168d} },
+/**/ {{0x3fefeb4d, 0x6bcc19a7} },
+/**/ {{0x3fefeb2d, 0x9543a0e2} },
+/**/ {{0x3fefeb0d, 0xbefaab7f} },
+/**/ {{0x3fefeaed, 0xe8f138c2} },
+/**/ {{0x3fefeace, 0x132747ea} },
+/**/ {{0x3fefeaae, 0x3d9cd83c} },
+/**/ {{0x3fefea8e, 0x6851e8f7} },
+/**/ {{0x3fefea6e, 0x93467960} },
+/**/ {{0x3fefea4e, 0xbe7a88b7} },
+/**/ {{0x3fefea2e, 0xe9ee163f} },
+/**/ {{0x3fefea0f, 0x15a12139} },
+/**/ {{0x3fefe9ef, 0x4193a8e8} },
+/**/ {{0x3fefe9cf, 0x6dc5ac8e} },
+/**/ {{0x3fefe9af, 0x9a372b6d} },
+/**/ {{0x3fefe98f, 0xc6e824c6} },
+/**/ {{0x3fefe96f, 0xf3d897dd} },
+ };
+
+ static const number
+ Lu[182][2] = { /* log(ui) */
+/**/ {{{0xbfd63003, 0x0b3aac49} },
+/**/ {{0xbc6dc18c, 0xe51fff99} },},
+/**/ {{{0xbfd5d5bd, 0xdf595f30} },
+/**/ {{0x3c765411, 0x48cbb8a2} },},
+/**/ {{{0xbfd57bf7, 0x53c8d1fb} },
+/**/ {{0x3c60908d, 0x15f88b63} },},
+/**/ {{{0xbfd522ae, 0x0738a3d8} },
+/**/ {{0x3c68f7e9, 0xb38a6979} },},
+/**/ {{{0xbfd4c9e0, 0x9e172c3c} },
+/**/ {{0x3c512361, 0x5b147a5d} },},
+/**/ {{{0xbfd4718d, 0xc271c41b} },
+/**/ {{0xbc38fb4c, 0x14c56eef} },},
+/**/ {{{0xbfd419b4, 0x23d5e8c7} },
+/**/ {{0xbc60dbb2, 0x43827392} },},
+/**/ {{{0xbfd3c252, 0x77333184} },
+/**/ {{0x3c72ad27, 0xe50a8ec6} },},
+/**/ {{{0xbfd36b67, 0x76be1117} },
+/**/ {{0x3c5324f0, 0xe883858e} },},
+/**/ {{{0xbfd314f1, 0xe1d35ce4} },
+/**/ {{0x3c73d699, 0x09e5c3dc} },},
+/**/ {{{0xbfd2bef0, 0x7cdc9354} },
+/**/ {{0x3c782dad, 0x7fd86088} },},
+/**/ {{{0xbfd26962, 0x1134db92} },
+/**/ {{0xbc7e0efa, 0xdd9db02b} },},
+/**/ {{{0xbfd21445, 0x6d0eb8d4} },
+/**/ {{0xbc6f7ae9, 0x1aeba60a} },},
+/**/ {{{0xbfd1bf99, 0x635a6b95} },
+/**/ {{0x3c612aeb, 0x84249223} },},
+/**/ {{{0xbfd16b5c, 0xcbacfb73} },
+/**/ {{0xbc766fbd, 0x28b40935} },},
+/**/ {{{0xbfd1178e, 0x8227e47c} },
+/**/ {{0x3c60e63a, 0x5f01c691} },},
+/**/ {{{0xbfd0c42d, 0x676162e3} },
+/**/ {{0xbc5162c7, 0x9d5d11ee} },},
+/**/ {{{0xbfd07138, 0x604d5862} },
+/**/ {{0xbc7cdb16, 0xed4e9138} },},
+/**/ {{{0xbfd01eae, 0x5626c691} },
+/**/ {{0x3c418290, 0xbd2932e2} },},
+/**/ {{{0xbfcf991c, 0x6cb3b379} },
+/**/ {{0xbc6f6650, 0x66f980a2} },},
+/**/ {{{0xbfcef5ad, 0xe4dcffe6} },
+/**/ {{0x3c508ab2, 0xddc708a0} },},
+/**/ {{{0xbfce530e, 0xffe71012} },
+/**/ {{0xbc422760, 0x41f43042} },},
+/**/ {{{0xbfcdb13d, 0xb0d48940} },
+/**/ {{0xbc5aa11d, 0x49f96cb9} },},
+/**/ {{{0xbfcd1037, 0xf2655e7b} },
+/**/ {{0xbc660629, 0x242471a2} },},
+/**/ {{{0xbfcc6ffb, 0xc6f00f71} },
+/**/ {{0x3c68e58b, 0x2c57a4a5} },},
+/**/ {{{0xbfcbd087, 0x383bd8ad} },
+/**/ {{0xbc3dd355, 0xf6a516d7} },},
+/**/ {{{0xbfcb31d8, 0x575bce3d} },
+/**/ {{0x3c66353a, 0xb386a94d} },},
+/**/ {{{0xbfca93ed, 0x3c8ad9e3} },
+/**/ {{0xbc6bcafa, 0x9de97203} },},
+/**/ {{{0xbfc9f6c4, 0x07089664} },
+/**/ {{0xbc435a19, 0x605e67ef} },},
+/**/ {{{0xbfc95a5a, 0xdcf7017f} },
+/**/ {{0xbc5142c5, 0x07fb7a3d} },},
+/**/ {{{0xbfc8beaf, 0xeb38fe8c} },
+/**/ {{0xbc555aa8, 0xb6997a40} },},
+/**/ {{{0xbfc823c1, 0x6551a3c2} },
+/**/ {{0x3c61232c, 0xe70be781} },},
+/**/ {{{0xbfc7898d, 0x85444c73} },
+/**/ {{0xbc5ef8f6, 0xebcfb201} },},
+/**/ {{{0xbfc6f012, 0x8b756abc} },
+/**/ {{0x3c68de59, 0xc21e166c} },},
+/**/ {{{0xbfc6574e, 0xbe8c133a} },
+/**/ {{0x3c3d34f0, 0xf4621bed} },},
+/**/ {{{0xbfc5bf40, 0x6b543db2} },
+/**/ {{0x3c21f5b4, 0x4c0df7e7} },},
+/**/ {{{0xbfc527e5, 0xe4a1b58d} },
+/**/ {{0x3c271a96, 0x82395bfd} },},
+/**/ {{{0xbfc4913d, 0x8333b561} },
+/**/ {{0x3c50d560, 0x4930f135} },},
+/**/ {{{0xbfc3fb45, 0xa59928cc} },
+/**/ {{0x3c6d87e6, 0xa354d056} },},
+/**/ {{{0xbfc365fc, 0xb0159016} },
+/**/ {{0xbc57d411, 0xa5b944ad} },},
+/**/ {{{0xbfc2d161, 0x0c86813a} },
+/**/ {{0x3c5499a3, 0xf25af95f} },},
+/**/ {{{0xbfc23d71, 0x2a49c202} },
+/**/ {{0x3c66e381, 0x61051d69} },},
+/**/ {{{0xbfc1aa2b, 0x7e23f72a} },
+/**/ {{0x3c4c6ef1, 0xd9b2ef7e} },},
+/**/ {{{0xbfc1178e, 0x8227e47c} },
+/**/ {{0x3c50e63a, 0x5f01c691} },},
+/**/ {{{0xbfc08598, 0xb59e3a07} },
+/**/ {{0x3c6dd700, 0x9902bf32} },},
+/**/ {{{0xbfbfe891, 0x39dbd566} },
+/**/ {{0x3c5ac9f4, 0x215f9393} },},
+/**/ {{{0xbfbec739, 0x830a1120} },
+/**/ {{0x3c4a2bf9, 0x91780d3f} },},
+/**/ {{{0xbfbda727, 0x638446a2} },
+/**/ {{0xbc5401fa, 0x71733019} },},
+/**/ {{{0xbfbc8858, 0x01bc4b23} },
+/**/ {{0xbc5a38cb, 0x559a6706} },},
+/**/ {{{0xbfbb6ac8, 0x8dad5b1c} },
+/**/ {{0x3c40057e, 0xed1ca59f} },},
+/**/ {{{0xbfba4e76, 0x40b1bc38} },
+/**/ {{0x3c55b5ca, 0x203e4259} },},
+/**/ {{{0xbfb9335e, 0x5d594989} },
+/**/ {{0x3c5478a8, 0x5704ccb7} },},
+/**/ {{{0xbfb8197e, 0x2f40e3f0} },
+/**/ {{0xbc3b9f2d, 0xffbeed43} },},
+/**/ {{{0xbfb700d3, 0x0aeac0e1} },
+/**/ {{0x3c272566, 0x212cdd05} },},
+/**/ {{{0xbfb5e95a, 0x4d9791cb} },
+/**/ {{0xbc5f3874, 0x5c5c450a} },},
+/**/ {{{0xbfb4d311, 0x5d207eac} },
+/**/ {{0xbc5769f4, 0x2c7842cc} },},
+/**/ {{{0xbfb3bdf5, 0xa7d1ee64} },
+/**/ {{0xbc47a976, 0xd3b5b45f} },},
+/**/ {{{0xbfb2aa04, 0xa44717a5} },
+/**/ {{0x3c5d15d3, 0x8d2fa3f7} },},
+/**/ {{{0xbfb1973b, 0xd1465567} },
+/**/ {{0x3c475583, 0x67a6acf6} },},
+/**/ {{{0xbfb08598, 0xb59e3a07} },
+/**/ {{0x3c5dd700, 0x9902bf32} },},
+/**/ {{{0xbfaeea31, 0xc006b87c} },
+/**/ {{0x3c43e4fc, 0x93b7b66c} },},
+/**/ {{{0xbfaccb73, 0xcdddb2cc} },
+/**/ {{0x3c4e48fb, 0x0500efd4} },},
+/**/ {{{0xbfaaaef2, 0xd0fb10fc} },
+/**/ {{0xbc2a353b, 0xb42e0add} },},
+/**/ {{{0xbfa894aa, 0x149fb343} },
+/**/ {{0xbc3a8be9, 0x7660a23d} },},
+/**/ {{{0xbfa67c94, 0xf2d4bb58} },
+/**/ {{0xbc40413e, 0x6505e603} },},
+/**/ {{{0xbfa466ae, 0xd42de3ea} },
+/**/ {{0x3c4cdd6f, 0x7f4a137e} },},
+/**/ {{{0xbfa252f3, 0x2f8d183f} },
+/**/ {{0x3c4947f7, 0x92615916} },},
+/**/ {{{0xbfa0415d, 0x89e74444} },
+/**/ {{0xbc4c05cf, 0x1d753622} },},
+/**/ {{{0xbf9c63d2, 0xec14aaf2} },
+/**/ {{0x3c3ce030, 0xa686bd86} },},
+/**/ {{{0xbf984925, 0x28c8cabf} },
+/**/ {{0x3c3d192d, 0x0619fa67} },},
+/**/ {{{0xbf9432a9, 0x25980cc1} },
+/**/ {{0x3c38cdaf, 0x39004192} },},
+/**/ {{{0xbf902056, 0x58935847} },
+/**/ {{0xbc327c8e, 0x8416e71f} },},
+/**/ {{{0xbf882448, 0xa388a2aa} },
+/**/ {{0xbc104b16, 0x137f09a0} },},
+/**/ {{{0xbf801015, 0x7588de71} },
+/**/ {{0xbc146662, 0xd417ced0} },},
+/**/ {{{0xbf700805, 0x59588b35} },
+/**/ {{0xbc1f9663, 0x8cf63677} },},
+/**/ {{{0x00000000, 0x00000000} },
+/**/ {{0x00000000, 0x00000000} },},
+/**/ {{{0x3f6ff00a, 0xa2b10bc0} },
+/**/ {{0x3c02821a, 0xd5a6d353} },},
+/**/ {{{0x3f7fe02a, 0x6b106789} },
+/**/ {{0xbbce44b7, 0xe3711ebf} },},
+/**/ {{{0x3f87dc47, 0x5f810a77} },
+/**/ {{0xbc116d76, 0x87d3df21} },},
+/**/ {{{0x3f8fc0a8, 0xb0fc03e4} },
+/**/ {{0xbc183092, 0xc59642a1} },},
+/**/ {{{0x3f93cea4, 0x4346a575} },
+/**/ {{0xbc10cb5a, 0x902b3a1c} },},
+/**/ {{{0x3f97b91b, 0x07d5b11b} },
+/**/ {{0xbc35b602, 0xace3a510} },},
+/**/ {{{0x3f9b9fc0, 0x27af9198} },
+/**/ {{0xbbf0ae69, 0x229dc868} },},
+/**/ {{{0x3f9f829b, 0x0e783300} },
+/**/ {{0x3c333e3f, 0x04f1ef23} },},
+/**/ {{{0x3fa1b0d9, 0x8923d980} },
+/**/ {{0xbc3e9ae8, 0x89bac481} },},
+/**/ {{{0x3fa39e87, 0xb9febd60} },
+/**/ {{0xbc45bfa9, 0x37f551bb} },},
+/**/ {{{0x3fa58a5b, 0xafc8e4d5} },
+/**/ {{0xbc4ce55c, 0x2b4e2b72} },},
+/**/ {{{0x3fa77458, 0xf632dcfc} },
+/**/ {{0x3c418d3c, 0xa87b9296} },},
+/**/ {{{0x3fa95c83, 0x0ec8e3eb} },
+/**/ {{0x3c4f5a0e, 0x80520bf2} },},
+/**/ {{{0x3fab42dd, 0x711971bf} },
+/**/ {{0xbc3eb975, 0x9c130499} },},
+/**/ {{{0x3fad276b, 0x8adb0b52} },
+/**/ {{0x3c21e3c5, 0x3257fd47} },},
+/**/ {{{0x3faf0a30, 0xc01162a6} },
+/**/ {{0x3c485f32, 0x5c5bbacd} },},
+/**/ {{{0x3fb07598, 0x3598e471} },
+/**/ {{0x3c480da5, 0x333c45b8} },},
+/**/ {{{0x3fb16536, 0xeea37ae1} },
+/**/ {{0xbc379da3, 0xe8c22cda} },},
+/**/ {{{0x3fb253f6, 0x2f0a1417} },
+/**/ {{0xbc1c1259, 0x63fc4cfd} },},
+/**/ {{{0x3fb341d7, 0x961bd1d1} },
+/**/ {{0xbc5b599f, 0x227becbb} },},
+/**/ {{{0x3fb42edc, 0xbea646f0} },
+/**/ {{0x3c4ddd4f, 0x935996c9} },},
+/**/ {{{0x3fb51b07, 0x3f06183f} },
+/**/ {{0x3c5a49e3, 0x9a1a8be4} },},
+/**/ {{{0x3fb60658, 0xa93750c4} },
+/**/ {{0xbc538845, 0x8ec21b6a} },},
+/**/ {{{0x3fb6f0d2, 0x8ae56b4c} },
+/**/ {{0xbc5906d9, 0x9184b992} },},
+/**/ {{{0x3fb7da76, 0x6d7b12cd} },
+/**/ {{0xbc5eeedf, 0xcdd94131} },},
+/**/ {{{0x3fb8c345, 0xd6319b21} },
+/**/ {{0xbc24a697, 0xab3424a9} },},
+/**/ {{{0x3fb9ab42, 0x462033ad} },
+/**/ {{0xbc42099e, 0x1c184e8e} },},
+/**/ {{{0x3fba926d, 0x3a4ad563} },
+/**/ {{0x3c5942f4, 0x8aa70ea9} },},
+/**/ {{{0x3fbb78c8, 0x2bb0eda1} },
+/**/ {{0x3c20878c, 0xf0327e21} },},
+/**/ {{{0x3fbc5e54, 0x8f5bc743} },
+/**/ {{0x3c35d617, 0xef8161b1} },},
+/**/ {{{0x3fbd4313, 0xd66cb35d} },
+/**/ {{0x3c5790dd, 0x951d90fa} },},
+/**/ {{{0x3fbe2707, 0x6e2af2e6} },
+/**/ {{0xbc361578, 0x001e0162} },},
+/**/ {{{0x3fbf0a30, 0xc01162a6} },
+/**/ {{0x3c585f32, 0x5c5bbacd} },},
+/**/ {{{0x3fbfec91, 0x31dbeabb} },
+/**/ {{0xbc55746b, 0x9981b36c} },},
+/**/ {{{0x3fc06715, 0x12ca596e} },
+/**/ {{0x3c550c64, 0x7eb86499} },},
+/**/ {{{0x3fc0d77e, 0x7cd08e59} },
+/**/ {{0x3c69a5dc, 0x5e9030ac} },},
+/**/ {{{0x3fc14785, 0x846742ac} },
+/**/ {{0x3c6a2881, 0x3e3a7f07} },},
+/**/ {{{0x3fc1b72a, 0xd52f67a0} },
+/**/ {{0x3c548302, 0x3472cd74} },},
+/**/ {{{0x3fc2266f, 0x190a5acb} },
+/**/ {{0x3c6f547b, 0xf1809e88} },},
+/**/ {{{0x3fc29552, 0xf81ff523} },
+/**/ {{0x3c630177, 0x1c407dbf} },},
+/**/ {{{0x3fc303d7, 0x18e47fd3} },
+/**/ {{0xbc06b9c7, 0xd96091fa} },},
+/**/ {{{0x3fc371fc, 0x201e8f74} },
+/**/ {{0x3c5de6cb, 0x62af18a0} },},
+/**/ {{{0x3fc3dfc2, 0xb0ecc62a} },
+/**/ {{0xbc5ab3a8, 0xe7d81017} },},
+/**/ {{{0x3fc44d2b, 0x6ccb7d1e} },
+/**/ {{0x3c69f4f6, 0x543e1f88} },},
+/**/ {{{0x3fc4ba36, 0xf39a55e5} },
+/**/ {{0x3c668981, 0xbcc36756} },},
+/**/ {{{0x3fc526e5, 0xe3a1b438} },
+/**/ {{0xbc6746ff, 0x8a470d3a} },},
+/**/ {{{0x3fc59338, 0xd9982086} },
+/**/ {{0xbc565d22, 0xaa8ad7cf} },},
+/**/ {{{0x3fc5ff30, 0x70a793d4} },
+/**/ {{0xbc5bc60e, 0xfafc6f6e} },},
+/**/ {{{0x3fc66acd, 0x4272ad51} },
+/**/ {{0xbc50900e, 0x4e1ea8b2} },},
+/**/ {{{0x3fc6d60f, 0xe719d21d} },
+/**/ {{0xbc6caae2, 0x68ecd179} },},
+/**/ {{{0x3fc740f8, 0xf54037a5} },
+/**/ {{0xbc5b2640, 0x62a84cdb} },},
+/**/ {{{0x3fc7ab89, 0x0210d909} },
+/**/ {{0x3c4be36b, 0x2d6a0608} },},
+/**/ {{{0x3fc815c0, 0xa14357eb} },
+/**/ {{0xbc54be48, 0x073a0564} },},
+/**/ {{{0x3fc87fa0, 0x6520c911} },
+/**/ {{0xbc6bf7fd, 0xbfa08d9a} },},
+/**/ {{{0x3fc8e928, 0xde886d41} },
+/**/ {{0xbc6569d8, 0x51a56770} },},
+/**/ {{{0x3fc9525a, 0x9cf456b4} },
+/**/ {{0x3c6d904c, 0x1d4e2e26} },},
+/**/ {{{0x3fc9bb36, 0x2e7dfb83} },
+/**/ {{0x3c6575e3, 0x1f003e0c} },},
+/**/ {{{0x3fca23bc, 0x1fe2b563} },
+/**/ {{0x3c493711, 0xb07a998c} },},
+/**/ {{{0x3fca8bec, 0xfc882f19} },
+/**/ {{0xbc5e8c37, 0x918c39eb} },},
+/**/ {{{0x3fcaf3c9, 0x4e80bff3} },
+/**/ {{0xbc5398cf, 0xf3641985} },},
+/**/ {{{0x3fcb5b51, 0x9e8fb5a4} },
+/**/ {{0x3c6ba27f, 0xdc19e1a0} },},
+/**/ {{{0x3fcbc286, 0x742d8cd6} },
+/**/ {{0x3c54fce7, 0x44870f55} },},
+/**/ {{{0x3fcc2968, 0x558c18c1} },
+/**/ {{0xbc673dee, 0x38a3fb6b} },},
+/**/ {{{0x3fcc8ff7, 0xc79a9a22} },
+/**/ {{0xbc64f689, 0xf8434012} },},
+/**/ {{{0x3fccf635, 0x4e09c5dc} },
+/**/ {{0x3c6239a0, 0x7d55b695} },},
+/**/ {{{0x3fcd5c21, 0x6b4fbb91} },
+/**/ {{0x3c66e443, 0x597e4d40} },},
+/**/ {{{0x3fcdc1bc, 0xa0abec7d} },
+/**/ {{0x3c6834c5, 0x1998b6fc} },},
+/**/ {{{0x3fce2707, 0x6e2af2e6} },
+/**/ {{0xbc461578, 0x001e0162} },},
+/**/ {{{0x3fce8c02, 0x52aa5a60} },
+/**/ {{0xbc46e03a, 0x39bfc89b} },},
+/**/ {{{0x3fcef0ad, 0xcbdc5936} },
+/**/ {{0x3c648637, 0x950dc20d} },},
+/**/ {{{0x3fcf550a, 0x564b7b37} },
+/**/ {{0x3c2c5f6d, 0xfd018c37} },},
+/**/ {{{0x3fcfb918, 0x6d5e3e2b} },
+/**/ {{0xbc6caaae, 0x64f21acb} },},
+/**/ {{{0x3fd00e6c, 0x45ad501d} },
+/**/ {{0xbc6cb956, 0x8ff6fead} },},
+/**/ {{{0x3fd04025, 0x94b4d041} },
+/**/ {{0xbc628ec2, 0x17a5022d} },},
+/**/ {{{0x3fd071b8, 0x5fcd590d} },
+/**/ {{0x3c5d1707, 0xf97bde80} },},
+/**/ {{{0x3fd0a324, 0xe27390e3} },
+/**/ {{0x3c77dcfd, 0xe8061c03} },},
+/**/ {{{0x3fd0d46b, 0x579ab74b} },
+/**/ {{0x3c603ec8, 0x1c3cbd92} },},
+/**/ {{{0x3fd1058b, 0xf9ae4ad5} },
+/**/ {{0x3c589fa0, 0xab4cb31d} },},
+/**/ {{{0x3fd13687, 0x0293a8b0} },
+/**/ {{0x3c77b662, 0x98edd24a} },},
+/**/ {{{0x3fd1675c, 0xababa60e} },
+/**/ {{0x3c2ce63e, 0xab883717} },},
+/**/ {{{0x3fd1980d, 0x2dd4236f} },
+/**/ {{0x3c79d3d1, 0xb0e4d147} },},
+/**/ {{{0x3fd1c898, 0xc16999fb} },
+/**/ {{0xbc30e5c6, 0x2aff1c44} },},
+/**/ {{{0x3fd1f8ff, 0x9e48a2f3} },
+/**/ {{0xbc7c9fdf, 0x9a0c4b07} },},
+/**/ {{{0x3fd22941, 0xfbcf7966} },
+/**/ {{0xbc776f5e, 0xb09628af} },},
+/**/ {{{0x3fd25960, 0x10df763a} },
+/**/ {{0xbc50f76c, 0x57075e9e} },},
+/**/ {{{0x3fd2895a, 0x13de86a3} },
+/**/ {{0x3c77ad24, 0xc13f040e} },},
+/**/ {{{0x3fd2b930, 0x3ab89d25} },
+/**/ {{0xbc7896b5, 0xfd852ad4} },},
+/**/ {{{0x3fd2e8e2, 0xbae11d31} },
+/**/ {{0xbc78f4cd, 0xb95ebdf9} },},
+/**/ {{{0x3fd31871, 0xc9544185} },
+/**/ {{0xbc351acc, 0x4c09b379} },},
+/**/ {{{0x3fd347dd, 0x9a987d55} },
+/**/ {{0xbc64dd4c, 0x580919f8} },},
+/**/ {{{0x3fd37726, 0x62bfd85b} },
+/**/ {{0xbc4b5629, 0xd8117de7} },},
+/**/ {{{0x3fd3a64c, 0x556945ea} },
+/**/ {{0xbc6c6865, 0x1945f97c} },},
+/**/ {{{0x3fd3d54f, 0xa5c1f710} },
+/**/ {{0xbc7e3265, 0xc6a1c98d} },},
+/**/ {{{0x3fd40430, 0x8686a7e4} },
+/**/ {{0xbc70bcfb, 0x6082ce6d} },},
+/**/ {{{0x3fd432ef, 0x2a04e814} },
+/**/ {{0xbc729931, 0x715ac903} },},
+/**/ {{{0x3fd4618b, 0xc21c5ec2} },
+/**/ {{0x3c7f42de, 0xcdeccf1d} },},
+/**/ {{{0x3fd49006, 0x804009d1} },
+/**/ {{0xbc69ffc3, 0x41f177dc} },},
+/**/ {{{0x3fd4be5f, 0x957778a1} },
+/**/ {{0xbc6259b3, 0x5b04813d} },},
+/**/ {{{0x3fd4ec97, 0x3260026a} },
+/**/ {{0xbc742a87, 0xd977dc5e} },},
+/**/ {{{0x3fd51aad, 0x872df82d} },
+/**/ {{0x3c43927a, 0xc19f55e3} },},
+/**/ {{{0x3fd548a2, 0xc3add263} },
+/**/ {{0xbc6819cf, 0x7e308ddb} },},
+/**/ {{{0x3fd57677, 0x17455a6c} },
+/**/ {{0x3c7526ad, 0xb283660c} },},
+/**/ {{{0x3fd5a42a, 0xb0f4cfe2} },
+/**/ {{0xbc78ebcb, 0x7dee9a3d} },},
+/**/ {{{0x3fd5d1bd, 0xbf5809ca} },
+/**/ {{0x3c742363, 0x83dc7fe1} },},
+/**/ {{{0x3fd5ff30, 0x70a793d4} },
+/**/ {{0xbc6bc60e, 0xfafc6f6e} },},
+/**/ {{{0x3fd62c82, 0xf2b9c795} },
+/**/ {{0x3c67b7af, 0x915300e5} },},
+ };
+
+ static const number
+ Lv[362][2] = { /* log(vj) */
+
+/**/ {{{0xbf6687ec, 0xb72daabf} },
+/**/ {{0x3c052c69, 0x0f13318f} },},
+/**/ {{{0xbf6667d6, 0x3767104f} },
+/**/ {{0x3bd3efa3, 0xd27a7bac} },},
+/**/ {{{0xbf6647bf, 0xd7cd64fb} },
+/**/ {{0x3c09b725, 0x55a89c36} },},
+/**/ {{{0xbf6627a9, 0x9860683b} },
+/**/ {{0x3bcbae22, 0xfebc844a} },},
+/**/ {{{0xbf660793, 0x791fd98a} },
+/**/ {{0xbbfe34af, 0x78fa1cb5} },},
+/**/ {{{0xbf65e77d, 0x7a0b7863} },
+/**/ {{0xbc02f1b1, 0xea78fdd0} },},
+/**/ {{{0xbf65c767, 0x9b230442} },
+/**/ {{0x3bf70d8c, 0x2202b2ca} },},
+/**/ {{{0xbf65a751, 0xdc663ca2} },
+/**/ {{0xbbfdc63d, 0xc3444e64} },},
+/**/ {{{0xbf65873c, 0x3dd4e102} },
+/**/ {{0x3c021b11, 0x370d69c3} },},
+/**/ {{{0xbf656726, 0xbf6eb0de} },
+/**/ {{0xbbfb6da8, 0x154dd8d8} },},
+/**/ {{{0xbf654711, 0x61336bb6} },
+/**/ {{0xbc0b12d2, 0xdf9a4709} },},
+/**/ {{{0xbf6526fc, 0x2322d10a} },
+/**/ {{0x3bf997f2, 0x68d1274f} },},
+/**/ {{{0xbf6506e7, 0x053ca059} },
+/**/ {{0x3c0c2a1f, 0xe70c852a} },},
+/**/ {{{0xbf64e6d2, 0x07809924} },
+/**/ {{0x3c04cc9e, 0xa808538f} },},
+/**/ {{{0xbf64c6bd, 0x29ee7aed} },
+/**/ {{0x3befe68c, 0x7797a4bd} },},
+/**/ {{{0xbf64a6a8, 0x6c860537} },
+/**/ {{0x3c06794d, 0x9efaae3d} },},
+/**/ {{{0xbf648693, 0xcf46f784} },
+/**/ {{0xbbfed318, 0xb2ddd9d1} },},
+/**/ {{{0xbf64667f, 0x5231115a} },
+/**/ {{0x3c061f62, 0x4643624b} },},
+/**/ {{{0xbf64466a, 0xf544123c} },
+/**/ {{0x3c0666a0, 0x9387f11e} },},
+/**/ {{{0xbf642656, 0xb87fb9b0} },
+/**/ {{0x3c0043b2, 0x116ec598} },},
+/**/ {{{0xbf640642, 0x9be3c73c} },
+/**/ {{0xbbfbd84d, 0xd2de6e3e} },},
+/**/ {{{0xbf63e62e, 0x9f6ffa68} },
+/**/ {{0xbbe9149b, 0x433d8c65} },},
+/**/ {{{0xbf63c61a, 0xc32412bb} },
+/**/ {{0xbbf6b88d, 0x08e5a7bb} },},
+/**/ {{{0xbf63a607, 0x06ffcfbe} },
+/**/ {{0xbb9f3c7a, 0xccfac9e2} },},
+/**/ {{{0xbf6385f3, 0x6b02f0fa} },
+/**/ {{0x3bee405c, 0xbec6f6e4} },},
+/**/ {{{0xbf6365df, 0xef2d35f9} },
+/**/ {{0x3bf02993, 0xaf0c0b4c} },},
+/**/ {{{0xbf6345cc, 0x937e5e46} },
+/**/ {{0x3bf9be97, 0xaa64716f} },},
+/**/ {{{0xbf6325b9, 0x57f6296c} },
+/**/ {{0xbbfdeb4d, 0xa2e863ae} },},
+/**/ {{{0xbf6305a6, 0x3c9456f9} },
+/**/ {{0x3c0f3c7f, 0x636d2b2c} },},
+/**/ {{{0xbf62e593, 0x4158a678} },
+/**/ {{0x3c01a8df, 0xb166ca7f} },},
+/**/ {{{0xbf62c580, 0x6642d778} },
+/**/ {{0x3c020ff1, 0x53a2d534} },},
+/**/ {{{0xbf62a56d, 0xab52a987} },
+/**/ {{0xbbe8fef1, 0x0412f1e7} },},
+/**/ {{{0xbf62855b, 0x1087dc35} },
+/**/ {{0xbbfcd17e, 0x4b7ac6c6} },},
+/**/ {{{0xbf626548, 0x95e22f12} },
+/**/ {{0xbbfbfc21, 0x9a8127bf} },},
+/**/ {{{0xbf624536, 0x3b6161af} },
+/**/ {{0x3bd7eda1, 0x66d42390} },},
+/**/ {{{0xbf622524, 0x0105339d} },
+/**/ {{0xbbdf374e, 0x77fedcad} },},
+/**/ {{{0xbf620511, 0xe6cd646f} },
+/**/ {{0x3be1d1fb, 0x52d05dea} },},
+/**/ {{{0xbf61e4ff, 0xecb9b3b8} },
+/**/ {{0x3c02c2fc, 0xffd8e706} },},
+/**/ {{{0xbf61c4ee, 0x12c9e10b} },
+/**/ {{0xbc02b4f8, 0xf1d5cc2c} },},
+/**/ {{{0xbf61a4dc, 0x58fdabfe} },
+/**/ {{0xbc0618c3, 0x1315b191} },},
+/**/ {{{0xbf6184ca, 0xbf54d426} },
+/**/ {{0xbc01f8d5, 0xcb3cdab0} },},
+/**/ {{{0xbf6164b9, 0x45cf1919} },
+/**/ {{0xbc014ff7, 0xc025605a} },},
+/**/ {{{0xbf6144a7, 0xec6c3a6e} },
+/**/ {{0xbbff04ff, 0x87cb08cd} },},
+/**/ {{{0xbf612496, 0xb32bf7bd} },
+/**/ {{0x3bee89b4, 0xe6af1b84} },},
+/**/ {{{0xbf610485, 0x9a0e109e} },
+/**/ {{0x3c07e99e, 0x35a60879} },},
+/**/ {{{0xbf60e474, 0xa11244aa} },
+/**/ {{0x3c04b698, 0x20f2325a} },},
+/**/ {{{0xbf60c463, 0xc838537b} },
+/**/ {{0x3bc0657e, 0x3617200d} },},
+/**/ {{{0xbf60a453, 0x0f7ffcac} },
+/**/ {{0xbc008feb, 0xa5080961} },},
+/**/ {{{0xbf608442, 0x76e8ffd9} },
+/**/ {{0x3bd13002, 0xbb5e1df7} },},
+/**/ {{{0xbf606431, 0xfe731c9d} },
+/**/ {{0xbc0509f3, 0x6e2858c0} },},
+/**/ {{{0xbf604421, 0xa61e1296} },
+/**/ {{0xbc04b556, 0x5f5d9695} },},
+/**/ {{{0xbf602411, 0x6de9a162} },
+/**/ {{0x3c042b89, 0xe79a4e00} },},
+/**/ {{{0xbf600401, 0x55d5889e} },
+/**/ {{0x3be8f98e, 0x1113f403} },},
+/**/ {{{0xbf5fc7e2, 0xbbc30fd4} },
+/**/ {{0xbbfc709b, 0x93382bc9} },},
+/**/ {{{0xbf5f87c3, 0x0c1abdcd} },
+/**/ {{0xbbf2a90d, 0x76a55d1c} },},
+/**/ {{{0xbf5f47a3, 0x9cb19a68} },
+/**/ {{0x3be1b815, 0x76e7826b} },},
+/**/ {{{0xbf5f0784, 0x6d8724e7} },
+/**/ {{0xbbe72d46, 0x2b63756d} },},
+/**/ {{{0xbf5ec765, 0x7e9adc90} },
+/**/ {{0x3beb1a66, 0x73bb17c5} },},
+/**/ {{{0xbf5e8746, 0xcfec40a8} },
+/**/ {{0x3bf11af5, 0xb5e5a553} },},
+/**/ {{{0xbf5e4728, 0x617ad077} },
+/**/ {{0x3bfb2cad, 0xf57dd14f} },},
+/**/ {{{0xbf5e070a, 0x33460b45} },
+/**/ {{0xbbf8db75, 0x4902c8d5} },},
+/**/ {{{0xbf5dc6ec, 0x454d705f} },
+/**/ {{0x3bef5cc6, 0xe8a41057} },},
+/**/ {{{0xbf5d86ce, 0x97907f0f} },
+/**/ {{0x3bed8277, 0xdf8672ef} },},
+/**/ {{{0xbf5d46b1, 0x2a0eb6a3} },
+/**/ {{0xbbc2f9c2, 0x3717e5ee} },},
+/**/ {{{0xbf5d0693, 0xfcc7966b} },
+/**/ {{0x3bf4deed, 0xab4852c6} },},
+/**/ {{{0xbf5cc677, 0x0fba9db6} },
+/**/ {{0xbbf3a2b4, 0x9db2a368} },},
+/**/ {{{0xbf5c865a, 0x62e74bd8} },
+/**/ {{0xbbd2c51d, 0x58fa0c24} },},
+/**/ {{{0xbf5c463d, 0xf64d2024} },
+/**/ {{0x3bf838ca, 0xe3a09391} },},
+/**/ {{{0xbf5c0621, 0xc9eb99ee} },
+/**/ {{0xbbdc2a9e, 0x61b7de71} },},
+/**/ {{{0xbf5bc605, 0xddc2388e} },
+/**/ {{0xbbea9808, 0x4accb195} },},
+/**/ {{{0xbf5b85ea, 0x31d07b5c} },
+/**/ {{0xbbd811a2, 0x032e030b} },},
+/**/ {{{0xbf5b45ce, 0xc615e1b1} },
+/**/ {{0xbbfd5427, 0x821e0b81} },},
+/**/ {{{0xbf5b05b3, 0x9a91eaea} },
+/**/ {{0x3bfffeba, 0x2619306b} },},
+/**/ {{{0xbf5ac598, 0xaf441661} },
+/**/ {{0x3bd22824, 0x9eac7d15} },},
+/**/ {{{0xbf5a857e, 0x042be376} },
+/**/ {{0x3bc20736, 0x24893f0e} },},
+/**/ {{{0xbf5a4563, 0x9948d188} },
+/**/ {{0xbbf58ab4, 0x04d734cd} },},
+/**/ {{{0xbf5a0549, 0x6e9a5ff9} },
+/**/ {{0xbbf22673, 0x5723a6c3} },},
+/**/ {{{0xbf59c52f, 0x84200e2c} },
+/**/ {{0x3bfc81da, 0xa538e8e1} },},
+/**/ {{{0xbf598515, 0xd9d95b83} },
+/**/ {{0xbbfa1a37, 0x2a8e3feb} },},
+/**/ {{{0xbf5944fc, 0x6fc5c767} },
+/**/ {{0x3bf8e1ce, 0x385159f9} },},
+/**/ {{{0xbf5904e3, 0x45e4d13c} },
+/**/ {{0xbbfc4737, 0x1567c7a7} },},
+/**/ {{{0xbf58c4ca, 0x5c35f86e} },
+/**/ {{0x3bf41581, 0x23c9ae0c} },},
+/**/ {{{0xbf5884b1, 0xb2b8bc65} },
+/**/ {{0x3bf70c2c, 0x2b66cfb6} },},
+/**/ {{{0xbf584499, 0x496c9c8d} },
+/**/ {{0xbbdb9042, 0xe5a11e3e} },},
+/**/ {{{0xbf580481, 0x20511854} },
+/**/ {{0xbbf9cf9d, 0x61bcb040} },},
+/**/ {{{0xbf57c469, 0x3765af29} },
+/**/ {{0xbbf65ceb, 0xe26a419b} },},
+/**/ {{{0xbf578451, 0x8ea9e07c} },
+/**/ {{0xbbf1c2f5, 0xb70a4088} },},
+/**/ {{{0xbf57443a, 0x261d2bbf} },
+/**/ {{0xbbbc7b8f, 0x29704ba7} },},
+/**/ {{{0xbf570422, 0xfdbf1065} },
+/**/ {{0x3bca0a54, 0x433ccb3b} },},
+/**/ {{{0xbf56c40c, 0x158f0de3} },
+/**/ {{0x3bd9e257, 0x207cde2d} },},
+/**/ {{{0xbf5683f5, 0x6d8ca3af} },
+/**/ {{0xbbef17a4, 0xf7b51b49} },},
+/**/ {{{0xbf5643df, 0x05b75142} },
+/**/ {{0x3be28239, 0x9d345bf8} },},
+/**/ {{{0xbf5603c8, 0xde0e9614} },
+/**/ {{0xbbde6c21, 0x0918d1bf} },},
+/**/ {{{0xbf55c3b2, 0xf691f1a1} },
+/**/ {{0x3bd37d78, 0x377de4c8} },},
+/**/ {{{0xbf55839d, 0x4f40e365} },
+/**/ {{0x3bf52b7d, 0xbbf7c9d1} },},
+/**/ {{{0xbf554387, 0xe81aeadd} },
+/**/ {{0xbbf0be6a, 0x679c3d9a} },},
+/**/ {{{0xbf550372, 0xc11f878a} },
+/**/ {{0xbbdd9e20, 0xb6cdd88e} },},
+/**/ {{{0xbf54c35d, 0xda4e38ec} },
+/**/ {{0xbbe3b1e7, 0x09302da0} },},
+/**/ {{{0xbf548349, 0x33a67e86} },
+/**/ {{0x3be8cba8, 0x085b922d} },},
+/**/ {{{0xbf544334, 0xcd27d7db} },
+/**/ {{0xbba5f2c9, 0xf024ab43} },},
+/**/ {{{0xbf540320, 0xa6d1c471} },
+/**/ {{0xbbeb31f3, 0xf686cf3d} },},
+/**/ {{{0xbf53c30c, 0xc0a3c3cf} },
+/**/ {{0xbbf74ffe, 0xd4ad32f6} },},
+/**/ {{{0xbf5382f9, 0x1a9d557e} },
+/**/ {{0x3bd2e555, 0x4acb368f} },},
+/**/ {{{0xbf5342e5, 0xb4bdf907} },
+/**/ {{0x3be13442, 0x07812806} },},
+/**/ {{{0xbf5302d2, 0x8f052df6} },
+/**/ {{0x3bf5f429, 0x70b1e756} },},
+/**/ {{{0xbf52c2bf, 0xa97273d7} },
+/**/ {{0xbbf20aa3, 0x43a03fff} },},
+/**/ {{{0xbf5282ad, 0x04054a3a} },
+/**/ {{0xbbed4d57, 0x8bebd7ad} },},
+/**/ {{{0xbf52429a, 0x9ebd30ae} },
+/**/ {{0xbbff9529, 0x5a71c5a4} },},
+/**/ {{{0xbf520288, 0x7999a6c6} },
+/**/ {{0x3bfb055a, 0x54100f9e} },},
+/**/ {{{0xbf51c276, 0x949a2c12} },
+/**/ {{0xbbff6978, 0xa2e9f1b4} },},
+/**/ {{{0xbf518264, 0xefbe402a} },
+/**/ {{0x3bf01fb9, 0xbc188323} },},
+/**/ {{{0xbf514253, 0x8b0562a1} },
+/**/ {{0xbbf7c87c, 0x957bf23a} },},
+/**/ {{{0xbf510242, 0x666f1311} },
+/**/ {{0x3bdc2cb9, 0xc8be6880} },},
+/**/ {{{0xbf50c231, 0x81fad111} },
+/**/ {{0xbbf59fc1, 0x07ba000d} },},
+/**/ {{{0xbf508220, 0xdda81c3d} },
+/**/ {{0xbbf06a0a, 0xbf5c8a0b} },},
+/**/ {{{0xbf504210, 0x79767431} },
+/**/ {{0x3bf3a6cf, 0xa9a705bc} },},
+/**/ {{{0xbf500200, 0x55655889} },
+/**/ {{0xbbe9abe6, 0xbf0fa436} },},
+/**/ {{{0xbf4f83e0, 0xe2e891cc} },
+/**/ {{0x3be4aa59, 0x1b81bf62} },},
+/**/ {{{0xbf4f03c1, 0x9b4589ce} },
+/**/ {{0xbbe60518, 0x8a47f50a} },},
+/**/ {{{0xbf4e83a2, 0xd3e0985f} },
+/**/ {{0x3bed32d8, 0x5ef17e96} },},
+/**/ {{{0xbf4e0384, 0x8cb8bcc3} },
+/**/ {{0xbbeb7b30, 0xf09afa4d} },},
+/**/ {{{0xbf4d8366, 0xc5ccf647} },
+/**/ {{0xbbd527fc, 0xf586cec2} },},
+/**/ {{{0xbf4d0349, 0x7f1c4437} },
+/**/ {{0x3bc2bcf0, 0x4a686886} },},
+/**/ {{{0xbf4c832c, 0xb8a5a5e3} },
+/**/ {{0x3bc98f93, 0x721c2ebe} },},
+/**/ {{{0xbf4c0310, 0x72681a9e} },
+/**/ {{0xbbe20f00, 0xb5308d22} },},
+/**/ {{{0xbf4b82f4, 0xac62a1bf} },
+/**/ {{0xbbe1edd0, 0x9737b561} },},
+/**/ {{{0xbf4b02d9, 0x66943a9f} },
+/**/ {{0xbbcc950b, 0x23f894a1} },},
+/**/ {{{0xbf4a82be, 0xa0fbe49a} },
+/**/ {{0xbb81da04, 0x866bc982} },},
+/**/ {{{0xbf4a02a4, 0x5b989f0f} },
+/**/ {{0xbbd9114d, 0x9d76196e} },},
+/**/ {{{0xbf49828a, 0x96696961} },
+/**/ {{0x3bc10d20, 0xd3292fd6} },},
+/**/ {{{0xbf490271, 0x516d42f4} },
+/**/ {{0xbbee53a3, 0x2e9a5dd5} },},
+/**/ {{{0xbf488258, 0x8ca32b32} },
+/**/ {{0xbbc55af5, 0xd18f8004} },},
+/**/ {{{0xbf480240, 0x480a2185} },
+/**/ {{0xbbb32d23, 0xa9b0178a} },},
+/**/ {{{0xbf478228, 0x83a1255c} },
+/**/ {{0x3be84cc3, 0x8152093a} },},
+/**/ {{{0xbf470211, 0x3f673627} },
+/**/ {{0xbbd0055a, 0xf4881c71} },},
+/**/ {{{0xbf4681fa, 0x7b5b535c} },
+/**/ {{0x3bd2b73f, 0xb98336ea} },},
+/**/ {{{0xbf4601e4, 0x377c7c71} },
+/**/ {{0xbbcdcbed, 0x2ed05089} },},
+/**/ {{{0xbf4581ce, 0x73c9b0e1} },
+/**/ {{0xbbdda0c2, 0x61414697} },},
+/**/ {{{0xbf4501b9, 0x3041f02a} },
+/**/ {{0x3bee5d53, 0x22f8b33c} },},
+/**/ {{{0xbf4481a4, 0x6ce439ca} },
+/**/ {{0xbbe5512f, 0x9c25c999} },},
+/**/ {{{0xbf440190, 0x29af8d47} },
+/**/ {{0x3b7f48c2, 0xa4df0dfd} },},
+/**/ {{{0xbf43817c, 0x66a2ea26} },
+/**/ {{0x3bd157c0, 0x517febd8} },},
+/**/ {{{0xbf430169, 0x23bd4ff0} },
+/**/ {{0xbbe2e229, 0x0176d244} },},
+/**/ {{{0xbf428156, 0x60fdbe33} },
+/**/ {{0x3be64664, 0x175812b3} },},
+/**/ {{{0xbf420144, 0x1e63347c} },
+/**/ {{0xbbe39ab4, 0xd9355524} },},
+/**/ {{{0xbf418132, 0x5becb260} },
+/**/ {{0x3be74b27, 0xb6e1edc9} },},
+/**/ {{{0xbf410121, 0x19993772} },
+/**/ {{0xbbaa390b, 0x393ab56a} },},
+/**/ {{{0xbf408110, 0x5767c34c} },
+/**/ {{0x3bd128e6, 0xf8c7783b} },},
+/**/ {{{0xbf400100, 0x15575589} },
+/**/ {{0x3bec8863, 0xf23ef222} },},
+/**/ {{{0xbf3f01e0, 0xa6cddb8d} },
+/**/ {{0x3b8a9419, 0xcdd29c3f} },},
+/**/ {{{0xbf3e01c2, 0x232b174e} },
+/**/ {{0xbbc7cf55, 0xd5f5b191} },},
+/**/ {{{0xbf3d01a4, 0x9fc45d9e} },
+/**/ {{0x3bddc58f, 0xb5038e7e} },},
+/**/ {{{0xbf3c0188, 0x1c97adca} },
+/**/ {{0x3bc0238d, 0xbb933e41} },},
+/**/ {{{0xbf3b016c, 0x99a30728} },
+/**/ {{0xbbabde04, 0xc3c43664} },},
+/**/ {{{0xbf3a0152, 0x16e46913} },
+/**/ {{0x3bafe081, 0x5adc3673} },},
+/**/ {{{0xbf390138, 0x9459d2eb} },
+/**/ {{0xbbd949da, 0xc2a33d26} },},
+/**/ {{{0xbf380120, 0x12014418} },
+/**/ {{0xbbd3acbc, 0xf76e0326} },},
+/**/ {{{0xbf370108, 0x8fd8bc07} },
+/**/ {{0x3bdbde09, 0x4cd6ce34} },},
+/**/ {{{0xbf3600f2, 0x0dde3a29} },
+/**/ {{0xbbb0bc28, 0x05442a35} },},
+/**/ {{{0xbf3500dc, 0x8c0fbdf9} },
+/**/ {{0x3bd21c68, 0x0908cbf7} },},
+/**/ {{{0xbf3400c8, 0x0a6b46f4} },
+/**/ {{0xbbdbd35e, 0x0f107564} },},
+/**/ {{{0xbf3300b4, 0x88eed4a1} },
+/**/ {{0xbbc22067, 0x49a3dcb8} },},
+/**/ {{{0xbf3200a2, 0x0798668a} },
+/**/ {{0x3bcdb7f0, 0xe7c5d0e5} },},
+/**/ {{{0xbf310090, 0x8665fc3f} },
+/**/ {{0xbbd00add, 0xc7f9d69c} },},
+/**/ {{{0xbf300080, 0x05559559} },
+/**/ {{0x3bddd332, 0xa0e20e2f} },},
+/**/ {{{0xbf2e00e1, 0x08ca62e5} },
+/**/ {{0xbbb15ff9, 0x3a04bb77} },},
+/**/ {{{0xbf2c00c4, 0x0725a061} },
+/**/ {{0x3bc88ab0, 0xcc052f3e} },},
+/**/ {{{0xbf2a00a9, 0x05b8e275} },
+/**/ {{0xbbcbba1a, 0xf5f3cbcf} },},
+/**/ {{{0xbf280090, 0x04802882} },
+/**/ {{0x3bcec900, 0xa5bd7bd0} },},
+/**/ {{{0xbf260079, 0x037771ef} },
+/**/ {{0x3bb77ea0, 0x9b7b54fa} },},
+/**/ {{{0xbf240064, 0x029abe33} },
+/**/ {{0xbbc1bbf0, 0x3ae68d18} },},
+/**/ {{{0xbf220051, 0x01e60cd1} },
+/**/ {{0x3bb1dcd9, 0x2b45cfcd} },},
+/**/ {{{0xbf200040, 0x01555d56} },
+/**/ {{0x3bcddd88, 0x863f53f6} },},
+/**/ {{{0xbf1c0062, 0x01c95eb7} },
+/**/ {{0x3bbd88f7, 0xaa4dfd9a} },},
+/**/ {{{0xbf180048, 0x01200510} },
+/**/ {{0xbb984d46, 0x4f3db50b} },},
+/**/ {{{0xbf140032, 0x00a6ad1c} },
+/**/ {{0x3bb2e44b, 0x28ff1135} },},
+/**/ {{{0xbf100020, 0x00555655} },
+/**/ {{0xbbb62224, 0xccd5f17f} },},
+/**/ {{{0xbf080024, 0x004800a2} },
+/**/ {{0xbb484d09, 0x8d690542} },},
+/**/ {{{0xbf000010, 0x00155575} },
+/**/ {{0xbba56222, 0x37779c0a} },},
+/**/ {{{0xbef00008, 0x00055559} },
+/**/ {{0xbb955622, 0x22cccd5f} },},
+/**/ {{{0x00000000, 0x00000000} },
+/**/ {{0x00000000, 0x00000000} },},
+/**/ {{{0x3eeffff0, 0x000aaaa3} },
+/**/ {{0xbb8553bb, 0xbd110fec} },},
+/**/ {{{0x3effffe0, 0x002aaa6b} },
+/**/ {{0xbb953bbb, 0xe6661d42} },},
+/**/ {{{0x3f07ffdc, 0x0047ff5e} },
+/**/ {{0x3b484c90, 0x0d69020e} },},
+/**/ {{{0x3f0fffc0, 0x00aaa8ab} },
+/**/ {{0xbba3bbc1, 0x10fec82c} },},
+/**/ {{{0x3f13ffce, 0x00a6a83a} },
+/**/ {{0xbbb2e45f, 0x81546808} },},
+/**/ {{{0x3f17ffb8, 0x011ffaf0} },
+/**/ {{0x3b984c53, 0x4f3d9b6a} },},
+/**/ {{{0x3f1bff9e, 0x01c94bf5} },
+/**/ {{0xbbbd8990, 0xdaa368ee} },},
+/**/ {{{0x3f1fff80, 0x02aa9aab} },
+/**/ {{0x3b910e66, 0x78af0afc} },},
+/**/ {{{0x3f21ffaf, 0x01e5f330} },
+/**/ {{0xbbb1df8d, 0x26467402} },},
+/**/ {{{0x3f23ff9c, 0x029a9723} },
+/**/ {{0x3bc1b965, 0x303b23b1} },},
+/**/ {{{0x3f25ff87, 0x037738be} },
+/**/ {{0xbbb787a3, 0x53d3dc06} },},
+/**/ {{{0x3f27ff70, 0x047fd782} },
+/**/ {{0xbbced098, 0xa5c0aff0} },},
+/**/ {{{0x3f29ff57, 0x05b872e4} },
+/**/ {{0x3bcbadd4, 0x81c30d42} },},
+/**/ {{{0x3f2bff3c, 0x07250a51} },
+/**/ {{0xbbc89dd6, 0xd6bad8c1} },},
+/**/ {{{0x3f2dff1f, 0x08c99d24} },
+/**/ {{0x3bb12609, 0xaede8ad0} },},
+/**/ {{{0x3f2fff00, 0x0aaa2ab1} },
+/**/ {{0x3ba0bbc0, 0x4dc4e3dc} },},
+/**/ {{{0x3f30ff6f, 0x8665591f} },
+/**/ {{0xbbd013d3, 0x80357b54} },},
+/**/ {{{0x3f31ff5e, 0x07979982} },
+/**/ {{0xbbce0e70, 0x4817ebcd} },},
+/**/ {{{0x3f32ff4b, 0x88edd619} },
+/**/ {{0xbbd72b9e, 0xc582abc3} },},
+/**/ {{{0x3f33ff38, 0x0a6a0e74} },
+/**/ {{0x3bdb81fc, 0xb95bc1fe} },},
+/**/ {{{0x3f34ff23, 0x8c0e4220} },
+/**/ {{0x3bcaed12, 0x9b549aae} },},
+/**/ {{{0x3f35ff0e, 0x0ddc70a1} },
+/**/ {{0x3bacf6f3, 0xd97a3c05} },},
+/**/ {{{0x3f36fef7, 0x8fd69976} },
+/**/ {{0x3bab2dcf, 0x6f810a3c} },},
+/**/ {{{0x3f37fee0, 0x11febc18} },
+/**/ {{0x3bd2b9bc, 0xf5d3f323} },},
+/**/ {{{0x3f38fec7, 0x9456d7fb} },
+/**/ {{0xbbbfb258, 0x6eaa1d6a} },},
+/**/ {{{0x3f39feae, 0x16e0ec8b} },
+/**/ {{0xbbb6137a, 0xceeb34b1} },},
+/**/ {{{0x3f3afe93, 0x999ef930} },
+/**/ {{0xbbde70e0, 0xdc639b08} },},
+/**/ {{{0x3f3bfe78, 0x1c92fd4a} },
+/**/ {{0xbbc4ed10, 0x713cc126} },},
+/**/ {{{0x3f3cfe5b, 0x9fbef835} },
+/**/ {{0xbb873d63, 0xcc0e81bd} },},
+/**/ {{{0x3f3dfe3e, 0x2324e946} },
+/**/ {{0x3bc09164, 0x62dd5deb} },},
+/**/ {{{0x3f3efe1f, 0xa6c6cfcc} },
+/**/ {{0x3bdac2da, 0x3512d15c} },},
+/**/ {{{0x3f3ffe00, 0x2aa6ab11} },
+/**/ {{0x3b999e2b, 0x62cc632d} },},
+/**/ {{{0x3f407eef, 0xd7633d2c} },
+/**/ {{0xbbebc98b, 0x63ff6024} },},
+/**/ {{{0x3f40fedf, 0x19941e6e} },
+/**/ {{0xbbb194c2, 0xe0aa6338} },},
+/**/ {{{0x3f417ecd, 0xdbe6f8eb} },
+/**/ {{0x3be4241b, 0x57b0f571} },},
+/**/ {{{0x3f41febc, 0x1e5ccc3c} },
+/**/ {{0x3bdc657d, 0x895d3592} },},
+/**/ {{{0x3f427ea9, 0xe0f697f6} },
+/**/ {{0x3be35a5d, 0x1c0ec17c} },},
+/**/ {{{0x3f42fe97, 0x23b55bac} },
+/**/ {{0x3bd6cfb7, 0x3e538464} },},
+/**/ {{{0x3f437e83, 0xe69a16ed} },
+/**/ {{0x3bee96f7, 0x7cef2478} },},
+/**/ {{{0x3f43fe70, 0x29a5c947} },
+/**/ {{0xbbd4d578, 0xbf46e36a} },},
+/**/ {{{0x3f447e5b, 0xecd97242} },
+/**/ {{0xbbc9eb66, 0x3ff7dd44} },},
+/**/ {{{0x3f44fe47, 0x30361165} },
+/**/ {{0x3be400d7, 0x7e93f2fd} },},
+/**/ {{{0x3f457e31, 0xf3bca635} },
+/**/ {{0xbbe0e2a2, 0xd375017f} },},
+/**/ {{{0x3f45fe1c, 0x376e3031} },
+/**/ {{0xbbd524eb, 0x8a5ae7f6} },},
+/**/ {{{0x3f467e05, 0xfb4baed7} },
+/**/ {{0x3be204fb, 0x4e85c4e9} },},
+/**/ {{{0x3f46fdef, 0x3f5621a3} },
+/**/ {{0xbbdf09d7, 0x34886d52} },},
+/**/ {{{0x3f477dd8, 0x038e880b} },
+/**/ {{0xbbb8900e, 0x14e596a3} },},
+/**/ {{{0x3f47fdc0, 0x47f5e185} },
+/**/ {{0xbbebfa5c, 0x57d202d3} },},
+/**/ {{{0x3f487da8, 0x0c8d2d81} },
+/**/ {{0x3be2f6ae, 0xd68c0614} },},
+/**/ {{{0x3f48fd8f, 0x51556b70} },
+/**/ {{0xbbd0f4f2, 0xe08fd201} },},
+/**/ {{{0x3f497d76, 0x164f9abc} },
+/**/ {{0x3b5296b7, 0xa871af60} },},
+/**/ {{{0x3f49fd5c, 0x5b7cbace} },
+/**/ {{0x3beb6ed4, 0x9f17d42d} },},
+/**/ {{{0x3f4a7d42, 0x20ddcb0d} },
+/**/ {{0xbbcb1149, 0x67c30397} },},
+/**/ {{{0x3f4afd27, 0x6673cada} },
+/**/ {{0x3bd32225, 0x45da594f} },},
+/**/ {{{0x3f4b7d0c, 0x2c3fb996} },
+/**/ {{0xbbb68893, 0x208d4630} },},
+/**/ {{{0x3f4bfcf0, 0x7242969d} },
+/**/ {{0x3bc5db4d, 0x2b3efe1c} },},
+/**/ {{{0x3f4c7cd4, 0x387d6149} },
+/**/ {{0x3be46eff, 0xed57d98a} },},
+/**/ {{{0x3f4cfcb7, 0x7ef118f1} },
+/**/ {{0x3becc554, 0x06f300fb} },},
+/**/ {{{0x3f4d7c9a, 0x459ebce9} },
+/**/ {{0x3be1d251, 0x13638eb6} },},
+/**/ {{{0x3f4dfc7c, 0x8c874c82} },
+/**/ {{0xbbe863e9, 0xd57a176f} },},
+/**/ {{{0x3f4e7c5e, 0x53abc708} },
+/**/ {{0x3be2d95c, 0x9528e50d} },},
+/**/ {{{0x3f4efc3f, 0x9b0d2bc8} },
+/**/ {{0x3bd1e8e8, 0xa5f5b8b7} },},
+/**/ {{{0x3f4f7c20, 0x62ac7a09} },
+/**/ {{0x3b5c8123, 0x17802a46} },},
+/**/ {{{0x3f4ffc00, 0xaa8ab110} },
+/**/ {{0xbbe0fecb, 0xeb9b6cdb} },},
+/**/ {{{0x3f503df0, 0x3954680f} },
+/**/ {{0x3bdac89b, 0x1c693678} },},
+/**/ {{{0x3f507ddf, 0xdd83eb3a} },
+/**/ {{0xbbf638f6, 0x0a75ad5f} },},
+/**/ {{{0x3f50bdcf, 0x41d461a5} },
+/**/ {{0x3bfd4bc9, 0x45f05b10} },},
+/**/ {{{0x3f50fdbe, 0x66464aef} },
+/**/ {{0xbbbd0554, 0x6abbf59c} },},
+/**/ {{{0x3f513dad, 0x4ada26b1} },
+/**/ {{0x3be38c65, 0x6036fe6f} },},
+/**/ {{{0x3f517d9b, 0xef907485} },
+/**/ {{0x3bfdc8a1, 0xf158bbc3} },},
+/**/ {{{0x3f51bd8a, 0x5469b404} },
+/**/ {{0xbbdea231, 0x55632e3f} },},
+/**/ {{{0x3f51fd78, 0x796664c3} },
+/**/ {{0xbbe00849, 0x2edb73c2} },},
+/**/ {{{0x3f523d66, 0x5e870657} },
+/**/ {{0x3bfba943, 0x0789343e} },},
+/**/ {{{0x3f527d54, 0x03cc1855} },
+/**/ {{0x3bc5f644, 0xeafafc52} },},
+/**/ {{{0x3f52bd41, 0x69361a4e} },
+/**/ {{0xbbf2f743, 0xa4a6e79f} },},
+/**/ {{{0x3f52fd2e, 0x8ec58bd2} },
+/**/ {{0xbbd4f786, 0x5ceb1abf} },},
+/**/ {{{0x3f533d1b, 0x747aec71} },
+/**/ {{0xbbf369e3, 0x49dc497d} },},
+/**/ {{{0x3f537d08, 0x1a56bbb8} },
+/**/ {{0xbbfc5e6f, 0x3726b14a} },},
+/**/ {{{0x3f53bcf4, 0x80597933} },
+/**/ {{0xbbfe8b82, 0x808f75a7} },},
+/**/ {{{0x3f53fce0, 0xa683a46c} },
+/**/ {{0x3be02719, 0x9cd06ae6} },},
+/**/ {{{0x3f543ccc, 0x8cd5bced} },
+/**/ {{0x3bf9f98d, 0x758f80f8} },},
+/**/ {{{0x3f547cb8, 0x3350423e} },
+/**/ {{0xbbd79c3d, 0x48401f45} },},
+/**/ {{{0x3f54bca3, 0x99f3b3e4} },
+/**/ {{0xbbf422b8, 0x2fba8948} },},
+/**/ {{{0x3f54fc8e, 0xc0c09163} },
+/**/ {{0x3bf32cc1, 0xf4044be8} },},
+/**/ {{{0x3f553c79, 0xa7b75a40} },
+/**/ {{0xbbe72cac, 0xf2249008} },},
+/**/ {{{0x3f557c64, 0x4ed88dfb} },
+/**/ {{0xbbe7183c, 0x459a204f} },},
+/**/ {{{0x3f55bc4e, 0xb624ac14} },
+/**/ {{0x3bf8aa64, 0xba26d3d7} },},
+/**/ {{{0x3f55fc38, 0xdd9c340b} },
+/**/ {{0x3bdbb2ff, 0x45fa193c} },},
+/**/ {{{0x3f563c22, 0xc53fa55c} },
+/**/ {{0x3bd67249, 0x0484397b} },},
+/**/ {{{0x3f567c0c, 0x6d0f7f83} },
+/**/ {{0xbbd183d7, 0xf1e73188} },},
+/**/ {{{0x3f56bbf5, 0xd50c41fa} },
+/**/ {{0xbbef433d, 0x4ab68187} },},
+/**/ {{{0x3f56fbde, 0xfd366c39} },
+/**/ {{0x3be796b8, 0x66e09e58} },},
+/**/ {{{0x3f573bc7, 0xe58e7db8} },
+/**/ {{0x3bf65ec5, 0x81e6e7e6} },},
+/**/ {{{0x3f577bb0, 0x8e14f5ed} },
+/**/ {{0xbbdb944d, 0xa9463a9c} },},
+/**/ {{{0x3f57bb98, 0xf6ca544b} },
+/**/ {{0xbbc396ec, 0xc5eda344} },},
+/**/ {{{0x3f57fb81, 0x1faf1845} },
+/**/ {{0x3beb9e6d, 0xbb624f97} },},
+/**/ {{{0x3f583b69, 0x08c3c14d} },
+/**/ {{0xbbe6ee13, 0xe6295bf2} },},
+/**/ {{{0x3f587b50, 0xb208ced1} },
+/**/ {{0x3bfcf1a5, 0x6ca19875} },},
+/**/ {{{0x3f58bb38, 0x1b7ec041} },
+/**/ {{0x3bf2d181, 0x07b4fc7e} },},
+/**/ {{{0x3f58fb1f, 0x45261509} },
+/**/ {{0x3bc419c5, 0x21bad336} },},
+/**/ {{{0x3f593b06, 0x2eff4c94} },
+/**/ {{0xbbdc2a4c, 0x700b305b} },},
+/**/ {{{0x3f597aec, 0xd90ae64c} },
+/**/ {{0xbbfc53d3, 0xa23f359c} },},
+/**/ {{{0x3f59bad3, 0x43496198} },
+/**/ {{0x3bf0c270, 0xaed6b50f} },},
+/**/ {{{0x3f59fab9, 0x6dbb3de1} },
+/**/ {{0xbbf11464, 0x7a8be031} },},
+/**/ {{{0x3f5a3a9f, 0x5860fa8a} },
+/**/ {{0x3beae9e7, 0x470dbe32} },},
+/**/ {{{0x3f5a7a85, 0x033b16f8} },
+/**/ {{0x3bfc4721, 0xda1f8579} },},
+/**/ {{{0x3f5aba6a, 0x6e4a128e} },
+/**/ {{0xbbf41852, 0x029258ce} },},
+/**/ {{{0x3f5afa4f, 0x998e6cab} },
+/**/ {{0xbbf28584, 0x2eb18782} },},
+/**/ {{{0x3f5b3a34, 0x8508a4af} },
+/**/ {{0xbbea7970, 0x23241a2c} },},
+/**/ {{{0x3f5b7a19, 0x30b939f8} },
+/**/ {{0xbbf1d8db, 0x600551b6} },},
+/**/ {{{0x3f5bb9fd, 0x9ca0abe2} },
+/**/ {{0xbbeaa412, 0x8c26cc71} },},
+/**/ {{{0x3f5bf9e1, 0xc8bf79c8} },
+/**/ {{0xbbe7f81b, 0x30427cfc} },},
+/**/ {{{0x3f5c39c5, 0xb5162303} },
+/**/ {{0x3bd9ec5f, 0xd1f134e1} },},
+/**/ {{{0x3f5c79a9, 0x61a526eb} },
+/**/ {{0x3bff0cb0, 0x8980e47d} },},
+/**/ {{{0x3f5cb98c, 0xce6d04d7} },
+/**/ {{0x3bf35aca, 0xe84ca4e2} },},
+/**/ {{{0x3f5cf96f, 0xfb6e3c1b} },
+/**/ {{0x3bf9b1b8, 0x1b0bd69f} },},
+/**/ {{{0x3f5d3952, 0xe8a94c0b} },
+/**/ {{0x3be21310, 0x3ce51832} },},
+/**/ {{{0x3f5d7935, 0x961eb3f8} },
+/**/ {{0x3bf90786, 0x840c58ce} },},
+/**/ {{{0x3f5db918, 0x03cef334} },
+/**/ {{0xbbfe0048, 0xf2dfb3f4} },},
+/**/ {{{0x3f5df8fa, 0x31ba890b} },
+/**/ {{0x3bfcf652, 0x3e295bec} },},
+/**/ {{{0x3f5e38dc, 0x1fe1f4ce} },
+/**/ {{0xbbfc5ebe, 0x151c9300} },},
+/**/ {{{0x3f5e78bd, 0xce45b5c6} },
+/**/ {{0xbbef2cc4, 0x8a25b9c7} },},
+/**/ {{{0x3f5eb89f, 0x3ce64b3e} },
+/**/ {{0x3bfe6d27, 0xa6fea7bd} },},
+/**/ {{{0x3f5ef880, 0x6bc43481} },
+/**/ {{0xbbf68037, 0x914a6dab} },},
+/**/ {{{0x3f5f3861, 0x5adff0d4} },
+/**/ {{0xbbf1d2f3, 0xf909e0e6} },},
+/**/ {{{0x3f5f7842, 0x0a39ff7e} },
+/**/ {{0xbbf64661, 0xff1e1f71} },},
+/**/ {{{0x3f5fb822, 0x79d2dfc3} },
+/**/ {{0xbbd76ce8, 0x5a6f9e9a} },},
+/**/ {{{0x3f5ff802, 0xa9ab10e6} },
+/**/ {{0x3bfe29e3, 0xa153e3b2} },},
+/**/ {{{0x3f601bf1, 0x4ce18915} },
+/**/ {{0xbbe57c28, 0xa3a73044} },},
+/**/ {{{0x3f603be1, 0x250db166} },
+/**/ {{0x3c0fd271, 0xc1ad9590} },},
+/**/ {{{0x3f605bd0, 0xdd5a4107} },
+/**/ {{0x3bfe4b5d, 0xc424c676} },},
+/**/ {{{0x3f607bc0, 0x75c77796} },
+/**/ {{0xbc068804, 0xc0eff1ba} },},
+/**/ {{{0x3f609baf, 0xee5594b0} },
+/**/ {{0xbc0ff798, 0x51dbded5} },},
+/**/ {{{0x3f60bb9f, 0x4704d7f2} },
+/**/ {{0xbbf70ef4, 0x2d5aba70} },},
+/**/ {{{0x3f60db8e, 0x7fd580f9} },
+/**/ {{0xbbeccb65, 0x7ae804b5} },},
+/**/ {{{0x3f60fb7d, 0x98c7cf60} },
+/**/ {{0x3bfede2f, 0x1775134d} },},
+/**/ {{{0x3f611b6c, 0x91dc02c3} },
+/**/ {{0xbc04d41e, 0x91ca4a67} },},
+/**/ {{{0x3f613b5b, 0x6b125aba} },
+/**/ {{0x3bfe6d0c, 0x4a12201d} },},
+/**/ {{{0x3f615b4a, 0x246b16e0} },
+/**/ {{0x3bfe507d, 0x4d4238d3} },},
+/**/ {{{0x3f617b38, 0xbde676cd} },
+/**/ {{0x3bfe0272, 0x0640462a} },},
+/**/ {{{0x3f619b27, 0x3784ba19} },
+/**/ {{0x3bd94ab3, 0x02285659} },},
+/**/ {{{0x3f61bb15, 0x9146205b} },
+/**/ {{0xbbff1e2e, 0x1cc35b7b} },},
+/**/ {{{0x3f61db03, 0xcb2ae929} },
+/**/ {{0xbc03ee8e, 0x12f6bf8d} },},
+/**/ {{{0x3f61faf1, 0xe5335418} },
+/**/ {{0x3c0bae5f, 0x7b7d619b} },},
+/**/ {{{0x3f621adf, 0xdf5fa0bf} },
+/**/ {{0xbbf5546a, 0xb3b731b0} },},
+/**/ {{{0x3f623acd, 0xb9b00eb0} },
+/**/ {{0xbbafb2b0, 0x105fd253} },},
+/**/ {{{0x3f625abb, 0x7424dd7f} },
+/**/ {{0x3c011647, 0xca53444b} },},
+/**/ {{{0x3f627aa9, 0x0ebe4cbf} },
+/**/ {{0x3c01678f, 0x592f3be8} },},
+/**/ {{{0x3f629a96, 0x897c9c02} },
+/**/ {{0xbbef2b12, 0x4347451d} },},
+/**/ {{{0x3f62ba83, 0xe4600ad8} },
+/**/ {{0x3bfb5bb7, 0xb2a477bc} },},
+/**/ {{{0x3f62da71, 0x1f68d8d3} },
+/**/ {{0xbc0590e1, 0x7a5822e4} },},
+/**/ {{{0x3f62fa5e, 0x3a974581} },
+/**/ {{0xbbf0f2e5, 0x53123101} },},
+/**/ {{{0x3f631a4b, 0x35eb9072} },
+/**/ {{0xbc018db4, 0x0e3f5fde} },},
+/**/ {{{0x3f633a38, 0x1165f933} },
+/**/ {{0x3c0921d5, 0x8d0afb38} },},
+/**/ {{{0x3f635a24, 0xcd06bf53} },
+/**/ {{0x3c01f6ba, 0xb5791b80} },},
+/**/ {{{0x3f637a11, 0x68ce225e} },
+/**/ {{0x3bde2af8, 0xa1894236} },},
+/**/ {{{0x3f6399fd, 0xe4bc61e0} },
+/**/ {{0xbc062a48, 0xd0f06ff3} },},
+/**/ {{{0x3f63b9ea, 0x40d1bd63} },
+/**/ {{0x3bffc80c, 0x4b4f9c11} },},
+/**/ {{{0x3f63d9d6, 0x7d0e7473} },
+/**/ {{0x3c02219b, 0x6a92c891} },},
+/**/ {{{0x3f63f9c2, 0x9972c699} },
+/**/ {{0x3c0d3590, 0x790ade9e} },},
+/**/ {{{0x3f6419ae, 0x95fef35f} },
+/**/ {{0xbc01c279, 0x792a458c} },},
+/**/ {{{0x3f64399a, 0x72b33a4b} },
+/**/ {{0x3c02ce64, 0x327bffae} },},
+/**/ {{{0x3f645986, 0x2f8fdae7} },
+/**/ {{0xbc070aec, 0xd231155c} },},
+/**/ {{{0x3f647971, 0xcc9514b7} },
+/**/ {{0x3c0f373d, 0xe4bbf776} },},
+/**/ {{{0x3f64995d, 0x49c32744} },
+/**/ {{0xbbf6d7e5, 0xbf22b2a7} },},
+/**/ {{{0x3f64b948, 0xa71a5211} },
+/**/ {{0xbbedec69, 0x64fe2936} },},
+/**/ {{{0x3f64d933, 0xe49ad4a3} },
+/**/ {{0x3bf5fc4b, 0xabee4257} },},
+/**/ {{{0x3f64f91f, 0x0244ee7e} },
+/**/ {{0x3c0c6fe3, 0x3cd1474f} },},
+/**/ {{{0x3f65190a, 0x0018df26} },
+/**/ {{0xbc023957, 0xd11e7fa5} },},
+/**/ {{{0x3f6538f4, 0xde16e61b} },
+/**/ {{0x3c006c31, 0x55380346} },},
+/**/ {{{0x3f6558df, 0x9c3f42e1} },
+/**/ {{0xbc09b7d4, 0xc4a5134c} },},
+/**/ {{{0x3f6578ca, 0x3a9234f7} },
+/**/ {{0xbc0e3f10, 0x2772c19c} },},
+/**/ {{{0x3f6598b4, 0xb90ffbdd} },
+/**/ {{0x3be6f110, 0x5592b468} },},
+/**/ {{{0x3f65b89f, 0x17b8d714} },
+/**/ {{0xbc0a5fea, 0xb251ace2} },},
+/**/ {{{0x3f65d889, 0x568d0619} },
+/**/ {{0xbc0aacc9, 0x315da285} },},
+/**/ {{{0x3f65f873, 0x758cc86a} },
+/**/ {{0xbbeb0782, 0xba64d81a} },},
+/**/ {{{0x3f66185d, 0x74b85d85} },
+/**/ {{0xbc09b459, 0x8e1eb3fa} },},
+/**/ {{{0x3f663847, 0x541004e5} },
+/**/ {{0x3bce9c22, 0x1d86e863} },},
+/**/ {{{0x3f665831, 0x1393fe07} },
+/**/ {{0xbbfbeb77, 0xcf37ee90} },},
+/**/ {{{0x3f66781a, 0xb3448865} },
+/**/ {{0xbc02dc68, 0xc252e3c9} },},
+/**/ {{{0x3f669804, 0x3321e379} },
+/**/ {{0xbbe73a0b, 0xb40b3741} },},
+ };
+
+#else
+#ifdef LITTLE_ENDI
+ static const number
+ Iu[182] = { /* 1/ui */
+/**/ {{0xd1537290, 0x3ff6a13c} },
+/**/ {{0x16816817, 0x3ff68168} },
+/**/ {{0x6a5122f9, 0x3ff661ec} },
+/**/ {{0x590b2164, 0x3ff642c8} },
+/**/ {{0x77016240, 0x3ff623fa} },
+/**/ {{0x60581606, 0x3ff60581} },
+/**/ {{0xb8d015e7, 0x3ff5e75b} },
+/**/ {{0x2b931057, 0x3ff5c988} },
+/**/ {{0x6b015ac0, 0x3ff5ac05} },
+/**/ {{0x308158ed, 0x3ff58ed2} },
+/**/ {{0x3c506b3a, 0x3ff571ed} },
+/**/ {{0x55555555, 0x3ff55555} },
+/**/ {{0x48f40feb, 0x3ff53909} },
+/**/ {{0xeae2f815, 0x3ff51d07} },
+/**/ {{0x15015015, 0x3ff50150} },
+/**/ {{0xa72f0539, 0x3ff4e5e0} },
+/**/ {{0x8725af6e, 0x3ff4cab8} },
+/**/ {{0xa052bf5b, 0x3ff4afd6} },
+/**/ {{0xe3b2d067, 0x3ff49539} },
+/**/ {{0x47ae147b, 0x3ff47ae1} },
+/**/ {{0xc7f5cf9a, 0x3ff460cb} },
+/**/ {{0x6562d9fb, 0x3ff446f8} },
+/**/ {{0x25d51f87, 0x3ff42d66} },
+/**/ {{0x14141414, 0x3ff41414} },
+/**/ {{0x3fb013fb, 0x3ff3fb01} },
+/**/ {{0xbce4a902, 0x3ff3e22c} },
+/**/ {{0xa47babe7, 0x3ff3c995} },
+/**/ {{0x13b13b14, 0x3ff3b13b} },
+/**/ {{0x2c187f63, 0x3ff3991c} },
+/**/ {{0x13813814, 0x3ff38138} },
+/**/ {{0xf3de0748, 0x3ff3698d} },
+/**/ {{0xfb2b78c1, 0x3ff3521c} },
+/**/ {{0x5b57bcb2, 0x3ff33ae4} },
+/**/ {{0x4a2b10bf, 0x3ff323e3} },
+/**/ {{0x0130d190, 0x3ff30d19} },
+/**/ {{0xbda12f68, 0x3ff2f684} },
+/**/ {{0xc04b8097, 0x3ff2e025} },
+/**/ {{0x4d812ca0, 0x3ff2c9fb} },
+/**/ {{0xad012b40, 0x3ff2b404} },
+/**/ {{0x29e4129e, 0x3ff29e41} },
+/**/ {{0x1288b013, 0x3ff288b0} },
+/**/ {{0xb8812735, 0x3ff27350} },
+/**/ {{0x708092f1, 0x3ff25e22} },
+/**/ {{0x92492492, 0x3ff24924} },
+/**/ {{0x789abcdf, 0x3ff23456} },
+/**/ {{0x8121fb78, 0x3ff21fb7} },
+/**/ {{0x0c67c0d9, 0x3ff20b47} },
+/**/ {{0x7dc11f70, 0x3ff1f704} },
+/**/ {{0x3b3fb874, 0x3ff1e2ef} },
+/**/ {{0xada2811d, 0x3ff1cf06} },
+/**/ {{0x4046ed29, 0x3ff1bb4a} },
+/**/ {{0x611a7b96, 0x3ff1a7b9} },
+/**/ {{0x808ca29c, 0x3ff19453} },
+/**/ {{0x11811812, 0x3ff18118} },
+/**/ {{0x89427379, 0x3ff16e06} },
+/**/ {{0x5f75270d, 0x3ff15b1e} },
+/**/ {{0x0e0acd3b, 0x3ff1485f} },
+/**/ {{0x1135c811, 0x3ff135c8} },
+/**/ {{0xe75d3033, 0x3ff12358} },
+/**/ {{0x11111111, 0x3ff11111} },
+/**/ {{0x10fef011, 0x3ff0fef0} },
+/**/ {{0x6be69c90, 0x3ff0ecf5} },
+/**/ {{0xa88f4696, 0x3ff0db20} },
+/**/ {{0x4fbcda3b, 0x3ff0c971} },
+/**/ {{0xec259dc8, 0x3ff0b7e6} },
+/**/ {{0x0a6810a7, 0x3ff0a681} },
+/**/ {{0x39010954, 0x3ff0953f} },
+/**/ {{0x08421084, 0x3ff08421} },
+/**/ {{0x0a47f7c6, 0x3ff07326} },
+/**/ {{0xd2f1a9fc, 0x3ff0624d} },
+/**/ {{0xf7d73404, 0x3ff05197} },
+/**/ {{0x10410410, 0x3ff04104} },
+/**/ {{0xb51f5e1a, 0x3ff03091} },
+/**/ {{0x81020408, 0x3ff02040} },
+/**/ {{0x10101010, 0x3ff01010} },
+/**/ {{0x00000000, 0x3ff00000} },
+/**/ {{0xe01fe020, 0x3fefe01f} },
+/**/ {{0x01fc07f0, 0x3fefc07f} },
+/**/ {{0xaa01fa12, 0x3fefa11c} },
+/**/ {{0x1f81f820, 0x3fef81f8} },
+/**/ {{0xaca0dbb5, 0x3fef6310} },
+/**/ {{0x9e4a4271, 0x3fef4465} },
+/**/ {{0x44230ab5, 0x3fef25f6} },
+/**/ {{0xf07c1f08, 0x3fef07c1} },
+/**/ {{0xf8458e02, 0x3feee9c7} },
+/**/ {{0xb301ecc0, 0x3feecc07} },
+/**/ {{0x7aba01eb, 0x3feeae80} },
+/**/ {{0xabf0b767, 0x3fee9131} },
+/**/ {{0xa59750e4, 0x3fee741a} },
+/**/ {{0xc901e574, 0x3fee573a} },
+/**/ {{0x79dc1a73, 0x3fee3a91} },
+/**/ {{0x1e1e1e1e, 0x3fee1e1e} },
+/**/ {{0x1e01e01e, 0x3fee01e0} },
+/**/ {{0xe3f8868a, 0x3fede5d6} },
+/**/ {{0xdca01dca, 0x3fedca01} },
+/**/ {{0x76b981db, 0x3fedae60} },
+/**/ {{0x231e7f8a, 0x3fed92f2} },
+/**/ {{0x54b82c34, 0x3fed77b6} },
+/**/ {{0x807572b2, 0x3fed5cac} },
+/**/ {{0x1d41d41d, 0x3fed41d4} },
+/**/ {{0xa3fc5b1a, 0x3fed272c} },
+/**/ {{0x8f6ec074, 0x3fed0cb5} },
+/**/ {{0x5c44bfc6, 0x3fecf26e} },
+/**/ {{0x89039b0b, 0x3fecd856} },
+/**/ {{0x9601cbe7, 0x3fecbe6d} },
+/**/ {{0x055ee191, 0x3feca4b3} },
+/**/ {{0x5afb8a42, 0x3fec8b26} },
+/**/ {{0x1c71c71c, 0x3fec71c7} },
+/**/ {{0xd10d4986, 0x3fec5894} },
+/**/ {{0x01c3f8f0, 0x3fec3f8f} },
+/**/ {{0x392ea01c, 0x3fec26b5} },
+/**/ {{0x0381c0e0, 0x3fec0e07} },
+/**/ {{0xee868d8b, 0x3febf583} },
+/**/ {{0x899406f7, 0x3febdd2b} },
+/**/ {{0x65883e7b, 0x3febc4fd} },
+/**/ {{0x14c1bad0, 0x3febacf9} },
+/**/ {{0x2b18ff23, 0x3feb951e} },
+/**/ {{0x3dda338b, 0x3feb7d6c} },
+/**/ {{0xe3beee05, 0x3feb65e2} },
+/**/ {{0xb4e81b4f, 0x3feb4e81} },
+/**/ {{0x4ad806ce, 0x3feb3748} },
+/**/ {{0x406c80d9, 0x3feb2036} },
+/**/ {{0x31d922a4, 0x3feb094b} },
+/**/ {{0xbca1af28, 0x3feaf286} },
+/**/ {{0x7f94905e, 0x3feadbe8} },
+/**/ {{0x1ac5701b, 0x3feac570} },
+/**/ {{0x2f87ebfd, 0x3feaaf1d} },
+/**/ {{0x606a63be, 0x3fea98ef} },
+/**/ {{0x5130e159, 0x3fea82e6} },
+/**/ {{0xa6d01a6d, 0x3fea6d01} },
+/**/ {{0x07688a4a, 0x3fea5741} },
+/**/ {{0x1a41a41a, 0x3fea41a4} },
+/**/ {{0x87c51ca0, 0x3fea2c2a} },
+/**/ {{0xf97a4b02, 0x3fea16d3} },
+/**/ {{0x1a01a01a, 0x3fea01a0} },
+/**/ {{0x951033d9, 0x3fe9ec8e} },
+/**/ {{0x176b682d, 0x3fe9d79f} },
+/**/ {{0x4ee4a102, 0x3fe9c2d1} },
+/**/ {{0xea5510da, 0x3fe9ae24} },
+/**/ {{0x9999999a, 0x3fe99999} },
+/**/ {{0x0d8ec0ff, 0x3fe9852f} },
+/**/ {{0xf80cb872, 0x3fe970e4} },
+/**/ {{0x0be377ae, 0x3fe95cbb} },
+/**/ {{0xfcd6e9e0, 0x3fe948b0} },
+/**/ {{0x7f9b2ce6, 0x3fe934c6} },
+/**/ {{0x49d0e229, 0x3fe920fb} },
+/**/ {{0x120190d5, 0x3fe90d4f} },
+/**/ {{0x8f9c18fa, 0x3fe8f9c1} },
+/**/ {{0x7af1373f, 0x3fe8e652} },
+/**/ {{0x8d3018d3, 0x3fe8d301} },
+/**/ {{0x8062ff3a, 0x3fe8bfce} },
+/**/ {{0x0f6bf3aa, 0x3fe8acb9} },
+/**/ {{0xf601899c, 0x3fe899c0} },
+/**/ {{0xf0abb04a, 0x3fe886e5} },
+/**/ {{0xbcc092b9, 0x3fe87427} },
+/**/ {{0x18618618, 0x3fe86186} },
+/**/ {{0xc2780614, 0x3fe84f00} },
+/**/ {{0x7ab2bedd, 0x3fe83c97} },
+/**/ {{0x0182a4a0, 0x3fe82a4a} },
+/**/ {{0x18181818, 0x3fe81818} },
+/**/ {{0x80601806, 0x3fe80601} },
+/**/ {{0xfd017f40, 0x3fe7f405} },
+/**/ {{0x515a4f1d, 0x3fe7e225} },
+/**/ {{0x417d05f4, 0x3fe7d05f} },
+/**/ {{0x922e017c, 0x3fe7beb3} },
+/**/ {{0x08e0ecc3, 0x3fe7ad22} },
+/**/ {{0x6bb6398b, 0x3fe79baa} },
+/**/ {{0x8178a4c8, 0x3fe78a4c} },
+/**/ {{0x119ac60d, 0x3fe77908} },
+/**/ {{0xe434a9b1, 0x3fe767dc} },
+/**/ {{0xc201756d, 0x3fe756ca} },
+/**/ {{0x745d1746, 0x3fe745d1} },
+/**/ {{0xc541fe8d, 0x3fe734f0} },
+/**/ {{0x7f46debc, 0x3fe72428} },
+/**/ {{0x6d9c7c09, 0x3fe71378} },
+/**/ {{0x5c0b8170, 0x3fe702e0} },
+/**/ {{0x16f26017, 0x3fe6f260} },
+/**/ {{0x6b4337c7, 0x3fe6e1f7} },
+/**/ {{0x2681c861, 0x3fe6d1a6} },
+/**/ {{0x16c16c17, 0x3fe6c16c} },
+/**/ {{0x0aa31a3d, 0x3fe6b149} },
+/**/ {{0xd1537290, 0x3fe6a13c} },
+ };
+
+ static const number
+ Iv[362] = { /* 1/vj */
+/**/ {{0xee93bfe3, 0x3ff00b47} },
+/**/ {{0xd80c106f, 0x3ff00b37} },
+/**/ {{0xc1a4a47a, 0x3ff00b27} },
+/**/ {{0xab5d7ba2, 0x3ff00b17} },
+/**/ {{0x95369587, 0x3ff00b07} },
+/**/ {{0x7f2ff1c6, 0x3ff00af7} },
+/**/ {{0x69499000, 0x3ff00ae7} },
+/**/ {{0x53836fd3, 0x3ff00ad7} },
+/**/ {{0x3ddd90dd, 0x3ff00ac7} },
+/**/ {{0x2857f2bf, 0x3ff00ab7} },
+/**/ {{0x12f29517, 0x3ff00aa7} },
+/**/ {{0xfdad7784, 0x3ff00a96} },
+/**/ {{0xe88899a5, 0x3ff00a86} },
+/**/ {{0xd383fb19, 0x3ff00a76} },
+/**/ {{0xbe9f9b7f, 0x3ff00a66} },
+/**/ {{0xa9db7a76, 0x3ff00a56} },
+/**/ {{0x9537979d, 0x3ff00a46} },
+/**/ {{0x80b3f293, 0x3ff00a36} },
+/**/ {{0x6c508af8, 0x3ff00a26} },
+/**/ {{0x580d606a, 0x3ff00a16} },
+/**/ {{0x43ea7288, 0x3ff00a06} },
+/**/ {{0x2fe7c0f1, 0x3ff009f6} },
+/**/ {{0x1c054b44, 0x3ff009e6} },
+/**/ {{0x08431122, 0x3ff009d6} },
+/**/ {{0xf4a11227, 0x3ff009c5} },
+/**/ {{0xe11f4df4, 0x3ff009b5} },
+/**/ {{0xcdbdc428, 0x3ff009a5} },
+/**/ {{0xba7c7462, 0x3ff00995} },
+/**/ {{0xa75b5e40, 0x3ff00985} },
+/**/ {{0x945a8162, 0x3ff00975} },
+/**/ {{0x8179dd68, 0x3ff00965} },
+/**/ {{0x6eb971ef, 0x3ff00955} },
+/**/ {{0x5c193e98, 0x3ff00945} },
+/**/ {{0x49994301, 0x3ff00935} },
+/**/ {{0x37397eca, 0x3ff00925} },
+/**/ {{0x24f9f192, 0x3ff00915} },
+/**/ {{0x12da9af7, 0x3ff00905} },
+/**/ {{0x00db7a99, 0x3ff008f5} },
+/**/ {{0xeefc9018, 0x3ff008e4} },
+/**/ {{0xdd3ddb12, 0x3ff008d4} },
+/**/ {{0xcb9f5b26, 0x3ff008c4} },
+/**/ {{0xba210ff4, 0x3ff008b4} },
+/**/ {{0xa8c2f91a, 0x3ff008a4} },
+/**/ {{0x97851639, 0x3ff00894} },
+/**/ {{0x866766ef, 0x3ff00884} },
+/**/ {{0x7569eadb, 0x3ff00874} },
+/**/ {{0x648ca19d, 0x3ff00864} },
+/**/ {{0x53cf8ad3, 0x3ff00854} },
+/**/ {{0x4332a61e, 0x3ff00844} },
+/**/ {{0x32b5f31b, 0x3ff00834} },
+/**/ {{0x2259716c, 0x3ff00824} },
+/**/ {{0x121d20ad, 0x3ff00814} },
+/**/ {{0x02010080, 0x3ff00804} },
+/**/ {{0xf2051083, 0x3ff007f3} },
+/**/ {{0xe2295056, 0x3ff007e3} },
+/**/ {{0xd26dbf97, 0x3ff007d3} },
+/**/ {{0xc2d25de5, 0x3ff007c3} },
+/**/ {{0xb3572ae2, 0x3ff007b3} },
+/**/ {{0xa3fc262a, 0x3ff007a3} },
+/**/ {{0x94c14f5f, 0x3ff00793} },
+/**/ {{0x85a6a61e, 0x3ff00783} },
+/**/ {{0x76ac2a08, 0x3ff00773} },
+/**/ {{0x67d1dabb, 0x3ff00763} },
+/**/ {{0x5917b7d7, 0x3ff00753} },
+/**/ {{0x4a7dc0fb, 0x3ff00743} },
+/**/ {{0x3c03f5c7, 0x3ff00733} },
+/**/ {{0x2daa55da, 0x3ff00723} },
+/**/ {{0x1f70e0d3, 0x3ff00713} },
+/**/ {{0x11579652, 0x3ff00703} },
+/**/ {{0x035e75f5, 0x3ff006f3} },
+/**/ {{0xf5857f5d, 0x3ff006e2} },
+/**/ {{0xe7ccb228, 0x3ff006d2} },
+/**/ {{0xda340df6, 0x3ff006c2} },
+/**/ {{0xccbb9266, 0x3ff006b2} },
+/**/ {{0xbf633f18, 0x3ff006a2} },
+/**/ {{0xb22b13ab, 0x3ff00692} },
+/**/ {{0xa5130fbe, 0x3ff00682} },
+/**/ {{0x981b32f1, 0x3ff00672} },
+/**/ {{0x8b437ce4, 0x3ff00662} },
+/**/ {{0x7e8bed35, 0x3ff00652} },
+/**/ {{0x71f48383, 0x3ff00642} },
+/**/ {{0x657d3f70, 0x3ff00632} },
+/**/ {{0x59262098, 0x3ff00622} },
+/**/ {{0x4cef269e, 0x3ff00612} },
+/**/ {{0x40d8511e, 0x3ff00602} },
+/**/ {{0x34e19fba, 0x3ff005f2} },
+/**/ {{0x290b1211, 0x3ff005e2} },
+/**/ {{0x1d54a7c1, 0x3ff005d2} },
+/**/ {{0x11be606b, 0x3ff005c2} },
+/**/ {{0x06483bad, 0x3ff005b2} },
+/**/ {{0xfaf23928, 0x3ff005a1} },
+/**/ {{0xefbc587b, 0x3ff00591} },
+/**/ {{0xe4a69945, 0x3ff00581} },
+/**/ {{0xd9b0fb25, 0x3ff00571} },
+/**/ {{0xcedb7dbc, 0x3ff00561} },
+/**/ {{0xc42620a9, 0x3ff00551} },
+/**/ {{0xb990e38b, 0x3ff00541} },
+/**/ {{0xaf1bc601, 0x3ff00531} },
+/**/ {{0xa4c6c7ac, 0x3ff00521} },
+/**/ {{0x9a91e82a, 0x3ff00511} },
+/**/ {{0x907d271c, 0x3ff00501} },
+/**/ {{0x86888421, 0x3ff004f1} },
+/**/ {{0x7cb3fed8, 0x3ff004e1} },
+/**/ {{0x72ff96e0, 0x3ff004d1} },
+/**/ {{0x696b4bdb, 0x3ff004c1} },
+/**/ {{0x5ff71d66, 0x3ff004b1} },
+/**/ {{0x56a30b21, 0x3ff004a1} },
+/**/ {{0x4d6f14ad, 0x3ff00491} },
+/**/ {{0x445b39a8, 0x3ff00481} },
+/**/ {{0x3b6779b3, 0x3ff00471} },
+/**/ {{0x3293d46c, 0x3ff00461} },
+/**/ {{0x29e04974, 0x3ff00451} },
+/**/ {{0x214cd869, 0x3ff00441} },
+/**/ {{0x18d980ed, 0x3ff00431} },
+/**/ {{0x1086429d, 0x3ff00421} },
+/**/ {{0x08531d1a, 0x3ff00411} },
+/**/ {{0x00401004, 0x3ff00401} },
+/**/ {{0xf84d1afa, 0x3ff003f0} },
+/**/ {{0xf07a3d9b, 0x3ff003e0} },
+/**/ {{0xe8c77787, 0x3ff003d0} },
+/**/ {{0xe134c85f, 0x3ff003c0} },
+/**/ {{0xd9c22fc1, 0x3ff003b0} },
+/**/ {{0xd26fad4d, 0x3ff003a0} },
+/**/ {{0xcb3d40a3, 0x3ff00390} },
+/**/ {{0xc42ae963, 0x3ff00380} },
+/**/ {{0xbd38a72c, 0x3ff00370} },
+/**/ {{0xb666799e, 0x3ff00360} },
+/**/ {{0xafb46058, 0x3ff00350} },
+/**/ {{0xa9225afa, 0x3ff00340} },
+/**/ {{0xa2b06925, 0x3ff00330} },
+/**/ {{0x9c5e8a77, 0x3ff00320} },
+/**/ {{0x962cbe90, 0x3ff00310} },
+/**/ {{0x901b0511, 0x3ff00300} },
+/**/ {{0x8a295d98, 0x3ff002f0} },
+/**/ {{0x8457c7c6, 0x3ff002e0} },
+/**/ {{0x7ea6433a, 0x3ff002d0} },
+/**/ {{0x7914cf94, 0x3ff002c0} },
+/**/ {{0x73a36c73, 0x3ff002b0} },
+/**/ {{0x6e521978, 0x3ff002a0} },
+/**/ {{0x6920d642, 0x3ff00290} },
+/**/ {{0x640fa271, 0x3ff00280} },
+/**/ {{0x5f1e7da5, 0x3ff00270} },
+/**/ {{0x5a4d677d, 0x3ff00260} },
+/**/ {{0x559c5f9a, 0x3ff00250} },
+/**/ {{0x510b659a, 0x3ff00240} },
+/**/ {{0x4c9a791f, 0x3ff00230} },
+/**/ {{0x484999c6, 0x3ff00220} },
+/**/ {{0x4418c732, 0x3ff00210} },
+/**/ {{0x40080100, 0x3ff00200} },
+/**/ {{0x3c1746d2, 0x3ff001f0} },
+/**/ {{0x38469846, 0x3ff001e0} },
+/**/ {{0x3495f4fd, 0x3ff001d0} },
+/**/ {{0x31055c96, 0x3ff001c0} },
+/**/ {{0x2d94ceb2, 0x3ff001b0} },
+/**/ {{0x2a444af0, 0x3ff001a0} },
+/**/ {{0x2713d0ef, 0x3ff00190} },
+/**/ {{0x24036051, 0x3ff00180} },
+/**/ {{0x2112f8b4, 0x3ff00170} },
+/**/ {{0x1e4299b9, 0x3ff00160} },
+/**/ {{0x1b9242ff, 0x3ff00150} },
+/**/ {{0x1901f427, 0x3ff00140} },
+/**/ {{0x1691acd0, 0x3ff00130} },
+/**/ {{0x14416c9a, 0x3ff00120} },
+/**/ {{0x12113324, 0x3ff00110} },
+/**/ {{0x10010010, 0x3ff00100} },
+/**/ {{0x0e10d2fc, 0x3ff000f0} },
+/**/ {{0x0c40ab89, 0x3ff000e0} },
+/**/ {{0x0a908957, 0x3ff000d0} },
+/**/ {{0x09006c05, 0x3ff000c0} },
+/**/ {{0x07905334, 0x3ff000b0} },
+/**/ {{0x06403e82, 0x3ff000a0} },
+/**/ {{0x05102d92, 0x3ff00090} },
+/**/ {{0x04002001, 0x3ff00080} },
+/**/ {{0x03101571, 0x3ff00070} },
+/**/ {{0x02400d80, 0x3ff00060} },
+/**/ {{0x019007d0, 0x3ff00050} },
+/**/ {{0x01000400, 0x3ff00040} },
+/**/ {{0x009001b0, 0x3ff00030} },
+/**/ {{0x00400080, 0x3ff00020} },
+/**/ {{0x00100010, 0x3ff00010} },
+/**/ {{0x00000000, 0x3ff00000} },
+/**/ {{0x001fffe0, 0x3fefffe0} },
+/**/ {{0x007fff00, 0x3fefffc0} },
+/**/ {{0x011ffca0, 0x3fefffa0} },
+/**/ {{0x01fff800, 0x3fefff80} },
+/**/ {{0x031ff060, 0x3fefff60} },
+/**/ {{0x047fe501, 0x3fefff40} },
+/**/ {{0x061fd521, 0x3fefff20} },
+/**/ {{0x07ffc002, 0x3fefff00} },
+/**/ {{0x0a1fa4e3, 0x3feffee0} },
+/**/ {{0x0c7f8305, 0x3feffec0} },
+/**/ {{0x0f1f59a7, 0x3feffea0} },
+/**/ {{0x11ff280a, 0x3feffe80} },
+/**/ {{0x151eed6e, 0x3feffe60} },
+/**/ {{0x187ea913, 0x3feffe40} },
+/**/ {{0x1c1e5a39, 0x3feffe20} },
+/**/ {{0x1ffe0020, 0x3feffe00} },
+/**/ {{0x241d9a09, 0x3feffde0} },
+/**/ {{0x287d2733, 0x3feffdc0} },
+/**/ {{0x2d1ca6e0, 0x3feffda0} },
+/**/ {{0x31fc184e, 0x3feffd80} },
+/**/ {{0x371b7abf, 0x3feffd60} },
+/**/ {{0x3c7acd72, 0x3feffd40} },
+/**/ {{0x421a0fa9, 0x3feffd20} },
+/**/ {{0x47f940a2, 0x3feffd00} },
+/**/ {{0x4e185f9f, 0x3feffce0} },
+/**/ {{0x54776bdf, 0x3feffcc0} },
+/**/ {{0x5b1664a3, 0x3feffca0} },
+/**/ {{0x61f5492c, 0x3feffc80} },
+/**/ {{0x691418b9, 0x3feffc60} },
+/**/ {{0x7072d28b, 0x3feffc40} },
+/**/ {{0x781175e3, 0x3feffc20} },
+/**/ {{0x7ff00200, 0x3feffc00} },
+/**/ {{0x880e7623, 0x3feffbe0} },
+/**/ {{0x906cd18c, 0x3feffbc0} },
+/**/ {{0x990b137c, 0x3feffba0} },
+/**/ {{0xa1e93b34, 0x3feffb80} },
+/**/ {{0xab0747f3, 0x3feffb60} },
+/**/ {{0xb46538fa, 0x3feffb40} },
+/**/ {{0xbe030d89, 0x3feffb20} },
+/**/ {{0xc7e0c4e1, 0x3feffb00} },
+/**/ {{0xd1fe5e43, 0x3feffae0} },
+/**/ {{0xdc5bd8ee, 0x3feffac0} },
+/**/ {{0xe6f93424, 0x3feffaa0} },
+/**/ {{0xf1d66f25, 0x3feffa80} },
+/**/ {{0xfcf38931, 0x3feffa60} },
+/**/ {{0x08508189, 0x3feffa41} },
+/**/ {{0x13ed576d, 0x3feffa21} },
+/**/ {{0x1fca0a1e, 0x3feffa01} },
+/**/ {{0x2be698dd, 0x3feff9e1} },
+/**/ {{0x384302e9, 0x3feff9c1} },
+/**/ {{0x44df4785, 0x3feff9a1} },
+/**/ {{0x51bb65ef, 0x3feff981} },
+/**/ {{0x5ed75d6a, 0x3feff961} },
+/**/ {{0x6c332d34, 0x3feff941} },
+/**/ {{0x79ced490, 0x3feff921} },
+/**/ {{0x87aa52be, 0x3feff901} },
+/**/ {{0x95c5a6fe, 0x3feff8e1} },
+/**/ {{0xa420d091, 0x3feff8c1} },
+/**/ {{0xb2bbceb7, 0x3feff8a1} },
+/**/ {{0xc196a0b2, 0x3feff881} },
+/**/ {{0xd0b145c2, 0x3feff861} },
+/**/ {{0xe00bbd28, 0x3feff841} },
+/**/ {{0xefa60624, 0x3feff821} },
+/**/ {{0xff801ff8, 0x3feff801} },
+/**/ {{0x0f9a09e3, 0x3feff7e2} },
+/**/ {{0x1ff3c328, 0x3feff7c2} },
+/**/ {{0x308d4b05, 0x3feff7a2} },
+/**/ {{0x4166a0bd, 0x3feff782} },
+/**/ {{0x527fc390, 0x3feff762} },
+/**/ {{0x63d8b2bf, 0x3feff742} },
+/**/ {{0x75716d8b, 0x3feff722} },
+/**/ {{0x8749f334, 0x3feff702} },
+/**/ {{0x996242fb, 0x3feff6e2} },
+/**/ {{0xabba5c21, 0x3feff6c2} },
+/**/ {{0xbe523de8, 0x3feff6a2} },
+/**/ {{0xd129e78f, 0x3feff682} },
+/**/ {{0xe4415858, 0x3feff662} },
+/**/ {{0xf7988f84, 0x3feff642} },
+/**/ {{0x0b2f8c54, 0x3feff623} },
+/**/ {{0x1f064e08, 0x3feff603} },
+/**/ {{0x331cd3e1, 0x3feff5e3} },
+/**/ {{0x47731d21, 0x3feff5c3} },
+/**/ {{0x5c092908, 0x3feff5a3} },
+/**/ {{0x70def6d7, 0x3feff583} },
+/**/ {{0x85f485d0, 0x3feff563} },
+/**/ {{0x9b49d532, 0x3feff543} },
+/**/ {{0xb0dee440, 0x3feff523} },
+/**/ {{0xc6b3b23b, 0x3feff503} },
+/**/ {{0xdcc83e62, 0x3feff4e3} },
+/**/ {{0xf31c87f8, 0x3feff4c3} },
+/**/ {{0x09b08e3d, 0x3feff4a4} },
+/**/ {{0x20845073, 0x3feff484} },
+/**/ {{0x3797cdda, 0x3feff464} },
+/**/ {{0x4eeb05b4, 0x3feff444} },
+/**/ {{0x667df741, 0x3feff424} },
+/**/ {{0x7e50a1c3, 0x3feff404} },
+/**/ {{0x9663047b, 0x3feff3e4} },
+/**/ {{0xaeb51eaa, 0x3feff3c4} },
+/**/ {{0xc746ef91, 0x3feff3a4} },
+/**/ {{0xe0187672, 0x3feff384} },
+/**/ {{0xf929b28d, 0x3feff364} },
+/**/ {{0x127aa323, 0x3feff345} },
+/**/ {{0x2c0b4776, 0x3feff325} },
+/**/ {{0x45db9ec7, 0x3feff305} },
+/**/ {{0x5feba858, 0x3feff2e5} },
+/**/ {{0x7a3b6369, 0x3feff2c5} },
+/**/ {{0x94cacf3b, 0x3feff2a5} },
+/**/ {{0xaf99eb11, 0x3feff285} },
+/**/ {{0xcaa8b62a, 0x3feff265} },
+/**/ {{0xe5f72fc9, 0x3feff245} },
+/**/ {{0x0185572f, 0x3feff226} },
+/**/ {{0x1d532b9d, 0x3feff206} },
+/**/ {{0x3960ac54, 0x3feff1e6} },
+/**/ {{0x55add896, 0x3feff1c6} },
+/**/ {{0x723aafa3, 0x3feff1a6} },
+/**/ {{0x8f0730be, 0x3feff186} },
+/**/ {{0xac135b27, 0x3feff166} },
+/**/ {{0xc95f2e21, 0x3feff146} },
+/**/ {{0xe6eaa8eb, 0x3feff126} },
+/**/ {{0x04b5cac9, 0x3feff107} },
+/**/ {{0x22c092fb, 0x3feff0e7} },
+/**/ {{0x410b00c2, 0x3feff0c7} },
+/**/ {{0x5f951360, 0x3feff0a7} },
+/**/ {{0x7e5eca16, 0x3feff087} },
+/**/ {{0x9d682426, 0x3feff067} },
+/**/ {{0xbcb120d2, 0x3feff047} },
+/**/ {{0xdc39bf5a, 0x3feff027} },
+/**/ {{0xfc01ff00, 0x3feff007} },
+/**/ {{0x1c09df07, 0x3fefefe8} },
+/**/ {{0x3c515eae, 0x3fefefc8} },
+/**/ {{0x5cd87d38, 0x3fefefa8} },
+/**/ {{0x7d9f39e6, 0x3fefef88} },
+/**/ {{0x9ea593fa, 0x3fefef68} },
+/**/ {{0xbfeb8ab5, 0x3fefef48} },
+/**/ {{0xe1711d5a, 0x3fefef28} },
+/**/ {{0x03364b28, 0x3fefef09} },
+/**/ {{0x253b1363, 0x3fefeee9} },
+/**/ {{0x477f754b, 0x3fefeec9} },
+/**/ {{0x6a037022, 0x3fefeea9} },
+/**/ {{0x8cc7032a, 0x3fefee89} },
+/**/ {{0xafca2da5, 0x3fefee69} },
+/**/ {{0xd30ceed4, 0x3fefee49} },
+/**/ {{0xf68f45f8, 0x3fefee29} },
+/**/ {{0x1a513254, 0x3fefee0a} },
+/**/ {{0x3e52b329, 0x3fefedea} },
+/**/ {{0x6293c7b8, 0x3fefedca} },
+/**/ {{0x87146f44, 0x3fefedaa} },
+/**/ {{0xabd4a90e, 0x3fefed8a} },
+/**/ {{0xd0d47458, 0x3fefed6a} },
+/**/ {{0xf613d064, 0x3fefed4a} },
+/**/ {{0x1b92bc73, 0x3fefed2b} },
+/**/ {{0x415137c7, 0x3fefed0b} },
+/**/ {{0x674f41a2, 0x3fefeceb} },
+/**/ {{0x8d8cd945, 0x3fefeccb} },
+/**/ {{0xb409fdf3, 0x3fefecab} },
+/**/ {{0xdac6aeed, 0x3fefec8b} },
+/**/ {{0x01c2eb76, 0x3fefec6c} },
+/**/ {{0x28feb2ce, 0x3fefec4c} },
+/**/ {{0x507a0437, 0x3fefec2c} },
+/**/ {{0x7834def5, 0x3fefec0c} },
+/**/ {{0xa02f4247, 0x3fefebec} },
+/**/ {{0xc8692d71, 0x3fefebcc} },
+/**/ {{0xf0e29fb4, 0x3fefebac} },
+/**/ {{0x199b9852, 0x3fefeb8d} },
+/**/ {{0x4294168d, 0x3fefeb6d} },
+/**/ {{0x6bcc19a7, 0x3fefeb4d} },
+/**/ {{0x9543a0e2, 0x3fefeb2d} },
+/**/ {{0xbefaab7f, 0x3fefeb0d} },
+/**/ {{0xe8f138c2, 0x3fefeaed} },
+/**/ {{0x132747ea, 0x3fefeace} },
+/**/ {{0x3d9cd83c, 0x3fefeaae} },
+/**/ {{0x6851e8f7, 0x3fefea8e} },
+/**/ {{0x93467960, 0x3fefea6e} },
+/**/ {{0xbe7a88b7, 0x3fefea4e} },
+/**/ {{0xe9ee163f, 0x3fefea2e} },
+/**/ {{0x15a12139, 0x3fefea0f} },
+/**/ {{0x4193a8e8, 0x3fefe9ef} },
+/**/ {{0x6dc5ac8e, 0x3fefe9cf} },
+/**/ {{0x9a372b6d, 0x3fefe9af} },
+/**/ {{0xc6e824c6, 0x3fefe98f} },
+/**/ {{0xf3d897dd, 0x3fefe96f} },
+ };
+
+ static const number
+ Lu[182][2] = { /* log(ui) */
+/**/ {{{0x0b3aac49, 0xbfd63003} },
+/**/ {{0xe51fff99, 0xbc6dc18c} },},
+/**/ {{{0xdf595f30, 0xbfd5d5bd} },
+/**/ {{0x48cbb8a2, 0x3c765411} },},
+/**/ {{{0x53c8d1fb, 0xbfd57bf7} },
+/**/ {{0x15f88b63, 0x3c60908d} },},
+/**/ {{{0x0738a3d8, 0xbfd522ae} },
+/**/ {{0xb38a6979, 0x3c68f7e9} },},
+/**/ {{{0x9e172c3c, 0xbfd4c9e0} },
+/**/ {{0x5b147a5d, 0x3c512361} },},
+/**/ {{{0xc271c41b, 0xbfd4718d} },
+/**/ {{0x14c56eef, 0xbc38fb4c} },},
+/**/ {{{0x23d5e8c7, 0xbfd419b4} },
+/**/ {{0x43827392, 0xbc60dbb2} },},
+/**/ {{{0x77333184, 0xbfd3c252} },
+/**/ {{0xe50a8ec6, 0x3c72ad27} },},
+/**/ {{{0x76be1117, 0xbfd36b67} },
+/**/ {{0xe883858e, 0x3c5324f0} },},
+/**/ {{{0xe1d35ce4, 0xbfd314f1} },
+/**/ {{0x09e5c3dc, 0x3c73d699} },},
+/**/ {{{0x7cdc9354, 0xbfd2bef0} },
+/**/ {{0x7fd86088, 0x3c782dad} },},
+/**/ {{{0x1134db92, 0xbfd26962} },
+/**/ {{0xdd9db02b, 0xbc7e0efa} },},
+/**/ {{{0x6d0eb8d4, 0xbfd21445} },
+/**/ {{0x1aeba60a, 0xbc6f7ae9} },},
+/**/ {{{0x635a6b95, 0xbfd1bf99} },
+/**/ {{0x84249223, 0x3c612aeb} },},
+/**/ {{{0xcbacfb73, 0xbfd16b5c} },
+/**/ {{0x28b40935, 0xbc766fbd} },},
+/**/ {{{0x8227e47c, 0xbfd1178e} },
+/**/ {{0x5f01c691, 0x3c60e63a} },},
+/**/ {{{0x676162e3, 0xbfd0c42d} },
+/**/ {{0x9d5d11ee, 0xbc5162c7} },},
+/**/ {{{0x604d5862, 0xbfd07138} },
+/**/ {{0xed4e9138, 0xbc7cdb16} },},
+/**/ {{{0x5626c691, 0xbfd01eae} },
+/**/ {{0xbd2932e2, 0x3c418290} },},
+/**/ {{{0x6cb3b379, 0xbfcf991c} },
+/**/ {{0x66f980a2, 0xbc6f6650} },},
+/**/ {{{0xe4dcffe6, 0xbfcef5ad} },
+/**/ {{0xddc708a0, 0x3c508ab2} },},
+/**/ {{{0xffe71012, 0xbfce530e} },
+/**/ {{0x41f43042, 0xbc422760} },},
+/**/ {{{0xb0d48940, 0xbfcdb13d} },
+/**/ {{0x49f96cb9, 0xbc5aa11d} },},
+/**/ {{{0xf2655e7b, 0xbfcd1037} },
+/**/ {{0x242471a2, 0xbc660629} },},
+/**/ {{{0xc6f00f71, 0xbfcc6ffb} },
+/**/ {{0x2c57a4a5, 0x3c68e58b} },},
+/**/ {{{0x383bd8ad, 0xbfcbd087} },
+/**/ {{0xf6a516d7, 0xbc3dd355} },},
+/**/ {{{0x575bce3d, 0xbfcb31d8} },
+/**/ {{0xb386a94d, 0x3c66353a} },},
+/**/ {{{0x3c8ad9e3, 0xbfca93ed} },
+/**/ {{0x9de97203, 0xbc6bcafa} },},
+/**/ {{{0x07089664, 0xbfc9f6c4} },
+/**/ {{0x605e67ef, 0xbc435a19} },},
+/**/ {{{0xdcf7017f, 0xbfc95a5a} },
+/**/ {{0x07fb7a3d, 0xbc5142c5} },},
+/**/ {{{0xeb38fe8c, 0xbfc8beaf} },
+/**/ {{0xb6997a40, 0xbc555aa8} },},
+/**/ {{{0x6551a3c2, 0xbfc823c1} },
+/**/ {{0xe70be781, 0x3c61232c} },},
+/**/ {{{0x85444c73, 0xbfc7898d} },
+/**/ {{0xebcfb201, 0xbc5ef8f6} },},
+/**/ {{{0x8b756abc, 0xbfc6f012} },
+/**/ {{0xc21e166c, 0x3c68de59} },},
+/**/ {{{0xbe8c133a, 0xbfc6574e} },
+/**/ {{0xf4621bed, 0x3c3d34f0} },},
+/**/ {{{0x6b543db2, 0xbfc5bf40} },
+/**/ {{0x4c0df7e7, 0x3c21f5b4} },},
+/**/ {{{0xe4a1b58d, 0xbfc527e5} },
+/**/ {{0x82395bfd, 0x3c271a96} },},
+/**/ {{{0x8333b561, 0xbfc4913d} },
+/**/ {{0x4930f135, 0x3c50d560} },},
+/**/ {{{0xa59928cc, 0xbfc3fb45} },
+/**/ {{0xa354d056, 0x3c6d87e6} },},
+/**/ {{{0xb0159016, 0xbfc365fc} },
+/**/ {{0xa5b944ad, 0xbc57d411} },},
+/**/ {{{0x0c86813a, 0xbfc2d161} },
+/**/ {{0xf25af95f, 0x3c5499a3} },},
+/**/ {{{0x2a49c202, 0xbfc23d71} },
+/**/ {{0x61051d69, 0x3c66e381} },},
+/**/ {{{0x7e23f72a, 0xbfc1aa2b} },
+/**/ {{0xd9b2ef7e, 0x3c4c6ef1} },},
+/**/ {{{0x8227e47c, 0xbfc1178e} },
+/**/ {{0x5f01c691, 0x3c50e63a} },},
+/**/ {{{0xb59e3a07, 0xbfc08598} },
+/**/ {{0x9902bf32, 0x3c6dd700} },},
+/**/ {{{0x39dbd566, 0xbfbfe891} },
+/**/ {{0x215f9393, 0x3c5ac9f4} },},
+/**/ {{{0x830a1120, 0xbfbec739} },
+/**/ {{0x91780d3f, 0x3c4a2bf9} },},
+/**/ {{{0x638446a2, 0xbfbda727} },
+/**/ {{0x71733019, 0xbc5401fa} },},
+/**/ {{{0x01bc4b23, 0xbfbc8858} },
+/**/ {{0x559a6706, 0xbc5a38cb} },},
+/**/ {{{0x8dad5b1c, 0xbfbb6ac8} },
+/**/ {{0xed1ca59f, 0x3c40057e} },},
+/**/ {{{0x40b1bc38, 0xbfba4e76} },
+/**/ {{0x203e4259, 0x3c55b5ca} },},
+/**/ {{{0x5d594989, 0xbfb9335e} },
+/**/ {{0x5704ccb7, 0x3c5478a8} },},
+/**/ {{{0x2f40e3f0, 0xbfb8197e} },
+/**/ {{0xffbeed43, 0xbc3b9f2d} },},
+/**/ {{{0x0aeac0e1, 0xbfb700d3} },
+/**/ {{0x212cdd05, 0x3c272566} },},
+/**/ {{{0x4d9791cb, 0xbfb5e95a} },
+/**/ {{0x5c5c450a, 0xbc5f3874} },},
+/**/ {{{0x5d207eac, 0xbfb4d311} },
+/**/ {{0x2c7842cc, 0xbc5769f4} },},
+/**/ {{{0xa7d1ee64, 0xbfb3bdf5} },
+/**/ {{0xd3b5b45f, 0xbc47a976} },},
+/**/ {{{0xa44717a5, 0xbfb2aa04} },
+/**/ {{0x8d2fa3f7, 0x3c5d15d3} },},
+/**/ {{{0xd1465567, 0xbfb1973b} },
+/**/ {{0x67a6acf6, 0x3c475583} },},
+/**/ {{{0xb59e3a07, 0xbfb08598} },
+/**/ {{0x9902bf32, 0x3c5dd700} },},
+/**/ {{{0xc006b87c, 0xbfaeea31} },
+/**/ {{0x93b7b66c, 0x3c43e4fc} },},
+/**/ {{{0xcdddb2cc, 0xbfaccb73} },
+/**/ {{0x0500efd4, 0x3c4e48fb} },},
+/**/ {{{0xd0fb10fc, 0xbfaaaef2} },
+/**/ {{0xb42e0add, 0xbc2a353b} },},
+/**/ {{{0x149fb343, 0xbfa894aa} },
+/**/ {{0x7660a23d, 0xbc3a8be9} },},
+/**/ {{{0xf2d4bb58, 0xbfa67c94} },
+/**/ {{0x6505e603, 0xbc40413e} },},
+/**/ {{{0xd42de3ea, 0xbfa466ae} },
+/**/ {{0x7f4a137e, 0x3c4cdd6f} },},
+/**/ {{{0x2f8d183f, 0xbfa252f3} },
+/**/ {{0x92615916, 0x3c4947f7} },},
+/**/ {{{0x89e74444, 0xbfa0415d} },
+/**/ {{0x1d753622, 0xbc4c05cf} },},
+/**/ {{{0xec14aaf2, 0xbf9c63d2} },
+/**/ {{0xa686bd86, 0x3c3ce030} },},
+/**/ {{{0x28c8cabf, 0xbf984925} },
+/**/ {{0x0619fa67, 0x3c3d192d} },},
+/**/ {{{0x25980cc1, 0xbf9432a9} },
+/**/ {{0x39004192, 0x3c38cdaf} },},
+/**/ {{{0x58935847, 0xbf902056} },
+/**/ {{0x8416e71f, 0xbc327c8e} },},
+/**/ {{{0xa388a2aa, 0xbf882448} },
+/**/ {{0x137f09a0, 0xbc104b16} },},
+/**/ {{{0x7588de71, 0xbf801015} },
+/**/ {{0xd417ced0, 0xbc146662} },},
+/**/ {{{0x59588b35, 0xbf700805} },
+/**/ {{0x8cf63677, 0xbc1f9663} },},
+/**/ {{{0x00000000, 0x00000000} },
+/**/ {{0x00000000, 0x00000000} },},
+/**/ {{{0xa2b10bc0, 0x3f6ff00a} },
+/**/ {{0xd5a6d353, 0x3c02821a} },},
+/**/ {{{0x6b106789, 0x3f7fe02a} },
+/**/ {{0xe3711ebf, 0xbbce44b7} },},
+/**/ {{{0x5f810a77, 0x3f87dc47} },
+/**/ {{0x87d3df21, 0xbc116d76} },},
+/**/ {{{0xb0fc03e4, 0x3f8fc0a8} },
+/**/ {{0xc59642a1, 0xbc183092} },},
+/**/ {{{0x4346a575, 0x3f93cea4} },
+/**/ {{0x902b3a1c, 0xbc10cb5a} },},
+/**/ {{{0x07d5b11b, 0x3f97b91b} },
+/**/ {{0xace3a510, 0xbc35b602} },},
+/**/ {{{0x27af9198, 0x3f9b9fc0} },
+/**/ {{0x229dc868, 0xbbf0ae69} },},
+/**/ {{{0x0e783300, 0x3f9f829b} },
+/**/ {{0x04f1ef23, 0x3c333e3f} },},
+/**/ {{{0x8923d980, 0x3fa1b0d9} },
+/**/ {{0x89bac481, 0xbc3e9ae8} },},
+/**/ {{{0xb9febd60, 0x3fa39e87} },
+/**/ {{0x37f551bb, 0xbc45bfa9} },},
+/**/ {{{0xafc8e4d5, 0x3fa58a5b} },
+/**/ {{0x2b4e2b72, 0xbc4ce55c} },},
+/**/ {{{0xf632dcfc, 0x3fa77458} },
+/**/ {{0xa87b9296, 0x3c418d3c} },},
+/**/ {{{0x0ec8e3eb, 0x3fa95c83} },
+/**/ {{0x80520bf2, 0x3c4f5a0e} },},
+/**/ {{{0x711971bf, 0x3fab42dd} },
+/**/ {{0x9c130499, 0xbc3eb975} },},
+/**/ {{{0x8adb0b52, 0x3fad276b} },
+/**/ {{0x3257fd47, 0x3c21e3c5} },},
+/**/ {{{0xc01162a6, 0x3faf0a30} },
+/**/ {{0x5c5bbacd, 0x3c485f32} },},
+/**/ {{{0x3598e471, 0x3fb07598} },
+/**/ {{0x333c45b8, 0x3c480da5} },},
+/**/ {{{0xeea37ae1, 0x3fb16536} },
+/**/ {{0xe8c22cda, 0xbc379da3} },},
+/**/ {{{0x2f0a1417, 0x3fb253f6} },
+/**/ {{0x63fc4cfd, 0xbc1c1259} },},
+/**/ {{{0x961bd1d1, 0x3fb341d7} },
+/**/ {{0x227becbb, 0xbc5b599f} },},
+/**/ {{{0xbea646f0, 0x3fb42edc} },
+/**/ {{0x935996c9, 0x3c4ddd4f} },},
+/**/ {{{0x3f06183f, 0x3fb51b07} },
+/**/ {{0x9a1a8be4, 0x3c5a49e3} },},
+/**/ {{{0xa93750c4, 0x3fb60658} },
+/**/ {{0x8ec21b6a, 0xbc538845} },},
+/**/ {{{0x8ae56b4c, 0x3fb6f0d2} },
+/**/ {{0x9184b992, 0xbc5906d9} },},
+/**/ {{{0x6d7b12cd, 0x3fb7da76} },
+/**/ {{0xcdd94131, 0xbc5eeedf} },},
+/**/ {{{0xd6319b21, 0x3fb8c345} },
+/**/ {{0xab3424a9, 0xbc24a697} },},
+/**/ {{{0x462033ad, 0x3fb9ab42} },
+/**/ {{0x1c184e8e, 0xbc42099e} },},
+/**/ {{{0x3a4ad563, 0x3fba926d} },
+/**/ {{0x8aa70ea9, 0x3c5942f4} },},
+/**/ {{{0x2bb0eda1, 0x3fbb78c8} },
+/**/ {{0xf0327e21, 0x3c20878c} },},
+/**/ {{{0x8f5bc743, 0x3fbc5e54} },
+/**/ {{0xef8161b1, 0x3c35d617} },},
+/**/ {{{0xd66cb35d, 0x3fbd4313} },
+/**/ {{0x951d90fa, 0x3c5790dd} },},
+/**/ {{{0x6e2af2e6, 0x3fbe2707} },
+/**/ {{0x001e0162, 0xbc361578} },},
+/**/ {{{0xc01162a6, 0x3fbf0a30} },
+/**/ {{0x5c5bbacd, 0x3c585f32} },},
+/**/ {{{0x31dbeabb, 0x3fbfec91} },
+/**/ {{0x9981b36c, 0xbc55746b} },},
+/**/ {{{0x12ca596e, 0x3fc06715} },
+/**/ {{0x7eb86499, 0x3c550c64} },},
+/**/ {{{0x7cd08e59, 0x3fc0d77e} },
+/**/ {{0x5e9030ac, 0x3c69a5dc} },},
+/**/ {{{0x846742ac, 0x3fc14785} },
+/**/ {{0x3e3a7f07, 0x3c6a2881} },},
+/**/ {{{0xd52f67a0, 0x3fc1b72a} },
+/**/ {{0x3472cd74, 0x3c548302} },},
+/**/ {{{0x190a5acb, 0x3fc2266f} },
+/**/ {{0xf1809e88, 0x3c6f547b} },},
+/**/ {{{0xf81ff523, 0x3fc29552} },
+/**/ {{0x1c407dbf, 0x3c630177} },},
+/**/ {{{0x18e47fd3, 0x3fc303d7} },
+/**/ {{0xd96091fa, 0xbc06b9c7} },},
+/**/ {{{0x201e8f74, 0x3fc371fc} },
+/**/ {{0x62af18a0, 0x3c5de6cb} },},
+/**/ {{{0xb0ecc62a, 0x3fc3dfc2} },
+/**/ {{0xe7d81017, 0xbc5ab3a8} },},
+/**/ {{{0x6ccb7d1e, 0x3fc44d2b} },
+/**/ {{0x543e1f88, 0x3c69f4f6} },},
+/**/ {{{0xf39a55e5, 0x3fc4ba36} },
+/**/ {{0xbcc36756, 0x3c668981} },},
+/**/ {{{0xe3a1b438, 0x3fc526e5} },
+/**/ {{0x8a470d3a, 0xbc6746ff} },},
+/**/ {{{0xd9982086, 0x3fc59338} },
+/**/ {{0xaa8ad7cf, 0xbc565d22} },},
+/**/ {{{0x70a793d4, 0x3fc5ff30} },
+/**/ {{0xfafc6f6e, 0xbc5bc60e} },},
+/**/ {{{0x4272ad51, 0x3fc66acd} },
+/**/ {{0x4e1ea8b2, 0xbc50900e} },},
+/**/ {{{0xe719d21d, 0x3fc6d60f} },
+/**/ {{0x68ecd179, 0xbc6caae2} },},
+/**/ {{{0xf54037a5, 0x3fc740f8} },
+/**/ {{0x62a84cdb, 0xbc5b2640} },},
+/**/ {{{0x0210d909, 0x3fc7ab89} },
+/**/ {{0x2d6a0608, 0x3c4be36b} },},
+/**/ {{{0xa14357eb, 0x3fc815c0} },
+/**/ {{0x073a0564, 0xbc54be48} },},
+/**/ {{{0x6520c911, 0x3fc87fa0} },
+/**/ {{0xbfa08d9a, 0xbc6bf7fd} },},
+/**/ {{{0xde886d41, 0x3fc8e928} },
+/**/ {{0x51a56770, 0xbc6569d8} },},
+/**/ {{{0x9cf456b4, 0x3fc9525a} },
+/**/ {{0x1d4e2e26, 0x3c6d904c} },},
+/**/ {{{0x2e7dfb83, 0x3fc9bb36} },
+/**/ {{0x1f003e0c, 0x3c6575e3} },},
+/**/ {{{0x1fe2b563, 0x3fca23bc} },
+/**/ {{0xb07a998c, 0x3c493711} },},
+/**/ {{{0xfc882f19, 0x3fca8bec} },
+/**/ {{0x918c39eb, 0xbc5e8c37} },},
+/**/ {{{0x4e80bff3, 0x3fcaf3c9} },
+/**/ {{0xf3641985, 0xbc5398cf} },},
+/**/ {{{0x9e8fb5a4, 0x3fcb5b51} },
+/**/ {{0xdc19e1a0, 0x3c6ba27f} },},
+/**/ {{{0x742d8cd6, 0x3fcbc286} },
+/**/ {{0x44870f55, 0x3c54fce7} },},
+/**/ {{{0x558c18c1, 0x3fcc2968} },
+/**/ {{0x38a3fb6b, 0xbc673dee} },},
+/**/ {{{0xc79a9a22, 0x3fcc8ff7} },
+/**/ {{0xf8434012, 0xbc64f689} },},
+/**/ {{{0x4e09c5dc, 0x3fccf635} },
+/**/ {{0x7d55b695, 0x3c6239a0} },},
+/**/ {{{0x6b4fbb91, 0x3fcd5c21} },
+/**/ {{0x597e4d40, 0x3c66e443} },},
+/**/ {{{0xa0abec7d, 0x3fcdc1bc} },
+/**/ {{0x1998b6fc, 0x3c6834c5} },},
+/**/ {{{0x6e2af2e6, 0x3fce2707} },
+/**/ {{0x001e0162, 0xbc461578} },},
+/**/ {{{0x52aa5a60, 0x3fce8c02} },
+/**/ {{0x39bfc89b, 0xbc46e03a} },},
+/**/ {{{0xcbdc5936, 0x3fcef0ad} },
+/**/ {{0x950dc20d, 0x3c648637} },},
+/**/ {{{0x564b7b37, 0x3fcf550a} },
+/**/ {{0xfd018c37, 0x3c2c5f6d} },},
+/**/ {{{0x6d5e3e2b, 0x3fcfb918} },
+/**/ {{0x64f21acb, 0xbc6caaae} },},
+/**/ {{{0x45ad501d, 0x3fd00e6c} },
+/**/ {{0x8ff6fead, 0xbc6cb956} },},
+/**/ {{{0x94b4d041, 0x3fd04025} },
+/**/ {{0x17a5022d, 0xbc628ec2} },},
+/**/ {{{0x5fcd590d, 0x3fd071b8} },
+/**/ {{0xf97bde80, 0x3c5d1707} },},
+/**/ {{{0xe27390e3, 0x3fd0a324} },
+/**/ {{0xe8061c03, 0x3c77dcfd} },},
+/**/ {{{0x579ab74b, 0x3fd0d46b} },
+/**/ {{0x1c3cbd92, 0x3c603ec8} },},
+/**/ {{{0xf9ae4ad5, 0x3fd1058b} },
+/**/ {{0xab4cb31d, 0x3c589fa0} },},
+/**/ {{{0x0293a8b0, 0x3fd13687} },
+/**/ {{0x98edd24a, 0x3c77b662} },},
+/**/ {{{0xababa60e, 0x3fd1675c} },
+/**/ {{0xab883717, 0x3c2ce63e} },},
+/**/ {{{0x2dd4236f, 0x3fd1980d} },
+/**/ {{0xb0e4d147, 0x3c79d3d1} },},
+/**/ {{{0xc16999fb, 0x3fd1c898} },
+/**/ {{0x2aff1c44, 0xbc30e5c6} },},
+/**/ {{{0x9e48a2f3, 0x3fd1f8ff} },
+/**/ {{0x9a0c4b07, 0xbc7c9fdf} },},
+/**/ {{{0xfbcf7966, 0x3fd22941} },
+/**/ {{0xb09628af, 0xbc776f5e} },},
+/**/ {{{0x10df763a, 0x3fd25960} },
+/**/ {{0x57075e9e, 0xbc50f76c} },},
+/**/ {{{0x13de86a3, 0x3fd2895a} },
+/**/ {{0xc13f040e, 0x3c77ad24} },},
+/**/ {{{0x3ab89d25, 0x3fd2b930} },
+/**/ {{0xfd852ad4, 0xbc7896b5} },},
+/**/ {{{0xbae11d31, 0x3fd2e8e2} },
+/**/ {{0xb95ebdf9, 0xbc78f4cd} },},
+/**/ {{{0xc9544185, 0x3fd31871} },
+/**/ {{0x4c09b379, 0xbc351acc} },},
+/**/ {{{0x9a987d55, 0x3fd347dd} },
+/**/ {{0x580919f8, 0xbc64dd4c} },},
+/**/ {{{0x62bfd85b, 0x3fd37726} },
+/**/ {{0xd8117de7, 0xbc4b5629} },},
+/**/ {{{0x556945ea, 0x3fd3a64c} },
+/**/ {{0x1945f97c, 0xbc6c6865} },},
+/**/ {{{0xa5c1f710, 0x3fd3d54f} },
+/**/ {{0xc6a1c98d, 0xbc7e3265} },},
+/**/ {{{0x8686a7e4, 0x3fd40430} },
+/**/ {{0x6082ce6d, 0xbc70bcfb} },},
+/**/ {{{0x2a04e814, 0x3fd432ef} },
+/**/ {{0x715ac903, 0xbc729931} },},
+/**/ {{{0xc21c5ec2, 0x3fd4618b} },
+/**/ {{0xcdeccf1d, 0x3c7f42de} },},
+/**/ {{{0x804009d1, 0x3fd49006} },
+/**/ {{0x41f177dc, 0xbc69ffc3} },},
+/**/ {{{0x957778a1, 0x3fd4be5f} },
+/**/ {{0x5b04813d, 0xbc6259b3} },},
+/**/ {{{0x3260026a, 0x3fd4ec97} },
+/**/ {{0xd977dc5e, 0xbc742a87} },},
+/**/ {{{0x872df82d, 0x3fd51aad} },
+/**/ {{0xc19f55e3, 0x3c43927a} },},
+/**/ {{{0xc3add263, 0x3fd548a2} },
+/**/ {{0x7e308ddb, 0xbc6819cf} },},
+/**/ {{{0x17455a6c, 0x3fd57677} },
+/**/ {{0xb283660c, 0x3c7526ad} },},
+/**/ {{{0xb0f4cfe2, 0x3fd5a42a} },
+/**/ {{0x7dee9a3d, 0xbc78ebcb} },},
+/**/ {{{0xbf5809ca, 0x3fd5d1bd} },
+/**/ {{0x83dc7fe1, 0x3c742363} },},
+/**/ {{{0x70a793d4, 0x3fd5ff30} },
+/**/ {{0xfafc6f6e, 0xbc6bc60e} },},
+/**/ {{{0xf2b9c795, 0x3fd62c82} },
+/**/ {{0x915300e5, 0x3c67b7af} },},
+ };
+
+ static const number
+ Lv[362][2] = { /* log(vj) */
+
+/**/ {{{0xb72daabf, 0xbf6687ec} },
+/**/ {{0x0f13318f, 0x3c052c69} },},
+/**/ {{{0x3767104f, 0xbf6667d6} },
+/**/ {{0xd27a7bac, 0x3bd3efa3} },},
+/**/ {{{0xd7cd64fb, 0xbf6647bf} },
+/**/ {{0x55a89c36, 0x3c09b725} },},
+/**/ {{{0x9860683b, 0xbf6627a9} },
+/**/ {{0xfebc844a, 0x3bcbae22} },},
+/**/ {{{0x791fd98a, 0xbf660793} },
+/**/ {{0x78fa1cb5, 0xbbfe34af} },},
+/**/ {{{0x7a0b7863, 0xbf65e77d} },
+/**/ {{0xea78fdd0, 0xbc02f1b1} },},
+/**/ {{{0x9b230442, 0xbf65c767} },
+/**/ {{0x2202b2ca, 0x3bf70d8c} },},
+/**/ {{{0xdc663ca2, 0xbf65a751} },
+/**/ {{0xc3444e64, 0xbbfdc63d} },},
+/**/ {{{0x3dd4e102, 0xbf65873c} },
+/**/ {{0x370d69c3, 0x3c021b11} },},
+/**/ {{{0xbf6eb0de, 0xbf656726} },
+/**/ {{0x154dd8d8, 0xbbfb6da8} },},
+/**/ {{{0x61336bb6, 0xbf654711} },
+/**/ {{0xdf9a4709, 0xbc0b12d2} },},
+/**/ {{{0x2322d10a, 0xbf6526fc} },
+/**/ {{0x68d1274f, 0x3bf997f2} },},
+/**/ {{{0x053ca059, 0xbf6506e7} },
+/**/ {{0xe70c852a, 0x3c0c2a1f} },},
+/**/ {{{0x07809924, 0xbf64e6d2} },
+/**/ {{0xa808538f, 0x3c04cc9e} },},
+/**/ {{{0x29ee7aed, 0xbf64c6bd} },
+/**/ {{0x7797a4bd, 0x3befe68c} },},
+/**/ {{{0x6c860537, 0xbf64a6a8} },
+/**/ {{0x9efaae3d, 0x3c06794d} },},
+/**/ {{{0xcf46f784, 0xbf648693} },
+/**/ {{0xb2ddd9d1, 0xbbfed318} },},
+/**/ {{{0x5231115a, 0xbf64667f} },
+/**/ {{0x4643624b, 0x3c061f62} },},
+/**/ {{{0xf544123c, 0xbf64466a} },
+/**/ {{0x9387f11e, 0x3c0666a0} },},
+/**/ {{{0xb87fb9b0, 0xbf642656} },
+/**/ {{0x116ec598, 0x3c0043b2} },},
+/**/ {{{0x9be3c73c, 0xbf640642} },
+/**/ {{0xd2de6e3e, 0xbbfbd84d} },},
+/**/ {{{0x9f6ffa68, 0xbf63e62e} },
+/**/ {{0x433d8c65, 0xbbe9149b} },},
+/**/ {{{0xc32412bb, 0xbf63c61a} },
+/**/ {{0x08e5a7bb, 0xbbf6b88d} },},
+/**/ {{{0x06ffcfbe, 0xbf63a607} },
+/**/ {{0xccfac9e2, 0xbb9f3c7a} },},
+/**/ {{{0x6b02f0fa, 0xbf6385f3} },
+/**/ {{0xbec6f6e4, 0x3bee405c} },},
+/**/ {{{0xef2d35f9, 0xbf6365df} },
+/**/ {{0xaf0c0b4c, 0x3bf02993} },},
+/**/ {{{0x937e5e46, 0xbf6345cc} },
+/**/ {{0xaa64716f, 0x3bf9be97} },},
+/**/ {{{0x57f6296c, 0xbf6325b9} },
+/**/ {{0xa2e863ae, 0xbbfdeb4d} },},
+/**/ {{{0x3c9456f9, 0xbf6305a6} },
+/**/ {{0x636d2b2c, 0x3c0f3c7f} },},
+/**/ {{{0x4158a678, 0xbf62e593} },
+/**/ {{0xb166ca7f, 0x3c01a8df} },},
+/**/ {{{0x6642d778, 0xbf62c580} },
+/**/ {{0x53a2d534, 0x3c020ff1} },},
+/**/ {{{0xab52a987, 0xbf62a56d} },
+/**/ {{0x0412f1e7, 0xbbe8fef1} },},
+/**/ {{{0x1087dc35, 0xbf62855b} },
+/**/ {{0x4b7ac6c6, 0xbbfcd17e} },},
+/**/ {{{0x95e22f12, 0xbf626548} },
+/**/ {{0x9a8127bf, 0xbbfbfc21} },},
+/**/ {{{0x3b6161af, 0xbf624536} },
+/**/ {{0x66d42390, 0x3bd7eda1} },},
+/**/ {{{0x0105339d, 0xbf622524} },
+/**/ {{0x77fedcad, 0xbbdf374e} },},
+/**/ {{{0xe6cd646f, 0xbf620511} },
+/**/ {{0x52d05dea, 0x3be1d1fb} },},
+/**/ {{{0xecb9b3b8, 0xbf61e4ff} },
+/**/ {{0xffd8e706, 0x3c02c2fc} },},
+/**/ {{{0x12c9e10b, 0xbf61c4ee} },
+/**/ {{0xf1d5cc2c, 0xbc02b4f8} },},
+/**/ {{{0x58fdabfe, 0xbf61a4dc} },
+/**/ {{0x1315b191, 0xbc0618c3} },},
+/**/ {{{0xbf54d426, 0xbf6184ca} },
+/**/ {{0xcb3cdab0, 0xbc01f8d5} },},
+/**/ {{{0x45cf1919, 0xbf6164b9} },
+/**/ {{0xc025605a, 0xbc014ff7} },},
+/**/ {{{0xec6c3a6e, 0xbf6144a7} },
+/**/ {{0x87cb08cd, 0xbbff04ff} },},
+/**/ {{{0xb32bf7bd, 0xbf612496} },
+/**/ {{0xe6af1b84, 0x3bee89b4} },},
+/**/ {{{0x9a0e109e, 0xbf610485} },
+/**/ {{0x35a60879, 0x3c07e99e} },},
+/**/ {{{0xa11244aa, 0xbf60e474} },
+/**/ {{0x20f2325a, 0x3c04b698} },},
+/**/ {{{0xc838537b, 0xbf60c463} },
+/**/ {{0x3617200d, 0x3bc0657e} },},
+/**/ {{{0x0f7ffcac, 0xbf60a453} },
+/**/ {{0xa5080961, 0xbc008feb} },},
+/**/ {{{0x76e8ffd9, 0xbf608442} },
+/**/ {{0xbb5e1df7, 0x3bd13002} },},
+/**/ {{{0xfe731c9d, 0xbf606431} },
+/**/ {{0x6e2858c0, 0xbc0509f3} },},
+/**/ {{{0xa61e1296, 0xbf604421} },
+/**/ {{0x5f5d9695, 0xbc04b556} },},
+/**/ {{{0x6de9a162, 0xbf602411} },
+/**/ {{0xe79a4e00, 0x3c042b89} },},
+/**/ {{{0x55d5889e, 0xbf600401} },
+/**/ {{0x1113f403, 0x3be8f98e} },},
+/**/ {{{0xbbc30fd4, 0xbf5fc7e2} },
+/**/ {{0x93382bc9, 0xbbfc709b} },},
+/**/ {{{0x0c1abdcd, 0xbf5f87c3} },
+/**/ {{0x76a55d1c, 0xbbf2a90d} },},
+/**/ {{{0x9cb19a68, 0xbf5f47a3} },
+/**/ {{0x76e7826b, 0x3be1b815} },},
+/**/ {{{0x6d8724e7, 0xbf5f0784} },
+/**/ {{0x2b63756d, 0xbbe72d46} },},
+/**/ {{{0x7e9adc90, 0xbf5ec765} },
+/**/ {{0x73bb17c5, 0x3beb1a66} },},
+/**/ {{{0xcfec40a8, 0xbf5e8746} },
+/**/ {{0xb5e5a553, 0x3bf11af5} },},
+/**/ {{{0x617ad077, 0xbf5e4728} },
+/**/ {{0xf57dd14f, 0x3bfb2cad} },},
+/**/ {{{0x33460b45, 0xbf5e070a} },
+/**/ {{0x4902c8d5, 0xbbf8db75} },},
+/**/ {{{0x454d705f, 0xbf5dc6ec} },
+/**/ {{0xe8a41057, 0x3bef5cc6} },},
+/**/ {{{0x97907f0f, 0xbf5d86ce} },
+/**/ {{0xdf8672ef, 0x3bed8277} },},
+/**/ {{{0x2a0eb6a3, 0xbf5d46b1} },
+/**/ {{0x3717e5ee, 0xbbc2f9c2} },},
+/**/ {{{0xfcc7966b, 0xbf5d0693} },
+/**/ {{0xab4852c6, 0x3bf4deed} },},
+/**/ {{{0x0fba9db6, 0xbf5cc677} },
+/**/ {{0x9db2a368, 0xbbf3a2b4} },},
+/**/ {{{0x62e74bd8, 0xbf5c865a} },
+/**/ {{0x58fa0c24, 0xbbd2c51d} },},
+/**/ {{{0xf64d2024, 0xbf5c463d} },
+/**/ {{0xe3a09391, 0x3bf838ca} },},
+/**/ {{{0xc9eb99ee, 0xbf5c0621} },
+/**/ {{0x61b7de71, 0xbbdc2a9e} },},
+/**/ {{{0xddc2388e, 0xbf5bc605} },
+/**/ {{0x4accb195, 0xbbea9808} },},
+/**/ {{{0x31d07b5c, 0xbf5b85ea} },
+/**/ {{0x032e030b, 0xbbd811a2} },},
+/**/ {{{0xc615e1b1, 0xbf5b45ce} },
+/**/ {{0x821e0b81, 0xbbfd5427} },},
+/**/ {{{0x9a91eaea, 0xbf5b05b3} },
+/**/ {{0x2619306b, 0x3bfffeba} },},
+/**/ {{{0xaf441661, 0xbf5ac598} },
+/**/ {{0x9eac7d15, 0x3bd22824} },},
+/**/ {{{0x042be376, 0xbf5a857e} },
+/**/ {{0x24893f0e, 0x3bc20736} },},
+/**/ {{{0x9948d188, 0xbf5a4563} },
+/**/ {{0x04d734cd, 0xbbf58ab4} },},
+/**/ {{{0x6e9a5ff9, 0xbf5a0549} },
+/**/ {{0x5723a6c3, 0xbbf22673} },},
+/**/ {{{0x84200e2c, 0xbf59c52f} },
+/**/ {{0xa538e8e1, 0x3bfc81da} },},
+/**/ {{{0xd9d95b83, 0xbf598515} },
+/**/ {{0x2a8e3feb, 0xbbfa1a37} },},
+/**/ {{{0x6fc5c767, 0xbf5944fc} },
+/**/ {{0x385159f9, 0x3bf8e1ce} },},
+/**/ {{{0x45e4d13c, 0xbf5904e3} },
+/**/ {{0x1567c7a7, 0xbbfc4737} },},
+/**/ {{{0x5c35f86e, 0xbf58c4ca} },
+/**/ {{0x23c9ae0c, 0x3bf41581} },},
+/**/ {{{0xb2b8bc65, 0xbf5884b1} },
+/**/ {{0x2b66cfb6, 0x3bf70c2c} },},
+/**/ {{{0x496c9c8d, 0xbf584499} },
+/**/ {{0xe5a11e3e, 0xbbdb9042} },},
+/**/ {{{0x20511854, 0xbf580481} },
+/**/ {{0x61bcb040, 0xbbf9cf9d} },},
+/**/ {{{0x3765af29, 0xbf57c469} },
+/**/ {{0xe26a419b, 0xbbf65ceb} },},
+/**/ {{{0x8ea9e07c, 0xbf578451} },
+/**/ {{0xb70a4088, 0xbbf1c2f5} },},
+/**/ {{{0x261d2bbf, 0xbf57443a} },
+/**/ {{0x29704ba7, 0xbbbc7b8f} },},
+/**/ {{{0xfdbf1065, 0xbf570422} },
+/**/ {{0x433ccb3b, 0x3bca0a54} },},
+/**/ {{{0x158f0de3, 0xbf56c40c} },
+/**/ {{0x207cde2d, 0x3bd9e257} },},
+/**/ {{{0x6d8ca3af, 0xbf5683f5} },
+/**/ {{0xf7b51b49, 0xbbef17a4} },},
+/**/ {{{0x05b75142, 0xbf5643df} },
+/**/ {{0x9d345bf8, 0x3be28239} },},
+/**/ {{{0xde0e9614, 0xbf5603c8} },
+/**/ {{0x0918d1bf, 0xbbde6c21} },},
+/**/ {{{0xf691f1a1, 0xbf55c3b2} },
+/**/ {{0x377de4c8, 0x3bd37d78} },},
+/**/ {{{0x4f40e365, 0xbf55839d} },
+/**/ {{0xbbf7c9d1, 0x3bf52b7d} },},
+/**/ {{{0xe81aeadd, 0xbf554387} },
+/**/ {{0x679c3d9a, 0xbbf0be6a} },},
+/**/ {{{0xc11f878a, 0xbf550372} },
+/**/ {{0xb6cdd88e, 0xbbdd9e20} },},
+/**/ {{{0xda4e38ec, 0xbf54c35d} },
+/**/ {{0x09302da0, 0xbbe3b1e7} },},
+/**/ {{{0x33a67e86, 0xbf548349} },
+/**/ {{0x085b922d, 0x3be8cba8} },},
+/**/ {{{0xcd27d7db, 0xbf544334} },
+/**/ {{0xf024ab43, 0xbba5f2c9} },},
+/**/ {{{0xa6d1c471, 0xbf540320} },
+/**/ {{0xf686cf3d, 0xbbeb31f3} },},
+/**/ {{{0xc0a3c3cf, 0xbf53c30c} },
+/**/ {{0xd4ad32f6, 0xbbf74ffe} },},
+/**/ {{{0x1a9d557e, 0xbf5382f9} },
+/**/ {{0x4acb368f, 0x3bd2e555} },},
+/**/ {{{0xb4bdf907, 0xbf5342e5} },
+/**/ {{0x07812806, 0x3be13442} },},
+/**/ {{{0x8f052df6, 0xbf5302d2} },
+/**/ {{0x70b1e756, 0x3bf5f429} },},
+/**/ {{{0xa97273d7, 0xbf52c2bf} },
+/**/ {{0x43a03fff, 0xbbf20aa3} },},
+/**/ {{{0x04054a3a, 0xbf5282ad} },
+/**/ {{0x8bebd7ad, 0xbbed4d57} },},
+/**/ {{{0x9ebd30ae, 0xbf52429a} },
+/**/ {{0x5a71c5a4, 0xbbff9529} },},
+/**/ {{{0x7999a6c6, 0xbf520288} },
+/**/ {{0x54100f9e, 0x3bfb055a} },},
+/**/ {{{0x949a2c12, 0xbf51c276} },
+/**/ {{0xa2e9f1b4, 0xbbff6978} },},
+/**/ {{{0xefbe402a, 0xbf518264} },
+/**/ {{0xbc188323, 0x3bf01fb9} },},
+/**/ {{{0x8b0562a1, 0xbf514253} },
+/**/ {{0x957bf23a, 0xbbf7c87c} },},
+/**/ {{{0x666f1311, 0xbf510242} },
+/**/ {{0xc8be6880, 0x3bdc2cb9} },},
+/**/ {{{0x81fad111, 0xbf50c231} },
+/**/ {{0x07ba000d, 0xbbf59fc1} },},
+/**/ {{{0xdda81c3d, 0xbf508220} },
+/**/ {{0xbf5c8a0b, 0xbbf06a0a} },},
+/**/ {{{0x79767431, 0xbf504210} },
+/**/ {{0xa9a705bc, 0x3bf3a6cf} },},
+/**/ {{{0x55655889, 0xbf500200} },
+/**/ {{0xbf0fa436, 0xbbe9abe6} },},
+/**/ {{{0xe2e891cc, 0xbf4f83e0} },
+/**/ {{0x1b81bf62, 0x3be4aa59} },},
+/**/ {{{0x9b4589ce, 0xbf4f03c1} },
+/**/ {{0x8a47f50a, 0xbbe60518} },},
+/**/ {{{0xd3e0985f, 0xbf4e83a2} },
+/**/ {{0x5ef17e96, 0x3bed32d8} },},
+/**/ {{{0x8cb8bcc3, 0xbf4e0384} },
+/**/ {{0xf09afa4d, 0xbbeb7b30} },},
+/**/ {{{0xc5ccf647, 0xbf4d8366} },
+/**/ {{0xf586cec2, 0xbbd527fc} },},
+/**/ {{{0x7f1c4437, 0xbf4d0349} },
+/**/ {{0x4a686886, 0x3bc2bcf0} },},
+/**/ {{{0xb8a5a5e3, 0xbf4c832c} },
+/**/ {{0x721c2ebe, 0x3bc98f93} },},
+/**/ {{{0x72681a9e, 0xbf4c0310} },
+/**/ {{0xb5308d22, 0xbbe20f00} },},
+/**/ {{{0xac62a1bf, 0xbf4b82f4} },
+/**/ {{0x9737b561, 0xbbe1edd0} },},
+/**/ {{{0x66943a9f, 0xbf4b02d9} },
+/**/ {{0x23f894a1, 0xbbcc950b} },},
+/**/ {{{0xa0fbe49a, 0xbf4a82be} },
+/**/ {{0x866bc982, 0xbb81da04} },},
+/**/ {{{0x5b989f0f, 0xbf4a02a4} },
+/**/ {{0x9d76196e, 0xbbd9114d} },},
+/**/ {{{0x96696961, 0xbf49828a} },
+/**/ {{0xd3292fd6, 0x3bc10d20} },},
+/**/ {{{0x516d42f4, 0xbf490271} },
+/**/ {{0x2e9a5dd5, 0xbbee53a3} },},
+/**/ {{{0x8ca32b32, 0xbf488258} },
+/**/ {{0xd18f8004, 0xbbc55af5} },},
+/**/ {{{0x480a2185, 0xbf480240} },
+/**/ {{0xa9b0178a, 0xbbb32d23} },},
+/**/ {{{0x83a1255c, 0xbf478228} },
+/**/ {{0x8152093a, 0x3be84cc3} },},
+/**/ {{{0x3f673627, 0xbf470211} },
+/**/ {{0xf4881c71, 0xbbd0055a} },},
+/**/ {{{0x7b5b535c, 0xbf4681fa} },
+/**/ {{0xb98336ea, 0x3bd2b73f} },},
+/**/ {{{0x377c7c71, 0xbf4601e4} },
+/**/ {{0x2ed05089, 0xbbcdcbed} },},
+/**/ {{{0x73c9b0e1, 0xbf4581ce} },
+/**/ {{0x61414697, 0xbbdda0c2} },},
+/**/ {{{0x3041f02a, 0xbf4501b9} },
+/**/ {{0x22f8b33c, 0x3bee5d53} },},
+/**/ {{{0x6ce439ca, 0xbf4481a4} },
+/**/ {{0x9c25c999, 0xbbe5512f} },},
+/**/ {{{0x29af8d47, 0xbf440190} },
+/**/ {{0xa4df0dfd, 0x3b7f48c2} },},
+/**/ {{{0x66a2ea26, 0xbf43817c} },
+/**/ {{0x517febd8, 0x3bd157c0} },},
+/**/ {{{0x23bd4ff0, 0xbf430169} },
+/**/ {{0x0176d244, 0xbbe2e229} },},
+/**/ {{{0x60fdbe33, 0xbf428156} },
+/**/ {{0x175812b3, 0x3be64664} },},
+/**/ {{{0x1e63347c, 0xbf420144} },
+/**/ {{0xd9355524, 0xbbe39ab4} },},
+/**/ {{{0x5becb260, 0xbf418132} },
+/**/ {{0xb6e1edc9, 0x3be74b27} },},
+/**/ {{{0x19993772, 0xbf410121} },
+/**/ {{0x393ab56a, 0xbbaa390b} },},
+/**/ {{{0x5767c34c, 0xbf408110} },
+/**/ {{0xf8c7783b, 0x3bd128e6} },},
+/**/ {{{0x15575589, 0xbf400100} },
+/**/ {{0xf23ef222, 0x3bec8863} },},
+/**/ {{{0xa6cddb8d, 0xbf3f01e0} },
+/**/ {{0xcdd29c3f, 0x3b8a9419} },},
+/**/ {{{0x232b174e, 0xbf3e01c2} },
+/**/ {{0xd5f5b191, 0xbbc7cf55} },},
+/**/ {{{0x9fc45d9e, 0xbf3d01a4} },
+/**/ {{0xb5038e7e, 0x3bddc58f} },},
+/**/ {{{0x1c97adca, 0xbf3c0188} },
+/**/ {{0xbb933e41, 0x3bc0238d} },},
+/**/ {{{0x99a30728, 0xbf3b016c} },
+/**/ {{0xc3c43664, 0xbbabde04} },},
+/**/ {{{0x16e46913, 0xbf3a0152} },
+/**/ {{0x5adc3673, 0x3bafe081} },},
+/**/ {{{0x9459d2eb, 0xbf390138} },
+/**/ {{0xc2a33d26, 0xbbd949da} },},
+/**/ {{{0x12014418, 0xbf380120} },
+/**/ {{0xf76e0326, 0xbbd3acbc} },},
+/**/ {{{0x8fd8bc07, 0xbf370108} },
+/**/ {{0x4cd6ce34, 0x3bdbde09} },},
+/**/ {{{0x0dde3a29, 0xbf3600f2} },
+/**/ {{0x05442a35, 0xbbb0bc28} },},
+/**/ {{{0x8c0fbdf9, 0xbf3500dc} },
+/**/ {{0x0908cbf7, 0x3bd21c68} },},
+/**/ {{{0x0a6b46f4, 0xbf3400c8} },
+/**/ {{0x0f107564, 0xbbdbd35e} },},
+/**/ {{{0x88eed4a1, 0xbf3300b4} },
+/**/ {{0x49a3dcb8, 0xbbc22067} },},
+/**/ {{{0x0798668a, 0xbf3200a2} },
+/**/ {{0xe7c5d0e5, 0x3bcdb7f0} },},
+/**/ {{{0x8665fc3f, 0xbf310090} },
+/**/ {{0xc7f9d69c, 0xbbd00add} },},
+/**/ {{{0x05559559, 0xbf300080} },
+/**/ {{0xa0e20e2f, 0x3bddd332} },},
+/**/ {{{0x08ca62e5, 0xbf2e00e1} },
+/**/ {{0x3a04bb77, 0xbbb15ff9} },},
+/**/ {{{0x0725a061, 0xbf2c00c4} },
+/**/ {{0xcc052f3e, 0x3bc88ab0} },},
+/**/ {{{0x05b8e275, 0xbf2a00a9} },
+/**/ {{0xf5f3cbcf, 0xbbcbba1a} },},
+/**/ {{{0x04802882, 0xbf280090} },
+/**/ {{0xa5bd7bd0, 0x3bcec900} },},
+/**/ {{{0x037771ef, 0xbf260079} },
+/**/ {{0x9b7b54fa, 0x3bb77ea0} },},
+/**/ {{{0x029abe33, 0xbf240064} },
+/**/ {{0x3ae68d18, 0xbbc1bbf0} },},
+/**/ {{{0x01e60cd1, 0xbf220051} },
+/**/ {{0x2b45cfcd, 0x3bb1dcd9} },},
+/**/ {{{0x01555d56, 0xbf200040} },
+/**/ {{0x863f53f6, 0x3bcddd88} },},
+/**/ {{{0x01c95eb7, 0xbf1c0062} },
+/**/ {{0xaa4dfd9a, 0x3bbd88f7} },},
+/**/ {{{0x01200510, 0xbf180048} },
+/**/ {{0x4f3db50b, 0xbb984d46} },},
+/**/ {{{0x00a6ad1c, 0xbf140032} },
+/**/ {{0x28ff1135, 0x3bb2e44b} },},
+/**/ {{{0x00555655, 0xbf100020} },
+/**/ {{0xccd5f17f, 0xbbb62224} },},
+/**/ {{{0x004800a2, 0xbf080024} },
+/**/ {{0x8d690542, 0xbb484d09} },},
+/**/ {{{0x00155575, 0xbf000010} },
+/**/ {{0x37779c0a, 0xbba56222} },},
+/**/ {{{0x00055559, 0xbef00008} },
+/**/ {{0x22cccd5f, 0xbb955622} },},
+/**/ {{{0x00000000, 0x00000000} },
+/**/ {{0x00000000, 0x00000000} },},
+/**/ {{{0x000aaaa3, 0x3eeffff0} },
+/**/ {{0xbd110fec, 0xbb8553bb} },},
+/**/ {{{0x002aaa6b, 0x3effffe0} },
+/**/ {{0xe6661d42, 0xbb953bbb} },},
+/**/ {{{0x0047ff5e, 0x3f07ffdc} },
+/**/ {{0x0d69020e, 0x3b484c90} },},
+/**/ {{{0x00aaa8ab, 0x3f0fffc0} },
+/**/ {{0x10fec82c, 0xbba3bbc1} },},
+/**/ {{{0x00a6a83a, 0x3f13ffce} },
+/**/ {{0x81546808, 0xbbb2e45f} },},
+/**/ {{{0x011ffaf0, 0x3f17ffb8} },
+/**/ {{0x4f3d9b6a, 0x3b984c53} },},
+/**/ {{{0x01c94bf5, 0x3f1bff9e} },
+/**/ {{0xdaa368ee, 0xbbbd8990} },},
+/**/ {{{0x02aa9aab, 0x3f1fff80} },
+/**/ {{0x78af0afc, 0x3b910e66} },},
+/**/ {{{0x01e5f330, 0x3f21ffaf} },
+/**/ {{0x26467402, 0xbbb1df8d} },},
+/**/ {{{0x029a9723, 0x3f23ff9c} },
+/**/ {{0x303b23b1, 0x3bc1b965} },},
+/**/ {{{0x037738be, 0x3f25ff87} },
+/**/ {{0x53d3dc06, 0xbbb787a3} },},
+/**/ {{{0x047fd782, 0x3f27ff70} },
+/**/ {{0xa5c0aff0, 0xbbced098} },},
+/**/ {{{0x05b872e4, 0x3f29ff57} },
+/**/ {{0x81c30d42, 0x3bcbadd4} },},
+/**/ {{{0x07250a51, 0x3f2bff3c} },
+/**/ {{0xd6bad8c1, 0xbbc89dd6} },},
+/**/ {{{0x08c99d24, 0x3f2dff1f} },
+/**/ {{0xaede8ad0, 0x3bb12609} },},
+/**/ {{{0x0aaa2ab1, 0x3f2fff00} },
+/**/ {{0x4dc4e3dc, 0x3ba0bbc0} },},
+/**/ {{{0x8665591f, 0x3f30ff6f} },
+/**/ {{0x80357b54, 0xbbd013d3} },},
+/**/ {{{0x07979982, 0x3f31ff5e} },
+/**/ {{0x4817ebcd, 0xbbce0e70} },},
+/**/ {{{0x88edd619, 0x3f32ff4b} },
+/**/ {{0xc582abc3, 0xbbd72b9e} },},
+/**/ {{{0x0a6a0e74, 0x3f33ff38} },
+/**/ {{0xb95bc1fe, 0x3bdb81fc} },},
+/**/ {{{0x8c0e4220, 0x3f34ff23} },
+/**/ {{0x9b549aae, 0x3bcaed12} },},
+/**/ {{{0x0ddc70a1, 0x3f35ff0e} },
+/**/ {{0xd97a3c05, 0x3bacf6f3} },},
+/**/ {{{0x8fd69976, 0x3f36fef7} },
+/**/ {{0x6f810a3c, 0x3bab2dcf} },},
+/**/ {{{0x11febc18, 0x3f37fee0} },
+/**/ {{0xf5d3f323, 0x3bd2b9bc} },},
+/**/ {{{0x9456d7fb, 0x3f38fec7} },
+/**/ {{0x6eaa1d6a, 0xbbbfb258} },},
+/**/ {{{0x16e0ec8b, 0x3f39feae} },
+/**/ {{0xceeb34b1, 0xbbb6137a} },},
+/**/ {{{0x999ef930, 0x3f3afe93} },
+/**/ {{0xdc639b08, 0xbbde70e0} },},
+/**/ {{{0x1c92fd4a, 0x3f3bfe78} },
+/**/ {{0x713cc126, 0xbbc4ed10} },},
+/**/ {{{0x9fbef835, 0x3f3cfe5b} },
+/**/ {{0xcc0e81bd, 0xbb873d63} },},
+/**/ {{{0x2324e946, 0x3f3dfe3e} },
+/**/ {{0x62dd5deb, 0x3bc09164} },},
+/**/ {{{0xa6c6cfcc, 0x3f3efe1f} },
+/**/ {{0x3512d15c, 0x3bdac2da} },},
+/**/ {{{0x2aa6ab11, 0x3f3ffe00} },
+/**/ {{0x62cc632d, 0x3b999e2b} },},
+/**/ {{{0xd7633d2c, 0x3f407eef} },
+/**/ {{0x63ff6024, 0xbbebc98b} },},
+/**/ {{{0x19941e6e, 0x3f40fedf} },
+/**/ {{0xe0aa6338, 0xbbb194c2} },},
+/**/ {{{0xdbe6f8eb, 0x3f417ecd} },
+/**/ {{0x57b0f571, 0x3be4241b} },},
+/**/ {{{0x1e5ccc3c, 0x3f41febc} },
+/**/ {{0x895d3592, 0x3bdc657d} },},
+/**/ {{{0xe0f697f6, 0x3f427ea9} },
+/**/ {{0x1c0ec17c, 0x3be35a5d} },},
+/**/ {{{0x23b55bac, 0x3f42fe97} },
+/**/ {{0x3e538464, 0x3bd6cfb7} },},
+/**/ {{{0xe69a16ed, 0x3f437e83} },
+/**/ {{0x7cef2478, 0x3bee96f7} },},
+/**/ {{{0x29a5c947, 0x3f43fe70} },
+/**/ {{0xbf46e36a, 0xbbd4d578} },},
+/**/ {{{0xecd97242, 0x3f447e5b} },
+/**/ {{0x3ff7dd44, 0xbbc9eb66} },},
+/**/ {{{0x30361165, 0x3f44fe47} },
+/**/ {{0x7e93f2fd, 0x3be400d7} },},
+/**/ {{{0xf3bca635, 0x3f457e31} },
+/**/ {{0xd375017f, 0xbbe0e2a2} },},
+/**/ {{{0x376e3031, 0x3f45fe1c} },
+/**/ {{0x8a5ae7f6, 0xbbd524eb} },},
+/**/ {{{0xfb4baed7, 0x3f467e05} },
+/**/ {{0x4e85c4e9, 0x3be204fb} },},
+/**/ {{{0x3f5621a3, 0x3f46fdef} },
+/**/ {{0x34886d52, 0xbbdf09d7} },},
+/**/ {{{0x038e880b, 0x3f477dd8} },
+/**/ {{0x14e596a3, 0xbbb8900e} },},
+/**/ {{{0x47f5e185, 0x3f47fdc0} },
+/**/ {{0x57d202d3, 0xbbebfa5c} },},
+/**/ {{{0x0c8d2d81, 0x3f487da8} },
+/**/ {{0xd68c0614, 0x3be2f6ae} },},
+/**/ {{{0x51556b70, 0x3f48fd8f} },
+/**/ {{0xe08fd201, 0xbbd0f4f2} },},
+/**/ {{{0x164f9abc, 0x3f497d76} },
+/**/ {{0xa871af60, 0x3b5296b7} },},
+/**/ {{{0x5b7cbace, 0x3f49fd5c} },
+/**/ {{0x9f17d42d, 0x3beb6ed4} },},
+/**/ {{{0x20ddcb0d, 0x3f4a7d42} },
+/**/ {{0x67c30397, 0xbbcb1149} },},
+/**/ {{{0x6673cada, 0x3f4afd27} },
+/**/ {{0x45da594f, 0x3bd32225} },},
+/**/ {{{0x2c3fb996, 0x3f4b7d0c} },
+/**/ {{0x208d4630, 0xbbb68893} },},
+/**/ {{{0x7242969d, 0x3f4bfcf0} },
+/**/ {{0x2b3efe1c, 0x3bc5db4d} },},
+/**/ {{{0x387d6149, 0x3f4c7cd4} },
+/**/ {{0xed57d98a, 0x3be46eff} },},
+/**/ {{{0x7ef118f1, 0x3f4cfcb7} },
+/**/ {{0x06f300fb, 0x3becc554} },},
+/**/ {{{0x459ebce9, 0x3f4d7c9a} },
+/**/ {{0x13638eb6, 0x3be1d251} },},
+/**/ {{{0x8c874c82, 0x3f4dfc7c} },
+/**/ {{0xd57a176f, 0xbbe863e9} },},
+/**/ {{{0x53abc708, 0x3f4e7c5e} },
+/**/ {{0x9528e50d, 0x3be2d95c} },},
+/**/ {{{0x9b0d2bc8, 0x3f4efc3f} },
+/**/ {{0xa5f5b8b7, 0x3bd1e8e8} },},
+/**/ {{{0x62ac7a09, 0x3f4f7c20} },
+/**/ {{0x17802a46, 0x3b5c8123} },},
+/**/ {{{0xaa8ab110, 0x3f4ffc00} },
+/**/ {{0xeb9b6cdb, 0xbbe0fecb} },},
+/**/ {{{0x3954680f, 0x3f503df0} },
+/**/ {{0x1c693678, 0x3bdac89b} },},
+/**/ {{{0xdd83eb3a, 0x3f507ddf} },
+/**/ {{0x0a75ad5f, 0xbbf638f6} },},
+/**/ {{{0x41d461a5, 0x3f50bdcf} },
+/**/ {{0x45f05b10, 0x3bfd4bc9} },},
+/**/ {{{0x66464aef, 0x3f50fdbe} },
+/**/ {{0x6abbf59c, 0xbbbd0554} },},
+/**/ {{{0x4ada26b1, 0x3f513dad} },
+/**/ {{0x6036fe6f, 0x3be38c65} },},
+/**/ {{{0xef907485, 0x3f517d9b} },
+/**/ {{0xf158bbc3, 0x3bfdc8a1} },},
+/**/ {{{0x5469b404, 0x3f51bd8a} },
+/**/ {{0x55632e3f, 0xbbdea231} },},
+/**/ {{{0x796664c3, 0x3f51fd78} },
+/**/ {{0x2edb73c2, 0xbbe00849} },},
+/**/ {{{0x5e870657, 0x3f523d66} },
+/**/ {{0x0789343e, 0x3bfba943} },},
+/**/ {{{0x03cc1855, 0x3f527d54} },
+/**/ {{0xeafafc52, 0x3bc5f644} },},
+/**/ {{{0x69361a4e, 0x3f52bd41} },
+/**/ {{0xa4a6e79f, 0xbbf2f743} },},
+/**/ {{{0x8ec58bd2, 0x3f52fd2e} },
+/**/ {{0x5ceb1abf, 0xbbd4f786} },},
+/**/ {{{0x747aec71, 0x3f533d1b} },
+/**/ {{0x49dc497d, 0xbbf369e3} },},
+/**/ {{{0x1a56bbb8, 0x3f537d08} },
+/**/ {{0x3726b14a, 0xbbfc5e6f} },},
+/**/ {{{0x80597933, 0x3f53bcf4} },
+/**/ {{0x808f75a7, 0xbbfe8b82} },},
+/**/ {{{0xa683a46c, 0x3f53fce0} },
+/**/ {{0x9cd06ae6, 0x3be02719} },},
+/**/ {{{0x8cd5bced, 0x3f543ccc} },
+/**/ {{0x758f80f8, 0x3bf9f98d} },},
+/**/ {{{0x3350423e, 0x3f547cb8} },
+/**/ {{0x48401f45, 0xbbd79c3d} },},
+/**/ {{{0x99f3b3e4, 0x3f54bca3} },
+/**/ {{0x2fba8948, 0xbbf422b8} },},
+/**/ {{{0xc0c09163, 0x3f54fc8e} },
+/**/ {{0xf4044be8, 0x3bf32cc1} },},
+/**/ {{{0xa7b75a40, 0x3f553c79} },
+/**/ {{0xf2249008, 0xbbe72cac} },},
+/**/ {{{0x4ed88dfb, 0x3f557c64} },
+/**/ {{0x459a204f, 0xbbe7183c} },},
+/**/ {{{0xb624ac14, 0x3f55bc4e} },
+/**/ {{0xba26d3d7, 0x3bf8aa64} },},
+/**/ {{{0xdd9c340b, 0x3f55fc38} },
+/**/ {{0x45fa193c, 0x3bdbb2ff} },},
+/**/ {{{0xc53fa55c, 0x3f563c22} },
+/**/ {{0x0484397b, 0x3bd67249} },},
+/**/ {{{0x6d0f7f83, 0x3f567c0c} },
+/**/ {{0xf1e73188, 0xbbd183d7} },},
+/**/ {{{0xd50c41fa, 0x3f56bbf5} },
+/**/ {{0x4ab68187, 0xbbef433d} },},
+/**/ {{{0xfd366c39, 0x3f56fbde} },
+/**/ {{0x66e09e58, 0x3be796b8} },},
+/**/ {{{0xe58e7db8, 0x3f573bc7} },
+/**/ {{0x81e6e7e6, 0x3bf65ec5} },},
+/**/ {{{0x8e14f5ed, 0x3f577bb0} },
+/**/ {{0xa9463a9c, 0xbbdb944d} },},
+/**/ {{{0xf6ca544b, 0x3f57bb98} },
+/**/ {{0xc5eda344, 0xbbc396ec} },},
+/**/ {{{0x1faf1845, 0x3f57fb81} },
+/**/ {{0xbb624f97, 0x3beb9e6d} },},
+/**/ {{{0x08c3c14d, 0x3f583b69} },
+/**/ {{0xe6295bf2, 0xbbe6ee13} },},
+/**/ {{{0xb208ced1, 0x3f587b50} },
+/**/ {{0x6ca19875, 0x3bfcf1a5} },},
+/**/ {{{0x1b7ec041, 0x3f58bb38} },
+/**/ {{0x07b4fc7e, 0x3bf2d181} },},
+/**/ {{{0x45261509, 0x3f58fb1f} },
+/**/ {{0x21bad336, 0x3bc419c5} },},
+/**/ {{{0x2eff4c94, 0x3f593b06} },
+/**/ {{0x700b305b, 0xbbdc2a4c} },},
+/**/ {{{0xd90ae64c, 0x3f597aec} },
+/**/ {{0xa23f359c, 0xbbfc53d3} },},
+/**/ {{{0x43496198, 0x3f59bad3} },
+/**/ {{0xaed6b50f, 0x3bf0c270} },},
+/**/ {{{0x6dbb3de1, 0x3f59fab9} },
+/**/ {{0x7a8be031, 0xbbf11464} },},
+/**/ {{{0x5860fa8a, 0x3f5a3a9f} },
+/**/ {{0x470dbe32, 0x3beae9e7} },},
+/**/ {{{0x033b16f8, 0x3f5a7a85} },
+/**/ {{0xda1f8579, 0x3bfc4721} },},
+/**/ {{{0x6e4a128e, 0x3f5aba6a} },
+/**/ {{0x029258ce, 0xbbf41852} },},
+/**/ {{{0x998e6cab, 0x3f5afa4f} },
+/**/ {{0x2eb18782, 0xbbf28584} },},
+/**/ {{{0x8508a4af, 0x3f5b3a34} },
+/**/ {{0x23241a2c, 0xbbea7970} },},
+/**/ {{{0x30b939f8, 0x3f5b7a19} },
+/**/ {{0x600551b6, 0xbbf1d8db} },},
+/**/ {{{0x9ca0abe2, 0x3f5bb9fd} },
+/**/ {{0x8c26cc71, 0xbbeaa412} },},
+/**/ {{{0xc8bf79c8, 0x3f5bf9e1} },
+/**/ {{0x30427cfc, 0xbbe7f81b} },},
+/**/ {{{0xb5162303, 0x3f5c39c5} },
+/**/ {{0xd1f134e1, 0x3bd9ec5f} },},
+/**/ {{{0x61a526eb, 0x3f5c79a9} },
+/**/ {{0x8980e47d, 0x3bff0cb0} },},
+/**/ {{{0xce6d04d7, 0x3f5cb98c} },
+/**/ {{0xe84ca4e2, 0x3bf35aca} },},
+/**/ {{{0xfb6e3c1b, 0x3f5cf96f} },
+/**/ {{0x1b0bd69f, 0x3bf9b1b8} },},
+/**/ {{{0xe8a94c0b, 0x3f5d3952} },
+/**/ {{0x3ce51832, 0x3be21310} },},
+/**/ {{{0x961eb3f8, 0x3f5d7935} },
+/**/ {{0x840c58ce, 0x3bf90786} },},
+/**/ {{{0x03cef334, 0x3f5db918} },
+/**/ {{0xf2dfb3f4, 0xbbfe0048} },},
+/**/ {{{0x31ba890b, 0x3f5df8fa} },
+/**/ {{0x3e295bec, 0x3bfcf652} },},
+/**/ {{{0x1fe1f4ce, 0x3f5e38dc} },
+/**/ {{0x151c9300, 0xbbfc5ebe} },},
+/**/ {{{0xce45b5c6, 0x3f5e78bd} },
+/**/ {{0x8a25b9c7, 0xbbef2cc4} },},
+/**/ {{{0x3ce64b3e, 0x3f5eb89f} },
+/**/ {{0xa6fea7bd, 0x3bfe6d27} },},
+/**/ {{{0x6bc43481, 0x3f5ef880} },
+/**/ {{0x914a6dab, 0xbbf68037} },},
+/**/ {{{0x5adff0d4, 0x3f5f3861} },
+/**/ {{0xf909e0e6, 0xbbf1d2f3} },},
+/**/ {{{0x0a39ff7e, 0x3f5f7842} },
+/**/ {{0xff1e1f71, 0xbbf64661} },},
+/**/ {{{0x79d2dfc3, 0x3f5fb822} },
+/**/ {{0x5a6f9e9a, 0xbbd76ce8} },},
+/**/ {{{0xa9ab10e6, 0x3f5ff802} },
+/**/ {{0xa153e3b2, 0x3bfe29e3} },},
+/**/ {{{0x4ce18915, 0x3f601bf1} },
+/**/ {{0xa3a73044, 0xbbe57c28} },},
+/**/ {{{0x250db166, 0x3f603be1} },
+/**/ {{0xc1ad9590, 0x3c0fd271} },},
+/**/ {{{0xdd5a4107, 0x3f605bd0} },
+/**/ {{0xc424c676, 0x3bfe4b5d} },},
+/**/ {{{0x75c77796, 0x3f607bc0} },
+/**/ {{0xc0eff1ba, 0xbc068804} },},
+/**/ {{{0xee5594b0, 0x3f609baf} },
+/**/ {{0x51dbded5, 0xbc0ff798} },},
+/**/ {{{0x4704d7f2, 0x3f60bb9f} },
+/**/ {{0x2d5aba70, 0xbbf70ef4} },},
+/**/ {{{0x7fd580f9, 0x3f60db8e} },
+/**/ {{0x7ae804b5, 0xbbeccb65} },},
+/**/ {{{0x98c7cf60, 0x3f60fb7d} },
+/**/ {{0x1775134d, 0x3bfede2f} },},
+/**/ {{{0x91dc02c3, 0x3f611b6c} },
+/**/ {{0x91ca4a67, 0xbc04d41e} },},
+/**/ {{{0x6b125aba, 0x3f613b5b} },
+/**/ {{0x4a12201d, 0x3bfe6d0c} },},
+/**/ {{{0x246b16e0, 0x3f615b4a} },
+/**/ {{0x4d4238d3, 0x3bfe507d} },},
+/**/ {{{0xbde676cd, 0x3f617b38} },
+/**/ {{0x0640462a, 0x3bfe0272} },},
+/**/ {{{0x3784ba19, 0x3f619b27} },
+/**/ {{0x02285659, 0x3bd94ab3} },},
+/**/ {{{0x9146205b, 0x3f61bb15} },
+/**/ {{0x1cc35b7b, 0xbbff1e2e} },},
+/**/ {{{0xcb2ae929, 0x3f61db03} },
+/**/ {{0x12f6bf8d, 0xbc03ee8e} },},
+/**/ {{{0xe5335418, 0x3f61faf1} },
+/**/ {{0x7b7d619b, 0x3c0bae5f} },},
+/**/ {{{0xdf5fa0bf, 0x3f621adf} },
+/**/ {{0xb3b731b0, 0xbbf5546a} },},
+/**/ {{{0xb9b00eb0, 0x3f623acd} },
+/**/ {{0x105fd253, 0xbbafb2b0} },},
+/**/ {{{0x7424dd7f, 0x3f625abb} },
+/**/ {{0xca53444b, 0x3c011647} },},
+/**/ {{{0x0ebe4cbf, 0x3f627aa9} },
+/**/ {{0x592f3be8, 0x3c01678f} },},
+/**/ {{{0x897c9c02, 0x3f629a96} },
+/**/ {{0x4347451d, 0xbbef2b12} },},
+/**/ {{{0xe4600ad8, 0x3f62ba83} },
+/**/ {{0xb2a477bc, 0x3bfb5bb7} },},
+/**/ {{{0x1f68d8d3, 0x3f62da71} },
+/**/ {{0x7a5822e4, 0xbc0590e1} },},
+/**/ {{{0x3a974581, 0x3f62fa5e} },
+/**/ {{0x53123101, 0xbbf0f2e5} },},
+/**/ {{{0x35eb9072, 0x3f631a4b} },
+/**/ {{0x0e3f5fde, 0xbc018db4} },},
+/**/ {{{0x1165f933, 0x3f633a38} },
+/**/ {{0x8d0afb38, 0x3c0921d5} },},
+/**/ {{{0xcd06bf53, 0x3f635a24} },
+/**/ {{0xb5791b80, 0x3c01f6ba} },},
+/**/ {{{0x68ce225e, 0x3f637a11} },
+/**/ {{0xa1894236, 0x3bde2af8} },},
+/**/ {{{0xe4bc61e0, 0x3f6399fd} },
+/**/ {{0xd0f06ff3, 0xbc062a48} },},
+/**/ {{{0x40d1bd63, 0x3f63b9ea} },
+/**/ {{0x4b4f9c11, 0x3bffc80c} },},
+/**/ {{{0x7d0e7473, 0x3f63d9d6} },
+/**/ {{0x6a92c891, 0x3c02219b} },},
+/**/ {{{0x9972c699, 0x3f63f9c2} },
+/**/ {{0x790ade9e, 0x3c0d3590} },},
+/**/ {{{0x95fef35f, 0x3f6419ae} },
+/**/ {{0x792a458c, 0xbc01c279} },},
+/**/ {{{0x72b33a4b, 0x3f64399a} },
+/**/ {{0x327bffae, 0x3c02ce64} },},
+/**/ {{{0x2f8fdae7, 0x3f645986} },
+/**/ {{0xd231155c, 0xbc070aec} },},
+/**/ {{{0xcc9514b7, 0x3f647971} },
+/**/ {{0xe4bbf776, 0x3c0f373d} },},
+/**/ {{{0x49c32744, 0x3f64995d} },
+/**/ {{0xbf22b2a7, 0xbbf6d7e5} },},
+/**/ {{{0xa71a5211, 0x3f64b948} },
+/**/ {{0x64fe2936, 0xbbedec69} },},
+/**/ {{{0xe49ad4a3, 0x3f64d933} },
+/**/ {{0xabee4257, 0x3bf5fc4b} },},
+/**/ {{{0x0244ee7e, 0x3f64f91f} },
+/**/ {{0x3cd1474f, 0x3c0c6fe3} },},
+/**/ {{{0x0018df26, 0x3f65190a} },
+/**/ {{0xd11e7fa5, 0xbc023957} },},
+/**/ {{{0xde16e61b, 0x3f6538f4} },
+/**/ {{0x55380346, 0x3c006c31} },},
+/**/ {{{0x9c3f42e1, 0x3f6558df} },
+/**/ {{0xc4a5134c, 0xbc09b7d4} },},
+/**/ {{{0x3a9234f7, 0x3f6578ca} },
+/**/ {{0x2772c19c, 0xbc0e3f10} },},
+/**/ {{{0xb90ffbdd, 0x3f6598b4} },
+/**/ {{0x5592b468, 0x3be6f110} },},
+/**/ {{{0x17b8d714, 0x3f65b89f} },
+/**/ {{0xb251ace2, 0xbc0a5fea} },},
+/**/ {{{0x568d0619, 0x3f65d889} },
+/**/ {{0x315da285, 0xbc0aacc9} },},
+/**/ {{{0x758cc86a, 0x3f65f873} },
+/**/ {{0xba64d81a, 0xbbeb0782} },},
+/**/ {{{0x74b85d85, 0x3f66185d} },
+/**/ {{0x8e1eb3fa, 0xbc09b459} },},
+/**/ {{{0x541004e5, 0x3f663847} },
+/**/ {{0x1d86e863, 0x3bce9c22} },},
+/**/ {{{0x1393fe07, 0x3f665831} },
+/**/ {{0xcf37ee90, 0xbbfbeb77} },},
+/**/ {{{0xb3448865, 0x3f66781a} },
+/**/ {{0xc252e3c9, 0xbc02dc68} },},
+/**/ {{{0x3321e379, 0x3f669804} },
+/**/ {{0xb40b3741, 0xbbe73a0b} },},
+ };
+
+#endif
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/upow.h b/REORG.TODO/sysdeps/ieee754/dbl-64/upow.h
new file mode 100644
index 0000000000..9dcbd3eb2b
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/upow.h
@@ -0,0 +1,76 @@
+/*
+ * IBM Accurate Mathematical Library
+ * Written by International Business Machines Corp.
+ * Copyright (C) 2001-2017 Free Software Foundation, Inc.
+ *
+ * This program 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 2.1 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 program; if not, see <http://www.gnu.org/licenses/>.
+ */
+
+/******************************************************************/
+/* */
+/* MODULE_NAME:upow.h */
+/* */
+/* common data and variables prototype and definition */
+/******************************************************************/
+
+#ifndef UPOW_H
+#define UPOW_H
+
+#include "mydefs.h"
+
+#ifdef BIG_ENDI
+ const static mynumber
+/**/ nZERO = {{0x80000000, 0}}, /* -0.0 */
+/**/ INF = {{0x7ff00000, 0x00000000}}, /* INF */
+/**/ nINF = {{0xfff00000, 0x00000000}}, /* -INF */
+/**/ ln2a = {{0x3fe62e42, 0xfefa3800}}, /* ln(2) 43 bits */
+/**/ ln2b = {{0x3d2ef357, 0x93c76730}}, /* ln(2)-ln2a */
+/**/ bigu = {{0x4297ffff, 0xfffffd2c}}, /* 1.5*2**42 -724*2**-10 */
+/**/ bigv = {{0x4207ffff, 0xfff8016a}}, /* 1.5*2**33-1+362*2**-19 */
+/**/ t52 = {{0x43300000, 0x00000000}}, /* 2**52 */
+/**/ two52e = {{0x43300000, 0x000003ff}}; /* 2**52' */
+
+#else
+#ifdef LITTLE_ENDI
+ const static mynumber
+/**/ nZERO = {{0, 0x80000000}}, /* -0.0 */
+/**/ INF = {{0x00000000, 0x7ff00000}}, /* INF */
+/**/ nINF = {{0x00000000, 0xfff00000}}, /* -INF */
+/**/ ln2a = {{0xfefa3800, 0x3fe62e42}}, /* ln(2) 43 bits */
+/**/ ln2b = {{0x93c76730, 0x3d2ef357}}, /* ln(2)-ln2a */
+/**/ bigu = {{0xfffffd2c, 0x4297ffff}}, /* 1.5*2**42 -724*2**-10 */
+/**/ bigv = {{0xfff8016a, 0x4207ffff}}, /* 1.5*2**33-1+362*2**-19 */
+/**/ t52 = {{0x00000000, 0x43300000}}, /* 2**52 */
+/**/ two52e = {{0x000003ff, 0x43300000}}; /* 2**52' */
+
+#endif
+#endif
+
+const static double p2=-0.5, p3 = 3.3333333333333333333e-1, p4 = -0.25,
+ q2 = -0.5, q3 = 3.3333333333331404e-01, q4 = -2.4999999999996436e-01,
+ q5 = 2.0000010500004459e-01, q6 = -1.6666678916688004e-01,
+ r3 = 3.33333333333333333372884096563030E-01,
+ r4 = -2.50000000000000000213574153875908E-01,
+ r5 = 1.99999999999683593814072199830603E-01,
+ r6 = -1.66666666666065494878165510225378E-01,
+ r7 = 1.42857517857114380606360005067609E-01,
+ r8 = -1.25000449999974370683775964001702E-01,
+ s3 = 0.333251953125000000e0,
+ ss3 = 8.138020833333333333e-05,
+ s4 = -2.500000000000000000e-01,
+ s5 = 1.999999999999960937e-01,
+ s6 = -1.666666666666592447e-01,
+ s7 = 1.428571845238194705e-01,
+ s8 = -1.250000500000149097e-01;
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/upow.tbl b/REORG.TODO/sysdeps/ieee754/dbl-64/upow.tbl
new file mode 100644
index 0000000000..f92c69c521
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/upow.tbl
@@ -0,0 +1,10188 @@
+/*
+ * IBM Accurate Mathematical Library
+ * Written by International Business Machines Corp.
+ * Copyright (C) 2001-2017 Free Software Foundation, Inc.
+ *
+ * This program 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 2.1 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 program; if not, see <http://www.gnu.org/licenses/>.
+ */
+
+/****************************************************************/
+/* TABLES FOR THE upow() FUNCTION */
+/****************************************************************/
+
+
+
+#ifdef BIG_ENDI
+static const union {int4 i[5800]; double x[2900];} ui = { .i = {
+/**/ 0x3FF6A000, 0x00000000,
+/**/ 0x3F33CD15, 0x3729043E,
+/**/ 0xBFD63003, 0x0B3AB000,
+/**/ 0x3D2DB623, 0xE731AE00,
+/**/ 0x3FF69800, 0x00000000,
+/**/ 0x3F33F349, 0xCC7267D0,
+/**/ 0xBFD61965, 0xCDB03000,
+/**/ 0x3D2F08AD, 0x603C488E,
+/**/ 0x3FF69000, 0x00000000,
+/**/ 0x3F3473A8, 0x8D0BFD2E,
+/**/ 0xBFD602D0, 0x8AF09000,
+/**/ 0xBD1EBE91, 0x76DF3F65,
+/**/ 0x3FF68800, 0x00000000,
+/**/ 0x3F354DD2, 0x390B9ED0,
+/**/ 0xBFD5EC43, 0x3D5C3000,
+/**/ 0xBD36B71A, 0x1229D17F,
+/**/ 0x3FF68000, 0x00000000,
+/**/ 0x3F368168, 0x16816817,
+/**/ 0xBFD5D5BD, 0xDF596000,
+/**/ 0x3D0A0B2A, 0x08A465DC,
+/**/ 0x3FF67800, 0x00000000,
+/**/ 0x3F380E0B, 0xF08C7765,
+/**/ 0xBFD5BF40, 0x6B544000,
+/**/ 0x3D227023, 0xEB68981C,
+/**/ 0x3FF67000, 0x00000000,
+/**/ 0x3F39F360, 0x16719F36,
+/**/ 0xBFD5A8CA, 0xDBBEE000,
+/**/ 0x3CF7C79B, 0x0AF7ECF8,
+/**/ 0x3FF66800, 0x00000000,
+/**/ 0x3F3C3107, 0x5AB40167,
+/**/ 0xBFD5925D, 0x2B113000,
+/**/ 0x3D369BF5, 0xA7A56F34,
+/**/ 0x3FF66000, 0x00000000,
+/**/ 0x3F3EC6A5, 0x122F9016,
+/**/ 0xBFD57BF7, 0x53C8D000,
+/**/ 0xBD1FADED, 0xEE5D40EF,
+/**/ 0x3FF65C00, 0x00000000,
+/**/ 0xBF3E4C22, 0xECCA9097,
+/**/ 0xBFD56599, 0x50695000,
+/**/ 0xBD14C5FD, 0x2BADC774,
+/**/ 0x3FF65400, 0x00000000,
+/**/ 0xBF3B07AC, 0x4B55CC62,
+/**/ 0xBFD54F43, 0x1B7BE000,
+/**/ 0xBD1A8954, 0xC0910952,
+/**/ 0x3FF64C00, 0x00000000,
+/**/ 0xBF376C52, 0x32DA090E,
+/**/ 0xBFD538F4, 0xAF8F7000,
+/**/ 0xBD27EC02, 0xE45547CE,
+/**/ 0x3FF64400, 0x00000000,
+/**/ 0xBF337A6F, 0x4DE9BD38,
+/**/ 0xBFD522AE, 0x0738A000,
+/**/ 0xBD2EBE70, 0x8164C759,
+/**/ 0x3FF63C00, 0x00000000,
+/**/ 0xBF2E64BB, 0x923C708B,
+/**/ 0xBFD50C6F, 0x1D11C000,
+/**/ 0x3D3A0E6B, 0x7E827C2C,
+/**/ 0x3FF63400, 0x00000000,
+/**/ 0xBF2528EE, 0xA7E43FD4,
+/**/ 0xBFD4F637, 0xEBBAA000,
+/**/ 0x3D3FC158, 0xCB3124B9,
+/**/ 0x3FF62C00, 0x00000000,
+/**/ 0xBF168454, 0x86689DF7,
+/**/ 0xBFD4E008, 0x6DD8C000,
+/**/ 0x3D34D692, 0xA1E44788,
+/**/ 0x3FF62400, 0x00000000,
+/**/ 0xBED623FA, 0x77016240,
+/**/ 0xBFD4C9E0, 0x9E173000,
+/**/ 0x3D2E2089, 0x1B0AD8A4,
+/**/ 0x3FF61C00, 0x00000000,
+/**/ 0x3F151300, 0x58715130,
+/**/ 0xBFD4B3C0, 0x77268000,
+/**/ 0x3D165B46, 0x81052B9F,
+/**/ 0x3FF61400, 0x00000000,
+/**/ 0x3F266D06, 0x35D2754E,
+/**/ 0xBFD49DA7, 0xF3BCC000,
+/**/ 0xBD307B33, 0x4DAF4B9A,
+/**/ 0x3FF60C00, 0x00000000,
+/**/ 0x3F317C61, 0xDA197F23,
+/**/ 0xBFD48797, 0x0E958000,
+/**/ 0xBD3DC1B8, 0x465CF25F,
+/**/ 0x3FF60400, 0x00000000,
+/**/ 0x3F381605, 0x81605816,
+/**/ 0xBFD4718D, 0xC271C000,
+/**/ 0xBD306C18, 0xFB4C14C5,
+/**/ 0x3FF5FC00, 0x00000000,
+/**/ 0x3F3F0317, 0xB5C6F559,
+/**/ 0xBFD45B8C, 0x0A17E000,
+/**/ 0x3D0D9120, 0xE7D0A853,
+/**/ 0x3FF5F800, 0x00000000,
+/**/ 0xBF39BCBD, 0x6D2041E3,
+/**/ 0xBFD44591, 0xE053A000,
+/**/ 0x3D06E958, 0x92923D88,
+/**/ 0x3FF5F000, 0x00000000,
+/**/ 0xBF3229CF, 0x5604CC40,
+/**/ 0xBFD42F9F, 0x3FF62000,
+/**/ 0xBD390644, 0x0F7D3354,
+/**/ 0x3FF5E800, 0x00000000,
+/**/ 0xBF2488E5, 0xFD431489,
+/**/ 0xBFD419B4, 0x23D5F000,
+/**/ 0x3D3CE379, 0x226DE3EC,
+/**/ 0x3FF5E000, 0x00000000,
+/**/ 0xBF0067E7, 0x6424E9C9,
+/**/ 0xBFD403D0, 0x86CEA000,
+/**/ 0xBD3E6EF5, 0x74487308,
+/**/ 0x3FF5D800, 0x00000000,
+/**/ 0x3F19F0FB, 0x38A94D24,
+/**/ 0xBFD3EDF4, 0x63C17000,
+/**/ 0x3D3F067C, 0x297F2C3F,
+/**/ 0x3FF5D000, 0x00000000,
+/**/ 0x3F2EADD9, 0x23CAD2AA,
+/**/ 0xBFD3D81F, 0xB5947000,
+/**/ 0x3D222C7C, 0x2A9D37A4,
+/**/ 0x3FF5C800, 0x00000000,
+/**/ 0x3F3882B9, 0x31057262,
+/**/ 0xBFD3C252, 0x77333000,
+/**/ 0xBD183B54, 0xB606BD5C,
+/**/ 0x3FF5C400, 0x00000000,
+/**/ 0xBF3E00AE, 0x10FFA8F8,
+/**/ 0xBFD3AC8C, 0xA38E6000,
+/**/ 0x3D2D0BEF, 0xBC02BE4A,
+/**/ 0x3FF5BC00, 0x00000000,
+/**/ 0xBF34339B, 0x8056EAF3,
+/**/ 0xBFD396CE, 0x359BC000,
+/**/ 0x3D05839C, 0x5663663D,
+/**/ 0x3FF5B400, 0x00000000,
+/**/ 0xBF242CC1, 0xF31D7FD5,
+/**/ 0xBFD38117, 0x28565000,
+/**/ 0x3D2A71E4, 0x93A0702B,
+/**/ 0x3FF5AC00, 0x00000000,
+/**/ 0x3ED5AC05, 0x6B015AC0,
+/**/ 0xBFD36B67, 0x76BE1000,
+/**/ 0xBD116ECD, 0xB0F177C8,
+/**/ 0x3FF5A400, 0x00000000,
+/**/ 0x3F26268D, 0x5BA55E5A,
+/**/ 0xBFD355BF, 0x1BD83000,
+/**/ 0x3D2BA99B, 0x8964F0E8,
+/**/ 0x3FF59C00, 0x00000000,
+/**/ 0x3F361F12, 0x3CCAA376,
+/**/ 0xBFD3401E, 0x12AED000,
+/**/ 0x3D317C73, 0x556E291D,
+/**/ 0x3FF59800, 0x00000000,
+/**/ 0xBF3E863D, 0x62D32417,
+/**/ 0xBFD32A84, 0x56512000,
+/**/ 0xBD04F928, 0x139AF5D6,
+/**/ 0x3FF59000, 0x00000000,
+/**/ 0xBF32DCF7, 0xEA712DCF,
+/**/ 0xBFD314F1, 0xE1D36000,
+/**/ 0x3D28E27A, 0xD3213CB8,
+/**/ 0x3FF58800, 0x00000000,
+/**/ 0xBF1B95B2, 0xA0CC87E8,
+/**/ 0xBFD2FF66, 0xB04EB000,
+/**/ 0x3D38AED2, 0x541E6E2E,
+/**/ 0x3FF58000, 0x00000000,
+/**/ 0x3F158056, 0x01580560,
+/**/ 0xBFD2E9E2, 0xBCE12000,
+/**/ 0xBD24300C, 0x128D1DC2,
+/**/ 0x3FF57800, 0x00000000,
+/**/ 0x3F31F340, 0x15791F34,
+/**/ 0xBFD2D466, 0x02ADD000,
+/**/ 0x3D288D0D, 0xDCD54196,
+/**/ 0x3FF57000, 0x00000000,
+/**/ 0x3F3ED3C5, 0x06B39A23,
+/**/ 0xBFD2BEF0, 0x7CDC9000,
+/**/ 0xBD2A9CFA, 0x4A5004F4,
+/**/ 0x3FF56C00, 0x00000000,
+/**/ 0xBF33FEA9, 0x53FEA954,
+/**/ 0xBFD2A982, 0x269A4000,
+/**/ 0x3D22058E, 0x557285CF,
+/**/ 0x3FF56400, 0x00000000,
+/**/ 0xBF1A1160, 0xEB478503,
+/**/ 0xBFD2941A, 0xFB187000,
+/**/ 0x3D3210C2, 0xB730E28B,
+/**/ 0x3FF55C00, 0x00000000,
+/**/ 0x3F1D09AD, 0xE4A18B2E,
+/**/ 0xBFD27EBA, 0xF58D9000,
+/**/ 0x3D2B1988, 0x00B4BDA7,
+/**/ 0x3FF55400, 0x00000000,
+/**/ 0x3F355555, 0x55555555,
+/**/ 0xBFD26962, 0x1134E000,
+/**/ 0x3D31B61F, 0x10522625,
+/**/ 0x3FF55000, 0x00000000,
+/**/ 0xBF3C4BE6, 0xB319A21F,
+/**/ 0xBFD25410, 0x494E5000,
+/**/ 0xBD3B1D7A, 0xC0EF77F2,
+/**/ 0x3FF54800, 0x00000000,
+/**/ 0xBF2B4328, 0x8FA03FD5,
+/**/ 0xBFD23EC5, 0x991EC000,
+/**/ 0x3D36DBE4, 0x48A2E522,
+/**/ 0x3FF54000, 0x00000000,
+/**/ 0x3EF54015, 0x40154015,
+/**/ 0xBFD22981, 0xFBEF8000,
+/**/ 0x3D3A1421, 0x609580DA,
+/**/ 0x3FF53800, 0x00000000,
+/**/ 0x3F30948F, 0x40FEAC6F,
+/**/ 0xBFD21445, 0x6D0EC000,
+/**/ 0x3D3CAF04, 0x28B728A3,
+/**/ 0x3FF53400, 0x00000000,
+/**/ 0xBF3FE034, 0xFD04F7B8,
+/**/ 0xBFD1FF0F, 0xE7CF4000,
+/**/ 0xBD3E9D5B, 0x513FF0C1,
+/**/ 0x3FF52C00, 0x00000000,
+/**/ 0xBF300A95, 0x7FAB5403,
+/**/ 0xBFD1E9E1, 0x6788A000,
+/**/ 0x3D382EAE, 0xD3C8B65E,
+/**/ 0x3FF52400, 0x00000000,
+/**/ 0x3EB52401, 0x52401524,
+/**/ 0xBFD1D4B9, 0xE796C000,
+/**/ 0xBD222A66, 0x7C42E56D,
+/**/ 0x3FF51C00, 0x00000000,
+/**/ 0x3F307EAE, 0x2F8151D0,
+/**/ 0xBFD1BF99, 0x635A7000,
+/**/ 0x3D31AC89, 0x575C2125,
+/**/ 0x3FF51800, 0x00000000,
+/**/ 0xBF3ECE3F, 0xEAE9ECE4,
+/**/ 0xBFD1AA7F, 0xD638D000,
+/**/ 0xBD29F60A, 0x9616F7A0,
+/**/ 0x3FF51000, 0x00000000,
+/**/ 0xBF2BA3DD, 0xC7675243,
+/**/ 0xBFD1956D, 0x3B9BC000,
+/**/ 0xBD27D2F7, 0x3AD1AA14,
+/**/ 0x3FF50800, 0x00000000,
+/**/ 0x3F0B9AC8, 0x764E368D,
+/**/ 0xBFD18061, 0x8EF19000,
+/**/ 0x3D3482FF, 0xC86D38E5,
+/**/ 0x3FF50000, 0x00000000,
+/**/ 0x3F350150, 0x15015015,
+/**/ 0xBFD16B5C, 0xCBAD0000,
+/**/ 0x3D323299, 0x042D74BF,
+/**/ 0x3FF4FC00, 0x00000000,
+/**/ 0xBF392851, 0x4A683C50,
+/**/ 0xBFD1565E, 0xED456000,
+/**/ 0x3CEE75AD, 0xFB6ABA25,
+/**/ 0x3FF4F400, 0x00000000,
+/**/ 0xBF1C2748, 0xACD95EF0,
+/**/ 0xBFD14167, 0xEF367000,
+/**/ 0xBD3E0C07, 0x824DAAF5,
+/**/ 0x3FF4EC00, 0x00000000,
+/**/ 0x3F26B90D, 0x67A47465,
+/**/ 0xBFD12C77, 0xCD007000,
+/**/ 0xBD13B294, 0x8A11F797,
+/**/ 0x3FF4E400, 0x00000000,
+/**/ 0x3F3E0A72, 0xF0539783,
+/**/ 0xBFD1178E, 0x8227E000,
+/**/ 0xBD31EF78, 0xCE2D07F2,
+/**/ 0x3FF4E000, 0x00000000,
+/**/ 0xBF2E00A6, 0xF87FD642,
+/**/ 0xBFD102AC, 0x0A35D000,
+/**/ 0x3D2F1FBD, 0xDFDFD686,
+/**/ 0x3FF4D800, 0x00000000,
+/**/ 0x3F10EFB7, 0x0B12E3FD,
+/**/ 0xBFD0EDD0, 0x60B78000,
+/**/ 0xBD0019B5, 0x2D8435F5,
+/**/ 0x3FF4D000, 0x00000000,
+/**/ 0x3F37BEF1, 0x5CB4DBE5,
+/**/ 0xBFD0D8FB, 0x813EB000,
+/**/ 0xBD1EE8C8, 0x8753FA35,
+/**/ 0x3FF4CC00, 0x00000000,
+/**/ 0xBF34778D, 0xA50918B1,
+/**/ 0xBFD0C42D, 0x67616000,
+/**/ 0xBD27188B, 0x163CEAE9,
+/**/ 0x3FF4C400, 0x00000000,
+/**/ 0xBED9F4F7, 0xE37288EC,
+/**/ 0xBFD0AF66, 0x0EB9E000,
+/**/ 0xBD23C7C3, 0xF528D80A,
+/**/ 0x3FF4BC00, 0x00000000,
+/**/ 0x3F33EDDA, 0x68FE0E42,
+/**/ 0xBFD09AA5, 0x72E6C000,
+/**/ 0xBD3B50A1, 0xE1734342,
+/**/ 0x3FF4B800, 0x00000000,
+/**/ 0xBF3776C6, 0xB72E47D9,
+/**/ 0xBFD085EB, 0x8F8AE000,
+/**/ 0xBD3E5D51, 0x3F45FE7B,
+/**/ 0x3FF4B000, 0x00000000,
+/**/ 0xBF04AFD6, 0xA052BF5B,
+/**/ 0xBFD07138, 0x604D6000,
+/**/ 0x3D3E7632, 0x4E912B17,
+/**/ 0x3FF4A800, 0x00000000,
+/**/ 0x3F328FFA, 0xD5B5C015,
+/**/ 0xBFD05C8B, 0xE0D96000,
+/**/ 0xBD2AD0F1, 0xC77CCB58,
+/**/ 0x3FF4A400, 0x00000000,
+/**/ 0xBF380528, 0x9FEB5D80,
+/**/ 0xBFD047E6, 0x0CDE8000,
+/**/ 0xBD2DBDF1, 0x0D397F3C,
+/**/ 0x3FF49C00, 0x00000000,
+/**/ 0xBF02AD3E, 0x25FF5B21,
+/**/ 0xBFD03346, 0xE0106000,
+/**/ 0xBCF89FF8, 0xA966395C,
+/**/ 0x3FF49400, 0x00000000,
+/**/ 0x3F339E3B, 0x2D066EA2,
+/**/ 0xBFD01EAE, 0x5626C000,
+/**/ 0xBD3A43DC, 0xFADE85AE,
+/**/ 0x3FF49000, 0x00000000,
+/**/ 0xBF3629C1, 0xAFB2E932,
+/**/ 0xBFD00A1C, 0x6ADDA000,
+/**/ 0xBD31CD8D, 0x688B9E18,
+/**/ 0x3FF48800, 0x00000000,
+/**/ 0x3ED48805, 0x22014880,
+/**/ 0xBFCFEB22, 0x33EA0000,
+/**/ 0xBD2F3418, 0xDE00938B,
+/**/ 0x3FF48000, 0x00000000,
+/**/ 0x3F37119F, 0x3D324D89,
+/**/ 0xBFCFC218, 0xBE620000,
+/**/ 0xBD34BBA4, 0x6F1CF6A0,
+/**/ 0x3FF47C00, 0x00000000,
+/**/ 0xBF31EB85, 0x1EB851EC,
+/**/ 0xBFCF991C, 0x6CB3C000,
+/**/ 0x3D390D04, 0xCD7CC834,
+/**/ 0x3FF47400, 0x00000000,
+/**/ 0x3F1569C9, 0xAAFC7C01,
+/**/ 0xBFCF702D, 0x36778000,
+/**/ 0x3D108195, 0x16673E23,
+/**/ 0x3FF46C00, 0x00000000,
+/**/ 0x3F3CE345, 0x96066250,
+/**/ 0xBFCF474B, 0x134E0000,
+/**/ 0x3D3BAE49, 0xF1DF7B5E,
+/**/ 0x3FF46800, 0x00000000,
+/**/ 0xBF26A297, 0x1D02DE87,
+/**/ 0xBFCF1E75, 0xFADFA000,
+/**/ 0x3D20862B, 0x25D83F6D,
+/**/ 0x3FF46000, 0x00000000,
+/**/ 0x3F2978FE, 0xB9F34381,
+/**/ 0xBFCEF5AD, 0xE4DD0000,
+/**/ 0x3CCA2115, 0x65BB8E11,
+/**/ 0x3FF45C00, 0x00000000,
+/**/ 0xBF3AF398, 0xF6C71366,
+/**/ 0xBFCECCF2, 0xC8FEA000,
+/**/ 0x3D3BEC63, 0xA3E75640,
+/**/ 0x3FF45400, 0x00000000,
+/**/ 0xBF030E9C, 0x449AFF5D,
+/**/ 0xBFCEA444, 0x9F04A000,
+/**/ 0xBD35E916, 0x63732A36,
+/**/ 0x3FF44C00, 0x00000000,
+/**/ 0x3F367190, 0xF8B42EF3,
+/**/ 0xBFCE7BA3, 0x5EB78000,
+/**/ 0x3D0D5EEE, 0x23793649,
+/**/ 0x3FF44800, 0x00000000,
+/**/ 0xBF3079A9, 0xD260511C,
+/**/ 0xBFCE530E, 0xFFE72000,
+/**/ 0x3D3FDBDB, 0xB13F7C18,
+/**/ 0x3FF44000, 0x00000000,
+/**/ 0x3F21B87C, 0x0B644FBE,
+/**/ 0xBFCE2A87, 0x7A6B2000,
+/**/ 0xBD382381, 0x7787081A,
+/**/ 0x3FF43C00, 0x00000000,
+/**/ 0xBF3D8CF5, 0x411B2E25,
+/**/ 0xBFCE020C, 0xC6236000,
+/**/ 0x3D252B00, 0xADB91424,
+/**/ 0x3FF43400, 0x00000000,
+/**/ 0xBF0DAC08, 0xD6A60978,
+/**/ 0xBFCDD99E, 0xDAF6E000,
+/**/ 0x3D302EC6, 0x69C756EB,
+/**/ 0x3FF42C00, 0x00000000,
+/**/ 0x3F36625D, 0x51F86EFA,
+/**/ 0xBFCDB13D, 0xB0D48000,
+/**/ 0xBD32806A, 0x847527E6,
+/**/ 0x3FF42800, 0x00000000,
+/**/ 0xBF2E8B2D, 0xA8766564,
+/**/ 0xBFCD88E9, 0x3FB30000,
+/**/ 0x3D375F28, 0x0234BF51,
+/**/ 0x3FF42000, 0x00000000,
+/**/ 0x3F26A4CB, 0xCB2A247B,
+/**/ 0xBFCD60A1, 0x7F904000,
+/**/ 0x3D35D6E0, 0x6FC20D39,
+/**/ 0x3FF41C00, 0x00000000,
+/**/ 0xBF39D5E8, 0xC17DF552,
+/**/ 0xBFCD3866, 0x68720000,
+/**/ 0x3D373650, 0xB38932BC,
+/**/ 0x3FF41400, 0x00000000,
+/**/ 0x3EF41414, 0x14141414,
+/**/ 0xBFCD1037, 0xF2656000,
+/**/ 0x3D084A7E, 0x75B6F6E4,
+/**/ 0x3FF40C00, 0x00000000,
+/**/ 0x3F3C97A8, 0x43AE87FD,
+/**/ 0xBFCCE816, 0x157F2000,
+/**/ 0x3D29E0AB, 0xA2099515,
+/**/ 0x3FF40800, 0x00000000,
+/**/ 0xBF1F4BBC, 0x66A67E6F,
+/**/ 0xBFCCC000, 0xC9DB4000,
+/**/ 0x3D1D6D58, 0x5D57AFF9,
+/**/ 0x3FF40000, 0x00000000,
+/**/ 0x3F340140, 0x14014014,
+/**/ 0xBFCC97F8, 0x079D4000,
+/**/ 0xBD23B161, 0xA8C6E6C5,
+/**/ 0x3FF3FC00, 0x00000000,
+/**/ 0xBF2FD809, 0xFD809FD8,
+/**/ 0xBFCC6FFB, 0xC6F00000,
+/**/ 0xBD3EE138, 0xD3A69D43,
+/**/ 0x3FF3F400, 0x00000000,
+/**/ 0x3F28CA0E, 0x57EE89D2,
+/**/ 0xBFCC480C, 0x0005C000,
+/**/ 0xBD39A294, 0xD5E44E76,
+/**/ 0x3FF3F000, 0x00000000,
+/**/ 0xBF370BD5, 0xA50F9260,
+/**/ 0xBFCC2028, 0xAB180000,
+/**/ 0x3D292E0E, 0xE55C7AC6,
+/**/ 0x3FF3E800, 0x00000000,
+/**/ 0x3F1704AA, 0x75945FCE,
+/**/ 0xBFCBF851, 0xC0676000,
+/**/ 0x3D35420E, 0x4C0854AD,
+/**/ 0x3FF3E400, 0x00000000,
+/**/ 0xBF3D3431, 0xB56FD83C,
+/**/ 0xBFCBD087, 0x383BE000,
+/**/ 0x3D2D4BC4, 0x595412B6,
+/**/ 0x3FF3DC00, 0x00000000,
+/**/ 0x3EB3DC01, 0x3DC013DC,
+/**/ 0xBFCBA8C9, 0x0AE4A000,
+/**/ 0xBD3A32E7, 0xF44432DA,
+/**/ 0x3FF3D400, 0x00000000,
+/**/ 0x3F3D991A, 0xA75C5BBD,
+/**/ 0xBFCB8117, 0x30B82000,
+/**/ 0xBD1E9068, 0x3B9CD768,
+/**/ 0x3FF3D000, 0x00000000,
+/**/ 0xBF1292BA, 0x59C52F5D,
+/**/ 0xBFCB5971, 0xA213A000,
+/**/ 0xBD39B50E, 0x83AA91DF,
+/**/ 0x3FF3C800, 0x00000000,
+/**/ 0x3F395A47, 0xBABE7440,
+/**/ 0xBFCB31D8, 0x575BC000,
+/**/ 0xBD3C794E, 0x562A63CB,
+/**/ 0x3FF3C400, 0x00000000,
+/**/ 0xBF20D475, 0x58A0943A,
+/**/ 0xBFCB0A4B, 0x48FC2000,
+/**/ 0x3D22E72D, 0x5C3998ED,
+/**/ 0x3FF3BC00, 0x00000000,
+/**/ 0x3F360D92, 0x3295482C,
+/**/ 0xBFCAE2CA, 0x6F672000,
+/**/ 0xBD37A8D5, 0xAE54F550,
+/**/ 0x3FF3B800, 0x00000000,
+/**/ 0xBF267D12, 0xCAB48651,
+/**/ 0xBFCABB55, 0xC316A000,
+/**/ 0x3D38A65A, 0xCAF14CD8,
+/**/ 0x3FF3B000, 0x00000000,
+/**/ 0x3F33B13B, 0x13B13B14,
+/**/ 0xBFCA93ED, 0x3C8AE000,
+/**/ 0x3D287243, 0x50562169,
+/**/ 0x3FF3AC00, 0x00000000,
+/**/ 0xBF2A46AF, 0x2C8FD3BF,
+/**/ 0xBFCA6C90, 0xD44B8000,
+/**/ 0x3D3F63B7, 0xF037B0C6,
+/**/ 0x3FF3A400, 0x00000000,
+/**/ 0x3F324387, 0xAC822610,
+/**/ 0xBFCA4540, 0x82E6A000,
+/**/ 0xBD360A77, 0xC81F7171,
+/**/ 0x3FF3A000, 0x00000000,
+/**/ 0xBF2C34BB, 0xA1923DEE,
+/**/ 0xBFCA1DFC, 0x40F1C000,
+/**/ 0x3D301E0F, 0x004F3781,
+/**/ 0x3FF39800, 0x00000000,
+/**/ 0x3F31C2C1, 0x87F63372,
+/**/ 0xBFC9F6C4, 0x0708A000,
+/**/ 0x3D3337D9, 0x4BCD3F43,
+/**/ 0x3FF39400, 0x00000000,
+/**/ 0xBF2C4AA0, 0xE11BD52E,
+/**/ 0xBFC9CF97, 0xCDCE0000,
+/**/ 0xBD3D862F, 0x10C414E3,
+/**/ 0x3FF38C00, 0x00000000,
+/**/ 0x3F322D36, 0x6088DBF4,
+/**/ 0xBFC9A877, 0x8DEBA000,
+/**/ 0xBD3470FA, 0x3EFEC390,
+/**/ 0x3FF38800, 0x00000000,
+/**/ 0xBF2A8BBF, 0x503F774E,
+/**/ 0xBFC98163, 0x4011A000,
+/**/ 0xBD34EADD, 0x9E9045E2,
+/**/ 0x3FF38000, 0x00000000,
+/**/ 0x3F338138, 0x13813814,
+/**/ 0xBFC95A5A, 0xDCF70000,
+/**/ 0xBD07F228, 0x58A0FF6F,
+/**/ 0x3FF37C00, 0x00000000,
+/**/ 0xBF26FB6F, 0x1B177053,
+/**/ 0xBFC9335E, 0x5D594000,
+/**/ 0xBD33115C, 0x3ABD47DA,
+/**/ 0x3FF37400, 0x00000000,
+/**/ 0x3F35BD1C, 0x945EDC20,
+/**/ 0xBFC90C6D, 0xB9FCC000,
+/**/ 0x3D1935F5, 0x7718D7CA,
+/**/ 0x3FF37000, 0x00000000,
+/**/ 0xBF219D00, 0x4DBDCC60,
+/**/ 0xBFC8E588, 0xEBAC2000,
+/**/ 0xBD3B7D5C, 0xAB2D1140,
+/**/ 0x3FF36800, 0x00000000,
+/**/ 0x3F38DF3D, 0xE0747954,
+/**/ 0xBFC8BEAF, 0xEB390000,
+/**/ 0x3D073D54, 0xAAE92CD1,
+/**/ 0x3FF36400, 0x00000000,
+/**/ 0xBF14E775, 0xD9D3C49F,
+/**/ 0xBFC897E2, 0xB17B2000,
+/**/ 0x3D296B37, 0x380CBE9E,
+/**/ 0x3FF35C00, 0x00000000,
+/**/ 0x3F3CE5F9, 0xF2AF821E,
+/**/ 0xBFC87121, 0x3750E000,
+/**/ 0xBD3328EB, 0x42F9AF75,
+/**/ 0x3FF35800, 0x00000000,
+/**/ 0xBEE82DF0, 0xE34971F2,
+/**/ 0xBFC84A6B, 0x759F6000,
+/**/ 0x3D3DA280, 0x2ADF8609,
+/**/ 0x3FF35400, 0x00000000,
+/**/ 0xBF3E304D, 0x4873ECAE,
+/**/ 0xBFC823C1, 0x6551A000,
+/**/ 0xBD1E0DDB, 0x9A631E83,
+/**/ 0x3FF34C00, 0x00000000,
+/**/ 0x3F1264B6, 0x1FF659DB,
+/**/ 0xBFC7FD22, 0xFF59A000,
+/**/ 0x3D158BEB, 0xF457B7D2,
+/**/ 0x3FF34800, 0x00000000,
+/**/ 0xBF386531, 0xFECB9865,
+/**/ 0xBFC7D690, 0x3CAF6000,
+/**/ 0x3D24C06B, 0x17C301D7,
+/**/ 0x3FF34000, 0x00000000,
+/**/ 0x3F25A8C2, 0xEEDA65AE,
+/**/ 0xBFC7B009, 0x16516000,
+/**/ 0x3D3AE75F, 0xCB067E57,
+/**/ 0x3FF33C00, 0x00000000,
+/**/ 0xBF31BA4A, 0x8434E1F4,
+/**/ 0xBFC7898D, 0x85444000,
+/**/ 0xBD38E67B, 0xE3DBAF3F,
+/**/ 0x3FF33400, 0x00000000,
+/**/ 0x3F31EE97, 0xDBFC660A,
+/**/ 0xBFC7631D, 0x82936000,
+/**/ 0x3D25E77D, 0xC7C5F3E1,
+/**/ 0x3FF33000, 0x00000000,
+/**/ 0xBF246252, 0xBC40BFDA,
+/**/ 0xBFC73CB9, 0x074FE000,
+/**/ 0x3D3D66A9, 0x0D0005A6,
+/**/ 0x3FF32800, 0x00000000,
+/**/ 0x3F39E640, 0x13299E64,
+/**/ 0xBFC71660, 0x0C914000,
+/**/ 0xBCE51B15, 0x7CEC3838,
+/**/ 0x3FF32400, 0x00000000,
+/**/ 0xBEFCB5D4, 0xEF40991F,
+/**/ 0xBFC6F012, 0x8B756000,
+/**/ 0xBD357739, 0x0D31EF0F,
+/**/ 0x3FF32000, 0x00000000,
+/**/ 0xBF3D4632, 0xC823D892,
+/**/ 0xBFC6C9D0, 0x7D204000,
+/**/ 0x3CDC73FA, 0xFD9B2DCA,
+/**/ 0x3FF31800, 0x00000000,
+/**/ 0x3F1DD63A, 0x7AED804C,
+/**/ 0xBFC6A399, 0xDABBE000,
+/**/ 0x3D38F934, 0xE66A15A6,
+/**/ 0x3FF31400, 0x00000000,
+/**/ 0xBF339849, 0xE8C11E1A,
+/**/ 0xBFC67D6E, 0x9D786000,
+/**/ 0x3D311E88, 0x30A706D3,
+/**/ 0x3FF30C00, 0x00000000,
+/**/ 0x3F319013, 0x0D190131,
+/**/ 0xBFC6574E, 0xBE8C2000,
+/**/ 0x3D398C1D, 0x34F0F462,
+/**/ 0x3FF30800, 0x00000000,
+/**/ 0xBF222315, 0xB47A7FDA,
+/**/ 0xBFC6313A, 0x37336000,
+/**/ 0x3D144DF5, 0x4F21EA6D,
+/**/ 0x3FF30000, 0x00000000,
+/**/ 0x3F3C82AC, 0x40260390,
+/**/ 0xBFC60B31, 0x00B0A000,
+/**/ 0x3D371456, 0xC988F814,
+/**/ 0x3FF2FC00, 0x00000000,
+/**/ 0x3F026443, 0xA2430A62,
+/**/ 0xBFC5E533, 0x144C2000,
+/**/ 0x3D31CE0B, 0xF3B290EA,
+/**/ 0x3FF2F800, 0x00000000,
+/**/ 0xBF37B425, 0xED097B42,
+/**/ 0xBFC5BF40, 0x6B544000,
+/**/ 0x3D127023, 0xEB68981C,
+/**/ 0x3FF2F000, 0x00000000,
+/**/ 0x3F2D00E3, 0x4AE0553C,
+/**/ 0xBFC59958, 0xFF1D6000,
+/**/ 0x3D3A1D05, 0x9769CA05,
+/**/ 0x3FF2EC00, 0x00000000,
+/**/ 0xBF262BC0, 0x25D69D44,
+/**/ 0xBFC5737C, 0xC9018000,
+/**/ 0xBD39BAA7, 0xA6B887F6,
+/**/ 0x3FF2E400, 0x00000000,
+/**/ 0x3F3B88B5, 0xE3103D6B,
+/**/ 0xBFC54DAB, 0xC2610000,
+/**/ 0xBD2746FE, 0xE5C8D0D8,
+/**/ 0x3FF2E000, 0x00000000,
+/**/ 0x3F02E025, 0xC04B8097,
+/**/ 0xBFC527E5, 0xE4A1C000,
+/**/ 0x3D34E60B, 0x8D4B411D,
+/**/ 0x3FF2DC00, 0x00000000,
+/**/ 0xBF369C22, 0x2C305021,
+/**/ 0xBFC5022B, 0x292F6000,
+/**/ 0xBD348A05, 0xFF36A25B,
+/**/ 0x3FF2D400, 0x00000000,
+/**/ 0x3F30A012, 0xD50A012D,
+/**/ 0xBFC4DC7B, 0x897BC000,
+/**/ 0xBD0C79B6, 0x0AE1FF0F,
+/**/ 0x3FF2D000, 0x00000000,
+/**/ 0xBF1FBE29, 0xBC66484E,
+/**/ 0xBFC4B6D6, 0xFEFE2000,
+/**/ 0xBD1522EC, 0xF56E7952,
+/**/ 0x3FF2C800, 0x00000000,
+/**/ 0x3F3FB4D8, 0x12C9FB4E,
+/**/ 0xBFC4913D, 0x8333C000,
+/**/ 0x3D353E43, 0x558124C4,
+/**/ 0x3FF2C400, 0x00000000,
+/**/ 0x3F1E3432, 0x7004B11E,
+/**/ 0xBFC46BAF, 0x0F9F6000,
+/**/ 0x3D1249CD, 0x0790841A,
+/**/ 0x3FF2C000, 0x00000000,
+/**/ 0xBF30671A, 0x5C8EF02F,
+/**/ 0xBFC4462B, 0x9DC9C000,
+/**/ 0x3D384858, 0xA711B062,
+/**/ 0x3FF2B800, 0x00000000,
+/**/ 0x3F37D835, 0xD548D9AC,
+/**/ 0xBFC420B3, 0x27410000,
+/**/ 0x3D116282, 0xC85A0884,
+/**/ 0x3FF2B400, 0x00000000,
+/**/ 0x3ED2B404, 0xAD012B40,
+/**/ 0xBFC3FB45, 0xA5992000,
+/**/ 0xBD319713, 0xC0CAE559,
+/**/ 0x3FF2B000, 0x00000000,
+/**/ 0xBF370F78, 0x8E7302A1,
+/**/ 0xBFC3D5E3, 0x126BC000,
+/**/ 0xBD13FB2F, 0x85096C4B,
+/**/ 0x3FF2A800, 0x00000000,
+/**/ 0x3F31C92F, 0x3C1053F9,
+/**/ 0xBFC3B08B, 0x67580000,
+/**/ 0x3D3AADE8, 0xF29320FB,
+/**/ 0x3FF2A400, 0x00000000,
+/**/ 0xBF14AD94, 0x3DBE2E04,
+/**/ 0xBFC38B3E, 0x9E028000,
+/**/ 0x3D370EF0, 0x545C17F9,
+/**/ 0x3FF2A000, 0x00000000,
+/**/ 0xBF3BED61, 0xBED61BED,
+/**/ 0xBFC365FC, 0xB015A000,
+/**/ 0x3D3FD3A0, 0xAFB9691B,
+/**/ 0x3FF29800, 0x00000000,
+/**/ 0x3F2B061A, 0x26F004A6,
+/**/ 0xBFC340C5, 0x97412000,
+/**/ 0x3D37A3DC, 0xF7D9D386,
+/**/ 0x3FF29400, 0x00000000,
+/**/ 0xBF21B488, 0xFF6B646D,
+/**/ 0xBFC31B99, 0x4D3A4000,
+/**/ 0xBD3F098E, 0xE3A50810,
+/**/ 0x3FF29000, 0x00000000,
+/**/ 0xBF3F0582, 0x2CA5D5AC,
+/**/ 0xBFC2F677, 0xCBBC0000,
+/**/ 0xBD352B30, 0x2160F40D,
+/**/ 0x3FF28800, 0x00000000,
+/**/ 0x3F260251, 0x16025116,
+/**/ 0xBFC2D161, 0x0C868000,
+/**/ 0xBD039D6C, 0xCB81B4A1,
+/**/ 0x3FF28400, 0x00000000,
+/**/ 0xBF258CDF, 0x502065D2,
+/**/ 0xBFC2AC55, 0x095F6000,
+/**/ 0x3D1D3466, 0xD0C6C8A8,
+/**/ 0x3FF27C00, 0x00000000,
+/**/ 0x3F3FA38A, 0x1CE4D6F8,
+/**/ 0xBFC28753, 0xBC11A000,
+/**/ 0xBD37494E, 0x359302E6,
+/**/ 0x3FF27800, 0x00000000,
+/**/ 0x3F247DD5, 0xDCCA0781,
+/**/ 0xBFC2625D, 0x1E6DE000,
+/**/ 0x3CF52962, 0xF09E3D82,
+/**/ 0x3FF27400, 0x00000000,
+/**/ 0xBF25E8EF, 0xDB195E8F,
+/**/ 0xBFC23D71, 0x2A49C000,
+/**/ 0xBD100D23, 0x8FD3DF5C,
+/**/ 0x3FF27000, 0x00000000,
+/**/ 0xBF3FF6C8, 0xFFB647FE,
+/**/ 0xBFC2188F, 0xD9808000,
+/**/ 0x3D3B3A1E, 0x7F50C701,
+/**/ 0x3FF26800, 0x00000000,
+/**/ 0x3F266F9A, 0xC024D167,
+/**/ 0xBFC1F3B9, 0x25F26000,
+/**/ 0x3D15F74E, 0x9B083633,
+/**/ 0x3FF26400, 0x00000000,
+/**/ 0xBF22D1BD, 0xEABD0E14,
+/**/ 0xBFC1CEED, 0x09854000,
+/**/ 0x3D315C1C, 0x39192AF9,
+/**/ 0x3FF26000, 0x00000000,
+/**/ 0xBF3DD8F7, 0xF6D0EEC8,
+/**/ 0xBFC1AA2B, 0x7E240000,
+/**/ 0x3D31AC38, 0xDDE3B366,
+/**/ 0x3FF25800, 0x00000000,
+/**/ 0x3F2BCEB1, 0x2A241EF6,
+/**/ 0xBFC18574, 0x7DBEC000,
+/**/ 0xBD3E6744, 0x45BD9B49,
+/**/ 0x3FF25400, 0x00000000,
+/**/ 0xBF18A05B, 0xA21378D7,
+/**/ 0xBFC160C8, 0x024B2000,
+/**/ 0xBD2EC2D2, 0xA9009E3D,
+/**/ 0x3FF25000, 0x00000000,
+/**/ 0xBF3A076F, 0xD6CFA90C,
+/**/ 0xBFC13C26, 0x05C3A000,
+/**/ 0x3D2CF5FD, 0xD94F6509,
+/**/ 0x3FF24800, 0x00000000,
+/**/ 0x3F324924, 0x92492492,
+/**/ 0xBFC1178E, 0x8227E000,
+/**/ 0xBD21EF78, 0xCE2D07F2,
+/**/ 0x3FF24400, 0x00000000,
+/**/ 0xBEF3682B, 0x6151E899,
+/**/ 0xBFC0F301, 0x717D0000,
+/**/ 0x3D3E09B4, 0x41AE86C5,
+/**/ 0x3FF24000, 0x00000000,
+/**/ 0xBF34868E, 0x89FA4C67,
+/**/ 0xBFC0CE7E, 0xCDCCC000,
+/**/ 0xBD14652D, 0xABFF5447,
+/**/ 0x3FF23800, 0x00000000,
+/**/ 0x3F3858D8, 0x6B11F09F,
+/**/ 0xBFC0AA06, 0x91268000,
+/**/ 0x3D345519, 0xD7032129,
+/**/ 0x3FF23400, 0x00000000,
+/**/ 0x3F159E26, 0xAF37C049,
+/**/ 0xBFC08598, 0xB59E4000,
+/**/ 0x3D27E5DD, 0x7009902C,
+/**/ 0x3FF23000, 0x00000000,
+/**/ 0xBF2AB546, 0x2E076329,
+/**/ 0xBFC06135, 0x354D4000,
+/**/ 0xBD363046, 0x28340EE9,
+/**/ 0x3FF22C00, 0x00000000,
+/**/ 0xBF3FEDD5, 0xFEDD5FEE,
+/**/ 0xBFC03CDC, 0x0A51E000,
+/**/ 0xBD381A9C, 0xF169FC5C,
+/**/ 0x3FF22400, 0x00000000,
+/**/ 0x3F2B5B92, 0x009126D7,
+/**/ 0xBFC0188D, 0x2ECF6000,
+/**/ 0xBD03F965, 0x1CFF9DFE,
+/**/ 0x3FF22000, 0x00000000,
+/**/ 0xBF121FB7, 0x8121FB78,
+/**/ 0xBFBFE891, 0x39DBC000,
+/**/ 0xBD356594, 0xD82F7A82,
+/**/ 0x3FF21C00, 0x00000000,
+/**/ 0xBF368F22, 0x3A459635,
+/**/ 0xBFBFA01C, 0x9DB58000,
+/**/ 0x3D08F351, 0xFA48A730,
+/**/ 0x3FF21400, 0x00000000,
+/**/ 0x3F379804, 0x855E6012,
+/**/ 0xBFBF57BC, 0x7D900000,
+/**/ 0xBD176A6C, 0x9EA8B04E,
+/**/ 0x3FF21000, 0x00000000,
+/**/ 0x3F17B57C, 0x78CD7A37,
+/**/ 0xBFBF0F70, 0xCDD98000,
+/**/ 0xBD32E31F, 0x6C272C1E,
+/**/ 0x3FF20C00, 0x00000000,
+/**/ 0xBF271E73, 0x07E4EF15,
+/**/ 0xBFBEC739, 0x830A0000,
+/**/ 0xBD311FCB, 0xA80CDD10,
+/**/ 0x3FF20800, 0x00000000,
+/**/ 0xBF3CDDEC, 0x49392BA7,
+/**/ 0xBFBE7F16, 0x91A34000,
+/**/ 0x3D32C1C5, 0x9BC77BFA,
+/**/ 0x3FF20000, 0x00000000,
+/**/ 0x3F320120, 0x12012012,
+/**/ 0xBFBE3707, 0xEE304000,
+/**/ 0xBD20F684, 0xE6766ABD,
+/**/ 0x3FF1FC00, 0x00000000,
+/**/ 0x3EF0DC4F, 0xCE8AD1A2,
+/**/ 0xBFBDEF0D, 0x8D468000,
+/**/ 0x3D324750, 0x412E9A74,
+/**/ 0x3FF1F800, 0x00000000,
+/**/ 0xBF2F7047, 0xDC11F704,
+/**/ 0xBFBDA727, 0x63844000,
+/**/ 0xBD1A8940, 0x1FA71733,
+/**/ 0x3FF1F000, 0x00000000,
+/**/ 0x3F3FAF3F, 0x16B6419D,
+/**/ 0xBFBD5F55, 0x65920000,
+/**/ 0xBD30E239, 0xCC185469,
+/**/ 0x3FF1EC00, 0x00000000,
+/**/ 0x3F2E878F, 0xF70985E2,
+/**/ 0xBFBD1797, 0x88218000,
+/**/ 0xBD336433, 0xB5EFBEED,
+/**/ 0x3FF1E800, 0x00000000,
+/**/ 0xBEEF55E4, 0x94D7FDC3,
+/**/ 0xBFBCCFED, 0xBFEE0000,
+/**/ 0xBD33A823, 0x2FE71256,
+/**/ 0x3FF1E400, 0x00000000,
+/**/ 0xBF310C4C, 0x0478BBCF,
+/**/ 0xBFBC8858, 0x01BC4000,
+/**/ 0xBD2646D1, 0xC65AACD3,
+/**/ 0x3FF1DC00, 0x00000000,
+/**/ 0x3F3F0ECB, 0xCB840C49,
+/**/ 0xBFBC40D6, 0x425A4000,
+/**/ 0xBD3CB112, 0x1D1930DD,
+/**/ 0x3FF1D800, 0x00000000,
+/**/ 0x3F2EACE5, 0xC9579074,
+/**/ 0xBFBBF968, 0x769FC000,
+/**/ 0xBD24218C, 0x8D824283,
+/**/ 0x3FF1D400, 0x00000000,
+/**/ 0xBECABDFA, 0xFC60F0AE,
+/**/ 0xBFBBB20E, 0x936D8000,
+/**/ 0x3D368BA8, 0x35459B8E,
+/**/ 0x3FF1D000, 0x00000000,
+/**/ 0xBF2F2A4B, 0xAFDC61F3,
+/**/ 0xBFBB6AC8, 0x8DAD4000,
+/**/ 0xBD3B1BDF, 0xF50225C7,
+/**/ 0x3FF1CC00, 0x00000000,
+/**/ 0xBF3EC8AF, 0xAB802394,
+/**/ 0xBFBB2396, 0x5A530000,
+/**/ 0x3CEFF64E, 0xEA137079,
+/**/ 0x3FF1C400, 0x00000000,
+/**/ 0x3F322FC1, 0xCE058D9B,
+/**/ 0xBFBADC77, 0xEE5B0000,
+/**/ 0x3D3573B2, 0x09C31904,
+/**/ 0x3FF1C000, 0x00000000,
+/**/ 0x3F0AA04F, 0xE0EFA2CF,
+/**/ 0xBFBA956D, 0x3ECAC000,
+/**/ 0xBD3E6379, 0x4C02C4AF,
+/**/ 0x3FF1BC00, 0x00000000,
+/**/ 0xBF26B7F7, 0x225ADFDD,
+/**/ 0xBFBA4E76, 0x40B1C000,
+/**/ 0x3D0E42B6, 0xB94407C8,
+/**/ 0x3FF1B800, 0x00000000,
+/**/ 0xBF39E073, 0x217CD13A,
+/**/ 0xBFBA0792, 0xE9278000,
+/**/ 0x3D0A9CE6, 0xC9AD51BF,
+/**/ 0x3FF1B000, 0x00000000,
+/**/ 0x3F37C67F, 0x2BAE2B21,
+/**/ 0xBFB9C0C3, 0x2D4D4000,
+/**/ 0x3D3AB7C0, 0x9E838668,
+/**/ 0x3FF1AC00, 0x00000000,
+/**/ 0x3F23316E, 0xBD720DCF,
+/**/ 0xBFB97A07, 0x024CC000,
+/**/ 0x3CF8BCC1, 0x732093CE,
+/**/ 0x3FF1A800, 0x00000000,
+/**/ 0xBF11A7B9, 0x611A7B96,
+/**/ 0xBFB9335E, 0x5D594000,
+/**/ 0xBD23115C, 0x3ABD47DA,
+/**/ 0x3FF1A400, 0x00000000,
+/**/ 0xBF324195, 0xA1C1B8E7,
+/**/ 0xBFB8ECC9, 0x33AEC000,
+/**/ 0x3D222F39, 0xBE67F7AA,
+/**/ 0x3FF1A000, 0x00000000,
+/**/ 0xBF3FEE61, 0xFEE61FEE,
+/**/ 0xBFB8A647, 0x7A91C000,
+/**/ 0xBD3C28C0, 0xAF9BD6DF,
+/**/ 0x3FF19800, 0x00000000,
+/**/ 0x3F328F89, 0x362B721D,
+/**/ 0xBFB85FD9, 0x27508000,
+/**/ 0x3D35B818, 0x19970C1C,
+/**/ 0x3FF19400, 0x00000000,
+/**/ 0x3F14E023, 0x28A70119,
+/**/ 0xBFB8197E, 0x2F410000,
+/**/ 0x3D3C0FE4, 0x60D20041,
+/**/ 0x3FF19000, 0x00000000,
+/**/ 0xBF1FD419, 0x3E48FC6F,
+/**/ 0xBFB7D336, 0x87C28000,
+/**/ 0xBD33C88C, 0x3E706706,
+/**/ 0x3FF18C00, 0x00000000,
+/**/ 0xBF34F7C6, 0xFD42546B,
+/**/ 0xBFB78D02, 0x263D8000,
+/**/ 0xBD069B57, 0x94B69FB7,
+/**/ 0x3FF18400, 0x00000000,
+/**/ 0x3F3E2FA4, 0x01185E30,
+/**/ 0xBFB746E1, 0x00228000,
+/**/ 0x3D3126D1, 0x6E1E21D2,
+/**/ 0x3FF18000, 0x00000000,
+/**/ 0x3F318118, 0x11811812,
+/**/ 0xBFB700D3, 0x0AEAC000,
+/**/ 0xBCEC1E8D, 0xA99DED32,
+/**/ 0x3FF17C00, 0x00000000,
+/**/ 0x3F13F1CA, 0xFF2E2C43,
+/**/ 0xBFB6BAD8, 0x3C188000,
+/**/ 0xBD0DAF3C, 0xC08926AE,
+/**/ 0x3FF17800, 0x00000000,
+/**/ 0xBF1D79B9, 0x0A5EF9FF,
+/**/ 0xBFB674F0, 0x89364000,
+/**/ 0xBD3A7999, 0x4C9D3302,
+/**/ 0x3FF17400, 0x00000000,
+/**/ 0xBF338FAD, 0x1ECEA765,
+/**/ 0xBFB62F1B, 0xE7D78000,
+/**/ 0x3D217995, 0x7ED63C4E,
+/**/ 0x3FF17000, 0x00000000,
+/**/ 0xBF3F976B, 0xD8C8714B,
+/**/ 0xBFB5E95A, 0x4D978000,
+/**/ 0xBD31CB7C, 0xE1D17171,
+/**/ 0x3FF16800, 0x00000000,
+/**/ 0x3F348A33, 0xB08FA497,
+/**/ 0xBFB5A3AB, 0xB01AC000,
+/**/ 0xBD3E2574, 0x9E6AFA18,
+/**/ 0x3FF16400, 0x00000000,
+/**/ 0x3F21AA1F, 0x864022C9,
+/**/ 0xBFB55E10, 0x050E0000,
+/**/ 0xBD0C1D74, 0x0C53C72E,
+/**/ 0x3FF16000, 0x00000000,
+/**/ 0xBF05B7C9, 0xB487BCAD,
+/**/ 0xBFB51887, 0x42260000,
+/**/ 0xBD330A1D, 0x96258B3E,
+/**/ 0x3FF15C00, 0x00000000,
+/**/ 0xBF2C3411, 0x5B1E5F75,
+/**/ 0xBFB4D311, 0x5D208000,
+/**/ 0x3CF53A25, 0x82F4E1EF,
+/**/ 0x3FF15800, 0x00000000,
+/**/ 0xBF39543F, 0xEEA99544,
+/**/ 0xBFB48DAE, 0x4BC30000,
+/**/ 0xBD30185B, 0x208C200C,
+/**/ 0x3FF15000, 0x00000000,
+/**/ 0x3F3B9A3F, 0xDD5C8CB8,
+/**/ 0xBFB4485E, 0x03DBC000,
+/**/ 0xBD3FAD46, 0xE8D26AB7,
+/**/ 0x3FF14C00, 0x00000000,
+/**/ 0x3F30B155, 0xB19AE5C7,
+/**/ 0xBFB40320, 0x7B414000,
+/**/ 0xBD26FD84, 0xAA8157C0,
+/**/ 0x3FF14800, 0x00000000,
+/**/ 0x3F17C382, 0xB34EDA32,
+/**/ 0xBFB3BDF5, 0xA7D20000,
+/**/ 0x3D319BD0, 0xAD125895,
+/**/ 0x3FF14400, 0x00000000,
+/**/ 0xBF129CFF, 0xBAF129D0,
+/**/ 0xBFB378DD, 0x7F748000,
+/**/ 0xBD371411, 0x28F1FACA,
+/**/ 0x3FF14000, 0x00000000,
+/**/ 0xBF2E2E59, 0x771B7C7F,
+/**/ 0xBFB333D7, 0xF8184000,
+/**/ 0x3CE692B6, 0xA81B8848,
+/**/ 0x3FF13C00, 0x00000000,
+/**/ 0xBF395F06, 0x30FE1D9C,
+/**/ 0xBFB2EEE5, 0x07B40000,
+/**/ 0xBD08081E, 0xDD77C860,
+/**/ 0x3FF13400, 0x00000000,
+/**/ 0x3F3C8113, 0x5C81135D,
+/**/ 0xBFB2AA04, 0xA4470000,
+/**/ 0xBD37A48B, 0xA8B1CB41,
+/**/ 0x3FF13000, 0x00000000,
+/**/ 0x3F3288FF, 0xBB3B5DC0,
+/**/ 0xBFB26536, 0xC3D8C000,
+/**/ 0xBD0B4BAC, 0x097C5BA3,
+/**/ 0x3FF12C00, 0x00000000,
+/**/ 0x3F21713D, 0xB81577AE,
+/**/ 0xBFB2207B, 0x5C784000,
+/**/ 0xBD349D8C, 0xFC10C7BF,
+/**/ 0x3FF12800, 0x00000000,
+/**/ 0xBEEE05E5, 0xBAD6FC84,
+/**/ 0xBFB1DBD2, 0x643D0000,
+/**/ 0xBD390B24, 0xD977C494,
+/**/ 0x3FF12400, 0x00000000,
+/**/ 0xBF24E314, 0x59F992BF,
+/**/ 0xBFB1973B, 0xD1464000,
+/**/ 0xBD3566D1, 0x54F930B3,
+/**/ 0x3FF12000, 0x00000000,
+/**/ 0xBF33CB91, 0xC9F6E7A8,
+/**/ 0xBFB152B7, 0x99BB4000,
+/**/ 0x3D09BB29, 0x07030829,
+/**/ 0x3FF11C00, 0x00000000,
+/**/ 0xBF3CFE65, 0x8B7D9851,
+/**/ 0xBFB10E45, 0xB3CB0000,
+/**/ 0x3D37CF69, 0x284A3465,
+/**/ 0x3FF11400, 0x00000000,
+/**/ 0x3F39F5DB, 0x29605DF7,
+/**/ 0xBFB0C9E6, 0x15AC4000,
+/**/ 0xBD2C2DA8, 0x0974D976,
+/**/ 0x3FF11000, 0x00000000,
+/**/ 0x3F311111, 0x11111111,
+/**/ 0xBFB08598, 0xB59E4000,
+/**/ 0x3D17E5DD, 0x7009902C,
+/**/ 0x3FF10C00, 0x00000000,
+/**/ 0x3F20A63A, 0x12A5B1AE,
+/**/ 0xBFB0415D, 0x89E74000,
+/**/ 0xBD1111C0, 0x5CF1D753,
+/**/ 0x3FF10800, 0x00000000,
+/**/ 0xBED107FB, 0xBE011080,
+/**/ 0xBFAFFA69, 0x11AB8000,
+/**/ 0xBD23008C, 0x98381A8F,
+/**/ 0x3FF10400, 0x00000000,
+/**/ 0xBF216989, 0x6FEABBAE,
+/**/ 0xBFAF723B, 0x51800000,
+/**/ 0x3D3D6EB0, 0xDD5610D3,
+/**/ 0x3FF10000, 0x00000000,
+/**/ 0xBF30FEF0, 0x10FEF011,
+/**/ 0xBFAEEA31, 0xC0068000,
+/**/ 0xBD3C3DD8, 0x3606D891,
+/**/ 0x3FF0FC00, 0x00000000,
+/**/ 0xBF3922C0, 0x98CDDC74,
+/**/ 0xBFAE624C, 0x4A0B8000,
+/**/ 0x3D30F25C, 0x74676689,
+/**/ 0x3FF0F400, 0x00000000,
+/**/ 0x3F3EDFAB, 0x325A1A80,
+/**/ 0xBFADDA8A, 0xDC680000,
+/**/ 0x3D21B1AC, 0x64D9E42F,
+/**/ 0x3FF0F000, 0x00000000,
+/**/ 0x3F370834, 0xF27F9A57,
+/**/ 0xBFAD52ED, 0x64060000,
+/**/ 0x3D33C85D, 0x2A29BBD6,
+/**/ 0x3FF0EC00, 0x00000000,
+/**/ 0x3F2EAD7C, 0xD391FBC5,
+/**/ 0xBFACCB73, 0xCDDD8000,
+/**/ 0xBD3965C3, 0x6E09F5FE,
+/**/ 0x3FF0E800, 0x00000000,
+/**/ 0x3F1F2CA5, 0xE9479870,
+/**/ 0xBFAC441E, 0x06F70000,
+/**/ 0xBD354F1F, 0x49850D15,
+/**/ 0x3FF0E400, 0x00000000,
+/**/ 0x3ED95609, 0x80439019,
+/**/ 0xBFABBCEB, 0xFC690000,
+/**/ 0x3D17BF86, 0x8C317C2A,
+/**/ 0x3FF0E000, 0x00000000,
+/**/ 0xBF1B6B4D, 0xC6867596,
+/**/ 0xBFAB35DD, 0x9B588000,
+/**/ 0xBD3D5674, 0xD6CF558E,
+/**/ 0x3FF0DC00, 0x00000000,
+/**/ 0xBF2BEAEE, 0x172D4CE8,
+/**/ 0xBFAAAEF2, 0xD0FB0000,
+/**/ 0xBD20FC1A, 0x353BB42E,
+/**/ 0x3FF0D800, 0x00000000,
+/**/ 0xBF34EAB0, 0x479071A9,
+/**/ 0xBFAA282B, 0x8A938000,
+/**/ 0x3D2E8F59, 0x80EFC8E3,
+/**/ 0x3FF0D400, 0x00000000,
+/**/ 0xBF3BBA9C, 0xA61C62D3,
+/**/ 0xBFA9A187, 0xB5740000,
+/**/ 0x3D30C22E, 0x4EC4D90D,
+/**/ 0x3FF0CC00, 0x00000000,
+/**/ 0x3F3D9AA6, 0x77344011,
+/**/ 0xBFA91B07, 0x3EFD8000,
+/**/ 0x3D19D7C5, 0x3F76CA96,
+/**/ 0x3FF0C800, 0x00000000,
+/**/ 0x3F3714FB, 0xCDA3AC11,
+/**/ 0xBFA894AA, 0x149F8000,
+/**/ 0xBD39A19A, 0x8BE97661,
+/**/ 0x3FF0C400, 0x00000000,
+/**/ 0x3F30B446, 0x391F2E61,
+/**/ 0xBFA80E70, 0x23D90000,
+/**/ 0x3D399DC1, 0x6F28BF45,
+/**/ 0x3FF0C000, 0x00000000,
+/**/ 0x3F24F0D1, 0x682E11CD,
+/**/ 0xBFA78859, 0x5A358000,
+/**/ 0x3D108B0D, 0x083B3A4C,
+/**/ 0x3FF0BC00, 0x00000000,
+/**/ 0x3F118519, 0x5D5A36EA,
+/**/ 0xBFA70265, 0xA5510000,
+/**/ 0x3D2888DF, 0x11FD5CE7,
+/**/ 0x3FF0B800, 0x00000000,
+/**/ 0xBEF913DA, 0x62386CAB,
+/**/ 0xBFA67C94, 0xF2D48000,
+/**/ 0xBD3DAC20, 0x827CCA0C,
+/**/ 0x3FF0B400, 0x00000000,
+/**/ 0xBF1D7CFF, 0xBD31D7D0,
+/**/ 0xBFA5F6E7, 0x30790000,
+/**/ 0x3D20485A, 0x8012494C,
+/**/ 0x3FF0B000, 0x00000000,
+/**/ 0xBF2A11BA, 0x226951DC,
+/**/ 0xBFA5715C, 0x4C040000,
+/**/ 0x3D38888D, 0xDFC47628,
+/**/ 0x3FF0AC00, 0x00000000,
+/**/ 0xBF328E31, 0x7B2E9DD2,
+/**/ 0xBFA4EBF4, 0x334A0000,
+/**/ 0x3D2D9150, 0xF73BE773,
+/**/ 0x3FF0A800, 0x00000000,
+/**/ 0xBF37EF59, 0x7EF597EF,
+/**/ 0xBFA466AE, 0xD42E0000,
+/**/ 0x3D2C1673, 0x75BDFD28,
+/**/ 0x3FF0A400, 0x00000000,
+/**/ 0xBF3D2C71, 0x50D413C1,
+/**/ 0xBFA3E18C, 0x1CA08000,
+/**/ 0xBD3748ED, 0x3F6E378E,
+/**/ 0x3FF09C00, 0x00000000,
+/**/ 0x3F3DBA6A, 0xF836010A,
+/**/ 0xBFA35C8B, 0xFAA10000,
+/**/ 0xBD38357D, 0x5EF9EB35,
+/**/ 0x3FF09800, 0x00000000,
+/**/ 0x3F38C51F, 0x624D4AF5,
+/**/ 0xBFA2D7AE, 0x5C3C8000,
+/**/ 0x3D322939, 0x459DA66D,
+/**/ 0x3FF09400, 0x00000000,
+/**/ 0x3F33F390, 0x10953F39,
+/**/ 0xBFA252F3, 0x2F8D0000,
+/**/ 0xBD283E9A, 0xE021B67B,
+/**/ 0x3FF09000, 0x00000000,
+/**/ 0x3F2E8B42, 0x861539B9,
+/**/ 0xBFA1CE5A, 0x62BC0000,
+/**/ 0xBD3A9CC7, 0x8D8DF999,
+/**/ 0x3FF08C00, 0x00000000,
+/**/ 0x3F25766E, 0xACBC4021,
+/**/ 0xBFA149E3, 0xE4008000,
+/**/ 0x3D32B98A, 0x9A4168FD,
+/**/ 0x3FF08800, 0x00000000,
+/**/ 0x3F1950DB, 0x0F3DBD5A,
+/**/ 0xBFA0C58F, 0xA19E0000,
+/**/ 0x3D0559D1, 0x58B17913,
+/**/ 0x3FF08400, 0x00000000,
+/**/ 0x3F008421, 0x08421084,
+/**/ 0xBFA0415D, 0x89E78000,
+/**/ 0x3D3DDDC7, 0xF461C516,
+/**/ 0x3FF08000, 0x00000000,
+/**/ 0xBF007FDF, 0x0041FF7C,
+/**/ 0xBF9F7A9B, 0x16780000,
+/**/ 0xBD242AD9, 0x271BE7D7,
+/**/ 0x3FF07C00, 0x00000000,
+/**/ 0xBF183591, 0xC54798FB,
+/**/ 0xBF9E72BF, 0x28140000,
+/**/ 0x3D28D751, 0x49774D47,
+/**/ 0x3FF07800, 0x00000000,
+/**/ 0xBF23CFA1, 0x518F4EFD,
+/**/ 0xBF9D6B27, 0x25980000,
+/**/ 0x3D39FF7B, 0x50D1B838,
+/**/ 0x3FF07400, 0x00000000,
+/**/ 0xBF2B3EB7, 0x01073261,
+/**/ 0xBF9C63D2, 0xEC150000,
+/**/ 0x3D35439C, 0xE030A687,
+/**/ 0x3FF07000, 0x00000000,
+/**/ 0xBF31341F, 0xD6EAB025,
+/**/ 0xBF9B5CC2, 0x58B70000,
+/**/ 0xBD18E611, 0xB8AFBFE8,
+/**/ 0x3FF06C00, 0x00000000,
+/**/ 0xBF34A638, 0x6ED049E0,
+/**/ 0xBF9A55F5, 0x48C60000,
+/**/ 0x3D2DE070, 0x9F2D03C9,
+/**/ 0x3FF06800, 0x00000000,
+/**/ 0xBF37F5BF, 0xEF997F5C,
+/**/ 0xBF994F6B, 0x99A20000,
+/**/ 0xBD311D5E, 0xF96CF7F5,
+/**/ 0x3FF06400, 0x00000000,
+/**/ 0xBF3B22D0, 0xE5604189,
+/**/ 0xBF984925, 0x28C90000,
+/**/ 0x3D2AA0BA, 0x325A0C34,
+/**/ 0x3FF06000, 0x00000000,
+/**/ 0xBF3E2D85, 0xC1163FF0,
+/**/ 0xBF974321, 0xD3D00000,
+/**/ 0xBCFB4A69, 0x0FE94778,
+/**/ 0x3FF05800, 0x00000000,
+/**/ 0x3F3EEA07, 0x27586632,
+/**/ 0xBF963D61, 0x78690000,
+/**/ 0xBD07ABF3, 0x89596542,
+/**/ 0x3FF05400, 0x00000000,
+/**/ 0x3F3C23BB, 0x98E2A5E7,
+/**/ 0xBF9537E3, 0xF45F0000,
+/**/ 0xBD2AB259, 0xD2D7F253,
+/**/ 0x3FF05000, 0x00000000,
+/**/ 0x3F397F7D, 0x73404146,
+/**/ 0xBF9432A9, 0x25980000,
+/**/ 0xBD098139, 0x928637FE,
+/**/ 0x3FF04C00, 0x00000000,
+/**/ 0x3F36FD32, 0xB0C7B49A,
+/**/ 0xBF932DB0, 0xEA130000,
+/**/ 0xBD2710CB, 0x130895FC,
+/**/ 0x3FF04800, 0x00000000,
+/**/ 0x3F349CC1, 0x664C578A,
+/**/ 0xBF9228FB, 0x1FEA0000,
+/**/ 0xBD2713E3, 0x284991FE,
+/**/ 0x3FF04400, 0x00000000,
+/**/ 0x3F325E0F, 0xC2FCB1F4,
+/**/ 0xBF912487, 0xA5500000,
+/**/ 0xBD3FDBE5, 0xFED4B393,
+/**/ 0x3FF04000, 0x00000000,
+/**/ 0x3F304104, 0x10410410,
+/**/ 0xBF902056, 0x58930000,
+/**/ 0xBD3611D2, 0x7C8E8417,
+/**/ 0x3FF03C00, 0x00000000,
+/**/ 0x3F2C8B09, 0x6334030B,
+/**/ 0xBF8E38CE, 0x30340000,
+/**/ 0x3D39DE88, 0xA3DA281A,
+/**/ 0x3FF03800, 0x00000000,
+/**/ 0x3F28D6F0, 0x48FF7E3A,
+/**/ 0xBF8C3173, 0x84C80000,
+/**/ 0x3D341F33, 0xFCEFB9FE,
+/**/ 0x3FF03400, 0x00000000,
+/**/ 0x3F25658A, 0x0081A559,
+/**/ 0xBF8A2A9C, 0x6C180000,
+/**/ 0x3D3F73BC, 0x4D6D3472,
+/**/ 0x3FF03000, 0x00000000,
+/**/ 0x3F2236A3, 0xEBC349DE,
+/**/ 0xBF882448, 0xA3880000,
+/**/ 0xBD345544, 0x12C584E0,
+/**/ 0x3FF02C00, 0x00000000,
+/**/ 0x3F1E9417, 0x3FEFD386,
+/**/ 0xBF861E77, 0xE8B60000,
+/**/ 0x3D38073E, 0xEAF8EAF3,
+/**/ 0x3FF02800, 0x00000000,
+/**/ 0x3F193F1D, 0xCA7A317C,
+/**/ 0xBF841929, 0xF9680000,
+/**/ 0xBD1977C7, 0x55D01368,
+/**/ 0x3FF02400, 0x00000000,
+/**/ 0x3F146DF7, 0x6CB49652,
+/**/ 0xBF82145E, 0x939E0000,
+/**/ 0xBD3E3D12, 0x38C4EA00,
+/**/ 0x3FF02000, 0x00000000,
+/**/ 0x3F102040, 0x81020408,
+/**/ 0xBF801015, 0x75880000,
+/**/ 0xBD3BCE25, 0x1998B506,
+/**/ 0x3FF01C00, 0x00000000,
+/**/ 0x3F08AB2B, 0x8C355D63,
+/**/ 0xBF7C189C, 0xBB100000,
+/**/ 0x3D3D8055, 0x12588560,
+/**/ 0x3FF01800, 0x00000000,
+/**/ 0x3F021B28, 0xBD1BA97E,
+/**/ 0xBF781212, 0x14580000,
+/**/ 0xBD1AD503, 0x82973F27,
+/**/ 0x3FF01400, 0x00000000,
+/**/ 0x3EF91F67, 0x411155AB,
+/**/ 0xBF740C8A, 0x74780000,
+/**/ 0xBD1E3871, 0xDF070002,
+/**/ 0x3FF01000, 0x00000000,
+/**/ 0x3EF01010, 0x10101010,
+/**/ 0xBF700805, 0x59580000,
+/**/ 0xBD2166AF, 0xCB31C67B,
+/**/ 0x3FF00C00, 0x00000000,
+/**/ 0x3EE20D8A, 0x279DB649,
+/**/ 0xBF680904, 0x82880000,
+/**/ 0xBD285C06, 0x96A70C0C,
+/**/ 0x3FF00800, 0x00000000,
+/**/ 0x3ED00804, 0x02010080,
+/**/ 0xBF600401, 0x55D80000,
+/**/ 0x3D33BB10, 0xC7CC7089,
+/**/ 0x3FF00400, 0x00000000,
+/**/ 0x3EB00401, 0x00401004,
+/**/ 0xBF500200, 0x55600000,
+/**/ 0xBD356224, 0xCD5F35F8,
+/**/ 0x3FF00000, 0x00000000,
+/**/ 0x00000000, 0x00000000,
+/**/ 0x00000000, 0x00000000,
+/**/ 0x00000000, 0x00000000,
+/**/ 0x3FEFF800, 0x00000000,
+/**/ 0x3EAFF801, 0xFF801FF8,
+/**/ 0x3F4FFC00, 0xAA800000,
+/**/ 0x3D35621F, 0x7809A0A3,
+/**/ 0x3FEFF000, 0x00000000,
+/**/ 0x3ECFF007, 0xFC01FF00,
+/**/ 0x3F5FF802, 0xA9B00000,
+/**/ 0xBD33BC66, 0x1D61C5EB,
+/**/ 0x3FEFE800, 0x00000000,
+/**/ 0x3EE1F28A, 0x186DADBE,
+/**/ 0x3F67F704, 0x7D780000,
+/**/ 0x3D283DA6, 0x89D68648,
+/**/ 0x3FEFE000, 0x00000000,
+/**/ 0x3EEFE01F, 0xE01FE020,
+/**/ 0x3F6FF00A, 0xA2B00000,
+/**/ 0x3D20BC04, 0xA086B56A,
+/**/ 0x3FEFD800, 0x00000000,
+/**/ 0x3EF8E0E6, 0xDF68BD14,
+/**/ 0x3F73F38A, 0x60F00000,
+/**/ 0x3D192256, 0x93C93749,
+/**/ 0x3FEFD000, 0x00000000,
+/**/ 0x3F01E528, 0x439A981C,
+/**/ 0x3F77EE11, 0xEBD80000,
+/**/ 0x3D0749D3, 0xC2D23A07,
+/**/ 0x3FEFC800, 0x00000000,
+/**/ 0x3F08556A, 0x8596391C,
+/**/ 0x3F7BE79C, 0x70040000,
+/**/ 0x3D38EC8F, 0x9A6C0404,
+/**/ 0x3FEFC000, 0x00000000,
+/**/ 0x3F0FC07F, 0x01FC07F0,
+/**/ 0x3F7FE02A, 0x6B100000,
+/**/ 0x3D19E23F, 0x0DDA40E4,
+/**/ 0x3FEFB800, 0x00000000,
+/**/ 0x3F1412D5, 0x9F5976B5,
+/**/ 0x3F81EBDE, 0x2D1A0000,
+/**/ 0xBD2A0683, 0xFF48DC36,
+/**/ 0x3FEFB000, 0x00000000,
+/**/ 0x3F18C21A, 0xBD271E34,
+/**/ 0x3F83E729, 0x5D260000,
+/**/ 0xBD2609C1, 0xFF29A114,
+/**/ 0x3FEFA800, 0x00000000,
+/**/ 0x3F1DEDB2, 0x5594A734,
+/**/ 0x3F85E1F7, 0x03EC0000,
+/**/ 0x3D37CA09, 0xF585DA1B,
+/**/ 0x3FEFA000, 0x00000000,
+/**/ 0x3F21CAA0, 0x1FA11CAA,
+/**/ 0x3F87DC47, 0x5F820000,
+/**/ 0xBD3EB124, 0x5B5DA1F5,
+/**/ 0x3FEF9800, 0x00000000,
+/**/ 0x3F24DC34, 0x55E8CB6B,
+/**/ 0x3F89D61A, 0xADC60000,
+/**/ 0x3D37B196, 0x327B4257,
+/**/ 0x3FEF9000, 0x00000000,
+/**/ 0x3F282B68, 0x13BAF1B2,
+/**/ 0x3F8BCF71, 0x2C740000,
+/**/ 0x3D1C25E0, 0x97BD9771,
+/**/ 0x3FEF8800, 0x00000000,
+/**/ 0x3F2BB80D, 0xCC420861,
+/**/ 0x3F8DC84B, 0x19120000,
+/**/ 0x3D1C0A54, 0x1E3A5B30,
+/**/ 0x3FEF8000, 0x00000000,
+/**/ 0x3F2F81F8, 0x1F81F820,
+/**/ 0x3F8FC0A8, 0xB0FC0000,
+/**/ 0x3CDF1E7C, 0xF6D3A69C,
+/**/ 0x3FEF7800, 0x00000000,
+/**/ 0x3F31C47C, 0xED1079FA,
+/**/ 0x3F90DC45, 0x18B00000,
+/**/ 0xBD29BC2F, 0x380313FC,
+/**/ 0x3FEF7000, 0x00000000,
+/**/ 0x3F33E672, 0xFA98528D,
+/**/ 0x3F91D7F7, 0xEB9F0000,
+/**/ 0xBD14193A, 0x83FCC7A6,
+/**/ 0x3FEF6800, 0x00000000,
+/**/ 0x3F3626C7, 0xCAFBD3D2,
+/**/ 0x3F92D36C, 0xEFB50000,
+/**/ 0x3D35F0BB, 0x341706C3,
+/**/ 0x3FEF6000, 0x00000000,
+/**/ 0x3F388565, 0x06DDABA6,
+/**/ 0x3F93CEA4, 0x43470000,
+/**/ 0xBD36A2C4, 0x32D6A40B,
+/**/ 0x3FEF5800, 0x00000000,
+/**/ 0x3F3B0234, 0x6CC4F5F5,
+/**/ 0x3F94C99E, 0x04900000,
+/**/ 0x3D1DECC6, 0x5DF5F4A5,
+/**/ 0x3FEF5000, 0x00000000,
+/**/ 0x3F3D9D1F, 0xD102728A,
+/**/ 0x3F95C45A, 0x51B90000,
+/**/ 0xBD263BB6, 0x216D87D8,
+/**/ 0x3FEF5000, 0x00000000,
+/**/ 0xBF3FA9EE, 0xE26A1DD4,
+/**/ 0x3F96BED9, 0x48D20000,
+/**/ 0xBD320BC4, 0x160A43F8,
+/**/ 0x3FEF4800, 0x00000000,
+/**/ 0xBF3CD30D, 0xADEC7540,
+/**/ 0x3F97B91B, 0x07D60000,
+/**/ 0xBD33B955, 0xB602ACE4,
+/**/ 0x3FEF4000, 0x00000000,
+/**/ 0xBF39DE52, 0x7C761DC6,
+/**/ 0x3F98B31F, 0xACAA0000,
+/**/ 0xBD33FC78, 0xA96E4964,
+/**/ 0x3FEF3800, 0x00000000,
+/**/ 0xBF36CBD3, 0x23989FF0,
+/**/ 0x3F99ACE7, 0x551D0000,
+/**/ 0xBD2D75D9, 0x7EC7C410,
+/**/ 0x3FEF3000, 0x00000000,
+/**/ 0xBF339BA5, 0x639F8B15,
+/**/ 0x3F9AA672, 0x1EE80000,
+/**/ 0x3D2AD4EB, 0x5C5AF494,
+/**/ 0x3FEF2800, 0x00000000,
+/**/ 0xBF304DDE, 0xE7AA579B,
+/**/ 0x3F9B9FC0, 0x27B00000,
+/**/ 0xBD3B9A01, 0x0AE6922A,
+/**/ 0x3FEF2000, 0x00000000,
+/**/ 0xBF29C52A, 0x8B8C46FD,
+/**/ 0x3F9C98D1, 0x8D010000,
+/**/ 0xBD2BF615, 0x0589DF0F,
+/**/ 0x3FEF1800, 0x00000000,
+/**/ 0xBF22B3BB, 0xFE0E92B4,
+/**/ 0x3F9D91A6, 0x6C540000,
+/**/ 0x3D2E61F1, 0x658CFB9A,
+/**/ 0x3FEF1000, 0x00000000,
+/**/ 0xBF16CF39, 0xFE8B488E,
+/**/ 0x3F9E8A3E, 0xE30D0000,
+/**/ 0xBD21A9FA, 0x3DE53900,
+/**/ 0x3FEF0800, 0x00000000,
+/**/ 0xBEFF07C1, 0xF07C1F08,
+/**/ 0x3F9F829B, 0x0E780000,
+/**/ 0x3D298026, 0x7C7E09E4,
+/**/ 0x3FEF0000, 0x00000000,
+/**/ 0x3EFF003E, 0x007C00F8,
+/**/ 0x3FA03D5D, 0x85E70000,
+/**/ 0x3D3F7789, 0x60ED29CF,
+/**/ 0x3FEEF800, 0x00000000,
+/**/ 0x3F17B671, 0x3D759870,
+/**/ 0x3FA0B94F, 0x7C198000,
+/**/ 0xBD2E8989, 0x6F022783,
+/**/ 0x3FEEF000, 0x00000000,
+/**/ 0x3F241070, 0x2A8BB96A,
+/**/ 0x3FA13523, 0x78598000,
+/**/ 0xBD1C1AC3, 0xB71FA59B,
+/**/ 0x3FEEE800, 0x00000000,
+/**/ 0x3F2C7F84, 0x58E01EEA,
+/**/ 0x3FA1B0D9, 0x89240000,
+/**/ 0xBD33401E, 0x9AE889BB,
+/**/ 0x3FEEE000, 0x00000000,
+/**/ 0x3F329425, 0xA3D491BC,
+/**/ 0x3FA22C71, 0xBCEA8000,
+/**/ 0x3CFD2818, 0xF87F888F,
+/**/ 0x3FEED800, 0x00000000,
+/**/ 0x3F37054D, 0x9E9D2AE8,
+/**/ 0x3FA2A7EC, 0x22150000,
+/**/ 0xBD278CE7, 0x7A9163FE,
+/**/ 0x3FEED000, 0x00000000,
+/**/ 0x3F3B9325, 0x540C85E6,
+/**/ 0x3FA32348, 0xC7000000,
+/**/ 0x3D2696DB, 0x90B1E49F,
+/**/ 0x3FEED000, 0x00000000,
+/**/ 0xBF3FC267, 0xF099FC26,
+/**/ 0x3FA39E87, 0xB9FE8000,
+/**/ 0x3D3EAFD4, 0x80AD9015,
+/**/ 0x3FEEC800, 0x00000000,
+/**/ 0xBF3AFB6E, 0xD02A4E5D,
+/**/ 0x3FA419A9, 0x09590000,
+/**/ 0x3D3B5CDC, 0x67D48EA7,
+/**/ 0x3FEEC000, 0x00000000,
+/**/ 0xBF361803, 0xD7A79FF1,
+/**/ 0x3FA494AC, 0xC34D8000,
+/**/ 0x3D211C78, 0xA56FD247,
+/**/ 0x3FEEB800, 0x00000000,
+/**/ 0xBF31183B, 0x805C2197,
+/**/ 0x3FA50F92, 0xF60F8000,
+/**/ 0x3D296CFB, 0x0A91FFE3,
+/**/ 0x3FEEB000, 0x00000000,
+/**/ 0xBF27F854, 0x5FE15180,
+/**/ 0x3FA58A5B, 0xAFC90000,
+/**/ 0xBD2B2B73, 0x9570AD39,
+/**/ 0x3FEEA800, 0x00000000,
+/**/ 0xBF1B0F90, 0xE210C36A,
+/**/ 0x3FA60506, 0xFE990000,
+/**/ 0xBD32BA40, 0x8194E036,
+/**/ 0x3FEEA000, 0x00000000,
+/**/ 0xBEF6F7DD, 0x8C33ADB2,
+/**/ 0x3FA67F94, 0xF0948000,
+/**/ 0x3D3ECC1F, 0x3E7E4ED7,
+/**/ 0x3FEE9800, 0x00000000,
+/**/ 0x3F1003D3, 0x1003D310,
+/**/ 0x3FA6FA05, 0x93C78000,
+/**/ 0x3D3B415E, 0x41D634A1,
+/**/ 0x3FEE9000, 0x00000000,
+/**/ 0x3F231ABF, 0x0B7672A0,
+/**/ 0x3FA77458, 0xF6330000,
+/**/ 0xBD3181DC, 0xE586AF09,
+/**/ 0x3FEE8800, 0x00000000,
+/**/ 0x3F2E6B5C, 0xCF172481,
+/**/ 0x3FA7EE8F, 0x25CD8000,
+/**/ 0xBD3F4216, 0x11A5C1E9,
+/**/ 0x3FEE8000, 0x00000000,
+/**/ 0x3F34F9CD, 0x77A84876,
+/**/ 0x3FA868A8, 0x30840000,
+/**/ 0xBD12623A, 0x134AC693,
+/**/ 0x3FEE7800, 0x00000000,
+/**/ 0x3F3AD9A8, 0xD7473427,
+/**/ 0x3FA8E2A4, 0x243A0000,
+/**/ 0x3D2B9EEB, 0x01426490,
+/**/ 0x3FEE7800, 0x00000000,
+/**/ 0xBF3F2AD3, 0x4578DCCA,
+/**/ 0x3FA95C83, 0x0EC90000,
+/**/ 0xBD2C1482, 0x97C5FEB8,
+/**/ 0x3FEE7000, 0x00000000,
+/**/ 0xBF3913BA, 0x97A6A035,
+/**/ 0x3FA9D644, 0xFDFF8000,
+/**/ 0x3D313C90, 0x539A473B,
+/**/ 0x3FEE6800, 0x00000000,
+/**/ 0xBF32E120, 0xC594A915,
+/**/ 0x3FAA4FE9, 0xFFA40000,
+/**/ 0xBD36E584, 0xA0402925,
+/**/ 0x3FEE6000, 0x00000000,
+/**/ 0xBF292632, 0xC5DF4232,
+/**/ 0x3FAAC972, 0x21710000,
+/**/ 0x3D2F8D3E, 0xF013222C,
+/**/ 0x3FEE5800, 0x00000000,
+/**/ 0xBF18A6DF, 0xC3518A6E,
+/**/ 0x3FAB42DD, 0x71198000,
+/**/ 0xBD1C827A, 0xE5D6704C,
+/**/ 0x3FEE5000, 0x00000000,
+/**/ 0x3ED6BC08, 0x86833271,
+/**/ 0x3FABBC2B, 0xFC450000,
+/**/ 0xBD17D186, 0x91417DAF,
+/**/ 0x3FEE4800, 0x00000000,
+/**/ 0x3F1BEB2D, 0xE672838D,
+/**/ 0x3FAC355D, 0xD0920000,
+/**/ 0x3D2F2CCC, 0x9ABF8388,
+/**/ 0x3FEE4000, 0x00000000,
+/**/ 0x3F2B6B8D, 0x9785150A,
+/**/ 0x3FACAE72, 0xFB960000,
+/**/ 0xBD3EFABF, 0x2025B1BE,
+/**/ 0x3FEE3800, 0x00000000,
+/**/ 0x3F348BCE, 0xE0D399FA,
+/**/ 0x3FAD276B, 0x8ADB0000,
+/**/ 0x3D16A423, 0xC78A64B0,
+/**/ 0x3FEE3000, 0x00000000,
+/**/ 0x3F3B7CD0, 0x933AC00F,
+/**/ 0x3FADA047, 0x8BE38000,
+/**/ 0x3D2252C7, 0xB1F6FE05,
+/**/ 0x3FEE3000, 0x00000000,
+/**/ 0xBF3D7747, 0x308F5281,
+/**/ 0x3FAE1907, 0x0C278000,
+/**/ 0xBD2FEA46, 0x64629E86,
+/**/ 0x3FEE2800, 0x00000000,
+/**/ 0xBF36508B, 0x6C196F66,
+/**/ 0x3FAE91AA, 0x19150000,
+/**/ 0xBD0E82A0, 0x1DCC6A76,
+/**/ 0x3FEE2000, 0x00000000,
+/**/ 0xBF2E1E1E, 0x1E1E1E1E,
+/**/ 0x3FAF0A30, 0xC0118000,
+/**/ 0xBD2D599E, 0x83368E91,
+/**/ 0x3FEE1800, 0x00000000,
+/**/ 0xBF1ECB93, 0xDD355CDB,
+/**/ 0x3FAF829B, 0x0E780000,
+/**/ 0x3D398026, 0x7C7E09E4,
+/**/ 0x3FEE1000, 0x00000000,
+/**/ 0xBECE0FF8, 0x7C01E100,
+/**/ 0x3FAFFAE9, 0x119B8000,
+/**/ 0x3D230337, 0x4262C554,
+/**/ 0x3FEE0800, 0x00000000,
+/**/ 0x3F1D54B5, 0x25C73724,
+/**/ 0x3FB0398D, 0x6B624000,
+/**/ 0xBD3AB14D, 0xFCBFCD00,
+/**/ 0x3FEE0000, 0x00000000,
+/**/ 0x3F2E01E0, 0x1E01E01E,
+/**/ 0x3FB07598, 0x35990000,
+/**/ 0xBD3B8ECF, 0xE4B59987,
+/**/ 0x3FEDF800, 0x00000000,
+/**/ 0x3F36C715, 0xC84194BA,
+/**/ 0x3FB0B194, 0xEE0D0000,
+/**/ 0x3D3666EA, 0x4F69EDCC,
+/**/ 0x3FEDF000, 0x00000000,
+/**/ 0x3F3EA78B, 0xEF26D838,
+/**/ 0x3FB0ED83, 0x9B554000,
+/**/ 0xBD3901F4, 0x6D48ABB4,
+/**/ 0x3FEDF000, 0x00000000,
+/**/ 0xBF395DBF, 0xF10995DC,
+/**/ 0x3FB12964, 0x44030000,
+/**/ 0xBD3D53BB, 0x751AA773,
+/**/ 0x3FEDE800, 0x00000000,
+/**/ 0xBF3148E0, 0x3BCBADC8,
+/**/ 0x3FB16536, 0xEEA38000,
+/**/ 0xBD147C5E, 0x768FA309,
+/**/ 0x3FEDE000, 0x00000000,
+/**/ 0xBF2233CE, 0x86E25CE1,
+/**/ 0x3FB1A0FB, 0xA1BF8000,
+/**/ 0x3D24A3FC, 0xC319D6DC,
+/**/ 0x3FEDD800, 0x00000000,
+/**/ 0xBEEA1CE9, 0x26B3FE23,
+/**/ 0x3FB1DCB2, 0x63DB0000,
+/**/ 0x3D39444F, 0x5E9E8981,
+/**/ 0x3FEDD000, 0x00000000,
+/**/ 0x3F1E4836, 0x0AB71710,
+/**/ 0x3FB2185B, 0x3B75C000,
+/**/ 0xBD3E3189, 0xF8F32304,
+/**/ 0x3FEDC800, 0x00000000,
+/**/ 0x3F300EE5, 0x00EE500F,
+/**/ 0x3FB253F6, 0x2F0A0000,
+/**/ 0x3D3416F8, 0xFB69A701,
+/**/ 0x3FEDC000, 0x00000000,
+/**/ 0x3F38A58D, 0x231C226A,
+/**/ 0x3FB28F83, 0x450EC000,
+/**/ 0x3D3A8D75, 0xAA119769,
+/**/ 0x3FEDC000, 0x00000000,
+/**/ 0xBF3EAA0C, 0x14715D63,
+/**/ 0x3FB2CB02, 0x83F5C000,
+/**/ 0x3D3E1EE2, 0xCA657021,
+/**/ 0x3FEDB800, 0x00000000,
+/**/ 0xBF35DFF8, 0x92AEFFC5,
+/**/ 0x3FB30673, 0xF22C8000,
+/**/ 0x3D24C9E2, 0x9DCF0BA5,
+/**/ 0x3FEDB000, 0x00000000,
+/**/ 0xBF29F894, 0x67E251A0,
+/**/ 0x3FB341D7, 0x961BC000,
+/**/ 0x3D31D092, 0x99837610,
+/**/ 0x3FEDA800, 0x00000000,
+/**/ 0xBF0FF896, 0x1FF89620,
+/**/ 0x3FB37D2D, 0x76284000,
+/**/ 0xBD2C60AA, 0x9B7FF15C,
+/**/ 0x3FEDA000, 0x00000000,
+/**/ 0x3F145E70, 0x076828BD,
+/**/ 0x3FB3B875, 0x98B1C000,
+/**/ 0xBD222415, 0x94ACA313,
+/**/ 0x3FED9800, 0x00000000,
+/**/ 0x3F2C8F60, 0xE567D573,
+/**/ 0x3FB3F3B0, 0x04140000,
+/**/ 0x3CEE2474, 0xACDFCEC5,
+/**/ 0x3FED9000, 0x00000000,
+/**/ 0x3F379118, 0xF3FC4DA2,
+/**/ 0x3FB42EDC, 0xBEA64000,
+/**/ 0x3D1BC0EE, 0xEA7C9ACD,
+/**/ 0x3FED9000, 0x00000000,
+/**/ 0xBF3F0C3C, 0x049DE4C3,
+/**/ 0x3FB469FB, 0xCEBB4000,
+/**/ 0x3D3B663C, 0x4F257194,
+/**/ 0x3FED8800, 0x00000000,
+/**/ 0xBF35905F, 0xF13D5906,
+/**/ 0x3FB4A50D, 0x3AA1C000,
+/**/ 0xBD2F7FE1, 0x308973E2,
+/**/ 0x3FED8000, 0x00000000,
+/**/ 0xBF27F6C8, 0x77D1EA57,
+/**/ 0x3FB4E011, 0x08A34000,
+/**/ 0x3D3AE5CF, 0xDF2C5AE5,
+/**/ 0x3FED7800, 0x00000000,
+/**/ 0xBF026AD1, 0xF4F31BA0,
+/**/ 0x3FB51B07, 0x3F060000,
+/**/ 0x3D383F69, 0x278E686A,
+/**/ 0x3FED7000, 0x00000000,
+/**/ 0x3F1DE6B2, 0xF26DF1BD,
+/**/ 0x3FB555EF, 0xE40B4000,
+/**/ 0x3D30B497, 0x8C868E23,
+/**/ 0x3FED6800, 0x00000000,
+/**/ 0x3F31599F, 0x7BA23D96,
+/**/ 0x3FB590CA, 0xFDF00000,
+/**/ 0x3D3C284F, 0x5722ABAA,
+/**/ 0x3FED6000, 0x00000000,
+/**/ 0x3F3B526C, 0xD425A760,
+/**/ 0x3FB5CB98, 0x92ED4000,
+/**/ 0x3D17BE44, 0xA64FC52F,
+/**/ 0x3FED6000, 0x00000000,
+/**/ 0xBF3A9BFC, 0x546A6FF1,
+/**/ 0x3FB60658, 0xA9374000,
+/**/ 0x3D30C3B1, 0xDEE9C4F8,
+/**/ 0x3FED5800, 0x00000000,
+/**/ 0xBF3071AD, 0x08F02FAC,
+/**/ 0x3FB6410B, 0x46FE8000,
+/**/ 0xBD153F8F, 0x3CBD8D14,
+/**/ 0x3FED5000, 0x00000000,
+/**/ 0xBF18BAD9, 0x12C6C142,
+/**/ 0x3FB67BB0, 0x726EC000,
+/**/ 0x3CEF724B, 0x69EF5912,
+/**/ 0x3FED4800, 0x00000000,
+/**/ 0x3F10B35C, 0x3254A5A2,
+/**/ 0x3FB6B648, 0x31B00000,
+/**/ 0xBD3BF30A, 0x1377DE92,
+/**/ 0x3FED4000, 0x00000000,
+/**/ 0x3F2D41D4, 0x1D41D41D,
+/**/ 0x3FB6F0D2, 0x8AE58000,
+/**/ 0xBD34B464, 0x1B664613,
+/**/ 0x3FED3800, 0x00000000,
+/**/ 0x3F392D71, 0xF494E548,
+/**/ 0x3FB72B4F, 0x842EC000,
+/**/ 0xBD3704CC, 0xC00C9DD3,
+/**/ 0x3FED3800, 0x00000000,
+/**/ 0xBF3C2DA1, 0xFF165C2E,
+/**/ 0x3FB765BF, 0x23A6C000,
+/**/ 0xBCFECBC0, 0x35C4256A,
+/**/ 0x3FED3000, 0x00000000,
+/**/ 0xBF317062, 0x7AA49674,
+/**/ 0x3FB7A021, 0x6F648000,
+/**/ 0x3D3E124C, 0xA18418FF,
+/**/ 0x3FED2800, 0x00000000,
+/**/ 0xBF1A6B80, 0x749CB290,
+/**/ 0x3FB7DA76, 0x6D7B0000,
+/**/ 0x3D32CC84, 0x4480C89B,
+/**/ 0x3FED2000, 0x00000000,
+/**/ 0x3F114B52, 0x25C6336D,
+/**/ 0x3FB814BE, 0x23F8C000,
+/**/ 0x3CCB2381, 0xDA82FDFD,
+/**/ 0x3FED1800, 0x00000000,
+/**/ 0x3F2EB155, 0xF08A3B1D,
+/**/ 0x3FB84EF8, 0x98E84000,
+/**/ 0xBD37D5CD, 0x246977C9,
+/**/ 0x3FED1000, 0x00000000,
+/**/ 0x3F3A7692, 0xBD71CD93,
+/**/ 0x3FB88925, 0xD24FC000,
+/**/ 0xBD31D505, 0x44FBB806,
+/**/ 0x3FED1000, 0x00000000,
+/**/ 0xBF3A5384, 0x89FC5E69,
+/**/ 0x3FB8C345, 0xD6318000,
+/**/ 0x3D3B20F5, 0xACB42A66,
+/**/ 0x3FED0800, 0x00000000,
+/**/ 0xBF2E0B56, 0x6439240E,
+/**/ 0x3FB8FD58, 0xAA8C4000,
+/**/ 0xBD3EEC90, 0x1BCB725B,
+/**/ 0x3FED0000, 0x00000000,
+/**/ 0xBF0CFF8C, 0x01CFF8C0,
+/**/ 0x3FB9375E, 0x55594000,
+/**/ 0x3D3EDDC3, 0x7380C364,
+/**/ 0x3FECF800, 0x00000000,
+/**/ 0x3F1F7661, 0x546D8D78,
+/**/ 0x3FB97156, 0xDC8F8000,
+/**/ 0xBD3C1FC1, 0x9AFDB97B,
+/**/ 0x3FECF000, 0x00000000,
+/**/ 0x3F3372E2, 0x25FE30D9,
+/**/ 0x3FB9AB42, 0x46204000,
+/**/ 0xBD28A648, 0x26787061,
+/**/ 0x3FECE800, 0x00000000,
+/**/ 0x3F3F1FDB, 0xD92305A6,
+/**/ 0x3FB9E520, 0x97F9C000,
+/**/ 0x3D235FAC, 0xB52DD050,
+/**/ 0x3FECE800, 0x00000000,
+/**/ 0xBF351B8A, 0x9C37FC63,
+/**/ 0x3FBA1EF1, 0xD8060000,
+/**/ 0x3D3CD417, 0x6DF97BCB,
+/**/ 0x3FECE000, 0x00000000,
+/**/ 0xBF227EC2, 0x6CB725AB,
+/**/ 0x3FBA58B6, 0x0C2B4000,
+/**/ 0xBD3CDC73, 0x5C5C9F2A,
+/**/ 0x3FECD800, 0x00000000,
+/**/ 0x3F05A240, 0xE6C2B448,
+/**/ 0x3FBA926D, 0x3A4AC000,
+/**/ 0x3D356365, 0x0BD22A9C,
+/**/ 0x3FECD000, 0x00000000,
+/**/ 0x3F2D7EC2, 0xFBB8D9F3,
+/**/ 0x3FBACC17, 0x68434000,
+/**/ 0xBD2AA783, 0xA0B7FA4C,
+/**/ 0x3FECC800, 0x00000000,
+/**/ 0x3F3AE1DB, 0x1B71D3E9,
+/**/ 0x3FBB05B4, 0x9BEE4000,
+/**/ 0x3D0FF22C, 0x18F84A5E,
+/**/ 0x3FECC800, 0x00000000,
+/**/ 0xBF38E45A, 0xCD6DE82D,
+/**/ 0x3FBB3F44, 0xDB220000,
+/**/ 0x3D3FD153, 0xD8DE09AF,
+/**/ 0x3FECC000, 0x00000000,
+/**/ 0xBF29269F, 0xE341926A,
+/**/ 0x3FBB78C8, 0x2BB10000,
+/**/ 0xBD325EF7, 0xBC3987E7,
+/**/ 0x3FECB800, 0x00000000,
+/**/ 0xBEC589FB, 0xF620C1DA,
+/**/ 0x3FBBB23E, 0x93690000,
+/**/ 0xBD368B18, 0x3559DB8B,
+/**/ 0x3FECB000, 0x00000000,
+/**/ 0x3F28A893, 0x0DE5FF1A,
+/**/ 0x3FBBEBA8, 0x18148000,
+/**/ 0xBD389B78, 0xB6DF1F57,
+/**/ 0x3FECA800, 0x00000000,
+/**/ 0x3F38EAB9, 0x0039563B,
+/**/ 0x3FBC2504, 0xBF79C000,
+/**/ 0x3D3717C4, 0xD0EF4ADC,
+/**/ 0x3FECA800, 0x00000000,
+/**/ 0xBF3A67D5, 0x08F377F2,
+/**/ 0x3FBC5E54, 0x8F5BC000,
+/**/ 0x3D1D0C57, 0x585FBE06,
+/**/ 0x3FECA000, 0x00000000,
+/**/ 0xBF2B46E0, 0x072792E4,
+/**/ 0x3FBC9797, 0x8D790000,
+/**/ 0xBD36E010, 0x977D1884,
+/**/ 0x3FEC9800, 0x00000000,
+/**/ 0xBEE904EA, 0x1BB327C3,
+/**/ 0x3FBCD0CD, 0xBF8C0000,
+/**/ 0x3D33E14D, 0xB50DD743,
+/**/ 0x3FEC9000, 0x00000000,
+/**/ 0x3F2853EB, 0x77683AEC,
+/**/ 0x3FBD09F7, 0x2B4C4000,
+/**/ 0x3D2048C0, 0x00354E33,
+/**/ 0x3FEC8800, 0x00000000,
+/**/ 0x3F3932D7, 0xDC52100E,
+/**/ 0x3FBD4313, 0xD66CC000,
+/**/ 0xBD294543, 0x79135713,
+/**/ 0x3FEC8800, 0x00000000,
+/**/ 0xBF39AD90, 0x2736962B,
+/**/ 0x3FBD7C23, 0xC69CC000,
+/**/ 0xBD297EE4, 0xDD328771,
+/**/ 0x3FEC8000, 0x00000000,
+/**/ 0xBF28EEA2, 0xF316B4C2,
+/**/ 0x3FBDB527, 0x0187C000,
+/**/ 0x3D392778, 0x56AE181F,
+/**/ 0x3FEC7800, 0x00000000,
+/**/ 0x3EEAB099, 0x058F7536,
+/**/ 0x3FBDEE1D, 0x8CD60000,
+/**/ 0xBD328DA0, 0x729EFF89,
+/**/ 0x3FEC7000, 0x00000000,
+/**/ 0x3F2C71C7, 0x1C71C71C,
+/**/ 0x3FBE2707, 0x6E2B0000,
+/**/ 0xBD2A342C, 0x2AF0003C,
+/**/ 0x3FEC6800, 0x00000000,
+/**/ 0x3F3BB2BB, 0xD6422A30,
+/**/ 0x3FBE5FE4, 0xAB274000,
+/**/ 0xBD35FAE9, 0xF74FFE4D,
+/**/ 0x3FEC6800, 0x00000000,
+/**/ 0xBF36BD01, 0x54BDE47E,
+/**/ 0x3FBE98B5, 0x49670000,
+/**/ 0x3D346774, 0x89C50E97,
+/**/ 0x3FEC6000, 0x00000000,
+/**/ 0xBF222CC5, 0xB5157FE4,
+/**/ 0x3FBED179, 0x4E838000,
+/**/ 0xBD1FD143, 0x749D0484,
+/**/ 0x3FEC5800, 0x00000000,
+/**/ 0x3F129A21, 0xA930B840,
+/**/ 0x3FBF0A30, 0xC0118000,
+/**/ 0xBD3D599E, 0x83368E91,
+/**/ 0x3FEC5000, 0x00000000,
+/**/ 0x3F3279B1, 0xAC5CEE14,
+/**/ 0x3FBF42DB, 0xA3A24000,
+/**/ 0xBD3312B7, 0x32DF6C0D,
+/**/ 0x3FEC5000, 0x00000000,
+/**/ 0xBF3F9CF5, 0xD4AB8D0B,
+/**/ 0x3FBF7B79, 0xFEC38000,
+/**/ 0xBD010987, 0xE897ED01,
+/**/ 0x3FEC4800, 0x00000000,
+/**/ 0xBF319D7C, 0xCC17DAE4,
+/**/ 0x3FBFB40B, 0xD6FF4000,
+/**/ 0x3D2C0BEC, 0xB7B53B5B,
+/**/ 0x3FEC4000, 0x00000000,
+/**/ 0xBF0C3F8F, 0x01C3F8F0,
+/**/ 0x3FBFEC91, 0x31DC0000,
+/**/ 0xBD354555, 0xD1AE6607,
+/**/ 0x3FEC3800, 0x00000000,
+/**/ 0x3F254738, 0xAB1B8FFC,
+/**/ 0x3FC01285, 0x0A6E0000,
+/**/ 0xBD1A8619, 0x4805BF94,
+/**/ 0x3FEC3000, 0x00000000,
+/**/ 0x3F38E51F, 0x48B3C5D7,
+/**/ 0x3FC02EBB, 0x42BF4000,
+/**/ 0xBD15A8FA, 0x5CE00E5D,
+/**/ 0x3FEC3000, 0x00000000,
+/**/ 0xBF38C377, 0x867E595E,
+/**/ 0x3FC04AEB, 0x449F6000,
+/**/ 0x3D2AFA90, 0x65CCD35C,
+/**/ 0x3FEC2800, 0x00000000,
+/**/ 0xBF24AC6D, 0x15FE3D95,
+/**/ 0x3FC06715, 0x12CA6000,
+/**/ 0xBD2A4757, 0x9CDC0A3D,
+/**/ 0x3FEC2000, 0x00000000,
+/**/ 0x3F10B34F, 0x53B8CDAE,
+/**/ 0x3FC08338, 0xAFFA2000,
+/**/ 0x3D30533C, 0xAC823E27,
+/**/ 0x3FEC1800, 0x00000000,
+/**/ 0x3F32C599, 0x3FABB0F6,
+/**/ 0x3FC09F56, 0x1EE72000,
+/**/ 0xBD28F305, 0x7157D1A8,
+/**/ 0x3FEC1800, 0x00000000,
+/**/ 0xBF3E8BF4, 0x97CD1B6C,
+/**/ 0x3FC0BB6D, 0x6247A000,
+/**/ 0x3D35464F, 0x3CCD04B3,
+/**/ 0x3FEC1000, 0x00000000,
+/**/ 0xBF2F8FC7, 0xE3F1F8FC,
+/**/ 0x3FC0D77E, 0x7CD08000,
+/**/ 0x3D3CB2CD, 0x2EE2F482,
+/**/ 0x3FEC0800, 0x00000000,
+/**/ 0xBEEDC860, 0x5B199F35,
+/**/ 0x3FC0F389, 0x7134C000,
+/**/ 0xBD3DA359, 0xE893D6C6,
+/**/ 0x3FEC0000, 0x00000000,
+/**/ 0x3F2C01C0, 0x1C01C01C,
+/**/ 0x3FC10F8E, 0x42254000,
+/**/ 0xBD293B38, 0x43396307,
+/**/ 0x3FEBF800, 0x00000000,
+/**/ 0x3F3D0577, 0x256228AA,
+/**/ 0x3FC12B8C, 0xF2518000,
+/**/ 0x3D348A4A, 0x13C0A0FC,
+/**/ 0x3FEBF800, 0x00000000,
+/**/ 0xBF33E08B, 0xCB93A8A1,
+/**/ 0x3FC14785, 0x84674000,
+/**/ 0x3D156345, 0x1027C750,
+/**/ 0x3FEBF000, 0x00000000,
+/**/ 0xBF12C4DB, 0x1DE63F4A,
+/**/ 0x3FC16377, 0xFB124000,
+/**/ 0x3D091E1A, 0xBF41763E,
+/**/ 0x3FEBE800, 0x00000000,
+/**/ 0x3F2526D0, 0x769F9E4F,
+/**/ 0x3FC17F64, 0x58FCA000,
+/**/ 0x3D2843FA, 0xD093C8DC,
+/**/ 0x3FEBE000, 0x00000000,
+/**/ 0x3F39ED43, 0x5292D891,
+/**/ 0x3FC19B4A, 0xA0CEE000,
+/**/ 0xBD3D8824, 0x9621338B,
+/**/ 0x3FEBE000, 0x00000000,
+/**/ 0xBF36A3B3, 0x5FC845A9,
+/**/ 0x3FC1B72A, 0xD52F6000,
+/**/ 0x3D2E80A4, 0x1811A396,
+/**/ 0x3FEBD800, 0x00000000,
+/**/ 0xBF1C7E26, 0xB7230491,
+/**/ 0x3FC1D304, 0xF8C36000,
+/**/ 0xBD3A6D44, 0xDF451042,
+/**/ 0x3FEBD000, 0x00000000,
+/**/ 0x3F20F365, 0x451B61CB,
+/**/ 0x3FC1EED9, 0x0E2DC000,
+/**/ 0x3D161563, 0x7097648F,
+/**/ 0x3FEBC800, 0x00000000,
+/**/ 0x3F3827F3, 0xD72DD0AA,
+/**/ 0x3FC20AA7, 0x18102000,
+/**/ 0x3D3F2C94, 0x348552FE,
+/**/ 0x3FEBC800, 0x00000000,
+/**/ 0xBF3814D3, 0xBE0C262F,
+/**/ 0x3FC2266F, 0x190A6000,
+/**/ 0xBD24D20A, 0xB840E7F6,
+/**/ 0x3FEBC000, 0x00000000,
+/**/ 0xBF207963, 0x7ECECB53,
+/**/ 0x3FC24231, 0x13BA6000,
+/**/ 0xBD3E3A00, 0x78EE9D9C,
+/**/ 0x3FEBB800, 0x00000000,
+/**/ 0x3F1EC130, 0xF29268D3,
+/**/ 0x3FC25DED, 0x0ABC6000,
+/**/ 0x3D35A385, 0x4F176449,
+/**/ 0x3FEBB000, 0x00000000,
+/**/ 0x3F37B218, 0xAB6353BF,
+/**/ 0x3FC279A3, 0x00AB4000,
+/**/ 0x3D3EF432, 0xB3235108,
+/**/ 0x3FEBB000, 0x00000000,
+/**/ 0xBF383759, 0xF2298376,
+/**/ 0x3FC29552, 0xF8200000,
+/**/ 0xBD35B967, 0xF4471DFC,
+/**/ 0x3FEBA800, 0x00000000,
+/**/ 0xBF201832, 0x1EAD4253,
+/**/ 0x3FC2B0FC, 0xF3B1A000,
+/**/ 0x3D177CA3, 0xE30A59EA,
+/**/ 0x3FEBA000, 0x00000000,
+/**/ 0x3F20679B, 0xD84886B1,
+/**/ 0x3FC2CCA0, 0xF5F60000,
+/**/ 0xBD3B5EF1, 0x91AFF120,
+/**/ 0x3FEB9800, 0x00000000,
+/**/ 0x3F38884D, 0xA41FEB4C,
+/**/ 0x3FC2E83F, 0x0180E000,
+/**/ 0xBD3F0C2A, 0xC284E1CE,
+/**/ 0x3FEB9800, 0x00000000,
+/**/ 0xBF370EA7, 0x3806E548,
+/**/ 0x3FC303D7, 0x18E48000,
+/**/ 0xBCD680B5, 0xCE3ECB05,
+/**/ 0x3FEB9000, 0x00000000,
+/**/ 0xBF1A4477, 0xB5EF34C0,
+/**/ 0x3FC31F69, 0x3EB1A000,
+/**/ 0xBD2A6726, 0xE5A396FB,
+/**/ 0x3FEB8800, 0x00000000,
+/**/ 0x3F2401B8, 0x9401B894,
+/**/ 0x3FC33AF5, 0x75770000,
+/**/ 0x3D3C9ECC, 0xA2FE72A5,
+/**/ 0x3FEB8000, 0x00000000,
+/**/ 0x3F3AA73A, 0x400DC1AA,
+/**/ 0x3FC3567B, 0xBFC22000,
+/**/ 0x3D3250D2, 0x53991A1F,
+/**/ 0x3FEB8000, 0x00000000,
+/**/ 0xBF349E11, 0x2E63A6A8,
+/**/ 0x3FC371FC, 0x201E8000,
+/**/ 0x3D3EE877, 0x9B2D8ABC,
+/**/ 0x3FEB7800, 0x00000000,
+/**/ 0xBF0E7898, 0xC8DA04B9,
+/**/ 0x3FC38D76, 0x99164000,
+/**/ 0x3D1844A5, 0x9E39BB70,
+/**/ 0x3FEB7000, 0x00000000,
+/**/ 0x3F2A284E, 0xE6B33E2D,
+/**/ 0x3FC3A8EB, 0x2D31A000,
+/**/ 0x3D1BAFB7, 0x7D5D503E,
+/**/ 0x3FEB6800, 0x00000000,
+/**/ 0x3F3E0B91, 0x759C2BB4,
+/**/ 0x3FC3C459, 0xDEF76000,
+/**/ 0x3D3EDC86, 0xF6B70D33,
+/**/ 0x3FEB6800, 0x00000000,
+/**/ 0xBF30E8E2, 0x088FD6E7,
+/**/ 0x3FC3DFC2, 0xB0ECC000,
+/**/ 0x3D28A72A, 0x62B8C13F,
+/**/ 0x3FEB6000, 0x00000000,
+/**/ 0x3ECB6006, 0xD801B600,
+/**/ 0x3FC3FB25, 0xA5952000,
+/**/ 0x3D3195BE, 0x6B358FF7,
+/**/ 0x3FEB5800, 0x00000000,
+/**/ 0x3F316A6A, 0xD840F62C,
+/**/ 0x3FC41682, 0xBF728000,
+/**/ 0xBD210047, 0x081F849D,
+/**/ 0x3FEB5800, 0x00000000,
+/**/ 0xBF3D4DEE, 0x7DF8BD99,
+/**/ 0x3FC431DA, 0x01050000,
+/**/ 0x3D304837, 0x836E0391,
+/**/ 0x3FEB5000, 0x00000000,
+/**/ 0xBF27E4B1, 0x7E4B17E5,
+/**/ 0x3FC44D2B, 0x6CCB8000,
+/**/ 0xBD170CC1, 0x6135783C,
+/**/ 0x3FEB4800, 0x00000000,
+/**/ 0x3F15F47D, 0x55E6D8FE,
+/**/ 0x3FC46877, 0x05430000,
+/**/ 0xBD3D8145, 0xF8D5087E,
+/**/ 0x3FEB4000, 0x00000000,
+/**/ 0x3F37006D, 0x0B803686,
+/**/ 0x3FC483BC, 0xCCE6E000,
+/**/ 0x3D1EEA52, 0x723F6369,
+/**/ 0x3FEB4000, 0x00000000,
+/**/ 0xBF37687C, 0x46A66920,
+/**/ 0x3FC49EFC, 0xC6314000,
+/**/ 0xBD090F59, 0x9F55572B,
+/**/ 0x3FEB3800, 0x00000000,
+/**/ 0xBF16F6A4, 0xFF2645BE,
+/**/ 0x3FC4BA36, 0xF39A6000,
+/**/ 0xBD34354B, 0xB3F219E5,
+/**/ 0x3FEB3000, 0x00000000,
+/**/ 0x3F2801B3, 0x1801B318,
+/**/ 0x3FC4D56B, 0x5798E000,
+/**/ 0x3D380580, 0x15A96555,
+/**/ 0x3FEB2800, 0x00000000,
+/**/ 0x3F3DD2FF, 0x93511680,
+/**/ 0x3FC4F099, 0xF4A24000,
+/**/ 0xBD3E9BF2, 0xFAFEAF27,
+/**/ 0x3FEB2800, 0x00000000,
+/**/ 0xBF304743, 0xA89DCCAC,
+/**/ 0x3FC50BC2, 0xCD29C000,
+/**/ 0x3D1ADA57, 0x28DB8D4F,
+/**/ 0x3FEB2000, 0x00000000,
+/**/ 0x3EFB2036, 0x406C80D9,
+/**/ 0x3FC526E5, 0xE3A1C000,
+/**/ 0xBD3790BA, 0x37FC5238,
+/**/ 0x3FEB1800, 0x00000000,
+/**/ 0x3F33BEC8, 0x4F9DC00E,
+/**/ 0x3FC54203, 0x3A7A8000,
+/**/ 0x3D268D68, 0xED855F0E,
+/**/ 0x3FEB1800, 0x00000000,
+/**/ 0xBF3A2101, 0x44F8CE7E,
+/**/ 0x3FC55D1A, 0xD4232000,
+/**/ 0x3D3ADD94, 0xDDA647E8,
+/**/ 0x3FEB1000, 0x00000000,
+/**/ 0xBF1FB596, 0xB99AF3F3,
+/**/ 0x3FC5782C, 0xB3092000,
+/**/ 0xBD33A463, 0x51794442,
+/**/ 0x3FEB0800, 0x00000000,
+/**/ 0x3F24B31D, 0x922A3E85,
+/**/ 0x3FC59338, 0xD9982000,
+/**/ 0x3CF0BA68, 0xB7555D4A,
+/**/ 0x3FEB0000, 0x00000000,
+/**/ 0x3F3CB3CF, 0xE19BF6B7,
+/**/ 0x3FC5AE3F, 0x4A3AA000,
+/**/ 0x3D21EA25, 0xF012A8B9,
+/**/ 0x3FEB0000, 0x00000000,
+/**/ 0xBF30DEAE, 0x9A5BF0D1,
+/**/ 0x3FC5C940, 0x07598000,
+/**/ 0xBD3A8D94, 0x8CD23322,
+/**/ 0x3FEAF800, 0x00000000,
+/**/ 0x3EFA2072, 0x9EDE13CE,
+/**/ 0x3FC5E43B, 0x135BE000,
+/**/ 0xBD343AB4, 0xCEED9C31,
+/**/ 0x3FEAF000, 0x00000000,
+/**/ 0x3F3435E5, 0x0D79435E,
+/**/ 0x3FC5FF30, 0x70A7A000,
+/**/ 0xBD38586F, 0x183BEBF2,
+/**/ 0x3FEAF000, 0x00000000,
+/**/ 0xBF392321, 0x06855D30,
+/**/ 0x3FC61A20, 0x21A0E000,
+/**/ 0x3D3DD9DD, 0x1BDF3CDD,
+/**/ 0x3FEAE800, 0x00000000,
+/**/ 0xBF19A45C, 0x7ABED811,
+/**/ 0x3FC6350A, 0x28AAA000,
+/**/ 0x3D2D5EC0, 0xAB8163AF,
+/**/ 0x3FEAE000, 0x00000000,
+/**/ 0x3F28C7ED, 0x84EF68CB,
+/**/ 0x3FC64FEE, 0x88260000,
+/**/ 0xBD1DA40D, 0x759DDED6,
+/**/ 0x3FEAD800, 0x00000000,
+/**/ 0x3F3F43FC, 0xA482F00D,
+/**/ 0x3FC66ACD, 0x4272A000,
+/**/ 0x3D3AA1BD, 0xBFC6C785,
+/**/ 0x3FEAD800, 0x00000000,
+/**/ 0xBF2B9222, 0xCDE3E7AE,
+/**/ 0x3FC685A6, 0x59EF0000,
+/**/ 0xBD21F2A9, 0x6C103214,
+/**/ 0x3FEAD000, 0x00000000,
+/**/ 0x3F14F302, 0xEED254A3,
+/**/ 0x3FC6A079, 0xD0F7A000,
+/**/ 0x3D35A3F8, 0x448D14F5,
+/**/ 0x3FEAC800, 0x00000000,
+/**/ 0x3F385567, 0x32071DEF,
+/**/ 0x3FC6BB47, 0xA9E80000,
+/**/ 0x3D19F64D, 0x23EA3296,
+/**/ 0x3FEAC800, 0x00000000,
+/**/ 0xBF347F29, 0xD47F29D4,
+/**/ 0x3FC6D60F, 0xE719E000,
+/**/ 0xBD3BC6E5, 0x57134767,
+/**/ 0x3FEAC000, 0x00000000,
+/**/ 0xBEF40FE1, 0xE82D23BC,
+/**/ 0x3FC6F0D2, 0x8AE56000,
+/**/ 0x3D369737, 0xC93373DA,
+/**/ 0x3FEAB800, 0x00000000,
+/**/ 0x3F320FDE, 0x972D8538,
+/**/ 0x3FC70B8F, 0x97A1A000,
+/**/ 0x3D34EA64, 0xF6A95BEF,
+/**/ 0x3FEAB800, 0x00000000,
+/**/ 0xBF3A8C9F, 0x66711513,
+/**/ 0x3FC72647, 0x0FA40000,
+/**/ 0xBD3774DF, 0x0E743A45,
+/**/ 0x3FEAB000, 0x00000000,
+/**/ 0xBF1C5A0F, 0x02806ABC,
+/**/ 0x3FC740F8, 0xF5404000,
+/**/ 0xBD30B66C, 0x99018AA1,
+/**/ 0x3FEAA800, 0x00000000,
+/**/ 0x3F28E44B, 0xD22C937A,
+/**/ 0x3FC75BA5, 0x4AC8E000,
+/**/ 0x3D3DDCA5, 0x8BC4A7C0,
+/**/ 0x3FEAA800, 0x00000000,
+/**/ 0xBF3FF2AD, 0xFF2ADFF3,
+/**/ 0x3FC7764C, 0x128F2000,
+/**/ 0x3D027490, 0x3479E3D1,
+/**/ 0x3FEAA000, 0x00000000,
+/**/ 0xBF288A16, 0x0B3ADA5C,
+/**/ 0x3FC790ED, 0x4EE26000,
+/**/ 0x3D199BBD, 0x4E7746F6,
+/**/ 0x3FEA9800, 0x00000000,
+/**/ 0x3F1DEC0D, 0x4C77B035,
+/**/ 0x3FC7AB89, 0x0210E000,
+/**/ 0xBD2BDB90, 0x72534A58,
+/**/ 0x3FEA9000, 0x00000000,
+/**/ 0x3F3B4D71, 0x91F59E6B,
+/**/ 0x3FC7C61F, 0x2E674000,
+/**/ 0xBD32392D, 0xB31BE8E0,
+/**/ 0x3FEA9000, 0x00000000,
+/**/ 0xBF30CDCB, 0xB8A2A522,
+/**/ 0x3FC7E0AF, 0xD630C000,
+/**/ 0x3D139E7C, 0x1D8F1034,
+/**/ 0x3FEA8800, 0x00000000,
+/**/ 0x3F094A00, 0x6A2194A0,
+/**/ 0x3FC7FB3A, 0xFBB76000,
+/**/ 0xBD37DBF5, 0x24609D57,
+/**/ 0x3FEA8000, 0x00000000,
+/**/ 0x3F373289, 0x870AC52E,
+/**/ 0x3FC815C0, 0xA1436000,
+/**/ 0xBD302A52, 0xF9201CE8,
+/**/ 0x3FEA8000, 0x00000000,
+/**/ 0xBF34B1FA, 0x9E8684DD,
+/**/ 0x3FC83040, 0xC91BC000,
+/**/ 0x3D3E5B71, 0xC6E66F32,
+/**/ 0x3FEA7800, 0x00000000,
+/**/ 0xBEE08AF5, 0xA9267648,
+/**/ 0x3FC84ABB, 0x75866000,
+/**/ 0xBD3D8DAA, 0xDF4E2BD2,
+/**/ 0x3FEA7000, 0x00000000,
+/**/ 0x3F33BB67, 0x1A3D927E,
+/**/ 0x3FC86530, 0xA8C70000,
+/**/ 0x3D398BB0, 0xCB4EA3E3,
+/**/ 0x3FEA7000, 0x00000000,
+/**/ 0xBF37F2C9, 0x7F2C97F3,
+/**/ 0x3FC87FA0, 0x6520C000,
+/**/ 0x3D322120, 0x401202FC,
+/**/ 0x3FEA6800, 0x00000000,
+/**/ 0xBF0C77A5, 0x3C076D20,
+/**/ 0x3FC89A0A, 0xACD4E000,
+/**/ 0x3D2C0BFB, 0xDA8F5A72,
+/**/ 0x3FEA6000, 0x00000000,
+/**/ 0x3F30E6DA, 0x7C7EF82B,
+/**/ 0x3FC8B46F, 0x82236000,
+/**/ 0x3D12D9F2, 0x102DD7C9,
+/**/ 0x3FEA6000, 0x00000000,
+/**/ 0xBF3A9167, 0x2EC05C44,
+/**/ 0x3FC8CECE, 0xE74AE000,
+/**/ 0xBD3A5BA0, 0xAA429BB5,
+/**/ 0x3FEA5800, 0x00000000,
+/**/ 0xBF17DF12, 0xEEB6BD53,
+/**/ 0x3FC8E928, 0xDE886000,
+/**/ 0x3D3A8154, 0xB13D72D5,
+/**/ 0x3FEA5000, 0x00000000,
+/**/ 0x3F2D676D, 0x98C70AE6,
+/**/ 0x3FC9037D, 0x6A180000,
+/**/ 0x3D230DEA, 0x57C1C8D9,
+/**/ 0x3FEA5000, 0x00000000,
+/**/ 0xBF3C8EFF, 0x96CE4780,
+/**/ 0x3FC91DCC, 0x8C340000,
+/**/ 0x3D37BC6A, 0xBDDEFF46,
+/**/ 0x3FEA4800, 0x00000000,
+/**/ 0xBF1EFFCB, 0x71EFFCB7,
+/**/ 0x3FC93816, 0x4715A000,
+/**/ 0xBD34C63D, 0x6A3A39D9,
+/**/ 0x3FEA4000, 0x00000000,
+/**/ 0x3F2A41A4, 0x1A41A41A,
+/**/ 0x3FC9525A, 0x9CF46000,
+/**/ 0xBD329713, 0x7D9F158F,
+/**/ 0x3FEA4000, 0x00000000,
+/**/ 0xBF3DECBB, 0xBF3B3C0E,
+/**/ 0x3FC96C99, 0x9006A000,
+/**/ 0x3D2A88D5, 0x9CBB452C,
+/**/ 0x3FEA3800, 0x00000000,
+/**/ 0xBF21D14E, 0x3BCD35A8,
+/**/ 0x3FC986D3, 0x22818000,
+/**/ 0x3CF93B56, 0x4DD44000,
+/**/ 0x3FEA3000, 0x00000000,
+/**/ 0x3F285A0A, 0x3B5832C0,
+/**/ 0x3FC9A107, 0x56988000,
+/**/ 0x3D264AA6, 0x242CD098,
+/**/ 0x3FEA3000, 0x00000000,
+/**/ 0xBF3EABC1, 0xD71AFD8C,
+/**/ 0x3FC9BB36, 0x2E7E0000,
+/**/ 0xBD21F2A8, 0xA1CE0FFC,
+/**/ 0x3FEA2800, 0x00000000,
+/**/ 0xBF22E60D, 0x7C041611,
+/**/ 0x3FC9D55F, 0xAC62E000,
+/**/ 0xBD3F4669, 0xFC3B5BC3,
+/**/ 0x3FEA2000, 0x00000000,
+/**/ 0x3F27AE57, 0x5FF2EF43,
+/**/ 0x3FC9EF83, 0xD276A000,
+/**/ 0xBD2730B7, 0xB3F9CE00,
+/**/ 0x3FEA2000, 0x00000000,
+/**/ 0xBF3ECD35, 0x3D66322E,
+/**/ 0x3FCA09A2, 0xA2E7A000,
+/**/ 0xBD2DD99D, 0xCD411233,
+/**/ 0x3FEA1800, 0x00000000,
+/**/ 0xBF22C068, 0x5B4FE5E9,
+/**/ 0x3FCA23BC, 0x1FE2C000,
+/**/ 0xBD3539CD, 0x91DC9F0B,
+/**/ 0x3FEA1000, 0x00000000,
+/**/ 0x3F283C48, 0x80B67A9A,
+/**/ 0x3FCA3DD0, 0x4B938000,
+/**/ 0x3D297DA1, 0x366E2C5A,
+/**/ 0x3FEA1000, 0x00000000,
+/**/ 0xBF3E5236, 0x89907BBA,
+/**/ 0x3FCA57DF, 0x28244000,
+/**/ 0x3D3B99C8, 0xCA1D9ABB,
+/**/ 0x3FEA0800, 0x00000000,
+/**/ 0xBF21629E, 0x32054967,
+/**/ 0x3FCA71E8, 0xB7BE0000,
+/**/ 0xBD210ACA, 0x6EF05323,
+/**/ 0x3FEA0000, 0x00000000,
+/**/ 0x3F2A01A0, 0x1A01A01A,
+/**/ 0x3FCA8BEC, 0xFC882000,
+/**/ 0x3D3E3185, 0xCF21B9CF,
+/**/ 0x3FEA0000, 0x00000000,
+/**/ 0xBF3D3BE3, 0x93FF301D,
+/**/ 0x3FCAA5EB, 0xF8A94000,
+/**/ 0xBD32A0A9, 0x36951A8F,
+/**/ 0x3FE9F800, 0x00000000,
+/**/ 0xBF1D9DD1, 0xBFE608ED,
+/**/ 0x3FCABFE5, 0xAE462000,
+/**/ 0xBD3B68F5, 0x395F139D,
+/**/ 0x3FE9F000, 0x00000000,
+/**/ 0x3F2CFC26, 0x1B29257F,
+/**/ 0x3FCAD9DA, 0x1F828000,
+/**/ 0xBD3882B7, 0xC803F050,
+/**/ 0x3FE9F000, 0x00000000,
+/**/ 0xBF3B8B57, 0x7E613717,
+/**/ 0x3FCAF3C9, 0x4E80C000,
+/**/ 0xBCBA4E63, 0x3FCD9066,
+/**/ 0x3FE9E800, 0x00000000,
+/**/ 0xBF160EF9, 0xB9FABD04,
+/**/ 0x3FCB0DB3, 0x3D620000,
+/**/ 0x3D3FEE14, 0x38EAB906,
+/**/ 0x3FE9E000, 0x00000000,
+/**/ 0x3F3094D3, 0xEAF850E2,
+/**/ 0x3FCB2797, 0xEE464000,
+/**/ 0xBD3BE88A, 0x906D00A9,
+/**/ 0x3FE9E000, 0x00000000,
+/**/ 0xBF3941AA, 0xBBE88FDC,
+/**/ 0x3FCB4177, 0x634BA000,
+/**/ 0x3D355D01, 0x5666069F,
+/**/ 0x3FE9D800, 0x00000000,
+/**/ 0xBF083A25, 0x25F4B1AA,
+/**/ 0x3FCB5B51, 0x9E8FC000,
+/**/ 0xBD34B722, 0xEC011F31,
+/**/ 0x3FE9D000, 0x00000000,
+/**/ 0x3F3343FB, 0xF71FAC14,
+/**/ 0x3FCB7526, 0xA22E4000,
+/**/ 0x3D2C0DBF, 0x2E785490,
+/**/ 0x3FE9D000, 0x00000000,
+/**/ 0xBF365FF3, 0x1965FF32,
+/**/ 0x3FCB8EF6, 0x70420000,
+/**/ 0x3D387533, 0x321788E0,
+/**/ 0x3FE9C800, 0x00000000,
+/**/ 0x3EA9C801, 0x9C8019C8,
+/**/ 0x3FCBA8C1, 0x0AE46000,
+/**/ 0x3D3A32E2, 0x9EEE9D85,
+/**/ 0x3FE9C000, 0x00000000,
+/**/ 0x3F368A77, 0x25080CE1,
+/**/ 0x3FCBC286, 0x742D8000,
+/**/ 0x3D39AC53, 0xF39D121C,
+/**/ 0x3FE9C000, 0x00000000,
+/**/ 0xBF32E743, 0xC54763F2,
+/**/ 0x3FCBDC46, 0xAE344000,
+/**/ 0x3D3625B4, 0x023D6505,
+/**/ 0x3FE9B800, 0x00000000,
+/**/ 0x3F0DBD49, 0x8B7424F9,
+/**/ 0x3FCBF601, 0xBB0E4000,
+/**/ 0x3D2386A9, 0x47C378B5,
+/**/ 0x3FE9B000, 0x00000000,
+/**/ 0x3F3A6734, 0x00CD9A67,
+/**/ 0x3FCC0FB7, 0x9CCFE000,
+/**/ 0xBD346FFF, 0x99E8A558,
+/**/ 0x3FE9B000, 0x00000000,
+/**/ 0xBF2DB15A, 0xAEF25B7C,
+/**/ 0x3FCC2968, 0x558C2000,
+/**/ 0xBD2CFD73, 0xDEE38A40,
+/**/ 0x3FE9A800, 0x00000000,
+/**/ 0x3F1FDFEC, 0xC140C073,
+/**/ 0x3FCC4313, 0xE754E000,
+/**/ 0x3D3279BE, 0x74CAD7D6,
+/**/ 0x3FE9A000, 0x00000000,
+/**/ 0x3F3ED923, 0xA7DCBEB3,
+/**/ 0x3FCC5CBA, 0x543AE000,
+/**/ 0x3D20929D, 0xECB454FC,
+/**/ 0x3FE9A000, 0x00000000,
+/**/ 0xBF246A7B, 0xB256DE2C,
+/**/ 0x3FCC765B, 0x9E4D6000,
+/**/ 0x3D31AB6B, 0x36976F6C,
+/**/ 0x3FE99800, 0x00000000,
+/**/ 0x3F299999, 0x9999999A,
+/**/ 0x3FCC8FF7, 0xC79AA000,
+/**/ 0xBD27794F, 0x689F8434,
+/**/ 0x3FE99800, 0x00000000,
+/**/ 0xBF3C20C6, 0x3EC03FF3,
+/**/ 0x3FCCA98E, 0xD22F6000,
+/**/ 0xBCF698C1, 0x8CA209C8,
+/**/ 0x3FE99000, 0x00000000,
+/**/ 0xBF13F803, 0x31EC07FD,
+/**/ 0x3FCCC320, 0xC0176000,
+/**/ 0x3D240903, 0x9A653794,
+/**/ 0x3FE98800, 0x00000000,
+/**/ 0x3F323513, 0x5AC98715,
+/**/ 0x3FCCDCAD, 0x935D2000,
+/**/ 0xBD0A0FF0, 0x34C9A447,
+/**/ 0x3FE98800, 0x00000000,
+/**/ 0xBF368793, 0x89F80661,
+/**/ 0x3FCCF635, 0x4E09C000,
+/**/ 0x3D277123, 0x9A07D55B,
+/**/ 0x3FE98000, 0x00000000,
+/**/ 0x3EE98019, 0x8019801A,
+/**/ 0x3FCD0FB7, 0xF2256000,
+/**/ 0xBD0AF52B, 0x20633B29,
+/**/ 0x3FE97800, 0x00000000,
+/**/ 0x3F382FC6, 0xAB329020,
+/**/ 0x3FCD2935, 0x81B6C000,
+/**/ 0xBD383270, 0x128AAA5F,
+/**/ 0x3FE97800, 0x00000000,
+/**/ 0xBF305C4B, 0x962DBFF3,
+/**/ 0x3FCD42AD, 0xFEC36000,
+/**/ 0xBD175C00, 0xFD804272,
+/**/ 0x3FE97000, 0x00000000,
+/**/ 0x3F1C9F01, 0x970E4F81,
+/**/ 0x3FCD5C21, 0x6B4FC000,
+/**/ 0xBD21BA91, 0xBBCA681B,
+/**/ 0x3FE96800, 0x00000000,
+/**/ 0x3F3EBBE1, 0x049160B8,
+/**/ 0x3FCD758F, 0xC95F0000,
+/**/ 0xBD15A10A, 0x8B4162AA,
+/**/ 0x3FE96800, 0x00000000,
+/**/ 0xBF233FE6, 0x9933FE6A,
+/**/ 0x3FCD8EF9, 0x1AF32000,
+/**/ 0xBD15105F, 0xC364C784,
+/**/ 0x3FE96000, 0x00000000,
+/**/ 0x3F2C2873, 0xCE078906,
+/**/ 0x3FCDA85D, 0x620CE000,
+/**/ 0x3D240194, 0xC16CC7EC,
+/**/ 0x3FE96000, 0x00000000,
+/**/ 0xBF3A27A0, 0xE442936B,
+/**/ 0x3FCDC1BC, 0xA0ABE000,
+/**/ 0x3D38FAC1, 0xA628CCC6,
+/**/ 0x3FE95800, 0x00000000,
+/**/ 0xBF029C69, 0x548A97A9,
+/**/ 0x3FCDDB16, 0xD8CEA000,
+/**/ 0xBD1EEF79, 0x7104B8BC,
+/**/ 0x3FE95000, 0x00000000,
+/**/ 0x3F35906B, 0x9F74B92D,
+/**/ 0x3FCDF46C, 0x0C722000,
+/**/ 0x3D3A5E82, 0xB0B79039,
+/**/ 0x3FE95000, 0x00000000,
+/**/ 0xBF327BBF, 0xF35927BC,
+/**/ 0x3FCE0DBC, 0x3D92A000,
+/**/ 0x3D359233, 0xF0529BF1,
+/**/ 0x3FE94800, 0x00000000,
+/**/ 0x3F161F9A, 0xDD3C0CA4,
+/**/ 0x3FCE2707, 0x6E2B0000,
+/**/ 0xBD3A342C, 0x2AF0003C,
+/**/ 0x3FE94000, 0x00000000,
+/**/ 0x3F3D9B56, 0x41228A8F,
+/**/ 0x3FCE404D, 0xA034C000,
+/**/ 0xBD3187EE, 0xE09A2799,
+/**/ 0x3FE94000, 0x00000000,
+/**/ 0xBF2482F5, 0x598A73F8,
+/**/ 0x3FCE598E, 0xD5A88000,
+/**/ 0xBD0D134B, 0xCF1E98A1,
+/**/ 0x3FE93800, 0x00000000,
+/**/ 0x3F2BE2D5, 0x3C1B9728,
+/**/ 0x3FCE72CB, 0x107DA000,
+/**/ 0x3D1DD48C, 0xCDF5471C,
+/**/ 0x3FE93800, 0x00000000,
+/**/ 0xBF39CC03, 0x2698CFF3,
+/**/ 0x3FCE8C02, 0x52AA6000,
+/**/ 0xBD26805B, 0x80E8E6FF,
+/**/ 0x3FE93000, 0x00000000,
+/**/ 0xBEF79CD3, 0xB9F30358,
+/**/ 0x3FCEA534, 0x9E23A000,
+/**/ 0x3D381B93, 0x4C73CCB5,
+/**/ 0x3FE92800, 0x00000000,
+/**/ 0x3F36E803, 0x255BA00D,
+/**/ 0x3FCEBE61, 0xF4DD8000,
+/**/ 0xBD23D453, 0x30FDCA4D,
+/**/ 0x3FE92800, 0x00000000,
+/**/ 0xBF30A69B, 0x36077742,
+/**/ 0x3FCED78A, 0x58CA8000,
+/**/ 0x3D16F1B5, 0x3793387E,
+/**/ 0x3FE92000, 0x00000000,
+/**/ 0x3F1F693A, 0x1C451AB3,
+/**/ 0x3FCEF0AD, 0xCBDC6000,
+/**/ 0xBD2B26B7, 0x9C86AF24,
+/**/ 0x3FE92000, 0x00000000,
+/**/ 0xBF3F9548, 0xC74EA9E2,
+/**/ 0x3FCF09CC, 0x50036000,
+/**/ 0x3D3DA094, 0x18D999DB,
+/**/ 0x3FE91800, 0x00000000,
+/**/ 0xBF1BD5A8, 0xF7C46911,
+/**/ 0x3FCF22E5, 0xE72F2000,
+/**/ 0xBD3F454F, 0x1417E41F,
+/**/ 0x3FE91000, 0x00000000,
+/**/ 0x3F31B9E1, 0x0D83D1C6,
+/**/ 0x3FCF3BFA, 0x934D6000,
+/**/ 0x3D2D9F2A, 0x937B903B,
+/**/ 0x3FE91000, 0x00000000,
+/**/ 0xBF35876F, 0xF3795877,
+/**/ 0x3FCF550A, 0x564B8000,
+/**/ 0xBD2323E3, 0xA09202FE,
+/**/ 0x3FE90800, 0x00000000,
+/**/ 0x3F0A34CD, 0xBD1D87EC,
+/**/ 0x3FCF6E15, 0x32154000,
+/**/ 0xBD3C9A97, 0x7AC4EC74,
+/**/ 0x3FE90000, 0x00000000,
+/**/ 0x3F3C23F5, 0x0E760899,
+/**/ 0x3FCF871B, 0x28956000,
+/**/ 0xBD3F75FD, 0x6A526EFE,
+/**/ 0x3FE90000, 0x00000000,
+/**/ 0xBF25DECD, 0xD0BE9594,
+/**/ 0x3FCFA01C, 0x3BB58000,
+/**/ 0xBD1A1F71, 0xFAE1D786,
+/**/ 0x3FE8F800, 0x00000000,
+/**/ 0x3F2C18F9, 0xC18F9C19,
+/**/ 0x3FCFB918, 0x6D5E4000,
+/**/ 0xBD0D572A, 0xAB993C87,
+/**/ 0x3FE8F800, 0x00000000,
+/**/ 0xBF38E868, 0x8176594C,
+/**/ 0x3FCFD20F, 0xBF770000,
+/**/ 0xBD11C55B, 0x72C6FE70,
+/**/ 0x3FE8F000, 0x00000000,
+/**/ 0x3EC8F006, 0x3C018F00,
+/**/ 0x3FCFEB02, 0x33E60000,
+/**/ 0x3D2F316E, 0x32D5E8C7,
+/**/ 0x3FE8E800, 0x00000000,
+/**/ 0x3F395B4D, 0xAD115384,
+/**/ 0x3FD001F7, 0xE6484000,
+/**/ 0x3D38A957, 0x40C9ABBC,
+/**/ 0x3FE8E800, 0x00000000,
+/**/ 0xBF2AD850, 0xEC8C0F90,
+/**/ 0x3FD00E6C, 0x45AD5000,
+/**/ 0x3CDCC68D, 0x52E01203,
+/**/ 0x3FE8E000, 0x00000000,
+/**/ 0x3F27B6E9, 0xA56B1AA1,
+/**/ 0x3FD01ADE, 0x3913A000,
+/**/ 0xBD108930, 0xCCDC1521,
+/**/ 0x3FE8E000, 0x00000000,
+/**/ 0xBF3ACDE3, 0x40DFC1D8,
+/**/ 0x3FD0274D, 0xC16C2000,
+/**/ 0x3D2979E8, 0x9CF835C2,
+/**/ 0x3FE8D800, 0x00000000,
+/**/ 0xBEF68397, 0x317DF64C,
+/**/ 0x3FD033BA, 0xDFA74000,
+/**/ 0x3D0C30BC, 0x1485BDFF,
+/**/ 0x3FE8D000, 0x00000000,
+/**/ 0x3F380C69, 0x80C6980C,
+/**/ 0x3FD04025, 0x94B4D000,
+/**/ 0x3CF036B8, 0x9EF42D7F,
+/**/ 0x3FE8D000, 0x00000000,
+/**/ 0xBF2CE006, 0x338C7FE7,
+/**/ 0x3FD04C8D, 0xE1842000,
+/**/ 0xBD1FE6BA, 0x512CEB86,
+/**/ 0x3FE8C800, 0x00000000,
+/**/ 0x3F2644F0, 0x1EFBBD63,
+/**/ 0x3FD058F3, 0xC703F000,
+/**/ 0xBD30E866, 0xBCD236AD,
+/**/ 0x3FE8C800, 0x00000000,
+/**/ 0xBF3B3C2D, 0xAA79217A,
+/**/ 0x3FD06557, 0x46227000,
+/**/ 0x3D0131DF, 0xB4868D6A,
+/**/ 0x3FE8C000, 0x00000000,
+/**/ 0xBEF8BFCE, 0x8062FF3A,
+/**/ 0x3FD071B8, 0x5FCD6000,
+/**/ 0xBD3BCB8B, 0xA3E01A11,
+/**/ 0x3FE8B800, 0x00000000,
+/**/ 0x3F383301, 0xBD2672C4,
+/**/ 0x3FD07E17, 0x14F1D000,
+/**/ 0xBD3EFCC6, 0x4F384BD5,
+/**/ 0x3FE8B800, 0x00000000,
+/**/ 0xBF2BFE74, 0x9BFE749C,
+/**/ 0x3FD08A73, 0x667C5000,
+/**/ 0x3D3EBC1D, 0x40C5A329,
+/**/ 0x3FE8B000, 0x00000000,
+/**/ 0x3F27BA8C, 0xD4353EB3,
+/**/ 0x3FD096CD, 0x55591000,
+/**/ 0x3D3F998D, 0x20550A31,
+/**/ 0x3FE8B000, 0x00000000,
+/**/ 0xBF3A3784, 0xA062B2E4,
+/**/ 0x3FD0A324, 0xE2739000,
+/**/ 0x3D0C6BEE, 0x7EF4030E,
+/**/ 0x3FE8A800, 0x00000000,
+/**/ 0xBECED1F6, 0x5E630281,
+/**/ 0x3FD0AF7A, 0x0EB6C000,
+/**/ 0x3D23CCF9, 0x4945ADAD,
+/**/ 0x3FE8A000, 0x00000000,
+/**/ 0x3F39CAE0, 0x0C519CAE,
+/**/ 0x3FD0BBCC, 0xDB0D2000,
+/**/ 0x3D32F32C, 0xCC5DCDFB,
+/**/ 0x3FE8A000, 0x00000000,
+/**/ 0xBF283C02, 0x4EDBA5FD,
+/**/ 0x3FD0C81D, 0x4860B000,
+/**/ 0xBD3E5BCF, 0x401D1731,
+/**/ 0x3FE89800, 0x00000000,
+/**/ 0x3F2C0F60, 0x1899C0F6,
+/**/ 0x3FD0D46B, 0x579AB000,
+/**/ 0x3D3D2C81, 0xF640E1E6,
+/**/ 0x3FE89800, 0x00000000,
+/**/ 0xBF37C414, 0xBDBE51D0,
+/**/ 0x3FD0E0B7, 0x09A43000,
+/**/ 0x3D32A038, 0xA7862F2A,
+/**/ 0x3FE89000, 0x00000000,
+/**/ 0x3F03F540, 0xDD12CE7D,
+/**/ 0x3FD0ED00, 0x5F658000,
+/**/ 0xBD22DC75, 0x285AA803,
+/**/ 0x3FE88800, 0x00000000,
+/**/ 0x3F3CCFDE, 0x400C45CD,
+/**/ 0x3FD0F947, 0x59C67000,
+/**/ 0xBD395261, 0x7F0818B6,
+/**/ 0x3FE88800, 0x00000000,
+/**/ 0xBF21A0F5, 0x44FB66B5,
+/**/ 0x3FD1058B, 0xF9AE5000,
+/**/ 0xBD34AB9D, 0x817D52CD,
+/**/ 0x3FE88000, 0x00000000,
+/**/ 0x3F319D95, 0x2866A138,
+/**/ 0x3FD111CE, 0x4003F000,
+/**/ 0xBD1B3237, 0x096B4B6B,
+/**/ 0x3FE88000, 0x00000000,
+/**/ 0xBF33E5FA, 0xA48B49DA,
+/**/ 0x3FD11E0E, 0x2DADA000,
+/**/ 0xBD2A47F8, 0x8FCCE5BA,
+/**/ 0x3FE87800, 0x00000000,
+/**/ 0x3F1A9336, 0xDEECB0A8,
+/**/ 0x3FD12A4B, 0xC3912000,
+/**/ 0xBD35A750, 0x61473259,
+/**/ 0x3FE87800, 0x00000000,
+/**/ 0xBF3EC219, 0xFB6A388D,
+/**/ 0x3FD13687, 0x0293B000,
+/**/ 0xBD3D3E84, 0x99D67123,
+/**/ 0x3FE87000, 0x00000000,
+/**/ 0xBF106AE7, 0xC1625090,
+/**/ 0x3FD142BF, 0xEB9A0000,
+/**/ 0x3D31CE61, 0x85B58A9E,
+/**/ 0x3FE86800, 0x00000000,
+/**/ 0x3F369AE5, 0xACD4200C,
+/**/ 0x3FD14EF6, 0x7F887000,
+/**/ 0xBD3E97A6, 0x5DFC9794,
+/**/ 0x3FE86800, 0x00000000,
+/**/ 0xBF2D4286, 0x9389D11C,
+/**/ 0x3FD15B2A, 0xBF429000,
+/**/ 0xBD2D8E3B, 0x49B629B2,
+/**/ 0x3FE86000, 0x00000000,
+/**/ 0x3F286186, 0x18618618,
+/**/ 0x3FD1675C, 0xABABA000,
+/**/ 0x3D38380E, 0x731F55C4,
+/**/ 0x3FE86000, 0x00000000,
+/**/ 0xBF38EF0F, 0x6AC71708,
+/**/ 0x3FD1738C, 0x45A67000,
+/**/ 0xBD39C6E9, 0x0032C176,
+/**/ 0x3FE85800, 0x00000000,
+/**/ 0x3EFFF3D3, 0xE00C2C20,
+/**/ 0x3FD17FB9, 0x8E151000,
+/**/ 0xBD3A8A8B, 0xA74A2684,
+/**/ 0x3FE85000, 0x00000000,
+/**/ 0x3F3CFBA0, 0xF9592266,
+/**/ 0x3FD18BE4, 0x85D93000,
+/**/ 0x3D3C167F, 0x6F3604AB,
+/**/ 0x3FE85000, 0x00000000,
+/**/ 0xBF1FE7B0, 0xFF3D87FA,
+/**/ 0x3FD1980D, 0x2DD42000,
+/**/ 0x3D2B7B3A, 0x7A361C9A,
+/**/ 0x3FE84800, 0x00000000,
+/**/ 0x3F331E8D, 0x918DC223,
+/**/ 0x3FD1A433, 0x86E68000,
+/**/ 0xBD07A850, 0x634E0AAC,
+/**/ 0x3FE84800, 0x00000000,
+/**/ 0xBF31BAF9, 0x8D76B549,
+/**/ 0x3FD1B057, 0x91F08000,
+/**/ 0xBD32DD46, 0x6DC55E2D,
+/**/ 0x3FE84000, 0x00000000,
+/**/ 0x3F22F2EC, 0xDC90C512,
+/**/ 0x3FD1BC79, 0x4FD1D000,
+/**/ 0xBD3CCF0C, 0x747BA7BE,
+/**/ 0x3FE84000, 0x00000000,
+/**/ 0xBF3B442A, 0x6A0916B9,
+/**/ 0x3FD1C898, 0xC169A000,
+/**/ 0xBD381410, 0xE5C62AFF,
+/**/ 0x3FE83800, 0x00000000,
+/**/ 0x3EA83801, 0x83801838,
+/**/ 0x3FD1D4B5, 0xE796A000,
+/**/ 0x3D222A5B, 0xD197BAC2,
+/**/ 0x3FE83000, 0x00000000,
+/**/ 0x3F3B6A41, 0xCBD11C5C,
+/**/ 0x3FD1E0D0, 0xC3371000,
+/**/ 0x3D3AF8F2, 0xA9B0D4A0,
+/**/ 0x3FE83000, 0x00000000,
+/**/ 0xBF225381, 0xCB7A3CD6,
+/**/ 0x3FD1ECE9, 0x5528B000,
+/**/ 0xBD184E7B, 0x09B4A3B8,
+/**/ 0x3FE82800, 0x00000000,
+/**/ 0x3F32500C, 0x152500C1,
+/**/ 0x3FD1F8FF, 0x9E48A000,
+/**/ 0x3D27946C, 0x040CBE77,
+/**/ 0x3FE82800, 0x00000000,
+/**/ 0xBF32285F, 0x14902134,
+/**/ 0x3FD20513, 0x9F73B000,
+/**/ 0x3CF6E15E, 0x1609E0A4,
+/**/ 0x3FE82000, 0x00000000,
+/**/ 0x3F22D9EB, 0xA4018213,
+/**/ 0x3FD21125, 0x59861000,
+/**/ 0x3D382E78, 0xBA2950C4,
+/**/ 0x3FE82000, 0x00000000,
+/**/ 0xBF3AEFFC, 0xFC6BBFF4,
+/**/ 0x3FD21D34, 0xCD5B9000,
+/**/ 0x3D3B552F, 0xB28BADAA,
+/**/ 0x3FE81800, 0x00000000,
+/**/ 0x3EE81818, 0x18181818,
+/**/ 0x3FD22941, 0xFBCF8000,
+/**/ 0xBD3A6976, 0xF5EB0963,
+/**/ 0x3FE81000, 0x00000000,
+/**/ 0x3F3C7F27, 0x4FF0F3C6,
+/**/ 0x3FD2354C, 0xE5BC9000,
+/**/ 0xBD3D78ED, 0x0602A663,
+/**/ 0x3FE81000, 0x00000000,
+/**/ 0xBF1ED344, 0x0A86941D,
+/**/ 0x3FD24155, 0x8BFD1000,
+/**/ 0x3D300FFF, 0x3228FCAD,
+/**/ 0x3FE80800, 0x00000000,
+/**/ 0x3F3424D0, 0x1B0BD52D,
+/**/ 0x3FD24D5B, 0xEF6AF000,
+/**/ 0xBCBDD780, 0xFC9FABDD,
+/**/ 0x3FE80800, 0x00000000,
+/**/ 0xBF2FE7F9, 0xFE7F9FE8,
+/**/ 0x3FD25960, 0x10DF7000,
+/**/ 0x3D38E7BC, 0x224EA3E3,
+/**/ 0x3FE80000, 0x00000000,
+/**/ 0x3F280180, 0x18018018,
+/**/ 0x3FD26561, 0xF1338000,
+/**/ 0x3D38B488, 0x66FAA45F,
+/**/ 0x3FE80000, 0x00000000,
+/**/ 0xBF37FD00, 0x5FF40180,
+/**/ 0x3FD27161, 0x913F8000,
+/**/ 0x3D34F4F1, 0xF61564B4,
+/**/ 0x3FE7F800, 0x00000000,
+/**/ 0x3F104AE8, 0x9750B6C7,
+/**/ 0x3FD27D5E, 0xF1DB6000,
+/**/ 0xBD092374, 0x78CAC9F4,
+/**/ 0x3FE7F800, 0x00000000,
+/**/ 0xBF3FD017, 0xF405FD01,
+/**/ 0x3FD2895A, 0x13DE8000,
+/**/ 0x3D3A8D7A, 0xD24C13F0,
+/**/ 0x3FE7F000, 0x00000000,
+/**/ 0xBF0D2BF1, 0xC9C5485E,
+/**/ 0x3FD29552, 0xF81FF000,
+/**/ 0x3D348D30, 0x1771C408,
+/**/ 0x3FE7E800, 0x00000000,
+/**/ 0x3F38927F, 0xD029DB60,
+/**/ 0x3FD2A149, 0x9F763000,
+/**/ 0xBD30DBBF, 0x51F3AADC,
+/**/ 0x3FE7E800, 0x00000000,
+/**/ 0xBF26504A, 0xB0A45169,
+/**/ 0x3FD2AD3E, 0x0AB73000,
+/**/ 0x3D2B972E, 0x488C359F,
+/**/ 0x3FE7E000, 0x00000000,
+/**/ 0x3F312A8A, 0xD278E8DD,
+/**/ 0x3FD2B930, 0x3AB8A000,
+/**/ 0xBD26DB12, 0xD6BFB0A5,
+/**/ 0x3FE7E000, 0x00000000,
+/**/ 0xBF327577, 0x24BB32E7,
+/**/ 0x3FD2C520, 0x304F8000,
+/**/ 0x3D230852, 0x8C342F39,
+/**/ 0x3FE7D800, 0x00000000,
+/**/ 0x3F23EF9A, 0xA4B45AEC,
+/**/ 0x3FD2D10D, 0xEC508000,
+/**/ 0x3D360C61, 0xF7088353,
+/**/ 0x3FE7D800, 0x00000000,
+/**/ 0xBF398DAF, 0x32748CC1,
+/**/ 0x3FD2DCF9, 0x6F8FD000,
+/**/ 0x3D20B4A2, 0x8E33C9CE,
+/**/ 0x3FE7D000, 0x00000000,
+/**/ 0x3F07D05F, 0x417D05F4,
+/**/ 0x3FD2E8E2, 0xBAE12000,
+/**/ 0xBD267B1E, 0x99B72BD8,
+/**/ 0x3FE7C800, 0x00000000,
+/**/ 0x3F3F8EF7, 0x431D3027,
+/**/ 0x3FD2F4C9, 0xCF17A000,
+/**/ 0x3D371F04, 0x9374B87B,
+/**/ 0x3FE7C800, 0x00000000,
+/**/ 0xBF0E77A3, 0xDAD83E6C,
+/**/ 0x3FD300AE, 0xAD063000,
+/**/ 0x3D342F56, 0x8B75FCAC,
+/**/ 0x3FE7C000, 0x00000000,
+/**/ 0x3F38E041, 0x588D1676,
+/**/ 0x3FD30C91, 0x557F2000,
+/**/ 0xBD142958, 0xA1451755,
+/**/ 0x3FE7C000, 0x00000000,
+/**/ 0xBF24C6DD, 0x1FE8414C,
+/**/ 0x3FD31871, 0xC9544000,
+/**/ 0x3D184FAB, 0x94CECFD9,
+/**/ 0x3FE7B800, 0x00000000,
+/**/ 0x3F3265F4, 0x81C2D3B2,
+/**/ 0x3FD32450, 0x09570000,
+/**/ 0x3D3D271B, 0x9BDAE59D,
+/**/ 0x3FE7B800, 0x00000000,
+/**/ 0xBF30C39C, 0xB6466407,
+/**/ 0x3FD3302C, 0x16586000,
+/**/ 0x3D36217D, 0xC2A3E08B,
+/**/ 0x3FE7B000, 0x00000000,
+/**/ 0x3F283FAD, 0x12B21224,
+/**/ 0x3FD33C05, 0xF128E000,
+/**/ 0xBD22B906, 0x380E1A7D,
+/**/ 0x3FE7B000, 0x00000000,
+/**/ 0xBF36EFB8, 0xF899E55D,
+/**/ 0x3FD347DD, 0x9A988000,
+/**/ 0xBD25594D, 0xD4C58092,
+/**/ 0x3FE7A800, 0x00000000,
+/**/ 0x3F1836B6, 0x3FF42B9F,
+/**/ 0x3FD353B3, 0x1376E000,
+/**/ 0xBD1331AF, 0xE6C26D9B,
+/**/ 0x3FE7A800, 0x00000000,
+/**/ 0xBF3CE7FD, 0x0B739FF4,
+/**/ 0x3FD35F86, 0x5C933000,
+/**/ 0xBD3B07DE, 0x4EA1A54A,
+/**/ 0x3FE7A000, 0x00000000,
+/**/ 0x3EC7A005, 0xE8017A00,
+/**/ 0x3FD36B57, 0x76BC1000,
+/**/ 0x3D116978, 0x5A9C223F,
+/**/ 0x3FE79800, 0x00000000,
+/**/ 0x3F3D535D, 0xB1CC5B7B,
+/**/ 0x3FD37726, 0x62BFE000,
+/**/ 0xBD3E9436, 0xAC53B023,
+/**/ 0x3FE79800, 0x00000000,
+/**/ 0xBF15EEAC, 0xE0DA37A9,
+/**/ 0x3FD382F3, 0x216C5000,
+/**/ 0xBD1061D2, 0x1D1A7F6D,
+/**/ 0x3FE79000, 0x00000000,
+/**/ 0x3F37C21E, 0x344E16D6,
+/**/ 0x3FD38EBD, 0xB38ED000,
+/**/ 0x3D290582, 0xE67D4CA0,
+/**/ 0x3FE79000, 0x00000000,
+/**/ 0xBF25E69A, 0x39C9E465,
+/**/ 0x3FD39A86, 0x19F45000,
+/**/ 0x3D18EE51, 0x937354F5,
+/**/ 0x3FE78800, 0x00000000,
+/**/ 0x3F32640B, 0xC52640BC,
+/**/ 0x3FD3A64C, 0x55694000,
+/**/ 0x3D37A71C, 0xBCD735D0,
+/**/ 0x3FE78800, 0x00000000,
+/**/ 0xBF3037DE, 0x2F6A09ED,
+/**/ 0x3FD3B210, 0x66B9C000,
+/**/ 0xBD33C1ED, 0x9811560E,
+/**/ 0x3FE78000, 0x00000000,
+/**/ 0x3F2A71DC, 0x01781A72,
+/**/ 0x3FD3BDD2, 0x4EB15000,
+/**/ 0xBD3257B4, 0x970E6ED9,
+/**/ 0x3FE78000, 0x00000000,
+/**/ 0xBF354996, 0xA9EEBFF4,
+/**/ 0x3FD3C992, 0x0E1B2000,
+/**/ 0x3D141C28, 0xAA680B76,
+/**/ 0x3FE77800, 0x00000000,
+/**/ 0x3F208119, 0xAC60D341,
+/**/ 0x3FD3D54F, 0xA5C1F000,
+/**/ 0x3D3C3E1C, 0xD9A395E3,
+/**/ 0x3FE77800, 0x00000000,
+/**/ 0xBF3A28AE, 0x742E2DD0,
+/**/ 0x3FD3E10B, 0x16701000,
+/**/ 0x3D3F3BCF, 0x145429C7,
+/**/ 0x3FE77000, 0x00000000,
+/**/ 0x3F0BD584, 0x36340177,
+/**/ 0x3FD3ECC4, 0x60EF6000,
+/**/ 0xBD060286, 0x27C1300F,
+/**/ 0x3FE77000, 0x00000000,
+/**/ 0xBF3ED55D, 0x240C7174,
+/**/ 0x3FD3F87B, 0x86094000,
+/**/ 0xBD35DFD7, 0x54589889,
+/**/ 0x3FE76800, 0x00000000,
+/**/ 0xBEF18DE5, 0xAB277F45,
+/**/ 0x3FD40430, 0x8686A000,
+/**/ 0x3D3F8EF4, 0x3049F7D3,
+/**/ 0x3FE76000, 0x00000000,
+/**/ 0x3F3CB026, 0x01D3C7B8,
+/**/ 0x3FD40FE3, 0x63303000,
+/**/ 0x3D3E5C5F, 0xE79F05C6,
+/**/ 0x3FE76000, 0x00000000,
+/**/ 0xBF15E95B, 0xA9D08664,
+/**/ 0x3FD41B94, 0x1CCE1000,
+/**/ 0xBD304690, 0x13E43FC9,
+/**/ 0x3FE75800, 0x00000000,
+/**/ 0x3F3867A4, 0x097CFD43,
+/**/ 0x3FD42742, 0xB427E000,
+/**/ 0xBD398727, 0x02B82675,
+/**/ 0x3FE75800, 0x00000000,
+/**/ 0xBF2353DF, 0xE8A9353E,
+/**/ 0x3FD432EF, 0x2A04F000,
+/**/ 0xBD3FB129, 0x931715AD,
+/**/ 0x3FE75000, 0x00000000,
+/**/ 0x3F3450E6, 0x4F13DC4A,
+/**/ 0x3FD43E99, 0x7F2C1000,
+/**/ 0x3D1C3F72, 0x40C41A04,
+/**/ 0x3FE75000, 0x00000000,
+/**/ 0xBF2B4FBF, 0xE8B1B4FC,
+/**/ 0x3FD44A41, 0xB463C000,
+/**/ 0x3D31EE28, 0xF37CF612,
+/**/ 0x3FE74800, 0x00000000,
+/**/ 0x3F306BB6, 0x7E458100,
+/**/ 0x3FD455E7, 0xCA720000,
+/**/ 0x3D1AD8C6, 0x36629AED,
+/**/ 0x3FE74800, 0x00000000,
+/**/ 0xBF31745D, 0x1745D174,
+/**/ 0x3FD4618B, 0xC21C6000,
+/**/ 0xBD13D82F, 0x484C84CC,
+/**/ 0x3FE74000, 0x00000000,
+/**/ 0x3F296FBD, 0x236DEC04,
+/**/ 0x3FD46D2D, 0x9C280000,
+/**/ 0x3D359B27, 0x5F67F75A,
+/**/ 0x3FE74000, 0x00000000,
+/**/ 0xBF350F9D, 0x3B304B87,
+/**/ 0x3FD478CD, 0x5959B000,
+/**/ 0x3D2EC89B, 0xF0C8D098,
+/**/ 0x3FE73800, 0x00000000,
+/**/ 0x3F226A51, 0xA4EBDC70,
+/**/ 0x3FD4846A, 0xFA75C000,
+/**/ 0xBD263EA2, 0xE3798DCE,
+/**/ 0x3FE73800, 0x00000000,
+/**/ 0xBF3879D5, 0xF00B9A78,
+/**/ 0x3FD49006, 0x80401000,
+/**/ 0xBD38BCCF, 0xFE1A0F8C,
+/**/ 0x3FE73000, 0x00000000,
+/**/ 0x3F178D7F, 0x5DAAD90C,
+/**/ 0x3FD49B9F, 0xEB7C1000,
+/**/ 0x3D3DAC1C, 0x58AB60D7,
+/**/ 0x3FE73000, 0x00000000,
+/**/ 0xBF3BB33C, 0x783709C7,
+/**/ 0x3FD4A737, 0x3CED0000,
+/**/ 0xBD39A234, 0xEBF35449,
+/**/ 0x3FE72800, 0x00000000,
+/**/ 0x3F061274, 0x265AD23A,
+/**/ 0x3FD4B2CC, 0x75556000,
+/**/ 0xBD380FCB, 0xC78BFA4B,
+/**/ 0x3FE72800, 0x00000000,
+/**/ 0xBF3EBC05, 0xC90A1FD2,
+/**/ 0x3FD4BE5F, 0x95778000,
+/**/ 0xBD3D7C92, 0xCD9AD824,
+/**/ 0x3FE72000, 0x00000000,
+/**/ 0xBEC71FFA, 0x38017200,
+/**/ 0x3FD4C9F0, 0x9E153000,
+/**/ 0xBD2E1DDE, 0x70E02DE0,
+/**/ 0x3FE71800, 0x00000000,
+/**/ 0x3F3E6B99, 0x74A050E1,
+/**/ 0x3FD4D57F, 0x8FEFE000,
+/**/ 0x3D23F926, 0x7FD06868,
+/**/ 0x3FE71800, 0x00000000,
+/**/ 0xBF077400, 0xB8BD1180,
+/**/ 0x3FD4E10C, 0x6BC8A000,
+/**/ 0x3CF8283F, 0x1636F061,
+/**/ 0x3FE71000, 0x00000000,
+/**/ 0x3F3BC36C, 0xE3E0453A,
+/**/ 0x3FD4EC97, 0x32600000,
+/**/ 0x3D234D7A, 0xAF04D104,
+/**/ 0x3FE71000, 0x00000000,
+/**/ 0xBF15FA98, 0x6935DDC5,
+/**/ 0x3FD4F81F, 0xE4764000,
+/**/ 0xBD27FCF6, 0x434FF08D,
+/**/ 0x3FE70800, 0x00000000,
+/**/ 0x3F394B40, 0x7337CF08,
+/**/ 0x3FD503A6, 0x82CB2000,
+/**/ 0xBD2A68C8, 0xF16F9B5D,
+/**/ 0x3FE70800, 0x00000000,
+/**/ 0xBF1F7B97, 0xA835403A,
+/**/ 0x3FD50F2B, 0x0E1E0000,
+/**/ 0x3D3A0940, 0x8C47B8D8,
+/**/ 0x3FE70000, 0x00000000,
+/**/ 0x3F3702E0, 0x5C0B8170,
+/**/ 0x3FD51AAD, 0x872E0000,
+/**/ 0xBD3F4BD8, 0xDB0A7CC1,
+/**/ 0x3FE70000, 0x00000000,
+/**/ 0xBF241EE6, 0x4F67A855,
+/**/ 0x3FD5262D, 0xEEB99000,
+/**/ 0xBD3E1B9F, 0x70894A01,
+/**/ 0x3FE6F800, 0x00000000,
+/**/ 0x3F34EA19, 0x221C0170,
+/**/ 0x3FD531AC, 0x457EE000,
+/**/ 0x3D3DF83B, 0x7D931501,
+/**/ 0x3FE6F800, 0x00000000,
+/**/ 0xBF282102, 0x5508CA5C,
+/**/ 0x3FD53D28, 0x8C3BE000,
+/**/ 0xBD111397, 0xEB6DFAC5,
+/**/ 0x3FE6F000, 0x00000000,
+/**/ 0x3F3300B7, 0x9300B793,
+/**/ 0x3FD548A2, 0xC3ADD000,
+/**/ 0x3D23167E, 0x63081CF7,
+/**/ 0x3FE6F000, 0x00000000,
+/**/ 0xBF2BC486, 0x005BB90F,
+/**/ 0x3FD5541A, 0xEC91C000,
+/**/ 0xBCF816AA, 0xDC72EEBA,
+/**/ 0x3FE6E800, 0x00000000,
+/**/ 0x3F314688, 0xC5A3A00B,
+/**/ 0x3FD55F91, 0x07A44000,
+/**/ 0xBD11E647, 0x78DF4A62,
+/**/ 0x3FE6E800, 0x00000000,
+/**/ 0xBF2F09D6, 0xDA9C5AE1,
+/**/ 0x3FD56B05, 0x15A18000,
+/**/ 0x3D29247B, 0xBC4A23FC,
+/**/ 0x3FE6E000, 0x00000000,
+/**/ 0x3F2F76B4, 0x337C6CB1,
+/**/ 0x3FD57677, 0x17456000,
+/**/ 0xBD364EAD, 0x9524D7CA,
+/**/ 0x3FE6E000, 0x00000000,
+/**/ 0xBF30F8AC, 0xEDF4EC87,
+/**/ 0x3FD581E7, 0x0D4B3000,
+/**/ 0xBD1F31E1, 0xB12D8F1D,
+/**/ 0x3FE6D800, 0x00000000,
+/**/ 0x3F2CBDF2, 0x6EAEF381,
+/**/ 0x3FD58D54, 0xF86E0000,
+/**/ 0x3D2791F3, 0x0A795215,
+/**/ 0x3FE6D800, 0x00000000,
+/**/ 0xBF323DB9, 0xB624BFF5,
+/**/ 0x3FD598C0, 0xD9688000,
+/**/ 0xBD385F49, 0x70D96DA4,
+/**/ 0x3FE6D000, 0x00000000,
+/**/ 0x3F2A6268, 0x1C860FB0,
+/**/ 0x3FD5A42A, 0xB0F4D000,
+/**/ 0xBCDE63AF, 0x2DF7BA69,
+/**/ 0x3FE6D000, 0x00000000,
+/**/ 0xBF335443, 0xB253BAE1,
+/**/ 0x3FD5AF92, 0x7FCCE000,
+/**/ 0xBD1C032F, 0xF5FFC77A,
+/**/ 0x3FE6C800, 0x00000000,
+/**/ 0x3F2863B1, 0xAB4294D4,
+/**/ 0x3FD5BAF8, 0x46AA2000,
+/**/ 0xBD339AE8, 0xF873FA41,
+/**/ 0x3FE6C800, 0x00000000,
+/**/ 0xBF343C7C, 0x87EAA6DF,
+/**/ 0x3FD5C65C, 0x0645A000,
+/**/ 0xBD39FE06, 0x0180EE65,
+/**/ 0x3FE6C000, 0x00000000,
+/**/ 0x3F26C16C, 0x16C16C17,
+/**/ 0x3FD5D1BD, 0xBF581000,
+/**/ 0xBD38D6BD, 0xC9C7C238,
+/**/ 0x3FE6C000, 0x00000000,
+/**/ 0xBF34F695, 0x95C33E00,
+/**/ 0x3FD5DD1D, 0x7299C000,
+/**/ 0xBD38AF61, 0x8815CE17,
+/**/ 0x3FE6B800, 0x00000000,
+/**/ 0x3F257B34, 0xE7802D73,
+/**/ 0x3FD5E87B, 0x20C29000,
+/**/ 0x3D3527D1, 0x8F7738FA,
+/**/ 0x3FE6B800, 0x00000000,
+/**/ 0xBF3582BF, 0xF4A5582C,
+/**/ 0x3FD5F3D6, 0xCA8A2000,
+/**/ 0x3D37AF84, 0x8E19CC75,
+/**/ 0x3FE6B000, 0x00000000,
+/**/ 0x3F2490AA, 0x31A3CFC7,
+/**/ 0x3FD5FF30, 0x70A79000,
+/**/ 0x3D2E9E43, 0x9F105039,
+/**/ 0x3FE6B000, 0x00000000,
+/**/ 0xBF35E12C, 0x77C30E5A,
+/**/ 0x3FD60A88, 0x13D1A000,
+/**/ 0x3D36E9B9, 0xC879AF55,
+/**/ 0x3FE6A800, 0x00000000,
+/**/ 0x3F24016A, 0x94016A94,
+/**/ 0x3FD615DD, 0xB4BEC000,
+/**/ 0x3D13C7CA, 0x90BC04B2,
+/**/ 0x3FE6A800, 0x00000000,
+/**/ 0xBF36120B, 0xAD33D63F,
+/**/ 0x3FD62131, 0x5424F000,
+/**/ 0xBD3382FC, 0x4AA68669,
+/**/ 0x3FE6A000, 0x00000000,
+/**/ 0x3F23CD15, 0x3729043E,
+/**/ 0x3FD62C82, 0xF2B9C000,
+/**/ 0x3D3E54BD, 0xBD7C8A98 } };
+
+static const union {int4 i[4350]; double x[2175]; } vj = { .i = {
+/**/ 0x3F46A400, 0x7D161C28,
+/**/ 0xBF46A200, 0x20600000,
+/**/ 0x3D27DC4E, 0xAA7623D9,
+/**/ 0x3F4693FA, 0xD596E639,
+/**/ 0xBF4691FD, 0x4CE00000,
+/**/ 0x3D26B0CF, 0x29C3F0AD,
+/**/ 0x3F4683F5, 0x3219CE89,
+/**/ 0xBF4681FA, 0x7B600000,
+/**/ 0x3D22B290, 0x95B9FDCC,
+/**/ 0x3F4673EF, 0x929ED397,
+/**/ 0xBF4671F7, 0xABE00000,
+/**/ 0x3D17C727, 0xFA2F2D87,
+/**/ 0x3F4663E9, 0xF725F3E2,
+/**/ 0xBF4661F4, 0xDE600000,
+/**/ 0x3CF22ED3, 0x6EDBFF1C,
+/**/ 0x3F4653E4, 0x5FAF2DE9,
+/**/ 0xBF4651F2, 0x12E00000,
+/**/ 0xBD144936, 0x157812BB,
+/**/ 0x3F4643DE, 0xCC3A802B,
+/**/ 0xBF4641EF, 0x49600000,
+/**/ 0xBD2959CB, 0x60314E05,
+/**/ 0x3F4633D9, 0x3CC7E927,
+/**/ 0xBF4631EC, 0x81E00000,
+/**/ 0xBD35ABDA, 0xC3638E99,
+/**/ 0x3F4623D3, 0xB157675C,
+/**/ 0xBF4621E9, 0xBC800000,
+/**/ 0x3D3FF1D3, 0xC63F9A21,
+/**/ 0x3F4613CE, 0x29E8F948,
+/**/ 0xBF4611E6, 0xF9000000,
+/**/ 0x3D342D26, 0x71EEE611,
+/**/ 0x3F4603C8, 0xA67C9D6B,
+/**/ 0xBF4601E4, 0x37800000,
+/**/ 0x3D1C1C77, 0x11A09689,
+/**/ 0x3F45F3C3, 0x27125244,
+/**/ 0xBF45F1E1, 0x78000000,
+/**/ 0xBD1DFD16, 0xF7DC643C,
+/**/ 0x3F45E3BD, 0xABAA1651,
+/**/ 0xBF45E1DE, 0xBA800000,
+/**/ 0xBD376503, 0x91318A02,
+/**/ 0x3F45D3B8, 0x3443E812,
+/**/ 0xBF45D1DB, 0xFF200000,
+/**/ 0x3D3756E4, 0xCE55DCDD,
+/**/ 0x3F45C3B2, 0xC0DFC606,
+/**/ 0xBF45C1D9, 0x45A00000,
+/**/ 0x3D12D5CF, 0x8F6F8FA0,
+/**/ 0x3F45B3AD, 0x517DAEAB,
+/**/ 0xBF45B1D6, 0x8E200000,
+/**/ 0xBD2E90AB, 0x9B85DC2C,
+/**/ 0x3F45A3A7, 0xE61DA081,
+/**/ 0xBF45A1D3, 0xD8C00000,
+/**/ 0x3D3B5E88, 0x3BF5AC54,
+/**/ 0x3F4593A2, 0x7EBF9A07,
+/**/ 0xBF4591D1, 0x25400000,
+/**/ 0x3D12AC3A, 0x0C86DDB1,
+/**/ 0x3F45839D, 0x1B6399BB,
+/**/ 0xBF4581CE, 0x73C00000,
+/**/ 0xBD3361C2, 0x76830985,
+/**/ 0x3F457397, 0xBC099E1C,
+/**/ 0xBF4571CB, 0xC4600000,
+/**/ 0x3D333915, 0xD062EBFF,
+/**/ 0x3F456392, 0x60B1A5AA,
+/**/ 0xBF4561C9, 0x16E00000,
+/**/ 0xBD1E0DA0, 0x9CC4988F,
+/**/ 0x3F45538D, 0x095BAEE4,
+/**/ 0xBF4551C6, 0x6B800000,
+/**/ 0x3D3C69C4, 0x235BC18A,
+/**/ 0x3F454387, 0xB607B848,
+/**/ 0xBF4541C3, 0xC2000000,
+/**/ 0xBCEFCC99, 0xF7737723,
+/**/ 0x3F453382, 0x66B5C056,
+/**/ 0xBF4531C1, 0x1A800000,
+/**/ 0xBD3FBAE2, 0x809CBCBB,
+/**/ 0x3F45237D, 0x1B65C58C,
+/**/ 0xBF4521BE, 0x75200000,
+/**/ 0x3CCAA5C8, 0x194FEE63,
+/**/ 0x3F451377, 0xD417C66A,
+/**/ 0xBF4511BB, 0xD1C00000,
+/**/ 0x3D3ED325, 0xE1CC7BBC,
+/**/ 0x3F450372, 0x90CBC16E,
+/**/ 0xBF4501B9, 0x30400000,
+/**/ 0xBD0F0298, 0x68AB3742,
+/**/ 0x3F44F36D, 0x5181B517,
+/**/ 0xBF44F1B6, 0x90E00000,
+/**/ 0x3D381BE1, 0x41E67AD9,
+/**/ 0x3F44E368, 0x16399FE6,
+/**/ 0xBF44E1B3, 0xF3600000,
+/**/ 0xBD2A6E79, 0x668D3662,
+/**/ 0x3F44D362, 0xDEF38058,
+/**/ 0xBF44D1B1, 0x58000000,
+/**/ 0x3D284EA7, 0x21F8B7C2,
+/**/ 0x3F44C35D, 0xABAF54EC,
+/**/ 0xBF44C1AE, 0xBE800000,
+/**/ 0xBD3BC76D, 0x7417D9C5,
+/**/ 0x3F44B358, 0x7C6D1C22,
+/**/ 0xBF44B1AC, 0x27200000,
+/**/ 0xBD1409FD, 0x16AAD1FC,
+/**/ 0x3F44A353, 0x512CD479,
+/**/ 0xBF44A1A9, 0x91C00000,
+/**/ 0x3D30771E, 0x98BC14FD,
+/**/ 0x3F44934E, 0x29EE7C70,
+/**/ 0xBF4491A6, 0xFE400000,
+/**/ 0xBD3B5993, 0x5CCB7232,
+/**/ 0x3F448349, 0x06B21285,
+/**/ 0xBF4481A4, 0x6CE00000,
+/**/ 0xBD20E729, 0x5512F9C2,
+/**/ 0x3F447343, 0xE7779538,
+/**/ 0xBF4471A1, 0xDD800000,
+/**/ 0x3D225436, 0x55B30899,
+/**/ 0x3F44633E, 0xCC3F0308,
+/**/ 0xBF44619F, 0x50200000,
+/**/ 0x3D39807C, 0x9E54E31F,
+/**/ 0x3F445339, 0xB5085A73,
+/**/ 0xBF44519C, 0xC4A00000,
+/**/ 0xBD376F6F, 0xD5804C0E,
+/**/ 0x3F444334, 0xA1D399FA,
+/**/ 0xBF44419A, 0x3B400000,
+/**/ 0xBD234953, 0x6CDE6425,
+/**/ 0x3F44332F, 0x92A0C01A,
+/**/ 0xBF443197, 0xB3E00000,
+/**/ 0x3D070E7B, 0xAAF6596F,
+/**/ 0x3F44232A, 0x876FCB54,
+/**/ 0xBF442195, 0x2E800000,
+/**/ 0x3D2C49F8, 0x4EC011F1,
+/**/ 0x3F441325, 0x8040BA25,
+/**/ 0xBF441192, 0xAB200000,
+/**/ 0x3D3825DC, 0xD8AAA7EB,
+/**/ 0x3F440320, 0x7D138B0E,
+/**/ 0xBF440190, 0x29A00000,
+/**/ 0xBD3F1A8D, 0xFE0B73D6,
+/**/ 0x3F43F31B, 0x7DE83C8C,
+/**/ 0xBF43F18D, 0xAA400000,
+/**/ 0xBD379B43, 0xE46CA26B,
+/**/ 0x3F43E316, 0x82BECD20,
+/**/ 0xBF43E18B, 0x2CE00000,
+/**/ 0xBD315B44, 0x6283780D,
+/**/ 0x3F43D311, 0x8B973B49,
+/**/ 0xBF43D188, 0xB1800000,
+/**/ 0xBD28B31E, 0x017589BE,
+/**/ 0x3F43C30C, 0x98718584,
+/**/ 0xBF43C186, 0x38200000,
+/**/ 0xBD212A46, 0x8FBB296E,
+/**/ 0x3F43B307, 0xA94DAA52,
+/**/ 0xBF43B183, 0xC0C00000,
+/**/ 0xBD183403, 0x045CBBD2,
+/**/ 0x3F43A302, 0xBE2BA832,
+/**/ 0xBF43A181, 0x4B600000,
+/**/ 0xBD13009B, 0xD7CC5936,
+/**/ 0x3F4392FD, 0xD70B7DA2,
+/**/ 0xBF43917E, 0xD8000000,
+/**/ 0xBD12B655, 0xC1742279,
+/**/ 0x3F4382F8, 0xF3ED2921,
+/**/ 0xBF43817C, 0x66A00000,
+/**/ 0xBD17512E, 0xEA83FAE8,
+/**/ 0x3F4372F4, 0x14D0A930,
+/**/ 0xBF437179, 0xF7400000,
+/**/ 0xBD206692, 0xBED65875,
+/**/ 0x3F4362EF, 0x39B5FC4C,
+/**/ 0xBF436177, 0x89E00000,
+/**/ 0xBD27931B, 0xD38FFE9E,
+/**/ 0x3F4352EA, 0x629D20F5,
+/**/ 0xBF435175, 0x1E800000,
+/**/ 0xBD309618, 0xE524208F,
+/**/ 0x3F4342E5, 0x8F8615AA,
+/**/ 0xBF434172, 0xB5200000,
+/**/ 0xBD3697E9, 0xDD4C72C5,
+/**/ 0x3F4332E0, 0xC070D8EB,
+/**/ 0xBF433170, 0x4DC00000,
+/**/ 0xBD3DCE00, 0x5E6E12C3,
+/**/ 0x3F4322DB, 0xF55D6935,
+/**/ 0xBF43216D, 0xE8800000,
+/**/ 0x3D39C8A4, 0x0AE9A8CE,
+/**/ 0x3F4312D7, 0x2E4BC509,
+/**/ 0xBF43116B, 0x85200000,
+/**/ 0x3D302D03, 0xD1CD2FA1,
+/**/ 0x3F4302D2, 0x6B3BEAE5,
+/**/ 0xBF430169, 0x23C00000,
+/**/ 0x3D15807D, 0xA3BADFD1,
+/**/ 0x3F42F2CD, 0xAC2DD949,
+/**/ 0xBF42F166, 0xC4600000,
+/**/ 0xBD1A7422, 0xF57F0504,
+/**/ 0x3F42E2C8, 0xF1218EB3,
+/**/ 0xBF42E164, 0x67000000,
+/**/ 0xBD33C974, 0x2F2C781C,
+/**/ 0x3F42D2C4, 0x3A1709A3,
+/**/ 0xBF42D162, 0x0BC00000,
+/**/ 0x3D3DDBDD, 0x851A1E61,
+/**/ 0x3F42C2BF, 0x870E4898,
+/**/ 0xBF42C15F, 0xB2600000,
+/**/ 0x3D2CA7D9, 0xA14AA8FD,
+/**/ 0x3F42B2BA, 0xD8074A10,
+/**/ 0xBF42B15D, 0x5B000000,
+/**/ 0xBD03022E, 0xDDCDDFF5,
+/**/ 0x3F42A2B6, 0x2D020C8C,
+/**/ 0xBF42A15B, 0x05A00000,
+/**/ 0xBD343FBA, 0x0F9231A8,
+/**/ 0x3F4292B1, 0x85FE8E8A,
+/**/ 0xBF429158, 0xB2600000,
+/**/ 0x3D38B690, 0xA52C9CCF,
+/**/ 0x3F4282AC, 0xE2FCCE8A,
+/**/ 0xBF428156, 0x61000000,
+/**/ 0x3D120E6A, 0xC8CC82EB,
+/**/ 0x3F4272A8, 0x43FCCB0A,
+/**/ 0xBF427154, 0x11A00000,
+/**/ 0xBD30D79B, 0x792E6C51,
+/**/ 0x3F4262A3, 0xA8FE8289,
+/**/ 0xBF426151, 0xC4600000,
+/**/ 0x3D38A5EE, 0x91F7F7AA,
+/**/ 0x3F42529F, 0x1201F387,
+/**/ 0xBF42514F, 0x79000000,
+/**/ 0x3CEFA728, 0x46C2E8BA,
+/**/ 0x3F42429A, 0x7F071C84,
+/**/ 0xBF42414D, 0x2FA00000,
+/**/ 0xBD37D0BA, 0xFA447A17,
+/**/ 0x3F423295, 0xF00DFBFD,
+/**/ 0xBF42314A, 0xE8600000,
+/**/ 0x3D2C7A24, 0x94AF3FED,
+/**/ 0x3F422291, 0x65169072,
+/**/ 0xBF422148, 0xA3000000,
+/**/ 0xBD29B0BD, 0x050CEA04,
+/**/ 0x3F42128C, 0xDE20D863,
+/**/ 0xBF421146, 0x5FC00000,
+/**/ 0x3D36EFF3, 0x0C3035EB,
+/**/ 0x3F420288, 0x5B2CD24E,
+/**/ 0xBF420144, 0x1E600000,
+/**/ 0xBD19A3E2, 0x73569B27,
+/**/ 0x3F41F283, 0xDC3A7CB2,
+/**/ 0xBF41F141, 0xDF200000,
+/**/ 0x3D3B1DDE, 0xEEB67715,
+/**/ 0x3F41E27F, 0x6149D610,
+/**/ 0xBF41E13F, 0xA1C00000,
+/**/ 0xBD11EA17, 0x94F49154,
+/**/ 0x3F41D27A, 0xEA5ADCE5,
+/**/ 0xBF41D13D, 0x66800000,
+/**/ 0x3D3ACED9, 0x52DD9D37,
+/**/ 0x3F41C276, 0x776D8FB1,
+/**/ 0xBF41C13B, 0x2D200000,
+/**/ 0xBD1C140B, 0xF72D8EEB,
+/**/ 0x3F41B272, 0x0881ECF4,
+/**/ 0xBF41B138, 0xF5E00000,
+/**/ 0x3D360AE5, 0x939583E1,
+/**/ 0x3F41A26D, 0x9D97F32C,
+/**/ 0xBF41A136, 0xC0800000,
+/**/ 0xBD2C00D9, 0x1D246C7C,
+/**/ 0x3F419269, 0x36AFA0D9,
+/**/ 0xBF419134, 0x8D400000,
+/**/ 0x3D29B40E, 0x0B955CFB,
+/**/ 0x3F418264, 0xD3C8F479,
+/**/ 0xBF418132, 0x5BE00000,
+/**/ 0xBD3964BF, 0x45A6C249,
+/**/ 0x3F417260, 0x74E3EC8D,
+/**/ 0xBF417130, 0x2CA00000,
+/**/ 0xBCE777E0, 0xF3363612,
+/**/ 0x3F41625C, 0x1A008792,
+/**/ 0xBF41612D, 0xFF600000,
+/**/ 0x3D36D608, 0x28DE8296,
+/**/ 0x3F415257, 0xC31EC409,
+/**/ 0xBF41512B, 0xD4000000,
+/**/ 0xBD32AE69, 0x4BB1B788,
+/**/ 0x3F414253, 0x703EA071,
+/**/ 0xBF414129, 0xAAC00000,
+/**/ 0x3D05BF68, 0x170ECD8C,
+/**/ 0x3F41324F, 0x21601B48,
+/**/ 0xBF413127, 0x83800000,
+/**/ 0x3D370A0B, 0x7C653BFC,
+/**/ 0x3F41224A, 0xD683330E,
+/**/ 0xBF412125, 0x5E200000,
+/**/ 0xBD35B70D, 0x77BBBEBF,
+/**/ 0x3F411246, 0x8FA7E642,
+/**/ 0xBF411123, 0x3AE00000,
+/**/ 0xBD0C52EB, 0x93ABC1CD,
+/**/ 0x3F410242, 0x4CCE3363,
+/**/ 0xBF410121, 0x19A00000,
+/**/ 0x3D2B2237, 0xE5C6F4C7,
+/**/ 0x3F40F23E, 0x0DF618F1,
+/**/ 0xBF40F11E, 0xFA600000,
+/**/ 0x3D3D9C5F, 0x1E9A50AD,
+/**/ 0x3F40E239, 0xD31F956A,
+/**/ 0xBF40E11C, 0xDD000000,
+/**/ 0xBD336793, 0x8965F0DA,
+/**/ 0x3F40D235, 0x9C4AA74E,
+/**/ 0xBF40D11A, 0xC1C00000,
+/**/ 0xBD15E6EE, 0x7E49E231,
+/**/ 0x3F40C231, 0x69774D1D,
+/**/ 0xBF40C118, 0xA8800000,
+/**/ 0x3D1D9B9D, 0x04FD621C,
+/**/ 0x3F40B22D, 0x3AA58554,
+/**/ 0xBF40B116, 0x91400000,
+/**/ 0x3D333B55, 0x7DD9EED3,
+/**/ 0x3F40A229, 0x0FD54E74,
+/**/ 0xBF40A114, 0x7C000000,
+/**/ 0x3D3E048F, 0x7AA78478,
+/**/ 0x3F409224, 0xE906A6FC,
+/**/ 0xBF409112, 0x68A00000,
+/**/ 0xBD383C6A, 0x644DDE88,
+/**/ 0x3F408220, 0xC6398D6B,
+/**/ 0xBF408110, 0x57600000,
+/**/ 0xBD2F0D2F, 0x76B8C83A,
+/**/ 0x3F40721C, 0xA76E0040,
+/**/ 0xBF40710E, 0x48200000,
+/**/ 0xBD1F63E0, 0x9CE99FD3,
+/**/ 0x3F406218, 0x8CA3FDFB,
+/**/ 0xBF40610C, 0x3AE00000,
+/**/ 0xBCF328B4, 0x4FE774F2,
+/**/ 0x3F405214, 0x75DB851A,
+/**/ 0xBF40510A, 0x2FA00000,
+/**/ 0x3D11B6BD, 0x3782BCD4,
+/**/ 0x3F404210, 0x6314941D,
+/**/ 0xBF404108, 0x26600000,
+/**/ 0x3D22116F, 0xE7183792,
+/**/ 0x3F40320C, 0x544F2983,
+/**/ 0xBF403106, 0x1F200000,
+/**/ 0x3D293F1E, 0x1B995B3D,
+/**/ 0x3F402208, 0x498B43CB,
+/**/ 0xBF402104, 0x19E00000,
+/**/ 0x3D2E6669, 0xFC162630,
+/**/ 0x3F401204, 0x42C8E175,
+/**/ 0xBF401102, 0x16A00000,
+/**/ 0x3D30C4AA, 0x254FC9F8,
+/**/ 0x3F400200, 0x40080100,
+/**/ 0xBF400100, 0x15600000,
+/**/ 0x3D3154EE, 0xE4431F92,
+/**/ 0x3F3FE3F8, 0x829141D6,
+/**/ 0xBF3FE1FC, 0x2C400000,
+/**/ 0x3D30E503, 0x9B2D30FB,
+/**/ 0x3F3FC3F0, 0x8D157F6B,
+/**/ 0xBF3FC1F8, 0x31C00000,
+/**/ 0x3D2EEBD1, 0x53EBD670,
+/**/ 0x3F3FA3E8, 0x9F9CB7BC,
+/**/ 0xBF3FA1F4, 0x3B400000,
+/**/ 0x3D2A113C, 0xE04A16E0,
+/**/ 0x3F3F83E0, 0xBA26E7CA,
+/**/ 0xBF3F81F0, 0x48C00000,
+/**/ 0x3D233C4A, 0x99C43E34,
+/**/ 0x3F3F63D8, 0xDCB40C91,
+/**/ 0xBF3F61EC, 0x5A400000,
+/**/ 0x3D14DDF6, 0x7BD210C1,
+/**/ 0x3F3F43D1, 0x07442311,
+/**/ 0xBF3F41E8, 0x6FC00000,
+/**/ 0xBCC52C1D, 0x9E4B51C8,
+/**/ 0x3F3F23C9, 0x39D72849,
+/**/ 0xBF3F21E4, 0x89400000,
+/**/ 0xBD1A196F, 0x8EA8C754,
+/**/ 0x3F3F03C1, 0x746D1936,
+/**/ 0xBF3F01E0, 0xA6C00000,
+/**/ 0xBD2BB719, 0xF95AF98D,
+/**/ 0x3F3EE3B9, 0xB705F2D8,
+/**/ 0xBF3EE1DC, 0xC8400000,
+/**/ 0xBD3628EB, 0x28FFD598,
+/**/ 0x3F3EC3B2, 0x01A1B22C,
+/**/ 0xBF3EC1D8, 0xEDC00000,
+/**/ 0xBD3F6D76, 0x0BBAC8F8,
+/**/ 0x3F3EA3AA, 0x54405432,
+/**/ 0xBF3EA1D5, 0x17800000,
+/**/ 0x3D3657D2, 0xB7A7EE0D,
+/**/ 0x3F3E83A2, 0xAEE1D5E8,
+/**/ 0xBF3E81D1, 0x45000000,
+/**/ 0x3D264FDE, 0xFA9CCC78,
+/**/ 0x3F3E639B, 0x1186344C,
+/**/ 0xBF3E61CD, 0x76800000,
+/**/ 0xBCEF83EB, 0xE02EF455,
+/**/ 0x3F3E4393, 0x7C2D6C5E,
+/**/ 0xBF3E41C9, 0xAC000000,
+/**/ 0xBD2C26B3, 0x03C3E129,
+/**/ 0x3F3E238B, 0xEED77B1B,
+/**/ 0xBF3E21C5, 0xE5800000,
+/**/ 0xBD3C1CBE, 0x904D773D,
+/**/ 0x3F3E0384, 0x69845D83,
+/**/ 0xBF3E01C2, 0x23400000,
+/**/ 0x3D34E8B1, 0xD0615454,
+/**/ 0x3F3DE37C, 0xEC341093,
+/**/ 0xBF3DE1BE, 0x64C00000,
+/**/ 0x3D13F7DF, 0xE9BE933E,
+/**/ 0x3F3DC375, 0x76E6914B,
+/**/ 0xBF3DC1BA, 0xAA400000,
+/**/ 0xBD27B7D7, 0x707B004A,
+/**/ 0x3F3DA36E, 0x099BDCA9,
+/**/ 0xBF3DA1B6, 0xF3C00000,
+/**/ 0xBD3DA3F8, 0xEE2141C3,
+/**/ 0x3F3D8366, 0xA453EFAC,
+/**/ 0xBF3D81B3, 0x41800000,
+/**/ 0x3D2F4DA1, 0x63D21825,
+/**/ 0x3F3D635F, 0x470EC752,
+/**/ 0xBF3D61AF, 0x93000000,
+/**/ 0xBD0FD473, 0xFAD0B844,
+/**/ 0x3F3D4357, 0xF1CC609A,
+/**/ 0xBF3D41AB, 0xE8800000,
+/**/ 0xBD388716, 0x298657C2,
+/**/ 0x3F3D2350, 0xA48CB882,
+/**/ 0xBF3D21A8, 0x42400000,
+/**/ 0x3D32023A, 0x0B68711A,
+/**/ 0x3F3D0349, 0x5F4FCC0A,
+/**/ 0xBF3D01A4, 0x9FC00000,
+/**/ 0xBD117676, 0x23A704B0,
+/**/ 0x3F3CE342, 0x22159830,
+/**/ 0xBF3CE1A1, 0x01400000,
+/**/ 0xBD3BA59C, 0x8F391F09,
+/**/ 0x3F3CC33A, 0xECDE19F1,
+/**/ 0xBF3CC19D, 0x67000000,
+/**/ 0x3D28567A, 0x9EBBF706,
+/**/ 0x3F3CA333, 0xBFA94E4E,
+/**/ 0xBF3CA199, 0xD0800000,
+/**/ 0xBD29D41F, 0x2D41F1CC,
+/**/ 0x3F3C832C, 0x9A773245,
+/**/ 0xBF3C8196, 0x3E400000,
+/**/ 0x3D391B7D, 0x14ED5134,
+/**/ 0x3F3C6325, 0x7D47C2D4,
+/**/ 0xBF3C6192, 0xAFC00000,
+/**/ 0xBCFC31C5, 0x83403B5B,
+/**/ 0x3F3C431E, 0x681AFCFA,
+/**/ 0xBF3C418F, 0x25400000,
+/**/ 0xBD3D84DB, 0x88A1FFF3,
+/**/ 0x3F3C2317, 0x5AF0DDB6,
+/**/ 0xBF3C218B, 0x9F000000,
+/**/ 0x3D175CFF, 0x6298A63B,
+/**/ 0x3F3C0310, 0x55C96207,
+/**/ 0xBF3C0188, 0x1C800000,
+/**/ 0xBD37ADC9, 0xDFB8E489,
+/**/ 0x3F3BE309, 0x58A486EA,
+/**/ 0xBF3BE184, 0x9E400000,
+/**/ 0x3D23DA0F, 0x45069C64,
+/**/ 0x3F3BC302, 0x6382495F,
+/**/ 0xBF3BC181, 0x23C00000,
+/**/ 0xBD35574B, 0x4CC2EFE0,
+/**/ 0x3F3BA2FB, 0x7662A665,
+/**/ 0xBF3BA17D, 0xAD800000,
+/**/ 0x3D250C7B, 0x4BED0B89,
+/**/ 0x3F3B82F4, 0x91459AFA,
+/**/ 0xBF3B817A, 0x3B000000,
+/**/ 0xBD36795D, 0x322E5605,
+/**/ 0x3F3B62ED, 0xB42B241D,
+/**/ 0xBF3B6176, 0xCCC00000,
+/**/ 0x3D1EAB91, 0xF6413886,
+/**/ 0x3F3B42E6, 0xDF133ECC,
+/**/ 0xBF3B4173, 0x62400000,
+/**/ 0xBD3B0BFC, 0xF86BE5B5,
+/**/ 0x3F3B22E0, 0x11FDE807,
+/**/ 0xBF3B216F, 0xFC000000,
+/**/ 0x3CF62FEB, 0xDDE8D701,
+/**/ 0x3F3B02D9, 0x4CEB1CCC,
+/**/ 0xBF3B016C, 0x99C00000,
+/**/ 0x3D3CF8D7, 0xF210FD9E,
+/**/ 0x3F3AE2D2, 0x8FDADA1A,
+/**/ 0xBF3AE169, 0x3B400000,
+/**/ 0xBD2092E2, 0x1526CFB0,
+/**/ 0x3F3AC2CB, 0xDACD1CEF,
+/**/ 0xBF3AC165, 0xE1000000,
+/**/ 0x3D319D24, 0x18D261D5,
+/**/ 0x3F3AA2C5, 0x2DC1E24A,
+/**/ 0xBF3AA162, 0x8A800000,
+/**/ 0xBD355268, 0x533CC8EC,
+/**/ 0x3F3A82BE, 0x88B9272B,
+/**/ 0xBF3A815F, 0x38400000,
+/**/ 0x3D074750, 0x0AFE6139,
+/**/ 0x3F3A62B7, 0xEBB2E88F,
+/**/ 0xBF3A615B, 0xEA000000,
+/**/ 0x3D3A501B, 0x6668AD57,
+/**/ 0x3F3A42B1, 0x56AF2375,
+/**/ 0xBF3A4158, 0x9F800000,
+/**/ 0xBD2E37A7, 0xA98381BD,
+/**/ 0x3F3A22AA, 0xC9ADD4DD,
+/**/ 0xBF3A2155, 0x59400000,
+/**/ 0x3D1A9872, 0x7B82F9AC,
+/**/ 0x3F3A02A4, 0x44AEF9C5,
+/**/ 0xBF3A0152, 0x17000000,
+/**/ 0x3D3B96ED, 0x0FF040AD,
+/**/ 0x3F39E29D, 0xC7B28F2C,
+/**/ 0xBF39E14E, 0xD8800000,
+/**/ 0xBD304862, 0x33534BD7,
+/**/ 0x3F39C297, 0x52B89211,
+/**/ 0xBF39C14B, 0x9E400000,
+/**/ 0x3D084979, 0x17AF009B,
+/**/ 0x3F39A290, 0xE5C0FF72,
+/**/ 0xBF39A148, 0x68000000,
+/**/ 0x3D358CA1, 0x604B64C9,
+/**/ 0x3F39828A, 0x80CBD44E,
+/**/ 0xBF398145, 0x35800000,
+/**/ 0xBD38BD0B, 0x2E334404,
+/**/ 0x3F396284, 0x23D90DA4,
+/**/ 0xBF396142, 0x07400000,
+/**/ 0xBD1F4B58, 0xEF1B1C68,
+/**/ 0x3F39427D, 0xCEE8A873,
+/**/ 0xBF39413E, 0xDD000000,
+/**/ 0x3D209881, 0x07E010EC,
+/**/ 0x3F392277, 0x81FAA1B9,
+/**/ 0xBF39213B, 0xB6C00000,
+/**/ 0x3D37A139, 0x5CF03181,
+/**/ 0x3F390271, 0x3D0EF676,
+/**/ 0xBF390138, 0x94400000,
+/**/ 0xBD39D2EB, 0x65276B0B,
+/**/ 0x3F38E26B, 0x0025A3A8,
+/**/ 0xBF38E135, 0x76000000,
+/**/ 0xBD281E5A, 0xEE3023F6,
+/**/ 0x3F38C264, 0xCB3EA64F,
+/**/ 0xBF38C132, 0x5BC00000,
+/**/ 0x3CEDAE6E, 0x3F9A4B53,
+/**/ 0x3F38A25E, 0x9E59FB68,
+/**/ 0xBF38A12F, 0x45800000,
+/**/ 0x3D2A47EF, 0x412B648E,
+/**/ 0x3F388258, 0x79779FF3,
+/**/ 0xBF38812C, 0x33400000,
+/**/ 0x3D38955F, 0x5ED0D8F2,
+/**/ 0x3F386252, 0x5C9790EE,
+/**/ 0xBF386129, 0x24C00000,
+/**/ 0xBD3CBD55, 0x09939374,
+/**/ 0x3F38424C, 0x47B9CB5A,
+/**/ 0xBF384126, 0x1A800000,
+/**/ 0xBD32D325, 0x4F399186,
+/**/ 0x3F382246, 0x3ADE4C33,
+/**/ 0xBF382123, 0x14400000,
+/**/ 0xBD235622, 0x524688EB,
+/**/ 0x3F380240, 0x3605107A,
+/**/ 0xBF380120, 0x12000000,
+/**/ 0xBCF44184, 0xEB2F3DDC,
+/**/ 0x3F37E23A, 0x392E152C,
+/**/ 0xBF37E11D, 0x13C00000,
+/**/ 0x3D198B16, 0x2153D1B8,
+/**/ 0x3F37C234, 0x4459574A,
+/**/ 0xBF37C11A, 0x19800000,
+/**/ 0x3D2A9511, 0x47A3C923,
+/**/ 0x3F37A22E, 0x5786D3D1,
+/**/ 0xBF37A117, 0x23400000,
+/**/ 0x3D337431, 0x4B4128D9,
+/**/ 0x3F378228, 0x72B687C1,
+/**/ 0xBF378114, 0x31000000,
+/**/ 0x3D38E0BF, 0xC5BFE9E8,
+/**/ 0x3F376222, 0x95E87019,
+/**/ 0xBF376111, 0x42C00000,
+/**/ 0x3D3D9134, 0x5A0B2CE9,
+/**/ 0x3F37421C, 0xC11C89D8,
+/**/ 0xBF37410E, 0x58400000,
+/**/ 0xBD3E7970, 0xB1802C40,
+/**/ 0x3F372216, 0xF452D1FB,
+/**/ 0xBF37210B, 0x72000000,
+/**/ 0xBD3B3E2F, 0x16E562C9,
+/**/ 0x3F370211, 0x2F8B4583,
+/**/ 0xBF370108, 0x8FC00000,
+/**/ 0xBD38BC06, 0x9087DACD,
+/**/ 0x3F36E20B, 0x72C5E16F,
+/**/ 0xBF36E105, 0xB1800000,
+/**/ 0xBD36F1F6, 0xD92B1B21,
+/**/ 0x3F36C205, 0xBE02A2BC,
+/**/ 0xBF36C102, 0xD7400000,
+/**/ 0xBD35DEFF, 0xABF2CD23,
+/**/ 0x3F36A200, 0x1141866B,
+/**/ 0xBF36A100, 0x01000000,
+/**/ 0xBD358220, 0xC462BC85,
+/**/ 0x3F3681FA, 0x6C828979,
+/**/ 0xBF3680FD, 0x2EC00000,
+/**/ 0xBD35DA59, 0xDE5ED723,
+/**/ 0x3F3661F4, 0xCFC5A8E7,
+/**/ 0xBF3660FA, 0x60800000,
+/**/ 0xBD36E6AA, 0xB62B2CD1,
+/**/ 0x3F3641EF, 0x3B0AE1B2,
+/**/ 0xBF3640F7, 0x96400000,
+/**/ 0xBD38A613, 0x086BEF29,
+/**/ 0x3F3621E9, 0xAE5230DA,
+/**/ 0xBF3620F4, 0xD0000000,
+/**/ 0xBD3B1792, 0x9225715D,
+/**/ 0x3F3601E4, 0x299B935F,
+/**/ 0xBF3600F2, 0x0DC00000,
+/**/ 0xBD3E3A29, 0x10BC2805,
+/**/ 0x3F35E1DE, 0xACE7063E,
+/**/ 0xBF35E0EF, 0x4FC00000,
+/**/ 0x3D3DF329, 0xBE0B570D,
+/**/ 0x3F35C1D9, 0x38348676,
+/**/ 0xBF35C0EC, 0x95800000,
+/**/ 0x3D397166, 0x1C0C5502,
+/**/ 0x3F35A1D3, 0xCB841108,
+/**/ 0xBF35A0E9, 0xDF400000,
+/**/ 0x3D34418C, 0x4AC1FA2D,
+/**/ 0x3F3581CE, 0x66D5A2F1,
+/**/ 0xBF3580E7, 0x2D000000,
+/**/ 0x3D2CC939, 0x168E9C6E,
+/**/ 0x3F3561C9, 0x0A293931,
+/**/ 0xBF3560E4, 0x7EC00000,
+/**/ 0x3D1F6E5C, 0x795CE154,
+/**/ 0x3F3541C3, 0xB57ED0C7,
+/**/ 0xBF3540E1, 0xD4800000,
+/**/ 0x3CE4EF88, 0x898FEE67,
+/**/ 0x3F3521BE, 0x68D666B1,
+/**/ 0xBF3520DF, 0x2E400000,
+/**/ 0xBD1CDACF, 0x0B78D65E,
+/**/ 0x3F3501B9, 0x242FF7EF,
+/**/ 0xBF3500DC, 0x8C000000,
+/**/ 0xBD2F7BF1, 0x6F1CBFB8,
+/**/ 0x3F34E1B3, 0xE78B8180,
+/**/ 0xBF34E0D9, 0xEDC00000,
+/**/ 0xBD38ED52, 0x5A899820,
+/**/ 0x3F34C1AE, 0xB2E90063,
+/**/ 0xBF34C0D7, 0x53C00000,
+/**/ 0x3D3D3C3F, 0x930A694E,
+/**/ 0x3F34A1A9, 0x86487196,
+/**/ 0xBF34A0D4, 0xBD800000,
+/**/ 0x3D32BFBD, 0x4FA7CCCB,
+/**/ 0x3F3481A4, 0x61A9D219,
+/**/ 0xBF3480D2, 0x2B400000,
+/**/ 0x3D1E789C, 0x65A26E32,
+/**/ 0x3F34619F, 0x450D1EEB,
+/**/ 0xBF3460CF, 0x9D000000,
+/**/ 0xBD109E0B, 0x47E500B5,
+/**/ 0x3F34419A, 0x3072550B,
+/**/ 0xBF3440CD, 0x12C00000,
+/**/ 0xBD309040, 0x3523FAE9,
+/**/ 0x3F342195, 0x23D97178,
+/**/ 0xBF3420CA, 0x8C800000,
+/**/ 0xBD3D9B10, 0xD31DE7C2,
+/**/ 0x3F340190, 0x1F427131,
+/**/ 0xBF3400C8, 0x0A800000,
+/**/ 0x3D34B90B, 0x90B287C4,
+/**/ 0x3F33E18B, 0x22AD5135,
+/**/ 0xBF33E0C5, 0x8C400000,
+/**/ 0x3D19B454, 0xCA1B0FC2,
+/**/ 0x3F33C186, 0x2E1A0E83,
+/**/ 0xBF33C0C3, 0x12000000,
+/**/ 0xBD20FBE7, 0x638FC1F4,
+/**/ 0x3F33A181, 0x4188A61A,
+/**/ 0xBF33A0C0, 0x9BC00000,
+/**/ 0xBD38070E, 0xE0C03290,
+/**/ 0x3F33817C, 0x5CF914F9,
+/**/ 0xBF3380BE, 0x29C00000,
+/**/ 0x3D37D2C3, 0xE0B6E5F5,
+/**/ 0x3F336177, 0x806B5820,
+/**/ 0xBF3360BB, 0xBB800000,
+/**/ 0x3D1C4213, 0x35598794,
+/**/ 0x3F334172, 0xABDF6C8D,
+/**/ 0xBF3340B9, 0x51400000,
+/**/ 0xBD249997, 0xC111C569,
+/**/ 0x3F33216D, 0xDF554F40,
+/**/ 0xBF3320B6, 0xEB000000,
+/**/ 0xBD3C442D, 0xEEEE28E2,
+/**/ 0x3F330169, 0x1ACCFD37,
+/**/ 0xBF3300B4, 0x89000000,
+/**/ 0x3D312B5E, 0xDBBF316D,
+/**/ 0x3F32E164, 0x5E467372,
+/**/ 0xBF32E0B2, 0x2AC00000,
+/**/ 0xBCFFD254, 0x7484E6E1,
+/**/ 0x3F32C15F, 0xA9C1AEF0,
+/**/ 0xBF32C0AF, 0xD0800000,
+/**/ 0xBD35BCBA, 0x1F2C3F9D,
+/**/ 0x3F32A15A, 0xFD3EACAF,
+/**/ 0xBF32A0AD, 0x7A800000,
+/**/ 0x3D35EDA0, 0x8C8BAA61,
+/**/ 0x3F328156, 0x58BD69B0,
+/**/ 0xBF3280AB, 0x28400000,
+/**/ 0x3CF02EAF, 0x3F79FE5E,
+/**/ 0x3F326151, 0xBC3DE2F1,
+/**/ 0xBF3260A8, 0xDA000000,
+/**/ 0xBD347BDA, 0xB1304AA8,
+/**/ 0x3F32414D, 0x27C01572,
+/**/ 0xBF3240A6, 0x90000000,
+/**/ 0x3D35724F, 0xD46BE359,
+/**/ 0x3F322148, 0x9B43FE30,
+/**/ 0xBF3220A4, 0x49C00000,
+/**/ 0xBCF31954, 0x43BF90C9,
+/**/ 0x3F320144, 0x16C99A2D,
+/**/ 0xBF3200A2, 0x07800000,
+/**/ 0xBD386689, 0xC4901E30,
+/**/ 0x3F31E13F, 0x9A50E666,
+/**/ 0xBF31E09F, 0xC9800000,
+/**/ 0x3D2FA8E5, 0x134E34BF,
+/**/ 0x3F31C13B, 0x25D9DFDB,
+/**/ 0xBF31C09D, 0x8F400000,
+/**/ 0xBD20FF40, 0x477D87DF,
+/**/ 0x3F31A136, 0xB964838C,
+/**/ 0xBF31A09B, 0x59400000,
+/**/ 0x3D3E9E3E, 0x68B5B77B,
+/**/ 0x3F318132, 0x54F0CE76,
+/**/ 0xBF318099, 0x27000000,
+/**/ 0x3D14BC39, 0x906F8A53,
+/**/ 0x3F31612D, 0xF87EBD9A,
+/**/ 0xBF316096, 0xF8C00000,
+/**/ 0xBD34CC2F, 0xFCD50724,
+/**/ 0x3F314129, 0xA40E4DF7,
+/**/ 0xBF314094, 0xCEC00000,
+/**/ 0x3D30AD83, 0x7A3A1B8D,
+/**/ 0x3F312125, 0x579F7C8B,
+/**/ 0xBF312092, 0xA8800000,
+/**/ 0xBD24C5AE, 0x057F5C66,
+/**/ 0x3F310121, 0x13324657,
+/**/ 0xBF310090, 0x86800000,
+/**/ 0x3D3A03C0, 0xBFD488E0,
+/**/ 0x3F30E11C, 0xD6C6A858,
+/**/ 0xBF30E08E, 0x68400000,
+/**/ 0xBD00EDA8, 0x56935D63,
+/**/ 0x3F30C118, 0xA25C9F8F,
+/**/ 0xBF30C08C, 0x4E000000,
+/**/ 0xBD3EC638, 0x2FDDD1CE,
+/**/ 0x3F30A114, 0x75F428FB,
+/**/ 0xBF30A08A, 0x38000000,
+/**/ 0x3D102CDE, 0x0CA3DCBE,
+/**/ 0x3F308110, 0x518D419B,
+/**/ 0xBF308088, 0x25C00000,
+/**/ 0xBD39A865, 0xBFA78921,
+/**/ 0x3F30610C, 0x3527E66D,
+/**/ 0xBF306086, 0x17C00000,
+/**/ 0x3D203FE0, 0x72CE37BD,
+/**/ 0x3F304108, 0x20C41472,
+/**/ 0xBF304084, 0x0D800000,
+/**/ 0xBD369AC6, 0x6054C3FA,
+/**/ 0x3F302104, 0x1461C8A9,
+/**/ 0xBF302082, 0x07800000,
+/**/ 0x3D2450ED, 0x4836293A,
+/**/ 0x3F300100, 0x10010010,
+/**/ 0xBF300080, 0x05400000,
+/**/ 0xBD359558, 0x88B3357C,
+/**/ 0x3F2FC1F8, 0x27436F4F,
+/**/ 0xBF2FC0FC, 0x0E800000,
+/**/ 0x3D245998, 0x92ECD4D1,
+/**/ 0x3F2F81F0, 0x3E87D8DC,
+/**/ 0xBF2F80F8, 0x1A000000,
+/**/ 0xBD36901A, 0xB592170A,
+/**/ 0x3F2F41E8, 0x65CF36C6,
+/**/ 0xBF2F40F4, 0x2E000000,
+/**/ 0x3D2069E5, 0x53524603,
+/**/ 0x3F2F01E0, 0x9D19830B,
+/**/ 0xBF2F00F0, 0x49800000,
+/**/ 0xBD39830B, 0x69C22240,
+/**/ 0x3F2EC1D8, 0xE466B7AB,
+/**/ 0xBF2EC0EC, 0x6D800000,
+/**/ 0x3D1123AC, 0xFB871BBA,
+/**/ 0x3F2E81D1, 0x3BB6CEA4,
+/**/ 0xBF2E80E8, 0x99000000,
+/**/ 0xBD3E6629, 0x2E158AF6,
+/**/ 0x3F2E41C9, 0xA309C1F4,
+/**/ 0xBF2E40E4, 0xCD000000,
+/**/ 0xBCF8F488, 0x2B29884E,
+/**/ 0x3F2E01C2, 0x1A5F8B99,
+/**/ 0xBF2E00E1, 0x09000000,
+/**/ 0x3D3ACE8D, 0x6EA006C6,
+/**/ 0x3F2DC1BA, 0xA1B82593,
+/**/ 0xBF2DC0DD, 0x4C800000,
+/**/ 0xBD22974E, 0x59D0B687,
+/**/ 0x3F2D81B3, 0x391389E0,
+/**/ 0xBF2D80D9, 0x98800000,
+/**/ 0x3D322319, 0xD7897CAD,
+/**/ 0x3F2D41AB, 0xE071B27F,
+/**/ 0xBF2D40D5, 0xEC000000,
+/**/ 0xBD32E42F, 0x57954C6E,
+/**/ 0x3F2D01A4, 0x97D2996E,
+/**/ 0xBF2D00D2, 0x48000000,
+/**/ 0x3D1E7DF5, 0xC741610E,
+/**/ 0x3F2CC19D, 0x5F3638AB,
+/**/ 0xBF2CC0CE, 0xAB800000,
+/**/ 0xBD3E50DF, 0xA0909C5A,
+/**/ 0x3F2C8196, 0x369C8A37,
+/**/ 0xBF2C80CB, 0x17800000,
+/**/ 0xBD12D119, 0x8D8D1C8F,
+/**/ 0x3F2C418F, 0x1E05880E,
+/**/ 0xBF2C40C7, 0x8B800000,
+/**/ 0x3D347649, 0x544D2574,
+/**/ 0x3F2C0188, 0x15712C30,
+/**/ 0xBF2C00C4, 0x07000000,
+/**/ 0xBD32D030, 0x4EEA9E68,
+/**/ 0x3F2BC181, 0x1CDF709C,
+/**/ 0xBF2BC0C0, 0x8B000000,
+/**/ 0x3D15E533, 0x74A84109,
+/**/ 0x3F2B817A, 0x34504F50,
+/**/ 0xBF2B80BD, 0x17000000,
+/**/ 0x3D3D53C1, 0x025FBF68,
+/**/ 0x3F2B4173, 0x5BC3C24B,
+/**/ 0xBF2B40B9, 0xAA800000,
+/**/ 0xBD267FA7, 0x6BAA2FA8,
+/**/ 0x3F2B016C, 0x9339C38C,
+/**/ 0xBF2B00B6, 0x46800000,
+/**/ 0x3D277F1D, 0xBB3FDE1E,
+/**/ 0x3F2AC165, 0xDAB24D11,
+/**/ 0xBF2AC0B2, 0xEA000000,
+/**/ 0xBD3DAD17, 0x1A8CDBE2,
+/**/ 0x3F2A815F, 0x322D58D9,
+/**/ 0xBF2A80AF, 0x96000000,
+/**/ 0xBD1E1315, 0xD81CF36E,
+/**/ 0x3F2A4158, 0x99AAE0E3,
+/**/ 0xBF2A40AC, 0x4A000000,
+/**/ 0x3D2C7307, 0xE649E7B4,
+/**/ 0x3F2A0152, 0x112ADF2D,
+/**/ 0xBF2A00A9, 0x05800000,
+/**/ 0xBD3C713A, 0xB77435EC,
+/**/ 0x3F29C14B, 0x98AD4DB7,
+/**/ 0xBF29C0A5, 0xC9800000,
+/**/ 0xBD1E1005, 0x3A7AE827,
+/**/ 0x3F298145, 0x3032267F,
+/**/ 0xBF2980A2, 0x95800000,
+/**/ 0x3D2A0460, 0xA8F2A842,
+/**/ 0x3F29413E, 0xD7B96385,
+/**/ 0xBF29409F, 0x69000000,
+/**/ 0xBD3EDDA5, 0xA7B8321E,
+/**/ 0x3F290138, 0x8F42FEC5,
+/**/ 0xBF29009C, 0x45000000,
+/**/ 0xBD264506, 0x3A3F0D33,
+/**/ 0x3F28C132, 0x56CEF241,
+/**/ 0xBF28C099, 0x29000000,
+/**/ 0x3D206930, 0x33EE13CD,
+/**/ 0x3F28812C, 0x2E5D37F6,
+/**/ 0xBF288096, 0x15000000,
+/**/ 0x3D3B28AC, 0x22DF1FDA,
+/**/ 0x3F284126, 0x15EDC9E3,
+/**/ 0xBF284093, 0x08800000,
+/**/ 0xBD324546, 0xDD73B6DB,
+/**/ 0x3F280120, 0x0D80A208,
+/**/ 0xBF280090, 0x04800000,
+/**/ 0xBCB440C2, 0x6DFEB485,
+/**/ 0x3F27C11A, 0x1515BA62,
+/**/ 0xBF27C08D, 0x08800000,
+/**/ 0x3D31BCBE, 0x9823B19D,
+/**/ 0x3F278114, 0x2CAD0CF1,
+/**/ 0xBF27808A, 0x14000000,
+/**/ 0xBD3CD148, 0xA9EB4E97,
+/**/ 0x3F27410E, 0x544693B4,
+/**/ 0xBF274087, 0x28000000,
+/**/ 0xBD277AAC, 0xCA4F73AA,
+/**/ 0x3F270108, 0x8BE248AA,
+/**/ 0xBF270084, 0x44000000,
+/**/ 0x3D13E656, 0x26068EF7,
+/**/ 0x3F26C102, 0xD38025D2,
+/**/ 0xBF26C081, 0x68000000,
+/**/ 0x3D35547B, 0x44C3EC8A,
+/**/ 0x3F2680FD, 0x2B20252A,
+/**/ 0xBF26807E, 0x93800000,
+/**/ 0xBD3AABA5, 0x110DCE4B,
+/**/ 0x3F2640F7, 0x92C240B1,
+/**/ 0xBF26407B, 0xC7800000,
+/**/ 0xBD260B96, 0xAC011956,
+/**/ 0x3F2600F2, 0x0A667267,
+/**/ 0xBF260079, 0x03800000,
+/**/ 0x3D111C22, 0x5DFA826E,
+/**/ 0x3F25C0EC, 0x920CB44A,
+/**/ 0xBF25C076, 0x47800000,
+/**/ 0x3D333BD6, 0xD8A2980A,
+/**/ 0x3F2580E7, 0x29B5005A,
+/**/ 0xBF258073, 0x93000000,
+/**/ 0xBD3E2660, 0x71C1D861,
+/**/ 0x3F2540E1, 0xD15F5095,
+/**/ 0xBF254070, 0xE7000000,
+/**/ 0xBD2FBD3A, 0x4E77E5EE,
+/**/ 0x3F2500DC, 0x890B9EFA,
+/**/ 0xBF25006E, 0x43000000,
+/**/ 0xBCFEBDF2, 0x7B90A2D9,
+/**/ 0x3F24C0D7, 0x50B9E589,
+/**/ 0xBF24C06B, 0xA7000000,
+/**/ 0x3D2765B3, 0x58F2FF2C,
+/**/ 0x3F2480D2, 0x286A1E40,
+/**/ 0xBF248069, 0x13000000,
+/**/ 0x3D38FE8D, 0x74AE382C,
+/**/ 0x3F2440CD, 0x101C431E,
+/**/ 0xBF244066, 0x86800000,
+/**/ 0xBD3A07C3, 0xB0286224,
+/**/ 0x3F2400C8, 0x07D04E23,
+/**/ 0xBF240064, 0x02800000,
+/**/ 0xBD2ABE33, 0x46EFC0EC,
+/**/ 0x3F23C0C3, 0x0F86394D,
+/**/ 0xBF23C061, 0x86800000,
+/**/ 0xBCF06744, 0x70DE3151,
+/**/ 0x3F2380BE, 0x273DFE9C,
+/**/ 0xBF23805F, 0x12800000,
+/**/ 0x3D260659, 0x05CFCD61,
+/**/ 0x3F2340B9, 0x4EF7980F,
+/**/ 0xBF23405C, 0xA6800000,
+/**/ 0x3D36BEC8, 0xD7DBBEBC,
+/**/ 0x3F2300B4, 0x86B2FFA4,
+/**/ 0xBF23005A, 0x42000000,
+/**/ 0xBD3DD29F, 0x2B2027B4,
+/**/ 0x3F22C0AF, 0xCE702F5C,
+/**/ 0xBF22C057, 0xE6000000,
+/**/ 0xBD32B00B, 0x6959A7D0,
+/**/ 0x3F2280AB, 0x262F2134,
+/**/ 0xBF228055, 0x92000000,
+/**/ 0xBD1F61EF, 0x19FAAC2D,
+/**/ 0x3F2240A6, 0x8DEFCF2C,
+/**/ 0xBF224053, 0x46000000,
+/**/ 0x3D05A87E, 0xCB16B8A8,
+/**/ 0x3F2200A2, 0x05B23344,
+/**/ 0xBF220051, 0x02000000,
+/**/ 0x3D29F32F, 0x23B9B257,
+/**/ 0x3F21C09D, 0x8D76477A,
+/**/ 0xBF21C04E, 0xC6000000,
+/**/ 0x3D36F61B, 0x7E214821,
+/**/ 0x3F218099, 0x253C05CD,
+/**/ 0xBF21804C, 0x91800000,
+/**/ 0xBD3F5464, 0x46FDFCA2,
+/**/ 0x3F214094, 0xCD03683D,
+/**/ 0xBF21404A, 0x65800000,
+/**/ 0xBD35E4E7, 0xA30F2308,
+/**/ 0x3F210090, 0x84CC68C9,
+/**/ 0xBF210048, 0x41800000,
+/**/ 0xBD2974DC, 0xF800CC34,
+/**/ 0x3F20C08C, 0x4C970171,
+/**/ 0xBF20C046, 0x25800000,
+/**/ 0xBD0E9FC5, 0xC1006E9D,
+/**/ 0x3F208088, 0x24632C32,
+/**/ 0xBF208044, 0x11800000,
+/**/ 0x3D133DE7, 0x078E4438,
+/**/ 0x3F204084, 0x0C30E30D,
+/**/ 0xBF204042, 0x05800000,
+/**/ 0x3D2A61D2, 0x15F82A7B,
+/**/ 0x3F200080, 0x04002001,
+/**/ 0xBF200040, 0x01800000,
+/**/ 0x3D355155, 0x3BBB110C,
+/**/ 0x3F1F80F8, 0x17A1BA1A,
+/**/ 0xBF1F807C, 0x0B000000,
+/**/ 0x3D3D31BE, 0x6C520A9B,
+/**/ 0x3F1F00F0, 0x47462860,
+/**/ 0xBF1F0078, 0x22000000,
+/**/ 0xBD3B2CDB, 0x4B6D83F6,
+/**/ 0x3F1E80E8, 0x96ED7ED3,
+/**/ 0xBF1E8074, 0x4A000000,
+/**/ 0xBD33C977, 0xD4122C5A,
+/**/ 0x3F1E00E1, 0x0697B172,
+/**/ 0xBF1E0070, 0x82000000,
+/**/ 0xBD29462E, 0x2D1517C4,
+/**/ 0x3F1D80D9, 0x9644B43B,
+/**/ 0xBF1D806C, 0xCA000000,
+/**/ 0xBD16E2E3, 0xF0952D45,
+/**/ 0x3F1D00D2, 0x45F47B2C,
+/**/ 0xBF1D0069, 0x22000000,
+/**/ 0x3CEED452, 0x2DDC2A8D,
+/**/ 0x3F1C80CB, 0x15A6FA46,
+/**/ 0xBF1C8065, 0x8A000000,
+/**/ 0x3D1DAFEE, 0xA08CEBE8,
+/**/ 0x3F1C00C4, 0x055C2585,
+/**/ 0xBF1C0062, 0x02000000,
+/**/ 0x3D2B50A4, 0xBB11EF55,
+/**/ 0x3F1B80BD, 0x1513F0E9,
+/**/ 0xBF1B805E, 0x8A000000,
+/**/ 0x3D33ACA6, 0xC6D142BF,
+/**/ 0x3F1B00B6, 0x44CE5071,
+/**/ 0xBF1B005B, 0x22000000,
+/**/ 0x3D3979F8, 0xF8CD3D11,
+/**/ 0x3F1A80AF, 0x948B381A,
+/**/ 0xBF1A8057, 0xCA000000,
+/**/ 0x3D3F1149, 0x07EDFD29,
+/**/ 0x3F1A00A9, 0x044A9BE5,
+/**/ 0xBF1A0054, 0x81000000,
+/**/ 0xBD3B8C68, 0xF7BB7092,
+/**/ 0x3F1980A2, 0x940C6FCF,
+/**/ 0xBF198051, 0x49000000,
+/**/ 0xBD365E1C, 0xF27E09A9,
+/**/ 0x3F19009C, 0x43D0A7D8,
+/**/ 0xBF19004E, 0x21000000,
+/**/ 0xBD3162D2, 0xD508D564,
+/**/ 0x3F188096, 0x139737FE,
+/**/ 0xBF18804B, 0x09000000,
+/**/ 0xBD293315, 0x18D5C93E,
+/**/ 0x3F180090, 0x03601440,
+/**/ 0xBF180048, 0x01000000,
+/**/ 0xBD200288, 0x0C26A328,
+/**/ 0x3F17808A, 0x132B309E,
+/**/ 0xBF178045, 0x09000000,
+/**/ 0xBD0CC7F9, 0x7E89FD6F,
+/**/ 0x3F170084, 0x42F88115,
+/**/ 0xBF170042, 0x21000000,
+/**/ 0x3CE40881, 0x058494DC,
+/**/ 0x3F16807E, 0x92C7F9A5,
+/**/ 0xBF16803F, 0x49000000,
+/**/ 0x3D12AE16, 0xCD5698B9,
+/**/ 0x3F160079, 0x02998E4D,
+/**/ 0xBF16003C, 0x81000000,
+/**/ 0x3D21138B, 0xC5780E17,
+/**/ 0x3F158073, 0x926D330B,
+/**/ 0xBF158039, 0xC9000000,
+/**/ 0x3D287809, 0x4E2001E2,
+/**/ 0x3F15006E, 0x4242DBDF,
+/**/ 0xBF150037, 0x21000000,
+/**/ 0x3D2F8684, 0x21448AA2,
+/**/ 0x3F148069, 0x121A7CC8,
+/**/ 0xBF148034, 0x89000000,
+/**/ 0x3D33207E, 0x2F637D8E,
+/**/ 0x3F140064, 0x01F409C4,
+/**/ 0xBF140032, 0x01000000,
+/**/ 0x3D3654B9, 0x12E44B29,
+/**/ 0x3F13805F, 0x11CF76D3,
+/**/ 0xBF13802F, 0x89000000,
+/**/ 0x3D3960F2, 0xCA5547F3,
+/**/ 0x3F13005A, 0x41ACB7F4,
+/**/ 0xBF13002D, 0x21000000,
+/**/ 0x3D3C462B, 0x6487063D,
+/**/ 0x3F128055, 0x918BC126,
+/**/ 0xBF12802A, 0xC9000000,
+/**/ 0x3D3F0562, 0xEFEA1107,
+/**/ 0x3F120051, 0x016C8668,
+/**/ 0xBF120028, 0x80000000,
+/**/ 0xBD3E6066, 0x857113CE,
+/**/ 0x3F11804C, 0x914EFBBA,
+/**/ 0xBF118026, 0x48000000,
+/**/ 0xBD3BEA30, 0xEDD9EB54,
+/**/ 0x3F110048, 0x41331519,
+/**/ 0xBF110024, 0x20000000,
+/**/ 0xBD3996FC, 0x3BFFFF5A,
+/**/ 0x3F108044, 0x1118C686,
+/**/ 0xBF108022, 0x08000000,
+/**/ 0xBD3765C8, 0x62F2E042,
+/**/ 0x3F100040, 0x01000400,
+/**/ 0xBF100020, 0x00000000,
+/**/ 0xBD355595, 0x562224CD,
+/**/ 0x3F0F0078, 0x21D1830C,
+/**/ 0xBF0F003C, 0x10000000,
+/**/ 0xBD336563, 0x095D69EB,
+/**/ 0x3F0E0070, 0x81A5E62E,
+/**/ 0xBF0E0038, 0x40000000,
+/**/ 0xBD319431, 0x70D45290,
+/**/ 0x3F0D0069, 0x217D1965,
+/**/ 0xBF0D0034, 0x90000000,
+/**/ 0xBD2FC201, 0x022D0EF6,
+/**/ 0x3F0C0062, 0x015704B1,
+/**/ 0xBF0C0031, 0x00000000,
+/**/ 0xBD2C95A0, 0x5E276E21,
+/**/ 0x3F0B005B, 0x2133900E,
+/**/ 0xBF0B002D, 0x90000000,
+/**/ 0xBD29A140, 0xE0372A42,
+/**/ 0x3F0A0054, 0x8112A37D,
+/**/ 0xBF0A002A, 0x40000000,
+/**/ 0xBD26E2E2, 0x73BBB580,
+/**/ 0x3F09004E, 0x20F426FB,
+/**/ 0xBF090027, 0x10000000,
+/**/ 0xBD245885, 0x04D48C20,
+/**/ 0x3F080048, 0x00D80288,
+/**/ 0xBF080024, 0x00000000,
+/**/ 0xBD220028, 0x80613426,
+/**/ 0x3F070042, 0x20BE1E23,
+/**/ 0xBF070021, 0x10000000,
+/**/ 0xBD1FAF99, 0xA80279F3,
+/**/ 0x3F06003C, 0x80A661CA,
+/**/ 0xBF06001E, 0x40000000,
+/**/ 0xBD1BBAE3, 0xDC287DFE,
+/**/ 0x3F050037, 0x2090B57C,
+/**/ 0xBF05001B, 0x90000000,
+/**/ 0xBD181E2F, 0x7B73B67C,
+/**/ 0x3F040032, 0x007D0139,
+/**/ 0xBF040019, 0x00000000,
+/**/ 0xBD14D57C, 0x65A375F8,
+/**/ 0x3F03002D, 0x206B2CFF,
+/**/ 0xBF030016, 0x90000000,
+/**/ 0xBD11DCCA, 0x7BF71EC1,
+/**/ 0x3F020028, 0x805B20CD,
+/**/ 0xBF020014, 0x40000000,
+/**/ 0xBD0E6033, 0x425C4447,
+/**/ 0x3F010024, 0x204CC4A3,
+/**/ 0xBF010012, 0x10000000,
+/**/ 0xBD0996D3, 0x730FFF5C,
+/**/ 0x3F000020, 0x00400080,
+/**/ 0xBF000010, 0x00000000,
+/**/ 0xBD055575, 0x558888DE,
+/**/ 0x3EFE0038, 0x406978C6,
+/**/ 0xBEFE001C, 0x20000000,
+/**/ 0xBD019418, 0xB845146A,
+/**/ 0x3EFC0031, 0x0055C096,
+/**/ 0xBEFC0018, 0x80000000,
+/**/ 0xBCFC957A, 0xD989DB3C,
+/**/ 0x3EFA002A, 0x4044A870,
+/**/ 0xBEFA0015, 0x20000000,
+/**/ 0xBCF6E2C6, 0x8F0EED2F,
+/**/ 0x3EF80024, 0x00360051,
+/**/ 0xBEF80012, 0x00000000,
+/**/ 0xBCF20014, 0x40184CEB,
+/**/ 0x3EF6001E, 0x40299839,
+/**/ 0xBEF6000F, 0x20000000,
+/**/ 0xBCEBBAC7, 0x434A1F5C,
+/**/ 0x3EF40019, 0x001F4027,
+/**/ 0xBEF4000C, 0x80000000,
+/**/ 0xBCE4D568, 0xDD68DD6A,
+/**/ 0x3EF20014, 0x4016C81A,
+/**/ 0xBEF2000A, 0x20000000,
+/**/ 0xBCDE6019, 0xA11710FC,
+/**/ 0x3EF00010, 0x00100010,
+/**/ 0xBEF00008, 0x00000000,
+/**/ 0xBCD55565, 0x5562222D,
+/**/ 0x3EEC0018, 0x80157013,
+/**/ 0xBEEC000C, 0x40000000,
+/**/ 0xBCCC9568, 0x176276C5,
+/**/ 0x3EE80012, 0x000D800A,
+/**/ 0xBEE80009, 0x00000000,
+/**/ 0xBCC2000A, 0x20061337,
+/**/ 0x3EE4000C, 0x8007D005,
+/**/ 0xBEE40006, 0x40000000,
+/**/ 0xBCB4D55F, 0x195A3758,
+/**/ 0x3EE00008, 0x00040002,
+/**/ 0xBEE00004, 0x00000000,
+/**/ 0xBCA5555D, 0x5558888A,
+/**/ 0x3ED80009, 0x00036001,
+/**/ 0xBED80004, 0x80000000,
+/**/ 0xBC920005, 0x100184CD,
+/**/ 0x3ED00004, 0x00010000,
+/**/ 0xBED00002, 0x00000000,
+/**/ 0xBC755559, 0x55562222,
+/**/ 0x3EC00002, 0x00004000,
+/**/ 0xBEC00001, 0x00000000,
+/**/ 0xBC455557, 0x55558889,
+/**/ 0x00000000, 0x00000000,
+/**/ 0x00000000, 0x00000000,
+/**/ 0x00000000, 0x00000000,
+/**/ 0xBEBFFFFC, 0x00008000,
+/**/ 0x3EBFFFFE, 0x00000000,
+/**/ 0x3C455553, 0x55558889,
+/**/ 0xBECFFFF8, 0x00020000,
+/**/ 0x3ECFFFFC, 0x00000000,
+/**/ 0x3C755551, 0x55562222,
+/**/ 0xBED7FFF7, 0x00035FFF,
+/**/ 0x3ED7FFFB, 0x80000000,
+/**/ 0x3C91FFFA, 0xF00184CC,
+/**/ 0xBEDFFFF0, 0x0007FFFC,
+/**/ 0x3EDFFFF8, 0x00000000,
+/**/ 0x3CA5554D, 0x55588887,
+/**/ 0xBEE3FFF3, 0x8007CFFB,
+/**/ 0x3EE3FFF9, 0xC0000000,
+/**/ 0x3CB4D54B, 0x915A3753,
+/**/ 0xBEE7FFEE, 0x000D7FF6,
+/**/ 0x3EE7FFF7, 0x00000000,
+/**/ 0x3CC1FFF5, 0xE006132F,
+/**/ 0xBEEBFFE7, 0x80156FED,
+/**/ 0x3EEBFFF3, 0xC0000000,
+/**/ 0x3CCC9542, 0x936276B2,
+/**/ 0xBEEFFFE0, 0x001FFFE0,
+/**/ 0x3EEFFFF0, 0x00000000,
+/**/ 0x3CD55545, 0x55622217,
+/**/ 0xBEF1FFEB, 0xC016C7E6,
+/**/ 0x3EF1FFF5, 0xE0000000,
+/**/ 0x3CDE5FE6, 0x5F1710D1,
+/**/ 0xBEF3FFE7, 0x001F3FD9,
+/**/ 0x3EF3FFF3, 0x80000000,
+/**/ 0x3CE4D541, 0xCD68DD41,
+/**/ 0xBEF5FFE1, 0xC02997C7,
+/**/ 0x3EF5FFF0, 0xE0000000,
+/**/ 0x3CEBBA8E, 0x124A1F13,
+/**/ 0xBEF7FFDC, 0x0035FFAF,
+/**/ 0x3EF7FFEE, 0x00000000,
+/**/ 0x3CF1FFEB, 0xC0184CAE,
+/**/ 0xBEF9FFD5, 0xC044A790,
+/**/ 0x3EF9FFEA, 0xE0000000,
+/**/ 0x3CF6E28E, 0xC68EECCD,
+/**/ 0xBEFBFFCF, 0x0055BF6A,
+/**/ 0x3EFBFFE7, 0x80000000,
+/**/ 0x3CFC952F, 0xD189DAA2,
+/**/ 0xBEFDFFC7, 0xC069773A,
+/**/ 0x3EFDFFE3, 0xE0000000,
+/**/ 0x3D0193E7, 0x480513F6,
+/**/ 0xBEFFFFC0, 0x007FFF00,
+/**/ 0x3EFFFFE0, 0x00000000,
+/**/ 0x3D055535, 0x55888833,
+/**/ 0xBF00FFDB, 0xE04CC35D,
+/**/ 0x3F00FFED, 0xF0000000,
+/**/ 0x3D099681, 0xE2CFFE66,
+/**/ 0xBF01FFD7, 0x805B1F33,
+/**/ 0x3F01FFEB, 0xC0000000,
+/**/ 0x3D0E5FCC, 0xBE5C42ED,
+/**/ 0xBF02FFD2, 0xE06B2B01,
+/**/ 0x3F02FFE9, 0x70000000,
+/**/ 0x3D11DC8A, 0xD9D71DD1,
+/**/ 0xBF03FFCE, 0x007CFEC8,
+/**/ 0x3F03FFE7, 0x00000000,
+/**/ 0x3D14D52E, 0x45A374B3,
+/**/ 0xBF04FFC8, 0xE090B284,
+/**/ 0x3F04FFE4, 0x70000000,
+/**/ 0x3D181DD0, 0x8553B4C7,
+/**/ 0xBF05FFC3, 0x80A65E36,
+/**/ 0x3F05FFE1, 0xC0000000,
+/**/ 0x3D1BBA71, 0x7A287BBE,
+/**/ 0xBF06FFBD, 0xE0BE19DD,
+/**/ 0x3F06FFDE, 0xF0000000,
+/**/ 0x3D1FAF11, 0x03E27702,
+/**/ 0xBF07FFB8, 0x00D7FD78,
+/**/ 0x3F07FFDC, 0x00000000,
+/**/ 0x3D21FFD7, 0x80613240,
+/**/ 0xBF08FFB1, 0xE0F42105,
+/**/ 0x3F08FFD8, 0xF0000000,
+/**/ 0x3D245825, 0xA6C489B3,
+/**/ 0xBF09FFAB, 0x81129C84,
+/**/ 0x3F09FFD5, 0xC0000000,
+/**/ 0x3D26E272, 0xE2BBB26F,
+/**/ 0xBF0AFFA4, 0xE13387F2,
+/**/ 0x3F0AFFD2, 0x70000000,
+/**/ 0x3D29A0BF, 0x21272669,
+/**/ 0xBF0BFF9E, 0x0156FB50,
+/**/ 0x3F0BFFCF, 0x00000000,
+/**/ 0x3D2C950A, 0x4E276957,
+/**/ 0xBF0CFF96, 0xE17D0E9B,
+/**/ 0x3F0CFFCB, 0x70000000,
+/**/ 0x3D2FC154, 0x551D090E,
+/**/ 0xBF0DFF8F, 0x81A5D9D2,
+/**/ 0x3F0DFFC7, 0xC0000000,
+/**/ 0x3D3193CE, 0x90544EF1,
+/**/ 0xBF0EFF87, 0xE1D174F4,
+/**/ 0x3F0EFFC3, 0xF0000000,
+/**/ 0x3D3364F2, 0x4D556583,
+/**/ 0xBF0FFF80, 0x01FFF800,
+/**/ 0x3F0FFFC0, 0x00000000,
+/**/ 0x3D355515, 0x56221F78,
+/**/ 0xBF107FBB, 0xF118BD7A,
+/**/ 0x3F107FDD, 0xF8000000,
+/**/ 0x3D376537, 0x9EEAD9D8,
+/**/ 0xBF10FFB7, 0xC1330AE7,
+/**/ 0x3F10FFDB, 0xE0000000,
+/**/ 0x3D399659, 0x1B7FF7AE,
+/**/ 0xBF117FB3, 0x714EF047,
+/**/ 0x3F117FD9, 0xB8000000,
+/**/ 0x3D3BE979, 0xBF51E233,
+/**/ 0xBF11FFAF, 0x016C7998,
+/**/ 0x3F11FFD7, 0x80000000,
+/**/ 0x3D3E5F99, 0x7D7108FF,
+/**/ 0xBF127FAA, 0x718BB2DA,
+/**/ 0x3F127FD5, 0x39000000,
+/**/ 0xBD3F0647, 0xB7721DC6,
+/**/ 0xBF12FFA5, 0xC1ACA80C,
+/**/ 0x3F12FFD2, 0xE1000000,
+/**/ 0xBD3C4729, 0xED071532,
+/**/ 0xBF137FA0, 0xF1CF652D,
+/**/ 0x3F137FD0, 0x79000000,
+/**/ 0xBD39620D, 0x315D596D,
+/**/ 0xBF13FF9C, 0x01F3F63C,
+/**/ 0x3F13FFCE, 0x01000000,
+/**/ 0xBD3655F1, 0x92E45F81,
+/**/ 0xBF147F96, 0xF21A6739,
+/**/ 0x3F147FCB, 0x79000000,
+/**/ 0xBD3321D7, 0x206B9526,
+/**/ 0xBF14FF91, 0xC242C421,
+/**/ 0x3F14FFC8, 0xE1000000,
+/**/ 0xBD2F897B, 0xD244C12A,
+/**/ 0xBF157F8C, 0x726D18F6,
+/**/ 0x3F157FC6, 0x39000000,
+/**/ 0xBD287B4B, 0xF93040AE,
+/**/ 0xBF15FF87, 0x029971B4,
+/**/ 0x3F15FFC3, 0x81000000,
+/**/ 0xBD21171E, 0xD578562C,
+/**/ 0xBF167F81, 0x72C7DA5C,
+/**/ 0x3F167FC0, 0xB9000000,
+/**/ 0xBD12B5E9, 0x0F773DB4,
+/**/ 0xBF16FF7B, 0xC2F85EEC,
+/**/ 0x3F16FFBD, 0xE1000000,
+/**/ 0xBCE44CD3, 0x158A76C2,
+/**/ 0xBF177F75, 0xF32B0B63,
+/**/ 0x3F177FBA, 0xF9000000,
+/**/ 0x3D0CB55C, 0x2E48511B,
+/**/ 0xBF17FF70, 0x035FEBC0,
+/**/ 0x3F17FFB8, 0x01000000,
+/**/ 0x3D1FFAF0, 0x184C534F,
+/**/ 0xBF187F69, 0xF3970C03,
+/**/ 0x3F187FB4, 0xF9000000,
+/**/ 0x3D292D95, 0xACC53FBE,
+/**/ 0xBF18FF63, 0xC3D07829,
+/**/ 0x3F18FFB1, 0xE1000000,
+/**/ 0x3D315FD7, 0xE48887C8,
+/**/ 0xBF197F5D, 0x740C3C32,
+/**/ 0x3F197FAE, 0xB9000000,
+/**/ 0x3D365AE3, 0x1DF5B242,
+/**/ 0xBF19FF57, 0x044A641C,
+/**/ 0x3F19FFAB, 0x81000000,
+/**/ 0x3D3B88EC, 0x6FBB0E5F,
+/**/ 0xBF1A7F50, 0x748AFBE7,
+/**/ 0x3F1A7FA8, 0x3A000000,
+/**/ 0xBD3F150C, 0x39766B40,
+/**/ 0xBF1AFF49, 0xC4CE0F91,
+/**/ 0x3F1AFFA4, 0xE2000000,
+/**/ 0xBD397E06, 0xF14DB839,
+/**/ 0xBF1B7F42, 0xF513AB19,
+/**/ 0x3F1B7FA1, 0x7A000000,
+/**/ 0xBD33B103, 0xCBD9CC3D,
+/**/ 0xBF1BFF3C, 0x055BDA7D,
+/**/ 0x3F1BFF9E, 0x02000000,
+/**/ 0xBD2B5A05, 0xBB1321B5,
+/**/ 0xBF1C7F34, 0xF5A6A9BD,
+/**/ 0x3F1C7F9A, 0x7A000000,
+/**/ 0xBD1DC410, 0xECAF9551,
+/**/ 0xBF1CFF2D, 0xC5F424D6,
+/**/ 0x3F1CFF96, 0xE2000000,
+/**/ 0xBCEF80FF, 0x3DF3CD68,
+/**/ 0xBF1D7F26, 0x764457C8,
+/**/ 0x3F1D7F93, 0x3A000000,
+/**/ 0x3D16CBC7, 0x4271E737,
+/**/ 0xBF1DFF1F, 0x06974E91,
+/**/ 0x3F1DFF8F, 0x82000000,
+/**/ 0x3D2939D2, 0x1D134848,
+/**/ 0xBF1E7F17, 0x76ED1530,
+/**/ 0x3F1E7F8B, 0xBA000000,
+/**/ 0x3D33C2DD, 0xA9892C73,
+/**/ 0xBF1EFF0F, 0xC745B7A4,
+/**/ 0x3F1EFF87, 0xE2000000,
+/**/ 0x3D3B25CF, 0x8AEC69D5,
+/**/ 0xBF1F7F07, 0xF7A141EA,
+/**/ 0x3F1F7F83, 0xFB000000,
+/**/ 0xBD3D3941, 0x645B412A,
+/**/ 0xBF1FFF00, 0x07FFC002,
+/**/ 0x3F1FFF80, 0x03000000,
+/**/ 0xBD355955, 0x3BBC6662,
+/**/ 0xBF203F7B, 0xFC309EF5,
+/**/ 0x3F203FBD, 0xFD800000,
+/**/ 0xBD2A72D8, 0x260B17B3,
+/**/ 0xBF207F77, 0xE462E3D0,
+/**/ 0x3F207FBB, 0xF1800000,
+/**/ 0xBD136218, 0x0994AE68,
+/**/ 0xBF20BF73, 0xBC96B492,
+/**/ 0x3F20BFB9, 0xDD800000,
+/**/ 0x3D0E52E6, 0xECB2641F,
+/**/ 0xBF20FF6F, 0x84CC1739,
+/**/ 0x3F20FFB7, 0xC1800000,
+/**/ 0x3D296078, 0xE7FCF60B,
+/**/ 0xBF213F6B, 0x3D0311C6,
+/**/ 0x3F213FB5, 0x9D800000,
+/**/ 0x3D35DA18, 0xA7850AFF,
+/**/ 0xBF217F66, 0xE53BAA36,
+/**/ 0x3F217FB3, 0x71800000,
+/**/ 0x3D3F48F1, 0x5E7BB444,
+/**/ 0xBF21BF62, 0x7D75E68A,
+/**/ 0x3F21BFB1, 0x3E000000,
+/**/ 0xBD370239, 0x812BC469,
+/**/ 0xBF21FF5E, 0x05B1CCC0,
+/**/ 0x3F21FFAF, 0x02000000,
+/**/ 0xBD2A0CD0, 0x23BF1A4D,
+/**/ 0xBF223F59, 0x7DEF62D8,
+/**/ 0x3F223FAC, 0xBE000000,
+/**/ 0xBD0614D3, 0x736E3623,
+/**/ 0xBF227F54, 0xE62EAED0,
+/**/ 0x3F227FAA, 0x72000000,
+/**/ 0x3D1F28BD, 0x37EDEDB0,
+/**/ 0xBF22BF50, 0x3E6FB6A9,
+/**/ 0x3F22BFA8, 0x1E000000,
+/**/ 0x3D32A0F5, 0x07CE33C8,
+/**/ 0xBF22FF4B, 0x86B28060,
+/**/ 0x3F22FFA5, 0xC2000000,
+/**/ 0x3D3DC2B6, 0xA31C6A8D,
+/**/ 0xBF233F46, 0xBEF711F6,
+/**/ 0x3F233FA3, 0x5E800000,
+/**/ 0xBD36CF8B, 0xFC67C9FB,
+/**/ 0xBF237F41, 0xE73D7169,
+/**/ 0x3F237FA0, 0xF2800000,
+/**/ 0xBD2629A5, 0xE6D88A89,
+/**/ 0xBF23BF3C, 0xFF85A4B8,
+/**/ 0x3F23BF9E, 0x7E800000,
+/**/ 0x3CEE7C34, 0x202574EC,
+/**/ 0xBF23FF38, 0x07CFB1E3,
+/**/ 0x3F23FF9C, 0x02800000,
+/**/ 0x3D2A9723, 0x46E594C1,
+/**/ 0xBF243F33, 0x001B9EE8,
+/**/ 0x3F243F99, 0x7E800000,
+/**/ 0x3D39F33C, 0xF61AE74C,
+/**/ 0xBF247F2D, 0xE86971C7,
+/**/ 0x3F247F96, 0xF3000000,
+/**/ 0xBD39141C, 0x85341E31,
+/**/ 0xBF24BF28, 0xC0B9307F,
+/**/ 0x3F24BF94, 0x5F000000,
+/**/ 0xBD2792F5, 0xDA0FAF09,
+/**/ 0xBF24FF23, 0x890AE10E,
+/**/ 0x3F24FF91, 0xC3000000,
+/**/ 0x3CFD4219, 0xFB239430,
+/**/ 0xBF253F1E, 0x415E8974,
+/**/ 0x3F253F8F, 0x1F000000,
+/**/ 0x3D2F8B72, 0x0359434A,
+/**/ 0xBF257F18, 0xE9B42FAF,
+/**/ 0x3F257F8C, 0x73000000,
+/**/ 0x3D3E0C4B, 0x1939FEDF,
+/**/ 0xBF25BF13, 0x820BD9BF,
+/**/ 0x3F25BF89, 0xBF800000,
+/**/ 0xBD335728, 0x39B301E2,
+/**/ 0xBF25FF0E, 0x0A658DA3,
+/**/ 0x3F25FF87, 0x03800000,
+/**/ 0xBD118E84, 0x5E1E8D4F,
+/**/ 0xBF263F08, 0x82C15159,
+/**/ 0x3F263F84, 0x3F800000,
+/**/ 0x3D25CFC0, 0xBDDDD045,
+/**/ 0xBF267F02, 0xEB1F2AE1,
+/**/ 0x3F267F81, 0x73800000,
+/**/ 0x3D3A8C5C, 0x08837E99,
+/**/ 0xBF26BEFD, 0x437F203A,
+/**/ 0x3F26BF7E, 0xA0000000,
+/**/ 0xBD35752E, 0x3C56F12D,
+/**/ 0xBF26FEF7, 0x8BE13762,
+/**/ 0x3F26FF7B, 0xC4000000,
+/**/ 0xBD146EFA, 0x46359E28,
+/**/ 0xBF273EF1, 0xC4457659,
+/**/ 0x3F273F78, 0xE0000000,
+/**/ 0x3D273355, 0xCD265865,
+/**/ 0xBF277EEB, 0xECABE31C,
+/**/ 0x3F277F75, 0xF4000000,
+/**/ 0x3D3CAC0E, 0x095DEBF8,
+/**/ 0xBF27BEE6, 0x051483AC,
+/**/ 0x3F27BF73, 0x00800000,
+/**/ 0xBD31E395, 0x4C39F4DB,
+/**/ 0xBF27FEE0, 0x0D7F5E08,
+/**/ 0x3F27FF70, 0x04800000,
+/**/ 0xBCB43F3D, 0xA1314B81,
+/**/ 0xBF283EDA, 0x05EC782D,
+/**/ 0x3F283F6D, 0x00800000,
+/**/ 0x3D321B10, 0x115B8D70,
+/**/ 0xBF287ED3, 0xEE5BD81B,
+/**/ 0x3F287F69, 0xF5000000,
+/**/ 0xBD3B54A7, 0x83704FE1,
+/**/ 0xBF28BECD, 0xC6CD83D1,
+/**/ 0x3F28BF66, 0xE1000000,
+/**/ 0xBD20C4CC, 0x41229C91,
+/**/ 0xBF28FEC7, 0x8F41814D,
+/**/ 0x3F28FF63, 0xC5000000,
+/**/ 0x3D25E5A8, 0x2A183F17,
+/**/ 0xBF293EC1, 0x47B7D68F,
+/**/ 0x3F293F60, 0xA1000000,
+/**/ 0x3D3EAC06, 0xF81B997D,
+/**/ 0xBF297EBA, 0xF0308995,
+/**/ 0x3F297F5D, 0x75800000,
+/**/ 0xBD2A6B9B, 0x3A1E5BAD,
+/**/ 0xBF29BEB4, 0x88ABA05E,
+/**/ 0x3F29BF5A, 0x41800000,
+/**/ 0x3D1D3958, 0xBDFE3C77,
+/**/ 0xBF29FEAE, 0x112920E9,
+/**/ 0x3F29FF57, 0x05800000,
+/**/ 0x3D3C3972, 0x375BA904,
+/**/ 0xBF2A3EA7, 0x89A91135,
+/**/ 0x3F2A3F53, 0xC2000000,
+/**/ 0xBD2CE6F3, 0x588DE85B,
+/**/ 0xBF2A7EA0, 0xF22B7740,
+/**/ 0x3F2A7F50, 0x76000000,
+/**/ 0x3D1D2249, 0x75AEDBFD,
+/**/ 0xBF2ABE9A, 0x4AB05909,
+/**/ 0x3F2ABF4D, 0x22000000,
+/**/ 0x3D3D6E96, 0x2CE7BDAC,
+/**/ 0xBF2AFE93, 0x9337BC90,
+/**/ 0x3F2AFF49, 0xC6800000,
+/**/ 0xBD2800DC, 0xCB7D724C,
+/**/ 0xBF2B3E8C, 0xCBC1A7D1,
+/**/ 0x3F2B3F46, 0x62800000,
+/**/ 0x3D25F908, 0xFA591B29,
+/**/ 0xBF2B7E85, 0xF44E20CE,
+/**/ 0x3F2B7F42, 0xF7000000,
+/**/ 0xBD3D9991, 0x53021ED8,
+/**/ 0xBF2BBE7F, 0x0CDD2D83,
+/**/ 0x3F2BBF3F, 0x83000000,
+/**/ 0xBD1706BF, 0xFD596AD6,
+/**/ 0xBF2BFE78, 0x156ED3F0,
+/**/ 0x3F2BFF3C, 0x07000000,
+/**/ 0x3D328528, 0x4EC45253,
+/**/ 0xBF2C3E71, 0x0E031A14,
+/**/ 0x3F2C3F38, 0x83800000,
+/**/ 0xBD34C408, 0x927D8A9E,
+/**/ 0xBF2C7E69, 0xF69A05ED,
+/**/ 0x3F2C7F34, 0xF7800000,
+/**/ 0x3D118EF4, 0xCAE2C25F,
+/**/ 0xBF2CBE62, 0xCF339D7A,
+/**/ 0x3F2CBF31, 0x63800000,
+/**/ 0x3D3DFD79, 0x73DBBB41,
+/**/ 0xBF2CFE5B, 0x97CFE6B9,
+/**/ 0x3F2CFF2D, 0xC8000000,
+/**/ 0xBD1FD74F, 0xE7FE77E6,
+/**/ 0xBF2D3E54, 0x506EE7AA,
+/**/ 0x3F2D3F2A, 0x24000000,
+/**/ 0x3D328AD4, 0xBDDB871F,
+/**/ 0xBF2D7E4C, 0xF910A64A,
+/**/ 0x3F2D7F26, 0x78800000,
+/**/ 0xBD327F8C, 0x903DDD81,
+/**/ 0xBF2DBE45, 0x91B52899,
+/**/ 0x3F2DBF22, 0xC4800000,
+/**/ 0x3D21D80F, 0xDF52840A,
+/**/ 0xBF2DFE3E, 0x1A5C7495,
+/**/ 0x3F2DFF1F, 0x09000000,
+/**/ 0xBD3B316D, 0xEED9F651,
+/**/ 0xBF2E3E36, 0x9306903D,
+/**/ 0x3F2E3F1B, 0x45000000,
+/**/ 0x3CF2911A, 0x76DB3C6B,
+/**/ 0xBF2E7E2E, 0xFBB3818F,
+/**/ 0x3F2E7F17, 0x79000000,
+/**/ 0x3D3DFC86, 0x85559113,
+/**/ 0xBF2EBE27, 0x54634E89,
+/**/ 0x3F2EBF13, 0xA5800000,
+/**/ 0xBD12D83E, 0x0AB3DBE7,
+/**/ 0xBF2EFE1F, 0x9D15FD2B,
+/**/ 0x3F2EFF0F, 0xC9800000,
+/**/ 0x3D39124F, 0x617B99F1,
+/**/ 0xBF2F3E17, 0xD5CB9373,
+/**/ 0x3F2F3F0B, 0xE6000000,
+/**/ 0xBD2152B9, 0xF8F64DA1,
+/**/ 0xBF2F7E0F, 0xFE841760,
+/**/ 0x3F2F7F07, 0xFA000000,
+/**/ 0x3D3617EB, 0x34C4735B,
+/**/ 0xBF2FBE08, 0x173F8EEF,
+/**/ 0x3F2FBF04, 0x06800000,
+/**/ 0xBD2551B0, 0x739FA712,
+/**/ 0xBF2FFE00, 0x1FFE0020,
+/**/ 0x3F2FFF00, 0x0A800000,
+/**/ 0x3D351558, 0x885DE027,
+/**/ 0xBF301EFC, 0x0C5FB879,
+/**/ 0x3F301F7E, 0x03800000,
+/**/ 0xBD255905, 0x68F8FC50,
+/**/ 0xBF303EF8, 0x00C1F3B0,
+/**/ 0x3F303F7B, 0xFD800000,
+/**/ 0x3D361295, 0xDF771CF4,
+/**/ 0xBF305EF3, 0xED25B4B7,
+/**/ 0x3F305F79, 0xF3C00000,
+/**/ 0xBD2158BB, 0xD8A255DB,
+/**/ 0xBF307EEF, 0xD18AFE8B,
+/**/ 0x3F307F77, 0xE5C00000,
+/**/ 0x3D3917A1, 0xB740E625,
+/**/ 0xBF309EEB, 0xADF1D42C,
+/**/ 0x3F309F75, 0xD4000000,
+/**/ 0xBD1281AD, 0x9C716D59,
+/**/ 0xBF30BEE7, 0x825A3899,
+/**/ 0x3F30BF73, 0xBE000000,
+/**/ 0x3D3E2C7A, 0x86ED7DDC,
+/**/ 0xBF30DEE3, 0x4EC42ED1,
+/**/ 0x3F30DF71, 0xA4400000,
+/**/ 0x3CF7F534, 0xF54F7E28,
+/**/ 0xBF30FEDF, 0x132FB9D5,
+/**/ 0x3F30FF6F, 0x86800000,
+/**/ 0xBD3AA6E1, 0x404F4E01,
+/**/ 0xBF311EDA, 0xCF9CDCA2,
+/**/ 0x3F311F6D, 0x64800000,
+/**/ 0x3D2375B9, 0x4A6EC981,
+/**/ 0xBF313ED6, 0x840B9A38,
+/**/ 0x3F313F6B, 0x3EC00000,
+/**/ 0xBD315A73, 0x33401DD0,
+/**/ 0xBF315ED2, 0x307BF596,
+/**/ 0x3F315F69, 0x14C00000,
+/**/ 0x3D341A2F, 0x02C11605,
+/**/ 0xBF317ECD, 0xD4EDF1BC,
+/**/ 0x3F317F66, 0xE7000000,
+/**/ 0xBD1798F3, 0xB2B7E8C5,
+/**/ 0xBF319EC9, 0x716191A8,
+/**/ 0x3F319F64, 0xB5400000,
+/**/ 0xBD3F5AB7, 0x35D62ED5,
+/**/ 0xBF31BEC5, 0x05D6D85A,
+/**/ 0x3F31BF62, 0x7F400000,
+/**/ 0x3D1EF6FF, 0xCA7EC7CD,
+/**/ 0xBF31DEC0, 0x924DC8D2,
+/**/ 0x3F31DF60, 0x45800000,
+/**/ 0xBD309BD7, 0xA8550396,
+/**/ 0xBF31FEBC, 0x16C6660D,
+/**/ 0x3F31FF5E, 0x07800000,
+/**/ 0x3D379981, 0xC3E31F70,
+/**/ 0xBF321EB7, 0x9340B30B,
+/**/ 0x3F321F5B, 0xC5C00000,
+/**/ 0x3CD7B300, 0x5FE92B94,
+/**/ 0xBF323EB3, 0x07BCB2CC,
+/**/ 0x3F323F59, 0x80000000,
+/**/ 0xBD364AF9, 0x25A7CF34,
+/**/ 0xBF325EAE, 0x743A684F,
+/**/ 0x3F325F57, 0x36000000,
+/**/ 0x3D339D32, 0x17E48399,
+/**/ 0xBF327EA9, 0xD8B9D692,
+/**/ 0x3F327F54, 0xE8400000,
+/**/ 0xBCFE7B27, 0xCC387BD1,
+/**/ 0xBF329EA5, 0x353B0095,
+/**/ 0x3F329F52, 0x96800000,
+/**/ 0xBD36D8A7, 0x1AE7FA80,
+/**/ 0xBF32BEA0, 0x89BDE957,
+/**/ 0x3F32BF50, 0x40800000,
+/**/ 0x3D34CB54, 0x05CF3DC3,
+/**/ 0xBF32DE9B, 0xD64293D7,
+/**/ 0x3F32DF4D, 0xE6C00000,
+/**/ 0x3CF053EA, 0xD5A4F691,
+/**/ 0xBF32FE97, 0x1AC90315,
+/**/ 0x3F32FF4B, 0x89000000,
+/**/ 0xBD3229E7, 0x5CAE7B16,
+/**/ 0xBF331E92, 0x57513A0F,
+/**/ 0x3F331F49, 0x27000000,
+/**/ 0x3D3B3EE1, 0xAEED4509,
+/**/ 0xBF333E8D, 0x8BDB3BC4,
+/**/ 0x3F333F46, 0xC1400000,
+/**/ 0x3D228133, 0x2E0C2605,
+/**/ 0xBF335E88, 0xB8670B34,
+/**/ 0x3F335F44, 0x57800000,
+/**/ 0xBD20477F, 0xBBD6E280,
+/**/ 0xBF337E83, 0xDCF4AB5D,
+/**/ 0x3F337F41, 0xE9C00000,
+/**/ 0xBD38ED2A, 0xE9CE8AFC,
+/**/ 0xBF339E7E, 0xF9841F3F,
+/**/ 0x3F339F3F, 0x77C00000,
+/**/ 0x3D36E558, 0x39159F9B,
+/**/ 0xBF33BE7A, 0x0E1569D9,
+/**/ 0x3F33BF3D, 0x02000000,
+/**/ 0x3D1D5325, 0x40681634,
+/**/ 0xBF33DE75, 0x1AA88E2A,
+/**/ 0x3F33DF3A, 0x88400000,
+/**/ 0xBD1E775F, 0x7F2112CE,
+/**/ 0xBF33FE70, 0x1F3D8F31,
+/**/ 0x3F33FF38, 0x0A800000,
+/**/ 0xBD35F18B, 0x91F80D1B,
+/**/ 0xBF341E6B, 0x1BD46FED,
+/**/ 0x3F341F35, 0x88800000,
+/**/ 0x3D3C5AAD, 0xFDC3FC2F,
+/**/ 0xBF343E66, 0x106D335D,
+/**/ 0x3F343F33, 0x02C00000,
+/**/ 0x3D2E8FA9, 0x268A89F1,
+/**/ 0xBF345E60, 0xFD07DC80,
+/**/ 0x3F345F30, 0x79000000,
+/**/ 0x3D06B73F, 0x902AC9EE,
+/**/ 0xBF347E5B, 0xE1A46E55,
+/**/ 0x3F347F2D, 0xEB400000,
+/**/ 0xBD21EE30, 0x45C43959,
+/**/ 0xBF349E56, 0xBE42EBDC,
+/**/ 0x3F349F2B, 0x59800000,
+/**/ 0xBD34212B, 0xE8B753E8,
+/**/ 0xBF34BE51, 0x92E35813,
+/**/ 0x3F34BF28, 0xC3C00000,
+/**/ 0xBD3EA653, 0x9D2064DB,
+/**/ 0xBF34DE4C, 0x5F85B5F9,
+/**/ 0x3F34DF26, 0x29C00000,
+/**/ 0x3D377A70, 0x81DCB6FB,
+/**/ 0xBF34FE47, 0x242A088D,
+/**/ 0x3F34FF23, 0x8C000000,
+/**/ 0x3D2C8440, 0x6BB44A6D,
+/**/ 0xBF351E41, 0xE0D052CF,
+/**/ 0x3F351F20, 0xEA400000,
+/**/ 0x3D16C6ED, 0x0048AAF8,
+/**/ 0xBF353E3C, 0x957897BD,
+/**/ 0x3F353F1E, 0x44800000,
+/**/ 0xBD01ADF4, 0xF506A07E,
+/**/ 0xBF355E37, 0x4222DA57,
+/**/ 0x3F355F1B, 0x9AC00000,
+/**/ 0xBD22E69B, 0x4B88A655,
+/**/ 0xBF357E31, 0xE6CF1D9B,
+/**/ 0x3F357F18, 0xED000000,
+/**/ 0xBD3005F2, 0x153DAEB0,
+/**/ 0xBF359E2C, 0x837D6488,
+/**/ 0x3F359F16, 0x3B400000,
+/**/ 0xBD35ECAC, 0x2D5222B4,
+/**/ 0xBF35BE27, 0x182DB21E,
+/**/ 0x3F35BF13, 0x85800000,
+/**/ 0xBD3B267C, 0x2EA6CB14,
+/**/ 0xBF35DE21, 0xA4E0095B,
+/**/ 0x3F35DF10, 0xCBC00000,
+/**/ 0xBD3FB262, 0x5A40A340,
+/**/ 0xBF35FE1C, 0x29946D3F,
+/**/ 0x3F35FF0E, 0x0DC00000,
+/**/ 0x3D3C70A1, 0x0E7B79ED,
+/**/ 0xBF361E16, 0xA64AE0C7,
+/**/ 0x3F361F0B, 0x4C000000,
+/**/ 0x3D39438D, 0xC9C8D263,
+/**/ 0xBF363E11, 0x1B0366F4,
+/**/ 0x3F363F08, 0x86400000,
+/**/ 0x3D36C763, 0x9582CD0C,
+/**/ 0xBF365E0B, 0x87BE02C5,
+/**/ 0x3F365F05, 0xBC800000,
+/**/ 0x3D34FD22, 0x2F24F1F9,
+/**/ 0xBF367E05, 0xEC7AB737,
+/**/ 0x3F367F02, 0xEEC00000,
+/**/ 0x3D33E5C9, 0x53CAEA94,
+/**/ 0xBF369E00, 0x4939874A,
+/**/ 0x3F369F00, 0x1D000000,
+/**/ 0x3D338258, 0xC03081D0,
+/**/ 0xBF36BDFA, 0x9DFA75FE,
+/**/ 0x3F36BEFD, 0x47400000,
+/**/ 0x3D33D3D0, 0x30B1A458,
+/**/ 0xBF36DDF4, 0xEABD8651,
+/**/ 0x3F36DEFA, 0x6D800000,
+/**/ 0x3D34DB2F, 0x614A60C1,
+/**/ 0xBF36FDEF, 0x2F82BB41,
+/**/ 0x3F36FEF7, 0x8FC00000,
+/**/ 0x3D369976, 0x0D96E7B8,
+/**/ 0xBF371DE9, 0x6C4A17CF,
+/**/ 0x3F371EF4, 0xAE000000,
+/**/ 0x3D390FA3, 0xF0D38C30,
+/**/ 0xBF373DE3, 0xA1139EF8,
+/**/ 0x3F373EF1, 0xC8400000,
+/**/ 0x3D3C3EB8, 0xC5DCC397,
+/**/ 0xBF375DDD, 0xCDDF53BC,
+/**/ 0x3F375EEE, 0xDEC00000,
+/**/ 0xBD3FD84B, 0xB8D0D9FD,
+/**/ 0xBF377DD7, 0xF2AD3919,
+/**/ 0x3F377EEB, 0xF1000000,
+/**/ 0xBD3B3469, 0xD11891A0,
+/**/ 0xBF379DD2, 0x0F7D520F,
+/**/ 0x3F379EE8, 0xFF400000,
+/**/ 0xBD35D4A1, 0xC93D855B,
+/**/ 0xBF37BDCC, 0x244FA19D,
+/**/ 0x3F37BEE6, 0x09800000,
+/**/ 0xBD2F6FE7, 0xCFC56806,
+/**/ 0xBF37DDC6, 0x31242AC1,
+/**/ 0x3F37DEE3, 0x0FC00000,
+/**/ 0xBD21BAC0, 0xE815F202,
+/**/ 0xBF37FDC0, 0x35FAF079,
+/**/ 0x3F37FEE0, 0x12000000,
+/**/ 0xBCF43E7B, 0x5190C28B,
+/**/ 0xBF381DBA, 0x32D3F5C6,
+/**/ 0x3F381EDD, 0x10400000,
+/**/ 0x3D1C55D8, 0x34C1F9E9,
+/**/ 0xBF383DB4, 0x27AF3DA6,
+/**/ 0x3F383EDA, 0x0A800000,
+/**/ 0x3D302FB8, 0x8AAF36D4,
+/**/ 0xBF385DAE, 0x148CCB18,
+/**/ 0x3F385ED7, 0x00C00000,
+/**/ 0x3D3A0BDF, 0x7AE0D0F8,
+/**/ 0xBF387DA7, 0xF96CA11B,
+/**/ 0x3F387ED3, 0xF3400000,
+/**/ 0xBD3B5515, 0x6B1CDAAF,
+/**/ 0xBF389DA1, 0xD64EC2AD,
+/**/ 0x3F389ED0, 0xE1800000,
+/**/ 0xBD2FE44C, 0xE1179E5E,
+/**/ 0xBF38BD9B, 0xAB3332CD,
+/**/ 0x3F38BECD, 0xCBC00000,
+/**/ 0xBD0E529E, 0xF86F56EC,
+/**/ 0xBF38DD95, 0x7819F47A,
+/**/ 0x3F38DECA, 0xB2000000,
+/**/ 0x3D2246C3, 0xFEB631AB,
+/**/ 0xBF38FD8F, 0x3D030AB4,
+/**/ 0x3F38FEC7, 0x94400000,
+/**/ 0x3D36D7FA, 0xE04DA791,
+/**/ 0xBF391D88, 0xF9EE7878,
+/**/ 0x3F391EC4, 0x72C00000,
+/**/ 0xBD3AAB89, 0x86F7ADBB,
+/**/ 0xBF393D82, 0xAEDC40C7,
+/**/ 0x3F393EC1, 0x4D000000,
+/**/ 0xBD26CC57, 0x032C6155,
+/**/ 0xBF395D7C, 0x5BCC669D,
+/**/ 0x3F395EBE, 0x23400000,
+/**/ 0x3D12A452, 0x93C3EB3D,
+/**/ 0xBF397D76, 0x00BEECFB,
+/**/ 0x3F397EBA, 0xF5800000,
+/**/ 0x3D358336, 0xA0BCD695,
+/**/ 0xBF399D6F, 0x9DB3D6E0,
+/**/ 0x3F399EB7, 0xC4000000,
+/**/ 0xBD38D6C5, 0xDA737570,
+/**/ 0xBF39BD69, 0x32AB2749,
+/**/ 0x3F39BEB4, 0x8E400000,
+/**/ 0xBD198F84, 0x65026C7D,
+/**/ 0xBF39DD62, 0xBFA4E136,
+/**/ 0x3F39DEB1, 0x54800000,
+/**/ 0x3D29B9C9, 0x2EA9B41A,
+/**/ 0xBF39FD5C, 0x44A107A5,
+/**/ 0x3F39FEAE, 0x17000000,
+/**/ 0xBD3F1375, 0x16137ACF,
+/**/ 0xBF3A1D55, 0xC19F9D96,
+/**/ 0x3F3A1EAA, 0xD5400000,
+/**/ 0xBD2467DC, 0xDE73AFA0,
+/**/ 0xBF3A3D4F, 0x36A0A607,
+/**/ 0x3F3A3EA7, 0x8F800000,
+/**/ 0x3D26F8F0, 0x7B8357C6,
+/**/ 0xBF3A5D48, 0xA3A423F7,
+/**/ 0x3F3A5EA4, 0x46000000,
+/**/ 0xBD3E0141, 0x5DA0DFB7,
+/**/ 0xBF3A7D42, 0x08AA1A64,
+/**/ 0x3F3A7EA0, 0xF8400000,
+/**/ 0xBD1AB06E, 0x41050D29,
+/**/ 0xBF3A9D3B, 0x65B28C4E,
+/**/ 0x3F3A9E9D, 0xA6800000,
+/**/ 0x3D317CE9, 0x56A0E005,
+/**/ 0xBF3ABD34, 0xBABD7CB3,
+/**/ 0x3F3ABE9A, 0x51000000,
+/**/ 0xBD358532, 0xF899EF39,
+/**/ 0xBF3ADD2E, 0x07CAEE92,
+/**/ 0x3F3ADE96, 0xF7400000,
+/**/ 0x3D113A3C, 0xC83BF5C2,
+/**/ 0xBF3AFD27, 0x4CDAE4EA,
+/**/ 0x3F3AFE93, 0x99800000,
+/**/ 0x3D3EF92F, 0x863C7C8E,
+/**/ 0xBF3B1D20, 0x89ED62B9,
+/**/ 0x3F3B1E90, 0x38000000,
+/**/ 0xBD161149, 0x3341CC3C,
+/**/ 0xBF3B3D19, 0xBF026AFE,
+/**/ 0x3F3B3E8C, 0xD2400000,
+/**/ 0x3D36D709, 0x67C955DF,
+/**/ 0xBF3B5D12, 0xEC1A00B8,
+/**/ 0x3F3B5E89, 0x68C00000,
+/**/ 0xBD27E77B, 0x5AE9B17A,
+/**/ 0xBF3B7D0C, 0x113426E6,
+/**/ 0x3F3B7E85, 0xFB000000,
+/**/ 0x3D321C58, 0x219679DE,
+/**/ 0xBF3B9D05, 0x2E50E086,
+/**/ 0x3F3B9E82, 0x89800000,
+/**/ 0xBD2DEF6A, 0xFAA62113,
+/**/ 0xBF3BBCFE, 0x43703097,
+/**/ 0x3F3BBE7F, 0x13C00000,
+/**/ 0x3D30D119, 0x23305306,
+/**/ 0xBF3BDCF7, 0x50921A17,
+/**/ 0x3F3BDE7B, 0x9A400000,
+/**/ 0xBD2D1078, 0x9FBACE27,
+/**/ 0xBF3BFCF0, 0x55B6A006,
+/**/ 0x3F3BFE78, 0x1C800000,
+/**/ 0x3D32FD49, 0xD625DF1E,
+/**/ 0xBF3C1CE9, 0x52DDC563,
+/**/ 0x3F3C1E74, 0x9B000000,
+/**/ 0xBD253AA9, 0x7D07255B,
+/**/ 0xBF3C3CE2, 0x48078D2B,
+/**/ 0x3F3C3E71, 0x15400000,
+/**/ 0x3D38A8E7, 0x9E08B538,
+/**/ 0xBF3C5CDB, 0x3533FA5D,
+/**/ 0x3F3C5E6D, 0x8BC00000,
+/**/ 0xBD09780B, 0x45956AFC,
+/**/ 0xBF3C7CD4, 0x1A630FF9,
+/**/ 0x3F3C7E69, 0xFE400000,
+/**/ 0xBD3E2410, 0x2792F44E,
+/**/ 0xBF3C9CCC, 0xF794D0FC,
+/**/ 0x3F3C9E66, 0x6C800000,
+/**/ 0x3D1F2AEC, 0x30AB4456,
+/**/ 0xBF3CBCC5, 0xCCC94066,
+/**/ 0x3F3CBE62, 0xD7000000,
+/**/ 0xBD3161A0, 0x231641D5,
+/**/ 0xBF3CDCBE, 0x9A006135,
+/**/ 0x3F3CDE5F, 0x3D400000,
+/**/ 0x3D3657DD, 0xF4AD1934,
+/**/ 0xBF3CFCB7, 0x5F3A3668,
+/**/ 0x3F3CFE5B, 0x9FC00000,
+/**/ 0xBCF07CB0, 0x2E7AC798,
+/**/ 0xBF3D1CB0, 0x1C76C2FD,
+/**/ 0x3F3D1E57, 0xFE400000,
+/**/ 0xBD377F9B, 0x6090F643,
+/**/ 0xBF3D3CA8, 0xD1B609F3,
+/**/ 0x3F3D3E54, 0x58800000,
+/**/ 0x3D32F16C, 0x849503E6,
+/**/ 0xBF3D5CA1, 0x7EF80E49,
+/**/ 0x3F3D5E50, 0xAF000000,
+/**/ 0xBCFB3B3A, 0xAF1CA4EA,
+/**/ 0xBF3D7C9A, 0x243CD2FE,
+/**/ 0x3F3D7E4D, 0x01800000,
+/**/ 0xBD356DFC, 0x4701415B,
+/**/ 0xBF3D9C92, 0xC1845B0F,
+/**/ 0x3F3D9E49, 0x4FC00000,
+/**/ 0x3D37C392, 0x582AEA48,
+/**/ 0xBF3DBC8B, 0x56CEA97C,
+/**/ 0x3F3DBE45, 0x9A400000,
+/**/ 0x3D1787DF, 0x67DCC15E,
+/**/ 0xBF3DDC83, 0xE41BC143,
+/**/ 0x3F3DDE41, 0xE0C00000,
+/**/ 0xBD262398, 0x352F961F,
+/**/ 0xBF3DFC7C, 0x696BA563,
+/**/ 0x3F3DFE3E, 0x23400000,
+/**/ 0xBD3B16B9, 0xDEDD373A,
+/**/ 0xBF3E1C74, 0xE6BE58DA,
+/**/ 0x3F3E1E3A, 0x61800000,
+/**/ 0x3D35D42E, 0x336BE94B,
+/**/ 0xBF3E3C6D, 0x5C13DEA7,
+/**/ 0x3F3E3E36, 0x9C000000,
+/**/ 0x3D1EBFAF, 0x08A303A2,
+/**/ 0xBF3E5C65, 0xC96C39C9,
+/**/ 0x3F3E5E32, 0xD2800000,
+/**/ 0xBD160A06, 0x34856362,
+/**/ 0xBF3E7C5E, 0x2EC76D3D,
+/**/ 0x3F3E7E2F, 0x05000000,
+/**/ 0xBD31C21A, 0x154CDF1A,
+/**/ 0xBF3E9C56, 0x8C257C04,
+/**/ 0x3F3E9E2B, 0x33800000,
+/**/ 0xBD3D0DDE, 0x31941F7F,
+/**/ 0xBF3EBC4E, 0xE186691B,
+/**/ 0x3F3EBE27, 0x5DC00000,
+/**/ 0x3D389B31, 0xC26EC60D,
+/**/ 0xBF3EDC47, 0x2EEA3781,
+/**/ 0x3F3EDE23, 0x84400000,
+/**/ 0x3D2E742A, 0xD583BEF8,
+/**/ 0xBF3EFC3F, 0x7450EA34,
+/**/ 0x3F3EFE1F, 0xA6C00000,
+/**/ 0x3D1B3F31, 0xAC2DA351,
+/**/ 0xBF3F1C37, 0xB1BA8433,
+/**/ 0x3F3F1E1B, 0xC5400000,
+/**/ 0xBCE45533, 0x2DC67430,
+/**/ 0xBF3F3C2F, 0xE727087C,
+/**/ 0x3F3F3E17, 0xDFC00000,
+/**/ 0xBD1C7133, 0xFF1174AE,
+/**/ 0xBF3F5C28, 0x14967A0F,
+/**/ 0x3F3F5E13, 0xF6400000,
+/**/ 0xBD29383C, 0x4AE098DC,
+/**/ 0xBF3F7C20, 0x3A08DBE9,
+/**/ 0x3F3F7E10, 0x08C00000,
+/**/ 0xBD31211D, 0x684B0B3B,
+/**/ 0xBF3F9C18, 0x577E3109,
+/**/ 0x3F3F9E0C, 0x17400000,
+/**/ 0xBD34AA4B, 0x268D7464,
+/**/ 0xBF3FBC10, 0x6CF67C6E,
+/**/ 0x3F3FBE08, 0x21C00000,
+/**/ 0xBD3736A7, 0xBED03388,
+/**/ 0xBF3FDC08, 0x7A71C116,
+/**/ 0x3F3FDE04, 0x28400000,
+/**/ 0xBD38C533, 0x900BC4E5,
+/**/ 0xBF3FFC00, 0x7FF00200,
+/**/ 0x3F3FFE00, 0x2AC00000,
+/**/ 0xBD3954EE, 0xF9987527,
+/**/ 0xBF400DFC, 0x3EB8A115,
+/**/ 0x3F400EFE, 0x14A00000,
+/**/ 0xBD38E4DA, 0x5B2E613B,
+/**/ 0xBF401DF8, 0x397AC249,
+/**/ 0x3F401EFC, 0x11E00000,
+/**/ 0xBD3773F6, 0x14E5761B,
+/**/ 0xBF402DF4, 0x303E661C,
+/**/ 0x3F402EFA, 0x0D200000,
+/**/ 0xBD350142, 0x873570A0,
+/**/ 0xBF403DF0, 0x23038E0C,
+/**/ 0x3F403EF8, 0x06600000,
+/**/ 0xBD318BC0, 0x12F5DD53,
+/**/ 0xBF404DEC, 0x11CA3B9A,
+/**/ 0x3F404EF5, 0xFDA00000,
+/**/ 0xBD2A24DE, 0x32BC307C,
+/**/ 0xBF405DE7, 0xFC927044,
+/**/ 0x3F405EF3, 0xF2E00000,
+/**/ 0xBD1E513F, 0xF01532DA,
+/**/ 0xBF406DE3, 0xE35C2D8A,
+/**/ 0x3F406EF1, 0xE6200000,
+/**/ 0xBCF10631, 0xCE27534E,
+/**/ 0xBF407DDF, 0xC62774EA,
+/**/ 0x3F407EEF, 0xD7600000,
+/**/ 0x3D19E95C, 0x86CE9380,
+/**/ 0xBF408DDB, 0xA4F447E4,
+/**/ 0x3F408EED, 0xC6A00000,
+/**/ 0x3D2E19BC, 0xBA0CD2C3,
+/**/ 0xBF409DD7, 0x7FC2A7F8,
+/**/ 0x3F409EEB, 0xB3E00000,
+/**/ 0x3D38A832, 0x31FF7199,
+/**/ 0xBF40ADD3, 0x569296A4,
+/**/ 0x3F40AEE9, 0x9F400000,
+/**/ 0xBD3CB2AD, 0xC2D77791,
+/**/ 0xBF40BDCF, 0x29641567,
+/**/ 0x3F40BEE7, 0x88800000,
+/**/ 0xBD3102C1, 0xE5545563,
+/**/ 0xBF40CDCA, 0xF83725C2,
+/**/ 0x3F40CEE5, 0x6FC00000,
+/**/ 0xBD111C2A, 0x66B3E48D,
+/**/ 0xBF40DDC6, 0xC30BC932,
+/**/ 0x3F40DEE3, 0x55000000,
+/**/ 0x3D2302EF, 0x7711FC2A,
+/**/ 0xBF40EDC2, 0x89E20138,
+/**/ 0x3F40EEE1, 0x38400000,
+/**/ 0x3D3857C4, 0xB558238E,
+/**/ 0xBF40FDBE, 0x4CB9CF52,
+/**/ 0x3F40FEDF, 0x19A00000,
+/**/ 0xBD37C324, 0x1194C2E1,
+/**/ 0xBF410DBA, 0x0B933501,
+/**/ 0x3F410EDC, 0xF8E00000,
+/**/ 0xBD1B390B, 0xFBCAF285,
+/**/ 0xBF411DB5, 0xC66E33C2,
+/**/ 0x3F411EDA, 0xD6200000,
+/**/ 0x3D266ECF, 0x0E52C3A4,
+/**/ 0xBF412DB1, 0x7D4ACD15,
+/**/ 0x3F412ED8, 0xB1600000,
+/**/ 0x3D3E4EDB, 0x1A4AF71D,
+/**/ 0xBF413DAD, 0x30290279,
+/**/ 0x3F413ED6, 0x8AC00000,
+/**/ 0xBD2B0DD1, 0x58C4D599,
+/**/ 0xBF414DA8, 0xDF08D56E,
+/**/ 0x3F414ED4, 0x62000000,
+/**/ 0x3D1EDC6F, 0x2FB4061D,
+/**/ 0xBF415DA4, 0x89EA4773,
+/**/ 0x3F415ED2, 0x37400000,
+/**/ 0x3D3E09E8, 0x1BA53538,
+/**/ 0xBF416DA0, 0x30CD5A06,
+/**/ 0x3F416ED0, 0x0AA00000,
+/**/ 0xBD251B08, 0x4A5B4574,
+/**/ 0xBF417D9B, 0xD3B20EA8,
+/**/ 0x3F417ECD, 0xDBE00000,
+/**/ 0x3D2BE3AD, 0x4241B57B,
+/**/ 0xBF418D97, 0x729866D7,
+/**/ 0x3F418ECB, 0xAB400000,
+/**/ 0xBD387707, 0xFA22BD16,
+/**/ 0xBF419D93, 0x0D806412,
+/**/ 0x3F419EC9, 0x78800000,
+/**/ 0x3D01C6FC, 0xFFA2FC2F,
+/**/ 0xBF41AD8E, 0xA46A07D9,
+/**/ 0x3F41AEC7, 0x43C00000,
+/**/ 0x3D3E028D, 0x05F32EE8,
+/**/ 0xBF41BD8A, 0x375553AB,
+/**/ 0x3F41BEC5, 0x0D200000,
+/**/ 0xBD146400, 0xC7E46F2B,
+/**/ 0xBF41CD85, 0xC6424907,
+/**/ 0x3F41CEC2, 0xD4600000,
+/**/ 0x3D38E737, 0x8DFCE791,
+/**/ 0xBF41DD81, 0x5130E96B,
+/**/ 0x3F41DEC0, 0x99C00000,
+/**/ 0xBD1FEF30, 0x92F4A6CE,
+/**/ 0xBF41ED7C, 0xD8213659,
+/**/ 0x3F41EEBE, 0x5D000000,
+/**/ 0x3D383EF4, 0x4AE68315,
+/**/ 0xBF41FD78, 0x5B13314D,
+/**/ 0x3F41FEBC, 0x1E600000,
+/**/ 0xBD199E1E, 0x39A8276A,
+/**/ 0xBF420D73, 0xDA06DBC8,
+/**/ 0x3F420EB9, 0xDDA00000,
+/**/ 0x3D3C11BF, 0xE39F6D77,
+/**/ 0xBF421D6F, 0x54FC3749,
+/**/ 0x3F421EB7, 0x9B000000,
+/**/ 0xBCD50D72, 0xC3A8C440,
+/**/ 0xBF422D6A, 0xCBF3454F,
+/**/ 0x3F422EB5, 0x56600000,
+/**/ 0xBD3B9869, 0x06E59170,
+/**/ 0xBF423D66, 0x3EEC0759,
+/**/ 0x3F423EB3, 0x0FA00000,
+/**/ 0x3D248C4B, 0x86930551,
+/**/ 0xBF424D61, 0xADE67EE6,
+/**/ 0x3F424EB0, 0xC7000000,
+/**/ 0xBD2D6F13, 0xB3649FF7,
+/**/ 0xBF425D5D, 0x18E2AD76,
+/**/ 0x3F425EAE, 0x7C400000,
+/**/ 0x3D396F87, 0xB496441D,
+/**/ 0xBF426D58, 0x7FE09487,
+/**/ 0x3F426EAC, 0x2FA00000,
+/**/ 0x3D05E2D0, 0x01961A2F,
+/**/ 0xBF427D53, 0xE2E03598,
+/**/ 0x3F427EA9, 0xE1000000,
+/**/ 0xBD32D013, 0x652D1720,
+/**/ 0xBF428D4F, 0x41E1922A,
+/**/ 0x3F428EA7, 0x90400000,
+/**/ 0x3D38CB3F, 0x15C6A78A,
+/**/ 0xBF429D4A, 0x9CE4ABBA,
+/**/ 0x3F429EA5, 0x3DA00000,
+/**/ 0x3D163D44, 0x07F8A52A,
+/**/ 0xBF42AD45, 0xF3E983C8,
+/**/ 0x3F42AEA2, 0xE9000000,
+/**/ 0xBD2905BC, 0x1FEC6070,
+/**/ 0xBF42BD41, 0x46F01BD4,
+/**/ 0x3F42BEA0, 0x92600000,
+/**/ 0xBD3D6A4E, 0x8FE5CB8E,
+/**/ 0xBF42CD3C, 0x95F8755C,
+/**/ 0x3F42CE9E, 0x39A00000,
+/**/ 0x3D32D9FF, 0x120028B6,
+/**/ 0xBF42DD37, 0xE10291DF,
+/**/ 0x3F42DE9B, 0xDF000000,
+/**/ 0x3D112C29, 0x94B2D8A6,
+/**/ 0xBF42ED33, 0x280E72DD,
+/**/ 0x3F42EE99, 0x82600000,
+/**/ 0xBD222C5A, 0x0E9DC27F,
+/**/ 0xBF42FD2E, 0x6B1C19D4,
+/**/ 0x3F42FE97, 0x23C00000,
+/**/ 0xBD3548A7, 0xA4C12307,
+/**/ 0xBF430D29, 0xAA2B8844,
+/**/ 0x3F430E94, 0xC3000000,
+/**/ 0x3D3FB49A, 0x1B27A40C,
+/**/ 0xBF431D24, 0xE53CBFAC,
+/**/ 0x3F431E92, 0x60600000,
+/**/ 0x3D35E297, 0xC65D601D,
+/**/ 0xBF432D20, 0x1C4FC18B,
+/**/ 0x3F432E8F, 0xFBC00000,
+/**/ 0x3D2A84A1, 0xD4E46CD5,
+/**/ 0xBF433D1B, 0x4F648F60,
+/**/ 0x3F433E8D, 0x95200000,
+/**/ 0x3D175314, 0x526215F8,
+/**/ 0xBF434D16, 0x7E7B2AAB,
+/**/ 0x3F434E8B, 0x2C800000,
+/**/ 0xBCD9430B, 0x9746A94C,
+/**/ 0xBF435D11, 0xA99394E9,
+/**/ 0x3F435E88, 0xC1E00000,
+/**/ 0xBD15A88D, 0x47EF6144,
+/**/ 0xBF436D0C, 0xD0ADCF9B,
+/**/ 0x3F436E86, 0x55400000,
+/**/ 0xBD227301, 0x94614FFB,
+/**/ 0xBF437D07, 0xF3C9DC3F,
+/**/ 0x3F437E83, 0xE6A00000,
+/**/ 0xBD27A44A, 0x16908831,
+/**/ 0xBF438D03, 0x12E7BC55,
+/**/ 0x3F438E81, 0x76000000,
+/**/ 0xBD2A6621, 0x13DE59AC,
+/**/ 0xBF439CFE, 0x2E07715C,
+/**/ 0x3F439E7F, 0x03600000,
+/**/ 0xBD2AB687, 0x76635000,
+/**/ 0xBF43ACF9, 0x4528FCD2,
+/**/ 0x3F43AE7C, 0x8EC00000,
+/**/ 0xBD28937E, 0x28F7818F,
+/**/ 0xBF43BCF4, 0x584C6037,
+/**/ 0x3F43BE7A, 0x18200000,
+/**/ 0xBD23FB06, 0x17328F27,
+/**/ 0xBF43CCEF, 0x67719D0A,
+/**/ 0x3F43CE77, 0x9F800000,
+/**/ 0xBD19D640, 0x5AD74747,
+/**/ 0xBF43DCEA, 0x7298B4CA,
+/**/ 0x3F43DE75, 0x24E00000,
+/**/ 0xBCFB0E6A, 0xC5CB9C74,
+/**/ 0xBF43ECE5, 0x79C1A8F6,
+/**/ 0x3F43EE72, 0xA8400000,
+/**/ 0x3D1145E2, 0xF21B8682,
+/**/ 0xBF43FCE0, 0x7CEC7B0D,
+/**/ 0x3F43FE70, 0x29A00000,
+/**/ 0x3D27251B, 0x59543A06,
+/**/ 0xBF440CDB, 0x7C192C8E,
+/**/ 0x3F440E6D, 0xA9000000,
+/**/ 0x3D341357, 0xAC6250B6,
+/**/ 0xBF441CD6, 0x7747BEF8,
+/**/ 0x3F441E6B, 0x26600000,
+/**/ 0x3D3DD4D6, 0x43A510F7,
+/**/ 0xBF442CD1, 0x6E7833CB,
+/**/ 0x3F442E68, 0xA1E00000,
+/**/ 0xBD3727F7, 0x05F7D1E1,
+/**/ 0xBF443CCC, 0x61AA8C85,
+/**/ 0x3F443E66, 0x1B400000,
+/**/ 0xBD25C421, 0x527C9668,
+/**/ 0xBF444CC7, 0x50DECAA5,
+/**/ 0x3F444E63, 0x92A00000,
+/**/ 0x3D053C47, 0x053F70AC,
+/**/ 0xBF445CC2, 0x3C14EFAB,
+/**/ 0x3F445E61, 0x08000000,
+/**/ 0x3D3175D5, 0x1E315FBB,
+/**/ 0xBF446CBD, 0x234CFD15,
+/**/ 0x3F446E5E, 0x7B800000,
+/**/ 0xBD3E762C, 0x6A8B33AC,
+/**/ 0xBF447CB8, 0x0686F463,
+/**/ 0x3F447E5B, 0xECE00000,
+/**/ 0xBD2A36F8, 0x67AD9900,
+/**/ 0xBF448CB2, 0xE5C2D713,
+/**/ 0x3F448E59, 0x5C400000,
+/**/ 0x3D161B95, 0x1E974853,
+/**/ 0xBF449CAD, 0xC100A6A5,
+/**/ 0x3F449E56, 0xC9A00000,
+/**/ 0x3D3971F7, 0x8CE22250,
+/**/ 0xBF44ACA8, 0x98406498,
+/**/ 0x3F44AE54, 0x35200000,
+/**/ 0xBD315945, 0xDF8A23F8,
+/**/ 0xBF44BCA3, 0x6B82126A,
+/**/ 0x3F44BE51, 0x9E800000,
+/**/ 0x3D1498B2, 0x1A63D360,
+/**/ 0xBF44CC9E, 0x3AC5B19B,
+/**/ 0x3F44CE4F, 0x05E00000,
+/**/ 0x3D3CF14E, 0x4323A054,
+/**/ 0xBF44DC99, 0x060B43AA,
+/**/ 0x3F44DE4C, 0x6B600000,
+/**/ 0xBD23EDC2, 0x4CE35F94,
+/**/ 0xBF44EC93, 0xCD52CA15,
+/**/ 0x3F44EE49, 0xCEC00000,
+/**/ 0x3D306E9D, 0xCCF1B48E,
+/**/ 0xBF44FC8E, 0x909C465C,
+/**/ 0x3F44FE47, 0x30400000,
+/**/ 0xBD33DD35, 0x5FF9440B,
+/**/ 0xBF450C89, 0x4FE7B9FF,
+/**/ 0x3F450E44, 0x8FA00000,
+/**/ 0x3D224D49, 0xAA4D276D,
+/**/ 0xBF451C84, 0x0B35267A,
+/**/ 0x3F451E41, 0xED200000,
+/**/ 0xBD3884D4, 0x11B557F9,
+/**/ 0xBF452C7E, 0xC2848D4F,
+/**/ 0x3F452E3F, 0x48800000,
+/**/ 0x3D1C857D, 0xB43290C4,
+/**/ 0xBF453C79, 0x75D5EFFC,
+/**/ 0x3F453E3C, 0xA2000000,
+/**/ 0xBD37E5C1, 0x2D598D3C,
+/**/ 0xBF454C74, 0x25294FFF,
+/**/ 0x3F454E39, 0xF9600000,
+/**/ 0x3D24CD93, 0x3FE47B89,
+/**/ 0xBF455C6E, 0xD07EAED8,
+/**/ 0x3F455E37, 0x4EE00000,
+/**/ 0xBD31F800, 0xAA959122,
+/**/ 0xBF456C69, 0x77D60E06,
+/**/ 0x3F456E34, 0xA2400000,
+/**/ 0x3D32FEDF, 0x7329AF92,
+/**/ 0xBF457C64, 0x1B2F6F08,
+/**/ 0x3F457E31, 0xF3C00000,
+/**/ 0xBD1ACE5A, 0x1C545A6F,
+/**/ 0xBF458C5E, 0xBA8AD35D,
+/**/ 0x3F458E2F, 0x43400000,
+/**/ 0xBD3F0E63, 0x19F6B9EF,
+/**/ 0xBF459C59, 0x55E83C84,
+/**/ 0x3F459E2C, 0x90A00000,
+/**/ 0x3D23DEF2, 0x73005F6F,
+/**/ 0xBF45AC53, 0xED47ABFB,
+/**/ 0x3F45AE29, 0xDC200000,
+/**/ 0xBD277204, 0x1C295DE7,
+/**/ 0xBF45BC4E, 0x80A92343,
+/**/ 0x3F45BE27, 0x25800000,
+/**/ 0x3D3FF92A, 0x8D869589,
+/**/ 0xBF45CC49, 0x100CA3D9,
+/**/ 0x3F45CE24, 0x6D000000,
+/**/ 0x3D2A0DFD, 0x145C5335,
+/**/ 0xBF45DC43, 0x9B722F3C,
+/**/ 0x3F45DE21, 0xB2800000,
+/**/ 0xBD123A1A, 0x6A8614B3,
+/**/ 0xBF45EC3E, 0x22D9C6ED,
+/**/ 0x3F45EE1E, 0xF6000000,
+/**/ 0xBD34C665, 0x63CBC7E7,
+/**/ 0xBF45FC38, 0xA6436C69,
+/**/ 0x3F45FE1C, 0x37600000,
+/**/ 0x3D3C6061, 0xAB6C51D7,
+/**/ 0xBF460C33, 0x25AF2130,
+/**/ 0x3F460E19, 0x76E00000,
+/**/ 0x3D2DCD9C, 0x1EC7F453,
+/**/ 0xBF461C2D, 0xA11CE6C1,
+/**/ 0x3F461E16, 0xB4600000,
+/**/ 0x3D066EFA, 0x20C52899,
+/**/ 0xBF462C28, 0x188CBE9A,
+/**/ 0x3F462E13, 0xEFE00000,
+/**/ 0xBD1FA5AC, 0xEB5FDD5C,
+/**/ 0xBF463C22, 0x8BFEAA3B,
+/**/ 0x3F463E11, 0x29600000,
+/**/ 0xBD313E11, 0xF22FE2BC,
+/**/ 0xBF464C1C, 0xFB72AB23,
+/**/ 0x3F464E0E, 0x60E00000,
+/**/ 0xBD392F15, 0x6710E251,
+/**/ 0xBF465C17, 0x66E8C2D0,
+/**/ 0x3F465E0B, 0x96600000,
+/**/ 0xBD3FBB76, 0x1EFC78A7,
+/**/ 0xBF466C11, 0xCE60F2C1,
+/**/ 0x3F466E08, 0xC9C00000,
+/**/ 0x3D3B1DCB, 0x602C1A84,
+/**/ 0xBF467C0C, 0x31DB3C76,
+/**/ 0x3F467E05, 0xFB400000,
+/**/ 0x3D375DAE, 0x9027DA74,
+/**/ 0xBF468C06, 0x9157A16E,
+/**/ 0x3F468E03, 0x2AC00000,
+/**/ 0x3D350532, 0xEA560DA0,
+/**/ 0xBF469C00, 0xECD62326,
+/**/ 0x3F469E00, 0x58400000,
+/**/ 0x3D341557, 0xE7B63DE2 } };
+
+#else
+#ifdef LITTLE_ENDI
+static const union {int4 i[5800]; double x[2900];} ui = { .i = {
+/**/ 0x00000000, 0x3FF6A000,
+/**/ 0x3729043E, 0x3F33CD15,
+/**/ 0x0B3AB000, 0xBFD63003,
+/**/ 0xE731AE00, 0x3D2DB623,
+/**/ 0x00000000, 0x3FF69800,
+/**/ 0xCC7267D0, 0x3F33F349,
+/**/ 0xCDB03000, 0xBFD61965,
+/**/ 0x603C488E, 0x3D2F08AD,
+/**/ 0x00000000, 0x3FF69000,
+/**/ 0x8D0BFD2E, 0x3F3473A8,
+/**/ 0x8AF09000, 0xBFD602D0,
+/**/ 0x76DF3F65, 0xBD1EBE91,
+/**/ 0x00000000, 0x3FF68800,
+/**/ 0x390B9ED0, 0x3F354DD2,
+/**/ 0x3D5C3000, 0xBFD5EC43,
+/**/ 0x1229D17F, 0xBD36B71A,
+/**/ 0x00000000, 0x3FF68000,
+/**/ 0x16816817, 0x3F368168,
+/**/ 0xDF596000, 0xBFD5D5BD,
+/**/ 0x08A465DC, 0x3D0A0B2A,
+/**/ 0x00000000, 0x3FF67800,
+/**/ 0xF08C7765, 0x3F380E0B,
+/**/ 0x6B544000, 0xBFD5BF40,
+/**/ 0xEB68981C, 0x3D227023,
+/**/ 0x00000000, 0x3FF67000,
+/**/ 0x16719F36, 0x3F39F360,
+/**/ 0xDBBEE000, 0xBFD5A8CA,
+/**/ 0x0AF7ECF8, 0x3CF7C79B,
+/**/ 0x00000000, 0x3FF66800,
+/**/ 0x5AB40167, 0x3F3C3107,
+/**/ 0x2B113000, 0xBFD5925D,
+/**/ 0xA7A56F34, 0x3D369BF5,
+/**/ 0x00000000, 0x3FF66000,
+/**/ 0x122F9016, 0x3F3EC6A5,
+/**/ 0x53C8D000, 0xBFD57BF7,
+/**/ 0xEE5D40EF, 0xBD1FADED,
+/**/ 0x00000000, 0x3FF65C00,
+/**/ 0xECCA9097, 0xBF3E4C22,
+/**/ 0x50695000, 0xBFD56599,
+/**/ 0x2BADC774, 0xBD14C5FD,
+/**/ 0x00000000, 0x3FF65400,
+/**/ 0x4B55CC62, 0xBF3B07AC,
+/**/ 0x1B7BE000, 0xBFD54F43,
+/**/ 0xC0910952, 0xBD1A8954,
+/**/ 0x00000000, 0x3FF64C00,
+/**/ 0x32DA090E, 0xBF376C52,
+/**/ 0xAF8F7000, 0xBFD538F4,
+/**/ 0xE45547CE, 0xBD27EC02,
+/**/ 0x00000000, 0x3FF64400,
+/**/ 0x4DE9BD38, 0xBF337A6F,
+/**/ 0x0738A000, 0xBFD522AE,
+/**/ 0x8164C759, 0xBD2EBE70,
+/**/ 0x00000000, 0x3FF63C00,
+/**/ 0x923C708B, 0xBF2E64BB,
+/**/ 0x1D11C000, 0xBFD50C6F,
+/**/ 0x7E827C2C, 0x3D3A0E6B,
+/**/ 0x00000000, 0x3FF63400,
+/**/ 0xA7E43FD4, 0xBF2528EE,
+/**/ 0xEBBAA000, 0xBFD4F637,
+/**/ 0xCB3124B9, 0x3D3FC158,
+/**/ 0x00000000, 0x3FF62C00,
+/**/ 0x86689DF7, 0xBF168454,
+/**/ 0x6DD8C000, 0xBFD4E008,
+/**/ 0xA1E44788, 0x3D34D692,
+/**/ 0x00000000, 0x3FF62400,
+/**/ 0x77016240, 0xBED623FA,
+/**/ 0x9E173000, 0xBFD4C9E0,
+/**/ 0x1B0AD8A4, 0x3D2E2089,
+/**/ 0x00000000, 0x3FF61C00,
+/**/ 0x58715130, 0x3F151300,
+/**/ 0x77268000, 0xBFD4B3C0,
+/**/ 0x81052B9F, 0x3D165B46,
+/**/ 0x00000000, 0x3FF61400,
+/**/ 0x35D2754E, 0x3F266D06,
+/**/ 0xF3BCC000, 0xBFD49DA7,
+/**/ 0x4DAF4B9A, 0xBD307B33,
+/**/ 0x00000000, 0x3FF60C00,
+/**/ 0xDA197F23, 0x3F317C61,
+/**/ 0x0E958000, 0xBFD48797,
+/**/ 0x465CF25F, 0xBD3DC1B8,
+/**/ 0x00000000, 0x3FF60400,
+/**/ 0x81605816, 0x3F381605,
+/**/ 0xC271C000, 0xBFD4718D,
+/**/ 0xFB4C14C5, 0xBD306C18,
+/**/ 0x00000000, 0x3FF5FC00,
+/**/ 0xB5C6F559, 0x3F3F0317,
+/**/ 0x0A17E000, 0xBFD45B8C,
+/**/ 0xE7D0A853, 0x3D0D9120,
+/**/ 0x00000000, 0x3FF5F800,
+/**/ 0x6D2041E3, 0xBF39BCBD,
+/**/ 0xE053A000, 0xBFD44591,
+/**/ 0x92923D88, 0x3D06E958,
+/**/ 0x00000000, 0x3FF5F000,
+/**/ 0x5604CC40, 0xBF3229CF,
+/**/ 0x3FF62000, 0xBFD42F9F,
+/**/ 0x0F7D3354, 0xBD390644,
+/**/ 0x00000000, 0x3FF5E800,
+/**/ 0xFD431489, 0xBF2488E5,
+/**/ 0x23D5F000, 0xBFD419B4,
+/**/ 0x226DE3EC, 0x3D3CE379,
+/**/ 0x00000000, 0x3FF5E000,
+/**/ 0x6424E9C9, 0xBF0067E7,
+/**/ 0x86CEA000, 0xBFD403D0,
+/**/ 0x74487308, 0xBD3E6EF5,
+/**/ 0x00000000, 0x3FF5D800,
+/**/ 0x38A94D24, 0x3F19F0FB,
+/**/ 0x63C17000, 0xBFD3EDF4,
+/**/ 0x297F2C3F, 0x3D3F067C,
+/**/ 0x00000000, 0x3FF5D000,
+/**/ 0x23CAD2AA, 0x3F2EADD9,
+/**/ 0xB5947000, 0xBFD3D81F,
+/**/ 0x2A9D37A4, 0x3D222C7C,
+/**/ 0x00000000, 0x3FF5C800,
+/**/ 0x31057262, 0x3F3882B9,
+/**/ 0x77333000, 0xBFD3C252,
+/**/ 0xB606BD5C, 0xBD183B54,
+/**/ 0x00000000, 0x3FF5C400,
+/**/ 0x10FFA8F8, 0xBF3E00AE,
+/**/ 0xA38E6000, 0xBFD3AC8C,
+/**/ 0xBC02BE4A, 0x3D2D0BEF,
+/**/ 0x00000000, 0x3FF5BC00,
+/**/ 0x8056EAF3, 0xBF34339B,
+/**/ 0x359BC000, 0xBFD396CE,
+/**/ 0x5663663D, 0x3D05839C,
+/**/ 0x00000000, 0x3FF5B400,
+/**/ 0xF31D7FD5, 0xBF242CC1,
+/**/ 0x28565000, 0xBFD38117,
+/**/ 0x93A0702B, 0x3D2A71E4,
+/**/ 0x00000000, 0x3FF5AC00,
+/**/ 0x6B015AC0, 0x3ED5AC05,
+/**/ 0x76BE1000, 0xBFD36B67,
+/**/ 0xB0F177C8, 0xBD116ECD,
+/**/ 0x00000000, 0x3FF5A400,
+/**/ 0x5BA55E5A, 0x3F26268D,
+/**/ 0x1BD83000, 0xBFD355BF,
+/**/ 0x8964F0E8, 0x3D2BA99B,
+/**/ 0x00000000, 0x3FF59C00,
+/**/ 0x3CCAA376, 0x3F361F12,
+/**/ 0x12AED000, 0xBFD3401E,
+/**/ 0x556E291D, 0x3D317C73,
+/**/ 0x00000000, 0x3FF59800,
+/**/ 0x62D32417, 0xBF3E863D,
+/**/ 0x56512000, 0xBFD32A84,
+/**/ 0x139AF5D6, 0xBD04F928,
+/**/ 0x00000000, 0x3FF59000,
+/**/ 0xEA712DCF, 0xBF32DCF7,
+/**/ 0xE1D36000, 0xBFD314F1,
+/**/ 0xD3213CB8, 0x3D28E27A,
+/**/ 0x00000000, 0x3FF58800,
+/**/ 0xA0CC87E8, 0xBF1B95B2,
+/**/ 0xB04EB000, 0xBFD2FF66,
+/**/ 0x541E6E2E, 0x3D38AED2,
+/**/ 0x00000000, 0x3FF58000,
+/**/ 0x01580560, 0x3F158056,
+/**/ 0xBCE12000, 0xBFD2E9E2,
+/**/ 0x128D1DC2, 0xBD24300C,
+/**/ 0x00000000, 0x3FF57800,
+/**/ 0x15791F34, 0x3F31F340,
+/**/ 0x02ADD000, 0xBFD2D466,
+/**/ 0xDCD54196, 0x3D288D0D,
+/**/ 0x00000000, 0x3FF57000,
+/**/ 0x06B39A23, 0x3F3ED3C5,
+/**/ 0x7CDC9000, 0xBFD2BEF0,
+/**/ 0x4A5004F4, 0xBD2A9CFA,
+/**/ 0x00000000, 0x3FF56C00,
+/**/ 0x53FEA954, 0xBF33FEA9,
+/**/ 0x269A4000, 0xBFD2A982,
+/**/ 0x557285CF, 0x3D22058E,
+/**/ 0x00000000, 0x3FF56400,
+/**/ 0xEB478503, 0xBF1A1160,
+/**/ 0xFB187000, 0xBFD2941A,
+/**/ 0xB730E28B, 0x3D3210C2,
+/**/ 0x00000000, 0x3FF55C00,
+/**/ 0xE4A18B2E, 0x3F1D09AD,
+/**/ 0xF58D9000, 0xBFD27EBA,
+/**/ 0x00B4BDA7, 0x3D2B1988,
+/**/ 0x00000000, 0x3FF55400,
+/**/ 0x55555555, 0x3F355555,
+/**/ 0x1134E000, 0xBFD26962,
+/**/ 0x10522625, 0x3D31B61F,
+/**/ 0x00000000, 0x3FF55000,
+/**/ 0xB319A21F, 0xBF3C4BE6,
+/**/ 0x494E5000, 0xBFD25410,
+/**/ 0xC0EF77F2, 0xBD3B1D7A,
+/**/ 0x00000000, 0x3FF54800,
+/**/ 0x8FA03FD5, 0xBF2B4328,
+/**/ 0x991EC000, 0xBFD23EC5,
+/**/ 0x48A2E522, 0x3D36DBE4,
+/**/ 0x00000000, 0x3FF54000,
+/**/ 0x40154015, 0x3EF54015,
+/**/ 0xFBEF8000, 0xBFD22981,
+/**/ 0x609580DA, 0x3D3A1421,
+/**/ 0x00000000, 0x3FF53800,
+/**/ 0x40FEAC6F, 0x3F30948F,
+/**/ 0x6D0EC000, 0xBFD21445,
+/**/ 0x28B728A3, 0x3D3CAF04,
+/**/ 0x00000000, 0x3FF53400,
+/**/ 0xFD04F7B8, 0xBF3FE034,
+/**/ 0xE7CF4000, 0xBFD1FF0F,
+/**/ 0x513FF0C1, 0xBD3E9D5B,
+/**/ 0x00000000, 0x3FF52C00,
+/**/ 0x7FAB5403, 0xBF300A95,
+/**/ 0x6788A000, 0xBFD1E9E1,
+/**/ 0xD3C8B65E, 0x3D382EAE,
+/**/ 0x00000000, 0x3FF52400,
+/**/ 0x52401524, 0x3EB52401,
+/**/ 0xE796C000, 0xBFD1D4B9,
+/**/ 0x7C42E56D, 0xBD222A66,
+/**/ 0x00000000, 0x3FF51C00,
+/**/ 0x2F8151D0, 0x3F307EAE,
+/**/ 0x635A7000, 0xBFD1BF99,
+/**/ 0x575C2125, 0x3D31AC89,
+/**/ 0x00000000, 0x3FF51800,
+/**/ 0xEAE9ECE4, 0xBF3ECE3F,
+/**/ 0xD638D000, 0xBFD1AA7F,
+/**/ 0x9616F7A0, 0xBD29F60A,
+/**/ 0x00000000, 0x3FF51000,
+/**/ 0xC7675243, 0xBF2BA3DD,
+/**/ 0x3B9BC000, 0xBFD1956D,
+/**/ 0x3AD1AA14, 0xBD27D2F7,
+/**/ 0x00000000, 0x3FF50800,
+/**/ 0x764E368D, 0x3F0B9AC8,
+/**/ 0x8EF19000, 0xBFD18061,
+/**/ 0xC86D38E5, 0x3D3482FF,
+/**/ 0x00000000, 0x3FF50000,
+/**/ 0x15015015, 0x3F350150,
+/**/ 0xCBAD0000, 0xBFD16B5C,
+/**/ 0x042D74BF, 0x3D323299,
+/**/ 0x00000000, 0x3FF4FC00,
+/**/ 0x4A683C50, 0xBF392851,
+/**/ 0xED456000, 0xBFD1565E,
+/**/ 0xFB6ABA25, 0x3CEE75AD,
+/**/ 0x00000000, 0x3FF4F400,
+/**/ 0xACD95EF0, 0xBF1C2748,
+/**/ 0xEF367000, 0xBFD14167,
+/**/ 0x824DAAF5, 0xBD3E0C07,
+/**/ 0x00000000, 0x3FF4EC00,
+/**/ 0x67A47465, 0x3F26B90D,
+/**/ 0xCD007000, 0xBFD12C77,
+/**/ 0x8A11F797, 0xBD13B294,
+/**/ 0x00000000, 0x3FF4E400,
+/**/ 0xF0539783, 0x3F3E0A72,
+/**/ 0x8227E000, 0xBFD1178E,
+/**/ 0xCE2D07F2, 0xBD31EF78,
+/**/ 0x00000000, 0x3FF4E000,
+/**/ 0xF87FD642, 0xBF2E00A6,
+/**/ 0x0A35D000, 0xBFD102AC,
+/**/ 0xDFDFD686, 0x3D2F1FBD,
+/**/ 0x00000000, 0x3FF4D800,
+/**/ 0x0B12E3FD, 0x3F10EFB7,
+/**/ 0x60B78000, 0xBFD0EDD0,
+/**/ 0x2D8435F5, 0xBD0019B5,
+/**/ 0x00000000, 0x3FF4D000,
+/**/ 0x5CB4DBE5, 0x3F37BEF1,
+/**/ 0x813EB000, 0xBFD0D8FB,
+/**/ 0x8753FA35, 0xBD1EE8C8,
+/**/ 0x00000000, 0x3FF4CC00,
+/**/ 0xA50918B1, 0xBF34778D,
+/**/ 0x67616000, 0xBFD0C42D,
+/**/ 0x163CEAE9, 0xBD27188B,
+/**/ 0x00000000, 0x3FF4C400,
+/**/ 0xE37288EC, 0xBED9F4F7,
+/**/ 0x0EB9E000, 0xBFD0AF66,
+/**/ 0xF528D80A, 0xBD23C7C3,
+/**/ 0x00000000, 0x3FF4BC00,
+/**/ 0x68FE0E42, 0x3F33EDDA,
+/**/ 0x72E6C000, 0xBFD09AA5,
+/**/ 0xE1734342, 0xBD3B50A1,
+/**/ 0x00000000, 0x3FF4B800,
+/**/ 0xB72E47D9, 0xBF3776C6,
+/**/ 0x8F8AE000, 0xBFD085EB,
+/**/ 0x3F45FE7B, 0xBD3E5D51,
+/**/ 0x00000000, 0x3FF4B000,
+/**/ 0xA052BF5B, 0xBF04AFD6,
+/**/ 0x604D6000, 0xBFD07138,
+/**/ 0x4E912B17, 0x3D3E7632,
+/**/ 0x00000000, 0x3FF4A800,
+/**/ 0xD5B5C015, 0x3F328FFA,
+/**/ 0xE0D96000, 0xBFD05C8B,
+/**/ 0xC77CCB58, 0xBD2AD0F1,
+/**/ 0x00000000, 0x3FF4A400,
+/**/ 0x9FEB5D80, 0xBF380528,
+/**/ 0x0CDE8000, 0xBFD047E6,
+/**/ 0x0D397F3C, 0xBD2DBDF1,
+/**/ 0x00000000, 0x3FF49C00,
+/**/ 0x25FF5B21, 0xBF02AD3E,
+/**/ 0xE0106000, 0xBFD03346,
+/**/ 0xA966395C, 0xBCF89FF8,
+/**/ 0x00000000, 0x3FF49400,
+/**/ 0x2D066EA2, 0x3F339E3B,
+/**/ 0x5626C000, 0xBFD01EAE,
+/**/ 0xFADE85AE, 0xBD3A43DC,
+/**/ 0x00000000, 0x3FF49000,
+/**/ 0xAFB2E932, 0xBF3629C1,
+/**/ 0x6ADDA000, 0xBFD00A1C,
+/**/ 0x688B9E18, 0xBD31CD8D,
+/**/ 0x00000000, 0x3FF48800,
+/**/ 0x22014880, 0x3ED48805,
+/**/ 0x33EA0000, 0xBFCFEB22,
+/**/ 0xDE00938B, 0xBD2F3418,
+/**/ 0x00000000, 0x3FF48000,
+/**/ 0x3D324D89, 0x3F37119F,
+/**/ 0xBE620000, 0xBFCFC218,
+/**/ 0x6F1CF6A0, 0xBD34BBA4,
+/**/ 0x00000000, 0x3FF47C00,
+/**/ 0x1EB851EC, 0xBF31EB85,
+/**/ 0x6CB3C000, 0xBFCF991C,
+/**/ 0xCD7CC834, 0x3D390D04,
+/**/ 0x00000000, 0x3FF47400,
+/**/ 0xAAFC7C01, 0x3F1569C9,
+/**/ 0x36778000, 0xBFCF702D,
+/**/ 0x16673E23, 0x3D108195,
+/**/ 0x00000000, 0x3FF46C00,
+/**/ 0x96066250, 0x3F3CE345,
+/**/ 0x134E0000, 0xBFCF474B,
+/**/ 0xF1DF7B5E, 0x3D3BAE49,
+/**/ 0x00000000, 0x3FF46800,
+/**/ 0x1D02DE87, 0xBF26A297,
+/**/ 0xFADFA000, 0xBFCF1E75,
+/**/ 0x25D83F6D, 0x3D20862B,
+/**/ 0x00000000, 0x3FF46000,
+/**/ 0xB9F34381, 0x3F2978FE,
+/**/ 0xE4DD0000, 0xBFCEF5AD,
+/**/ 0x65BB8E11, 0x3CCA2115,
+/**/ 0x00000000, 0x3FF45C00,
+/**/ 0xF6C71366, 0xBF3AF398,
+/**/ 0xC8FEA000, 0xBFCECCF2,
+/**/ 0xA3E75640, 0x3D3BEC63,
+/**/ 0x00000000, 0x3FF45400,
+/**/ 0x449AFF5D, 0xBF030E9C,
+/**/ 0x9F04A000, 0xBFCEA444,
+/**/ 0x63732A36, 0xBD35E916,
+/**/ 0x00000000, 0x3FF44C00,
+/**/ 0xF8B42EF3, 0x3F367190,
+/**/ 0x5EB78000, 0xBFCE7BA3,
+/**/ 0x23793649, 0x3D0D5EEE,
+/**/ 0x00000000, 0x3FF44800,
+/**/ 0xD260511C, 0xBF3079A9,
+/**/ 0xFFE72000, 0xBFCE530E,
+/**/ 0xB13F7C18, 0x3D3FDBDB,
+/**/ 0x00000000, 0x3FF44000,
+/**/ 0x0B644FBE, 0x3F21B87C,
+/**/ 0x7A6B2000, 0xBFCE2A87,
+/**/ 0x7787081A, 0xBD382381,
+/**/ 0x00000000, 0x3FF43C00,
+/**/ 0x411B2E25, 0xBF3D8CF5,
+/**/ 0xC6236000, 0xBFCE020C,
+/**/ 0xADB91424, 0x3D252B00,
+/**/ 0x00000000, 0x3FF43400,
+/**/ 0xD6A60978, 0xBF0DAC08,
+/**/ 0xDAF6E000, 0xBFCDD99E,
+/**/ 0x69C756EB, 0x3D302EC6,
+/**/ 0x00000000, 0x3FF42C00,
+/**/ 0x51F86EFA, 0x3F36625D,
+/**/ 0xB0D48000, 0xBFCDB13D,
+/**/ 0x847527E6, 0xBD32806A,
+/**/ 0x00000000, 0x3FF42800,
+/**/ 0xA8766564, 0xBF2E8B2D,
+/**/ 0x3FB30000, 0xBFCD88E9,
+/**/ 0x0234BF51, 0x3D375F28,
+/**/ 0x00000000, 0x3FF42000,
+/**/ 0xCB2A247B, 0x3F26A4CB,
+/**/ 0x7F904000, 0xBFCD60A1,
+/**/ 0x6FC20D39, 0x3D35D6E0,
+/**/ 0x00000000, 0x3FF41C00,
+/**/ 0xC17DF552, 0xBF39D5E8,
+/**/ 0x68720000, 0xBFCD3866,
+/**/ 0xB38932BC, 0x3D373650,
+/**/ 0x00000000, 0x3FF41400,
+/**/ 0x14141414, 0x3EF41414,
+/**/ 0xF2656000, 0xBFCD1037,
+/**/ 0x75B6F6E4, 0x3D084A7E,
+/**/ 0x00000000, 0x3FF40C00,
+/**/ 0x43AE87FD, 0x3F3C97A8,
+/**/ 0x157F2000, 0xBFCCE816,
+/**/ 0xA2099515, 0x3D29E0AB,
+/**/ 0x00000000, 0x3FF40800,
+/**/ 0x66A67E6F, 0xBF1F4BBC,
+/**/ 0xC9DB4000, 0xBFCCC000,
+/**/ 0x5D57AFF9, 0x3D1D6D58,
+/**/ 0x00000000, 0x3FF40000,
+/**/ 0x14014014, 0x3F340140,
+/**/ 0x079D4000, 0xBFCC97F8,
+/**/ 0xA8C6E6C5, 0xBD23B161,
+/**/ 0x00000000, 0x3FF3FC00,
+/**/ 0xFD809FD8, 0xBF2FD809,
+/**/ 0xC6F00000, 0xBFCC6FFB,
+/**/ 0xD3A69D43, 0xBD3EE138,
+/**/ 0x00000000, 0x3FF3F400,
+/**/ 0x57EE89D2, 0x3F28CA0E,
+/**/ 0x0005C000, 0xBFCC480C,
+/**/ 0xD5E44E76, 0xBD39A294,
+/**/ 0x00000000, 0x3FF3F000,
+/**/ 0xA50F9260, 0xBF370BD5,
+/**/ 0xAB180000, 0xBFCC2028,
+/**/ 0xE55C7AC6, 0x3D292E0E,
+/**/ 0x00000000, 0x3FF3E800,
+/**/ 0x75945FCE, 0x3F1704AA,
+/**/ 0xC0676000, 0xBFCBF851,
+/**/ 0x4C0854AD, 0x3D35420E,
+/**/ 0x00000000, 0x3FF3E400,
+/**/ 0xB56FD83C, 0xBF3D3431,
+/**/ 0x383BE000, 0xBFCBD087,
+/**/ 0x595412B6, 0x3D2D4BC4,
+/**/ 0x00000000, 0x3FF3DC00,
+/**/ 0x3DC013DC, 0x3EB3DC01,
+/**/ 0x0AE4A000, 0xBFCBA8C9,
+/**/ 0xF44432DA, 0xBD3A32E7,
+/**/ 0x00000000, 0x3FF3D400,
+/**/ 0xA75C5BBD, 0x3F3D991A,
+/**/ 0x30B82000, 0xBFCB8117,
+/**/ 0x3B9CD768, 0xBD1E9068,
+/**/ 0x00000000, 0x3FF3D000,
+/**/ 0x59C52F5D, 0xBF1292BA,
+/**/ 0xA213A000, 0xBFCB5971,
+/**/ 0x83AA91DF, 0xBD39B50E,
+/**/ 0x00000000, 0x3FF3C800,
+/**/ 0xBABE7440, 0x3F395A47,
+/**/ 0x575BC000, 0xBFCB31D8,
+/**/ 0x562A63CB, 0xBD3C794E,
+/**/ 0x00000000, 0x3FF3C400,
+/**/ 0x58A0943A, 0xBF20D475,
+/**/ 0x48FC2000, 0xBFCB0A4B,
+/**/ 0x5C3998ED, 0x3D22E72D,
+/**/ 0x00000000, 0x3FF3BC00,
+/**/ 0x3295482C, 0x3F360D92,
+/**/ 0x6F672000, 0xBFCAE2CA,
+/**/ 0xAE54F550, 0xBD37A8D5,
+/**/ 0x00000000, 0x3FF3B800,
+/**/ 0xCAB48651, 0xBF267D12,
+/**/ 0xC316A000, 0xBFCABB55,
+/**/ 0xCAF14CD8, 0x3D38A65A,
+/**/ 0x00000000, 0x3FF3B000,
+/**/ 0x13B13B14, 0x3F33B13B,
+/**/ 0x3C8AE000, 0xBFCA93ED,
+/**/ 0x50562169, 0x3D287243,
+/**/ 0x00000000, 0x3FF3AC00,
+/**/ 0x2C8FD3BF, 0xBF2A46AF,
+/**/ 0xD44B8000, 0xBFCA6C90,
+/**/ 0xF037B0C6, 0x3D3F63B7,
+/**/ 0x00000000, 0x3FF3A400,
+/**/ 0xAC822610, 0x3F324387,
+/**/ 0x82E6A000, 0xBFCA4540,
+/**/ 0xC81F7171, 0xBD360A77,
+/**/ 0x00000000, 0x3FF3A000,
+/**/ 0xA1923DEE, 0xBF2C34BB,
+/**/ 0x40F1C000, 0xBFCA1DFC,
+/**/ 0x004F3781, 0x3D301E0F,
+/**/ 0x00000000, 0x3FF39800,
+/**/ 0x87F63372, 0x3F31C2C1,
+/**/ 0x0708A000, 0xBFC9F6C4,
+/**/ 0x4BCD3F43, 0x3D3337D9,
+/**/ 0x00000000, 0x3FF39400,
+/**/ 0xE11BD52E, 0xBF2C4AA0,
+/**/ 0xCDCE0000, 0xBFC9CF97,
+/**/ 0x10C414E3, 0xBD3D862F,
+/**/ 0x00000000, 0x3FF38C00,
+/**/ 0x6088DBF4, 0x3F322D36,
+/**/ 0x8DEBA000, 0xBFC9A877,
+/**/ 0x3EFEC390, 0xBD3470FA,
+/**/ 0x00000000, 0x3FF38800,
+/**/ 0x503F774E, 0xBF2A8BBF,
+/**/ 0x4011A000, 0xBFC98163,
+/**/ 0x9E9045E2, 0xBD34EADD,
+/**/ 0x00000000, 0x3FF38000,
+/**/ 0x13813814, 0x3F338138,
+/**/ 0xDCF70000, 0xBFC95A5A,
+/**/ 0x58A0FF6F, 0xBD07F228,
+/**/ 0x00000000, 0x3FF37C00,
+/**/ 0x1B177053, 0xBF26FB6F,
+/**/ 0x5D594000, 0xBFC9335E,
+/**/ 0x3ABD47DA, 0xBD33115C,
+/**/ 0x00000000, 0x3FF37400,
+/**/ 0x945EDC20, 0x3F35BD1C,
+/**/ 0xB9FCC000, 0xBFC90C6D,
+/**/ 0x7718D7CA, 0x3D1935F5,
+/**/ 0x00000000, 0x3FF37000,
+/**/ 0x4DBDCC60, 0xBF219D00,
+/**/ 0xEBAC2000, 0xBFC8E588,
+/**/ 0xAB2D1140, 0xBD3B7D5C,
+/**/ 0x00000000, 0x3FF36800,
+/**/ 0xE0747954, 0x3F38DF3D,
+/**/ 0xEB390000, 0xBFC8BEAF,
+/**/ 0xAAE92CD1, 0x3D073D54,
+/**/ 0x00000000, 0x3FF36400,
+/**/ 0xD9D3C49F, 0xBF14E775,
+/**/ 0xB17B2000, 0xBFC897E2,
+/**/ 0x380CBE9E, 0x3D296B37,
+/**/ 0x00000000, 0x3FF35C00,
+/**/ 0xF2AF821E, 0x3F3CE5F9,
+/**/ 0x3750E000, 0xBFC87121,
+/**/ 0x42F9AF75, 0xBD3328EB,
+/**/ 0x00000000, 0x3FF35800,
+/**/ 0xE34971F2, 0xBEE82DF0,
+/**/ 0x759F6000, 0xBFC84A6B,
+/**/ 0x2ADF8609, 0x3D3DA280,
+/**/ 0x00000000, 0x3FF35400,
+/**/ 0x4873ECAE, 0xBF3E304D,
+/**/ 0x6551A000, 0xBFC823C1,
+/**/ 0x9A631E83, 0xBD1E0DDB,
+/**/ 0x00000000, 0x3FF34C00,
+/**/ 0x1FF659DB, 0x3F1264B6,
+/**/ 0xFF59A000, 0xBFC7FD22,
+/**/ 0xF457B7D2, 0x3D158BEB,
+/**/ 0x00000000, 0x3FF34800,
+/**/ 0xFECB9865, 0xBF386531,
+/**/ 0x3CAF6000, 0xBFC7D690,
+/**/ 0x17C301D7, 0x3D24C06B,
+/**/ 0x00000000, 0x3FF34000,
+/**/ 0xEEDA65AE, 0x3F25A8C2,
+/**/ 0x16516000, 0xBFC7B009,
+/**/ 0xCB067E57, 0x3D3AE75F,
+/**/ 0x00000000, 0x3FF33C00,
+/**/ 0x8434E1F4, 0xBF31BA4A,
+/**/ 0x85444000, 0xBFC7898D,
+/**/ 0xE3DBAF3F, 0xBD38E67B,
+/**/ 0x00000000, 0x3FF33400,
+/**/ 0xDBFC660A, 0x3F31EE97,
+/**/ 0x82936000, 0xBFC7631D,
+/**/ 0xC7C5F3E1, 0x3D25E77D,
+/**/ 0x00000000, 0x3FF33000,
+/**/ 0xBC40BFDA, 0xBF246252,
+/**/ 0x074FE000, 0xBFC73CB9,
+/**/ 0x0D0005A6, 0x3D3D66A9,
+/**/ 0x00000000, 0x3FF32800,
+/**/ 0x13299E64, 0x3F39E640,
+/**/ 0x0C914000, 0xBFC71660,
+/**/ 0x7CEC3838, 0xBCE51B15,
+/**/ 0x00000000, 0x3FF32400,
+/**/ 0xEF40991F, 0xBEFCB5D4,
+/**/ 0x8B756000, 0xBFC6F012,
+/**/ 0x0D31EF0F, 0xBD357739,
+/**/ 0x00000000, 0x3FF32000,
+/**/ 0xC823D892, 0xBF3D4632,
+/**/ 0x7D204000, 0xBFC6C9D0,
+/**/ 0xFD9B2DCA, 0x3CDC73FA,
+/**/ 0x00000000, 0x3FF31800,
+/**/ 0x7AED804C, 0x3F1DD63A,
+/**/ 0xDABBE000, 0xBFC6A399,
+/**/ 0xE66A15A6, 0x3D38F934,
+/**/ 0x00000000, 0x3FF31400,
+/**/ 0xE8C11E1A, 0xBF339849,
+/**/ 0x9D786000, 0xBFC67D6E,
+/**/ 0x30A706D3, 0x3D311E88,
+/**/ 0x00000000, 0x3FF30C00,
+/**/ 0x0D190131, 0x3F319013,
+/**/ 0xBE8C2000, 0xBFC6574E,
+/**/ 0x34F0F462, 0x3D398C1D,
+/**/ 0x00000000, 0x3FF30800,
+/**/ 0xB47A7FDA, 0xBF222315,
+/**/ 0x37336000, 0xBFC6313A,
+/**/ 0x4F21EA6D, 0x3D144DF5,
+/**/ 0x00000000, 0x3FF30000,
+/**/ 0x40260390, 0x3F3C82AC,
+/**/ 0x00B0A000, 0xBFC60B31,
+/**/ 0xC988F814, 0x3D371456,
+/**/ 0x00000000, 0x3FF2FC00,
+/**/ 0xA2430A62, 0x3F026443,
+/**/ 0x144C2000, 0xBFC5E533,
+/**/ 0xF3B290EA, 0x3D31CE0B,
+/**/ 0x00000000, 0x3FF2F800,
+/**/ 0xED097B42, 0xBF37B425,
+/**/ 0x6B544000, 0xBFC5BF40,
+/**/ 0xEB68981C, 0x3D127023,
+/**/ 0x00000000, 0x3FF2F000,
+/**/ 0x4AE0553C, 0x3F2D00E3,
+/**/ 0xFF1D6000, 0xBFC59958,
+/**/ 0x9769CA05, 0x3D3A1D05,
+/**/ 0x00000000, 0x3FF2EC00,
+/**/ 0x25D69D44, 0xBF262BC0,
+/**/ 0xC9018000, 0xBFC5737C,
+/**/ 0xA6B887F6, 0xBD39BAA7,
+/**/ 0x00000000, 0x3FF2E400,
+/**/ 0xE3103D6B, 0x3F3B88B5,
+/**/ 0xC2610000, 0xBFC54DAB,
+/**/ 0xE5C8D0D8, 0xBD2746FE,
+/**/ 0x00000000, 0x3FF2E000,
+/**/ 0xC04B8097, 0x3F02E025,
+/**/ 0xE4A1C000, 0xBFC527E5,
+/**/ 0x8D4B411D, 0x3D34E60B,
+/**/ 0x00000000, 0x3FF2DC00,
+/**/ 0x2C305021, 0xBF369C22,
+/**/ 0x292F6000, 0xBFC5022B,
+/**/ 0xFF36A25B, 0xBD348A05,
+/**/ 0x00000000, 0x3FF2D400,
+/**/ 0xD50A012D, 0x3F30A012,
+/**/ 0x897BC000, 0xBFC4DC7B,
+/**/ 0x0AE1FF0F, 0xBD0C79B6,
+/**/ 0x00000000, 0x3FF2D000,
+/**/ 0xBC66484E, 0xBF1FBE29,
+/**/ 0xFEFE2000, 0xBFC4B6D6,
+/**/ 0xF56E7952, 0xBD1522EC,
+/**/ 0x00000000, 0x3FF2C800,
+/**/ 0x12C9FB4E, 0x3F3FB4D8,
+/**/ 0x8333C000, 0xBFC4913D,
+/**/ 0x558124C4, 0x3D353E43,
+/**/ 0x00000000, 0x3FF2C400,
+/**/ 0x7004B11E, 0x3F1E3432,
+/**/ 0x0F9F6000, 0xBFC46BAF,
+/**/ 0x0790841A, 0x3D1249CD,
+/**/ 0x00000000, 0x3FF2C000,
+/**/ 0x5C8EF02F, 0xBF30671A,
+/**/ 0x9DC9C000, 0xBFC4462B,
+/**/ 0xA711B062, 0x3D384858,
+/**/ 0x00000000, 0x3FF2B800,
+/**/ 0xD548D9AC, 0x3F37D835,
+/**/ 0x27410000, 0xBFC420B3,
+/**/ 0xC85A0884, 0x3D116282,
+/**/ 0x00000000, 0x3FF2B400,
+/**/ 0xAD012B40, 0x3ED2B404,
+/**/ 0xA5992000, 0xBFC3FB45,
+/**/ 0xC0CAE559, 0xBD319713,
+/**/ 0x00000000, 0x3FF2B000,
+/**/ 0x8E7302A1, 0xBF370F78,
+/**/ 0x126BC000, 0xBFC3D5E3,
+/**/ 0x85096C4B, 0xBD13FB2F,
+/**/ 0x00000000, 0x3FF2A800,
+/**/ 0x3C1053F9, 0x3F31C92F,
+/**/ 0x67580000, 0xBFC3B08B,
+/**/ 0xF29320FB, 0x3D3AADE8,
+/**/ 0x00000000, 0x3FF2A400,
+/**/ 0x3DBE2E04, 0xBF14AD94,
+/**/ 0x9E028000, 0xBFC38B3E,
+/**/ 0x545C17F9, 0x3D370EF0,
+/**/ 0x00000000, 0x3FF2A000,
+/**/ 0xBED61BED, 0xBF3BED61,
+/**/ 0xB015A000, 0xBFC365FC,
+/**/ 0xAFB9691B, 0x3D3FD3A0,
+/**/ 0x00000000, 0x3FF29800,
+/**/ 0x26F004A6, 0x3F2B061A,
+/**/ 0x97412000, 0xBFC340C5,
+/**/ 0xF7D9D386, 0x3D37A3DC,
+/**/ 0x00000000, 0x3FF29400,
+/**/ 0xFF6B646D, 0xBF21B488,
+/**/ 0x4D3A4000, 0xBFC31B99,
+/**/ 0xE3A50810, 0xBD3F098E,
+/**/ 0x00000000, 0x3FF29000,
+/**/ 0x2CA5D5AC, 0xBF3F0582,
+/**/ 0xCBBC0000, 0xBFC2F677,
+/**/ 0x2160F40D, 0xBD352B30,
+/**/ 0x00000000, 0x3FF28800,
+/**/ 0x16025116, 0x3F260251,
+/**/ 0x0C868000, 0xBFC2D161,
+/**/ 0xCB81B4A1, 0xBD039D6C,
+/**/ 0x00000000, 0x3FF28400,
+/**/ 0x502065D2, 0xBF258CDF,
+/**/ 0x095F6000, 0xBFC2AC55,
+/**/ 0xD0C6C8A8, 0x3D1D3466,
+/**/ 0x00000000, 0x3FF27C00,
+/**/ 0x1CE4D6F8, 0x3F3FA38A,
+/**/ 0xBC11A000, 0xBFC28753,
+/**/ 0x359302E6, 0xBD37494E,
+/**/ 0x00000000, 0x3FF27800,
+/**/ 0xDCCA0781, 0x3F247DD5,
+/**/ 0x1E6DE000, 0xBFC2625D,
+/**/ 0xF09E3D82, 0x3CF52962,
+/**/ 0x00000000, 0x3FF27400,
+/**/ 0xDB195E8F, 0xBF25E8EF,
+/**/ 0x2A49C000, 0xBFC23D71,
+/**/ 0x8FD3DF5C, 0xBD100D23,
+/**/ 0x00000000, 0x3FF27000,
+/**/ 0xFFB647FE, 0xBF3FF6C8,
+/**/ 0xD9808000, 0xBFC2188F,
+/**/ 0x7F50C701, 0x3D3B3A1E,
+/**/ 0x00000000, 0x3FF26800,
+/**/ 0xC024D167, 0x3F266F9A,
+/**/ 0x25F26000, 0xBFC1F3B9,
+/**/ 0x9B083633, 0x3D15F74E,
+/**/ 0x00000000, 0x3FF26400,
+/**/ 0xEABD0E14, 0xBF22D1BD,
+/**/ 0x09854000, 0xBFC1CEED,
+/**/ 0x39192AF9, 0x3D315C1C,
+/**/ 0x00000000, 0x3FF26000,
+/**/ 0xF6D0EEC8, 0xBF3DD8F7,
+/**/ 0x7E240000, 0xBFC1AA2B,
+/**/ 0xDDE3B366, 0x3D31AC38,
+/**/ 0x00000000, 0x3FF25800,
+/**/ 0x2A241EF6, 0x3F2BCEB1,
+/**/ 0x7DBEC000, 0xBFC18574,
+/**/ 0x45BD9B49, 0xBD3E6744,
+/**/ 0x00000000, 0x3FF25400,
+/**/ 0xA21378D7, 0xBF18A05B,
+/**/ 0x024B2000, 0xBFC160C8,
+/**/ 0xA9009E3D, 0xBD2EC2D2,
+/**/ 0x00000000, 0x3FF25000,
+/**/ 0xD6CFA90C, 0xBF3A076F,
+/**/ 0x05C3A000, 0xBFC13C26,
+/**/ 0xD94F6509, 0x3D2CF5FD,
+/**/ 0x00000000, 0x3FF24800,
+/**/ 0x92492492, 0x3F324924,
+/**/ 0x8227E000, 0xBFC1178E,
+/**/ 0xCE2D07F2, 0xBD21EF78,
+/**/ 0x00000000, 0x3FF24400,
+/**/ 0x6151E899, 0xBEF3682B,
+/**/ 0x717D0000, 0xBFC0F301,
+/**/ 0x41AE86C5, 0x3D3E09B4,
+/**/ 0x00000000, 0x3FF24000,
+/**/ 0x89FA4C67, 0xBF34868E,
+/**/ 0xCDCCC000, 0xBFC0CE7E,
+/**/ 0xABFF5447, 0xBD14652D,
+/**/ 0x00000000, 0x3FF23800,
+/**/ 0x6B11F09F, 0x3F3858D8,
+/**/ 0x91268000, 0xBFC0AA06,
+/**/ 0xD7032129, 0x3D345519,
+/**/ 0x00000000, 0x3FF23400,
+/**/ 0xAF37C049, 0x3F159E26,
+/**/ 0xB59E4000, 0xBFC08598,
+/**/ 0x7009902C, 0x3D27E5DD,
+/**/ 0x00000000, 0x3FF23000,
+/**/ 0x2E076329, 0xBF2AB546,
+/**/ 0x354D4000, 0xBFC06135,
+/**/ 0x28340EE9, 0xBD363046,
+/**/ 0x00000000, 0x3FF22C00,
+/**/ 0xFEDD5FEE, 0xBF3FEDD5,
+/**/ 0x0A51E000, 0xBFC03CDC,
+/**/ 0xF169FC5C, 0xBD381A9C,
+/**/ 0x00000000, 0x3FF22400,
+/**/ 0x009126D7, 0x3F2B5B92,
+/**/ 0x2ECF6000, 0xBFC0188D,
+/**/ 0x1CFF9DFE, 0xBD03F965,
+/**/ 0x00000000, 0x3FF22000,
+/**/ 0x8121FB78, 0xBF121FB7,
+/**/ 0x39DBC000, 0xBFBFE891,
+/**/ 0xD82F7A82, 0xBD356594,
+/**/ 0x00000000, 0x3FF21C00,
+/**/ 0x3A459635, 0xBF368F22,
+/**/ 0x9DB58000, 0xBFBFA01C,
+/**/ 0xFA48A730, 0x3D08F351,
+/**/ 0x00000000, 0x3FF21400,
+/**/ 0x855E6012, 0x3F379804,
+/**/ 0x7D900000, 0xBFBF57BC,
+/**/ 0x9EA8B04E, 0xBD176A6C,
+/**/ 0x00000000, 0x3FF21000,
+/**/ 0x78CD7A37, 0x3F17B57C,
+/**/ 0xCDD98000, 0xBFBF0F70,
+/**/ 0x6C272C1E, 0xBD32E31F,
+/**/ 0x00000000, 0x3FF20C00,
+/**/ 0x07E4EF15, 0xBF271E73,
+/**/ 0x830A0000, 0xBFBEC739,
+/**/ 0xA80CDD10, 0xBD311FCB,
+/**/ 0x00000000, 0x3FF20800,
+/**/ 0x49392BA7, 0xBF3CDDEC,
+/**/ 0x91A34000, 0xBFBE7F16,
+/**/ 0x9BC77BFA, 0x3D32C1C5,
+/**/ 0x00000000, 0x3FF20000,
+/**/ 0x12012012, 0x3F320120,
+/**/ 0xEE304000, 0xBFBE3707,
+/**/ 0xE6766ABD, 0xBD20F684,
+/**/ 0x00000000, 0x3FF1FC00,
+/**/ 0xCE8AD1A2, 0x3EF0DC4F,
+/**/ 0x8D468000, 0xBFBDEF0D,
+/**/ 0x412E9A74, 0x3D324750,
+/**/ 0x00000000, 0x3FF1F800,
+/**/ 0xDC11F704, 0xBF2F7047,
+/**/ 0x63844000, 0xBFBDA727,
+/**/ 0x1FA71733, 0xBD1A8940,
+/**/ 0x00000000, 0x3FF1F000,
+/**/ 0x16B6419D, 0x3F3FAF3F,
+/**/ 0x65920000, 0xBFBD5F55,
+/**/ 0xCC185469, 0xBD30E239,
+/**/ 0x00000000, 0x3FF1EC00,
+/**/ 0xF70985E2, 0x3F2E878F,
+/**/ 0x88218000, 0xBFBD1797,
+/**/ 0xB5EFBEED, 0xBD336433,
+/**/ 0x00000000, 0x3FF1E800,
+/**/ 0x94D7FDC3, 0xBEEF55E4,
+/**/ 0xBFEE0000, 0xBFBCCFED,
+/**/ 0x2FE71256, 0xBD33A823,
+/**/ 0x00000000, 0x3FF1E400,
+/**/ 0x0478BBCF, 0xBF310C4C,
+/**/ 0x01BC4000, 0xBFBC8858,
+/**/ 0xC65AACD3, 0xBD2646D1,
+/**/ 0x00000000, 0x3FF1DC00,
+/**/ 0xCB840C49, 0x3F3F0ECB,
+/**/ 0x425A4000, 0xBFBC40D6,
+/**/ 0x1D1930DD, 0xBD3CB112,
+/**/ 0x00000000, 0x3FF1D800,
+/**/ 0xC9579074, 0x3F2EACE5,
+/**/ 0x769FC000, 0xBFBBF968,
+/**/ 0x8D824283, 0xBD24218C,
+/**/ 0x00000000, 0x3FF1D400,
+/**/ 0xFC60F0AE, 0xBECABDFA,
+/**/ 0x936D8000, 0xBFBBB20E,
+/**/ 0x35459B8E, 0x3D368BA8,
+/**/ 0x00000000, 0x3FF1D000,
+/**/ 0xAFDC61F3, 0xBF2F2A4B,
+/**/ 0x8DAD4000, 0xBFBB6AC8,
+/**/ 0xF50225C7, 0xBD3B1BDF,
+/**/ 0x00000000, 0x3FF1CC00,
+/**/ 0xAB802394, 0xBF3EC8AF,
+/**/ 0x5A530000, 0xBFBB2396,
+/**/ 0xEA137079, 0x3CEFF64E,
+/**/ 0x00000000, 0x3FF1C400,
+/**/ 0xCE058D9B, 0x3F322FC1,
+/**/ 0xEE5B0000, 0xBFBADC77,
+/**/ 0x09C31904, 0x3D3573B2,
+/**/ 0x00000000, 0x3FF1C000,
+/**/ 0xE0EFA2CF, 0x3F0AA04F,
+/**/ 0x3ECAC000, 0xBFBA956D,
+/**/ 0x4C02C4AF, 0xBD3E6379,
+/**/ 0x00000000, 0x3FF1BC00,
+/**/ 0x225ADFDD, 0xBF26B7F7,
+/**/ 0x40B1C000, 0xBFBA4E76,
+/**/ 0xB94407C8, 0x3D0E42B6,
+/**/ 0x00000000, 0x3FF1B800,
+/**/ 0x217CD13A, 0xBF39E073,
+/**/ 0xE9278000, 0xBFBA0792,
+/**/ 0xC9AD51BF, 0x3D0A9CE6,
+/**/ 0x00000000, 0x3FF1B000,
+/**/ 0x2BAE2B21, 0x3F37C67F,
+/**/ 0x2D4D4000, 0xBFB9C0C3,
+/**/ 0x9E838668, 0x3D3AB7C0,
+/**/ 0x00000000, 0x3FF1AC00,
+/**/ 0xBD720DCF, 0x3F23316E,
+/**/ 0x024CC000, 0xBFB97A07,
+/**/ 0x732093CE, 0x3CF8BCC1,
+/**/ 0x00000000, 0x3FF1A800,
+/**/ 0x611A7B96, 0xBF11A7B9,
+/**/ 0x5D594000, 0xBFB9335E,
+/**/ 0x3ABD47DA, 0xBD23115C,
+/**/ 0x00000000, 0x3FF1A400,
+/**/ 0xA1C1B8E7, 0xBF324195,
+/**/ 0x33AEC000, 0xBFB8ECC9,
+/**/ 0xBE67F7AA, 0x3D222F39,
+/**/ 0x00000000, 0x3FF1A000,
+/**/ 0xFEE61FEE, 0xBF3FEE61,
+/**/ 0x7A91C000, 0xBFB8A647,
+/**/ 0xAF9BD6DF, 0xBD3C28C0,
+/**/ 0x00000000, 0x3FF19800,
+/**/ 0x362B721D, 0x3F328F89,
+/**/ 0x27508000, 0xBFB85FD9,
+/**/ 0x19970C1C, 0x3D35B818,
+/**/ 0x00000000, 0x3FF19400,
+/**/ 0x28A70119, 0x3F14E023,
+/**/ 0x2F410000, 0xBFB8197E,
+/**/ 0x60D20041, 0x3D3C0FE4,
+/**/ 0x00000000, 0x3FF19000,
+/**/ 0x3E48FC6F, 0xBF1FD419,
+/**/ 0x87C28000, 0xBFB7D336,
+/**/ 0x3E706706, 0xBD33C88C,
+/**/ 0x00000000, 0x3FF18C00,
+/**/ 0xFD42546B, 0xBF34F7C6,
+/**/ 0x263D8000, 0xBFB78D02,
+/**/ 0x94B69FB7, 0xBD069B57,
+/**/ 0x00000000, 0x3FF18400,
+/**/ 0x01185E30, 0x3F3E2FA4,
+/**/ 0x00228000, 0xBFB746E1,
+/**/ 0x6E1E21D2, 0x3D3126D1,
+/**/ 0x00000000, 0x3FF18000,
+/**/ 0x11811812, 0x3F318118,
+/**/ 0x0AEAC000, 0xBFB700D3,
+/**/ 0xA99DED32, 0xBCEC1E8D,
+/**/ 0x00000000, 0x3FF17C00,
+/**/ 0xFF2E2C43, 0x3F13F1CA,
+/**/ 0x3C188000, 0xBFB6BAD8,
+/**/ 0xC08926AE, 0xBD0DAF3C,
+/**/ 0x00000000, 0x3FF17800,
+/**/ 0x0A5EF9FF, 0xBF1D79B9,
+/**/ 0x89364000, 0xBFB674F0,
+/**/ 0x4C9D3302, 0xBD3A7999,
+/**/ 0x00000000, 0x3FF17400,
+/**/ 0x1ECEA765, 0xBF338FAD,
+/**/ 0xE7D78000, 0xBFB62F1B,
+/**/ 0x7ED63C4E, 0x3D217995,
+/**/ 0x00000000, 0x3FF17000,
+/**/ 0xD8C8714B, 0xBF3F976B,
+/**/ 0x4D978000, 0xBFB5E95A,
+/**/ 0xE1D17171, 0xBD31CB7C,
+/**/ 0x00000000, 0x3FF16800,
+/**/ 0xB08FA497, 0x3F348A33,
+/**/ 0xB01AC000, 0xBFB5A3AB,
+/**/ 0x9E6AFA18, 0xBD3E2574,
+/**/ 0x00000000, 0x3FF16400,
+/**/ 0x864022C9, 0x3F21AA1F,
+/**/ 0x050E0000, 0xBFB55E10,
+/**/ 0x0C53C72E, 0xBD0C1D74,
+/**/ 0x00000000, 0x3FF16000,
+/**/ 0xB487BCAD, 0xBF05B7C9,
+/**/ 0x42260000, 0xBFB51887,
+/**/ 0x96258B3E, 0xBD330A1D,
+/**/ 0x00000000, 0x3FF15C00,
+/**/ 0x5B1E5F75, 0xBF2C3411,
+/**/ 0x5D208000, 0xBFB4D311,
+/**/ 0x82F4E1EF, 0x3CF53A25,
+/**/ 0x00000000, 0x3FF15800,
+/**/ 0xEEA99544, 0xBF39543F,
+/**/ 0x4BC30000, 0xBFB48DAE,
+/**/ 0x208C200C, 0xBD30185B,
+/**/ 0x00000000, 0x3FF15000,
+/**/ 0xDD5C8CB8, 0x3F3B9A3F,
+/**/ 0x03DBC000, 0xBFB4485E,
+/**/ 0xE8D26AB7, 0xBD3FAD46,
+/**/ 0x00000000, 0x3FF14C00,
+/**/ 0xB19AE5C7, 0x3F30B155,
+/**/ 0x7B414000, 0xBFB40320,
+/**/ 0xAA8157C0, 0xBD26FD84,
+/**/ 0x00000000, 0x3FF14800,
+/**/ 0xB34EDA32, 0x3F17C382,
+/**/ 0xA7D20000, 0xBFB3BDF5,
+/**/ 0xAD125895, 0x3D319BD0,
+/**/ 0x00000000, 0x3FF14400,
+/**/ 0xBAF129D0, 0xBF129CFF,
+/**/ 0x7F748000, 0xBFB378DD,
+/**/ 0x28F1FACA, 0xBD371411,
+/**/ 0x00000000, 0x3FF14000,
+/**/ 0x771B7C7F, 0xBF2E2E59,
+/**/ 0xF8184000, 0xBFB333D7,
+/**/ 0xA81B8848, 0x3CE692B6,
+/**/ 0x00000000, 0x3FF13C00,
+/**/ 0x30FE1D9C, 0xBF395F06,
+/**/ 0x07B40000, 0xBFB2EEE5,
+/**/ 0xDD77C860, 0xBD08081E,
+/**/ 0x00000000, 0x3FF13400,
+/**/ 0x5C81135D, 0x3F3C8113,
+/**/ 0xA4470000, 0xBFB2AA04,
+/**/ 0xA8B1CB41, 0xBD37A48B,
+/**/ 0x00000000, 0x3FF13000,
+/**/ 0xBB3B5DC0, 0x3F3288FF,
+/**/ 0xC3D8C000, 0xBFB26536,
+/**/ 0x097C5BA3, 0xBD0B4BAC,
+/**/ 0x00000000, 0x3FF12C00,
+/**/ 0xB81577AE, 0x3F21713D,
+/**/ 0x5C784000, 0xBFB2207B,
+/**/ 0xFC10C7BF, 0xBD349D8C,
+/**/ 0x00000000, 0x3FF12800,
+/**/ 0xBAD6FC84, 0xBEEE05E5,
+/**/ 0x643D0000, 0xBFB1DBD2,
+/**/ 0xD977C494, 0xBD390B24,
+/**/ 0x00000000, 0x3FF12400,
+/**/ 0x59F992BF, 0xBF24E314,
+/**/ 0xD1464000, 0xBFB1973B,
+/**/ 0x54F930B3, 0xBD3566D1,
+/**/ 0x00000000, 0x3FF12000,
+/**/ 0xC9F6E7A8, 0xBF33CB91,
+/**/ 0x99BB4000, 0xBFB152B7,
+/**/ 0x07030829, 0x3D09BB29,
+/**/ 0x00000000, 0x3FF11C00,
+/**/ 0x8B7D9851, 0xBF3CFE65,
+/**/ 0xB3CB0000, 0xBFB10E45,
+/**/ 0x284A3465, 0x3D37CF69,
+/**/ 0x00000000, 0x3FF11400,
+/**/ 0x29605DF7, 0x3F39F5DB,
+/**/ 0x15AC4000, 0xBFB0C9E6,
+/**/ 0x0974D976, 0xBD2C2DA8,
+/**/ 0x00000000, 0x3FF11000,
+/**/ 0x11111111, 0x3F311111,
+/**/ 0xB59E4000, 0xBFB08598,
+/**/ 0x7009902C, 0x3D17E5DD,
+/**/ 0x00000000, 0x3FF10C00,
+/**/ 0x12A5B1AE, 0x3F20A63A,
+/**/ 0x89E74000, 0xBFB0415D,
+/**/ 0x5CF1D753, 0xBD1111C0,
+/**/ 0x00000000, 0x3FF10800,
+/**/ 0xBE011080, 0xBED107FB,
+/**/ 0x11AB8000, 0xBFAFFA69,
+/**/ 0x98381A8F, 0xBD23008C,
+/**/ 0x00000000, 0x3FF10400,
+/**/ 0x6FEABBAE, 0xBF216989,
+/**/ 0x51800000, 0xBFAF723B,
+/**/ 0xDD5610D3, 0x3D3D6EB0,
+/**/ 0x00000000, 0x3FF10000,
+/**/ 0x10FEF011, 0xBF30FEF0,
+/**/ 0xC0068000, 0xBFAEEA31,
+/**/ 0x3606D891, 0xBD3C3DD8,
+/**/ 0x00000000, 0x3FF0FC00,
+/**/ 0x98CDDC74, 0xBF3922C0,
+/**/ 0x4A0B8000, 0xBFAE624C,
+/**/ 0x74676689, 0x3D30F25C,
+/**/ 0x00000000, 0x3FF0F400,
+/**/ 0x325A1A80, 0x3F3EDFAB,
+/**/ 0xDC680000, 0xBFADDA8A,
+/**/ 0x64D9E42F, 0x3D21B1AC,
+/**/ 0x00000000, 0x3FF0F000,
+/**/ 0xF27F9A57, 0x3F370834,
+/**/ 0x64060000, 0xBFAD52ED,
+/**/ 0x2A29BBD6, 0x3D33C85D,
+/**/ 0x00000000, 0x3FF0EC00,
+/**/ 0xD391FBC5, 0x3F2EAD7C,
+/**/ 0xCDDD8000, 0xBFACCB73,
+/**/ 0x6E09F5FE, 0xBD3965C3,
+/**/ 0x00000000, 0x3FF0E800,
+/**/ 0xE9479870, 0x3F1F2CA5,
+/**/ 0x06F70000, 0xBFAC441E,
+/**/ 0x49850D15, 0xBD354F1F,
+/**/ 0x00000000, 0x3FF0E400,
+/**/ 0x80439019, 0x3ED95609,
+/**/ 0xFC690000, 0xBFABBCEB,
+/**/ 0x8C317C2A, 0x3D17BF86,
+/**/ 0x00000000, 0x3FF0E000,
+/**/ 0xC6867596, 0xBF1B6B4D,
+/**/ 0x9B588000, 0xBFAB35DD,
+/**/ 0xD6CF558E, 0xBD3D5674,
+/**/ 0x00000000, 0x3FF0DC00,
+/**/ 0x172D4CE8, 0xBF2BEAEE,
+/**/ 0xD0FB0000, 0xBFAAAEF2,
+/**/ 0x353BB42E, 0xBD20FC1A,
+/**/ 0x00000000, 0x3FF0D800,
+/**/ 0x479071A9, 0xBF34EAB0,
+/**/ 0x8A938000, 0xBFAA282B,
+/**/ 0x80EFC8E3, 0x3D2E8F59,
+/**/ 0x00000000, 0x3FF0D400,
+/**/ 0xA61C62D3, 0xBF3BBA9C,
+/**/ 0xB5740000, 0xBFA9A187,
+/**/ 0x4EC4D90D, 0x3D30C22E,
+/**/ 0x00000000, 0x3FF0CC00,
+/**/ 0x77344011, 0x3F3D9AA6,
+/**/ 0x3EFD8000, 0xBFA91B07,
+/**/ 0x3F76CA96, 0x3D19D7C5,
+/**/ 0x00000000, 0x3FF0C800,
+/**/ 0xCDA3AC11, 0x3F3714FB,
+/**/ 0x149F8000, 0xBFA894AA,
+/**/ 0x8BE97661, 0xBD39A19A,
+/**/ 0x00000000, 0x3FF0C400,
+/**/ 0x391F2E61, 0x3F30B446,
+/**/ 0x23D90000, 0xBFA80E70,
+/**/ 0x6F28BF45, 0x3D399DC1,
+/**/ 0x00000000, 0x3FF0C000,
+/**/ 0x682E11CD, 0x3F24F0D1,
+/**/ 0x5A358000, 0xBFA78859,
+/**/ 0x083B3A4C, 0x3D108B0D,
+/**/ 0x00000000, 0x3FF0BC00,
+/**/ 0x5D5A36EA, 0x3F118519,
+/**/ 0xA5510000, 0xBFA70265,
+/**/ 0x11FD5CE7, 0x3D2888DF,
+/**/ 0x00000000, 0x3FF0B800,
+/**/ 0x62386CAB, 0xBEF913DA,
+/**/ 0xF2D48000, 0xBFA67C94,
+/**/ 0x827CCA0C, 0xBD3DAC20,
+/**/ 0x00000000, 0x3FF0B400,
+/**/ 0xBD31D7D0, 0xBF1D7CFF,
+/**/ 0x30790000, 0xBFA5F6E7,
+/**/ 0x8012494C, 0x3D20485A,
+/**/ 0x00000000, 0x3FF0B000,
+/**/ 0x226951DC, 0xBF2A11BA,
+/**/ 0x4C040000, 0xBFA5715C,
+/**/ 0xDFC47628, 0x3D38888D,
+/**/ 0x00000000, 0x3FF0AC00,
+/**/ 0x7B2E9DD2, 0xBF328E31,
+/**/ 0x334A0000, 0xBFA4EBF4,
+/**/ 0xF73BE773, 0x3D2D9150,
+/**/ 0x00000000, 0x3FF0A800,
+/**/ 0x7EF597EF, 0xBF37EF59,
+/**/ 0xD42E0000, 0xBFA466AE,
+/**/ 0x75BDFD28, 0x3D2C1673,
+/**/ 0x00000000, 0x3FF0A400,
+/**/ 0x50D413C1, 0xBF3D2C71,
+/**/ 0x1CA08000, 0xBFA3E18C,
+/**/ 0x3F6E378E, 0xBD3748ED,
+/**/ 0x00000000, 0x3FF09C00,
+/**/ 0xF836010A, 0x3F3DBA6A,
+/**/ 0xFAA10000, 0xBFA35C8B,
+/**/ 0x5EF9EB35, 0xBD38357D,
+/**/ 0x00000000, 0x3FF09800,
+/**/ 0x624D4AF5, 0x3F38C51F,
+/**/ 0x5C3C8000, 0xBFA2D7AE,
+/**/ 0x459DA66D, 0x3D322939,
+/**/ 0x00000000, 0x3FF09400,
+/**/ 0x10953F39, 0x3F33F390,
+/**/ 0x2F8D0000, 0xBFA252F3,
+/**/ 0xE021B67B, 0xBD283E9A,
+/**/ 0x00000000, 0x3FF09000,
+/**/ 0x861539B9, 0x3F2E8B42,
+/**/ 0x62BC0000, 0xBFA1CE5A,
+/**/ 0x8D8DF999, 0xBD3A9CC7,
+/**/ 0x00000000, 0x3FF08C00,
+/**/ 0xACBC4021, 0x3F25766E,
+/**/ 0xE4008000, 0xBFA149E3,
+/**/ 0x9A4168FD, 0x3D32B98A,
+/**/ 0x00000000, 0x3FF08800,
+/**/ 0x0F3DBD5A, 0x3F1950DB,
+/**/ 0xA19E0000, 0xBFA0C58F,
+/**/ 0x58B17913, 0x3D0559D1,
+/**/ 0x00000000, 0x3FF08400,
+/**/ 0x08421084, 0x3F008421,
+/**/ 0x89E78000, 0xBFA0415D,
+/**/ 0xF461C516, 0x3D3DDDC7,
+/**/ 0x00000000, 0x3FF08000,
+/**/ 0x0041FF7C, 0xBF007FDF,
+/**/ 0x16780000, 0xBF9F7A9B,
+/**/ 0x271BE7D7, 0xBD242AD9,
+/**/ 0x00000000, 0x3FF07C00,
+/**/ 0xC54798FB, 0xBF183591,
+/**/ 0x28140000, 0xBF9E72BF,
+/**/ 0x49774D47, 0x3D28D751,
+/**/ 0x00000000, 0x3FF07800,
+/**/ 0x518F4EFD, 0xBF23CFA1,
+/**/ 0x25980000, 0xBF9D6B27,
+/**/ 0x50D1B838, 0x3D39FF7B,
+/**/ 0x00000000, 0x3FF07400,
+/**/ 0x01073261, 0xBF2B3EB7,
+/**/ 0xEC150000, 0xBF9C63D2,
+/**/ 0xE030A687, 0x3D35439C,
+/**/ 0x00000000, 0x3FF07000,
+/**/ 0xD6EAB025, 0xBF31341F,
+/**/ 0x58B70000, 0xBF9B5CC2,
+/**/ 0xB8AFBFE8, 0xBD18E611,
+/**/ 0x00000000, 0x3FF06C00,
+/**/ 0x6ED049E0, 0xBF34A638,
+/**/ 0x48C60000, 0xBF9A55F5,
+/**/ 0x9F2D03C9, 0x3D2DE070,
+/**/ 0x00000000, 0x3FF06800,
+/**/ 0xEF997F5C, 0xBF37F5BF,
+/**/ 0x99A20000, 0xBF994F6B,
+/**/ 0xF96CF7F5, 0xBD311D5E,
+/**/ 0x00000000, 0x3FF06400,
+/**/ 0xE5604189, 0xBF3B22D0,
+/**/ 0x28C90000, 0xBF984925,
+/**/ 0x325A0C34, 0x3D2AA0BA,
+/**/ 0x00000000, 0x3FF06000,
+/**/ 0xC1163FF0, 0xBF3E2D85,
+/**/ 0xD3D00000, 0xBF974321,
+/**/ 0x0FE94778, 0xBCFB4A69,
+/**/ 0x00000000, 0x3FF05800,
+/**/ 0x27586632, 0x3F3EEA07,
+/**/ 0x78690000, 0xBF963D61,
+/**/ 0x89596542, 0xBD07ABF3,
+/**/ 0x00000000, 0x3FF05400,
+/**/ 0x98E2A5E7, 0x3F3C23BB,
+/**/ 0xF45F0000, 0xBF9537E3,
+/**/ 0xD2D7F253, 0xBD2AB259,
+/**/ 0x00000000, 0x3FF05000,
+/**/ 0x73404146, 0x3F397F7D,
+/**/ 0x25980000, 0xBF9432A9,
+/**/ 0x928637FE, 0xBD098139,
+/**/ 0x00000000, 0x3FF04C00,
+/**/ 0xB0C7B49A, 0x3F36FD32,
+/**/ 0xEA130000, 0xBF932DB0,
+/**/ 0x130895FC, 0xBD2710CB,
+/**/ 0x00000000, 0x3FF04800,
+/**/ 0x664C578A, 0x3F349CC1,
+/**/ 0x1FEA0000, 0xBF9228FB,
+/**/ 0x284991FE, 0xBD2713E3,
+/**/ 0x00000000, 0x3FF04400,
+/**/ 0xC2FCB1F4, 0x3F325E0F,
+/**/ 0xA5500000, 0xBF912487,
+/**/ 0xFED4B393, 0xBD3FDBE5,
+/**/ 0x00000000, 0x3FF04000,
+/**/ 0x10410410, 0x3F304104,
+/**/ 0x58930000, 0xBF902056,
+/**/ 0x7C8E8417, 0xBD3611D2,
+/**/ 0x00000000, 0x3FF03C00,
+/**/ 0x6334030B, 0x3F2C8B09,
+/**/ 0x30340000, 0xBF8E38CE,
+/**/ 0xA3DA281A, 0x3D39DE88,
+/**/ 0x00000000, 0x3FF03800,
+/**/ 0x48FF7E3A, 0x3F28D6F0,
+/**/ 0x84C80000, 0xBF8C3173,
+/**/ 0xFCEFB9FE, 0x3D341F33,
+/**/ 0x00000000, 0x3FF03400,
+/**/ 0x0081A559, 0x3F25658A,
+/**/ 0x6C180000, 0xBF8A2A9C,
+/**/ 0x4D6D3472, 0x3D3F73BC,
+/**/ 0x00000000, 0x3FF03000,
+/**/ 0xEBC349DE, 0x3F2236A3,
+/**/ 0xA3880000, 0xBF882448,
+/**/ 0x12C584E0, 0xBD345544,
+/**/ 0x00000000, 0x3FF02C00,
+/**/ 0x3FEFD386, 0x3F1E9417,
+/**/ 0xE8B60000, 0xBF861E77,
+/**/ 0xEAF8EAF3, 0x3D38073E,
+/**/ 0x00000000, 0x3FF02800,
+/**/ 0xCA7A317C, 0x3F193F1D,
+/**/ 0xF9680000, 0xBF841929,
+/**/ 0x55D01368, 0xBD1977C7,
+/**/ 0x00000000, 0x3FF02400,
+/**/ 0x6CB49652, 0x3F146DF7,
+/**/ 0x939E0000, 0xBF82145E,
+/**/ 0x38C4EA00, 0xBD3E3D12,
+/**/ 0x00000000, 0x3FF02000,
+/**/ 0x81020408, 0x3F102040,
+/**/ 0x75880000, 0xBF801015,
+/**/ 0x1998B506, 0xBD3BCE25,
+/**/ 0x00000000, 0x3FF01C00,
+/**/ 0x8C355D63, 0x3F08AB2B,
+/**/ 0xBB100000, 0xBF7C189C,
+/**/ 0x12588560, 0x3D3D8055,
+/**/ 0x00000000, 0x3FF01800,
+/**/ 0xBD1BA97E, 0x3F021B28,
+/**/ 0x14580000, 0xBF781212,
+/**/ 0x82973F27, 0xBD1AD503,
+/**/ 0x00000000, 0x3FF01400,
+/**/ 0x411155AB, 0x3EF91F67,
+/**/ 0x74780000, 0xBF740C8A,
+/**/ 0xDF070002, 0xBD1E3871,
+/**/ 0x00000000, 0x3FF01000,
+/**/ 0x10101010, 0x3EF01010,
+/**/ 0x59580000, 0xBF700805,
+/**/ 0xCB31C67B, 0xBD2166AF,
+/**/ 0x00000000, 0x3FF00C00,
+/**/ 0x279DB649, 0x3EE20D8A,
+/**/ 0x82880000, 0xBF680904,
+/**/ 0x96A70C0C, 0xBD285C06,
+/**/ 0x00000000, 0x3FF00800,
+/**/ 0x02010080, 0x3ED00804,
+/**/ 0x55D80000, 0xBF600401,
+/**/ 0xC7CC7089, 0x3D33BB10,
+/**/ 0x00000000, 0x3FF00400,
+/**/ 0x00401004, 0x3EB00401,
+/**/ 0x55600000, 0xBF500200,
+/**/ 0xCD5F35F8, 0xBD356224,
+/**/ 0x00000000, 0x3FF00000,
+/**/ 0x00000000, 0x00000000,
+/**/ 0x00000000, 0x00000000,
+/**/ 0x00000000, 0x00000000,
+/**/ 0x00000000, 0x3FEFF800,
+/**/ 0xFF801FF8, 0x3EAFF801,
+/**/ 0xAA800000, 0x3F4FFC00,
+/**/ 0x7809A0A3, 0x3D35621F,
+/**/ 0x00000000, 0x3FEFF000,
+/**/ 0xFC01FF00, 0x3ECFF007,
+/**/ 0xA9B00000, 0x3F5FF802,
+/**/ 0x1D61C5EB, 0xBD33BC66,
+/**/ 0x00000000, 0x3FEFE800,
+/**/ 0x186DADBE, 0x3EE1F28A,
+/**/ 0x7D780000, 0x3F67F704,
+/**/ 0x89D68648, 0x3D283DA6,
+/**/ 0x00000000, 0x3FEFE000,
+/**/ 0xE01FE020, 0x3EEFE01F,
+/**/ 0xA2B00000, 0x3F6FF00A,
+/**/ 0xA086B56A, 0x3D20BC04,
+/**/ 0x00000000, 0x3FEFD800,
+/**/ 0xDF68BD14, 0x3EF8E0E6,
+/**/ 0x60F00000, 0x3F73F38A,
+/**/ 0x93C93749, 0x3D192256,
+/**/ 0x00000000, 0x3FEFD000,
+/**/ 0x439A981C, 0x3F01E528,
+/**/ 0xEBD80000, 0x3F77EE11,
+/**/ 0xC2D23A07, 0x3D0749D3,
+/**/ 0x00000000, 0x3FEFC800,
+/**/ 0x8596391C, 0x3F08556A,
+/**/ 0x70040000, 0x3F7BE79C,
+/**/ 0x9A6C0404, 0x3D38EC8F,
+/**/ 0x00000000, 0x3FEFC000,
+/**/ 0x01FC07F0, 0x3F0FC07F,
+/**/ 0x6B100000, 0x3F7FE02A,
+/**/ 0x0DDA40E4, 0x3D19E23F,
+/**/ 0x00000000, 0x3FEFB800,
+/**/ 0x9F5976B5, 0x3F1412D5,
+/**/ 0x2D1A0000, 0x3F81EBDE,
+/**/ 0xFF48DC36, 0xBD2A0683,
+/**/ 0x00000000, 0x3FEFB000,
+/**/ 0xBD271E34, 0x3F18C21A,
+/**/ 0x5D260000, 0x3F83E729,
+/**/ 0xFF29A114, 0xBD2609C1,
+/**/ 0x00000000, 0x3FEFA800,
+/**/ 0x5594A734, 0x3F1DEDB2,
+/**/ 0x03EC0000, 0x3F85E1F7,
+/**/ 0xF585DA1B, 0x3D37CA09,
+/**/ 0x00000000, 0x3FEFA000,
+/**/ 0x1FA11CAA, 0x3F21CAA0,
+/**/ 0x5F820000, 0x3F87DC47,
+/**/ 0x5B5DA1F5, 0xBD3EB124,
+/**/ 0x00000000, 0x3FEF9800,
+/**/ 0x55E8CB6B, 0x3F24DC34,
+/**/ 0xADC60000, 0x3F89D61A,
+/**/ 0x327B4257, 0x3D37B196,
+/**/ 0x00000000, 0x3FEF9000,
+/**/ 0x13BAF1B2, 0x3F282B68,
+/**/ 0x2C740000, 0x3F8BCF71,
+/**/ 0x97BD9771, 0x3D1C25E0,
+/**/ 0x00000000, 0x3FEF8800,
+/**/ 0xCC420861, 0x3F2BB80D,
+/**/ 0x19120000, 0x3F8DC84B,
+/**/ 0x1E3A5B30, 0x3D1C0A54,
+/**/ 0x00000000, 0x3FEF8000,
+/**/ 0x1F81F820, 0x3F2F81F8,
+/**/ 0xB0FC0000, 0x3F8FC0A8,
+/**/ 0xF6D3A69C, 0x3CDF1E7C,
+/**/ 0x00000000, 0x3FEF7800,
+/**/ 0xED1079FA, 0x3F31C47C,
+/**/ 0x18B00000, 0x3F90DC45,
+/**/ 0x380313FC, 0xBD29BC2F,
+/**/ 0x00000000, 0x3FEF7000,
+/**/ 0xFA98528D, 0x3F33E672,
+/**/ 0xEB9F0000, 0x3F91D7F7,
+/**/ 0x83FCC7A6, 0xBD14193A,
+/**/ 0x00000000, 0x3FEF6800,
+/**/ 0xCAFBD3D2, 0x3F3626C7,
+/**/ 0xEFB50000, 0x3F92D36C,
+/**/ 0x341706C3, 0x3D35F0BB,
+/**/ 0x00000000, 0x3FEF6000,
+/**/ 0x06DDABA6, 0x3F388565,
+/**/ 0x43470000, 0x3F93CEA4,
+/**/ 0x32D6A40B, 0xBD36A2C4,
+/**/ 0x00000000, 0x3FEF5800,
+/**/ 0x6CC4F5F5, 0x3F3B0234,
+/**/ 0x04900000, 0x3F94C99E,
+/**/ 0x5DF5F4A5, 0x3D1DECC6,
+/**/ 0x00000000, 0x3FEF5000,
+/**/ 0xD102728A, 0x3F3D9D1F,
+/**/ 0x51B90000, 0x3F95C45A,
+/**/ 0x216D87D8, 0xBD263BB6,
+/**/ 0x00000000, 0x3FEF5000,
+/**/ 0xE26A1DD4, 0xBF3FA9EE,
+/**/ 0x48D20000, 0x3F96BED9,
+/**/ 0x160A43F8, 0xBD320BC4,
+/**/ 0x00000000, 0x3FEF4800,
+/**/ 0xADEC7540, 0xBF3CD30D,
+/**/ 0x07D60000, 0x3F97B91B,
+/**/ 0xB602ACE4, 0xBD33B955,
+/**/ 0x00000000, 0x3FEF4000,
+/**/ 0x7C761DC6, 0xBF39DE52,
+/**/ 0xACAA0000, 0x3F98B31F,
+/**/ 0xA96E4964, 0xBD33FC78,
+/**/ 0x00000000, 0x3FEF3800,
+/**/ 0x23989FF0, 0xBF36CBD3,
+/**/ 0x551D0000, 0x3F99ACE7,
+/**/ 0x7EC7C410, 0xBD2D75D9,
+/**/ 0x00000000, 0x3FEF3000,
+/**/ 0x639F8B15, 0xBF339BA5,
+/**/ 0x1EE80000, 0x3F9AA672,
+/**/ 0x5C5AF494, 0x3D2AD4EB,
+/**/ 0x00000000, 0x3FEF2800,
+/**/ 0xE7AA579B, 0xBF304DDE,
+/**/ 0x27B00000, 0x3F9B9FC0,
+/**/ 0x0AE6922A, 0xBD3B9A01,
+/**/ 0x00000000, 0x3FEF2000,
+/**/ 0x8B8C46FD, 0xBF29C52A,
+/**/ 0x8D010000, 0x3F9C98D1,
+/**/ 0x0589DF0F, 0xBD2BF615,
+/**/ 0x00000000, 0x3FEF1800,
+/**/ 0xFE0E92B4, 0xBF22B3BB,
+/**/ 0x6C540000, 0x3F9D91A6,
+/**/ 0x658CFB9A, 0x3D2E61F1,
+/**/ 0x00000000, 0x3FEF1000,
+/**/ 0xFE8B488E, 0xBF16CF39,
+/**/ 0xE30D0000, 0x3F9E8A3E,
+/**/ 0x3DE53900, 0xBD21A9FA,
+/**/ 0x00000000, 0x3FEF0800,
+/**/ 0xF07C1F08, 0xBEFF07C1,
+/**/ 0x0E780000, 0x3F9F829B,
+/**/ 0x7C7E09E4, 0x3D298026,
+/**/ 0x00000000, 0x3FEF0000,
+/**/ 0x007C00F8, 0x3EFF003E,
+/**/ 0x85E70000, 0x3FA03D5D,
+/**/ 0x60ED29CF, 0x3D3F7789,
+/**/ 0x00000000, 0x3FEEF800,
+/**/ 0x3D759870, 0x3F17B671,
+/**/ 0x7C198000, 0x3FA0B94F,
+/**/ 0x6F022783, 0xBD2E8989,
+/**/ 0x00000000, 0x3FEEF000,
+/**/ 0x2A8BB96A, 0x3F241070,
+/**/ 0x78598000, 0x3FA13523,
+/**/ 0xB71FA59B, 0xBD1C1AC3,
+/**/ 0x00000000, 0x3FEEE800,
+/**/ 0x58E01EEA, 0x3F2C7F84,
+/**/ 0x89240000, 0x3FA1B0D9,
+/**/ 0x9AE889BB, 0xBD33401E,
+/**/ 0x00000000, 0x3FEEE000,
+/**/ 0xA3D491BC, 0x3F329425,
+/**/ 0xBCEA8000, 0x3FA22C71,
+/**/ 0xF87F888F, 0x3CFD2818,
+/**/ 0x00000000, 0x3FEED800,
+/**/ 0x9E9D2AE8, 0x3F37054D,
+/**/ 0x22150000, 0x3FA2A7EC,
+/**/ 0x7A9163FE, 0xBD278CE7,
+/**/ 0x00000000, 0x3FEED000,
+/**/ 0x540C85E6, 0x3F3B9325,
+/**/ 0xC7000000, 0x3FA32348,
+/**/ 0x90B1E49F, 0x3D2696DB,
+/**/ 0x00000000, 0x3FEED000,
+/**/ 0xF099FC26, 0xBF3FC267,
+/**/ 0xB9FE8000, 0x3FA39E87,
+/**/ 0x80AD9015, 0x3D3EAFD4,
+/**/ 0x00000000, 0x3FEEC800,
+/**/ 0xD02A4E5D, 0xBF3AFB6E,
+/**/ 0x09590000, 0x3FA419A9,
+/**/ 0x67D48EA7, 0x3D3B5CDC,
+/**/ 0x00000000, 0x3FEEC000,
+/**/ 0xD7A79FF1, 0xBF361803,
+/**/ 0xC34D8000, 0x3FA494AC,
+/**/ 0xA56FD247, 0x3D211C78,
+/**/ 0x00000000, 0x3FEEB800,
+/**/ 0x805C2197, 0xBF31183B,
+/**/ 0xF60F8000, 0x3FA50F92,
+/**/ 0x0A91FFE3, 0x3D296CFB,
+/**/ 0x00000000, 0x3FEEB000,
+/**/ 0x5FE15180, 0xBF27F854,
+/**/ 0xAFC90000, 0x3FA58A5B,
+/**/ 0x9570AD39, 0xBD2B2B73,
+/**/ 0x00000000, 0x3FEEA800,
+/**/ 0xE210C36A, 0xBF1B0F90,
+/**/ 0xFE990000, 0x3FA60506,
+/**/ 0x8194E036, 0xBD32BA40,
+/**/ 0x00000000, 0x3FEEA000,
+/**/ 0x8C33ADB2, 0xBEF6F7DD,
+/**/ 0xF0948000, 0x3FA67F94,
+/**/ 0x3E7E4ED7, 0x3D3ECC1F,
+/**/ 0x00000000, 0x3FEE9800,
+/**/ 0x1003D310, 0x3F1003D3,
+/**/ 0x93C78000, 0x3FA6FA05,
+/**/ 0x41D634A1, 0x3D3B415E,
+/**/ 0x00000000, 0x3FEE9000,
+/**/ 0x0B7672A0, 0x3F231ABF,
+/**/ 0xF6330000, 0x3FA77458,
+/**/ 0xE586AF09, 0xBD3181DC,
+/**/ 0x00000000, 0x3FEE8800,
+/**/ 0xCF172481, 0x3F2E6B5C,
+/**/ 0x25CD8000, 0x3FA7EE8F,
+/**/ 0x11A5C1E9, 0xBD3F4216,
+/**/ 0x00000000, 0x3FEE8000,
+/**/ 0x77A84876, 0x3F34F9CD,
+/**/ 0x30840000, 0x3FA868A8,
+/**/ 0x134AC693, 0xBD12623A,
+/**/ 0x00000000, 0x3FEE7800,
+/**/ 0xD7473427, 0x3F3AD9A8,
+/**/ 0x243A0000, 0x3FA8E2A4,
+/**/ 0x01426490, 0x3D2B9EEB,
+/**/ 0x00000000, 0x3FEE7800,
+/**/ 0x4578DCCA, 0xBF3F2AD3,
+/**/ 0x0EC90000, 0x3FA95C83,
+/**/ 0x97C5FEB8, 0xBD2C1482,
+/**/ 0x00000000, 0x3FEE7000,
+/**/ 0x97A6A035, 0xBF3913BA,
+/**/ 0xFDFF8000, 0x3FA9D644,
+/**/ 0x539A473B, 0x3D313C90,
+/**/ 0x00000000, 0x3FEE6800,
+/**/ 0xC594A915, 0xBF32E120,
+/**/ 0xFFA40000, 0x3FAA4FE9,
+/**/ 0xA0402925, 0xBD36E584,
+/**/ 0x00000000, 0x3FEE6000,
+/**/ 0xC5DF4232, 0xBF292632,
+/**/ 0x21710000, 0x3FAAC972,
+/**/ 0xF013222C, 0x3D2F8D3E,
+/**/ 0x00000000, 0x3FEE5800,
+/**/ 0xC3518A6E, 0xBF18A6DF,
+/**/ 0x71198000, 0x3FAB42DD,
+/**/ 0xE5D6704C, 0xBD1C827A,
+/**/ 0x00000000, 0x3FEE5000,
+/**/ 0x86833271, 0x3ED6BC08,
+/**/ 0xFC450000, 0x3FABBC2B,
+/**/ 0x91417DAF, 0xBD17D186,
+/**/ 0x00000000, 0x3FEE4800,
+/**/ 0xE672838D, 0x3F1BEB2D,
+/**/ 0xD0920000, 0x3FAC355D,
+/**/ 0x9ABF8388, 0x3D2F2CCC,
+/**/ 0x00000000, 0x3FEE4000,
+/**/ 0x9785150A, 0x3F2B6B8D,
+/**/ 0xFB960000, 0x3FACAE72,
+/**/ 0x2025B1BE, 0xBD3EFABF,
+/**/ 0x00000000, 0x3FEE3800,
+/**/ 0xE0D399FA, 0x3F348BCE,
+/**/ 0x8ADB0000, 0x3FAD276B,
+/**/ 0xC78A64B0, 0x3D16A423,
+/**/ 0x00000000, 0x3FEE3000,
+/**/ 0x933AC00F, 0x3F3B7CD0,
+/**/ 0x8BE38000, 0x3FADA047,
+/**/ 0xB1F6FE05, 0x3D2252C7,
+/**/ 0x00000000, 0x3FEE3000,
+/**/ 0x308F5281, 0xBF3D7747,
+/**/ 0x0C278000, 0x3FAE1907,
+/**/ 0x64629E86, 0xBD2FEA46,
+/**/ 0x00000000, 0x3FEE2800,
+/**/ 0x6C196F66, 0xBF36508B,
+/**/ 0x19150000, 0x3FAE91AA,
+/**/ 0x1DCC6A76, 0xBD0E82A0,
+/**/ 0x00000000, 0x3FEE2000,
+/**/ 0x1E1E1E1E, 0xBF2E1E1E,
+/**/ 0xC0118000, 0x3FAF0A30,
+/**/ 0x83368E91, 0xBD2D599E,
+/**/ 0x00000000, 0x3FEE1800,
+/**/ 0xDD355CDB, 0xBF1ECB93,
+/**/ 0x0E780000, 0x3FAF829B,
+/**/ 0x7C7E09E4, 0x3D398026,
+/**/ 0x00000000, 0x3FEE1000,
+/**/ 0x7C01E100, 0xBECE0FF8,
+/**/ 0x119B8000, 0x3FAFFAE9,
+/**/ 0x4262C554, 0x3D230337,
+/**/ 0x00000000, 0x3FEE0800,
+/**/ 0x25C73724, 0x3F1D54B5,
+/**/ 0x6B624000, 0x3FB0398D,
+/**/ 0xFCBFCD00, 0xBD3AB14D,
+/**/ 0x00000000, 0x3FEE0000,
+/**/ 0x1E01E01E, 0x3F2E01E0,
+/**/ 0x35990000, 0x3FB07598,
+/**/ 0xE4B59987, 0xBD3B8ECF,
+/**/ 0x00000000, 0x3FEDF800,
+/**/ 0xC84194BA, 0x3F36C715,
+/**/ 0xEE0D0000, 0x3FB0B194,
+/**/ 0x4F69EDCC, 0x3D3666EA,
+/**/ 0x00000000, 0x3FEDF000,
+/**/ 0xEF26D838, 0x3F3EA78B,
+/**/ 0x9B554000, 0x3FB0ED83,
+/**/ 0x6D48ABB4, 0xBD3901F4,
+/**/ 0x00000000, 0x3FEDF000,
+/**/ 0xF10995DC, 0xBF395DBF,
+/**/ 0x44030000, 0x3FB12964,
+/**/ 0x751AA773, 0xBD3D53BB,
+/**/ 0x00000000, 0x3FEDE800,
+/**/ 0x3BCBADC8, 0xBF3148E0,
+/**/ 0xEEA38000, 0x3FB16536,
+/**/ 0x768FA309, 0xBD147C5E,
+/**/ 0x00000000, 0x3FEDE000,
+/**/ 0x86E25CE1, 0xBF2233CE,
+/**/ 0xA1BF8000, 0x3FB1A0FB,
+/**/ 0xC319D6DC, 0x3D24A3FC,
+/**/ 0x00000000, 0x3FEDD800,
+/**/ 0x26B3FE23, 0xBEEA1CE9,
+/**/ 0x63DB0000, 0x3FB1DCB2,
+/**/ 0x5E9E8981, 0x3D39444F,
+/**/ 0x00000000, 0x3FEDD000,
+/**/ 0x0AB71710, 0x3F1E4836,
+/**/ 0x3B75C000, 0x3FB2185B,
+/**/ 0xF8F32304, 0xBD3E3189,
+/**/ 0x00000000, 0x3FEDC800,
+/**/ 0x00EE500F, 0x3F300EE5,
+/**/ 0x2F0A0000, 0x3FB253F6,
+/**/ 0xFB69A701, 0x3D3416F8,
+/**/ 0x00000000, 0x3FEDC000,
+/**/ 0x231C226A, 0x3F38A58D,
+/**/ 0x450EC000, 0x3FB28F83,
+/**/ 0xAA119769, 0x3D3A8D75,
+/**/ 0x00000000, 0x3FEDC000,
+/**/ 0x14715D63, 0xBF3EAA0C,
+/**/ 0x83F5C000, 0x3FB2CB02,
+/**/ 0xCA657021, 0x3D3E1EE2,
+/**/ 0x00000000, 0x3FEDB800,
+/**/ 0x92AEFFC5, 0xBF35DFF8,
+/**/ 0xF22C8000, 0x3FB30673,
+/**/ 0x9DCF0BA5, 0x3D24C9E2,
+/**/ 0x00000000, 0x3FEDB000,
+/**/ 0x67E251A0, 0xBF29F894,
+/**/ 0x961BC000, 0x3FB341D7,
+/**/ 0x99837610, 0x3D31D092,
+/**/ 0x00000000, 0x3FEDA800,
+/**/ 0x1FF89620, 0xBF0FF896,
+/**/ 0x76284000, 0x3FB37D2D,
+/**/ 0x9B7FF15C, 0xBD2C60AA,
+/**/ 0x00000000, 0x3FEDA000,
+/**/ 0x076828BD, 0x3F145E70,
+/**/ 0x98B1C000, 0x3FB3B875,
+/**/ 0x94ACA313, 0xBD222415,
+/**/ 0x00000000, 0x3FED9800,
+/**/ 0xE567D573, 0x3F2C8F60,
+/**/ 0x04140000, 0x3FB3F3B0,
+/**/ 0xACDFCEC5, 0x3CEE2474,
+/**/ 0x00000000, 0x3FED9000,
+/**/ 0xF3FC4DA2, 0x3F379118,
+/**/ 0xBEA64000, 0x3FB42EDC,
+/**/ 0xEA7C9ACD, 0x3D1BC0EE,
+/**/ 0x00000000, 0x3FED9000,
+/**/ 0x049DE4C3, 0xBF3F0C3C,
+/**/ 0xCEBB4000, 0x3FB469FB,
+/**/ 0x4F257194, 0x3D3B663C,
+/**/ 0x00000000, 0x3FED8800,
+/**/ 0xF13D5906, 0xBF35905F,
+/**/ 0x3AA1C000, 0x3FB4A50D,
+/**/ 0x308973E2, 0xBD2F7FE1,
+/**/ 0x00000000, 0x3FED8000,
+/**/ 0x77D1EA57, 0xBF27F6C8,
+/**/ 0x08A34000, 0x3FB4E011,
+/**/ 0xDF2C5AE5, 0x3D3AE5CF,
+/**/ 0x00000000, 0x3FED7800,
+/**/ 0xF4F31BA0, 0xBF026AD1,
+/**/ 0x3F060000, 0x3FB51B07,
+/**/ 0x278E686A, 0x3D383F69,
+/**/ 0x00000000, 0x3FED7000,
+/**/ 0xF26DF1BD, 0x3F1DE6B2,
+/**/ 0xE40B4000, 0x3FB555EF,
+/**/ 0x8C868E23, 0x3D30B497,
+/**/ 0x00000000, 0x3FED6800,
+/**/ 0x7BA23D96, 0x3F31599F,
+/**/ 0xFDF00000, 0x3FB590CA,
+/**/ 0x5722ABAA, 0x3D3C284F,
+/**/ 0x00000000, 0x3FED6000,
+/**/ 0xD425A760, 0x3F3B526C,
+/**/ 0x92ED4000, 0x3FB5CB98,
+/**/ 0xA64FC52F, 0x3D17BE44,
+/**/ 0x00000000, 0x3FED6000,
+/**/ 0x546A6FF1, 0xBF3A9BFC,
+/**/ 0xA9374000, 0x3FB60658,
+/**/ 0xDEE9C4F8, 0x3D30C3B1,
+/**/ 0x00000000, 0x3FED5800,
+/**/ 0x08F02FAC, 0xBF3071AD,
+/**/ 0x46FE8000, 0x3FB6410B,
+/**/ 0x3CBD8D14, 0xBD153F8F,
+/**/ 0x00000000, 0x3FED5000,
+/**/ 0x12C6C142, 0xBF18BAD9,
+/**/ 0x726EC000, 0x3FB67BB0,
+/**/ 0x69EF5912, 0x3CEF724B,
+/**/ 0x00000000, 0x3FED4800,
+/**/ 0x3254A5A2, 0x3F10B35C,
+/**/ 0x31B00000, 0x3FB6B648,
+/**/ 0x1377DE92, 0xBD3BF30A,
+/**/ 0x00000000, 0x3FED4000,
+/**/ 0x1D41D41D, 0x3F2D41D4,
+/**/ 0x8AE58000, 0x3FB6F0D2,
+/**/ 0x1B664613, 0xBD34B464,
+/**/ 0x00000000, 0x3FED3800,
+/**/ 0xF494E548, 0x3F392D71,
+/**/ 0x842EC000, 0x3FB72B4F,
+/**/ 0xC00C9DD3, 0xBD3704CC,
+/**/ 0x00000000, 0x3FED3800,
+/**/ 0xFF165C2E, 0xBF3C2DA1,
+/**/ 0x23A6C000, 0x3FB765BF,
+/**/ 0x35C4256A, 0xBCFECBC0,
+/**/ 0x00000000, 0x3FED3000,
+/**/ 0x7AA49674, 0xBF317062,
+/**/ 0x6F648000, 0x3FB7A021,
+/**/ 0xA18418FF, 0x3D3E124C,
+/**/ 0x00000000, 0x3FED2800,
+/**/ 0x749CB290, 0xBF1A6B80,
+/**/ 0x6D7B0000, 0x3FB7DA76,
+/**/ 0x4480C89B, 0x3D32CC84,
+/**/ 0x00000000, 0x3FED2000,
+/**/ 0x25C6336D, 0x3F114B52,
+/**/ 0x23F8C000, 0x3FB814BE,
+/**/ 0xDA82FDFD, 0x3CCB2381,
+/**/ 0x00000000, 0x3FED1800,
+/**/ 0xF08A3B1D, 0x3F2EB155,
+/**/ 0x98E84000, 0x3FB84EF8,
+/**/ 0x246977C9, 0xBD37D5CD,
+/**/ 0x00000000, 0x3FED1000,
+/**/ 0xBD71CD93, 0x3F3A7692,
+/**/ 0xD24FC000, 0x3FB88925,
+/**/ 0x44FBB806, 0xBD31D505,
+/**/ 0x00000000, 0x3FED1000,
+/**/ 0x89FC5E69, 0xBF3A5384,
+/**/ 0xD6318000, 0x3FB8C345,
+/**/ 0xACB42A66, 0x3D3B20F5,
+/**/ 0x00000000, 0x3FED0800,
+/**/ 0x6439240E, 0xBF2E0B56,
+/**/ 0xAA8C4000, 0x3FB8FD58,
+/**/ 0x1BCB725B, 0xBD3EEC90,
+/**/ 0x00000000, 0x3FED0000,
+/**/ 0x01CFF8C0, 0xBF0CFF8C,
+/**/ 0x55594000, 0x3FB9375E,
+/**/ 0x7380C364, 0x3D3EDDC3,
+/**/ 0x00000000, 0x3FECF800,
+/**/ 0x546D8D78, 0x3F1F7661,
+/**/ 0xDC8F8000, 0x3FB97156,
+/**/ 0x9AFDB97B, 0xBD3C1FC1,
+/**/ 0x00000000, 0x3FECF000,
+/**/ 0x25FE30D9, 0x3F3372E2,
+/**/ 0x46204000, 0x3FB9AB42,
+/**/ 0x26787061, 0xBD28A648,
+/**/ 0x00000000, 0x3FECE800,
+/**/ 0xD92305A6, 0x3F3F1FDB,
+/**/ 0x97F9C000, 0x3FB9E520,
+/**/ 0xB52DD050, 0x3D235FAC,
+/**/ 0x00000000, 0x3FECE800,
+/**/ 0x9C37FC63, 0xBF351B8A,
+/**/ 0xD8060000, 0x3FBA1EF1,
+/**/ 0x6DF97BCB, 0x3D3CD417,
+/**/ 0x00000000, 0x3FECE000,
+/**/ 0x6CB725AB, 0xBF227EC2,
+/**/ 0x0C2B4000, 0x3FBA58B6,
+/**/ 0x5C5C9F2A, 0xBD3CDC73,
+/**/ 0x00000000, 0x3FECD800,
+/**/ 0xE6C2B448, 0x3F05A240,
+/**/ 0x3A4AC000, 0x3FBA926D,
+/**/ 0x0BD22A9C, 0x3D356365,
+/**/ 0x00000000, 0x3FECD000,
+/**/ 0xFBB8D9F3, 0x3F2D7EC2,
+/**/ 0x68434000, 0x3FBACC17,
+/**/ 0xA0B7FA4C, 0xBD2AA783,
+/**/ 0x00000000, 0x3FECC800,
+/**/ 0x1B71D3E9, 0x3F3AE1DB,
+/**/ 0x9BEE4000, 0x3FBB05B4,
+/**/ 0x18F84A5E, 0x3D0FF22C,
+/**/ 0x00000000, 0x3FECC800,
+/**/ 0xCD6DE82D, 0xBF38E45A,
+/**/ 0xDB220000, 0x3FBB3F44,
+/**/ 0xD8DE09AF, 0x3D3FD153,
+/**/ 0x00000000, 0x3FECC000,
+/**/ 0xE341926A, 0xBF29269F,
+/**/ 0x2BB10000, 0x3FBB78C8,
+/**/ 0xBC3987E7, 0xBD325EF7,
+/**/ 0x00000000, 0x3FECB800,
+/**/ 0xF620C1DA, 0xBEC589FB,
+/**/ 0x93690000, 0x3FBBB23E,
+/**/ 0x3559DB8B, 0xBD368B18,
+/**/ 0x00000000, 0x3FECB000,
+/**/ 0x0DE5FF1A, 0x3F28A893,
+/**/ 0x18148000, 0x3FBBEBA8,
+/**/ 0xB6DF1F57, 0xBD389B78,
+/**/ 0x00000000, 0x3FECA800,
+/**/ 0x0039563B, 0x3F38EAB9,
+/**/ 0xBF79C000, 0x3FBC2504,
+/**/ 0xD0EF4ADC, 0x3D3717C4,
+/**/ 0x00000000, 0x3FECA800,
+/**/ 0x08F377F2, 0xBF3A67D5,
+/**/ 0x8F5BC000, 0x3FBC5E54,
+/**/ 0x585FBE06, 0x3D1D0C57,
+/**/ 0x00000000, 0x3FECA000,
+/**/ 0x072792E4, 0xBF2B46E0,
+/**/ 0x8D790000, 0x3FBC9797,
+/**/ 0x977D1884, 0xBD36E010,
+/**/ 0x00000000, 0x3FEC9800,
+/**/ 0x1BB327C3, 0xBEE904EA,
+/**/ 0xBF8C0000, 0x3FBCD0CD,
+/**/ 0xB50DD743, 0x3D33E14D,
+/**/ 0x00000000, 0x3FEC9000,
+/**/ 0x77683AEC, 0x3F2853EB,
+/**/ 0x2B4C4000, 0x3FBD09F7,
+/**/ 0x00354E33, 0x3D2048C0,
+/**/ 0x00000000, 0x3FEC8800,
+/**/ 0xDC52100E, 0x3F3932D7,
+/**/ 0xD66CC000, 0x3FBD4313,
+/**/ 0x79135713, 0xBD294543,
+/**/ 0x00000000, 0x3FEC8800,
+/**/ 0x2736962B, 0xBF39AD90,
+/**/ 0xC69CC000, 0x3FBD7C23,
+/**/ 0xDD328771, 0xBD297EE4,
+/**/ 0x00000000, 0x3FEC8000,
+/**/ 0xF316B4C2, 0xBF28EEA2,
+/**/ 0x0187C000, 0x3FBDB527,
+/**/ 0x56AE181F, 0x3D392778,
+/**/ 0x00000000, 0x3FEC7800,
+/**/ 0x058F7536, 0x3EEAB099,
+/**/ 0x8CD60000, 0x3FBDEE1D,
+/**/ 0x729EFF89, 0xBD328DA0,
+/**/ 0x00000000, 0x3FEC7000,
+/**/ 0x1C71C71C, 0x3F2C71C7,
+/**/ 0x6E2B0000, 0x3FBE2707,
+/**/ 0x2AF0003C, 0xBD2A342C,
+/**/ 0x00000000, 0x3FEC6800,
+/**/ 0xD6422A30, 0x3F3BB2BB,
+/**/ 0xAB274000, 0x3FBE5FE4,
+/**/ 0xF74FFE4D, 0xBD35FAE9,
+/**/ 0x00000000, 0x3FEC6800,
+/**/ 0x54BDE47E, 0xBF36BD01,
+/**/ 0x49670000, 0x3FBE98B5,
+/**/ 0x89C50E97, 0x3D346774,
+/**/ 0x00000000, 0x3FEC6000,
+/**/ 0xB5157FE4, 0xBF222CC5,
+/**/ 0x4E838000, 0x3FBED179,
+/**/ 0x749D0484, 0xBD1FD143,
+/**/ 0x00000000, 0x3FEC5800,
+/**/ 0xA930B840, 0x3F129A21,
+/**/ 0xC0118000, 0x3FBF0A30,
+/**/ 0x83368E91, 0xBD3D599E,
+/**/ 0x00000000, 0x3FEC5000,
+/**/ 0xAC5CEE14, 0x3F3279B1,
+/**/ 0xA3A24000, 0x3FBF42DB,
+/**/ 0x32DF6C0D, 0xBD3312B7,
+/**/ 0x00000000, 0x3FEC5000,
+/**/ 0xD4AB8D0B, 0xBF3F9CF5,
+/**/ 0xFEC38000, 0x3FBF7B79,
+/**/ 0xE897ED01, 0xBD010987,
+/**/ 0x00000000, 0x3FEC4800,
+/**/ 0xCC17DAE4, 0xBF319D7C,
+/**/ 0xD6FF4000, 0x3FBFB40B,
+/**/ 0xB7B53B5B, 0x3D2C0BEC,
+/**/ 0x00000000, 0x3FEC4000,
+/**/ 0x01C3F8F0, 0xBF0C3F8F,
+/**/ 0x31DC0000, 0x3FBFEC91,
+/**/ 0xD1AE6607, 0xBD354555,
+/**/ 0x00000000, 0x3FEC3800,
+/**/ 0xAB1B8FFC, 0x3F254738,
+/**/ 0x0A6E0000, 0x3FC01285,
+/**/ 0x4805BF94, 0xBD1A8619,
+/**/ 0x00000000, 0x3FEC3000,
+/**/ 0x48B3C5D7, 0x3F38E51F,
+/**/ 0x42BF4000, 0x3FC02EBB,
+/**/ 0x5CE00E5D, 0xBD15A8FA,
+/**/ 0x00000000, 0x3FEC3000,
+/**/ 0x867E595E, 0xBF38C377,
+/**/ 0x449F6000, 0x3FC04AEB,
+/**/ 0x65CCD35C, 0x3D2AFA90,
+/**/ 0x00000000, 0x3FEC2800,
+/**/ 0x15FE3D95, 0xBF24AC6D,
+/**/ 0x12CA6000, 0x3FC06715,
+/**/ 0x9CDC0A3D, 0xBD2A4757,
+/**/ 0x00000000, 0x3FEC2000,
+/**/ 0x53B8CDAE, 0x3F10B34F,
+/**/ 0xAFFA2000, 0x3FC08338,
+/**/ 0xAC823E27, 0x3D30533C,
+/**/ 0x00000000, 0x3FEC1800,
+/**/ 0x3FABB0F6, 0x3F32C599,
+/**/ 0x1EE72000, 0x3FC09F56,
+/**/ 0x7157D1A8, 0xBD28F305,
+/**/ 0x00000000, 0x3FEC1800,
+/**/ 0x97CD1B6C, 0xBF3E8BF4,
+/**/ 0x6247A000, 0x3FC0BB6D,
+/**/ 0x3CCD04B3, 0x3D35464F,
+/**/ 0x00000000, 0x3FEC1000,
+/**/ 0xE3F1F8FC, 0xBF2F8FC7,
+/**/ 0x7CD08000, 0x3FC0D77E,
+/**/ 0x2EE2F482, 0x3D3CB2CD,
+/**/ 0x00000000, 0x3FEC0800,
+/**/ 0x5B199F35, 0xBEEDC860,
+/**/ 0x7134C000, 0x3FC0F389,
+/**/ 0xE893D6C6, 0xBD3DA359,
+/**/ 0x00000000, 0x3FEC0000,
+/**/ 0x1C01C01C, 0x3F2C01C0,
+/**/ 0x42254000, 0x3FC10F8E,
+/**/ 0x43396307, 0xBD293B38,
+/**/ 0x00000000, 0x3FEBF800,
+/**/ 0x256228AA, 0x3F3D0577,
+/**/ 0xF2518000, 0x3FC12B8C,
+/**/ 0x13C0A0FC, 0x3D348A4A,
+/**/ 0x00000000, 0x3FEBF800,
+/**/ 0xCB93A8A1, 0xBF33E08B,
+/**/ 0x84674000, 0x3FC14785,
+/**/ 0x1027C750, 0x3D156345,
+/**/ 0x00000000, 0x3FEBF000,
+/**/ 0x1DE63F4A, 0xBF12C4DB,
+/**/ 0xFB124000, 0x3FC16377,
+/**/ 0xBF41763E, 0x3D091E1A,
+/**/ 0x00000000, 0x3FEBE800,
+/**/ 0x769F9E4F, 0x3F2526D0,
+/**/ 0x58FCA000, 0x3FC17F64,
+/**/ 0xD093C8DC, 0x3D2843FA,
+/**/ 0x00000000, 0x3FEBE000,
+/**/ 0x5292D891, 0x3F39ED43,
+/**/ 0xA0CEE000, 0x3FC19B4A,
+/**/ 0x9621338B, 0xBD3D8824,
+/**/ 0x00000000, 0x3FEBE000,
+/**/ 0x5FC845A9, 0xBF36A3B3,
+/**/ 0xD52F6000, 0x3FC1B72A,
+/**/ 0x1811A396, 0x3D2E80A4,
+/**/ 0x00000000, 0x3FEBD800,
+/**/ 0xB7230491, 0xBF1C7E26,
+/**/ 0xF8C36000, 0x3FC1D304,
+/**/ 0xDF451042, 0xBD3A6D44,
+/**/ 0x00000000, 0x3FEBD000,
+/**/ 0x451B61CB, 0x3F20F365,
+/**/ 0x0E2DC000, 0x3FC1EED9,
+/**/ 0x7097648F, 0x3D161563,
+/**/ 0x00000000, 0x3FEBC800,
+/**/ 0xD72DD0AA, 0x3F3827F3,
+/**/ 0x18102000, 0x3FC20AA7,
+/**/ 0x348552FE, 0x3D3F2C94,
+/**/ 0x00000000, 0x3FEBC800,
+/**/ 0xBE0C262F, 0xBF3814D3,
+/**/ 0x190A6000, 0x3FC2266F,
+/**/ 0xB840E7F6, 0xBD24D20A,
+/**/ 0x00000000, 0x3FEBC000,
+/**/ 0x7ECECB53, 0xBF207963,
+/**/ 0x13BA6000, 0x3FC24231,
+/**/ 0x78EE9D9C, 0xBD3E3A00,
+/**/ 0x00000000, 0x3FEBB800,
+/**/ 0xF29268D3, 0x3F1EC130,
+/**/ 0x0ABC6000, 0x3FC25DED,
+/**/ 0x4F176449, 0x3D35A385,
+/**/ 0x00000000, 0x3FEBB000,
+/**/ 0xAB6353BF, 0x3F37B218,
+/**/ 0x00AB4000, 0x3FC279A3,
+/**/ 0xB3235108, 0x3D3EF432,
+/**/ 0x00000000, 0x3FEBB000,
+/**/ 0xF2298376, 0xBF383759,
+/**/ 0xF8200000, 0x3FC29552,
+/**/ 0xF4471DFC, 0xBD35B967,
+/**/ 0x00000000, 0x3FEBA800,
+/**/ 0x1EAD4253, 0xBF201832,
+/**/ 0xF3B1A000, 0x3FC2B0FC,
+/**/ 0xE30A59EA, 0x3D177CA3,
+/**/ 0x00000000, 0x3FEBA000,
+/**/ 0xD84886B1, 0x3F20679B,
+/**/ 0xF5F60000, 0x3FC2CCA0,
+/**/ 0x91AFF120, 0xBD3B5EF1,
+/**/ 0x00000000, 0x3FEB9800,
+/**/ 0xA41FEB4C, 0x3F38884D,
+/**/ 0x0180E000, 0x3FC2E83F,
+/**/ 0xC284E1CE, 0xBD3F0C2A,
+/**/ 0x00000000, 0x3FEB9800,
+/**/ 0x3806E548, 0xBF370EA7,
+/**/ 0x18E48000, 0x3FC303D7,
+/**/ 0xCE3ECB05, 0xBCD680B5,
+/**/ 0x00000000, 0x3FEB9000,
+/**/ 0xB5EF34C0, 0xBF1A4477,
+/**/ 0x3EB1A000, 0x3FC31F69,
+/**/ 0xE5A396FB, 0xBD2A6726,
+/**/ 0x00000000, 0x3FEB8800,
+/**/ 0x9401B894, 0x3F2401B8,
+/**/ 0x75770000, 0x3FC33AF5,
+/**/ 0xA2FE72A5, 0x3D3C9ECC,
+/**/ 0x00000000, 0x3FEB8000,
+/**/ 0x400DC1AA, 0x3F3AA73A,
+/**/ 0xBFC22000, 0x3FC3567B,
+/**/ 0x53991A1F, 0x3D3250D2,
+/**/ 0x00000000, 0x3FEB8000,
+/**/ 0x2E63A6A8, 0xBF349E11,
+/**/ 0x201E8000, 0x3FC371FC,
+/**/ 0x9B2D8ABC, 0x3D3EE877,
+/**/ 0x00000000, 0x3FEB7800,
+/**/ 0xC8DA04B9, 0xBF0E7898,
+/**/ 0x99164000, 0x3FC38D76,
+/**/ 0x9E39BB70, 0x3D1844A5,
+/**/ 0x00000000, 0x3FEB7000,
+/**/ 0xE6B33E2D, 0x3F2A284E,
+/**/ 0x2D31A000, 0x3FC3A8EB,
+/**/ 0x7D5D503E, 0x3D1BAFB7,
+/**/ 0x00000000, 0x3FEB6800,
+/**/ 0x759C2BB4, 0x3F3E0B91,
+/**/ 0xDEF76000, 0x3FC3C459,
+/**/ 0xF6B70D33, 0x3D3EDC86,
+/**/ 0x00000000, 0x3FEB6800,
+/**/ 0x088FD6E7, 0xBF30E8E2,
+/**/ 0xB0ECC000, 0x3FC3DFC2,
+/**/ 0x62B8C13F, 0x3D28A72A,
+/**/ 0x00000000, 0x3FEB6000,
+/**/ 0xD801B600, 0x3ECB6006,
+/**/ 0xA5952000, 0x3FC3FB25,
+/**/ 0x6B358FF7, 0x3D3195BE,
+/**/ 0x00000000, 0x3FEB5800,
+/**/ 0xD840F62C, 0x3F316A6A,
+/**/ 0xBF728000, 0x3FC41682,
+/**/ 0x081F849D, 0xBD210047,
+/**/ 0x00000000, 0x3FEB5800,
+/**/ 0x7DF8BD99, 0xBF3D4DEE,
+/**/ 0x01050000, 0x3FC431DA,
+/**/ 0x836E0391, 0x3D304837,
+/**/ 0x00000000, 0x3FEB5000,
+/**/ 0x7E4B17E5, 0xBF27E4B1,
+/**/ 0x6CCB8000, 0x3FC44D2B,
+/**/ 0x6135783C, 0xBD170CC1,
+/**/ 0x00000000, 0x3FEB4800,
+/**/ 0x55E6D8FE, 0x3F15F47D,
+/**/ 0x05430000, 0x3FC46877,
+/**/ 0xF8D5087E, 0xBD3D8145,
+/**/ 0x00000000, 0x3FEB4000,
+/**/ 0x0B803686, 0x3F37006D,
+/**/ 0xCCE6E000, 0x3FC483BC,
+/**/ 0x723F6369, 0x3D1EEA52,
+/**/ 0x00000000, 0x3FEB4000,
+/**/ 0x46A66920, 0xBF37687C,
+/**/ 0xC6314000, 0x3FC49EFC,
+/**/ 0x9F55572B, 0xBD090F59,
+/**/ 0x00000000, 0x3FEB3800,
+/**/ 0xFF2645BE, 0xBF16F6A4,
+/**/ 0xF39A6000, 0x3FC4BA36,
+/**/ 0xB3F219E5, 0xBD34354B,
+/**/ 0x00000000, 0x3FEB3000,
+/**/ 0x1801B318, 0x3F2801B3,
+/**/ 0x5798E000, 0x3FC4D56B,
+/**/ 0x15A96555, 0x3D380580,
+/**/ 0x00000000, 0x3FEB2800,
+/**/ 0x93511680, 0x3F3DD2FF,
+/**/ 0xF4A24000, 0x3FC4F099,
+/**/ 0xFAFEAF27, 0xBD3E9BF2,
+/**/ 0x00000000, 0x3FEB2800,
+/**/ 0xA89DCCAC, 0xBF304743,
+/**/ 0xCD29C000, 0x3FC50BC2,
+/**/ 0x28DB8D4F, 0x3D1ADA57,
+/**/ 0x00000000, 0x3FEB2000,
+/**/ 0x406C80D9, 0x3EFB2036,
+/**/ 0xE3A1C000, 0x3FC526E5,
+/**/ 0x37FC5238, 0xBD3790BA,
+/**/ 0x00000000, 0x3FEB1800,
+/**/ 0x4F9DC00E, 0x3F33BEC8,
+/**/ 0x3A7A8000, 0x3FC54203,
+/**/ 0xED855F0E, 0x3D268D68,
+/**/ 0x00000000, 0x3FEB1800,
+/**/ 0x44F8CE7E, 0xBF3A2101,
+/**/ 0xD4232000, 0x3FC55D1A,
+/**/ 0xDDA647E8, 0x3D3ADD94,
+/**/ 0x00000000, 0x3FEB1000,
+/**/ 0xB99AF3F3, 0xBF1FB596,
+/**/ 0xB3092000, 0x3FC5782C,
+/**/ 0x51794442, 0xBD33A463,
+/**/ 0x00000000, 0x3FEB0800,
+/**/ 0x922A3E85, 0x3F24B31D,
+/**/ 0xD9982000, 0x3FC59338,
+/**/ 0xB7555D4A, 0x3CF0BA68,
+/**/ 0x00000000, 0x3FEB0000,
+/**/ 0xE19BF6B7, 0x3F3CB3CF,
+/**/ 0x4A3AA000, 0x3FC5AE3F,
+/**/ 0xF012A8B9, 0x3D21EA25,
+/**/ 0x00000000, 0x3FEB0000,
+/**/ 0x9A5BF0D1, 0xBF30DEAE,
+/**/ 0x07598000, 0x3FC5C940,
+/**/ 0x8CD23322, 0xBD3A8D94,
+/**/ 0x00000000, 0x3FEAF800,
+/**/ 0x9EDE13CE, 0x3EFA2072,
+/**/ 0x135BE000, 0x3FC5E43B,
+/**/ 0xCEED9C31, 0xBD343AB4,
+/**/ 0x00000000, 0x3FEAF000,
+/**/ 0x0D79435E, 0x3F3435E5,
+/**/ 0x70A7A000, 0x3FC5FF30,
+/**/ 0x183BEBF2, 0xBD38586F,
+/**/ 0x00000000, 0x3FEAF000,
+/**/ 0x06855D30, 0xBF392321,
+/**/ 0x21A0E000, 0x3FC61A20,
+/**/ 0x1BDF3CDD, 0x3D3DD9DD,
+/**/ 0x00000000, 0x3FEAE800,
+/**/ 0x7ABED811, 0xBF19A45C,
+/**/ 0x28AAA000, 0x3FC6350A,
+/**/ 0xAB8163AF, 0x3D2D5EC0,
+/**/ 0x00000000, 0x3FEAE000,
+/**/ 0x84EF68CB, 0x3F28C7ED,
+/**/ 0x88260000, 0x3FC64FEE,
+/**/ 0x759DDED6, 0xBD1DA40D,
+/**/ 0x00000000, 0x3FEAD800,
+/**/ 0xA482F00D, 0x3F3F43FC,
+/**/ 0x4272A000, 0x3FC66ACD,
+/**/ 0xBFC6C785, 0x3D3AA1BD,
+/**/ 0x00000000, 0x3FEAD800,
+/**/ 0xCDE3E7AE, 0xBF2B9222,
+/**/ 0x59EF0000, 0x3FC685A6,
+/**/ 0x6C103214, 0xBD21F2A9,
+/**/ 0x00000000, 0x3FEAD000,
+/**/ 0xEED254A3, 0x3F14F302,
+/**/ 0xD0F7A000, 0x3FC6A079,
+/**/ 0x448D14F5, 0x3D35A3F8,
+/**/ 0x00000000, 0x3FEAC800,
+/**/ 0x32071DEF, 0x3F385567,
+/**/ 0xA9E80000, 0x3FC6BB47,
+/**/ 0x23EA3296, 0x3D19F64D,
+/**/ 0x00000000, 0x3FEAC800,
+/**/ 0xD47F29D4, 0xBF347F29,
+/**/ 0xE719E000, 0x3FC6D60F,
+/**/ 0x57134767, 0xBD3BC6E5,
+/**/ 0x00000000, 0x3FEAC000,
+/**/ 0xE82D23BC, 0xBEF40FE1,
+/**/ 0x8AE56000, 0x3FC6F0D2,
+/**/ 0xC93373DA, 0x3D369737,
+/**/ 0x00000000, 0x3FEAB800,
+/**/ 0x972D8538, 0x3F320FDE,
+/**/ 0x97A1A000, 0x3FC70B8F,
+/**/ 0xF6A95BEF, 0x3D34EA64,
+/**/ 0x00000000, 0x3FEAB800,
+/**/ 0x66711513, 0xBF3A8C9F,
+/**/ 0x0FA40000, 0x3FC72647,
+/**/ 0x0E743A45, 0xBD3774DF,
+/**/ 0x00000000, 0x3FEAB000,
+/**/ 0x02806ABC, 0xBF1C5A0F,
+/**/ 0xF5404000, 0x3FC740F8,
+/**/ 0x99018AA1, 0xBD30B66C,
+/**/ 0x00000000, 0x3FEAA800,
+/**/ 0xD22C937A, 0x3F28E44B,
+/**/ 0x4AC8E000, 0x3FC75BA5,
+/**/ 0x8BC4A7C0, 0x3D3DDCA5,
+/**/ 0x00000000, 0x3FEAA800,
+/**/ 0xFF2ADFF3, 0xBF3FF2AD,
+/**/ 0x128F2000, 0x3FC7764C,
+/**/ 0x3479E3D1, 0x3D027490,
+/**/ 0x00000000, 0x3FEAA000,
+/**/ 0x0B3ADA5C, 0xBF288A16,
+/**/ 0x4EE26000, 0x3FC790ED,
+/**/ 0x4E7746F6, 0x3D199BBD,
+/**/ 0x00000000, 0x3FEA9800,
+/**/ 0x4C77B035, 0x3F1DEC0D,
+/**/ 0x0210E000, 0x3FC7AB89,
+/**/ 0x72534A58, 0xBD2BDB90,
+/**/ 0x00000000, 0x3FEA9000,
+/**/ 0x91F59E6B, 0x3F3B4D71,
+/**/ 0x2E674000, 0x3FC7C61F,
+/**/ 0xB31BE8E0, 0xBD32392D,
+/**/ 0x00000000, 0x3FEA9000,
+/**/ 0xB8A2A522, 0xBF30CDCB,
+/**/ 0xD630C000, 0x3FC7E0AF,
+/**/ 0x1D8F1034, 0x3D139E7C,
+/**/ 0x00000000, 0x3FEA8800,
+/**/ 0x6A2194A0, 0x3F094A00,
+/**/ 0xFBB76000, 0x3FC7FB3A,
+/**/ 0x24609D57, 0xBD37DBF5,
+/**/ 0x00000000, 0x3FEA8000,
+/**/ 0x870AC52E, 0x3F373289,
+/**/ 0xA1436000, 0x3FC815C0,
+/**/ 0xF9201CE8, 0xBD302A52,
+/**/ 0x00000000, 0x3FEA8000,
+/**/ 0x9E8684DD, 0xBF34B1FA,
+/**/ 0xC91BC000, 0x3FC83040,
+/**/ 0xC6E66F32, 0x3D3E5B71,
+/**/ 0x00000000, 0x3FEA7800,
+/**/ 0xA9267648, 0xBEE08AF5,
+/**/ 0x75866000, 0x3FC84ABB,
+/**/ 0xDF4E2BD2, 0xBD3D8DAA,
+/**/ 0x00000000, 0x3FEA7000,
+/**/ 0x1A3D927E, 0x3F33BB67,
+/**/ 0xA8C70000, 0x3FC86530,
+/**/ 0xCB4EA3E3, 0x3D398BB0,
+/**/ 0x00000000, 0x3FEA7000,
+/**/ 0x7F2C97F3, 0xBF37F2C9,
+/**/ 0x6520C000, 0x3FC87FA0,
+/**/ 0x401202FC, 0x3D322120,
+/**/ 0x00000000, 0x3FEA6800,
+/**/ 0x3C076D20, 0xBF0C77A5,
+/**/ 0xACD4E000, 0x3FC89A0A,
+/**/ 0xDA8F5A72, 0x3D2C0BFB,
+/**/ 0x00000000, 0x3FEA6000,
+/**/ 0x7C7EF82B, 0x3F30E6DA,
+/**/ 0x82236000, 0x3FC8B46F,
+/**/ 0x102DD7C9, 0x3D12D9F2,
+/**/ 0x00000000, 0x3FEA6000,
+/**/ 0x2EC05C44, 0xBF3A9167,
+/**/ 0xE74AE000, 0x3FC8CECE,
+/**/ 0xAA429BB5, 0xBD3A5BA0,
+/**/ 0x00000000, 0x3FEA5800,
+/**/ 0xEEB6BD53, 0xBF17DF12,
+/**/ 0xDE886000, 0x3FC8E928,
+/**/ 0xB13D72D5, 0x3D3A8154,
+/**/ 0x00000000, 0x3FEA5000,
+/**/ 0x98C70AE6, 0x3F2D676D,
+/**/ 0x6A180000, 0x3FC9037D,
+/**/ 0x57C1C8D9, 0x3D230DEA,
+/**/ 0x00000000, 0x3FEA5000,
+/**/ 0x96CE4780, 0xBF3C8EFF,
+/**/ 0x8C340000, 0x3FC91DCC,
+/**/ 0xBDDEFF46, 0x3D37BC6A,
+/**/ 0x00000000, 0x3FEA4800,
+/**/ 0x71EFFCB7, 0xBF1EFFCB,
+/**/ 0x4715A000, 0x3FC93816,
+/**/ 0x6A3A39D9, 0xBD34C63D,
+/**/ 0x00000000, 0x3FEA4000,
+/**/ 0x1A41A41A, 0x3F2A41A4,
+/**/ 0x9CF46000, 0x3FC9525A,
+/**/ 0x7D9F158F, 0xBD329713,
+/**/ 0x00000000, 0x3FEA4000,
+/**/ 0xBF3B3C0E, 0xBF3DECBB,
+/**/ 0x9006A000, 0x3FC96C99,
+/**/ 0x9CBB452C, 0x3D2A88D5,
+/**/ 0x00000000, 0x3FEA3800,
+/**/ 0x3BCD35A8, 0xBF21D14E,
+/**/ 0x22818000, 0x3FC986D3,
+/**/ 0x4DD44000, 0x3CF93B56,
+/**/ 0x00000000, 0x3FEA3000,
+/**/ 0x3B5832C0, 0x3F285A0A,
+/**/ 0x56988000, 0x3FC9A107,
+/**/ 0x242CD098, 0x3D264AA6,
+/**/ 0x00000000, 0x3FEA3000,
+/**/ 0xD71AFD8C, 0xBF3EABC1,
+/**/ 0x2E7E0000, 0x3FC9BB36,
+/**/ 0xA1CE0FFC, 0xBD21F2A8,
+/**/ 0x00000000, 0x3FEA2800,
+/**/ 0x7C041611, 0xBF22E60D,
+/**/ 0xAC62E000, 0x3FC9D55F,
+/**/ 0xFC3B5BC3, 0xBD3F4669,
+/**/ 0x00000000, 0x3FEA2000,
+/**/ 0x5FF2EF43, 0x3F27AE57,
+/**/ 0xD276A000, 0x3FC9EF83,
+/**/ 0xB3F9CE00, 0xBD2730B7,
+/**/ 0x00000000, 0x3FEA2000,
+/**/ 0x3D66322E, 0xBF3ECD35,
+/**/ 0xA2E7A000, 0x3FCA09A2,
+/**/ 0xCD411233, 0xBD2DD99D,
+/**/ 0x00000000, 0x3FEA1800,
+/**/ 0x5B4FE5E9, 0xBF22C068,
+/**/ 0x1FE2C000, 0x3FCA23BC,
+/**/ 0x91DC9F0B, 0xBD3539CD,
+/**/ 0x00000000, 0x3FEA1000,
+/**/ 0x80B67A9A, 0x3F283C48,
+/**/ 0x4B938000, 0x3FCA3DD0,
+/**/ 0x366E2C5A, 0x3D297DA1,
+/**/ 0x00000000, 0x3FEA1000,
+/**/ 0x89907BBA, 0xBF3E5236,
+/**/ 0x28244000, 0x3FCA57DF,
+/**/ 0xCA1D9ABB, 0x3D3B99C8,
+/**/ 0x00000000, 0x3FEA0800,
+/**/ 0x32054967, 0xBF21629E,
+/**/ 0xB7BE0000, 0x3FCA71E8,
+/**/ 0x6EF05323, 0xBD210ACA,
+/**/ 0x00000000, 0x3FEA0000,
+/**/ 0x1A01A01A, 0x3F2A01A0,
+/**/ 0xFC882000, 0x3FCA8BEC,
+/**/ 0xCF21B9CF, 0x3D3E3185,
+/**/ 0x00000000, 0x3FEA0000,
+/**/ 0x93FF301D, 0xBF3D3BE3,
+/**/ 0xF8A94000, 0x3FCAA5EB,
+/**/ 0x36951A8F, 0xBD32A0A9,
+/**/ 0x00000000, 0x3FE9F800,
+/**/ 0xBFE608ED, 0xBF1D9DD1,
+/**/ 0xAE462000, 0x3FCABFE5,
+/**/ 0x395F139D, 0xBD3B68F5,
+/**/ 0x00000000, 0x3FE9F000,
+/**/ 0x1B29257F, 0x3F2CFC26,
+/**/ 0x1F828000, 0x3FCAD9DA,
+/**/ 0xC803F050, 0xBD3882B7,
+/**/ 0x00000000, 0x3FE9F000,
+/**/ 0x7E613717, 0xBF3B8B57,
+/**/ 0x4E80C000, 0x3FCAF3C9,
+/**/ 0x3FCD9066, 0xBCBA4E63,
+/**/ 0x00000000, 0x3FE9E800,
+/**/ 0xB9FABD04, 0xBF160EF9,
+/**/ 0x3D620000, 0x3FCB0DB3,
+/**/ 0x38EAB906, 0x3D3FEE14,
+/**/ 0x00000000, 0x3FE9E000,
+/**/ 0xEAF850E2, 0x3F3094D3,
+/**/ 0xEE464000, 0x3FCB2797,
+/**/ 0x906D00A9, 0xBD3BE88A,
+/**/ 0x00000000, 0x3FE9E000,
+/**/ 0xBBE88FDC, 0xBF3941AA,
+/**/ 0x634BA000, 0x3FCB4177,
+/**/ 0x5666069F, 0x3D355D01,
+/**/ 0x00000000, 0x3FE9D800,
+/**/ 0x25F4B1AA, 0xBF083A25,
+/**/ 0x9E8FC000, 0x3FCB5B51,
+/**/ 0xEC011F31, 0xBD34B722,
+/**/ 0x00000000, 0x3FE9D000,
+/**/ 0xF71FAC14, 0x3F3343FB,
+/**/ 0xA22E4000, 0x3FCB7526,
+/**/ 0x2E785490, 0x3D2C0DBF,
+/**/ 0x00000000, 0x3FE9D000,
+/**/ 0x1965FF32, 0xBF365FF3,
+/**/ 0x70420000, 0x3FCB8EF6,
+/**/ 0x321788E0, 0x3D387533,
+/**/ 0x00000000, 0x3FE9C800,
+/**/ 0x9C8019C8, 0x3EA9C801,
+/**/ 0x0AE46000, 0x3FCBA8C1,
+/**/ 0x9EEE9D85, 0x3D3A32E2,
+/**/ 0x00000000, 0x3FE9C000,
+/**/ 0x25080CE1, 0x3F368A77,
+/**/ 0x742D8000, 0x3FCBC286,
+/**/ 0xF39D121C, 0x3D39AC53,
+/**/ 0x00000000, 0x3FE9C000,
+/**/ 0xC54763F2, 0xBF32E743,
+/**/ 0xAE344000, 0x3FCBDC46,
+/**/ 0x023D6505, 0x3D3625B4,
+/**/ 0x00000000, 0x3FE9B800,
+/**/ 0x8B7424F9, 0x3F0DBD49,
+/**/ 0xBB0E4000, 0x3FCBF601,
+/**/ 0x47C378B5, 0x3D2386A9,
+/**/ 0x00000000, 0x3FE9B000,
+/**/ 0x00CD9A67, 0x3F3A6734,
+/**/ 0x9CCFE000, 0x3FCC0FB7,
+/**/ 0x99E8A558, 0xBD346FFF,
+/**/ 0x00000000, 0x3FE9B000,
+/**/ 0xAEF25B7C, 0xBF2DB15A,
+/**/ 0x558C2000, 0x3FCC2968,
+/**/ 0xDEE38A40, 0xBD2CFD73,
+/**/ 0x00000000, 0x3FE9A800,
+/**/ 0xC140C073, 0x3F1FDFEC,
+/**/ 0xE754E000, 0x3FCC4313,
+/**/ 0x74CAD7D6, 0x3D3279BE,
+/**/ 0x00000000, 0x3FE9A000,
+/**/ 0xA7DCBEB3, 0x3F3ED923,
+/**/ 0x543AE000, 0x3FCC5CBA,
+/**/ 0xECB454FC, 0x3D20929D,
+/**/ 0x00000000, 0x3FE9A000,
+/**/ 0xB256DE2C, 0xBF246A7B,
+/**/ 0x9E4D6000, 0x3FCC765B,
+/**/ 0x36976F6C, 0x3D31AB6B,
+/**/ 0x00000000, 0x3FE99800,
+/**/ 0x9999999A, 0x3F299999,
+/**/ 0xC79AA000, 0x3FCC8FF7,
+/**/ 0x689F8434, 0xBD27794F,
+/**/ 0x00000000, 0x3FE99800,
+/**/ 0x3EC03FF3, 0xBF3C20C6,
+/**/ 0xD22F6000, 0x3FCCA98E,
+/**/ 0x8CA209C8, 0xBCF698C1,
+/**/ 0x00000000, 0x3FE99000,
+/**/ 0x31EC07FD, 0xBF13F803,
+/**/ 0xC0176000, 0x3FCCC320,
+/**/ 0x9A653794, 0x3D240903,
+/**/ 0x00000000, 0x3FE98800,
+/**/ 0x5AC98715, 0x3F323513,
+/**/ 0x935D2000, 0x3FCCDCAD,
+/**/ 0x34C9A447, 0xBD0A0FF0,
+/**/ 0x00000000, 0x3FE98800,
+/**/ 0x89F80661, 0xBF368793,
+/**/ 0x4E09C000, 0x3FCCF635,
+/**/ 0x9A07D55B, 0x3D277123,
+/**/ 0x00000000, 0x3FE98000,
+/**/ 0x8019801A, 0x3EE98019,
+/**/ 0xF2256000, 0x3FCD0FB7,
+/**/ 0x20633B29, 0xBD0AF52B,
+/**/ 0x00000000, 0x3FE97800,
+/**/ 0xAB329020, 0x3F382FC6,
+/**/ 0x81B6C000, 0x3FCD2935,
+/**/ 0x128AAA5F, 0xBD383270,
+/**/ 0x00000000, 0x3FE97800,
+/**/ 0x962DBFF3, 0xBF305C4B,
+/**/ 0xFEC36000, 0x3FCD42AD,
+/**/ 0xFD804272, 0xBD175C00,
+/**/ 0x00000000, 0x3FE97000,
+/**/ 0x970E4F81, 0x3F1C9F01,
+/**/ 0x6B4FC000, 0x3FCD5C21,
+/**/ 0xBBCA681B, 0xBD21BA91,
+/**/ 0x00000000, 0x3FE96800,
+/**/ 0x049160B8, 0x3F3EBBE1,
+/**/ 0xC95F0000, 0x3FCD758F,
+/**/ 0x8B4162AA, 0xBD15A10A,
+/**/ 0x00000000, 0x3FE96800,
+/**/ 0x9933FE6A, 0xBF233FE6,
+/**/ 0x1AF32000, 0x3FCD8EF9,
+/**/ 0xC364C784, 0xBD15105F,
+/**/ 0x00000000, 0x3FE96000,
+/**/ 0xCE078906, 0x3F2C2873,
+/**/ 0x620CE000, 0x3FCDA85D,
+/**/ 0xC16CC7EC, 0x3D240194,
+/**/ 0x00000000, 0x3FE96000,
+/**/ 0xE442936B, 0xBF3A27A0,
+/**/ 0xA0ABE000, 0x3FCDC1BC,
+/**/ 0xA628CCC6, 0x3D38FAC1,
+/**/ 0x00000000, 0x3FE95800,
+/**/ 0x548A97A9, 0xBF029C69,
+/**/ 0xD8CEA000, 0x3FCDDB16,
+/**/ 0x7104B8BC, 0xBD1EEF79,
+/**/ 0x00000000, 0x3FE95000,
+/**/ 0x9F74B92D, 0x3F35906B,
+/**/ 0x0C722000, 0x3FCDF46C,
+/**/ 0xB0B79039, 0x3D3A5E82,
+/**/ 0x00000000, 0x3FE95000,
+/**/ 0xF35927BC, 0xBF327BBF,
+/**/ 0x3D92A000, 0x3FCE0DBC,
+/**/ 0xF0529BF1, 0x3D359233,
+/**/ 0x00000000, 0x3FE94800,
+/**/ 0xDD3C0CA4, 0x3F161F9A,
+/**/ 0x6E2B0000, 0x3FCE2707,
+/**/ 0x2AF0003C, 0xBD3A342C,
+/**/ 0x00000000, 0x3FE94000,
+/**/ 0x41228A8F, 0x3F3D9B56,
+/**/ 0xA034C000, 0x3FCE404D,
+/**/ 0xE09A2799, 0xBD3187EE,
+/**/ 0x00000000, 0x3FE94000,
+/**/ 0x598A73F8, 0xBF2482F5,
+/**/ 0xD5A88000, 0x3FCE598E,
+/**/ 0xCF1E98A1, 0xBD0D134B,
+/**/ 0x00000000, 0x3FE93800,
+/**/ 0x3C1B9728, 0x3F2BE2D5,
+/**/ 0x107DA000, 0x3FCE72CB,
+/**/ 0xCDF5471C, 0x3D1DD48C,
+/**/ 0x00000000, 0x3FE93800,
+/**/ 0x2698CFF3, 0xBF39CC03,
+/**/ 0x52AA6000, 0x3FCE8C02,
+/**/ 0x80E8E6FF, 0xBD26805B,
+/**/ 0x00000000, 0x3FE93000,
+/**/ 0xB9F30358, 0xBEF79CD3,
+/**/ 0x9E23A000, 0x3FCEA534,
+/**/ 0x4C73CCB5, 0x3D381B93,
+/**/ 0x00000000, 0x3FE92800,
+/**/ 0x255BA00D, 0x3F36E803,
+/**/ 0xF4DD8000, 0x3FCEBE61,
+/**/ 0x30FDCA4D, 0xBD23D453,
+/**/ 0x00000000, 0x3FE92800,
+/**/ 0x36077742, 0xBF30A69B,
+/**/ 0x58CA8000, 0x3FCED78A,
+/**/ 0x3793387E, 0x3D16F1B5,
+/**/ 0x00000000, 0x3FE92000,
+/**/ 0x1C451AB3, 0x3F1F693A,
+/**/ 0xCBDC6000, 0x3FCEF0AD,
+/**/ 0x9C86AF24, 0xBD2B26B7,
+/**/ 0x00000000, 0x3FE92000,
+/**/ 0xC74EA9E2, 0xBF3F9548,
+/**/ 0x50036000, 0x3FCF09CC,
+/**/ 0x18D999DB, 0x3D3DA094,
+/**/ 0x00000000, 0x3FE91800,
+/**/ 0xF7C46911, 0xBF1BD5A8,
+/**/ 0xE72F2000, 0x3FCF22E5,
+/**/ 0x1417E41F, 0xBD3F454F,
+/**/ 0x00000000, 0x3FE91000,
+/**/ 0x0D83D1C6, 0x3F31B9E1,
+/**/ 0x934D6000, 0x3FCF3BFA,
+/**/ 0x937B903B, 0x3D2D9F2A,
+/**/ 0x00000000, 0x3FE91000,
+/**/ 0xF3795877, 0xBF35876F,
+/**/ 0x564B8000, 0x3FCF550A,
+/**/ 0xA09202FE, 0xBD2323E3,
+/**/ 0x00000000, 0x3FE90800,
+/**/ 0xBD1D87EC, 0x3F0A34CD,
+/**/ 0x32154000, 0x3FCF6E15,
+/**/ 0x7AC4EC74, 0xBD3C9A97,
+/**/ 0x00000000, 0x3FE90000,
+/**/ 0x0E760899, 0x3F3C23F5,
+/**/ 0x28956000, 0x3FCF871B,
+/**/ 0x6A526EFE, 0xBD3F75FD,
+/**/ 0x00000000, 0x3FE90000,
+/**/ 0xD0BE9594, 0xBF25DECD,
+/**/ 0x3BB58000, 0x3FCFA01C,
+/**/ 0xFAE1D786, 0xBD1A1F71,
+/**/ 0x00000000, 0x3FE8F800,
+/**/ 0xC18F9C19, 0x3F2C18F9,
+/**/ 0x6D5E4000, 0x3FCFB918,
+/**/ 0xAB993C87, 0xBD0D572A,
+/**/ 0x00000000, 0x3FE8F800,
+/**/ 0x8176594C, 0xBF38E868,
+/**/ 0xBF770000, 0x3FCFD20F,
+/**/ 0x72C6FE70, 0xBD11C55B,
+/**/ 0x00000000, 0x3FE8F000,
+/**/ 0x3C018F00, 0x3EC8F006,
+/**/ 0x33E60000, 0x3FCFEB02,
+/**/ 0x32D5E8C7, 0x3D2F316E,
+/**/ 0x00000000, 0x3FE8E800,
+/**/ 0xAD115384, 0x3F395B4D,
+/**/ 0xE6484000, 0x3FD001F7,
+/**/ 0x40C9ABBC, 0x3D38A957,
+/**/ 0x00000000, 0x3FE8E800,
+/**/ 0xEC8C0F90, 0xBF2AD850,
+/**/ 0x45AD5000, 0x3FD00E6C,
+/**/ 0x52E01203, 0x3CDCC68D,
+/**/ 0x00000000, 0x3FE8E000,
+/**/ 0xA56B1AA1, 0x3F27B6E9,
+/**/ 0x3913A000, 0x3FD01ADE,
+/**/ 0xCCDC1521, 0xBD108930,
+/**/ 0x00000000, 0x3FE8E000,
+/**/ 0x40DFC1D8, 0xBF3ACDE3,
+/**/ 0xC16C2000, 0x3FD0274D,
+/**/ 0x9CF835C2, 0x3D2979E8,
+/**/ 0x00000000, 0x3FE8D800,
+/**/ 0x317DF64C, 0xBEF68397,
+/**/ 0xDFA74000, 0x3FD033BA,
+/**/ 0x1485BDFF, 0x3D0C30BC,
+/**/ 0x00000000, 0x3FE8D000,
+/**/ 0x80C6980C, 0x3F380C69,
+/**/ 0x94B4D000, 0x3FD04025,
+/**/ 0x9EF42D7F, 0x3CF036B8,
+/**/ 0x00000000, 0x3FE8D000,
+/**/ 0x338C7FE7, 0xBF2CE006,
+/**/ 0xE1842000, 0x3FD04C8D,
+/**/ 0x512CEB86, 0xBD1FE6BA,
+/**/ 0x00000000, 0x3FE8C800,
+/**/ 0x1EFBBD63, 0x3F2644F0,
+/**/ 0xC703F000, 0x3FD058F3,
+/**/ 0xBCD236AD, 0xBD30E866,
+/**/ 0x00000000, 0x3FE8C800,
+/**/ 0xAA79217A, 0xBF3B3C2D,
+/**/ 0x46227000, 0x3FD06557,
+/**/ 0xB4868D6A, 0x3D0131DF,
+/**/ 0x00000000, 0x3FE8C000,
+/**/ 0x8062FF3A, 0xBEF8BFCE,
+/**/ 0x5FCD6000, 0x3FD071B8,
+/**/ 0xA3E01A11, 0xBD3BCB8B,
+/**/ 0x00000000, 0x3FE8B800,
+/**/ 0xBD2672C4, 0x3F383301,
+/**/ 0x14F1D000, 0x3FD07E17,
+/**/ 0x4F384BD5, 0xBD3EFCC6,
+/**/ 0x00000000, 0x3FE8B800,
+/**/ 0x9BFE749C, 0xBF2BFE74,
+/**/ 0x667C5000, 0x3FD08A73,
+/**/ 0x40C5A329, 0x3D3EBC1D,
+/**/ 0x00000000, 0x3FE8B000,
+/**/ 0xD4353EB3, 0x3F27BA8C,
+/**/ 0x55591000, 0x3FD096CD,
+/**/ 0x20550A31, 0x3D3F998D,
+/**/ 0x00000000, 0x3FE8B000,
+/**/ 0xA062B2E4, 0xBF3A3784,
+/**/ 0xE2739000, 0x3FD0A324,
+/**/ 0x7EF4030E, 0x3D0C6BEE,
+/**/ 0x00000000, 0x3FE8A800,
+/**/ 0x5E630281, 0xBECED1F6,
+/**/ 0x0EB6C000, 0x3FD0AF7A,
+/**/ 0x4945ADAD, 0x3D23CCF9,
+/**/ 0x00000000, 0x3FE8A000,
+/**/ 0x0C519CAE, 0x3F39CAE0,
+/**/ 0xDB0D2000, 0x3FD0BBCC,
+/**/ 0xCC5DCDFB, 0x3D32F32C,
+/**/ 0x00000000, 0x3FE8A000,
+/**/ 0x4EDBA5FD, 0xBF283C02,
+/**/ 0x4860B000, 0x3FD0C81D,
+/**/ 0x401D1731, 0xBD3E5BCF,
+/**/ 0x00000000, 0x3FE89800,
+/**/ 0x1899C0F6, 0x3F2C0F60,
+/**/ 0x579AB000, 0x3FD0D46B,
+/**/ 0xF640E1E6, 0x3D3D2C81,
+/**/ 0x00000000, 0x3FE89800,
+/**/ 0xBDBE51D0, 0xBF37C414,
+/**/ 0x09A43000, 0x3FD0E0B7,
+/**/ 0xA7862F2A, 0x3D32A038,
+/**/ 0x00000000, 0x3FE89000,
+/**/ 0xDD12CE7D, 0x3F03F540,
+/**/ 0x5F658000, 0x3FD0ED00,
+/**/ 0x285AA803, 0xBD22DC75,
+/**/ 0x00000000, 0x3FE88800,
+/**/ 0x400C45CD, 0x3F3CCFDE,
+/**/ 0x59C67000, 0x3FD0F947,
+/**/ 0x7F0818B6, 0xBD395261,
+/**/ 0x00000000, 0x3FE88800,
+/**/ 0x44FB66B5, 0xBF21A0F5,
+/**/ 0xF9AE5000, 0x3FD1058B,
+/**/ 0x817D52CD, 0xBD34AB9D,
+/**/ 0x00000000, 0x3FE88000,
+/**/ 0x2866A138, 0x3F319D95,
+/**/ 0x4003F000, 0x3FD111CE,
+/**/ 0x096B4B6B, 0xBD1B3237,
+/**/ 0x00000000, 0x3FE88000,
+/**/ 0xA48B49DA, 0xBF33E5FA,
+/**/ 0x2DADA000, 0x3FD11E0E,
+/**/ 0x8FCCE5BA, 0xBD2A47F8,
+/**/ 0x00000000, 0x3FE87800,
+/**/ 0xDEECB0A8, 0x3F1A9336,
+/**/ 0xC3912000, 0x3FD12A4B,
+/**/ 0x61473259, 0xBD35A750,
+/**/ 0x00000000, 0x3FE87800,
+/**/ 0xFB6A388D, 0xBF3EC219,
+/**/ 0x0293B000, 0x3FD13687,
+/**/ 0x99D67123, 0xBD3D3E84,
+/**/ 0x00000000, 0x3FE87000,
+/**/ 0xC1625090, 0xBF106AE7,
+/**/ 0xEB9A0000, 0x3FD142BF,
+/**/ 0x85B58A9E, 0x3D31CE61,
+/**/ 0x00000000, 0x3FE86800,
+/**/ 0xACD4200C, 0x3F369AE5,
+/**/ 0x7F887000, 0x3FD14EF6,
+/**/ 0x5DFC9794, 0xBD3E97A6,
+/**/ 0x00000000, 0x3FE86800,
+/**/ 0x9389D11C, 0xBF2D4286,
+/**/ 0xBF429000, 0x3FD15B2A,
+/**/ 0x49B629B2, 0xBD2D8E3B,
+/**/ 0x00000000, 0x3FE86000,
+/**/ 0x18618618, 0x3F286186,
+/**/ 0xABABA000, 0x3FD1675C,
+/**/ 0x731F55C4, 0x3D38380E,
+/**/ 0x00000000, 0x3FE86000,
+/**/ 0x6AC71708, 0xBF38EF0F,
+/**/ 0x45A67000, 0x3FD1738C,
+/**/ 0x0032C176, 0xBD39C6E9,
+/**/ 0x00000000, 0x3FE85800,
+/**/ 0xE00C2C20, 0x3EFFF3D3,
+/**/ 0x8E151000, 0x3FD17FB9,
+/**/ 0xA74A2684, 0xBD3A8A8B,
+/**/ 0x00000000, 0x3FE85000,
+/**/ 0xF9592266, 0x3F3CFBA0,
+/**/ 0x85D93000, 0x3FD18BE4,
+/**/ 0x6F3604AB, 0x3D3C167F,
+/**/ 0x00000000, 0x3FE85000,
+/**/ 0xFF3D87FA, 0xBF1FE7B0,
+/**/ 0x2DD42000, 0x3FD1980D,
+/**/ 0x7A361C9A, 0x3D2B7B3A,
+/**/ 0x00000000, 0x3FE84800,
+/**/ 0x918DC223, 0x3F331E8D,
+/**/ 0x86E68000, 0x3FD1A433,
+/**/ 0x634E0AAC, 0xBD07A850,
+/**/ 0x00000000, 0x3FE84800,
+/**/ 0x8D76B549, 0xBF31BAF9,
+/**/ 0x91F08000, 0x3FD1B057,
+/**/ 0x6DC55E2D, 0xBD32DD46,
+/**/ 0x00000000, 0x3FE84000,
+/**/ 0xDC90C512, 0x3F22F2EC,
+/**/ 0x4FD1D000, 0x3FD1BC79,
+/**/ 0x747BA7BE, 0xBD3CCF0C,
+/**/ 0x00000000, 0x3FE84000,
+/**/ 0x6A0916B9, 0xBF3B442A,
+/**/ 0xC169A000, 0x3FD1C898,
+/**/ 0xE5C62AFF, 0xBD381410,
+/**/ 0x00000000, 0x3FE83800,
+/**/ 0x83801838, 0x3EA83801,
+/**/ 0xE796A000, 0x3FD1D4B5,
+/**/ 0xD197BAC2, 0x3D222A5B,
+/**/ 0x00000000, 0x3FE83000,
+/**/ 0xCBD11C5C, 0x3F3B6A41,
+/**/ 0xC3371000, 0x3FD1E0D0,
+/**/ 0xA9B0D4A0, 0x3D3AF8F2,
+/**/ 0x00000000, 0x3FE83000,
+/**/ 0xCB7A3CD6, 0xBF225381,
+/**/ 0x5528B000, 0x3FD1ECE9,
+/**/ 0x09B4A3B8, 0xBD184E7B,
+/**/ 0x00000000, 0x3FE82800,
+/**/ 0x152500C1, 0x3F32500C,
+/**/ 0x9E48A000, 0x3FD1F8FF,
+/**/ 0x040CBE77, 0x3D27946C,
+/**/ 0x00000000, 0x3FE82800,
+/**/ 0x14902134, 0xBF32285F,
+/**/ 0x9F73B000, 0x3FD20513,
+/**/ 0x1609E0A4, 0x3CF6E15E,
+/**/ 0x00000000, 0x3FE82000,
+/**/ 0xA4018213, 0x3F22D9EB,
+/**/ 0x59861000, 0x3FD21125,
+/**/ 0xBA2950C4, 0x3D382E78,
+/**/ 0x00000000, 0x3FE82000,
+/**/ 0xFC6BBFF4, 0xBF3AEFFC,
+/**/ 0xCD5B9000, 0x3FD21D34,
+/**/ 0xB28BADAA, 0x3D3B552F,
+/**/ 0x00000000, 0x3FE81800,
+/**/ 0x18181818, 0x3EE81818,
+/**/ 0xFBCF8000, 0x3FD22941,
+/**/ 0xF5EB0963, 0xBD3A6976,
+/**/ 0x00000000, 0x3FE81000,
+/**/ 0x4FF0F3C6, 0x3F3C7F27,
+/**/ 0xE5BC9000, 0x3FD2354C,
+/**/ 0x0602A663, 0xBD3D78ED,
+/**/ 0x00000000, 0x3FE81000,
+/**/ 0x0A86941D, 0xBF1ED344,
+/**/ 0x8BFD1000, 0x3FD24155,
+/**/ 0x3228FCAD, 0x3D300FFF,
+/**/ 0x00000000, 0x3FE80800,
+/**/ 0x1B0BD52D, 0x3F3424D0,
+/**/ 0xEF6AF000, 0x3FD24D5B,
+/**/ 0xFC9FABDD, 0xBCBDD780,
+/**/ 0x00000000, 0x3FE80800,
+/**/ 0xFE7F9FE8, 0xBF2FE7F9,
+/**/ 0x10DF7000, 0x3FD25960,
+/**/ 0x224EA3E3, 0x3D38E7BC,
+/**/ 0x00000000, 0x3FE80000,
+/**/ 0x18018018, 0x3F280180,
+/**/ 0xF1338000, 0x3FD26561,
+/**/ 0x66FAA45F, 0x3D38B488,
+/**/ 0x00000000, 0x3FE80000,
+/**/ 0x5FF40180, 0xBF37FD00,
+/**/ 0x913F8000, 0x3FD27161,
+/**/ 0xF61564B4, 0x3D34F4F1,
+/**/ 0x00000000, 0x3FE7F800,
+/**/ 0x9750B6C7, 0x3F104AE8,
+/**/ 0xF1DB6000, 0x3FD27D5E,
+/**/ 0x78CAC9F4, 0xBD092374,
+/**/ 0x00000000, 0x3FE7F800,
+/**/ 0xF405FD01, 0xBF3FD017,
+/**/ 0x13DE8000, 0x3FD2895A,
+/**/ 0xD24C13F0, 0x3D3A8D7A,
+/**/ 0x00000000, 0x3FE7F000,
+/**/ 0xC9C5485E, 0xBF0D2BF1,
+/**/ 0xF81FF000, 0x3FD29552,
+/**/ 0x1771C408, 0x3D348D30,
+/**/ 0x00000000, 0x3FE7E800,
+/**/ 0xD029DB60, 0x3F38927F,
+/**/ 0x9F763000, 0x3FD2A149,
+/**/ 0x51F3AADC, 0xBD30DBBF,
+/**/ 0x00000000, 0x3FE7E800,
+/**/ 0xB0A45169, 0xBF26504A,
+/**/ 0x0AB73000, 0x3FD2AD3E,
+/**/ 0x488C359F, 0x3D2B972E,
+/**/ 0x00000000, 0x3FE7E000,
+/**/ 0xD278E8DD, 0x3F312A8A,
+/**/ 0x3AB8A000, 0x3FD2B930,
+/**/ 0xD6BFB0A5, 0xBD26DB12,
+/**/ 0x00000000, 0x3FE7E000,
+/**/ 0x24BB32E7, 0xBF327577,
+/**/ 0x304F8000, 0x3FD2C520,
+/**/ 0x8C342F39, 0x3D230852,
+/**/ 0x00000000, 0x3FE7D800,
+/**/ 0xA4B45AEC, 0x3F23EF9A,
+/**/ 0xEC508000, 0x3FD2D10D,
+/**/ 0xF7088353, 0x3D360C61,
+/**/ 0x00000000, 0x3FE7D800,
+/**/ 0x32748CC1, 0xBF398DAF,
+/**/ 0x6F8FD000, 0x3FD2DCF9,
+/**/ 0x8E33C9CE, 0x3D20B4A2,
+/**/ 0x00000000, 0x3FE7D000,
+/**/ 0x417D05F4, 0x3F07D05F,
+/**/ 0xBAE12000, 0x3FD2E8E2,
+/**/ 0x99B72BD8, 0xBD267B1E,
+/**/ 0x00000000, 0x3FE7C800,
+/**/ 0x431D3027, 0x3F3F8EF7,
+/**/ 0xCF17A000, 0x3FD2F4C9,
+/**/ 0x9374B87B, 0x3D371F04,
+/**/ 0x00000000, 0x3FE7C800,
+/**/ 0xDAD83E6C, 0xBF0E77A3,
+/**/ 0xAD063000, 0x3FD300AE,
+/**/ 0x8B75FCAC, 0x3D342F56,
+/**/ 0x00000000, 0x3FE7C000,
+/**/ 0x588D1676, 0x3F38E041,
+/**/ 0x557F2000, 0x3FD30C91,
+/**/ 0xA1451755, 0xBD142958,
+/**/ 0x00000000, 0x3FE7C000,
+/**/ 0x1FE8414C, 0xBF24C6DD,
+/**/ 0xC9544000, 0x3FD31871,
+/**/ 0x94CECFD9, 0x3D184FAB,
+/**/ 0x00000000, 0x3FE7B800,
+/**/ 0x81C2D3B2, 0x3F3265F4,
+/**/ 0x09570000, 0x3FD32450,
+/**/ 0x9BDAE59D, 0x3D3D271B,
+/**/ 0x00000000, 0x3FE7B800,
+/**/ 0xB6466407, 0xBF30C39C,
+/**/ 0x16586000, 0x3FD3302C,
+/**/ 0xC2A3E08B, 0x3D36217D,
+/**/ 0x00000000, 0x3FE7B000,
+/**/ 0x12B21224, 0x3F283FAD,
+/**/ 0xF128E000, 0x3FD33C05,
+/**/ 0x380E1A7D, 0xBD22B906,
+/**/ 0x00000000, 0x3FE7B000,
+/**/ 0xF899E55D, 0xBF36EFB8,
+/**/ 0x9A988000, 0x3FD347DD,
+/**/ 0xD4C58092, 0xBD25594D,
+/**/ 0x00000000, 0x3FE7A800,
+/**/ 0x3FF42B9F, 0x3F1836B6,
+/**/ 0x1376E000, 0x3FD353B3,
+/**/ 0xE6C26D9B, 0xBD1331AF,
+/**/ 0x00000000, 0x3FE7A800,
+/**/ 0x0B739FF4, 0xBF3CE7FD,
+/**/ 0x5C933000, 0x3FD35F86,
+/**/ 0x4EA1A54A, 0xBD3B07DE,
+/**/ 0x00000000, 0x3FE7A000,
+/**/ 0xE8017A00, 0x3EC7A005,
+/**/ 0x76BC1000, 0x3FD36B57,
+/**/ 0x5A9C223F, 0x3D116978,
+/**/ 0x00000000, 0x3FE79800,
+/**/ 0xB1CC5B7B, 0x3F3D535D,
+/**/ 0x62BFE000, 0x3FD37726,
+/**/ 0xAC53B023, 0xBD3E9436,
+/**/ 0x00000000, 0x3FE79800,
+/**/ 0xE0DA37A9, 0xBF15EEAC,
+/**/ 0x216C5000, 0x3FD382F3,
+/**/ 0x1D1A7F6D, 0xBD1061D2,
+/**/ 0x00000000, 0x3FE79000,
+/**/ 0x344E16D6, 0x3F37C21E,
+/**/ 0xB38ED000, 0x3FD38EBD,
+/**/ 0xE67D4CA0, 0x3D290582,
+/**/ 0x00000000, 0x3FE79000,
+/**/ 0x39C9E465, 0xBF25E69A,
+/**/ 0x19F45000, 0x3FD39A86,
+/**/ 0x937354F5, 0x3D18EE51,
+/**/ 0x00000000, 0x3FE78800,
+/**/ 0xC52640BC, 0x3F32640B,
+/**/ 0x55694000, 0x3FD3A64C,
+/**/ 0xBCD735D0, 0x3D37A71C,
+/**/ 0x00000000, 0x3FE78800,
+/**/ 0x2F6A09ED, 0xBF3037DE,
+/**/ 0x66B9C000, 0x3FD3B210,
+/**/ 0x9811560E, 0xBD33C1ED,
+/**/ 0x00000000, 0x3FE78000,
+/**/ 0x01781A72, 0x3F2A71DC,
+/**/ 0x4EB15000, 0x3FD3BDD2,
+/**/ 0x970E6ED9, 0xBD3257B4,
+/**/ 0x00000000, 0x3FE78000,
+/**/ 0xA9EEBFF4, 0xBF354996,
+/**/ 0x0E1B2000, 0x3FD3C992,
+/**/ 0xAA680B76, 0x3D141C28,
+/**/ 0x00000000, 0x3FE77800,
+/**/ 0xAC60D341, 0x3F208119,
+/**/ 0xA5C1F000, 0x3FD3D54F,
+/**/ 0xD9A395E3, 0x3D3C3E1C,
+/**/ 0x00000000, 0x3FE77800,
+/**/ 0x742E2DD0, 0xBF3A28AE,
+/**/ 0x16701000, 0x3FD3E10B,
+/**/ 0x145429C7, 0x3D3F3BCF,
+/**/ 0x00000000, 0x3FE77000,
+/**/ 0x36340177, 0x3F0BD584,
+/**/ 0x60EF6000, 0x3FD3ECC4,
+/**/ 0x27C1300F, 0xBD060286,
+/**/ 0x00000000, 0x3FE77000,
+/**/ 0x240C7174, 0xBF3ED55D,
+/**/ 0x86094000, 0x3FD3F87B,
+/**/ 0x54589889, 0xBD35DFD7,
+/**/ 0x00000000, 0x3FE76800,
+/**/ 0xAB277F45, 0xBEF18DE5,
+/**/ 0x8686A000, 0x3FD40430,
+/**/ 0x3049F7D3, 0x3D3F8EF4,
+/**/ 0x00000000, 0x3FE76000,
+/**/ 0x01D3C7B8, 0x3F3CB026,
+/**/ 0x63303000, 0x3FD40FE3,
+/**/ 0xE79F05C6, 0x3D3E5C5F,
+/**/ 0x00000000, 0x3FE76000,
+/**/ 0xA9D08664, 0xBF15E95B,
+/**/ 0x1CCE1000, 0x3FD41B94,
+/**/ 0x13E43FC9, 0xBD304690,
+/**/ 0x00000000, 0x3FE75800,
+/**/ 0x097CFD43, 0x3F3867A4,
+/**/ 0xB427E000, 0x3FD42742,
+/**/ 0x02B82675, 0xBD398727,
+/**/ 0x00000000, 0x3FE75800,
+/**/ 0xE8A9353E, 0xBF2353DF,
+/**/ 0x2A04F000, 0x3FD432EF,
+/**/ 0x931715AD, 0xBD3FB129,
+/**/ 0x00000000, 0x3FE75000,
+/**/ 0x4F13DC4A, 0x3F3450E6,
+/**/ 0x7F2C1000, 0x3FD43E99,
+/**/ 0x40C41A04, 0x3D1C3F72,
+/**/ 0x00000000, 0x3FE75000,
+/**/ 0xE8B1B4FC, 0xBF2B4FBF,
+/**/ 0xB463C000, 0x3FD44A41,
+/**/ 0xF37CF612, 0x3D31EE28,
+/**/ 0x00000000, 0x3FE74800,
+/**/ 0x7E458100, 0x3F306BB6,
+/**/ 0xCA720000, 0x3FD455E7,
+/**/ 0x36629AED, 0x3D1AD8C6,
+/**/ 0x00000000, 0x3FE74800,
+/**/ 0x1745D174, 0xBF31745D,
+/**/ 0xC21C6000, 0x3FD4618B,
+/**/ 0x484C84CC, 0xBD13D82F,
+/**/ 0x00000000, 0x3FE74000,
+/**/ 0x236DEC04, 0x3F296FBD,
+/**/ 0x9C280000, 0x3FD46D2D,
+/**/ 0x5F67F75A, 0x3D359B27,
+/**/ 0x00000000, 0x3FE74000,
+/**/ 0x3B304B87, 0xBF350F9D,
+/**/ 0x5959B000, 0x3FD478CD,
+/**/ 0xF0C8D098, 0x3D2EC89B,
+/**/ 0x00000000, 0x3FE73800,
+/**/ 0xA4EBDC70, 0x3F226A51,
+/**/ 0xFA75C000, 0x3FD4846A,
+/**/ 0xE3798DCE, 0xBD263EA2,
+/**/ 0x00000000, 0x3FE73800,
+/**/ 0xF00B9A78, 0xBF3879D5,
+/**/ 0x80401000, 0x3FD49006,
+/**/ 0xFE1A0F8C, 0xBD38BCCF,
+/**/ 0x00000000, 0x3FE73000,
+/**/ 0x5DAAD90C, 0x3F178D7F,
+/**/ 0xEB7C1000, 0x3FD49B9F,
+/**/ 0x58AB60D7, 0x3D3DAC1C,
+/**/ 0x00000000, 0x3FE73000,
+/**/ 0x783709C7, 0xBF3BB33C,
+/**/ 0x3CED0000, 0x3FD4A737,
+/**/ 0xEBF35449, 0xBD39A234,
+/**/ 0x00000000, 0x3FE72800,
+/**/ 0x265AD23A, 0x3F061274,
+/**/ 0x75556000, 0x3FD4B2CC,
+/**/ 0xC78BFA4B, 0xBD380FCB,
+/**/ 0x00000000, 0x3FE72800,
+/**/ 0xC90A1FD2, 0xBF3EBC05,
+/**/ 0x95778000, 0x3FD4BE5F,
+/**/ 0xCD9AD824, 0xBD3D7C92,
+/**/ 0x00000000, 0x3FE72000,
+/**/ 0x38017200, 0xBEC71FFA,
+/**/ 0x9E153000, 0x3FD4C9F0,
+/**/ 0x70E02DE0, 0xBD2E1DDE,
+/**/ 0x00000000, 0x3FE71800,
+/**/ 0x74A050E1, 0x3F3E6B99,
+/**/ 0x8FEFE000, 0x3FD4D57F,
+/**/ 0x7FD06868, 0x3D23F926,
+/**/ 0x00000000, 0x3FE71800,
+/**/ 0xB8BD1180, 0xBF077400,
+/**/ 0x6BC8A000, 0x3FD4E10C,
+/**/ 0x1636F061, 0x3CF8283F,
+/**/ 0x00000000, 0x3FE71000,
+/**/ 0xE3E0453A, 0x3F3BC36C,
+/**/ 0x32600000, 0x3FD4EC97,
+/**/ 0xAF04D104, 0x3D234D7A,
+/**/ 0x00000000, 0x3FE71000,
+/**/ 0x6935DDC5, 0xBF15FA98,
+/**/ 0xE4764000, 0x3FD4F81F,
+/**/ 0x434FF08D, 0xBD27FCF6,
+/**/ 0x00000000, 0x3FE70800,
+/**/ 0x7337CF08, 0x3F394B40,
+/**/ 0x82CB2000, 0x3FD503A6,
+/**/ 0xF16F9B5D, 0xBD2A68C8,
+/**/ 0x00000000, 0x3FE70800,
+/**/ 0xA835403A, 0xBF1F7B97,
+/**/ 0x0E1E0000, 0x3FD50F2B,
+/**/ 0x8C47B8D8, 0x3D3A0940,
+/**/ 0x00000000, 0x3FE70000,
+/**/ 0x5C0B8170, 0x3F3702E0,
+/**/ 0x872E0000, 0x3FD51AAD,
+/**/ 0xDB0A7CC1, 0xBD3F4BD8,
+/**/ 0x00000000, 0x3FE70000,
+/**/ 0x4F67A855, 0xBF241EE6,
+/**/ 0xEEB99000, 0x3FD5262D,
+/**/ 0x70894A01, 0xBD3E1B9F,
+/**/ 0x00000000, 0x3FE6F800,
+/**/ 0x221C0170, 0x3F34EA19,
+/**/ 0x457EE000, 0x3FD531AC,
+/**/ 0x7D931501, 0x3D3DF83B,
+/**/ 0x00000000, 0x3FE6F800,
+/**/ 0x5508CA5C, 0xBF282102,
+/**/ 0x8C3BE000, 0x3FD53D28,
+/**/ 0xEB6DFAC5, 0xBD111397,
+/**/ 0x00000000, 0x3FE6F000,
+/**/ 0x9300B793, 0x3F3300B7,
+/**/ 0xC3ADD000, 0x3FD548A2,
+/**/ 0x63081CF7, 0x3D23167E,
+/**/ 0x00000000, 0x3FE6F000,
+/**/ 0x005BB90F, 0xBF2BC486,
+/**/ 0xEC91C000, 0x3FD5541A,
+/**/ 0xDC72EEBA, 0xBCF816AA,
+/**/ 0x00000000, 0x3FE6E800,
+/**/ 0xC5A3A00B, 0x3F314688,
+/**/ 0x07A44000, 0x3FD55F91,
+/**/ 0x78DF4A62, 0xBD11E647,
+/**/ 0x00000000, 0x3FE6E800,
+/**/ 0xDA9C5AE1, 0xBF2F09D6,
+/**/ 0x15A18000, 0x3FD56B05,
+/**/ 0xBC4A23FC, 0x3D29247B,
+/**/ 0x00000000, 0x3FE6E000,
+/**/ 0x337C6CB1, 0x3F2F76B4,
+/**/ 0x17456000, 0x3FD57677,
+/**/ 0x9524D7CA, 0xBD364EAD,
+/**/ 0x00000000, 0x3FE6E000,
+/**/ 0xEDF4EC87, 0xBF30F8AC,
+/**/ 0x0D4B3000, 0x3FD581E7,
+/**/ 0xB12D8F1D, 0xBD1F31E1,
+/**/ 0x00000000, 0x3FE6D800,
+/**/ 0x6EAEF381, 0x3F2CBDF2,
+/**/ 0xF86E0000, 0x3FD58D54,
+/**/ 0x0A795215, 0x3D2791F3,
+/**/ 0x00000000, 0x3FE6D800,
+/**/ 0xB624BFF5, 0xBF323DB9,
+/**/ 0xD9688000, 0x3FD598C0,
+/**/ 0x70D96DA4, 0xBD385F49,
+/**/ 0x00000000, 0x3FE6D000,
+/**/ 0x1C860FB0, 0x3F2A6268,
+/**/ 0xB0F4D000, 0x3FD5A42A,
+/**/ 0x2DF7BA69, 0xBCDE63AF,
+/**/ 0x00000000, 0x3FE6D000,
+/**/ 0xB253BAE1, 0xBF335443,
+/**/ 0x7FCCE000, 0x3FD5AF92,
+/**/ 0xF5FFC77A, 0xBD1C032F,
+/**/ 0x00000000, 0x3FE6C800,
+/**/ 0xAB4294D4, 0x3F2863B1,
+/**/ 0x46AA2000, 0x3FD5BAF8,
+/**/ 0xF873FA41, 0xBD339AE8,
+/**/ 0x00000000, 0x3FE6C800,
+/**/ 0x87EAA6DF, 0xBF343C7C,
+/**/ 0x0645A000, 0x3FD5C65C,
+/**/ 0x0180EE65, 0xBD39FE06,
+/**/ 0x00000000, 0x3FE6C000,
+/**/ 0x16C16C17, 0x3F26C16C,
+/**/ 0xBF581000, 0x3FD5D1BD,
+/**/ 0xC9C7C238, 0xBD38D6BD,
+/**/ 0x00000000, 0x3FE6C000,
+/**/ 0x95C33E00, 0xBF34F695,
+/**/ 0x7299C000, 0x3FD5DD1D,
+/**/ 0x8815CE17, 0xBD38AF61,
+/**/ 0x00000000, 0x3FE6B800,
+/**/ 0xE7802D73, 0x3F257B34,
+/**/ 0x20C29000, 0x3FD5E87B,
+/**/ 0x8F7738FA, 0x3D3527D1,
+/**/ 0x00000000, 0x3FE6B800,
+/**/ 0xF4A5582C, 0xBF3582BF,
+/**/ 0xCA8A2000, 0x3FD5F3D6,
+/**/ 0x8E19CC75, 0x3D37AF84,
+/**/ 0x00000000, 0x3FE6B000,
+/**/ 0x31A3CFC7, 0x3F2490AA,
+/**/ 0x70A79000, 0x3FD5FF30,
+/**/ 0x9F105039, 0x3D2E9E43,
+/**/ 0x00000000, 0x3FE6B000,
+/**/ 0x77C30E5A, 0xBF35E12C,
+/**/ 0x13D1A000, 0x3FD60A88,
+/**/ 0xC879AF55, 0x3D36E9B9,
+/**/ 0x00000000, 0x3FE6A800,
+/**/ 0x94016A94, 0x3F24016A,
+/**/ 0xB4BEC000, 0x3FD615DD,
+/**/ 0x90BC04B2, 0x3D13C7CA,
+/**/ 0x00000000, 0x3FE6A800,
+/**/ 0xAD33D63F, 0xBF36120B,
+/**/ 0x5424F000, 0x3FD62131,
+/**/ 0x4AA68669, 0xBD3382FC,
+/**/ 0x00000000, 0x3FE6A000,
+/**/ 0x3729043E, 0x3F23CD15,
+/**/ 0xF2B9C000, 0x3FD62C82,
+/**/ 0xBD7C8A98, 0x3D3E54BD } };
+
+static const union {int4 i[4350]; double x[2175]; } vj = { .i = {
+/**/ 0x7D161C28, 0x3F46A400,
+/**/ 0x20600000, 0xBF46A200,
+/**/ 0xAA7623D9, 0x3D27DC4E,
+/**/ 0xD596E639, 0x3F4693FA,
+/**/ 0x4CE00000, 0xBF4691FD,
+/**/ 0x29C3F0AD, 0x3D26B0CF,
+/**/ 0x3219CE89, 0x3F4683F5,
+/**/ 0x7B600000, 0xBF4681FA,
+/**/ 0x95B9FDCC, 0x3D22B290,
+/**/ 0x929ED397, 0x3F4673EF,
+/**/ 0xABE00000, 0xBF4671F7,
+/**/ 0xFA2F2D87, 0x3D17C727,
+/**/ 0xF725F3E2, 0x3F4663E9,
+/**/ 0xDE600000, 0xBF4661F4,
+/**/ 0x6EDBFF1C, 0x3CF22ED3,
+/**/ 0x5FAF2DE9, 0x3F4653E4,
+/**/ 0x12E00000, 0xBF4651F2,
+/**/ 0x157812BB, 0xBD144936,
+/**/ 0xCC3A802B, 0x3F4643DE,
+/**/ 0x49600000, 0xBF4641EF,
+/**/ 0x60314E05, 0xBD2959CB,
+/**/ 0x3CC7E927, 0x3F4633D9,
+/**/ 0x81E00000, 0xBF4631EC,
+/**/ 0xC3638E99, 0xBD35ABDA,
+/**/ 0xB157675C, 0x3F4623D3,
+/**/ 0xBC800000, 0xBF4621E9,
+/**/ 0xC63F9A21, 0x3D3FF1D3,
+/**/ 0x29E8F948, 0x3F4613CE,
+/**/ 0xF9000000, 0xBF4611E6,
+/**/ 0x71EEE611, 0x3D342D26,
+/**/ 0xA67C9D6B, 0x3F4603C8,
+/**/ 0x37800000, 0xBF4601E4,
+/**/ 0x11A09689, 0x3D1C1C77,
+/**/ 0x27125244, 0x3F45F3C3,
+/**/ 0x78000000, 0xBF45F1E1,
+/**/ 0xF7DC643C, 0xBD1DFD16,
+/**/ 0xABAA1651, 0x3F45E3BD,
+/**/ 0xBA800000, 0xBF45E1DE,
+/**/ 0x91318A02, 0xBD376503,
+/**/ 0x3443E812, 0x3F45D3B8,
+/**/ 0xFF200000, 0xBF45D1DB,
+/**/ 0xCE55DCDD, 0x3D3756E4,
+/**/ 0xC0DFC606, 0x3F45C3B2,
+/**/ 0x45A00000, 0xBF45C1D9,
+/**/ 0x8F6F8FA0, 0x3D12D5CF,
+/**/ 0x517DAEAB, 0x3F45B3AD,
+/**/ 0x8E200000, 0xBF45B1D6,
+/**/ 0x9B85DC2C, 0xBD2E90AB,
+/**/ 0xE61DA081, 0x3F45A3A7,
+/**/ 0xD8C00000, 0xBF45A1D3,
+/**/ 0x3BF5AC54, 0x3D3B5E88,
+/**/ 0x7EBF9A07, 0x3F4593A2,
+/**/ 0x25400000, 0xBF4591D1,
+/**/ 0x0C86DDB1, 0x3D12AC3A,
+/**/ 0x1B6399BB, 0x3F45839D,
+/**/ 0x73C00000, 0xBF4581CE,
+/**/ 0x76830985, 0xBD3361C2,
+/**/ 0xBC099E1C, 0x3F457397,
+/**/ 0xC4600000, 0xBF4571CB,
+/**/ 0xD062EBFF, 0x3D333915,
+/**/ 0x60B1A5AA, 0x3F456392,
+/**/ 0x16E00000, 0xBF4561C9,
+/**/ 0x9CC4988F, 0xBD1E0DA0,
+/**/ 0x095BAEE4, 0x3F45538D,
+/**/ 0x6B800000, 0xBF4551C6,
+/**/ 0x235BC18A, 0x3D3C69C4,
+/**/ 0xB607B848, 0x3F454387,
+/**/ 0xC2000000, 0xBF4541C3,
+/**/ 0xF7737723, 0xBCEFCC99,
+/**/ 0x66B5C056, 0x3F453382,
+/**/ 0x1A800000, 0xBF4531C1,
+/**/ 0x809CBCBB, 0xBD3FBAE2,
+/**/ 0x1B65C58C, 0x3F45237D,
+/**/ 0x75200000, 0xBF4521BE,
+/**/ 0x194FEE63, 0x3CCAA5C8,
+/**/ 0xD417C66A, 0x3F451377,
+/**/ 0xD1C00000, 0xBF4511BB,
+/**/ 0xE1CC7BBC, 0x3D3ED325,
+/**/ 0x90CBC16E, 0x3F450372,
+/**/ 0x30400000, 0xBF4501B9,
+/**/ 0x68AB3742, 0xBD0F0298,
+/**/ 0x5181B517, 0x3F44F36D,
+/**/ 0x90E00000, 0xBF44F1B6,
+/**/ 0x41E67AD9, 0x3D381BE1,
+/**/ 0x16399FE6, 0x3F44E368,
+/**/ 0xF3600000, 0xBF44E1B3,
+/**/ 0x668D3662, 0xBD2A6E79,
+/**/ 0xDEF38058, 0x3F44D362,
+/**/ 0x58000000, 0xBF44D1B1,
+/**/ 0x21F8B7C2, 0x3D284EA7,
+/**/ 0xABAF54EC, 0x3F44C35D,
+/**/ 0xBE800000, 0xBF44C1AE,
+/**/ 0x7417D9C5, 0xBD3BC76D,
+/**/ 0x7C6D1C22, 0x3F44B358,
+/**/ 0x27200000, 0xBF44B1AC,
+/**/ 0x16AAD1FC, 0xBD1409FD,
+/**/ 0x512CD479, 0x3F44A353,
+/**/ 0x91C00000, 0xBF44A1A9,
+/**/ 0x98BC14FD, 0x3D30771E,
+/**/ 0x29EE7C70, 0x3F44934E,
+/**/ 0xFE400000, 0xBF4491A6,
+/**/ 0x5CCB7232, 0xBD3B5993,
+/**/ 0x06B21285, 0x3F448349,
+/**/ 0x6CE00000, 0xBF4481A4,
+/**/ 0x5512F9C2, 0xBD20E729,
+/**/ 0xE7779538, 0x3F447343,
+/**/ 0xDD800000, 0xBF4471A1,
+/**/ 0x55B30899, 0x3D225436,
+/**/ 0xCC3F0308, 0x3F44633E,
+/**/ 0x50200000, 0xBF44619F,
+/**/ 0x9E54E31F, 0x3D39807C,
+/**/ 0xB5085A73, 0x3F445339,
+/**/ 0xC4A00000, 0xBF44519C,
+/**/ 0xD5804C0E, 0xBD376F6F,
+/**/ 0xA1D399FA, 0x3F444334,
+/**/ 0x3B400000, 0xBF44419A,
+/**/ 0x6CDE6425, 0xBD234953,
+/**/ 0x92A0C01A, 0x3F44332F,
+/**/ 0xB3E00000, 0xBF443197,
+/**/ 0xAAF6596F, 0x3D070E7B,
+/**/ 0x876FCB54, 0x3F44232A,
+/**/ 0x2E800000, 0xBF442195,
+/**/ 0x4EC011F1, 0x3D2C49F8,
+/**/ 0x8040BA25, 0x3F441325,
+/**/ 0xAB200000, 0xBF441192,
+/**/ 0xD8AAA7EB, 0x3D3825DC,
+/**/ 0x7D138B0E, 0x3F440320,
+/**/ 0x29A00000, 0xBF440190,
+/**/ 0xFE0B73D6, 0xBD3F1A8D,
+/**/ 0x7DE83C8C, 0x3F43F31B,
+/**/ 0xAA400000, 0xBF43F18D,
+/**/ 0xE46CA26B, 0xBD379B43,
+/**/ 0x82BECD20, 0x3F43E316,
+/**/ 0x2CE00000, 0xBF43E18B,
+/**/ 0x6283780D, 0xBD315B44,
+/**/ 0x8B973B49, 0x3F43D311,
+/**/ 0xB1800000, 0xBF43D188,
+/**/ 0x017589BE, 0xBD28B31E,
+/**/ 0x98718584, 0x3F43C30C,
+/**/ 0x38200000, 0xBF43C186,
+/**/ 0x8FBB296E, 0xBD212A46,
+/**/ 0xA94DAA52, 0x3F43B307,
+/**/ 0xC0C00000, 0xBF43B183,
+/**/ 0x045CBBD2, 0xBD183403,
+/**/ 0xBE2BA832, 0x3F43A302,
+/**/ 0x4B600000, 0xBF43A181,
+/**/ 0xD7CC5936, 0xBD13009B,
+/**/ 0xD70B7DA2, 0x3F4392FD,
+/**/ 0xD8000000, 0xBF43917E,
+/**/ 0xC1742279, 0xBD12B655,
+/**/ 0xF3ED2921, 0x3F4382F8,
+/**/ 0x66A00000, 0xBF43817C,
+/**/ 0xEA83FAE8, 0xBD17512E,
+/**/ 0x14D0A930, 0x3F4372F4,
+/**/ 0xF7400000, 0xBF437179,
+/**/ 0xBED65875, 0xBD206692,
+/**/ 0x39B5FC4C, 0x3F4362EF,
+/**/ 0x89E00000, 0xBF436177,
+/**/ 0xD38FFE9E, 0xBD27931B,
+/**/ 0x629D20F5, 0x3F4352EA,
+/**/ 0x1E800000, 0xBF435175,
+/**/ 0xE524208F, 0xBD309618,
+/**/ 0x8F8615AA, 0x3F4342E5,
+/**/ 0xB5200000, 0xBF434172,
+/**/ 0xDD4C72C5, 0xBD3697E9,
+/**/ 0xC070D8EB, 0x3F4332E0,
+/**/ 0x4DC00000, 0xBF433170,
+/**/ 0x5E6E12C3, 0xBD3DCE00,
+/**/ 0xF55D6935, 0x3F4322DB,
+/**/ 0xE8800000, 0xBF43216D,
+/**/ 0x0AE9A8CE, 0x3D39C8A4,
+/**/ 0x2E4BC509, 0x3F4312D7,
+/**/ 0x85200000, 0xBF43116B,
+/**/ 0xD1CD2FA1, 0x3D302D03,
+/**/ 0x6B3BEAE5, 0x3F4302D2,
+/**/ 0x23C00000, 0xBF430169,
+/**/ 0xA3BADFD1, 0x3D15807D,
+/**/ 0xAC2DD949, 0x3F42F2CD,
+/**/ 0xC4600000, 0xBF42F166,
+/**/ 0xF57F0504, 0xBD1A7422,
+/**/ 0xF1218EB3, 0x3F42E2C8,
+/**/ 0x67000000, 0xBF42E164,
+/**/ 0x2F2C781C, 0xBD33C974,
+/**/ 0x3A1709A3, 0x3F42D2C4,
+/**/ 0x0BC00000, 0xBF42D162,
+/**/ 0x851A1E61, 0x3D3DDBDD,
+/**/ 0x870E4898, 0x3F42C2BF,
+/**/ 0xB2600000, 0xBF42C15F,
+/**/ 0xA14AA8FD, 0x3D2CA7D9,
+/**/ 0xD8074A10, 0x3F42B2BA,
+/**/ 0x5B000000, 0xBF42B15D,
+/**/ 0xDDCDDFF5, 0xBD03022E,
+/**/ 0x2D020C8C, 0x3F42A2B6,
+/**/ 0x05A00000, 0xBF42A15B,
+/**/ 0x0F9231A8, 0xBD343FBA,
+/**/ 0x85FE8E8A, 0x3F4292B1,
+/**/ 0xB2600000, 0xBF429158,
+/**/ 0xA52C9CCF, 0x3D38B690,
+/**/ 0xE2FCCE8A, 0x3F4282AC,
+/**/ 0x61000000, 0xBF428156,
+/**/ 0xC8CC82EB, 0x3D120E6A,
+/**/ 0x43FCCB0A, 0x3F4272A8,
+/**/ 0x11A00000, 0xBF427154,
+/**/ 0x792E6C51, 0xBD30D79B,
+/**/ 0xA8FE8289, 0x3F4262A3,
+/**/ 0xC4600000, 0xBF426151,
+/**/ 0x91F7F7AA, 0x3D38A5EE,
+/**/ 0x1201F387, 0x3F42529F,
+/**/ 0x79000000, 0xBF42514F,
+/**/ 0x46C2E8BA, 0x3CEFA728,
+/**/ 0x7F071C84, 0x3F42429A,
+/**/ 0x2FA00000, 0xBF42414D,
+/**/ 0xFA447A17, 0xBD37D0BA,
+/**/ 0xF00DFBFD, 0x3F423295,
+/**/ 0xE8600000, 0xBF42314A,
+/**/ 0x94AF3FED, 0x3D2C7A24,
+/**/ 0x65169072, 0x3F422291,
+/**/ 0xA3000000, 0xBF422148,
+/**/ 0x050CEA04, 0xBD29B0BD,
+/**/ 0xDE20D863, 0x3F42128C,
+/**/ 0x5FC00000, 0xBF421146,
+/**/ 0x0C3035EB, 0x3D36EFF3,
+/**/ 0x5B2CD24E, 0x3F420288,
+/**/ 0x1E600000, 0xBF420144,
+/**/ 0x73569B27, 0xBD19A3E2,
+/**/ 0xDC3A7CB2, 0x3F41F283,
+/**/ 0xDF200000, 0xBF41F141,
+/**/ 0xEEB67715, 0x3D3B1DDE,
+/**/ 0x6149D610, 0x3F41E27F,
+/**/ 0xA1C00000, 0xBF41E13F,
+/**/ 0x94F49154, 0xBD11EA17,
+/**/ 0xEA5ADCE5, 0x3F41D27A,
+/**/ 0x66800000, 0xBF41D13D,
+/**/ 0x52DD9D37, 0x3D3ACED9,
+/**/ 0x776D8FB1, 0x3F41C276,
+/**/ 0x2D200000, 0xBF41C13B,
+/**/ 0xF72D8EEB, 0xBD1C140B,
+/**/ 0x0881ECF4, 0x3F41B272,
+/**/ 0xF5E00000, 0xBF41B138,
+/**/ 0x939583E1, 0x3D360AE5,
+/**/ 0x9D97F32C, 0x3F41A26D,
+/**/ 0xC0800000, 0xBF41A136,
+/**/ 0x1D246C7C, 0xBD2C00D9,
+/**/ 0x36AFA0D9, 0x3F419269,
+/**/ 0x8D400000, 0xBF419134,
+/**/ 0x0B955CFB, 0x3D29B40E,
+/**/ 0xD3C8F479, 0x3F418264,
+/**/ 0x5BE00000, 0xBF418132,
+/**/ 0x45A6C249, 0xBD3964BF,
+/**/ 0x74E3EC8D, 0x3F417260,
+/**/ 0x2CA00000, 0xBF417130,
+/**/ 0xF3363612, 0xBCE777E0,
+/**/ 0x1A008792, 0x3F41625C,
+/**/ 0xFF600000, 0xBF41612D,
+/**/ 0x28DE8296, 0x3D36D608,
+/**/ 0xC31EC409, 0x3F415257,
+/**/ 0xD4000000, 0xBF41512B,
+/**/ 0x4BB1B788, 0xBD32AE69,
+/**/ 0x703EA071, 0x3F414253,
+/**/ 0xAAC00000, 0xBF414129,
+/**/ 0x170ECD8C, 0x3D05BF68,
+/**/ 0x21601B48, 0x3F41324F,
+/**/ 0x83800000, 0xBF413127,
+/**/ 0x7C653BFC, 0x3D370A0B,
+/**/ 0xD683330E, 0x3F41224A,
+/**/ 0x5E200000, 0xBF412125,
+/**/ 0x77BBBEBF, 0xBD35B70D,
+/**/ 0x8FA7E642, 0x3F411246,
+/**/ 0x3AE00000, 0xBF411123,
+/**/ 0x93ABC1CD, 0xBD0C52EB,
+/**/ 0x4CCE3363, 0x3F410242,
+/**/ 0x19A00000, 0xBF410121,
+/**/ 0xE5C6F4C7, 0x3D2B2237,
+/**/ 0x0DF618F1, 0x3F40F23E,
+/**/ 0xFA600000, 0xBF40F11E,
+/**/ 0x1E9A50AD, 0x3D3D9C5F,
+/**/ 0xD31F956A, 0x3F40E239,
+/**/ 0xDD000000, 0xBF40E11C,
+/**/ 0x8965F0DA, 0xBD336793,
+/**/ 0x9C4AA74E, 0x3F40D235,
+/**/ 0xC1C00000, 0xBF40D11A,
+/**/ 0x7E49E231, 0xBD15E6EE,
+/**/ 0x69774D1D, 0x3F40C231,
+/**/ 0xA8800000, 0xBF40C118,
+/**/ 0x04FD621C, 0x3D1D9B9D,
+/**/ 0x3AA58554, 0x3F40B22D,
+/**/ 0x91400000, 0xBF40B116,
+/**/ 0x7DD9EED3, 0x3D333B55,
+/**/ 0x0FD54E74, 0x3F40A229,
+/**/ 0x7C000000, 0xBF40A114,
+/**/ 0x7AA78478, 0x3D3E048F,
+/**/ 0xE906A6FC, 0x3F409224,
+/**/ 0x68A00000, 0xBF409112,
+/**/ 0x644DDE88, 0xBD383C6A,
+/**/ 0xC6398D6B, 0x3F408220,
+/**/ 0x57600000, 0xBF408110,
+/**/ 0x76B8C83A, 0xBD2F0D2F,
+/**/ 0xA76E0040, 0x3F40721C,
+/**/ 0x48200000, 0xBF40710E,
+/**/ 0x9CE99FD3, 0xBD1F63E0,
+/**/ 0x8CA3FDFB, 0x3F406218,
+/**/ 0x3AE00000, 0xBF40610C,
+/**/ 0x4FE774F2, 0xBCF328B4,
+/**/ 0x75DB851A, 0x3F405214,
+/**/ 0x2FA00000, 0xBF40510A,
+/**/ 0x3782BCD4, 0x3D11B6BD,
+/**/ 0x6314941D, 0x3F404210,
+/**/ 0x26600000, 0xBF404108,
+/**/ 0xE7183792, 0x3D22116F,
+/**/ 0x544F2983, 0x3F40320C,
+/**/ 0x1F200000, 0xBF403106,
+/**/ 0x1B995B3D, 0x3D293F1E,
+/**/ 0x498B43CB, 0x3F402208,
+/**/ 0x19E00000, 0xBF402104,
+/**/ 0xFC162630, 0x3D2E6669,
+/**/ 0x42C8E175, 0x3F401204,
+/**/ 0x16A00000, 0xBF401102,
+/**/ 0x254FC9F8, 0x3D30C4AA,
+/**/ 0x40080100, 0x3F400200,
+/**/ 0x15600000, 0xBF400100,
+/**/ 0xE4431F92, 0x3D3154EE,
+/**/ 0x829141D6, 0x3F3FE3F8,
+/**/ 0x2C400000, 0xBF3FE1FC,
+/**/ 0x9B2D30FB, 0x3D30E503,
+/**/ 0x8D157F6B, 0x3F3FC3F0,
+/**/ 0x31C00000, 0xBF3FC1F8,
+/**/ 0x53EBD670, 0x3D2EEBD1,
+/**/ 0x9F9CB7BC, 0x3F3FA3E8,
+/**/ 0x3B400000, 0xBF3FA1F4,
+/**/ 0xE04A16E0, 0x3D2A113C,
+/**/ 0xBA26E7CA, 0x3F3F83E0,
+/**/ 0x48C00000, 0xBF3F81F0,
+/**/ 0x99C43E34, 0x3D233C4A,
+/**/ 0xDCB40C91, 0x3F3F63D8,
+/**/ 0x5A400000, 0xBF3F61EC,
+/**/ 0x7BD210C1, 0x3D14DDF6,
+/**/ 0x07442311, 0x3F3F43D1,
+/**/ 0x6FC00000, 0xBF3F41E8,
+/**/ 0x9E4B51C8, 0xBCC52C1D,
+/**/ 0x39D72849, 0x3F3F23C9,
+/**/ 0x89400000, 0xBF3F21E4,
+/**/ 0x8EA8C754, 0xBD1A196F,
+/**/ 0x746D1936, 0x3F3F03C1,
+/**/ 0xA6C00000, 0xBF3F01E0,
+/**/ 0xF95AF98D, 0xBD2BB719,
+/**/ 0xB705F2D8, 0x3F3EE3B9,
+/**/ 0xC8400000, 0xBF3EE1DC,
+/**/ 0x28FFD598, 0xBD3628EB,
+/**/ 0x01A1B22C, 0x3F3EC3B2,
+/**/ 0xEDC00000, 0xBF3EC1D8,
+/**/ 0x0BBAC8F8, 0xBD3F6D76,
+/**/ 0x54405432, 0x3F3EA3AA,
+/**/ 0x17800000, 0xBF3EA1D5,
+/**/ 0xB7A7EE0D, 0x3D3657D2,
+/**/ 0xAEE1D5E8, 0x3F3E83A2,
+/**/ 0x45000000, 0xBF3E81D1,
+/**/ 0xFA9CCC78, 0x3D264FDE,
+/**/ 0x1186344C, 0x3F3E639B,
+/**/ 0x76800000, 0xBF3E61CD,
+/**/ 0xE02EF455, 0xBCEF83EB,
+/**/ 0x7C2D6C5E, 0x3F3E4393,
+/**/ 0xAC000000, 0xBF3E41C9,
+/**/ 0x03C3E129, 0xBD2C26B3,
+/**/ 0xEED77B1B, 0x3F3E238B,
+/**/ 0xE5800000, 0xBF3E21C5,
+/**/ 0x904D773D, 0xBD3C1CBE,
+/**/ 0x69845D83, 0x3F3E0384,
+/**/ 0x23400000, 0xBF3E01C2,
+/**/ 0xD0615454, 0x3D34E8B1,
+/**/ 0xEC341093, 0x3F3DE37C,
+/**/ 0x64C00000, 0xBF3DE1BE,
+/**/ 0xE9BE933E, 0x3D13F7DF,
+/**/ 0x76E6914B, 0x3F3DC375,
+/**/ 0xAA400000, 0xBF3DC1BA,
+/**/ 0x707B004A, 0xBD27B7D7,
+/**/ 0x099BDCA9, 0x3F3DA36E,
+/**/ 0xF3C00000, 0xBF3DA1B6,
+/**/ 0xEE2141C3, 0xBD3DA3F8,
+/**/ 0xA453EFAC, 0x3F3D8366,
+/**/ 0x41800000, 0xBF3D81B3,
+/**/ 0x63D21825, 0x3D2F4DA1,
+/**/ 0x470EC752, 0x3F3D635F,
+/**/ 0x93000000, 0xBF3D61AF,
+/**/ 0xFAD0B844, 0xBD0FD473,
+/**/ 0xF1CC609A, 0x3F3D4357,
+/**/ 0xE8800000, 0xBF3D41AB,
+/**/ 0x298657C2, 0xBD388716,
+/**/ 0xA48CB882, 0x3F3D2350,
+/**/ 0x42400000, 0xBF3D21A8,
+/**/ 0x0B68711A, 0x3D32023A,
+/**/ 0x5F4FCC0A, 0x3F3D0349,
+/**/ 0x9FC00000, 0xBF3D01A4,
+/**/ 0x23A704B0, 0xBD117676,
+/**/ 0x22159830, 0x3F3CE342,
+/**/ 0x01400000, 0xBF3CE1A1,
+/**/ 0x8F391F09, 0xBD3BA59C,
+/**/ 0xECDE19F1, 0x3F3CC33A,
+/**/ 0x67000000, 0xBF3CC19D,
+/**/ 0x9EBBF706, 0x3D28567A,
+/**/ 0xBFA94E4E, 0x3F3CA333,
+/**/ 0xD0800000, 0xBF3CA199,
+/**/ 0x2D41F1CC, 0xBD29D41F,
+/**/ 0x9A773245, 0x3F3C832C,
+/**/ 0x3E400000, 0xBF3C8196,
+/**/ 0x14ED5134, 0x3D391B7D,
+/**/ 0x7D47C2D4, 0x3F3C6325,
+/**/ 0xAFC00000, 0xBF3C6192,
+/**/ 0x83403B5B, 0xBCFC31C5,
+/**/ 0x681AFCFA, 0x3F3C431E,
+/**/ 0x25400000, 0xBF3C418F,
+/**/ 0x88A1FFF3, 0xBD3D84DB,
+/**/ 0x5AF0DDB6, 0x3F3C2317,
+/**/ 0x9F000000, 0xBF3C218B,
+/**/ 0x6298A63B, 0x3D175CFF,
+/**/ 0x55C96207, 0x3F3C0310,
+/**/ 0x1C800000, 0xBF3C0188,
+/**/ 0xDFB8E489, 0xBD37ADC9,
+/**/ 0x58A486EA, 0x3F3BE309,
+/**/ 0x9E400000, 0xBF3BE184,
+/**/ 0x45069C64, 0x3D23DA0F,
+/**/ 0x6382495F, 0x3F3BC302,
+/**/ 0x23C00000, 0xBF3BC181,
+/**/ 0x4CC2EFE0, 0xBD35574B,
+/**/ 0x7662A665, 0x3F3BA2FB,
+/**/ 0xAD800000, 0xBF3BA17D,
+/**/ 0x4BED0B89, 0x3D250C7B,
+/**/ 0x91459AFA, 0x3F3B82F4,
+/**/ 0x3B000000, 0xBF3B817A,
+/**/ 0x322E5605, 0xBD36795D,
+/**/ 0xB42B241D, 0x3F3B62ED,
+/**/ 0xCCC00000, 0xBF3B6176,
+/**/ 0xF6413886, 0x3D1EAB91,
+/**/ 0xDF133ECC, 0x3F3B42E6,
+/**/ 0x62400000, 0xBF3B4173,
+/**/ 0xF86BE5B5, 0xBD3B0BFC,
+/**/ 0x11FDE807, 0x3F3B22E0,
+/**/ 0xFC000000, 0xBF3B216F,
+/**/ 0xDDE8D701, 0x3CF62FEB,
+/**/ 0x4CEB1CCC, 0x3F3B02D9,
+/**/ 0x99C00000, 0xBF3B016C,
+/**/ 0xF210FD9E, 0x3D3CF8D7,
+/**/ 0x8FDADA1A, 0x3F3AE2D2,
+/**/ 0x3B400000, 0xBF3AE169,
+/**/ 0x1526CFB0, 0xBD2092E2,
+/**/ 0xDACD1CEF, 0x3F3AC2CB,
+/**/ 0xE1000000, 0xBF3AC165,
+/**/ 0x18D261D5, 0x3D319D24,
+/**/ 0x2DC1E24A, 0x3F3AA2C5,
+/**/ 0x8A800000, 0xBF3AA162,
+/**/ 0x533CC8EC, 0xBD355268,
+/**/ 0x88B9272B, 0x3F3A82BE,
+/**/ 0x38400000, 0xBF3A815F,
+/**/ 0x0AFE6139, 0x3D074750,
+/**/ 0xEBB2E88F, 0x3F3A62B7,
+/**/ 0xEA000000, 0xBF3A615B,
+/**/ 0x6668AD57, 0x3D3A501B,
+/**/ 0x56AF2375, 0x3F3A42B1,
+/**/ 0x9F800000, 0xBF3A4158,
+/**/ 0xA98381BD, 0xBD2E37A7,
+/**/ 0xC9ADD4DD, 0x3F3A22AA,
+/**/ 0x59400000, 0xBF3A2155,
+/**/ 0x7B82F9AC, 0x3D1A9872,
+/**/ 0x44AEF9C5, 0x3F3A02A4,
+/**/ 0x17000000, 0xBF3A0152,
+/**/ 0x0FF040AD, 0x3D3B96ED,
+/**/ 0xC7B28F2C, 0x3F39E29D,
+/**/ 0xD8800000, 0xBF39E14E,
+/**/ 0x33534BD7, 0xBD304862,
+/**/ 0x52B89211, 0x3F39C297,
+/**/ 0x9E400000, 0xBF39C14B,
+/**/ 0x17AF009B, 0x3D084979,
+/**/ 0xE5C0FF72, 0x3F39A290,
+/**/ 0x68000000, 0xBF39A148,
+/**/ 0x604B64C9, 0x3D358CA1,
+/**/ 0x80CBD44E, 0x3F39828A,
+/**/ 0x35800000, 0xBF398145,
+/**/ 0x2E334404, 0xBD38BD0B,
+/**/ 0x23D90DA4, 0x3F396284,
+/**/ 0x07400000, 0xBF396142,
+/**/ 0xEF1B1C68, 0xBD1F4B58,
+/**/ 0xCEE8A873, 0x3F39427D,
+/**/ 0xDD000000, 0xBF39413E,
+/**/ 0x07E010EC, 0x3D209881,
+/**/ 0x81FAA1B9, 0x3F392277,
+/**/ 0xB6C00000, 0xBF39213B,
+/**/ 0x5CF03181, 0x3D37A139,
+/**/ 0x3D0EF676, 0x3F390271,
+/**/ 0x94400000, 0xBF390138,
+/**/ 0x65276B0B, 0xBD39D2EB,
+/**/ 0x0025A3A8, 0x3F38E26B,
+/**/ 0x76000000, 0xBF38E135,
+/**/ 0xEE3023F6, 0xBD281E5A,
+/**/ 0xCB3EA64F, 0x3F38C264,
+/**/ 0x5BC00000, 0xBF38C132,
+/**/ 0x3F9A4B53, 0x3CEDAE6E,
+/**/ 0x9E59FB68, 0x3F38A25E,
+/**/ 0x45800000, 0xBF38A12F,
+/**/ 0x412B648E, 0x3D2A47EF,
+/**/ 0x79779FF3, 0x3F388258,
+/**/ 0x33400000, 0xBF38812C,
+/**/ 0x5ED0D8F2, 0x3D38955F,
+/**/ 0x5C9790EE, 0x3F386252,
+/**/ 0x24C00000, 0xBF386129,
+/**/ 0x09939374, 0xBD3CBD55,
+/**/ 0x47B9CB5A, 0x3F38424C,
+/**/ 0x1A800000, 0xBF384126,
+/**/ 0x4F399186, 0xBD32D325,
+/**/ 0x3ADE4C33, 0x3F382246,
+/**/ 0x14400000, 0xBF382123,
+/**/ 0x524688EB, 0xBD235622,
+/**/ 0x3605107A, 0x3F380240,
+/**/ 0x12000000, 0xBF380120,
+/**/ 0xEB2F3DDC, 0xBCF44184,
+/**/ 0x392E152C, 0x3F37E23A,
+/**/ 0x13C00000, 0xBF37E11D,
+/**/ 0x2153D1B8, 0x3D198B16,
+/**/ 0x4459574A, 0x3F37C234,
+/**/ 0x19800000, 0xBF37C11A,
+/**/ 0x47A3C923, 0x3D2A9511,
+/**/ 0x5786D3D1, 0x3F37A22E,
+/**/ 0x23400000, 0xBF37A117,
+/**/ 0x4B4128D9, 0x3D337431,
+/**/ 0x72B687C1, 0x3F378228,
+/**/ 0x31000000, 0xBF378114,
+/**/ 0xC5BFE9E8, 0x3D38E0BF,
+/**/ 0x95E87019, 0x3F376222,
+/**/ 0x42C00000, 0xBF376111,
+/**/ 0x5A0B2CE9, 0x3D3D9134,
+/**/ 0xC11C89D8, 0x3F37421C,
+/**/ 0x58400000, 0xBF37410E,
+/**/ 0xB1802C40, 0xBD3E7970,
+/**/ 0xF452D1FB, 0x3F372216,
+/**/ 0x72000000, 0xBF37210B,
+/**/ 0x16E562C9, 0xBD3B3E2F,
+/**/ 0x2F8B4583, 0x3F370211,
+/**/ 0x8FC00000, 0xBF370108,
+/**/ 0x9087DACD, 0xBD38BC06,
+/**/ 0x72C5E16F, 0x3F36E20B,
+/**/ 0xB1800000, 0xBF36E105,
+/**/ 0xD92B1B21, 0xBD36F1F6,
+/**/ 0xBE02A2BC, 0x3F36C205,
+/**/ 0xD7400000, 0xBF36C102,
+/**/ 0xABF2CD23, 0xBD35DEFF,
+/**/ 0x1141866B, 0x3F36A200,
+/**/ 0x01000000, 0xBF36A100,
+/**/ 0xC462BC85, 0xBD358220,
+/**/ 0x6C828979, 0x3F3681FA,
+/**/ 0x2EC00000, 0xBF3680FD,
+/**/ 0xDE5ED723, 0xBD35DA59,
+/**/ 0xCFC5A8E7, 0x3F3661F4,
+/**/ 0x60800000, 0xBF3660FA,
+/**/ 0xB62B2CD1, 0xBD36E6AA,
+/**/ 0x3B0AE1B2, 0x3F3641EF,
+/**/ 0x96400000, 0xBF3640F7,
+/**/ 0x086BEF29, 0xBD38A613,
+/**/ 0xAE5230DA, 0x3F3621E9,
+/**/ 0xD0000000, 0xBF3620F4,
+/**/ 0x9225715D, 0xBD3B1792,
+/**/ 0x299B935F, 0x3F3601E4,
+/**/ 0x0DC00000, 0xBF3600F2,
+/**/ 0x10BC2805, 0xBD3E3A29,
+/**/ 0xACE7063E, 0x3F35E1DE,
+/**/ 0x4FC00000, 0xBF35E0EF,
+/**/ 0xBE0B570D, 0x3D3DF329,
+/**/ 0x38348676, 0x3F35C1D9,
+/**/ 0x95800000, 0xBF35C0EC,
+/**/ 0x1C0C5502, 0x3D397166,
+/**/ 0xCB841108, 0x3F35A1D3,
+/**/ 0xDF400000, 0xBF35A0E9,
+/**/ 0x4AC1FA2D, 0x3D34418C,
+/**/ 0x66D5A2F1, 0x3F3581CE,
+/**/ 0x2D000000, 0xBF3580E7,
+/**/ 0x168E9C6E, 0x3D2CC939,
+/**/ 0x0A293931, 0x3F3561C9,
+/**/ 0x7EC00000, 0xBF3560E4,
+/**/ 0x795CE154, 0x3D1F6E5C,
+/**/ 0xB57ED0C7, 0x3F3541C3,
+/**/ 0xD4800000, 0xBF3540E1,
+/**/ 0x898FEE67, 0x3CE4EF88,
+/**/ 0x68D666B1, 0x3F3521BE,
+/**/ 0x2E400000, 0xBF3520DF,
+/**/ 0x0B78D65E, 0xBD1CDACF,
+/**/ 0x242FF7EF, 0x3F3501B9,
+/**/ 0x8C000000, 0xBF3500DC,
+/**/ 0x6F1CBFB8, 0xBD2F7BF1,
+/**/ 0xE78B8180, 0x3F34E1B3,
+/**/ 0xEDC00000, 0xBF34E0D9,
+/**/ 0x5A899820, 0xBD38ED52,
+/**/ 0xB2E90063, 0x3F34C1AE,
+/**/ 0x53C00000, 0xBF34C0D7,
+/**/ 0x930A694E, 0x3D3D3C3F,
+/**/ 0x86487196, 0x3F34A1A9,
+/**/ 0xBD800000, 0xBF34A0D4,
+/**/ 0x4FA7CCCB, 0x3D32BFBD,
+/**/ 0x61A9D219, 0x3F3481A4,
+/**/ 0x2B400000, 0xBF3480D2,
+/**/ 0x65A26E32, 0x3D1E789C,
+/**/ 0x450D1EEB, 0x3F34619F,
+/**/ 0x9D000000, 0xBF3460CF,
+/**/ 0x47E500B5, 0xBD109E0B,
+/**/ 0x3072550B, 0x3F34419A,
+/**/ 0x12C00000, 0xBF3440CD,
+/**/ 0x3523FAE9, 0xBD309040,
+/**/ 0x23D97178, 0x3F342195,
+/**/ 0x8C800000, 0xBF3420CA,
+/**/ 0xD31DE7C2, 0xBD3D9B10,
+/**/ 0x1F427131, 0x3F340190,
+/**/ 0x0A800000, 0xBF3400C8,
+/**/ 0x90B287C4, 0x3D34B90B,
+/**/ 0x22AD5135, 0x3F33E18B,
+/**/ 0x8C400000, 0xBF33E0C5,
+/**/ 0xCA1B0FC2, 0x3D19B454,
+/**/ 0x2E1A0E83, 0x3F33C186,
+/**/ 0x12000000, 0xBF33C0C3,
+/**/ 0x638FC1F4, 0xBD20FBE7,
+/**/ 0x4188A61A, 0x3F33A181,
+/**/ 0x9BC00000, 0xBF33A0C0,
+/**/ 0xE0C03290, 0xBD38070E,
+/**/ 0x5CF914F9, 0x3F33817C,
+/**/ 0x29C00000, 0xBF3380BE,
+/**/ 0xE0B6E5F5, 0x3D37D2C3,
+/**/ 0x806B5820, 0x3F336177,
+/**/ 0xBB800000, 0xBF3360BB,
+/**/ 0x35598794, 0x3D1C4213,
+/**/ 0xABDF6C8D, 0x3F334172,
+/**/ 0x51400000, 0xBF3340B9,
+/**/ 0xC111C569, 0xBD249997,
+/**/ 0xDF554F40, 0x3F33216D,
+/**/ 0xEB000000, 0xBF3320B6,
+/**/ 0xEEEE28E2, 0xBD3C442D,
+/**/ 0x1ACCFD37, 0x3F330169,
+/**/ 0x89000000, 0xBF3300B4,
+/**/ 0xDBBF316D, 0x3D312B5E,
+/**/ 0x5E467372, 0x3F32E164,
+/**/ 0x2AC00000, 0xBF32E0B2,
+/**/ 0x7484E6E1, 0xBCFFD254,
+/**/ 0xA9C1AEF0, 0x3F32C15F,
+/**/ 0xD0800000, 0xBF32C0AF,
+/**/ 0x1F2C3F9D, 0xBD35BCBA,
+/**/ 0xFD3EACAF, 0x3F32A15A,
+/**/ 0x7A800000, 0xBF32A0AD,
+/**/ 0x8C8BAA61, 0x3D35EDA0,
+/**/ 0x58BD69B0, 0x3F328156,
+/**/ 0x28400000, 0xBF3280AB,
+/**/ 0x3F79FE5E, 0x3CF02EAF,
+/**/ 0xBC3DE2F1, 0x3F326151,
+/**/ 0xDA000000, 0xBF3260A8,
+/**/ 0xB1304AA8, 0xBD347BDA,
+/**/ 0x27C01572, 0x3F32414D,
+/**/ 0x90000000, 0xBF3240A6,
+/**/ 0xD46BE359, 0x3D35724F,
+/**/ 0x9B43FE30, 0x3F322148,
+/**/ 0x49C00000, 0xBF3220A4,
+/**/ 0x43BF90C9, 0xBCF31954,
+/**/ 0x16C99A2D, 0x3F320144,
+/**/ 0x07800000, 0xBF3200A2,
+/**/ 0xC4901E30, 0xBD386689,
+/**/ 0x9A50E666, 0x3F31E13F,
+/**/ 0xC9800000, 0xBF31E09F,
+/**/ 0x134E34BF, 0x3D2FA8E5,
+/**/ 0x25D9DFDB, 0x3F31C13B,
+/**/ 0x8F400000, 0xBF31C09D,
+/**/ 0x477D87DF, 0xBD20FF40,
+/**/ 0xB964838C, 0x3F31A136,
+/**/ 0x59400000, 0xBF31A09B,
+/**/ 0x68B5B77B, 0x3D3E9E3E,
+/**/ 0x54F0CE76, 0x3F318132,
+/**/ 0x27000000, 0xBF318099,
+/**/ 0x906F8A53, 0x3D14BC39,
+/**/ 0xF87EBD9A, 0x3F31612D,
+/**/ 0xF8C00000, 0xBF316096,
+/**/ 0xFCD50724, 0xBD34CC2F,
+/**/ 0xA40E4DF7, 0x3F314129,
+/**/ 0xCEC00000, 0xBF314094,
+/**/ 0x7A3A1B8D, 0x3D30AD83,
+/**/ 0x579F7C8B, 0x3F312125,
+/**/ 0xA8800000, 0xBF312092,
+/**/ 0x057F5C66, 0xBD24C5AE,
+/**/ 0x13324657, 0x3F310121,
+/**/ 0x86800000, 0xBF310090,
+/**/ 0xBFD488E0, 0x3D3A03C0,
+/**/ 0xD6C6A858, 0x3F30E11C,
+/**/ 0x68400000, 0xBF30E08E,
+/**/ 0x56935D63, 0xBD00EDA8,
+/**/ 0xA25C9F8F, 0x3F30C118,
+/**/ 0x4E000000, 0xBF30C08C,
+/**/ 0x2FDDD1CE, 0xBD3EC638,
+/**/ 0x75F428FB, 0x3F30A114,
+/**/ 0x38000000, 0xBF30A08A,
+/**/ 0x0CA3DCBE, 0x3D102CDE,
+/**/ 0x518D419B, 0x3F308110,
+/**/ 0x25C00000, 0xBF308088,
+/**/ 0xBFA78921, 0xBD39A865,
+/**/ 0x3527E66D, 0x3F30610C,
+/**/ 0x17C00000, 0xBF306086,
+/**/ 0x72CE37BD, 0x3D203FE0,
+/**/ 0x20C41472, 0x3F304108,
+/**/ 0x0D800000, 0xBF304084,
+/**/ 0x6054C3FA, 0xBD369AC6,
+/**/ 0x1461C8A9, 0x3F302104,
+/**/ 0x07800000, 0xBF302082,
+/**/ 0x4836293A, 0x3D2450ED,
+/**/ 0x10010010, 0x3F300100,
+/**/ 0x05400000, 0xBF300080,
+/**/ 0x88B3357C, 0xBD359558,
+/**/ 0x27436F4F, 0x3F2FC1F8,
+/**/ 0x0E800000, 0xBF2FC0FC,
+/**/ 0x92ECD4D1, 0x3D245998,
+/**/ 0x3E87D8DC, 0x3F2F81F0,
+/**/ 0x1A000000, 0xBF2F80F8,
+/**/ 0xB592170A, 0xBD36901A,
+/**/ 0x65CF36C6, 0x3F2F41E8,
+/**/ 0x2E000000, 0xBF2F40F4,
+/**/ 0x53524603, 0x3D2069E5,
+/**/ 0x9D19830B, 0x3F2F01E0,
+/**/ 0x49800000, 0xBF2F00F0,
+/**/ 0x69C22240, 0xBD39830B,
+/**/ 0xE466B7AB, 0x3F2EC1D8,
+/**/ 0x6D800000, 0xBF2EC0EC,
+/**/ 0xFB871BBA, 0x3D1123AC,
+/**/ 0x3BB6CEA4, 0x3F2E81D1,
+/**/ 0x99000000, 0xBF2E80E8,
+/**/ 0x2E158AF6, 0xBD3E6629,
+/**/ 0xA309C1F4, 0x3F2E41C9,
+/**/ 0xCD000000, 0xBF2E40E4,
+/**/ 0x2B29884E, 0xBCF8F488,
+/**/ 0x1A5F8B99, 0x3F2E01C2,
+/**/ 0x09000000, 0xBF2E00E1,
+/**/ 0x6EA006C6, 0x3D3ACE8D,
+/**/ 0xA1B82593, 0x3F2DC1BA,
+/**/ 0x4C800000, 0xBF2DC0DD,
+/**/ 0x59D0B687, 0xBD22974E,
+/**/ 0x391389E0, 0x3F2D81B3,
+/**/ 0x98800000, 0xBF2D80D9,
+/**/ 0xD7897CAD, 0x3D322319,
+/**/ 0xE071B27F, 0x3F2D41AB,
+/**/ 0xEC000000, 0xBF2D40D5,
+/**/ 0x57954C6E, 0xBD32E42F,
+/**/ 0x97D2996E, 0x3F2D01A4,
+/**/ 0x48000000, 0xBF2D00D2,
+/**/ 0xC741610E, 0x3D1E7DF5,
+/**/ 0x5F3638AB, 0x3F2CC19D,
+/**/ 0xAB800000, 0xBF2CC0CE,
+/**/ 0xA0909C5A, 0xBD3E50DF,
+/**/ 0x369C8A37, 0x3F2C8196,
+/**/ 0x17800000, 0xBF2C80CB,
+/**/ 0x8D8D1C8F, 0xBD12D119,
+/**/ 0x1E05880E, 0x3F2C418F,
+/**/ 0x8B800000, 0xBF2C40C7,
+/**/ 0x544D2574, 0x3D347649,
+/**/ 0x15712C30, 0x3F2C0188,
+/**/ 0x07000000, 0xBF2C00C4,
+/**/ 0x4EEA9E68, 0xBD32D030,
+/**/ 0x1CDF709C, 0x3F2BC181,
+/**/ 0x8B000000, 0xBF2BC0C0,
+/**/ 0x74A84109, 0x3D15E533,
+/**/ 0x34504F50, 0x3F2B817A,
+/**/ 0x17000000, 0xBF2B80BD,
+/**/ 0x025FBF68, 0x3D3D53C1,
+/**/ 0x5BC3C24B, 0x3F2B4173,
+/**/ 0xAA800000, 0xBF2B40B9,
+/**/ 0x6BAA2FA8, 0xBD267FA7,
+/**/ 0x9339C38C, 0x3F2B016C,
+/**/ 0x46800000, 0xBF2B00B6,
+/**/ 0xBB3FDE1E, 0x3D277F1D,
+/**/ 0xDAB24D11, 0x3F2AC165,
+/**/ 0xEA000000, 0xBF2AC0B2,
+/**/ 0x1A8CDBE2, 0xBD3DAD17,
+/**/ 0x322D58D9, 0x3F2A815F,
+/**/ 0x96000000, 0xBF2A80AF,
+/**/ 0xD81CF36E, 0xBD1E1315,
+/**/ 0x99AAE0E3, 0x3F2A4158,
+/**/ 0x4A000000, 0xBF2A40AC,
+/**/ 0xE649E7B4, 0x3D2C7307,
+/**/ 0x112ADF2D, 0x3F2A0152,
+/**/ 0x05800000, 0xBF2A00A9,
+/**/ 0xB77435EC, 0xBD3C713A,
+/**/ 0x98AD4DB7, 0x3F29C14B,
+/**/ 0xC9800000, 0xBF29C0A5,
+/**/ 0x3A7AE827, 0xBD1E1005,
+/**/ 0x3032267F, 0x3F298145,
+/**/ 0x95800000, 0xBF2980A2,
+/**/ 0xA8F2A842, 0x3D2A0460,
+/**/ 0xD7B96385, 0x3F29413E,
+/**/ 0x69000000, 0xBF29409F,
+/**/ 0xA7B8321E, 0xBD3EDDA5,
+/**/ 0x8F42FEC5, 0x3F290138,
+/**/ 0x45000000, 0xBF29009C,
+/**/ 0x3A3F0D33, 0xBD264506,
+/**/ 0x56CEF241, 0x3F28C132,
+/**/ 0x29000000, 0xBF28C099,
+/**/ 0x33EE13CD, 0x3D206930,
+/**/ 0x2E5D37F6, 0x3F28812C,
+/**/ 0x15000000, 0xBF288096,
+/**/ 0x22DF1FDA, 0x3D3B28AC,
+/**/ 0x15EDC9E3, 0x3F284126,
+/**/ 0x08800000, 0xBF284093,
+/**/ 0xDD73B6DB, 0xBD324546,
+/**/ 0x0D80A208, 0x3F280120,
+/**/ 0x04800000, 0xBF280090,
+/**/ 0x6DFEB485, 0xBCB440C2,
+/**/ 0x1515BA62, 0x3F27C11A,
+/**/ 0x08800000, 0xBF27C08D,
+/**/ 0x9823B19D, 0x3D31BCBE,
+/**/ 0x2CAD0CF1, 0x3F278114,
+/**/ 0x14000000, 0xBF27808A,
+/**/ 0xA9EB4E97, 0xBD3CD148,
+/**/ 0x544693B4, 0x3F27410E,
+/**/ 0x28000000, 0xBF274087,
+/**/ 0xCA4F73AA, 0xBD277AAC,
+/**/ 0x8BE248AA, 0x3F270108,
+/**/ 0x44000000, 0xBF270084,
+/**/ 0x26068EF7, 0x3D13E656,
+/**/ 0xD38025D2, 0x3F26C102,
+/**/ 0x68000000, 0xBF26C081,
+/**/ 0x44C3EC8A, 0x3D35547B,
+/**/ 0x2B20252A, 0x3F2680FD,
+/**/ 0x93800000, 0xBF26807E,
+/**/ 0x110DCE4B, 0xBD3AABA5,
+/**/ 0x92C240B1, 0x3F2640F7,
+/**/ 0xC7800000, 0xBF26407B,
+/**/ 0xAC011956, 0xBD260B96,
+/**/ 0x0A667267, 0x3F2600F2,
+/**/ 0x03800000, 0xBF260079,
+/**/ 0x5DFA826E, 0x3D111C22,
+/**/ 0x920CB44A, 0x3F25C0EC,
+/**/ 0x47800000, 0xBF25C076,
+/**/ 0xD8A2980A, 0x3D333BD6,
+/**/ 0x29B5005A, 0x3F2580E7,
+/**/ 0x93000000, 0xBF258073,
+/**/ 0x71C1D861, 0xBD3E2660,
+/**/ 0xD15F5095, 0x3F2540E1,
+/**/ 0xE7000000, 0xBF254070,
+/**/ 0x4E77E5EE, 0xBD2FBD3A,
+/**/ 0x890B9EFA, 0x3F2500DC,
+/**/ 0x43000000, 0xBF25006E,
+/**/ 0x7B90A2D9, 0xBCFEBDF2,
+/**/ 0x50B9E589, 0x3F24C0D7,
+/**/ 0xA7000000, 0xBF24C06B,
+/**/ 0x58F2FF2C, 0x3D2765B3,
+/**/ 0x286A1E40, 0x3F2480D2,
+/**/ 0x13000000, 0xBF248069,
+/**/ 0x74AE382C, 0x3D38FE8D,
+/**/ 0x101C431E, 0x3F2440CD,
+/**/ 0x86800000, 0xBF244066,
+/**/ 0xB0286224, 0xBD3A07C3,
+/**/ 0x07D04E23, 0x3F2400C8,
+/**/ 0x02800000, 0xBF240064,
+/**/ 0x46EFC0EC, 0xBD2ABE33,
+/**/ 0x0F86394D, 0x3F23C0C3,
+/**/ 0x86800000, 0xBF23C061,
+/**/ 0x70DE3151, 0xBCF06744,
+/**/ 0x273DFE9C, 0x3F2380BE,
+/**/ 0x12800000, 0xBF23805F,
+/**/ 0x05CFCD61, 0x3D260659,
+/**/ 0x4EF7980F, 0x3F2340B9,
+/**/ 0xA6800000, 0xBF23405C,
+/**/ 0xD7DBBEBC, 0x3D36BEC8,
+/**/ 0x86B2FFA4, 0x3F2300B4,
+/**/ 0x42000000, 0xBF23005A,
+/**/ 0x2B2027B4, 0xBD3DD29F,
+/**/ 0xCE702F5C, 0x3F22C0AF,
+/**/ 0xE6000000, 0xBF22C057,
+/**/ 0x6959A7D0, 0xBD32B00B,
+/**/ 0x262F2134, 0x3F2280AB,
+/**/ 0x92000000, 0xBF228055,
+/**/ 0x19FAAC2D, 0xBD1F61EF,
+/**/ 0x8DEFCF2C, 0x3F2240A6,
+/**/ 0x46000000, 0xBF224053,
+/**/ 0xCB16B8A8, 0x3D05A87E,
+/**/ 0x05B23344, 0x3F2200A2,
+/**/ 0x02000000, 0xBF220051,
+/**/ 0x23B9B257, 0x3D29F32F,
+/**/ 0x8D76477A, 0x3F21C09D,
+/**/ 0xC6000000, 0xBF21C04E,
+/**/ 0x7E214821, 0x3D36F61B,
+/**/ 0x253C05CD, 0x3F218099,
+/**/ 0x91800000, 0xBF21804C,
+/**/ 0x46FDFCA2, 0xBD3F5464,
+/**/ 0xCD03683D, 0x3F214094,
+/**/ 0x65800000, 0xBF21404A,
+/**/ 0xA30F2308, 0xBD35E4E7,
+/**/ 0x84CC68C9, 0x3F210090,
+/**/ 0x41800000, 0xBF210048,
+/**/ 0xF800CC34, 0xBD2974DC,
+/**/ 0x4C970171, 0x3F20C08C,
+/**/ 0x25800000, 0xBF20C046,
+/**/ 0xC1006E9D, 0xBD0E9FC5,
+/**/ 0x24632C32, 0x3F208088,
+/**/ 0x11800000, 0xBF208044,
+/**/ 0x078E4438, 0x3D133DE7,
+/**/ 0x0C30E30D, 0x3F204084,
+/**/ 0x05800000, 0xBF204042,
+/**/ 0x15F82A7B, 0x3D2A61D2,
+/**/ 0x04002001, 0x3F200080,
+/**/ 0x01800000, 0xBF200040,
+/**/ 0x3BBB110C, 0x3D355155,
+/**/ 0x17A1BA1A, 0x3F1F80F8,
+/**/ 0x0B000000, 0xBF1F807C,
+/**/ 0x6C520A9B, 0x3D3D31BE,
+/**/ 0x47462860, 0x3F1F00F0,
+/**/ 0x22000000, 0xBF1F0078,
+/**/ 0x4B6D83F6, 0xBD3B2CDB,
+/**/ 0x96ED7ED3, 0x3F1E80E8,
+/**/ 0x4A000000, 0xBF1E8074,
+/**/ 0xD4122C5A, 0xBD33C977,
+/**/ 0x0697B172, 0x3F1E00E1,
+/**/ 0x82000000, 0xBF1E0070,
+/**/ 0x2D1517C4, 0xBD29462E,
+/**/ 0x9644B43B, 0x3F1D80D9,
+/**/ 0xCA000000, 0xBF1D806C,
+/**/ 0xF0952D45, 0xBD16E2E3,
+/**/ 0x45F47B2C, 0x3F1D00D2,
+/**/ 0x22000000, 0xBF1D0069,
+/**/ 0x2DDC2A8D, 0x3CEED452,
+/**/ 0x15A6FA46, 0x3F1C80CB,
+/**/ 0x8A000000, 0xBF1C8065,
+/**/ 0xA08CEBE8, 0x3D1DAFEE,
+/**/ 0x055C2585, 0x3F1C00C4,
+/**/ 0x02000000, 0xBF1C0062,
+/**/ 0xBB11EF55, 0x3D2B50A4,
+/**/ 0x1513F0E9, 0x3F1B80BD,
+/**/ 0x8A000000, 0xBF1B805E,
+/**/ 0xC6D142BF, 0x3D33ACA6,
+/**/ 0x44CE5071, 0x3F1B00B6,
+/**/ 0x22000000, 0xBF1B005B,
+/**/ 0xF8CD3D11, 0x3D3979F8,
+/**/ 0x948B381A, 0x3F1A80AF,
+/**/ 0xCA000000, 0xBF1A8057,
+/**/ 0x07EDFD29, 0x3D3F1149,
+/**/ 0x044A9BE5, 0x3F1A00A9,
+/**/ 0x81000000, 0xBF1A0054,
+/**/ 0xF7BB7092, 0xBD3B8C68,
+/**/ 0x940C6FCF, 0x3F1980A2,
+/**/ 0x49000000, 0xBF198051,
+/**/ 0xF27E09A9, 0xBD365E1C,
+/**/ 0x43D0A7D8, 0x3F19009C,
+/**/ 0x21000000, 0xBF19004E,
+/**/ 0xD508D564, 0xBD3162D2,
+/**/ 0x139737FE, 0x3F188096,
+/**/ 0x09000000, 0xBF18804B,
+/**/ 0x18D5C93E, 0xBD293315,
+/**/ 0x03601440, 0x3F180090,
+/**/ 0x01000000, 0xBF180048,
+/**/ 0x0C26A328, 0xBD200288,
+/**/ 0x132B309E, 0x3F17808A,
+/**/ 0x09000000, 0xBF178045,
+/**/ 0x7E89FD6F, 0xBD0CC7F9,
+/**/ 0x42F88115, 0x3F170084,
+/**/ 0x21000000, 0xBF170042,
+/**/ 0x058494DC, 0x3CE40881,
+/**/ 0x92C7F9A5, 0x3F16807E,
+/**/ 0x49000000, 0xBF16803F,
+/**/ 0xCD5698B9, 0x3D12AE16,
+/**/ 0x02998E4D, 0x3F160079,
+/**/ 0x81000000, 0xBF16003C,
+/**/ 0xC5780E17, 0x3D21138B,
+/**/ 0x926D330B, 0x3F158073,
+/**/ 0xC9000000, 0xBF158039,
+/**/ 0x4E2001E2, 0x3D287809,
+/**/ 0x4242DBDF, 0x3F15006E,
+/**/ 0x21000000, 0xBF150037,
+/**/ 0x21448AA2, 0x3D2F8684,
+/**/ 0x121A7CC8, 0x3F148069,
+/**/ 0x89000000, 0xBF148034,
+/**/ 0x2F637D8E, 0x3D33207E,
+/**/ 0x01F409C4, 0x3F140064,
+/**/ 0x01000000, 0xBF140032,
+/**/ 0x12E44B29, 0x3D3654B9,
+/**/ 0x11CF76D3, 0x3F13805F,
+/**/ 0x89000000, 0xBF13802F,
+/**/ 0xCA5547F3, 0x3D3960F2,
+/**/ 0x41ACB7F4, 0x3F13005A,
+/**/ 0x21000000, 0xBF13002D,
+/**/ 0x6487063D, 0x3D3C462B,
+/**/ 0x918BC126, 0x3F128055,
+/**/ 0xC9000000, 0xBF12802A,
+/**/ 0xEFEA1107, 0x3D3F0562,
+/**/ 0x016C8668, 0x3F120051,
+/**/ 0x80000000, 0xBF120028,
+/**/ 0x857113CE, 0xBD3E6066,
+/**/ 0x914EFBBA, 0x3F11804C,
+/**/ 0x48000000, 0xBF118026,
+/**/ 0xEDD9EB54, 0xBD3BEA30,
+/**/ 0x41331519, 0x3F110048,
+/**/ 0x20000000, 0xBF110024,
+/**/ 0x3BFFFF5A, 0xBD3996FC,
+/**/ 0x1118C686, 0x3F108044,
+/**/ 0x08000000, 0xBF108022,
+/**/ 0x62F2E042, 0xBD3765C8,
+/**/ 0x01000400, 0x3F100040,
+/**/ 0x00000000, 0xBF100020,
+/**/ 0x562224CD, 0xBD355595,
+/**/ 0x21D1830C, 0x3F0F0078,
+/**/ 0x10000000, 0xBF0F003C,
+/**/ 0x095D69EB, 0xBD336563,
+/**/ 0x81A5E62E, 0x3F0E0070,
+/**/ 0x40000000, 0xBF0E0038,
+/**/ 0x70D45290, 0xBD319431,
+/**/ 0x217D1965, 0x3F0D0069,
+/**/ 0x90000000, 0xBF0D0034,
+/**/ 0x022D0EF6, 0xBD2FC201,
+/**/ 0x015704B1, 0x3F0C0062,
+/**/ 0x00000000, 0xBF0C0031,
+/**/ 0x5E276E21, 0xBD2C95A0,
+/**/ 0x2133900E, 0x3F0B005B,
+/**/ 0x90000000, 0xBF0B002D,
+/**/ 0xE0372A42, 0xBD29A140,
+/**/ 0x8112A37D, 0x3F0A0054,
+/**/ 0x40000000, 0xBF0A002A,
+/**/ 0x73BBB580, 0xBD26E2E2,
+/**/ 0x20F426FB, 0x3F09004E,
+/**/ 0x10000000, 0xBF090027,
+/**/ 0x04D48C20, 0xBD245885,
+/**/ 0x00D80288, 0x3F080048,
+/**/ 0x00000000, 0xBF080024,
+/**/ 0x80613426, 0xBD220028,
+/**/ 0x20BE1E23, 0x3F070042,
+/**/ 0x10000000, 0xBF070021,
+/**/ 0xA80279F3, 0xBD1FAF99,
+/**/ 0x80A661CA, 0x3F06003C,
+/**/ 0x40000000, 0xBF06001E,
+/**/ 0xDC287DFE, 0xBD1BBAE3,
+/**/ 0x2090B57C, 0x3F050037,
+/**/ 0x90000000, 0xBF05001B,
+/**/ 0x7B73B67C, 0xBD181E2F,
+/**/ 0x007D0139, 0x3F040032,
+/**/ 0x00000000, 0xBF040019,
+/**/ 0x65A375F8, 0xBD14D57C,
+/**/ 0x206B2CFF, 0x3F03002D,
+/**/ 0x90000000, 0xBF030016,
+/**/ 0x7BF71EC1, 0xBD11DCCA,
+/**/ 0x805B20CD, 0x3F020028,
+/**/ 0x40000000, 0xBF020014,
+/**/ 0x425C4447, 0xBD0E6033,
+/**/ 0x204CC4A3, 0x3F010024,
+/**/ 0x10000000, 0xBF010012,
+/**/ 0x730FFF5C, 0xBD0996D3,
+/**/ 0x00400080, 0x3F000020,
+/**/ 0x00000000, 0xBF000010,
+/**/ 0x558888DE, 0xBD055575,
+/**/ 0x406978C6, 0x3EFE0038,
+/**/ 0x20000000, 0xBEFE001C,
+/**/ 0xB845146A, 0xBD019418,
+/**/ 0x0055C096, 0x3EFC0031,
+/**/ 0x80000000, 0xBEFC0018,
+/**/ 0xD989DB3C, 0xBCFC957A,
+/**/ 0x4044A870, 0x3EFA002A,
+/**/ 0x20000000, 0xBEFA0015,
+/**/ 0x8F0EED2F, 0xBCF6E2C6,
+/**/ 0x00360051, 0x3EF80024,
+/**/ 0x00000000, 0xBEF80012,
+/**/ 0x40184CEB, 0xBCF20014,
+/**/ 0x40299839, 0x3EF6001E,
+/**/ 0x20000000, 0xBEF6000F,
+/**/ 0x434A1F5C, 0xBCEBBAC7,
+/**/ 0x001F4027, 0x3EF40019,
+/**/ 0x80000000, 0xBEF4000C,
+/**/ 0xDD68DD6A, 0xBCE4D568,
+/**/ 0x4016C81A, 0x3EF20014,
+/**/ 0x20000000, 0xBEF2000A,
+/**/ 0xA11710FC, 0xBCDE6019,
+/**/ 0x00100010, 0x3EF00010,
+/**/ 0x00000000, 0xBEF00008,
+/**/ 0x5562222D, 0xBCD55565,
+/**/ 0x80157013, 0x3EEC0018,
+/**/ 0x40000000, 0xBEEC000C,
+/**/ 0x176276C5, 0xBCCC9568,
+/**/ 0x000D800A, 0x3EE80012,
+/**/ 0x00000000, 0xBEE80009,
+/**/ 0x20061337, 0xBCC2000A,
+/**/ 0x8007D005, 0x3EE4000C,
+/**/ 0x40000000, 0xBEE40006,
+/**/ 0x195A3758, 0xBCB4D55F,
+/**/ 0x00040002, 0x3EE00008,
+/**/ 0x00000000, 0xBEE00004,
+/**/ 0x5558888A, 0xBCA5555D,
+/**/ 0x00036001, 0x3ED80009,
+/**/ 0x80000000, 0xBED80004,
+/**/ 0x100184CD, 0xBC920005,
+/**/ 0x00010000, 0x3ED00004,
+/**/ 0x00000000, 0xBED00002,
+/**/ 0x55562222, 0xBC755559,
+/**/ 0x00004000, 0x3EC00002,
+/**/ 0x00000000, 0xBEC00001,
+/**/ 0x55558889, 0xBC455557,
+/**/ 0x00000000, 0x00000000,
+/**/ 0x00000000, 0x00000000,
+/**/ 0x00000000, 0x00000000,
+/**/ 0x00008000, 0xBEBFFFFC,
+/**/ 0x00000000, 0x3EBFFFFE,
+/**/ 0x55558889, 0x3C455553,
+/**/ 0x00020000, 0xBECFFFF8,
+/**/ 0x00000000, 0x3ECFFFFC,
+/**/ 0x55562222, 0x3C755551,
+/**/ 0x00035FFF, 0xBED7FFF7,
+/**/ 0x80000000, 0x3ED7FFFB,
+/**/ 0xF00184CC, 0x3C91FFFA,
+/**/ 0x0007FFFC, 0xBEDFFFF0,
+/**/ 0x00000000, 0x3EDFFFF8,
+/**/ 0x55588887, 0x3CA5554D,
+/**/ 0x8007CFFB, 0xBEE3FFF3,
+/**/ 0xC0000000, 0x3EE3FFF9,
+/**/ 0x915A3753, 0x3CB4D54B,
+/**/ 0x000D7FF6, 0xBEE7FFEE,
+/**/ 0x00000000, 0x3EE7FFF7,
+/**/ 0xE006132F, 0x3CC1FFF5,
+/**/ 0x80156FED, 0xBEEBFFE7,
+/**/ 0xC0000000, 0x3EEBFFF3,
+/**/ 0x936276B2, 0x3CCC9542,
+/**/ 0x001FFFE0, 0xBEEFFFE0,
+/**/ 0x00000000, 0x3EEFFFF0,
+/**/ 0x55622217, 0x3CD55545,
+/**/ 0xC016C7E6, 0xBEF1FFEB,
+/**/ 0xE0000000, 0x3EF1FFF5,
+/**/ 0x5F1710D1, 0x3CDE5FE6,
+/**/ 0x001F3FD9, 0xBEF3FFE7,
+/**/ 0x80000000, 0x3EF3FFF3,
+/**/ 0xCD68DD41, 0x3CE4D541,
+/**/ 0xC02997C7, 0xBEF5FFE1,
+/**/ 0xE0000000, 0x3EF5FFF0,
+/**/ 0x124A1F13, 0x3CEBBA8E,
+/**/ 0x0035FFAF, 0xBEF7FFDC,
+/**/ 0x00000000, 0x3EF7FFEE,
+/**/ 0xC0184CAE, 0x3CF1FFEB,
+/**/ 0xC044A790, 0xBEF9FFD5,
+/**/ 0xE0000000, 0x3EF9FFEA,
+/**/ 0xC68EECCD, 0x3CF6E28E,
+/**/ 0x0055BF6A, 0xBEFBFFCF,
+/**/ 0x80000000, 0x3EFBFFE7,
+/**/ 0xD189DAA2, 0x3CFC952F,
+/**/ 0xC069773A, 0xBEFDFFC7,
+/**/ 0xE0000000, 0x3EFDFFE3,
+/**/ 0x480513F6, 0x3D0193E7,
+/**/ 0x007FFF00, 0xBEFFFFC0,
+/**/ 0x00000000, 0x3EFFFFE0,
+/**/ 0x55888833, 0x3D055535,
+/**/ 0xE04CC35D, 0xBF00FFDB,
+/**/ 0xF0000000, 0x3F00FFED,
+/**/ 0xE2CFFE66, 0x3D099681,
+/**/ 0x805B1F33, 0xBF01FFD7,
+/**/ 0xC0000000, 0x3F01FFEB,
+/**/ 0xBE5C42ED, 0x3D0E5FCC,
+/**/ 0xE06B2B01, 0xBF02FFD2,
+/**/ 0x70000000, 0x3F02FFE9,
+/**/ 0xD9D71DD1, 0x3D11DC8A,
+/**/ 0x007CFEC8, 0xBF03FFCE,
+/**/ 0x00000000, 0x3F03FFE7,
+/**/ 0x45A374B3, 0x3D14D52E,
+/**/ 0xE090B284, 0xBF04FFC8,
+/**/ 0x70000000, 0x3F04FFE4,
+/**/ 0x8553B4C7, 0x3D181DD0,
+/**/ 0x80A65E36, 0xBF05FFC3,
+/**/ 0xC0000000, 0x3F05FFE1,
+/**/ 0x7A287BBE, 0x3D1BBA71,
+/**/ 0xE0BE19DD, 0xBF06FFBD,
+/**/ 0xF0000000, 0x3F06FFDE,
+/**/ 0x03E27702, 0x3D1FAF11,
+/**/ 0x00D7FD78, 0xBF07FFB8,
+/**/ 0x00000000, 0x3F07FFDC,
+/**/ 0x80613240, 0x3D21FFD7,
+/**/ 0xE0F42105, 0xBF08FFB1,
+/**/ 0xF0000000, 0x3F08FFD8,
+/**/ 0xA6C489B3, 0x3D245825,
+/**/ 0x81129C84, 0xBF09FFAB,
+/**/ 0xC0000000, 0x3F09FFD5,
+/**/ 0xE2BBB26F, 0x3D26E272,
+/**/ 0xE13387F2, 0xBF0AFFA4,
+/**/ 0x70000000, 0x3F0AFFD2,
+/**/ 0x21272669, 0x3D29A0BF,
+/**/ 0x0156FB50, 0xBF0BFF9E,
+/**/ 0x00000000, 0x3F0BFFCF,
+/**/ 0x4E276957, 0x3D2C950A,
+/**/ 0xE17D0E9B, 0xBF0CFF96,
+/**/ 0x70000000, 0x3F0CFFCB,
+/**/ 0x551D090E, 0x3D2FC154,
+/**/ 0x81A5D9D2, 0xBF0DFF8F,
+/**/ 0xC0000000, 0x3F0DFFC7,
+/**/ 0x90544EF1, 0x3D3193CE,
+/**/ 0xE1D174F4, 0xBF0EFF87,
+/**/ 0xF0000000, 0x3F0EFFC3,
+/**/ 0x4D556583, 0x3D3364F2,
+/**/ 0x01FFF800, 0xBF0FFF80,
+/**/ 0x00000000, 0x3F0FFFC0,
+/**/ 0x56221F78, 0x3D355515,
+/**/ 0xF118BD7A, 0xBF107FBB,
+/**/ 0xF8000000, 0x3F107FDD,
+/**/ 0x9EEAD9D8, 0x3D376537,
+/**/ 0xC1330AE7, 0xBF10FFB7,
+/**/ 0xE0000000, 0x3F10FFDB,
+/**/ 0x1B7FF7AE, 0x3D399659,
+/**/ 0x714EF047, 0xBF117FB3,
+/**/ 0xB8000000, 0x3F117FD9,
+/**/ 0xBF51E233, 0x3D3BE979,
+/**/ 0x016C7998, 0xBF11FFAF,
+/**/ 0x80000000, 0x3F11FFD7,
+/**/ 0x7D7108FF, 0x3D3E5F99,
+/**/ 0x718BB2DA, 0xBF127FAA,
+/**/ 0x39000000, 0x3F127FD5,
+/**/ 0xB7721DC6, 0xBD3F0647,
+/**/ 0xC1ACA80C, 0xBF12FFA5,
+/**/ 0xE1000000, 0x3F12FFD2,
+/**/ 0xED071532, 0xBD3C4729,
+/**/ 0xF1CF652D, 0xBF137FA0,
+/**/ 0x79000000, 0x3F137FD0,
+/**/ 0x315D596D, 0xBD39620D,
+/**/ 0x01F3F63C, 0xBF13FF9C,
+/**/ 0x01000000, 0x3F13FFCE,
+/**/ 0x92E45F81, 0xBD3655F1,
+/**/ 0xF21A6739, 0xBF147F96,
+/**/ 0x79000000, 0x3F147FCB,
+/**/ 0x206B9526, 0xBD3321D7,
+/**/ 0xC242C421, 0xBF14FF91,
+/**/ 0xE1000000, 0x3F14FFC8,
+/**/ 0xD244C12A, 0xBD2F897B,
+/**/ 0x726D18F6, 0xBF157F8C,
+/**/ 0x39000000, 0x3F157FC6,
+/**/ 0xF93040AE, 0xBD287B4B,
+/**/ 0x029971B4, 0xBF15FF87,
+/**/ 0x81000000, 0x3F15FFC3,
+/**/ 0xD578562C, 0xBD21171E,
+/**/ 0x72C7DA5C, 0xBF167F81,
+/**/ 0xB9000000, 0x3F167FC0,
+/**/ 0x0F773DB4, 0xBD12B5E9,
+/**/ 0xC2F85EEC, 0xBF16FF7B,
+/**/ 0xE1000000, 0x3F16FFBD,
+/**/ 0x158A76C2, 0xBCE44CD3,
+/**/ 0xF32B0B63, 0xBF177F75,
+/**/ 0xF9000000, 0x3F177FBA,
+/**/ 0x2E48511B, 0x3D0CB55C,
+/**/ 0x035FEBC0, 0xBF17FF70,
+/**/ 0x01000000, 0x3F17FFB8,
+/**/ 0x184C534F, 0x3D1FFAF0,
+/**/ 0xF3970C03, 0xBF187F69,
+/**/ 0xF9000000, 0x3F187FB4,
+/**/ 0xACC53FBE, 0x3D292D95,
+/**/ 0xC3D07829, 0xBF18FF63,
+/**/ 0xE1000000, 0x3F18FFB1,
+/**/ 0xE48887C8, 0x3D315FD7,
+/**/ 0x740C3C32, 0xBF197F5D,
+/**/ 0xB9000000, 0x3F197FAE,
+/**/ 0x1DF5B242, 0x3D365AE3,
+/**/ 0x044A641C, 0xBF19FF57,
+/**/ 0x81000000, 0x3F19FFAB,
+/**/ 0x6FBB0E5F, 0x3D3B88EC,
+/**/ 0x748AFBE7, 0xBF1A7F50,
+/**/ 0x3A000000, 0x3F1A7FA8,
+/**/ 0x39766B40, 0xBD3F150C,
+/**/ 0xC4CE0F91, 0xBF1AFF49,
+/**/ 0xE2000000, 0x3F1AFFA4,
+/**/ 0xF14DB839, 0xBD397E06,
+/**/ 0xF513AB19, 0xBF1B7F42,
+/**/ 0x7A000000, 0x3F1B7FA1,
+/**/ 0xCBD9CC3D, 0xBD33B103,
+/**/ 0x055BDA7D, 0xBF1BFF3C,
+/**/ 0x02000000, 0x3F1BFF9E,
+/**/ 0xBB1321B5, 0xBD2B5A05,
+/**/ 0xF5A6A9BD, 0xBF1C7F34,
+/**/ 0x7A000000, 0x3F1C7F9A,
+/**/ 0xECAF9551, 0xBD1DC410,
+/**/ 0xC5F424D6, 0xBF1CFF2D,
+/**/ 0xE2000000, 0x3F1CFF96,
+/**/ 0x3DF3CD68, 0xBCEF80FF,
+/**/ 0x764457C8, 0xBF1D7F26,
+/**/ 0x3A000000, 0x3F1D7F93,
+/**/ 0x4271E737, 0x3D16CBC7,
+/**/ 0x06974E91, 0xBF1DFF1F,
+/**/ 0x82000000, 0x3F1DFF8F,
+/**/ 0x1D134848, 0x3D2939D2,
+/**/ 0x76ED1530, 0xBF1E7F17,
+/**/ 0xBA000000, 0x3F1E7F8B,
+/**/ 0xA9892C73, 0x3D33C2DD,
+/**/ 0xC745B7A4, 0xBF1EFF0F,
+/**/ 0xE2000000, 0x3F1EFF87,
+/**/ 0x8AEC69D5, 0x3D3B25CF,
+/**/ 0xF7A141EA, 0xBF1F7F07,
+/**/ 0xFB000000, 0x3F1F7F83,
+/**/ 0x645B412A, 0xBD3D3941,
+/**/ 0x07FFC002, 0xBF1FFF00,
+/**/ 0x03000000, 0x3F1FFF80,
+/**/ 0x3BBC6662, 0xBD355955,
+/**/ 0xFC309EF5, 0xBF203F7B,
+/**/ 0xFD800000, 0x3F203FBD,
+/**/ 0x260B17B3, 0xBD2A72D8,
+/**/ 0xE462E3D0, 0xBF207F77,
+/**/ 0xF1800000, 0x3F207FBB,
+/**/ 0x0994AE68, 0xBD136218,
+/**/ 0xBC96B492, 0xBF20BF73,
+/**/ 0xDD800000, 0x3F20BFB9,
+/**/ 0xECB2641F, 0x3D0E52E6,
+/**/ 0x84CC1739, 0xBF20FF6F,
+/**/ 0xC1800000, 0x3F20FFB7,
+/**/ 0xE7FCF60B, 0x3D296078,
+/**/ 0x3D0311C6, 0xBF213F6B,
+/**/ 0x9D800000, 0x3F213FB5,
+/**/ 0xA7850AFF, 0x3D35DA18,
+/**/ 0xE53BAA36, 0xBF217F66,
+/**/ 0x71800000, 0x3F217FB3,
+/**/ 0x5E7BB444, 0x3D3F48F1,
+/**/ 0x7D75E68A, 0xBF21BF62,
+/**/ 0x3E000000, 0x3F21BFB1,
+/**/ 0x812BC469, 0xBD370239,
+/**/ 0x05B1CCC0, 0xBF21FF5E,
+/**/ 0x02000000, 0x3F21FFAF,
+/**/ 0x23BF1A4D, 0xBD2A0CD0,
+/**/ 0x7DEF62D8, 0xBF223F59,
+/**/ 0xBE000000, 0x3F223FAC,
+/**/ 0x736E3623, 0xBD0614D3,
+/**/ 0xE62EAED0, 0xBF227F54,
+/**/ 0x72000000, 0x3F227FAA,
+/**/ 0x37EDEDB0, 0x3D1F28BD,
+/**/ 0x3E6FB6A9, 0xBF22BF50,
+/**/ 0x1E000000, 0x3F22BFA8,
+/**/ 0x07CE33C8, 0x3D32A0F5,
+/**/ 0x86B28060, 0xBF22FF4B,
+/**/ 0xC2000000, 0x3F22FFA5,
+/**/ 0xA31C6A8D, 0x3D3DC2B6,
+/**/ 0xBEF711F6, 0xBF233F46,
+/**/ 0x5E800000, 0x3F233FA3,
+/**/ 0xFC67C9FB, 0xBD36CF8B,
+/**/ 0xE73D7169, 0xBF237F41,
+/**/ 0xF2800000, 0x3F237FA0,
+/**/ 0xE6D88A89, 0xBD2629A5,
+/**/ 0xFF85A4B8, 0xBF23BF3C,
+/**/ 0x7E800000, 0x3F23BF9E,
+/**/ 0x202574EC, 0x3CEE7C34,
+/**/ 0x07CFB1E3, 0xBF23FF38,
+/**/ 0x02800000, 0x3F23FF9C,
+/**/ 0x46E594C1, 0x3D2A9723,
+/**/ 0x001B9EE8, 0xBF243F33,
+/**/ 0x7E800000, 0x3F243F99,
+/**/ 0xF61AE74C, 0x3D39F33C,
+/**/ 0xE86971C7, 0xBF247F2D,
+/**/ 0xF3000000, 0x3F247F96,
+/**/ 0x85341E31, 0xBD39141C,
+/**/ 0xC0B9307F, 0xBF24BF28,
+/**/ 0x5F000000, 0x3F24BF94,
+/**/ 0xDA0FAF09, 0xBD2792F5,
+/**/ 0x890AE10E, 0xBF24FF23,
+/**/ 0xC3000000, 0x3F24FF91,
+/**/ 0xFB239430, 0x3CFD4219,
+/**/ 0x415E8974, 0xBF253F1E,
+/**/ 0x1F000000, 0x3F253F8F,
+/**/ 0x0359434A, 0x3D2F8B72,
+/**/ 0xE9B42FAF, 0xBF257F18,
+/**/ 0x73000000, 0x3F257F8C,
+/**/ 0x1939FEDF, 0x3D3E0C4B,
+/**/ 0x820BD9BF, 0xBF25BF13,
+/**/ 0xBF800000, 0x3F25BF89,
+/**/ 0x39B301E2, 0xBD335728,
+/**/ 0x0A658DA3, 0xBF25FF0E,
+/**/ 0x03800000, 0x3F25FF87,
+/**/ 0x5E1E8D4F, 0xBD118E84,
+/**/ 0x82C15159, 0xBF263F08,
+/**/ 0x3F800000, 0x3F263F84,
+/**/ 0xBDDDD045, 0x3D25CFC0,
+/**/ 0xEB1F2AE1, 0xBF267F02,
+/**/ 0x73800000, 0x3F267F81,
+/**/ 0x08837E99, 0x3D3A8C5C,
+/**/ 0x437F203A, 0xBF26BEFD,
+/**/ 0xA0000000, 0x3F26BF7E,
+/**/ 0x3C56F12D, 0xBD35752E,
+/**/ 0x8BE13762, 0xBF26FEF7,
+/**/ 0xC4000000, 0x3F26FF7B,
+/**/ 0x46359E28, 0xBD146EFA,
+/**/ 0xC4457659, 0xBF273EF1,
+/**/ 0xE0000000, 0x3F273F78,
+/**/ 0xCD265865, 0x3D273355,
+/**/ 0xECABE31C, 0xBF277EEB,
+/**/ 0xF4000000, 0x3F277F75,
+/**/ 0x095DEBF8, 0x3D3CAC0E,
+/**/ 0x051483AC, 0xBF27BEE6,
+/**/ 0x00800000, 0x3F27BF73,
+/**/ 0x4C39F4DB, 0xBD31E395,
+/**/ 0x0D7F5E08, 0xBF27FEE0,
+/**/ 0x04800000, 0x3F27FF70,
+/**/ 0xA1314B81, 0xBCB43F3D,
+/**/ 0x05EC782D, 0xBF283EDA,
+/**/ 0x00800000, 0x3F283F6D,
+/**/ 0x115B8D70, 0x3D321B10,
+/**/ 0xEE5BD81B, 0xBF287ED3,
+/**/ 0xF5000000, 0x3F287F69,
+/**/ 0x83704FE1, 0xBD3B54A7,
+/**/ 0xC6CD83D1, 0xBF28BECD,
+/**/ 0xE1000000, 0x3F28BF66,
+/**/ 0x41229C91, 0xBD20C4CC,
+/**/ 0x8F41814D, 0xBF28FEC7,
+/**/ 0xC5000000, 0x3F28FF63,
+/**/ 0x2A183F17, 0x3D25E5A8,
+/**/ 0x47B7D68F, 0xBF293EC1,
+/**/ 0xA1000000, 0x3F293F60,
+/**/ 0xF81B997D, 0x3D3EAC06,
+/**/ 0xF0308995, 0xBF297EBA,
+/**/ 0x75800000, 0x3F297F5D,
+/**/ 0x3A1E5BAD, 0xBD2A6B9B,
+/**/ 0x88ABA05E, 0xBF29BEB4,
+/**/ 0x41800000, 0x3F29BF5A,
+/**/ 0xBDFE3C77, 0x3D1D3958,
+/**/ 0x112920E9, 0xBF29FEAE,
+/**/ 0x05800000, 0x3F29FF57,
+/**/ 0x375BA904, 0x3D3C3972,
+/**/ 0x89A91135, 0xBF2A3EA7,
+/**/ 0xC2000000, 0x3F2A3F53,
+/**/ 0x588DE85B, 0xBD2CE6F3,
+/**/ 0xF22B7740, 0xBF2A7EA0,
+/**/ 0x76000000, 0x3F2A7F50,
+/**/ 0x75AEDBFD, 0x3D1D2249,
+/**/ 0x4AB05909, 0xBF2ABE9A,
+/**/ 0x22000000, 0x3F2ABF4D,
+/**/ 0x2CE7BDAC, 0x3D3D6E96,
+/**/ 0x9337BC90, 0xBF2AFE93,
+/**/ 0xC6800000, 0x3F2AFF49,
+/**/ 0xCB7D724C, 0xBD2800DC,
+/**/ 0xCBC1A7D1, 0xBF2B3E8C,
+/**/ 0x62800000, 0x3F2B3F46,
+/**/ 0xFA591B29, 0x3D25F908,
+/**/ 0xF44E20CE, 0xBF2B7E85,
+/**/ 0xF7000000, 0x3F2B7F42,
+/**/ 0x53021ED8, 0xBD3D9991,
+/**/ 0x0CDD2D83, 0xBF2BBE7F,
+/**/ 0x83000000, 0x3F2BBF3F,
+/**/ 0xFD596AD6, 0xBD1706BF,
+/**/ 0x156ED3F0, 0xBF2BFE78,
+/**/ 0x07000000, 0x3F2BFF3C,
+/**/ 0x4EC45253, 0x3D328528,
+/**/ 0x0E031A14, 0xBF2C3E71,
+/**/ 0x83800000, 0x3F2C3F38,
+/**/ 0x927D8A9E, 0xBD34C408,
+/**/ 0xF69A05ED, 0xBF2C7E69,
+/**/ 0xF7800000, 0x3F2C7F34,
+/**/ 0xCAE2C25F, 0x3D118EF4,
+/**/ 0xCF339D7A, 0xBF2CBE62,
+/**/ 0x63800000, 0x3F2CBF31,
+/**/ 0x73DBBB41, 0x3D3DFD79,
+/**/ 0x97CFE6B9, 0xBF2CFE5B,
+/**/ 0xC8000000, 0x3F2CFF2D,
+/**/ 0xE7FE77E6, 0xBD1FD74F,
+/**/ 0x506EE7AA, 0xBF2D3E54,
+/**/ 0x24000000, 0x3F2D3F2A,
+/**/ 0xBDDB871F, 0x3D328AD4,
+/**/ 0xF910A64A, 0xBF2D7E4C,
+/**/ 0x78800000, 0x3F2D7F26,
+/**/ 0x903DDD81, 0xBD327F8C,
+/**/ 0x91B52899, 0xBF2DBE45,
+/**/ 0xC4800000, 0x3F2DBF22,
+/**/ 0xDF52840A, 0x3D21D80F,
+/**/ 0x1A5C7495, 0xBF2DFE3E,
+/**/ 0x09000000, 0x3F2DFF1F,
+/**/ 0xEED9F651, 0xBD3B316D,
+/**/ 0x9306903D, 0xBF2E3E36,
+/**/ 0x45000000, 0x3F2E3F1B,
+/**/ 0x76DB3C6B, 0x3CF2911A,
+/**/ 0xFBB3818F, 0xBF2E7E2E,
+/**/ 0x79000000, 0x3F2E7F17,
+/**/ 0x85559113, 0x3D3DFC86,
+/**/ 0x54634E89, 0xBF2EBE27,
+/**/ 0xA5800000, 0x3F2EBF13,
+/**/ 0x0AB3DBE7, 0xBD12D83E,
+/**/ 0x9D15FD2B, 0xBF2EFE1F,
+/**/ 0xC9800000, 0x3F2EFF0F,
+/**/ 0x617B99F1, 0x3D39124F,
+/**/ 0xD5CB9373, 0xBF2F3E17,
+/**/ 0xE6000000, 0x3F2F3F0B,
+/**/ 0xF8F64DA1, 0xBD2152B9,
+/**/ 0xFE841760, 0xBF2F7E0F,
+/**/ 0xFA000000, 0x3F2F7F07,
+/**/ 0x34C4735B, 0x3D3617EB,
+/**/ 0x173F8EEF, 0xBF2FBE08,
+/**/ 0x06800000, 0x3F2FBF04,
+/**/ 0x739FA712, 0xBD2551B0,
+/**/ 0x1FFE0020, 0xBF2FFE00,
+/**/ 0x0A800000, 0x3F2FFF00,
+/**/ 0x885DE027, 0x3D351558,
+/**/ 0x0C5FB879, 0xBF301EFC,
+/**/ 0x03800000, 0x3F301F7E,
+/**/ 0x68F8FC50, 0xBD255905,
+/**/ 0x00C1F3B0, 0xBF303EF8,
+/**/ 0xFD800000, 0x3F303F7B,
+/**/ 0xDF771CF4, 0x3D361295,
+/**/ 0xED25B4B7, 0xBF305EF3,
+/**/ 0xF3C00000, 0x3F305F79,
+/**/ 0xD8A255DB, 0xBD2158BB,
+/**/ 0xD18AFE8B, 0xBF307EEF,
+/**/ 0xE5C00000, 0x3F307F77,
+/**/ 0xB740E625, 0x3D3917A1,
+/**/ 0xADF1D42C, 0xBF309EEB,
+/**/ 0xD4000000, 0x3F309F75,
+/**/ 0x9C716D59, 0xBD1281AD,
+/**/ 0x825A3899, 0xBF30BEE7,
+/**/ 0xBE000000, 0x3F30BF73,
+/**/ 0x86ED7DDC, 0x3D3E2C7A,
+/**/ 0x4EC42ED1, 0xBF30DEE3,
+/**/ 0xA4400000, 0x3F30DF71,
+/**/ 0xF54F7E28, 0x3CF7F534,
+/**/ 0x132FB9D5, 0xBF30FEDF,
+/**/ 0x86800000, 0x3F30FF6F,
+/**/ 0x404F4E01, 0xBD3AA6E1,
+/**/ 0xCF9CDCA2, 0xBF311EDA,
+/**/ 0x64800000, 0x3F311F6D,
+/**/ 0x4A6EC981, 0x3D2375B9,
+/**/ 0x840B9A38, 0xBF313ED6,
+/**/ 0x3EC00000, 0x3F313F6B,
+/**/ 0x33401DD0, 0xBD315A73,
+/**/ 0x307BF596, 0xBF315ED2,
+/**/ 0x14C00000, 0x3F315F69,
+/**/ 0x02C11605, 0x3D341A2F,
+/**/ 0xD4EDF1BC, 0xBF317ECD,
+/**/ 0xE7000000, 0x3F317F66,
+/**/ 0xB2B7E8C5, 0xBD1798F3,
+/**/ 0x716191A8, 0xBF319EC9,
+/**/ 0xB5400000, 0x3F319F64,
+/**/ 0x35D62ED5, 0xBD3F5AB7,
+/**/ 0x05D6D85A, 0xBF31BEC5,
+/**/ 0x7F400000, 0x3F31BF62,
+/**/ 0xCA7EC7CD, 0x3D1EF6FF,
+/**/ 0x924DC8D2, 0xBF31DEC0,
+/**/ 0x45800000, 0x3F31DF60,
+/**/ 0xA8550396, 0xBD309BD7,
+/**/ 0x16C6660D, 0xBF31FEBC,
+/**/ 0x07800000, 0x3F31FF5E,
+/**/ 0xC3E31F70, 0x3D379981,
+/**/ 0x9340B30B, 0xBF321EB7,
+/**/ 0xC5C00000, 0x3F321F5B,
+/**/ 0x5FE92B94, 0x3CD7B300,
+/**/ 0x07BCB2CC, 0xBF323EB3,
+/**/ 0x80000000, 0x3F323F59,
+/**/ 0x25A7CF34, 0xBD364AF9,
+/**/ 0x743A684F, 0xBF325EAE,
+/**/ 0x36000000, 0x3F325F57,
+/**/ 0x17E48399, 0x3D339D32,
+/**/ 0xD8B9D692, 0xBF327EA9,
+/**/ 0xE8400000, 0x3F327F54,
+/**/ 0xCC387BD1, 0xBCFE7B27,
+/**/ 0x353B0095, 0xBF329EA5,
+/**/ 0x96800000, 0x3F329F52,
+/**/ 0x1AE7FA80, 0xBD36D8A7,
+/**/ 0x89BDE957, 0xBF32BEA0,
+/**/ 0x40800000, 0x3F32BF50,
+/**/ 0x05CF3DC3, 0x3D34CB54,
+/**/ 0xD64293D7, 0xBF32DE9B,
+/**/ 0xE6C00000, 0x3F32DF4D,
+/**/ 0xD5A4F691, 0x3CF053EA,
+/**/ 0x1AC90315, 0xBF32FE97,
+/**/ 0x89000000, 0x3F32FF4B,
+/**/ 0x5CAE7B16, 0xBD3229E7,
+/**/ 0x57513A0F, 0xBF331E92,
+/**/ 0x27000000, 0x3F331F49,
+/**/ 0xAEED4509, 0x3D3B3EE1,
+/**/ 0x8BDB3BC4, 0xBF333E8D,
+/**/ 0xC1400000, 0x3F333F46,
+/**/ 0x2E0C2605, 0x3D228133,
+/**/ 0xB8670B34, 0xBF335E88,
+/**/ 0x57800000, 0x3F335F44,
+/**/ 0xBBD6E280, 0xBD20477F,
+/**/ 0xDCF4AB5D, 0xBF337E83,
+/**/ 0xE9C00000, 0x3F337F41,
+/**/ 0xE9CE8AFC, 0xBD38ED2A,
+/**/ 0xF9841F3F, 0xBF339E7E,
+/**/ 0x77C00000, 0x3F339F3F,
+/**/ 0x39159F9B, 0x3D36E558,
+/**/ 0x0E1569D9, 0xBF33BE7A,
+/**/ 0x02000000, 0x3F33BF3D,
+/**/ 0x40681634, 0x3D1D5325,
+/**/ 0x1AA88E2A, 0xBF33DE75,
+/**/ 0x88400000, 0x3F33DF3A,
+/**/ 0x7F2112CE, 0xBD1E775F,
+/**/ 0x1F3D8F31, 0xBF33FE70,
+/**/ 0x0A800000, 0x3F33FF38,
+/**/ 0x91F80D1B, 0xBD35F18B,
+/**/ 0x1BD46FED, 0xBF341E6B,
+/**/ 0x88800000, 0x3F341F35,
+/**/ 0xFDC3FC2F, 0x3D3C5AAD,
+/**/ 0x106D335D, 0xBF343E66,
+/**/ 0x02C00000, 0x3F343F33,
+/**/ 0x268A89F1, 0x3D2E8FA9,
+/**/ 0xFD07DC80, 0xBF345E60,
+/**/ 0x79000000, 0x3F345F30,
+/**/ 0x902AC9EE, 0x3D06B73F,
+/**/ 0xE1A46E55, 0xBF347E5B,
+/**/ 0xEB400000, 0x3F347F2D,
+/**/ 0x45C43959, 0xBD21EE30,
+/**/ 0xBE42EBDC, 0xBF349E56,
+/**/ 0x59800000, 0x3F349F2B,
+/**/ 0xE8B753E8, 0xBD34212B,
+/**/ 0x92E35813, 0xBF34BE51,
+/**/ 0xC3C00000, 0x3F34BF28,
+/**/ 0x9D2064DB, 0xBD3EA653,
+/**/ 0x5F85B5F9, 0xBF34DE4C,
+/**/ 0x29C00000, 0x3F34DF26,
+/**/ 0x81DCB6FB, 0x3D377A70,
+/**/ 0x242A088D, 0xBF34FE47,
+/**/ 0x8C000000, 0x3F34FF23,
+/**/ 0x6BB44A6D, 0x3D2C8440,
+/**/ 0xE0D052CF, 0xBF351E41,
+/**/ 0xEA400000, 0x3F351F20,
+/**/ 0x0048AAF8, 0x3D16C6ED,
+/**/ 0x957897BD, 0xBF353E3C,
+/**/ 0x44800000, 0x3F353F1E,
+/**/ 0xF506A07E, 0xBD01ADF4,
+/**/ 0x4222DA57, 0xBF355E37,
+/**/ 0x9AC00000, 0x3F355F1B,
+/**/ 0x4B88A655, 0xBD22E69B,
+/**/ 0xE6CF1D9B, 0xBF357E31,
+/**/ 0xED000000, 0x3F357F18,
+/**/ 0x153DAEB0, 0xBD3005F2,
+/**/ 0x837D6488, 0xBF359E2C,
+/**/ 0x3B400000, 0x3F359F16,
+/**/ 0x2D5222B4, 0xBD35ECAC,
+/**/ 0x182DB21E, 0xBF35BE27,
+/**/ 0x85800000, 0x3F35BF13,
+/**/ 0x2EA6CB14, 0xBD3B267C,
+/**/ 0xA4E0095B, 0xBF35DE21,
+/**/ 0xCBC00000, 0x3F35DF10,
+/**/ 0x5A40A340, 0xBD3FB262,
+/**/ 0x29946D3F, 0xBF35FE1C,
+/**/ 0x0DC00000, 0x3F35FF0E,
+/**/ 0x0E7B79ED, 0x3D3C70A1,
+/**/ 0xA64AE0C7, 0xBF361E16,
+/**/ 0x4C000000, 0x3F361F0B,
+/**/ 0xC9C8D263, 0x3D39438D,
+/**/ 0x1B0366F4, 0xBF363E11,
+/**/ 0x86400000, 0x3F363F08,
+/**/ 0x9582CD0C, 0x3D36C763,
+/**/ 0x87BE02C5, 0xBF365E0B,
+/**/ 0xBC800000, 0x3F365F05,
+/**/ 0x2F24F1F9, 0x3D34FD22,
+/**/ 0xEC7AB737, 0xBF367E05,
+/**/ 0xEEC00000, 0x3F367F02,
+/**/ 0x53CAEA94, 0x3D33E5C9,
+/**/ 0x4939874A, 0xBF369E00,
+/**/ 0x1D000000, 0x3F369F00,
+/**/ 0xC03081D0, 0x3D338258,
+/**/ 0x9DFA75FE, 0xBF36BDFA,
+/**/ 0x47400000, 0x3F36BEFD,
+/**/ 0x30B1A458, 0x3D33D3D0,
+/**/ 0xEABD8651, 0xBF36DDF4,
+/**/ 0x6D800000, 0x3F36DEFA,
+/**/ 0x614A60C1, 0x3D34DB2F,
+/**/ 0x2F82BB41, 0xBF36FDEF,
+/**/ 0x8FC00000, 0x3F36FEF7,
+/**/ 0x0D96E7B8, 0x3D369976,
+/**/ 0x6C4A17CF, 0xBF371DE9,
+/**/ 0xAE000000, 0x3F371EF4,
+/**/ 0xF0D38C30, 0x3D390FA3,
+/**/ 0xA1139EF8, 0xBF373DE3,
+/**/ 0xC8400000, 0x3F373EF1,
+/**/ 0xC5DCC397, 0x3D3C3EB8,
+/**/ 0xCDDF53BC, 0xBF375DDD,
+/**/ 0xDEC00000, 0x3F375EEE,
+/**/ 0xB8D0D9FD, 0xBD3FD84B,
+/**/ 0xF2AD3919, 0xBF377DD7,
+/**/ 0xF1000000, 0x3F377EEB,
+/**/ 0xD11891A0, 0xBD3B3469,
+/**/ 0x0F7D520F, 0xBF379DD2,
+/**/ 0xFF400000, 0x3F379EE8,
+/**/ 0xC93D855B, 0xBD35D4A1,
+/**/ 0x244FA19D, 0xBF37BDCC,
+/**/ 0x09800000, 0x3F37BEE6,
+/**/ 0xCFC56806, 0xBD2F6FE7,
+/**/ 0x31242AC1, 0xBF37DDC6,
+/**/ 0x0FC00000, 0x3F37DEE3,
+/**/ 0xE815F202, 0xBD21BAC0,
+/**/ 0x35FAF079, 0xBF37FDC0,
+/**/ 0x12000000, 0x3F37FEE0,
+/**/ 0x5190C28B, 0xBCF43E7B,
+/**/ 0x32D3F5C6, 0xBF381DBA,
+/**/ 0x10400000, 0x3F381EDD,
+/**/ 0x34C1F9E9, 0x3D1C55D8,
+/**/ 0x27AF3DA6, 0xBF383DB4,
+/**/ 0x0A800000, 0x3F383EDA,
+/**/ 0x8AAF36D4, 0x3D302FB8,
+/**/ 0x148CCB18, 0xBF385DAE,
+/**/ 0x00C00000, 0x3F385ED7,
+/**/ 0x7AE0D0F8, 0x3D3A0BDF,
+/**/ 0xF96CA11B, 0xBF387DA7,
+/**/ 0xF3400000, 0x3F387ED3,
+/**/ 0x6B1CDAAF, 0xBD3B5515,
+/**/ 0xD64EC2AD, 0xBF389DA1,
+/**/ 0xE1800000, 0x3F389ED0,
+/**/ 0xE1179E5E, 0xBD2FE44C,
+/**/ 0xAB3332CD, 0xBF38BD9B,
+/**/ 0xCBC00000, 0x3F38BECD,
+/**/ 0xF86F56EC, 0xBD0E529E,
+/**/ 0x7819F47A, 0xBF38DD95,
+/**/ 0xB2000000, 0x3F38DECA,
+/**/ 0xFEB631AB, 0x3D2246C3,
+/**/ 0x3D030AB4, 0xBF38FD8F,
+/**/ 0x94400000, 0x3F38FEC7,
+/**/ 0xE04DA791, 0x3D36D7FA,
+/**/ 0xF9EE7878, 0xBF391D88,
+/**/ 0x72C00000, 0x3F391EC4,
+/**/ 0x86F7ADBB, 0xBD3AAB89,
+/**/ 0xAEDC40C7, 0xBF393D82,
+/**/ 0x4D000000, 0x3F393EC1,
+/**/ 0x032C6155, 0xBD26CC57,
+/**/ 0x5BCC669D, 0xBF395D7C,
+/**/ 0x23400000, 0x3F395EBE,
+/**/ 0x93C3EB3D, 0x3D12A452,
+/**/ 0x00BEECFB, 0xBF397D76,
+/**/ 0xF5800000, 0x3F397EBA,
+/**/ 0xA0BCD695, 0x3D358336,
+/**/ 0x9DB3D6E0, 0xBF399D6F,
+/**/ 0xC4000000, 0x3F399EB7,
+/**/ 0xDA737570, 0xBD38D6C5,
+/**/ 0x32AB2749, 0xBF39BD69,
+/**/ 0x8E400000, 0x3F39BEB4,
+/**/ 0x65026C7D, 0xBD198F84,
+/**/ 0xBFA4E136, 0xBF39DD62,
+/**/ 0x54800000, 0x3F39DEB1,
+/**/ 0x2EA9B41A, 0x3D29B9C9,
+/**/ 0x44A107A5, 0xBF39FD5C,
+/**/ 0x17000000, 0x3F39FEAE,
+/**/ 0x16137ACF, 0xBD3F1375,
+/**/ 0xC19F9D96, 0xBF3A1D55,
+/**/ 0xD5400000, 0x3F3A1EAA,
+/**/ 0xDE73AFA0, 0xBD2467DC,
+/**/ 0x36A0A607, 0xBF3A3D4F,
+/**/ 0x8F800000, 0x3F3A3EA7,
+/**/ 0x7B8357C6, 0x3D26F8F0,
+/**/ 0xA3A423F7, 0xBF3A5D48,
+/**/ 0x46000000, 0x3F3A5EA4,
+/**/ 0x5DA0DFB7, 0xBD3E0141,
+/**/ 0x08AA1A64, 0xBF3A7D42,
+/**/ 0xF8400000, 0x3F3A7EA0,
+/**/ 0x41050D29, 0xBD1AB06E,
+/**/ 0x65B28C4E, 0xBF3A9D3B,
+/**/ 0xA6800000, 0x3F3A9E9D,
+/**/ 0x56A0E005, 0x3D317CE9,
+/**/ 0xBABD7CB3, 0xBF3ABD34,
+/**/ 0x51000000, 0x3F3ABE9A,
+/**/ 0xF899EF39, 0xBD358532,
+/**/ 0x07CAEE92, 0xBF3ADD2E,
+/**/ 0xF7400000, 0x3F3ADE96,
+/**/ 0xC83BF5C2, 0x3D113A3C,
+/**/ 0x4CDAE4EA, 0xBF3AFD27,
+/**/ 0x99800000, 0x3F3AFE93,
+/**/ 0x863C7C8E, 0x3D3EF92F,
+/**/ 0x89ED62B9, 0xBF3B1D20,
+/**/ 0x38000000, 0x3F3B1E90,
+/**/ 0x3341CC3C, 0xBD161149,
+/**/ 0xBF026AFE, 0xBF3B3D19,
+/**/ 0xD2400000, 0x3F3B3E8C,
+/**/ 0x67C955DF, 0x3D36D709,
+/**/ 0xEC1A00B8, 0xBF3B5D12,
+/**/ 0x68C00000, 0x3F3B5E89,
+/**/ 0x5AE9B17A, 0xBD27E77B,
+/**/ 0x113426E6, 0xBF3B7D0C,
+/**/ 0xFB000000, 0x3F3B7E85,
+/**/ 0x219679DE, 0x3D321C58,
+/**/ 0x2E50E086, 0xBF3B9D05,
+/**/ 0x89800000, 0x3F3B9E82,
+/**/ 0xFAA62113, 0xBD2DEF6A,
+/**/ 0x43703097, 0xBF3BBCFE,
+/**/ 0x13C00000, 0x3F3BBE7F,
+/**/ 0x23305306, 0x3D30D119,
+/**/ 0x50921A17, 0xBF3BDCF7,
+/**/ 0x9A400000, 0x3F3BDE7B,
+/**/ 0x9FBACE27, 0xBD2D1078,
+/**/ 0x55B6A006, 0xBF3BFCF0,
+/**/ 0x1C800000, 0x3F3BFE78,
+/**/ 0xD625DF1E, 0x3D32FD49,
+/**/ 0x52DDC563, 0xBF3C1CE9,
+/**/ 0x9B000000, 0x3F3C1E74,
+/**/ 0x7D07255B, 0xBD253AA9,
+/**/ 0x48078D2B, 0xBF3C3CE2,
+/**/ 0x15400000, 0x3F3C3E71,
+/**/ 0x9E08B538, 0x3D38A8E7,
+/**/ 0x3533FA5D, 0xBF3C5CDB,
+/**/ 0x8BC00000, 0x3F3C5E6D,
+/**/ 0x45956AFC, 0xBD09780B,
+/**/ 0x1A630FF9, 0xBF3C7CD4,
+/**/ 0xFE400000, 0x3F3C7E69,
+/**/ 0x2792F44E, 0xBD3E2410,
+/**/ 0xF794D0FC, 0xBF3C9CCC,
+/**/ 0x6C800000, 0x3F3C9E66,
+/**/ 0x30AB4456, 0x3D1F2AEC,
+/**/ 0xCCC94066, 0xBF3CBCC5,
+/**/ 0xD7000000, 0x3F3CBE62,
+/**/ 0x231641D5, 0xBD3161A0,
+/**/ 0x9A006135, 0xBF3CDCBE,
+/**/ 0x3D400000, 0x3F3CDE5F,
+/**/ 0xF4AD1934, 0x3D3657DD,
+/**/ 0x5F3A3668, 0xBF3CFCB7,
+/**/ 0x9FC00000, 0x3F3CFE5B,
+/**/ 0x2E7AC798, 0xBCF07CB0,
+/**/ 0x1C76C2FD, 0xBF3D1CB0,
+/**/ 0xFE400000, 0x3F3D1E57,
+/**/ 0x6090F643, 0xBD377F9B,
+/**/ 0xD1B609F3, 0xBF3D3CA8,
+/**/ 0x58800000, 0x3F3D3E54,
+/**/ 0x849503E6, 0x3D32F16C,
+/**/ 0x7EF80E49, 0xBF3D5CA1,
+/**/ 0xAF000000, 0x3F3D5E50,
+/**/ 0xAF1CA4EA, 0xBCFB3B3A,
+/**/ 0x243CD2FE, 0xBF3D7C9A,
+/**/ 0x01800000, 0x3F3D7E4D,
+/**/ 0x4701415B, 0xBD356DFC,
+/**/ 0xC1845B0F, 0xBF3D9C92,
+/**/ 0x4FC00000, 0x3F3D9E49,
+/**/ 0x582AEA48, 0x3D37C392,
+/**/ 0x56CEA97C, 0xBF3DBC8B,
+/**/ 0x9A400000, 0x3F3DBE45,
+/**/ 0x67DCC15E, 0x3D1787DF,
+/**/ 0xE41BC143, 0xBF3DDC83,
+/**/ 0xE0C00000, 0x3F3DDE41,
+/**/ 0x352F961F, 0xBD262398,
+/**/ 0x696BA563, 0xBF3DFC7C,
+/**/ 0x23400000, 0x3F3DFE3E,
+/**/ 0xDEDD373A, 0xBD3B16B9,
+/**/ 0xE6BE58DA, 0xBF3E1C74,
+/**/ 0x61800000, 0x3F3E1E3A,
+/**/ 0x336BE94B, 0x3D35D42E,
+/**/ 0x5C13DEA7, 0xBF3E3C6D,
+/**/ 0x9C000000, 0x3F3E3E36,
+/**/ 0x08A303A2, 0x3D1EBFAF,
+/**/ 0xC96C39C9, 0xBF3E5C65,
+/**/ 0xD2800000, 0x3F3E5E32,
+/**/ 0x34856362, 0xBD160A06,
+/**/ 0x2EC76D3D, 0xBF3E7C5E,
+/**/ 0x05000000, 0x3F3E7E2F,
+/**/ 0x154CDF1A, 0xBD31C21A,
+/**/ 0x8C257C04, 0xBF3E9C56,
+/**/ 0x33800000, 0x3F3E9E2B,
+/**/ 0x31941F7F, 0xBD3D0DDE,
+/**/ 0xE186691B, 0xBF3EBC4E,
+/**/ 0x5DC00000, 0x3F3EBE27,
+/**/ 0xC26EC60D, 0x3D389B31,
+/**/ 0x2EEA3781, 0xBF3EDC47,
+/**/ 0x84400000, 0x3F3EDE23,
+/**/ 0xD583BEF8, 0x3D2E742A,
+/**/ 0x7450EA34, 0xBF3EFC3F,
+/**/ 0xA6C00000, 0x3F3EFE1F,
+/**/ 0xAC2DA351, 0x3D1B3F31,
+/**/ 0xB1BA8433, 0xBF3F1C37,
+/**/ 0xC5400000, 0x3F3F1E1B,
+/**/ 0x2DC67430, 0xBCE45533,
+/**/ 0xE727087C, 0xBF3F3C2F,
+/**/ 0xDFC00000, 0x3F3F3E17,
+/**/ 0xFF1174AE, 0xBD1C7133,
+/**/ 0x14967A0F, 0xBF3F5C28,
+/**/ 0xF6400000, 0x3F3F5E13,
+/**/ 0x4AE098DC, 0xBD29383C,
+/**/ 0x3A08DBE9, 0xBF3F7C20,
+/**/ 0x08C00000, 0x3F3F7E10,
+/**/ 0x684B0B3B, 0xBD31211D,
+/**/ 0x577E3109, 0xBF3F9C18,
+/**/ 0x17400000, 0x3F3F9E0C,
+/**/ 0x268D7464, 0xBD34AA4B,
+/**/ 0x6CF67C6E, 0xBF3FBC10,
+/**/ 0x21C00000, 0x3F3FBE08,
+/**/ 0xBED03388, 0xBD3736A7,
+/**/ 0x7A71C116, 0xBF3FDC08,
+/**/ 0x28400000, 0x3F3FDE04,
+/**/ 0x900BC4E5, 0xBD38C533,
+/**/ 0x7FF00200, 0xBF3FFC00,
+/**/ 0x2AC00000, 0x3F3FFE00,
+/**/ 0xF9987527, 0xBD3954EE,
+/**/ 0x3EB8A115, 0xBF400DFC,
+/**/ 0x14A00000, 0x3F400EFE,
+/**/ 0x5B2E613B, 0xBD38E4DA,
+/**/ 0x397AC249, 0xBF401DF8,
+/**/ 0x11E00000, 0x3F401EFC,
+/**/ 0x14E5761B, 0xBD3773F6,
+/**/ 0x303E661C, 0xBF402DF4,
+/**/ 0x0D200000, 0x3F402EFA,
+/**/ 0x873570A0, 0xBD350142,
+/**/ 0x23038E0C, 0xBF403DF0,
+/**/ 0x06600000, 0x3F403EF8,
+/**/ 0x12F5DD53, 0xBD318BC0,
+/**/ 0x11CA3B9A, 0xBF404DEC,
+/**/ 0xFDA00000, 0x3F404EF5,
+/**/ 0x32BC307C, 0xBD2A24DE,
+/**/ 0xFC927044, 0xBF405DE7,
+/**/ 0xF2E00000, 0x3F405EF3,
+/**/ 0xF01532DA, 0xBD1E513F,
+/**/ 0xE35C2D8A, 0xBF406DE3,
+/**/ 0xE6200000, 0x3F406EF1,
+/**/ 0xCE27534E, 0xBCF10631,
+/**/ 0xC62774EA, 0xBF407DDF,
+/**/ 0xD7600000, 0x3F407EEF,
+/**/ 0x86CE9380, 0x3D19E95C,
+/**/ 0xA4F447E4, 0xBF408DDB,
+/**/ 0xC6A00000, 0x3F408EED,
+/**/ 0xBA0CD2C3, 0x3D2E19BC,
+/**/ 0x7FC2A7F8, 0xBF409DD7,
+/**/ 0xB3E00000, 0x3F409EEB,
+/**/ 0x31FF7199, 0x3D38A832,
+/**/ 0x569296A4, 0xBF40ADD3,
+/**/ 0x9F400000, 0x3F40AEE9,
+/**/ 0xC2D77791, 0xBD3CB2AD,
+/**/ 0x29641567, 0xBF40BDCF,
+/**/ 0x88800000, 0x3F40BEE7,
+/**/ 0xE5545563, 0xBD3102C1,
+/**/ 0xF83725C2, 0xBF40CDCA,
+/**/ 0x6FC00000, 0x3F40CEE5,
+/**/ 0x66B3E48D, 0xBD111C2A,
+/**/ 0xC30BC932, 0xBF40DDC6,
+/**/ 0x55000000, 0x3F40DEE3,
+/**/ 0x7711FC2A, 0x3D2302EF,
+/**/ 0x89E20138, 0xBF40EDC2,
+/**/ 0x38400000, 0x3F40EEE1,
+/**/ 0xB558238E, 0x3D3857C4,
+/**/ 0x4CB9CF52, 0xBF40FDBE,
+/**/ 0x19A00000, 0x3F40FEDF,
+/**/ 0x1194C2E1, 0xBD37C324,
+/**/ 0x0B933501, 0xBF410DBA,
+/**/ 0xF8E00000, 0x3F410EDC,
+/**/ 0xFBCAF285, 0xBD1B390B,
+/**/ 0xC66E33C2, 0xBF411DB5,
+/**/ 0xD6200000, 0x3F411EDA,
+/**/ 0x0E52C3A4, 0x3D266ECF,
+/**/ 0x7D4ACD15, 0xBF412DB1,
+/**/ 0xB1600000, 0x3F412ED8,
+/**/ 0x1A4AF71D, 0x3D3E4EDB,
+/**/ 0x30290279, 0xBF413DAD,
+/**/ 0x8AC00000, 0x3F413ED6,
+/**/ 0x58C4D599, 0xBD2B0DD1,
+/**/ 0xDF08D56E, 0xBF414DA8,
+/**/ 0x62000000, 0x3F414ED4,
+/**/ 0x2FB4061D, 0x3D1EDC6F,
+/**/ 0x89EA4773, 0xBF415DA4,
+/**/ 0x37400000, 0x3F415ED2,
+/**/ 0x1BA53538, 0x3D3E09E8,
+/**/ 0x30CD5A06, 0xBF416DA0,
+/**/ 0x0AA00000, 0x3F416ED0,
+/**/ 0x4A5B4574, 0xBD251B08,
+/**/ 0xD3B20EA8, 0xBF417D9B,
+/**/ 0xDBE00000, 0x3F417ECD,
+/**/ 0x4241B57B, 0x3D2BE3AD,
+/**/ 0x729866D7, 0xBF418D97,
+/**/ 0xAB400000, 0x3F418ECB,
+/**/ 0xFA22BD16, 0xBD387707,
+/**/ 0x0D806412, 0xBF419D93,
+/**/ 0x78800000, 0x3F419EC9,
+/**/ 0xFFA2FC2F, 0x3D01C6FC,
+/**/ 0xA46A07D9, 0xBF41AD8E,
+/**/ 0x43C00000, 0x3F41AEC7,
+/**/ 0x05F32EE8, 0x3D3E028D,
+/**/ 0x375553AB, 0xBF41BD8A,
+/**/ 0x0D200000, 0x3F41BEC5,
+/**/ 0xC7E46F2B, 0xBD146400,
+/**/ 0xC6424907, 0xBF41CD85,
+/**/ 0xD4600000, 0x3F41CEC2,
+/**/ 0x8DFCE791, 0x3D38E737,
+/**/ 0x5130E96B, 0xBF41DD81,
+/**/ 0x99C00000, 0x3F41DEC0,
+/**/ 0x92F4A6CE, 0xBD1FEF30,
+/**/ 0xD8213659, 0xBF41ED7C,
+/**/ 0x5D000000, 0x3F41EEBE,
+/**/ 0x4AE68315, 0x3D383EF4,
+/**/ 0x5B13314D, 0xBF41FD78,
+/**/ 0x1E600000, 0x3F41FEBC,
+/**/ 0x39A8276A, 0xBD199E1E,
+/**/ 0xDA06DBC8, 0xBF420D73,
+/**/ 0xDDA00000, 0x3F420EB9,
+/**/ 0xE39F6D77, 0x3D3C11BF,
+/**/ 0x54FC3749, 0xBF421D6F,
+/**/ 0x9B000000, 0x3F421EB7,
+/**/ 0xC3A8C440, 0xBCD50D72,
+/**/ 0xCBF3454F, 0xBF422D6A,
+/**/ 0x56600000, 0x3F422EB5,
+/**/ 0x06E59170, 0xBD3B9869,
+/**/ 0x3EEC0759, 0xBF423D66,
+/**/ 0x0FA00000, 0x3F423EB3,
+/**/ 0x86930551, 0x3D248C4B,
+/**/ 0xADE67EE6, 0xBF424D61,
+/**/ 0xC7000000, 0x3F424EB0,
+/**/ 0xB3649FF7, 0xBD2D6F13,
+/**/ 0x18E2AD76, 0xBF425D5D,
+/**/ 0x7C400000, 0x3F425EAE,
+/**/ 0xB496441D, 0x3D396F87,
+/**/ 0x7FE09487, 0xBF426D58,
+/**/ 0x2FA00000, 0x3F426EAC,
+/**/ 0x01961A2F, 0x3D05E2D0,
+/**/ 0xE2E03598, 0xBF427D53,
+/**/ 0xE1000000, 0x3F427EA9,
+/**/ 0x652D1720, 0xBD32D013,
+/**/ 0x41E1922A, 0xBF428D4F,
+/**/ 0x90400000, 0x3F428EA7,
+/**/ 0x15C6A78A, 0x3D38CB3F,
+/**/ 0x9CE4ABBA, 0xBF429D4A,
+/**/ 0x3DA00000, 0x3F429EA5,
+/**/ 0x07F8A52A, 0x3D163D44,
+/**/ 0xF3E983C8, 0xBF42AD45,
+/**/ 0xE9000000, 0x3F42AEA2,
+/**/ 0x1FEC6070, 0xBD2905BC,
+/**/ 0x46F01BD4, 0xBF42BD41,
+/**/ 0x92600000, 0x3F42BEA0,
+/**/ 0x8FE5CB8E, 0xBD3D6A4E,
+/**/ 0x95F8755C, 0xBF42CD3C,
+/**/ 0x39A00000, 0x3F42CE9E,
+/**/ 0x120028B6, 0x3D32D9FF,
+/**/ 0xE10291DF, 0xBF42DD37,
+/**/ 0xDF000000, 0x3F42DE9B,
+/**/ 0x94B2D8A6, 0x3D112C29,
+/**/ 0x280E72DD, 0xBF42ED33,
+/**/ 0x82600000, 0x3F42EE99,
+/**/ 0x0E9DC27F, 0xBD222C5A,
+/**/ 0x6B1C19D4, 0xBF42FD2E,
+/**/ 0x23C00000, 0x3F42FE97,
+/**/ 0xA4C12307, 0xBD3548A7,
+/**/ 0xAA2B8844, 0xBF430D29,
+/**/ 0xC3000000, 0x3F430E94,
+/**/ 0x1B27A40C, 0x3D3FB49A,
+/**/ 0xE53CBFAC, 0xBF431D24,
+/**/ 0x60600000, 0x3F431E92,
+/**/ 0xC65D601D, 0x3D35E297,
+/**/ 0x1C4FC18B, 0xBF432D20,
+/**/ 0xFBC00000, 0x3F432E8F,
+/**/ 0xD4E46CD5, 0x3D2A84A1,
+/**/ 0x4F648F60, 0xBF433D1B,
+/**/ 0x95200000, 0x3F433E8D,
+/**/ 0x526215F8, 0x3D175314,
+/**/ 0x7E7B2AAB, 0xBF434D16,
+/**/ 0x2C800000, 0x3F434E8B,
+/**/ 0x9746A94C, 0xBCD9430B,
+/**/ 0xA99394E9, 0xBF435D11,
+/**/ 0xC1E00000, 0x3F435E88,
+/**/ 0x47EF6144, 0xBD15A88D,
+/**/ 0xD0ADCF9B, 0xBF436D0C,
+/**/ 0x55400000, 0x3F436E86,
+/**/ 0x94614FFB, 0xBD227301,
+/**/ 0xF3C9DC3F, 0xBF437D07,
+/**/ 0xE6A00000, 0x3F437E83,
+/**/ 0x16908831, 0xBD27A44A,
+/**/ 0x12E7BC55, 0xBF438D03,
+/**/ 0x76000000, 0x3F438E81,
+/**/ 0x13DE59AC, 0xBD2A6621,
+/**/ 0x2E07715C, 0xBF439CFE,
+/**/ 0x03600000, 0x3F439E7F,
+/**/ 0x76635000, 0xBD2AB687,
+/**/ 0x4528FCD2, 0xBF43ACF9,
+/**/ 0x8EC00000, 0x3F43AE7C,
+/**/ 0x28F7818F, 0xBD28937E,
+/**/ 0x584C6037, 0xBF43BCF4,
+/**/ 0x18200000, 0x3F43BE7A,
+/**/ 0x17328F27, 0xBD23FB06,
+/**/ 0x67719D0A, 0xBF43CCEF,
+/**/ 0x9F800000, 0x3F43CE77,
+/**/ 0x5AD74747, 0xBD19D640,
+/**/ 0x7298B4CA, 0xBF43DCEA,
+/**/ 0x24E00000, 0x3F43DE75,
+/**/ 0xC5CB9C74, 0xBCFB0E6A,
+/**/ 0x79C1A8F6, 0xBF43ECE5,
+/**/ 0xA8400000, 0x3F43EE72,
+/**/ 0xF21B8682, 0x3D1145E2,
+/**/ 0x7CEC7B0D, 0xBF43FCE0,
+/**/ 0x29A00000, 0x3F43FE70,
+/**/ 0x59543A06, 0x3D27251B,
+/**/ 0x7C192C8E, 0xBF440CDB,
+/**/ 0xA9000000, 0x3F440E6D,
+/**/ 0xAC6250B6, 0x3D341357,
+/**/ 0x7747BEF8, 0xBF441CD6,
+/**/ 0x26600000, 0x3F441E6B,
+/**/ 0x43A510F7, 0x3D3DD4D6,
+/**/ 0x6E7833CB, 0xBF442CD1,
+/**/ 0xA1E00000, 0x3F442E68,
+/**/ 0x05F7D1E1, 0xBD3727F7,
+/**/ 0x61AA8C85, 0xBF443CCC,
+/**/ 0x1B400000, 0x3F443E66,
+/**/ 0x527C9668, 0xBD25C421,
+/**/ 0x50DECAA5, 0xBF444CC7,
+/**/ 0x92A00000, 0x3F444E63,
+/**/ 0x053F70AC, 0x3D053C47,
+/**/ 0x3C14EFAB, 0xBF445CC2,
+/**/ 0x08000000, 0x3F445E61,
+/**/ 0x1E315FBB, 0x3D3175D5,
+/**/ 0x234CFD15, 0xBF446CBD,
+/**/ 0x7B800000, 0x3F446E5E,
+/**/ 0x6A8B33AC, 0xBD3E762C,
+/**/ 0x0686F463, 0xBF447CB8,
+/**/ 0xECE00000, 0x3F447E5B,
+/**/ 0x67AD9900, 0xBD2A36F8,
+/**/ 0xE5C2D713, 0xBF448CB2,
+/**/ 0x5C400000, 0x3F448E59,
+/**/ 0x1E974853, 0x3D161B95,
+/**/ 0xC100A6A5, 0xBF449CAD,
+/**/ 0xC9A00000, 0x3F449E56,
+/**/ 0x8CE22250, 0x3D3971F7,
+/**/ 0x98406498, 0xBF44ACA8,
+/**/ 0x35200000, 0x3F44AE54,
+/**/ 0xDF8A23F8, 0xBD315945,
+/**/ 0x6B82126A, 0xBF44BCA3,
+/**/ 0x9E800000, 0x3F44BE51,
+/**/ 0x1A63D360, 0x3D1498B2,
+/**/ 0x3AC5B19B, 0xBF44CC9E,
+/**/ 0x05E00000, 0x3F44CE4F,
+/**/ 0x4323A054, 0x3D3CF14E,
+/**/ 0x060B43AA, 0xBF44DC99,
+/**/ 0x6B600000, 0x3F44DE4C,
+/**/ 0x4CE35F94, 0xBD23EDC2,
+/**/ 0xCD52CA15, 0xBF44EC93,
+/**/ 0xCEC00000, 0x3F44EE49,
+/**/ 0xCCF1B48E, 0x3D306E9D,
+/**/ 0x909C465C, 0xBF44FC8E,
+/**/ 0x30400000, 0x3F44FE47,
+/**/ 0x5FF9440B, 0xBD33DD35,
+/**/ 0x4FE7B9FF, 0xBF450C89,
+/**/ 0x8FA00000, 0x3F450E44,
+/**/ 0xAA4D276D, 0x3D224D49,
+/**/ 0x0B35267A, 0xBF451C84,
+/**/ 0xED200000, 0x3F451E41,
+/**/ 0x11B557F9, 0xBD3884D4,
+/**/ 0xC2848D4F, 0xBF452C7E,
+/**/ 0x48800000, 0x3F452E3F,
+/**/ 0xB43290C4, 0x3D1C857D,
+/**/ 0x75D5EFFC, 0xBF453C79,
+/**/ 0xA2000000, 0x3F453E3C,
+/**/ 0x2D598D3C, 0xBD37E5C1,
+/**/ 0x25294FFF, 0xBF454C74,
+/**/ 0xF9600000, 0x3F454E39,
+/**/ 0x3FE47B89, 0x3D24CD93,
+/**/ 0xD07EAED8, 0xBF455C6E,
+/**/ 0x4EE00000, 0x3F455E37,
+/**/ 0xAA959122, 0xBD31F800,
+/**/ 0x77D60E06, 0xBF456C69,
+/**/ 0xA2400000, 0x3F456E34,
+/**/ 0x7329AF92, 0x3D32FEDF,
+/**/ 0x1B2F6F08, 0xBF457C64,
+/**/ 0xF3C00000, 0x3F457E31,
+/**/ 0x1C545A6F, 0xBD1ACE5A,
+/**/ 0xBA8AD35D, 0xBF458C5E,
+/**/ 0x43400000, 0x3F458E2F,
+/**/ 0x19F6B9EF, 0xBD3F0E63,
+/**/ 0x55E83C84, 0xBF459C59,
+/**/ 0x90A00000, 0x3F459E2C,
+/**/ 0x73005F6F, 0x3D23DEF2,
+/**/ 0xED47ABFB, 0xBF45AC53,
+/**/ 0xDC200000, 0x3F45AE29,
+/**/ 0x1C295DE7, 0xBD277204,
+/**/ 0x80A92343, 0xBF45BC4E,
+/**/ 0x25800000, 0x3F45BE27,
+/**/ 0x8D869589, 0x3D3FF92A,
+/**/ 0x100CA3D9, 0xBF45CC49,
+/**/ 0x6D000000, 0x3F45CE24,
+/**/ 0x145C5335, 0x3D2A0DFD,
+/**/ 0x9B722F3C, 0xBF45DC43,
+/**/ 0xB2800000, 0x3F45DE21,
+/**/ 0x6A8614B3, 0xBD123A1A,
+/**/ 0x22D9C6ED, 0xBF45EC3E,
+/**/ 0xF6000000, 0x3F45EE1E,
+/**/ 0x63CBC7E7, 0xBD34C665,
+/**/ 0xA6436C69, 0xBF45FC38,
+/**/ 0x37600000, 0x3F45FE1C,
+/**/ 0xAB6C51D7, 0x3D3C6061,
+/**/ 0x25AF2130, 0xBF460C33,
+/**/ 0x76E00000, 0x3F460E19,
+/**/ 0x1EC7F453, 0x3D2DCD9C,
+/**/ 0xA11CE6C1, 0xBF461C2D,
+/**/ 0xB4600000, 0x3F461E16,
+/**/ 0x20C52899, 0x3D066EFA,
+/**/ 0x188CBE9A, 0xBF462C28,
+/**/ 0xEFE00000, 0x3F462E13,
+/**/ 0xEB5FDD5C, 0xBD1FA5AC,
+/**/ 0x8BFEAA3B, 0xBF463C22,
+/**/ 0x29600000, 0x3F463E11,
+/**/ 0xF22FE2BC, 0xBD313E11,
+/**/ 0xFB72AB23, 0xBF464C1C,
+/**/ 0x60E00000, 0x3F464E0E,
+/**/ 0x6710E251, 0xBD392F15,
+/**/ 0x66E8C2D0, 0xBF465C17,
+/**/ 0x96600000, 0x3F465E0B,
+/**/ 0x1EFC78A7, 0xBD3FBB76,
+/**/ 0xCE60F2C1, 0xBF466C11,
+/**/ 0xC9C00000, 0x3F466E08,
+/**/ 0x602C1A84, 0x3D3B1DCB,
+/**/ 0x31DB3C76, 0xBF467C0C,
+/**/ 0xFB400000, 0x3F467E05,
+/**/ 0x9027DA74, 0x3D375DAE,
+/**/ 0x9157A16E, 0xBF468C06,
+/**/ 0x2AC00000, 0x3F468E03,
+/**/ 0xEA560DA0, 0x3D350532,
+/**/ 0xECD62326, 0xBF469C00,
+/**/ 0x58400000, 0x3F469E00,
+/**/ 0xE7B63DE2, 0x3D341557 } };
+
+#endif
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/urem.h b/REORG.TODO/sysdeps/ieee754/dbl-64/urem.h
new file mode 100644
index 0000000000..d9e5696fdd
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/urem.h
@@ -0,0 +1,46 @@
+/*
+ * IBM Accurate Mathematical Library
+ * Written by International Business Machines Corp.
+ * Copyright (C) 2001-2017 Free Software Foundation, Inc.
+ *
+ * This program 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 2.1 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 program; if not, see <http://www.gnu.org/licenses/>.
+ */
+
+/************************************************************************/
+/* MODULE_NAME: urem.h */
+/* */
+/* */
+/* common data and variables definition for BIG or LITTLE ENDIAN */
+/************************************************************************/
+
+#ifndef UREM_H
+#define UREM_H
+
+#ifdef BIG_ENDI
+static const mynumber big = {{0x43380000, 0}}, /* 6755399441055744 */
+ t128 = {{0x47f00000, 0}}, /* 2^ 128 */
+ tm128 = {{0x37f00000, 0}}, /* 2^-128 */
+ ZERO = {{0, 0}}, /* 0.0 */
+ nZERO = {{0x80000000, 0}}; /* -0.0 */
+#else
+#ifdef LITTLE_ENDI
+static const mynumber big = {{0, 0x43380000}}, /* 6755399441055744 */
+ t128 = {{0, 0x47f00000}}, /* 2^ 128 */
+ tm128 = {{0, 0x37f00000}}, /* 2^-128 */
+ ZERO = {{0, 0}}, /* 0.0 */
+ nZERO = {{0, 0x80000000}}; /* -0.0 */
+#endif
+#endif
+
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/usncs.h b/REORG.TODO/sysdeps/ieee754/dbl-64/usncs.h
new file mode 100644
index 0000000000..09f76ae8ea
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/usncs.h
@@ -0,0 +1,48 @@
+/*
+ * IBM Accurate Mathematical Library
+ * Written by International Business Machines Corp.
+ * Copyright (C) 2001-2017 Free Software Foundation, Inc.
+ *
+ * This program 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 2.1 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 program; if not, see <http://www.gnu.org/licenses/>.
+ */
+
+/************************************************************************/
+/* MODULE_NAME: dosincos.h */
+/* */
+/* */
+/* common data and variables definition for BIG or LITTLE ENDIAN */
+/************************************************************************/
+
+#ifndef USNCS_H
+#define USNCS_H
+
+static const double s1 = -0x1.5555555555555p-3; /* -0.16666666666666666 */
+static const double s2 = 0x1.1111111110ECEp-7; /* 0.0083333333333323288 */
+static const double s3 = -0x1.A01A019DB08B8p-13; /* -0.00019841269834414642 */
+static const double s4 = 0x1.71DE27B9A7ED9p-19; /* 2.755729806860771e-06 */
+static const double s5 = -0x1.ADDFFC2FCDF59p-26; /* -2.5022014848318398e-08 */
+static const double aa = -0x1.5558000000000p-3; /* -0.1666717529296875 */
+static const double bb = 0x1.5555555556E24p-18; /* 5.0862630208387126e-06 */
+static const double big = 0x1.8000000000000p45; /* 52776558133248 */
+static const double hp0 = 0x1.921FB54442D18p0; /* 1.5707963267948966 */
+static const double hp1 = 0x1.1A62633145C07p-54; /* 6.123233995736766e-17 */
+static const double mp1 = 0x1.921FB58000000p0; /* 1.5707963407039642 */
+static const double mp2 = -0x1.DDE973C000000p-27; /* -1.3909067564377153e-08 */
+static const double mp3 = -0x1.CB3B399D747F2p-55; /* -4.9789962505147994e-17 */
+static const double pp3 = -0x1.CB3B398000000p-55; /* -4.9789962314799099e-17 */
+static const double pp4 = -0x1.d747f23e32ed7p-83; /* -1.9034889620193266e-25 */
+static const double hpinv = 0x1.45F306DC9C883p-1; /* 0.63661977236758138 */
+static const double toint = 0x1.8000000000000p52; /* 6755399441055744 */
+
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/utan.h b/REORG.TODO/sysdeps/ieee754/dbl-64/utan.h
new file mode 100644
index 0000000000..b34e52f1fb
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/utan.h
@@ -0,0 +1,265 @@
+/*
+ * IBM Accurate Mathematical Library
+ * Written by International Business Machines Corp.
+ * Copyright (C) 2001-2017 Free Software Foundation, Inc.
+ *
+ * This program 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 2.1 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 program; if not, see <http://www.gnu.org/licenses/>.
+ */
+
+/******************************************************************/
+/* */
+/* MODULE_NAME:utan.h */
+/* */
+/* common data and variables prototype and definition */
+/******************************************************************/
+
+#ifndef UTAN_H
+#define UTAN_H
+
+#ifdef BIG_ENDI
+ static const number
+ /* polynomial I */
+/**/ d3 = {{0x3FD55555, 0x55555555} }, /* 0.333... */
+/**/ d5 = {{0x3FC11111, 0x111107C6} }, /* 0.133... */
+/**/ d7 = {{0x3FABA1BA, 0x1CDB8745} }, /* . */
+/**/ d9 = {{0x3F9664ED, 0x49CFC666} }, /* . */
+/**/ d11 = {{0x3F82385A, 0x3CF2E4EA} }, /* . */
+ /* polynomial II */
+/**/ a3 = {{0x3fd55555, 0x55555555} }, /* 1/3 */
+/**/ aa3 = {{0x3c755555, 0x55555555} }, /* 1/3-a3 */
+/**/ a5 = {{0x3fc11111, 0x11111111} }, /* 2/15 */
+/**/ aa5 = {{0x3c411111, 0x11111111} }, /* 2/15-a5 */
+/**/ a7 = {{0x3faba1ba, 0x1ba1ba1c} }, /* 17/315 */
+/**/ aa7 = {{0xbc479179, 0x17917918} }, /* ()-a7 */
+/**/ a9 = {{0x3f9664f4, 0x882c10fa} }, /* 62/2835 */
+/**/ aa9 = {{0xbc09a528, 0x8b6c44fd} }, /* ()-a9 */
+/**/ a11 = {{0x3f8226e3, 0x55e6c23d} }, /* . */
+/**/ aa11 = {{0xbc2c292b, 0x8f1a2c13} }, /* . */
+/**/ a13 = {{0x3f6d6d3d, 0x0e157de0} }, /* . */
+/**/ aa13 = {{0xbc0280cf, 0xc968d971} }, /* . */
+/**/ a15 = {{0x3f57da36, 0x452b75e3} }, /* . */
+#if 0
+/**/ aa15 = {{0xbbf25789, 0xb285d2ed} }, /* . */
+#endif
+/**/ a17 = {{0x3f435582, 0x48036744} }, /* . */
+#if 0
+/**/ aa17 = {{0x3be488d9, 0x563f1f23} }, /* . */
+#endif
+/**/ a19 = {{0x3f2f57d7, 0x734d1664} }, /* . */
+#if 0
+/**/ aa19 = {{0x3bb0d55a, 0x913ccb50} }, /* . */
+#endif
+/**/ a21 = {{0x3f1967e1, 0x8afcafad} }, /* . */
+#if 0
+/**/ aa21 = {{0xbbbd7614, 0xa42d44e6} }, /* . */
+#endif
+/**/ a23 = {{0x3f0497d8, 0xeea25259} }, /* . */
+#if 0
+/**/ aa23 = {{0x3b99f2d0, 0x2e4d2863} }, /* . */
+#endif
+/**/ a25 = {{0x3ef0b132, 0xd39a6050} }, /* . */
+#if 0
+/**/ aa25 = {{0x3b93b274, 0xc2c19614} }, /* . */
+#endif
+/**/ a27 = {{0x3edb0f72, 0xd3ee24e9} }, /* . */
+#if 0
+/**/ aa27 = {{0x3b61688d, 0xdd595609} }, /* . */
+#endif
+ /* polynomial III */
+/**/ e0 = {{0x3FD55555, 0x55554DBD} }, /* . */
+/**/ e1 = {{0x3FC11112, 0xE0A6B45F} }, /* . */
+
+ /* constants */
+/**/ mfftnhf = {{0xc02f0000, 0x00000000} }, /*-15.5 */
+
+/**/ g1 = {{0x3e4b096c, 0x00000000} }, /* 1.259e-8 */
+/**/ g2 = {{0x3faf212d, 0x00000000} }, /* 0.0608 */
+/**/ g3 = {{0x3fe92f1a, 0x00000000} }, /* 0.787 */
+/**/ g4 = {{0x40390000, 0x00000000} }, /* 25.0 */
+/**/ g5 = {{0x4197d784, 0x00000000} }, /* 1e8 */
+/**/ gy1 = {{0x3e7ad7f2, 0x9abcaf48} }, /* 1e-7 */
+/**/ gy2 = {{0x3faf212d, 0x00000000} }, /* 0.0608 */
+
+/**/ u1 = {{0x3cc8c33a, 0x00000000} }, /* 6.873e-16 */
+/**/ u2 = {{0x3983dc4d, 0x00000000} }, /* 1.224e-31 */
+/**/ u3 = {{0x3c78e14b, 0x00000000} }, /* 2.158e-17 */
+/**/ ua3 = {{0x3bfd8b58, 0x00000000} }, /* 1.001e-19 */
+/**/ ub3 = {{0x3cc81898, 0x00000000} }, /* 6.688e-16 */
+/**/ u4 = {{0x399856c2, 0x00000000} }, /* 3e-31 */
+/**/ u5 = {{0x3c39d80a, 0x00000000} }, /* 1.401e-18 */
+/**/ u6 = {{0x3c374c5a, 0x00000000} }, /* 1.263e-18 */
+/**/ u7 = {{0x39903beb, 0x00000000} }, /* 2.001e-31 */
+/**/ u8 = {{0x399c56ae, 0x00000000} }, /* 3.493e-31 */
+/**/ u9 = {{0x3c7d0ac7, 0x00000000} }, /* 2.519e-17 */
+/**/ ua9 = {{0x3bfd8b58, 0x00000000} }, /* 1.001e-19 */
+/**/ ub9 = {{0x3ccc2375, 0x00000000} }, /* 7.810e-16 */
+/**/ u10 = {{0x3c7e40af, 0x00000000} }, /* 2.624e-17 */
+/**/ ua10 = {{0x3bfd8b58, 0x00000000} }, /* 1.001e-19 */
+/**/ ub10 = {{0x3ccc6405, 0x00000000} }, /* 7.880e-16 */
+/**/ u11 = {{0x39e509b6, 0x00000000} }, /* 8.298e-30 */
+/**/ u12 = {{0x39e509b6, 0x00000000} }, /* 8.298e-30 */
+/**/ u13 = {{0x3c39d80a, 0x00000000} }, /* 1.401e-18 */
+/**/ u14 = {{0x3c374c5a, 0x00000000} }, /* 1.263e-18 */
+/**/ u15 = {{0x3ab5767a, 0x00000000} }, /* 6.935e-26 */
+/**/ u16 = {{0x3ab57744, 0x00000000} }, /* 6.936e-26 */
+/**/ u17 = {{0x3c7d0ac7, 0x00000000} }, /* 2.519e-17 */
+/**/ ua17 = {{0x3bfdb11f, 0x00000000} }, /* 1.006e-19 */
+/**/ ub17 = {{0x3ccc2375, 0x00000000} }, /* 7.810e-16 */
+/**/ u18 = {{0x3c7e40af, 0x00000000} }, /* 2.624e-17 */
+/**/ ua18 = {{0x3bfdb11f, 0x00000000} }, /* 1.006e-19 */
+/**/ ub18 = {{0x3ccc6405, 0x00000000} }, /* 7.880e-16 */
+/**/ u19 = {{0x39a13b61, 0x00000000} }, /* 4.248e-31 */
+/**/ u20 = {{0x39a13b61, 0x00000000} }, /* 4.248e-31 */
+/**/ u21 = {{0x3c3bb9b8, 0x00000000} }, /* 1.503e-18 */
+/**/ u22 = {{0x3c392e08, 0x00000000} }, /* 1.365e-18 */
+/**/ u23 = {{0x3a0ce706, 0x00000000} }, /* 4.560e-29 */
+/**/ u24 = {{0x3a0cff5d, 0x00000000} }, /* 4.575e-29 */
+/**/ u25 = {{0x3c7d0ac7, 0x00000000} }, /* 2.519e-17 */
+/**/ ua25 = {{0x3bfd8b58, 0x00000000} }, /* 1.001e-19 */
+/**/ ub25 = {{0x3ccc2375, 0x00000000} }, /* 7.810e-16 */
+/**/ u26 = {{0x3c7e40af, 0x00000000} }, /* 2.624e-17 */
+/**/ ua26 = {{0x3bfd8b58, 0x00000000} }, /* 1.001e-19 */
+/**/ ub26 = {{0x3ccc6405, 0x00000000} }, /* 7.880e-16 */
+/**/ u27 = {{0x3ad421cb, 0x00000000} }, /* 2.602e-25 */
+/**/ u28 = {{0x3ad421cb, 0x00000000} }, /* 2.602e-25 */
+
+/**/ mp1 = {{0x3FF921FB, 0x58000000} },
+/**/ mp2 = {{0xBE4DDE97, 0x3C000000} },
+/**/ mp3 = {{0xBC8CB3B3, 0x99D747F2} },
+/**/ pp3 = {{0xBC8CB3B3, 0x98000000} },
+/**/ pp4 = {{0xbacd747f, 0x23e32ed7} },
+/**/ hpinv = {{0x3FE45F30, 0x6DC9C883} },
+/**/ toint = {{0x43380000, 0x00000000} };
+
+#else
+#ifdef LITTLE_ENDI
+
+ static const number
+ /* polynomial I */
+/**/ d3 = {{0x55555555, 0x3FD55555} }, /* 0.333... */
+/**/ d5 = {{0x111107C6, 0x3FC11111} }, /* 0.133... */
+/**/ d7 = {{0x1CDB8745, 0x3FABA1BA} }, /* . */
+/**/ d9 = {{0x49CFC666, 0x3F9664ED} }, /* . */
+/**/ d11 = {{0x3CF2E4EA, 0x3F82385A} }, /* . */
+ /* polynomial II */
+/**/ a3 = {{0x55555555, 0x3fd55555} }, /* 1/3 */
+/**/ aa3 = {{0x55555555, 0x3c755555} }, /* 1/3-a3 */
+/**/ a5 = {{0x11111111, 0x3fc11111} }, /* 2/15 */
+/**/ aa5 = {{0x11111111, 0x3c411111} }, /* 2/15-a5 */
+/**/ a7 = {{0x1ba1ba1c, 0x3faba1ba} }, /* 17/315 */
+/**/ aa7 = {{0x17917918, 0xbc479179} }, /* ()-a7 */
+/**/ a9 = {{0x882c10fa, 0x3f9664f4} }, /* 62/2835 */
+/**/ aa9 = {{0x8b6c44fd, 0xbc09a528} }, /* ()-a9 */
+/**/ a11 = {{0x55e6c23d, 0x3f8226e3} }, /* . */
+/**/ aa11 = {{0x8f1a2c13, 0xbc2c292b} }, /* . */
+/**/ a13 = {{0x0e157de0, 0x3f6d6d3d} }, /* . */
+/**/ aa13 = {{0xc968d971, 0xbc0280cf} }, /* . */
+/**/ a15 = {{0x452b75e3, 0x3f57da36} }, /* . */
+#if 0
+/**/ aa15 = {{0xb285d2ed, 0xbbf25789} }, /* . */
+#endif
+/**/ a17 = {{0x48036744, 0x3f435582} }, /* . */
+#if 0
+/**/ aa17 = {{0x563f1f23, 0x3be488d9} }, /* . */
+#endif
+/**/ a19 = {{0x734d1664, 0x3f2f57d7} }, /* . */
+#if 0
+/**/ aa19 = {{0x913ccb50, 0x3bb0d55a} }, /* . */
+#endif
+/**/ a21 = {{0x8afcafad, 0x3f1967e1} }, /* . */
+#if 0
+/**/ aa21 = {{0xa42d44e6, 0xbbbd7614} }, /* . */
+#endif
+/**/ a23 = {{0xeea25259, 0x3f0497d8} }, /* . */
+#if 0
+/**/ aa23 = {{0x2e4d2863, 0x3b99f2d0} }, /* . */
+#endif
+/**/ a25 = {{0xd39a6050, 0x3ef0b132} }, /* . */
+#if 0
+/**/ aa25 = {{0xc2c19614, 0x3b93b274} }, /* . */
+#endif
+/**/ a27 = {{0xd3ee24e9, 0x3edb0f72} }, /* . */
+#if 0
+/**/ aa27 = {{0xdd595609, 0x3b61688d} }, /* . */
+#endif
+ /* polynomial III */
+/**/ e0 = {{0x55554DBD, 0x3FD55555} }, /* . */
+/**/ e1 = {{0xE0A6B45F, 0x3FC11112} }, /* . */
+
+ /* constants */
+/**/ mfftnhf = {{0x00000000, 0xc02f0000} }, /*-15.5 */
+
+/**/ g1 = {{0x00000000, 0x3e4b096c} }, /* 1.259e-8 */
+/**/ g2 = {{0x00000000, 0x3faf212d} }, /* 0.0608 */
+/**/ g3 = {{0x00000000, 0x3fe92f1a} }, /* 0.787 */
+/**/ g4 = {{0x00000000, 0x40390000} }, /* 25.0 */
+/**/ g5 = {{0x00000000, 0x4197d784} }, /* 1e8 */
+/**/ gy1 = {{0x9abcaf48, 0x3e7ad7f2} }, /* 1e-7 */
+/**/ gy2 = {{0x00000000, 0x3faf212d} }, /* 0.0608 */
+
+/**/ u1 = {{0x00000000, 0x3cc8c33a} }, /* 6.873e-16 */
+/**/ u2 = {{0x00000000, 0x3983dc4d} }, /* 1.224e-31 */
+/**/ u3 = {{0x00000000, 0x3c78e14b} }, /* 2.158e-17 */
+/**/ ua3 = {{0x00000000, 0x3bfd8b58} }, /* 1.001e-19 */
+/**/ ub3 = {{0x00000000, 0x3cc81898} }, /* 6.688e-16 */
+/**/ u4 = {{0x00000000, 0x399856c2} }, /* 3e-31 */
+/**/ u5 = {{0x00000000, 0x3c39d80a} }, /* 1.401e-18 */
+/**/ u6 = {{0x00000000, 0x3c374c5a} }, /* 1.263e-18 */
+/**/ u7 = {{0x00000000, 0x39903beb} }, /* 2.001e-31 */
+/**/ u8 = {{0x00000000, 0x399c56ae} }, /* 3.493e-31 */
+/**/ u9 = {{0x00000000, 0x3c7d0ac7} }, /* 2.519e-17 */
+/**/ ua9 = {{0x00000000, 0x3bfd8b58} }, /* 1.001e-19 */
+/**/ ub9 = {{0x00000000, 0x3ccc2375} }, /* 7.810e-16 */
+/**/ u10 = {{0x00000000, 0x3c7e40af} }, /* 2.624e-17 */
+/**/ ua10 = {{0x00000000, 0x3bfd8b58} }, /* 1.001e-19 */
+/**/ ub10 = {{0x00000000, 0x3ccc6405} }, /* 7.880e-16 */
+/**/ u11 = {{0x00000000, 0x39e509b6} }, /* 8.298e-30 */
+/**/ u12 = {{0x00000000, 0x39e509b6} }, /* 8.298e-30 */
+/**/ u13 = {{0x00000000, 0x3c39d80a} }, /* 1.401e-18 */
+/**/ u14 = {{0x00000000, 0x3c374c5a} }, /* 1.263e-18 */
+/**/ u15 = {{0x00000000, 0x3ab5767a} }, /* 6.935e-26 */
+/**/ u16 = {{0x00000000, 0x3ab57744} }, /* 6.936e-26 */
+/**/ u17 = {{0x00000000, 0x3c7d0ac7} }, /* 2.519e-17 */
+/**/ ua17 = {{0x00000000, 0x3bfdb11f} }, /* 1.006e-19 */
+/**/ ub17 = {{0x00000000, 0x3ccc2375} }, /* 7.810e-16 */
+/**/ u18 = {{0x00000000, 0x3c7e40af} }, /* 2.624e-17 */
+/**/ ua18 = {{0x00000000, 0x3bfdb11f} }, /* 1.006e-19 */
+/**/ ub18 = {{0x00000000, 0x3ccc6405} }, /* 7.880e-16 */
+/**/ u19 = {{0x00000000, 0x39a13b61} }, /* 4.248e-31 */
+/**/ u20 = {{0x00000000, 0x39a13b61} }, /* 4.248e-31 */
+/**/ u21 = {{0x00000000, 0x3c3bb9b8} }, /* 1.503e-18 */
+/**/ u22 = {{0x00000000, 0x3c392e08} }, /* 1.365e-18 */
+/**/ u23 = {{0x00000000, 0x3a0ce706} }, /* 4.560e-29 */
+/**/ u24 = {{0x00000000, 0x3a0cff5d} }, /* 4.575e-29 */
+/**/ u25 = {{0x00000000, 0x3c7d0ac7} }, /* 2.519e-17 */
+/**/ ua25 = {{0x00000000, 0x3bfd8b58} }, /* 1.001e-19 */
+/**/ ub25 = {{0x00000000, 0x3ccc2375} }, /* 7.810e-16 */
+/**/ u26 = {{0x00000000, 0x3c7e40af} }, /* 2.624e-17 */
+/**/ ua26 = {{0x00000000, 0x3bfd8b58} }, /* 1.001e-19 */
+/**/ ub26 = {{0x00000000, 0x3ccc6405} }, /* 7.880e-16 */
+/**/ u27 = {{0x00000000, 0x3ad421cb} }, /* 2.602e-25 */
+/**/ u28 = {{0x00000000, 0x3ad421cb} }, /* 2.602e-25 */
+
+/**/ mp1 = {{0x58000000, 0x3FF921FB} },
+/**/ mp2 = {{0x3C000000, 0xBE4DDE97} },
+/**/ mp3 = {{0x99D747F2, 0xBC8CB3B3} },
+/**/ pp3 = {{0x98000000, 0xBC8CB3B3} },
+/**/ pp4 = {{0x23e32ed7, 0xbacd747f} },
+/**/ hpinv = {{0x6DC9C883, 0x3FE45F30} },
+/**/ toint = {{0x00000000, 0x43380000} };
+
+#endif
+#endif
+
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/utan.tbl b/REORG.TODO/sysdeps/ieee754/dbl-64/utan.tbl
new file mode 100644
index 0000000000..8b536e9235
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/utan.tbl
@@ -0,0 +1,1525 @@
+/*
+ * IBM Accurate Mathematical Library
+ * Written by International Business Machines Corp.
+ * Copyright (C) 2001-2017 Free Software Foundation, Inc.
+ *
+ * This program 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 2.1 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 program; if not, see <http://www.gnu.org/licenses/>.
+ */
+
+/****************************************************************/
+/* TABLES FOR THE utan() FUNCTION */
+/****************************************************************/
+
+
+#ifdef BIG_ENDI
+static const number
+ xfg[186][4] = { /* xi,Fi,Gi,FFi, i=16..201 */
+/**/ {{{0x3fb00000, 0x1e519d60} },
+/**/ {{0x3fb00557, 0x96c4e240} },
+/**/ {{0x402ff554, 0x628127b7} },
+/**/ {{0xbb9a1dee, 0x9e355b06} },},
+/**/ {{{0x3fb10000, 0x1b1a7010} },
+/**/ {{0x3fb10668, 0xaab892b7} },
+/**/ {{0x402e12c7, 0xbe3fdf74} },
+/**/ {{0x3ba89234, 0x037da741} },},
+/**/ {{{0x3fb20000, 0x2505e350} },
+/**/ {{0x3fb2079b, 0xff547824} },
+/**/ {{0x402c65c5, 0xde853633} },
+/**/ {{0x3bb7486e, 0xe9614250} },},
+/**/ {{{0x3fb2ffff, 0xfcdc4252} },
+/**/ {{0x3fb308f3, 0x5eb16c68} },
+/**/ {{0x402ae5da, 0xe56be74f} },
+/**/ {{0xbb82c726, 0x91a23034} },},
+/**/ {{{0x3fb3ffff, 0xe3ff849f} },
+/**/ {{0x3fb40a71, 0x154999cc} },
+/**/ {{0x40298c43, 0x046b7352} },
+/**/ {{0x3b9aceaf, 0x3843738f} },},
+/**/ {{{0x3fb4ffff, 0xedc9590f} },
+/**/ {{0x3fb50c17, 0x429bdd80} },
+/**/ {{0x40285384, 0x91b5d674} },
+/**/ {{0xbbc1d02d, 0xb4403d22} },},
+/**/ {{{0x3fb60000, 0x00ee83f7} },
+/**/ {{0x3fb60de7, 0xda80cc21} },
+/**/ {{0x40273724, 0xef21a2a7} },
+/**/ {{0xbb95e53c, 0x72523ffd} },},
+/**/ {{{0x3fb6ffff, 0xeb05ea41} },
+/**/ {{0x3fb70fe4, 0xb8c51bea} },
+/**/ {{0x40263370, 0xfae562ff} },
+/**/ {{0xbb99ad0e, 0x8ffe0626} },},
+/**/ {{{0x3fb7ffff, 0xdc0515f7} },
+/**/ {{0x3fb81210, 0x1db54498} },
+/**/ {{0x40254553, 0x0e7eab5c} },
+/**/ {{0xbb914c87, 0xd62ed686} },},
+/**/ {{{0x3fb8ffff, 0xe384d7ab} },
+/**/ {{0x3fb9146c, 0x2a8d3727} },
+/**/ {{0x40246a33, 0xfd57f3fd} },
+/**/ {{0xbbbbda8d, 0x5381e06d} },},
+/**/ {{{0x3fb9ffff, 0xe4832347} },
+/**/ {{0x3fba16fa, 0xd50e1050} },
+/**/ {{0x40239fe2, 0xc5537a96} },
+/**/ {{0x3bc7f695, 0xc111eabb} },},
+/**/ {{{0x3fbb0000, 0x274540e3} },
+/**/ {{0x3fbb19be, 0x7ae68517} },
+/**/ {{0x4022e481, 0x3637e946} },
+/**/ {{0x3bc307f8, 0x8dbd9d93} },},
+/**/ {{{0x3fbbffff, 0xfebf2e9b} },
+/**/ {{0x3fbc1cb8, 0x8369cd19} },
+/**/ {{0x40223676, 0x17aef223} },
+/**/ {{0x3bc50038, 0x424a9cf3} },},
+/**/ {{{0x3fbd0000, 0x23529045} },
+/**/ {{0x3fbd1feb, 0xc11d7ef7} },
+/**/ {{0x4021945f, 0xb8e43d4e} },
+/**/ {{0x3b812007, 0x52a6f224} },},
+/**/ {{{0x3fbdffff, 0xd872a829} },
+/**/ {{0x3fbe2359, 0x8ee4d6b7} },
+/**/ {{0x4020fd0c, 0x76195d5f} },
+/**/ {{0xbbb4d9ab, 0x85fdca85} },},
+/**/ {{{0x3fbeffff, 0xff323b84} },
+/**/ {{0x3fbf2704, 0xec9073e5} },
+/**/ {{0x40206f71, 0x3020200f} },
+/**/ {{0x3bb77aa2, 0x12836992} },},
+/**/ {{{0x3fc00000, 0x0ce79195} },
+/**/ {{0x3fc01577, 0xbc30cc61} },
+/**/ {{0x401fd549, 0xd6564a88} },
+/**/ {{0xbbc8926f, 0x965c0ad0} },},
+/**/ {{{0x3fc07fff, 0xee40e918} },
+/**/ {{0x3fc0978d, 0x8279ac01} },
+/**/ {{0x401edbb5, 0x9294bc03} },
+/**/ {{0xbb80a533, 0x4aae45d6} },},
+/**/ {{{0x3fc10000, 0x0cc091fd} },
+/**/ {{0x3fc119c5, 0x44dfb2f7} },
+/**/ {{0x401df0bb, 0x067d8e18} },
+/**/ {{0xbbcc2c18, 0x4ff642a4} },},
+/**/ {{{0x3fc18000, 0x0d9936a1} },
+/**/ {{0x3fc19c1f, 0xb9085a4b} },
+/**/ {{0x401d131a, 0x71ce3629} },
+/**/ {{0xbbc36553, 0x0669355b} },},
+/**/ {{{0x3fc1ffff, 0xed5f3188} },
+/**/ {{0x3fc21e9d, 0xee74bf2d} },
+/**/ {{0x401c41b6, 0xff0cd655} },
+/**/ {{0x3b8867f5, 0x478ecfc5} },},
+/**/ {{{0x3fc28000, 0x05f06a51} },
+/**/ {{0x3fc2a141, 0x550b313f} },
+/**/ {{0x401b7b92, 0x1702e6d2} },
+/**/ {{0xbbadab51, 0x380131fe} },},
+/**/ {{{0x3fc2ffff, 0xfe3d339e} },
+/**/ {{0x3fc3240a, 0xa75f76df} },
+/**/ {{0x401abfc8, 0xfcb6409d} },
+/**/ {{0x3bc60bcf, 0x0d291d83} },},
+/**/ {{{0x3fc37fff, 0xed888d6f} },
+/**/ {{0x3fc3a6fb, 0x13cc5db7} },
+/**/ {{0x401a0d8f, 0x8ed5320d} },
+/**/ {{0x3bb8a48e, 0x4eef03ab} },},
+/**/ {{{0x3fc40000, 0x02ca050d} },
+/**/ {{0x3fc42a13, 0xe25776bb} },
+/**/ {{0x4019642d, 0xfa84c2bc} },
+/**/ {{0xbbd0bd5d, 0xcc56516f} },},
+/**/ {{{0x3fc47fff, 0xf2531f5c} },
+/**/ {{0x3fc4ad55, 0xdeb73404} },
+/**/ {{0x4018c2fe, 0xf86e9035} },
+/**/ {{0x3b9cffe7, 0x5aa287c8} },},
+/**/ {{{0x3fc50000, 0x13774992} },
+/**/ {{0x3fc530c2, 0x7d0ee307} },
+/**/ {{0x4018296c, 0x370caf35} },
+/**/ {{0xbbcf75d1, 0xf91d6532} },},
+/**/ {{{0x3fc57fff, 0xedddcb2d} },
+/**/ {{0x3fc5b45a, 0x5db4347d} },
+/**/ {{0x401796ee, 0x52190c0e} },
+/**/ {{0x3b88a25f, 0x17d5d076} },},
+/**/ {{{0x3fc5ffff, 0xf41949a0} },
+/**/ {{0x3fc6381f, 0x13bf986a} },
+/**/ {{0x40170b09, 0x2d2255fd} },
+/**/ {{0xbb9bfb23, 0xb1bcd5e7} },},
+/**/ {{{0x3fc67fff, 0xf834d3a1} },
+/**/ {{0x3fc6bc11, 0x8ec85952} },
+/**/ {{0x4016854c, 0x62cf2268} },
+/**/ {{0x3b9ee53b, 0x82e39e04} },},
+/**/ {{{0x3fc6ffff, 0xfd9106ea} },
+/**/ {{0x3fc74032, 0xf298f6f7} },
+/**/ {{0x40160551, 0x1f4f84a9} },
+/**/ {{0xbbb59c4a, 0x112634b8} },},
+/**/ {{{0x3fc78000, 0x0f649a4f} },
+/**/ {{0x3fc7c484, 0x6ca53abc} },
+/**/ {{0x40158ab9, 0x4809d175} },
+/**/ {{0x3bc91c75, 0x73d3cd2e} },},
+/**/ {{{0x3fc7ffff, 0xef06bbd8} },
+/**/ {{0x3fc84906, 0xdf7d76ad} },
+/**/ {{0x4015152e, 0xdd2b30a6} },
+/**/ {{0xbbbfa2da, 0x084c3eef} },},
+/**/ {{{0x3fc88000, 0x021c6334} },
+/**/ {{0x3fc8cdbb, 0xd965f986} },
+/**/ {{0x4014a462, 0x51b74296} },
+/**/ {{0xbb9ec02e, 0x74dcfe0b} },},
+/**/ {{{0x3fc8ffff, 0xf38d0756} },
+/**/ {{0x3fc952a4, 0x28e173c7} },
+/**/ {{0x4014380b, 0x17b59ebd} },
+/**/ {{0xbbcd0f1c, 0xb77589f0} },},
+/**/ {{{0x3fc98000, 0x104efca1} },
+/**/ {{0x3fc9d7c1, 0x4644d23c} },
+/**/ {{0x4013cfe5, 0xcb1eabd5} },
+/**/ {{0xbbd5d6f7, 0xea188d9e} },},
+/**/ {{{0x3fca0000, 0x09417b30} },
+/**/ {{0x3fca5d14, 0x096d76aa} },
+/**/ {{0x40136bb4, 0xb3723db0} },
+/**/ {{0x3bbe3e0d, 0xfbf3979c} },},
+/**/ {{{0x3fca7fff, 0xeb1c23ec} },
+/**/ {{0x3fcae29d, 0xab60288d} },
+/**/ {{0x40130b3e, 0x783071d7} },
+/**/ {{0xbbc7dd82, 0x3d5384bf} },},
+/**/ {{{0x3fcaffff, 0xfb171c13} },
+/**/ {{0x3fcb685f, 0xa221a96b} },
+/**/ {{0x4012ae4d, 0xd8c0747d} },
+/**/ {{0x3bd4644b, 0xd5554972} },},
+/**/ {{{0x3fcb8000, 0x0aba44be} },
+/**/ {{0x3fcbee5a, 0xecdf241f} },
+/**/ {{0x401254b1, 0xc6fad63b} },
+/**/ {{0x3ba41916, 0xd092b85a} },},
+/**/ {{{0x3fcc0000, 0x113d2a3e} },
+/**/ {{0x3fcc7490, 0xb3e92543} },
+/**/ {{0x4011fe3c, 0x9a62c035} },
+/**/ {{0xbba3cc39, 0x41a03739} },},
+/**/ {{{0x3fcc7fff, 0xf49e00ce} },
+/**/ {{0x3fccfb02, 0x0f59eab0} },
+/**/ {{0x4011aac3, 0xe956a631} },
+/**/ {{0xbbb7a383, 0xbfa8cb5b} },},
+/**/ {{{0x3fcd0000, 0x05f611ab} },
+/**/ {{0x3fcd81b0, 0x89e6844e} },
+/**/ {{0x40115a1f, 0xf391268d} },
+/**/ {{0x3bd39b5c, 0xb2dc91f3} },},
+/**/ {{{0x3fcd8000, 0x14764ceb} },
+/**/ {{0x3fce089d, 0x27debf0d} },
+/**/ {{0x40110c2b, 0xfbc84740} },
+/**/ {{0x3bc14d4d, 0x84712510} },},
+/**/ {{{0x3fce0000, 0x14bcea76} },
+/**/ {{0x3fce8fc9, 0x16dbc820} },
+/**/ {{0x4010c0c5, 0xa00ca48e} },
+/**/ {{0xbbd33788, 0x640f1b9e} },},
+/**/ {{{0x3fce7fff, 0xfd7995bd} },
+/**/ {{0x3fcf1735, 0x88b50424} },
+/**/ {{0x401077cc, 0xbe02169a} },
+/**/ {{0xbbb61fee, 0x221fdf77} },},
+/**/ {{{0x3fcf0000, 0x0cc35436} },
+/**/ {{0x3fcf9ee3, 0xfd21a40b} },
+/**/ {{0x40103123, 0x1ee7ffe8} },
+/**/ {{0x3bd427e3, 0xc79ff5c1} },},
+/**/ {{{0x3fcf8000, 0x01d1da33} },
+/**/ {{0x3fd0136a, 0xb7dbe15c} },
+/**/ {{0x400fd959, 0x77d559e5} },
+/**/ {{0x3bb0c6a1, 0xd67948d7} },},
+/**/ {{{0x3fd00000, 0x060c13b2} },
+/**/ {{0x3fd05785, 0xaaad4f18} },
+/**/ {{0x400f549e, 0x2675d182} },
+/**/ {{0xbbc15208, 0x18f0dd10} },},
+/**/ {{{0x3fd04000, 0x03885492} },
+/**/ {{0x3fd09bc3, 0x660542d7} },
+/**/ {{0x400ed3e2, 0xdf3f5fec} },
+/**/ {{0xbbd95657, 0xb883ae62} },},
+/**/ {{{0x3fd08000, 0x052f5a13} },
+/**/ {{0x3fd0e024, 0x9a195045} },
+/**/ {{0x400e56f8, 0xfa68f2c8} },
+/**/ {{0x3bded7ba, 0x5a543e8e} },},
+/**/ {{{0x3fd0c000, 0x02ba1af5} },
+/**/ {{0x3fd124a9, 0xe2e7f24b} },
+/**/ {{0x400dddb4, 0xbffe633f} },
+/**/ {{0xbbdcba86, 0x0c60278f} },},
+/**/ {{{0x3fd0ffff, 0xf76642c1} },
+/**/ {{0x3fd16953, 0xe162ffe6} },
+/**/ {{0x400d67ed, 0x0311d5d5} },
+/**/ {{0x3b7b1f4a, 0xe40c5f9e} },},
+/**/ {{{0x3fd14000, 0x033602f0} },
+/**/ {{0x3fd1ae23, 0x5f49508e} },
+/**/ {{0x400cf57a, 0xb8708266} },
+/**/ {{0xbbd6a6c2, 0x8620f301} },},
+/**/ {{{0x3fd17fff, 0xfefd1a13} },
+/**/ {{0x3fd1f318, 0xdb2a9ba1} },
+/**/ {{0x400c8639, 0x8d11009e} },
+/**/ {{0x3bd3a9c6, 0x69b21d3b} },},
+/**/ {{{0x3fd1bfff, 0xf718365d} },
+/**/ {{0x3fd23835, 0x0c41e3ac} },
+/**/ {{0x400c1a06, 0xe02be47c} },
+/**/ {{0x3bdb961a, 0x129e8cd1} },},
+/**/ {{{0x3fd1ffff, 0xff001e00} },
+/**/ {{0x3fd27d78, 0xb2f6395e} },
+/**/ {{0x400bb0c1, 0xf2fe9a85} },
+/**/ {{0x3be074a9, 0xe68fd7d8} },},
+/**/ {{{0x3fd23fff, 0xfe425a6a} },
+/**/ {{0x3fd2c2e4, 0x618faabe} },
+/**/ {{0x400b4a4c, 0x190b18df} },
+/**/ {{0xbbdf0d1f, 0xf615aad1} },},
+/**/ {{{0x3fd28000, 0x059ec1db} },
+/**/ {{0x3fd30878, 0xd8583884} },
+/**/ {{0x400ae688, 0x0cd82bc2} },
+/**/ {{0xbbd563c3, 0x141c1f8d} },},
+/**/ {{{0x3fd2c000, 0x000dd081} },
+/**/ {{0x3fd34e36, 0xaffdb6d8} },
+/**/ {{0x400a855a, 0x5270fc15} },
+/**/ {{0xbbc6d88d, 0x9f2cdafd} },},
+/**/ {{{0x3fd2ffff, 0xfc1dcd2b} },
+/**/ {{0x3fd3941e, 0xa95875bc} },
+/**/ {{0x400a26a8, 0xaa9502b6} },
+/**/ {{0xbbe13cad, 0x8389b15c} },},
+/**/ {{{0x3fd33fff, 0xf6c0d4a0} },
+/**/ {{0x3fd3da31, 0x739845f5} },
+/**/ {{0x4009ca5a, 0x4d2573a0} },
+/**/ {{0xbbc71636, 0xacaee379} },},
+/**/ {{{0x3fd38000, 0x06b16793} },
+/**/ {{0x3fd4206f, 0xdbc088f0} },
+/**/ {{0x40097057, 0x9344e33a} },
+/**/ {{0xbbc2c052, 0x1d7a4f81} },},
+/**/ {{{0x3fd3c000, 0x07358fa3} },
+/**/ {{0x3fd466da, 0x6f23311d} },
+/**/ {{0x4009188a, 0x5aa612ea} },
+/**/ {{0x3b8653a5, 0x685e8edc} },},
+/**/ {{{0x3fd3ffff, 0xfc3b18cf} },
+/**/ {{0x3fd4ad71, 0xe9282e6b} },
+/**/ {{0x4008c2dd, 0x641e643d} },
+/**/ {{0x3b95f0ef, 0x3f567c64} },},
+/**/ {{{0x3fd44000, 0x000dd2a8} },
+/**/ {{0x3fd4f437, 0x1fa3f2d1} },
+/**/ {{0x40086f3c, 0x6072f821} },
+/**/ {{0x3bb68efa, 0x95ff68b5} },},
+/**/ {{{0x3fd47fff, 0xfbb43713} },
+/**/ {{0x3fd53b2a, 0xb3ac333c} },
+/**/ {{0x40081d94, 0x3da56692} },
+/**/ {{0xbbbf4d7f, 0x2985fd3f} },},
+/**/ {{{0x3fd4bfff, 0xfb113bf4} },
+/**/ {{0x3fd5824d, 0x6e8ed9c2} },
+/**/ {{0x4007cdd2, 0xa8add00f} },
+/**/ {{0x3bcf478a, 0x1c9b3657} },},
+/**/ {{{0x3fd4ffff, 0xf7f087c9} },
+/**/ {{0x3fd5c9a0, 0x07446496} },
+/**/ {{0x40077fe6, 0x444588eb} },
+/**/ {{0xbbc177dc, 0xa4eabb0c} },},
+/**/ {{{0x3fd54000, 0x088b3814} },
+/**/ {{0x3fd61123, 0x564125f9} },
+/**/ {{0x400733be, 0x6281a765} },
+/**/ {{0xbbc2c52c, 0xf57051c4} },},
+/**/ {{{0x3fd57fff, 0xf7d55966} },
+/**/ {{0x3fd658d7, 0xe194a5d5} },
+/**/ {{0x4006e94b, 0x73b47d1f} },
+/**/ {{0x3bda2fcf, 0xf9996dc6} },},
+/**/ {{{0x3fd5c000, 0x08bf2490} },
+/**/ {{0x3fd6a0be, 0xb775b28d} },
+/**/ {{0x4006a07e, 0x15b6ec28} },
+/**/ {{0xbbe0ca90, 0xaa5285b8} },},
+/**/ {{{0x3fd60000, 0x09fa853f} },
+/**/ {{0x3fd6e8d8, 0x65a66cfd} },
+/**/ {{0x40065948, 0x1c701269} },
+/**/ {{0x3bd9ea95, 0x8591e13a} },},
+/**/ {{{0x3fd64000, 0x07595fca} },
+/**/ {{0x3fd73125, 0xc0556a7c} },
+/**/ {{0x4006139b, 0xbaae9d02} },
+/**/ {{0x3bd88aff, 0x40152b83} },},
+/**/ {{{0x3fd68000, 0x031687da} },
+/**/ {{0x3fd779a7, 0x92e2cfd0} },
+/**/ {{0x4005cf6b, 0xcae0882b} },
+/**/ {{0xbbd8a4a2, 0x9f439451} },},
+/**/ {{{0x3fd6bfff, 0xf5c8cfe2} },
+/**/ {{0x3fd7c25e, 0x9fb452ed} },
+/**/ {{0x40058cab, 0xc561f1cd} },
+/**/ {{0xbbe371a6, 0xf6a37d74} },},
+/**/ {{{0x3fd6ffff, 0xf81df231} },
+/**/ {{0x3fd80b4b, 0xcfb4dab5} },
+/**/ {{0x40054b4f, 0x8d3ca5d3} },
+/**/ {{0x3bcb4686, 0x679dc99f} },},
+/**/ {{{0x3fd73fff, 0xfa71385e} },
+/**/ {{0x3fd8546f, 0xe007a9b6} },
+/**/ {{0x40050b4b, 0xb3b22176} },
+/**/ {{0xbbcd1540, 0xa5c73477} },},
+/**/ {{{0x3fd78000, 0x024a9c2b} },
+/**/ {{0x3fd89dcb, 0xa7fcf5cf} },
+/**/ {{0x4004cc95, 0x3159cbe1} },
+/**/ {{0xbbdc25ea, 0xd58a6ad0} },},
+/**/ {{{0x3fd7c000, 0x02eb62b8} },
+/**/ {{0x3fd8e75f, 0xec0ba5cf} },
+/**/ {{0x40048f21, 0x8731eeea} },
+/**/ {{0xbbc1cb73, 0xcc1adafb} },},
+/**/ {{{0x3fd80000, 0x054a52d1} },
+/**/ {{0x3fd9312d, 0x8bb822e9} },
+/**/ {{0x400452e6, 0x9170a729} },
+/**/ {{0xbbd8bb17, 0xeac002ee} },},
+/**/ {{{0x3fd83fff, 0xf93a00a3} },
+/**/ {{0x3fd97b35, 0x4bb9ad2a} },
+/**/ {{0x400417da, 0xae924e7f} },
+/**/ {{0x3bd4b800, 0x9a378cc7} },},
+/**/ {{{0x3fd87fff, 0xfbdc91c1} },
+/**/ {{0x3fd9c578, 0x2771b601} },
+/**/ {{0x4003ddf4, 0x78855799} },
+/**/ {{0x3bd9077d, 0xa00445d9} },},
+/**/ {{{0x3fd8bfff, 0xf6d215e6} },
+/**/ {{0x3fda0ff6, 0xe0ea4a0b} },
+/**/ {{0x4003a52b, 0x189a0989} },
+/**/ {{0xbbda6831, 0x89c0613d} },},
+/**/ {{{0x3fd90000, 0x02f734ef} },
+/**/ {{0x3fda5ab2, 0x736bf579} },
+/**/ {{0x40036d75, 0xe9244ca6} },
+/**/ {{0x3be3a6d8, 0x4b722377} },},
+/**/ {{{0x3fd94000, 0x04eef8b4} },
+/**/ {{0x3fdaa5ab, 0x9fb6e3d0} },
+/**/ {{0x400336cc, 0xc9089cb7} },
+/**/ {{0x3b9f6963, 0x22cc00bb} },},
+/**/ {{{0x3fd98000, 0x041ec76a} },
+/**/ {{0x3fdaf0e3, 0x5176c7e4} },
+/**/ {{0x40030127, 0xcb0b9506} },
+/**/ {{0x3bb1ffdb, 0x5385a849} },},
+/**/ {{{0x3fd9c000, 0x08044e47} },
+/**/ {{0x3fdb3c5a, 0x77071224} },
+/**/ {{0x4002cc7f, 0x50d75ec7} },
+/**/ {{0xbbb0fade, 0x78effc8a} },},
+/**/ {{{0x3fda0000, 0x01f8235b} },
+/**/ {{0x3fdb8811, 0xe725782e} },
+/**/ {{0x400298cc, 0x18fbfb37} },
+/**/ {{0xbbe55ed3, 0x3b50e71b} },},
+/**/ {{{0x3fda3fff, 0xfb8c6f08} },
+/**/ {{0x3fdbd40a, 0x97b086f3} },
+/**/ {{0x40026607, 0x154de04b} },
+/**/ {{0xbbdec65e, 0x455faae3} },},
+/**/ {{{0x3fda7fff, 0xfb3d63e1} },
+/**/ {{0x3fdc2045, 0x7d9a3b8a} },
+/**/ {{0x40023429, 0x7e60bfbb} },
+/**/ {{0x3be3001c, 0x154ebd33} },},
+/**/ {{{0x3fdabfff, 0xf5f45c48} },
+/**/ {{0x3fdc6cc3, 0x7b8d45e6} },
+/**/ {{0x4002032c, 0xdb1ace69} },
+/**/ {{0xbbe5ebf8, 0x3ed33616} },},
+/**/ {{{0x3fdb0000, 0x0508b34c} },
+/**/ {{0x3fdcb985, 0xa27e8d37} },
+/**/ {{0x4001d30a, 0xd4459a2b} },
+/**/ {{0xbbd01432, 0xae61e2d1} },},
+/**/ {{{0x3fdb4000, 0x0a84710c} },
+/**/ {{0x3fdd068c, 0xc3e50155} },
+/**/ {{0x4001a3bd, 0x775034dd} },
+/**/ {{0xbbe80b1e, 0x58e0e228} },},
+/**/ {{{0x3fdb7fff, 0xf692e9d8} },
+/**/ {{0x3fdd53d9, 0xc49d6627} },
+/**/ {{0x4001753e, 0xfe18066a} },
+/**/ {{0xbbb004c8, 0xf760d33e} },},
+/**/ {{{0x3fdbc000, 0x0280f14d} },
+/**/ {{0x3fdda16d, 0xe4e81013} },
+/**/ {{0x40014789, 0xa38ea052} },
+/**/ {{0x3be848bc, 0x27c9c4ea} },},
+/**/ {{{0x3fdc0000, 0x001121d1} },
+/**/ {{0x3fddef49, 0xeac018f0} },
+/**/ {{0x40011a98, 0x20b8be0c} },
+/**/ {{0xbbe1527e, 0xd0d6010e} },},
+/**/ {{{0x3fdc3fff, 0xfef662aa} },
+/**/ {{0x3fde3d6e, 0xea0c7070} },
+/**/ {{0x4000ee65, 0x32f46ccd} },
+/**/ {{0x3be8d241, 0x189a000d} },},
+/**/ {{{0x3fdc8000, 0x09845818} },
+/**/ {{0x3fde8bdd, 0xf36a8b1b} },
+/**/ {{0x4000c2eb, 0xcac73476} },
+/**/ {{0x3bd221f7, 0x12bed284} },},
+/**/ {{{0x3fdcbfff, 0xfb0493bf} },
+/**/ {{0x3fdeda97, 0xe0c60d10} },
+/**/ {{0x40009827, 0x251c7836} },
+/**/ {{0xbbe0bd54, 0x6eec41b7} },},
+/**/ {{{0x3fdcffff, 0xfd52961f} },
+/**/ {{0x3fdf299d, 0xefb3e44b} },
+/**/ {{0x40006e12, 0x74e459f5} },
+/**/ {{0xbbd93f77, 0xe969c82f} },},
+/**/ {{{0x3fdd3fff, 0xfe2319a4} },
+/**/ {{0x3fdf78f1, 0x17139490} },
+/**/ {{0x400044a9, 0x3e737e94} },
+/**/ {{0xbb91e7cc, 0x49594b7a} },},
+/**/ {{{0x3fdd7fff, 0xfa4de596} },
+/**/ {{0x3fdfc892, 0x638f49e8} },
+/**/ {{0x40001be7, 0x231057a5} },
+/**/ {{0x3bd482b0, 0xf5af9f5f} },},
+/**/ {{{0x3fddbfff, 0xfe729a69} },
+/**/ {{0x3fe00c41, 0x7c6ab019} },
+/**/ {{0x3fffe78f, 0xbf612660} },
+/**/ {{0x3bea5cda, 0x00da681e} },},
+/**/ {{{0x3fde0000, 0x09d66802} },
+/**/ {{0x3fe03461, 0xf6b883cf} },
+/**/ {{0x3fff988e, 0xbc05a87c} },
+/**/ {{0xbbe06c33, 0xf2372669} },},
+/**/ {{{0x3fde3fff, 0xfb211657} },
+/**/ {{0x3fe05cab, 0x191db8e8} },
+/**/ {{0x3fff4ac3, 0x7bcfe6be} },
+/**/ {{0xbbd5d51f, 0x5ed8d35b} },},
+/**/ {{{0x3fde8000, 0x0a3f068a} },
+/**/ {{0x3fe0851d, 0x95fb54f0} },
+/**/ {{0x3ffefe26, 0x144ca408} },
+/**/ {{0xbbc7c894, 0xa2c169c5} },},
+/**/ {{{0x3fdec000, 0x01adb060} },
+/**/ {{0x3fe0adb9, 0xdc7b54f9} },
+/**/ {{0x3ffeb2af, 0x5ebe52a7} },
+/**/ {{0x3bd4e740, 0x312c5ffd} },},
+/**/ {{{0x3fdeffff, 0xff5c0d01} },
+/**/ {{0x3fe0d680, 0x92550a8d} },
+/**/ {{0x3ffe6858, 0x0d71fdf0} },
+/**/ {{0x3bddd8a6, 0x96b35499} },},
+/**/ {{{0x3fdf3fff, 0xf93d5fcc} },
+/**/ {{0x3fe0ff72, 0x45cb4374} },
+/**/ {{0x3ffe1f19, 0x3cce5040} },
+/**/ {{0xbbc9f0ec, 0x7c1efab4} },},
+/**/ {{{0x3fdf7fff, 0xfa0dd18f} },
+/**/ {{0x3fe1288f, 0x944dd508} },
+/**/ {{0x3ffdd6ec, 0x298b874d} },
+/**/ {{0x3bea6ebd, 0x9642a0a6} },},
+/**/ {{{0x3fdfbfff, 0xfd3a9f1a} },
+/**/ {{0x3fe151d9, 0x13750f3e} },
+/**/ {{0x3ffd8fca, 0x5806a27e} },
+/**/ {{0x3bda2a03, 0xfc65ac7a} },},
+/**/ {{{0x3fdfffff, 0xfc481400} },
+/**/ {{0x3fe17b4f, 0x598944ca} },
+/**/ {{0x3ffd49ad, 0x82532170} },
+/**/ {{0x3bc4412e, 0x3d236dc3} },},
+/**/ {{{0x3fe01fff, 0xff53786c} },
+/**/ {{0x3fe1a4f3, 0x07d83d47} },
+/**/ {{0x3ffd048f, 0x851bffeb} },
+/**/ {{0x3bd1589d, 0x29f81b14} },},
+/**/ {{{0x3fe03fff, 0xfee301b7} },
+/**/ {{0x3fe1cec4, 0xb8a6a382} },
+/**/ {{0x3ffcc06a, 0x7c519db6} },
+/**/ {{0x3bd370e6, 0x5b24d6b2} },},
+/**/ {{{0x3fe06000, 0x006e36bf} },
+/**/ {{0x3fe1f8c5, 0x114eb8be} },
+/**/ {{0x3ffc7d38, 0xa34d6786} },
+/**/ {{0xbbea92de, 0x4b98c1d4} },},
+/**/ {{{0x3fe07fff, 0xfd60aa43} },
+/**/ {{0x3fe222f4, 0xabeccecb} },
+/**/ {{0x3ffc3af4, 0x77342ac4} },
+/**/ {{0xbbdd47f6, 0x03a5c2c2} },},
+/**/ {{{0x3fe0a000, 0x037762e8} },
+/**/ {{0x3fe24d54, 0x3f99efe8} },
+/**/ {{0x3ffbf998, 0x75f54fab} },
+/**/ {{0x3bedf7f4, 0x15771a46} },},
+/**/ {{{0x3fe0bfff, 0xff1c6921} },
+/**/ {{0x3fe277e4, 0x598e35d0} },
+/**/ {{0x3ffbb91f, 0x8addd186} },
+/**/ {{0x3be0f16c, 0x5e0e5a73} },},
+/**/ {{{0x3fe0dfff, 0xff07154b} },
+/**/ {{0x3fe2a2a5, 0xb6bc3986} },
+/**/ {{0x3ffb7984, 0x8301646d} },
+/**/ {{0xbbf02dd0, 0xbbaa5310} },},
+/**/ {{{0x3fe10000, 0x02fcdda4} },
+/**/ {{0x3fe2cd99, 0x02a59f1e} },
+/**/ {{0x3ffb3ac2, 0x705219bf} },
+/**/ {{0xbbe59357, 0x112fa616} },},
+/**/ {{{0x3fe12000, 0x01ce1140} },
+/**/ {{0x3fe2f8be, 0xdf0a67c2} },
+/**/ {{0x3ffafcd4, 0x9ab8ae2a} },
+/**/ {{0x3be2c542, 0x9303f346} },},
+/**/ {{{0x3fe14000, 0x04d0f355} },
+/**/ {{0x3fe32418, 0x08fcc7bf} },
+/**/ {{0x3ffabfb6, 0x497b9a36} },
+/**/ {{0x3bebc044, 0xb5a59234} },},
+/**/ {{{0x3fe16000, 0x00fb0c8a} },
+/**/ {{0x3fe34fa5, 0x2471618b} },
+/**/ {{0x3ffa8363, 0x0d26d117} },
+/**/ {{0xbbdbfbb2, 0x3f7bb7c9} },},
+/**/ {{{0x3fe18000, 0x026f10b3} },
+/**/ {{0x3fe37b66, 0xf7579056} },
+/**/ {{0x3ffa47d6, 0x6b4cf4b1} },
+/**/ {{0x3bf0f6b4, 0xaf0b5de9} },},
+/**/ {{{0x3fe19fff, 0xfd0978f8} },
+/**/ {{0x3fe3a75e, 0x290cc78c} },
+/**/ {{0x3ffa0d0c, 0x36c21315} },
+/**/ {{0x3beb2129, 0xa296b262} },},
+/**/ {{{0x3fe1bfff, 0xfd94840b} },
+/**/ {{0x3fe3d38b, 0x85b4e4a4} },
+/**/ {{0x3ff9d300, 0x32f2ecef} },
+/**/ {{0xbbdbab1a, 0xb9bb7d74} },},
+/**/ {{{0x3fe1dfff, 0xfbda1ea1} },
+/**/ {{0x3fe3ffef, 0xbf3cee2f} },
+/**/ {{0x3ff999ae, 0x6770fed8} },
+/**/ {{0x3bda0bdc, 0xb4ace9a4} },},
+/**/ {{{0x3fe1ffff, 0xfc989533} },
+/**/ {{0x3fe42c8b, 0x9c27900c} },
+/**/ {{0x3ff96112, 0xe0d9f1ac} },
+/**/ {{0xbbee19eb, 0x2fa2d81a} },},
+/**/ {{{0x3fe22000, 0x012b8d26} },
+/**/ {{0x3fe4595f, 0xe11975ca} },
+/**/ {{0x3ff92929, 0xcdaa4e80} },
+/**/ {{0x3bf23382, 0xacc82d4b} },},
+/**/ {{{0x3fe24000, 0x04f4d6af} },
+/**/ {{0x3fe4866d, 0x4d224131} },
+/**/ {{0x3ff8f1ef, 0x815c34e8} },
+/**/ {{0xbbd0c6ff, 0x3b740a99} },},
+/**/ {{{0x3fe25fff, 0xfcc07bda} },
+/**/ {{0x3fe4b3b4, 0x98b7d010} },
+/**/ {{0x3ff8bb60, 0x73e7ffa1} },
+/**/ {{0x3bebc31b, 0x1ad7a9c2} },},
+/**/ {{{0x3fe28000, 0x042d9639} },
+/**/ {{0x3fe4e136, 0xb64540d1} },
+/**/ {{0x3ff88578, 0xf4374938} },
+/**/ {{0x3be36de9, 0x1b85e901} },},
+/**/ {{{0x3fe2a000, 0x03be29a0} },
+/**/ {{0x3fe50ef4, 0x52bffd96} },
+/**/ {{0x3ff85035, 0xc0042c06} },
+/**/ {{0x3be15d01, 0x76f5efbd} },},
+/**/ {{{0x3fe2bfff, 0xfaa91f12} },
+/**/ {{0x3fe53cee, 0x3e2f4e0d} },
+/**/ {{0x3ff81b93, 0x8542df07} },
+/**/ {{0x3be555cd, 0x17662a2b} },},
+/**/ {{{0x3fe2dfff, 0xfe884891} },
+/**/ {{0x3fe56b25, 0x6c1a2470} },
+/**/ {{0x3ff7e78e, 0xe422ea70} },
+/**/ {{0x3bf03504, 0xbd030c11} },},
+/**/ {{{0x3fe2ffff, 0xfe87152b} },
+/**/ {{0x3fe5999a, 0x9beaaaa1} },
+/**/ {{0x3ff7b424, 0xd18fe9b3} },
+/**/ {{0xbb649a5f, 0x773e0e64} },},
+/**/ {{{0x3fe31fff, 0xffc1a721} },
+/**/ {{0x3fe5c84e, 0xafe0e564} },
+/**/ {{0x3ff78152, 0x338db8d4} },
+/**/ {{0x3beaf428, 0x5da8e935} },},
+/**/ {{{0x3fe33fff, 0xff70a372} },
+/**/ {{0x3fe5f742, 0x82191d64} },
+/**/ {{0x3ff74f14, 0x1122bcae} },
+/**/ {{0x3bdb1c4b, 0xdee4bfaf} },},
+/**/ {{{0x3fe36000, 0x0436e836} },
+/**/ {{0x3fe62676, 0xfde6ccff} },
+/**/ {{0x3ff71d67, 0x7644252c} },
+/**/ {{0xbbec3d10, 0xe08c3afb} },},
+/**/ {{{0x3fe37fff, 0xfcbe9641} },
+/**/ {{0x3fe655ec, 0xee9ffdaf} },
+/**/ {{0x3ff6ec49, 0xa6fc0515} },
+/**/ {{0x3bdda453, 0x2ed29567} },},
+/**/ {{{0x3fe39fff, 0xffb6d6ca} },
+/**/ {{0x3fe685a5, 0x5e67a1e1} },
+/**/ {{0x3ff6bbb7, 0xbc2ae969} },
+/**/ {{0x3becbf7b, 0x2ef43882} },},
+/**/ {{{0x3fe3c000, 0x04934fec} },
+/**/ {{0x3fe6b5a1, 0x2cc07d75} },
+/**/ {{0x3ff68baf, 0x10b02ef8} },
+/**/ {{0xbbe7c8fb, 0xfeb7cabd} },},
+/**/ {{{0x3fe3e000, 0x03f5cf7f} },
+/**/ {{0x3fe6e5e1, 0x3e59def6} },
+/**/ {{0x3ff65c2d, 0x0e61500f} },
+/**/ {{0xbbe30ba4, 0x035f7845} },},
+/**/ {{{0x3fe40000, 0x05280ad9} },
+/**/ {{0x3fe71666, 0x91ab4c3e} },
+/**/ {{0x3ff62d2f, 0x19f01c90} },
+/**/ {{0xbbf1e9f5, 0xffe95f6a} },},
+/**/ {{{0x3fe42000, 0x049efb65} },
+/**/ {{0x3fe74732, 0x18af3b9d} },
+/**/ {{0x3ff5feb2, 0xb86465e4} },
+/**/ {{0x3bc4cad7, 0x280d591e} },},
+/**/ {{{0x3fe44000, 0x0035ccb6} },
+/**/ {{0x3fe77844, 0xcb4ff1e5} },
+/**/ {{0x3ff5d0b5, 0x7c455428} },
+/**/ {{0x3bed8c18, 0x7ba5617c} },},
+/**/ {{{0x3fe46000, 0x03346717} },
+/**/ {{0x3fe7a99f, 0xba258778} },
+/**/ {{0x3ff5a334, 0xf4392254} },
+/**/ {{0xbbefd14a, 0xfc84a570} },},
+/**/ {{{0x3fe48000, 0x03002575} },
+/**/ {{0x3fe7db43, 0xd836768f} },
+/**/ {{0x3ff5762e, 0xdcf97e0c} },
+/**/ {{0xbbdd7eba, 0x5f5df49e} },},
+/**/ {{{0x3fe4a000, 0x055bf381} },
+/**/ {{0x3fe80d32, 0x35edeefa} },
+/**/ {{0x3ff549a0, 0xea46e31f} },
+/**/ {{0xbbdba522, 0x76823eac} },},
+/**/ {{{0x3fe4c000, 0x04ce10e3} },
+/**/ {{0x3fe83f6b, 0xd67dc1a8} },
+/**/ {{0x3ff51d88, 0xed82bcc4} },
+/**/ {{0xbbeae92d, 0x077d29ea} },},
+/**/ {{{0x3fe4e000, 0x016c60e1} },
+/**/ {{0x3fe871f1, 0xca0aaf31} },
+/**/ {{0x3ff4f1e4, 0xbdacbf16} },
+/**/ {{0x3be82958, 0x46ee425e} },},
+/**/ {{{0x3fe4ffff, 0xff966f0a} },
+/**/ {{0x3fe8a4c5, 0x2bff2dae} },
+/**/ {{0x3ff4c6b2, 0x3917657e} },
+/**/ {{0xbbf127c2, 0x5c86c705} },},
+/**/ {{{0x3fe52000, 0x0076e6eb} },
+/**/ {{0x3fe8d7e7, 0x175651e8} },
+/**/ {{0x3ff49bef, 0x4f459b05} },
+/**/ {{0xbbb1e9d1, 0x4181bbfc} },},
+/**/ {{{0x3fe54000, 0x03d12d3b} },
+/**/ {{0x3fe90b58, 0xa976ed56} },
+/**/ {{0x3ff47199, 0xfdf24af4} },
+/**/ {{0x3be38c17, 0xc30decaf} },},
+/**/ {{{0x3fe55fff, 0xfce7fa8d} },
+/**/ {{0x3fe93f1a, 0xf03a3a09} },
+/**/ {{0x3ff447b0, 0x5f13234b} },
+/**/ {{0x3bf1b8b2, 0x70df7e20} },},
+/**/ {{{0x3fe58000, 0x0331b46a} },
+/**/ {{0x3fe9732f, 0x38e83134} },
+/**/ {{0x3ff41e30, 0x68d8b41b} },
+/**/ {{0xbbee24d8, 0xb90bc28b} },},
+/**/ {{{0x3fe59fff, 0xfc14848e} },
+/**/ {{0x3fe9a796, 0x8471b489} },
+/**/ {{0x3ff3f518, 0x5de3aa73} },
+/**/ {{0xbbecacd9, 0xe0761536} },},
+/**/ {{{0x3fe5bfff, 0xfb7cd395} },
+/**/ {{0x3fe9dc52, 0x24a8b955} },
+/**/ {{0x3ff3cc66, 0x4f8fff15} },
+/**/ {{0xbbf67c97, 0x82045611} },},
+/**/ {{{0x3fe5e000, 0x000dcc40} },
+/**/ {{0x3fea1163, 0x4df5b93e} },
+/**/ {{0x3ff3a418, 0x75853228} },
+/**/ {{0xbbf585da, 0xd481f350} },},
+/**/ {{{0x3fe60000, 0x02efd2fc} },
+/**/ {{0x3fea46cb, 0x30d16323} },
+/**/ {{0x3ff37c2d, 0x187962ae} },
+/**/ {{0x3bf004c3, 0xa5f77bb0} },},
+/**/ {{{0x3fe61fff, 0xfeb8088a} },
+/**/ {{0x3fea7c8b, 0x053920c0} },
+/**/ {{0x3ff354a2, 0x891769a9} },
+/**/ {{0x3bbc6b30, 0x3fee3029} },},
+/**/ {{{0x3fe64000, 0x00f3ca06} },
+/**/ {{0x3feab2a4, 0x28a1911a} },
+/**/ {{0x3ff32d77, 0x0a6f0a4a} },
+/**/ {{0x3bf2a6f8, 0xfac5081a} },},
+/**/ {{{0x3fe65fff, 0xfe9ec2f4} },
+/**/ {{0x3feae917, 0xd4ce7239} },
+/**/ {{0x3ff306a9, 0x0751a948} },
+/**/ {{0xbbe950b5, 0x51ab9dbd} },},
+/**/ {{{0x3fe68000, 0x03d43966} },
+/**/ {{0x3feb1fe7, 0x708b998a} },
+/**/ {{0x3ff2e036, 0xd7a153c7} },
+/**/ {{0x3bdd36e2, 0xa1e4a14e} },},
+/**/ {{{0x3fe69fff, 0xfab67783} },
+/**/ {{0x3feb5714, 0x2e575464} },
+/**/ {{0x3ff2ba1f, 0x05006cb6} },
+/**/ {{0x3bea9a4a, 0x473c2e31} },},
+/**/ {{{0x3fe6bfff, 0xfcb65f89} },
+/**/ {{0x3feb8e9f, 0x981efd2f} },
+/**/ {{0x3ff2945f, 0xe948d9f7} },
+/**/ {{0xbbca5294, 0xe802df72} },},
+/**/ {{{0x3fe6dfff, 0xfc5609a9} },
+/**/ {{0x3febc68a, 0xfaed6ff1} },
+/**/ {{0x3ff26ef8, 0x1533411e} },
+/**/ {{0xbbf89153, 0xf51bc566} },},
+/**/ {{{0x3fe6ffff, 0xfc4eef86} },
+/**/ {{0x3febfed7, 0xc62205fe} },
+/**/ {{0x3ff249e6, 0x0e70978c} },
+/**/ {{0x3bc39021, 0xa2b9ff56} },},
+/**/ {{{0x3fe72000, 0x004d98b3} },
+/**/ {{0x3fec3787, 0x716968ad} },
+/**/ {{0x3ff22528, 0x61be7751} },
+/**/ {{0x3befc9c5, 0x74ee2211} },},
+/**/ {{{0x3fe73fff, 0xfc155075} },
+/**/ {{0x3fec709b, 0x5ec6fd4e} },
+/**/ {{0x3ff200bd, 0xb5d53311} },
+/**/ {{0x3be28a4d, 0xa269ae63} },},
+/**/ {{{0x3fe76000, 0x0498c203} },
+/**/ {{0x3fecaa15, 0x323d08c1} },
+/**/ {{0x3ff1dca4, 0x93433f65} },
+/**/ {{0x3bf8cae4, 0x14a28fb7} },},
+/**/ {{{0x3fe77fff, 0xff1e5636} },
+/**/ {{0x3fece3f6, 0x4147c12c} },
+/**/ {{0x3ff1b8db, 0xbfe294a8} },
+/**/ {{0xbbe7e19c, 0x4b56a744} },},
+/**/ {{{0x3fe7a000, 0x0226d45a} },
+/**/ {{0x3fed1e40, 0x4120eb7f} },
+/**/ {{0x3ff19561, 0xd15f8278} },
+/**/ {{0x3be64b28, 0x032c5d4c} },},
+/**/ {{{0x3fe7c000, 0x0250a5aa} },
+/**/ {{0x3fed58f4, 0xb112a1e1} },
+/**/ {{0x3ff17235, 0x8a59d565} },
+/**/ {{0xbbe716de, 0xb8dc7867} },},
+/**/ {{{0x3fe7e000, 0x0482f82e} },
+/**/ {{0x3fed9415, 0x3576bdf0} },
+/**/ {{0x3ff14f55, 0xa22a1c5b} },
+/**/ {{0x3bf207e1, 0xe1305604} },},
+/**/ {{{0x3fe80000, 0x0205003e} },
+/**/ {{0x3fedcfa3, 0x64d69ff7} },
+/**/ {{0x3ff12cc0, 0xe37eb26f} },
+/**/ {{0xbbd52ec6, 0xe32395f8} },},
+/**/ {{{0x3fe81fff, 0xfbf99411} },
+/**/ {{0x3fee0ba0, 0xebf98f51} },
+/**/ {{0x3ff10a76, 0x16ddd5d6} },
+/**/ {{0xbbece0d6, 0x59866045} },},
+/**/ {{{0x3fe84000, 0x0248e3a3} },
+/**/ {{0x3fee480f, 0x9bb7f565} },
+/**/ {{0x3ff0e873, 0xfb84e05c} },
+/**/ {{0x3bf4e5e8, 0x1595df92} },},
+/**/ {{{0x3fe86000, 0x0145c157} },
+/**/ {{0x3fee84f1, 0x0a10b3ab} },
+/**/ {{0x3ff0c6b9, 0x7cbd7b1e} },
+/**/ {{0xbbe19de6, 0xd5f121d0} },},
+/**/ {{{0x3fe88000, 0x022631b9} },
+/**/ {{0x3feec247, 0x0be1f047} },
+/**/ {{0x3ff0a545, 0x6d0b3ee6} },
+/**/ {{0xbbc272b1, 0xa3ba2c6f} },},
+/**/ {{{0x3fe8a000, 0x045f7828} },
+/**/ {{0x3fef0013, 0x6c45ba1c} },
+/**/ {{0x3ff08416, 0xaf2a0f09} },
+/**/ {{0x3be82b56, 0x5b63c799} },},
+/**/ {{{0x3fe8bfff, 0xffc686cf} },
+/**/ {{0x3fef3e57, 0xf03c824b} },
+/**/ {{0x3ff0632c, 0x33502220} },
+/**/ {{0xbbd039ad, 0x2dbeeb25} },},
+/**/ {{{0x3fe8dfff, 0xfd8644c6} },
+/**/ {{0x3fef7d16, 0x8774261d} },
+/**/ {{0x3ff04284, 0xdd5b3019} },
+/**/ {{0x3bd79f33, 0xe1eba933} },},
+/**/ {{{0x3fe8ffff, 0xfe4e7937} },
+/**/ {{0x3fefbc51, 0x1a99a641} },
+/**/ {{0x3ff0221f, 0x9f69840b} },
+/**/ {{0xbbea9e84, 0x7beee018} },},
+/**/ {{{0x3fe92000, 0x0435251f} },
+/**/ {{0x3feffc09, 0x9eb22390} },
+/**/ {{0x3ff001fb, 0x6f7c51e8} },
+/**/ {{0xbb5a12e7, 0x31032e0a} },},
+ };
+
+#else
+#ifdef LITTLE_ENDI
+static const number
+ xfg[186][4] = { /* xi,Fi,Gi,FFi, i=16..201 */
+/**/ {{{0x1e519d60, 0x3fb00000} },
+/**/ {{0x96c4e240, 0x3fb00557} },
+/**/ {{0x628127b7, 0x402ff554} },
+/**/ {{0x9e355b06, 0xbb9a1dee} },},
+/**/ {{{0x1b1a7010, 0x3fb10000} },
+/**/ {{0xaab892b7, 0x3fb10668} },
+/**/ {{0xbe3fdf74, 0x402e12c7} },
+/**/ {{0x037da741, 0x3ba89234} },},
+/**/ {{{0x2505e350, 0x3fb20000} },
+/**/ {{0xff547824, 0x3fb2079b} },
+/**/ {{0xde853633, 0x402c65c5} },
+/**/ {{0xe9614250, 0x3bb7486e} },},
+/**/ {{{0xfcdc4252, 0x3fb2ffff} },
+/**/ {{0x5eb16c68, 0x3fb308f3} },
+/**/ {{0xe56be74f, 0x402ae5da} },
+/**/ {{0x91a23034, 0xbb82c726} },},
+/**/ {{{0xe3ff849f, 0x3fb3ffff} },
+/**/ {{0x154999cc, 0x3fb40a71} },
+/**/ {{0x046b7352, 0x40298c43} },
+/**/ {{0x3843738f, 0x3b9aceaf} },},
+/**/ {{{0xedc9590f, 0x3fb4ffff} },
+/**/ {{0x429bdd80, 0x3fb50c17} },
+/**/ {{0x91b5d674, 0x40285384} },
+/**/ {{0xb4403d22, 0xbbc1d02d} },},
+/**/ {{{0x00ee83f7, 0x3fb60000} },
+/**/ {{0xda80cc21, 0x3fb60de7} },
+/**/ {{0xef21a2a7, 0x40273724} },
+/**/ {{0x72523ffd, 0xbb95e53c} },},
+/**/ {{{0xeb05ea41, 0x3fb6ffff} },
+/**/ {{0xb8c51bea, 0x3fb70fe4} },
+/**/ {{0xfae562ff, 0x40263370} },
+/**/ {{0x8ffe0626, 0xbb99ad0e} },},
+/**/ {{{0xdc0515f7, 0x3fb7ffff} },
+/**/ {{0x1db54498, 0x3fb81210} },
+/**/ {{0x0e7eab5c, 0x40254553} },
+/**/ {{0xd62ed686, 0xbb914c87} },},
+/**/ {{{0xe384d7ab, 0x3fb8ffff} },
+/**/ {{0x2a8d3727, 0x3fb9146c} },
+/**/ {{0xfd57f3fd, 0x40246a33} },
+/**/ {{0x5381e06d, 0xbbbbda8d} },},
+/**/ {{{0xe4832347, 0x3fb9ffff} },
+/**/ {{0xd50e1050, 0x3fba16fa} },
+/**/ {{0xc5537a96, 0x40239fe2} },
+/**/ {{0xc111eabb, 0x3bc7f695} },},
+/**/ {{{0x274540e3, 0x3fbb0000} },
+/**/ {{0x7ae68517, 0x3fbb19be} },
+/**/ {{0x3637e946, 0x4022e481} },
+/**/ {{0x8dbd9d93, 0x3bc307f8} },},
+/**/ {{{0xfebf2e9b, 0x3fbbffff} },
+/**/ {{0x8369cd19, 0x3fbc1cb8} },
+/**/ {{0x17aef223, 0x40223676} },
+/**/ {{0x424a9cf3, 0x3bc50038} },},
+/**/ {{{0x23529045, 0x3fbd0000} },
+/**/ {{0xc11d7ef7, 0x3fbd1feb} },
+/**/ {{0xb8e43d4e, 0x4021945f} },
+/**/ {{0x52a6f224, 0x3b812007} },},
+/**/ {{{0xd872a829, 0x3fbdffff} },
+/**/ {{0x8ee4d6b7, 0x3fbe2359} },
+/**/ {{0x76195d5f, 0x4020fd0c} },
+/**/ {{0x85fdca85, 0xbbb4d9ab} },},
+/**/ {{{0xff323b84, 0x3fbeffff} },
+/**/ {{0xec9073e5, 0x3fbf2704} },
+/**/ {{0x3020200f, 0x40206f71} },
+/**/ {{0x12836992, 0x3bb77aa2} },},
+/**/ {{{0x0ce79195, 0x3fc00000} },
+/**/ {{0xbc30cc61, 0x3fc01577} },
+/**/ {{0xd6564a88, 0x401fd549} },
+/**/ {{0x965c0ad0, 0xbbc8926f} },},
+/**/ {{{0xee40e918, 0x3fc07fff} },
+/**/ {{0x8279ac01, 0x3fc0978d} },
+/**/ {{0x9294bc03, 0x401edbb5} },
+/**/ {{0x4aae45d6, 0xbb80a533} },},
+/**/ {{{0x0cc091fd, 0x3fc10000} },
+/**/ {{0x44dfb2f7, 0x3fc119c5} },
+/**/ {{0x067d8e18, 0x401df0bb} },
+/**/ {{0x4ff642a4, 0xbbcc2c18} },},
+/**/ {{{0x0d9936a1, 0x3fc18000} },
+/**/ {{0xb9085a4b, 0x3fc19c1f} },
+/**/ {{0x71ce3629, 0x401d131a} },
+/**/ {{0x0669355b, 0xbbc36553} },},
+/**/ {{{0xed5f3188, 0x3fc1ffff} },
+/**/ {{0xee74bf2d, 0x3fc21e9d} },
+/**/ {{0xff0cd655, 0x401c41b6} },
+/**/ {{0x478ecfc5, 0x3b8867f5} },},
+/**/ {{{0x05f06a51, 0x3fc28000} },
+/**/ {{0x550b313f, 0x3fc2a141} },
+/**/ {{0x1702e6d2, 0x401b7b92} },
+/**/ {{0x380131fe, 0xbbadab51} },},
+/**/ {{{0xfe3d339e, 0x3fc2ffff} },
+/**/ {{0xa75f76df, 0x3fc3240a} },
+/**/ {{0xfcb6409d, 0x401abfc8} },
+/**/ {{0x0d291d83, 0x3bc60bcf} },},
+/**/ {{{0xed888d6f, 0x3fc37fff} },
+/**/ {{0x13cc5db7, 0x3fc3a6fb} },
+/**/ {{0x8ed5320d, 0x401a0d8f} },
+/**/ {{0x4eef03ab, 0x3bb8a48e} },},
+/**/ {{{0x02ca050d, 0x3fc40000} },
+/**/ {{0xe25776bb, 0x3fc42a13} },
+/**/ {{0xfa84c2bc, 0x4019642d} },
+/**/ {{0xcc56516f, 0xbbd0bd5d} },},
+/**/ {{{0xf2531f5c, 0x3fc47fff} },
+/**/ {{0xdeb73404, 0x3fc4ad55} },
+/**/ {{0xf86e9035, 0x4018c2fe} },
+/**/ {{0x5aa287c8, 0x3b9cffe7} },},
+/**/ {{{0x13774992, 0x3fc50000} },
+/**/ {{0x7d0ee307, 0x3fc530c2} },
+/**/ {{0x370caf35, 0x4018296c} },
+/**/ {{0xf91d6532, 0xbbcf75d1} },},
+/**/ {{{0xedddcb2d, 0x3fc57fff} },
+/**/ {{0x5db4347d, 0x3fc5b45a} },
+/**/ {{0x52190c0e, 0x401796ee} },
+/**/ {{0x17d5d076, 0x3b88a25f} },},
+/**/ {{{0xf41949a0, 0x3fc5ffff} },
+/**/ {{0x13bf986a, 0x3fc6381f} },
+/**/ {{0x2d2255fd, 0x40170b09} },
+/**/ {{0xb1bcd5e7, 0xbb9bfb23} },},
+/**/ {{{0xf834d3a1, 0x3fc67fff} },
+/**/ {{0x8ec85952, 0x3fc6bc11} },
+/**/ {{0x62cf2268, 0x4016854c} },
+/**/ {{0x82e39e04, 0x3b9ee53b} },},
+/**/ {{{0xfd9106ea, 0x3fc6ffff} },
+/**/ {{0xf298f6f7, 0x3fc74032} },
+/**/ {{0x1f4f84a9, 0x40160551} },
+/**/ {{0x112634b8, 0xbbb59c4a} },},
+/**/ {{{0x0f649a4f, 0x3fc78000} },
+/**/ {{0x6ca53abc, 0x3fc7c484} },
+/**/ {{0x4809d175, 0x40158ab9} },
+/**/ {{0x73d3cd2e, 0x3bc91c75} },},
+/**/ {{{0xef06bbd8, 0x3fc7ffff} },
+/**/ {{0xdf7d76ad, 0x3fc84906} },
+/**/ {{0xdd2b30a6, 0x4015152e} },
+/**/ {{0x084c3eef, 0xbbbfa2da} },},
+/**/ {{{0x021c6334, 0x3fc88000} },
+/**/ {{0xd965f986, 0x3fc8cdbb} },
+/**/ {{0x51b74296, 0x4014a462} },
+/**/ {{0x74dcfe0b, 0xbb9ec02e} },},
+/**/ {{{0xf38d0756, 0x3fc8ffff} },
+/**/ {{0x28e173c7, 0x3fc952a4} },
+/**/ {{0x17b59ebd, 0x4014380b} },
+/**/ {{0xb77589f0, 0xbbcd0f1c} },},
+/**/ {{{0x104efca1, 0x3fc98000} },
+/**/ {{0x4644d23c, 0x3fc9d7c1} },
+/**/ {{0xcb1eabd5, 0x4013cfe5} },
+/**/ {{0xea188d9e, 0xbbd5d6f7} },},
+/**/ {{{0x09417b30, 0x3fca0000} },
+/**/ {{0x096d76aa, 0x3fca5d14} },
+/**/ {{0xb3723db0, 0x40136bb4} },
+/**/ {{0xfbf3979c, 0x3bbe3e0d} },},
+/**/ {{{0xeb1c23ec, 0x3fca7fff} },
+/**/ {{0xab60288d, 0x3fcae29d} },
+/**/ {{0x783071d7, 0x40130b3e} },
+/**/ {{0x3d5384bf, 0xbbc7dd82} },},
+/**/ {{{0xfb171c13, 0x3fcaffff} },
+/**/ {{0xa221a96b, 0x3fcb685f} },
+/**/ {{0xd8c0747d, 0x4012ae4d} },
+/**/ {{0xd5554972, 0x3bd4644b} },},
+/**/ {{{0x0aba44be, 0x3fcb8000} },
+/**/ {{0xecdf241f, 0x3fcbee5a} },
+/**/ {{0xc6fad63b, 0x401254b1} },
+/**/ {{0xd092b85a, 0x3ba41916} },},
+/**/ {{{0x113d2a3e, 0x3fcc0000} },
+/**/ {{0xb3e92543, 0x3fcc7490} },
+/**/ {{0x9a62c035, 0x4011fe3c} },
+/**/ {{0x41a03739, 0xbba3cc39} },},
+/**/ {{{0xf49e00ce, 0x3fcc7fff} },
+/**/ {{0x0f59eab0, 0x3fccfb02} },
+/**/ {{0xe956a631, 0x4011aac3} },
+/**/ {{0xbfa8cb5b, 0xbbb7a383} },},
+/**/ {{{0x05f611ab, 0x3fcd0000} },
+/**/ {{0x89e6844e, 0x3fcd81b0} },
+/**/ {{0xf391268d, 0x40115a1f} },
+/**/ {{0xb2dc91f3, 0x3bd39b5c} },},
+/**/ {{{0x14764ceb, 0x3fcd8000} },
+/**/ {{0x27debf0d, 0x3fce089d} },
+/**/ {{0xfbc84740, 0x40110c2b} },
+/**/ {{0x84712510, 0x3bc14d4d} },},
+/**/ {{{0x14bcea76, 0x3fce0000} },
+/**/ {{0x16dbc820, 0x3fce8fc9} },
+/**/ {{0xa00ca48e, 0x4010c0c5} },
+/**/ {{0x640f1b9e, 0xbbd33788} },},
+/**/ {{{0xfd7995bd, 0x3fce7fff} },
+/**/ {{0x88b50424, 0x3fcf1735} },
+/**/ {{0xbe02169a, 0x401077cc} },
+/**/ {{0x221fdf77, 0xbbb61fee} },},
+/**/ {{{0x0cc35436, 0x3fcf0000} },
+/**/ {{0xfd21a40b, 0x3fcf9ee3} },
+/**/ {{0x1ee7ffe8, 0x40103123} },
+/**/ {{0xc79ff5c1, 0x3bd427e3} },},
+/**/ {{{0x01d1da33, 0x3fcf8000} },
+/**/ {{0xb7dbe15c, 0x3fd0136a} },
+/**/ {{0x77d559e5, 0x400fd959} },
+/**/ {{0xd67948d7, 0x3bb0c6a1} },},
+/**/ {{{0x060c13b2, 0x3fd00000} },
+/**/ {{0xaaad4f18, 0x3fd05785} },
+/**/ {{0x2675d182, 0x400f549e} },
+/**/ {{0x18f0dd10, 0xbbc15208} },},
+/**/ {{{0x03885492, 0x3fd04000} },
+/**/ {{0x660542d7, 0x3fd09bc3} },
+/**/ {{0xdf3f5fec, 0x400ed3e2} },
+/**/ {{0xb883ae62, 0xbbd95657} },},
+/**/ {{{0x052f5a13, 0x3fd08000} },
+/**/ {{0x9a195045, 0x3fd0e024} },
+/**/ {{0xfa68f2c8, 0x400e56f8} },
+/**/ {{0x5a543e8e, 0x3bded7ba} },},
+/**/ {{{0x02ba1af5, 0x3fd0c000} },
+/**/ {{0xe2e7f24b, 0x3fd124a9} },
+/**/ {{0xbffe633f, 0x400dddb4} },
+/**/ {{0x0c60278f, 0xbbdcba86} },},
+/**/ {{{0xf76642c1, 0x3fd0ffff} },
+/**/ {{0xe162ffe6, 0x3fd16953} },
+/**/ {{0x0311d5d5, 0x400d67ed} },
+/**/ {{0xe40c5f9e, 0x3b7b1f4a} },},
+/**/ {{{0x033602f0, 0x3fd14000} },
+/**/ {{0x5f49508e, 0x3fd1ae23} },
+/**/ {{0xb8708266, 0x400cf57a} },
+/**/ {{0x8620f301, 0xbbd6a6c2} },},
+/**/ {{{0xfefd1a13, 0x3fd17fff} },
+/**/ {{0xdb2a9ba1, 0x3fd1f318} },
+/**/ {{0x8d11009e, 0x400c8639} },
+/**/ {{0x69b21d3b, 0x3bd3a9c6} },},
+/**/ {{{0xf718365d, 0x3fd1bfff} },
+/**/ {{0x0c41e3ac, 0x3fd23835} },
+/**/ {{0xe02be47c, 0x400c1a06} },
+/**/ {{0x129e8cd1, 0x3bdb961a} },},
+/**/ {{{0xff001e00, 0x3fd1ffff} },
+/**/ {{0xb2f6395e, 0x3fd27d78} },
+/**/ {{0xf2fe9a85, 0x400bb0c1} },
+/**/ {{0xe68fd7d8, 0x3be074a9} },},
+/**/ {{{0xfe425a6a, 0x3fd23fff} },
+/**/ {{0x618faabe, 0x3fd2c2e4} },
+/**/ {{0x190b18df, 0x400b4a4c} },
+/**/ {{0xf615aad1, 0xbbdf0d1f} },},
+/**/ {{{0x059ec1db, 0x3fd28000} },
+/**/ {{0xd8583884, 0x3fd30878} },
+/**/ {{0x0cd82bc2, 0x400ae688} },
+/**/ {{0x141c1f8d, 0xbbd563c3} },},
+/**/ {{{0x000dd081, 0x3fd2c000} },
+/**/ {{0xaffdb6d8, 0x3fd34e36} },
+/**/ {{0x5270fc15, 0x400a855a} },
+/**/ {{0x9f2cdafd, 0xbbc6d88d} },},
+/**/ {{{0xfc1dcd2b, 0x3fd2ffff} },
+/**/ {{0xa95875bc, 0x3fd3941e} },
+/**/ {{0xaa9502b6, 0x400a26a8} },
+/**/ {{0x8389b15c, 0xbbe13cad} },},
+/**/ {{{0xf6c0d4a0, 0x3fd33fff} },
+/**/ {{0x739845f5, 0x3fd3da31} },
+/**/ {{0x4d2573a0, 0x4009ca5a} },
+/**/ {{0xacaee379, 0xbbc71636} },},
+/**/ {{{0x06b16793, 0x3fd38000} },
+/**/ {{0xdbc088f0, 0x3fd4206f} },
+/**/ {{0x9344e33a, 0x40097057} },
+/**/ {{0x1d7a4f81, 0xbbc2c052} },},
+/**/ {{{0x07358fa3, 0x3fd3c000} },
+/**/ {{0x6f23311d, 0x3fd466da} },
+/**/ {{0x5aa612ea, 0x4009188a} },
+/**/ {{0x685e8edc, 0x3b8653a5} },},
+/**/ {{{0xfc3b18cf, 0x3fd3ffff} },
+/**/ {{0xe9282e6b, 0x3fd4ad71} },
+/**/ {{0x641e643d, 0x4008c2dd} },
+/**/ {{0x3f567c64, 0x3b95f0ef} },},
+/**/ {{{0x000dd2a8, 0x3fd44000} },
+/**/ {{0x1fa3f2d1, 0x3fd4f437} },
+/**/ {{0x6072f821, 0x40086f3c} },
+/**/ {{0x95ff68b5, 0x3bb68efa} },},
+/**/ {{{0xfbb43713, 0x3fd47fff} },
+/**/ {{0xb3ac333c, 0x3fd53b2a} },
+/**/ {{0x3da56692, 0x40081d94} },
+/**/ {{0x2985fd3f, 0xbbbf4d7f} },},
+/**/ {{{0xfb113bf4, 0x3fd4bfff} },
+/**/ {{0x6e8ed9c2, 0x3fd5824d} },
+/**/ {{0xa8add00f, 0x4007cdd2} },
+/**/ {{0x1c9b3657, 0x3bcf478a} },},
+/**/ {{{0xf7f087c9, 0x3fd4ffff} },
+/**/ {{0x07446496, 0x3fd5c9a0} },
+/**/ {{0x444588eb, 0x40077fe6} },
+/**/ {{0xa4eabb0c, 0xbbc177dc} },},
+/**/ {{{0x088b3814, 0x3fd54000} },
+/**/ {{0x564125f9, 0x3fd61123} },
+/**/ {{0x6281a765, 0x400733be} },
+/**/ {{0xf57051c4, 0xbbc2c52c} },},
+/**/ {{{0xf7d55966, 0x3fd57fff} },
+/**/ {{0xe194a5d5, 0x3fd658d7} },
+/**/ {{0x73b47d1f, 0x4006e94b} },
+/**/ {{0xf9996dc6, 0x3bda2fcf} },},
+/**/ {{{0x08bf2490, 0x3fd5c000} },
+/**/ {{0xb775b28d, 0x3fd6a0be} },
+/**/ {{0x15b6ec28, 0x4006a07e} },
+/**/ {{0xaa5285b8, 0xbbe0ca90} },},
+/**/ {{{0x09fa853f, 0x3fd60000} },
+/**/ {{0x65a66cfd, 0x3fd6e8d8} },
+/**/ {{0x1c701269, 0x40065948} },
+/**/ {{0x8591e13a, 0x3bd9ea95} },},
+/**/ {{{0x07595fca, 0x3fd64000} },
+/**/ {{0xc0556a7c, 0x3fd73125} },
+/**/ {{0xbaae9d02, 0x4006139b} },
+/**/ {{0x40152b83, 0x3bd88aff} },},
+/**/ {{{0x031687da, 0x3fd68000} },
+/**/ {{0x92e2cfd0, 0x3fd779a7} },
+/**/ {{0xcae0882b, 0x4005cf6b} },
+/**/ {{0x9f439451, 0xbbd8a4a2} },},
+/**/ {{{0xf5c8cfe2, 0x3fd6bfff} },
+/**/ {{0x9fb452ed, 0x3fd7c25e} },
+/**/ {{0xc561f1cd, 0x40058cab} },
+/**/ {{0xf6a37d74, 0xbbe371a6} },},
+/**/ {{{0xf81df231, 0x3fd6ffff} },
+/**/ {{0xcfb4dab5, 0x3fd80b4b} },
+/**/ {{0x8d3ca5d3, 0x40054b4f} },
+/**/ {{0x679dc99f, 0x3bcb4686} },},
+/**/ {{{0xfa71385e, 0x3fd73fff} },
+/**/ {{0xe007a9b6, 0x3fd8546f} },
+/**/ {{0xb3b22176, 0x40050b4b} },
+/**/ {{0xa5c73477, 0xbbcd1540} },},
+/**/ {{{0x024a9c2b, 0x3fd78000} },
+/**/ {{0xa7fcf5cf, 0x3fd89dcb} },
+/**/ {{0x3159cbe1, 0x4004cc95} },
+/**/ {{0xd58a6ad0, 0xbbdc25ea} },},
+/**/ {{{0x02eb62b8, 0x3fd7c000} },
+/**/ {{0xec0ba5cf, 0x3fd8e75f} },
+/**/ {{0x8731eeea, 0x40048f21} },
+/**/ {{0xcc1adafb, 0xbbc1cb73} },},
+/**/ {{{0x054a52d1, 0x3fd80000} },
+/**/ {{0x8bb822e9, 0x3fd9312d} },
+/**/ {{0x9170a729, 0x400452e6} },
+/**/ {{0xeac002ee, 0xbbd8bb17} },},
+/**/ {{{0xf93a00a3, 0x3fd83fff} },
+/**/ {{0x4bb9ad2a, 0x3fd97b35} },
+/**/ {{0xae924e7f, 0x400417da} },
+/**/ {{0x9a378cc7, 0x3bd4b800} },},
+/**/ {{{0xfbdc91c1, 0x3fd87fff} },
+/**/ {{0x2771b601, 0x3fd9c578} },
+/**/ {{0x78855799, 0x4003ddf4} },
+/**/ {{0xa00445d9, 0x3bd9077d} },},
+/**/ {{{0xf6d215e6, 0x3fd8bfff} },
+/**/ {{0xe0ea4a0b, 0x3fda0ff6} },
+/**/ {{0x189a0989, 0x4003a52b} },
+/**/ {{0x89c0613d, 0xbbda6831} },},
+/**/ {{{0x02f734ef, 0x3fd90000} },
+/**/ {{0x736bf579, 0x3fda5ab2} },
+/**/ {{0xe9244ca6, 0x40036d75} },
+/**/ {{0x4b722377, 0x3be3a6d8} },},
+/**/ {{{0x04eef8b4, 0x3fd94000} },
+/**/ {{0x9fb6e3d0, 0x3fdaa5ab} },
+/**/ {{0xc9089cb7, 0x400336cc} },
+/**/ {{0x22cc00bb, 0x3b9f6963} },},
+/**/ {{{0x041ec76a, 0x3fd98000} },
+/**/ {{0x5176c7e4, 0x3fdaf0e3} },
+/**/ {{0xcb0b9506, 0x40030127} },
+/**/ {{0x5385a849, 0x3bb1ffdb} },},
+/**/ {{{0x08044e47, 0x3fd9c000} },
+/**/ {{0x77071224, 0x3fdb3c5a} },
+/**/ {{0x50d75ec7, 0x4002cc7f} },
+/**/ {{0x78effc8a, 0xbbb0fade} },},
+/**/ {{{0x01f8235b, 0x3fda0000} },
+/**/ {{0xe725782e, 0x3fdb8811} },
+/**/ {{0x18fbfb37, 0x400298cc} },
+/**/ {{0x3b50e71b, 0xbbe55ed3} },},
+/**/ {{{0xfb8c6f08, 0x3fda3fff} },
+/**/ {{0x97b086f3, 0x3fdbd40a} },
+/**/ {{0x154de04b, 0x40026607} },
+/**/ {{0x455faae3, 0xbbdec65e} },},
+/**/ {{{0xfb3d63e1, 0x3fda7fff} },
+/**/ {{0x7d9a3b8a, 0x3fdc2045} },
+/**/ {{0x7e60bfbb, 0x40023429} },
+/**/ {{0x154ebd33, 0x3be3001c} },},
+/**/ {{{0xf5f45c48, 0x3fdabfff} },
+/**/ {{0x7b8d45e6, 0x3fdc6cc3} },
+/**/ {{0xdb1ace69, 0x4002032c} },
+/**/ {{0x3ed33616, 0xbbe5ebf8} },},
+/**/ {{{0x0508b34c, 0x3fdb0000} },
+/**/ {{0xa27e8d37, 0x3fdcb985} },
+/**/ {{0xd4459a2b, 0x4001d30a} },
+/**/ {{0xae61e2d1, 0xbbd01432} },},
+/**/ {{{0x0a84710c, 0x3fdb4000} },
+/**/ {{0xc3e50155, 0x3fdd068c} },
+/**/ {{0x775034dd, 0x4001a3bd} },
+/**/ {{0x58e0e228, 0xbbe80b1e} },},
+/**/ {{{0xf692e9d8, 0x3fdb7fff} },
+/**/ {{0xc49d6627, 0x3fdd53d9} },
+/**/ {{0xfe18066a, 0x4001753e} },
+/**/ {{0xf760d33e, 0xbbb004c8} },},
+/**/ {{{0x0280f14d, 0x3fdbc000} },
+/**/ {{0xe4e81013, 0x3fdda16d} },
+/**/ {{0xa38ea052, 0x40014789} },
+/**/ {{0x27c9c4ea, 0x3be848bc} },},
+/**/ {{{0x001121d1, 0x3fdc0000} },
+/**/ {{0xeac018f0, 0x3fddef49} },
+/**/ {{0x20b8be0c, 0x40011a98} },
+/**/ {{0xd0d6010e, 0xbbe1527e} },},
+/**/ {{{0xfef662aa, 0x3fdc3fff} },
+/**/ {{0xea0c7070, 0x3fde3d6e} },
+/**/ {{0x32f46ccd, 0x4000ee65} },
+/**/ {{0x189a000d, 0x3be8d241} },},
+/**/ {{{0x09845818, 0x3fdc8000} },
+/**/ {{0xf36a8b1b, 0x3fde8bdd} },
+/**/ {{0xcac73476, 0x4000c2eb} },
+/**/ {{0x12bed284, 0x3bd221f7} },},
+/**/ {{{0xfb0493bf, 0x3fdcbfff} },
+/**/ {{0xe0c60d10, 0x3fdeda97} },
+/**/ {{0x251c7836, 0x40009827} },
+/**/ {{0x6eec41b7, 0xbbe0bd54} },},
+/**/ {{{0xfd52961f, 0x3fdcffff} },
+/**/ {{0xefb3e44b, 0x3fdf299d} },
+/**/ {{0x74e459f5, 0x40006e12} },
+/**/ {{0xe969c82f, 0xbbd93f77} },},
+/**/ {{{0xfe2319a4, 0x3fdd3fff} },
+/**/ {{0x17139490, 0x3fdf78f1} },
+/**/ {{0x3e737e94, 0x400044a9} },
+/**/ {{0x49594b7a, 0xbb91e7cc} },},
+/**/ {{{0xfa4de596, 0x3fdd7fff} },
+/**/ {{0x638f49e8, 0x3fdfc892} },
+/**/ {{0x231057a5, 0x40001be7} },
+/**/ {{0xf5af9f5f, 0x3bd482b0} },},
+/**/ {{{0xfe729a69, 0x3fddbfff} },
+/**/ {{0x7c6ab019, 0x3fe00c41} },
+/**/ {{0xbf612660, 0x3fffe78f} },
+/**/ {{0x00da681e, 0x3bea5cda} },},
+/**/ {{{0x09d66802, 0x3fde0000} },
+/**/ {{0xf6b883cf, 0x3fe03461} },
+/**/ {{0xbc05a87c, 0x3fff988e} },
+/**/ {{0xf2372669, 0xbbe06c33} },},
+/**/ {{{0xfb211657, 0x3fde3fff} },
+/**/ {{0x191db8e8, 0x3fe05cab} },
+/**/ {{0x7bcfe6be, 0x3fff4ac3} },
+/**/ {{0x5ed8d35b, 0xbbd5d51f} },},
+/**/ {{{0x0a3f068a, 0x3fde8000} },
+/**/ {{0x95fb54f0, 0x3fe0851d} },
+/**/ {{0x144ca408, 0x3ffefe26} },
+/**/ {{0xa2c169c5, 0xbbc7c894} },},
+/**/ {{{0x01adb060, 0x3fdec000} },
+/**/ {{0xdc7b54f9, 0x3fe0adb9} },
+/**/ {{0x5ebe52a7, 0x3ffeb2af} },
+/**/ {{0x312c5ffd, 0x3bd4e740} },},
+/**/ {{{0xff5c0d01, 0x3fdeffff} },
+/**/ {{0x92550a8d, 0x3fe0d680} },
+/**/ {{0x0d71fdf0, 0x3ffe6858} },
+/**/ {{0x96b35499, 0x3bddd8a6} },},
+/**/ {{{0xf93d5fcc, 0x3fdf3fff} },
+/**/ {{0x45cb4374, 0x3fe0ff72} },
+/**/ {{0x3cce5040, 0x3ffe1f19} },
+/**/ {{0x7c1efab4, 0xbbc9f0ec} },},
+/**/ {{{0xfa0dd18f, 0x3fdf7fff} },
+/**/ {{0x944dd508, 0x3fe1288f} },
+/**/ {{0x298b874d, 0x3ffdd6ec} },
+/**/ {{0x9642a0a6, 0x3bea6ebd} },},
+/**/ {{{0xfd3a9f1a, 0x3fdfbfff} },
+/**/ {{0x13750f3e, 0x3fe151d9} },
+/**/ {{0x5806a27e, 0x3ffd8fca} },
+/**/ {{0xfc65ac7a, 0x3bda2a03} },},
+/**/ {{{0xfc481400, 0x3fdfffff} },
+/**/ {{0x598944ca, 0x3fe17b4f} },
+/**/ {{0x82532170, 0x3ffd49ad} },
+/**/ {{0x3d236dc3, 0x3bc4412e} },},
+/**/ {{{0xff53786c, 0x3fe01fff} },
+/**/ {{0x07d83d47, 0x3fe1a4f3} },
+/**/ {{0x851bffeb, 0x3ffd048f} },
+/**/ {{0x29f81b14, 0x3bd1589d} },},
+/**/ {{{0xfee301b7, 0x3fe03fff} },
+/**/ {{0xb8a6a382, 0x3fe1cec4} },
+/**/ {{0x7c519db6, 0x3ffcc06a} },
+/**/ {{0x5b24d6b2, 0x3bd370e6} },},
+/**/ {{{0x006e36bf, 0x3fe06000} },
+/**/ {{0x114eb8be, 0x3fe1f8c5} },
+/**/ {{0xa34d6786, 0x3ffc7d38} },
+/**/ {{0x4b98c1d4, 0xbbea92de} },},
+/**/ {{{0xfd60aa43, 0x3fe07fff} },
+/**/ {{0xabeccecb, 0x3fe222f4} },
+/**/ {{0x77342ac4, 0x3ffc3af4} },
+/**/ {{0x03a5c2c2, 0xbbdd47f6} },},
+/**/ {{{0x037762e8, 0x3fe0a000} },
+/**/ {{0x3f99efe8, 0x3fe24d54} },
+/**/ {{0x75f54fab, 0x3ffbf998} },
+/**/ {{0x15771a46, 0x3bedf7f4} },},
+/**/ {{{0xff1c6921, 0x3fe0bfff} },
+/**/ {{0x598e35d0, 0x3fe277e4} },
+/**/ {{0x8addd186, 0x3ffbb91f} },
+/**/ {{0x5e0e5a73, 0x3be0f16c} },},
+/**/ {{{0xff07154b, 0x3fe0dfff} },
+/**/ {{0xb6bc3986, 0x3fe2a2a5} },
+/**/ {{0x8301646d, 0x3ffb7984} },
+/**/ {{0xbbaa5310, 0xbbf02dd0} },},
+/**/ {{{0x02fcdda4, 0x3fe10000} },
+/**/ {{0x02a59f1e, 0x3fe2cd99} },
+/**/ {{0x705219bf, 0x3ffb3ac2} },
+/**/ {{0x112fa616, 0xbbe59357} },},
+/**/ {{{0x01ce1140, 0x3fe12000} },
+/**/ {{0xdf0a67c2, 0x3fe2f8be} },
+/**/ {{0x9ab8ae2a, 0x3ffafcd4} },
+/**/ {{0x9303f346, 0x3be2c542} },},
+/**/ {{{0x04d0f355, 0x3fe14000} },
+/**/ {{0x08fcc7bf, 0x3fe32418} },
+/**/ {{0x497b9a36, 0x3ffabfb6} },
+/**/ {{0xb5a59234, 0x3bebc044} },},
+/**/ {{{0x00fb0c8a, 0x3fe16000} },
+/**/ {{0x2471618b, 0x3fe34fa5} },
+/**/ {{0x0d26d117, 0x3ffa8363} },
+/**/ {{0x3f7bb7c9, 0xbbdbfbb2} },},
+/**/ {{{0x026f10b3, 0x3fe18000} },
+/**/ {{0xf7579056, 0x3fe37b66} },
+/**/ {{0x6b4cf4b1, 0x3ffa47d6} },
+/**/ {{0xaf0b5de9, 0x3bf0f6b4} },},
+/**/ {{{0xfd0978f8, 0x3fe19fff} },
+/**/ {{0x290cc78c, 0x3fe3a75e} },
+/**/ {{0x36c21315, 0x3ffa0d0c} },
+/**/ {{0xa296b262, 0x3beb2129} },},
+/**/ {{{0xfd94840b, 0x3fe1bfff} },
+/**/ {{0x85b4e4a4, 0x3fe3d38b} },
+/**/ {{0x32f2ecef, 0x3ff9d300} },
+/**/ {{0xb9bb7d74, 0xbbdbab1a} },},
+/**/ {{{0xfbda1ea1, 0x3fe1dfff} },
+/**/ {{0xbf3cee2f, 0x3fe3ffef} },
+/**/ {{0x6770fed8, 0x3ff999ae} },
+/**/ {{0xb4ace9a4, 0x3bda0bdc} },},
+/**/ {{{0xfc989533, 0x3fe1ffff} },
+/**/ {{0x9c27900c, 0x3fe42c8b} },
+/**/ {{0xe0d9f1ac, 0x3ff96112} },
+/**/ {{0x2fa2d81a, 0xbbee19eb} },},
+/**/ {{{0x012b8d26, 0x3fe22000} },
+/**/ {{0xe11975ca, 0x3fe4595f} },
+/**/ {{0xcdaa4e80, 0x3ff92929} },
+/**/ {{0xacc82d4b, 0x3bf23382} },},
+/**/ {{{0x04f4d6af, 0x3fe24000} },
+/**/ {{0x4d224131, 0x3fe4866d} },
+/**/ {{0x815c34e8, 0x3ff8f1ef} },
+/**/ {{0x3b740a99, 0xbbd0c6ff} },},
+/**/ {{{0xfcc07bda, 0x3fe25fff} },
+/**/ {{0x98b7d010, 0x3fe4b3b4} },
+/**/ {{0x73e7ffa1, 0x3ff8bb60} },
+/**/ {{0x1ad7a9c2, 0x3bebc31b} },},
+/**/ {{{0x042d9639, 0x3fe28000} },
+/**/ {{0xb64540d1, 0x3fe4e136} },
+/**/ {{0xf4374938, 0x3ff88578} },
+/**/ {{0x1b85e901, 0x3be36de9} },},
+/**/ {{{0x03be29a0, 0x3fe2a000} },
+/**/ {{0x52bffd96, 0x3fe50ef4} },
+/**/ {{0xc0042c06, 0x3ff85035} },
+/**/ {{0x76f5efbd, 0x3be15d01} },},
+/**/ {{{0xfaa91f12, 0x3fe2bfff} },
+/**/ {{0x3e2f4e0d, 0x3fe53cee} },
+/**/ {{0x8542df07, 0x3ff81b93} },
+/**/ {{0x17662a2b, 0x3be555cd} },},
+/**/ {{{0xfe884891, 0x3fe2dfff} },
+/**/ {{0x6c1a2470, 0x3fe56b25} },
+/**/ {{0xe422ea70, 0x3ff7e78e} },
+/**/ {{0xbd030c11, 0x3bf03504} },},
+/**/ {{{0xfe87152b, 0x3fe2ffff} },
+/**/ {{0x9beaaaa1, 0x3fe5999a} },
+/**/ {{0xd18fe9b3, 0x3ff7b424} },
+/**/ {{0x773e0e64, 0xbb649a5f} },},
+/**/ {{{0xffc1a721, 0x3fe31fff} },
+/**/ {{0xafe0e564, 0x3fe5c84e} },
+/**/ {{0x338db8d4, 0x3ff78152} },
+/**/ {{0x5da8e935, 0x3beaf428} },},
+/**/ {{{0xff70a372, 0x3fe33fff} },
+/**/ {{0x82191d64, 0x3fe5f742} },
+/**/ {{0x1122bcae, 0x3ff74f14} },
+/**/ {{0xdee4bfaf, 0x3bdb1c4b} },},
+/**/ {{{0x0436e836, 0x3fe36000} },
+/**/ {{0xfde6ccff, 0x3fe62676} },
+/**/ {{0x7644252c, 0x3ff71d67} },
+/**/ {{0xe08c3afb, 0xbbec3d10} },},
+/**/ {{{0xfcbe9641, 0x3fe37fff} },
+/**/ {{0xee9ffdaf, 0x3fe655ec} },
+/**/ {{0xa6fc0515, 0x3ff6ec49} },
+/**/ {{0x2ed29567, 0x3bdda453} },},
+/**/ {{{0xffb6d6ca, 0x3fe39fff} },
+/**/ {{0x5e67a1e1, 0x3fe685a5} },
+/**/ {{0xbc2ae969, 0x3ff6bbb7} },
+/**/ {{0x2ef43882, 0x3becbf7b} },},
+/**/ {{{0x04934fec, 0x3fe3c000} },
+/**/ {{0x2cc07d75, 0x3fe6b5a1} },
+/**/ {{0x10b02ef8, 0x3ff68baf} },
+/**/ {{0xfeb7cabd, 0xbbe7c8fb} },},
+/**/ {{{0x03f5cf7f, 0x3fe3e000} },
+/**/ {{0x3e59def6, 0x3fe6e5e1} },
+/**/ {{0x0e61500f, 0x3ff65c2d} },
+/**/ {{0x035f7845, 0xbbe30ba4} },},
+/**/ {{{0x05280ad9, 0x3fe40000} },
+/**/ {{0x91ab4c3e, 0x3fe71666} },
+/**/ {{0x19f01c90, 0x3ff62d2f} },
+/**/ {{0xffe95f6a, 0xbbf1e9f5} },},
+/**/ {{{0x049efb65, 0x3fe42000} },
+/**/ {{0x18af3b9d, 0x3fe74732} },
+/**/ {{0xb86465e4, 0x3ff5feb2} },
+/**/ {{0x280d591e, 0x3bc4cad7} },},
+/**/ {{{0x0035ccb6, 0x3fe44000} },
+/**/ {{0xcb4ff1e5, 0x3fe77844} },
+/**/ {{0x7c455428, 0x3ff5d0b5} },
+/**/ {{0x7ba5617c, 0x3bed8c18} },},
+/**/ {{{0x03346717, 0x3fe46000} },
+/**/ {{0xba258778, 0x3fe7a99f} },
+/**/ {{0xf4392254, 0x3ff5a334} },
+/**/ {{0xfc84a570, 0xbbefd14a} },},
+/**/ {{{0x03002575, 0x3fe48000} },
+/**/ {{0xd836768f, 0x3fe7db43} },
+/**/ {{0xdcf97e0c, 0x3ff5762e} },
+/**/ {{0x5f5df49e, 0xbbdd7eba} },},
+/**/ {{{0x055bf381, 0x3fe4a000} },
+/**/ {{0x35edeefa, 0x3fe80d32} },
+/**/ {{0xea46e31f, 0x3ff549a0} },
+/**/ {{0x76823eac, 0xbbdba522} },},
+/**/ {{{0x04ce10e3, 0x3fe4c000} },
+/**/ {{0xd67dc1a8, 0x3fe83f6b} },
+/**/ {{0xed82bcc4, 0x3ff51d88} },
+/**/ {{0x077d29ea, 0xbbeae92d} },},
+/**/ {{{0x016c60e1, 0x3fe4e000} },
+/**/ {{0xca0aaf31, 0x3fe871f1} },
+/**/ {{0xbdacbf16, 0x3ff4f1e4} },
+/**/ {{0x46ee425e, 0x3be82958} },},
+/**/ {{{0xff966f0a, 0x3fe4ffff} },
+/**/ {{0x2bff2dae, 0x3fe8a4c5} },
+/**/ {{0x3917657e, 0x3ff4c6b2} },
+/**/ {{0x5c86c705, 0xbbf127c2} },},
+/**/ {{{0x0076e6eb, 0x3fe52000} },
+/**/ {{0x175651e8, 0x3fe8d7e7} },
+/**/ {{0x4f459b05, 0x3ff49bef} },
+/**/ {{0x4181bbfc, 0xbbb1e9d1} },},
+/**/ {{{0x03d12d3b, 0x3fe54000} },
+/**/ {{0xa976ed56, 0x3fe90b58} },
+/**/ {{0xfdf24af4, 0x3ff47199} },
+/**/ {{0xc30decaf, 0x3be38c17} },},
+/**/ {{{0xfce7fa8d, 0x3fe55fff} },
+/**/ {{0xf03a3a09, 0x3fe93f1a} },
+/**/ {{0x5f13234b, 0x3ff447b0} },
+/**/ {{0x70df7e20, 0x3bf1b8b2} },},
+/**/ {{{0x0331b46a, 0x3fe58000} },
+/**/ {{0x38e83134, 0x3fe9732f} },
+/**/ {{0x68d8b41b, 0x3ff41e30} },
+/**/ {{0xb90bc28b, 0xbbee24d8} },},
+/**/ {{{0xfc14848e, 0x3fe59fff} },
+/**/ {{0x8471b489, 0x3fe9a796} },
+/**/ {{0x5de3aa73, 0x3ff3f518} },
+/**/ {{0xe0761536, 0xbbecacd9} },},
+/**/ {{{0xfb7cd395, 0x3fe5bfff} },
+/**/ {{0x24a8b955, 0x3fe9dc52} },
+/**/ {{0x4f8fff15, 0x3ff3cc66} },
+/**/ {{0x82045611, 0xbbf67c97} },},
+/**/ {{{0x000dcc40, 0x3fe5e000} },
+/**/ {{0x4df5b93e, 0x3fea1163} },
+/**/ {{0x75853228, 0x3ff3a418} },
+/**/ {{0xd481f350, 0xbbf585da} },},
+/**/ {{{0x02efd2fc, 0x3fe60000} },
+/**/ {{0x30d16323, 0x3fea46cb} },
+/**/ {{0x187962ae, 0x3ff37c2d} },
+/**/ {{0xa5f77bb0, 0x3bf004c3} },},
+/**/ {{{0xfeb8088a, 0x3fe61fff} },
+/**/ {{0x053920c0, 0x3fea7c8b} },
+/**/ {{0x891769a9, 0x3ff354a2} },
+/**/ {{0x3fee3029, 0x3bbc6b30} },},
+/**/ {{{0x00f3ca06, 0x3fe64000} },
+/**/ {{0x28a1911a, 0x3feab2a4} },
+/**/ {{0x0a6f0a4a, 0x3ff32d77} },
+/**/ {{0xfac5081a, 0x3bf2a6f8} },},
+/**/ {{{0xfe9ec2f4, 0x3fe65fff} },
+/**/ {{0xd4ce7239, 0x3feae917} },
+/**/ {{0x0751a948, 0x3ff306a9} },
+/**/ {{0x51ab9dbd, 0xbbe950b5} },},
+/**/ {{{0x03d43966, 0x3fe68000} },
+/**/ {{0x708b998a, 0x3feb1fe7} },
+/**/ {{0xd7a153c7, 0x3ff2e036} },
+/**/ {{0xa1e4a14e, 0x3bdd36e2} },},
+/**/ {{{0xfab67783, 0x3fe69fff} },
+/**/ {{0x2e575464, 0x3feb5714} },
+/**/ {{0x05006cb6, 0x3ff2ba1f} },
+/**/ {{0x473c2e31, 0x3bea9a4a} },},
+/**/ {{{0xfcb65f89, 0x3fe6bfff} },
+/**/ {{0x981efd2f, 0x3feb8e9f} },
+/**/ {{0xe948d9f7, 0x3ff2945f} },
+/**/ {{0xe802df72, 0xbbca5294} },},
+/**/ {{{0xfc5609a9, 0x3fe6dfff} },
+/**/ {{0xfaed6ff1, 0x3febc68a} },
+/**/ {{0x1533411e, 0x3ff26ef8} },
+/**/ {{0xf51bc566, 0xbbf89153} },},
+/**/ {{{0xfc4eef86, 0x3fe6ffff} },
+/**/ {{0xc62205fe, 0x3febfed7} },
+/**/ {{0x0e70978c, 0x3ff249e6} },
+/**/ {{0xa2b9ff56, 0x3bc39021} },},
+/**/ {{{0x004d98b3, 0x3fe72000} },
+/**/ {{0x716968ad, 0x3fec3787} },
+/**/ {{0x61be7751, 0x3ff22528} },
+/**/ {{0x74ee2211, 0x3befc9c5} },},
+/**/ {{{0xfc155075, 0x3fe73fff} },
+/**/ {{0x5ec6fd4e, 0x3fec709b} },
+/**/ {{0xb5d53311, 0x3ff200bd} },
+/**/ {{0xa269ae63, 0x3be28a4d} },},
+/**/ {{{0x0498c203, 0x3fe76000} },
+/**/ {{0x323d08c1, 0x3fecaa15} },
+/**/ {{0x93433f65, 0x3ff1dca4} },
+/**/ {{0x14a28fb7, 0x3bf8cae4} },},
+/**/ {{{0xff1e5636, 0x3fe77fff} },
+/**/ {{0x4147c12c, 0x3fece3f6} },
+/**/ {{0xbfe294a8, 0x3ff1b8db} },
+/**/ {{0x4b56a744, 0xbbe7e19c} },},
+/**/ {{{0x0226d45a, 0x3fe7a000} },
+/**/ {{0x4120eb7f, 0x3fed1e40} },
+/**/ {{0xd15f8278, 0x3ff19561} },
+/**/ {{0x032c5d4c, 0x3be64b28} },},
+/**/ {{{0x0250a5aa, 0x3fe7c000} },
+/**/ {{0xb112a1e1, 0x3fed58f4} },
+/**/ {{0x8a59d565, 0x3ff17235} },
+/**/ {{0xb8dc7867, 0xbbe716de} },},
+/**/ {{{0x0482f82e, 0x3fe7e000} },
+/**/ {{0x3576bdf0, 0x3fed9415} },
+/**/ {{0xa22a1c5b, 0x3ff14f55} },
+/**/ {{0xe1305604, 0x3bf207e1} },},
+/**/ {{{0x0205003e, 0x3fe80000} },
+/**/ {{0x64d69ff7, 0x3fedcfa3} },
+/**/ {{0xe37eb26f, 0x3ff12cc0} },
+/**/ {{0xe32395f8, 0xbbd52ec6} },},
+/**/ {{{0xfbf99411, 0x3fe81fff} },
+/**/ {{0xebf98f51, 0x3fee0ba0} },
+/**/ {{0x16ddd5d6, 0x3ff10a76} },
+/**/ {{0x59866045, 0xbbece0d6} },},
+/**/ {{{0x0248e3a3, 0x3fe84000} },
+/**/ {{0x9bb7f565, 0x3fee480f} },
+/**/ {{0xfb84e05c, 0x3ff0e873} },
+/**/ {{0x1595df92, 0x3bf4e5e8} },},
+/**/ {{{0x0145c157, 0x3fe86000} },
+/**/ {{0x0a10b3ab, 0x3fee84f1} },
+/**/ {{0x7cbd7b1e, 0x3ff0c6b9} },
+/**/ {{0xd5f121d0, 0xbbe19de6} },},
+/**/ {{{0x022631b9, 0x3fe88000} },
+/**/ {{0x0be1f047, 0x3feec247} },
+/**/ {{0x6d0b3ee6, 0x3ff0a545} },
+/**/ {{0xa3ba2c6f, 0xbbc272b1} },},
+/**/ {{{0x045f7828, 0x3fe8a000} },
+/**/ {{0x6c45ba1c, 0x3fef0013} },
+/**/ {{0xaf2a0f09, 0x3ff08416} },
+/**/ {{0x5b63c799, 0x3be82b56} },},
+/**/ {{{0xffc686cf, 0x3fe8bfff} },
+/**/ {{0xf03c824b, 0x3fef3e57} },
+/**/ {{0x33502220, 0x3ff0632c} },
+/**/ {{0x2dbeeb25, 0xbbd039ad} },},
+/**/ {{{0xfd8644c6, 0x3fe8dfff} },
+/**/ {{0x8774261d, 0x3fef7d16} },
+/**/ {{0xdd5b3019, 0x3ff04284} },
+/**/ {{0xe1eba933, 0x3bd79f33} },},
+/**/ {{{0xfe4e7937, 0x3fe8ffff} },
+/**/ {{0x1a99a641, 0x3fefbc51} },
+/**/ {{0x9f69840b, 0x3ff0221f} },
+/**/ {{0x7beee018, 0xbbea9e84} },},
+/**/ {{{0x0435251f, 0x3fe92000} },
+/**/ {{0x9eb22390, 0x3feffc09} },
+/**/ {{0x6f7c51e8, 0x3ff001fb} },
+/**/ {{0x31032e0a, 0xbb5a12e7} },},
+ };
+
+#endif
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/w_exp_compat.c b/REORG.TODO/sysdeps/ieee754/dbl-64/w_exp_compat.c
new file mode 100644
index 0000000000..e61e03b335
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/w_exp_compat.c
@@ -0,0 +1,38 @@
+/* Copyright (C) 2011-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@gmail.com>, 2011.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+#include <math_private.h>
+
+/* wrapper exp */
+double
+__exp (double x)
+{
+ double z = __ieee754_exp (x);
+ if (__builtin_expect (!isfinite (z) || z == 0, 0)
+ && isfinite (x) && _LIB_VERSION != _IEEE_)
+ return __kernel_standard (x, x, 6 + !!signbit (x));
+
+ return z;
+}
+hidden_def (__exp)
+weak_alias (__exp, exp)
+#ifdef NO_LONG_DOUBLE
+strong_alias (__exp, __expl)
+weak_alias (__exp, expl)
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/wordsize-64/e_acosh.c b/REORG.TODO/sysdeps/ieee754/dbl-64/wordsize-64/e_acosh.c
new file mode 100644
index 0000000000..ccccdaf106
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/wordsize-64/e_acosh.c
@@ -0,0 +1,67 @@
+/* Optimized for 64-bit by Ulrich Drepper <drepper@gmail.com>, 2012 */
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+/* __ieee754_acosh(x)
+ * Method :
+ * Based on
+ * acosh(x) = log [ x + sqrt(x*x-1) ]
+ * we have
+ * acosh(x) := log(x)+ln2, if x is large; else
+ * acosh(x) := log(2x-1/(sqrt(x*x-1)+x)) if x>2; else
+ * acosh(x) := log1p(t+sqrt(2.0*t+t*t)); where t=x-1.
+ *
+ * Special cases:
+ * acosh(x) is NaN with signal if x<1.
+ * acosh(NaN) is NaN without signal.
+ */
+
+#include <math.h>
+#include <math_private.h>
+
+static const double
+one = 1.0,
+ln2 = 6.93147180559945286227e-01; /* 0x3FE62E42, 0xFEFA39EF */
+
+double
+__ieee754_acosh (double x)
+{
+ int64_t hx;
+ EXTRACT_WORDS64 (hx, x);
+
+ if (hx > INT64_C (0x4000000000000000))
+ {
+ if (__glibc_unlikely (hx >= INT64_C (0x41b0000000000000)))
+ {
+ /* x > 2**28 */
+ if (hx >= INT64_C (0x7ff0000000000000))
+ /* x is inf of NaN */
+ return x + x;
+ else
+ return __ieee754_log (x) + ln2;/* acosh(huge)=log(2x) */
+ }
+
+ /* 2**28 > x > 2 */
+ double t = x * x;
+ return __ieee754_log (2.0 * x - one / (x + __ieee754_sqrt (t - one)));
+ }
+ else if (__glibc_likely (hx > INT64_C (0x3ff0000000000000)))
+ {
+ /* 1<x<2 */
+ double t = x - one;
+ return __log1p (t + __ieee754_sqrt (2.0 * t + t * t));
+ }
+ else if (__glibc_likely (hx == INT64_C (0x3ff0000000000000)))
+ return 0.0; /* acosh(1) = 0 */
+ else /* x < 1 */
+ return (x - x) / (x - x);
+}
+strong_alias (__ieee754_acosh, __acosh_finite)
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/wordsize-64/e_cosh.c b/REORG.TODO/sysdeps/ieee754/dbl-64/wordsize-64/e_cosh.c
new file mode 100644
index 0000000000..fca80b13f9
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/wordsize-64/e_cosh.c
@@ -0,0 +1,84 @@
+/* Optimized by Ulrich Drepper <drepper@gmail.com>, 2011 */
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+/* __ieee754_cosh(x)
+ * Method :
+ * mathematically cosh(x) if defined to be (exp(x)+exp(-x))/2
+ * 1. Replace x by |x| (cosh(x) = cosh(-x)).
+ * 2.
+ * [ exp(x) - 1 ]^2
+ * 0 <= x <= ln2/2 : cosh(x) := 1 + -------------------
+ * 2*exp(x)
+ *
+ * exp(x) + 1/exp(x)
+ * ln2/2 <= x <= 22 : cosh(x) := -------------------
+ * 2
+ * 22 <= x <= lnovft : cosh(x) := exp(x)/2
+ * lnovft <= x <= ln2ovft: cosh(x) := exp(x/2)/2 * exp(x/2)
+ * ln2ovft < x : cosh(x) := huge*huge (overflow)
+ *
+ * Special cases:
+ * cosh(x) is |x| if x is +INF, -INF, or NaN.
+ * only cosh(0)=1 is exact for finite x.
+ */
+
+#include <math.h>
+#include <math_private.h>
+
+static const double one = 1.0, half=0.5, huge = 1.0e300;
+
+double
+__ieee754_cosh (double x)
+{
+ double t,w;
+ int32_t ix;
+
+ /* High word of |x|. */
+ GET_HIGH_WORD(ix,x);
+ ix &= 0x7fffffff;
+
+ /* |x| in [0,22] */
+ if (ix < 0x40360000) {
+ /* |x| in [0,0.5*ln2], return 1+expm1(|x|)^2/(2*exp(|x|)) */
+ if(ix<0x3fd62e43) {
+ if (ix<0x3c800000) /* cosh(tiny) = 1 */
+ return one;
+ t = __expm1(fabs(x));
+ w = one+t;
+ return one+(t*t)/(w+w);
+ }
+
+ /* |x| in [0.5*ln2,22], return (exp(|x|)+1/exp(|x|)/2; */
+ t = __ieee754_exp(fabs(x));
+ return half*t+half/t;
+ }
+
+ /* |x| in [22, log(maxdouble)] return half*exp(|x|) */
+ if (ix < 0x40862e42) return half*__ieee754_exp(fabs(x));
+
+ /* |x| in [log(maxdouble), overflowthresold] */
+ int64_t fix;
+ EXTRACT_WORDS64(fix, x);
+ fix &= UINT64_C(0x7fffffffffffffff);
+ if (fix <= UINT64_C(0x408633ce8fb9f87d)) {
+ w = __ieee754_exp(half*fabs(x));
+ t = half*w;
+ return t*w;
+ }
+
+ /* x is INF or NaN */
+ if(ix>=0x7ff00000) return x*x;
+
+ /* |x| > overflowthresold, cosh(x) overflow */
+ return huge*huge;
+}
+strong_alias (__ieee754_cosh, __cosh_finite)
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/wordsize-64/e_fmod.c b/REORG.TODO/sysdeps/ieee754/dbl-64/wordsize-64/e_fmod.c
new file mode 100644
index 0000000000..f686bb6706
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/wordsize-64/e_fmod.c
@@ -0,0 +1,105 @@
+/* Rewritten for 64-bit machines by Ulrich Drepper <drepper@gmail.com>. */
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+/*
+ * __ieee754_fmod(x,y)
+ * Return x mod y in exact arithmetic
+ * Method: shift and subtract
+ */
+
+#include <math.h>
+#include <math_private.h>
+#include <stdint.h>
+
+static const double one = 1.0, Zero[] = {0.0, -0.0,};
+
+double
+__ieee754_fmod (double x, double y)
+{
+ int32_t n,ix,iy;
+ int64_t hx,hy,hz,sx,i;
+
+ EXTRACT_WORDS64(hx,x);
+ EXTRACT_WORDS64(hy,y);
+ sx = hx&UINT64_C(0x8000000000000000); /* sign of x */
+ hx ^=sx; /* |x| */
+ hy &= UINT64_C(0x7fffffffffffffff); /* |y| */
+
+ /* purge off exception values */
+ if(__builtin_expect(hy==0
+ || hx >= UINT64_C(0x7ff0000000000000)
+ || hy > UINT64_C(0x7ff0000000000000), 0))
+ /* y=0,or x not finite or y is NaN */
+ return (x*y)/(x*y);
+ if(__builtin_expect(hx<=hy, 0)) {
+ if(hx<hy) return x; /* |x|<|y| return x */
+ return Zero[(uint64_t)sx>>63]; /* |x|=|y| return x*0*/
+ }
+
+ /* determine ix = ilogb(x) */
+ if(__builtin_expect(hx<UINT64_C(0x0010000000000000), 0)) {
+ /* subnormal x */
+ for (ix = -1022,i=(hx<<11); i>0; i<<=1) ix -=1;
+ } else ix = (hx>>52)-1023;
+
+ /* determine iy = ilogb(y) */
+ if(__builtin_expect(hy<UINT64_C(0x0010000000000000), 0)) { /* subnormal y */
+ for (iy = -1022,i=(hy<<11); i>0; i<<=1) iy -=1;
+ } else iy = (hy>>52)-1023;
+
+ /* set up hx, hy and align y to x */
+ if(__builtin_expect(ix >= -1022, 1))
+ hx = UINT64_C(0x0010000000000000)|(UINT64_C(0x000fffffffffffff)&hx);
+ else { /* subnormal x, shift x to normal */
+ n = -1022-ix;
+ hx<<=n;
+ }
+ if(__builtin_expect(iy >= -1022, 1))
+ hy = UINT64_C(0x0010000000000000)|(UINT64_C(0x000fffffffffffff)&hy);
+ else { /* subnormal y, shift y to normal */
+ n = -1022-iy;
+ hy<<=n;
+ }
+
+ /* fix point fmod */
+ n = ix - iy;
+ while(n--) {
+ hz=hx-hy;
+ if(hz<0){hx = hx+hx;}
+ else {
+ if(hz==0) /* return sign(x)*0 */
+ return Zero[(uint64_t)sx>>63];
+ hx = hz+hz;
+ }
+ }
+ hz=hx-hy;
+ if(hz>=0) {hx=hz;}
+
+ /* convert back to floating value and restore the sign */
+ if(hx==0) /* return sign(x)*0 */
+ return Zero[(uint64_t)sx>>63];
+ while(hx<UINT64_C(0x0010000000000000)) { /* normalize x */
+ hx = hx+hx;
+ iy -= 1;
+ }
+ if(__builtin_expect(iy>= -1022, 1)) { /* normalize output */
+ hx = ((hx-UINT64_C(0x0010000000000000))|((uint64_t)(iy+1023)<<52));
+ INSERT_WORDS64(x,hx|sx);
+ } else { /* subnormal output */
+ n = -1022 - iy;
+ hx>>=n;
+ INSERT_WORDS64(x,hx|sx);
+ x *= one; /* create necessary signal */
+ }
+ return x; /* exact output */
+}
+strong_alias (__ieee754_fmod, __fmod_finite)
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/wordsize-64/e_log10.c b/REORG.TODO/sysdeps/ieee754/dbl-64/wordsize-64/e_log10.c
new file mode 100644
index 0000000000..4f5a81669e
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/wordsize-64/e_log10.c
@@ -0,0 +1,87 @@
+/* @(#)e_log10.c 5.1 93/09/24 */
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+/* __ieee754_log10(x)
+ * Return the base 10 logarithm of x
+ *
+ * Method :
+ * Let log10_2hi = leading 40 bits of log10(2) and
+ * log10_2lo = log10(2) - log10_2hi,
+ * ivln10 = 1/log(10) rounded.
+ * Then
+ * n = ilogb(x),
+ * if(n<0) n = n+1;
+ * x = scalbn(x,-n);
+ * log10(x) := n*log10_2hi + (n*log10_2lo + ivln10*log(x))
+ *
+ * Note 1:
+ * To guarantee log10(10**n)=n, where 10**n is normal, the rounding
+ * mode must set to Round-to-Nearest.
+ * Note 2:
+ * [1/log(10)] rounded to 53 bits has error .198 ulps;
+ * log10 is monotonic at all binary break points.
+ *
+ * Special cases:
+ * log10(x) is NaN with signal if x < 0;
+ * log10(+INF) is +INF with no signal; log10(0) is -INF with signal;
+ * log10(NaN) is that NaN with no signal;
+ * log10(10**N) = N for N=0,1,...,22.
+ *
+ * Constants:
+ * The hexadecimal values are the intended ones for the following constants.
+ * The decimal values may be used, provided that the compiler will convert
+ * from decimal to binary accurately enough to produce the hexadecimal values
+ * shown.
+ */
+
+#include <math.h>
+#include <math_private.h>
+#include <stdint.h>
+
+static const double two54 = 1.80143985094819840000e+16; /* 0x4350000000000000 */
+static const double ivln10 = 4.34294481903251816668e-01; /* 0x3FDBCB7B1526E50E */
+static const double log10_2hi = 3.01029995663611771306e-01; /* 0x3FD34413509F6000 */
+static const double log10_2lo = 3.69423907715893078616e-13; /* 0x3D59FEF311F12B36 */
+
+double
+__ieee754_log10 (double x)
+{
+ double y, z;
+ int64_t i, hx;
+ int32_t k;
+
+ EXTRACT_WORDS64 (hx, x);
+
+ k = 0;
+ if (hx < INT64_C(0x0010000000000000))
+ { /* x < 2**-1022 */
+ if (__glibc_unlikely ((hx & UINT64_C(0x7fffffffffffffff)) == 0))
+ return -two54 / (x - x); /* log(+-0)=-inf */
+ if (__glibc_unlikely (hx < 0))
+ return (x - x) / (x - x); /* log(-#) = NaN */
+ k -= 54;
+ x *= two54; /* subnormal number, scale up x */
+ EXTRACT_WORDS64 (hx, x);
+ }
+ /* scale up resulted in a NaN number */
+ if (__glibc_unlikely (hx >= UINT64_C(0x7ff0000000000000)))
+ return x + x;
+ k += (hx >> 52) - 1023;
+ i = ((uint64_t) k & UINT64_C(0x8000000000000000)) >> 63;
+ hx = (hx & UINT64_C(0x000fffffffffffff)) | ((0x3ff - i) << 52);
+ y = (double) (k + i);
+ INSERT_WORDS64 (x, hx);
+ z = y * log10_2lo + ivln10 * __ieee754_log (x);
+ return z + y * log10_2hi;
+}
+
+strong_alias (__ieee754_log10, __log10_finite)
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/wordsize-64/e_log2.c b/REORG.TODO/sysdeps/ieee754/dbl-64/wordsize-64/e_log2.c
new file mode 100644
index 0000000000..5ccb78cf03
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/wordsize-64/e_log2.c
@@ -0,0 +1,128 @@
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+/* __ieee754_log2(x)
+ * Return the logarithm to base 2 of x
+ *
+ * Method :
+ * 1. Argument Reduction: find k and f such that
+ * x = 2^k * (1+f),
+ * where sqrt(2)/2 < 1+f < sqrt(2) .
+ *
+ * 2. Approximation of log(1+f).
+ * Let s = f/(2+f) ; based on log(1+f) = log(1+s) - log(1-s)
+ * = 2s + 2/3 s**3 + 2/5 s**5 + .....,
+ * = 2s + s*R
+ * We use a special Reme algorithm on [0,0.1716] to generate
+ * a polynomial of degree 14 to approximate R The maximum error
+ * of this polynomial approximation is bounded by 2**-58.45. In
+ * other words,
+ * 2 4 6 8 10 12 14
+ * R(z) ~ Lg1*s +Lg2*s +Lg3*s +Lg4*s +Lg5*s +Lg6*s +Lg7*s
+ * (the values of Lg1 to Lg7 are listed in the program)
+ * and
+ * | 2 14 | -58.45
+ * | Lg1*s +...+Lg7*s - R(z) | <= 2
+ * | |
+ * Note that 2s = f - s*f = f - hfsq + s*hfsq, where hfsq = f*f/2.
+ * In order to guarantee error in log below 1ulp, we compute log
+ * by
+ * log(1+f) = f - s*(f - R) (if f is not too large)
+ * log(1+f) = f - (hfsq - s*(hfsq+R)). (better accuracy)
+ *
+ * 3. Finally, log(x) = k + log(1+f).
+ * = k+(f-(hfsq-(s*(hfsq+R))))
+ *
+ * Special cases:
+ * log2(x) is NaN with signal if x < 0 (including -INF) ;
+ * log2(+INF) is +INF; log(0) is -INF with signal;
+ * log2(NaN) is that NaN with no signal.
+ *
+ * Constants:
+ * The hexadecimal values are the intended ones for the following
+ * constants. The decimal values may be used, provided that the
+ * compiler will convert from decimal to binary accurately enough
+ * to produce the hexadecimal values shown.
+ */
+
+#include <math.h>
+#include <math_private.h>
+
+static const double ln2 = 0.69314718055994530942;
+static const double two54 = 1.80143985094819840000e+16; /* 4350000000000000 */
+static const double Lg1 = 6.666666666666735130e-01; /* 3FE5555555555593 */
+static const double Lg2 = 3.999999999940941908e-01; /* 3FD999999997FA04 */
+static const double Lg3 = 2.857142874366239149e-01; /* 3FD2492494229359 */
+static const double Lg4 = 2.222219843214978396e-01; /* 3FCC71C51D8E78AF */
+static const double Lg5 = 1.818357216161805012e-01; /* 3FC7466496CB03DE */
+static const double Lg6 = 1.531383769920937332e-01; /* 3FC39A09D078C69F */
+static const double Lg7 = 1.479819860511658591e-01; /* 3FC2F112DF3E5244 */
+
+static const double zero = 0.0;
+
+double
+__ieee754_log2 (double x)
+{
+ double hfsq, f, s, z, R, w, t1, t2, dk;
+ int64_t hx, i, j;
+ int32_t k;
+
+ EXTRACT_WORDS64 (hx, x);
+
+ k = 0;
+ if (hx < INT64_C(0x0010000000000000))
+ { /* x < 2**-1022 */
+ if (__glibc_unlikely ((hx & UINT64_C(0x7fffffffffffffff)) == 0))
+ return -two54 / (x - x); /* log(+-0)=-inf */
+ if (__glibc_unlikely (hx < 0))
+ return (x - x) / (x - x); /* log(-#) = NaN */
+ k -= 54;
+ x *= two54; /* subnormal number, scale up x */
+ EXTRACT_WORDS64 (hx, x);
+ }
+ if (__glibc_unlikely (hx >= UINT64_C(0x7ff0000000000000)))
+ return x + x;
+ k += (hx >> 52) - 1023;
+ hx &= UINT64_C(0x000fffffffffffff);
+ i = (hx + UINT64_C(0x95f6400000000)) & UINT64_C(0x10000000000000);
+ /* normalize x or x/2 */
+ INSERT_WORDS64 (x, hx | (i ^ UINT64_C(0x3ff0000000000000)));
+ k += (i >> 52);
+ dk = (double) k;
+ f = x - 1.0;
+ if ((UINT64_C(0x000fffffffffffff) & (2 + hx)) < 3)
+ { /* |f| < 2**-20 */
+ if (f == zero)
+ return dk;
+ R = f * f * (0.5 - 0.33333333333333333 * f);
+ return dk - (R - f) / ln2;
+ }
+ s = f / (2.0 + f);
+ z = s * s;
+ i = hx - UINT64_C(0x6147a00000000);
+ w = z * z;
+ j = UINT64_C(0x6b85100000000) - hx;
+ t1 = w * (Lg2 + w * (Lg4 + w * Lg6));
+ t2 = z * (Lg1 + w * (Lg3 + w * (Lg5 + w * Lg7)));
+ i |= j;
+ R = t2 + t1;
+ if (i > 0)
+ {
+ hfsq = 0.5 * f * f;
+ return dk - ((hfsq - (s * (hfsq + R))) - f) / ln2;
+ }
+ else
+ {
+ return dk - ((s * (f - R)) - f) / ln2;
+ }
+}
+
+strong_alias (__ieee754_log2, __log2_finite)
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/wordsize-64/s_ceil.c b/REORG.TODO/sysdeps/ieee754/dbl-64/wordsize-64/s_ceil.c
new file mode 100644
index 0000000000..faaaf90208
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/wordsize-64/s_ceil.c
@@ -0,0 +1,54 @@
+/* @(#)s_ceil.c 5.1 93/09/24 */
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+/*
+ * ceil(x)
+ * Return x rounded toward -inf to integral value
+ * Method:
+ * Bit twiddling.
+ */
+
+#include <math.h>
+#include <math_private.h>
+
+double
+__ceil(double x)
+{
+ int64_t i0,i;
+ int32_t j0;
+ EXTRACT_WORDS64(i0,x);
+ j0 = ((i0>>52)&0x7ff)-0x3ff;
+ if(j0<=51) {
+ if(j0<0) {
+ /* return 0*sign(x) if |x|<1 */
+ if(i0<0) {i0=INT64_C(0x8000000000000000);}
+ else if(i0!=0) { i0=INT64_C(0x3ff0000000000000);}
+ } else {
+ i = INT64_C(0x000fffffffffffff)>>j0;
+ if((i0&i)==0) return x; /* x is integral */
+ if(i0>0) i0 += UINT64_C(0x0010000000000000)>>j0;
+ i0 &= (~i);
+ }
+ } else {
+ if(j0==0x400) return x+x; /* inf or NaN */
+ else return x; /* x is integral */
+ }
+ INSERT_WORDS64(x,i0);
+ return x;
+}
+#ifndef __ceil
+weak_alias (__ceil, ceil)
+# ifdef NO_LONG_DOUBLE
+strong_alias (__ceil, __ceill)
+weak_alias (__ceil, ceill)
+# endif
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/wordsize-64/s_finite.c b/REORG.TODO/sysdeps/ieee754/dbl-64/wordsize-64/s_finite.c
new file mode 100644
index 0000000000..ef51608f6e
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/wordsize-64/s_finite.c
@@ -0,0 +1,42 @@
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+/*
+ * finite(x) returns 1 is x is finite, else 0;
+ * no branching!
+ */
+
+#include <math.h>
+#include <math_private.h>
+#include <shlib-compat.h>
+#include <stdint.h>
+
+#undef __finite
+int
+__finite(double x)
+{
+ int64_t lx;
+ EXTRACT_WORDS64(lx,x);
+ return (int)((uint64_t)((lx&INT64_C(0x7ff0000000000000))-INT64_C(0x7ff0000000000000))>>63);
+}
+hidden_def (__finite)
+weak_alias (__finite, finite)
+#ifdef NO_LONG_DOUBLE
+# ifdef LDBL_CLASSIFY_COMPAT
+# if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_23)
+compat_symbol (libc, __finite, __finitel, GLIBC_2_0);
+# endif
+# if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_23)
+compat_symbol (libm, __finite, __finitel, GLIBC_2_1);
+# endif
+# endif
+weak_alias (__finite, finitel)
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/wordsize-64/s_floor.c b/REORG.TODO/sysdeps/ieee754/dbl-64/wordsize-64/s_floor.c
new file mode 100644
index 0000000000..1b99fffc30
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/wordsize-64/s_floor.c
@@ -0,0 +1,74 @@
+/* Round double to integer away from zero.
+ Copyright (C) 2011-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 2011.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+/* Based on a version which carries the following copyright: */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#include <math.h>
+#include <math_private.h>
+#include <stdint.h>
+
+/*
+ * floor(x)
+ * Return x rounded toward -inf to integral value
+ * Method:
+ * Bit twiddling.
+ */
+
+
+double
+__floor (double x)
+{
+ int64_t i0;
+ EXTRACT_WORDS64(i0,x);
+ int32_t j0 = ((i0>>52)&0x7ff)-0x3ff;
+ if(__builtin_expect(j0<52, 1)) {
+ if(j0<0) {
+ /* return 0*sign(x) if |x|<1 */
+ if(i0>=0) {i0=0;}
+ else if((i0&0x7fffffffffffffffl)!=0)
+ { i0=0xbff0000000000000l;}
+ } else {
+ uint64_t i = (0x000fffffffffffffl)>>j0;
+ if((i0&i)==0) return x; /* x is integral */
+ if(i0<0) i0 += (0x0010000000000000l)>>j0;
+ i0 &= (~i);
+ }
+ INSERT_WORDS64(x,i0);
+ } else if (j0==0x400)
+ return x+x; /* inf or NaN */
+ return x;
+}
+#ifndef __floor
+weak_alias (__floor, floor)
+# ifdef NO_LONG_DOUBLE
+strong_alias (__floor, __floorl)
+weak_alias (__floor, floorl)
+# endif
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/wordsize-64/s_frexp.c b/REORG.TODO/sysdeps/ieee754/dbl-64/wordsize-64/s_frexp.c
new file mode 100644
index 0000000000..5e8bc64711
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/wordsize-64/s_frexp.c
@@ -0,0 +1,69 @@
+/* Copyright (C) 2011-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@gmail.com>, 2011.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <inttypes.h>
+#include <math.h>
+#include <math_private.h>
+
+/*
+ * for non-zero, finite x
+ * x = frexp(arg,&exp);
+ * return a double fp quantity x such that 0.5 <= |x| <1.0
+ * and the corresponding binary exponent "exp". That is
+ * arg = x*2^exp.
+ * If arg is inf, 0.0, or NaN, then frexp(arg,&exp) returns arg
+ * with *exp=0.
+ */
+
+
+double
+__frexp (double x, int *eptr)
+{
+ int64_t ix;
+ EXTRACT_WORDS64 (ix, x);
+ int32_t ex = 0x7ff & (ix >> 52);
+ int e = 0;
+
+ if (__glibc_likely (ex != 0x7ff && x != 0.0))
+ {
+ /* Not zero and finite. */
+ e = ex - 1022;
+ if (__glibc_unlikely (ex == 0))
+ {
+ /* Subnormal. */
+ x *= 0x1p54;
+ EXTRACT_WORDS64 (ix, x);
+ ex = 0x7ff & (ix >> 52);
+ e = ex - 1022 - 54;
+ }
+
+ ix = (ix & INT64_C (0x800fffffffffffff)) | INT64_C (0x3fe0000000000000);
+ INSERT_WORDS64 (x, ix);
+ }
+ else
+ /* Quiet signaling NaNs. */
+ x += x;
+
+ *eptr = e;
+ return x;
+}
+weak_alias (__frexp, frexp)
+#ifdef NO_LONG_DOUBLE
+strong_alias (__frexp, __frexpl)
+weak_alias (__frexp, frexpl)
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/wordsize-64/s_getpayload.c b/REORG.TODO/sysdeps/ieee754/dbl-64/wordsize-64/s_getpayload.c
new file mode 100644
index 0000000000..fbcd75b8bd
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/wordsize-64/s_getpayload.c
@@ -0,0 +1,33 @@
+/* Get NaN payload. dbl-64/wordsize-64 version.
+ Copyright (C) 2016-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+#include <math_private.h>
+#include <stdint.h>
+
+double
+getpayload (const double *x)
+{
+ uint64_t ix;
+ EXTRACT_WORDS64 (ix, *x);
+ ix &= 0x7ffffffffffffULL;
+ return (double) ix;
+}
+#ifdef NO_LONG_DOUBLE
+weak_alias (getpayload, getpayloadl)
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/wordsize-64/s_isinf.c b/REORG.TODO/sysdeps/ieee754/dbl-64/wordsize-64/s_isinf.c
new file mode 100644
index 0000000000..951fb73239
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/wordsize-64/s_isinf.c
@@ -0,0 +1,33 @@
+/*
+ * Written by J.T. Conklin <jtc@netbsd.org>.
+ * Changed to return -1 for -Inf by Ulrich Drepper <drepper@cygnus.com>.
+ * Public domain.
+ */
+
+/*
+ * isinf(x) returns 1 is x is inf, -1 if x is -inf, else 0;
+ * no branching!
+ */
+
+#include <math.h>
+#include <math_private.h>
+#include <shlib-compat.h>
+
+int
+__isinf (double x)
+{
+ int64_t ix;
+ EXTRACT_WORDS64(ix,x);
+ int64_t t = ix & UINT64_C(0x7fffffffffffffff);
+ t ^= UINT64_C(0x7ff0000000000000);
+ t |= -t;
+ return ~(t >> 63) & (ix >> 62);
+}
+hidden_def (__isinf)
+weak_alias (__isinf, isinf)
+#ifdef NO_LONG_DOUBLE
+# if defined LDBL_CLASSIFY_COMPAT && SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_23)
+compat_symbol (libc, __isinf, __isinfl, GLIBC_2_0);
+# endif
+weak_alias (__isinf, isinfl)
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/wordsize-64/s_isnan.c b/REORG.TODO/sysdeps/ieee754/dbl-64/wordsize-64/s_isnan.c
new file mode 100644
index 0000000000..bcff9e3b67
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/wordsize-64/s_isnan.c
@@ -0,0 +1,39 @@
+/* @(#)s_isnan.c 5.1 93/09/24 */
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+/*
+ * isnan(x) returns 1 is x is nan, else 0;
+ * no branching!
+ */
+
+#include <math.h>
+#include <math_private.h>
+#include <shlib-compat.h>
+#include <stdint.h>
+
+#undef __isnan
+int __isnan(double x)
+{
+ int64_t hx;
+ EXTRACT_WORDS64(hx,x);
+ hx &= UINT64_C(0x7fffffffffffffff);
+ hx = UINT64_C(0x7ff0000000000000) - hx;
+ return (int)(((uint64_t)hx)>>63);
+}
+hidden_def (__isnan)
+weak_alias (__isnan, isnan)
+#ifdef NO_LONG_DOUBLE
+# if defined LDBL_CLASSIFY_COMPAT && SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_23)
+compat_symbol (libc, __isnan, __isnanl, GLIBC_2_0);
+# endif
+weak_alias (__isnan, isnanl)
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/wordsize-64/s_issignaling.c b/REORG.TODO/sysdeps/ieee754/dbl-64/wordsize-64/s_issignaling.c
new file mode 100644
index 0000000000..117f64bede
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/wordsize-64/s_issignaling.c
@@ -0,0 +1,43 @@
+/* Test for signaling NaN.
+ Copyright (C) 2013-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+#include <math_private.h>
+#include <nan-high-order-bit.h>
+
+int
+__issignaling (double x)
+{
+ u_int64_t xi;
+ EXTRACT_WORDS64 (xi, x);
+#if HIGH_ORDER_BIT_IS_SET_FOR_SNAN
+ /* We only have to care about the high-order bit of x's significand, because
+ having it set (sNaN) already makes the significand different from that
+ used to designate infinity. */
+ return (xi & UINT64_C (0x7ff8000000000000)) == UINT64_C (0x7ff8000000000000);
+#else
+ /* To keep the following comparison simple, toggle the quiet/signaling bit,
+ so that it is set for sNaNs. This is inverse to IEEE 754-2008 (as well as
+ common practice for IEEE 754-1985). */
+ xi ^= UINT64_C (0x0008000000000000);
+ /* We have to compare for greater (instead of greater or equal), because x's
+ significand being all-zero designates infinity not NaN. */
+ return (xi & UINT64_C (0x7fffffffffffffff)) > UINT64_C (0x7ff8000000000000);
+#endif
+}
+libm_hidden_def (__issignaling)
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/wordsize-64/s_llround.c b/REORG.TODO/sysdeps/ieee754/dbl-64/wordsize-64/s_llround.c
new file mode 100644
index 0000000000..86a791111e
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/wordsize-64/s_llround.c
@@ -0,0 +1,82 @@
+/* Round double value to long long int.
+ Copyright (C) 1997-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#define lround __hidden_lround
+#define __lround __hidden___lround
+
+#include <math.h>
+#include <sysdep.h>
+
+#include <math_private.h>
+
+
+long long int
+__llround (double x)
+{
+ int32_t j0;
+ int64_t i0;
+ long long int result;
+ int sign;
+
+ EXTRACT_WORDS64 (i0, x);
+ j0 = ((i0 >> 52) & 0x7ff) - 0x3ff;
+ sign = i0 < 0 ? -1 : 1;
+ i0 &= UINT64_C(0xfffffffffffff);
+ i0 |= UINT64_C(0x10000000000000);
+
+ if (j0 < (int32_t) (8 * sizeof (long long int)) - 1)
+ {
+ if (j0 < 0)
+ return j0 < -1 ? 0 : sign;
+ else if (j0 >= 52)
+ result = i0 << (j0 - 52);
+ else
+ {
+ i0 += UINT64_C(0x8000000000000) >> j0;
+
+ result = i0 >> (52 - j0);
+ }
+ }
+ else
+ {
+ /* The number is too large. It is left implementation defined
+ what happens. */
+ return (long long int) x;
+ }
+
+ return sign * result;
+}
+
+weak_alias (__llround, llround)
+#ifdef NO_LONG_DOUBLE
+strong_alias (__llround, __llroundl)
+weak_alias (__llround, llroundl)
+#endif
+
+/* long has the same width as long long on LP64 machines, so use an alias. */
+#undef lround
+#undef __lround
+#ifdef _LP64
+strong_alias (__llround, __lround)
+weak_alias (__llround, lround)
+# ifdef NO_LONG_DOUBLE
+strong_alias (__llround, __lroundl)
+weak_alias (__llround, lroundl)
+# endif
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/wordsize-64/s_logb.c b/REORG.TODO/sysdeps/ieee754/dbl-64/wordsize-64/s_logb.c
new file mode 100644
index 0000000000..c65cd52208
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/wordsize-64/s_logb.c
@@ -0,0 +1,48 @@
+/* Compute radix independent exponent.
+ Copyright (C) 2011-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@gmail.com>, 2011.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+
+#include <math_private.h>
+
+
+double
+__logb (double x)
+{
+ int64_t ix, ex;
+
+ EXTRACT_WORDS64 (ix, x);
+ ix &= UINT64_C(0x7fffffffffffffff);
+ if (ix == 0)
+ return -1.0 / fabs (x);
+ ex = ix >> 52;
+ if (ex == 0x7ff)
+ return x * x;
+ if (__glibc_unlikely (ex == 0))
+ {
+ int m = __builtin_clzll (ix);
+ ex -= m - 12;
+ }
+ return (double) (ex - 1023);
+}
+weak_alias (__logb, logb)
+#ifdef NO_LONG_DOUBLE
+strong_alias (__logb, __logbl)
+weak_alias (__logb, logbl)
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/wordsize-64/s_lround.c b/REORG.TODO/sysdeps/ieee754/dbl-64/wordsize-64/s_lround.c
new file mode 100644
index 0000000000..02b01aa00d
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/wordsize-64/s_lround.c
@@ -0,0 +1,89 @@
+/* Round double value to long int.
+ Copyright (C) 1997-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <fenv.h>
+#include <limits.h>
+#include <math.h>
+
+#include <math_private.h>
+
+/* For LP64, lround is an alias for llround. */
+#ifndef _LP64
+
+long int
+__lround (double x)
+{
+ int32_t j0;
+ int64_t i0;
+ long int result;
+ int sign;
+
+ EXTRACT_WORDS64 (i0, x);
+ j0 = ((i0 >> 52) & 0x7ff) - 0x3ff;
+ sign = i0 < 0 ? -1 : 1;
+ i0 &= UINT64_C(0xfffffffffffff);
+ i0 |= UINT64_C(0x10000000000000);
+
+ if (j0 < (int32_t) (8 * sizeof (long int)) - 1)
+ {
+ if (j0 < 0)
+ return j0 < -1 ? 0 : sign;
+ else if (j0 >= 52)
+ result = i0 << (j0 - 52);
+ else
+ {
+ i0 += UINT64_C(0x8000000000000) >> j0;
+
+ result = i0 >> (52 - j0);
+#ifdef FE_INVALID
+ if (sizeof (long int) == 4
+ && sign == 1
+ && result == LONG_MIN)
+ /* Rounding brought the value out of range. */
+ feraiseexcept (FE_INVALID);
+#endif
+ }
+ }
+ else
+ {
+ /* The number is too large. Unless it rounds to LONG_MIN,
+ FE_INVALID must be raised and the return value is
+ unspecified. */
+#ifdef FE_INVALID
+ if (sizeof (long int) == 4
+ && x <= (double) LONG_MIN - 0.5)
+ {
+ /* If truncation produces LONG_MIN, the cast will not raise
+ the exception, but may raise "inexact". */
+ feraiseexcept (FE_INVALID);
+ return LONG_MIN;
+ }
+#endif
+ return (long int) x;
+ }
+
+ return sign * result;
+}
+
+weak_alias (__lround, lround)
+# ifdef NO_LONG_DOUBLE
+strong_alias (__lround, __lroundl)
+weak_alias (__lround, lroundl)
+# endif
+
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/wordsize-64/s_modf.c b/REORG.TODO/sysdeps/ieee754/dbl-64/wordsize-64/s_modf.c
new file mode 100644
index 0000000000..c309e56272
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/wordsize-64/s_modf.c
@@ -0,0 +1,66 @@
+/* Rewritten for 64-bit machines by Ulrich Drepper <drepper@gmail.com>. */
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+/*
+ * modf(double x, double *iptr)
+ * return fraction part of x, and return x's integral part in *iptr.
+ * Method:
+ * Bit twiddling.
+ *
+ * Exception:
+ * No exception.
+ */
+
+#include <math.h>
+#include <math_private.h>
+#include <stdint.h>
+
+static const double one = 1.0;
+
+double
+__modf(double x, double *iptr)
+{
+ int64_t i0;
+ int32_t j0;
+ EXTRACT_WORDS64(i0,x);
+ j0 = ((i0>>52)&0x7ff)-0x3ff; /* exponent of x */
+ if(j0<52) { /* integer part in x */
+ if(j0<0) { /* |x|<1 */
+ /* *iptr = +-0 */
+ INSERT_WORDS64(*iptr,i0&UINT64_C(0x8000000000000000));
+ return x;
+ } else {
+ uint64_t i = UINT64_C(0x000fffffffffffff)>>j0;
+ if((i0&i)==0) { /* x is integral */
+ *iptr = x;
+ /* return +-0 */
+ INSERT_WORDS64(x,i0&UINT64_C(0x8000000000000000));
+ return x;
+ } else {
+ INSERT_WORDS64(*iptr,i0&(~i));
+ return x - *iptr;
+ }
+ }
+ } else { /* no fraction part */
+ *iptr = x*one;
+ /* We must handle NaNs separately. */
+ if (j0 == 0x400 && (i0 & UINT64_C(0xfffffffffffff)))
+ return x*one;
+ INSERT_WORDS64(x,i0&UINT64_C(0x8000000000000000)); /* return +-0 */
+ return x;
+ }
+}
+weak_alias (__modf, modf)
+#ifdef NO_LONG_DOUBLE
+strong_alias (__modf, __modfl)
+weak_alias (__modf, modfl)
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/wordsize-64/s_nearbyint.c b/REORG.TODO/sysdeps/ieee754/dbl-64/wordsize-64/s_nearbyint.c
new file mode 100644
index 0000000000..8293819981
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/wordsize-64/s_nearbyint.c
@@ -0,0 +1,66 @@
+/* Adapted for use as nearbyint by Ulrich Drepper <drepper@cygnus.com>. */
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+/*
+ * rint(x)
+ * Return x rounded to integral value according to the prevailing
+ * rounding mode.
+ * Method:
+ * Using floating addition.
+ * Exception:
+ * Inexact flag raised if x not equal to rint(x).
+ */
+
+#include <fenv.h>
+#include <math.h>
+#include <math_private.h>
+
+static const double
+TWO52[2]={
+ 4.50359962737049600000e+15, /* 0x43300000, 0x00000000 */
+ -4.50359962737049600000e+15, /* 0xC3300000, 0x00000000 */
+};
+
+double
+__nearbyint(double x)
+{
+ fenv_t env;
+ int64_t i0,sx;
+ int32_t j0;
+ EXTRACT_WORDS64(i0,x);
+ sx = (i0>>63)&1;
+ j0 = ((i0>>52)&0x7ff)-0x3ff;
+ if(__builtin_expect(j0<52, 1)) {
+ if(j0<0) {
+ libc_feholdexcept (&env);
+ double w = TWO52[sx]+x;
+ double t = w-TWO52[sx];
+ math_opt_barrier(t);
+ libc_fesetenv (&env);
+ return __copysign (t, x);
+ }
+ } else {
+ if(j0==0x400) return x+x; /* inf or NaN */
+ else return x; /* x is integral */
+ }
+ libc_feholdexcept (&env);
+ double w = TWO52[sx]+x;
+ double t = w-TWO52[sx];
+ math_opt_barrier (t);
+ libc_fesetenv (&env);
+ return t;
+}
+weak_alias (__nearbyint, nearbyint)
+#ifdef NO_LONG_DOUBLE
+strong_alias (__nearbyint, __nearbyintl)
+weak_alias (__nearbyint, nearbyintl)
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/wordsize-64/s_remquo.c b/REORG.TODO/sysdeps/ieee754/dbl-64/wordsize-64/s_remquo.c
new file mode 100644
index 0000000000..37a823c075
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/wordsize-64/s_remquo.c
@@ -0,0 +1,114 @@
+/* Compute remainder and a congruent to the quotient.
+ Copyright (C) 1997-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+
+#include <math_private.h>
+#include <stdint.h>
+
+static const double zero = 0.0;
+
+
+double
+__remquo (double x, double y, int *quo)
+{
+ int64_t hx, hy;
+ uint64_t sx, qs;
+ int cquo;
+
+ EXTRACT_WORDS64 (hx, x);
+ EXTRACT_WORDS64 (hy, y);
+ sx = hx & UINT64_C(0x8000000000000000);
+ qs = sx ^ (hy & UINT64_C(0x8000000000000000));
+ hy &= UINT64_C(0x7fffffffffffffff);
+ hx &= UINT64_C(0x7fffffffffffffff);
+
+ /* Purge off exception values. */
+ if (__glibc_unlikely (hy == 0))
+ return (x * y) / (x * y); /* y = 0 */
+ if (__builtin_expect (hx >= UINT64_C(0x7ff0000000000000) /* x not finite */
+ || hy > UINT64_C(0x7ff0000000000000), 0))/* y is NaN */
+ return (x * y) / (x * y);
+
+ if (hy <= UINT64_C(0x7fbfffffffffffff))
+ x = __ieee754_fmod (x, 8 * y); /* now x < 8y */
+
+ if (__glibc_unlikely (hx == hy))
+ {
+ *quo = qs ? -1 : 1;
+ return zero * x;
+ }
+
+ x = fabs (x);
+ INSERT_WORDS64 (y, hy);
+ cquo = 0;
+
+ if (hy <= UINT64_C(0x7fcfffffffffffff) && x >= 4 * y)
+ {
+ x -= 4 * y;
+ cquo += 4;
+ }
+ if (hy <= UINT64_C(0x7fdfffffffffffff) && x >= 2 * y)
+ {
+ x -= 2 * y;
+ cquo += 2;
+ }
+
+ if (hy < UINT64_C(0x0020000000000000))
+ {
+ if (x + x > y)
+ {
+ x -= y;
+ ++cquo;
+ if (x + x >= y)
+ {
+ x -= y;
+ ++cquo;
+ }
+ }
+ }
+ else
+ {
+ double y_half = 0.5 * y;
+ if (x > y_half)
+ {
+ x -= y;
+ ++cquo;
+ if (x >= y_half)
+ {
+ x -= y;
+ ++cquo;
+ }
+ }
+ }
+
+ *quo = qs ? -cquo : cquo;
+
+ /* Ensure correct sign of zero result in round-downward mode. */
+ if (x == 0.0)
+ x = 0.0;
+ if (sx)
+ x = -x;
+ return x;
+}
+weak_alias (__remquo, remquo)
+#ifdef NO_LONG_DOUBLE
+strong_alias (__remquo, __remquol)
+weak_alias (__remquo, remquol)
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/wordsize-64/s_rint.c b/REORG.TODO/sysdeps/ieee754/dbl-64/wordsize-64/s_rint.c
new file mode 100644
index 0000000000..87b2339d43
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/wordsize-64/s_rint.c
@@ -0,0 +1,60 @@
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+/*
+ * rint(x)
+ * Return x rounded to integral value according to the prevailing
+ * rounding mode.
+ * Method:
+ * Using floating addition.
+ * Exception:
+ * Inexact flag raised if x not equal to rint(x).
+ */
+
+#include <math.h>
+#include <math_private.h>
+
+static const double
+TWO52[2]={
+ 4.50359962737049600000e+15, /* 0x43300000, 0x00000000 */
+ -4.50359962737049600000e+15, /* 0xC3300000, 0x00000000 */
+};
+
+double
+__rint(double x)
+{
+ int64_t i0,sx;
+ int32_t j0;
+ EXTRACT_WORDS64(i0,x);
+ sx = (i0>>63)&1;
+ j0 = ((i0>>52)&0x7ff)-0x3ff;
+ if(j0<52) {
+ if(j0<0) {
+ double w = TWO52[sx]+x;
+ double t = w-TWO52[sx];
+ EXTRACT_WORDS64(i0,t);
+ INSERT_WORDS64(t,(i0&UINT64_C(0x7fffffffffffffff))|(sx<<63));
+ return t;
+ }
+ } else {
+ if(j0==0x400) return x+x; /* inf or NaN */
+ else return x; /* x is integral */
+ }
+ double w = TWO52[sx]+x;
+ return w-TWO52[sx];
+}
+#ifndef __rint
+weak_alias (__rint, rint)
+# ifdef NO_LONG_DOUBLE
+strong_alias (__rint, __rintl)
+weak_alias (__rint, rintl)
+# endif
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/wordsize-64/s_round.c b/REORG.TODO/sysdeps/ieee754/dbl-64/wordsize-64/s_round.c
new file mode 100644
index 0000000000..0e3738b6ef
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/wordsize-64/s_round.c
@@ -0,0 +1,68 @@
+/* Round double to integer away from zero.
+ Copyright (C) 1997-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+
+#include <math_private.h>
+#include <stdint.h>
+
+
+double
+__round (double x)
+{
+ int64_t i0, j0;
+
+ EXTRACT_WORDS64 (i0, x);
+ j0 = ((i0 >> 52) & 0x7ff) - 0x3ff;
+ if (__glibc_likely (j0 < 52))
+ {
+ if (j0 < 0)
+ {
+ i0 &= UINT64_C(0x8000000000000000);
+ if (j0 == -1)
+ i0 |= UINT64_C(0x3ff0000000000000);
+ }
+ else
+ {
+ uint64_t i = UINT64_C(0x000fffffffffffff) >> j0;
+ if ((i0 & i) == 0)
+ /* X is integral. */
+ return x;
+
+ i0 += UINT64_C(0x0008000000000000) >> j0;
+ i0 &= ~i;
+ }
+ }
+ else
+ {
+ if (j0 == 0x400)
+ /* Inf or NaN. */
+ return x + x;
+ else
+ return x;
+ }
+
+ INSERT_WORDS64 (x, i0);
+ return x;
+}
+weak_alias (__round, round)
+#ifdef NO_LONG_DOUBLE
+strong_alias (__round, __roundl)
+weak_alias (__round, roundl)
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/wordsize-64/s_roundeven.c b/REORG.TODO/sysdeps/ieee754/dbl-64/wordsize-64/s_roundeven.c
new file mode 100644
index 0000000000..d13ee25cea
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/wordsize-64/s_roundeven.c
@@ -0,0 +1,72 @@
+/* Round to nearest integer value, rounding halfway cases to even.
+ dbl-64/wordsize-64 version.
+ Copyright (C) 2016-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+#include <math_private.h>
+#include <stdint.h>
+
+#define BIAS 0x3ff
+#define MANT_DIG 53
+#define MAX_EXP (2 * BIAS + 1)
+
+double
+roundeven (double x)
+{
+ uint64_t ix, ux;
+ EXTRACT_WORDS64 (ix, x);
+ ux = ix & 0x7fffffffffffffffULL;
+ int exponent = ux >> (MANT_DIG - 1);
+ if (exponent >= BIAS + MANT_DIG - 1)
+ {
+ /* Integer, infinity or NaN. */
+ if (exponent == MAX_EXP)
+ /* Infinity or NaN; quiet signaling NaNs. */
+ return x + x;
+ else
+ return x;
+ }
+ else if (exponent >= BIAS)
+ {
+ /* At least 1; not necessarily an integer. Locate the bits with
+ exponents 0 and -1 (when the unbiased exponent is 0, the bit
+ with exponent 0 is implicit, but as the bias is odd it is OK
+ to take it from the low bit of the exponent). */
+ int int_pos = (BIAS + MANT_DIG - 1) - exponent;
+ int half_pos = int_pos - 1;
+ uint64_t half_bit = 1ULL << half_pos;
+ uint64_t int_bit = 1ULL << int_pos;
+ if ((ix & (int_bit | (half_bit - 1))) != 0)
+ /* Carry into the exponent works correctly. No need to test
+ whether HALF_BIT is set. */
+ ix += half_bit;
+ ix &= ~(int_bit - 1);
+ }
+ else if (exponent == BIAS - 1 && ux > 0x3fe0000000000000ULL)
+ /* Interval (0.5, 1). */
+ ix = (ix & 0x8000000000000000ULL) | 0x3ff0000000000000ULL;
+ else
+ /* Rounds to 0. */
+ ix &= 0x8000000000000000ULL;
+ INSERT_WORDS64 (x, ix);
+ return x;
+}
+hidden_def (roundeven)
+#ifdef NO_LONG_DOUBLE
+weak_alias (roundeven, roundevenl)
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/wordsize-64/s_scalbln.c b/REORG.TODO/sysdeps/ieee754/dbl-64/wordsize-64/s_scalbln.c
new file mode 100644
index 0000000000..8dce51e928
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/wordsize-64/s_scalbln.c
@@ -0,0 +1,60 @@
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+/*
+ * scalbn (double x, int n)
+ * scalbn(x,n) returns x* 2**n computed by exponent
+ * manipulation rather than by actually performing an
+ * exponentiation or a multiplication.
+ */
+
+#include <math.h>
+#include <math_private.h>
+
+static const double
+two54 = 1.80143985094819840000e+16, /* 0x43500000, 0x00000000 */
+twom54 = 5.55111512312578270212e-17, /* 0x3C900000, 0x00000000 */
+huge = 1.0e+300,
+tiny = 1.0e-300;
+
+double
+__scalbln (double x, long int n)
+{
+ int64_t ix;
+ int64_t k;
+ EXTRACT_WORDS64(ix,x);
+ k = (ix >> 52) & 0x7ff; /* extract exponent */
+ if (__builtin_expect(k==0, 0)) { /* 0 or subnormal x */
+ if ((ix & UINT64_C(0xfffffffffffff))==0) return x; /* +-0 */
+ x *= two54;
+ EXTRACT_WORDS64(ix,x);
+ k = ((ix >> 52) & 0x7ff) - 54;
+ }
+ if (__builtin_expect(k==0x7ff, 0)) return x+x; /* NaN or Inf */
+ if (__builtin_expect(n< -50000, 0))
+ return tiny*__copysign(tiny,x); /*underflow*/
+ if (__builtin_expect(n> 50000 || k+n > 0x7fe, 0))
+ return huge*__copysign(huge,x); /* overflow */
+ /* Now k and n are bounded we know that k = k+n does not
+ overflow. */
+ k = k+n;
+ if (__builtin_expect(k > 0, 1)) /* normal result */
+ {INSERT_WORDS64(x,(ix&UINT64_C(0x800fffffffffffff))|(k<<52));
+ return x;}
+ if (k <= -54)
+ return tiny*__copysign(tiny,x); /*underflow*/
+ k += 54; /* subnormal result */
+ INSERT_WORDS64(x,(ix&INT64_C(0x800fffffffffffff))|(k<<52));
+ return x*twom54;
+}
+#ifdef NO_LONG_DOUBLE
+strong_alias (__scalbln, __scalblnl)
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/wordsize-64/s_scalbn.c b/REORG.TODO/sysdeps/ieee754/dbl-64/wordsize-64/s_scalbn.c
new file mode 100644
index 0000000000..d517a919c8
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/wordsize-64/s_scalbn.c
@@ -0,0 +1,60 @@
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+/*
+ * scalbn (double x, int n)
+ * scalbn(x,n) returns x* 2**n computed by exponent
+ * manipulation rather than by actually performing an
+ * exponentiation or a multiplication.
+ */
+
+#include <math.h>
+#include <math_private.h>
+
+static const double
+two54 = 1.80143985094819840000e+16, /* 0x43500000, 0x00000000 */
+twom54 = 5.55111512312578270212e-17, /* 0x3C900000, 0x00000000 */
+huge = 1.0e+300,
+tiny = 1.0e-300;
+
+double
+__scalbn (double x, int n)
+{
+ int64_t ix;
+ int64_t k;
+ EXTRACT_WORDS64(ix,x);
+ k = (ix >> 52) & 0x7ff; /* extract exponent */
+ if (__builtin_expect(k==0, 0)) { /* 0 or subnormal x */
+ if ((ix & UINT64_C(0xfffffffffffff))==0) return x; /* +-0 */
+ x *= two54;
+ EXTRACT_WORDS64(ix,x);
+ k = ((ix >> 52) & 0x7ff) - 54;
+ }
+ if (__builtin_expect(k==0x7ff, 0)) return x+x; /* NaN or Inf */
+ if (__builtin_expect(n< -50000, 0))
+ return tiny*__copysign(tiny,x); /*underflow*/
+ if (__builtin_expect(n> 50000 || k+n > 0x7fe, 0))
+ return huge*__copysign(huge,x); /* overflow */
+ /* Now k and n are bounded we know that k = k+n does not
+ overflow. */
+ k = k+n;
+ if (__builtin_expect(k > 0, 1)) /* normal result */
+ {INSERT_WORDS64(x,(ix&UINT64_C(0x800fffffffffffff))|(k<<52));
+ return x;}
+ if (k <= -54)
+ return tiny*__copysign(tiny,x); /*underflow*/
+ k += 54; /* subnormal result */
+ INSERT_WORDS64(x,(ix&INT64_C(0x800fffffffffffff))|(k<<52));
+ return x*twom54;
+}
+#ifdef NO_LONG_DOUBLE
+strong_alias (__scalbn, __scalbnl)
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/wordsize-64/s_setpayload_main.c b/REORG.TODO/sysdeps/ieee754/dbl-64/wordsize-64/s_setpayload_main.c
new file mode 100644
index 0000000000..d4f6d55432
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/wordsize-64/s_setpayload_main.c
@@ -0,0 +1,53 @@
+/* Set NaN payload. dbl-64/wordsize-64 version.
+ Copyright (C) 2016-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+#include <math_private.h>
+#include <nan-high-order-bit.h>
+#include <stdint.h>
+
+#define SET_HIGH_BIT (HIGH_ORDER_BIT_IS_SET_FOR_SNAN ? SIG : !SIG)
+#define BIAS 0x3ff
+#define PAYLOAD_DIG 51
+#define EXPLICIT_MANT_DIG 52
+
+int
+FUNC (double *x, double payload)
+{
+ uint64_t ix;
+ EXTRACT_WORDS64 (ix, payload);
+ int exponent = ix >> EXPLICIT_MANT_DIG;
+ /* Test if argument is (a) negative or too large; (b) too small,
+ except for 0 when allowed; (c) not an integer. */
+ if (exponent >= BIAS + PAYLOAD_DIG
+ || (exponent < BIAS && !(SET_HIGH_BIT && ix == 0))
+ || (ix & ((1ULL << (BIAS + EXPLICIT_MANT_DIG - exponent)) - 1)) != 0)
+ {
+ INSERT_WORDS64 (*x, 0);
+ return 1;
+ }
+ if (ix != 0)
+ {
+ ix &= (1ULL << EXPLICIT_MANT_DIG) - 1;
+ ix |= 1ULL << EXPLICIT_MANT_DIG;
+ ix >>= BIAS + EXPLICIT_MANT_DIG - exponent;
+ }
+ ix |= 0x7ff0000000000000ULL | (SET_HIGH_BIT ? 0x8000000000000ULL : 0);
+ INSERT_WORDS64 (*x, ix);
+ return 0;
+}
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/wordsize-64/s_totalorder.c b/REORG.TODO/sysdeps/ieee754/dbl-64/wordsize-64/s_totalorder.c
new file mode 100644
index 0000000000..1e8d57f32b
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/wordsize-64/s_totalorder.c
@@ -0,0 +1,50 @@
+/* Total order operation. dbl-64/wordsize-64 version.
+ Copyright (C) 2016-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+#include <math_private.h>
+#include <nan-high-order-bit.h>
+#include <stdint.h>
+
+int
+totalorder (double x, double y)
+{
+ int64_t ix, iy;
+ EXTRACT_WORDS64 (ix, x);
+ EXTRACT_WORDS64 (iy, y);
+#if HIGH_ORDER_BIT_IS_SET_FOR_SNAN
+ /* For the preferred quiet NaN convention, this operation is a
+ comparison of the representations of the arguments interpreted as
+ sign-magnitude integers. If both arguments are NaNs, invert the
+ quiet/signaling bit so comparing that way works. */
+ if ((ix & 0x7fffffffffffffffULL) > 0x7ff0000000000000ULL
+ && (iy & 0x7fffffffffffffffULL) > 0x7ff0000000000000ULL)
+ {
+ ix ^= 0x0008000000000000ULL;
+ iy ^= 0x0008000000000000ULL;
+ }
+#endif
+ uint64_t ix_sign = ix >> 63;
+ uint64_t iy_sign = iy >> 63;
+ ix ^= ix_sign >> 1;
+ iy ^= iy_sign >> 1;
+ return ix <= iy;
+}
+#ifdef NO_LONG_DOUBLE
+weak_alias (totalorder, totalorderl)
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/wordsize-64/s_totalordermag.c b/REORG.TODO/sysdeps/ieee754/dbl-64/wordsize-64/s_totalordermag.c
new file mode 100644
index 0000000000..47a077f18b
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/wordsize-64/s_totalordermag.c
@@ -0,0 +1,47 @@
+/* Total order operation on absolute values. dbl-64/wordsize-64 version.
+ Copyright (C) 2016-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+#include <math_private.h>
+#include <nan-high-order-bit.h>
+#include <stdint.h>
+
+int
+totalordermag (double x, double y)
+{
+ uint64_t ix, iy;
+ EXTRACT_WORDS64 (ix, x);
+ EXTRACT_WORDS64 (iy, y);
+ ix &= 0x7fffffffffffffffULL;
+ iy &= 0x7fffffffffffffffULL;
+#if HIGH_ORDER_BIT_IS_SET_FOR_SNAN
+ /* For the preferred quiet NaN convention, this operation is a
+ comparison of the representations of the absolute values of the
+ arguments. If both arguments are NaNs, invert the
+ quiet/signaling bit so comparing that way works. */
+ if (ix > 0x7ff0000000000000ULL && iy > 0x7ff0000000000000ULL)
+ {
+ ix ^= 0x0008000000000000ULL;
+ iy ^= 0x0008000000000000ULL;
+ }
+#endif
+ return ix <= iy;
+}
+#ifdef NO_LONG_DOUBLE
+weak_alias (totalordermag, totalordermagl)
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/wordsize-64/s_trunc.c b/REORG.TODO/sysdeps/ieee754/dbl-64/wordsize-64/s_trunc.c
new file mode 100644
index 0000000000..050ec0016a
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/wordsize-64/s_trunc.c
@@ -0,0 +1,57 @@
+/* Truncate argument to nearest integral value not larger than the argument.
+ Copyright (C) 1997-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+
+#include <math_private.h>
+
+
+double
+__trunc (double x)
+{
+ int64_t i0, j0;
+ int64_t sx;
+
+ EXTRACT_WORDS64 (i0, x);
+ sx = i0 & UINT64_C(0x8000000000000000);
+ j0 = ((i0 >> 52) & 0x7ff) - 0x3ff;
+ if (j0 < 52)
+ {
+ if (j0 < 0)
+ /* The magnitude of the number is < 1 so the result is +-0. */
+ INSERT_WORDS64 (x, sx);
+ else
+ INSERT_WORDS64 (x, sx | (i0 & ~(UINT64_C(0x000fffffffffffff) >> j0)));
+ }
+ else
+ {
+ if (j0 == 0x400)
+ /* x is inf or NaN. */
+ return x + x;
+ }
+
+ return x;
+}
+#ifndef __trunc
+weak_alias (__trunc, trunc)
+# ifdef NO_LONG_DOUBLE
+strong_alias (__trunc, __truncl)
+weak_alias (__trunc, truncl)
+# endif
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/x2y2m1.c b/REORG.TODO/sysdeps/ieee754/dbl-64/x2y2m1.c
new file mode 100644
index 0000000000..70d33de74c
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/x2y2m1.c
@@ -0,0 +1,75 @@
+/* Compute x^2 + y^2 - 1, without large cancellation error.
+ Copyright (C) 2012-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+#include <math_private.h>
+#include <mul_split.h>
+#include <stdlib.h>
+
+/* Calculate X + Y exactly and store the result in *HI + *LO. It is
+ given that |X| >= |Y| and the values are small enough that no
+ overflow occurs. */
+
+static inline void
+add_split (double *hi, double *lo, double x, double y)
+{
+ /* Apply Dekker's algorithm. */
+ *hi = x + y;
+ *lo = (x - *hi) + y;
+}
+
+/* Compare absolute values of floating-point values pointed to by P
+ and Q for qsort. */
+
+static int
+compare (const void *p, const void *q)
+{
+ double pd = fabs (*(const double *) p);
+ double qd = fabs (*(const double *) q);
+ if (pd < qd)
+ return -1;
+ else if (pd == qd)
+ return 0;
+ else
+ return 1;
+}
+
+/* Return X^2 + Y^2 - 1, computed without large cancellation error.
+ It is given that 1 > X >= Y >= epsilon / 2, and that X^2 + Y^2 >=
+ 0.5. */
+
+double
+__x2y2m1 (double x, double y)
+{
+ double vals[5];
+ SET_RESTORE_ROUND (FE_TONEAREST);
+ mul_split (&vals[1], &vals[0], x, x);
+ mul_split (&vals[3], &vals[2], y, y);
+ vals[4] = -1.0;
+ qsort (vals, 5, sizeof (double), compare);
+ /* Add up the values so that each element of VALS has absolute value
+ at most equal to the last set bit of the next nonzero
+ element. */
+ for (size_t i = 0; i <= 3; i++)
+ {
+ add_split (&vals[i + 1], &vals[i], vals[i + 1], vals[i]);
+ qsort (vals + i + 1, 4 - i, sizeof (double), compare);
+ }
+ /* Now any error from this addition will be small. */
+ return vals[4] + vals[3] + vals[2] + vals[1] + vals[0];
+}
diff --git a/REORG.TODO/sysdeps/ieee754/dbl-64/x2y2m1f.c b/REORG.TODO/sysdeps/ieee754/dbl-64/x2y2m1f.c
new file mode 100644
index 0000000000..17bc435a62
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/dbl-64/x2y2m1f.c
@@ -0,0 +1,32 @@
+/* Compute x^2 + y^2 - 1, without large cancellation error.
+ Copyright (C) 2012-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+#include <math_private.h>
+#include <float.h>
+
+/* Return X^2 + Y^2 - 1, computed without large cancellation error.
+ It is given that 1 > X >= Y >= epsilon / 2, and that X^2 + Y^2 >=
+ 0.5. */
+
+float
+__x2y2m1f (float x, float y)
+{
+ double dx = x, dy = y;
+ return (float) ((dx - 1) * (dx + 1) + dy * dy);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/float128/Makeconfig b/REORG.TODO/sysdeps/ieee754/float128/Makeconfig
new file mode 100644
index 0000000000..6c385d2df2
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/float128/Makeconfig
@@ -0,0 +1,3 @@
+# Include this earlier so it can be used earlier in Makefiles,
+# and sysdep/ makefiles.
+float128-fcts = yes
diff --git a/REORG.TODO/sysdeps/ieee754/float128/Makefile b/REORG.TODO/sysdeps/ieee754/float128/Makefile
new file mode 100644
index 0000000000..c07586c1b6
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/float128/Makefile
@@ -0,0 +1,3 @@
+ifeq ($(subdir),stdlib)
+routines += float1282mpn strfromf128
+endif
diff --git a/REORG.TODO/sysdeps/ieee754/float128/Versions b/REORG.TODO/sysdeps/ieee754/float128/Versions
new file mode 100644
index 0000000000..caf206475c
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/float128/Versions
@@ -0,0 +1,150 @@
+%include <float128-abi.h>
+%ifndef FLOAT128_VERSION
+% error "float128-abi.h must define FLOAT128_VERSION"
+%endif
+libc {
+ FLOAT128_VERSION {
+ strfromf128;
+ }
+}
+libm {
+ FLOAT128_VERSION {
+ __acosf128_finite;
+ __acoshf128_finite;
+ __asinf128_finite;
+ __atan2f128_finite;
+ __atanhf128_finite;
+ __coshf128_finite;
+ __exp10f128_finite;
+ __exp2f128_finite;
+ __expf128_finite;
+ __finitef128;
+ __fmodf128_finite;
+ __fpclassifyf128;
+ __gammaf128_r_finite;
+ __hypotf128_finite;
+ __iseqsigf128;
+ __isinff128;
+ __isnanf128;
+ __issignalingf128;
+ __j0f128_finite;
+ __j1f128_finite;
+ __jnf128_finite;
+ __lgammaf128_r_finite;
+ __log10f128_finite;
+ __log2f128_finite;
+ __logf128_finite;
+ __powf128_finite;
+ __remainderf128_finite;
+ __signbitf128;
+ __sinhf128_finite;
+ __sqrtf128_finite;
+ __y0f128_finite;
+ __y1f128_finite;
+ __ynf128_finite;
+ acosf128;
+ acoshf128;
+ asinf128;
+ asinhf128;
+ atan2f128;
+ atanf128;
+ atanhf128;
+ cabsf128;
+ cacosf128;
+ cacoshf128;
+ canonicalizef128;
+ cargf128;
+ casinf128;
+ casinhf128;
+ catanf128;
+ catanhf128;
+ cbrtf128;
+ ccosf128;
+ ccoshf128;
+ ceilf128;
+ cexpf128;
+ cimagf128;
+ clog10f128;
+ clogf128;
+ conjf128;
+ copysignf128;
+ cosf128;
+ coshf128;
+ cpowf128;
+ cprojf128;
+ crealf128;
+ csinf128;
+ csinhf128;
+ csqrtf128;
+ ctanf128;
+ ctanhf128;
+ erfcf128;
+ erff128;
+ exp10f128;
+ exp2f128;
+ expf128;
+ expm1f128;
+ fabsf128;
+ fdimf128;
+ floorf128;
+ fmaf128;
+ fmaxf128;
+ fmaxmagf128;
+ fminf128;
+ fminmagf128;
+ fmodf128;
+ frexpf128;
+ fromfpf128;
+ fromfpxf128;
+ getpayloadf128;
+ hypotf128;
+ ilogbf128;
+ j0f128;
+ j1f128;
+ jnf128;
+ ldexpf128;
+ lgammaf128;
+ lgammaf128_r;
+ llogbf128;
+ llrintf128;
+ llroundf128;
+ log10f128;
+ log1pf128;
+ log2f128;
+ logbf128;
+ logf128;
+ lrintf128;
+ lroundf128;
+ modff128;
+ nanf128;
+ nearbyintf128;
+ nextafterf128;
+ nextdownf128;
+ nextupf128;
+ powf128;
+ remainderf128;
+ remquof128;
+ rintf128;
+ roundevenf128;
+ roundf128;
+ scalblnf128;
+ scalbnf128;
+ setpayloadf128;
+ setpayloadsigf128;
+ sincosf128;
+ sinf128;
+ sinhf128;
+ sqrtf128;
+ tanf128;
+ tanhf128;
+ tgammaf128;
+ totalorderf128;
+ totalordermagf128;
+ truncf128;
+ ufromfpf128;
+ ufromfpxf128;
+ y0f128;
+ y1f128;
+ ynf128;
+ }
+}
diff --git a/REORG.TODO/sysdeps/ieee754/float128/e_acosf128.c b/REORG.TODO/sysdeps/ieee754/float128/e_acosf128.c
new file mode 100644
index 0000000000..7ddf7dcdf1
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/float128/e_acosf128.c
@@ -0,0 +1,2 @@
+#include <float128_private.h>
+#include "../ldbl-128/e_acosl.c"
diff --git a/REORG.TODO/sysdeps/ieee754/float128/e_acoshf128.c b/REORG.TODO/sysdeps/ieee754/float128/e_acoshf128.c
new file mode 100644
index 0000000000..f6dd40cd88
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/float128/e_acoshf128.c
@@ -0,0 +1,2 @@
+#include <float128_private.h>
+#include "../ldbl-128/e_acoshl.c"
diff --git a/REORG.TODO/sysdeps/ieee754/float128/e_asinf128.c b/REORG.TODO/sysdeps/ieee754/float128/e_asinf128.c
new file mode 100644
index 0000000000..133ab8d875
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/float128/e_asinf128.c
@@ -0,0 +1,2 @@
+#include <float128_private.h>
+#include "../ldbl-128/e_asinl.c"
diff --git a/REORG.TODO/sysdeps/ieee754/float128/e_atan2f128.c b/REORG.TODO/sysdeps/ieee754/float128/e_atan2f128.c
new file mode 100644
index 0000000000..9aa740f770
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/float128/e_atan2f128.c
@@ -0,0 +1,2 @@
+#include <float128_private.h>
+#include "../ldbl-128/e_atan2l.c"
diff --git a/REORG.TODO/sysdeps/ieee754/float128/e_atanhf128.c b/REORG.TODO/sysdeps/ieee754/float128/e_atanhf128.c
new file mode 100644
index 0000000000..f26c8d54d2
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/float128/e_atanhf128.c
@@ -0,0 +1,2 @@
+#include <float128_private.h>
+#include "../ldbl-128/e_atanhl.c"
diff --git a/REORG.TODO/sysdeps/ieee754/float128/e_coshf128.c b/REORG.TODO/sysdeps/ieee754/float128/e_coshf128.c
new file mode 100644
index 0000000000..2abf067f64
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/float128/e_coshf128.c
@@ -0,0 +1,2 @@
+#include <float128_private.h>
+#include "../ldbl-128/e_coshl.c"
diff --git a/REORG.TODO/sysdeps/ieee754/float128/e_exp10f128.c b/REORG.TODO/sysdeps/ieee754/float128/e_exp10f128.c
new file mode 100644
index 0000000000..b3468d256b
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/float128/e_exp10f128.c
@@ -0,0 +1,2 @@
+#include <float128_private.h>
+#include "../ldbl-128/e_exp10l.c"
diff --git a/REORG.TODO/sysdeps/ieee754/float128/e_expf128.c b/REORG.TODO/sysdeps/ieee754/float128/e_expf128.c
new file mode 100644
index 0000000000..b727b17cc9
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/float128/e_expf128.c
@@ -0,0 +1,2 @@
+#include <float128_private.h>
+#include "../ldbl-128/e_expl.c"
diff --git a/REORG.TODO/sysdeps/ieee754/float128/e_fmodf128.c b/REORG.TODO/sysdeps/ieee754/float128/e_fmodf128.c
new file mode 100644
index 0000000000..ed8a7491ed
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/float128/e_fmodf128.c
@@ -0,0 +1,2 @@
+#include <float128_private.h>
+#include "../ldbl-128/e_fmodl.c"
diff --git a/REORG.TODO/sysdeps/ieee754/float128/e_gammaf128_r.c b/REORG.TODO/sysdeps/ieee754/float128/e_gammaf128_r.c
new file mode 100644
index 0000000000..895ac6374d
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/float128/e_gammaf128_r.c
@@ -0,0 +1,2 @@
+#include <float128_private.h>
+#include "../ldbl-128/e_gammal_r.c"
diff --git a/REORG.TODO/sysdeps/ieee754/float128/e_hypotf128.c b/REORG.TODO/sysdeps/ieee754/float128/e_hypotf128.c
new file mode 100644
index 0000000000..1f06555505
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/float128/e_hypotf128.c
@@ -0,0 +1,2 @@
+#include <float128_private.h>
+#include "../ldbl-128/e_hypotl.c"
diff --git a/REORG.TODO/sysdeps/ieee754/float128/e_ilogbf128.c b/REORG.TODO/sysdeps/ieee754/float128/e_ilogbf128.c
new file mode 100644
index 0000000000..2861801854
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/float128/e_ilogbf128.c
@@ -0,0 +1,2 @@
+#include <float128_private.h>
+#include "../ldbl-128/e_ilogbl.c"
diff --git a/REORG.TODO/sysdeps/ieee754/float128/e_j0f128.c b/REORG.TODO/sysdeps/ieee754/float128/e_j0f128.c
new file mode 100644
index 0000000000..b624b5c596
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/float128/e_j0f128.c
@@ -0,0 +1,2 @@
+#include <float128_private.h>
+#include "../ldbl-128/e_j0l.c"
diff --git a/REORG.TODO/sysdeps/ieee754/float128/e_j1f128.c b/REORG.TODO/sysdeps/ieee754/float128/e_j1f128.c
new file mode 100644
index 0000000000..445428e742
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/float128/e_j1f128.c
@@ -0,0 +1,2 @@
+#include <float128_private.h>
+#include "../ldbl-128/e_j1l.c"
diff --git a/REORG.TODO/sysdeps/ieee754/float128/e_jnf128.c b/REORG.TODO/sysdeps/ieee754/float128/e_jnf128.c
new file mode 100644
index 0000000000..7854e11a1a
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/float128/e_jnf128.c
@@ -0,0 +1,2 @@
+#include <float128_private.h>
+#include "../ldbl-128/e_jnl.c"
diff --git a/REORG.TODO/sysdeps/ieee754/float128/e_lgammaf128_r.c b/REORG.TODO/sysdeps/ieee754/float128/e_lgammaf128_r.c
new file mode 100644
index 0000000000..3517ac32af
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/float128/e_lgammaf128_r.c
@@ -0,0 +1,2 @@
+#include <float128_private.h>
+#include "../ldbl-128/e_lgammal_r.c"
diff --git a/REORG.TODO/sysdeps/ieee754/float128/e_log10f128.c b/REORG.TODO/sysdeps/ieee754/float128/e_log10f128.c
new file mode 100644
index 0000000000..1c3341e412
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/float128/e_log10f128.c
@@ -0,0 +1,2 @@
+#include <float128_private.h>
+#include "../ldbl-128/e_log10l.c"
diff --git a/REORG.TODO/sysdeps/ieee754/float128/e_log2f128.c b/REORG.TODO/sysdeps/ieee754/float128/e_log2f128.c
new file mode 100644
index 0000000000..36becaadc4
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/float128/e_log2f128.c
@@ -0,0 +1,2 @@
+#include <float128_private.h>
+#include "../ldbl-128/e_log2l.c"
diff --git a/REORG.TODO/sysdeps/ieee754/float128/e_logf128.c b/REORG.TODO/sysdeps/ieee754/float128/e_logf128.c
new file mode 100644
index 0000000000..b0c9975caf
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/float128/e_logf128.c
@@ -0,0 +1,2 @@
+#include <float128_private.h>
+#include "../ldbl-128/e_logl.c"
diff --git a/REORG.TODO/sysdeps/ieee754/float128/e_powf128.c b/REORG.TODO/sysdeps/ieee754/float128/e_powf128.c
new file mode 100644
index 0000000000..3afaf7f6a6
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/float128/e_powf128.c
@@ -0,0 +1,2 @@
+#include <float128_private.h>
+#include "../ldbl-128/e_powl.c"
diff --git a/REORG.TODO/sysdeps/ieee754/float128/e_rem_pio2f128.c b/REORG.TODO/sysdeps/ieee754/float128/e_rem_pio2f128.c
new file mode 100644
index 0000000000..86c2ca1024
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/float128/e_rem_pio2f128.c
@@ -0,0 +1,2 @@
+#include <float128_private.h>
+#include "../ldbl-128/e_rem_pio2l.c"
diff --git a/REORG.TODO/sysdeps/ieee754/float128/e_remainderf128.c b/REORG.TODO/sysdeps/ieee754/float128/e_remainderf128.c
new file mode 100644
index 0000000000..90c18f8493
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/float128/e_remainderf128.c
@@ -0,0 +1,2 @@
+#include <float128_private.h>
+#include "../ldbl-128/e_remainderl.c"
diff --git a/REORG.TODO/sysdeps/ieee754/float128/e_scalbf128.c b/REORG.TODO/sysdeps/ieee754/float128/e_scalbf128.c
new file mode 100644
index 0000000000..067b724164
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/float128/e_scalbf128.c
@@ -0,0 +1 @@
+/* Not defined for _FloatN types. */
diff --git a/REORG.TODO/sysdeps/ieee754/float128/e_sinhf128.c b/REORG.TODO/sysdeps/ieee754/float128/e_sinhf128.c
new file mode 100644
index 0000000000..42a54e0015
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/float128/e_sinhf128.c
@@ -0,0 +1,2 @@
+#include <float128_private.h>
+#include "../ldbl-128/e_sinhl.c"
diff --git a/REORG.TODO/sysdeps/ieee754/float128/float1282mpn.c b/REORG.TODO/sysdeps/ieee754/float128/float1282mpn.c
new file mode 100644
index 0000000000..f012ccf0a6
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/float128/float1282mpn.c
@@ -0,0 +1,20 @@
+/* Convert a _Float128 type to multiprecision.
+ Copyright (C) 2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <float128_private.h>
+#include "../ldbl-128/ldbl2mpn.c"
diff --git a/REORG.TODO/sysdeps/ieee754/float128/float128_private.h b/REORG.TODO/sysdeps/ieee754/float128/float128_private.h
new file mode 100644
index 0000000000..1e00853c83
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/float128/float128_private.h
@@ -0,0 +1,326 @@
+/* _Float128 overrides for building ldbl-128 as _Float128.
+ Copyright (C) 2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+/* This must be included before the function renames below. */
+#include <gmp.h>
+#include <math.h>
+#undef HUGE_VALL
+#define HUGE_VALL HUGE_VAL_F128
+#include <math/mul_splitl.h>
+
+/* Renames derived from math_private.h. */
+#include <math_private.h>
+#include <ieee754_float128.h>
+#define ieee854_long_double_shape_type ieee854_float128_shape_type
+#define ieee854_long_double ieee854_float128
+
+#undef GET_LDOUBLE_LSW64
+#undef GET_LDOUBLE_MSW64
+#undef GET_LDOUBLE_WORDS64
+#undef SET_LDOUBLE_LSW64
+#undef SET_LDOUBLE_MSW64
+#undef SET_LDOUBLE_WORDS64
+#define GET_LDOUBLE_LSW64(x,y) GET_FLOAT128_LSW64 (x, y)
+#define GET_LDOUBLE_MSW64(x,y) GET_FLOAT128_MSW64 (x, y)
+#define GET_LDOUBLE_WORDS64(x,y,z) GET_FLOAT128_WORDS64 (x, y, z)
+#define SET_LDOUBLE_LSW64(x,y) SET_FLOAT128_LSW64 (x, y)
+#define SET_LDOUBLE_MSW64(x,y) SET_FLOAT128_MSW64 (x, y)
+#define SET_LDOUBLE_WORDS64(x,y,z) SET_FLOAT128_WORDS64 (x, y, z)
+
+#undef IEEE854_LONG_DOUBLE_BIAS
+#define IEEE854_LONG_DOUBLE_BIAS IEEE854_FLOAT128_BIAS
+
+#ifdef SET_RESTORE_ROUNDF128
+# undef SET_RESTORE_ROUNDL
+# define SET_RESTORE_ROUNDL() SET_RESTORE_ROUNDF128()
+#endif
+
+
+/* misc macros from the header below. */
+#include <fix-fp-int-convert-overflow.h>
+#undef FIX_LDBL_LONG_CONVERT_OVERFLOW
+#undef FIX_LDBL_LLONG_CONVERT_OVERFLOW
+#define FIX_LDBL_LONG_CONVERT_OVERFLOW FIX_FLT128_LONG_CONVERT_OVERFLOW
+#define FIX_LDBL_LLONG_CONVERT_OVERFLOW FIX_FLT128_LLONG_CONVERT_OVERFLOW
+
+
+/* float.h constants. */
+#include <float.h>
+#undef LDBL_DIG
+#undef LDBL_EPSILON
+#undef LDBL_MANT_DIG
+#undef LDBL_MAX
+#undef LDBL_MAX_10_EXP
+#undef LDBL_MAX_EXP
+#undef LDBL_MIN
+#undef LDBL_MIN_10_EXP
+#undef LDBL_MIN_EXP
+#undef LDBL_TRUE_MIN
+#define LDBL_DIG FLT128_DIG
+#define LDBL_EPSILON FLT128_EPSILON
+#define LDBL_MANT_DIG FLT128_MANT_DIG
+#define LDBL_MAX FLT128_MAX
+#define LDBL_MAX_10_EXP FLT128_MAX_10_EXP
+#define LDBL_MAX_EXP FLT128_MAX_EXP
+#define LDBL_MIN FLT128_MIN
+#define LDBL_MIN_10_EXP FLT128_MIN_10_EXP
+#define LDBL_MIN_EXP FLT128_MIN_EXP
+#define LDBL_TRUE_MIN FLT128_TRUE_MIN
+
+
+/* math.h GNU constants. */
+#undef M_El
+#undef M_LOG2El
+#undef M_LOG10El
+#undef M_LN2l
+#undef M_LN10l
+#undef M_PIl
+#undef M_PI_2l
+#undef M_PI_4l
+#undef M_1_PIl
+#undef M_2_PIl
+#undef M_2_SQRTPIl
+#undef M_SQRT2l
+#undef M_SQRT1_2l
+#define M_El M_Ef128
+#define M_LOG2El M_LOG2Ef128
+#define M_LOG10El M_LOG10Ef128
+#define M_LN2l M_LN2f128
+#define M_LN10l M_LN10f128
+#define M_PIl M_PIf128
+#define M_PI_2l M_PI_2f128
+#define M_PI_4l M_PI_4f128
+#define M_1_PIl M_1_PIf128
+#define M_2_PIl M_2_PIf128
+#define M_2_SQRTPIl M_2_SQRTPIf128
+#define M_SQRT2l M_SQRT2f128
+#define M_SQRT1_2l M_SQRT1_2f128
+
+
+/* IEEE function renames. */
+#define __ieee754_acoshl __ieee754_acoshf128
+#define __ieee754_acosl __ieee754_acosf128
+#define __ieee754_asinhl __ieee754_asinhf128
+#define __ieee754_asinl __ieee754_asinf128
+#define __ieee754_atan2l __ieee754_atan2f128
+#define __ieee754_atanhl __ieee754_atanhf128
+#define __ieee754_coshl __ieee754_coshf128
+#define __ieee754_cosl __ieee754_cosf128
+#define __ieee754_exp10l __ieee754_exp10f128
+#define __ieee754_exp2l __ieee754_exp2f128
+#define __ieee754_expl __ieee754_expf128
+#define __ieee754_fmodl __ieee754_fmodf128
+#define __ieee754_gammal_r __ieee754_gammaf128_r
+#define __ieee754_hypotl __ieee754_hypotf128
+#define __ieee754_ilogbl __ieee754_ilogbf128
+#define __ieee754_j0l __ieee754_j0f128
+#define __ieee754_j1l __ieee754_j1f128
+#define __ieee754_jnl __ieee754_jnf128
+#define __ieee754_lgammal_r __ieee754_lgammaf128_r
+#define __ieee754_log10l __ieee754_log10f128
+#define __ieee754_log2l __ieee754_log2f128
+#define __ieee754_logl __ieee754_logf128
+#define __ieee754_powl __ieee754_powf128
+#define __ieee754_rem_pio2l __ieee754_rem_pio2f128
+#define __ieee754_remainderl __ieee754_remainderf128
+#define __ieee754_sinhl __ieee754_sinhf128
+#define __ieee754_sqrtl __ieee754_sqrtf128
+#define __ieee754_y0l __ieee754_y0f128
+#define __ieee754_y1l __ieee754_y1f128
+#define __ieee754_ynl __ieee754_ynf128
+
+
+/* finite math entry points. */
+#define __acoshl_finite __acoshf128_finite
+#define __acosl_finite __acosf128_finite
+#define __asinl_finite __asinf128_finite
+#define __atan2l_finite __atan2f128_finite
+#define __atanhl_finite __atanhf128_finite
+#define __coshl_finite __coshf128_finite
+#define __cosl_finite __cosf128_finite
+#define __exp10l_finite __exp10f128_finite
+#define __exp2l_finite __exp2f128_finite
+#define __expl_finite __expf128_finite
+#define __fmodl_finite __fmodf128_finite
+#define __hypotl_finite __hypotf128_finite
+#define __ilogbl_finite __ilogbf128_finite
+#define __j0l_finite __j0f128_finite
+#define __j1l_finite __j1f128_finite
+#define __jnl_finite __jnf128_finite
+#define __lgammal_r_finite __lgammaf128_r_finite
+#define __log10l_finite __log10f128_finite
+#define __log2l_finite __log2f128_finite
+#define __logl_finite __logf128_finite
+#define __powl_finite __powf128_finite
+#define __remainderl_finite __remainderf128_finite
+#define __sinhl_finite __sinhf128_finite
+#define __y0l_finite __y0f128_finite
+#define __y1l_finite __y1f128_finite
+#define __ynl_finite __ynf128_finite
+
+
+/* internal function names. */
+#define __asinhl __asinhf128
+#define __atanl __atanf128
+#define __cbrtl __cbrtf128
+#define __ceill __ceilf128
+#define __copysignl __copysignf128
+#define __cosl __cosf128
+#define __erfcl __erfcf128
+#define __erfl __erff128
+#define __expl __expf128
+#define __expm1l __expm1f128
+#define __fabsl __fabsf128
+#define __fdiml __fdimf128
+#define __finitel __finitef128
+#define __floorl __floorf128
+#define __fmal __fmaf128
+#define __fmaxl __fmaxf128
+#define __fminl __fminf128
+#define __fpclassifyl __fpclassifyf128
+#define __frexpl __frexpf128
+#define __gammal_r_finite __gammaf128_r_finite
+#define __isinfl __isinff128
+#define __isnanl __isnanf128
+#define __issignalingl __issignalingf128
+#define __ldexpl __ldexpf128
+#define __llrintl __llrintf128
+#define __llroundl __llroundf128
+#define __log1pl __log1pf128
+#define __logbl __logbf128
+#define __logl __logf128
+#define __lrintl __lrintf128
+#define __lroundl __lroundf128
+#define __modfl __modff128
+#define __nearbyintl __nearbyintf128
+#define __nextafterl __nextafterf128
+#define __nextdownl __nextdownf128
+#define __nextupl __nextupf128
+#define __remquol __remquof128
+#define __rintl __rintf128
+#define __roundl __roundf128
+#define __scalblnl __scalblnf128
+#define __scalbnl __scalbnf128
+#define __signbitl __signbitf128
+#define __sincosl __sincosf128
+#define __sinl __sinf128
+#define __sqrtl __sqrtf128
+#define __tanhl __tanhf128
+#define __tanl __tanf128
+#define __truncl __truncf128
+#define __x2y2m1l __x2y2m1f128
+
+/* __nexttowardf128 is not _Float128 API. */
+#define __nexttowardl __nexttowardf128_do_not_use
+#define nexttowardl nexttowardf128_do_not_use
+
+
+/* public entry points. */
+#define asinhl asinhf128
+#define atanl atanf128
+#define cbrtl cbrtf128
+#define ceill ceilf128
+#define copysignl copysignf128
+#define cosl cosf128
+#define erfcl erfcf128
+#define erfl erff128
+#define expl expf128
+#define expm1l expm1f128
+#define fabsl fabsf128
+#define fdiml fdimf128
+#define finitel finitef128_do_not_use
+#define floorl floorf128
+#define fmal fmaf128
+#define fmaxl fmaxf128
+#define fminl fminf128
+#define frexpl frexpf128
+#define getpayloadl getpayloadf128
+#define isinfl isinff128_do_not_use
+#define isnanl isnanf128_do_not_use
+#define ldexpl ldexpf128
+#define llrintl llrintf128
+#define llroundl llroundf128
+#define log1pl log1pf128
+#define logbl logbf128
+#define logl logf128
+#define lrintl lrintf128
+#define lroundl lroundf128
+#define modfl modff128
+#define nanl nanf128
+#define nearbyintl nearbyintf128
+#define nextafterl nextafterf128
+#define nextdownl nextdownf128
+#define nextupl nextupf128
+#define remquol remquof128
+#define rintl rintf128
+#define roundevenl roundevenf128
+#define roundl roundf128
+#define scalbnl scalbnf128
+#define sincosl sincosf128
+#define sinl sinf128
+#define sqrtl sqrtf128
+#define tanhl tanhf128
+#define tanl tanf128
+#define totalorderl totalorderf128
+#define totalordermagl totalordermagf128
+#define truncl truncf128
+
+
+/* misc internal renames. */
+#define __builtin_fmal __builtin_fmaf128
+#define __expl_table __expf128_table
+#define __gamma_productl __gamma_productf128
+#define __kernel_cosl __kernel_cosf128
+#define __kernel_rem_pio2l __kernel_rem_pio2f128
+#define __kernel_sincosl __kernel_sincosf128
+#define __kernel_sinl __kernel_sinf128
+#define __kernel_tanl __kernel_tanf128
+#define __lgamma_negl __lgamma_negf128
+#define __lgamma_productl __lgamma_productf128
+#define __mpn_extract_long_double __mpn_extract_float128
+#define __sincosl_table __sincosf128_table
+#define mul_splitl mul_splitf128
+
+/* Builtin renames. */
+#define __builtin_copysignl __builtin_copysignf128
+#define __builtin_signbitl __builtin_signbit
+
+/* Get the constant suffix from bits/floatn-compat.h. */
+#define L(x) __f128 (x)
+
+static inline void
+mul_splitf128 (_Float128 *hi, _Float128 *lo, _Float128 x, _Float128 y)
+{
+#ifdef __FP_FAST_FMAF128
+ /* Fast built-in fused multiply-add. */
+ *hi = x * y;
+ *lo = __builtin_fmal (x, y, -*hi);
+#else
+ /* Apply Dekker's algorithm. */
+ *hi = x * y;
+# define C ((1LL << (FLT128_MANT_DIG + 1) / 2) + 1)
+ _Float128 x1 = x * C;
+ _Float128 y1 = y * C;
+# undef C
+ x1 = (x - x1) + x1;
+ y1 = (y - y1) + y1;
+ _Float128 x2 = x - x1;
+ _Float128 y2 = y - y1;
+ *lo = (((x1 * y1 - *hi) + x1 * y2) + x2 * y1) + x2 * y2;
+#endif
+}
diff --git a/REORG.TODO/sysdeps/ieee754/float128/gamma_productf128.c b/REORG.TODO/sysdeps/ieee754/float128/gamma_productf128.c
new file mode 100644
index 0000000000..be2271f12f
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/float128/gamma_productf128.c
@@ -0,0 +1,2 @@
+#include <float128_private.h>
+#include "../ldbl-128/gamma_productl.c"
diff --git a/REORG.TODO/sysdeps/ieee754/float128/ieee754_float128.h b/REORG.TODO/sysdeps/ieee754/float128/ieee754_float128.h
new file mode 100644
index 0000000000..e8e7211d88
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/float128/ieee754_float128.h
@@ -0,0 +1,140 @@
+/* _Float128 IEEE like macros.
+ Copyright (C) 2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+#ifndef _IEEE754_FLOAT128_H
+#define _IEEE754_FLOAT128_H
+
+#include <endian.h>
+#include <stdint.h>
+
+# if __FLOAT_WORD_ORDER == BIG_ENDIAN
+# define __FLT_EORDER2(t, a, b) t a; t b;
+# define __FLT_EORDER4(t, a, b, c, d) \
+ t a; t b; t c; t d;
+# define __FLT_EORDER6(t, a, b, c, d, e, f) \
+ t a; t b; t c; t d; t e; t f;
+# define __FLT_EORDER7(t, a, b, c, d, e, f, g) \
+ t a; t b; t c; t d; t e; t f; t g;
+# else
+# define __FLT_EORDER2(t, a, b) \
+ t b; t a;
+# define __FLT_EORDER4(t, a, b, c, d) \
+ t d; t c; t b; t a;
+# define __FLT_EORDER6(t, a, b, c, d, e, f) \
+ t f; t e; t d; t c; t b; t a;
+# define __FLT_EORDER7(t, a, b, c, d, e, f, g) \
+ t g; t f; t e; t d; t c; t b; t a;
+# endif
+
+/* A union which permits us to convert between _Float128 and
+ four 32 bit ints or two 64 bit ints. */
+
+typedef union
+{
+ _Float128 value;
+ struct
+ {
+ __FLT_EORDER2 (uint64_t, msw, lsw);
+ } parts64;
+ struct
+ {
+ __FLT_EORDER4 (uint32_t, w0, w1, w2, w3);
+ } parts32;
+} ieee854_float128_shape_type;
+
+/* Get two 64 bit ints from a _Float128. */
+
+# define GET_FLOAT128_WORDS64(ix0,ix1,d) \
+do { \
+ ieee854_float128_shape_type qw_u; \
+ qw_u.value = (d); \
+ (ix0) = qw_u.parts64.msw; \
+ (ix1) = qw_u.parts64.lsw; \
+} while (0)
+
+/* Set a _Float128 from two 64 bit ints. */
+
+# define SET_FLOAT128_WORDS64(d,ix0,ix1) \
+do { \
+ ieee854_float128_shape_type qw_u; \
+ qw_u.parts64.msw = (ix0); \
+ qw_u.parts64.lsw = (ix1); \
+ (d) = qw_u.value; \
+} while (0)
+
+/* Get the more significant 64 bits of a _Float128 mantissa. */
+
+# define GET_FLOAT128_MSW64(v,d) \
+do { \
+ ieee854_float128_shape_type sh_u; \
+ sh_u.value = (d); \
+ (v) = sh_u.parts64.msw; \
+} while (0)
+
+/* Set the more significant 64 bits of a _Float128 mantissa from an int. */
+
+# define SET_FLOAT128_MSW64(d,v) \
+do { \
+ ieee854_float128_shape_type sh_u; \
+ sh_u.value = (d); \
+ sh_u.parts64.msw = (v); \
+ (d) = sh_u.value; \
+} while (0)
+
+/* Get the least significant 64 bits of a _Float128 mantissa. */
+
+# define GET_FLOAT128_LSW64(v,d) \
+do { \
+ ieee854_float128_shape_type sh_u; \
+ sh_u.value = (d); \
+ (v) = sh_u.parts64.lsw; \
+} while (0)
+
+/* Likewise, some helper macros which are exposed via ieee754.h for
+ C99 real types, but not _Float128. */
+
+union ieee854_float128
+ {
+ _Float128 d;
+
+ /* This is the IEEE 854 quad-precision format. */
+ struct
+ {
+ __FLT_EORDER6 (unsigned int, negative:1,
+ exponent:15,
+ mantissa0:16,
+ mantissa1:32,
+ mantissa2:32,
+ mantissa3:32)
+ } ieee;
+
+ /* This format makes it easier to see if a NaN is a signalling NaN. */
+ struct
+ {
+ __FLT_EORDER7 (unsigned int, negative:1,
+ exponent:15,
+ quiet_nan:1,
+ mantissa0:15,
+ mantissa1:32,
+ mantissa2:32,
+ mantissa3:32)
+ } ieee_nan;
+ };
+
+#define IEEE854_FLOAT128_BIAS 0x3fff /* Added to exponent. */
+
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/float128/k_cosf128.c b/REORG.TODO/sysdeps/ieee754/float128/k_cosf128.c
new file mode 100644
index 0000000000..9db0906e9a
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/float128/k_cosf128.c
@@ -0,0 +1,2 @@
+#include <float128_private.h>
+#include "../ldbl-128/k_cosl.c"
diff --git a/REORG.TODO/sysdeps/ieee754/float128/k_sincosf128.c b/REORG.TODO/sysdeps/ieee754/float128/k_sincosf128.c
new file mode 100644
index 0000000000..14c0f1eccf
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/float128/k_sincosf128.c
@@ -0,0 +1,2 @@
+#include <float128_private.h>
+#include "../ldbl-128/k_sincosl.c"
diff --git a/REORG.TODO/sysdeps/ieee754/float128/k_sinf128.c b/REORG.TODO/sysdeps/ieee754/float128/k_sinf128.c
new file mode 100644
index 0000000000..f3acf1cfe1
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/float128/k_sinf128.c
@@ -0,0 +1,2 @@
+#include <float128_private.h>
+#include "../ldbl-128/k_sinl.c"
diff --git a/REORG.TODO/sysdeps/ieee754/float128/k_tanf128.c b/REORG.TODO/sysdeps/ieee754/float128/k_tanf128.c
new file mode 100644
index 0000000000..ca6be539f7
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/float128/k_tanf128.c
@@ -0,0 +1,2 @@
+#include <float128_private.h>
+#include "../ldbl-128/k_tanl.c"
diff --git a/REORG.TODO/sysdeps/ieee754/float128/lgamma_negf128.c b/REORG.TODO/sysdeps/ieee754/float128/lgamma_negf128.c
new file mode 100644
index 0000000000..9c16f93025
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/float128/lgamma_negf128.c
@@ -0,0 +1,2 @@
+#include <float128_private.h>
+#include "../ldbl-128/lgamma_negl.c"
diff --git a/REORG.TODO/sysdeps/ieee754/float128/lgamma_productf128.c b/REORG.TODO/sysdeps/ieee754/float128/lgamma_productf128.c
new file mode 100644
index 0000000000..5efe5dd576
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/float128/lgamma_productf128.c
@@ -0,0 +1,2 @@
+#include <float128_private.h>
+#include "../ldbl-128/lgamma_productl.c"
diff --git a/REORG.TODO/sysdeps/ieee754/float128/s_asinhf128.c b/REORG.TODO/sysdeps/ieee754/float128/s_asinhf128.c
new file mode 100644
index 0000000000..7b93d8cf3a
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/float128/s_asinhf128.c
@@ -0,0 +1,2 @@
+#include <float128_private.h>
+#include "../ldbl-128/s_asinhl.c"
diff --git a/REORG.TODO/sysdeps/ieee754/float128/s_atanf128.c b/REORG.TODO/sysdeps/ieee754/float128/s_atanf128.c
new file mode 100644
index 0000000000..9b4d7ecec3
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/float128/s_atanf128.c
@@ -0,0 +1,2 @@
+#include <float128_private.h>
+#include "../ldbl-128/s_atanl.c"
diff --git a/REORG.TODO/sysdeps/ieee754/float128/s_cbrtf128.c b/REORG.TODO/sysdeps/ieee754/float128/s_cbrtf128.c
new file mode 100644
index 0000000000..3bd5797373
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/float128/s_cbrtf128.c
@@ -0,0 +1,2 @@
+#include <float128_private.h>
+#include "../ldbl-128/s_cbrtl.c"
diff --git a/REORG.TODO/sysdeps/ieee754/float128/s_ceilf128.c b/REORG.TODO/sysdeps/ieee754/float128/s_ceilf128.c
new file mode 100644
index 0000000000..0af15f5f03
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/float128/s_ceilf128.c
@@ -0,0 +1,2 @@
+#include <float128_private.h>
+#include "../ldbl-128/s_ceill.c"
diff --git a/REORG.TODO/sysdeps/ieee754/float128/s_copysignf128.c b/REORG.TODO/sysdeps/ieee754/float128/s_copysignf128.c
new file mode 100644
index 0000000000..808f7abbc0
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/float128/s_copysignf128.c
@@ -0,0 +1,2 @@
+#include <float128_private.h>
+#include "../ldbl-128/s_copysignl.c"
diff --git a/REORG.TODO/sysdeps/ieee754/float128/s_cosf128.c b/REORG.TODO/sysdeps/ieee754/float128/s_cosf128.c
new file mode 100644
index 0000000000..8ba552695c
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/float128/s_cosf128.c
@@ -0,0 +1,2 @@
+#include <float128_private.h>
+#include "../ldbl-128/s_cosl.c"
diff --git a/REORG.TODO/sysdeps/ieee754/float128/s_erff128.c b/REORG.TODO/sysdeps/ieee754/float128/s_erff128.c
new file mode 100644
index 0000000000..ac16ad6665
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/float128/s_erff128.c
@@ -0,0 +1,2 @@
+#include <float128_private.h>
+#include "../ldbl-128/s_erfl.c"
diff --git a/REORG.TODO/sysdeps/ieee754/float128/s_expm1f128.c b/REORG.TODO/sysdeps/ieee754/float128/s_expm1f128.c
new file mode 100644
index 0000000000..ea28d89db4
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/float128/s_expm1f128.c
@@ -0,0 +1,2 @@
+#include <float128_private.h>
+#include "../ldbl-128/s_expm1l.c"
diff --git a/REORG.TODO/sysdeps/ieee754/float128/s_fabsf128.c b/REORG.TODO/sysdeps/ieee754/float128/s_fabsf128.c
new file mode 100644
index 0000000000..79ba47c3fd
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/float128/s_fabsf128.c
@@ -0,0 +1,2 @@
+#include <float128_private.h>
+#include "../ldbl-128/s_fabsl.c"
diff --git a/REORG.TODO/sysdeps/ieee754/float128/s_finitef128.c b/REORG.TODO/sysdeps/ieee754/float128/s_finitef128.c
new file mode 100644
index 0000000000..801de88e32
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/float128/s_finitef128.c
@@ -0,0 +1,2 @@
+#include <float128_private.h>
+#include "../ldbl-128/s_finitel.c"
diff --git a/REORG.TODO/sysdeps/ieee754/float128/s_floorf128.c b/REORG.TODO/sysdeps/ieee754/float128/s_floorf128.c
new file mode 100644
index 0000000000..18298436a1
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/float128/s_floorf128.c
@@ -0,0 +1,2 @@
+#include <float128_private.h>
+#include "../ldbl-128/s_floorl.c"
diff --git a/REORG.TODO/sysdeps/ieee754/float128/s_fmaf128.c b/REORG.TODO/sysdeps/ieee754/float128/s_fmaf128.c
new file mode 100644
index 0000000000..6497895c8d
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/float128/s_fmaf128.c
@@ -0,0 +1,2 @@
+#include <float128_private.h>
+#include "../ldbl-128/s_fmal.c"
diff --git a/REORG.TODO/sysdeps/ieee754/float128/s_fpclassifyf128.c b/REORG.TODO/sysdeps/ieee754/float128/s_fpclassifyf128.c
new file mode 100644
index 0000000000..15131dc4a2
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/float128/s_fpclassifyf128.c
@@ -0,0 +1,2 @@
+#include <float128_private.h>
+#include "../ldbl-128/s_fpclassifyl.c"
diff --git a/REORG.TODO/sysdeps/ieee754/float128/s_frexpf128.c b/REORG.TODO/sysdeps/ieee754/float128/s_frexpf128.c
new file mode 100644
index 0000000000..7b040b3e33
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/float128/s_frexpf128.c
@@ -0,0 +1,2 @@
+#include <float128_private.h>
+#include "../ldbl-128/s_frexpl.c"
diff --git a/REORG.TODO/sysdeps/ieee754/float128/s_fromfpf128.c b/REORG.TODO/sysdeps/ieee754/float128/s_fromfpf128.c
new file mode 100644
index 0000000000..891de3d448
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/float128/s_fromfpf128.c
@@ -0,0 +1,5 @@
+#define UNSIGNED 0
+#define INEXACT 0
+#define FUNC fromfpf128
+#include <float128_private.h>
+#include "../ldbl-128/s_fromfpl_main.c"
diff --git a/REORG.TODO/sysdeps/ieee754/float128/s_fromfpxf128.c b/REORG.TODO/sysdeps/ieee754/float128/s_fromfpxf128.c
new file mode 100644
index 0000000000..21676fab03
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/float128/s_fromfpxf128.c
@@ -0,0 +1,5 @@
+#define UNSIGNED 0
+#define INEXACT 1
+#define FUNC fromfpxf128
+#include <float128_private.h>
+#include "../ldbl-128/s_fromfpl_main.c"
diff --git a/REORG.TODO/sysdeps/ieee754/float128/s_getpayloadf128.c b/REORG.TODO/sysdeps/ieee754/float128/s_getpayloadf128.c
new file mode 100644
index 0000000000..2e2607a81b
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/float128/s_getpayloadf128.c
@@ -0,0 +1,2 @@
+#include <float128_private.h>
+#include "../ldbl-128/s_getpayloadl.c"
diff --git a/REORG.TODO/sysdeps/ieee754/float128/s_isinff128.c b/REORG.TODO/sysdeps/ieee754/float128/s_isinff128.c
new file mode 100644
index 0000000000..62cc424b16
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/float128/s_isinff128.c
@@ -0,0 +1,2 @@
+#include <float128_private.h>
+#include "../ldbl-128/s_isinfl.c"
diff --git a/REORG.TODO/sysdeps/ieee754/float128/s_isnanf128.c b/REORG.TODO/sysdeps/ieee754/float128/s_isnanf128.c
new file mode 100644
index 0000000000..efba24059a
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/float128/s_isnanf128.c
@@ -0,0 +1,2 @@
+#include <float128_private.h>
+#include "../ldbl-128/s_isnanl.c"
diff --git a/REORG.TODO/sysdeps/ieee754/float128/s_issignalingf128.c b/REORG.TODO/sysdeps/ieee754/float128/s_issignalingf128.c
new file mode 100644
index 0000000000..1d4599544f
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/float128/s_issignalingf128.c
@@ -0,0 +1,2 @@
+#include <float128_private.h>
+#include "../ldbl-128/s_issignalingl.c"
diff --git a/REORG.TODO/sysdeps/ieee754/float128/s_llrintf128.c b/REORG.TODO/sysdeps/ieee754/float128/s_llrintf128.c
new file mode 100644
index 0000000000..bb9ca580cd
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/float128/s_llrintf128.c
@@ -0,0 +1,2 @@
+#include <float128_private.h>
+#include "../ldbl-128/s_llrintl.c"
diff --git a/REORG.TODO/sysdeps/ieee754/float128/s_llroundf128.c b/REORG.TODO/sysdeps/ieee754/float128/s_llroundf128.c
new file mode 100644
index 0000000000..be54a90608
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/float128/s_llroundf128.c
@@ -0,0 +1,2 @@
+#include <float128_private.h>
+#include "../ldbl-128/s_llroundl.c"
diff --git a/REORG.TODO/sysdeps/ieee754/float128/s_log1pf128.c b/REORG.TODO/sysdeps/ieee754/float128/s_log1pf128.c
new file mode 100644
index 0000000000..48bb84f987
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/float128/s_log1pf128.c
@@ -0,0 +1,2 @@
+#include <float128_private.h>
+#include "../ldbl-128/s_log1pl.c"
diff --git a/REORG.TODO/sysdeps/ieee754/float128/s_logbf128.c b/REORG.TODO/sysdeps/ieee754/float128/s_logbf128.c
new file mode 100644
index 0000000000..167384a8d4
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/float128/s_logbf128.c
@@ -0,0 +1,2 @@
+#include <float128_private.h>
+#include "../ldbl-128/s_logbl.c"
diff --git a/REORG.TODO/sysdeps/ieee754/float128/s_lrintf128.c b/REORG.TODO/sysdeps/ieee754/float128/s_lrintf128.c
new file mode 100644
index 0000000000..1cfa9d7ca4
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/float128/s_lrintf128.c
@@ -0,0 +1,2 @@
+#include <float128_private.h>
+#include "../ldbl-128/s_lrintl.c"
diff --git a/REORG.TODO/sysdeps/ieee754/float128/s_lroundf128.c b/REORG.TODO/sysdeps/ieee754/float128/s_lroundf128.c
new file mode 100644
index 0000000000..13ba9f220d
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/float128/s_lroundf128.c
@@ -0,0 +1,2 @@
+#include <float128_private.h>
+#include "../ldbl-128/s_lroundl.c"
diff --git a/REORG.TODO/sysdeps/ieee754/float128/s_modff128.c b/REORG.TODO/sysdeps/ieee754/float128/s_modff128.c
new file mode 100644
index 0000000000..4618c6c380
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/float128/s_modff128.c
@@ -0,0 +1,2 @@
+#include <float128_private.h>
+#include "../ldbl-128/s_modfl.c"
diff --git a/REORG.TODO/sysdeps/ieee754/float128/s_nearbyintf128.c b/REORG.TODO/sysdeps/ieee754/float128/s_nearbyintf128.c
new file mode 100644
index 0000000000..e61a3b3bfb
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/float128/s_nearbyintf128.c
@@ -0,0 +1,2 @@
+#include <float128_private.h>
+#include "../ldbl-128/s_nearbyintl.c"
diff --git a/REORG.TODO/sysdeps/ieee754/float128/s_nextafterf128.c b/REORG.TODO/sysdeps/ieee754/float128/s_nextafterf128.c
new file mode 100644
index 0000000000..2c43a00384
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/float128/s_nextafterf128.c
@@ -0,0 +1,2 @@
+#include <float128_private.h>
+#include "../ldbl-128/s_nextafterl.c"
diff --git a/REORG.TODO/sysdeps/ieee754/float128/s_nexttowardf128.c b/REORG.TODO/sysdeps/ieee754/float128/s_nexttowardf128.c
new file mode 100644
index 0000000000..006e4c98b1
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/float128/s_nexttowardf128.c
@@ -0,0 +1 @@
+/* This function does not exist for _FloatN types. */
diff --git a/REORG.TODO/sysdeps/ieee754/float128/s_nextupf128.c b/REORG.TODO/sysdeps/ieee754/float128/s_nextupf128.c
new file mode 100644
index 0000000000..7d5d0b8c72
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/float128/s_nextupf128.c
@@ -0,0 +1,2 @@
+#include <float128_private.h>
+#include "../ldbl-128/s_nextupl.c"
diff --git a/REORG.TODO/sysdeps/ieee754/float128/s_remquof128.c b/REORG.TODO/sysdeps/ieee754/float128/s_remquof128.c
new file mode 100644
index 0000000000..1cef61ab1b
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/float128/s_remquof128.c
@@ -0,0 +1,2 @@
+#include <float128_private.h>
+#include "../ldbl-128/s_remquol.c"
diff --git a/REORG.TODO/sysdeps/ieee754/float128/s_rintf128.c b/REORG.TODO/sysdeps/ieee754/float128/s_rintf128.c
new file mode 100644
index 0000000000..2adb95f360
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/float128/s_rintf128.c
@@ -0,0 +1,2 @@
+#include <float128_private.h>
+#include "../ldbl-128/s_rintl.c"
diff --git a/REORG.TODO/sysdeps/ieee754/float128/s_roundevenf128.c b/REORG.TODO/sysdeps/ieee754/float128/s_roundevenf128.c
new file mode 100644
index 0000000000..5a9b3f395f
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/float128/s_roundevenf128.c
@@ -0,0 +1,2 @@
+#include <float128_private.h>
+#include "../ldbl-128/s_roundevenl.c"
diff --git a/REORG.TODO/sysdeps/ieee754/float128/s_roundf128.c b/REORG.TODO/sysdeps/ieee754/float128/s_roundf128.c
new file mode 100644
index 0000000000..1eb36f2a5e
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/float128/s_roundf128.c
@@ -0,0 +1,2 @@
+#include <float128_private.h>
+#include "../ldbl-128/s_roundl.c"
diff --git a/REORG.TODO/sysdeps/ieee754/float128/s_scalblnf128.c b/REORG.TODO/sysdeps/ieee754/float128/s_scalblnf128.c
new file mode 100644
index 0000000000..999223c517
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/float128/s_scalblnf128.c
@@ -0,0 +1,2 @@
+#include <float128_private.h>
+#include "../ldbl-128/s_scalblnl.c"
diff --git a/REORG.TODO/sysdeps/ieee754/float128/s_scalbnf128.c b/REORG.TODO/sysdeps/ieee754/float128/s_scalbnf128.c
new file mode 100644
index 0000000000..0e7ab2663b
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/float128/s_scalbnf128.c
@@ -0,0 +1,2 @@
+#include <float128_private.h>
+#include "../ldbl-128/s_scalbnl.c"
diff --git a/REORG.TODO/sysdeps/ieee754/float128/s_setpayloadf128.c b/REORG.TODO/sysdeps/ieee754/float128/s_setpayloadf128.c
new file mode 100644
index 0000000000..63e046a269
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/float128/s_setpayloadf128.c
@@ -0,0 +1,4 @@
+#include <float128_private.h>
+#define SIG 0
+#define FUNC setpayloadf128
+#include "../ldbl-128/s_setpayloadl_main.c"
diff --git a/REORG.TODO/sysdeps/ieee754/float128/s_setpayloadsigf128.c b/REORG.TODO/sysdeps/ieee754/float128/s_setpayloadsigf128.c
new file mode 100644
index 0000000000..85b2c4a1a8
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/float128/s_setpayloadsigf128.c
@@ -0,0 +1,4 @@
+#include <float128_private.h>
+#define SIG 1
+#define FUNC setpayloadsigf128
+#include "../ldbl-128/s_setpayloadl_main.c"
diff --git a/REORG.TODO/sysdeps/ieee754/float128/s_signbitf128.c b/REORG.TODO/sysdeps/ieee754/float128/s_signbitf128.c
new file mode 100644
index 0000000000..71c1ca3a34
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/float128/s_signbitf128.c
@@ -0,0 +1,2 @@
+#include <float128_private.h>
+#include "../ldbl-128/s_signbitl.c"
diff --git a/REORG.TODO/sysdeps/ieee754/float128/s_significandf128.c b/REORG.TODO/sysdeps/ieee754/float128/s_significandf128.c
new file mode 100644
index 0000000000..067b724164
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/float128/s_significandf128.c
@@ -0,0 +1 @@
+/* Not defined for _FloatN types. */
diff --git a/REORG.TODO/sysdeps/ieee754/float128/s_sincosf128.c b/REORG.TODO/sysdeps/ieee754/float128/s_sincosf128.c
new file mode 100644
index 0000000000..472adde17f
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/float128/s_sincosf128.c
@@ -0,0 +1,2 @@
+#include <float128_private.h>
+#include "../ldbl-128/s_sincosl.c"
diff --git a/REORG.TODO/sysdeps/ieee754/float128/s_sinf128.c b/REORG.TODO/sysdeps/ieee754/float128/s_sinf128.c
new file mode 100644
index 0000000000..d79a1163a5
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/float128/s_sinf128.c
@@ -0,0 +1,2 @@
+#include <float128_private.h>
+#include "../ldbl-128/s_sinl.c"
diff --git a/REORG.TODO/sysdeps/ieee754/float128/s_tanf128.c b/REORG.TODO/sysdeps/ieee754/float128/s_tanf128.c
new file mode 100644
index 0000000000..382961aada
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/float128/s_tanf128.c
@@ -0,0 +1,2 @@
+#include <float128_private.h>
+#include "../ldbl-128/s_tanl.c"
diff --git a/REORG.TODO/sysdeps/ieee754/float128/s_tanhf128.c b/REORG.TODO/sysdeps/ieee754/float128/s_tanhf128.c
new file mode 100644
index 0000000000..e02c9a6005
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/float128/s_tanhf128.c
@@ -0,0 +1,2 @@
+#include <float128_private.h>
+#include "../ldbl-128/s_tanhl.c"
diff --git a/REORG.TODO/sysdeps/ieee754/float128/s_totalorderf128.c b/REORG.TODO/sysdeps/ieee754/float128/s_totalorderf128.c
new file mode 100644
index 0000000000..1b115d8307
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/float128/s_totalorderf128.c
@@ -0,0 +1,2 @@
+#include <float128_private.h>
+#include "../ldbl-128/s_totalorderl.c"
diff --git a/REORG.TODO/sysdeps/ieee754/float128/s_totalordermagf128.c b/REORG.TODO/sysdeps/ieee754/float128/s_totalordermagf128.c
new file mode 100644
index 0000000000..e44c657275
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/float128/s_totalordermagf128.c
@@ -0,0 +1,2 @@
+#include <float128_private.h>
+#include "../ldbl-128/s_totalordermagl.c"
diff --git a/REORG.TODO/sysdeps/ieee754/float128/s_truncf128.c b/REORG.TODO/sysdeps/ieee754/float128/s_truncf128.c
new file mode 100644
index 0000000000..474d9dc77e
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/float128/s_truncf128.c
@@ -0,0 +1,2 @@
+#include <float128_private.h>
+#include "../ldbl-128/s_truncl.c"
diff --git a/REORG.TODO/sysdeps/ieee754/float128/s_ufromfpf128.c b/REORG.TODO/sysdeps/ieee754/float128/s_ufromfpf128.c
new file mode 100644
index 0000000000..0cd2281035
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/float128/s_ufromfpf128.c
@@ -0,0 +1,5 @@
+#define UNSIGNED 1
+#define INEXACT 0
+#define FUNC ufromfpf128
+#include <float128_private.h>
+#include "../ldbl-128/s_fromfpl_main.c"
diff --git a/REORG.TODO/sysdeps/ieee754/float128/s_ufromfpxf128.c b/REORG.TODO/sysdeps/ieee754/float128/s_ufromfpxf128.c
new file mode 100644
index 0000000000..c0cd7e3bc8
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/float128/s_ufromfpxf128.c
@@ -0,0 +1,5 @@
+#define UNSIGNED 1
+#define INEXACT 1
+#define FUNC ufromfpxf128
+#include <float128_private.h>
+#include "../ldbl-128/s_fromfpl_main.c"
diff --git a/REORG.TODO/sysdeps/ieee754/float128/strfromf128.c b/REORG.TODO/sysdeps/ieee754/float128/strfromf128.c
new file mode 100644
index 0000000000..597c7e62f9
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/float128/strfromf128.c
@@ -0,0 +1,25 @@
+/* Definitions for strfromf128. Implementation in stdlib/strfrom-skeleton.c.
+
+ Copyright (C) 2017 Free Software Foundation, Inc.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#define FLOAT _Float128
+#define STRFROM strfromf128
+
+#include <bits/floatn.h>
+#include <float128_private.h>
+
+#include <stdlib/strfrom-skeleton.c>
diff --git a/REORG.TODO/sysdeps/ieee754/float128/t_sincosf128.c b/REORG.TODO/sysdeps/ieee754/float128/t_sincosf128.c
new file mode 100644
index 0000000000..7e699d3c8e
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/float128/t_sincosf128.c
@@ -0,0 +1,2 @@
+#include <float128_private.h>
+#include "../ldbl-128/t_sincosl.c"
diff --git a/REORG.TODO/sysdeps/ieee754/float128/x2y2m1f128.c b/REORG.TODO/sysdeps/ieee754/float128/x2y2m1f128.c
new file mode 100644
index 0000000000..68880792e6
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/float128/x2y2m1f128.c
@@ -0,0 +1,2 @@
+#include <float128_private.h>
+#include "../ldbl-128/x2y2m1l.c"
diff --git a/REORG.TODO/sysdeps/ieee754/flt-32/e_acosf.c b/REORG.TODO/sysdeps/ieee754/flt-32/e_acosf.c
new file mode 100644
index 0000000000..6f792f6604
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/flt-32/e_acosf.c
@@ -0,0 +1,78 @@
+/* e_acosf.c -- float version of e_acos.c.
+ * Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#include <math.h>
+#include <math_private.h>
+
+static const float
+one = 1.0000000000e+00, /* 0x3F800000 */
+pi = 3.1415925026e+00, /* 0x40490fda */
+pio2_hi = 1.5707962513e+00, /* 0x3fc90fda */
+pio2_lo = 7.5497894159e-08, /* 0x33a22168 */
+pS0 = 1.6666667163e-01, /* 0x3e2aaaab */
+pS1 = -3.2556581497e-01, /* 0xbea6b090 */
+pS2 = 2.0121252537e-01, /* 0x3e4e0aa8 */
+pS3 = -4.0055535734e-02, /* 0xbd241146 */
+pS4 = 7.9153501429e-04, /* 0x3a4f7f04 */
+pS5 = 3.4793309169e-05, /* 0x3811ef08 */
+qS1 = -2.4033949375e+00, /* 0xc019d139 */
+qS2 = 2.0209457874e+00, /* 0x4001572d */
+qS3 = -6.8828397989e-01, /* 0xbf303361 */
+qS4 = 7.7038154006e-02; /* 0x3d9dc62e */
+
+float
+__ieee754_acosf(float x)
+{
+ float z,p,q,r,w,s,c,df;
+ int32_t hx,ix;
+ GET_FLOAT_WORD(hx,x);
+ ix = hx&0x7fffffff;
+ if(ix==0x3f800000) { /* |x|==1 */
+ if(hx>0) return 0.0; /* acos(1) = 0 */
+ else return pi+(float)2.0*pio2_lo; /* acos(-1)= pi */
+ } else if(ix>0x3f800000) { /* |x| >= 1 */
+ return (x-x)/(x-x); /* acos(|x|>1) is NaN */
+ }
+ if(ix<0x3f000000) { /* |x| < 0.5 */
+ if(ix<=0x32800000) return pio2_hi+pio2_lo;/*if|x|<=2**-26*/
+ z = x*x;
+ p = z*(pS0+z*(pS1+z*(pS2+z*(pS3+z*(pS4+z*pS5)))));
+ q = one+z*(qS1+z*(qS2+z*(qS3+z*qS4)));
+ r = p/q;
+ return pio2_hi - (x - (pio2_lo-x*r));
+ } else if (hx<0) { /* x < -0.5 */
+ z = (one+x)*(float)0.5;
+ p = z*(pS0+z*(pS1+z*(pS2+z*(pS3+z*(pS4+z*pS5)))));
+ q = one+z*(qS1+z*(qS2+z*(qS3+z*qS4)));
+ s = __ieee754_sqrtf(z);
+ r = p/q;
+ w = r*s-pio2_lo;
+ return pi - (float)2.0*(s+w);
+ } else { /* x > 0.5 */
+ int32_t idf;
+ z = (one-x)*(float)0.5;
+ s = __ieee754_sqrtf(z);
+ df = s;
+ GET_FLOAT_WORD(idf,df);
+ SET_FLOAT_WORD(df,idf&0xfffff000);
+ c = (z-df*df)/(s+df);
+ p = z*(pS0+z*(pS1+z*(pS2+z*(pS3+z*(pS4+z*pS5)))));
+ q = one+z*(qS1+z*(qS2+z*(qS3+z*qS4)));
+ r = p/q;
+ w = r*s+c;
+ return (float)2.0*(df+w);
+ }
+}
+strong_alias (__ieee754_acosf, __acosf_finite)
diff --git a/REORG.TODO/sysdeps/ieee754/flt-32/e_acoshf.c b/REORG.TODO/sysdeps/ieee754/flt-32/e_acoshf.c
new file mode 100644
index 0000000000..aabfb85df7
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/flt-32/e_acoshf.c
@@ -0,0 +1,49 @@
+/* e_acoshf.c -- float version of e_acosh.c.
+ * Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: e_acoshf.c,v 1.5 1995/05/12 04:57:20 jtc Exp $";
+#endif
+
+#include <math.h>
+#include <math_private.h>
+
+static const float
+one = 1.0,
+ln2 = 6.9314718246e-01; /* 0x3f317218 */
+
+float __ieee754_acoshf(float x)
+{
+ float t;
+ int32_t hx;
+ GET_FLOAT_WORD(hx,x);
+ if(hx<0x3f800000) { /* x < 1 */
+ return (x-x)/(x-x);
+ } else if(hx >=0x4d800000) { /* x > 2**28 */
+ if(hx >=0x7f800000) { /* x is inf of NaN */
+ return x+x;
+ } else
+ return __ieee754_logf(x)+ln2; /* acosh(huge)=log(2x) */
+ } else if (hx==0x3f800000) {
+ return 0.0; /* acosh(1) = 0 */
+ } else if (hx > 0x40000000) { /* 2**28 > x > 2 */
+ t=x*x;
+ return __ieee754_logf((float)2.0*x-one/(x+__ieee754_sqrtf(t-one)));
+ } else { /* 1<x<2 */
+ t = x-one;
+ return __log1pf(t+__ieee754_sqrtf((float)2.0*t+t*t));
+ }
+}
+strong_alias (__ieee754_acoshf, __acoshf_finite)
diff --git a/REORG.TODO/sysdeps/ieee754/flt-32/e_asinf.c b/REORG.TODO/sysdeps/ieee754/flt-32/e_asinf.c
new file mode 100644
index 0000000000..2ca2dbcb28
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/flt-32/e_asinf.c
@@ -0,0 +1,104 @@
+/* e_asinf.c -- float version of e_asin.c.
+ * Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+/*
+ Modifications for single precision expansion are
+ Copyright (C) 2001 Stephen L. Moshier <moshier@na-net.ornl.gov>
+ and are incorporated herein by permission of the author. The author
+ reserves the right to distribute this material elsewhere under different
+ copying permissions. These modifications are distributed here under
+ the following terms:
+
+ This 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 2.1 of the License, or (at your option) any later version.
+
+ This 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 this library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: e_asinf.c,v 1.5 1995/05/12 04:57:25 jtc Exp $";
+#endif
+
+#include <float.h>
+#include <math.h>
+#include <math_private.h>
+
+static const float
+one = 1.0000000000e+00, /* 0x3F800000 */
+huge = 1.000e+30,
+
+pio2_hi = 1.57079637050628662109375f,
+pio2_lo = -4.37113900018624283e-8f,
+pio4_hi = 0.785398185253143310546875f,
+
+/* asin x = x + x^3 p(x^2)
+ -0.5 <= x <= 0.5;
+ Peak relative error 4.8e-9 */
+p0 = 1.666675248e-1f,
+p1 = 7.495297643e-2f,
+p2 = 4.547037598e-2f,
+p3 = 2.417951451e-2f,
+p4 = 4.216630880e-2f;
+
+float __ieee754_asinf(float x)
+{
+ float t,w,p,q,c,r,s;
+ int32_t hx,ix;
+ GET_FLOAT_WORD(hx,x);
+ ix = hx&0x7fffffff;
+ if(ix==0x3f800000) {
+ /* asin(1)=+-pi/2 with inexact */
+ return x*pio2_hi+x*pio2_lo;
+ } else if(ix> 0x3f800000) { /* |x|>= 1 */
+ return (x-x)/(x-x); /* asin(|x|>1) is NaN */
+ } else if (ix<0x3f000000) { /* |x|<0.5 */
+ if(ix<0x32000000) { /* if |x| < 2**-27 */
+ math_check_force_underflow (x);
+ if(huge+x>one) return x;/* return x with inexact if x!=0*/
+ } else {
+ t = x*x;
+ w = t * (p0 + t * (p1 + t * (p2 + t * (p3 + t * p4))));
+ return x+x*w;
+ }
+ }
+ /* 1> |x|>= 0.5 */
+ w = one-fabsf(x);
+ t = w*0.5f;
+ p = t * (p0 + t * (p1 + t * (p2 + t * (p3 + t * p4))));
+ s = __ieee754_sqrtf(t);
+ if(ix>=0x3F79999A) { /* if |x| > 0.975 */
+ t = pio2_hi-(2.0f*(s+s*p)-pio2_lo);
+ } else {
+ int32_t iw;
+ w = s;
+ GET_FLOAT_WORD(iw,w);
+ SET_FLOAT_WORD(w,iw&0xfffff000);
+ c = (t-w*w)/(s+w);
+ r = p;
+ p = 2.0f*s*r-(pio2_lo-2.0f*c);
+ q = pio4_hi-2.0f*w;
+ t = pio4_hi-(p-q);
+ }
+ if(hx>0) return t; else return -t;
+}
+strong_alias (__ieee754_asinf, __asinf_finite)
diff --git a/REORG.TODO/sysdeps/ieee754/flt-32/e_atan2f.c b/REORG.TODO/sysdeps/ieee754/flt-32/e_atan2f.c
new file mode 100644
index 0000000000..29eefc0dd6
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/flt-32/e_atan2f.c
@@ -0,0 +1,94 @@
+/* e_atan2f.c -- float version of e_atan2.c.
+ * Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#include <math.h>
+#include <math_private.h>
+
+static const float
+tiny = 1.0e-30,
+zero = 0.0,
+pi_o_4 = 7.8539818525e-01, /* 0x3f490fdb */
+pi_o_2 = 1.5707963705e+00, /* 0x3fc90fdb */
+pi = 3.1415927410e+00, /* 0x40490fdb */
+pi_lo = -8.7422776573e-08; /* 0xb3bbbd2e */
+
+float
+__ieee754_atan2f (float y, float x)
+{
+ float z;
+ int32_t k,m,hx,hy,ix,iy;
+
+ GET_FLOAT_WORD(hx,x);
+ ix = hx&0x7fffffff;
+ GET_FLOAT_WORD(hy,y);
+ iy = hy&0x7fffffff;
+ if((ix>0x7f800000)||
+ (iy>0x7f800000)) /* x or y is NaN */
+ return x+y;
+ if(hx==0x3f800000) return __atanf(y); /* x=1.0 */
+ m = ((hy>>31)&1)|((hx>>30)&2); /* 2*sign(x)+sign(y) */
+
+ /* when y = 0 */
+ if(iy==0) {
+ switch(m) {
+ case 0:
+ case 1: return y; /* atan(+-0,+anything)=+-0 */
+ case 2: return pi+tiny;/* atan(+0,-anything) = pi */
+ case 3: return -pi-tiny;/* atan(-0,-anything) =-pi */
+ }
+ }
+ /* when x = 0 */
+ if(ix==0) return (hy<0)? -pi_o_2-tiny: pi_o_2+tiny;
+
+ /* when x is INF */
+ if(ix==0x7f800000) {
+ if(iy==0x7f800000) {
+ switch(m) {
+ case 0: return pi_o_4+tiny;/* atan(+INF,+INF) */
+ case 1: return -pi_o_4-tiny;/* atan(-INF,+INF) */
+ case 2: return (float)3.0*pi_o_4+tiny;/*atan(+INF,-INF)*/
+ case 3: return (float)-3.0*pi_o_4-tiny;/*atan(-INF,-INF)*/
+ }
+ } else {
+ switch(m) {
+ case 0: return zero ; /* atan(+...,+INF) */
+ case 1: return -zero ; /* atan(-...,+INF) */
+ case 2: return pi+tiny ; /* atan(+...,-INF) */
+ case 3: return -pi-tiny ; /* atan(-...,-INF) */
+ }
+ }
+ }
+ /* when y is INF */
+ if(iy==0x7f800000) return (hy<0)? -pi_o_2-tiny: pi_o_2+tiny;
+
+ /* compute y/x */
+ k = (iy-ix)>>23;
+ if(k > 60) z=pi_o_2+(float)0.5*pi_lo; /* |y/x| > 2**60 */
+ else if(hx<0&&k<-60) z=0.0; /* |y|/x < -2**60 */
+ else z=__atanf(fabsf(y/x)); /* safe to do y/x */
+ switch (m) {
+ case 0: return z ; /* atan(+,+) */
+ case 1: {
+ u_int32_t zh;
+ GET_FLOAT_WORD(zh,z);
+ SET_FLOAT_WORD(z,zh ^ 0x80000000);
+ }
+ return z ; /* atan(-,+) */
+ case 2: return pi-(z-pi_lo);/* atan(+,-) */
+ default: /* case 3 */
+ return (z-pi_lo)-pi;/* atan(-,-) */
+ }
+}
+strong_alias (__ieee754_atan2f, __atan2f_finite)
diff --git a/REORG.TODO/sysdeps/ieee754/flt-32/e_atanhf.c b/REORG.TODO/sysdeps/ieee754/flt-32/e_atanhf.c
new file mode 100644
index 0000000000..feb6beeec7
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/flt-32/e_atanhf.c
@@ -0,0 +1,74 @@
+/* Copyright (C) 2011-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@gmail.com>, 2011.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+
+/* __ieee754_atanh(x)
+ Method :
+ 1.Reduced x to positive by atanh(-x) = -atanh(x)
+ 2.For x>=0.5
+ 1 2x x
+ atanh(x) = --- * log(1 + -------) = 0.5 * log1p(2 * --------)
+ 2 1 - x 1 - x
+
+ For x<0.5
+ atanh(x) = 0.5*log1p(2x+2x*x/(1-x))
+
+ Special cases:
+ atanh(x) is NaN if |x| > 1 with signal;
+ atanh(NaN) is that NaN with no signal;
+ atanh(+-1) is +-INF with signal.
+
+ */
+
+#include <float.h>
+#include <inttypes.h>
+#include <math.h>
+#include <math_private.h>
+
+static const float huge = 1e30;
+
+float
+__ieee754_atanhf (float x)
+{
+ float xa = fabsf (x);
+ float t;
+ if (isless (xa, 0.5f))
+ {
+ if (__glibc_unlikely (xa < 0x1.0p-28f))
+ {
+ math_force_eval (huge + x);
+ math_check_force_underflow (x);
+ return x;
+ }
+
+ t = xa + xa;
+ t = 0.5f * __log1pf (t + t * xa / (1.0f - xa));
+ }
+ else if (__glibc_likely (isless (xa, 1.0f)))
+ t = 0.5f * __log1pf ((xa + xa) / (1.0f - xa));
+ else
+ {
+ if (isgreater (xa, 1.0f))
+ return (x - x) / (x - x);
+
+ return x / 0.0f;
+ }
+
+ return __copysignf (t, x);
+}
+strong_alias (__ieee754_atanhf, __atanhf_finite)
diff --git a/REORG.TODO/sysdeps/ieee754/flt-32/e_coshf.c b/REORG.TODO/sysdeps/ieee754/flt-32/e_coshf.c
new file mode 100644
index 0000000000..7b223758e1
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/flt-32/e_coshf.c
@@ -0,0 +1,63 @@
+/* e_coshf.c -- float version of e_cosh.c.
+ * Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com.
+ * Optimizations by Ulrich Drepper <drepper@gmail.com>, 2011
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#include <math.h>
+#include <math_private.h>
+
+static const float huge = 1.0e30;
+static const float one = 1.0, half=0.5;
+
+float
+__ieee754_coshf (float x)
+{
+ float t,w;
+ int32_t ix;
+
+ GET_FLOAT_WORD(ix,x);
+ ix &= 0x7fffffff;
+
+ /* |x| in [0,22] */
+ if (ix < 0x41b00000) {
+ /* |x| in [0,0.5*ln2], return 1+expm1(|x|)^2/(2*exp(|x|)) */
+ if(ix<0x3eb17218) {
+ if (ix<0x24000000) return one; /* cosh(tiny) = 1 */
+ t = __expm1f(fabsf(x));
+ w = one+t;
+ return one+(t*t)/(w+w);
+ }
+
+ /* |x| in [0.5*ln2,22], return (exp(|x|)+1/exp(|x|)/2; */
+ t = __ieee754_expf(fabsf(x));
+ return half*t+half/t;
+ }
+
+ /* |x| in [22, log(maxdouble)] return half*exp(|x|) */
+ if (ix < 0x42b17180) return half*__ieee754_expf(fabsf(x));
+
+ /* |x| in [log(maxdouble), overflowthresold] */
+ if (ix<=0x42b2d4fc) {
+ w = __ieee754_expf(half*fabsf(x));
+ t = half*w;
+ return t*w;
+ }
+
+ /* x is INF or NaN */
+ if(ix>=0x7f800000) return x*x;
+
+ /* |x| > overflowthresold, cosh(x) overflow */
+ return math_narrow_eval (huge*huge);
+}
+strong_alias (__ieee754_coshf, __coshf_finite)
diff --git a/REORG.TODO/sysdeps/ieee754/flt-32/e_exp2f.c b/REORG.TODO/sysdeps/ieee754/flt-32/e_exp2f.c
new file mode 100644
index 0000000000..567d3ff6d0
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/flt-32/e_exp2f.c
@@ -0,0 +1,132 @@
+/* Single-precision floating point 2^x.
+ Copyright (C) 1997-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Geoffrey Keating <geoffk@ozemail.com.au>
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+/* The basic design here is from
+ Shmuel Gal and Boris Bachelis, "An Accurate Elementary Mathematical
+ Library for the IEEE Floating Point Standard", ACM Trans. Math. Soft.,
+ 17 (1), March 1991, pp. 26-45.
+ It has been slightly modified to compute 2^x instead of e^x, and for
+ single-precision.
+ */
+#ifndef _GNU_SOURCE
+# define _GNU_SOURCE
+#endif
+#include <stdlib.h>
+#include <float.h>
+#include <ieee754.h>
+#include <math.h>
+#include <fenv.h>
+#include <inttypes.h>
+#include <math_private.h>
+
+#include "t_exp2f.h"
+
+static const float TWOM100 = 7.88860905e-31;
+static const float TWO127 = 1.7014118346e+38;
+
+float
+__ieee754_exp2f (float x)
+{
+ static const float himark = (float) FLT_MAX_EXP;
+ static const float lomark = (float) (FLT_MIN_EXP - FLT_MANT_DIG - 1);
+
+ /* Check for usual case. */
+ if (isless (x, himark) && isgreaterequal (x, lomark))
+ {
+ static const float THREEp14 = 49152.0;
+ int tval, unsafe;
+ float rx, x22, result;
+ union ieee754_float ex2_u, scale_u;
+
+ if (fabsf (x) < FLT_EPSILON / 4.0f)
+ return 1.0f + x;
+
+ {
+ SET_RESTORE_ROUND_NOEXF (FE_TONEAREST);
+
+ /* 1. Argument reduction.
+ Choose integers ex, -128 <= t < 128, and some real
+ -1/512 <= x1 <= 1/512 so that
+ x = ex + t/512 + x1.
+
+ First, calculate rx = ex + t/256. */
+ rx = x + THREEp14;
+ rx -= THREEp14;
+ x -= rx; /* Compute x=x1. */
+ /* Compute tval = (ex*256 + t)+128.
+ Now, t = (tval mod 256)-128 and ex=tval/256 [that's mod, NOT %;
+ and /-round-to-nearest not the usual c integer /]. */
+ tval = (int) (rx * 256.0f + 128.0f);
+
+ /* 2. Adjust for accurate table entry.
+ Find e so that
+ x = ex + t/256 + e + x2
+ where -7e-4 < e < 7e-4, and
+ (float)(2^(t/256+e))
+ is accurate to one part in 2^-64. */
+
+ /* 'tval & 255' is the same as 'tval%256' except that it's always
+ positive.
+ Compute x = x2. */
+ x -= __exp2f_deltatable[tval & 255];
+
+ /* 3. Compute ex2 = 2^(t/255+e+ex). */
+ ex2_u.f = __exp2f_atable[tval & 255];
+ tval >>= 8;
+ /* x2 is an integer multiple of 2^-30; avoid intermediate
+ underflow from the calculation of x22 * x. */
+ unsafe = abs(tval) >= -FLT_MIN_EXP - 32;
+ ex2_u.ieee.exponent += tval >> unsafe;
+ scale_u.f = 1.0;
+ scale_u.ieee.exponent += tval - (tval >> unsafe);
+
+ /* 4. Approximate 2^x2 - 1, using a second-degree polynomial,
+ with maximum error in [-2^-9 - 2^-14, 2^-9 + 2^-14]
+ less than 1.3e-10. */
+
+ x22 = (.24022656679f * x + .69314736128f) * ex2_u.f;
+ }
+
+ /* 5. Return (2^x2-1) * 2^(t/512+e+ex) + 2^(t/512+e+ex). */
+ result = x22 * x + ex2_u.f;
+
+ if (!unsafe)
+ return result;
+ else
+ {
+ result *= scale_u.f;
+ math_check_force_underflow_nonneg (result);
+ return result;
+ }
+ }
+ /* Exceptional cases: */
+ else if (isless (x, himark))
+ {
+ if (isinf (x))
+ /* e^-inf == 0, with no error. */
+ return 0;
+ else
+ /* Underflow */
+ return TWOM100 * TWOM100;
+ }
+ else
+ /* Return x, if x is a NaN or Inf; or overflow, otherwise. */
+ return TWO127*x;
+}
+strong_alias (__ieee754_exp2f, __exp2f_finite)
diff --git a/REORG.TODO/sysdeps/ieee754/flt-32/e_expf.c b/REORG.TODO/sysdeps/ieee754/flt-32/e_expf.c
new file mode 100644
index 0000000000..782072f213
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/flt-32/e_expf.c
@@ -0,0 +1,133 @@
+/* Single-precision floating point e^x.
+ Copyright (C) 1997-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Geoffrey Keating <geoffk@ozemail.com.au>
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+/* How this works:
+
+ The input value, x, is written as
+
+ x = n * ln(2) + t/512 + delta[t] + x;
+
+ where:
+ - n is an integer, 127 >= n >= -150;
+ - t is an integer, 177 >= t >= -177
+ - delta is based on a table entry, delta[t] < 2^-28
+ - x is whatever is left, |x| < 2^-10
+
+ Then e^x is approximated as
+
+ e^x = 2^n ( e^(t/512 + delta[t])
+ + ( e^(t/512 + delta[t])
+ * ( p(x + delta[t] + n * ln(2)) - delta ) ) )
+
+ where
+ - p(x) is a polynomial approximating e(x)-1;
+ - e^(t/512 + delta[t]) is obtained from a table.
+
+ The table used is the same one as for the double precision version;
+ since we have the table, we might as well use it.
+
+ It turns out to be faster to do calculations in double precision than
+ to perform an 'accurate table method' expf, because of the range reduction
+ overhead (compare exp2f).
+ */
+#include <float.h>
+#include <ieee754.h>
+#include <math.h>
+#include <fenv.h>
+#include <inttypes.h>
+#include <math_private.h>
+
+extern const float __exp_deltatable[178];
+extern const double __exp_atable[355] /* __attribute__((mode(DF))) */;
+
+static const float TWOM100 = 7.88860905e-31;
+static const float TWO127 = 1.7014118346e+38;
+
+float
+__ieee754_expf (float x)
+{
+ static const float himark = 88.72283935546875;
+ static const float lomark = -103.972084045410;
+ /* Check for usual case. */
+ if (isless (x, himark) && isgreater (x, lomark))
+ {
+ static const float THREEp42 = 13194139533312.0;
+ static const float THREEp22 = 12582912.0;
+ /* 1/ln(2). */
+#undef M_1_LN2
+ static const float M_1_LN2 = 1.44269502163f;
+ /* ln(2) */
+#undef M_LN2
+ static const double M_LN2 = .6931471805599452862;
+
+ int tval;
+ double x22, t, result, dx;
+ float n, delta;
+ union ieee754_double ex2_u;
+
+ {
+ SET_RESTORE_ROUND_NOEXF (FE_TONEAREST);
+
+ /* Calculate n. */
+ n = x * M_1_LN2 + THREEp22;
+ n -= THREEp22;
+ dx = x - n*M_LN2;
+
+ /* Calculate t/512. */
+ t = dx + THREEp42;
+ t -= THREEp42;
+ dx -= t;
+
+ /* Compute tval = t. */
+ tval = (int) (t * 512.0);
+
+ if (t >= 0)
+ delta = - __exp_deltatable[tval];
+ else
+ delta = __exp_deltatable[-tval];
+
+ /* Compute ex2 = 2^n e^(t/512+delta[t]). */
+ ex2_u.d = __exp_atable[tval+177];
+ ex2_u.ieee.exponent += (int) n;
+
+ /* Approximate e^(dx+delta) - 1, using a second-degree polynomial,
+ with maximum error in [-2^-10-2^-28,2^-10+2^-28]
+ less than 5e-11. */
+ x22 = (0.5000000496709180453 * dx + 1.0000001192102037084) * dx + delta;
+ }
+
+ /* Return result. */
+ result = x22 * ex2_u.d + ex2_u.d;
+ return (float) result;
+ }
+ /* Exceptional cases: */
+ else if (isless (x, himark))
+ {
+ if (isinf (x))
+ /* e^-inf == 0, with no error. */
+ return 0;
+ else
+ /* Underflow */
+ return TWOM100 * TWOM100;
+ }
+ else
+ /* Return x, if x is a NaN or Inf; or overflow, otherwise. */
+ return TWO127*x;
+}
+strong_alias (__ieee754_expf, __expf_finite)
diff --git a/REORG.TODO/sysdeps/ieee754/flt-32/e_fmodf.c b/REORG.TODO/sysdeps/ieee754/flt-32/e_fmodf.c
new file mode 100644
index 0000000000..8d8fad4eb5
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/flt-32/e_fmodf.c
@@ -0,0 +1,102 @@
+/* e_fmodf.c -- float version of e_fmod.c.
+ * Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+/*
+ * __ieee754_fmodf(x,y)
+ * Return x mod y in exact arithmetic
+ * Method: shift and subtract
+ */
+
+#include <math.h>
+#include <math_private.h>
+
+static const float one = 1.0, Zero[] = {0.0, -0.0,};
+
+float
+__ieee754_fmodf (float x, float y)
+{
+ int32_t n,hx,hy,hz,ix,iy,sx,i;
+
+ GET_FLOAT_WORD(hx,x);
+ GET_FLOAT_WORD(hy,y);
+ sx = hx&0x80000000; /* sign of x */
+ hx ^=sx; /* |x| */
+ hy &= 0x7fffffff; /* |y| */
+
+ /* purge off exception values */
+ if(hy==0||(hx>=0x7f800000)|| /* y=0,or x not finite */
+ (hy>0x7f800000)) /* or y is NaN */
+ return (x*y)/(x*y);
+ if(hx<hy) return x; /* |x|<|y| return x */
+ if(hx==hy)
+ return Zero[(u_int32_t)sx>>31]; /* |x|=|y| return x*0*/
+
+ /* determine ix = ilogb(x) */
+ if(hx<0x00800000) { /* subnormal x */
+ for (ix = -126,i=(hx<<8); i>0; i<<=1) ix -=1;
+ } else ix = (hx>>23)-127;
+
+ /* determine iy = ilogb(y) */
+ if(hy<0x00800000) { /* subnormal y */
+ for (iy = -126,i=(hy<<8); i>=0; i<<=1) iy -=1;
+ } else iy = (hy>>23)-127;
+
+ /* set up {hx,lx}, {hy,ly} and align y to x */
+ if(ix >= -126)
+ hx = 0x00800000|(0x007fffff&hx);
+ else { /* subnormal x, shift x to normal */
+ n = -126-ix;
+ hx = hx<<n;
+ }
+ if(iy >= -126)
+ hy = 0x00800000|(0x007fffff&hy);
+ else { /* subnormal y, shift y to normal */
+ n = -126-iy;
+ hy = hy<<n;
+ }
+
+ /* fix point fmod */
+ n = ix - iy;
+ while(n--) {
+ hz=hx-hy;
+ if(hz<0){hx = hx+hx;}
+ else {
+ if(hz==0) /* return sign(x)*0 */
+ return Zero[(u_int32_t)sx>>31];
+ hx = hz+hz;
+ }
+ }
+ hz=hx-hy;
+ if(hz>=0) {hx=hz;}
+
+ /* convert back to floating value and restore the sign */
+ if(hx==0) /* return sign(x)*0 */
+ return Zero[(u_int32_t)sx>>31];
+ while(hx<0x00800000) { /* normalize x */
+ hx = hx+hx;
+ iy -= 1;
+ }
+ if(iy>= -126) { /* normalize output */
+ hx = ((hx-0x00800000)|((iy+127)<<23));
+ SET_FLOAT_WORD(x,hx|sx);
+ } else { /* subnormal output */
+ n = -126 - iy;
+ hx >>= n;
+ SET_FLOAT_WORD(x,hx|sx);
+ x *= one; /* create necessary signal */
+ }
+ return x; /* exact output */
+}
+strong_alias (__ieee754_fmodf, __fmodf_finite)
diff --git a/REORG.TODO/sysdeps/ieee754/flt-32/e_gammaf_r.c b/REORG.TODO/sysdeps/ieee754/flt-32/e_gammaf_r.c
new file mode 100644
index 0000000000..1157dec2fe
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/flt-32/e_gammaf_r.c
@@ -0,0 +1,212 @@
+/* Implementation of gamma function according to ISO C.
+ Copyright (C) 1997-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+#include <math_private.h>
+#include <float.h>
+
+/* Coefficients B_2k / 2k(2k-1) of x^-(2k-1) inside exp in Stirling's
+ approximation to gamma function. */
+
+static const float gamma_coeff[] =
+ {
+ 0x1.555556p-4f,
+ -0xb.60b61p-12f,
+ 0x3.403404p-12f,
+ };
+
+#define NCOEFF (sizeof (gamma_coeff) / sizeof (gamma_coeff[0]))
+
+/* Return gamma (X), for positive X less than 42, in the form R *
+ 2^(*EXP2_ADJ), where R is the return value and *EXP2_ADJ is set to
+ avoid overflow or underflow in intermediate calculations. */
+
+static float
+gammaf_positive (float x, int *exp2_adj)
+{
+ int local_signgam;
+ if (x < 0.5f)
+ {
+ *exp2_adj = 0;
+ return __ieee754_expf (__ieee754_lgammaf_r (x + 1, &local_signgam)) / x;
+ }
+ else if (x <= 1.5f)
+ {
+ *exp2_adj = 0;
+ return __ieee754_expf (__ieee754_lgammaf_r (x, &local_signgam));
+ }
+ else if (x < 2.5f)
+ {
+ *exp2_adj = 0;
+ float x_adj = x - 1;
+ return (__ieee754_expf (__ieee754_lgammaf_r (x_adj, &local_signgam))
+ * x_adj);
+ }
+ else
+ {
+ float eps = 0;
+ float x_eps = 0;
+ float x_adj = x;
+ float prod = 1;
+ if (x < 4.0f)
+ {
+ /* Adjust into the range for applying Stirling's
+ approximation. */
+ float n = __ceilf (4.0f - x);
+ x_adj = math_narrow_eval (x + n);
+ x_eps = (x - (x_adj - n));
+ prod = __gamma_productf (x_adj - n, x_eps, n, &eps);
+ }
+ /* The result is now gamma (X_ADJ + X_EPS) / (PROD * (1 + EPS)).
+ Compute gamma (X_ADJ + X_EPS) using Stirling's approximation,
+ starting by computing pow (X_ADJ, X_ADJ) with a power of 2
+ factored out. */
+ float exp_adj = -eps;
+ float x_adj_int = __roundf (x_adj);
+ float x_adj_frac = x_adj - x_adj_int;
+ int x_adj_log2;
+ float x_adj_mant = __frexpf (x_adj, &x_adj_log2);
+ if (x_adj_mant < (float) M_SQRT1_2)
+ {
+ x_adj_log2--;
+ x_adj_mant *= 2.0f;
+ }
+ *exp2_adj = x_adj_log2 * (int) x_adj_int;
+ float ret = (__ieee754_powf (x_adj_mant, x_adj)
+ * __ieee754_exp2f (x_adj_log2 * x_adj_frac)
+ * __ieee754_expf (-x_adj)
+ * __ieee754_sqrtf (2 * (float) M_PI / x_adj)
+ / prod);
+ exp_adj += x_eps * __ieee754_logf (x_adj);
+ float bsum = gamma_coeff[NCOEFF - 1];
+ float x_adj2 = x_adj * x_adj;
+ for (size_t i = 1; i <= NCOEFF - 1; i++)
+ bsum = bsum / x_adj2 + gamma_coeff[NCOEFF - 1 - i];
+ exp_adj += bsum / x_adj;
+ return ret + ret * __expm1f (exp_adj);
+ }
+}
+
+float
+__ieee754_gammaf_r (float x, int *signgamp)
+{
+ int32_t hx;
+ float ret;
+
+ GET_FLOAT_WORD (hx, x);
+
+ if (__glibc_unlikely ((hx & 0x7fffffff) == 0))
+ {
+ /* Return value for x == 0 is Inf with divide by zero exception. */
+ *signgamp = 0;
+ return 1.0 / x;
+ }
+ if (__builtin_expect (hx < 0, 0)
+ && (u_int32_t) hx < 0xff800000 && __rintf (x) == x)
+ {
+ /* Return value for integer x < 0 is NaN with invalid exception. */
+ *signgamp = 0;
+ return (x - x) / (x - x);
+ }
+ if (__glibc_unlikely (hx == 0xff800000))
+ {
+ /* x == -Inf. According to ISO this is NaN. */
+ *signgamp = 0;
+ return x - x;
+ }
+ if (__glibc_unlikely ((hx & 0x7f800000) == 0x7f800000))
+ {
+ /* Positive infinity (return positive infinity) or NaN (return
+ NaN). */
+ *signgamp = 0;
+ return x + x;
+ }
+
+ if (x >= 36.0f)
+ {
+ /* Overflow. */
+ *signgamp = 0;
+ ret = math_narrow_eval (FLT_MAX * FLT_MAX);
+ return ret;
+ }
+ else
+ {
+ SET_RESTORE_ROUNDF (FE_TONEAREST);
+ if (x > 0.0f)
+ {
+ *signgamp = 0;
+ int exp2_adj;
+ float tret = gammaf_positive (x, &exp2_adj);
+ ret = __scalbnf (tret, exp2_adj);
+ }
+ else if (x >= -FLT_EPSILON / 4.0f)
+ {
+ *signgamp = 0;
+ ret = 1.0f / x;
+ }
+ else
+ {
+ float tx = __truncf (x);
+ *signgamp = (tx == 2.0f * __truncf (tx / 2.0f)) ? -1 : 1;
+ if (x <= -42.0f)
+ /* Underflow. */
+ ret = FLT_MIN * FLT_MIN;
+ else
+ {
+ float frac = tx - x;
+ if (frac > 0.5f)
+ frac = 1.0f - frac;
+ float sinpix = (frac <= 0.25f
+ ? __sinf ((float) M_PI * frac)
+ : __cosf ((float) M_PI * (0.5f - frac)));
+ int exp2_adj;
+ float tret = (float) M_PI / (-x * sinpix
+ * gammaf_positive (-x, &exp2_adj));
+ ret = __scalbnf (tret, -exp2_adj);
+ math_check_force_underflow_nonneg (ret);
+ }
+ }
+ ret = math_narrow_eval (ret);
+ }
+ if (isinf (ret) && x != 0)
+ {
+ if (*signgamp < 0)
+ {
+ ret = math_narrow_eval (-__copysignf (FLT_MAX, ret) * FLT_MAX);
+ ret = -ret;
+ }
+ else
+ ret = math_narrow_eval (__copysignf (FLT_MAX, ret) * FLT_MAX);
+ return ret;
+ }
+ else if (ret == 0)
+ {
+ if (*signgamp < 0)
+ {
+ ret = math_narrow_eval (-__copysignf (FLT_MIN, ret) * FLT_MIN);
+ ret = -ret;
+ }
+ else
+ ret = math_narrow_eval (__copysignf (FLT_MIN, ret) * FLT_MIN);
+ return ret;
+ }
+ else
+ return ret;
+}
+strong_alias (__ieee754_gammaf_r, __gammaf_r_finite)
diff --git a/REORG.TODO/sysdeps/ieee754/flt-32/e_hypotf.c b/REORG.TODO/sysdeps/ieee754/flt-32/e_hypotf.c
new file mode 100644
index 0000000000..fda2651a84
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/flt-32/e_hypotf.c
@@ -0,0 +1,45 @@
+/* e_hypotf.c -- float version of e_hypot.c.
+ * Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#include <math.h>
+#include <math_private.h>
+
+float
+__ieee754_hypotf(float x, float y)
+{
+ double d_x, d_y;
+ int32_t ha, hb;
+
+ GET_FLOAT_WORD(ha,x);
+ ha &= 0x7fffffff;
+ GET_FLOAT_WORD(hb,y);
+ hb &= 0x7fffffff;
+ if (ha == 0x7f800000 && !issignaling (y))
+ return fabsf(x);
+ else if (hb == 0x7f800000 && !issignaling (x))
+ return fabsf(y);
+ else if (ha > 0x7f800000 || hb > 0x7f800000)
+ return fabsf(x) * fabsf(y);
+ else if (ha == 0)
+ return fabsf(y);
+ else if (hb == 0)
+ return fabsf(x);
+
+ d_x = (double) x;
+ d_y = (double) y;
+
+ return (float) __ieee754_sqrt(d_x * d_x + d_y * d_y);
+}
+strong_alias (__ieee754_hypotf, __hypotf_finite)
diff --git a/REORG.TODO/sysdeps/ieee754/flt-32/e_ilogbf.c b/REORG.TODO/sysdeps/ieee754/flt-32/e_ilogbf.c
new file mode 100644
index 0000000000..1ae344ea39
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/flt-32/e_ilogbf.c
@@ -0,0 +1,44 @@
+/* s_ilogbf.c -- float version of s_ilogb.c.
+ * Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: s_ilogbf.c,v 1.4 1995/05/10 20:47:31 jtc Exp $";
+#endif
+
+#include <limits.h>
+#include <math.h>
+#include <math_private.h>
+
+int __ieee754_ilogbf(float x)
+{
+ int32_t hx,ix;
+
+ GET_FLOAT_WORD(hx,x);
+ hx &= 0x7fffffff;
+ if(hx<0x00800000) {
+ if(hx==0)
+ return FP_ILOGB0; /* ilogb(0) = FP_ILOGB0 */
+ else /* subnormal x */
+ for (ix = -126,hx<<=8; hx>0; hx<<=1) ix -=1;
+ return ix;
+ }
+ else if (hx<0x7f800000) return (hx>>23)-127;
+ else if (FP_ILOGBNAN != INT_MAX) {
+ /* ISO C99 requires ilogbf(+-Inf) == INT_MAX. */
+ if (hx==0x7f800000)
+ return INT_MAX;
+ }
+ return FP_ILOGBNAN;
+}
diff --git a/REORG.TODO/sysdeps/ieee754/flt-32/e_j0f.c b/REORG.TODO/sysdeps/ieee754/flt-32/e_j0f.c
new file mode 100644
index 0000000000..b783dd069d
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/flt-32/e_j0f.c
@@ -0,0 +1,337 @@
+/* e_j0f.c -- float version of e_j0.c.
+ * Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#include <math.h>
+#include <math_private.h>
+
+static float pzerof(float), qzerof(float);
+
+static const float
+huge = 1e30,
+one = 1.0,
+invsqrtpi= 5.6418961287e-01, /* 0x3f106ebb */
+tpi = 6.3661974669e-01, /* 0x3f22f983 */
+ /* R0/S0 on [0, 2.00] */
+R02 = 1.5625000000e-02, /* 0x3c800000 */
+R03 = -1.8997929874e-04, /* 0xb947352e */
+R04 = 1.8295404516e-06, /* 0x35f58e88 */
+R05 = -4.6183270541e-09, /* 0xb19eaf3c */
+S01 = 1.5619102865e-02, /* 0x3c7fe744 */
+S02 = 1.1692678527e-04, /* 0x38f53697 */
+S03 = 5.1354652442e-07, /* 0x3509daa6 */
+S04 = 1.1661400734e-09; /* 0x30a045e8 */
+
+static const float zero = 0.0;
+
+float
+__ieee754_j0f(float x)
+{
+ float z, s,c,ss,cc,r,u,v;
+ int32_t hx,ix;
+
+ GET_FLOAT_WORD(hx,x);
+ ix = hx&0x7fffffff;
+ if(ix>=0x7f800000) return one/(x*x);
+ x = fabsf(x);
+ if(ix >= 0x40000000) { /* |x| >= 2.0 */
+ __sincosf (x, &s, &c);
+ ss = s-c;
+ cc = s+c;
+ if(ix<0x7f000000) { /* make sure x+x not overflow */
+ z = -__cosf(x+x);
+ if ((s*c)<zero) cc = z/ss;
+ else ss = z/cc;
+ }
+ /*
+ * j0(x) = 1/sqrt(pi) * (P(0,x)*cc - Q(0,x)*ss) / sqrt(x)
+ * y0(x) = 1/sqrt(pi) * (P(0,x)*ss + Q(0,x)*cc) / sqrt(x)
+ */
+ if(ix>0x48000000) z = (invsqrtpi*cc)/__ieee754_sqrtf(x);
+ else {
+ u = pzerof(x); v = qzerof(x);
+ z = invsqrtpi*(u*cc-v*ss)/__ieee754_sqrtf(x);
+ }
+ return z;
+ }
+ if(ix<0x39000000) { /* |x| < 2**-13 */
+ math_force_eval(huge+x); /* raise inexact if x != 0 */
+ if(ix<0x32000000) return one; /* |x|<2**-27 */
+ else return one - (float)0.25*x*x;
+ }
+ z = x*x;
+ r = z*(R02+z*(R03+z*(R04+z*R05)));
+ s = one+z*(S01+z*(S02+z*(S03+z*S04)));
+ if(ix < 0x3F800000) { /* |x| < 1.00 */
+ return one + z*((float)-0.25+(r/s));
+ } else {
+ u = (float)0.5*x;
+ return((one+u)*(one-u)+z*(r/s));
+ }
+}
+strong_alias (__ieee754_j0f, __j0f_finite)
+
+static const float
+u00 = -7.3804296553e-02, /* 0xbd9726b5 */
+u01 = 1.7666645348e-01, /* 0x3e34e80d */
+u02 = -1.3818567619e-02, /* 0xbc626746 */
+u03 = 3.4745343146e-04, /* 0x39b62a69 */
+u04 = -3.8140706238e-06, /* 0xb67ff53c */
+u05 = 1.9559013964e-08, /* 0x32a802ba */
+u06 = -3.9820518410e-11, /* 0xae2f21eb */
+v01 = 1.2730483897e-02, /* 0x3c509385 */
+v02 = 7.6006865129e-05, /* 0x389f65e0 */
+v03 = 2.5915085189e-07, /* 0x348b216c */
+v04 = 4.4111031494e-10; /* 0x2ff280c2 */
+
+float
+__ieee754_y0f(float x)
+{
+ float z, s,c,ss,cc,u,v;
+ int32_t hx,ix;
+
+ GET_FLOAT_WORD(hx,x);
+ ix = 0x7fffffff&hx;
+ /* Y0(NaN) is NaN, y0(-inf) is Nan, y0(inf) is 0, y0(0) is -inf. */
+ if(ix>=0x7f800000) return one/(x+x*x);
+ if(ix==0) return -1/zero; /* -inf and divide by zero exception. */
+ if(hx<0) return zero/(zero*x);
+ if(ix >= 0x40000000) { /* |x| >= 2.0 */
+ /* y0(x) = sqrt(2/(pi*x))*(p0(x)*sin(x0)+q0(x)*cos(x0))
+ * where x0 = x-pi/4
+ * Better formula:
+ * cos(x0) = cos(x)cos(pi/4)+sin(x)sin(pi/4)
+ * = 1/sqrt(2) * (sin(x) + cos(x))
+ * sin(x0) = sin(x)cos(3pi/4)-cos(x)sin(3pi/4)
+ * = 1/sqrt(2) * (sin(x) - cos(x))
+ * To avoid cancellation, use
+ * sin(x) +- cos(x) = -cos(2x)/(sin(x) -+ cos(x))
+ * to compute the worse one.
+ */
+ __sincosf (x, &s, &c);
+ ss = s-c;
+ cc = s+c;
+ /*
+ * j0(x) = 1/sqrt(pi) * (P(0,x)*cc - Q(0,x)*ss) / sqrt(x)
+ * y0(x) = 1/sqrt(pi) * (P(0,x)*ss + Q(0,x)*cc) / sqrt(x)
+ */
+ if(ix<0x7f000000) { /* make sure x+x not overflow */
+ z = -__cosf(x+x);
+ if ((s*c)<zero) cc = z/ss;
+ else ss = z/cc;
+ }
+ if(ix>0x48000000) z = (invsqrtpi*ss)/__ieee754_sqrtf(x);
+ else {
+ u = pzerof(x); v = qzerof(x);
+ z = invsqrtpi*(u*ss+v*cc)/__ieee754_sqrtf(x);
+ }
+ return z;
+ }
+ if(ix<=0x39800000) { /* x < 2**-13 */
+ return(u00 + tpi*__ieee754_logf(x));
+ }
+ z = x*x;
+ u = u00+z*(u01+z*(u02+z*(u03+z*(u04+z*(u05+z*u06)))));
+ v = one+z*(v01+z*(v02+z*(v03+z*v04)));
+ return(u/v + tpi*(__ieee754_j0f(x)*__ieee754_logf(x)));
+}
+strong_alias (__ieee754_y0f, __y0f_finite)
+
+/* The asymptotic expansions of pzero is
+ * 1 - 9/128 s^2 + 11025/98304 s^4 - ..., where s = 1/x.
+ * For x >= 2, We approximate pzero by
+ * pzero(x) = 1 + (R/S)
+ * where R = pR0 + pR1*s^2 + pR2*s^4 + ... + pR5*s^10
+ * S = 1 + pS0*s^2 + ... + pS4*s^10
+ * and
+ * | pzero(x)-1-R/S | <= 2 ** ( -60.26)
+ */
+static const float pR8[6] = { /* for x in [inf, 8]=1/[0,0.125] */
+ 0.0000000000e+00, /* 0x00000000 */
+ -7.0312500000e-02, /* 0xbd900000 */
+ -8.0816707611e+00, /* 0xc1014e86 */
+ -2.5706311035e+02, /* 0xc3808814 */
+ -2.4852163086e+03, /* 0xc51b5376 */
+ -5.2530439453e+03, /* 0xc5a4285a */
+};
+static const float pS8[5] = {
+ 1.1653436279e+02, /* 0x42e91198 */
+ 3.8337448730e+03, /* 0x456f9beb */
+ 4.0597855469e+04, /* 0x471e95db */
+ 1.1675296875e+05, /* 0x47e4087c */
+ 4.7627726562e+04, /* 0x473a0bba */
+};
+static const float pR5[6] = { /* for x in [8,4.5454]=1/[0.125,0.22001] */
+ -1.1412546255e-11, /* 0xad48c58a */
+ -7.0312492549e-02, /* 0xbd8fffff */
+ -4.1596107483e+00, /* 0xc0851b88 */
+ -6.7674766541e+01, /* 0xc287597b */
+ -3.3123129272e+02, /* 0xc3a59d9b */
+ -3.4643338013e+02, /* 0xc3ad3779 */
+};
+static const float pS5[5] = {
+ 6.0753936768e+01, /* 0x42730408 */
+ 1.0512523193e+03, /* 0x44836813 */
+ 5.9789707031e+03, /* 0x45bad7c4 */
+ 9.6254453125e+03, /* 0x461665c8 */
+ 2.4060581055e+03, /* 0x451660ee */
+};
+
+static const float pR3[6] = {/* for x in [4.547,2.8571]=1/[0.2199,0.35001] */
+ -2.5470459075e-09, /* 0xb12f081b */
+ -7.0311963558e-02, /* 0xbd8fffb8 */
+ -2.4090321064e+00, /* 0xc01a2d95 */
+ -2.1965976715e+01, /* 0xc1afba52 */
+ -5.8079170227e+01, /* 0xc2685112 */
+ -3.1447946548e+01, /* 0xc1fb9565 */
+};
+static const float pS3[5] = {
+ 3.5856033325e+01, /* 0x420f6c94 */
+ 3.6151397705e+02, /* 0x43b4c1ca */
+ 1.1936077881e+03, /* 0x44953373 */
+ 1.1279968262e+03, /* 0x448cffe6 */
+ 1.7358093262e+02, /* 0x432d94b8 */
+};
+
+static const float pR2[6] = {/* for x in [2.8570,2]=1/[0.3499,0.5] */
+ -8.8753431271e-08, /* 0xb3be98b7 */
+ -7.0303097367e-02, /* 0xbd8ffb12 */
+ -1.4507384300e+00, /* 0xbfb9b1cc */
+ -7.6356959343e+00, /* 0xc0f4579f */
+ -1.1193166733e+01, /* 0xc1331736 */
+ -3.2336456776e+00, /* 0xc04ef40d */
+};
+static const float pS2[5] = {
+ 2.2220300674e+01, /* 0x41b1c32d */
+ 1.3620678711e+02, /* 0x430834f0 */
+ 2.7047027588e+02, /* 0x43873c32 */
+ 1.5387539673e+02, /* 0x4319e01a */
+ 1.4657617569e+01, /* 0x416a859a */
+};
+
+static float
+pzerof(float x)
+{
+ const float *p,*q;
+ float z,r,s;
+ int32_t ix;
+ GET_FLOAT_WORD(ix,x);
+ ix &= 0x7fffffff;
+ /* ix >= 0x40000000 for all calls to this function. */
+ if(ix>=0x41000000) {p = pR8; q= pS8;}
+ else if(ix>=0x40f71c58){p = pR5; q= pS5;}
+ else if(ix>=0x4036db68){p = pR3; q= pS3;}
+ else {p = pR2; q= pS2;}
+ z = one/(x*x);
+ r = p[0]+z*(p[1]+z*(p[2]+z*(p[3]+z*(p[4]+z*p[5]))));
+ s = one+z*(q[0]+z*(q[1]+z*(q[2]+z*(q[3]+z*q[4]))));
+ return one+ r/s;
+}
+
+
+/* For x >= 8, the asymptotic expansions of qzero is
+ * -1/8 s + 75/1024 s^3 - ..., where s = 1/x.
+ * We approximate pzero by
+ * qzero(x) = s*(-1.25 + (R/S))
+ * where R = qR0 + qR1*s^2 + qR2*s^4 + ... + qR5*s^10
+ * S = 1 + qS0*s^2 + ... + qS5*s^12
+ * and
+ * | qzero(x)/s +1.25-R/S | <= 2 ** ( -61.22)
+ */
+static const float qR8[6] = { /* for x in [inf, 8]=1/[0,0.125] */
+ 0.0000000000e+00, /* 0x00000000 */
+ 7.3242187500e-02, /* 0x3d960000 */
+ 1.1768206596e+01, /* 0x413c4a93 */
+ 5.5767340088e+02, /* 0x440b6b19 */
+ 8.8591972656e+03, /* 0x460a6cca */
+ 3.7014625000e+04, /* 0x471096a0 */
+};
+static const float qS8[6] = {
+ 1.6377603149e+02, /* 0x4323c6aa */
+ 8.0983447266e+03, /* 0x45fd12c2 */
+ 1.4253829688e+05, /* 0x480b3293 */
+ 8.0330925000e+05, /* 0x49441ed4 */
+ 8.4050156250e+05, /* 0x494d3359 */
+ -3.4389928125e+05, /* 0xc8a7eb69 */
+};
+
+static const float qR5[6] = { /* for x in [8,4.5454]=1/[0.125,0.22001] */
+ 1.8408595828e-11, /* 0x2da1ec79 */
+ 7.3242180049e-02, /* 0x3d95ffff */
+ 5.8356351852e+00, /* 0x40babd86 */
+ 1.3511157227e+02, /* 0x43071c90 */
+ 1.0272437744e+03, /* 0x448067cd */
+ 1.9899779053e+03, /* 0x44f8bf4b */
+};
+static const float qS5[6] = {
+ 8.2776611328e+01, /* 0x42a58da0 */
+ 2.0778142090e+03, /* 0x4501dd07 */
+ 1.8847289062e+04, /* 0x46933e94 */
+ 5.6751113281e+04, /* 0x475daf1d */
+ 3.5976753906e+04, /* 0x470c88c1 */
+ -5.3543427734e+03, /* 0xc5a752be */
+};
+
+static const float qR3[6] = {/* for x in [4.547,2.8571]=1/[0.2199,0.35001] */
+ 4.3774099900e-09, /* 0x3196681b */
+ 7.3241114616e-02, /* 0x3d95ff70 */
+ 3.3442313671e+00, /* 0x405607e3 */
+ 4.2621845245e+01, /* 0x422a7cc5 */
+ 1.7080809021e+02, /* 0x432acedf */
+ 1.6673394775e+02, /* 0x4326bbe4 */
+};
+static const float qS3[6] = {
+ 4.8758872986e+01, /* 0x42430916 */
+ 7.0968920898e+02, /* 0x44316c1c */
+ 3.7041481934e+03, /* 0x4567825f */
+ 6.4604252930e+03, /* 0x45c9e367 */
+ 2.5163337402e+03, /* 0x451d4557 */
+ -1.4924745178e+02, /* 0xc3153f59 */
+};
+
+static const float qR2[6] = {/* for x in [2.8570,2]=1/[0.3499,0.5] */
+ 1.5044444979e-07, /* 0x342189db */
+ 7.3223426938e-02, /* 0x3d95f62a */
+ 1.9981917143e+00, /* 0x3fffc4bf */
+ 1.4495602608e+01, /* 0x4167edfd */
+ 3.1666231155e+01, /* 0x41fd5471 */
+ 1.6252708435e+01, /* 0x4182058c */
+};
+static const float qS2[6] = {
+ 3.0365585327e+01, /* 0x41f2ecb8 */
+ 2.6934811401e+02, /* 0x4386ac8f */
+ 8.4478375244e+02, /* 0x44533229 */
+ 8.8293585205e+02, /* 0x445cbbe5 */
+ 2.1266638184e+02, /* 0x4354aa98 */
+ -5.3109550476e+00, /* 0xc0a9f358 */
+};
+
+static float
+qzerof(float x)
+{
+ const float *p,*q;
+ float s,r,z;
+ int32_t ix;
+ GET_FLOAT_WORD(ix,x);
+ ix &= 0x7fffffff;
+ /* ix >= 0x40000000 for all calls to this function. */
+ if(ix>=0x41000000) {p = qR8; q= qS8;}
+ else if(ix>=0x40f71c58){p = qR5; q= qS5;}
+ else if(ix>=0x4036db68){p = qR3; q= qS3;}
+ else {p = qR2; q= qS2;}
+ z = one/(x*x);
+ r = p[0]+z*(p[1]+z*(p[2]+z*(p[3]+z*(p[4]+z*p[5]))));
+ s = one+z*(q[0]+z*(q[1]+z*(q[2]+z*(q[3]+z*(q[4]+z*q[5])))));
+ return (-(float).125 + r/s)/x;
+}
diff --git a/REORG.TODO/sysdeps/ieee754/flt-32/e_j1f.c b/REORG.TODO/sysdeps/ieee754/flt-32/e_j1f.c
new file mode 100644
index 0000000000..805a87d85b
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/flt-32/e_j1f.c
@@ -0,0 +1,347 @@
+/* e_j1f.c -- float version of e_j1.c.
+ * Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#include <errno.h>
+#include <float.h>
+#include <math.h>
+#include <math_private.h>
+
+static float ponef(float), qonef(float);
+
+static const float
+huge = 1e30,
+one = 1.0,
+invsqrtpi= 5.6418961287e-01, /* 0x3f106ebb */
+tpi = 6.3661974669e-01, /* 0x3f22f983 */
+ /* R0/S0 on [0,2] */
+r00 = -6.2500000000e-02, /* 0xbd800000 */
+r01 = 1.4070566976e-03, /* 0x3ab86cfd */
+r02 = -1.5995563444e-05, /* 0xb7862e36 */
+r03 = 4.9672799207e-08, /* 0x335557d2 */
+s01 = 1.9153760746e-02, /* 0x3c9ce859 */
+s02 = 1.8594678841e-04, /* 0x3942fab6 */
+s03 = 1.1771846857e-06, /* 0x359dffc2 */
+s04 = 5.0463624390e-09, /* 0x31ad6446 */
+s05 = 1.2354227016e-11; /* 0x2d59567e */
+
+static const float zero = 0.0;
+
+float
+__ieee754_j1f(float x)
+{
+ float z, s,c,ss,cc,r,u,v,y;
+ int32_t hx,ix;
+
+ GET_FLOAT_WORD(hx,x);
+ ix = hx&0x7fffffff;
+ if(__builtin_expect(ix>=0x7f800000, 0)) return one/x;
+ y = fabsf(x);
+ if(ix >= 0x40000000) { /* |x| >= 2.0 */
+ __sincosf (y, &s, &c);
+ ss = -s-c;
+ cc = s-c;
+ if(ix<0x7f000000) { /* make sure y+y not overflow */
+ z = __cosf(y+y);
+ if ((s*c)>zero) cc = z/ss;
+ else ss = z/cc;
+ }
+ /*
+ * j1(x) = 1/sqrt(pi) * (P(1,x)*cc - Q(1,x)*ss) / sqrt(x)
+ * y1(x) = 1/sqrt(pi) * (P(1,x)*ss + Q(1,x)*cc) / sqrt(x)
+ */
+ if(ix>0x48000000) z = (invsqrtpi*cc)/__ieee754_sqrtf(y);
+ else {
+ u = ponef(y); v = qonef(y);
+ z = invsqrtpi*(u*cc-v*ss)/__ieee754_sqrtf(y);
+ }
+ if(hx<0) return -z;
+ else return z;
+ }
+ if(__builtin_expect(ix<0x32000000, 0)) { /* |x|<2**-27 */
+ if(huge+x>one) { /* inexact if x!=0 necessary */
+ float ret = math_narrow_eval ((float) 0.5 * x);
+ math_check_force_underflow (ret);
+ if (ret == 0 && x != 0)
+ __set_errno (ERANGE);
+ return ret;
+ }
+ }
+ z = x*x;
+ r = z*(r00+z*(r01+z*(r02+z*r03)));
+ s = one+z*(s01+z*(s02+z*(s03+z*(s04+z*s05))));
+ r *= x;
+ return(x*(float)0.5+r/s);
+}
+strong_alias (__ieee754_j1f, __j1f_finite)
+
+static const float U0[5] = {
+ -1.9605709612e-01, /* 0xbe48c331 */
+ 5.0443872809e-02, /* 0x3d4e9e3c */
+ -1.9125689287e-03, /* 0xbafaaf2a */
+ 2.3525259166e-05, /* 0x37c5581c */
+ -9.1909917899e-08, /* 0xb3c56003 */
+};
+static const float V0[5] = {
+ 1.9916731864e-02, /* 0x3ca3286a */
+ 2.0255257550e-04, /* 0x3954644b */
+ 1.3560879779e-06, /* 0x35b602d4 */
+ 6.2274145840e-09, /* 0x31d5f8eb */
+ 1.6655924903e-11, /* 0x2d9281cf */
+};
+
+float
+__ieee754_y1f(float x)
+{
+ float z, s,c,ss,cc,u,v;
+ int32_t hx,ix;
+
+ GET_FLOAT_WORD(hx,x);
+ ix = 0x7fffffff&hx;
+ /* if Y1(NaN) is NaN, Y1(-inf) is NaN, Y1(inf) is 0 */
+ if(__builtin_expect(ix>=0x7f800000, 0)) return one/(x+x*x);
+ if(__builtin_expect(ix==0, 0))
+ return -1/zero; /* -inf and divide by zero exception. */
+ if(__builtin_expect(hx<0, 0)) return zero/(zero*x);
+ if(ix >= 0x40000000) { /* |x| >= 2.0 */
+ SET_RESTORE_ROUNDF (FE_TONEAREST);
+ __sincosf (x, &s, &c);
+ ss = -s-c;
+ cc = s-c;
+ if(ix<0x7f000000) { /* make sure x+x not overflow */
+ z = __cosf(x+x);
+ if ((s*c)>zero) cc = z/ss;
+ else ss = z/cc;
+ }
+ /* y1(x) = sqrt(2/(pi*x))*(p1(x)*sin(x0)+q1(x)*cos(x0))
+ * where x0 = x-3pi/4
+ * Better formula:
+ * cos(x0) = cos(x)cos(3pi/4)+sin(x)sin(3pi/4)
+ * = 1/sqrt(2) * (sin(x) - cos(x))
+ * sin(x0) = sin(x)cos(3pi/4)-cos(x)sin(3pi/4)
+ * = -1/sqrt(2) * (cos(x) + sin(x))
+ * To avoid cancellation, use
+ * sin(x) +- cos(x) = -cos(2x)/(sin(x) -+ cos(x))
+ * to compute the worse one.
+ */
+ if(ix>0x48000000) z = (invsqrtpi*ss)/__ieee754_sqrtf(x);
+ else {
+ u = ponef(x); v = qonef(x);
+ z = invsqrtpi*(u*ss+v*cc)/__ieee754_sqrtf(x);
+ }
+ return z;
+ }
+ if(__builtin_expect(ix<=0x33000000, 0)) { /* x < 2**-25 */
+ z = -tpi / x;
+ if (isinf (z))
+ __set_errno (ERANGE);
+ return z;
+ }
+ z = x*x;
+ u = U0[0]+z*(U0[1]+z*(U0[2]+z*(U0[3]+z*U0[4])));
+ v = one+z*(V0[0]+z*(V0[1]+z*(V0[2]+z*(V0[3]+z*V0[4]))));
+ return(x*(u/v) + tpi*(__ieee754_j1f(x)*__ieee754_logf(x)-one/x));
+}
+strong_alias (__ieee754_y1f, __y1f_finite)
+
+/* For x >= 8, the asymptotic expansions of pone is
+ * 1 + 15/128 s^2 - 4725/2^15 s^4 - ..., where s = 1/x.
+ * We approximate pone by
+ * pone(x) = 1 + (R/S)
+ * where R = pr0 + pr1*s^2 + pr2*s^4 + ... + pr5*s^10
+ * S = 1 + ps0*s^2 + ... + ps4*s^10
+ * and
+ * | pone(x)-1-R/S | <= 2 ** ( -60.06)
+ */
+
+static const float pr8[6] = { /* for x in [inf, 8]=1/[0,0.125] */
+ 0.0000000000e+00, /* 0x00000000 */
+ 1.1718750000e-01, /* 0x3df00000 */
+ 1.3239480972e+01, /* 0x4153d4ea */
+ 4.1205184937e+02, /* 0x43ce06a3 */
+ 3.8747453613e+03, /* 0x45722bed */
+ 7.9144794922e+03, /* 0x45f753d6 */
+};
+static const float ps8[5] = {
+ 1.1420736694e+02, /* 0x42e46a2c */
+ 3.6509309082e+03, /* 0x45642ee5 */
+ 3.6956207031e+04, /* 0x47105c35 */
+ 9.7602796875e+04, /* 0x47bea166 */
+ 3.0804271484e+04, /* 0x46f0a88b */
+};
+
+static const float pr5[6] = { /* for x in [8,4.5454]=1/[0.125,0.22001] */
+ 1.3199052094e-11, /* 0x2d68333f */
+ 1.1718749255e-01, /* 0x3defffff */
+ 6.8027510643e+00, /* 0x40d9b023 */
+ 1.0830818176e+02, /* 0x42d89dca */
+ 5.1763616943e+02, /* 0x440168b7 */
+ 5.2871520996e+02, /* 0x44042dc6 */
+};
+static const float ps5[5] = {
+ 5.9280597687e+01, /* 0x426d1f55 */
+ 9.9140142822e+02, /* 0x4477d9b1 */
+ 5.3532670898e+03, /* 0x45a74a23 */
+ 7.8446904297e+03, /* 0x45f52586 */
+ 1.5040468750e+03, /* 0x44bc0180 */
+};
+
+static const float pr3[6] = {
+ 3.0250391081e-09, /* 0x314fe10d */
+ 1.1718686670e-01, /* 0x3defffab */
+ 3.9329774380e+00, /* 0x407bb5e7 */
+ 3.5119403839e+01, /* 0x420c7a45 */
+ 9.1055007935e+01, /* 0x42b61c2a */
+ 4.8559066772e+01, /* 0x42423c7c */
+};
+static const float ps3[5] = {
+ 3.4791309357e+01, /* 0x420b2a4d */
+ 3.3676245117e+02, /* 0x43a86198 */
+ 1.0468714600e+03, /* 0x4482dbe3 */
+ 8.9081134033e+02, /* 0x445eb3ed */
+ 1.0378793335e+02, /* 0x42cf936c */
+};
+
+static const float pr2[6] = {/* for x in [2.8570,2]=1/[0.3499,0.5] */
+ 1.0771083225e-07, /* 0x33e74ea8 */
+ 1.1717621982e-01, /* 0x3deffa16 */
+ 2.3685150146e+00, /* 0x401795c0 */
+ 1.2242610931e+01, /* 0x4143e1bc */
+ 1.7693971634e+01, /* 0x418d8d41 */
+ 5.0735230446e+00, /* 0x40a25a4d */
+};
+static const float ps2[5] = {
+ 2.1436485291e+01, /* 0x41ab7dec */
+ 1.2529022980e+02, /* 0x42fa9499 */
+ 2.3227647400e+02, /* 0x436846c7 */
+ 1.1767937469e+02, /* 0x42eb5bd7 */
+ 8.3646392822e+00, /* 0x4105d590 */
+};
+
+static float
+ponef(float x)
+{
+ const float *p,*q;
+ float z,r,s;
+ int32_t ix;
+ GET_FLOAT_WORD(ix,x);
+ ix &= 0x7fffffff;
+ /* ix >= 0x40000000 for all calls to this function. */
+ if(ix>=0x41000000) {p = pr8; q= ps8;}
+ else if(ix>=0x40f71c58){p = pr5; q= ps5;}
+ else if(ix>=0x4036db68){p = pr3; q= ps3;}
+ else {p = pr2; q= ps2;}
+ z = one/(x*x);
+ r = p[0]+z*(p[1]+z*(p[2]+z*(p[3]+z*(p[4]+z*p[5]))));
+ s = one+z*(q[0]+z*(q[1]+z*(q[2]+z*(q[3]+z*q[4]))));
+ return one+ r/s;
+}
+
+
+/* For x >= 8, the asymptotic expansions of qone is
+ * 3/8 s - 105/1024 s^3 - ..., where s = 1/x.
+ * We approximate pone by
+ * qone(x) = s*(0.375 + (R/S))
+ * where R = qr1*s^2 + qr2*s^4 + ... + qr5*s^10
+ * S = 1 + qs1*s^2 + ... + qs6*s^12
+ * and
+ * | qone(x)/s -0.375-R/S | <= 2 ** ( -61.13)
+ */
+
+static const float qr8[6] = { /* for x in [inf, 8]=1/[0,0.125] */
+ 0.0000000000e+00, /* 0x00000000 */
+ -1.0253906250e-01, /* 0xbdd20000 */
+ -1.6271753311e+01, /* 0xc1822c8d */
+ -7.5960174561e+02, /* 0xc43de683 */
+ -1.1849806641e+04, /* 0xc639273a */
+ -4.8438511719e+04, /* 0xc73d3683 */
+};
+static const float qs8[6] = {
+ 1.6139537048e+02, /* 0x43216537 */
+ 7.8253862305e+03, /* 0x45f48b17 */
+ 1.3387534375e+05, /* 0x4802bcd6 */
+ 7.1965775000e+05, /* 0x492fb29c */
+ 6.6660125000e+05, /* 0x4922be94 */
+ -2.9449025000e+05, /* 0xc88fcb48 */
+};
+
+static const float qr5[6] = { /* for x in [8,4.5454]=1/[0.125,0.22001] */
+ -2.0897993405e-11, /* 0xadb7d219 */
+ -1.0253904760e-01, /* 0xbdd1fffe */
+ -8.0564479828e+00, /* 0xc100e736 */
+ -1.8366960144e+02, /* 0xc337ab6b */
+ -1.3731937256e+03, /* 0xc4aba633 */
+ -2.6124443359e+03, /* 0xc523471c */
+};
+static const float qs5[6] = {
+ 8.1276550293e+01, /* 0x42a28d98 */
+ 1.9917987061e+03, /* 0x44f8f98f */
+ 1.7468484375e+04, /* 0x468878f8 */
+ 4.9851425781e+04, /* 0x4742bb6d */
+ 2.7948074219e+04, /* 0x46da5826 */
+ -4.7191835938e+03, /* 0xc5937978 */
+};
+
+static const float qr3[6] = {
+ -5.0783124372e-09, /* 0xb1ae7d4f */
+ -1.0253783315e-01, /* 0xbdd1ff5b */
+ -4.6101160049e+00, /* 0xc0938612 */
+ -5.7847221375e+01, /* 0xc267638e */
+ -2.2824453735e+02, /* 0xc3643e9a */
+ -2.1921012878e+02, /* 0xc35b35cb */
+};
+static const float qs3[6] = {
+ 4.7665153503e+01, /* 0x423ea91e */
+ 6.7386511230e+02, /* 0x4428775e */
+ 3.3801528320e+03, /* 0x45534272 */
+ 5.5477290039e+03, /* 0x45ad5dd5 */
+ 1.9031191406e+03, /* 0x44ede3d0 */
+ -1.3520118713e+02, /* 0xc3073381 */
+};
+
+static const float qr2[6] = {/* for x in [2.8570,2]=1/[0.3499,0.5] */
+ -1.7838172539e-07, /* 0xb43f8932 */
+ -1.0251704603e-01, /* 0xbdd1f475 */
+ -2.7522056103e+00, /* 0xc0302423 */
+ -1.9663616180e+01, /* 0xc19d4f16 */
+ -4.2325313568e+01, /* 0xc2294d1f */
+ -2.1371921539e+01, /* 0xc1aaf9b2 */
+};
+static const float qs2[6] = {
+ 2.9533363342e+01, /* 0x41ec4454 */
+ 2.5298155212e+02, /* 0x437cfb47 */
+ 7.5750280762e+02, /* 0x443d602e */
+ 7.3939318848e+02, /* 0x4438d92a */
+ 1.5594900513e+02, /* 0x431bf2f2 */
+ -4.9594988823e+00, /* 0xc09eb437 */
+};
+
+static float
+qonef(float x)
+{
+ const float *p,*q;
+ float s,r,z;
+ int32_t ix;
+ GET_FLOAT_WORD(ix,x);
+ ix &= 0x7fffffff;
+ /* ix >= 0x40000000 for all calls to this function. */
+ if(ix>=0x40200000) {p = qr8; q= qs8;}
+ else if(ix>=0x40f71c58){p = qr5; q= qs5;}
+ else if(ix>=0x4036db68){p = qr3; q= qs3;}
+ else {p = qr2; q= qs2;}
+ z = one/(x*x);
+ r = p[0]+z*(p[1]+z*(p[2]+z*(p[3]+z*(p[4]+z*p[5]))));
+ s = one+z*(q[0]+z*(q[1]+z*(q[2]+z*(q[3]+z*(q[4]+z*q[5])))));
+ return ((float).375 + r/s)/x;
+}
diff --git a/REORG.TODO/sysdeps/ieee754/flt-32/e_jnf.c b/REORG.TODO/sysdeps/ieee754/flt-32/e_jnf.c
new file mode 100644
index 0000000000..4e634778d3
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/flt-32/e_jnf.c
@@ -0,0 +1,233 @@
+/* e_jnf.c -- float version of e_jn.c.
+ * Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#include <errno.h>
+#include <float.h>
+#include <math.h>
+#include <math_private.h>
+
+static const float
+two = 2.0000000000e+00, /* 0x40000000 */
+one = 1.0000000000e+00; /* 0x3F800000 */
+
+static const float zero = 0.0000000000e+00;
+
+float
+__ieee754_jnf(int n, float x)
+{
+ float ret;
+ {
+ int32_t i,hx,ix, sgn;
+ float a, b, temp, di;
+ float z, w;
+
+ /* J(-n,x) = (-1)^n * J(n, x), J(n, -x) = (-1)^n * J(n, x)
+ * Thus, J(-n,x) = J(n,-x)
+ */
+ GET_FLOAT_WORD(hx,x);
+ ix = 0x7fffffff&hx;
+ /* if J(n,NaN) is NaN */
+ if(__builtin_expect(ix>0x7f800000, 0)) return x+x;
+ if(n<0){
+ n = -n;
+ x = -x;
+ hx ^= 0x80000000;
+ }
+ if(n==0) return(__ieee754_j0f(x));
+ if(n==1) return(__ieee754_j1f(x));
+ sgn = (n&1)&(hx>>31); /* even n -- 0, odd n -- sign(x) */
+ x = fabsf(x);
+ SET_RESTORE_ROUNDF (FE_TONEAREST);
+ if(__builtin_expect(ix==0||ix>=0x7f800000, 0)) /* if x is 0 or inf */
+ return sgn == 1 ? -zero : zero;
+ else if((float)n<=x) {
+ /* Safe to use J(n+1,x)=2n/x *J(n,x)-J(n-1,x) */
+ a = __ieee754_j0f(x);
+ b = __ieee754_j1f(x);
+ for(i=1;i<n;i++){
+ temp = b;
+ b = b*((double)(i+i)/x) - a; /* avoid underflow */
+ a = temp;
+ }
+ } else {
+ if(ix<0x30800000) { /* x < 2**-29 */
+ /* x is tiny, return the first Taylor expansion of J(n,x)
+ * J(n,x) = 1/n!*(x/2)^n - ...
+ */
+ if(n>33) /* underflow */
+ b = zero;
+ else {
+ temp = x*(float)0.5; b = temp;
+ for (a=one,i=2;i<=n;i++) {
+ a *= (float)i; /* a = n! */
+ b *= temp; /* b = (x/2)^n */
+ }
+ b = b/a;
+ }
+ } else {
+ /* use backward recurrence */
+ /* x x^2 x^2
+ * J(n,x)/J(n-1,x) = ---- ------ ------ .....
+ * 2n - 2(n+1) - 2(n+2)
+ *
+ * 1 1 1
+ * (for large x) = ---- ------ ------ .....
+ * 2n 2(n+1) 2(n+2)
+ * -- - ------ - ------ -
+ * x x x
+ *
+ * Let w = 2n/x and h=2/x, then the above quotient
+ * is equal to the continued fraction:
+ * 1
+ * = -----------------------
+ * 1
+ * w - -----------------
+ * 1
+ * w+h - ---------
+ * w+2h - ...
+ *
+ * To determine how many terms needed, let
+ * Q(0) = w, Q(1) = w(w+h) - 1,
+ * Q(k) = (w+k*h)*Q(k-1) - Q(k-2),
+ * When Q(k) > 1e4 good for single
+ * When Q(k) > 1e9 good for double
+ * When Q(k) > 1e17 good for quadruple
+ */
+ /* determine k */
+ float t,v;
+ float q0,q1,h,tmp; int32_t k,m;
+ w = (n+n)/(float)x; h = (float)2.0/(float)x;
+ q0 = w; z = w+h; q1 = w*z - (float)1.0; k=1;
+ while(q1<(float)1.0e9) {
+ k += 1; z += h;
+ tmp = z*q1 - q0;
+ q0 = q1;
+ q1 = tmp;
+ }
+ m = n+n;
+ for(t=zero, i = 2*(n+k); i>=m; i -= 2) t = one/(i/x-t);
+ a = t;
+ b = one;
+ /* estimate log((2/x)^n*n!) = n*log(2/x)+n*ln(n)
+ * Hence, if n*(log(2n/x)) > ...
+ * single 8.8722839355e+01
+ * double 7.09782712893383973096e+02
+ * long double 1.1356523406294143949491931077970765006170e+04
+ * then recurrent value may overflow and the result is
+ * likely underflow to zero
+ */
+ tmp = n;
+ v = two/x;
+ tmp = tmp*__ieee754_logf(fabsf(v*tmp));
+ if(tmp<(float)8.8721679688e+01) {
+ for(i=n-1,di=(float)(i+i);i>0;i--){
+ temp = b;
+ b *= di;
+ b = b/x - a;
+ a = temp;
+ di -= two;
+ }
+ } else {
+ for(i=n-1,di=(float)(i+i);i>0;i--){
+ temp = b;
+ b *= di;
+ b = b/x - a;
+ a = temp;
+ di -= two;
+ /* scale b to avoid spurious overflow */
+ if(b>(float)1e10) {
+ a /= b;
+ t /= b;
+ b = one;
+ }
+ }
+ }
+ /* j0() and j1() suffer enormous loss of precision at and
+ * near zero; however, we know that their zero points never
+ * coincide, so just choose the one further away from zero.
+ */
+ z = __ieee754_j0f (x);
+ w = __ieee754_j1f (x);
+ if (fabsf (z) >= fabsf (w))
+ b = (t * z / b);
+ else
+ b = (t * w / a);
+ }
+ }
+ if(sgn==1) ret = -b; else ret = b;
+ ret = math_narrow_eval (ret);
+ }
+ if (ret == 0)
+ {
+ ret = math_narrow_eval (__copysignf (FLT_MIN, ret) * FLT_MIN);
+ __set_errno (ERANGE);
+ }
+ else
+ math_check_force_underflow (ret);
+ return ret;
+}
+strong_alias (__ieee754_jnf, __jnf_finite)
+
+float
+__ieee754_ynf(int n, float x)
+{
+ float ret;
+ {
+ int32_t i,hx,ix;
+ u_int32_t ib;
+ int32_t sign;
+ float a, b, temp;
+
+ GET_FLOAT_WORD(hx,x);
+ ix = 0x7fffffff&hx;
+ /* if Y(n,NaN) is NaN */
+ if(__builtin_expect(ix>0x7f800000, 0)) return x+x;
+ if(__builtin_expect(ix==0, 0))
+ return -HUGE_VALF+x; /* -inf and overflow exception. */
+ if(__builtin_expect(hx<0, 0)) return zero/(zero*x);
+ sign = 1;
+ if(n<0){
+ n = -n;
+ sign = 1 - ((n&1)<<1);
+ }
+ if(n==0) return(__ieee754_y0f(x));
+ SET_RESTORE_ROUNDF (FE_TONEAREST);
+ if(n==1) {
+ ret = sign*__ieee754_y1f(x);
+ goto out;
+ }
+ if(__builtin_expect(ix==0x7f800000, 0)) return zero;
+
+ a = __ieee754_y0f(x);
+ b = __ieee754_y1f(x);
+ /* quit if b is -inf */
+ GET_FLOAT_WORD(ib,b);
+ for(i=1;i<n&&ib!=0xff800000;i++){
+ temp = b;
+ b = ((double)(i+i)/x)*b - a;
+ GET_FLOAT_WORD(ib,b);
+ a = temp;
+ }
+ /* If B is +-Inf, set up errno accordingly. */
+ if (! isfinite (b))
+ __set_errno (ERANGE);
+ if(sign>0) ret = b; else ret = -b;
+ }
+ out:
+ if (isinf (ret))
+ ret = __copysignf (FLT_MAX, ret) * FLT_MAX;
+ return ret;
+}
+strong_alias (__ieee754_ynf, __ynf_finite)
diff --git a/REORG.TODO/sysdeps/ieee754/flt-32/e_lgammaf_r.c b/REORG.TODO/sysdeps/ieee754/flt-32/e_lgammaf_r.c
new file mode 100644
index 0000000000..1b30dcd84d
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/flt-32/e_lgammaf_r.c
@@ -0,0 +1,246 @@
+/* e_lgammaf_r.c -- float version of e_lgamma_r.c.
+ * Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#include <math.h>
+#include <math_private.h>
+#include <libc-diag.h>
+
+static const float
+two23= 8.3886080000e+06, /* 0x4b000000 */
+half= 5.0000000000e-01, /* 0x3f000000 */
+one = 1.0000000000e+00, /* 0x3f800000 */
+pi = 3.1415927410e+00, /* 0x40490fdb */
+a0 = 7.7215664089e-02, /* 0x3d9e233f */
+a1 = 3.2246702909e-01, /* 0x3ea51a66 */
+a2 = 6.7352302372e-02, /* 0x3d89f001 */
+a3 = 2.0580807701e-02, /* 0x3ca89915 */
+a4 = 7.3855509982e-03, /* 0x3bf2027e */
+a5 = 2.8905137442e-03, /* 0x3b3d6ec6 */
+a6 = 1.1927076848e-03, /* 0x3a9c54a1 */
+a7 = 5.1006977446e-04, /* 0x3a05b634 */
+a8 = 2.2086278477e-04, /* 0x39679767 */
+a9 = 1.0801156895e-04, /* 0x38e28445 */
+a10 = 2.5214456400e-05, /* 0x37d383a2 */
+a11 = 4.4864096708e-05, /* 0x383c2c75 */
+tc = 1.4616321325e+00, /* 0x3fbb16c3 */
+tf = -1.2148628384e-01, /* 0xbdf8cdcd */
+/* tt = -(tail of tf) */
+tt = 6.6971006518e-09, /* 0x31e61c52 */
+t0 = 4.8383611441e-01, /* 0x3ef7b95e */
+t1 = -1.4758771658e-01, /* 0xbe17213c */
+t2 = 6.4624942839e-02, /* 0x3d845a15 */
+t3 = -3.2788541168e-02, /* 0xbd064d47 */
+t4 = 1.7970675603e-02, /* 0x3c93373d */
+t5 = -1.0314224288e-02, /* 0xbc28fcfe */
+t6 = 6.1005386524e-03, /* 0x3bc7e707 */
+t7 = -3.6845202558e-03, /* 0xbb7177fe */
+t8 = 2.2596477065e-03, /* 0x3b141699 */
+t9 = -1.4034647029e-03, /* 0xbab7f476 */
+t10 = 8.8108185446e-04, /* 0x3a66f867 */
+t11 = -5.3859531181e-04, /* 0xba0d3085 */
+t12 = 3.1563205994e-04, /* 0x39a57b6b */
+t13 = -3.1275415677e-04, /* 0xb9a3f927 */
+t14 = 3.3552918467e-04, /* 0x39afe9f7 */
+u0 = -7.7215664089e-02, /* 0xbd9e233f */
+u1 = 6.3282704353e-01, /* 0x3f2200f4 */
+u2 = 1.4549225569e+00, /* 0x3fba3ae7 */
+u3 = 9.7771751881e-01, /* 0x3f7a4bb2 */
+u4 = 2.2896373272e-01, /* 0x3e6a7578 */
+u5 = 1.3381091878e-02, /* 0x3c5b3c5e */
+v1 = 2.4559779167e+00, /* 0x401d2ebe */
+v2 = 2.1284897327e+00, /* 0x4008392d */
+v3 = 7.6928514242e-01, /* 0x3f44efdf */
+v4 = 1.0422264785e-01, /* 0x3dd572af */
+v5 = 3.2170924824e-03, /* 0x3b52d5db */
+s0 = -7.7215664089e-02, /* 0xbd9e233f */
+s1 = 2.1498242021e-01, /* 0x3e5c245a */
+s2 = 3.2577878237e-01, /* 0x3ea6cc7a */
+s3 = 1.4635047317e-01, /* 0x3e15dce6 */
+s4 = 2.6642270386e-02, /* 0x3cda40e4 */
+s5 = 1.8402845599e-03, /* 0x3af135b4 */
+s6 = 3.1947532989e-05, /* 0x3805ff67 */
+r1 = 1.3920053244e+00, /* 0x3fb22d3b */
+r2 = 7.2193557024e-01, /* 0x3f38d0c5 */
+r3 = 1.7193385959e-01, /* 0x3e300f6e */
+r4 = 1.8645919859e-02, /* 0x3c98bf54 */
+r5 = 7.7794247773e-04, /* 0x3a4beed6 */
+r6 = 7.3266842264e-06, /* 0x36f5d7bd */
+w0 = 4.1893854737e-01, /* 0x3ed67f1d */
+w1 = 8.3333335817e-02, /* 0x3daaaaab */
+w2 = -2.7777778450e-03, /* 0xbb360b61 */
+w3 = 7.9365057172e-04, /* 0x3a500cfd */
+w4 = -5.9518753551e-04, /* 0xba1c065c */
+w5 = 8.3633989561e-04, /* 0x3a5b3dd2 */
+w6 = -1.6309292987e-03; /* 0xbad5c4e8 */
+
+static const float zero= 0.0000000000e+00;
+
+static float
+sin_pif(float x)
+{
+ float y,z;
+ int n,ix;
+
+ GET_FLOAT_WORD(ix,x);
+ ix &= 0x7fffffff;
+
+ if(ix<0x3e800000) return __kernel_sinf(pi*x,zero,0);
+ y = -x; /* x is assume negative */
+
+ /*
+ * argument reduction, make sure inexact flag not raised if input
+ * is an integer
+ */
+ z = __floorf(y);
+ if(z!=y) { /* inexact anyway */
+ y *= (float)0.5;
+ y = (float)2.0*(y - __floorf(y)); /* y = |x| mod 2.0 */
+ n = (int) (y*(float)4.0);
+ } else {
+ if(ix>=0x4b800000) {
+ y = zero; n = 0; /* y must be even */
+ } else {
+ if(ix<0x4b000000) z = y+two23; /* exact */
+ GET_FLOAT_WORD(n,z);
+ n &= 1;
+ y = n;
+ n<<= 2;
+ }
+ }
+ switch (n) {
+ case 0: y = __kernel_sinf(pi*y,zero,0); break;
+ case 1:
+ case 2: y = __kernel_cosf(pi*((float)0.5-y),zero); break;
+ case 3:
+ case 4: y = __kernel_sinf(pi*(one-y),zero,0); break;
+ case 5:
+ case 6: y = -__kernel_cosf(pi*(y-(float)1.5),zero); break;
+ default: y = __kernel_sinf(pi*(y-(float)2.0),zero,0); break;
+ }
+ return -y;
+}
+
+
+float
+__ieee754_lgammaf_r(float x, int *signgamp)
+{
+ float t,y,z,nadj,p,p1,p2,p3,q,r,w;
+ int i,hx,ix;
+
+ GET_FLOAT_WORD(hx,x);
+
+ /* purge off +-inf, NaN, +-0, and negative arguments */
+ *signgamp = 1;
+ ix = hx&0x7fffffff;
+ if(__builtin_expect(ix>=0x7f800000, 0)) return x*x;
+ if(__builtin_expect(ix==0, 0))
+ {
+ if (hx < 0)
+ *signgamp = -1;
+ return one/fabsf(x);
+ }
+ if(__builtin_expect(ix<0x30800000, 0)) {
+ /* |x|<2**-30, return -log(|x|) */
+ if(hx<0) {
+ *signgamp = -1;
+ return -__ieee754_logf(-x);
+ } else return -__ieee754_logf(x);
+ }
+ if(hx<0) {
+ if(ix>=0x4b000000) /* |x|>=2**23, must be -integer */
+ return __fabsf (x)/zero;
+ if (ix > 0x40000000 /* X < 2.0f. */
+ && ix < 0x41700000 /* X > -15.0f. */)
+ return __lgamma_negf (x, signgamp);
+ t = sin_pif(x);
+ if(t==zero) return one/fabsf(t); /* -integer */
+ nadj = __ieee754_logf(pi/fabsf(t*x));
+ if(t<zero) *signgamp = -1;
+ x = -x;
+ }
+
+ /* purge off 1 and 2 */
+ if (ix==0x3f800000||ix==0x40000000) r = 0;
+ /* for x < 2.0 */
+ else if(ix<0x40000000) {
+ if(ix<=0x3f666666) { /* lgamma(x) = lgamma(x+1)-log(x) */
+ r = -__ieee754_logf(x);
+ if(ix>=0x3f3b4a20) {y = one-x; i= 0;}
+ else if(ix>=0x3e6d3308) {y= x-(tc-one); i=1;}
+ else {y = x; i=2;}
+ } else {
+ r = zero;
+ if(ix>=0x3fdda618) {y=(float)2.0-x;i=0;} /* [1.7316,2] */
+ else if(ix>=0x3F9da620) {y=x-tc;i=1;} /* [1.23,1.73] */
+ else {y=x-one;i=2;}
+ }
+ switch(i) {
+ case 0:
+ z = y*y;
+ p1 = a0+z*(a2+z*(a4+z*(a6+z*(a8+z*a10))));
+ p2 = z*(a1+z*(a3+z*(a5+z*(a7+z*(a9+z*a11)))));
+ p = y*p1+p2;
+ r += (p-(float)0.5*y); break;
+ case 1:
+ z = y*y;
+ w = z*y;
+ p1 = t0+w*(t3+w*(t6+w*(t9 +w*t12))); /* parallel comp */
+ p2 = t1+w*(t4+w*(t7+w*(t10+w*t13)));
+ p3 = t2+w*(t5+w*(t8+w*(t11+w*t14)));
+ p = z*p1-(tt-w*(p2+y*p3));
+ r += (tf + p); break;
+ case 2:
+ p1 = y*(u0+y*(u1+y*(u2+y*(u3+y*(u4+y*u5)))));
+ p2 = one+y*(v1+y*(v2+y*(v3+y*(v4+y*v5))));
+ r += (-(float)0.5*y + p1/p2);
+ }
+ }
+ else if(ix<0x41000000) { /* x < 8.0 */
+ i = (int)x;
+ t = zero;
+ y = x-(float)i;
+ p = y*(s0+y*(s1+y*(s2+y*(s3+y*(s4+y*(s5+y*s6))))));
+ q = one+y*(r1+y*(r2+y*(r3+y*(r4+y*(r5+y*r6)))));
+ r = half*y+p/q;
+ z = one; /* lgamma(1+s) = log(s) + lgamma(s) */
+ switch(i) {
+ case 7: z *= (y+(float)6.0); /* FALLTHRU */
+ case 6: z *= (y+(float)5.0); /* FALLTHRU */
+ case 5: z *= (y+(float)4.0); /* FALLTHRU */
+ case 4: z *= (y+(float)3.0); /* FALLTHRU */
+ case 3: z *= (y+(float)2.0); /* FALLTHRU */
+ r += __ieee754_logf(z); break;
+ }
+ /* 8.0 <= x < 2**26 */
+ } else if (ix < 0x4c800000) {
+ t = __ieee754_logf(x);
+ z = one/x;
+ y = z*z;
+ w = w0+z*(w1+y*(w2+y*(w3+y*(w4+y*(w5+y*w6)))));
+ r = (x-half)*(t-one)+w;
+ } else
+ /* 2**26 <= x <= inf */
+ r = math_narrow_eval (x*(__ieee754_logf(x)-one));
+ /* NADJ is set for negative arguments but not otherwise,
+ resulting in warnings that it may be used uninitialized
+ although in the cases where it is used it has always been
+ set. */
+ DIAG_PUSH_NEEDS_COMMENT;
+ DIAG_IGNORE_NEEDS_COMMENT (4.9, "-Wmaybe-uninitialized");
+ if(hx<0) r = nadj - r;
+ DIAG_POP_NEEDS_COMMENT;
+ return r;
+}
+strong_alias (__ieee754_lgammaf_r, __lgammaf_r_finite)
diff --git a/REORG.TODO/sysdeps/ieee754/flt-32/e_log10f.c b/REORG.TODO/sysdeps/ieee754/flt-32/e_log10f.c
new file mode 100644
index 0000000000..aa21bbc9c5
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/flt-32/e_log10f.c
@@ -0,0 +1,54 @@
+/* e_log10f.c -- float version of e_log10.c.
+ * Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#include <math.h>
+#include <math_private.h>
+#include <fix-int-fp-convert-zero.h>
+
+static const float
+two25 = 3.3554432000e+07, /* 0x4c000000 */
+ivln10 = 4.3429449201e-01, /* 0x3ede5bd9 */
+log10_2hi = 3.0102920532e-01, /* 0x3e9a2080 */
+log10_2lo = 7.9034151668e-07; /* 0x355427db */
+
+float
+__ieee754_log10f(float x)
+{
+ float y,z;
+ int32_t i,k,hx;
+
+ GET_FLOAT_WORD(hx,x);
+
+ k=0;
+ if (hx < 0x00800000) { /* x < 2**-126 */
+ if (__builtin_expect((hx&0x7fffffff)==0, 0))
+ return -two25/__fabsf (x); /* log(+-0)=-inf */
+ if (__builtin_expect(hx<0, 0))
+ return (x-x)/(x-x); /* log(-#) = NaN */
+ k -= 25; x *= two25; /* subnormal number, scale up x */
+ GET_FLOAT_WORD(hx,x);
+ }
+ if (__builtin_expect(hx >= 0x7f800000, 0)) return x+x;
+ k += (hx>>23)-127;
+ i = ((u_int32_t)k&0x80000000)>>31;
+ hx = (hx&0x007fffff)|((0x7f-i)<<23);
+ y = (float)(k+i);
+ if (FIX_INT_FP_CONVERT_ZERO && y == 0.0f)
+ y = 0.0f;
+ SET_FLOAT_WORD(x,hx);
+ z = y*log10_2lo + ivln10*__ieee754_logf(x);
+ return z+y*log10_2hi;
+}
+strong_alias (__ieee754_log10f, __log10f_finite)
diff --git a/REORG.TODO/sysdeps/ieee754/flt-32/e_log2f.c b/REORG.TODO/sysdeps/ieee754/flt-32/e_log2f.c
new file mode 100644
index 0000000000..782d901094
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/flt-32/e_log2f.c
@@ -0,0 +1,86 @@
+/* e_logf.c -- float version of e_log.c.
+ * Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com.
+ * adapted for log2 by Ulrich Drepper <drepper@cygnus.com>
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+
+#include <math.h>
+#include <math_private.h>
+#include <fix-int-fp-convert-zero.h>
+
+static const float
+ln2 = 0.69314718055994530942,
+two25 = 3.355443200e+07, /* 0x4c000000 */
+Lg1 = 6.6666668653e-01, /* 3F2AAAAB */
+Lg2 = 4.0000000596e-01, /* 3ECCCCCD */
+Lg3 = 2.8571429849e-01, /* 3E924925 */
+Lg4 = 2.2222198546e-01, /* 3E638E29 */
+Lg5 = 1.8183572590e-01, /* 3E3A3325 */
+Lg6 = 1.5313838422e-01, /* 3E1CD04F */
+Lg7 = 1.4798198640e-01; /* 3E178897 */
+
+static const float zero = 0.0;
+
+float
+__ieee754_log2f(float x)
+{
+ float hfsq,f,s,z,R,w,t1,t2,dk;
+ int32_t k,ix,i,j;
+
+ GET_FLOAT_WORD(ix,x);
+
+ k=0;
+ if (ix < 0x00800000) { /* x < 2**-126 */
+ if (__builtin_expect((ix&0x7fffffff)==0, 0))
+ return -two25/__fabsf (x); /* log(+-0)=-inf */
+ if (__builtin_expect(ix<0, 0))
+ return (x-x)/(x-x); /* log(-#) = NaN */
+ k -= 25; x *= two25; /* subnormal number, scale up x */
+ GET_FLOAT_WORD(ix,x);
+ }
+ if (__builtin_expect(ix >= 0x7f800000, 0)) return x+x;
+ k += (ix>>23)-127;
+ ix &= 0x007fffff;
+ i = (ix+(0x95f64<<3))&0x800000;
+ SET_FLOAT_WORD(x,ix|(i^0x3f800000)); /* normalize x or x/2 */
+ k += (i>>23);
+ dk = (float)k;
+ f = x-(float)1.0;
+ if((0x007fffff&(15+ix))<16) { /* |f| < 2**-20 */
+ if(f==zero)
+ {
+ if (FIX_INT_FP_CONVERT_ZERO && dk == 0.0f)
+ dk = 0.0f;
+ return dk;
+ }
+ R = f*f*((float)0.5-(float)0.33333333333333333*f);
+ return dk-(R-f)/ln2;
+ }
+ s = f/((float)2.0+f);
+ z = s*s;
+ i = ix-(0x6147a<<3);
+ w = z*z;
+ j = (0x6b851<<3)-ix;
+ t1= w*(Lg2+w*(Lg4+w*Lg6));
+ t2= z*(Lg1+w*(Lg3+w*(Lg5+w*Lg7)));
+ i |= j;
+ R = t2+t1;
+ if(i>0) {
+ hfsq=(float)0.5*f*f;
+ return dk-((hfsq-(s*(hfsq+R)))-f)/ln2;
+ } else {
+ return dk-((s*(f-R))-f)/ln2;
+ }
+}
+strong_alias (__ieee754_log2f, __log2f_finite)
diff --git a/REORG.TODO/sysdeps/ieee754/flt-32/e_logf.c b/REORG.TODO/sysdeps/ieee754/flt-32/e_logf.c
new file mode 100644
index 0000000000..cf75e11781
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/flt-32/e_logf.c
@@ -0,0 +1,85 @@
+/* e_logf.c -- float version of e_log.c.
+ * Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#include <math.h>
+#include <math_private.h>
+
+static const float
+ln2_hi = 6.9313812256e-01, /* 0x3f317180 */
+ln2_lo = 9.0580006145e-06, /* 0x3717f7d1 */
+two25 = 3.355443200e+07, /* 0x4c000000 */
+Lg1 = 6.6666668653e-01, /* 3F2AAAAB */
+Lg2 = 4.0000000596e-01, /* 3ECCCCCD */
+Lg3 = 2.8571429849e-01, /* 3E924925 */
+Lg4 = 2.2222198546e-01, /* 3E638E29 */
+Lg5 = 1.8183572590e-01, /* 3E3A3325 */
+Lg6 = 1.5313838422e-01, /* 3E1CD04F */
+Lg7 = 1.4798198640e-01; /* 3E178897 */
+
+static const float zero = 0.0;
+
+float
+__ieee754_logf(float x)
+{
+ float hfsq,f,s,z,R,w,t1,t2,dk;
+ int32_t k,ix,i,j;
+
+ GET_FLOAT_WORD(ix,x);
+
+ k=0;
+ if (ix < 0x00800000) { /* x < 2**-126 */
+ if (__builtin_expect((ix&0x7fffffff)==0, 0))
+ return -two25/zero; /* log(+-0)=-inf */
+ if (__builtin_expect(ix<0, 0))
+ return (x-x)/(x-x); /* log(-#) = NaN */
+ k -= 25; x *= two25; /* subnormal number, scale up x */
+ GET_FLOAT_WORD(ix,x);
+ }
+ if (__builtin_expect(ix >= 0x7f800000, 0)) return x+x;
+ k += (ix>>23)-127;
+ ix &= 0x007fffff;
+ i = (ix+(0x95f64<<3))&0x800000;
+ SET_FLOAT_WORD(x,ix|(i^0x3f800000)); /* normalize x or x/2 */
+ k += (i>>23);
+ f = x-(float)1.0;
+ if((0x007fffff&(15+ix))<16) { /* |f| < 2**-20 */
+ if(f==zero) {
+ if(k==0) return zero; else {dk=(float)k;
+ return dk*ln2_hi+dk*ln2_lo;}
+ }
+ R = f*f*((float)0.5-(float)0.33333333333333333*f);
+ if(k==0) return f-R; else {dk=(float)k;
+ return dk*ln2_hi-((R-dk*ln2_lo)-f);}
+ }
+ s = f/((float)2.0+f);
+ dk = (float)k;
+ z = s*s;
+ i = ix-(0x6147a<<3);
+ w = z*z;
+ j = (0x6b851<<3)-ix;
+ t1= w*(Lg2+w*(Lg4+w*Lg6));
+ t2= z*(Lg1+w*(Lg3+w*(Lg5+w*Lg7)));
+ i |= j;
+ R = t2+t1;
+ if(i>0) {
+ hfsq=(float)0.5*f*f;
+ if(k==0) return f-(hfsq-s*(hfsq+R)); else
+ return dk*ln2_hi-((hfsq-(s*(hfsq+R)+dk*ln2_lo))-f);
+ } else {
+ if(k==0) return f-s*(f-R); else
+ return dk*ln2_hi-((s*(f-R)-dk*ln2_lo)-f);
+ }
+}
+strong_alias (__ieee754_logf, __logf_finite)
diff --git a/REORG.TODO/sysdeps/ieee754/flt-32/e_powf.c b/REORG.TODO/sysdeps/ieee754/flt-32/e_powf.c
new file mode 100644
index 0000000000..13b49def8e
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/flt-32/e_powf.c
@@ -0,0 +1,258 @@
+/* e_powf.c -- float version of e_pow.c.
+ * Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#include <math.h>
+#include <math_private.h>
+
+static const float huge = 1.0e+30, tiny = 1.0e-30;
+
+static const float
+bp[] = {1.0, 1.5,},
+dp_h[] = { 0.0, 5.84960938e-01,}, /* 0x3f15c000 */
+dp_l[] = { 0.0, 1.56322085e-06,}, /* 0x35d1cfdc */
+zero = 0.0,
+one = 1.0,
+two = 2.0,
+two24 = 16777216.0, /* 0x4b800000 */
+ /* poly coefs for (3/2)*(log(x)-2s-2/3*s**3 */
+L1 = 6.0000002384e-01, /* 0x3f19999a */
+L2 = 4.2857143283e-01, /* 0x3edb6db7 */
+L3 = 3.3333334327e-01, /* 0x3eaaaaab */
+L4 = 2.7272811532e-01, /* 0x3e8ba305 */
+L5 = 2.3066075146e-01, /* 0x3e6c3255 */
+L6 = 2.0697501302e-01, /* 0x3e53f142 */
+P1 = 1.6666667163e-01, /* 0x3e2aaaab */
+P2 = -2.7777778450e-03, /* 0xbb360b61 */
+P3 = 6.6137559770e-05, /* 0x388ab355 */
+P4 = -1.6533901999e-06, /* 0xb5ddea0e */
+P5 = 4.1381369442e-08, /* 0x3331bb4c */
+lg2 = 6.9314718246e-01, /* 0x3f317218 */
+lg2_h = 6.93145752e-01, /* 0x3f317200 */
+lg2_l = 1.42860654e-06, /* 0x35bfbe8c */
+ovt = 4.2995665694e-08, /* -(128-log2(ovfl+.5ulp)) */
+cp = 9.6179670095e-01, /* 0x3f76384f =2/(3ln2) */
+cp_h = 0xf.64p-4, /* cp high 12 bits. */
+cp_l = -0x7.b11e3p-16, /* 2/(3ln2) - cp_h. */
+ivln2 = 1.4426950216e+00, /* 0x3fb8aa3b =1/ln2 */
+ivln2_h = 1.4426879883e+00, /* 0x3fb8aa00 =16b 1/ln2*/
+ivln2_l = 7.0526075433e-06; /* 0x36eca570 =1/ln2 tail*/
+
+float
+__ieee754_powf(float x, float y)
+{
+ float z,ax,z_h,z_l,p_h,p_l;
+ float y1,t1,t2,r,s,t,u,v,w;
+ int32_t i,j,k,yisint,n;
+ int32_t hx,hy,ix,iy,is;
+
+ GET_FLOAT_WORD(hx,x);
+ GET_FLOAT_WORD(hy,y);
+ ix = hx&0x7fffffff; iy = hy&0x7fffffff;
+
+ /* y==zero: x**0 = 1 */
+ if(iy==0 && !issignaling (x)) return one;
+
+ /* x==+-1 */
+ if(x == 1.0 && !issignaling (y)) return one;
+ if(x == -1.0 && isinf(y)) return one;
+
+ /* +-NaN return x+y */
+ if(__builtin_expect(ix > 0x7f800000 ||
+ iy > 0x7f800000, 0))
+ return x+y;
+
+ /* determine if y is an odd int when x < 0
+ * yisint = 0 ... y is not an integer
+ * yisint = 1 ... y is an odd int
+ * yisint = 2 ... y is an even int
+ */
+ yisint = 0;
+ if(hx<0) {
+ if(iy>=0x4b800000) yisint = 2; /* even integer y */
+ else if(iy>=0x3f800000) {
+ k = (iy>>23)-0x7f; /* exponent */
+ j = iy>>(23-k);
+ if((j<<(23-k))==iy) yisint = 2-(j&1);
+ }
+ }
+
+ /* special value of y */
+ if (__builtin_expect(iy==0x7f800000, 0)) { /* y is +-inf */
+ if (ix==0x3f800000)
+ return y - y; /* inf**+-1 is NaN */
+ else if (ix > 0x3f800000)/* (|x|>1)**+-inf = inf,0 */
+ return (hy>=0)? y: zero;
+ else /* (|x|<1)**-,+inf = inf,0 */
+ return (hy<0)?-y: zero;
+ }
+ if(iy==0x3f800000) { /* y is +-1 */
+ if(hy<0) return one/x; else return x;
+ }
+ if(hy==0x40000000) return x*x; /* y is 2 */
+ if(hy==0x3f000000) { /* y is 0.5 */
+ if(__builtin_expect(hx>=0, 1)) /* x >= +0 */
+ return __ieee754_sqrtf(x);
+ }
+
+ ax = fabsf(x);
+ /* special value of x */
+ if(__builtin_expect(ix==0x7f800000||ix==0||ix==0x3f800000, 0)){
+ z = ax; /*x is +-0,+-inf,+-1*/
+ if(hy<0) z = one/z; /* z = (1/|x|) */
+ if(hx<0) {
+ if(((ix-0x3f800000)|yisint)==0) {
+ z = (z-z)/(z-z); /* (-1)**non-int is NaN */
+ } else if(yisint==1)
+ z = -z; /* (x<0)**odd = -(|x|**odd) */
+ }
+ return z;
+ }
+
+ /* (x<0)**(non-int) is NaN */
+ if(__builtin_expect(((((u_int32_t)hx>>31)-1)|yisint)==0, 0))
+ return (x-x)/(x-x);
+
+ /* |y| is huge */
+ if(__builtin_expect(iy>0x4d000000, 0)) { /* if |y| > 2**27 */
+ /* over/underflow if x is not close to one */
+ if(ix<0x3f7ffff8) return (hy<0)? huge*huge:tiny*tiny;
+ if(ix>0x3f800007) return (hy>0)? huge*huge:tiny*tiny;
+ /* now |1-x| is tiny <= 2**-20, suffice to compute
+ log(x) by x-x^2/2+x^3/3-x^4/4 */
+ t = ax-1; /* t has 20 trailing zeros */
+ w = (t*t)*((float)0.5-t*((float)0.333333333333-t*(float)0.25));
+ u = ivln2_h*t; /* ivln2_h has 16 sig. bits */
+ v = t*ivln2_l-w*ivln2;
+ t1 = u+v;
+ GET_FLOAT_WORD(is,t1);
+ SET_FLOAT_WORD(t1,is&0xfffff000);
+ t2 = v-(t1-u);
+ } else {
+ float s2,s_h,s_l,t_h,t_l;
+ /* Avoid internal underflow for tiny y. The exact value
+ of y does not matter if |y| <= 2**-32. */
+ if (iy < 0x2f800000)
+ SET_FLOAT_WORD (y, (hy & 0x80000000) | 0x2f800000);
+ n = 0;
+ /* take care subnormal number */
+ if(ix<0x00800000)
+ {ax *= two24; n -= 24; GET_FLOAT_WORD(ix,ax); }
+ n += ((ix)>>23)-0x7f;
+ j = ix&0x007fffff;
+ /* determine interval */
+ ix = j|0x3f800000; /* normalize ix */
+ if(j<=0x1cc471) k=0; /* |x|<sqrt(3/2) */
+ else if(j<0x5db3d7) k=1; /* |x|<sqrt(3) */
+ else {k=0;n+=1;ix -= 0x00800000;}
+ SET_FLOAT_WORD(ax,ix);
+
+ /* compute s = s_h+s_l = (x-1)/(x+1) or (x-1.5)/(x+1.5) */
+ u = ax-bp[k]; /* bp[0]=1.0, bp[1]=1.5 */
+ v = one/(ax+bp[k]);
+ s = u*v;
+ s_h = s;
+ GET_FLOAT_WORD(is,s_h);
+ SET_FLOAT_WORD(s_h,is&0xfffff000);
+ /* t_h=ax+bp[k] High */
+ SET_FLOAT_WORD (t_h,
+ ((((ix>>1)|0x20000000)+0x00400000+(k<<21))
+ & 0xfffff000));
+ t_l = ax - (t_h-bp[k]);
+ s_l = v*((u-s_h*t_h)-s_h*t_l);
+ /* compute log(ax) */
+ s2 = s*s;
+ r = s2*s2*(L1+s2*(L2+s2*(L3+s2*(L4+s2*(L5+s2*L6)))));
+ r += s_l*(s_h+s);
+ s2 = s_h*s_h;
+ t_h = (float)3.0+s2+r;
+ GET_FLOAT_WORD(is,t_h);
+ SET_FLOAT_WORD(t_h,is&0xfffff000);
+ t_l = r-((t_h-(float)3.0)-s2);
+ /* u+v = s*(1+...) */
+ u = s_h*t_h;
+ v = s_l*t_h+t_l*s;
+ /* 2/(3log2)*(s+...) */
+ p_h = u+v;
+ GET_FLOAT_WORD(is,p_h);
+ SET_FLOAT_WORD(p_h,is&0xfffff000);
+ p_l = v-(p_h-u);
+ z_h = cp_h*p_h; /* cp_h+cp_l = 2/(3*log2) */
+ z_l = cp_l*p_h+p_l*cp+dp_l[k];
+ /* log2(ax) = (s+..)*2/(3*log2) = n + dp_h + z_h + z_l */
+ t = (float)n;
+ t1 = (((z_h+z_l)+dp_h[k])+t);
+ GET_FLOAT_WORD(is,t1);
+ SET_FLOAT_WORD(t1,is&0xfffff000);
+ t2 = z_l-(((t1-t)-dp_h[k])-z_h);
+ }
+
+ s = one; /* s (sign of result -ve**odd) = -1 else = 1 */
+ if(((((u_int32_t)hx>>31)-1)|(yisint-1))==0)
+ s = -one; /* (-ve)**(odd int) */
+
+ /* split up y into y1+y2 and compute (y1+y2)*(t1+t2) */
+ GET_FLOAT_WORD(is,y);
+ SET_FLOAT_WORD(y1,is&0xfffff000);
+ p_l = (y-y1)*t1+y*t2;
+ p_h = y1*t1;
+ z = p_l+p_h;
+ GET_FLOAT_WORD(j,z);
+ if (__builtin_expect(j>0x43000000, 0)) /* if z > 128 */
+ return s*huge*huge; /* overflow */
+ else if (__builtin_expect(j==0x43000000, 0)) { /* if z == 128 */
+ if(p_l+ovt>z-p_h) return s*huge*huge; /* overflow */
+ }
+ else if (__builtin_expect((j&0x7fffffff)>0x43160000, 0))/* z <= -150 */
+ return s*tiny*tiny; /* underflow */
+ else if (__builtin_expect((u_int32_t) j==0xc3160000, 0)){/* z == -150*/
+ if(p_l<=z-p_h) return s*tiny*tiny; /* underflow */
+ }
+ /*
+ * compute 2**(p_h+p_l)
+ */
+ i = j&0x7fffffff;
+ k = (i>>23)-0x7f;
+ n = 0;
+ if(i>0x3f000000) { /* if |z| > 0.5, set n = [z+0.5] */
+ n = j+(0x00800000>>(k+1));
+ k = ((n&0x7fffffff)>>23)-0x7f; /* new k for n */
+ SET_FLOAT_WORD(t,n&~(0x007fffff>>k));
+ n = ((n&0x007fffff)|0x00800000)>>(23-k);
+ if(j<0) n = -n;
+ p_h -= t;
+ }
+ t = p_l+p_h;
+ GET_FLOAT_WORD(is,t);
+ SET_FLOAT_WORD(t,is&0xfffff000);
+ u = t*lg2_h;
+ v = (p_l-(t-p_h))*lg2+t*lg2_l;
+ z = u+v;
+ w = v-(z-u);
+ t = z*z;
+ t1 = z - t*(P1+t*(P2+t*(P3+t*(P4+t*P5))));
+ r = (z*t1)/(t1-two)-(w+z*w);
+ z = one-(r-z);
+ GET_FLOAT_WORD(j,z);
+ j += (n<<23);
+ if((j>>23)<=0) /* subnormal output */
+ {
+ z = __scalbnf (z, n);
+ float force_underflow = z * z;
+ math_force_eval (force_underflow);
+ }
+ else SET_FLOAT_WORD(z,j);
+ return s*z;
+}
+strong_alias (__ieee754_powf, __powf_finite)
diff --git a/REORG.TODO/sysdeps/ieee754/flt-32/e_rem_pio2f.c b/REORG.TODO/sysdeps/ieee754/flt-32/e_rem_pio2f.c
new file mode 100644
index 0000000000..c4d28c8657
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/flt-32/e_rem_pio2f.c
@@ -0,0 +1,179 @@
+/* e_rem_pio2f.c -- float version of e_rem_pio2.c
+ * Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: e_rem_pio2f.c,v 1.5 1995/05/10 20:46:03 jtc Exp $";
+#endif
+
+/* __ieee754_rem_pio2f(x,y)
+ *
+ * return the remainder of x rem pi/2 in y[0]+y[1]
+ * use __kernel_rem_pio2f()
+ */
+
+#include <math.h>
+#include <math_private.h>
+
+/*
+ * Table of constants for 2/pi, 396 Hex digits (476 decimal) of 2/pi
+ */
+static const int32_t two_over_pi[] = {
+0xA2, 0xF9, 0x83, 0x6E, 0x4E, 0x44, 0x15, 0x29, 0xFC,
+0x27, 0x57, 0xD1, 0xF5, 0x34, 0xDD, 0xC0, 0xDB, 0x62,
+0x95, 0x99, 0x3C, 0x43, 0x90, 0x41, 0xFE, 0x51, 0x63,
+0xAB, 0xDE, 0xBB, 0xC5, 0x61, 0xB7, 0x24, 0x6E, 0x3A,
+0x42, 0x4D, 0xD2, 0xE0, 0x06, 0x49, 0x2E, 0xEA, 0x09,
+0xD1, 0x92, 0x1C, 0xFE, 0x1D, 0xEB, 0x1C, 0xB1, 0x29,
+0xA7, 0x3E, 0xE8, 0x82, 0x35, 0xF5, 0x2E, 0xBB, 0x44,
+0x84, 0xE9, 0x9C, 0x70, 0x26, 0xB4, 0x5F, 0x7E, 0x41,
+0x39, 0x91, 0xD6, 0x39, 0x83, 0x53, 0x39, 0xF4, 0x9C,
+0x84, 0x5F, 0x8B, 0xBD, 0xF9, 0x28, 0x3B, 0x1F, 0xF8,
+0x97, 0xFF, 0xDE, 0x05, 0x98, 0x0F, 0xEF, 0x2F, 0x11,
+0x8B, 0x5A, 0x0A, 0x6D, 0x1F, 0x6D, 0x36, 0x7E, 0xCF,
+0x27, 0xCB, 0x09, 0xB7, 0x4F, 0x46, 0x3F, 0x66, 0x9E,
+0x5F, 0xEA, 0x2D, 0x75, 0x27, 0xBA, 0xC7, 0xEB, 0xE5,
+0xF1, 0x7B, 0x3D, 0x07, 0x39, 0xF7, 0x8A, 0x52, 0x92,
+0xEA, 0x6B, 0xFB, 0x5F, 0xB1, 0x1F, 0x8D, 0x5D, 0x08,
+0x56, 0x03, 0x30, 0x46, 0xFC, 0x7B, 0x6B, 0xAB, 0xF0,
+0xCF, 0xBC, 0x20, 0x9A, 0xF4, 0x36, 0x1D, 0xA9, 0xE3,
+0x91, 0x61, 0x5E, 0xE6, 0x1B, 0x08, 0x65, 0x99, 0x85,
+0x5F, 0x14, 0xA0, 0x68, 0x40, 0x8D, 0xFF, 0xD8, 0x80,
+0x4D, 0x73, 0x27, 0x31, 0x06, 0x06, 0x15, 0x56, 0xCA,
+0x73, 0xA8, 0xC9, 0x60, 0xE2, 0x7B, 0xC0, 0x8C, 0x6B,
+};
+
+/* This array is like the one in e_rem_pio2.c, but the numbers are
+ single precision and the last 8 bits are forced to 0. */
+static const int32_t npio2_hw[] = {
+0x3fc90f00, 0x40490f00, 0x4096cb00, 0x40c90f00, 0x40fb5300, 0x4116cb00,
+0x412fed00, 0x41490f00, 0x41623100, 0x417b5300, 0x418a3a00, 0x4196cb00,
+0x41a35c00, 0x41afed00, 0x41bc7e00, 0x41c90f00, 0x41d5a000, 0x41e23100,
+0x41eec200, 0x41fb5300, 0x4203f200, 0x420a3a00, 0x42108300, 0x4216cb00,
+0x421d1400, 0x42235c00, 0x4229a500, 0x422fed00, 0x42363600, 0x423c7e00,
+0x4242c700, 0x42490f00
+};
+
+/*
+ * invpio2: 24 bits of 2/pi
+ * pio2_1: first 17 bit of pi/2
+ * pio2_1t: pi/2 - pio2_1
+ * pio2_2: second 17 bit of pi/2
+ * pio2_2t: pi/2 - (pio2_1+pio2_2)
+ * pio2_3: third 17 bit of pi/2
+ * pio2_3t: pi/2 - (pio2_1+pio2_2+pio2_3)
+ */
+
+static const float
+zero = 0.0000000000e+00, /* 0x00000000 */
+half = 5.0000000000e-01, /* 0x3f000000 */
+two8 = 2.5600000000e+02, /* 0x43800000 */
+invpio2 = 6.3661980629e-01, /* 0x3f22f984 */
+pio2_1 = 1.5707855225e+00, /* 0x3fc90f80 */
+pio2_1t = 1.0804334124e-05, /* 0x37354443 */
+pio2_2 = 1.0804273188e-05, /* 0x37354400 */
+pio2_2t = 6.0770999344e-11, /* 0x2e85a308 */
+pio2_3 = 6.0770943833e-11, /* 0x2e85a300 */
+pio2_3t = 6.1232342629e-17; /* 0x248d3132 */
+
+int32_t __ieee754_rem_pio2f(float x, float *y)
+{
+ float z,w,t,r,fn;
+ float tx[3];
+ int32_t e0,i,j,nx,n,ix,hx;
+
+ GET_FLOAT_WORD(hx,x);
+ ix = hx&0x7fffffff;
+ if(ix<=0x3f490fd8) /* |x| ~<= pi/4 , no need for reduction */
+ {y[0] = x; y[1] = 0; return 0;}
+ if(ix<0x4016cbe4) { /* |x| < 3pi/4, special case with n=+-1 */
+ if(hx>0) {
+ z = x - pio2_1;
+ if((ix&0xffffffc0)!=0x3fc90fc0) { /* 24+24 bit pi OK */
+ y[0] = z - pio2_1t;
+ y[1] = (z-y[0])-pio2_1t;
+ } else { /* near pi/2, use 24+24+24 bit pi */
+ z -= pio2_2;
+ y[0] = z - pio2_2t;
+ y[1] = (z-y[0])-pio2_2t;
+ }
+ return 1;
+ } else { /* negative x */
+ z = x + pio2_1;
+ if((ix&0xffffffc0)!=0x3fc90fc0) { /* 24+24 bit pi OK */
+ y[0] = z + pio2_1t;
+ y[1] = (z-y[0])+pio2_1t;
+ } else { /* near pi/2, use 24+24+24 bit pi */
+ z += pio2_2;
+ y[0] = z + pio2_2t;
+ y[1] = (z-y[0])+pio2_2t;
+ }
+ return -1;
+ }
+ }
+ if(ix<=0x43490f80) { /* |x| ~<= 2^7*(pi/2), medium size */
+ t = fabsf(x);
+ n = (int32_t) (t*invpio2+half);
+ fn = (float)n;
+ r = t-fn*pio2_1;
+ w = fn*pio2_1t; /* 1st round good to 40 bit */
+ if(n<32&&(int32_t)(ix&0xffffff00)!=npio2_hw[n-1]) {
+ y[0] = r-w; /* quick check no cancellation */
+ } else {
+ u_int32_t high;
+ j = ix>>23;
+ y[0] = r-w;
+ GET_FLOAT_WORD(high,y[0]);
+ i = j-((high>>23)&0xff);
+ if(i>8) { /* 2nd iteration needed, good to 57 */
+ t = r;
+ w = fn*pio2_2;
+ r = t-w;
+ w = fn*pio2_2t-((t-r)-w);
+ y[0] = r-w;
+ GET_FLOAT_WORD(high,y[0]);
+ i = j-((high>>23)&0xff);
+ if(i>25) { /* 3rd iteration need, 74 bits acc */
+ t = r; /* will cover all possible cases */
+ w = fn*pio2_3;
+ r = t-w;
+ w = fn*pio2_3t-((t-r)-w);
+ y[0] = r-w;
+ }
+ }
+ }
+ y[1] = (r-y[0])-w;
+ if(hx<0) {y[0] = -y[0]; y[1] = -y[1]; return -n;}
+ else return n;
+ }
+ /*
+ * all other (large) arguments
+ */
+ if(ix>=0x7f800000) { /* x is inf or NaN */
+ y[0]=y[1]=x-x; return 0;
+ }
+ /* set z = scalbn(|x|,ilogb(x)-7) */
+ e0 = (ix>>23)-134; /* e0 = ilogb(z)-7; */
+ SET_FLOAT_WORD(z, ix - ((int32_t)(e0<<23)));
+ for(i=0;i<2;i++) {
+ tx[i] = (float)((int32_t)(z));
+ z = (z-tx[i])*two8;
+ }
+ tx[2] = z;
+ nx = 3;
+ while(tx[nx-1]==zero) nx--; /* skip zero term */
+ n = __kernel_rem_pio2f(tx,y,e0,nx,2,two_over_pi);
+ if(hx<0) {y[0] = -y[0]; y[1] = -y[1]; return -n;}
+ return n;
+}
diff --git a/REORG.TODO/sysdeps/ieee754/flt-32/e_remainderf.c b/REORG.TODO/sysdeps/ieee754/flt-32/e_remainderf.c
new file mode 100644
index 0000000000..cc0167862e
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/flt-32/e_remainderf.c
@@ -0,0 +1,62 @@
+/* e_remainderf.c -- float version of e_remainder.c.
+ * Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#include <math.h>
+#include <math_private.h>
+
+static const float zero = 0.0;
+
+
+float
+__ieee754_remainderf(float x, float p)
+{
+ int32_t hx,hp;
+ u_int32_t sx;
+ float p_half;
+
+ GET_FLOAT_WORD(hx,x);
+ GET_FLOAT_WORD(hp,p);
+ sx = hx&0x80000000;
+ hp &= 0x7fffffff;
+ hx &= 0x7fffffff;
+
+ /* purge off exception values */
+ if(hp==0) return (x*p)/(x*p); /* p = 0 */
+ if((hx>=0x7f800000)|| /* x not finite */
+ ((hp>0x7f800000))) /* p is NaN */
+ return (x*p)/(x*p);
+
+
+ if (hp<=0x7effffff) x = __ieee754_fmodf(x,p+p); /* now x < 2p */
+ if ((hx-hp)==0) return zero*x;
+ x = fabsf(x);
+ p = fabsf(p);
+ if (hp<0x01000000) {
+ if(x+x>p) {
+ x-=p;
+ if(x+x>=p) x -= p;
+ }
+ } else {
+ p_half = (float)0.5*p;
+ if(x>p_half) {
+ x-=p;
+ if(x>=p_half) x -= p;
+ }
+ }
+ GET_FLOAT_WORD(hx,x);
+ SET_FLOAT_WORD(x,hx^sx);
+ return x;
+}
+strong_alias (__ieee754_remainderf, __remainderf_finite)
diff --git a/REORG.TODO/sysdeps/ieee754/flt-32/e_sinhf.c b/REORG.TODO/sysdeps/ieee754/flt-32/e_sinhf.c
new file mode 100644
index 0000000000..6100d95c55
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/flt-32/e_sinhf.c
@@ -0,0 +1,60 @@
+/* e_sinhf.c -- float version of e_sinh.c.
+ * Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#include <float.h>
+#include <math.h>
+#include <math_private.h>
+
+static const float one = 1.0, shuge = 1.0e37;
+
+float
+__ieee754_sinhf(float x)
+{
+ float t,w,h;
+ int32_t ix,jx;
+
+ GET_FLOAT_WORD(jx,x);
+ ix = jx&0x7fffffff;
+
+ /* x is INF or NaN */
+ if(__builtin_expect(ix>=0x7f800000, 0)) return x+x;
+
+ h = 0.5;
+ if (jx<0) h = -h;
+ /* |x| in [0,22], return sign(x)*0.5*(E+E/(E+1))) */
+ if (ix < 0x41b00000) { /* |x|<22 */
+ if (__builtin_expect(ix<0x31800000, 0)) { /* |x|<2**-28 */
+ math_check_force_underflow (x);
+ if(shuge+x>one) return x;/* sinh(tiny) = tiny with inexact */
+ }
+ t = __expm1f(fabsf(x));
+ if(ix<0x3f800000) return h*((float)2.0*t-t*t/(t+one));
+ return h*(t+t/(t+one));
+ }
+
+ /* |x| in [22, log(maxdouble)] return 0.5*exp(|x|) */
+ if (ix < 0x42b17180) return h*__ieee754_expf(fabsf(x));
+
+ /* |x| in [log(maxdouble), overflowthresold] */
+ if (ix<=0x42b2d4fc) {
+ w = __ieee754_expf((float)0.5*fabsf(x));
+ t = h*w;
+ return t*w;
+ }
+
+ /* |x| > overflowthresold, sinh(x) overflow */
+ return math_narrow_eval (x*shuge);
+}
+strong_alias (__ieee754_sinhf, __sinhf_finite)
diff --git a/REORG.TODO/sysdeps/ieee754/flt-32/e_sqrtf.c b/REORG.TODO/sysdeps/ieee754/flt-32/e_sqrtf.c
new file mode 100644
index 0000000000..c02206ac01
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/flt-32/e_sqrtf.c
@@ -0,0 +1,86 @@
+/* e_sqrtf.c -- float version of e_sqrt.c.
+ * Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#include <math.h>
+#include <math_private.h>
+
+static const float one = 1.0, tiny=1.0e-30;
+
+float
+__ieee754_sqrtf(float x)
+{
+ float z;
+ int32_t sign = (int)0x80000000;
+ int32_t ix,s,q,m,t,i;
+ u_int32_t r;
+
+ GET_FLOAT_WORD(ix,x);
+
+ /* take care of Inf and NaN */
+ if((ix&0x7f800000)==0x7f800000) {
+ return x*x+x; /* sqrt(NaN)=NaN, sqrt(+inf)=+inf
+ sqrt(-inf)=sNaN */
+ }
+ /* take care of zero */
+ if(ix<=0) {
+ if((ix&(~sign))==0) return x;/* sqrt(+-0) = +-0 */
+ else if(ix<0)
+ return (x-x)/(x-x); /* sqrt(-ve) = sNaN */
+ }
+ /* normalize x */
+ m = (ix>>23);
+ if(m==0) { /* subnormal x */
+ for(i=0;(ix&0x00800000)==0;i++) ix<<=1;
+ m -= i-1;
+ }
+ m -= 127; /* unbias exponent */
+ ix = (ix&0x007fffff)|0x00800000;
+ if(m&1) /* odd m, double x to make it even */
+ ix += ix;
+ m >>= 1; /* m = [m/2] */
+
+ /* generate sqrt(x) bit by bit */
+ ix += ix;
+ q = s = 0; /* q = sqrt(x) */
+ r = 0x01000000; /* r = moving bit from right to left */
+
+ while(r!=0) {
+ t = s+r;
+ if(t<=ix) {
+ s = t+r;
+ ix -= t;
+ q += r;
+ }
+ ix += ix;
+ r>>=1;
+ }
+
+ /* use floating add to find out rounding direction */
+ if(ix!=0) {
+ z = one-tiny; /* trigger inexact flag */
+ if (z>=one) {
+ z = one+tiny;
+ if (z>one)
+ q += 2;
+ else
+ q += (q&1);
+ }
+ }
+ ix = (q>>1)+0x3f000000;
+ ix += (m <<23);
+ SET_FLOAT_WORD(z,ix);
+ return z;
+}
+strong_alias (__ieee754_sqrtf, __sqrtf_finite)
diff --git a/REORG.TODO/sysdeps/ieee754/flt-32/k_cosf.c b/REORG.TODO/sysdeps/ieee754/flt-32/k_cosf.c
new file mode 100644
index 0000000000..63ca822f8c
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/flt-32/k_cosf.c
@@ -0,0 +1,55 @@
+/* k_cosf.c -- float version of k_cos.c
+ * Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: k_cosf.c,v 1.4 1995/05/10 20:46:23 jtc Exp $";
+#endif
+
+#include <math.h>
+#include <math_private.h>
+
+static const float
+one = 1.0000000000e+00, /* 0x3f800000 */
+C1 = 4.1666667908e-02, /* 0x3d2aaaab */
+C2 = -1.3888889225e-03, /* 0xbab60b61 */
+C3 = 2.4801587642e-05, /* 0x37d00d01 */
+C4 = -2.7557314297e-07, /* 0xb493f27c */
+C5 = 2.0875723372e-09, /* 0x310f74f6 */
+C6 = -1.1359647598e-11; /* 0xad47d74e */
+
+float __kernel_cosf(float x, float y)
+{
+ float a,hz,z,r,qx;
+ int32_t ix;
+ GET_FLOAT_WORD(ix,x);
+ ix &= 0x7fffffff; /* ix = |x|'s high word*/
+ if(ix<0x32000000) { /* if x < 2**27 */
+ if(((int)x)==0) return one; /* generate inexact */
+ }
+ z = x*x;
+ r = z*(C1+z*(C2+z*(C3+z*(C4+z*(C5+z*C6)))));
+ if(ix < 0x3e99999a) /* if |x| < 0.3 */
+ return one - ((float)0.5*z - (z*r - x*y));
+ else {
+ if(ix > 0x3f480000) { /* x > 0.78125 */
+ qx = (float)0.28125;
+ } else {
+ SET_FLOAT_WORD(qx,ix-0x01000000); /* x/4 */
+ }
+ hz = (float)0.5*z-qx;
+ a = one-qx;
+ return a - (hz - (z*r-x*y));
+ }
+}
diff --git a/REORG.TODO/sysdeps/ieee754/flt-32/k_rem_pio2f.c b/REORG.TODO/sysdeps/ieee754/flt-32/k_rem_pio2f.c
new file mode 100644
index 0000000000..a8d5b216e6
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/flt-32/k_rem_pio2f.c
@@ -0,0 +1,208 @@
+/* k_rem_pio2f.c -- float version of k_rem_pio2.c
+ * Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: k_rem_pio2f.c,v 1.4 1995/05/10 20:46:28 jtc Exp $";
+#endif
+
+#include <math.h>
+#include <math_private.h>
+#include <libc-diag.h>
+
+/* In the float version, the input parameter x contains 8 bit
+ integers, not 24 bit integers. 113 bit precision is not supported. */
+
+static const int init_jk[] = {4,7,9}; /* initial value for jk */
+
+static const float PIo2[] = {
+ 1.5703125000e+00, /* 0x3fc90000 */
+ 4.5776367188e-04, /* 0x39f00000 */
+ 2.5987625122e-05, /* 0x37da0000 */
+ 7.5437128544e-08, /* 0x33a20000 */
+ 6.0026650317e-11, /* 0x2e840000 */
+ 7.3896444519e-13, /* 0x2b500000 */
+ 5.3845816694e-15, /* 0x27c20000 */
+ 5.6378512969e-18, /* 0x22d00000 */
+ 8.3009228831e-20, /* 0x1fc40000 */
+ 3.2756352257e-22, /* 0x1bc60000 */
+ 6.3331015649e-25, /* 0x17440000 */
+};
+
+static const float
+zero = 0.0,
+one = 1.0,
+two8 = 2.5600000000e+02, /* 0x43800000 */
+twon8 = 3.9062500000e-03; /* 0x3b800000 */
+
+int __kernel_rem_pio2f(float *x, float *y, int e0, int nx, int prec, const int32_t *ipio2)
+{
+ int32_t jz,jx,jv,jp,jk,carry,n,iq[20],i,j,k,m,q0,ih;
+ float z,fw,f[20],fq[20],q[20];
+
+ /* initialize jk*/
+ jk = init_jk[prec];
+ jp = jk;
+
+ /* determine jx,jv,q0, note that 3>q0 */
+ jx = nx-1;
+ jv = (e0-3)/8; if(jv<0) jv=0;
+ q0 = e0-8*(jv+1);
+
+ /* set up f[0] to f[jx+jk] where f[jx+jk] = ipio2[jv+jk] */
+ j = jv-jx; m = jx+jk;
+ for(i=0;i<=m;i++,j++) f[i] = (j<0)? zero : (float) ipio2[j];
+
+ /* compute q[0],q[1],...q[jk] */
+ for (i=0;i<=jk;i++) {
+ for(j=0,fw=0.0;j<=jx;j++)
+ fw += x[j]*f[jx+i-j];
+ q[i] = fw;
+ }
+
+ jz = jk;
+recompute:
+ /* distill q[] into iq[] reversingly */
+ for(i=0,j=jz,z=q[jz];j>0;i++,j--) {
+ fw = (float)((int32_t)(twon8* z));
+ iq[i] = (int32_t)(z-two8*fw);
+ z = q[j-1]+fw;
+ }
+
+ /* compute n */
+ z = __scalbnf(z,q0); /* actual value of z */
+ z -= (float)8.0*__floorf(z*(float)0.125); /* trim off integer >= 8 */
+ n = (int32_t) z;
+ z -= (float)n;
+ ih = 0;
+ if(q0>0) { /* need iq[jz-1] to determine n */
+ i = (iq[jz-1]>>(8-q0)); n += i;
+ iq[jz-1] -= i<<(8-q0);
+ ih = iq[jz-1]>>(7-q0);
+ }
+ else if(q0==0) ih = iq[jz-1]>>7;
+ else if(z>=(float)0.5) ih=2;
+
+ if(ih>0) { /* q > 0.5 */
+ n += 1; carry = 0;
+ for(i=0;i<jz ;i++) { /* compute 1-q */
+ j = iq[i];
+ if(carry==0) {
+ if(j!=0) {
+ carry = 1; iq[i] = 0x100- j;
+ }
+ } else iq[i] = 0xff - j;
+ }
+ if(q0>0) { /* rare case: chance is 1 in 12 */
+ switch(q0) {
+ case 1:
+ iq[jz-1] &= 0x7f; break;
+ case 2:
+ iq[jz-1] &= 0x3f; break;
+ }
+ }
+ if(ih==2) {
+ z = one - z;
+ if(carry!=0) z -= __scalbnf(one,q0);
+ }
+ }
+
+ /* check if recomputation is needed */
+ if(z==zero) {
+ j = 0;
+ for (i=jz-1;i>=jk;i--) j |= iq[i];
+ if(j==0) { /* need recomputation */
+ /* On s390x gcc 6.1 -O3 produces the warning "array subscript is
+ below array bounds [-Werror=array-bounds]". Only
+ __ieee754_rem_pio2f calls __kernel_rem_pio2f for normal
+ numbers and |x| ~> 2^7*(pi/2). Thus x can't be zero and
+ ipio2 is not zero, too. Thus not all iq[] values can't be
+ zero. */
+ DIAG_PUSH_NEEDS_COMMENT;
+ DIAG_IGNORE_NEEDS_COMMENT (6.1, "-Warray-bounds");
+ for(k=1;iq[jk-k]==0;k++); /* k = no. of terms needed */
+ DIAG_POP_NEEDS_COMMENT;
+
+ for(i=jz+1;i<=jz+k;i++) { /* add q[jz+1] to q[jz+k] */
+ f[jx+i] = (float) ipio2[jv+i];
+ for(j=0,fw=0.0;j<=jx;j++) fw += x[j]*f[jx+i-j];
+ q[i] = fw;
+ }
+ jz += k;
+ goto recompute;
+ }
+ }
+
+ /* chop off zero terms */
+ if(z==(float)0.0) {
+ jz -= 1; q0 -= 8;
+ while(iq[jz]==0) { jz--; q0-=8;}
+ } else { /* break z into 8-bit if necessary */
+ z = __scalbnf(z,-q0);
+ if(z>=two8) {
+ fw = (float)((int32_t)(twon8*z));
+ iq[jz] = (int32_t)(z-two8*fw);
+ jz += 1; q0 += 8;
+ iq[jz] = (int32_t) fw;
+ } else iq[jz] = (int32_t) z ;
+ }
+
+ /* convert integer "bit" chunk to floating-point value */
+ fw = __scalbnf(one,q0);
+ for(i=jz;i>=0;i--) {
+ q[i] = fw*(float)iq[i]; fw*=twon8;
+ }
+
+ /* compute PIo2[0,...,jp]*q[jz,...,0] */
+ for(i=jz;i>=0;i--) {
+ for(fw=0.0,k=0;k<=jp&&k<=jz-i;k++) fw += PIo2[k]*q[i+k];
+ fq[jz-i] = fw;
+ }
+
+ /* compress fq[] into y[] */
+ switch(prec) {
+ case 0:
+ fw = 0.0;
+ for (i=jz;i>=0;i--) fw += fq[i];
+ y[0] = (ih==0)? fw: -fw;
+ break;
+ case 1:
+ case 2:;
+ float fv = 0.0;
+ for (i=jz;i>=0;i--) fv = math_narrow_eval (fv + fq[i]);
+ y[0] = (ih==0)? fv: -fv;
+ fv = math_narrow_eval (fq[0]-fv);
+ for (i=1;i<=jz;i++) fv = math_narrow_eval (fv + fq[i]);
+ y[1] = (ih==0)? fv: -fv;
+ break;
+ case 3: /* painful */
+ for (i=jz;i>0;i--) {
+ float fv = math_narrow_eval (fq[i-1]+fq[i]);
+ fq[i] += fq[i-1]-fv;
+ fq[i-1] = fv;
+ }
+ for (i=jz;i>1;i--) {
+ float fv = math_narrow_eval (fq[i-1]+fq[i]);
+ fq[i] += fq[i-1]-fv;
+ fq[i-1] = fv;
+ }
+ for (fw=0.0,i=jz;i>=2;i--) fw += fq[i];
+ if(ih==0) {
+ y[0] = fq[0]; y[1] = fq[1]; y[2] = fw;
+ } else {
+ y[0] = -fq[0]; y[1] = -fq[1]; y[2] = -fw;
+ }
+ }
+ return n&7;
+}
diff --git a/REORG.TODO/sysdeps/ieee754/flt-32/k_sinf.c b/REORG.TODO/sysdeps/ieee754/flt-32/k_sinf.c
new file mode 100644
index 0000000000..a195d59466
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/flt-32/k_sinf.c
@@ -0,0 +1,50 @@
+/* k_sinf.c -- float version of k_sin.c
+ * Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: k_sinf.c,v 1.4 1995/05/10 20:46:33 jtc Exp $";
+#endif
+
+#include <float.h>
+#include <math.h>
+#include <math_private.h>
+
+static const float
+half = 5.0000000000e-01,/* 0x3f000000 */
+S1 = -1.6666667163e-01, /* 0xbe2aaaab */
+S2 = 8.3333337680e-03, /* 0x3c088889 */
+S3 = -1.9841270114e-04, /* 0xb9500d01 */
+S4 = 2.7557314297e-06, /* 0x3638ef1b */
+S5 = -2.5050759689e-08, /* 0xb2d72f34 */
+S6 = 1.5896910177e-10; /* 0x2f2ec9d3 */
+
+float __kernel_sinf(float x, float y, int iy)
+{
+ float z,r,v;
+ int32_t ix;
+ GET_FLOAT_WORD(ix,x);
+ ix &= 0x7fffffff; /* high word of x */
+ if(ix<0x32000000) /* |x| < 2**-27 */
+ {
+ math_check_force_underflow (x);
+ if ((int) x == 0)
+ return x; /* generate inexact */
+ }
+ z = x*x;
+ v = z*x;
+ r = S2+z*(S3+z*(S4+z*(S5+z*S6)));
+ if(iy==0) return x+v*(S1+z*r);
+ else return x-((z*(half*y-v*r)-y)-v*S1);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/flt-32/k_tanf.c b/REORG.TODO/sysdeps/ieee754/flt-32/k_tanf.c
new file mode 100644
index 0000000000..9f0e55860f
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/flt-32/k_tanf.c
@@ -0,0 +1,101 @@
+/* k_tanf.c -- float version of k_tan.c
+ * Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: k_tanf.c,v 1.4 1995/05/10 20:46:39 jtc Exp $";
+#endif
+
+#include <float.h>
+#include <math.h>
+#include <math_private.h>
+static const float
+one = 1.0000000000e+00, /* 0x3f800000 */
+pio4 = 7.8539812565e-01, /* 0x3f490fda */
+pio4lo= 3.7748947079e-08, /* 0x33222168 */
+T[] = {
+ 3.3333334327e-01, /* 0x3eaaaaab */
+ 1.3333334029e-01, /* 0x3e088889 */
+ 5.3968254477e-02, /* 0x3d5d0dd1 */
+ 2.1869488060e-02, /* 0x3cb327a4 */
+ 8.8632395491e-03, /* 0x3c11371f */
+ 3.5920790397e-03, /* 0x3b6b6916 */
+ 1.4562094584e-03, /* 0x3abede48 */
+ 5.8804126456e-04, /* 0x3a1a26c8 */
+ 2.4646313977e-04, /* 0x398137b9 */
+ 7.8179444245e-05, /* 0x38a3f445 */
+ 7.1407252108e-05, /* 0x3895c07a */
+ -1.8558637748e-05, /* 0xb79bae5f */
+ 2.5907305826e-05, /* 0x37d95384 */
+};
+
+float __kernel_tanf(float x, float y, int iy)
+{
+ float z,r,v,w,s;
+ int32_t ix,hx;
+ GET_FLOAT_WORD(hx,x);
+ ix = hx&0x7fffffff; /* high word of |x| */
+ if(ix<0x39000000) /* x < 2**-13 */
+ {if((int)x==0) { /* generate inexact */
+ if((ix|(iy+1))==0) return one/fabsf(x);
+ else if (iy == 1)
+ {
+ math_check_force_underflow (x);
+ return x;
+ }
+ else
+ return -one / x;
+ }
+ }
+ if(ix>=0x3f2ca140) { /* |x|>=0.6744 */
+ if(hx<0) {x = -x; y = -y;}
+ z = pio4-x;
+ w = pio4lo-y;
+ x = z+w; y = 0.0;
+ if (fabsf (x) < 0x1p-13f)
+ return (1 - ((hx >> 30) & 2)) * iy * (1.0f - 2 * iy * x);
+ }
+ z = x*x;
+ w = z*z;
+ /* Break x^5*(T[1]+x^2*T[2]+...) into
+ * x^5(T[1]+x^4*T[3]+...+x^20*T[11]) +
+ * x^5(x^2*(T[2]+x^4*T[4]+...+x^22*[T12]))
+ */
+ r = T[1]+w*(T[3]+w*(T[5]+w*(T[7]+w*(T[9]+w*T[11]))));
+ v = z*(T[2]+w*(T[4]+w*(T[6]+w*(T[8]+w*(T[10]+w*T[12])))));
+ s = z*x;
+ r = y + z*(s*(r+v)+y);
+ r += T[0]*s;
+ w = x+r;
+ if(ix>=0x3f2ca140) {
+ v = (float)iy;
+ return (float)(1-((hx>>30)&2))*(v-(float)2.0*(x-(w*w/(w+v)-r)));
+ }
+ if(iy==1) return w;
+ else { /* if allow error up to 2 ulp,
+ simply return -1.0/(x+r) here */
+ /* compute -1.0/(x+r) accurately */
+ float a,t;
+ int32_t i;
+ z = w;
+ GET_FLOAT_WORD(i,z);
+ SET_FLOAT_WORD(z,i&0xfffff000);
+ v = r-(z - x); /* z+v = r+x */
+ t = a = -(float)1.0/w; /* a = -1.0/w */
+ GET_FLOAT_WORD(i,t);
+ SET_FLOAT_WORD(t,i&0xfffff000);
+ s = (float)1.0+t*z;
+ return t+a*(s+t*v);
+ }
+}
diff --git a/REORG.TODO/sysdeps/ieee754/flt-32/lgamma_negf.c b/REORG.TODO/sysdeps/ieee754/flt-32/lgamma_negf.c
new file mode 100644
index 0000000000..71bcbb0f9d
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/flt-32/lgamma_negf.c
@@ -0,0 +1,280 @@
+/* lgammaf expanding around zeros.
+ Copyright (C) 2015-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <float.h>
+#include <math.h>
+#include <math_private.h>
+
+static const float lgamma_zeros[][2] =
+ {
+ { -0x2.74ff94p+0f, 0x1.3fe0f2p-24f },
+ { -0x2.bf682p+0f, -0x1.437b2p-24f },
+ { -0x3.24c1b8p+0f, 0x6.c34cap-28f },
+ { -0x3.f48e2cp+0f, 0x1.707a04p-24f },
+ { -0x4.0a13ap+0f, 0x1.e99aap-24f },
+ { -0x4.fdd5ep+0f, 0x1.64454p-24f },
+ { -0x5.021a98p+0f, 0x2.03d248p-24f },
+ { -0x5.ffa4cp+0f, 0x2.9b82fcp-24f },
+ { -0x6.005ac8p+0f, -0x1.625f24p-24f },
+ { -0x6.fff3p+0f, 0x2.251e44p-24f },
+ { -0x7.000dp+0f, 0x8.48078p-28f },
+ { -0x7.fffe6p+0f, 0x1.fa98c4p-28f },
+ { -0x8.0001ap+0f, -0x1.459fcap-28f },
+ { -0x8.ffffdp+0f, -0x1.c425e8p-24f },
+ { -0x9.00003p+0f, 0x1.c44b82p-24f },
+ { -0xap+0f, 0x4.9f942p-24f },
+ { -0xap+0f, -0x4.9f93b8p-24f },
+ { -0xbp+0f, 0x6.b9916p-28f },
+ { -0xbp+0f, -0x6.b9915p-28f },
+ { -0xcp+0f, 0x8.f76c8p-32f },
+ { -0xcp+0f, -0x8.f76c7p-32f },
+ { -0xdp+0f, 0xb.09231p-36f },
+ { -0xdp+0f, -0xb.09231p-36f },
+ { -0xep+0f, 0xc.9cba5p-40f },
+ { -0xep+0f, -0xc.9cba5p-40f },
+ { -0xfp+0f, 0xd.73f9fp-44f },
+ };
+
+static const float e_hi = 0x2.b7e15p+0f, e_lo = 0x1.628aeep-24f;
+
+/* Coefficients B_2k / 2k(2k-1) of x^-(2k-1) in Stirling's
+ approximation to lgamma function. */
+
+static const float lgamma_coeff[] =
+ {
+ 0x1.555556p-4f,
+ -0xb.60b61p-12f,
+ 0x3.403404p-12f,
+ };
+
+#define NCOEFF (sizeof (lgamma_coeff) / sizeof (lgamma_coeff[0]))
+
+/* Polynomial approximations to (|gamma(x)|-1)(x-n)/(x-x0), where n is
+ the integer end-point of the half-integer interval containing x and
+ x0 is the zero of lgamma in that half-integer interval. Each
+ polynomial is expressed in terms of x-xm, where xm is the midpoint
+ of the interval for which the polynomial applies. */
+
+static const float poly_coeff[] =
+ {
+ /* Interval [-2.125, -2] (polynomial degree 5). */
+ -0x1.0b71c6p+0f,
+ -0xc.73a1ep-4f,
+ -0x1.ec8462p-4f,
+ -0xe.37b93p-4f,
+ -0x1.02ed36p-4f,
+ -0xe.cbe26p-4f,
+ /* Interval [-2.25, -2.125] (polynomial degree 5). */
+ -0xf.29309p-4f,
+ -0xc.a5cfep-4f,
+ 0x3.9c93fcp-4f,
+ -0x1.02a2fp+0f,
+ 0x9.896bep-4f,
+ -0x1.519704p+0f,
+ /* Interval [-2.375, -2.25] (polynomial degree 5). */
+ -0xd.7d28dp-4f,
+ -0xe.6964cp-4f,
+ 0xb.0d4f1p-4f,
+ -0x1.9240aep+0f,
+ 0x1.dadabap+0f,
+ -0x3.1778c4p+0f,
+ /* Interval [-2.5, -2.375] (polynomial degree 6). */
+ -0xb.74ea2p-4f,
+ -0x1.2a82cp+0f,
+ 0x1.880234p+0f,
+ -0x3.320c4p+0f,
+ 0x5.572a38p+0f,
+ -0x9.f92bap+0f,
+ 0x1.1c347ep+4f,
+ /* Interval [-2.625, -2.5] (polynomial degree 6). */
+ -0x3.d10108p-4f,
+ 0x1.cd5584p+0f,
+ 0x3.819c24p+0f,
+ 0x6.84cbb8p+0f,
+ 0xb.bf269p+0f,
+ 0x1.57fb12p+4f,
+ 0x2.7b9854p+4f,
+ /* Interval [-2.75, -2.625] (polynomial degree 6). */
+ -0x6.b5d25p-4f,
+ 0x1.28d604p+0f,
+ 0x1.db6526p+0f,
+ 0x2.e20b38p+0f,
+ 0x4.44c378p+0f,
+ 0x6.62a08p+0f,
+ 0x9.6db3ap+0f,
+ /* Interval [-2.875, -2.75] (polynomial degree 5). */
+ -0x8.a41b2p-4f,
+ 0xc.da87fp-4f,
+ 0x1.147312p+0f,
+ 0x1.7617dap+0f,
+ 0x1.d6c13p+0f,
+ 0x2.57a358p+0f,
+ /* Interval [-3, -2.875] (polynomial degree 5). */
+ -0xa.046d6p-4f,
+ 0x9.70b89p-4f,
+ 0xa.a89a6p-4f,
+ 0xd.2f2d8p-4f,
+ 0xd.e32b4p-4f,
+ 0xf.fb741p-4f,
+ };
+
+static const size_t poly_deg[] =
+ {
+ 5,
+ 5,
+ 5,
+ 6,
+ 6,
+ 6,
+ 5,
+ 5,
+ };
+
+static const size_t poly_end[] =
+ {
+ 5,
+ 11,
+ 17,
+ 24,
+ 31,
+ 38,
+ 44,
+ 50,
+ };
+
+/* Compute sin (pi * X) for -0.25 <= X <= 0.5. */
+
+static float
+lg_sinpi (float x)
+{
+ if (x <= 0.25f)
+ return __sinf ((float) M_PI * x);
+ else
+ return __cosf ((float) M_PI * (0.5f - x));
+}
+
+/* Compute cos (pi * X) for -0.25 <= X <= 0.5. */
+
+static float
+lg_cospi (float x)
+{
+ if (x <= 0.25f)
+ return __cosf ((float) M_PI * x);
+ else
+ return __sinf ((float) M_PI * (0.5f - x));
+}
+
+/* Compute cot (pi * X) for -0.25 <= X <= 0.5. */
+
+static float
+lg_cotpi (float x)
+{
+ return lg_cospi (x) / lg_sinpi (x);
+}
+
+/* Compute lgamma of a negative argument -15 < X < -2, setting
+ *SIGNGAMP accordingly. */
+
+float
+__lgamma_negf (float x, int *signgamp)
+{
+ /* Determine the half-integer region X lies in, handle exact
+ integers and determine the sign of the result. */
+ int i = __floorf (-2 * x);
+ if ((i & 1) == 0 && i == -2 * x)
+ return 1.0f / 0.0f;
+ float xn = ((i & 1) == 0 ? -i / 2 : (-i - 1) / 2);
+ i -= 4;
+ *signgamp = ((i & 2) == 0 ? -1 : 1);
+
+ SET_RESTORE_ROUNDF (FE_TONEAREST);
+
+ /* Expand around the zero X0 = X0_HI + X0_LO. */
+ float x0_hi = lgamma_zeros[i][0], x0_lo = lgamma_zeros[i][1];
+ float xdiff = x - x0_hi - x0_lo;
+
+ /* For arguments in the range -3 to -2, use polynomial
+ approximations to an adjusted version of the gamma function. */
+ if (i < 2)
+ {
+ int j = __floorf (-8 * x) - 16;
+ float xm = (-33 - 2 * j) * 0.0625f;
+ float x_adj = x - xm;
+ size_t deg = poly_deg[j];
+ size_t end = poly_end[j];
+ float g = poly_coeff[end];
+ for (size_t j = 1; j <= deg; j++)
+ g = g * x_adj + poly_coeff[end - j];
+ return __log1pf (g * xdiff / (x - xn));
+ }
+
+ /* The result we want is log (sinpi (X0) / sinpi (X))
+ + log (gamma (1 - X0) / gamma (1 - X)). */
+ float x_idiff = fabsf (xn - x), x0_idiff = fabsf (xn - x0_hi - x0_lo);
+ float log_sinpi_ratio;
+ if (x0_idiff < x_idiff * 0.5f)
+ /* Use log not log1p to avoid inaccuracy from log1p of arguments
+ close to -1. */
+ log_sinpi_ratio = __ieee754_logf (lg_sinpi (x0_idiff)
+ / lg_sinpi (x_idiff));
+ else
+ {
+ /* Use log1p not log to avoid inaccuracy from log of arguments
+ close to 1. X0DIFF2 has positive sign if X0 is further from
+ XN than X is from XN, negative sign otherwise. */
+ float x0diff2 = ((i & 1) == 0 ? xdiff : -xdiff) * 0.5f;
+ float sx0d2 = lg_sinpi (x0diff2);
+ float cx0d2 = lg_cospi (x0diff2);
+ log_sinpi_ratio = __log1pf (2 * sx0d2
+ * (-sx0d2 + cx0d2 * lg_cotpi (x_idiff)));
+ }
+
+ float log_gamma_ratio;
+ float y0 = math_narrow_eval (1 - x0_hi);
+ float y0_eps = -x0_hi + (1 - y0) - x0_lo;
+ float y = math_narrow_eval (1 - x);
+ float y_eps = -x + (1 - y);
+ /* We now wish to compute LOG_GAMMA_RATIO
+ = log (gamma (Y0 + Y0_EPS) / gamma (Y + Y_EPS)). XDIFF
+ accurately approximates the difference Y0 + Y0_EPS - Y -
+ Y_EPS. Use Stirling's approximation. */
+ float log_gamma_high
+ = (xdiff * __log1pf ((y0 - e_hi - e_lo + y0_eps) / e_hi)
+ + (y - 0.5f + y_eps) * __log1pf (xdiff / y));
+ /* Compute the sum of (B_2k / 2k(2k-1))(Y0^-(2k-1) - Y^-(2k-1)). */
+ float y0r = 1 / y0, yr = 1 / y;
+ float y0r2 = y0r * y0r, yr2 = yr * yr;
+ float rdiff = -xdiff / (y * y0);
+ float bterm[NCOEFF];
+ float dlast = rdiff, elast = rdiff * yr * (yr + y0r);
+ bterm[0] = dlast * lgamma_coeff[0];
+ for (size_t j = 1; j < NCOEFF; j++)
+ {
+ float dnext = dlast * y0r2 + elast;
+ float enext = elast * yr2;
+ bterm[j] = dnext * lgamma_coeff[j];
+ dlast = dnext;
+ elast = enext;
+ }
+ float log_gamma_low = 0;
+ for (size_t j = 0; j < NCOEFF; j++)
+ log_gamma_low += bterm[NCOEFF - 1 - j];
+ log_gamma_ratio = log_gamma_high + log_gamma_low;
+
+ return log_sinpi_ratio + log_gamma_ratio;
+}
diff --git a/REORG.TODO/sysdeps/ieee754/flt-32/lgamma_productf.c b/REORG.TODO/sysdeps/ieee754/flt-32/lgamma_productf.c
new file mode 100644
index 0000000000..1cc8931700
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/flt-32/lgamma_productf.c
@@ -0,0 +1 @@
+/* Not needed. */
diff --git a/REORG.TODO/sysdeps/ieee754/flt-32/mpn2flt.c b/REORG.TODO/sysdeps/ieee754/flt-32/mpn2flt.c
new file mode 100644
index 0000000000..abf6510f4e
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/flt-32/mpn2flt.c
@@ -0,0 +1,41 @@
+/* Copyright (C) 1995-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include "gmp.h"
+#include "gmp-impl.h"
+#include <ieee754.h>
+#include <float.h>
+
+/* Convert a multi-precision integer of the needed number of bits (24 for
+ float) and an integral power of two to a `float' in IEEE754 single-
+ precision format. */
+
+float
+__mpn_construct_float (mp_srcptr frac_ptr, int expt, int sign)
+{
+ union ieee754_float u;
+
+ u.ieee.negative = sign;
+ u.ieee.exponent = expt + IEEE754_FLOAT_BIAS;
+#if BITS_PER_MP_LIMB > FLT_MANT_DIG
+ u.ieee.mantissa = frac_ptr[0] & (((mp_limb_t) 1 << FLT_MANT_DIG) - 1);
+#else
+ #error "mp_limb size " BITS_PER_MP_LIMB "not accounted for"
+#endif
+
+ return u.f;
+}
diff --git a/REORG.TODO/sysdeps/ieee754/flt-32/s_asinhf.c b/REORG.TODO/sysdeps/ieee754/flt-32/s_asinhf.c
new file mode 100644
index 0000000000..da9cafb600
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/flt-32/s_asinhf.c
@@ -0,0 +1,50 @@
+/* s_asinhf.c -- float version of s_asinh.c.
+ * Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#include <float.h>
+#include <math.h>
+#include <math_private.h>
+
+static const float
+one = 1.0000000000e+00, /* 0x3F800000 */
+ln2 = 6.9314718246e-01, /* 0x3f317218 */
+huge= 1.0000000000e+30;
+
+float
+__asinhf(float x)
+{
+ float w;
+ int32_t hx,ix;
+ GET_FLOAT_WORD(hx,x);
+ ix = hx&0x7fffffff;
+ if(__builtin_expect(ix< 0x38000000, 0)) { /* |x|<2**-14 */
+ math_check_force_underflow (x);
+ if(huge+x>one) return x; /* return x inexact except 0 */
+ }
+ if(__builtin_expect(ix>0x47000000, 0)) { /* |x| > 2**14 */
+ if(ix>=0x7f800000) return x+x; /* x is inf or NaN */
+ w = __ieee754_logf(fabsf(x))+ln2;
+ } else {
+ float xa = fabsf(x);
+ if (ix>0x40000000) { /* 2**14 > |x| > 2.0 */
+ w = __ieee754_logf(2.0f*xa+one/(__ieee754_sqrtf(xa*xa+one)+xa));
+ } else { /* 2.0 > |x| > 2**-14 */
+ float t = xa*xa;
+ w =__log1pf(xa+t/(one+__ieee754_sqrtf(one+t)));
+ }
+ }
+ return __copysignf(w, x);
+}
+weak_alias (__asinhf, asinhf)
diff --git a/REORG.TODO/sysdeps/ieee754/flt-32/s_atanf.c b/REORG.TODO/sysdeps/ieee754/flt-32/s_atanf.c
new file mode 100644
index 0000000000..e322a1d41f
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/flt-32/s_atanf.c
@@ -0,0 +1,101 @@
+/* s_atanf.c -- float version of s_atan.c.
+ * Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: s_atanf.c,v 1.4 1995/05/10 20:46:47 jtc Exp $";
+#endif
+
+#include <float.h>
+#include <math.h>
+#include <math_private.h>
+
+static const float atanhi[] = {
+ 4.6364760399e-01, /* atan(0.5)hi 0x3eed6338 */
+ 7.8539812565e-01, /* atan(1.0)hi 0x3f490fda */
+ 9.8279368877e-01, /* atan(1.5)hi 0x3f7b985e */
+ 1.5707962513e+00, /* atan(inf)hi 0x3fc90fda */
+};
+
+static const float atanlo[] = {
+ 5.0121582440e-09, /* atan(0.5)lo 0x31ac3769 */
+ 3.7748947079e-08, /* atan(1.0)lo 0x33222168 */
+ 3.4473217170e-08, /* atan(1.5)lo 0x33140fb4 */
+ 7.5497894159e-08, /* atan(inf)lo 0x33a22168 */
+};
+
+static const float aT[] = {
+ 3.3333334327e-01, /* 0x3eaaaaaa */
+ -2.0000000298e-01, /* 0xbe4ccccd */
+ 1.4285714924e-01, /* 0x3e124925 */
+ -1.1111110449e-01, /* 0xbde38e38 */
+ 9.0908870101e-02, /* 0x3dba2e6e */
+ -7.6918758452e-02, /* 0xbd9d8795 */
+ 6.6610731184e-02, /* 0x3d886b35 */
+ -5.8335702866e-02, /* 0xbd6ef16b */
+ 4.9768779427e-02, /* 0x3d4bda59 */
+ -3.6531571299e-02, /* 0xbd15a221 */
+ 1.6285819933e-02, /* 0x3c8569d7 */
+};
+
+static const float
+one = 1.0,
+huge = 1.0e30;
+
+float __atanf(float x)
+{
+ float w,s1,s2,z;
+ int32_t ix,hx,id;
+
+ GET_FLOAT_WORD(hx,x);
+ ix = hx&0x7fffffff;
+ if(ix>=0x4c000000) { /* if |x| >= 2^25 */
+ if(ix>0x7f800000)
+ return x+x; /* NaN */
+ if(hx>0) return atanhi[3]+atanlo[3];
+ else return -atanhi[3]-atanlo[3];
+ } if (ix < 0x3ee00000) { /* |x| < 0.4375 */
+ if (ix < 0x31000000) { /* |x| < 2^-29 */
+ math_check_force_underflow (x);
+ if(huge+x>one) return x; /* raise inexact */
+ }
+ id = -1;
+ } else {
+ x = fabsf(x);
+ if (ix < 0x3f980000) { /* |x| < 1.1875 */
+ if (ix < 0x3f300000) { /* 7/16 <=|x|<11/16 */
+ id = 0; x = ((float)2.0*x-one)/((float)2.0+x);
+ } else { /* 11/16<=|x|< 19/16 */
+ id = 1; x = (x-one)/(x+one);
+ }
+ } else {
+ if (ix < 0x401c0000) { /* |x| < 2.4375 */
+ id = 2; x = (x-(float)1.5)/(one+(float)1.5*x);
+ } else { /* 2.4375 <= |x| < 2^66 */
+ id = 3; x = -(float)1.0/x;
+ }
+ }}
+ /* end of argument reduction */
+ z = x*x;
+ w = z*z;
+ /* break sum from i=0 to 10 aT[i]z**(i+1) into odd and even poly */
+ s1 = z*(aT[0]+w*(aT[2]+w*(aT[4]+w*(aT[6]+w*(aT[8]+w*aT[10])))));
+ s2 = w*(aT[1]+w*(aT[3]+w*(aT[5]+w*(aT[7]+w*aT[9]))));
+ if (id<0) return x - x*(s1+s2);
+ else {
+ z = atanhi[id] - ((x*(s1+s2) - atanlo[id]) - x);
+ return (hx<0)? -z:z;
+ }
+}
+weak_alias (__atanf, atanf)
diff --git a/REORG.TODO/sysdeps/ieee754/flt-32/s_cbrtf.c b/REORG.TODO/sysdeps/ieee754/flt-32/s_cbrtf.c
new file mode 100644
index 0000000000..1ac294c189
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/flt-32/s_cbrtf.c
@@ -0,0 +1,63 @@
+/* Compute cubic root of float value.
+ Copyright (C) 1997-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Dirk Alboth <dirka@uni-paderborn.de> and
+ Ulrich Drepper <drepper@cygnus.com>, 1997.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+#include <math_private.h>
+
+
+#define CBRT2 1.2599210498948731648 /* 2^(1/3) */
+#define SQR_CBRT2 1.5874010519681994748 /* 2^(2/3) */
+
+static const double factor[5] =
+{
+ 1.0 / SQR_CBRT2,
+ 1.0 / CBRT2,
+ 1.0,
+ CBRT2,
+ SQR_CBRT2
+};
+
+
+float
+__cbrtf (float x)
+{
+ float xm, ym, u, t2;
+ int xe;
+
+ /* Reduce X. XM now is an range 1.0 to 0.5. */
+ xm = __frexpf (fabsf (x), &xe);
+
+ /* If X is not finite or is null return it (with raising exceptions
+ if necessary.
+ Note: *Our* version of `frexp' sets XE to zero if the argument is
+ Inf or NaN. This is not portable but faster. */
+ if (xe == 0 && fpclassify (x) <= FP_ZERO)
+ return x + x;
+
+ u = (0.492659620528969547 + (0.697570460207922770
+ - 0.191502161678719066 * xm) * xm);
+
+ t2 = u * u * u;
+
+ ym = u * (t2 + 2.0 * xm) / (2.0 * t2 + xm) * factor[2 + xe % 3];
+
+ return __ldexpf (x > 0.0 ? ym : -ym, xe / 3);
+}
+weak_alias (__cbrtf, cbrtf)
diff --git a/REORG.TODO/sysdeps/ieee754/flt-32/s_ceilf.c b/REORG.TODO/sysdeps/ieee754/flt-32/s_ceilf.c
new file mode 100644
index 0000000000..bff26c33cb
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/flt-32/s_ceilf.c
@@ -0,0 +1,48 @@
+/* s_ceilf.c -- float version of s_ceil.c.
+ * Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#include <math.h>
+#include <math_private.h>
+
+
+float
+__ceilf(float x)
+{
+ int32_t i0,j0;
+ u_int32_t i;
+
+ GET_FLOAT_WORD(i0,x);
+ j0 = ((i0>>23)&0xff)-0x7f;
+ if(j0<23) {
+ if(j0<0) {
+ /* return 0*sign(x) if |x|<1 */
+ if(i0<0) {i0=0x80000000;}
+ else if(i0!=0) { i0=0x3f800000;}
+ } else {
+ i = (0x007fffff)>>j0;
+ if((i0&i)==0) return x; /* x is integral */
+ if(i0>0) i0 += (0x00800000)>>j0;
+ i0 &= (~i);
+ }
+ } else {
+ if(__builtin_expect(j0==0x80, 0)) return x+x; /* inf or NaN */
+ else return x; /* x is integral */
+ }
+ SET_FLOAT_WORD(x,i0);
+ return x;
+}
+#ifndef __ceilf
+weak_alias (__ceilf, ceilf)
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/flt-32/s_copysignf.c b/REORG.TODO/sysdeps/ieee754/flt-32/s_copysignf.c
new file mode 100644
index 0000000000..1621836065
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/flt-32/s_copysignf.c
@@ -0,0 +1,37 @@
+/* s_copysignf.c -- float version of s_copysign.c.
+ * Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: s_copysignf.c,v 1.4 1995/05/10 20:46:59 jtc Exp $";
+#endif
+
+/*
+ * copysignf(float x, float y)
+ * copysignf(x,y) returns a value with the magnitude of x and
+ * with the sign bit of y.
+ */
+
+#include <math.h>
+#include <math_private.h>
+
+float __copysignf(float x, float y)
+{
+ u_int32_t ix,iy;
+ GET_FLOAT_WORD(ix,x);
+ GET_FLOAT_WORD(iy,y);
+ SET_FLOAT_WORD(x,(ix&0x7fffffff)|(iy&0x80000000));
+ return x;
+}
+weak_alias (__copysignf, copysignf)
diff --git a/REORG.TODO/sysdeps/ieee754/flt-32/s_cosf.c b/REORG.TODO/sysdeps/ieee754/flt-32/s_cosf.c
new file mode 100644
index 0000000000..0affd406bb
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/flt-32/s_cosf.c
@@ -0,0 +1,63 @@
+/* s_cosf.c -- float version of s_cos.c.
+ * Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: s_cosf.c,v 1.4 1995/05/10 20:47:03 jtc Exp $";
+#endif
+
+#include <errno.h>
+#include <math.h>
+#include <math_private.h>
+
+#ifndef COSF
+# define COSF_FUNC __cosf
+#else
+# define COSF_FUNC COSF
+#endif
+
+float COSF_FUNC(float x)
+{
+ float y[2],z=0.0;
+ int32_t n,ix;
+
+ GET_FLOAT_WORD(ix,x);
+
+ /* |x| ~< pi/4 */
+ ix &= 0x7fffffff;
+ if(ix <= 0x3f490fd8) return __kernel_cosf(x,z);
+
+ /* cos(Inf or NaN) is NaN */
+ else if (ix>=0x7f800000) {
+ if (ix == 0x7f800000)
+ __set_errno (EDOM);
+ return x-x;
+ }
+
+ /* argument reduction needed */
+ else {
+ n = __ieee754_rem_pio2f(x,y);
+ switch(n&3) {
+ case 0: return __kernel_cosf(y[0],y[1]);
+ case 1: return -__kernel_sinf(y[0],y[1],1);
+ case 2: return -__kernel_cosf(y[0],y[1]);
+ default:
+ return __kernel_sinf(y[0],y[1],1);
+ }
+ }
+}
+
+#ifndef COSF
+weak_alias (__cosf, cosf)
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/flt-32/s_erff.c b/REORG.TODO/sysdeps/ieee754/flt-32/s_erff.c
new file mode 100644
index 0000000000..c8b6287503
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/flt-32/s_erff.c
@@ -0,0 +1,230 @@
+/* s_erff.c -- float version of s_erf.c.
+ * Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: s_erff.c,v 1.4 1995/05/10 20:47:07 jtc Exp $";
+#endif
+
+#include <errno.h>
+#include <float.h>
+#include <math.h>
+#include <math_private.h>
+#include <fix-int-fp-convert-zero.h>
+
+static const float
+tiny = 1e-30,
+half= 5.0000000000e-01, /* 0x3F000000 */
+one = 1.0000000000e+00, /* 0x3F800000 */
+two = 2.0000000000e+00, /* 0x40000000 */
+ /* c = (subfloat)0.84506291151 */
+erx = 8.4506291151e-01, /* 0x3f58560b */
+/*
+ * Coefficients for approximation to erf on [0,0.84375]
+ */
+efx = 1.2837916613e-01, /* 0x3e0375d4 */
+pp0 = 1.2837916613e-01, /* 0x3e0375d4 */
+pp1 = -3.2504209876e-01, /* 0xbea66beb */
+pp2 = -2.8481749818e-02, /* 0xbce9528f */
+pp3 = -5.7702702470e-03, /* 0xbbbd1489 */
+pp4 = -2.3763017452e-05, /* 0xb7c756b1 */
+qq1 = 3.9791721106e-01, /* 0x3ecbbbce */
+qq2 = 6.5022252500e-02, /* 0x3d852a63 */
+qq3 = 5.0813062117e-03, /* 0x3ba68116 */
+qq4 = 1.3249473704e-04, /* 0x390aee49 */
+qq5 = -3.9602282413e-06, /* 0xb684e21a */
+/*
+ * Coefficients for approximation to erf in [0.84375,1.25]
+ */
+pa0 = -2.3621185683e-03, /* 0xbb1acdc6 */
+pa1 = 4.1485610604e-01, /* 0x3ed46805 */
+pa2 = -3.7220788002e-01, /* 0xbebe9208 */
+pa3 = 3.1834661961e-01, /* 0x3ea2fe54 */
+pa4 = -1.1089469492e-01, /* 0xbde31cc2 */
+pa5 = 3.5478305072e-02, /* 0x3d1151b3 */
+pa6 = -2.1663755178e-03, /* 0xbb0df9c0 */
+qa1 = 1.0642088205e-01, /* 0x3dd9f331 */
+qa2 = 5.4039794207e-01, /* 0x3f0a5785 */
+qa3 = 7.1828655899e-02, /* 0x3d931ae7 */
+qa4 = 1.2617121637e-01, /* 0x3e013307 */
+qa5 = 1.3637083583e-02, /* 0x3c5f6e13 */
+qa6 = 1.1984500103e-02, /* 0x3c445aa3 */
+/*
+ * Coefficients for approximation to erfc in [1.25,1/0.35]
+ */
+ra0 = -9.8649440333e-03, /* 0xbc21a093 */
+ra1 = -6.9385856390e-01, /* 0xbf31a0b7 */
+ra2 = -1.0558626175e+01, /* 0xc128f022 */
+ra3 = -6.2375331879e+01, /* 0xc2798057 */
+ra4 = -1.6239666748e+02, /* 0xc322658c */
+ra5 = -1.8460508728e+02, /* 0xc3389ae7 */
+ra6 = -8.1287437439e+01, /* 0xc2a2932b */
+ra7 = -9.8143291473e+00, /* 0xc11d077e */
+sa1 = 1.9651271820e+01, /* 0x419d35ce */
+sa2 = 1.3765776062e+02, /* 0x4309a863 */
+sa3 = 4.3456588745e+02, /* 0x43d9486f */
+sa4 = 6.4538726807e+02, /* 0x442158c9 */
+sa5 = 4.2900814819e+02, /* 0x43d6810b */
+sa6 = 1.0863500214e+02, /* 0x42d9451f */
+sa7 = 6.5702495575e+00, /* 0x40d23f7c */
+sa8 = -6.0424413532e-02, /* 0xbd777f97 */
+/*
+ * Coefficients for approximation to erfc in [1/.35,28]
+ */
+rb0 = -9.8649431020e-03, /* 0xbc21a092 */
+rb1 = -7.9928326607e-01, /* 0xbf4c9dd4 */
+rb2 = -1.7757955551e+01, /* 0xc18e104b */
+rb3 = -1.6063638306e+02, /* 0xc320a2ea */
+rb4 = -6.3756646729e+02, /* 0xc41f6441 */
+rb5 = -1.0250950928e+03, /* 0xc480230b */
+rb6 = -4.8351919556e+02, /* 0xc3f1c275 */
+sb1 = 3.0338060379e+01, /* 0x41f2b459 */
+sb2 = 3.2579251099e+02, /* 0x43a2e571 */
+sb3 = 1.5367296143e+03, /* 0x44c01759 */
+sb4 = 3.1998581543e+03, /* 0x4547fdbb */
+sb5 = 2.5530502930e+03, /* 0x451f90ce */
+sb6 = 4.7452853394e+02, /* 0x43ed43a7 */
+sb7 = -2.2440952301e+01; /* 0xc1b38712 */
+
+float __erff(float x)
+{
+ int32_t hx,ix,i;
+ float R,S,P,Q,s,y,z,r;
+ GET_FLOAT_WORD(hx,x);
+ ix = hx&0x7fffffff;
+ if(ix>=0x7f800000) { /* erf(nan)=nan */
+ i = ((u_int32_t)hx>>31)<<1;
+ return (float)(1-i)+one/x; /* erf(+-inf)=+-1 */
+ }
+
+ if(ix < 0x3f580000) { /* |x|<0.84375 */
+ if(ix < 0x31800000) { /* |x|<2**-28 */
+ if (ix < 0x04000000)
+ {
+ /* Avoid spurious underflow. */
+ float ret = 0.0625f * (16.0f * x + (16.0f * efx) * x);
+ math_check_force_underflow (ret);
+ return ret;
+ }
+ return x + efx*x;
+ }
+ z = x*x;
+ r = pp0+z*(pp1+z*(pp2+z*(pp3+z*pp4)));
+ s = one+z*(qq1+z*(qq2+z*(qq3+z*(qq4+z*qq5))));
+ y = r/s;
+ return x + x*y;
+ }
+ if(ix < 0x3fa00000) { /* 0.84375 <= |x| < 1.25 */
+ s = fabsf(x)-one;
+ P = pa0+s*(pa1+s*(pa2+s*(pa3+s*(pa4+s*(pa5+s*pa6)))));
+ Q = one+s*(qa1+s*(qa2+s*(qa3+s*(qa4+s*(qa5+s*qa6)))));
+ if(hx>=0) return erx + P/Q; else return -erx - P/Q;
+ }
+ if (ix >= 0x40c00000) { /* inf>|x|>=6 */
+ if(hx>=0) return one-tiny; else return tiny-one;
+ }
+ x = fabsf(x);
+ s = one/(x*x);
+ if(ix< 0x4036DB6E) { /* |x| < 1/0.35 */
+ R=ra0+s*(ra1+s*(ra2+s*(ra3+s*(ra4+s*(
+ ra5+s*(ra6+s*ra7))))));
+ S=one+s*(sa1+s*(sa2+s*(sa3+s*(sa4+s*(
+ sa5+s*(sa6+s*(sa7+s*sa8)))))));
+ } else { /* |x| >= 1/0.35 */
+ R=rb0+s*(rb1+s*(rb2+s*(rb3+s*(rb4+s*(
+ rb5+s*rb6)))));
+ S=one+s*(sb1+s*(sb2+s*(sb3+s*(sb4+s*(
+ sb5+s*(sb6+s*sb7))))));
+ }
+ GET_FLOAT_WORD(ix,x);
+ SET_FLOAT_WORD(z,ix&0xfffff000);
+ r = __ieee754_expf(-z*z-(float)0.5625)*__ieee754_expf((z-x)*(z+x)+R/S);
+ if(hx>=0) return one-r/x; else return r/x-one;
+}
+weak_alias (__erff, erff)
+
+float __erfcf(float x)
+{
+ int32_t hx,ix;
+ float R,S,P,Q,s,y,z,r;
+ GET_FLOAT_WORD(hx,x);
+ ix = hx&0x7fffffff;
+ if(ix>=0x7f800000) { /* erfc(nan)=nan */
+ /* erfc(+-inf)=0,2 */
+ float ret = (float)(((u_int32_t)hx>>31)<<1)+one/x;
+ if (FIX_INT_FP_CONVERT_ZERO && ret == 0.0f)
+ return 0.0f;
+ return ret;
+ }
+
+ if(ix < 0x3f580000) { /* |x|<0.84375 */
+ if(ix < 0x32800000) /* |x|<2**-26 */
+ return one-x;
+ z = x*x;
+ r = pp0+z*(pp1+z*(pp2+z*(pp3+z*pp4)));
+ s = one+z*(qq1+z*(qq2+z*(qq3+z*(qq4+z*qq5))));
+ y = r/s;
+ if(hx < 0x3e800000) { /* x<1/4 */
+ return one-(x+x*y);
+ } else {
+ r = x*y;
+ r += (x-half);
+ return half - r ;
+ }
+ }
+ if(ix < 0x3fa00000) { /* 0.84375 <= |x| < 1.25 */
+ s = fabsf(x)-one;
+ P = pa0+s*(pa1+s*(pa2+s*(pa3+s*(pa4+s*(pa5+s*pa6)))));
+ Q = one+s*(qa1+s*(qa2+s*(qa3+s*(qa4+s*(qa5+s*qa6)))));
+ if(hx>=0) {
+ z = one-erx; return z - P/Q;
+ } else {
+ z = erx+P/Q; return one+z;
+ }
+ }
+ if (ix < 0x41e00000) { /* |x|<28 */
+ x = fabsf(x);
+ s = one/(x*x);
+ if(ix< 0x4036DB6D) { /* |x| < 1/.35 ~ 2.857143*/
+ R=ra0+s*(ra1+s*(ra2+s*(ra3+s*(ra4+s*(
+ ra5+s*(ra6+s*ra7))))));
+ S=one+s*(sa1+s*(sa2+s*(sa3+s*(sa4+s*(
+ sa5+s*(sa6+s*(sa7+s*sa8)))))));
+ } else { /* |x| >= 1/.35 ~ 2.857143 */
+ if(hx<0&&ix>=0x40c00000) return two-tiny;/* x < -6 */
+ R=rb0+s*(rb1+s*(rb2+s*(rb3+s*(rb4+s*(
+ rb5+s*rb6)))));
+ S=one+s*(sb1+s*(sb2+s*(sb3+s*(sb4+s*(
+ sb5+s*(sb6+s*sb7))))));
+ }
+ GET_FLOAT_WORD(ix,x);
+ SET_FLOAT_WORD(z,ix&0xffffe000);
+ r = __ieee754_expf(-z*z-(float)0.5625)*
+ __ieee754_expf((z-x)*(z+x)+R/S);
+ if(hx>0) {
+ float ret = math_narrow_eval (r/x);
+ if (ret == 0)
+ __set_errno (ERANGE);
+ return ret;
+ } else
+ return two-r/x;
+ } else {
+ if(hx>0) {
+ __set_errno (ERANGE);
+ return tiny*tiny;
+ } else
+ return two-tiny;
+ }
+}
+weak_alias (__erfcf, erfcf)
diff --git a/REORG.TODO/sysdeps/ieee754/flt-32/s_expm1f.c b/REORG.TODO/sysdeps/ieee754/flt-32/s_expm1f.c
new file mode 100644
index 0000000000..c515d25e28
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/flt-32/s_expm1f.c
@@ -0,0 +1,130 @@
+/* s_expm1f.c -- float version of s_expm1.c.
+ * Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#include <errno.h>
+#include <float.h>
+#include <math.h>
+#include <math_private.h>
+
+static const float huge = 1.0e+30;
+static const float tiny = 1.0e-30;
+
+static const float
+one = 1.0,
+o_threshold = 8.8721679688e+01,/* 0x42b17180 */
+ln2_hi = 6.9313812256e-01,/* 0x3f317180 */
+ln2_lo = 9.0580006145e-06,/* 0x3717f7d1 */
+invln2 = 1.4426950216e+00,/* 0x3fb8aa3b */
+ /* scaled coefficients related to expm1 */
+Q1 = -3.3333335072e-02, /* 0xbd088889 */
+Q2 = 1.5873016091e-03, /* 0x3ad00d01 */
+Q3 = -7.9365076090e-05, /* 0xb8a670cd */
+Q4 = 4.0082177293e-06, /* 0x36867e54 */
+Q5 = -2.0109921195e-07; /* 0xb457edbb */
+
+float
+__expm1f(float x)
+{
+ float y,hi,lo,c,t,e,hxs,hfx,r1;
+ int32_t k,xsb;
+ u_int32_t hx;
+
+ GET_FLOAT_WORD(hx,x);
+ xsb = hx&0x80000000; /* sign bit of x */
+ if(xsb==0) y=x; else y= -x; /* y = |x| */
+ hx &= 0x7fffffff; /* high word of |x| */
+
+ /* filter out huge and non-finite argument */
+ if(hx >= 0x4195b844) { /* if |x|>=27*ln2 */
+ if(hx >= 0x42b17218) { /* if |x|>=88.721... */
+ if(hx>0x7f800000)
+ return x+x; /* NaN */
+ if(hx==0x7f800000)
+ return (xsb==0)? x:-1.0;/* exp(+-inf)={inf,-1} */
+ if(x > o_threshold) {
+ __set_errno (ERANGE);
+ return huge*huge; /* overflow */
+ }
+ }
+ if(xsb!=0) { /* x < -27*ln2, return -1.0 with inexact */
+ math_force_eval(x+tiny);/* raise inexact */
+ return tiny-one; /* return -1 */
+ }
+ }
+
+ /* argument reduction */
+ if(hx > 0x3eb17218) { /* if |x| > 0.5 ln2 */
+ if(hx < 0x3F851592) { /* and |x| < 1.5 ln2 */
+ if(xsb==0)
+ {hi = x - ln2_hi; lo = ln2_lo; k = 1;}
+ else
+ {hi = x + ln2_hi; lo = -ln2_lo; k = -1;}
+ } else {
+ k = invln2*x+((xsb==0)?(float)0.5:(float)-0.5);
+ t = k;
+ hi = x - t*ln2_hi; /* t*ln2_hi is exact here */
+ lo = t*ln2_lo;
+ }
+ x = hi - lo;
+ c = (hi-x)-lo;
+ }
+ else if(hx < 0x33000000) { /* when |x|<2**-25, return x */
+ math_check_force_underflow (x);
+ t = huge+x; /* return x with inexact flags when x!=0 */
+ return x - (t-(huge+x));
+ }
+ else k = 0;
+
+ /* x is now in primary range */
+ hfx = (float)0.5*x;
+ hxs = x*hfx;
+ r1 = one+hxs*(Q1+hxs*(Q2+hxs*(Q3+hxs*(Q4+hxs*Q5))));
+ t = (float)3.0-r1*hfx;
+ e = hxs*((r1-t)/((float)6.0 - x*t));
+ if(k==0) return x - (x*e-hxs); /* c is 0 */
+ else {
+ e = (x*(e-c)-c);
+ e -= hxs;
+ if(k== -1) return (float)0.5*(x-e)-(float)0.5;
+ if(k==1) {
+ if(x < (float)-0.25) return -(float)2.0*(e-(x+(float)0.5));
+ else return one+(float)2.0*(x-e);
+ }
+ if (k <= -2 || k>56) { /* suffice to return exp(x)-1 */
+ int32_t i;
+ y = one-(e-x);
+ GET_FLOAT_WORD(i,y);
+ SET_FLOAT_WORD(y,i+(k<<23)); /* add k to y's exponent */
+ return y-one;
+ }
+ t = one;
+ if(k<23) {
+ int32_t i;
+ SET_FLOAT_WORD(t,0x3f800000 - (0x1000000>>k)); /* t=1-2^-k */
+ y = t-(e-x);
+ GET_FLOAT_WORD(i,y);
+ SET_FLOAT_WORD(y,i+(k<<23)); /* add k to y's exponent */
+ } else {
+ int32_t i;
+ SET_FLOAT_WORD(t,((0x7f-k)<<23)); /* 2^-k */
+ y = x-(e+t);
+ y += one;
+ GET_FLOAT_WORD(i,y);
+ SET_FLOAT_WORD(y,i+(k<<23)); /* add k to y's exponent */
+ }
+ }
+ return y;
+}
+weak_alias (__expm1f, expm1f)
diff --git a/REORG.TODO/sysdeps/ieee754/flt-32/s_fabsf.c b/REORG.TODO/sysdeps/ieee754/flt-32/s_fabsf.c
new file mode 100644
index 0000000000..297abe64bd
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/flt-32/s_fabsf.c
@@ -0,0 +1,30 @@
+/* s_fabsf.c -- float version of s_fabs.c.
+ * Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: s_fabsf.c,v 1.4 1995/05/10 20:47:15 jtc Exp $";
+#endif
+
+/*
+ * fabsf(x) returns the absolute value of x.
+ */
+
+#include <math.h>
+
+float __fabsf(float x)
+{
+ return __builtin_fabsf (x);
+}
+weak_alias (__fabsf, fabsf)
diff --git a/REORG.TODO/sysdeps/ieee754/flt-32/s_finitef.c b/REORG.TODO/sysdeps/ieee754/flt-32/s_finitef.c
new file mode 100644
index 0000000000..4c5b339235
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/flt-32/s_finitef.c
@@ -0,0 +1,41 @@
+/* s_finitef.c -- float version of s_finite.c.
+ * Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: s_finitef.c,v 1.4 1995/05/10 20:47:18 jtc Exp $";
+#endif
+
+/*
+ * finitef(x) returns 1 is x is finite, else 0;
+ * no branching!
+ */
+
+#include <math.h>
+#include <math_private.h>
+
+#undef __finitef
+
+#ifndef FINITEF
+# define FINITEF __finitef
+#endif
+
+int FINITEF(float x)
+{
+ int32_t ix;
+ GET_FLOAT_WORD(ix,x);
+ return (int)((u_int32_t)((ix&0x7f800000)-0x7f800000)>>31);
+}
+hidden_def (__finitef)
+weak_alias (__finitef, finitef)
diff --git a/REORG.TODO/sysdeps/ieee754/flt-32/s_floorf.c b/REORG.TODO/sysdeps/ieee754/flt-32/s_floorf.c
new file mode 100644
index 0000000000..69160e5e10
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/flt-32/s_floorf.c
@@ -0,0 +1,54 @@
+/* s_floorf.c -- float version of s_floor.c.
+ * Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+/*
+ * floorf(x)
+ * Return x rounded toward -inf to integral value
+ * Method:
+ * Bit twiddling.
+ */
+
+#include <math.h>
+#include <math_private.h>
+
+float
+__floorf(float x)
+{
+ int32_t i0,j0;
+ u_int32_t i;
+ GET_FLOAT_WORD(i0,x);
+ j0 = ((i0>>23)&0xff)-0x7f;
+ if(j0<23) {
+ if(j0<0) {
+ /* return 0*sign(x) if |x|<1 */
+ if(i0>=0) {i0=0;}
+ else if((i0&0x7fffffff)!=0)
+ { i0=0xbf800000;}
+ } else {
+ i = (0x007fffff)>>j0;
+ if((i0&i)==0) return x; /* x is integral */
+ if(i0<0) i0 += (0x00800000)>>j0;
+ i0 &= (~i);
+ }
+ } else {
+ if(__builtin_expect(j0==0x80, 0)) return x+x; /* inf or NaN */
+ else return x; /* x is integral */
+ }
+ SET_FLOAT_WORD(x,i0);
+ return x;
+}
+#ifndef __floorf
+weak_alias (__floorf, floorf)
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/flt-32/s_fpclassifyf.c b/REORG.TODO/sysdeps/ieee754/flt-32/s_fpclassifyf.c
new file mode 100644
index 0000000000..8a67c6fc0e
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/flt-32/s_fpclassifyf.c
@@ -0,0 +1,42 @@
+/* Return classification value corresponding to argument.
+ Copyright (C) 1997-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+
+#include <math_private.h>
+
+
+int
+__fpclassifyf (float x)
+{
+ u_int32_t wx;
+ int retval = FP_NORMAL;
+
+ GET_FLOAT_WORD (wx, x);
+ wx &= 0x7fffffff;
+ if (wx == 0)
+ retval = FP_ZERO;
+ else if (wx < 0x800000)
+ retval = FP_SUBNORMAL;
+ else if (wx >= 0x7f800000)
+ retval = wx > 0x7f800000 ? FP_NAN : FP_INFINITE;
+
+ return retval;
+}
+libm_hidden_def (__fpclassifyf)
diff --git a/REORG.TODO/sysdeps/ieee754/flt-32/s_frexpf.c b/REORG.TODO/sysdeps/ieee754/flt-32/s_frexpf.c
new file mode 100644
index 0000000000..005367cf58
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/flt-32/s_frexpf.c
@@ -0,0 +1,44 @@
+/* s_frexpf.c -- float version of s_frexp.c.
+ * Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: s_frexpf.c,v 1.5 1995/05/10 20:47:26 jtc Exp $";
+#endif
+
+#include <math.h>
+#include <math_private.h>
+
+static const float
+two25 = 3.3554432000e+07; /* 0x4c000000 */
+
+float __frexpf(float x, int *eptr)
+{
+ int32_t hx,ix;
+ GET_FLOAT_WORD(hx,x);
+ ix = 0x7fffffff&hx;
+ *eptr = 0;
+ if(ix>=0x7f800000||(ix==0)) return x + x; /* 0,inf,nan */
+ if (ix<0x00800000) { /* subnormal */
+ x *= two25;
+ GET_FLOAT_WORD(hx,x);
+ ix = hx&0x7fffffff;
+ *eptr = -25;
+ }
+ *eptr += (ix>>23)-126;
+ hx = (hx&0x807fffff)|0x3f000000;
+ SET_FLOAT_WORD(x,hx);
+ return x;
+}
+weak_alias (__frexpf, frexpf)
diff --git a/REORG.TODO/sysdeps/ieee754/flt-32/s_fromfpf.c b/REORG.TODO/sysdeps/ieee754/flt-32/s_fromfpf.c
new file mode 100644
index 0000000000..68d4c80a17
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/flt-32/s_fromfpf.c
@@ -0,0 +1,4 @@
+#define UNSIGNED 0
+#define INEXACT 0
+#define FUNC fromfpf
+#include <s_fromfpf_main.c>
diff --git a/REORG.TODO/sysdeps/ieee754/flt-32/s_fromfpf_main.c b/REORG.TODO/sysdeps/ieee754/flt-32/s_fromfpf_main.c
new file mode 100644
index 0000000000..3a4ad80e55
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/flt-32/s_fromfpf_main.c
@@ -0,0 +1,82 @@
+/* Round to integer type. flt-32 version.
+ Copyright (C) 2016-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <errno.h>
+#include <fenv.h>
+#include <math.h>
+#include <math_private.h>
+#include <stdbool.h>
+#include <stdint.h>
+
+#define BIAS 0x7f
+#define MANT_DIG 24
+
+#if UNSIGNED
+# define RET_TYPE uintmax_t
+#else
+# define RET_TYPE intmax_t
+#endif
+
+#include <fromfp.h>
+
+RET_TYPE
+FUNC (float x, int round, unsigned int width)
+{
+ if (width > INTMAX_WIDTH)
+ width = INTMAX_WIDTH;
+ uint32_t ix;
+ GET_FLOAT_WORD (ix, x);
+ bool negative = (ix & 0x80000000) != 0;
+ if (width == 0)
+ return fromfp_domain_error (negative, width);
+ ix &= 0x7fffffff;
+ if (ix == 0)
+ return 0;
+ int exponent = ix >> (MANT_DIG - 1);
+ exponent -= BIAS;
+ int max_exponent = fromfp_max_exponent (negative, width);
+ if (exponent > max_exponent)
+ return fromfp_domain_error (negative, width);
+
+ ix &= ((1U << (MANT_DIG - 1)) - 1);
+ ix |= 1U << (MANT_DIG - 1);
+ uintmax_t uret;
+ bool half_bit, more_bits;
+ if (exponent >= MANT_DIG - 1)
+ {
+ uret = ix;
+ uret <<= exponent - (MANT_DIG - 1);
+ half_bit = false;
+ more_bits = false;
+ }
+ else if (exponent >= -1)
+ {
+ uint32_t h = 1U << (MANT_DIG - 2 - exponent);
+ half_bit = (ix & h) != 0;
+ more_bits = (ix & (h - 1)) != 0;
+ uret = ix >> (MANT_DIG - 1 - exponent);
+ }
+ else
+ {
+ uret = 0;
+ half_bit = false;
+ more_bits = true;
+ }
+ return fromfp_round_and_return (negative, uret, half_bit, more_bits, round,
+ exponent, max_exponent, width);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/flt-32/s_fromfpxf.c b/REORG.TODO/sysdeps/ieee754/flt-32/s_fromfpxf.c
new file mode 100644
index 0000000000..9d0fcbc8cc
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/flt-32/s_fromfpxf.c
@@ -0,0 +1,4 @@
+#define UNSIGNED 0
+#define INEXACT 1
+#define FUNC fromfpxf
+#include <s_fromfpf_main.c>
diff --git a/REORG.TODO/sysdeps/ieee754/flt-32/s_getpayloadf.c b/REORG.TODO/sysdeps/ieee754/flt-32/s_getpayloadf.c
new file mode 100644
index 0000000000..90cfcc53b9
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/flt-32/s_getpayloadf.c
@@ -0,0 +1,33 @@
+/* Get NaN payload. flt-32 version.
+ Copyright (C) 2016-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <fix-int-fp-convert-zero.h>
+#include <math.h>
+#include <math_private.h>
+#include <stdint.h>
+
+float
+getpayloadf (const float *x)
+{
+ uint32_t ix;
+ GET_FLOAT_WORD (ix, *x);
+ ix &= 0x3fffff;
+ if (FIX_INT_FP_CONVERT_ZERO && ix == 0)
+ return 0.0f;
+ return (float) ix;
+}
diff --git a/REORG.TODO/sysdeps/ieee754/flt-32/s_isinff.c b/REORG.TODO/sysdeps/ieee754/flt-32/s_isinff.c
new file mode 100644
index 0000000000..6eec050bb5
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/flt-32/s_isinff.c
@@ -0,0 +1,29 @@
+/*
+ * Written by J.T. Conklin <jtc@netbsd.org>.
+ * Public domain.
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: s_isinff.c,v 1.3 1995/05/11 23:20:21 jtc Exp $";
+#endif
+
+/*
+ * isinff(x) returns 1 if x is inf, -1 if x is -inf, else 0;
+ * no branching!
+ */
+
+#include <math.h>
+#include <math_private.h>
+
+int
+__isinff (float x)
+{
+ int32_t ix,t;
+ GET_FLOAT_WORD(ix,x);
+ t = ix & 0x7fffffff;
+ t ^= 0x7f800000;
+ t |= -t;
+ return ~(t >> 31) & (ix >> 30);
+}
+hidden_def (__isinff)
+weak_alias (__isinff, isinff)
diff --git a/REORG.TODO/sysdeps/ieee754/flt-32/s_isnanf.c b/REORG.TODO/sysdeps/ieee754/flt-32/s_isnanf.c
new file mode 100644
index 0000000000..820b31a2b4
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/flt-32/s_isnanf.c
@@ -0,0 +1,38 @@
+/* s_isnanf.c -- float version of s_isnan.c.
+ * Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993, 2011 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: s_isnanf.c,v 1.4 1995/05/10 20:47:38 jtc Exp $";
+#endif
+
+/*
+ * isnanf(x) returns 1 is x is nan, else 0;
+ * no branching!
+ */
+
+#include <math.h>
+#include <math_private.h>
+
+#undef __isnanf
+int __isnanf(float x)
+{
+ int32_t ix;
+ GET_FLOAT_WORD(ix,x);
+ ix &= 0x7fffffff;
+ ix = 0x7f800000 - ix;
+ return (int)(((u_int32_t)(ix))>>31);
+}
+hidden_def (__isnanf)
+weak_alias (__isnanf, isnanf)
diff --git a/REORG.TODO/sysdeps/ieee754/flt-32/s_issignalingf.c b/REORG.TODO/sysdeps/ieee754/flt-32/s_issignalingf.c
new file mode 100644
index 0000000000..cd9830eae2
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/flt-32/s_issignalingf.c
@@ -0,0 +1,43 @@
+/* Test for signaling NaN.
+ Copyright (C) 2013-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+#include <math_private.h>
+#include <nan-high-order-bit.h>
+
+int
+__issignalingf (float x)
+{
+ u_int32_t xi;
+ GET_FLOAT_WORD (xi, x);
+#if HIGH_ORDER_BIT_IS_SET_FOR_SNAN
+ /* We only have to care about the high-order bit of x's significand, because
+ having it set (sNaN) already makes the significand different from that
+ used to designate infinity. */
+ return (xi & 0x7fc00000) == 0x7fc00000;
+#else
+ /* To keep the following comparison simple, toggle the quiet/signaling bit,
+ so that it is set for sNaNs. This is inverse to IEEE 754-2008 (as well as
+ common practice for IEEE 754-1985). */
+ xi ^= 0x00400000;
+ /* We have to compare for greater (instead of greater or equal), because x's
+ significand being all-zero designates infinity not NaN. */
+ return (xi & 0x7fffffff) > 0x7fc00000;
+#endif
+}
+libm_hidden_def (__issignalingf)
diff --git a/REORG.TODO/sysdeps/ieee754/flt-32/s_llrintf.c b/REORG.TODO/sysdeps/ieee754/flt-32/s_llrintf.c
new file mode 100644
index 0000000000..e0ffbfee82
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/flt-32/s_llrintf.c
@@ -0,0 +1,86 @@
+/* Round argument to nearest integral value according to current rounding
+ direction.
+ Copyright (C) 1997-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <fenv.h>
+#include <limits.h>
+#include <math.h>
+
+#include <math_private.h>
+#include <fix-fp-int-convert-overflow.h>
+
+static const float two23[2] =
+{
+ 8.3886080000e+06, /* 0x4B000000 */
+ -8.3886080000e+06, /* 0xCB000000 */
+};
+
+
+long long int
+__llrintf (float x)
+{
+ int32_t j0;
+ u_int32_t i0;
+ float w;
+ float t;
+ long long int result;
+ int sx;
+
+ GET_FLOAT_WORD (i0, x);
+
+ sx = i0 >> 31;
+ j0 = ((i0 >> 23) & 0xff) - 0x7f;
+ i0 &= 0x7fffff;
+ i0 |= 0x800000;
+
+ if (j0 < (int32_t) (sizeof (long long int) * 8) - 1)
+ {
+ if (j0 >= 23)
+ result = (long long int) i0 << (j0 - 23);
+ else
+ {
+ w = math_narrow_eval (two23[sx] + x);
+ t = w - two23[sx];
+ GET_FLOAT_WORD (i0, t);
+ j0 = ((i0 >> 23) & 0xff) - 0x7f;
+ i0 &= 0x7fffff;
+ i0 |= 0x800000;
+
+ result = (j0 < 0 ? 0 : i0 >> (23 - j0));
+ }
+ }
+ else
+ {
+#ifdef FE_INVALID
+ /* The number is too large. Unless it rounds to LLONG_MIN,
+ FE_INVALID must be raised and the return value is
+ unspecified. */
+ if (FIX_FLT_LLONG_CONVERT_OVERFLOW && x != (float) LLONG_MIN)
+ {
+ feraiseexcept (FE_INVALID);
+ return sx == 0 ? LLONG_MAX : LLONG_MIN;
+ }
+#endif
+ return (long long int) x;
+ }
+
+ return sx ? -result : result;
+}
+
+weak_alias (__llrintf, llrintf)
diff --git a/REORG.TODO/sysdeps/ieee754/flt-32/s_llroundf.c b/REORG.TODO/sysdeps/ieee754/flt-32/s_llroundf.c
new file mode 100644
index 0000000000..faee87b879
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/flt-32/s_llroundf.c
@@ -0,0 +1,73 @@
+/* Round float value to long long int.
+ Copyright (C) 1997-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <fenv.h>
+#include <limits.h>
+#include <math.h>
+
+#include <math_private.h>
+#include <fix-fp-int-convert-overflow.h>
+
+
+long long int
+__llroundf (float x)
+{
+ int32_t j0;
+ u_int32_t i;
+ long long int result;
+ int sign;
+
+ GET_FLOAT_WORD (i, x);
+ j0 = ((i >> 23) & 0xff) - 0x7f;
+ sign = (i & 0x80000000) != 0 ? -1 : 1;
+ i &= 0x7fffff;
+ i |= 0x800000;
+
+ if (j0 < (int32_t) (8 * sizeof (long long int)) - 1)
+ {
+ if (j0 < 0)
+ return j0 < -1 ? 0 : sign;
+ else if (j0 >= 23)
+ result = (long long int) i << (j0 - 23);
+ else
+ {
+ i += 0x400000 >> j0;
+
+ result = i >> (23 - j0);
+ }
+ }
+ else
+ {
+#ifdef FE_INVALID
+ /* The number is too large. Unless it rounds to LLONG_MIN,
+ FE_INVALID must be raised and the return value is
+ unspecified. */
+ if (FIX_FLT_LLONG_CONVERT_OVERFLOW && x != (float) LLONG_MIN)
+ {
+ feraiseexcept (FE_INVALID);
+ return sign == 1 ? LLONG_MAX : LLONG_MIN;
+ }
+#endif
+ return (long long int) x;
+ }
+
+ return sign * result;
+}
+
+weak_alias (__llroundf, llroundf)
diff --git a/REORG.TODO/sysdeps/ieee754/flt-32/s_log1pf.c b/REORG.TODO/sysdeps/ieee754/flt-32/s_log1pf.c
new file mode 100644
index 0000000000..ade60a2e27
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/flt-32/s_log1pf.c
@@ -0,0 +1,102 @@
+/* s_log1pf.c -- float version of s_log1p.c.
+ * Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#include <float.h>
+#include <math.h>
+#include <math_private.h>
+
+static const float
+ln2_hi = 6.9313812256e-01, /* 0x3f317180 */
+ln2_lo = 9.0580006145e-06, /* 0x3717f7d1 */
+two25 = 3.355443200e+07, /* 0x4c000000 */
+Lp1 = 6.6666668653e-01, /* 3F2AAAAB */
+Lp2 = 4.0000000596e-01, /* 3ECCCCCD */
+Lp3 = 2.8571429849e-01, /* 3E924925 */
+Lp4 = 2.2222198546e-01, /* 3E638E29 */
+Lp5 = 1.8183572590e-01, /* 3E3A3325 */
+Lp6 = 1.5313838422e-01, /* 3E1CD04F */
+Lp7 = 1.4798198640e-01; /* 3E178897 */
+
+static const float zero = 0.0;
+
+float
+__log1pf(float x)
+{
+ float hfsq,f,c,s,z,R,u;
+ int32_t k,hx,hu,ax;
+
+ GET_FLOAT_WORD(hx,x);
+ ax = hx&0x7fffffff;
+
+ k = 1;
+ if (hx < 0x3ed413d7) { /* x < 0.41422 */
+ if(ax>=0x3f800000) { /* x <= -1.0 */
+ if(x==(float)-1.0) return -two25/zero; /* log1p(-1)=-inf */
+ else return (x-x)/(x-x); /* log1p(x<-1)=NaN */
+ }
+ if(ax<0x31000000) { /* |x| < 2**-29 */
+ math_force_eval(two25+x); /* raise inexact */
+ if (ax<0x24800000) /* |x| < 2**-54 */
+ {
+ math_check_force_underflow (x);
+ return x;
+ }
+ else
+ return x - x*x*(float)0.5;
+ }
+ if(hx>0||hx<=((int32_t)0xbe95f61f)) {
+ k=0;f=x;hu=1;} /* -0.2929<x<0.41422 */
+ }
+ if (hx >= 0x7f800000) return x+x;
+ if(k!=0) {
+ if(hx<0x5a000000) {
+ u = (float)1.0+x;
+ GET_FLOAT_WORD(hu,u);
+ k = (hu>>23)-127;
+ /* correction term */
+ c = (k>0)? (float)1.0-(u-x):x-(u-(float)1.0);
+ c /= u;
+ } else {
+ u = x;
+ GET_FLOAT_WORD(hu,u);
+ k = (hu>>23)-127;
+ c = 0;
+ }
+ hu &= 0x007fffff;
+ if(hu<0x3504f7) {
+ SET_FLOAT_WORD(u,hu|0x3f800000);/* normalize u */
+ } else {
+ k += 1;
+ SET_FLOAT_WORD(u,hu|0x3f000000); /* normalize u/2 */
+ hu = (0x00800000-hu)>>2;
+ }
+ f = u-(float)1.0;
+ }
+ hfsq=(float)0.5*f*f;
+ if(hu==0) { /* |f| < 2**-20 */
+ if(f==zero) {
+ if(k==0) return zero;
+ else {c += k*ln2_lo; return k*ln2_hi+c;}
+ }
+ R = hfsq*((float)1.0-(float)0.66666666666666666*f);
+ if(k==0) return f-R; else
+ return k*ln2_hi-((R-(k*ln2_lo+c))-f);
+ }
+ s = f/((float)2.0+f);
+ z = s*s;
+ R = z*(Lp1+z*(Lp2+z*(Lp3+z*(Lp4+z*(Lp5+z*(Lp6+z*Lp7))))));
+ if(k==0) return f-(hfsq-s*(hfsq+R)); else
+ return k*ln2_hi-((hfsq-(s*(hfsq+R)+(k*ln2_lo+c)))-f);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/flt-32/s_logbf.c b/REORG.TODO/sysdeps/ieee754/flt-32/s_logbf.c
new file mode 100644
index 0000000000..9ae20e332a
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/flt-32/s_logbf.c
@@ -0,0 +1,41 @@
+/* s_logbf.c -- float version of s_logb.c.
+ * Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#include <math.h>
+#include <math_private.h>
+#include <fix-int-fp-convert-zero.h>
+
+float
+__logbf (float x)
+{
+ int32_t ix, rix;
+
+ GET_FLOAT_WORD (ix, x);
+ ix &= 0x7fffffff; /* high |x| */
+ if (ix == 0)
+ return (float) -1.0 / fabsf (x);
+ if (ix >= 0x7f800000)
+ return x * x;
+ if (__glibc_unlikely ((rix = ix >> 23) == 0))
+ {
+ /* POSIX specifies that denormal number is treated as
+ though it were normalized. */
+ rix -= __builtin_clz (ix) - 9;
+ }
+ if (FIX_INT_FP_CONVERT_ZERO && rix == 127)
+ return 0.0f;
+ return (float) (rix - 127);
+}
+weak_alias (__logbf, logbf)
diff --git a/REORG.TODO/sysdeps/ieee754/flt-32/s_lrintf.c b/REORG.TODO/sysdeps/ieee754/flt-32/s_lrintf.c
new file mode 100644
index 0000000000..a1ed720c0f
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/flt-32/s_lrintf.c
@@ -0,0 +1,86 @@
+/* Round argument to nearest integral value according to current rounding
+ direction.
+ Copyright (C) 1997-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <fenv.h>
+#include <limits.h>
+#include <math.h>
+
+#include <math_private.h>
+#include <fix-fp-int-convert-overflow.h>
+
+static const float two23[2] =
+{
+ 8.3886080000e+06, /* 0x4B000000 */
+ -8.3886080000e+06, /* 0xCB000000 */
+};
+
+
+long int
+__lrintf (float x)
+{
+ int32_t j0;
+ u_int32_t i0;
+ float w;
+ float t;
+ long int result;
+ int sx;
+
+ GET_FLOAT_WORD (i0, x);
+
+ sx = i0 >> 31;
+ j0 = ((i0 >> 23) & 0xff) - 0x7f;
+ i0 &= 0x7fffff;
+ i0 |= 0x800000;
+
+ if (j0 < (int32_t) (sizeof (long int) * 8) - 1)
+ {
+ if (j0 >= 23)
+ result = (long int) i0 << (j0 - 23);
+ else
+ {
+ w = math_narrow_eval (two23[sx] + x);
+ t = w - two23[sx];
+ GET_FLOAT_WORD (i0, t);
+ j0 = ((i0 >> 23) & 0xff) - 0x7f;
+ i0 &= 0x7fffff;
+ i0 |= 0x800000;
+
+ result = (j0 < 0 ? 0 : i0 >> (23 - j0));
+ }
+ }
+ else
+ {
+#ifdef FE_INVALID
+ /* The number is too large. Unless it rounds to LONG_MIN,
+ FE_INVALID must be raised and the return value is
+ unspecified. */
+ if (FIX_FLT_LONG_CONVERT_OVERFLOW && x != (float) LONG_MIN)
+ {
+ feraiseexcept (FE_INVALID);
+ return sx == 0 ? LONG_MAX : LONG_MIN;
+ }
+#endif
+ return (long int) x;
+ }
+
+ return sx ? -result : result;
+}
+
+weak_alias (__lrintf, lrintf)
diff --git a/REORG.TODO/sysdeps/ieee754/flt-32/s_lroundf.c b/REORG.TODO/sysdeps/ieee754/flt-32/s_lroundf.c
new file mode 100644
index 0000000000..81cb7ab10f
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/flt-32/s_lroundf.c
@@ -0,0 +1,73 @@
+/* Round float value to long int.
+ Copyright (C) 1997-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <fenv.h>
+#include <limits.h>
+#include <math.h>
+
+#include <math_private.h>
+#include <fix-fp-int-convert-overflow.h>
+
+
+long int
+__lroundf (float x)
+{
+ int32_t j0;
+ u_int32_t i;
+ long int result;
+ int sign;
+
+ GET_FLOAT_WORD (i, x);
+ j0 = ((i >> 23) & 0xff) - 0x7f;
+ sign = (i & 0x80000000) != 0 ? -1 : 1;
+ i &= 0x7fffff;
+ i |= 0x800000;
+
+ if (j0 < (int32_t) (8 * sizeof (long int)) - 1)
+ {
+ if (j0 < 0)
+ return j0 < -1 ? 0 : sign;
+ else if (j0 >= 23)
+ result = (long int) i << (j0 - 23);
+ else
+ {
+ i += 0x400000 >> j0;
+
+ result = i >> (23 - j0);
+ }
+ }
+ else
+ {
+#ifdef FE_INVALID
+ /* The number is too large. Unless it rounds to LONG_MIN,
+ FE_INVALID must be raised and the return value is
+ unspecified. */
+ if (FIX_FLT_LONG_CONVERT_OVERFLOW && x != (float) LONG_MIN)
+ {
+ feraiseexcept (FE_INVALID);
+ return sign == 1 ? LONG_MAX : LONG_MIN;
+ }
+#endif
+ return (long int) x;
+ }
+
+ return sign * result;
+}
+
+weak_alias (__lroundf, lroundf)
diff --git a/REORG.TODO/sysdeps/ieee754/flt-32/s_modff.c b/REORG.TODO/sysdeps/ieee754/flt-32/s_modff.c
new file mode 100644
index 0000000000..23f6a902b3
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/flt-32/s_modff.c
@@ -0,0 +1,54 @@
+/* s_modff.c -- float version of s_modf.c.
+ * Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#include <math.h>
+#include <math_private.h>
+
+static const float one = 1.0;
+
+float
+__modff(float x, float *iptr)
+{
+ int32_t i0,j0;
+ u_int32_t i;
+ GET_FLOAT_WORD(i0,x);
+ j0 = ((i0>>23)&0xff)-0x7f; /* exponent of x */
+ if(__builtin_expect(j0<23, 1)) { /* integer part in x */
+ if(j0<0) { /* |x|<1 */
+ SET_FLOAT_WORD(*iptr,i0&0x80000000); /* *iptr = +-0 */
+ return x;
+ } else {
+ i = (0x007fffff)>>j0;
+ if((i0&i)==0) { /* x is integral */
+ u_int32_t ix;
+ *iptr = x;
+ GET_FLOAT_WORD(ix,x);
+ SET_FLOAT_WORD(x,ix&0x80000000); /* return +-0 */
+ return x;
+ } else {
+ SET_FLOAT_WORD(*iptr,i0&(~i));
+ return x - *iptr;
+ }
+ }
+ } else { /* no fraction part */
+ *iptr = x*one;
+ /* We must handle NaNs separately. */
+ if (j0 == 0x80 && (i0 & 0x7fffff))
+ return x*one;
+ SET_FLOAT_WORD(x,i0&0x80000000); /* return +-0 */
+ return x;
+ }
+}
+weak_alias (__modff, modff)
diff --git a/REORG.TODO/sysdeps/ieee754/flt-32/s_nearbyintf.c b/REORG.TODO/sysdeps/ieee754/flt-32/s_nearbyintf.c
new file mode 100644
index 0000000000..5aebefafcf
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/flt-32/s_nearbyintf.c
@@ -0,0 +1,59 @@
+/* s_rintf.c -- float version of s_rint.c.
+ * Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com.
+ */
+/* Adapted for use as nearbyint by Ulrich Drepper <drepper@cygnus.com>. */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+
+#include <fenv.h>
+#include <math.h>
+#include <math_private.h>
+
+static const float
+TWO23[2]={
+ 8.3886080000e+06, /* 0x4b000000 */
+ -8.3886080000e+06, /* 0xcb000000 */
+};
+
+float
+__nearbyintf(float x)
+{
+ fenv_t env;
+ int32_t i0,j0,sx;
+ float w,t;
+ GET_FLOAT_WORD(i0,x);
+ sx = (i0>>31)&1;
+ j0 = ((i0>>23)&0xff)-0x7f;
+ if(j0<23) {
+ if(j0<0) {
+ libc_feholdexceptf (&env);
+ w = TWO23[sx]+x;
+ t = w-TWO23[sx];
+ math_force_eval (t);
+ libc_fesetenvf (&env);
+ GET_FLOAT_WORD(i0,t);
+ SET_FLOAT_WORD(t,(i0&0x7fffffff)|(sx<<31));
+ return t;
+ }
+ } else {
+ if(__builtin_expect(j0==0x80, 0)) return x+x; /* inf or NaN */
+ else return x; /* x is integral */
+ }
+ libc_feholdexceptf (&env);
+ w = TWO23[sx]+x;
+ t = w-TWO23[sx];
+ math_force_eval (t);
+ libc_fesetenvf (&env);
+ return t;
+}
+weak_alias (__nearbyintf, nearbyintf)
diff --git a/REORG.TODO/sysdeps/ieee754/flt-32/s_nextafterf.c b/REORG.TODO/sysdeps/ieee754/flt-32/s_nextafterf.c
new file mode 100644
index 0000000000..625d54b768
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/flt-32/s_nextafterf.c
@@ -0,0 +1,73 @@
+/* s_nextafterf.c -- float version of s_nextafter.c.
+ * Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: s_nextafterf.c,v 1.4 1995/05/10 20:48:01 jtc Exp $";
+#endif
+
+#include <errno.h>
+#include <math.h>
+#include <math_private.h>
+#include <float.h>
+
+float __nextafterf(float x, float y)
+{
+ int32_t hx,hy,ix,iy;
+
+ GET_FLOAT_WORD(hx,x);
+ GET_FLOAT_WORD(hy,y);
+ ix = hx&0x7fffffff; /* |x| */
+ iy = hy&0x7fffffff; /* |y| */
+
+ if((ix>0x7f800000) || /* x is nan */
+ (iy>0x7f800000)) /* y is nan */
+ return x+y;
+ if(x==y) return y; /* x=y, return y */
+ if(ix==0) { /* x == 0 */
+ float u;
+ SET_FLOAT_WORD(x,(hy&0x80000000)|1);/* return +-minsubnormal */
+ u = math_opt_barrier (x);
+ u = u*u;
+ math_force_eval (u); /* raise underflow flag */
+ return x;
+ }
+ if(hx>=0) { /* x > 0 */
+ if(hx>hy) { /* x > y, x -= ulp */
+ hx -= 1;
+ } else { /* x < y, x += ulp */
+ hx += 1;
+ }
+ } else { /* x < 0 */
+ if(hy>=0||hx>hy){ /* x < y, x -= ulp */
+ hx -= 1;
+ } else { /* x > y, x += ulp */
+ hx += 1;
+ }
+ }
+ hy = hx&0x7f800000;
+ if(hy>=0x7f800000) {
+ float u = x+x; /* overflow */
+ math_force_eval (u);
+ __set_errno (ERANGE);
+ }
+ if(hy<0x00800000) {
+ float u = x*x; /* underflow */
+ math_force_eval (u); /* raise underflow flag */
+ __set_errno (ERANGE);
+ }
+ SET_FLOAT_WORD(x,hx);
+ return x;
+}
+weak_alias (__nextafterf, nextafterf)
diff --git a/REORG.TODO/sysdeps/ieee754/flt-32/s_nextupf.c b/REORG.TODO/sysdeps/ieee754/flt-32/s_nextupf.c
new file mode 100644
index 0000000000..bbabdf1bd6
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/flt-32/s_nextupf.c
@@ -0,0 +1,46 @@
+/* Return the least floating-point number greater than X.
+ Copyright (C) 2016-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+#include <math_private.h>
+
+/* Return the least floating-point number greater than X. */
+float
+__nextupf (float x)
+{
+ int32_t hx, ix;
+
+ GET_FLOAT_WORD (hx, x);
+ ix = hx & 0x7fffffff;
+ if (ix == 0)
+ return FLT_TRUE_MIN;
+ if (ix > 0x7f800000) /* x is nan. */
+ return x + x;
+ if (hx >= 0)
+ { /* x > 0. */
+ if (isinf (x))
+ return x;
+ hx += 1;
+ }
+ else
+ hx -= 1;
+ SET_FLOAT_WORD (x, hx);
+ return x;
+}
+
+weak_alias (__nextupf, nextupf)
diff --git a/REORG.TODO/sysdeps/ieee754/flt-32/s_remquof.c b/REORG.TODO/sysdeps/ieee754/flt-32/s_remquof.c
new file mode 100644
index 0000000000..8e398dc6c5
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/flt-32/s_remquof.c
@@ -0,0 +1,110 @@
+/* Compute remainder and a congruent to the quotient.
+ Copyright (C) 1997-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+
+#include <math_private.h>
+
+
+static const float zero = 0.0;
+
+
+float
+__remquof (float x, float y, int *quo)
+{
+ int32_t hx,hy;
+ u_int32_t sx;
+ int cquo, qs;
+
+ GET_FLOAT_WORD (hx, x);
+ GET_FLOAT_WORD (hy, y);
+ sx = hx & 0x80000000;
+ qs = sx ^ (hy & 0x80000000);
+ hy &= 0x7fffffff;
+ hx &= 0x7fffffff;
+
+ /* Purge off exception values. */
+ if (hy == 0)
+ return (x * y) / (x * y); /* y = 0 */
+ if ((hx >= 0x7f800000) /* x not finite */
+ || (hy > 0x7f800000)) /* y is NaN */
+ return (x * y) / (x * y);
+
+ if (hy <= 0x7dffffff)
+ x = __ieee754_fmodf (x, 8 * y); /* now x < 8y */
+
+ if ((hx - hy) == 0)
+ {
+ *quo = qs ? -1 : 1;
+ return zero * x;
+ }
+
+ x = fabsf (x);
+ y = fabsf (y);
+ cquo = 0;
+
+ if (hy <= 0x7e7fffff && x >= 4 * y)
+ {
+ x -= 4 * y;
+ cquo += 4;
+ }
+ if (hy <= 0x7effffff && x >= 2 * y)
+ {
+ x -= 2 * y;
+ cquo += 2;
+ }
+
+ if (hy < 0x01000000)
+ {
+ if (x + x > y)
+ {
+ x -= y;
+ ++cquo;
+ if (x + x >= y)
+ {
+ x -= y;
+ ++cquo;
+ }
+ }
+ }
+ else
+ {
+ float y_half = 0.5 * y;
+ if (x > y_half)
+ {
+ x -= y;
+ ++cquo;
+ if (x >= y_half)
+ {
+ x -= y;
+ ++cquo;
+ }
+ }
+ }
+
+ *quo = qs ? -cquo : cquo;
+
+ /* Ensure correct sign of zero result in round-downward mode. */
+ if (x == 0.0f)
+ x = 0.0f;
+ if (sx)
+ x = -x;
+ return x;
+}
+weak_alias (__remquof, remquof)
diff --git a/REORG.TODO/sysdeps/ieee754/flt-32/s_rintf.c b/REORG.TODO/sysdeps/ieee754/flt-32/s_rintf.c
new file mode 100644
index 0000000000..8a907488f7
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/flt-32/s_rintf.c
@@ -0,0 +1,50 @@
+/* s_rintf.c -- float version of s_rint.c.
+ * Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#include <math.h>
+#include <math_private.h>
+
+static const float
+TWO23[2]={
+ 8.3886080000e+06, /* 0x4b000000 */
+ -8.3886080000e+06, /* 0xcb000000 */
+};
+
+float
+__rintf(float x)
+{
+ int32_t i0,j0,sx;
+ float w,t;
+ GET_FLOAT_WORD(i0,x);
+ sx = (i0>>31)&1;
+ j0 = ((i0>>23)&0xff)-0x7f;
+ if(j0<23) {
+ if(j0<0) {
+ w = TWO23[sx]+x;
+ t = w-TWO23[sx];
+ GET_FLOAT_WORD(i0,t);
+ SET_FLOAT_WORD(t,(i0&0x7fffffff)|(sx<<31));
+ return t;
+ }
+ } else {
+ if(j0==0x80) return x+x; /* inf or NaN */
+ else return x; /* x is integral */
+ }
+ w = TWO23[sx]+x;
+ return w-TWO23[sx];
+}
+#ifndef __rintf
+weak_alias (__rintf, rintf)
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/flt-32/s_roundevenf.c b/REORG.TODO/sysdeps/ieee754/flt-32/s_roundevenf.c
new file mode 100644
index 0000000000..4a8c2624bb
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/flt-32/s_roundevenf.c
@@ -0,0 +1,68 @@
+/* Round to nearest integer value, rounding halfway cases to even.
+ flt-32 version.
+ Copyright (C) 2016-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+#include <math_private.h>
+#include <stdint.h>
+
+#define BIAS 0x7f
+#define MANT_DIG 24
+#define MAX_EXP (2 * BIAS + 1)
+
+float
+roundevenf (float x)
+{
+ uint32_t ix, ux;
+ GET_FLOAT_WORD (ix, x);
+ ux = ix & 0x7fffffff;
+ int exponent = ux >> (MANT_DIG - 1);
+ if (exponent >= BIAS + MANT_DIG - 1)
+ {
+ /* Integer, infinity or NaN. */
+ if (exponent == MAX_EXP)
+ /* Infinity or NaN; quiet signaling NaNs. */
+ return x + x;
+ else
+ return x;
+ }
+ else if (exponent >= BIAS)
+ {
+ /* At least 1; not necessarily an integer. Locate the bits with
+ exponents 0 and -1 (when the unbiased exponent is 0, the bit
+ with exponent 0 is implicit, but as the bias is odd it is OK
+ to take it from the low bit of the exponent). */
+ int int_pos = (BIAS + MANT_DIG - 1) - exponent;
+ int half_pos = int_pos - 1;
+ uint32_t half_bit = 1U << half_pos;
+ uint32_t int_bit = 1U << int_pos;
+ if ((ix & (int_bit | (half_bit - 1))) != 0)
+ /* Carry into the exponent works correctly. No need to test
+ whether HALF_BIT is set. */
+ ix += half_bit;
+ ix &= ~(int_bit - 1);
+ }
+ else if (exponent == BIAS - 1 && ux > 0x3f000000)
+ /* Interval (0.5, 1). */
+ ix = (ix & 0x80000000) | 0x3f800000;
+ else
+ /* Rounds to 0. */
+ ix &= 0x80000000;
+ SET_FLOAT_WORD (x, ix);
+ return x;
+}
diff --git a/REORG.TODO/sysdeps/ieee754/flt-32/s_roundf.c b/REORG.TODO/sysdeps/ieee754/flt-32/s_roundf.c
new file mode 100644
index 0000000000..7ea0d97756
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/flt-32/s_roundf.c
@@ -0,0 +1,63 @@
+/* Round float to integer away from zero.
+ Copyright (C) 1997-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+
+#include <math_private.h>
+
+
+float
+__roundf (float x)
+{
+ int32_t i0, j0;
+
+ GET_FLOAT_WORD (i0, x);
+ j0 = ((i0 >> 23) & 0xff) - 0x7f;
+ if (j0 < 23)
+ {
+ if (j0 < 0)
+ {
+ i0 &= 0x80000000;
+ if (j0 == -1)
+ i0 |= 0x3f800000;
+ }
+ else
+ {
+ u_int32_t i = 0x007fffff >> j0;
+ if ((i0 & i) == 0)
+ /* X is integral. */
+ return x;
+
+ i0 += 0x00400000 >> j0;
+ i0 &= ~i;
+ }
+ }
+ else
+ {
+ if (j0 == 0x80)
+ /* Inf or NaN. */
+ return x + x;
+ else
+ return x;
+ }
+
+ SET_FLOAT_WORD (x, i0);
+ return x;
+}
+weak_alias (__roundf, roundf)
diff --git a/REORG.TODO/sysdeps/ieee754/flt-32/s_scalblnf.c b/REORG.TODO/sysdeps/ieee754/flt-32/s_scalblnf.c
new file mode 100644
index 0000000000..ad3c586b33
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/flt-32/s_scalblnf.c
@@ -0,0 +1,52 @@
+/* s_scalbnf.c -- float version of s_scalbn.c.
+ * Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#include <math.h>
+#include <math_private.h>
+
+static const float
+two25 = 3.355443200e+07, /* 0x4c000000 */
+twom25 = 2.9802322388e-08, /* 0x33000000 */
+huge = 1.0e+30,
+tiny = 1.0e-30;
+
+float
+__scalblnf (float x, long int n)
+{
+ int32_t k,ix;
+ GET_FLOAT_WORD(ix,x);
+ k = (ix&0x7f800000)>>23; /* extract exponent */
+ if (__builtin_expect(k==0, 0)) { /* 0 or subnormal x */
+ if ((ix&0x7fffffff)==0) return x; /* +-0 */
+ x *= two25;
+ GET_FLOAT_WORD(ix,x);
+ k = ((ix&0x7f800000)>>23) - 25;
+ }
+ if (__builtin_expect(k==0xff, 0)) return x+x; /* NaN or Inf */
+ if (__builtin_expect(n< -50000, 0))
+ return tiny*copysignf(tiny,x); /*underflow*/
+ if (__builtin_expect(n> 50000 || k+n > 0xfe, 0))
+ return huge*copysignf(huge,x); /* overflow */
+ /* Now k and n are bounded we know that k = k+n does not
+ overflow. */
+ k = k+n;
+ if (__builtin_expect(k > 0, 1)) /* normal result */
+ {SET_FLOAT_WORD(x,(ix&0x807fffff)|(k<<23)); return x;}
+ if (k <= -25)
+ return tiny*copysignf(tiny,x); /*underflow*/
+ k += 25; /* subnormal result */
+ SET_FLOAT_WORD(x,(ix&0x807fffff)|(k<<23));
+ return x*twom25;
+}
diff --git a/REORG.TODO/sysdeps/ieee754/flt-32/s_scalbnf.c b/REORG.TODO/sysdeps/ieee754/flt-32/s_scalbnf.c
new file mode 100644
index 0000000000..f36ae241b2
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/flt-32/s_scalbnf.c
@@ -0,0 +1,52 @@
+/* s_scalbnf.c -- float version of s_scalbn.c.
+ * Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#include <math.h>
+#include <math_private.h>
+
+static const float
+two25 = 3.355443200e+07, /* 0x4c000000 */
+twom25 = 2.9802322388e-08, /* 0x33000000 */
+huge = 1.0e+30,
+tiny = 1.0e-30;
+
+float
+__scalbnf (float x, int n)
+{
+ int32_t k,ix;
+ GET_FLOAT_WORD(ix,x);
+ k = (ix&0x7f800000)>>23; /* extract exponent */
+ if (__builtin_expect(k==0, 0)) { /* 0 or subnormal x */
+ if ((ix&0x7fffffff)==0) return x; /* +-0 */
+ x *= two25;
+ GET_FLOAT_WORD(ix,x);
+ k = ((ix&0x7f800000)>>23) - 25;
+ }
+ if (__builtin_expect(k==0xff, 0)) return x+x; /* NaN or Inf */
+ if (__builtin_expect(n< -50000, 0))
+ return tiny*__copysignf(tiny,x); /*underflow*/
+ if (__builtin_expect(n> 50000 || k+n > 0xfe, 0))
+ return huge*__copysignf(huge,x); /* overflow */
+ /* Now k and n are bounded we know that k = k+n does not
+ overflow. */
+ k = k+n;
+ if (__builtin_expect(k > 0, 1)) /* normal result */
+ {SET_FLOAT_WORD(x,(ix&0x807fffff)|(k<<23)); return x;}
+ if (k <= -25)
+ return tiny*__copysignf(tiny,x); /*underflow*/
+ k += 25; /* subnormal result */
+ SET_FLOAT_WORD(x,(ix&0x807fffff)|(k<<23));
+ return x*twom25;
+}
diff --git a/REORG.TODO/sysdeps/ieee754/flt-32/s_setpayloadf.c b/REORG.TODO/sysdeps/ieee754/flt-32/s_setpayloadf.c
new file mode 100644
index 0000000000..86dfda9aa6
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/flt-32/s_setpayloadf.c
@@ -0,0 +1,3 @@
+#define SIG 0
+#define FUNC setpayloadf
+#include <s_setpayloadf_main.c>
diff --git a/REORG.TODO/sysdeps/ieee754/flt-32/s_setpayloadf_main.c b/REORG.TODO/sysdeps/ieee754/flt-32/s_setpayloadf_main.c
new file mode 100644
index 0000000000..8b046d6547
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/flt-32/s_setpayloadf_main.c
@@ -0,0 +1,53 @@
+/* Set NaN payload. flt-32 version.
+ Copyright (C) 2016-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+#include <math_private.h>
+#include <nan-high-order-bit.h>
+#include <stdint.h>
+
+#define SET_HIGH_BIT (HIGH_ORDER_BIT_IS_SET_FOR_SNAN ? SIG : !SIG)
+#define BIAS 0x7f
+#define PAYLOAD_DIG 22
+#define EXPLICIT_MANT_DIG 23
+
+int
+FUNC (float *x, float payload)
+{
+ uint32_t ix;
+ GET_FLOAT_WORD (ix, payload);
+ int exponent = ix >> EXPLICIT_MANT_DIG;
+ /* Test if argument is (a) negative or too large; (b) too small,
+ except for 0 when allowed; (c) not an integer. */
+ if (exponent >= BIAS + PAYLOAD_DIG
+ || (exponent < BIAS && !(SET_HIGH_BIT && ix == 0))
+ || (ix & ((1U << (BIAS + EXPLICIT_MANT_DIG - exponent)) - 1)) != 0)
+ {
+ SET_FLOAT_WORD (*x, 0);
+ return 1;
+ }
+ if (ix != 0)
+ {
+ ix &= (1U << EXPLICIT_MANT_DIG) - 1;
+ ix |= 1U << EXPLICIT_MANT_DIG;
+ ix >>= BIAS + EXPLICIT_MANT_DIG - exponent;
+ }
+ ix |= 0x7f800000 | (SET_HIGH_BIT ? 0x400000 : 0);
+ SET_FLOAT_WORD (*x, ix);
+ return 0;
+}
diff --git a/REORG.TODO/sysdeps/ieee754/flt-32/s_setpayloadsigf.c b/REORG.TODO/sysdeps/ieee754/flt-32/s_setpayloadsigf.c
new file mode 100644
index 0000000000..f7b335dac7
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/flt-32/s_setpayloadsigf.c
@@ -0,0 +1,3 @@
+#define SIG 1
+#define FUNC setpayloadsigf
+#include <s_setpayloadf_main.c>
diff --git a/REORG.TODO/sysdeps/ieee754/flt-32/s_signbitf.c b/REORG.TODO/sysdeps/ieee754/flt-32/s_signbitf.c
new file mode 100644
index 0000000000..0f7e23d7f9
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/flt-32/s_signbitf.c
@@ -0,0 +1,26 @@
+/* Return nonzero value if number is negative.
+ Copyright (C) 1997-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+
+int
+__signbitf (float x)
+{
+ return __builtin_signbitf (x);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/flt-32/s_sincosf.c b/REORG.TODO/sysdeps/ieee754/flt-32/s_sincosf.c
new file mode 100644
index 0000000000..3ab92ee0ba
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/flt-32/s_sincosf.c
@@ -0,0 +1,84 @@
+/* Compute sine and cosine of argument.
+ Copyright (C) 1997-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <errno.h>
+#include <math.h>
+
+#include <math_private.h>
+
+#ifndef SINCOSF
+# define SINCOSF_FUNC __sincosf
+#else
+# define SINCOSF_FUNC SINCOSF
+#endif
+
+void
+SINCOSF_FUNC (float x, float *sinx, float *cosx)
+{
+ int32_t ix;
+
+ /* High word of x. */
+ GET_FLOAT_WORD (ix, x);
+
+ /* |x| ~< pi/4 */
+ ix &= 0x7fffffff;
+ if (ix <= 0x3f490fd8)
+ {
+ *sinx = __kernel_sinf (x, 0.0, 0);
+ *cosx = __kernel_cosf (x, 0.0);
+ }
+ else if (ix>=0x7f800000)
+ {
+ /* sin(Inf or NaN) is NaN */
+ *sinx = *cosx = x - x;
+ if (ix == 0x7f800000)
+ __set_errno (EDOM);
+ }
+ else
+ {
+ /* Argument reduction needed. */
+ float y[2];
+ int n;
+
+ n = __ieee754_rem_pio2f (x, y);
+ switch (n & 3)
+ {
+ case 0:
+ *sinx = __kernel_sinf (y[0], y[1], 1);
+ *cosx = __kernel_cosf (y[0], y[1]);
+ break;
+ case 1:
+ *sinx = __kernel_cosf (y[0], y[1]);
+ *cosx = -__kernel_sinf (y[0], y[1], 1);
+ break;
+ case 2:
+ *sinx = -__kernel_sinf (y[0], y[1], 1);
+ *cosx = -__kernel_cosf (y[0], y[1]);
+ break;
+ default:
+ *sinx = -__kernel_cosf (y[0], y[1]);
+ *cosx = __kernel_sinf (y[0], y[1], 1);
+ break;
+ }
+ }
+}
+
+#ifndef SINCOSF
+weak_alias (__sincosf, sincosf)
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/flt-32/s_sinf.c b/REORG.TODO/sysdeps/ieee754/flt-32/s_sinf.c
new file mode 100644
index 0000000000..916e345571
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/flt-32/s_sinf.c
@@ -0,0 +1,63 @@
+/* s_sinf.c -- float version of s_sin.c.
+ * Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: s_sinf.c,v 1.4 1995/05/10 20:48:16 jtc Exp $";
+#endif
+
+#include <errno.h>
+#include <math.h>
+#include <math_private.h>
+
+#ifndef SINF
+# define SINF_FUNC __sinf
+#else
+# define SINF_FUNC SINF
+#endif
+
+float SINF_FUNC(float x)
+{
+ float y[2],z=0.0;
+ int32_t n, ix;
+
+ GET_FLOAT_WORD(ix,x);
+
+ /* |x| ~< pi/4 */
+ ix &= 0x7fffffff;
+ if(ix <= 0x3f490fd8) return __kernel_sinf(x,z,0);
+
+ /* sin(Inf or NaN) is NaN */
+ else if (ix>=0x7f800000) {
+ if (ix == 0x7f800000)
+ __set_errno (EDOM);
+ return x-x;
+ }
+
+ /* argument reduction needed */
+ else {
+ n = __ieee754_rem_pio2f(x,y);
+ switch(n&3) {
+ case 0: return __kernel_sinf(y[0],y[1],1);
+ case 1: return __kernel_cosf(y[0],y[1]);
+ case 2: return -__kernel_sinf(y[0],y[1],1);
+ default:
+ return -__kernel_cosf(y[0],y[1]);
+ }
+ }
+}
+
+#ifndef SINF
+weak_alias (__sinf, sinf)
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/flt-32/s_tanf.c b/REORG.TODO/sysdeps/ieee754/flt-32/s_tanf.c
new file mode 100644
index 0000000000..685df8fa35
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/flt-32/s_tanf.c
@@ -0,0 +1,49 @@
+/* s_tanf.c -- float version of s_tan.c.
+ * Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: s_tanf.c,v 1.4 1995/05/10 20:48:20 jtc Exp $";
+#endif
+
+#include <errno.h>
+#include <math.h>
+#include <math_private.h>
+
+float __tanf(float x)
+{
+ float y[2],z=0.0;
+ int32_t n, ix;
+
+ GET_FLOAT_WORD(ix,x);
+
+ /* |x| ~< pi/4 */
+ ix &= 0x7fffffff;
+ if(ix <= 0x3f490fda) return __kernel_tanf(x,z,1);
+
+ /* tan(Inf or NaN) is NaN */
+ else if (ix>=0x7f800000) {
+ if (ix==0x7f800000)
+ __set_errno (EDOM);
+ return x-x; /* NaN */
+ }
+
+ /* argument reduction needed */
+ else {
+ n = __ieee754_rem_pio2f(x,y);
+ return __kernel_tanf(y[0],y[1],1-((n&1)<<1)); /* 1 -- n even
+ -1 -- n odd */
+ }
+}
+weak_alias (__tanf, tanf)
diff --git a/REORG.TODO/sysdeps/ieee754/flt-32/s_tanhf.c b/REORG.TODO/sysdeps/ieee754/flt-32/s_tanhf.c
new file mode 100644
index 0000000000..f70702b29c
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/flt-32/s_tanhf.c
@@ -0,0 +1,62 @@
+/* s_tanhf.c -- float version of s_tanh.c.
+ * Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: s_tanhf.c,v 1.4 1995/05/10 20:48:24 jtc Exp $";
+#endif
+
+#include <float.h>
+#include <math.h>
+#include <math_private.h>
+
+static const float one=1.0, two=2.0, tiny = 1.0e-30;
+
+float __tanhf(float x)
+{
+ float t,z;
+ int32_t jx,ix;
+
+ GET_FLOAT_WORD(jx,x);
+ ix = jx&0x7fffffff;
+
+ /* x is INF or NaN */
+ if(ix>=0x7f800000) {
+ if (jx>=0) return one/x+one; /* tanh(+-inf)=+-1 */
+ else return one/x-one; /* tanh(NaN) = NaN */
+ }
+
+ /* |x| < 22 */
+ if (ix < 0x41b00000) { /* |x|<22 */
+ if (ix == 0)
+ return x; /* x == +-0 */
+ if (ix<0x24000000) /* |x|<2**-55 */
+ {
+ math_check_force_underflow (x);
+ return x*(one+x); /* tanh(small) = small */
+ }
+ if (ix>=0x3f800000) { /* |x|>=1 */
+ t = __expm1f(two*fabsf(x));
+ z = one - two/(t+two);
+ } else {
+ t = __expm1f(-two*fabsf(x));
+ z= -t/(t+two);
+ }
+ /* |x| > 22, return +-1 */
+ } else {
+ z = one - tiny; /* raised inexact flag */
+ }
+ return (jx>=0)? z: -z;
+}
+weak_alias (__tanhf, tanhf)
diff --git a/REORG.TODO/sysdeps/ieee754/flt-32/s_totalorderf.c b/REORG.TODO/sysdeps/ieee754/flt-32/s_totalorderf.c
new file mode 100644
index 0000000000..f592b051db
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/flt-32/s_totalorderf.c
@@ -0,0 +1,46 @@
+/* Total order operation. flt-32 version.
+ Copyright (C) 2016-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+#include <math_private.h>
+#include <nan-high-order-bit.h>
+#include <stdint.h>
+
+int
+totalorderf (float x, float y)
+{
+ int32_t ix, iy;
+ GET_FLOAT_WORD (ix, x);
+ GET_FLOAT_WORD (iy, y);
+#if HIGH_ORDER_BIT_IS_SET_FOR_SNAN
+ /* For the preferred quiet NaN convention, this operation is a
+ comparison of the representations of the arguments interpreted as
+ sign-magnitude integers. If both arguments are NaNs, invert the
+ quiet/signaling bit so comparing that way works. */
+ if ((ix & 0x7fffffff) > 0x7f800000 && (iy & 0x7fffffff) > 0x7f800000)
+ {
+ ix ^= 0x00400000;
+ iy ^= 0x00400000;
+ }
+#endif
+ uint32_t ix_sign = ix >> 31;
+ uint32_t iy_sign = iy >> 31;
+ ix ^= ix_sign >> 1;
+ iy ^= iy_sign >> 1;
+ return ix <= iy;
+}
diff --git a/REORG.TODO/sysdeps/ieee754/flt-32/s_totalordermagf.c b/REORG.TODO/sysdeps/ieee754/flt-32/s_totalordermagf.c
new file mode 100644
index 0000000000..cac7601e12
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/flt-32/s_totalordermagf.c
@@ -0,0 +1,44 @@
+/* Total order operation on absolute values. flt-32 version.
+ Copyright (C) 2016-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+#include <math_private.h>
+#include <nan-high-order-bit.h>
+#include <stdint.h>
+
+int
+totalordermagf (float x, float y)
+{
+ uint32_t ix, iy;
+ GET_FLOAT_WORD (ix, x);
+ GET_FLOAT_WORD (iy, y);
+ ix &= 0x7fffffff;
+ iy &= 0x7fffffff;
+#if HIGH_ORDER_BIT_IS_SET_FOR_SNAN
+ /* For the preferred quiet NaN convention, this operation is a
+ comparison of the representations of the absolute values of the
+ arguments. If both arguments are NaNs, invert the
+ quiet/signaling bit so comparing that way works. */
+ if (ix > 0x7f800000 && iy > 0x7f800000)
+ {
+ ix ^= 0x00400000;
+ iy ^= 0x00400000;
+ }
+#endif
+ return ix <= iy;
+}
diff --git a/REORG.TODO/sysdeps/ieee754/flt-32/s_truncf.c b/REORG.TODO/sysdeps/ieee754/flt-32/s_truncf.c
new file mode 100644
index 0000000000..2edb03c16f
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/flt-32/s_truncf.c
@@ -0,0 +1,53 @@
+/* Truncate argument to nearest integral value not larger than the argument.
+ Copyright (C) 1997-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+
+#include <math_private.h>
+
+
+float
+__truncf (float x)
+{
+ int32_t i0, j0;
+ int sx;
+
+ GET_FLOAT_WORD (i0, x);
+ sx = i0 & 0x80000000;
+ j0 = ((i0 >> 23) & 0xff) - 0x7f;
+ if (j0 < 23)
+ {
+ if (j0 < 0)
+ /* The magnitude of the number is < 1 so the result is +-0. */
+ SET_FLOAT_WORD (x, sx);
+ else
+ SET_FLOAT_WORD (x, sx | (i0 & ~(0x007fffff >> j0)));
+ }
+ else
+ {
+ if (j0 == 0x80)
+ /* x is inf or NaN. */
+ return x + x;
+ }
+
+ return x;
+}
+#ifndef __truncf
+weak_alias (__truncf, truncf)
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/flt-32/s_ufromfpf.c b/REORG.TODO/sysdeps/ieee754/flt-32/s_ufromfpf.c
new file mode 100644
index 0000000000..e6ffdf3374
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/flt-32/s_ufromfpf.c
@@ -0,0 +1,4 @@
+#define UNSIGNED 1
+#define INEXACT 0
+#define FUNC ufromfpf
+#include <s_fromfpf_main.c>
diff --git a/REORG.TODO/sysdeps/ieee754/flt-32/s_ufromfpxf.c b/REORG.TODO/sysdeps/ieee754/flt-32/s_ufromfpxf.c
new file mode 100644
index 0000000000..97aa6890f0
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/flt-32/s_ufromfpxf.c
@@ -0,0 +1,4 @@
+#define UNSIGNED 1
+#define INEXACT 1
+#define FUNC ufromfpxf
+#include <s_fromfpf_main.c>
diff --git a/REORG.TODO/sysdeps/ieee754/flt-32/t_exp2f.h b/REORG.TODO/sysdeps/ieee754/flt-32/t_exp2f.h
new file mode 100644
index 0000000000..aecabcc372
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/flt-32/t_exp2f.h
@@ -0,0 +1,351 @@
+/* Accurate tables for exp2f().
+ Copyright (C) 1998-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Geoffrey Keating <geoffk@ozemail.com.au>
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+/* This table has the property that, for all integers -128 <= i <= 127,
+ exp(i/256.0 + __exp2f_deltatable[i-128]) == __exp2f_atable[i+128] + r
+ for some -2^-35 < r < 2^-35 (abs(r) < 2^-36 if i <= 0); and that
+ __exp2f_deltatable[i+128] == t * 2^-30
+ for integer t so that abs(t) <= 43447 * 2^0. */
+
+#define W30 (9.31322575e-10)
+static const float __exp2f_deltatable[256] = {
+ -810*W30, 283*W30, -1514*W30, 1304*W30,
+ -1148*W30, -98*W30, -744*W30, -156*W30,
+ -419*W30, -155*W30, 474*W30, 167*W30,
+ -1984*W30, -826*W30, 692*W30, 781*W30,
+ -578*W30, -411*W30, -129*W30, -1500*W30,
+ 654*W30, -141*W30, -816*W30, -53*W30,
+ 148*W30, 493*W30, -2214*W30, 760*W30,
+ 260*W30, 750*W30, -1300*W30, 1424*W30,
+ -1445*W30, -339*W30, -680*W30, -349*W30,
+ -922*W30, 531*W30, 193*W30, -2892*W30,
+ 290*W30, -2145*W30, -276*W30, 485*W30,
+ -695*W30, 215*W30, -7093*W30, 412*W30,
+ -4596*W30, 367*W30, 592*W30, -615*W30,
+ -97*W30, -1066*W30, 972*W30, -226*W30,
+ -625*W30, -374*W30, -5647*W30, -180*W30,
+ 20349*W30, -447*W30, 111*W30, -4164*W30,
+ -87*W30, -21*W30, -251*W30, 66*W30,
+ -517*W30, 2093*W30, -263*W30, 182*W30,
+ -601*W30, 475*W30, -483*W30, -1251*W30,
+ -373*W30, 1471*W30, -92*W30, -215*W30,
+ -97*W30, -190*W30, 0*W30, -290*W30,
+ -2647*W30, 1940*W30, -582*W30, 28*W30,
+ 833*W30, 1493*W30, 34*W30, 321*W30,
+ 3327*W30, -35*W30, 177*W30, -135*W30,
+ -796*W30, -428*W30, 129*W30, 9332*W30,
+ -12*W30, -69*W30, -1743*W30, 6508*W30,
+ -60*W30, 359*W30, 43447*W30, 15*W30,
+ -23*W30, -305*W30, -375*W30, -652*W30,
+ 667*W30, 269*W30, -1575*W30, 185*W30,
+ -329*W30, 200*W30, 6002*W30, 163*W30,
+ -647*W30, 19*W30, -603*W30, -755*W30,
+ 742*W30, -438*W30, 3587*W30, 2560*W30,
+ 0*W30, -520*W30, -241*W30, -299*W30,
+ -1270*W30, -991*W30, -1138*W30, 255*W30,
+ -1192*W30, 1722*W30, 1023*W30, 3700*W30,
+ -1388*W30, -1551*W30, -2549*W30, 27*W30,
+ 282*W30, 673*W30, 113*W30, 1561*W30,
+ 72*W30, 873*W30, 87*W30, -395*W30,
+ -433*W30, 629*W30, 3440*W30, -284*W30,
+ -592*W30, -103*W30, -46*W30, -3844*W30,
+ 1712*W30, 303*W30, 1555*W30, -631*W30,
+ -1400*W30, -961*W30, -854*W30, -276*W30,
+ 407*W30, 833*W30, -345*W30, -1501*W30,
+ 121*W30, -1581*W30, 400*W30, 150*W30,
+ 1224*W30, -139*W30, -563*W30, 879*W30,
+ 933*W30, 2939*W30, 788*W30, 211*W30,
+ 530*W30, -192*W30, 706*W30, -13347*W30,
+ 1065*W30, 3*W30, 111*W30, -208*W30,
+ -360*W30, -532*W30, -291*W30, 483*W30,
+ 987*W30, -33*W30, -1373*W30, -166*W30,
+ -1174*W30, -3955*W30, 1601*W30, -280*W30,
+ 1405*W30, 600*W30, -1659*W30, -23*W30,
+ 390*W30, 449*W30, 570*W30, -13143*W30,
+ -9*W30, -1646*W30, 1201*W30, 294*W30,
+ 2181*W30, -1173*W30, 1388*W30, -4504*W30,
+ 190*W30, -2304*W30, 211*W30, 239*W30,
+ 48*W30, -817*W30, 1018*W30, 1828*W30,
+ -663*W30, 1408*W30, 408*W30, -36*W30,
+ 1295*W30, -230*W30, 1341*W30, 9*W30,
+ 40*W30, 705*W30, 186*W30, 376*W30,
+ 557*W30, 5866*W30, 363*W30, -1558*W30,
+ 718*W30, 669*W30, 1369*W30, -2972*W30,
+ -468*W30, -121*W30, -219*W30, 667*W30,
+ 29954*W30, 366*W30, 48*W30, -203*W30
+};
+
+static const float __exp2f_atable[256] /* __attribute__((mode(SF))) */ = {
+ 0.707106411447, /* 0x0.b504ecfff */
+ 0.709024071690, /* 0x0.b58299fff */
+ 0.710945606239, /* 0x0.b60088000 */
+ 0.712874472142, /* 0x0.b67ef1000 */
+ 0.714806139464, /* 0x0.b6fd88fff */
+ 0.716744661340, /* 0x0.b77c94000 */
+ 0.718687653549, /* 0x0.b7fbea000 */
+ 0.720636486992, /* 0x0.b87ba1fff */
+ 0.722590208040, /* 0x0.b8fbabfff */
+ 0.724549472323, /* 0x0.b97c12fff */
+ 0.726514220228, /* 0x0.b9fcd5fff */
+ 0.728483855735, /* 0x0.ba7deb000 */
+ 0.730457961549, /* 0x0.baff4afff */
+ 0.732438981522, /* 0x0.bb811efff */
+ 0.734425544748, /* 0x0.bc0350000 */
+ 0.736416816713, /* 0x0.bc85d0000 */
+ 0.738412797450, /* 0x0.bd089efff */
+ 0.740414917465, /* 0x0.bd8bd4fff */
+ 0.742422521111, /* 0x0.be0f66fff */
+ 0.744434773914, /* 0x0.be9346fff */
+ 0.746454179287, /* 0x0.bf179f000 */
+ 0.748477637755, /* 0x0.bf9c3afff */
+ 0.750506639473, /* 0x0.c02133fff */
+ 0.752541840064, /* 0x0.c0a694fff */
+ 0.754582285889, /* 0x0.c12c4e000 */
+ 0.756628334525, /* 0x0.c1b265000 */
+ 0.758678436269, /* 0x0.c238bffff */
+ 0.760736882681, /* 0x0.c2bfa6fff */
+ 0.762799203401, /* 0x0.c346cf000 */
+ 0.764867603790, /* 0x0.c3ce5d000 */
+ 0.766940355298, /* 0x0.c45633fff */
+ 0.769021093841, /* 0x0.c4de90fff */
+ 0.771104693409, /* 0x0.c5671dfff */
+ 0.773195922364, /* 0x0.c5f02afff */
+ 0.775292098512, /* 0x0.c6798afff */
+ 0.777394294745, /* 0x0.c70350000 */
+ 0.779501736166, /* 0x0.c78d6d000 */
+ 0.781615912910, /* 0x0.c817fafff */
+ 0.783734917628, /* 0x0.c8a2d9fff */
+ 0.785858273516, /* 0x0.c92e02000 */
+ 0.787990570071, /* 0x0.c9b9c0000 */
+ 0.790125787245, /* 0x0.ca45aefff */
+ 0.792268991467, /* 0x0.cad223fff */
+ 0.794417440881, /* 0x0.cb5ef0fff */
+ 0.796570718287, /* 0x0.cbec0efff */
+ 0.798730909811, /* 0x0.cc79a0fff */
+ 0.800892710672, /* 0x0.cd074dfff */
+ 0.803068041795, /* 0x0.cd95ddfff */
+ 0.805242776881, /* 0x0.ce2464000 */
+ 0.807428598393, /* 0x0.ceb3a3fff */
+ 0.809617877002, /* 0x0.cf431dfff */
+ 0.811812341211, /* 0x0.cfd2eefff */
+ 0.814013659956, /* 0x0.d06333000 */
+ 0.816220164311, /* 0x0.d0f3ce000 */
+ 0.818434238424, /* 0x0.d184e7fff */
+ 0.820652604094, /* 0x0.d21649fff */
+ 0.822877407074, /* 0x0.d2a818000 */
+ 0.825108587751, /* 0x0.d33a51000 */
+ 0.827342867839, /* 0x0.d3ccbdfff */
+ 0.829588949684, /* 0x0.d45ff1000 */
+ 0.831849217401, /* 0x0.d4f411fff */
+ 0.834093391880, /* 0x0.d58724fff */
+ 0.836355149750, /* 0x0.d61b5f000 */
+ 0.838620424257, /* 0x0.d6afd3fff */
+ 0.840896368027, /* 0x0.d744fc000 */
+ 0.843176305293, /* 0x0.d7da66fff */
+ 0.845462262643, /* 0x0.d87037000 */
+ 0.847754716864, /* 0x0.d90673fff */
+ 0.850052893157, /* 0x0.d99d10fff */
+ 0.852359056469, /* 0x0.da3433fff */
+ 0.854668736446, /* 0x0.dacb91fff */
+ 0.856986224651, /* 0x0.db6373000 */
+ 0.859309315673, /* 0x0.dbfbb1fff */
+ 0.861639738080, /* 0x0.dc946bfff */
+ 0.863975346095, /* 0x0.dd2d7d000 */
+ 0.866317391394, /* 0x0.ddc6f9fff */
+ 0.868666708472, /* 0x0.de60f1000 */
+ 0.871022939695, /* 0x0.defb5c000 */
+ 0.873383641229, /* 0x0.df9611fff */
+ 0.875751554968, /* 0x0.e03141000 */
+ 0.878126025200, /* 0x0.e0ccde000 */
+ 0.880506813521, /* 0x0.e168e4fff */
+ 0.882894217966, /* 0x0.e2055afff */
+ 0.885287821299, /* 0x0.e2a239000 */
+ 0.887686729423, /* 0x0.e33f6ffff */
+ 0.890096127973, /* 0x0.e3dd56fff */
+ 0.892507970338, /* 0x0.e47b67000 */
+ 0.894928157336, /* 0x0.e51a03000 */
+ 0.897355020043, /* 0x0.e5b90efff */
+ 0.899788379682, /* 0x0.e65888000 */
+ 0.902227103705, /* 0x0.e6f85afff */
+ 0.904673457151, /* 0x0.e798ae000 */
+ 0.907128036008, /* 0x0.e8398afff */
+ 0.909585535528, /* 0x0.e8da99000 */
+ 0.912051796915, /* 0x0.e97c3a000 */
+ 0.914524436003, /* 0x0.ea1e46000 */
+ 0.917003571999, /* 0x0.eac0bf000 */
+ 0.919490039339, /* 0x0.eb63b2fff */
+ 0.921983361257, /* 0x0.ec071a000 */
+ 0.924488604054, /* 0x0.ecab48fff */
+ 0.926989555360, /* 0x0.ed4f30000 */
+ 0.929502844812, /* 0x0.edf3e6000 */
+ 0.932021975503, /* 0x0.ee98fdfff */
+ 0.934553921208, /* 0x0.ef3eecfff */
+ 0.937083780759, /* 0x0.efe4b8fff */
+ 0.939624726786, /* 0x0.f08b3f000 */
+ 0.942198514924, /* 0x0.f133ebfff */
+ 0.944726586343, /* 0x0.f1d99a000 */
+ 0.947287976728, /* 0x0.f28176fff */
+ 0.949856162070, /* 0x0.f329c5fff */
+ 0.952431440345, /* 0x0.f3d28bfff */
+ 0.955013573175, /* 0x0.f47bc5000 */
+ 0.957603693021, /* 0x0.f52584000 */
+ 0.960199773321, /* 0x0.f5cfa7000 */
+ 0.962801992906, /* 0x0.f67a31000 */
+ 0.965413510788, /* 0x0.f72556fff */
+ 0.968030691152, /* 0x0.f7d0dc000 */
+ 0.970655620084, /* 0x0.f87ce2fff */
+ 0.973290979849, /* 0x0.f92998fff */
+ 0.975926160805, /* 0x0.f9d64bfff */
+ 0.978571653370, /* 0x0.fa83ac000 */
+ 0.981225252139, /* 0x0.fb3193fff */
+ 0.983885228626, /* 0x0.fbdfe6fff */
+ 0.986552715296, /* 0x0.fc8eb7fff */
+ 0.989228487027, /* 0x0.fd3e14000 */
+ 0.991909801964, /* 0x0.fdedcd000 */
+ 0.994601726545, /* 0x0.fe9e38000 */
+ 0.997297704209, /* 0x0.ff4ee6fff */
+ 1.000000000000, /* 0x1.000000000 */
+ 1.002710938457, /* 0x1.00b1aa000 */
+ 1.005429744692, /* 0x1.0163d7ffe */
+ 1.008155703526, /* 0x1.02167dffe */
+ 1.010888457284, /* 0x1.02c995fff */
+ 1.013629436498, /* 0x1.037d38000 */
+ 1.016377568250, /* 0x1.043152000 */
+ 1.019134163841, /* 0x1.04e5f9ffe */
+ 1.021896362316, /* 0x1.059b00000 */
+ 1.024668931945, /* 0x1.0650b3ffe */
+ 1.027446627635, /* 0x1.0706be001 */
+ 1.030234098408, /* 0x1.07bd6bffe */
+ 1.033023953416, /* 0x1.087441ffe */
+ 1.035824656494, /* 0x1.092bce000 */
+ 1.038632392900, /* 0x1.09e3d0001 */
+ 1.041450142840, /* 0x1.0a9c79ffe */
+ 1.044273972530, /* 0x1.0b558a001 */
+ 1.047105550795, /* 0x1.0c0f1c001 */
+ 1.049944162390, /* 0x1.0cc924001 */
+ 1.052791833895, /* 0x1.0d83c4001 */
+ 1.055645227426, /* 0x1.0e3ec3fff */
+ 1.058507919326, /* 0x1.0efa60001 */
+ 1.061377286898, /* 0x1.0fb66bfff */
+ 1.064254641510, /* 0x1.1072fdffe */
+ 1.067140102389, /* 0x1.113018000 */
+ 1.070034146304, /* 0x1.11edc1fff */
+ 1.072937250162, /* 0x1.12ac04001 */
+ 1.075843691823, /* 0x1.136a7dfff */
+ 1.078760385496, /* 0x1.1429a3ffe */
+ 1.081685543070, /* 0x1.14e958000 */
+ 1.084618330005, /* 0x1.15a98c000 */
+ 1.087556362176, /* 0x1.166a18001 */
+ 1.090508937863, /* 0x1.172b98001 */
+ 1.093464612954, /* 0x1.17ed4bfff */
+ 1.096430182434, /* 0x1.18afa5ffe */
+ 1.099401354802, /* 0x1.19725e000 */
+ 1.102381587017, /* 0x1.1a35adfff */
+ 1.105370759965, /* 0x1.1af994000 */
+ 1.108367800686, /* 0x1.1bbdfdffe */
+ 1.111373305331, /* 0x1.1c82f6000 */
+ 1.114387035385, /* 0x1.1d4878001 */
+ 1.117408752440, /* 0x1.1e0e7ffff */
+ 1.120437502874, /* 0x1.1ed4fe000 */
+ 1.123474478729, /* 0x1.1f9c06000 */
+ 1.126521706601, /* 0x1.2063ba001 */
+ 1.129574775716, /* 0x1.212bd0001 */
+ 1.132638812065, /* 0x1.21f49e000 */
+ 1.135709524130, /* 0x1.22bddbffe */
+ 1.138789534565, /* 0x1.2387b5fff */
+ 1.141876101508, /* 0x1.2451fe000 */
+ 1.144971728301, /* 0x1.251cddffe */
+ 1.148077130296, /* 0x1.25e861ffe */
+ 1.151189923305, /* 0x1.26b462001 */
+ 1.154312610610, /* 0x1.278107ffe */
+ 1.157440662410, /* 0x1.284e08001 */
+ 1.160578370109, /* 0x1.291baa001 */
+ 1.163725256932, /* 0x1.29e9e6000 */
+ 1.166879892324, /* 0x1.2ab8a3ffe */
+ 1.170044302935, /* 0x1.2b8805fff */
+ 1.173205971694, /* 0x1.2c5739ffe */
+ 1.176397800428, /* 0x1.2d2867ffe */
+ 1.179586529747, /* 0x1.2df962001 */
+ 1.182784795737, /* 0x1.2ecafbffe */
+ 1.185991406414, /* 0x1.2f9d21ffe */
+ 1.189206838636, /* 0x1.306fdc001 */
+ 1.192430973067, /* 0x1.314328000 */
+ 1.195664167430, /* 0x1.32170c001 */
+ 1.198906540890, /* 0x1.32eb8a001 */
+ 1.202157497408, /* 0x1.33c098000 */
+ 1.205416083326, /* 0x1.349625fff */
+ 1.208683252332, /* 0x1.356c43fff */
+ 1.211961269402, /* 0x1.364318001 */
+ 1.215246438983, /* 0x1.371a64000 */
+ 1.218539118740, /* 0x1.37f22dffe */
+ 1.221847295770, /* 0x1.38cafc000 */
+ 1.225158572187, /* 0x1.39a3fdfff */
+ 1.228481650325, /* 0x1.3a7dc5ffe */
+ 1.231811761846, /* 0x1.3b5803fff */
+ 1.235149741144, /* 0x1.3c32c5ffe */
+ 1.238499879811, /* 0x1.3d0e53ffe */
+ 1.241858124726, /* 0x1.3dea69fff */
+ 1.245225191102, /* 0x1.3ec713fff */
+ 1.248601436624, /* 0x1.3fa458000 */
+ 1.251975655584, /* 0x1.40817a001 */
+ 1.255380749731, /* 0x1.4160a2001 */
+ 1.258783102010, /* 0x1.423f9bffe */
+ 1.262198328973, /* 0x1.431f6e000 */
+ 1.265619754780, /* 0x1.43ffa7fff */
+ 1.269052743928, /* 0x1.44e0a4001 */
+ 1.272490739830, /* 0x1.45c1f4000 */
+ 1.275942921659, /* 0x1.46a432001 */
+ 1.279397487615, /* 0x1.478697ffe */
+ 1.282870173427, /* 0x1.486a2dffe */
+ 1.286346316319, /* 0x1.494dfdffe */
+ 1.289836049094, /* 0x1.4a32b2001 */
+ 1.293333172770, /* 0x1.4b17e1ffe */
+ 1.296839594835, /* 0x1.4bfdadfff */
+ 1.300354957560, /* 0x1.4ce40fffe */
+ 1.303882122055, /* 0x1.4dcb38001 */
+ 1.307417988757, /* 0x1.4eb2f1ffe */
+ 1.310960650439, /* 0x1.4f9b1dfff */
+ 1.314516782746, /* 0x1.50842bfff */
+ 1.318079948424, /* 0x1.516daffff */
+ 1.321653246888, /* 0x1.5257de000 */
+ 1.325237751030, /* 0x1.5342c8001 */
+ 1.328829526907, /* 0x1.542e2c000 */
+ 1.332433700535, /* 0x1.551a5fffe */
+ 1.336045145966, /* 0x1.56070dffe */
+ 1.339667558645, /* 0x1.56f473ffe */
+ 1.343300342533, /* 0x1.57e287ffe */
+ 1.346941947961, /* 0x1.58d130001 */
+ 1.350594043714, /* 0x1.59c087ffe */
+ 1.354256033883, /* 0x1.5ab085fff */
+ 1.357932448365, /* 0x1.5ba175ffe */
+ 1.361609339707, /* 0x1.5c926dfff */
+ 1.365299344044, /* 0x1.5d8441ffe */
+ 1.369003057507, /* 0x1.5e76fc001 */
+ 1.372714757920, /* 0x1.5f6a3c000 */
+ 1.376437187179, /* 0x1.605e2fffe */
+ 1.380165219333, /* 0x1.615282001 */
+ 1.383909463864, /* 0x1.6247e3ffe */
+ 1.387661933907, /* 0x1.633dd0000 */
+ 1.391424179060, /* 0x1.64345fffe */
+ 1.395197510706, /* 0x1.652ba9fff */
+ 1.399006724329, /* 0x1.66254dffe */
+ 1.402773022651, /* 0x1.671c22000 */
+ 1.406576037403, /* 0x1.68155dfff */
+ 1.410389423392, /* 0x1.690f48001 */
+};
diff --git a/REORG.TODO/sysdeps/ieee754/flt-32/w_expf_compat.c b/REORG.TODO/sysdeps/ieee754/flt-32/w_expf_compat.c
new file mode 100644
index 0000000000..b2be6aa7e1
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/flt-32/w_expf_compat.c
@@ -0,0 +1,34 @@
+/* Copyright (C) 2011-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@gmail.com>, 2011.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+#include <math_private.h>
+
+/* wrapper expf */
+float
+__expf (float x)
+{
+ float z = __ieee754_expf (x);
+ if (__builtin_expect (!isfinite (z) || z == 0, 0)
+ && isfinite (x) && _LIB_VERSION != _IEEE_)
+ return __kernel_standard_f (x, x, 106 + !!signbit (x));
+
+ return z;
+}
+hidden_def (__expf)
+weak_alias (__expf, expf)
diff --git a/REORG.TODO/sysdeps/ieee754/ieee754.h b/REORG.TODO/sysdeps/ieee754/ieee754.h
new file mode 100644
index 0000000000..5c00d6377a
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ieee754.h
@@ -0,0 +1,198 @@
+/* Copyright (C) 1992-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#ifndef _IEEE754_H
+
+#define _IEEE754_H 1
+#include <features.h>
+
+#include <endian.h>
+
+__BEGIN_DECLS
+
+union ieee754_float
+ {
+ float f;
+
+ /* This is the IEEE 754 single-precision format. */
+ struct
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN
+ unsigned int negative:1;
+ unsigned int exponent:8;
+ unsigned int mantissa:23;
+#endif /* Big endian. */
+#if __BYTE_ORDER == __LITTLE_ENDIAN
+ unsigned int mantissa:23;
+ unsigned int exponent:8;
+ unsigned int negative:1;
+#endif /* Little endian. */
+ } ieee;
+
+ /* This format makes it easier to see if a NaN is a signalling NaN. */
+ struct
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN
+ unsigned int negative:1;
+ unsigned int exponent:8;
+ unsigned int quiet_nan:1;
+ unsigned int mantissa:22;
+#endif /* Big endian. */
+#if __BYTE_ORDER == __LITTLE_ENDIAN
+ unsigned int mantissa:22;
+ unsigned int quiet_nan:1;
+ unsigned int exponent:8;
+ unsigned int negative:1;
+#endif /* Little endian. */
+ } ieee_nan;
+ };
+
+#define IEEE754_FLOAT_BIAS 0x7f /* Added to exponent. */
+
+
+union ieee754_double
+ {
+ double d;
+
+ /* This is the IEEE 754 double-precision format. */
+ struct
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN
+ unsigned int negative:1;
+ unsigned int exponent:11;
+ /* Together these comprise the mantissa. */
+ unsigned int mantissa0:20;
+ unsigned int mantissa1:32;
+#endif /* Big endian. */
+#if __BYTE_ORDER == __LITTLE_ENDIAN
+# if __FLOAT_WORD_ORDER == __BIG_ENDIAN
+ unsigned int mantissa0:20;
+ unsigned int exponent:11;
+ unsigned int negative:1;
+ unsigned int mantissa1:32;
+# else
+ /* Together these comprise the mantissa. */
+ unsigned int mantissa1:32;
+ unsigned int mantissa0:20;
+ unsigned int exponent:11;
+ unsigned int negative:1;
+# endif
+#endif /* Little endian. */
+ } ieee;
+
+ /* This format makes it easier to see if a NaN is a signalling NaN. */
+ struct
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN
+ unsigned int negative:1;
+ unsigned int exponent:11;
+ unsigned int quiet_nan:1;
+ /* Together these comprise the mantissa. */
+ unsigned int mantissa0:19;
+ unsigned int mantissa1:32;
+#else
+# if __FLOAT_WORD_ORDER == __BIG_ENDIAN
+ unsigned int mantissa0:19;
+ unsigned int quiet_nan:1;
+ unsigned int exponent:11;
+ unsigned int negative:1;
+ unsigned int mantissa1:32;
+# else
+ /* Together these comprise the mantissa. */
+ unsigned int mantissa1:32;
+ unsigned int mantissa0:19;
+ unsigned int quiet_nan:1;
+ unsigned int exponent:11;
+ unsigned int negative:1;
+# endif
+#endif
+ } ieee_nan;
+ };
+
+#define IEEE754_DOUBLE_BIAS 0x3ff /* Added to exponent. */
+
+
+union ieee854_long_double
+ {
+ long double d;
+
+ /* This is the IEEE 854 double-extended-precision format. */
+ struct
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN
+ unsigned int negative:1;
+ unsigned int exponent:15;
+ unsigned int empty:16;
+ unsigned int mantissa0:32;
+ unsigned int mantissa1:32;
+#endif
+#if __BYTE_ORDER == __LITTLE_ENDIAN
+# if __FLOAT_WORD_ORDER == __BIG_ENDIAN
+ unsigned int exponent:15;
+ unsigned int negative:1;
+ unsigned int empty:16;
+ unsigned int mantissa0:32;
+ unsigned int mantissa1:32;
+# else
+ unsigned int mantissa1:32;
+ unsigned int mantissa0:32;
+ unsigned int exponent:15;
+ unsigned int negative:1;
+ unsigned int empty:16;
+# endif
+#endif
+ } ieee;
+
+ /* This is for NaNs in the IEEE 854 double-extended-precision format. */
+ struct
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN
+ unsigned int negative:1;
+ unsigned int exponent:15;
+ unsigned int empty:16;
+ unsigned int one:1;
+ unsigned int quiet_nan:1;
+ unsigned int mantissa0:30;
+ unsigned int mantissa1:32;
+#endif
+#if __BYTE_ORDER == __LITTLE_ENDIAN
+# if __FLOAT_WORD_ORDER == __BIG_ENDIAN
+ unsigned int exponent:15;
+ unsigned int negative:1;
+ unsigned int empty:16;
+ unsigned int mantissa0:30;
+ unsigned int quiet_nan:1;
+ unsigned int one:1;
+ unsigned int mantissa1:32;
+# else
+ unsigned int mantissa1:32;
+ unsigned int mantissa0:30;
+ unsigned int quiet_nan:1;
+ unsigned int one:1;
+ unsigned int exponent:15;
+ unsigned int negative:1;
+ unsigned int empty:16;
+# endif
+#endif
+ } ieee_nan;
+ };
+
+#define IEEE854_LONG_DOUBLE_BIAS 0x3fff
+
+__END_DECLS
+
+#endif /* ieee754.h */
diff --git a/REORG.TODO/sysdeps/ieee754/k_standard.c b/REORG.TODO/sysdeps/ieee754/k_standard.c
new file mode 100644
index 0000000000..b100b3e351
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/k_standard.c
@@ -0,0 +1,943 @@
+/* @(#)k_standard.c 5.1 93/09/24 */
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: k_standard.c,v 1.6 1995/05/10 20:46:35 jtc Exp $";
+#endif
+
+#include <math.h>
+#include <math_private.h>
+#include <errno.h>
+
+#include <assert.h>
+
+#ifndef _USE_WRITE
+#include <stdio.h> /* fputs(), stderr */
+#define WRITE2(u,v) fputs(u, stderr)
+#else /* !defined(_USE_WRITE) */
+#include <unistd.h> /* write */
+#define WRITE2(u,v) write(2, u, v)
+#undef fflush
+#endif /* !defined(_USE_WRITE) */
+
+/* XXX gcc versions until now don't delay the 0.0/0.0 division until
+ runtime but produce NaN at compile time. This is wrong since the
+ exceptions are not set correctly. */
+#if 0
+static const double zero = 0.0; /* used as const */
+#else
+static double zero = 0.0; /* used as const */
+#endif
+
+/*
+ * Standard conformance (non-IEEE) on exception cases.
+ * Mapping:
+ * 1 -- acos(|x|>1)
+ * 2 -- asin(|x|>1)
+ * 3 -- atan2(+-0,+-0)
+ * 4 -- hypot overflow
+ * 5 -- cosh overflow
+ * 6 -- exp overflow
+ * 7 -- exp underflow
+ * 8 -- y0(0)
+ * 9 -- y0(-ve)
+ * 10-- y1(0)
+ * 11-- y1(-ve)
+ * 12-- yn(0)
+ * 13-- yn(-ve)
+ * 14-- lgamma(finite) overflow
+ * 15-- lgamma(-integer)
+ * 16-- log(0)
+ * 17-- log(x<0)
+ * 18-- log10(0)
+ * 19-- log10(x<0)
+ * 21-- pow(x,y) overflow
+ * 22-- pow(x,y) underflow
+ * 23-- pow(0,negative)
+ * 24-- pow(neg,non-integral)
+ * 25-- sinh(finite) overflow
+ * 26-- sqrt(negative)
+ * 27-- fmod(x,0)
+ * 28-- remainder(x,0)
+ * 29-- acosh(x<1)
+ * 30-- atanh(|x|>1)
+ * 31-- atanh(|x|=1)
+ * 32-- scalb overflow
+ * 33-- scalb underflow
+ * 34-- j0(|x|>X_TLOSS)
+ * 35-- y0(x>X_TLOSS)
+ * 36-- j1(|x|>X_TLOSS)
+ * 37-- y1(x>X_TLOSS)
+ * 38-- jn(|x|>X_TLOSS, n)
+ * 39-- yn(x>X_TLOSS, n)
+ * 40-- tgamma(finite) overflow
+ * 41-- tgamma(-integer)
+ * 43-- +0**neg
+ * 44-- exp2 overflow
+ * 45-- exp2 underflow
+ * 46-- exp10 overflow
+ * 47-- exp10 underflow
+ * 48-- log2(0)
+ * 49-- log2(x<0)
+ * 50-- tgamma(+-0)
+ */
+
+
+double
+__kernel_standard(double x, double y, int type)
+{
+ struct exception exc;
+#ifndef HUGE_VAL /* this is the only routine that uses HUGE_VAL */
+#define HUGE_VAL inf
+ double inf = 0.0;
+
+ SET_HIGH_WORD(inf,0x7ff00000); /* set inf to infinite */
+#endif
+
+ /* The SVID struct exception uses a field "char *name;". */
+#define CSTR(func) ((char *) (type < 100 \
+ ? func \
+ : (type < 200 ? func "f" : func "l")))
+
+#ifdef _USE_WRITE
+ (void) fflush(stdout);
+#endif
+ exc.arg1 = x;
+ exc.arg2 = y;
+ switch(type) {
+ case 1:
+ case 101:
+ case 201:
+ /* acos(|x|>1) */
+ exc.type = DOMAIN;
+ exc.name = CSTR ("acos");
+ if (_LIB_VERSION == _SVID_)
+ exc.retval = HUGE;
+ else
+ exc.retval = NAN;
+ if (_LIB_VERSION == _POSIX_)
+ __set_errno (EDOM);
+ else if (!matherr(&exc)) {
+ if(_LIB_VERSION == _SVID_) {
+ (void) WRITE2("acos: DOMAIN error\n", 19);
+ }
+ __set_errno (EDOM);
+ }
+ break;
+ case 2:
+ case 102:
+ case 202:
+ /* asin(|x|>1) */
+ exc.type = DOMAIN;
+ exc.name = CSTR ("asin");
+ if (_LIB_VERSION == _SVID_)
+ exc.retval = HUGE;
+ else
+ exc.retval = NAN;
+ if(_LIB_VERSION == _POSIX_)
+ __set_errno (EDOM);
+ else if (!matherr(&exc)) {
+ if(_LIB_VERSION == _SVID_) {
+ (void) WRITE2("asin: DOMAIN error\n", 19);
+ }
+ __set_errno (EDOM);
+ }
+ break;
+ case 3:
+ case 103:
+ case 203:
+ /* atan2(+-0,+-0) */
+ exc.arg1 = y;
+ exc.arg2 = x;
+ exc.type = DOMAIN;
+ exc.name = CSTR ("atan2");
+ assert (_LIB_VERSION == _SVID_);
+ exc.retval = HUGE;
+ if(_LIB_VERSION == _POSIX_)
+ __set_errno (EDOM);
+ else if (!matherr(&exc)) {
+ if(_LIB_VERSION == _SVID_) {
+ (void) WRITE2("atan2: DOMAIN error\n", 20);
+ }
+ __set_errno (EDOM);
+ }
+ break;
+ case 4:
+ case 104:
+ case 204:
+ /* hypot(finite,finite) overflow */
+ exc.type = OVERFLOW;
+ exc.name = CSTR ("hypot");
+ if (_LIB_VERSION == _SVID_)
+ exc.retval = HUGE;
+ else
+ exc.retval = HUGE_VAL;
+ if (_LIB_VERSION == _POSIX_)
+ __set_errno (ERANGE);
+ else if (!matherr(&exc)) {
+ __set_errno (ERANGE);
+ }
+ break;
+ case 5:
+ case 105:
+ case 205:
+ /* cosh(finite) overflow */
+ exc.type = OVERFLOW;
+ exc.name = CSTR ("cosh");
+ if (_LIB_VERSION == _SVID_)
+ exc.retval = HUGE;
+ else
+ exc.retval = HUGE_VAL;
+ if (_LIB_VERSION == _POSIX_)
+ __set_errno (ERANGE);
+ else if (!matherr(&exc)) {
+ __set_errno (ERANGE);
+ }
+ break;
+ case 6:
+ case 106:
+ case 206:
+ /* exp(finite) overflow */
+ exc.type = OVERFLOW;
+ exc.name = CSTR ("exp");
+ if (_LIB_VERSION == _SVID_)
+ exc.retval = HUGE;
+ else
+ exc.retval = HUGE_VAL;
+ if (_LIB_VERSION == _POSIX_)
+ __set_errno (ERANGE);
+ else if (!matherr(&exc)) {
+ __set_errno (ERANGE);
+ }
+ break;
+ case 7:
+ case 107:
+ case 207:
+ /* exp(finite) underflow */
+ exc.type = UNDERFLOW;
+ exc.name = CSTR ("exp");
+ exc.retval = zero;
+ if (_LIB_VERSION == _POSIX_)
+ __set_errno (ERANGE);
+ else if (!matherr(&exc)) {
+ __set_errno (ERANGE);
+ }
+ break;
+ case 8:
+ case 108:
+ case 208:
+ /* y0(0) = -inf */
+ exc.type = DOMAIN; /* should be SING for IEEE */
+ exc.name = CSTR ("y0");
+ if (_LIB_VERSION == _SVID_)
+ exc.retval = -HUGE;
+ else
+ exc.retval = -HUGE_VAL;
+ if (_LIB_VERSION == _POSIX_)
+ __set_errno (ERANGE);
+ else if (!matherr(&exc)) {
+ if (_LIB_VERSION == _SVID_) {
+ (void) WRITE2("y0: DOMAIN error\n", 17);
+ }
+ __set_errno (EDOM);
+ }
+ break;
+ case 9:
+ case 109:
+ case 209:
+ /* y0(x<0) = NaN */
+ exc.type = DOMAIN;
+ exc.name = CSTR ("y0");
+ if (_LIB_VERSION == _SVID_)
+ exc.retval = -HUGE;
+ else
+ exc.retval = NAN;
+ if (_LIB_VERSION == _POSIX_)
+ __set_errno (EDOM);
+ else if (!matherr(&exc)) {
+ if (_LIB_VERSION == _SVID_) {
+ (void) WRITE2("y0: DOMAIN error\n", 17);
+ }
+ __set_errno (EDOM);
+ }
+ break;
+ case 10:
+ case 110:
+ case 210:
+ /* y1(0) = -inf */
+ exc.type = DOMAIN; /* should be SING for IEEE */
+ exc.name = CSTR ("y1");
+ if (_LIB_VERSION == _SVID_)
+ exc.retval = -HUGE;
+ else
+ exc.retval = -HUGE_VAL;
+ if (_LIB_VERSION == _POSIX_)
+ __set_errno (ERANGE);
+ else if (!matherr(&exc)) {
+ if (_LIB_VERSION == _SVID_) {
+ (void) WRITE2("y1: DOMAIN error\n", 17);
+ }
+ __set_errno (EDOM);
+ }
+ break;
+ case 11:
+ case 111:
+ case 211:
+ /* y1(x<0) = NaN */
+ exc.type = DOMAIN;
+ exc.name = CSTR ("y1");
+ if (_LIB_VERSION == _SVID_)
+ exc.retval = -HUGE;
+ else
+ exc.retval = NAN;
+ if (_LIB_VERSION == _POSIX_)
+ __set_errno (EDOM);
+ else if (!matherr(&exc)) {
+ if (_LIB_VERSION == _SVID_) {
+ (void) WRITE2("y1: DOMAIN error\n", 17);
+ }
+ __set_errno (EDOM);
+ }
+ break;
+ case 12:
+ case 112:
+ case 212:
+ /* yn(n,0) = -inf */
+ exc.type = DOMAIN; /* should be SING for IEEE */
+ exc.name = CSTR ("yn");
+ if (_LIB_VERSION == _SVID_)
+ exc.retval = -HUGE;
+ else
+ exc.retval = ((x < 0 && ((int) x & 1) != 0)
+ ? HUGE_VAL
+ : -HUGE_VAL);
+ if (_LIB_VERSION == _POSIX_)
+ __set_errno (ERANGE);
+ else if (!matherr(&exc)) {
+ if (_LIB_VERSION == _SVID_) {
+ (void) WRITE2("yn: DOMAIN error\n", 17);
+ }
+ __set_errno (EDOM);
+ }
+ break;
+ case 13:
+ case 113:
+ case 213:
+ /* yn(x<0) = NaN */
+ exc.type = DOMAIN;
+ exc.name = CSTR ("yn");
+ if (_LIB_VERSION == _SVID_)
+ exc.retval = -HUGE;
+ else
+ exc.retval = NAN;
+ if (_LIB_VERSION == _POSIX_)
+ __set_errno (EDOM);
+ else if (!matherr(&exc)) {
+ if (_LIB_VERSION == _SVID_) {
+ (void) WRITE2("yn: DOMAIN error\n", 17);
+ }
+ __set_errno (EDOM);
+ }
+ break;
+ case 14:
+ case 114:
+ case 214:
+ /* lgamma(finite) overflow */
+ exc.type = OVERFLOW;
+ exc.name = CSTR ("lgamma");
+ if (_LIB_VERSION == _SVID_)
+ exc.retval = HUGE;
+ else
+ exc.retval = HUGE_VAL;
+ if (_LIB_VERSION == _POSIX_)
+ __set_errno (ERANGE);
+ else if (!matherr(&exc)) {
+ __set_errno (ERANGE);
+ }
+ break;
+ case 15:
+ case 115:
+ case 215:
+ /* lgamma(-integer) or lgamma(0) */
+ exc.type = SING;
+ exc.name = CSTR ("lgamma");
+ if (_LIB_VERSION == _SVID_)
+ exc.retval = HUGE;
+ else
+ exc.retval = HUGE_VAL;
+ if (_LIB_VERSION == _POSIX_)
+ __set_errno (ERANGE);
+ else if (!matherr(&exc)) {
+ if (_LIB_VERSION == _SVID_) {
+ (void) WRITE2("lgamma: SING error\n", 19);
+ }
+ __set_errno (EDOM);
+ }
+ break;
+ case 16:
+ case 116:
+ case 216:
+ /* log(0) */
+ exc.type = SING;
+ exc.name = CSTR ("log");
+ if (_LIB_VERSION == _SVID_)
+ exc.retval = -HUGE;
+ else
+ exc.retval = -HUGE_VAL;
+ if (_LIB_VERSION == _POSIX_)
+ __set_errno (ERANGE);
+ else if (!matherr(&exc)) {
+ if (_LIB_VERSION == _SVID_) {
+ (void) WRITE2("log: SING error\n", 16);
+ }
+ __set_errno (EDOM);
+ }
+ break;
+ case 17:
+ case 117:
+ case 217:
+ /* log(x<0) */
+ exc.type = DOMAIN;
+ exc.name = CSTR ("log");
+ if (_LIB_VERSION == _SVID_)
+ exc.retval = -HUGE;
+ else
+ exc.retval = NAN;
+ if (_LIB_VERSION == _POSIX_)
+ __set_errno (EDOM);
+ else if (!matherr(&exc)) {
+ if (_LIB_VERSION == _SVID_) {
+ (void) WRITE2("log: DOMAIN error\n", 18);
+ }
+ __set_errno (EDOM);
+ }
+ break;
+ case 18:
+ case 118:
+ case 218:
+ /* log10(0) */
+ exc.type = SING;
+ exc.name = CSTR ("log10");
+ if (_LIB_VERSION == _SVID_)
+ exc.retval = -HUGE;
+ else
+ exc.retval = -HUGE_VAL;
+ if (_LIB_VERSION == _POSIX_)
+ __set_errno (ERANGE);
+ else if (!matherr(&exc)) {
+ if (_LIB_VERSION == _SVID_) {
+ (void) WRITE2("log10: SING error\n", 18);
+ }
+ __set_errno (EDOM);
+ }
+ break;
+ case 19:
+ case 119:
+ case 219:
+ /* log10(x<0) */
+ exc.type = DOMAIN;
+ exc.name = CSTR ("log10");
+ if (_LIB_VERSION == _SVID_)
+ exc.retval = -HUGE;
+ else
+ exc.retval = NAN;
+ if (_LIB_VERSION == _POSIX_)
+ __set_errno (EDOM);
+ else if (!matherr(&exc)) {
+ if (_LIB_VERSION == _SVID_) {
+ (void) WRITE2("log10: DOMAIN error\n", 20);
+ }
+ __set_errno (EDOM);
+ }
+ break;
+ case 21:
+ case 121:
+ case 221:
+ /* pow(x,y) overflow */
+ exc.type = OVERFLOW;
+ exc.name = CSTR ("pow");
+ if (_LIB_VERSION == _SVID_) {
+ exc.retval = HUGE;
+ y *= 0.5;
+ if(x<zero&&__rint(y)!=y) exc.retval = -HUGE;
+ } else {
+ exc.retval = HUGE_VAL;
+ y *= 0.5;
+ if(x<zero&&__rint(y)!=y) exc.retval = -HUGE_VAL;
+ }
+ if (_LIB_VERSION == _POSIX_)
+ __set_errno (ERANGE);
+ else if (!matherr(&exc)) {
+ __set_errno (ERANGE);
+ }
+ break;
+ case 22:
+ case 122:
+ case 222:
+ /* pow(x,y) underflow */
+ exc.type = UNDERFLOW;
+ exc.name = CSTR ("pow");
+ exc.retval = zero;
+ y *= 0.5;
+ if (x < zero && __rint (y) != y)
+ exc.retval = -zero;
+ if (_LIB_VERSION == _POSIX_)
+ __set_errno (ERANGE);
+ else if (!matherr(&exc)) {
+ __set_errno (ERANGE);
+ }
+ break;
+ case 23:
+ case 123:
+ case 223:
+ /* -0**neg */
+ exc.type = DOMAIN;
+ exc.name = CSTR ("pow");
+ if (_LIB_VERSION == _SVID_)
+ exc.retval = zero;
+ else
+ exc.retval = -HUGE_VAL;
+ if (_LIB_VERSION == _POSIX_)
+ __set_errno (ERANGE);
+ else if (!matherr(&exc)) {
+ if (_LIB_VERSION == _SVID_) {
+ (void) WRITE2("pow(0,neg): DOMAIN error\n", 25);
+ }
+ __set_errno (EDOM);
+ }
+ break;
+ case 43:
+ case 143:
+ case 243:
+ /* +0**neg */
+ exc.type = DOMAIN;
+ exc.name = CSTR ("pow");
+ if (_LIB_VERSION == _SVID_)
+ exc.retval = zero;
+ else
+ exc.retval = HUGE_VAL;
+ if (_LIB_VERSION == _POSIX_)
+ __set_errno (ERANGE);
+ else if (!matherr(&exc)) {
+ if (_LIB_VERSION == _SVID_) {
+ (void) WRITE2("pow(0,neg): DOMAIN error\n", 25);
+ }
+ __set_errno (EDOM);
+ }
+ break;
+ case 24:
+ case 124:
+ case 224:
+ /* neg**non-integral */
+ exc.type = DOMAIN;
+ exc.name = CSTR ("pow");
+ if (_LIB_VERSION == _SVID_)
+ exc.retval = zero;
+ else
+ exc.retval = zero/zero; /* X/Open allow NaN */
+ if (_LIB_VERSION == _POSIX_)
+ __set_errno (EDOM);
+ else if (!matherr(&exc)) {
+ if (_LIB_VERSION == _SVID_) {
+ (void) WRITE2("neg**non-integral: DOMAIN error\n", 32);
+ }
+ __set_errno (EDOM);
+ }
+ break;
+ case 25:
+ case 125:
+ case 225:
+ /* sinh(finite) overflow */
+ exc.type = OVERFLOW;
+ exc.name = CSTR ("sinh");
+ if (_LIB_VERSION == _SVID_)
+ exc.retval = ( (x>zero) ? HUGE : -HUGE);
+ else
+ exc.retval = ( (x>zero) ? HUGE_VAL : -HUGE_VAL);
+ if (_LIB_VERSION == _POSIX_)
+ __set_errno (ERANGE);
+ else if (!matherr(&exc)) {
+ __set_errno (ERANGE);
+ }
+ break;
+ case 26:
+ case 126:
+ case 226:
+ /* sqrt(x<0) */
+ exc.type = DOMAIN;
+ exc.name = CSTR ("sqrt");
+ if (_LIB_VERSION == _SVID_)
+ exc.retval = zero;
+ else
+ exc.retval = zero/zero;
+ if (_LIB_VERSION == _POSIX_)
+ __set_errno (EDOM);
+ else if (!matherr(&exc)) {
+ if (_LIB_VERSION == _SVID_) {
+ (void) WRITE2("sqrt: DOMAIN error\n", 19);
+ }
+ __set_errno (EDOM);
+ }
+ break;
+ case 27:
+ case 127:
+ case 227:
+ /* fmod(x,0) */
+ exc.type = DOMAIN;
+ exc.name = CSTR ("fmod");
+ if (_LIB_VERSION == _SVID_)
+ exc.retval = x;
+ else
+ exc.retval = zero/zero;
+ if (_LIB_VERSION == _POSIX_)
+ __set_errno (EDOM);
+ else if (!matherr(&exc)) {
+ if (_LIB_VERSION == _SVID_) {
+ (void) WRITE2("fmod: DOMAIN error\n", 20);
+ }
+ __set_errno (EDOM);
+ }
+ break;
+ case 28:
+ case 128:
+ case 228:
+ /* remainder(x,0) */
+ exc.type = DOMAIN;
+ exc.name = CSTR ("remainder");
+ exc.retval = zero/zero;
+ if (_LIB_VERSION == _POSIX_)
+ __set_errno (EDOM);
+ else if (!matherr(&exc)) {
+ if (_LIB_VERSION == _SVID_) {
+ (void) WRITE2("remainder: DOMAIN error\n", 24);
+ }
+ __set_errno (EDOM);
+ }
+ break;
+ case 29:
+ case 129:
+ case 229:
+ /* acosh(x<1) */
+ exc.type = DOMAIN;
+ exc.name = CSTR ("acosh");
+ exc.retval = zero/zero;
+ if (_LIB_VERSION == _POSIX_)
+ __set_errno (EDOM);
+ else if (!matherr(&exc)) {
+ if (_LIB_VERSION == _SVID_) {
+ (void) WRITE2("acosh: DOMAIN error\n", 20);
+ }
+ __set_errno (EDOM);
+ }
+ break;
+ case 30:
+ case 130:
+ case 230:
+ /* atanh(|x|>1) */
+ exc.type = DOMAIN;
+ exc.name = CSTR ("atanh");
+ exc.retval = zero/zero;
+ if (_LIB_VERSION == _POSIX_)
+ __set_errno (EDOM);
+ else if (!matherr(&exc)) {
+ if (_LIB_VERSION == _SVID_) {
+ (void) WRITE2("atanh: DOMAIN error\n", 20);
+ }
+ __set_errno (EDOM);
+ }
+ break;
+ case 31:
+ case 131:
+ case 231:
+ /* atanh(|x|=1) */
+ exc.type = SING;
+ exc.name = CSTR ("atanh");
+ exc.retval = x/zero; /* sign(x)*inf */
+ if (_LIB_VERSION == _POSIX_)
+ __set_errno (ERANGE);
+ else if (!matherr(&exc)) {
+ if (_LIB_VERSION == _SVID_) {
+ (void) WRITE2("atanh: SING error\n", 18);
+ }
+ __set_errno (EDOM);
+ }
+ break;
+ case 32:
+ case 132:
+ case 232:
+ /* scalb overflow; SVID also returns +-HUGE_VAL */
+ exc.type = OVERFLOW;
+ exc.name = CSTR ("scalb");
+ exc.retval = x > zero ? HUGE_VAL : -HUGE_VAL;
+ if (_LIB_VERSION == _POSIX_)
+ __set_errno (ERANGE);
+ else if (!matherr(&exc)) {
+ __set_errno (ERANGE);
+ }
+ break;
+ case 33:
+ case 133:
+ case 233:
+ /* scalb underflow */
+ exc.type = UNDERFLOW;
+ exc.name = CSTR ("scalb");
+ exc.retval = __copysign(zero,x);
+ if (_LIB_VERSION == _POSIX_)
+ __set_errno (ERANGE);
+ else if (!matherr(&exc)) {
+ __set_errno (ERANGE);
+ }
+ break;
+ case 34:
+ case 134:
+ case 234:
+ /* j0(|x|>X_TLOSS) */
+ exc.type = TLOSS;
+ exc.name = CSTR ("j0");
+ exc.retval = zero;
+ if (_LIB_VERSION == _POSIX_)
+ __set_errno (ERANGE);
+ else if (!matherr(&exc)) {
+ if (_LIB_VERSION == _SVID_) {
+ (void) WRITE2(exc.name, 2);
+ (void) WRITE2(": TLOSS error\n", 14);
+ }
+ __set_errno (ERANGE);
+ }
+ break;
+ case 35:
+ case 135:
+ case 235:
+ /* y0(x>X_TLOSS) */
+ exc.type = TLOSS;
+ exc.name = CSTR ("y0");
+ exc.retval = zero;
+ if (_LIB_VERSION == _POSIX_)
+ __set_errno (ERANGE);
+ else if (!matherr(&exc)) {
+ if (_LIB_VERSION == _SVID_) {
+ (void) WRITE2(exc.name, 2);
+ (void) WRITE2(": TLOSS error\n", 14);
+ }
+ __set_errno (ERANGE);
+ }
+ break;
+ case 36:
+ case 136:
+ case 236:
+ /* j1(|x|>X_TLOSS) */
+ exc.type = TLOSS;
+ exc.name = CSTR ("j1");
+ exc.retval = zero;
+ if (_LIB_VERSION == _POSIX_)
+ __set_errno (ERANGE);
+ else if (!matherr(&exc)) {
+ if (_LIB_VERSION == _SVID_) {
+ (void) WRITE2(exc.name, 2);
+ (void) WRITE2(": TLOSS error\n", 14);
+ }
+ __set_errno (ERANGE);
+ }
+ break;
+ case 37:
+ case 137:
+ case 237:
+ /* y1(x>X_TLOSS) */
+ exc.type = TLOSS;
+ exc.name = CSTR ("y1");
+ exc.retval = zero;
+ if (_LIB_VERSION == _POSIX_)
+ __set_errno (ERANGE);
+ else if (!matherr(&exc)) {
+ if (_LIB_VERSION == _SVID_) {
+ (void) WRITE2(exc.name, 2);
+ (void) WRITE2(": TLOSS error\n", 14);
+ }
+ __set_errno (ERANGE);
+ }
+ break;
+ case 38:
+ case 138:
+ case 238:
+ /* jn(|x|>X_TLOSS) */
+ exc.type = TLOSS;
+ exc.name = CSTR ("jn");
+ exc.retval = zero;
+ if (_LIB_VERSION == _POSIX_)
+ __set_errno (ERANGE);
+ else if (!matherr(&exc)) {
+ if (_LIB_VERSION == _SVID_) {
+ (void) WRITE2(exc.name, 2);
+ (void) WRITE2(": TLOSS error\n", 14);
+ }
+ __set_errno (ERANGE);
+ }
+ break;
+ case 39:
+ case 139:
+ case 239:
+ /* yn(x>X_TLOSS) */
+ exc.type = TLOSS;
+ exc.name = CSTR ("yn");
+ exc.retval = zero;
+ if (_LIB_VERSION == _POSIX_)
+ __set_errno (ERANGE);
+ else if (!matherr(&exc)) {
+ if (_LIB_VERSION == _SVID_) {
+ (void) WRITE2(exc.name, 2);
+ (void) WRITE2(": TLOSS error\n", 14);
+ }
+ __set_errno (ERANGE);
+ }
+ break;
+ case 40:
+ case 140:
+ case 240:
+ /* tgamma(finite) overflow */
+ exc.type = OVERFLOW;
+ exc.name = CSTR ("tgamma");
+ exc.retval = __copysign (HUGE_VAL, x);
+ if (_LIB_VERSION == _POSIX_)
+ __set_errno (ERANGE);
+ else if (!matherr(&exc)) {
+ __set_errno (ERANGE);
+ }
+ break;
+ case 41:
+ case 141:
+ case 241:
+ /* tgamma(-integer) */
+ exc.type = SING;
+ exc.name = CSTR ("tgamma");
+ exc.retval = NAN;
+ if (_LIB_VERSION == _POSIX_)
+ __set_errno (EDOM);
+ else if (!matherr(&exc)) {
+ if (_LIB_VERSION == _SVID_) {
+ (void) WRITE2("tgamma: SING error\n", 18);
+ exc.retval = HUGE_VAL;
+ }
+ __set_errno (EDOM);
+ }
+ break;
+
+ case 44:
+ case 144:
+ case 244:
+ /* exp(finite) overflow */
+ exc.type = OVERFLOW;
+ exc.name = CSTR ("exp2");
+ if (_LIB_VERSION == _SVID_)
+ exc.retval = HUGE;
+ else
+ exc.retval = HUGE_VAL;
+ if (_LIB_VERSION == _POSIX_)
+ __set_errno (ERANGE);
+ else if (!matherr(&exc)) {
+ __set_errno (ERANGE);
+ }
+ break;
+ case 45:
+ case 145:
+ case 245:
+ /* exp(finite) underflow */
+ exc.type = UNDERFLOW;
+ exc.name = CSTR ("exp2");
+ exc.retval = zero;
+ if (_LIB_VERSION == _POSIX_)
+ __set_errno (ERANGE);
+ else if (!matherr(&exc)) {
+ __set_errno (ERANGE);
+ }
+ break;
+
+ case 46:
+ case 146:
+ case 246:
+ /* exp(finite) overflow */
+ exc.type = OVERFLOW;
+ exc.name = CSTR ("exp10");
+ if (_LIB_VERSION == _SVID_)
+ exc.retval = HUGE;
+ else
+ exc.retval = HUGE_VAL;
+ if (_LIB_VERSION == _POSIX_)
+ __set_errno (ERANGE);
+ else if (!matherr(&exc)) {
+ __set_errno (ERANGE);
+ }
+ break;
+ case 47:
+ case 147:
+ case 247:
+ /* exp(finite) underflow */
+ exc.type = UNDERFLOW;
+ exc.name = CSTR ("exp10");
+ exc.retval = zero;
+ if (_LIB_VERSION == _POSIX_)
+ __set_errno (ERANGE);
+ else if (!matherr(&exc)) {
+ __set_errno (ERANGE);
+ }
+ break;
+ case 48:
+ case 148:
+ case 248:
+ /* log2(0) */
+ exc.type = SING;
+ exc.name = CSTR ("log2");
+ if (_LIB_VERSION == _SVID_)
+ exc.retval = -HUGE;
+ else
+ exc.retval = -HUGE_VAL;
+ if (_LIB_VERSION == _POSIX_)
+ __set_errno (ERANGE);
+ else if (!matherr(&exc)) {
+ __set_errno (EDOM);
+ }
+ break;
+ case 49:
+ case 149:
+ case 249:
+ /* log2(x<0) */
+ exc.type = DOMAIN;
+ exc.name = CSTR ("log2");
+ if (_LIB_VERSION == _SVID_)
+ exc.retval = -HUGE;
+ else
+ exc.retval = NAN;
+ if (_LIB_VERSION == _POSIX_)
+ __set_errno (EDOM);
+ else if (!matherr(&exc)) {
+ __set_errno (EDOM);
+ }
+ break;
+ case 50:
+ case 150:
+ case 250:
+ /* tgamma(+-0) */
+ exc.type = SING;
+ exc.name = CSTR ("tgamma");
+ exc.retval = __copysign (HUGE_VAL, x);
+ if (_LIB_VERSION == _POSIX_)
+ __set_errno (ERANGE);
+ else if (!matherr(&exc)) {
+ if (_LIB_VERSION == _SVID_)
+ (void) WRITE2("tgamma: SING error\n", 18);
+ __set_errno (ERANGE);
+ }
+ break;
+
+ /* #### Last used is 50/150/250 ### */
+ }
+ return exc.retval;
+}
diff --git a/REORG.TODO/sysdeps/ieee754/k_standardf.c b/REORG.TODO/sysdeps/ieee754/k_standardf.c
new file mode 100644
index 0000000000..678b38d91a
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/k_standardf.c
@@ -0,0 +1,31 @@
+/* Implement __kernel_standard_f.
+ Copyright (C) 2011-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+#include <math_private.h>
+
+
+/* Handle errors for a libm function as specified by TYPE (see
+ comments in k_standard.c for details), with arguments X and Y,
+ returning the appropriate return value for that function. */
+
+float
+__kernel_standard_f (float x, float y, int type)
+{
+ return __kernel_standard (x, y, type);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/k_standardl.c b/REORG.TODO/sysdeps/ieee754/k_standardl.c
new file mode 100644
index 0000000000..08d789f942
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/k_standardl.c
@@ -0,0 +1,107 @@
+/* Implement __kernel_standard_l.
+ Copyright (C) 2012-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>.
+
+ Parts based on k_standard.c from fdlibm: */
+
+/* @(#)k_standard.c 5.1 93/09/24 */
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#include <math.h>
+#include <math_private.h>
+#include <fenv.h>
+#include <float.h>
+#include <errno.h>
+
+
+static double zero = 0.0;
+
+/* Handle errors for a libm function as specified by TYPE (see
+ comments in k_standard.c for details), with arguments X and Y,
+ returning the appropriate return value for that function. */
+
+long double
+__kernel_standard_l (long double x, long double y, int type)
+{
+ double dx, dy;
+ struct exception exc;
+ fenv_t env;
+
+ feholdexcept (&env);
+ dx = x;
+ dy = y;
+ math_force_eval (dx);
+ math_force_eval (dy);
+ fesetenv (&env);
+
+ switch (type)
+ {
+ case 221:
+ /* powl (x, y) overflow. */
+ exc.arg1 = dx;
+ exc.arg2 = dy;
+ exc.type = OVERFLOW;
+ exc.name = (char *) "powl";
+ if (_LIB_VERSION == _SVID_)
+ {
+ exc.retval = HUGE;
+ y *= 0.5;
+ if (x < zero && __rintl (y) != y)
+ exc.retval = -HUGE;
+ }
+ else
+ {
+ exc.retval = HUGE_VAL;
+ y *= 0.5;
+ if (x < zero && __rintl (y) != y)
+ exc.retval = -HUGE_VAL;
+ }
+ if (_LIB_VERSION == _POSIX_)
+ __set_errno (ERANGE);
+ else if (!matherr (&exc))
+ __set_errno (ERANGE);
+ return exc.retval;
+
+ case 222:
+ /* powl (x, y) underflow. */
+ exc.arg1 = dx;
+ exc.arg2 = dy;
+ exc.type = UNDERFLOW;
+ exc.name = (char *) "powl";
+ exc.retval = zero;
+ y *= 0.5;
+ if (x < zero && __rintl (y) != y)
+ exc.retval = -zero;
+ if (_LIB_VERSION == _POSIX_)
+ __set_errno (ERANGE);
+ else if (!matherr (&exc))
+ __set_errno (ERANGE);
+ return exc.retval;
+
+ default:
+ return __kernel_standard (dx, dy, type);
+ }
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128/Makefile b/REORG.TODO/sysdeps/ieee754/ldbl-128/Makefile
new file mode 100644
index 0000000000..8fd6dad343
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128/Makefile
@@ -0,0 +1 @@
+long-double-fcts = yes
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128/bits/long-double.h b/REORG.TODO/sysdeps/ieee754/ldbl-128/bits/long-double.h
new file mode 100644
index 0000000000..baddb2a905
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128/bits/long-double.h
@@ -0,0 +1,20 @@
+/* Properties of long double type. ldbl-128 version.
+ Copyright (C) 2016-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+/* long double is distinct from double, so there is nothing to
+ define here. */
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128/e_acoshl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128/e_acoshl.c
new file mode 100644
index 0000000000..7c79d437a2
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128/e_acoshl.c
@@ -0,0 +1,61 @@
+/* e_acoshl.c -- long double version of e_acosh.c.
+ * Conversion to long double by Jakub Jelinek, jj@ultra.linux.cz.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+/* __ieee754_acoshl(x)
+ * Method :
+ * Based on
+ * acoshl(x) = logl [ x + sqrtl(x*x-1) ]
+ * we have
+ * acoshl(x) := logl(x)+ln2, if x is large; else
+ * acoshl(x) := logl(2x-1/(sqrtl(x*x-1)+x)) if x>2; else
+ * acoshl(x) := log1pl(t+sqrtl(2.0*t+t*t)); where t=x-1.
+ *
+ * Special cases:
+ * acoshl(x) is NaN with signal if x<1.
+ * acoshl(NaN) is NaN without signal.
+ */
+
+#include <math.h>
+#include <math_private.h>
+
+static const _Float128
+one = 1.0,
+ln2 = L(0.6931471805599453094172321214581766);
+
+_Float128
+__ieee754_acoshl(_Float128 x)
+{
+ _Float128 t;
+ u_int64_t lx;
+ int64_t hx;
+ GET_LDOUBLE_WORDS64(hx,lx,x);
+ if(hx<0x3fff000000000000LL) { /* x < 1 */
+ return (x-x)/(x-x);
+ } else if(hx >=0x4035000000000000LL) { /* x > 2**54 */
+ if(hx >=0x7fff000000000000LL) { /* x is inf of NaN */
+ return x+x;
+ } else
+ return __ieee754_logl(x)+ln2; /* acoshl(huge)=logl(2x) */
+ } else if(((hx-0x3fff000000000000LL)|lx)==0) {
+ return 0; /* acosh(1) = 0 */
+ } else if (hx > 0x4000000000000000LL) { /* 2**28 > x > 2 */
+ t=x*x;
+ return __ieee754_logl(2*x-one/(x+__ieee754_sqrtl(t-one)));
+ } else { /* 1<x<2 */
+ t = x-one;
+ return __log1pl(t+__sqrtl(2*t+t*t));
+ }
+}
+strong_alias (__ieee754_acoshl, __acoshl_finite)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128/e_acosl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128/e_acosl.c
new file mode 100644
index 0000000000..342ea5f47d
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128/e_acosl.c
@@ -0,0 +1,319 @@
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+/*
+ Long double expansions are
+ Copyright (C) 2001 Stephen L. Moshier <moshier@na-net.ornl.gov>
+ and are incorporated herein by permission of the author. The author
+ reserves the right to distribute this material elsewhere under different
+ copying permissions. These modifications are distributed here under
+ the following terms:
+
+ This 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 2.1 of the License, or (at your option) any later version.
+
+ This 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 this library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+/* __ieee754_acosl(x)
+ * Method :
+ * acos(x) = pi/2 - asin(x)
+ * acos(-x) = pi/2 + asin(x)
+ * For |x| <= 0.375
+ * acos(x) = pi/2 - asin(x)
+ * Between .375 and .5 the approximation is
+ * acos(0.4375 + x) = acos(0.4375) + x P(x) / Q(x)
+ * Between .5 and .625 the approximation is
+ * acos(0.5625 + x) = acos(0.5625) + x rS(x) / sS(x)
+ * For x > 0.625,
+ * acos(x) = 2 asin(sqrt((1-x)/2))
+ * computed with an extended precision square root in the leading term.
+ * For x < -0.625
+ * acos(x) = pi - 2 asin(sqrt((1-|x|)/2))
+ *
+ * Special cases:
+ * if x is NaN, return x itself;
+ * if |x|>1, return NaN with invalid signal.
+ *
+ * Functions needed: __ieee754_sqrtl.
+ */
+
+#include <math.h>
+#include <math_private.h>
+
+static const _Float128
+ one = 1,
+ pio2_hi = L(1.5707963267948966192313216916397514420986),
+ pio2_lo = L(4.3359050650618905123985220130216759843812E-35),
+
+ /* acos(0.5625 + x) = acos(0.5625) + x rS(x) / sS(x)
+ -0.0625 <= x <= 0.0625
+ peak relative error 3.3e-35 */
+
+ rS0 = L(5.619049346208901520945464704848780243887E0),
+ rS1 = L(-4.460504162777731472539175700169871920352E1),
+ rS2 = L(1.317669505315409261479577040530751477488E2),
+ rS3 = L(-1.626532582423661989632442410808596009227E2),
+ rS4 = L(3.144806644195158614904369445440583873264E1),
+ rS5 = L(9.806674443470740708765165604769099559553E1),
+ rS6 = L(-5.708468492052010816555762842394927806920E1),
+ rS7 = L(-1.396540499232262112248553357962639431922E1),
+ rS8 = L(1.126243289311910363001762058295832610344E1),
+ rS9 = L(4.956179821329901954211277873774472383512E-1),
+ rS10 = L(-3.313227657082367169241333738391762525780E-1),
+
+ sS0 = L(-4.645814742084009935700221277307007679325E0),
+ sS1 = L(3.879074822457694323970438316317961918430E1),
+ sS2 = L(-1.221986588013474694623973554726201001066E2),
+ sS3 = L(1.658821150347718105012079876756201905822E2),
+ sS4 = L(-4.804379630977558197953176474426239748977E1),
+ sS5 = L(-1.004296417397316948114344573811562952793E2),
+ sS6 = L(7.530281592861320234941101403870010111138E1),
+ sS7 = L(1.270735595411673647119592092304357226607E1),
+ sS8 = L(-1.815144839646376500705105967064792930282E1),
+ sS9 = L(-7.821597334910963922204235247786840828217E-2),
+ /* 1.000000000000000000000000000000000000000E0 */
+
+ acosr5625 = L(9.7338991014954640492751132535550279812151E-1),
+ pimacosr5625 = L(2.1682027434402468335351320579240000860757E0),
+
+ /* acos(0.4375 + x) = acos(0.4375) + x rS(x) / sS(x)
+ -0.0625 <= x <= 0.0625
+ peak relative error 2.1e-35 */
+
+ P0 = L(2.177690192235413635229046633751390484892E0),
+ P1 = L(-2.848698225706605746657192566166142909573E1),
+ P2 = L(1.040076477655245590871244795403659880304E2),
+ P3 = L(-1.400087608918906358323551402881238180553E2),
+ P4 = L(2.221047917671449176051896400503615543757E1),
+ P5 = L(9.643714856395587663736110523917499638702E1),
+ P6 = L(-5.158406639829833829027457284942389079196E1),
+ P7 = L(-1.578651828337585944715290382181219741813E1),
+ P8 = L(1.093632715903802870546857764647931045906E1),
+ P9 = L(5.448925479898460003048760932274085300103E-1),
+ P10 = L(-3.315886001095605268470690485170092986337E-1),
+ Q0 = L(-1.958219113487162405143608843774587557016E0),
+ Q1 = L(2.614577866876185080678907676023269360520E1),
+ Q2 = L(-9.990858606464150981009763389881793660938E1),
+ Q3 = L(1.443958741356995763628660823395334281596E2),
+ Q4 = L(-3.206441012484232867657763518369723873129E1),
+ Q5 = L(-1.048560885341833443564920145642588991492E2),
+ Q6 = L(6.745883931909770880159915641984874746358E1),
+ Q7 = L(1.806809656342804436118449982647641392951E1),
+ Q8 = L(-1.770150690652438294290020775359580915464E1),
+ Q9 = L(-5.659156469628629327045433069052560211164E-1),
+ /* 1.000000000000000000000000000000000000000E0 */
+
+ acosr4375 = L(1.1179797320499710475919903296900511518755E0),
+ pimacosr4375 = L(2.0236129215398221908706530535894517323217E0),
+
+ /* asin(x) = x + x^3 pS(x^2) / qS(x^2)
+ 0 <= x <= 0.5
+ peak relative error 1.9e-35 */
+ pS0 = L(-8.358099012470680544198472400254596543711E2),
+ pS1 = L(3.674973957689619490312782828051860366493E3),
+ pS2 = L(-6.730729094812979665807581609853656623219E3),
+ pS3 = L(6.643843795209060298375552684423454077633E3),
+ pS4 = L(-3.817341990928606692235481812252049415993E3),
+ pS5 = L(1.284635388402653715636722822195716476156E3),
+ pS6 = L(-2.410736125231549204856567737329112037867E2),
+ pS7 = L(2.219191969382402856557594215833622156220E1),
+ pS8 = L(-7.249056260830627156600112195061001036533E-1),
+ pS9 = L(1.055923570937755300061509030361395604448E-3),
+
+ qS0 = L(-5.014859407482408326519083440151745519205E3),
+ qS1 = L(2.430653047950480068881028451580393430537E4),
+ qS2 = L(-4.997904737193653607449250593976069726962E4),
+ qS3 = L(5.675712336110456923807959930107347511086E4),
+ qS4 = L(-3.881523118339661268482937768522572588022E4),
+ qS5 = L(1.634202194895541569749717032234510811216E4),
+ qS6 = L(-4.151452662440709301601820849901296953752E3),
+ qS7 = L(5.956050864057192019085175976175695342168E2),
+ qS8 = L(-4.175375777334867025769346564600396877176E1);
+ /* 1.000000000000000000000000000000000000000E0 */
+
+_Float128
+__ieee754_acosl (_Float128 x)
+{
+ _Float128 z, r, w, p, q, s, t, f2;
+ int32_t ix, sign;
+ ieee854_long_double_shape_type u;
+
+ u.value = x;
+ sign = u.parts32.w0;
+ ix = sign & 0x7fffffff;
+ u.parts32.w0 = ix; /* |x| */
+ if (ix >= 0x3fff0000) /* |x| >= 1 */
+ {
+ if (ix == 0x3fff0000
+ && (u.parts32.w1 | u.parts32.w2 | u.parts32.w3) == 0)
+ { /* |x| == 1 */
+ if ((sign & 0x80000000) == 0)
+ return 0.0; /* acos(1) = 0 */
+ else
+ return (2.0 * pio2_hi) + (2.0 * pio2_lo); /* acos(-1)= pi */
+ }
+ return (x - x) / (x - x); /* acos(|x| > 1) is NaN */
+ }
+ else if (ix < 0x3ffe0000) /* |x| < 0.5 */
+ {
+ if (ix < 0x3f8e0000) /* |x| < 2**-113 */
+ return pio2_hi + pio2_lo;
+ if (ix < 0x3ffde000) /* |x| < .4375 */
+ {
+ /* Arcsine of x. */
+ z = x * x;
+ p = (((((((((pS9 * z
+ + pS8) * z
+ + pS7) * z
+ + pS6) * z
+ + pS5) * z
+ + pS4) * z
+ + pS3) * z
+ + pS2) * z
+ + pS1) * z
+ + pS0) * z;
+ q = (((((((( z
+ + qS8) * z
+ + qS7) * z
+ + qS6) * z
+ + qS5) * z
+ + qS4) * z
+ + qS3) * z
+ + qS2) * z
+ + qS1) * z
+ + qS0;
+ r = x + x * p / q;
+ z = pio2_hi - (r - pio2_lo);
+ return z;
+ }
+ /* .4375 <= |x| < .5 */
+ t = u.value - L(0.4375);
+ p = ((((((((((P10 * t
+ + P9) * t
+ + P8) * t
+ + P7) * t
+ + P6) * t
+ + P5) * t
+ + P4) * t
+ + P3) * t
+ + P2) * t
+ + P1) * t
+ + P0) * t;
+
+ q = (((((((((t
+ + Q9) * t
+ + Q8) * t
+ + Q7) * t
+ + Q6) * t
+ + Q5) * t
+ + Q4) * t
+ + Q3) * t
+ + Q2) * t
+ + Q1) * t
+ + Q0;
+ r = p / q;
+ if (sign & 0x80000000)
+ r = pimacosr4375 - r;
+ else
+ r = acosr4375 + r;
+ return r;
+ }
+ else if (ix < 0x3ffe4000) /* |x| < 0.625 */
+ {
+ t = u.value - L(0.5625);
+ p = ((((((((((rS10 * t
+ + rS9) * t
+ + rS8) * t
+ + rS7) * t
+ + rS6) * t
+ + rS5) * t
+ + rS4) * t
+ + rS3) * t
+ + rS2) * t
+ + rS1) * t
+ + rS0) * t;
+
+ q = (((((((((t
+ + sS9) * t
+ + sS8) * t
+ + sS7) * t
+ + sS6) * t
+ + sS5) * t
+ + sS4) * t
+ + sS3) * t
+ + sS2) * t
+ + sS1) * t
+ + sS0;
+ if (sign & 0x80000000)
+ r = pimacosr5625 - p / q;
+ else
+ r = acosr5625 + p / q;
+ return r;
+ }
+ else
+ { /* |x| >= .625 */
+ z = (one - u.value) * 0.5;
+ s = __ieee754_sqrtl (z);
+ /* Compute an extended precision square root from
+ the Newton iteration s -> 0.5 * (s + z / s).
+ The change w from s to the improved value is
+ w = 0.5 * (s + z / s) - s = (s^2 + z)/2s - s = (z - s^2)/2s.
+ Express s = f1 + f2 where f1 * f1 is exactly representable.
+ w = (z - s^2)/2s = (z - f1^2 - 2 f1 f2 - f2^2)/2s .
+ s + w has extended precision. */
+ u.value = s;
+ u.parts32.w2 = 0;
+ u.parts32.w3 = 0;
+ f2 = s - u.value;
+ w = z - u.value * u.value;
+ w = w - 2.0 * u.value * f2;
+ w = w - f2 * f2;
+ w = w / (2.0 * s);
+ /* Arcsine of s. */
+ p = (((((((((pS9 * z
+ + pS8) * z
+ + pS7) * z
+ + pS6) * z
+ + pS5) * z
+ + pS4) * z
+ + pS3) * z
+ + pS2) * z
+ + pS1) * z
+ + pS0) * z;
+ q = (((((((( z
+ + qS8) * z
+ + qS7) * z
+ + qS6) * z
+ + qS5) * z
+ + qS4) * z
+ + qS3) * z
+ + qS2) * z
+ + qS1) * z
+ + qS0;
+ r = s + (w + s * p / q);
+
+ if (sign & 0x80000000)
+ w = pio2_hi + (pio2_lo - r);
+ else
+ w = r;
+ return 2.0 * w;
+ }
+}
+strong_alias (__ieee754_acosl, __acosl_finite)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128/e_asinl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128/e_asinl.c
new file mode 100644
index 0000000000..1edf1c05a1
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128/e_asinl.c
@@ -0,0 +1,258 @@
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+/*
+ Long double expansions are
+ Copyright (C) 2001 Stephen L. Moshier <moshier@na-net.ornl.gov>
+ and are incorporated herein by permission of the author. The author
+ reserves the right to distribute this material elsewhere under different
+ copying permissions. These modifications are distributed here under the
+ following terms:
+
+ This 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 2.1 of the License, or (at your option) any later version.
+
+ This 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 this library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+/* __ieee754_asin(x)
+ * Method :
+ * Since asin(x) = x + x^3/6 + x^5*3/40 + x^7*15/336 + ...
+ * we approximate asin(x) on [0,0.5] by
+ * asin(x) = x + x*x^2*R(x^2)
+ * Between .5 and .625 the approximation is
+ * asin(0.5625 + x) = asin(0.5625) + x rS(x) / sS(x)
+ * For x in [0.625,1]
+ * asin(x) = pi/2-2*asin(sqrt((1-x)/2))
+ * Let y = (1-x), z = y/2, s := sqrt(z), and pio2_hi+pio2_lo=pi/2;
+ * then for x>0.98
+ * asin(x) = pi/2 - 2*(s+s*z*R(z))
+ * = pio2_hi - (2*(s+s*z*R(z)) - pio2_lo)
+ * For x<=0.98, let pio4_hi = pio2_hi/2, then
+ * f = hi part of s;
+ * c = sqrt(z) - f = (z-f*f)/(s+f) ...f+c=sqrt(z)
+ * and
+ * asin(x) = pi/2 - 2*(s+s*z*R(z))
+ * = pio4_hi+(pio4-2s)-(2s*z*R(z)-pio2_lo)
+ * = pio4_hi+(pio4-2f)-(2s*z*R(z)-(pio2_lo+2c))
+ *
+ * Special cases:
+ * if x is NaN, return x itself;
+ * if |x|>1, return NaN with invalid signal.
+ *
+ */
+
+
+#include <float.h>
+#include <math.h>
+#include <math_private.h>
+
+static const _Float128
+ one = 1,
+ huge = L(1.0e+4932),
+ pio2_hi = L(1.5707963267948966192313216916397514420986),
+ pio2_lo = L(4.3359050650618905123985220130216759843812E-35),
+ pio4_hi = L(7.8539816339744830961566084581987569936977E-1),
+
+ /* coefficient for R(x^2) */
+
+ /* asin(x) = x + x^3 pS(x^2) / qS(x^2)
+ 0 <= x <= 0.5
+ peak relative error 1.9e-35 */
+ pS0 = L(-8.358099012470680544198472400254596543711E2),
+ pS1 = L(3.674973957689619490312782828051860366493E3),
+ pS2 = L(-6.730729094812979665807581609853656623219E3),
+ pS3 = L(6.643843795209060298375552684423454077633E3),
+ pS4 = L(-3.817341990928606692235481812252049415993E3),
+ pS5 = L(1.284635388402653715636722822195716476156E3),
+ pS6 = L(-2.410736125231549204856567737329112037867E2),
+ pS7 = L(2.219191969382402856557594215833622156220E1),
+ pS8 = L(-7.249056260830627156600112195061001036533E-1),
+ pS9 = L(1.055923570937755300061509030361395604448E-3),
+
+ qS0 = L(-5.014859407482408326519083440151745519205E3),
+ qS1 = L(2.430653047950480068881028451580393430537E4),
+ qS2 = L(-4.997904737193653607449250593976069726962E4),
+ qS3 = L(5.675712336110456923807959930107347511086E4),
+ qS4 = L(-3.881523118339661268482937768522572588022E4),
+ qS5 = L(1.634202194895541569749717032234510811216E4),
+ qS6 = L(-4.151452662440709301601820849901296953752E3),
+ qS7 = L(5.956050864057192019085175976175695342168E2),
+ qS8 = L(-4.175375777334867025769346564600396877176E1),
+ /* 1.000000000000000000000000000000000000000E0 */
+
+ /* asin(0.5625 + x) = asin(0.5625) + x rS(x) / sS(x)
+ -0.0625 <= x <= 0.0625
+ peak relative error 3.3e-35 */
+ rS0 = L(-5.619049346208901520945464704848780243887E0),
+ rS1 = L(4.460504162777731472539175700169871920352E1),
+ rS2 = L(-1.317669505315409261479577040530751477488E2),
+ rS3 = L(1.626532582423661989632442410808596009227E2),
+ rS4 = L(-3.144806644195158614904369445440583873264E1),
+ rS5 = L(-9.806674443470740708765165604769099559553E1),
+ rS6 = L(5.708468492052010816555762842394927806920E1),
+ rS7 = L(1.396540499232262112248553357962639431922E1),
+ rS8 = L(-1.126243289311910363001762058295832610344E1),
+ rS9 = L(-4.956179821329901954211277873774472383512E-1),
+ rS10 = L(3.313227657082367169241333738391762525780E-1),
+
+ sS0 = L(-4.645814742084009935700221277307007679325E0),
+ sS1 = L(3.879074822457694323970438316317961918430E1),
+ sS2 = L(-1.221986588013474694623973554726201001066E2),
+ sS3 = L(1.658821150347718105012079876756201905822E2),
+ sS4 = L(-4.804379630977558197953176474426239748977E1),
+ sS5 = L(-1.004296417397316948114344573811562952793E2),
+ sS6 = L(7.530281592861320234941101403870010111138E1),
+ sS7 = L(1.270735595411673647119592092304357226607E1),
+ sS8 = L(-1.815144839646376500705105967064792930282E1),
+ sS9 = L(-7.821597334910963922204235247786840828217E-2),
+ /* 1.000000000000000000000000000000000000000E0 */
+
+ asinr5625 = L(5.9740641664535021430381036628424864397707E-1);
+
+
+
+_Float128
+__ieee754_asinl (_Float128 x)
+{
+ _Float128 t, w, p, q, c, r, s;
+ int32_t ix, sign, flag;
+ ieee854_long_double_shape_type u;
+
+ flag = 0;
+ u.value = x;
+ sign = u.parts32.w0;
+ ix = sign & 0x7fffffff;
+ u.parts32.w0 = ix; /* |x| */
+ if (ix >= 0x3fff0000) /* |x|>= 1 */
+ {
+ if (ix == 0x3fff0000
+ && (u.parts32.w1 | u.parts32.w2 | u.parts32.w3) == 0)
+ /* asin(1)=+-pi/2 with inexact */
+ return x * pio2_hi + x * pio2_lo;
+ return (x - x) / (x - x); /* asin(|x|>1) is NaN */
+ }
+ else if (ix < 0x3ffe0000) /* |x| < 0.5 */
+ {
+ if (ix < 0x3fc60000) /* |x| < 2**-57 */
+ {
+ math_check_force_underflow (x);
+ _Float128 force_inexact = huge + x;
+ math_force_eval (force_inexact);
+ return x; /* return x with inexact if x!=0 */
+ }
+ else
+ {
+ t = x * x;
+ /* Mark to use pS, qS later on. */
+ flag = 1;
+ }
+ }
+ else if (ix < 0x3ffe4000) /* 0.625 */
+ {
+ t = u.value - 0.5625;
+ p = ((((((((((rS10 * t
+ + rS9) * t
+ + rS8) * t
+ + rS7) * t
+ + rS6) * t
+ + rS5) * t
+ + rS4) * t
+ + rS3) * t
+ + rS2) * t
+ + rS1) * t
+ + rS0) * t;
+
+ q = ((((((((( t
+ + sS9) * t
+ + sS8) * t
+ + sS7) * t
+ + sS6) * t
+ + sS5) * t
+ + sS4) * t
+ + sS3) * t
+ + sS2) * t
+ + sS1) * t
+ + sS0;
+ t = asinr5625 + p / q;
+ if ((sign & 0x80000000) == 0)
+ return t;
+ else
+ return -t;
+ }
+ else
+ {
+ /* 1 > |x| >= 0.625 */
+ w = one - u.value;
+ t = w * 0.5;
+ }
+
+ p = (((((((((pS9 * t
+ + pS8) * t
+ + pS7) * t
+ + pS6) * t
+ + pS5) * t
+ + pS4) * t
+ + pS3) * t
+ + pS2) * t
+ + pS1) * t
+ + pS0) * t;
+
+ q = (((((((( t
+ + qS8) * t
+ + qS7) * t
+ + qS6) * t
+ + qS5) * t
+ + qS4) * t
+ + qS3) * t
+ + qS2) * t
+ + qS1) * t
+ + qS0;
+
+ if (flag) /* 2^-57 < |x| < 0.5 */
+ {
+ w = p / q;
+ return x + x * w;
+ }
+
+ s = __ieee754_sqrtl (t);
+ if (ix >= 0x3ffef333) /* |x| > 0.975 */
+ {
+ w = p / q;
+ t = pio2_hi - (2.0 * (s + s * w) - pio2_lo);
+ }
+ else
+ {
+ u.value = s;
+ u.parts32.w3 = 0;
+ u.parts32.w2 = 0;
+ w = u.value;
+ c = (t - w * w) / (s + w);
+ r = p / q;
+ p = 2.0 * s * r - (pio2_lo - 2.0 * c);
+ q = pio4_hi - 2.0 * w;
+ t = pio4_hi - (p - q);
+ }
+
+ if ((sign & 0x80000000) == 0)
+ return t;
+ else
+ return -t;
+}
+strong_alias (__ieee754_asinl, __asinl_finite)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128/e_atan2l.c b/REORG.TODO/sysdeps/ieee754/ldbl-128/e_atan2l.c
new file mode 100644
index 0000000000..faecd1a63b
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128/e_atan2l.c
@@ -0,0 +1,122 @@
+/* e_atan2l.c -- long double version of e_atan2.c.
+ * Conversion to long double by Jakub Jelinek, jj@ultra.linux.cz.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+/* __ieee754_atan2l(y,x)
+ * Method :
+ * 1. Reduce y to positive by atan2l(y,x)=-atan2l(-y,x).
+ * 2. Reduce x to positive by (if x and y are unexceptional):
+ * ARG (x+iy) = arctan(y/x) ... if x > 0,
+ * ARG (x+iy) = pi - arctan[y/(-x)] ... if x < 0,
+ *
+ * Special cases:
+ *
+ * ATAN2((anything), NaN ) is NaN;
+ * ATAN2(NAN , (anything) ) is NaN;
+ * ATAN2(+-0, +(anything but NaN)) is +-0 ;
+ * ATAN2(+-0, -(anything but NaN)) is +-pi ;
+ * ATAN2(+-(anything but 0 and NaN), 0) is +-pi/2;
+ * ATAN2(+-(anything but INF and NaN), +INF) is +-0 ;
+ * ATAN2(+-(anything but INF and NaN), -INF) is +-pi;
+ * ATAN2(+-INF,+INF ) is +-pi/4 ;
+ * ATAN2(+-INF,-INF ) is +-3pi/4;
+ * ATAN2(+-INF, (anything but,0,NaN, and INF)) is +-pi/2;
+ *
+ * Constants:
+ * The hexadecimal values are the intended ones for the following
+ * constants. The decimal values may be used, provided that the
+ * compiler will convert from decimal to binary accurately enough
+ * to produce the hexadecimal values shown.
+ */
+
+#include <math.h>
+#include <math_private.h>
+
+static const _Float128
+tiny = L(1.0e-4900),
+zero = 0.0,
+pi_o_4 = L(7.85398163397448309615660845819875699e-01), /* 3ffe921fb54442d18469898cc51701b8 */
+pi_o_2 = L(1.57079632679489661923132169163975140e+00), /* 3fff921fb54442d18469898cc51701b8 */
+pi = L(3.14159265358979323846264338327950280e+00), /* 4000921fb54442d18469898cc51701b8 */
+pi_lo = L(8.67181013012378102479704402604335225e-35); /* 3f8dcd129024e088a67cc74020bbea64 */
+
+_Float128
+__ieee754_atan2l(_Float128 y, _Float128 x)
+{
+ _Float128 z;
+ int64_t k,m,hx,hy,ix,iy;
+ u_int64_t lx,ly;
+
+ GET_LDOUBLE_WORDS64(hx,lx,x);
+ ix = hx&0x7fffffffffffffffLL;
+ GET_LDOUBLE_WORDS64(hy,ly,y);
+ iy = hy&0x7fffffffffffffffLL;
+ if(((ix|((lx|-lx)>>63))>0x7fff000000000000LL)||
+ ((iy|((ly|-ly)>>63))>0x7fff000000000000LL)) /* x or y is NaN */
+ return x+y;
+ if(((hx-0x3fff000000000000LL)|lx)==0) return __atanl(y); /* x=1.0L */
+ m = ((hy>>63)&1)|((hx>>62)&2); /* 2*sign(x)+sign(y) */
+
+ /* when y = 0 */
+ if((iy|ly)==0) {
+ switch(m) {
+ case 0:
+ case 1: return y; /* atan(+-0,+anything)=+-0 */
+ case 2: return pi+tiny;/* atan(+0,-anything) = pi */
+ case 3: return -pi-tiny;/* atan(-0,-anything) =-pi */
+ }
+ }
+ /* when x = 0 */
+ if((ix|lx)==0) return (hy<0)? -pi_o_2-tiny: pi_o_2+tiny;
+
+ /* when x is INF */
+ if(ix==0x7fff000000000000LL) {
+ if(iy==0x7fff000000000000LL) {
+ switch(m) {
+ case 0: return pi_o_4+tiny;/* atan(+INF,+INF) */
+ case 1: return -pi_o_4-tiny;/* atan(-INF,+INF) */
+ case 2: return 3*pi_o_4+tiny;/*atan(+INF,-INF)*/
+ case 3: return -3*pi_o_4-tiny;/*atan(-INF,-INF)*/
+ }
+ } else {
+ switch(m) {
+ case 0: return zero ; /* atan(+...,+INF) */
+ case 1: return -zero ; /* atan(-...,+INF) */
+ case 2: return pi+tiny ; /* atan(+...,-INF) */
+ case 3: return -pi-tiny ; /* atan(-...,-INF) */
+ }
+ }
+ }
+ /* when y is INF */
+ if(iy==0x7fff000000000000LL) return (hy<0)? -pi_o_2-tiny: pi_o_2+tiny;
+
+ /* compute y/x */
+ k = (iy-ix)>>48;
+ if(k > 120) z=pi_o_2+L(0.5)*pi_lo; /* |y/x| > 2**120 */
+ else if(hx<0&&k<-120) z=0; /* |y|/x < -2**120 */
+ else z=__atanl(fabsl(y/x)); /* safe to do y/x */
+ switch (m) {
+ case 0: return z ; /* atan(+,+) */
+ case 1: {
+ u_int64_t zh;
+ GET_LDOUBLE_MSW64(zh,z);
+ SET_LDOUBLE_MSW64(z,zh ^ 0x8000000000000000ULL);
+ }
+ return z ; /* atan(-,+) */
+ case 2: return pi-(z-pi_lo);/* atan(+,-) */
+ default: /* case 3 */
+ return (z-pi_lo)-pi;/* atan(-,-) */
+ }
+}
+strong_alias (__ieee754_atan2l, __atan2l_finite)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128/e_atanhl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128/e_atanhl.c
new file mode 100644
index 0000000000..3905af4dfc
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128/e_atanhl.c
@@ -0,0 +1,74 @@
+/* s_atanhl.c -- long double version of s_atan.c.
+ * Conversion to long double by Ulrich Drepper,
+ * Cygnus Support, drepper@cygnus.com.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+/* __ieee754_atanhl(x)
+ * Method :
+ * 1.Reduced x to positive by atanh(-x) = -atanh(x)
+ * 2.For x>=0.5
+ * 1 2x x
+ * atanhl(x) = --- * log(1 + -------) = 0.5 * log1p(2 * --------)
+ * 2 1 - x 1 - x
+ *
+ * For x<0.5
+ * atanhl(x) = 0.5*log1pl(2x+2x*x/(1-x))
+ *
+ * Special cases:
+ * atanhl(x) is NaN if |x| > 1 with signal;
+ * atanhl(NaN) is that NaN with no signal;
+ * atanhl(+-1) is +-INF with signal.
+ *
+ */
+
+#include <float.h>
+#include <math.h>
+#include <math_private.h>
+
+static const _Float128 one = 1, huge = L(1e4900);
+
+static const _Float128 zero = 0;
+
+_Float128
+__ieee754_atanhl(_Float128 x)
+{
+ _Float128 t;
+ u_int32_t jx, ix;
+ ieee854_long_double_shape_type u;
+
+ u.value = x;
+ jx = u.parts32.w0;
+ ix = jx & 0x7fffffff;
+ u.parts32.w0 = ix;
+ if (ix >= 0x3fff0000) /* |x| >= 1.0 or infinity or NaN */
+ {
+ if (u.value == one)
+ return x/zero;
+ else
+ return (x-x)/(x-x);
+ }
+ if(ix<0x3fc60000 && (huge+x)>zero) /* x < 2^-57 */
+ {
+ math_check_force_underflow (x);
+ return x;
+ }
+
+ if(ix<0x3ffe0000) { /* x < 0.5 */
+ t = u.value+u.value;
+ t = 0.5*__log1pl(t+t*u.value/(one-u.value));
+ } else
+ t = 0.5*__log1pl((u.value+u.value)/(one-u.value));
+ if(jx & 0x80000000) return -t; else return t;
+}
+strong_alias (__ieee754_atanhl, __atanhl_finite)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128/e_coshl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128/e_coshl.c
new file mode 100644
index 0000000000..70a2fe3e84
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128/e_coshl.c
@@ -0,0 +1,110 @@
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+/* Changes for 128-bit long double are
+ Copyright (C) 2001 Stephen L. Moshier <moshier@na-net.ornl.gov>
+ and are incorporated herein by permission of the author. The author
+ reserves the right to distribute this material elsewhere under different
+ copying permissions. These modifications are distributed here under
+ the following terms:
+
+ This 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 2.1 of the License, or (at your option) any later version.
+
+ This 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 this library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+/* __ieee754_coshl(x)
+ * Method :
+ * mathematically coshl(x) if defined to be (exp(x)+exp(-x))/2
+ * 1. Replace x by |x| (coshl(x) = coshl(-x)).
+ * 2.
+ * [ exp(x) - 1 ]^2
+ * 0 <= x <= ln2/2 : coshl(x) := 1 + -------------------
+ * 2*exp(x)
+ *
+ * exp(x) + 1/exp(x)
+ * ln2/2 <= x <= 22 : coshl(x) := -------------------
+ * 2
+ * 22 <= x <= lnovft : coshl(x) := expl(x)/2
+ * lnovft <= x <= ln2ovft: coshl(x) := expl(x/2)/2 * expl(x/2)
+ * ln2ovft < x : coshl(x) := huge*huge (overflow)
+ *
+ * Special cases:
+ * coshl(x) is |x| if x is +INF, -INF, or NaN.
+ * only coshl(0)=1 is exact for finite x.
+ */
+
+#include <math.h>
+#include <math_private.h>
+
+static const _Float128 one = 1.0, half = 0.5, huge = L(1.0e4900),
+ovf_thresh = L(1.1357216553474703894801348310092223067821E4);
+
+_Float128
+__ieee754_coshl (_Float128 x)
+{
+ _Float128 t, w;
+ int32_t ex;
+ ieee854_long_double_shape_type u;
+
+ u.value = x;
+ ex = u.parts32.w0 & 0x7fffffff;
+
+ /* Absolute value of x. */
+ u.parts32.w0 = ex;
+
+ /* x is INF or NaN */
+ if (ex >= 0x7fff0000)
+ return x * x;
+
+ /* |x| in [0,0.5*ln2], return 1+expm1l(|x|)^2/(2*expl(|x|)) */
+ if (ex < 0x3ffd62e4) /* 0.3465728759765625 */
+ {
+ if (ex < 0x3fb80000) /* |x| < 2^-116 */
+ return one; /* cosh(tiny) = 1 */
+ t = __expm1l (u.value);
+ w = one + t;
+
+ return one + (t * t) / (w + w);
+ }
+
+ /* |x| in [0.5*ln2,40], return (exp(|x|)+1/exp(|x|)/2; */
+ if (ex < 0x40044000)
+ {
+ t = __ieee754_expl (u.value);
+ return half * t + half / t;
+ }
+
+ /* |x| in [22, ln(maxdouble)] return half*exp(|x|) */
+ if (ex <= 0x400c62e3) /* 11356.375 */
+ return half * __ieee754_expl (u.value);
+
+ /* |x| in [log(maxdouble), overflowthresold] */
+ if (u.value <= ovf_thresh)
+ {
+ w = __ieee754_expl (half * u.value);
+ t = half * w;
+ return t * w;
+ }
+
+ /* |x| > overflowthresold, cosh(x) overflow */
+ return huge * huge;
+}
+strong_alias (__ieee754_coshl, __coshl_finite)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128/e_exp10l.c b/REORG.TODO/sysdeps/ieee754/ldbl-128/e_exp10l.c
new file mode 100644
index 0000000000..05a470fa39
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128/e_exp10l.c
@@ -0,0 +1,49 @@
+/* Copyright (C) 2012-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+#include <math_private.h>
+#include <float.h>
+
+static const _Float128 log10_high = L(0x2.4d763776aaa2bp0);
+static const _Float128 log10_low = L(0x5.ba95b58ae0b4c28a38a3fb3e7698p-60);
+
+_Float128
+__ieee754_exp10l (_Float128 arg)
+{
+ ieee854_long_double_shape_type u;
+ _Float128 arg_high, arg_low;
+ _Float128 exp_high, exp_low;
+
+ if (!isfinite (arg))
+ return __ieee754_expl (arg);
+ if (arg < LDBL_MIN_10_EXP - LDBL_DIG - 10)
+ return LDBL_MIN * LDBL_MIN;
+ else if (arg > LDBL_MAX_10_EXP + 1)
+ return LDBL_MAX * LDBL_MAX;
+ else if (fabsl (arg) < L(0x1p-116))
+ return 1;
+
+ u.value = arg;
+ u.parts64.lsw &= 0xfe00000000000000LL;
+ arg_high = u.value;
+ arg_low = arg - arg_high;
+ exp_high = arg_high * log10_high;
+ exp_low = arg_high * log10_low + arg_low * M_LN10l;
+ return __ieee754_expl (exp_high) * __ieee754_expl (exp_low);
+}
+strong_alias (__ieee754_exp10l, __exp10l_finite)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128/e_expl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128/e_expl.c
new file mode 100644
index 0000000000..15639d1da1
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128/e_expl.c
@@ -0,0 +1,253 @@
+/* Quad-precision floating point e^x.
+ Copyright (C) 1999-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Jakub Jelinek <jj@ultra.linux.cz>
+ Partly based on double-precision code
+ by Geoffrey Keating <geoffk@ozemail.com.au>
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+/* The basic design here is from
+ Abraham Ziv, "Fast Evaluation of Elementary Mathematical Functions with
+ Correctly Rounded Last Bit", ACM Trans. Math. Soft., 17 (3), September 1991,
+ pp. 410-423.
+
+ We work with number pairs where the first number is the high part and
+ the second one is the low part. Arithmetic with the high part numbers must
+ be exact, without any roundoff errors.
+
+ The input value, X, is written as
+ X = n * ln(2)_0 + arg1[t1]_0 + arg2[t2]_0 + x
+ - n * ln(2)_1 + arg1[t1]_1 + arg2[t2]_1 + xl
+
+ where:
+ - n is an integer, 16384 >= n >= -16495;
+ - ln(2)_0 is the first 93 bits of ln(2), and |ln(2)_0-ln(2)-ln(2)_1| < 2^-205
+ - t1 is an integer, 89 >= t1 >= -89
+ - t2 is an integer, 65 >= t2 >= -65
+ - |arg1[t1]-t1/256.0| < 2^-53
+ - |arg2[t2]-t2/32768.0| < 2^-53
+ - x + xl is whatever is left, |x + xl| < 2^-16 + 2^-53
+
+ Then e^x is approximated as
+
+ e^x = 2^n_1 ( 2^n_0 e^(arg1[t1]_0 + arg1[t1]_1) e^(arg2[t2]_0 + arg2[t2]_1)
+ + 2^n_0 e^(arg1[t1]_0 + arg1[t1]_1) e^(arg2[t2]_0 + arg2[t2]_1)
+ * p (x + xl + n * ln(2)_1))
+ where:
+ - p(x) is a polynomial approximating e(x)-1
+ - e^(arg1[t1]_0 + arg1[t1]_1) is obtained from a table
+ - e^(arg2[t2]_0 + arg2[t2]_1) likewise
+ - n_1 + n_0 = n, so that |n_0| < -LDBL_MIN_EXP-1.
+
+ If it happens that n_1 == 0 (this is the usual case), that multiplication
+ is omitted.
+ */
+
+#ifndef _GNU_SOURCE
+#define _GNU_SOURCE
+#endif
+#include <float.h>
+#include <ieee754.h>
+#include <math.h>
+#include <fenv.h>
+#include <inttypes.h>
+#include <math_private.h>
+#include <stdlib.h>
+#include "t_expl.h"
+
+static const _Float128 C[] = {
+/* Smallest integer x for which e^x overflows. */
+#define himark C[0]
+ L(11356.523406294143949491931077970765),
+
+/* Largest integer x for which e^x underflows. */
+#define lomark C[1]
+L(-11433.4627433362978788372438434526231),
+
+/* 3x2^96 */
+#define THREEp96 C[2]
+ L(59421121885698253195157962752.0),
+
+/* 3x2^103 */
+#define THREEp103 C[3]
+ L(30423614405477505635920876929024.0),
+
+/* 3x2^111 */
+#define THREEp111 C[4]
+ L(7788445287802241442795744493830144.0),
+
+/* 1/ln(2) */
+#define M_1_LN2 C[5]
+ L(1.44269504088896340735992468100189204),
+
+/* first 93 bits of ln(2) */
+#define M_LN2_0 C[6]
+ L(0.693147180559945309417232121457981864),
+
+/* ln2_0 - ln(2) */
+#define M_LN2_1 C[7]
+L(-1.94704509238074995158795957333327386E-31),
+
+/* very small number */
+#define TINY C[8]
+ L(1.0e-4900),
+
+/* 2^16383 */
+#define TWO16383 C[9]
+ L(5.94865747678615882542879663314003565E+4931),
+
+/* 256 */
+#define TWO8 C[10]
+ 256,
+
+/* 32768 */
+#define TWO15 C[11]
+ 32768,
+
+/* Chebyshev polynom coefficients for (exp(x)-1)/x */
+#define P1 C[12]
+#define P2 C[13]
+#define P3 C[14]
+#define P4 C[15]
+#define P5 C[16]
+#define P6 C[17]
+ L(0.5),
+ L(1.66666666666666666666666666666666683E-01),
+ L(4.16666666666666666666654902320001674E-02),
+ L(8.33333333333333333333314659767198461E-03),
+ L(1.38888888889899438565058018857254025E-03),
+ L(1.98412698413981650382436541785404286E-04),
+};
+
+_Float128
+__ieee754_expl (_Float128 x)
+{
+ /* Check for usual case. */
+ if (isless (x, himark) && isgreater (x, lomark))
+ {
+ int tval1, tval2, unsafe, n_i;
+ _Float128 x22, n, t, result, xl;
+ union ieee854_long_double ex2_u, scale_u;
+ fenv_t oldenv;
+
+ feholdexcept (&oldenv);
+#ifdef FE_TONEAREST
+ fesetround (FE_TONEAREST);
+#endif
+
+ /* Calculate n. */
+ n = x * M_1_LN2 + THREEp111;
+ n -= THREEp111;
+ x = x - n * M_LN2_0;
+ xl = n * M_LN2_1;
+
+ /* Calculate t/256. */
+ t = x + THREEp103;
+ t -= THREEp103;
+
+ /* Compute tval1 = t. */
+ tval1 = (int) (t * TWO8);
+
+ x -= __expl_table[T_EXPL_ARG1+2*tval1];
+ xl -= __expl_table[T_EXPL_ARG1+2*tval1+1];
+
+ /* Calculate t/32768. */
+ t = x + THREEp96;
+ t -= THREEp96;
+
+ /* Compute tval2 = t. */
+ tval2 = (int) (t * TWO15);
+
+ x -= __expl_table[T_EXPL_ARG2+2*tval2];
+ xl -= __expl_table[T_EXPL_ARG2+2*tval2+1];
+
+ x = x + xl;
+
+ /* Compute ex2 = 2^n_0 e^(argtable[tval1]) e^(argtable[tval2]). */
+ ex2_u.d = __expl_table[T_EXPL_RES1 + tval1]
+ * __expl_table[T_EXPL_RES2 + tval2];
+ n_i = (int)n;
+ /* 'unsafe' is 1 iff n_1 != 0. */
+ unsafe = abs(n_i) >= 15000;
+ ex2_u.ieee.exponent += n_i >> unsafe;
+
+ /* Compute scale = 2^n_1. */
+ scale_u.d = 1;
+ scale_u.ieee.exponent += n_i - (n_i >> unsafe);
+
+ /* Approximate e^x2 - 1, using a seventh-degree polynomial,
+ with maximum error in [-2^-16-2^-53,2^-16+2^-53]
+ less than 4.8e-39. */
+ x22 = x + x*x*(P1+x*(P2+x*(P3+x*(P4+x*(P5+x*P6)))));
+
+ /* Return result. */
+ fesetenv (&oldenv);
+
+ result = x22 * ex2_u.d + ex2_u.d;
+
+ /* Now we can test whether the result is ultimate or if we are unsure.
+ In the later case we should probably call a mpn based routine to give
+ the ultimate result.
+ Empirically, this routine is already ultimate in about 99.9986% of
+ cases, the test below for the round to nearest case will be false
+ in ~ 99.9963% of cases.
+ Without proc2 routine maximum error which has been seen is
+ 0.5000262 ulp.
+
+ union ieee854_long_double ex3_u;
+
+ #ifdef FE_TONEAREST
+ fesetround (FE_TONEAREST);
+ #endif
+ ex3_u.d = (result - ex2_u.d) - x22 * ex2_u.d;
+ ex2_u.d = result;
+ ex3_u.ieee.exponent += LDBL_MANT_DIG + 15 + IEEE854_LONG_DOUBLE_BIAS
+ - ex2_u.ieee.exponent;
+ n_i = abs (ex3_u.d);
+ n_i = (n_i + 1) / 2;
+ fesetenv (&oldenv);
+ #ifdef FE_TONEAREST
+ if (fegetround () == FE_TONEAREST)
+ n_i -= 0x4000;
+ #endif
+ if (!n_i) {
+ return __ieee754_expl_proc2 (origx);
+ }
+ */
+ if (!unsafe)
+ return result;
+ else
+ {
+ result *= scale_u.d;
+ math_check_force_underflow_nonneg (result);
+ return result;
+ }
+ }
+ /* Exceptional cases: */
+ else if (isless (x, himark))
+ {
+ if (isinf (x))
+ /* e^-inf == 0, with no error. */
+ return 0;
+ else
+ /* Underflow */
+ return TINY * TINY;
+ }
+ else
+ /* Return x, if x is a NaN or Inf; or overflow, otherwise. */
+ return TWO16383*x;
+}
+strong_alias (__ieee754_expl, __expl_finite)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128/e_fmodl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128/e_fmodl.c
new file mode 100644
index 0000000000..f27cd4f8ff
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128/e_fmodl.c
@@ -0,0 +1,131 @@
+/* e_fmodl.c -- long double version of e_fmod.c.
+ * Conversion to IEEE quad long double by Jakub Jelinek, jj@ultra.linux.cz.
+ */
+/*
+ * ====================================================
+ * Copyright (C) 1993, 2011 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+/*
+ * __ieee754_fmodl(x,y)
+ * Return x mod y in exact arithmetic
+ * Method: shift and subtract
+ */
+
+#include <math.h>
+#include <math_private.h>
+
+static const _Float128 one = 1.0, Zero[] = {0.0, -0.0,};
+
+_Float128
+__ieee754_fmodl (_Float128 x, _Float128 y)
+{
+ int64_t n,hx,hy,hz,ix,iy,sx,i;
+ u_int64_t lx,ly,lz;
+
+ GET_LDOUBLE_WORDS64(hx,lx,x);
+ GET_LDOUBLE_WORDS64(hy,ly,y);
+ sx = hx&0x8000000000000000ULL; /* sign of x */
+ hx ^=sx; /* |x| */
+ hy &= 0x7fffffffffffffffLL; /* |y| */
+
+ /* purge off exception values */
+ if((hy|ly)==0||(hx>=0x7fff000000000000LL)|| /* y=0,or x not finite */
+ ((hy|((ly|-ly)>>63))>0x7fff000000000000LL)) /* or y is NaN */
+ return (x*y)/(x*y);
+ if(hx<=hy) {
+ if((hx<hy)||(lx<ly)) return x; /* |x|<|y| return x */
+ if(lx==ly)
+ return Zero[(u_int64_t)sx>>63]; /* |x|=|y| return x*0*/
+ }
+
+ /* determine ix = ilogb(x) */
+ if(hx<0x0001000000000000LL) { /* subnormal x */
+ if(hx==0) {
+ for (ix = -16431, i=lx; i>0; i<<=1) ix -=1;
+ } else {
+ for (ix = -16382, i=hx<<15; i>0; i<<=1) ix -=1;
+ }
+ } else ix = (hx>>48)-0x3fff;
+
+ /* determine iy = ilogb(y) */
+ if(hy<0x0001000000000000LL) { /* subnormal y */
+ if(hy==0) {
+ for (iy = -16431, i=ly; i>0; i<<=1) iy -=1;
+ } else {
+ for (iy = -16382, i=hy<<15; i>0; i<<=1) iy -=1;
+ }
+ } else iy = (hy>>48)-0x3fff;
+
+ /* set up {hx,lx}, {hy,ly} and align y to x */
+ if(ix >= -16382)
+ hx = 0x0001000000000000LL|(0x0000ffffffffffffLL&hx);
+ else { /* subnormal x, shift x to normal */
+ n = -16382-ix;
+ if(n<=63) {
+ hx = (hx<<n)|(lx>>(64-n));
+ lx <<= n;
+ } else {
+ hx = lx<<(n-64);
+ lx = 0;
+ }
+ }
+ if(iy >= -16382)
+ hy = 0x0001000000000000LL|(0x0000ffffffffffffLL&hy);
+ else { /* subnormal y, shift y to normal */
+ n = -16382-iy;
+ if(n<=63) {
+ hy = (hy<<n)|(ly>>(64-n));
+ ly <<= n;
+ } else {
+ hy = ly<<(n-64);
+ ly = 0;
+ }
+ }
+
+ /* fix point fmod */
+ n = ix - iy;
+ while(n--) {
+ hz=hx-hy;lz=lx-ly; if(lx<ly) hz -= 1;
+ if(hz<0){hx = hx+hx+(lx>>63); lx = lx+lx;}
+ else {
+ if((hz|lz)==0) /* return sign(x)*0 */
+ return Zero[(u_int64_t)sx>>63];
+ hx = hz+hz+(lz>>63); lx = lz+lz;
+ }
+ }
+ hz=hx-hy;lz=lx-ly; if(lx<ly) hz -= 1;
+ if(hz>=0) {hx=hz;lx=lz;}
+
+ /* convert back to floating value and restore the sign */
+ if((hx|lx)==0) /* return sign(x)*0 */
+ return Zero[(u_int64_t)sx>>63];
+ while(hx<0x0001000000000000LL) { /* normalize x */
+ hx = hx+hx+(lx>>63); lx = lx+lx;
+ iy -= 1;
+ }
+ if(iy>= -16382) { /* normalize output */
+ hx = ((hx-0x0001000000000000LL)|((iy+16383)<<48));
+ SET_LDOUBLE_WORDS64(x,hx|sx,lx);
+ } else { /* subnormal output */
+ n = -16382 - iy;
+ if(n<=48) {
+ lx = (lx>>n)|((u_int64_t)hx<<(64-n));
+ hx >>= n;
+ } else if (n<=63) {
+ lx = (hx<<(64-n))|(lx>>n); hx = sx;
+ } else {
+ lx = hx>>(n-64); hx = sx;
+ }
+ SET_LDOUBLE_WORDS64(x,hx|sx,lx);
+ x *= one; /* create necessary signal */
+ }
+ return x; /* exact output */
+}
+strong_alias (__ieee754_fmodl, __fmodl_finite)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128/e_gammal_r.c b/REORG.TODO/sysdeps/ieee754/ldbl-128/e_gammal_r.c
new file mode 100644
index 0000000000..3a5317ade1
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128/e_gammal_r.c
@@ -0,0 +1,218 @@
+/* Implementation of gamma function according to ISO C.
+ Copyright (C) 1997-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997 and
+ Jakub Jelinek <jj@ultra.linux.cz, 1999.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+#include <math_private.h>
+#include <float.h>
+
+/* Coefficients B_2k / 2k(2k-1) of x^-(2k-1) inside exp in Stirling's
+ approximation to gamma function. */
+
+static const _Float128 gamma_coeff[] =
+ {
+ L(0x1.5555555555555555555555555555p-4),
+ L(-0xb.60b60b60b60b60b60b60b60b60b8p-12),
+ L(0x3.4034034034034034034034034034p-12),
+ L(-0x2.7027027027027027027027027028p-12),
+ L(0x3.72a3c5631fe46ae1d4e700dca8f2p-12),
+ L(-0x7.daac36664f1f207daac36664f1f4p-12),
+ L(0x1.a41a41a41a41a41a41a41a41a41ap-8),
+ L(-0x7.90a1b2c3d4e5f708192a3b4c5d7p-8),
+ L(0x2.dfd2c703c0cfff430edfd2c703cp-4),
+ L(-0x1.6476701181f39edbdb9ce625987dp+0),
+ L(0xd.672219167002d3a7a9c886459cp+0),
+ L(-0x9.cd9292e6660d55b3f712eb9e07c8p+4),
+ L(0x8.911a740da740da740da740da741p+8),
+ L(-0x8.d0cc570e255bf59ff6eec24b49p+12),
+ };
+
+#define NCOEFF (sizeof (gamma_coeff) / sizeof (gamma_coeff[0]))
+
+/* Return gamma (X), for positive X less than 1775, in the form R *
+ 2^(*EXP2_ADJ), where R is the return value and *EXP2_ADJ is set to
+ avoid overflow or underflow in intermediate calculations. */
+
+static _Float128
+gammal_positive (_Float128 x, int *exp2_adj)
+{
+ int local_signgam;
+ if (x < L(0.5))
+ {
+ *exp2_adj = 0;
+ return __ieee754_expl (__ieee754_lgammal_r (x + 1, &local_signgam)) / x;
+ }
+ else if (x <= L(1.5))
+ {
+ *exp2_adj = 0;
+ return __ieee754_expl (__ieee754_lgammal_r (x, &local_signgam));
+ }
+ else if (x < L(12.5))
+ {
+ /* Adjust into the range for using exp (lgamma). */
+ *exp2_adj = 0;
+ _Float128 n = __ceill (x - L(1.5));
+ _Float128 x_adj = x - n;
+ _Float128 eps;
+ _Float128 prod = __gamma_productl (x_adj, 0, n, &eps);
+ return (__ieee754_expl (__ieee754_lgammal_r (x_adj, &local_signgam))
+ * prod * (1 + eps));
+ }
+ else
+ {
+ _Float128 eps = 0;
+ _Float128 x_eps = 0;
+ _Float128 x_adj = x;
+ _Float128 prod = 1;
+ if (x < 24)
+ {
+ /* Adjust into the range for applying Stirling's
+ approximation. */
+ _Float128 n = __ceill (24 - x);
+ x_adj = x + n;
+ x_eps = (x - (x_adj - n));
+ prod = __gamma_productl (x_adj - n, x_eps, n, &eps);
+ }
+ /* The result is now gamma (X_ADJ + X_EPS) / (PROD * (1 + EPS)).
+ Compute gamma (X_ADJ + X_EPS) using Stirling's approximation,
+ starting by computing pow (X_ADJ, X_ADJ) with a power of 2
+ factored out. */
+ _Float128 exp_adj = -eps;
+ _Float128 x_adj_int = __roundl (x_adj);
+ _Float128 x_adj_frac = x_adj - x_adj_int;
+ int x_adj_log2;
+ _Float128 x_adj_mant = __frexpl (x_adj, &x_adj_log2);
+ if (x_adj_mant < M_SQRT1_2l)
+ {
+ x_adj_log2--;
+ x_adj_mant *= 2;
+ }
+ *exp2_adj = x_adj_log2 * (int) x_adj_int;
+ _Float128 ret = (__ieee754_powl (x_adj_mant, x_adj)
+ * __ieee754_exp2l (x_adj_log2 * x_adj_frac)
+ * __ieee754_expl (-x_adj)
+ * __ieee754_sqrtl (2 * M_PIl / x_adj)
+ / prod);
+ exp_adj += x_eps * __ieee754_logl (x_adj);
+ _Float128 bsum = gamma_coeff[NCOEFF - 1];
+ _Float128 x_adj2 = x_adj * x_adj;
+ for (size_t i = 1; i <= NCOEFF - 1; i++)
+ bsum = bsum / x_adj2 + gamma_coeff[NCOEFF - 1 - i];
+ exp_adj += bsum / x_adj;
+ return ret + ret * __expm1l (exp_adj);
+ }
+}
+
+_Float128
+__ieee754_gammal_r (_Float128 x, int *signgamp)
+{
+ int64_t hx;
+ u_int64_t lx;
+ _Float128 ret;
+
+ GET_LDOUBLE_WORDS64 (hx, lx, x);
+
+ if (((hx & 0x7fffffffffffffffLL) | lx) == 0)
+ {
+ /* Return value for x == 0 is Inf with divide by zero exception. */
+ *signgamp = 0;
+ return 1.0 / x;
+ }
+ if (hx < 0 && (u_int64_t) hx < 0xffff000000000000ULL && __rintl (x) == x)
+ {
+ /* Return value for integer x < 0 is NaN with invalid exception. */
+ *signgamp = 0;
+ return (x - x) / (x - x);
+ }
+ if (hx == 0xffff000000000000ULL && lx == 0)
+ {
+ /* x == -Inf. According to ISO this is NaN. */
+ *signgamp = 0;
+ return x - x;
+ }
+ if ((hx & 0x7fff000000000000ULL) == 0x7fff000000000000ULL)
+ {
+ /* Positive infinity (return positive infinity) or NaN (return
+ NaN). */
+ *signgamp = 0;
+ return x + x;
+ }
+
+ if (x >= 1756)
+ {
+ /* Overflow. */
+ *signgamp = 0;
+ return LDBL_MAX * LDBL_MAX;
+ }
+ else
+ {
+ SET_RESTORE_ROUNDL (FE_TONEAREST);
+ if (x > 0)
+ {
+ *signgamp = 0;
+ int exp2_adj;
+ ret = gammal_positive (x, &exp2_adj);
+ ret = __scalbnl (ret, exp2_adj);
+ }
+ else if (x >= -LDBL_EPSILON / 4)
+ {
+ *signgamp = 0;
+ ret = 1 / x;
+ }
+ else
+ {
+ _Float128 tx = __truncl (x);
+ *signgamp = (tx == 2 * __truncl (tx / 2)) ? -1 : 1;
+ if (x <= -1775)
+ /* Underflow. */
+ ret = LDBL_MIN * LDBL_MIN;
+ else
+ {
+ _Float128 frac = tx - x;
+ if (frac > L(0.5))
+ frac = 1 - frac;
+ _Float128 sinpix = (frac <= L(0.25)
+ ? __sinl (M_PIl * frac)
+ : __cosl (M_PIl * (L(0.5) - frac)));
+ int exp2_adj;
+ ret = M_PIl / (-x * sinpix
+ * gammal_positive (-x, &exp2_adj));
+ ret = __scalbnl (ret, -exp2_adj);
+ math_check_force_underflow_nonneg (ret);
+ }
+ }
+ }
+ if (isinf (ret) && x != 0)
+ {
+ if (*signgamp < 0)
+ return -(-__copysignl (LDBL_MAX, ret) * LDBL_MAX);
+ else
+ return __copysignl (LDBL_MAX, ret) * LDBL_MAX;
+ }
+ else if (ret == 0)
+ {
+ if (*signgamp < 0)
+ return -(-__copysignl (LDBL_MIN, ret) * LDBL_MIN);
+ else
+ return __copysignl (LDBL_MIN, ret) * LDBL_MIN;
+ }
+ else
+ return ret;
+}
+strong_alias (__ieee754_gammal_r, __gammal_r_finite)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128/e_hypotl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128/e_hypotl.c
new file mode 100644
index 0000000000..6c4e178fbe
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128/e_hypotl.c
@@ -0,0 +1,140 @@
+/* e_hypotl.c -- long double version of e_hypot.c.
+ * Conversion to long double by Jakub Jelinek, jakub@redhat.com.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+/* __ieee754_hypotl(x,y)
+ *
+ * Method :
+ * If (assume round-to-nearest) z=x*x+y*y
+ * has error less than sqrtl(2)/2 ulp, than
+ * sqrtl(z) has error less than 1 ulp (exercise).
+ *
+ * So, compute sqrtl(x*x+y*y) with some care as
+ * follows to get the error below 1 ulp:
+ *
+ * Assume x>y>0;
+ * (if possible, set rounding to round-to-nearest)
+ * 1. if x > 2y use
+ * x1*x1+(y*y+(x2*(x+x1))) for x*x+y*y
+ * where x1 = x with lower 64 bits cleared, x2 = x-x1; else
+ * 2. if x <= 2y use
+ * t1*y1+((x-y)*(x-y)+(t1*y2+t2*y))
+ * where t1 = 2x with lower 64 bits cleared, t2 = 2x-t1,
+ * y1= y with lower 64 bits chopped, y2 = y-y1.
+ *
+ * NOTE: scaling may be necessary if some argument is too
+ * large or too tiny
+ *
+ * Special cases:
+ * hypotl(x,y) is INF if x or y is +INF or -INF; else
+ * hypotl(x,y) is NAN if x or y is NAN.
+ *
+ * Accuracy:
+ * hypotl(x,y) returns sqrtl(x^2+y^2) with error less
+ * than 1 ulps (units in the last place)
+ */
+
+#include <math.h>
+#include <math_private.h>
+
+_Float128
+__ieee754_hypotl(_Float128 x, _Float128 y)
+{
+ _Float128 a,b,t1,t2,y1,y2,w;
+ int64_t j,k,ha,hb;
+
+ GET_LDOUBLE_MSW64(ha,x);
+ ha &= 0x7fffffffffffffffLL;
+ GET_LDOUBLE_MSW64(hb,y);
+ hb &= 0x7fffffffffffffffLL;
+ if(hb > ha) {a=y;b=x;j=ha; ha=hb;hb=j;} else {a=x;b=y;}
+ SET_LDOUBLE_MSW64(a,ha); /* a <- |a| */
+ SET_LDOUBLE_MSW64(b,hb); /* b <- |b| */
+ if((ha-hb)>0x78000000000000LL) {return a+b;} /* x/y > 2**120 */
+ k=0;
+ if(ha > 0x5f3f000000000000LL) { /* a>2**8000 */
+ if(ha >= 0x7fff000000000000LL) { /* Inf or NaN */
+ u_int64_t low;
+ w = a+b; /* for sNaN */
+ if (issignaling (a) || issignaling (b))
+ return w;
+ GET_LDOUBLE_LSW64(low,a);
+ if(((ha&0xffffffffffffLL)|low)==0) w = a;
+ GET_LDOUBLE_LSW64(low,b);
+ if(((hb^0x7fff000000000000LL)|low)==0) w = b;
+ return w;
+ }
+ /* scale a and b by 2**-9600 */
+ ha -= 0x2580000000000000LL;
+ hb -= 0x2580000000000000LL; k += 9600;
+ SET_LDOUBLE_MSW64(a,ha);
+ SET_LDOUBLE_MSW64(b,hb);
+ }
+ if(hb < 0x20bf000000000000LL) { /* b < 2**-8000 */
+ if(hb <= 0x0000ffffffffffffLL) { /* subnormal b or 0 */
+ u_int64_t low;
+ GET_LDOUBLE_LSW64(low,b);
+ if((hb|low)==0) return a;
+ t1=0;
+ SET_LDOUBLE_MSW64(t1,0x7ffd000000000000LL); /* t1=2^16382 */
+ b *= t1;
+ a *= t1;
+ k -= 16382;
+ GET_LDOUBLE_MSW64 (ha, a);
+ GET_LDOUBLE_MSW64 (hb, b);
+ if (hb > ha)
+ {
+ t1 = a;
+ a = b;
+ b = t1;
+ j = ha;
+ ha = hb;
+ hb = j;
+ }
+ } else { /* scale a and b by 2^9600 */
+ ha += 0x2580000000000000LL; /* a *= 2^9600 */
+ hb += 0x2580000000000000LL; /* b *= 2^9600 */
+ k -= 9600;
+ SET_LDOUBLE_MSW64(a,ha);
+ SET_LDOUBLE_MSW64(b,hb);
+ }
+ }
+ /* medium size a and b */
+ w = a-b;
+ if (w>b) {
+ t1 = 0;
+ SET_LDOUBLE_MSW64(t1,ha);
+ t2 = a-t1;
+ w = __ieee754_sqrtl(t1*t1-(b*(-b)-t2*(a+t1)));
+ } else {
+ a = a+a;
+ y1 = 0;
+ SET_LDOUBLE_MSW64(y1,hb);
+ y2 = b - y1;
+ t1 = 0;
+ SET_LDOUBLE_MSW64(t1,ha+0x0001000000000000LL);
+ t2 = a - t1;
+ w = __ieee754_sqrtl(t1*y1-(w*(-w)-(t1*y2+t2*b)));
+ }
+ if(k!=0) {
+ u_int64_t high;
+ t1 = 1;
+ GET_LDOUBLE_MSW64(high,t1);
+ SET_LDOUBLE_MSW64(t1,high+(k<<48));
+ w *= t1;
+ math_check_force_underflow_nonneg (w);
+ return w;
+ } else return w;
+}
+strong_alias (__ieee754_hypotl, __hypotl_finite)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128/e_ilogbl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128/e_ilogbl.c
new file mode 100644
index 0000000000..9effe6386a
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128/e_ilogbl.c
@@ -0,0 +1,56 @@
+/* s_ilogbl.c -- long double version of s_ilogb.c.
+ * Conversion to IEEE quad long double by Jakub Jelinek, jj@ultra.linux.cz.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: $";
+#endif
+
+/* ilogbl(long double x)
+ * return the binary exponent of non-zero x
+ * ilogbl(0) = FP_ILOGB0
+ * ilogbl(NaN) = FP_ILOGBNAN (no signal is raised)
+ * ilogbl(+-Inf) = INT_MAX (no signal is raised)
+ */
+
+#include <limits.h>
+#include <math.h>
+#include <math_private.h>
+
+int __ieee754_ilogbl (_Float128 x)
+{
+ int64_t hx,lx;
+ int ix;
+
+ GET_LDOUBLE_WORDS64(hx,lx,x);
+ hx &= 0x7fffffffffffffffLL;
+ if(hx <= 0x0001000000000000LL) {
+ if((hx|lx)==0)
+ return FP_ILOGB0; /* ilogbl(0) = FP_ILOGB0 */
+ else /* subnormal x */
+ if(hx==0) {
+ for (ix = -16431; lx>0; lx<<=1) ix -=1;
+ } else {
+ for (ix = -16382, hx<<=15; hx>0; hx<<=1) ix -=1;
+ }
+ return ix;
+ }
+ else if (hx<0x7fff000000000000LL) return (hx>>48)-0x3fff;
+ else if (FP_ILOGBNAN != INT_MAX) {
+ /* ISO C99 requires ilogbl(+-Inf) == INT_MAX. */
+ if (((hx^0x7fff000000000000LL)|lx) == 0)
+ return INT_MAX;
+ }
+ return FP_ILOGBNAN;
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128/e_j0l.c b/REORG.TODO/sysdeps/ieee754/ldbl-128/e_j0l.c
new file mode 100644
index 0000000000..fb8d3518ce
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128/e_j0l.c
@@ -0,0 +1,937 @@
+/* j0l.c
+ *
+ * Bessel function of order zero
+ *
+ *
+ *
+ * SYNOPSIS:
+ *
+ * long double x, y, j0l();
+ *
+ * y = j0l( x );
+ *
+ *
+ *
+ * DESCRIPTION:
+ *
+ * Returns Bessel function of first kind, order zero of the argument.
+ *
+ * The domain is divided into two major intervals [0, 2] and
+ * (2, infinity). In the first interval the rational approximation
+ * is J0(x) = 1 - x^2 / 4 + x^4 R(x^2)
+ * The second interval is further partitioned into eight equal segments
+ * of 1/x.
+ *
+ * J0(x) = sqrt(2/(pi x)) (P0(x) cos(X) - Q0(x) sin(X)),
+ * X = x - pi/4,
+ *
+ * and the auxiliary functions are given by
+ *
+ * J0(x)cos(X) + Y0(x)sin(X) = sqrt( 2/(pi x)) P0(x),
+ * P0(x) = 1 + 1/x^2 R(1/x^2)
+ *
+ * Y0(x)cos(X) - J0(x)sin(X) = sqrt( 2/(pi x)) Q0(x),
+ * Q0(x) = 1/x (-.125 + 1/x^2 R(1/x^2))
+ *
+ *
+ *
+ * ACCURACY:
+ *
+ * Absolute error:
+ * arithmetic domain # trials peak rms
+ * IEEE 0, 30 100000 1.7e-34 2.4e-35
+ *
+ *
+ */
+
+/* y0l.c
+ *
+ * Bessel function of the second kind, order zero
+ *
+ *
+ *
+ * SYNOPSIS:
+ *
+ * double x, y, y0l();
+ *
+ * y = y0l( x );
+ *
+ *
+ *
+ * DESCRIPTION:
+ *
+ * Returns Bessel function of the second kind, of order
+ * zero, of the argument.
+ *
+ * The approximation is the same as for J0(x), and
+ * Y0(x) = sqrt(2/(pi x)) (P0(x) sin(X) + Q0(x) cos(X)).
+ *
+ * ACCURACY:
+ *
+ * Absolute error, when y0(x) < 1; else relative error:
+ *
+ * arithmetic domain # trials peak rms
+ * IEEE 0, 30 100000 3.0e-34 2.7e-35
+ *
+ */
+
+/* Copyright 2001 by Stephen L. Moshier (moshier@na-net.ornl.gov).
+
+ This 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 2.1 of the License, or (at your option) any later version.
+
+ This 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 this library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+#include <math_private.h>
+#include <float.h>
+
+/* 1 / sqrt(pi) */
+static const _Float128 ONEOSQPI = L(5.6418958354775628694807945156077258584405E-1);
+/* 2 / pi */
+static const _Float128 TWOOPI = L(6.3661977236758134307553505349005744813784E-1);
+static const _Float128 zero = 0;
+
+/* J0(x) = 1 - x^2/4 + x^2 x^2 R(x^2)
+ Peak relative error 3.4e-37
+ 0 <= x <= 2 */
+#define NJ0_2N 6
+static const _Float128 J0_2N[NJ0_2N + 1] = {
+ L(3.133239376997663645548490085151484674892E16),
+ L(-5.479944965767990821079467311839107722107E14),
+ L(6.290828903904724265980249871997551894090E12),
+ L(-3.633750176832769659849028554429106299915E10),
+ L(1.207743757532429576399485415069244807022E8),
+ L(-2.107485999925074577174305650549367415465E5),
+ L(1.562826808020631846245296572935547005859E2),
+};
+#define NJ0_2D 6
+static const _Float128 J0_2D[NJ0_2D + 1] = {
+ L(2.005273201278504733151033654496928968261E18),
+ L(2.063038558793221244373123294054149790864E16),
+ L(1.053350447931127971406896594022010524994E14),
+ L(3.496556557558702583143527876385508882310E11),
+ L(8.249114511878616075860654484367133976306E8),
+ L(1.402965782449571800199759247964242790589E6),
+ L(1.619910762853439600957801751815074787351E3),
+ /* 1.000000000000000000000000000000000000000E0 */
+};
+
+/* J0(x)cosX + Y0(x)sinX = sqrt( 2/(pi x)) P0(x), P0(x) = 1 + 1/x^2 R(1/x^2),
+ 0 <= 1/x <= .0625
+ Peak relative error 3.3e-36 */
+#define NP16_IN 9
+static const _Float128 P16_IN[NP16_IN + 1] = {
+ L(-1.901689868258117463979611259731176301065E-16),
+ L(-1.798743043824071514483008340803573980931E-13),
+ L(-6.481746687115262291873324132944647438959E-11),
+ L(-1.150651553745409037257197798528294248012E-8),
+ L(-1.088408467297401082271185599507222695995E-6),
+ L(-5.551996725183495852661022587879817546508E-5),
+ L(-1.477286941214245433866838787454880214736E-3),
+ L(-1.882877976157714592017345347609200402472E-2),
+ L(-9.620983176855405325086530374317855880515E-2),
+ L(-1.271468546258855781530458854476627766233E-1),
+};
+#define NP16_ID 9
+static const _Float128 P16_ID[NP16_ID + 1] = {
+ L(2.704625590411544837659891569420764475007E-15),
+ L(2.562526347676857624104306349421985403573E-12),
+ L(9.259137589952741054108665570122085036246E-10),
+ L(1.651044705794378365237454962653430805272E-7),
+ L(1.573561544138733044977714063100859136660E-5),
+ L(8.134482112334882274688298469629884804056E-4),
+ L(2.219259239404080863919375103673593571689E-2),
+ L(2.976990606226596289580242451096393862792E-1),
+ L(1.713895630454693931742734911930937246254E0),
+ L(3.231552290717904041465898249160757368855E0),
+ /* 1.000000000000000000000000000000000000000E0 */
+};
+
+/* J0(x)cosX + Y0(x)sinX = sqrt( 2/(pi x)) P0(x), P0(x) = 1 + 1/x^2 R(1/x^2)
+ 0.0625 <= 1/x <= 0.125
+ Peak relative error 2.4e-35 */
+#define NP8_16N 10
+static const _Float128 P8_16N[NP8_16N + 1] = {
+ L(-2.335166846111159458466553806683579003632E-15),
+ L(-1.382763674252402720401020004169367089975E-12),
+ L(-3.192160804534716696058987967592784857907E-10),
+ L(-3.744199606283752333686144670572632116899E-8),
+ L(-2.439161236879511162078619292571922772224E-6),
+ L(-9.068436986859420951664151060267045346549E-5),
+ L(-1.905407090637058116299757292660002697359E-3),
+ L(-2.164456143936718388053842376884252978872E-2),
+ L(-1.212178415116411222341491717748696499966E-1),
+ L(-2.782433626588541494473277445959593334494E-1),
+ L(-1.670703190068873186016102289227646035035E-1),
+};
+#define NP8_16D 10
+static const _Float128 P8_16D[NP8_16D + 1] = {
+ L(3.321126181135871232648331450082662856743E-14),
+ L(1.971894594837650840586859228510007703641E-11),
+ L(4.571144364787008285981633719513897281690E-9),
+ L(5.396419143536287457142904742849052402103E-7),
+ L(3.551548222385845912370226756036899901549E-5),
+ L(1.342353874566932014705609788054598013516E-3),
+ L(2.899133293006771317589357444614157734385E-2),
+ L(3.455374978185770197704507681491574261545E-1),
+ L(2.116616964297512311314454834712634820514E0),
+ L(5.850768316827915470087758636881584174432E0),
+ L(5.655273858938766830855753983631132928968E0),
+ /* 1.000000000000000000000000000000000000000E0 */
+};
+
+/* J0(x)cosX + Y0(x)sinX = sqrt( 2/(pi x)) P0(x), P0(x) = 1 + 1/x^2 R(1/x^2)
+ 0.125 <= 1/x <= 0.1875
+ Peak relative error 2.7e-35 */
+#define NP5_8N 10
+static const _Float128 P5_8N[NP5_8N + 1] = {
+ L(-1.270478335089770355749591358934012019596E-12),
+ L(-4.007588712145412921057254992155810347245E-10),
+ L(-4.815187822989597568124520080486652009281E-8),
+ L(-2.867070063972764880024598300408284868021E-6),
+ L(-9.218742195161302204046454768106063638006E-5),
+ L(-1.635746821447052827526320629828043529997E-3),
+ L(-1.570376886640308408247709616497261011707E-2),
+ L(-7.656484795303305596941813361786219477807E-2),
+ L(-1.659371030767513274944805479908858628053E-1),
+ L(-1.185340550030955660015841796219919804915E-1),
+ L(-8.920026499909994671248893388013790366712E-3),
+};
+#define NP5_8D 9
+static const _Float128 P5_8D[NP5_8D + 1] = {
+ L(1.806902521016705225778045904631543990314E-11),
+ L(5.728502760243502431663549179135868966031E-9),
+ L(6.938168504826004255287618819550667978450E-7),
+ L(4.183769964807453250763325026573037785902E-5),
+ L(1.372660678476925468014882230851637878587E-3),
+ L(2.516452105242920335873286419212708961771E-2),
+ L(2.550502712902647803796267951846557316182E-1),
+ L(1.365861559418983216913629123778747617072E0),
+ L(3.523825618308783966723472468855042541407E0),
+ L(3.656365803506136165615111349150536282434E0),
+ /* 1.000000000000000000000000000000000000000E0 */
+};
+
+/* J0(x)cosX + Y0(x)sinX = sqrt( 2/(pi x)) P0(x), P0(x) = 1 + 1/x^2 R(1/x^2)
+ Peak relative error 3.5e-35
+ 0.1875 <= 1/x <= 0.25 */
+#define NP4_5N 9
+static const _Float128 P4_5N[NP4_5N + 1] = {
+ L(-9.791405771694098960254468859195175708252E-10),
+ L(-1.917193059944531970421626610188102836352E-7),
+ L(-1.393597539508855262243816152893982002084E-5),
+ L(-4.881863490846771259880606911667479860077E-4),
+ L(-8.946571245022470127331892085881699269853E-3),
+ L(-8.707474232568097513415336886103899434251E-2),
+ L(-4.362042697474650737898551272505525973766E-1),
+ L(-1.032712171267523975431451359962375617386E0),
+ L(-9.630502683169895107062182070514713702346E-1),
+ L(-2.251804386252969656586810309252357233320E-1),
+};
+#define NP4_5D 9
+static const _Float128 P4_5D[NP4_5D + 1] = {
+ L(1.392555487577717669739688337895791213139E-8),
+ L(2.748886559120659027172816051276451376854E-6),
+ L(2.024717710644378047477189849678576659290E-4),
+ L(7.244868609350416002930624752604670292469E-3),
+ L(1.373631762292244371102989739300382152416E-1),
+ L(1.412298581400224267910294815260613240668E0),
+ L(7.742495637843445079276397723849017617210E0),
+ L(2.138429269198406512028307045259503811861E1),
+ L(2.651547684548423476506826951831712762610E1),
+ L(1.167499382465291931571685222882909166935E1),
+ /* 1.000000000000000000000000000000000000000E0 */
+};
+
+/* J0(x)cosX + Y0(x)sinX = sqrt( 2/(pi x)) P0(x), P0(x) = 1 + 1/x^2 R(1/x^2)
+ Peak relative error 2.3e-36
+ 0.25 <= 1/x <= 0.3125 */
+#define NP3r2_4N 9
+static const _Float128 P3r2_4N[NP3r2_4N + 1] = {
+ L(-2.589155123706348361249809342508270121788E-8),
+ L(-3.746254369796115441118148490849195516593E-6),
+ L(-1.985595497390808544622893738135529701062E-4),
+ L(-5.008253705202932091290132760394976551426E-3),
+ L(-6.529469780539591572179155511840853077232E-2),
+ L(-4.468736064761814602927408833818990271514E-1),
+ L(-1.556391252586395038089729428444444823380E0),
+ L(-2.533135309840530224072920725976994981638E0),
+ L(-1.605509621731068453869408718565392869560E0),
+ L(-2.518966692256192789269859830255724429375E-1),
+};
+#define NP3r2_4D 9
+static const _Float128 P3r2_4D[NP3r2_4D + 1] = {
+ L(3.682353957237979993646169732962573930237E-7),
+ L(5.386741661883067824698973455566332102029E-5),
+ L(2.906881154171822780345134853794241037053E-3),
+ L(7.545832595801289519475806339863492074126E-2),
+ L(1.029405357245594877344360389469584526654E0),
+ L(7.565706120589873131187989560509757626725E0),
+ L(2.951172890699569545357692207898667665796E1),
+ L(5.785723537170311456298467310529815457536E1),
+ L(5.095621464598267889126015412522773474467E1),
+ L(1.602958484169953109437547474953308401442E1),
+ /* 1.000000000000000000000000000000000000000E0 */
+};
+
+/* J0(x)cosX + Y0(x)sinX = sqrt( 2/(pi x)) P0(x), P0(x) = 1 + 1/x^2 R(1/x^2)
+ Peak relative error 1.0e-35
+ 0.3125 <= 1/x <= 0.375 */
+#define NP2r7_3r2N 9
+static const _Float128 P2r7_3r2N[NP2r7_3r2N + 1] = {
+ L(-1.917322340814391131073820537027234322550E-7),
+ L(-1.966595744473227183846019639723259011906E-5),
+ L(-7.177081163619679403212623526632690465290E-4),
+ L(-1.206467373860974695661544653741899755695E-2),
+ L(-1.008656452188539812154551482286328107316E-1),
+ L(-4.216016116408810856620947307438823892707E-1),
+ L(-8.378631013025721741744285026537009814161E-1),
+ L(-6.973895635309960850033762745957946272579E-1),
+ L(-1.797864718878320770670740413285763554812E-1),
+ L(-4.098025357743657347681137871388402849581E-3),
+};
+#define NP2r7_3r2D 8
+static const _Float128 P2r7_3r2D[NP2r7_3r2D + 1] = {
+ L(2.726858489303036441686496086962545034018E-6),
+ L(2.840430827557109238386808968234848081424E-4),
+ L(1.063826772041781947891481054529454088832E-2),
+ L(1.864775537138364773178044431045514405468E-1),
+ L(1.665660052857205170440952607701728254211E0),
+ L(7.723745889544331153080842168958348568395E0),
+ L(1.810726427571829798856428548102077799835E1),
+ L(1.986460672157794440666187503833545388527E1),
+ L(8.645503204552282306364296517220055815488E0),
+ /* 1.000000000000000000000000000000000000000E0 */
+};
+
+/* J0(x)cosX + Y0(x)sinX = sqrt( 2/(pi x)) P0(x), P0(x) = 1 + 1/x^2 R(1/x^2)
+ Peak relative error 1.3e-36
+ 0.3125 <= 1/x <= 0.4375 */
+#define NP2r3_2r7N 9
+static const _Float128 P2r3_2r7N[NP2r3_2r7N + 1] = {
+ L(-1.594642785584856746358609622003310312622E-6),
+ L(-1.323238196302221554194031733595194539794E-4),
+ L(-3.856087818696874802689922536987100372345E-3),
+ L(-5.113241710697777193011470733601522047399E-2),
+ L(-3.334229537209911914449990372942022350558E-1),
+ L(-1.075703518198127096179198549659283422832E0),
+ L(-1.634174803414062725476343124267110981807E0),
+ L(-1.030133247434119595616826842367268304880E0),
+ L(-1.989811539080358501229347481000707289391E-1),
+ L(-3.246859189246653459359775001466924610236E-3),
+};
+#define NP2r3_2r7D 8
+static const _Float128 P2r3_2r7D[NP2r3_2r7D + 1] = {
+ L(2.267936634217251403663034189684284173018E-5),
+ L(1.918112982168673386858072491437971732237E-3),
+ L(5.771704085468423159125856786653868219522E-2),
+ L(8.056124451167969333717642810661498890507E-1),
+ L(5.687897967531010276788680634413789328776E0),
+ L(2.072596760717695491085444438270778394421E1),
+ L(3.801722099819929988585197088613160496684E1),
+ L(3.254620235902912339534998592085115836829E1),
+ L(1.104847772130720331801884344645060675036E1),
+ /* 1.000000000000000000000000000000000000000E0 */
+};
+
+/* J0(x)cosX + Y0(x)sinX = sqrt( 2/(pi x)) P0(x), P0(x) = 1 + 1/x^2 R(1/x^2)
+ Peak relative error 1.2e-35
+ 0.4375 <= 1/x <= 0.5 */
+#define NP2_2r3N 8
+static const _Float128 P2_2r3N[NP2_2r3N + 1] = {
+ L(-1.001042324337684297465071506097365389123E-4),
+ L(-6.289034524673365824853547252689991418981E-3),
+ L(-1.346527918018624234373664526930736205806E-1),
+ L(-1.268808313614288355444506172560463315102E0),
+ L(-5.654126123607146048354132115649177406163E0),
+ L(-1.186649511267312652171775803270911971693E1),
+ L(-1.094032424931998612551588246779200724257E1),
+ L(-3.728792136814520055025256353193674625267E0),
+ L(-3.000348318524471807839934764596331810608E-1),
+};
+#define NP2_2r3D 8
+static const _Float128 P2_2r3D[NP2_2r3D + 1] = {
+ L(1.423705538269770974803901422532055612980E-3),
+ L(9.171476630091439978533535167485230575894E-2),
+ L(2.049776318166637248868444600215942828537E0),
+ L(2.068970329743769804547326701946144899583E1),
+ L(1.025103500560831035592731539565060347709E2),
+ L(2.528088049697570728252145557167066708284E2),
+ L(2.992160327587558573740271294804830114205E2),
+ L(1.540193761146551025832707739468679973036E2),
+ L(2.779516701986912132637672140709452502650E1),
+ /* 1.000000000000000000000000000000000000000E0 */
+};
+
+/* Y0(x)cosX - J0(x)sinX = sqrt( 2/(pi x)) Q0(x),
+ Q0(x) = 1/x (-.125 + 1/x^2 R(1/x^2))
+ Peak relative error 2.2e-35
+ 0 <= 1/x <= .0625 */
+#define NQ16_IN 10
+static const _Float128 Q16_IN[NQ16_IN + 1] = {
+ L(2.343640834407975740545326632205999437469E-18),
+ L(2.667978112927811452221176781536278257448E-15),
+ L(1.178415018484555397390098879501969116536E-12),
+ L(2.622049767502719728905924701288614016597E-10),
+ L(3.196908059607618864801313380896308968673E-8),
+ L(2.179466154171673958770030655199434798494E-6),
+ L(8.139959091628545225221976413795645177291E-5),
+ L(1.563900725721039825236927137885747138654E-3),
+ L(1.355172364265825167113562519307194840307E-2),
+ L(3.928058355906967977269780046844768588532E-2),
+ L(1.107891967702173292405380993183694932208E-2),
+};
+#define NQ16_ID 9
+static const _Float128 Q16_ID[NQ16_ID + 1] = {
+ L(3.199850952578356211091219295199301766718E-17),
+ L(3.652601488020654842194486058637953363918E-14),
+ L(1.620179741394865258354608590461839031281E-11),
+ L(3.629359209474609630056463248923684371426E-9),
+ L(4.473680923894354600193264347733477363305E-7),
+ L(3.106368086644715743265603656011050476736E-5),
+ L(1.198239259946770604954664925153424252622E-3),
+ L(2.446041004004283102372887804475767568272E-2),
+ L(2.403235525011860603014707768815113698768E-1),
+ L(9.491006790682158612266270665136910927149E-1),
+ /* 1.000000000000000000000000000000000000000E0 */
+ };
+
+/* Y0(x)cosX - J0(x)sinX = sqrt( 2/(pi x)) Q0(x),
+ Q0(x) = 1/x (-.125 + 1/x^2 R(1/x^2))
+ Peak relative error 5.1e-36
+ 0.0625 <= 1/x <= 0.125 */
+#define NQ8_16N 11
+static const _Float128 Q8_16N[NQ8_16N + 1] = {
+ L(1.001954266485599464105669390693597125904E-17),
+ L(7.545499865295034556206475956620160007849E-15),
+ L(2.267838684785673931024792538193202559922E-12),
+ L(3.561909705814420373609574999542459912419E-10),
+ L(3.216201422768092505214730633842924944671E-8),
+ L(1.731194793857907454569364622452058554314E-6),
+ L(5.576944613034537050396518509871004586039E-5),
+ L(1.051787760316848982655967052985391418146E-3),
+ L(1.102852974036687441600678598019883746959E-2),
+ L(5.834647019292460494254225988766702933571E-2),
+ L(1.290281921604364618912425380717127576529E-1),
+ L(7.598886310387075708640370806458926458301E-2),
+};
+#define NQ8_16D 11
+static const _Float128 Q8_16D[NQ8_16D + 1] = {
+ L(1.368001558508338469503329967729951830843E-16),
+ L(1.034454121857542147020549303317348297289E-13),
+ L(3.128109209247090744354764050629381674436E-11),
+ L(4.957795214328501986562102573522064468671E-9),
+ L(4.537872468606711261992676606899273588899E-7),
+ L(2.493639207101727713192687060517509774182E-5),
+ L(8.294957278145328349785532236663051405805E-4),
+ L(1.646471258966713577374948205279380115839E-2),
+ L(1.878910092770966718491814497982191447073E-1),
+ L(1.152641605706170353727903052525652504075E0),
+ L(3.383550240669773485412333679367792932235E0),
+ L(3.823875252882035706910024716609908473970E0),
+ /* 1.000000000000000000000000000000000000000E0 */
+};
+
+/* Y0(x)cosX - J0(x)sinX = sqrt( 2/(pi x)) Q0(x),
+ Q0(x) = 1/x (-.125 + 1/x^2 R(1/x^2))
+ Peak relative error 3.9e-35
+ 0.125 <= 1/x <= 0.1875 */
+#define NQ5_8N 10
+static const _Float128 Q5_8N[NQ5_8N + 1] = {
+ L(1.750399094021293722243426623211733898747E-13),
+ L(6.483426211748008735242909236490115050294E-11),
+ L(9.279430665656575457141747875716899958373E-9),
+ L(6.696634968526907231258534757736576340266E-7),
+ L(2.666560823798895649685231292142838188061E-5),
+ L(6.025087697259436271271562769707550594540E-4),
+ L(7.652807734168613251901945778921336353485E-3),
+ L(5.226269002589406461622551452343519078905E-2),
+ L(1.748390159751117658969324896330142895079E-1),
+ L(2.378188719097006494782174902213083589660E-1),
+ L(8.383984859679804095463699702165659216831E-2),
+};
+#define NQ5_8D 10
+static const _Float128 Q5_8D[NQ5_8D + 1] = {
+ L(2.389878229704327939008104855942987615715E-12),
+ L(8.926142817142546018703814194987786425099E-10),
+ L(1.294065862406745901206588525833274399038E-7),
+ L(9.524139899457666250828752185212769682191E-6),
+ L(3.908332488377770886091936221573123353489E-4),
+ L(9.250427033957236609624199884089916836748E-3),
+ L(1.263420066165922645975830877751588421451E-1),
+ L(9.692527053860420229711317379861733180654E-1),
+ L(3.937813834630430172221329298841520707954E0),
+ L(7.603126427436356534498908111445191312181E0),
+ L(5.670677653334105479259958485084550934305E0),
+ /* 1.000000000000000000000000000000000000000E0 */
+};
+
+/* Y0(x)cosX - J0(x)sinX = sqrt( 2/(pi x)) Q0(x),
+ Q0(x) = 1/x (-.125 + 1/x^2 R(1/x^2))
+ Peak relative error 3.2e-35
+ 0.1875 <= 1/x <= 0.25 */
+#define NQ4_5N 10
+static const _Float128 Q4_5N[NQ4_5N + 1] = {
+ L(2.233870042925895644234072357400122854086E-11),
+ L(5.146223225761993222808463878999151699792E-9),
+ L(4.459114531468296461688753521109797474523E-7),
+ L(1.891397692931537975547242165291668056276E-5),
+ L(4.279519145911541776938964806470674565504E-4),
+ L(5.275239415656560634702073291768904783989E-3),
+ L(3.468698403240744801278238473898432608887E-2),
+ L(1.138773146337708415188856882915457888274E-1),
+ L(1.622717518946443013587108598334636458955E-1),
+ L(7.249040006390586123760992346453034628227E-2),
+ L(1.941595365256460232175236758506411486667E-3),
+};
+#define NQ4_5D 9
+static const _Float128 Q4_5D[NQ4_5D + 1] = {
+ L(3.049977232266999249626430127217988047453E-10),
+ L(7.120883230531035857746096928889676144099E-8),
+ L(6.301786064753734446784637919554359588859E-6),
+ L(2.762010530095069598480766869426308077192E-4),
+ L(6.572163250572867859316828886203406361251E-3),
+ L(8.752566114841221958200215255461843397776E-2),
+ L(6.487654992874805093499285311075289932664E-1),
+ L(2.576550017826654579451615283022812801435E0),
+ L(5.056392229924022835364779562707348096036E0),
+ L(4.179770081068251464907531367859072157773E0),
+ /* 1.000000000000000000000000000000000000000E0 */
+};
+
+/* Y0(x)cosX - J0(x)sinX = sqrt( 2/(pi x)) Q0(x),
+ Q0(x) = 1/x (-.125 + 1/x^2 R(1/x^2))
+ Peak relative error 1.4e-36
+ 0.25 <= 1/x <= 0.3125 */
+#define NQ3r2_4N 10
+static const _Float128 Q3r2_4N[NQ3r2_4N + 1] = {
+ L(6.126167301024815034423262653066023684411E-10),
+ L(1.043969327113173261820028225053598975128E-7),
+ L(6.592927270288697027757438170153763220190E-6),
+ L(2.009103660938497963095652951912071336730E-4),
+ L(3.220543385492643525985862356352195896964E-3),
+ L(2.774405975730545157543417650436941650990E-2),
+ L(1.258114008023826384487378016636555041129E-1),
+ L(2.811724258266902502344701449984698323860E-1),
+ L(2.691837665193548059322831687432415014067E-1),
+ L(7.949087384900985370683770525312735605034E-2),
+ L(1.229509543620976530030153018986910810747E-3),
+};
+#define NQ3r2_4D 9
+static const _Float128 Q3r2_4D[NQ3r2_4D + 1] = {
+ L(8.364260446128475461539941389210166156568E-9),
+ L(1.451301850638956578622154585560759862764E-6),
+ L(9.431830010924603664244578867057141839463E-5),
+ L(3.004105101667433434196388593004526182741E-3),
+ L(5.148157397848271739710011717102773780221E-2),
+ L(4.901089301726939576055285374953887874895E-1),
+ L(2.581760991981709901216967665934142240346E0),
+ L(7.257105880775059281391729708630912791847E0),
+ L(1.006014717326362868007913423810737369312E1),
+ L(5.879416600465399514404064187445293212470E0),
+ /* 1.000000000000000000000000000000000000000E0*/
+};
+
+/* Y0(x)cosX - J0(x)sinX = sqrt( 2/(pi x)) Q0(x),
+ Q0(x) = 1/x (-.125 + 1/x^2 R(1/x^2))
+ Peak relative error 3.8e-36
+ 0.3125 <= 1/x <= 0.375 */
+#define NQ2r7_3r2N 9
+static const _Float128 Q2r7_3r2N[NQ2r7_3r2N + 1] = {
+ L(7.584861620402450302063691901886141875454E-8),
+ L(9.300939338814216296064659459966041794591E-6),
+ L(4.112108906197521696032158235392604947895E-4),
+ L(8.515168851578898791897038357239630654431E-3),
+ L(8.971286321017307400142720556749573229058E-2),
+ L(4.885856732902956303343015636331874194498E-1),
+ L(1.334506268733103291656253500506406045846E0),
+ L(1.681207956863028164179042145803851824654E0),
+ L(8.165042692571721959157677701625853772271E-1),
+ L(9.805848115375053300608712721986235900715E-2),
+};
+#define NQ2r7_3r2D 9
+static const _Float128 Q2r7_3r2D[NQ2r7_3r2D + 1] = {
+ L(1.035586492113036586458163971239438078160E-6),
+ L(1.301999337731768381683593636500979713689E-4),
+ L(5.993695702564527062553071126719088859654E-3),
+ L(1.321184892887881883489141186815457808785E-1),
+ L(1.528766555485015021144963194165165083312E0),
+ L(9.561463309176490874525827051566494939295E0),
+ L(3.203719484883967351729513662089163356911E1),
+ L(5.497294687660930446641539152123568668447E1),
+ L(4.391158169390578768508675452986948391118E1),
+ L(1.347836630730048077907818943625789418378E1),
+ /* 1.000000000000000000000000000000000000000E0 */
+};
+
+/* Y0(x)cosX - J0(x)sinX = sqrt( 2/(pi x)) Q0(x),
+ Q0(x) = 1/x (-.125 + 1/x^2 R(1/x^2))
+ Peak relative error 2.2e-35
+ 0.375 <= 1/x <= 0.4375 */
+#define NQ2r3_2r7N 9
+static const _Float128 Q2r3_2r7N[NQ2r3_2r7N + 1] = {
+ L(4.455027774980750211349941766420190722088E-7),
+ L(4.031998274578520170631601850866780366466E-5),
+ L(1.273987274325947007856695677491340636339E-3),
+ L(1.818754543377448509897226554179659122873E-2),
+ L(1.266748858326568264126353051352269875352E-1),
+ L(4.327578594728723821137731555139472880414E-1),
+ L(6.892532471436503074928194969154192615359E-1),
+ L(4.490775818438716873422163588640262036506E-1),
+ L(8.649615949297322440032000346117031581572E-2),
+ L(7.261345286655345047417257611469066147561E-4),
+};
+#define NQ2r3_2r7D 8
+static const _Float128 Q2r3_2r7D[NQ2r3_2r7D + 1] = {
+ L(6.082600739680555266312417978064954793142E-6),
+ L(5.693622538165494742945717226571441747567E-4),
+ L(1.901625907009092204458328768129666975975E-2),
+ L(2.958689532697857335456896889409923371570E-1),
+ L(2.343124711045660081603809437993368799568E0),
+ L(9.665894032187458293568704885528192804376E0),
+ L(2.035273104990617136065743426322454881353E1),
+ L(2.044102010478792896815088858740075165531E1),
+ L(8.445937177863155827844146643468706599304E0),
+ /* 1.000000000000000000000000000000000000000E0 */
+};
+
+/* Y0(x)cosX - J0(x)sinX = sqrt( 2/(pi x)) Q0(x),
+ Q0(x) = 1/x (-.125 + 1/x^2 R(1/x^2))
+ Peak relative error 3.1e-36
+ 0.4375 <= 1/x <= 0.5 */
+#define NQ2_2r3N 9
+static const _Float128 Q2_2r3N[NQ2_2r3N + 1] = {
+ L(2.817566786579768804844367382809101929314E-6),
+ L(2.122772176396691634147024348373539744935E-4),
+ L(5.501378031780457828919593905395747517585E-3),
+ L(6.355374424341762686099147452020466524659E-2),
+ L(3.539652320122661637429658698954748337223E-1),
+ L(9.571721066119617436343740541777014319695E-1),
+ L(1.196258777828426399432550698612171955305E0),
+ L(6.069388659458926158392384709893753793967E-1),
+ L(9.026746127269713176512359976978248763621E-2),
+ L(5.317668723070450235320878117210807236375E-4),
+};
+#define NQ2_2r3D 8
+static const _Float128 Q2_2r3D[NQ2_2r3D + 1] = {
+ L(3.846924354014260866793741072933159380158E-5),
+ L(3.017562820057704325510067178327449946763E-3),
+ L(8.356305620686867949798885808540444210935E-2),
+ L(1.068314930499906838814019619594424586273E0),
+ L(6.900279623894821067017966573640732685233E0),
+ L(2.307667390886377924509090271780839563141E1),
+ L(3.921043465412723970791036825401273528513E1),
+ L(3.167569478939719383241775717095729233436E1),
+ L(1.051023841699200920276198346301543665909E1),
+ /* 1.000000000000000000000000000000000000000E0*/
+};
+
+
+/* Evaluate P[n] x^n + P[n-1] x^(n-1) + ... + P[0] */
+
+static _Float128
+neval (_Float128 x, const _Float128 *p, int n)
+{
+ _Float128 y;
+
+ p += n;
+ y = *p--;
+ do
+ {
+ y = y * x + *p--;
+ }
+ while (--n > 0);
+ return y;
+}
+
+
+/* Evaluate x^n+1 + P[n] x^(n) + P[n-1] x^(n-1) + ... + P[0] */
+
+static _Float128
+deval (_Float128 x, const _Float128 *p, int n)
+{
+ _Float128 y;
+
+ p += n;
+ y = x + *p--;
+ do
+ {
+ y = y * x + *p--;
+ }
+ while (--n > 0);
+ return y;
+}
+
+
+/* Bessel function of the first kind, order zero. */
+
+_Float128
+__ieee754_j0l (_Float128 x)
+{
+ _Float128 xx, xinv, z, p, q, c, s, cc, ss;
+
+ if (! isfinite (x))
+ {
+ if (x != x)
+ return x + x;
+ else
+ return 0;
+ }
+ if (x == 0)
+ return 1;
+
+ xx = fabsl (x);
+ if (xx <= 2)
+ {
+ if (xx < L(0x1p-57))
+ return 1;
+ /* 0 <= x <= 2 */
+ z = xx * xx;
+ p = z * z * neval (z, J0_2N, NJ0_2N) / deval (z, J0_2D, NJ0_2D);
+ p -= L(0.25) * z;
+ p += 1;
+ return p;
+ }
+
+ /* X = x - pi/4
+ cos(X) = cos(x) cos(pi/4) + sin(x) sin(pi/4)
+ = 1/sqrt(2) * (cos(x) + sin(x))
+ sin(X) = sin(x) cos(pi/4) - cos(x) sin(pi/4)
+ = 1/sqrt(2) * (sin(x) - cos(x))
+ sin(x) +- cos(x) = -cos(2x)/(sin(x) -+ cos(x))
+ cf. Fdlibm. */
+ __sincosl (xx, &s, &c);
+ ss = s - c;
+ cc = s + c;
+ if (xx <= LDBL_MAX / 2)
+ {
+ z = -__cosl (xx + xx);
+ if ((s * c) < 0)
+ cc = z / ss;
+ else
+ ss = z / cc;
+ }
+
+ if (xx > L(0x1p256))
+ return ONEOSQPI * cc / __ieee754_sqrtl (xx);
+
+ xinv = 1 / xx;
+ z = xinv * xinv;
+ if (xinv <= 0.25)
+ {
+ if (xinv <= 0.125)
+ {
+ if (xinv <= 0.0625)
+ {
+ p = neval (z, P16_IN, NP16_IN) / deval (z, P16_ID, NP16_ID);
+ q = neval (z, Q16_IN, NQ16_IN) / deval (z, Q16_ID, NQ16_ID);
+ }
+ else
+ {
+ p = neval (z, P8_16N, NP8_16N) / deval (z, P8_16D, NP8_16D);
+ q = neval (z, Q8_16N, NQ8_16N) / deval (z, Q8_16D, NQ8_16D);
+ }
+ }
+ else if (xinv <= 0.1875)
+ {
+ p = neval (z, P5_8N, NP5_8N) / deval (z, P5_8D, NP5_8D);
+ q = neval (z, Q5_8N, NQ5_8N) / deval (z, Q5_8D, NQ5_8D);
+ }
+ else
+ {
+ p = neval (z, P4_5N, NP4_5N) / deval (z, P4_5D, NP4_5D);
+ q = neval (z, Q4_5N, NQ4_5N) / deval (z, Q4_5D, NQ4_5D);
+ }
+ } /* .25 */
+ else /* if (xinv <= 0.5) */
+ {
+ if (xinv <= 0.375)
+ {
+ if (xinv <= 0.3125)
+ {
+ p = neval (z, P3r2_4N, NP3r2_4N) / deval (z, P3r2_4D, NP3r2_4D);
+ q = neval (z, Q3r2_4N, NQ3r2_4N) / deval (z, Q3r2_4D, NQ3r2_4D);
+ }
+ else
+ {
+ p = neval (z, P2r7_3r2N, NP2r7_3r2N)
+ / deval (z, P2r7_3r2D, NP2r7_3r2D);
+ q = neval (z, Q2r7_3r2N, NQ2r7_3r2N)
+ / deval (z, Q2r7_3r2D, NQ2r7_3r2D);
+ }
+ }
+ else if (xinv <= 0.4375)
+ {
+ p = neval (z, P2r3_2r7N, NP2r3_2r7N)
+ / deval (z, P2r3_2r7D, NP2r3_2r7D);
+ q = neval (z, Q2r3_2r7N, NQ2r3_2r7N)
+ / deval (z, Q2r3_2r7D, NQ2r3_2r7D);
+ }
+ else
+ {
+ p = neval (z, P2_2r3N, NP2_2r3N) / deval (z, P2_2r3D, NP2_2r3D);
+ q = neval (z, Q2_2r3N, NQ2_2r3N) / deval (z, Q2_2r3D, NQ2_2r3D);
+ }
+ }
+ p = 1 + z * p;
+ q = z * xinv * q;
+ q = q - L(0.125) * xinv;
+ z = ONEOSQPI * (p * cc - q * ss) / __ieee754_sqrtl (xx);
+ return z;
+}
+strong_alias (__ieee754_j0l, __j0l_finite)
+
+
+/* Y0(x) = 2/pi * log(x) * J0(x) + R(x^2)
+ Peak absolute error 1.7e-36 (relative where Y0 > 1)
+ 0 <= x <= 2 */
+#define NY0_2N 7
+static _Float128 Y0_2N[NY0_2N + 1] = {
+ L(-1.062023609591350692692296993537002558155E19),
+ L(2.542000883190248639104127452714966858866E19),
+ L(-1.984190771278515324281415820316054696545E18),
+ L(4.982586044371592942465373274440222033891E16),
+ L(-5.529326354780295177243773419090123407550E14),
+ L(3.013431465522152289279088265336861140391E12),
+ L(-7.959436160727126750732203098982718347785E9),
+ L(8.230845651379566339707130644134372793322E6),
+};
+#define NY0_2D 7
+static _Float128 Y0_2D[NY0_2D + 1] = {
+ L(1.438972634353286978700329883122253752192E20),
+ L(1.856409101981569254247700169486907405500E18),
+ L(1.219693352678218589553725579802986255614E16),
+ L(5.389428943282838648918475915779958097958E13),
+ L(1.774125762108874864433872173544743051653E11),
+ L(4.522104832545149534808218252434693007036E8),
+ L(8.872187401232943927082914504125234454930E5),
+ L(1.251945613186787532055610876304669413955E3),
+ /* 1.000000000000000000000000000000000000000E0 */
+};
+
+static const _Float128 U0 = L(-7.3804295108687225274343927948483016310862e-02);
+
+/* Bessel function of the second kind, order zero. */
+
+_Float128
+ __ieee754_y0l(_Float128 x)
+{
+ _Float128 xx, xinv, z, p, q, c, s, cc, ss;
+
+ if (! isfinite (x))
+ return 1 / (x + x * x);
+ if (x <= 0)
+ {
+ if (x < 0)
+ return (zero / (zero * x));
+ return -1 / zero; /* -inf and divide by zero exception. */
+ }
+ xx = fabsl (x);
+ if (xx <= 0x1p-57)
+ return U0 + TWOOPI * __ieee754_logl (x);
+ if (xx <= 2)
+ {
+ /* 0 <= x <= 2 */
+ z = xx * xx;
+ p = neval (z, Y0_2N, NY0_2N) / deval (z, Y0_2D, NY0_2D);
+ p = TWOOPI * __ieee754_logl (x) * __ieee754_j0l (x) + p;
+ return p;
+ }
+
+ /* X = x - pi/4
+ cos(X) = cos(x) cos(pi/4) + sin(x) sin(pi/4)
+ = 1/sqrt(2) * (cos(x) + sin(x))
+ sin(X) = sin(x) cos(pi/4) - cos(x) sin(pi/4)
+ = 1/sqrt(2) * (sin(x) - cos(x))
+ sin(x) +- cos(x) = -cos(2x)/(sin(x) -+ cos(x))
+ cf. Fdlibm. */
+ __sincosl (x, &s, &c);
+ ss = s - c;
+ cc = s + c;
+ if (xx <= LDBL_MAX / 2)
+ {
+ z = -__cosl (x + x);
+ if ((s * c) < 0)
+ cc = z / ss;
+ else
+ ss = z / cc;
+ }
+
+ if (xx > L(0x1p256))
+ return ONEOSQPI * ss / __ieee754_sqrtl (x);
+
+ xinv = 1 / xx;
+ z = xinv * xinv;
+ if (xinv <= 0.25)
+ {
+ if (xinv <= 0.125)
+ {
+ if (xinv <= 0.0625)
+ {
+ p = neval (z, P16_IN, NP16_IN) / deval (z, P16_ID, NP16_ID);
+ q = neval (z, Q16_IN, NQ16_IN) / deval (z, Q16_ID, NQ16_ID);
+ }
+ else
+ {
+ p = neval (z, P8_16N, NP8_16N) / deval (z, P8_16D, NP8_16D);
+ q = neval (z, Q8_16N, NQ8_16N) / deval (z, Q8_16D, NQ8_16D);
+ }
+ }
+ else if (xinv <= 0.1875)
+ {
+ p = neval (z, P5_8N, NP5_8N) / deval (z, P5_8D, NP5_8D);
+ q = neval (z, Q5_8N, NQ5_8N) / deval (z, Q5_8D, NQ5_8D);
+ }
+ else
+ {
+ p = neval (z, P4_5N, NP4_5N) / deval (z, P4_5D, NP4_5D);
+ q = neval (z, Q4_5N, NQ4_5N) / deval (z, Q4_5D, NQ4_5D);
+ }
+ } /* .25 */
+ else /* if (xinv <= 0.5) */
+ {
+ if (xinv <= 0.375)
+ {
+ if (xinv <= 0.3125)
+ {
+ p = neval (z, P3r2_4N, NP3r2_4N) / deval (z, P3r2_4D, NP3r2_4D);
+ q = neval (z, Q3r2_4N, NQ3r2_4N) / deval (z, Q3r2_4D, NQ3r2_4D);
+ }
+ else
+ {
+ p = neval (z, P2r7_3r2N, NP2r7_3r2N)
+ / deval (z, P2r7_3r2D, NP2r7_3r2D);
+ q = neval (z, Q2r7_3r2N, NQ2r7_3r2N)
+ / deval (z, Q2r7_3r2D, NQ2r7_3r2D);
+ }
+ }
+ else if (xinv <= 0.4375)
+ {
+ p = neval (z, P2r3_2r7N, NP2r3_2r7N)
+ / deval (z, P2r3_2r7D, NP2r3_2r7D);
+ q = neval (z, Q2r3_2r7N, NQ2r3_2r7N)
+ / deval (z, Q2r3_2r7D, NQ2r3_2r7D);
+ }
+ else
+ {
+ p = neval (z, P2_2r3N, NP2_2r3N) / deval (z, P2_2r3D, NP2_2r3D);
+ q = neval (z, Q2_2r3N, NQ2_2r3N) / deval (z, Q2_2r3D, NQ2_2r3D);
+ }
+ }
+ p = 1 + z * p;
+ q = z * xinv * q;
+ q = q - L(0.125) * xinv;
+ z = ONEOSQPI * (p * ss + q * cc) / __ieee754_sqrtl (x);
+ return z;
+}
+strong_alias (__ieee754_y0l, __y0l_finite)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128/e_j1l.c b/REORG.TODO/sysdeps/ieee754/ldbl-128/e_j1l.c
new file mode 100644
index 0000000000..6fc69faa3c
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128/e_j1l.c
@@ -0,0 +1,961 @@
+/* j1l.c
+ *
+ * Bessel function of order one
+ *
+ *
+ *
+ * SYNOPSIS:
+ *
+ * long double x, y, j1l();
+ *
+ * y = j1l( x );
+ *
+ *
+ *
+ * DESCRIPTION:
+ *
+ * Returns Bessel function of first kind, order one of the argument.
+ *
+ * The domain is divided into two major intervals [0, 2] and
+ * (2, infinity). In the first interval the rational approximation is
+ * J1(x) = .5x + x x^2 R(x^2)
+ *
+ * The second interval is further partitioned into eight equal segments
+ * of 1/x.
+ * J1(x) = sqrt(2/(pi x)) (P1(x) cos(X) - Q1(x) sin(X)),
+ * X = x - 3 pi / 4,
+ *
+ * and the auxiliary functions are given by
+ *
+ * J1(x)cos(X) + Y1(x)sin(X) = sqrt( 2/(pi x)) P1(x),
+ * P1(x) = 1 + 1/x^2 R(1/x^2)
+ *
+ * Y1(x)cos(X) - J1(x)sin(X) = sqrt( 2/(pi x)) Q1(x),
+ * Q1(x) = 1/x (.375 + 1/x^2 R(1/x^2)).
+ *
+ *
+ *
+ * ACCURACY:
+ *
+ * Absolute error:
+ * arithmetic domain # trials peak rms
+ * IEEE 0, 30 100000 2.8e-34 2.7e-35
+ *
+ *
+ */
+
+/* y1l.c
+ *
+ * Bessel function of the second kind, order one
+ *
+ *
+ *
+ * SYNOPSIS:
+ *
+ * double x, y, y1l();
+ *
+ * y = y1l( x );
+ *
+ *
+ *
+ * DESCRIPTION:
+ *
+ * Returns Bessel function of the second kind, of order
+ * one, of the argument.
+ *
+ * The domain is divided into two major intervals [0, 2] and
+ * (2, infinity). In the first interval the rational approximation is
+ * Y1(x) = 2/pi * (log(x) * J1(x) - 1/x) + x R(x^2) .
+ * In the second interval the approximation is the same as for J1(x), and
+ * Y1(x) = sqrt(2/(pi x)) (P1(x) sin(X) + Q1(x) cos(X)),
+ * X = x - 3 pi / 4.
+ *
+ * ACCURACY:
+ *
+ * Absolute error, when y0(x) < 1; else relative error:
+ *
+ * arithmetic domain # trials peak rms
+ * IEEE 0, 30 100000 2.7e-34 2.9e-35
+ *
+ */
+
+/* Copyright 2001 by Stephen L. Moshier (moshier@na-net.onrl.gov).
+
+ This 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 2.1 of the License, or (at your option) any later version.
+
+ This 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 this library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <errno.h>
+#include <math.h>
+#include <math_private.h>
+#include <float.h>
+
+/* 1 / sqrt(pi) */
+static const _Float128 ONEOSQPI = L(5.6418958354775628694807945156077258584405E-1);
+/* 2 / pi */
+static const _Float128 TWOOPI = L(6.3661977236758134307553505349005744813784E-1);
+static const _Float128 zero = 0;
+
+/* J1(x) = .5x + x x^2 R(x^2)
+ Peak relative error 1.9e-35
+ 0 <= x <= 2 */
+#define NJ0_2N 6
+static const _Float128 J0_2N[NJ0_2N + 1] = {
+ L(-5.943799577386942855938508697619735179660E16),
+ L(1.812087021305009192259946997014044074711E15),
+ L(-2.761698314264509665075127515729146460895E13),
+ L(2.091089497823600978949389109350658815972E11),
+ L(-8.546413231387036372945453565654130054307E8),
+ L(1.797229225249742247475464052741320612261E6),
+ L(-1.559552840946694171346552770008812083969E3)
+};
+#define NJ0_2D 6
+static const _Float128 J0_2D[NJ0_2D + 1] = {
+ L(9.510079323819108569501613916191477479397E17),
+ L(1.063193817503280529676423936545854693915E16),
+ L(5.934143516050192600795972192791775226920E13),
+ L(2.168000911950620999091479265214368352883E11),
+ L(5.673775894803172808323058205986256928794E8),
+ L(1.080329960080981204840966206372671147224E6),
+ L(1.411951256636576283942477881535283304912E3),
+ /* 1.000000000000000000000000000000000000000E0L */
+};
+
+/* J1(x)cosX + Y1(x)sinX = sqrt( 2/(pi x)) P1(x), P1(x) = 1 + 1/x^2 R(1/x^2),
+ 0 <= 1/x <= .0625
+ Peak relative error 3.6e-36 */
+#define NP16_IN 9
+static const _Float128 P16_IN[NP16_IN + 1] = {
+ L(5.143674369359646114999545149085139822905E-16),
+ L(4.836645664124562546056389268546233577376E-13),
+ L(1.730945562285804805325011561498453013673E-10),
+ L(3.047976856147077889834905908605310585810E-8),
+ L(2.855227609107969710407464739188141162386E-6),
+ L(1.439362407936705484122143713643023998457E-4),
+ L(3.774489768532936551500999699815873422073E-3),
+ L(4.723962172984642566142399678920790598426E-2),
+ L(2.359289678988743939925017240478818248735E-1),
+ L(3.032580002220628812728954785118117124520E-1),
+};
+#define NP16_ID 9
+static const _Float128 P16_ID[NP16_ID + 1] = {
+ L(4.389268795186898018132945193912677177553E-15),
+ L(4.132671824807454334388868363256830961655E-12),
+ L(1.482133328179508835835963635130894413136E-9),
+ L(2.618941412861122118906353737117067376236E-7),
+ L(2.467854246740858470815714426201888034270E-5),
+ L(1.257192927368839847825938545925340230490E-3),
+ L(3.362739031941574274949719324644120720341E-2),
+ L(4.384458231338934105875343439265370178858E-1),
+ L(2.412830809841095249170909628197264854651E0),
+ L(4.176078204111348059102962617368214856874E0),
+ /* 1.000000000000000000000000000000000000000E0 */
+};
+
+/* J1(x)cosX + Y1(x)sinX = sqrt( 2/(pi x)) P1(x), P1(x) = 1 + 1/x^2 R(1/x^2),
+ 0.0625 <= 1/x <= 0.125
+ Peak relative error 1.9e-36 */
+#define NP8_16N 11
+static const _Float128 P8_16N[NP8_16N + 1] = {
+ L(2.984612480763362345647303274082071598135E-16),
+ L(1.923651877544126103941232173085475682334E-13),
+ L(4.881258879388869396043760693256024307743E-11),
+ L(6.368866572475045408480898921866869811889E-9),
+ L(4.684818344104910450523906967821090796737E-7),
+ L(2.005177298271593587095982211091300382796E-5),
+ L(4.979808067163957634120681477207147536182E-4),
+ L(6.946005761642579085284689047091173581127E-3),
+ L(5.074601112955765012750207555985299026204E-2),
+ L(1.698599455896180893191766195194231825379E-1),
+ L(1.957536905259237627737222775573623779638E-1),
+ L(2.991314703282528370270179989044994319374E-2),
+};
+#define NP8_16D 10
+static const _Float128 P8_16D[NP8_16D + 1] = {
+ L(2.546869316918069202079580939942463010937E-15),
+ L(1.644650111942455804019788382157745229955E-12),
+ L(4.185430770291694079925607420808011147173E-10),
+ L(5.485331966975218025368698195861074143153E-8),
+ L(4.062884421686912042335466327098932678905E-6),
+ L(1.758139661060905948870523641319556816772E-4),
+ L(4.445143889306356207566032244985607493096E-3),
+ L(6.391901016293512632765621532571159071158E-2),
+ L(4.933040207519900471177016015718145795434E-1),
+ L(1.839144086168947712971630337250761842976E0),
+ L(2.715120873995490920415616716916149586579E0),
+ /* 1.000000000000000000000000000000000000000E0 */
+};
+
+/* J1(x)cosX + Y1(x)sinX = sqrt( 2/(pi x)) P1(x), P1(x) = 1 + 1/x^2 R(1/x^2),
+ 0.125 <= 1/x <= 0.1875
+ Peak relative error 1.3e-36 */
+#define NP5_8N 10
+static const _Float128 P5_8N[NP5_8N + 1] = {
+ L(2.837678373978003452653763806968237227234E-12),
+ L(9.726641165590364928442128579282742354806E-10),
+ L(1.284408003604131382028112171490633956539E-7),
+ L(8.524624695868291291250573339272194285008E-6),
+ L(3.111516908953172249853673787748841282846E-4),
+ L(6.423175156126364104172801983096596409176E-3),
+ L(7.430220589989104581004416356260692450652E-2),
+ L(4.608315409833682489016656279567605536619E-1),
+ L(1.396870223510964882676225042258855977512E0),
+ L(1.718500293904122365894630460672081526236E0),
+ L(5.465927698800862172307352821870223855365E-1)
+};
+#define NP5_8D 10
+static const _Float128 P5_8D[NP5_8D + 1] = {
+ L(2.421485545794616609951168511612060482715E-11),
+ L(8.329862750896452929030058039752327232310E-9),
+ L(1.106137992233383429630592081375289010720E-6),
+ L(7.405786153760681090127497796448503306939E-5),
+ L(2.740364785433195322492093333127633465227E-3),
+ L(5.781246470403095224872243564165254652198E-2),
+ L(6.927711353039742469918754111511109983546E-1),
+ L(4.558679283460430281188304515922826156690E0),
+ L(1.534468499844879487013168065728837900009E1),
+ L(2.313927430889218597919624843161569422745E1),
+ L(1.194506341319498844336768473218382828637E1),
+ /* 1.000000000000000000000000000000000000000E0 */
+};
+
+/* J1(x)cosX + Y1(x)sinX = sqrt( 2/(pi x)) P1(x), P1(x) = 1 + 1/x^2 R(1/x^2),
+ Peak relative error 1.4e-36
+ 0.1875 <= 1/x <= 0.25 */
+#define NP4_5N 10
+static const _Float128 P4_5N[NP4_5N + 1] = {
+ L(1.846029078268368685834261260420933914621E-10),
+ L(3.916295939611376119377869680335444207768E-8),
+ L(3.122158792018920627984597530935323997312E-6),
+ L(1.218073444893078303994045653603392272450E-4),
+ L(2.536420827983485448140477159977981844883E-3),
+ L(2.883011322006690823959367922241169171315E-2),
+ L(1.755255190734902907438042414495469810830E-1),
+ L(5.379317079922628599870898285488723736599E-1),
+ L(7.284904050194300773890303361501726561938E-1),
+ L(3.270110346613085348094396323925000362813E-1),
+ L(1.804473805689725610052078464951722064757E-2),
+};
+#define NP4_5D 9
+static const _Float128 P4_5D[NP4_5D + 1] = {
+ L(1.575278146806816970152174364308980863569E-9),
+ L(3.361289173657099516191331123405675054321E-7),
+ L(2.704692281550877810424745289838790693708E-5),
+ L(1.070854930483999749316546199273521063543E-3),
+ L(2.282373093495295842598097265627962125411E-2),
+ L(2.692025460665354148328762368240343249830E-1),
+ L(1.739892942593664447220951225734811133759E0),
+ L(5.890727576752230385342377570386657229324E0),
+ L(9.517442287057841500750256954117735128153E0),
+ L(6.100616353935338240775363403030137736013E0),
+ /* 1.000000000000000000000000000000000000000E0 */
+};
+
+/* J1(x)cosX + Y1(x)sinX = sqrt( 2/(pi x)) P1(x), P1(x) = 1 + 1/x^2 R(1/x^2),
+ Peak relative error 3.0e-36
+ 0.25 <= 1/x <= 0.3125 */
+#define NP3r2_4N 9
+static const _Float128 P3r2_4N[NP3r2_4N + 1] = {
+ L(8.240803130988044478595580300846665863782E-8),
+ L(1.179418958381961224222969866406483744580E-5),
+ L(6.179787320956386624336959112503824397755E-4),
+ L(1.540270833608687596420595830747166658383E-2),
+ L(1.983904219491512618376375619598837355076E-1),
+ L(1.341465722692038870390470651608301155565E0),
+ L(4.617865326696612898792238245990854646057E0),
+ L(7.435574801812346424460233180412308000587E0),
+ L(4.671327027414635292514599201278557680420E0),
+ L(7.299530852495776936690976966995187714739E-1),
+};
+#define NP3r2_4D 9
+static const _Float128 P3r2_4D[NP3r2_4D + 1] = {
+ L(7.032152009675729604487575753279187576521E-7),
+ L(1.015090352324577615777511269928856742848E-4),
+ L(5.394262184808448484302067955186308730620E-3),
+ L(1.375291438480256110455809354836988584325E-1),
+ L(1.836247144461106304788160919310404376670E0),
+ L(1.314378564254376655001094503090935880349E1),
+ L(4.957184590465712006934452500894672343488E1),
+ L(9.287394244300647738855415178790263465398E1),
+ L(7.652563275535900609085229286020552768399E1),
+ L(2.147042473003074533150718117770093209096E1),
+ /* 1.000000000000000000000000000000000000000E0 */
+};
+
+/* J1(x)cosX + Y1(x)sinX = sqrt( 2/(pi x)) P1(x), P1(x) = 1 + 1/x^2 R(1/x^2),
+ Peak relative error 1.0e-35
+ 0.3125 <= 1/x <= 0.375 */
+#define NP2r7_3r2N 9
+static const _Float128 P2r7_3r2N[NP2r7_3r2N + 1] = {
+ L(4.599033469240421554219816935160627085991E-7),
+ L(4.665724440345003914596647144630893997284E-5),
+ L(1.684348845667764271596142716944374892756E-3),
+ L(2.802446446884455707845985913454440176223E-2),
+ L(2.321937586453963310008279956042545173930E-1),
+ L(9.640277413988055668692438709376437553804E-1),
+ L(1.911021064710270904508663334033003246028E0),
+ L(1.600811610164341450262992138893970224971E0),
+ L(4.266299218652587901171386591543457861138E-1),
+ L(1.316470424456061252962568223251247207325E-2),
+};
+#define NP2r7_3r2D 8
+static const _Float128 P2r7_3r2D[NP2r7_3r2D + 1] = {
+ L(3.924508608545520758883457108453520099610E-6),
+ L(4.029707889408829273226495756222078039823E-4),
+ L(1.484629715787703260797886463307469600219E-2),
+ L(2.553136379967180865331706538897231588685E-1),
+ L(2.229457223891676394409880026887106228740E0),
+ L(1.005708903856384091956550845198392117318E1),
+ L(2.277082659664386953166629360352385889558E1),
+ L(2.384726835193630788249826630376533988245E1),
+ L(9.700989749041320895890113781610939632410E0),
+ /* 1.000000000000000000000000000000000000000E0 */
+};
+
+/* J1(x)cosX + Y1(x)sinX = sqrt( 2/(pi x)) P1(x), P1(x) = 1 + 1/x^2 R(1/x^2),
+ Peak relative error 1.7e-36
+ 0.3125 <= 1/x <= 0.4375 */
+#define NP2r3_2r7N 9
+static const _Float128 P2r3_2r7N[NP2r3_2r7N + 1] = {
+ L(3.916766777108274628543759603786857387402E-6),
+ L(3.212176636756546217390661984304645137013E-4),
+ L(9.255768488524816445220126081207248947118E-3),
+ L(1.214853146369078277453080641911700735354E-1),
+ L(7.855163309847214136198449861311404633665E-1),
+ L(2.520058073282978403655488662066019816540E0),
+ L(3.825136484837545257209234285382183711466E0),
+ L(2.432569427554248006229715163865569506873E0),
+ L(4.877934835018231178495030117729800489743E-1),
+ L(1.109902737860249670981355149101343427885E-2),
+};
+#define NP2r3_2r7D 8
+static const _Float128 P2r3_2r7D[NP2r3_2r7D + 1] = {
+ L(3.342307880794065640312646341190547184461E-5),
+ L(2.782182891138893201544978009012096558265E-3),
+ L(8.221304931614200702142049236141249929207E-2),
+ L(1.123728246291165812392918571987858010949E0),
+ L(7.740482453652715577233858317133423434590E0),
+ L(2.737624677567945952953322566311201919139E1),
+ L(4.837181477096062403118304137851260715475E1),
+ L(3.941098643468580791437772701093795299274E1),
+ L(1.245821247166544627558323920382547533630E1),
+ /* 1.000000000000000000000000000000000000000E0 */
+};
+
+/* J1(x)cosX + Y1(x)sinX = sqrt( 2/(pi x)) P1(x), P1(x) = 1 + 1/x^2 R(1/x^2),
+ Peak relative error 1.7e-35
+ 0.4375 <= 1/x <= 0.5 */
+#define NP2_2r3N 8
+static const _Float128 P2_2r3N[NP2_2r3N + 1] = {
+ L(3.397930802851248553545191160608731940751E-4),
+ L(2.104020902735482418784312825637833698217E-2),
+ L(4.442291771608095963935342749477836181939E-1),
+ L(4.131797328716583282869183304291833754967E0),
+ L(1.819920169779026500146134832455189917589E1),
+ L(3.781779616522937565300309684282401791291E1),
+ L(3.459605449728864218972931220783543410347E1),
+ L(1.173594248397603882049066603238568316561E1),
+ L(9.455702270242780642835086549285560316461E-1),
+};
+#define NP2_2r3D 8
+static const _Float128 P2_2r3D[NP2_2r3D + 1] = {
+ L(2.899568897241432883079888249845707400614E-3),
+ L(1.831107138190848460767699919531132426356E-1),
+ L(3.999350044057883839080258832758908825165E0),
+ L(3.929041535867957938340569419874195303712E1),
+ L(1.884245613422523323068802689915538908291E2),
+ L(4.461469948819229734353852978424629815929E2),
+ L(5.004998753999796821224085972610636347903E2),
+ L(2.386342520092608513170837883757163414100E2),
+ L(3.791322528149347975999851588922424189957E1),
+ /* 1.000000000000000000000000000000000000000E0 */
+};
+
+/* Y1(x)cosX - J1(x)sinX = sqrt( 2/(pi x)) Q1(x),
+ Q1(x) = 1/x (.375 + 1/x^2 R(1/x^2)),
+ Peak relative error 8.0e-36
+ 0 <= 1/x <= .0625 */
+#define NQ16_IN 10
+static const _Float128 Q16_IN[NQ16_IN + 1] = {
+ L(-3.917420835712508001321875734030357393421E-18),
+ L(-4.440311387483014485304387406538069930457E-15),
+ L(-1.951635424076926487780929645954007139616E-12),
+ L(-4.318256438421012555040546775651612810513E-10),
+ L(-5.231244131926180765270446557146989238020E-8),
+ L(-3.540072702902043752460711989234732357653E-6),
+ L(-1.311017536555269966928228052917534882984E-4),
+ L(-2.495184669674631806622008769674827575088E-3),
+ L(-2.141868222987209028118086708697998506716E-2),
+ L(-6.184031415202148901863605871197272650090E-2),
+ L(-1.922298704033332356899546792898156493887E-2),
+};
+#define NQ16_ID 9
+static const _Float128 Q16_ID[NQ16_ID + 1] = {
+ L(3.820418034066293517479619763498400162314E-17),
+ L(4.340702810799239909648911373329149354911E-14),
+ L(1.914985356383416140706179933075303538524E-11),
+ L(4.262333682610888819476498617261895474330E-9),
+ L(5.213481314722233980346462747902942182792E-7),
+ L(3.585741697694069399299005316809954590558E-5),
+ L(1.366513429642842006385029778105539457546E-3),
+ L(2.745282599850704662726337474371355160594E-2),
+ L(2.637644521611867647651200098449903330074E-1),
+ L(1.006953426110765984590782655598680488746E0),
+ /* 1.000000000000000000000000000000000000000E0 */
+ };
+
+/* Y1(x)cosX - J1(x)sinX = sqrt( 2/(pi x)) Q1(x),
+ Q1(x) = 1/x (.375 + 1/x^2 R(1/x^2)),
+ Peak relative error 1.9e-36
+ 0.0625 <= 1/x <= 0.125 */
+#define NQ8_16N 11
+static const _Float128 Q8_16N[NQ8_16N + 1] = {
+ L(-2.028630366670228670781362543615221542291E-17),
+ L(-1.519634620380959966438130374006858864624E-14),
+ L(-4.540596528116104986388796594639405114524E-12),
+ L(-7.085151756671466559280490913558388648274E-10),
+ L(-6.351062671323970823761883833531546885452E-8),
+ L(-3.390817171111032905297982523519503522491E-6),
+ L(-1.082340897018886970282138836861233213972E-4),
+ L(-2.020120801187226444822977006648252379508E-3),
+ L(-2.093169910981725694937457070649605557555E-2),
+ L(-1.092176538874275712359269481414448063393E-1),
+ L(-2.374790947854765809203590474789108718733E-1),
+ L(-1.365364204556573800719985118029601401323E-1),
+};
+#define NQ8_16D 11
+static const _Float128 Q8_16D[NQ8_16D + 1] = {
+ L(1.978397614733632533581207058069628242280E-16),
+ L(1.487361156806202736877009608336766720560E-13),
+ L(4.468041406888412086042576067133365913456E-11),
+ L(7.027822074821007443672290507210594648877E-9),
+ L(6.375740580686101224127290062867976007374E-7),
+ L(3.466887658320002225888644977076410421940E-5),
+ L(1.138625640905289601186353909213719596986E-3),
+ L(2.224470799470414663443449818235008486439E-2),
+ L(2.487052928527244907490589787691478482358E-1),
+ L(1.483927406564349124649083853892380899217E0),
+ L(4.182773513276056975777258788903489507705E0),
+ L(4.419665392573449746043880892524360870944E0),
+ /* 1.000000000000000000000000000000000000000E0 */
+};
+
+/* Y1(x)cosX - J1(x)sinX = sqrt( 2/(pi x)) Q1(x),
+ Q1(x) = 1/x (.375 + 1/x^2 R(1/x^2)),
+ Peak relative error 1.5e-35
+ 0.125 <= 1/x <= 0.1875 */
+#define NQ5_8N 10
+static const _Float128 Q5_8N[NQ5_8N + 1] = {
+ L(-3.656082407740970534915918390488336879763E-13),
+ L(-1.344660308497244804752334556734121771023E-10),
+ L(-1.909765035234071738548629788698150760791E-8),
+ L(-1.366668038160120210269389551283666716453E-6),
+ L(-5.392327355984269366895210704976314135683E-5),
+ L(-1.206268245713024564674432357634540343884E-3),
+ L(-1.515456784370354374066417703736088291287E-2),
+ L(-1.022454301137286306933217746545237098518E-1),
+ L(-3.373438906472495080504907858424251082240E-1),
+ L(-4.510782522110845697262323973549178453405E-1),
+ L(-1.549000892545288676809660828213589804884E-1),
+};
+#define NQ5_8D 10
+static const _Float128 Q5_8D[NQ5_8D + 1] = {
+ L(3.565550843359501079050699598913828460036E-12),
+ L(1.321016015556560621591847454285330528045E-9),
+ L(1.897542728662346479999969679234270605975E-7),
+ L(1.381720283068706710298734234287456219474E-5),
+ L(5.599248147286524662305325795203422873725E-4),
+ L(1.305442352653121436697064782499122164843E-2),
+ L(1.750234079626943298160445750078631894985E-1),
+ L(1.311420542073436520965439883806946678491E0),
+ L(5.162757689856842406744504211089724926650E0),
+ L(9.527760296384704425618556332087850581308E0),
+ L(6.604648207463236667912921642545100248584E0),
+ /* 1.000000000000000000000000000000000000000E0 */
+};
+
+/* Y1(x)cosX - J1(x)sinX = sqrt( 2/(pi x)) Q1(x),
+ Q1(x) = 1/x (.375 + 1/x^2 R(1/x^2)),
+ Peak relative error 1.3e-35
+ 0.1875 <= 1/x <= 0.25 */
+#define NQ4_5N 10
+static const _Float128 Q4_5N[NQ4_5N + 1] = {
+ L(-4.079513568708891749424783046520200903755E-11),
+ L(-9.326548104106791766891812583019664893311E-9),
+ L(-8.016795121318423066292906123815687003356E-7),
+ L(-3.372350544043594415609295225664186750995E-5),
+ L(-7.566238665947967882207277686375417983917E-4),
+ L(-9.248861580055565402130441618521591282617E-3),
+ L(-6.033106131055851432267702948850231270338E-2),
+ L(-1.966908754799996793730369265431584303447E-1),
+ L(-2.791062741179964150755788226623462207560E-1),
+ L(-1.255478605849190549914610121863534191666E-1),
+ L(-4.320429862021265463213168186061696944062E-3),
+};
+#define NQ4_5D 9
+static const _Float128 Q4_5D[NQ4_5D + 1] = {
+ L(3.978497042580921479003851216297330701056E-10),
+ L(9.203304163828145809278568906420772246666E-8),
+ L(8.059685467088175644915010485174545743798E-6),
+ L(3.490187375993956409171098277561669167446E-4),
+ L(8.189109654456872150100501732073810028829E-3),
+ L(1.072572867311023640958725265762483033769E-1),
+ L(7.790606862409960053675717185714576937994E-1),
+ L(3.016049768232011196434185423512777656328E0),
+ L(5.722963851442769787733717162314477949360E0),
+ L(4.510527838428473279647251350931380867663E0),
+ /* 1.000000000000000000000000000000000000000E0 */
+};
+
+/* Y1(x)cosX - J1(x)sinX = sqrt( 2/(pi x)) Q1(x),
+ Q1(x) = 1/x (.375 + 1/x^2 R(1/x^2)),
+ Peak relative error 2.1e-35
+ 0.25 <= 1/x <= 0.3125 */
+#define NQ3r2_4N 9
+static const _Float128 Q3r2_4N[NQ3r2_4N + 1] = {
+ L(-1.087480809271383885936921889040388133627E-8),
+ L(-1.690067828697463740906962973479310170932E-6),
+ L(-9.608064416995105532790745641974762550982E-5),
+ L(-2.594198839156517191858208513873961837410E-3),
+ L(-3.610954144421543968160459863048062977822E-2),
+ L(-2.629866798251843212210482269563961685666E-1),
+ L(-9.709186825881775885917984975685752956660E-1),
+ L(-1.667521829918185121727268867619982417317E0),
+ L(-1.109255082925540057138766105229900943501E0),
+ L(-1.812932453006641348145049323713469043328E-1),
+};
+#define NQ3r2_4D 9
+static const _Float128 Q3r2_4D[NQ3r2_4D + 1] = {
+ L(1.060552717496912381388763753841473407026E-7),
+ L(1.676928002024920520786883649102388708024E-5),
+ L(9.803481712245420839301400601140812255737E-4),
+ L(2.765559874262309494758505158089249012930E-2),
+ L(4.117921827792571791298862613287549140706E-1),
+ L(3.323769515244751267093378361930279161413E0),
+ L(1.436602494405814164724810151689705353670E1),
+ L(3.163087869617098638064881410646782408297E1),
+ L(3.198181264977021649489103980298349589419E1),
+ L(1.203649258862068431199471076202897823272E1),
+ /* 1.000000000000000000000000000000000000000E0 */
+};
+
+/* Y1(x)cosX - J1(x)sinX = sqrt( 2/(pi x)) Q1(x),
+ Q1(x) = 1/x (.375 + 1/x^2 R(1/x^2)),
+ Peak relative error 1.6e-36
+ 0.3125 <= 1/x <= 0.375 */
+#define NQ2r7_3r2N 9
+static const _Float128 Q2r7_3r2N[NQ2r7_3r2N + 1] = {
+ L(-1.723405393982209853244278760171643219530E-7),
+ L(-2.090508758514655456365709712333460087442E-5),
+ L(-9.140104013370974823232873472192719263019E-4),
+ L(-1.871349499990714843332742160292474780128E-2),
+ L(-1.948930738119938669637865956162512983416E-1),
+ L(-1.048764684978978127908439526343174139788E0),
+ L(-2.827714929925679500237476105843643064698E0),
+ L(-3.508761569156476114276988181329773987314E0),
+ L(-1.669332202790211090973255098624488308989E0),
+ L(-1.930796319299022954013840684651016077770E-1),
+};
+#define NQ2r7_3r2D 9
+static const _Float128 Q2r7_3r2D[NQ2r7_3r2D + 1] = {
+ L(1.680730662300831976234547482334347983474E-6),
+ L(2.084241442440551016475972218719621841120E-4),
+ L(9.445316642108367479043541702688736295579E-3),
+ L(2.044637889456631896650179477133252184672E-1),
+ L(2.316091982244297350829522534435350078205E0),
+ L(1.412031891783015085196708811890448488865E1),
+ L(4.583830154673223384837091077279595496149E1),
+ L(7.549520609270909439885998474045974122261E1),
+ L(5.697605832808113367197494052388203310638E1),
+ L(1.601496240876192444526383314589371686234E1),
+ /* 1.000000000000000000000000000000000000000E0 */
+};
+
+/* Y1(x)cosX - J1(x)sinX = sqrt( 2/(pi x)) Q1(x),
+ Q1(x) = 1/x (.375 + 1/x^2 R(1/x^2)),
+ Peak relative error 9.5e-36
+ 0.375 <= 1/x <= 0.4375 */
+#define NQ2r3_2r7N 9
+static const _Float128 Q2r3_2r7N[NQ2r3_2r7N + 1] = {
+ L(-8.603042076329122085722385914954878953775E-7),
+ L(-7.701746260451647874214968882605186675720E-5),
+ L(-2.407932004380727587382493696877569654271E-3),
+ L(-3.403434217607634279028110636919987224188E-2),
+ L(-2.348707332185238159192422084985713102877E-1),
+ L(-7.957498841538254916147095255700637463207E-1),
+ L(-1.258469078442635106431098063707934348577E0),
+ L(-8.162415474676345812459353639449971369890E-1),
+ L(-1.581783890269379690141513949609572806898E-1),
+ L(-1.890595651683552228232308756569450822905E-3),
+};
+#define NQ2r3_2r7D 8
+static const _Float128 Q2r3_2r7D[NQ2r3_2r7D + 1] = {
+ L(8.390017524798316921170710533381568175665E-6),
+ L(7.738148683730826286477254659973968763659E-4),
+ L(2.541480810958665794368759558791634341779E-2),
+ L(3.878879789711276799058486068562386244873E-1),
+ L(3.003783779325811292142957336802456109333E0),
+ L(1.206480374773322029883039064575464497400E1),
+ L(2.458414064785315978408974662900438351782E1),
+ L(2.367237826273668567199042088835448715228E1),
+ L(9.231451197519171090875569102116321676763E0),
+ /* 1.000000000000000000000000000000000000000E0 */
+};
+
+/* Y1(x)cosX - J1(x)sinX = sqrt( 2/(pi x)) Q1(x),
+ Q1(x) = 1/x (.375 + 1/x^2 R(1/x^2)),
+ Peak relative error 1.4e-36
+ 0.4375 <= 1/x <= 0.5 */
+#define NQ2_2r3N 9
+static const _Float128 Q2_2r3N[NQ2_2r3N + 1] = {
+ L(-5.552507516089087822166822364590806076174E-6),
+ L(-4.135067659799500521040944087433752970297E-4),
+ L(-1.059928728869218962607068840646564457980E-2),
+ L(-1.212070036005832342565792241385459023801E-1),
+ L(-6.688350110633603958684302153362735625156E-1),
+ L(-1.793587878197360221340277951304429821582E0),
+ L(-2.225407682237197485644647380483725045326E0),
+ L(-1.123402135458940189438898496348239744403E0),
+ L(-1.679187241566347077204805190763597299805E-1),
+ L(-1.458550613639093752909985189067233504148E-3),
+};
+#define NQ2_2r3D 8
+static const _Float128 Q2_2r3D[NQ2_2r3D + 1] = {
+ L(5.415024336507980465169023996403597916115E-5),
+ L(4.179246497380453022046357404266022870788E-3),
+ L(1.136306384261959483095442402929502368598E-1),
+ L(1.422640343719842213484515445393284072830E0),
+ L(8.968786703393158374728850922289204805764E0),
+ L(2.914542473339246127533384118781216495934E1),
+ L(4.781605421020380669870197378210457054685E1),
+ L(3.693865837171883152382820584714795072937E1),
+ L(1.153220502744204904763115556224395893076E1),
+ /* 1.000000000000000000000000000000000000000E0 */
+};
+
+
+/* Evaluate P[n] x^n + P[n-1] x^(n-1) + ... + P[0] */
+
+static _Float128
+neval (_Float128 x, const _Float128 *p, int n)
+{
+ _Float128 y;
+
+ p += n;
+ y = *p--;
+ do
+ {
+ y = y * x + *p--;
+ }
+ while (--n > 0);
+ return y;
+}
+
+
+/* Evaluate x^n+1 + P[n] x^(n) + P[n-1] x^(n-1) + ... + P[0] */
+
+static _Float128
+deval (_Float128 x, const _Float128 *p, int n)
+{
+ _Float128 y;
+
+ p += n;
+ y = x + *p--;
+ do
+ {
+ y = y * x + *p--;
+ }
+ while (--n > 0);
+ return y;
+}
+
+
+/* Bessel function of the first kind, order one. */
+
+_Float128
+__ieee754_j1l (_Float128 x)
+{
+ _Float128 xx, xinv, z, p, q, c, s, cc, ss;
+
+ if (! isfinite (x))
+ {
+ if (x != x)
+ return x + x;
+ else
+ return 0;
+ }
+ if (x == 0)
+ return x;
+ xx = fabsl (x);
+ if (xx <= L(0x1p-58))
+ {
+ _Float128 ret = x * L(0.5);
+ math_check_force_underflow (ret);
+ if (ret == 0)
+ __set_errno (ERANGE);
+ return ret;
+ }
+ if (xx <= 2)
+ {
+ /* 0 <= x <= 2 */
+ z = xx * xx;
+ p = xx * z * neval (z, J0_2N, NJ0_2N) / deval (z, J0_2D, NJ0_2D);
+ p += L(0.5) * xx;
+ if (x < 0)
+ p = -p;
+ return p;
+ }
+
+ /* X = x - 3 pi/4
+ cos(X) = cos(x) cos(3 pi/4) + sin(x) sin(3 pi/4)
+ = 1/sqrt(2) * (-cos(x) + sin(x))
+ sin(X) = sin(x) cos(3 pi/4) - cos(x) sin(3 pi/4)
+ = -1/sqrt(2) * (sin(x) + cos(x))
+ cf. Fdlibm. */
+ __sincosl (xx, &s, &c);
+ ss = -s - c;
+ cc = s - c;
+ if (xx <= LDBL_MAX / 2)
+ {
+ z = __cosl (xx + xx);
+ if ((s * c) > 0)
+ cc = z / ss;
+ else
+ ss = z / cc;
+ }
+
+ if (xx > L(0x1p256))
+ {
+ z = ONEOSQPI * cc / __ieee754_sqrtl (xx);
+ if (x < 0)
+ z = -z;
+ return z;
+ }
+
+ xinv = 1 / xx;
+ z = xinv * xinv;
+ if (xinv <= 0.25)
+ {
+ if (xinv <= 0.125)
+ {
+ if (xinv <= 0.0625)
+ {
+ p = neval (z, P16_IN, NP16_IN) / deval (z, P16_ID, NP16_ID);
+ q = neval (z, Q16_IN, NQ16_IN) / deval (z, Q16_ID, NQ16_ID);
+ }
+ else
+ {
+ p = neval (z, P8_16N, NP8_16N) / deval (z, P8_16D, NP8_16D);
+ q = neval (z, Q8_16N, NQ8_16N) / deval (z, Q8_16D, NQ8_16D);
+ }
+ }
+ else if (xinv <= 0.1875)
+ {
+ p = neval (z, P5_8N, NP5_8N) / deval (z, P5_8D, NP5_8D);
+ q = neval (z, Q5_8N, NQ5_8N) / deval (z, Q5_8D, NQ5_8D);
+ }
+ else
+ {
+ p = neval (z, P4_5N, NP4_5N) / deval (z, P4_5D, NP4_5D);
+ q = neval (z, Q4_5N, NQ4_5N) / deval (z, Q4_5D, NQ4_5D);
+ }
+ } /* .25 */
+ else /* if (xinv <= 0.5) */
+ {
+ if (xinv <= 0.375)
+ {
+ if (xinv <= 0.3125)
+ {
+ p = neval (z, P3r2_4N, NP3r2_4N) / deval (z, P3r2_4D, NP3r2_4D);
+ q = neval (z, Q3r2_4N, NQ3r2_4N) / deval (z, Q3r2_4D, NQ3r2_4D);
+ }
+ else
+ {
+ p = neval (z, P2r7_3r2N, NP2r7_3r2N)
+ / deval (z, P2r7_3r2D, NP2r7_3r2D);
+ q = neval (z, Q2r7_3r2N, NQ2r7_3r2N)
+ / deval (z, Q2r7_3r2D, NQ2r7_3r2D);
+ }
+ }
+ else if (xinv <= 0.4375)
+ {
+ p = neval (z, P2r3_2r7N, NP2r3_2r7N)
+ / deval (z, P2r3_2r7D, NP2r3_2r7D);
+ q = neval (z, Q2r3_2r7N, NQ2r3_2r7N)
+ / deval (z, Q2r3_2r7D, NQ2r3_2r7D);
+ }
+ else
+ {
+ p = neval (z, P2_2r3N, NP2_2r3N) / deval (z, P2_2r3D, NP2_2r3D);
+ q = neval (z, Q2_2r3N, NQ2_2r3N) / deval (z, Q2_2r3D, NQ2_2r3D);
+ }
+ }
+ p = 1 + z * p;
+ q = z * q;
+ q = q * xinv + L(0.375) * xinv;
+ z = ONEOSQPI * (p * cc - q * ss) / __ieee754_sqrtl (xx);
+ if (x < 0)
+ z = -z;
+ return z;
+}
+strong_alias (__ieee754_j1l, __j1l_finite)
+
+
+/* Y1(x) = 2/pi * (log(x) * J1(x) - 1/x) + x R(x^2)
+ Peak relative error 6.2e-38
+ 0 <= x <= 2 */
+#define NY0_2N 7
+static _Float128 Y0_2N[NY0_2N + 1] = {
+ L(-6.804415404830253804408698161694720833249E19),
+ L(1.805450517967019908027153056150465849237E19),
+ L(-8.065747497063694098810419456383006737312E17),
+ L(1.401336667383028259295830955439028236299E16),
+ L(-1.171654432898137585000399489686629680230E14),
+ L(5.061267920943853732895341125243428129150E11),
+ L(-1.096677850566094204586208610960870217970E9),
+ L(9.541172044989995856117187515882879304461E5),
+};
+#define NY0_2D 7
+static _Float128 Y0_2D[NY0_2D + 1] = {
+ L(3.470629591820267059538637461549677594549E20),
+ L(4.120796439009916326855848107545425217219E18),
+ L(2.477653371652018249749350657387030814542E16),
+ L(9.954678543353888958177169349272167762797E13),
+ L(2.957927997613630118216218290262851197754E11),
+ L(6.748421382188864486018861197614025972118E8),
+ L(1.173453425218010888004562071020305709319E6),
+ L(1.450335662961034949894009554536003377187E3),
+ /* 1.000000000000000000000000000000000000000E0 */
+};
+
+
+/* Bessel function of the second kind, order one. */
+
+_Float128
+__ieee754_y1l (_Float128 x)
+{
+ _Float128 xx, xinv, z, p, q, c, s, cc, ss;
+
+ if (! isfinite (x))
+ return 1 / (x + x * x);
+ if (x <= 0)
+ {
+ if (x < 0)
+ return (zero / (zero * x));
+ return -1 / zero; /* -inf and divide by zero exception. */
+ }
+ xx = fabsl (x);
+ if (xx <= 0x1p-114)
+ {
+ z = -TWOOPI / x;
+ if (isinf (z))
+ __set_errno (ERANGE);
+ return z;
+ }
+ if (xx <= 2)
+ {
+ /* 0 <= x <= 2 */
+ SET_RESTORE_ROUNDL (FE_TONEAREST);
+ z = xx * xx;
+ p = xx * neval (z, Y0_2N, NY0_2N) / deval (z, Y0_2D, NY0_2D);
+ p = -TWOOPI / xx + p;
+ p = TWOOPI * __ieee754_logl (x) * __ieee754_j1l (x) + p;
+ return p;
+ }
+
+ /* X = x - 3 pi/4
+ cos(X) = cos(x) cos(3 pi/4) + sin(x) sin(3 pi/4)
+ = 1/sqrt(2) * (-cos(x) + sin(x))
+ sin(X) = sin(x) cos(3 pi/4) - cos(x) sin(3 pi/4)
+ = -1/sqrt(2) * (sin(x) + cos(x))
+ cf. Fdlibm. */
+ __sincosl (xx, &s, &c);
+ ss = -s - c;
+ cc = s - c;
+ if (xx <= LDBL_MAX / 2)
+ {
+ z = __cosl (xx + xx);
+ if ((s * c) > 0)
+ cc = z / ss;
+ else
+ ss = z / cc;
+ }
+
+ if (xx > L(0x1p256))
+ return ONEOSQPI * ss / __ieee754_sqrtl (xx);
+
+ xinv = 1 / xx;
+ z = xinv * xinv;
+ if (xinv <= 0.25)
+ {
+ if (xinv <= 0.125)
+ {
+ if (xinv <= 0.0625)
+ {
+ p = neval (z, P16_IN, NP16_IN) / deval (z, P16_ID, NP16_ID);
+ q = neval (z, Q16_IN, NQ16_IN) / deval (z, Q16_ID, NQ16_ID);
+ }
+ else
+ {
+ p = neval (z, P8_16N, NP8_16N) / deval (z, P8_16D, NP8_16D);
+ q = neval (z, Q8_16N, NQ8_16N) / deval (z, Q8_16D, NQ8_16D);
+ }
+ }
+ else if (xinv <= 0.1875)
+ {
+ p = neval (z, P5_8N, NP5_8N) / deval (z, P5_8D, NP5_8D);
+ q = neval (z, Q5_8N, NQ5_8N) / deval (z, Q5_8D, NQ5_8D);
+ }
+ else
+ {
+ p = neval (z, P4_5N, NP4_5N) / deval (z, P4_5D, NP4_5D);
+ q = neval (z, Q4_5N, NQ4_5N) / deval (z, Q4_5D, NQ4_5D);
+ }
+ } /* .25 */
+ else /* if (xinv <= 0.5) */
+ {
+ if (xinv <= 0.375)
+ {
+ if (xinv <= 0.3125)
+ {
+ p = neval (z, P3r2_4N, NP3r2_4N) / deval (z, P3r2_4D, NP3r2_4D);
+ q = neval (z, Q3r2_4N, NQ3r2_4N) / deval (z, Q3r2_4D, NQ3r2_4D);
+ }
+ else
+ {
+ p = neval (z, P2r7_3r2N, NP2r7_3r2N)
+ / deval (z, P2r7_3r2D, NP2r7_3r2D);
+ q = neval (z, Q2r7_3r2N, NQ2r7_3r2N)
+ / deval (z, Q2r7_3r2D, NQ2r7_3r2D);
+ }
+ }
+ else if (xinv <= 0.4375)
+ {
+ p = neval (z, P2r3_2r7N, NP2r3_2r7N)
+ / deval (z, P2r3_2r7D, NP2r3_2r7D);
+ q = neval (z, Q2r3_2r7N, NQ2r3_2r7N)
+ / deval (z, Q2r3_2r7D, NQ2r3_2r7D);
+ }
+ else
+ {
+ p = neval (z, P2_2r3N, NP2_2r3N) / deval (z, P2_2r3D, NP2_2r3D);
+ q = neval (z, Q2_2r3N, NQ2_2r3N) / deval (z, Q2_2r3D, NQ2_2r3D);
+ }
+ }
+ p = 1 + z * p;
+ q = z * q;
+ q = q * xinv + L(0.375) * xinv;
+ z = ONEOSQPI * (p * ss + q * cc) / __ieee754_sqrtl (xx);
+ return z;
+}
+strong_alias (__ieee754_y1l, __y1l_finite)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128/e_jnl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128/e_jnl.c
new file mode 100644
index 0000000000..470631e600
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128/e_jnl.c
@@ -0,0 +1,419 @@
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+/* Modifications for 128-bit long double are
+ Copyright (C) 2001 Stephen L. Moshier <moshier@na-net.ornl.gov>
+ and are incorporated herein by permission of the author. The author
+ reserves the right to distribute this material elsewhere under different
+ copying permissions. These modifications are distributed here under
+ the following terms:
+
+ This 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 2.1 of the License, or (at your option) any later version.
+
+ This 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 this library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+/*
+ * __ieee754_jn(n, x), __ieee754_yn(n, x)
+ * floating point Bessel's function of the 1st and 2nd kind
+ * of order n
+ *
+ * Special cases:
+ * y0(0)=y1(0)=yn(n,0) = -inf with division by zero signal;
+ * y0(-ve)=y1(-ve)=yn(n,-ve) are NaN with invalid signal.
+ * Note 2. About jn(n,x), yn(n,x)
+ * For n=0, j0(x) is called,
+ * for n=1, j1(x) is called,
+ * for n<x, forward recursion us used starting
+ * from values of j0(x) and j1(x).
+ * for n>x, a continued fraction approximation to
+ * j(n,x)/j(n-1,x) is evaluated and then backward
+ * recursion is used starting from a supposed value
+ * for j(n,x). The resulting value of j(0,x) is
+ * compared with the actual value to correct the
+ * supposed value of j(n,x).
+ *
+ * yn(n,x) is similar in all respects, except
+ * that forward recursion is used for all
+ * values of n>1.
+ *
+ */
+
+#include <errno.h>
+#include <float.h>
+#include <math.h>
+#include <math_private.h>
+
+static const _Float128
+ invsqrtpi = L(5.6418958354775628694807945156077258584405E-1),
+ two = 2,
+ one = 1,
+ zero = 0;
+
+
+_Float128
+__ieee754_jnl (int n, _Float128 x)
+{
+ u_int32_t se;
+ int32_t i, ix, sgn;
+ _Float128 a, b, temp, di, ret;
+ _Float128 z, w;
+ ieee854_long_double_shape_type u;
+
+
+ /* J(-n,x) = (-1)^n * J(n, x), J(n, -x) = (-1)^n * J(n, x)
+ * Thus, J(-n,x) = J(n,-x)
+ */
+
+ u.value = x;
+ se = u.parts32.w0;
+ ix = se & 0x7fffffff;
+
+ /* if J(n,NaN) is NaN */
+ if (ix >= 0x7fff0000)
+ {
+ if ((u.parts32.w0 & 0xffff) | u.parts32.w1 | u.parts32.w2 | u.parts32.w3)
+ return x + x;
+ }
+
+ if (n < 0)
+ {
+ n = -n;
+ x = -x;
+ se ^= 0x80000000;
+ }
+ if (n == 0)
+ return (__ieee754_j0l (x));
+ if (n == 1)
+ return (__ieee754_j1l (x));
+ sgn = (n & 1) & (se >> 31); /* even n -- 0, odd n -- sign(x) */
+ x = fabsl (x);
+
+ {
+ SET_RESTORE_ROUNDL (FE_TONEAREST);
+ if (x == 0 || ix >= 0x7fff0000) /* if x is 0 or inf */
+ return sgn == 1 ? -zero : zero;
+ else if ((_Float128) n <= x)
+ {
+ /* Safe to use J(n+1,x)=2n/x *J(n,x)-J(n-1,x) */
+ if (ix >= 0x412D0000)
+ { /* x > 2**302 */
+
+ /* ??? Could use an expansion for large x here. */
+
+ /* (x >> n**2)
+ * Jn(x) = cos(x-(2n+1)*pi/4)*sqrt(2/x*pi)
+ * Yn(x) = sin(x-(2n+1)*pi/4)*sqrt(2/x*pi)
+ * Let s=sin(x), c=cos(x),
+ * xn=x-(2n+1)*pi/4, sqt2 = sqrt(2),then
+ *
+ * n sin(xn)*sqt2 cos(xn)*sqt2
+ * ----------------------------------
+ * 0 s-c c+s
+ * 1 -s-c -c+s
+ * 2 -s+c -c-s
+ * 3 s+c c-s
+ */
+ _Float128 s;
+ _Float128 c;
+ __sincosl (x, &s, &c);
+ switch (n & 3)
+ {
+ case 0:
+ temp = c + s;
+ break;
+ case 1:
+ temp = -c + s;
+ break;
+ case 2:
+ temp = -c - s;
+ break;
+ case 3:
+ temp = c - s;
+ break;
+ }
+ b = invsqrtpi * temp / __ieee754_sqrtl (x);
+ }
+ else
+ {
+ a = __ieee754_j0l (x);
+ b = __ieee754_j1l (x);
+ for (i = 1; i < n; i++)
+ {
+ temp = b;
+ b = b * ((_Float128) (i + i) / x) - a; /* avoid underflow */
+ a = temp;
+ }
+ }
+ }
+ else
+ {
+ if (ix < 0x3fc60000)
+ { /* x < 2**-57 */
+ /* x is tiny, return the first Taylor expansion of J(n,x)
+ * J(n,x) = 1/n!*(x/2)^n - ...
+ */
+ if (n >= 400) /* underflow, result < 10^-4952 */
+ b = zero;
+ else
+ {
+ temp = x * 0.5;
+ b = temp;
+ for (a = one, i = 2; i <= n; i++)
+ {
+ a *= (_Float128) i; /* a = n! */
+ b *= temp; /* b = (x/2)^n */
+ }
+ b = b / a;
+ }
+ }
+ else
+ {
+ /* use backward recurrence */
+ /* x x^2 x^2
+ * J(n,x)/J(n-1,x) = ---- ------ ------ .....
+ * 2n - 2(n+1) - 2(n+2)
+ *
+ * 1 1 1
+ * (for large x) = ---- ------ ------ .....
+ * 2n 2(n+1) 2(n+2)
+ * -- - ------ - ------ -
+ * x x x
+ *
+ * Let w = 2n/x and h=2/x, then the above quotient
+ * is equal to the continued fraction:
+ * 1
+ * = -----------------------
+ * 1
+ * w - -----------------
+ * 1
+ * w+h - ---------
+ * w+2h - ...
+ *
+ * To determine how many terms needed, let
+ * Q(0) = w, Q(1) = w(w+h) - 1,
+ * Q(k) = (w+k*h)*Q(k-1) - Q(k-2),
+ * When Q(k) > 1e4 good for single
+ * When Q(k) > 1e9 good for double
+ * When Q(k) > 1e17 good for quadruple
+ */
+ /* determine k */
+ _Float128 t, v;
+ _Float128 q0, q1, h, tmp;
+ int32_t k, m;
+ w = (n + n) / (_Float128) x;
+ h = 2 / (_Float128) x;
+ q0 = w;
+ z = w + h;
+ q1 = w * z - 1;
+ k = 1;
+ while (q1 < L(1.0e17))
+ {
+ k += 1;
+ z += h;
+ tmp = z * q1 - q0;
+ q0 = q1;
+ q1 = tmp;
+ }
+ m = n + n;
+ for (t = zero, i = 2 * (n + k); i >= m; i -= 2)
+ t = one / (i / x - t);
+ a = t;
+ b = one;
+ /* estimate log((2/x)^n*n!) = n*log(2/x)+n*ln(n)
+ * Hence, if n*(log(2n/x)) > ...
+ * single 8.8722839355e+01
+ * double 7.09782712893383973096e+02
+ * long double 1.1356523406294143949491931077970765006170e+04
+ * then recurrent value may overflow and the result is
+ * likely underflow to zero
+ */
+ tmp = n;
+ v = two / x;
+ tmp = tmp * __ieee754_logl (fabsl (v * tmp));
+
+ if (tmp < L(1.1356523406294143949491931077970765006170e+04))
+ {
+ for (i = n - 1, di = (_Float128) (i + i); i > 0; i--)
+ {
+ temp = b;
+ b *= di;
+ b = b / x - a;
+ a = temp;
+ di -= two;
+ }
+ }
+ else
+ {
+ for (i = n - 1, di = (_Float128) (i + i); i > 0; i--)
+ {
+ temp = b;
+ b *= di;
+ b = b / x - a;
+ a = temp;
+ di -= two;
+ /* scale b to avoid spurious overflow */
+ if (b > L(1e100))
+ {
+ a /= b;
+ t /= b;
+ b = one;
+ }
+ }
+ }
+ /* j0() and j1() suffer enormous loss of precision at and
+ * near zero; however, we know that their zero points never
+ * coincide, so just choose the one further away from zero.
+ */
+ z = __ieee754_j0l (x);
+ w = __ieee754_j1l (x);
+ if (fabsl (z) >= fabsl (w))
+ b = (t * z / b);
+ else
+ b = (t * w / a);
+ }
+ }
+ if (sgn == 1)
+ ret = -b;
+ else
+ ret = b;
+ }
+ if (ret == 0)
+ {
+ ret = __copysignl (LDBL_MIN, ret) * LDBL_MIN;
+ __set_errno (ERANGE);
+ }
+ else
+ math_check_force_underflow (ret);
+ return ret;
+}
+strong_alias (__ieee754_jnl, __jnl_finite)
+
+_Float128
+__ieee754_ynl (int n, _Float128 x)
+{
+ u_int32_t se;
+ int32_t i, ix;
+ int32_t sign;
+ _Float128 a, b, temp, ret;
+ ieee854_long_double_shape_type u;
+
+ u.value = x;
+ se = u.parts32.w0;
+ ix = se & 0x7fffffff;
+
+ /* if Y(n,NaN) is NaN */
+ if (ix >= 0x7fff0000)
+ {
+ if ((u.parts32.w0 & 0xffff) | u.parts32.w1 | u.parts32.w2 | u.parts32.w3)
+ return x + x;
+ }
+ if (x <= 0)
+ {
+ if (x == 0)
+ return ((n < 0 && (n & 1) != 0) ? 1 : -1) / L(0.0);
+ if (se & 0x80000000)
+ return zero / (zero * x);
+ }
+ sign = 1;
+ if (n < 0)
+ {
+ n = -n;
+ sign = 1 - ((n & 1) << 1);
+ }
+ if (n == 0)
+ return (__ieee754_y0l (x));
+ {
+ SET_RESTORE_ROUNDL (FE_TONEAREST);
+ if (n == 1)
+ {
+ ret = sign * __ieee754_y1l (x);
+ goto out;
+ }
+ if (ix >= 0x7fff0000)
+ return zero;
+ if (ix >= 0x412D0000)
+ { /* x > 2**302 */
+
+ /* ??? See comment above on the possible futility of this. */
+
+ /* (x >> n**2)
+ * Jn(x) = cos(x-(2n+1)*pi/4)*sqrt(2/x*pi)
+ * Yn(x) = sin(x-(2n+1)*pi/4)*sqrt(2/x*pi)
+ * Let s=sin(x), c=cos(x),
+ * xn=x-(2n+1)*pi/4, sqt2 = sqrt(2),then
+ *
+ * n sin(xn)*sqt2 cos(xn)*sqt2
+ * ----------------------------------
+ * 0 s-c c+s
+ * 1 -s-c -c+s
+ * 2 -s+c -c-s
+ * 3 s+c c-s
+ */
+ _Float128 s;
+ _Float128 c;
+ __sincosl (x, &s, &c);
+ switch (n & 3)
+ {
+ case 0:
+ temp = s - c;
+ break;
+ case 1:
+ temp = -s - c;
+ break;
+ case 2:
+ temp = -s + c;
+ break;
+ case 3:
+ temp = s + c;
+ break;
+ }
+ b = invsqrtpi * temp / __ieee754_sqrtl (x);
+ }
+ else
+ {
+ a = __ieee754_y0l (x);
+ b = __ieee754_y1l (x);
+ /* quit if b is -inf */
+ u.value = b;
+ se = u.parts32.w0 & 0xffff0000;
+ for (i = 1; i < n && se != 0xffff0000; i++)
+ {
+ temp = b;
+ b = ((_Float128) (i + i) / x) * b - a;
+ u.value = b;
+ se = u.parts32.w0 & 0xffff0000;
+ a = temp;
+ }
+ }
+ /* If B is +-Inf, set up errno accordingly. */
+ if (! isfinite (b))
+ __set_errno (ERANGE);
+ if (sign > 0)
+ ret = b;
+ else
+ ret = -b;
+ }
+ out:
+ if (isinf (ret))
+ ret = __copysignl (LDBL_MAX, ret) * LDBL_MAX;
+ return ret;
+}
+strong_alias (__ieee754_ynl, __ynl_finite)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128/e_lgammal_r.c b/REORG.TODO/sysdeps/ieee754/ldbl-128/e_lgammal_r.c
new file mode 100644
index 0000000000..bef2601bce
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128/e_lgammal_r.c
@@ -0,0 +1,1046 @@
+/* lgammal
+ *
+ * Natural logarithm of gamma function
+ *
+ *
+ *
+ * SYNOPSIS:
+ *
+ * long double x, y, lgammal();
+ * extern int sgngam;
+ *
+ * y = lgammal(x);
+ *
+ *
+ *
+ * DESCRIPTION:
+ *
+ * Returns the base e (2.718...) logarithm of the absolute
+ * value of the gamma function of the argument.
+ * The sign (+1 or -1) of the gamma function is returned in a
+ * global (extern) variable named sgngam.
+ *
+ * The positive domain is partitioned into numerous segments for approximation.
+ * For x > 10,
+ * log gamma(x) = (x - 0.5) log(x) - x + log sqrt(2 pi) + 1/x R(1/x^2)
+ * Near the minimum at x = x0 = 1.46... the approximation is
+ * log gamma(x0 + z) = log gamma(x0) + z^2 P(z)/Q(z)
+ * for small z.
+ * Elsewhere between 0 and 10,
+ * log gamma(n + z) = log gamma(n) + z P(z)/Q(z)
+ * for various selected n and small z.
+ *
+ * The cosecant reflection formula is employed for negative arguments.
+ *
+ *
+ *
+ * ACCURACY:
+ *
+ *
+ * arithmetic domain # trials peak rms
+ * Relative error:
+ * IEEE 10, 30 100000 3.9e-34 9.8e-35
+ * IEEE 0, 10 100000 3.8e-34 5.3e-35
+ * Absolute error:
+ * IEEE -10, 0 100000 8.0e-34 8.0e-35
+ * IEEE -30, -10 100000 4.4e-34 1.0e-34
+ * IEEE -100, 100 100000 1.0e-34
+ *
+ * The absolute error criterion is the same as relative error
+ * when the function magnitude is greater than one but it is absolute
+ * when the magnitude is less than one.
+ *
+ */
+
+/* Copyright 2001 by Stephen L. Moshier <moshier@na-net.ornl.gov>
+
+ This 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 2.1 of the License, or (at your option) any later version.
+
+ This 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 this library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+#include <math_private.h>
+#include <float.h>
+
+static const _Float128 PIL = L(3.1415926535897932384626433832795028841972E0);
+#if LDBL_MANT_DIG == 106
+static const _Float128 MAXLGM = L(0x5.d53649e2d469dbc1f01e99fd66p+1012);
+#else
+static const _Float128 MAXLGM = L(1.0485738685148938358098967157129705071571E4928);
+#endif
+static const _Float128 one = 1;
+static const _Float128 huge = LDBL_MAX;
+
+/* log gamma(x) = ( x - 0.5 ) * log(x) - x + LS2PI + 1/x P(1/x^2)
+ 1/x <= 0.0741 (x >= 13.495...)
+ Peak relative error 1.5e-36 */
+static const _Float128 ls2pi = L(9.1893853320467274178032973640561763986140E-1);
+#define NRASY 12
+static const _Float128 RASY[NRASY + 1] =
+{
+ L(8.333333333333333333333333333310437112111E-2),
+ L(-2.777777777777777777777774789556228296902E-3),
+ L(7.936507936507936507795933938448586499183E-4),
+ L(-5.952380952380952041799269756378148574045E-4),
+ L(8.417508417507928904209891117498524452523E-4),
+ L(-1.917526917481263997778542329739806086290E-3),
+ L(6.410256381217852504446848671499409919280E-3),
+ L(-2.955064066900961649768101034477363301626E-2),
+ L(1.796402955865634243663453415388336954675E-1),
+ L(-1.391522089007758553455753477688592767741E0),
+ L(1.326130089598399157988112385013829305510E1),
+ L(-1.420412699593782497803472576479997819149E2),
+ L(1.218058922427762808938869872528846787020E3)
+};
+
+
+/* log gamma(x+13) = log gamma(13) + x P(x)/Q(x)
+ -0.5 <= x <= 0.5
+ 12.5 <= x+13 <= 13.5
+ Peak relative error 1.1e-36 */
+static const _Float128 lgam13a = L(1.9987213134765625E1);
+static const _Float128 lgam13b = L(1.3608962611495173623870550785125024484248E-6);
+#define NRN13 7
+static const _Float128 RN13[NRN13 + 1] =
+{
+ L(8.591478354823578150238226576156275285700E11),
+ L(2.347931159756482741018258864137297157668E11),
+ L(2.555408396679352028680662433943000804616E10),
+ L(1.408581709264464345480765758902967123937E9),
+ L(4.126759849752613822953004114044451046321E7),
+ L(6.133298899622688505854211579222889943778E5),
+ L(3.929248056293651597987893340755876578072E3),
+ L(6.850783280018706668924952057996075215223E0)
+};
+#define NRD13 6
+static const _Float128 RD13[NRD13 + 1] =
+{
+ L(3.401225382297342302296607039352935541669E11),
+ L(8.756765276918037910363513243563234551784E10),
+ L(8.873913342866613213078554180987647243903E9),
+ L(4.483797255342763263361893016049310017973E8),
+ L(1.178186288833066430952276702931512870676E7),
+ L(1.519928623743264797939103740132278337476E5),
+ L(7.989298844938119228411117593338850892311E2)
+ /* 1.0E0L */
+};
+
+
+/* log gamma(x+12) = log gamma(12) + x P(x)/Q(x)
+ -0.5 <= x <= 0.5
+ 11.5 <= x+12 <= 12.5
+ Peak relative error 4.1e-36 */
+static const _Float128 lgam12a = L(1.75023040771484375E1);
+static const _Float128 lgam12b = L(3.7687254483392876529072161996717039575982E-6);
+#define NRN12 7
+static const _Float128 RN12[NRN12 + 1] =
+{
+ L(4.709859662695606986110997348630997559137E11),
+ L(1.398713878079497115037857470168777995230E11),
+ L(1.654654931821564315970930093932954900867E10),
+ L(9.916279414876676861193649489207282144036E8),
+ L(3.159604070526036074112008954113411389879E7),
+ L(5.109099197547205212294747623977502492861E5),
+ L(3.563054878276102790183396740969279826988E3),
+ L(6.769610657004672719224614163196946862747E0)
+};
+#define NRD12 6
+static const _Float128 RD12[NRD12 + 1] =
+{
+ L(1.928167007860968063912467318985802726613E11),
+ L(5.383198282277806237247492369072266389233E10),
+ L(5.915693215338294477444809323037871058363E9),
+ L(3.241438287570196713148310560147925781342E8),
+ L(9.236680081763754597872713592701048455890E6),
+ L(1.292246897881650919242713651166596478850E5),
+ L(7.366532445427159272584194816076600211171E2)
+ /* 1.0E0L */
+};
+
+
+/* log gamma(x+11) = log gamma(11) + x P(x)/Q(x)
+ -0.5 <= x <= 0.5
+ 10.5 <= x+11 <= 11.5
+ Peak relative error 1.8e-35 */
+static const _Float128 lgam11a = L(1.5104400634765625E1);
+static const _Float128 lgam11b = L(1.1938309890295225709329251070371882250744E-5);
+#define NRN11 7
+static const _Float128 RN11[NRN11 + 1] =
+{
+ L(2.446960438029415837384622675816736622795E11),
+ L(7.955444974446413315803799763901729640350E10),
+ L(1.030555327949159293591618473447420338444E10),
+ L(6.765022131195302709153994345470493334946E8),
+ L(2.361892792609204855279723576041468347494E7),
+ L(4.186623629779479136428005806072176490125E5),
+ L(3.202506022088912768601325534149383594049E3),
+ L(6.681356101133728289358838690666225691363E0)
+};
+#define NRD11 6
+static const _Float128 RD11[NRD11 + 1] =
+{
+ L(1.040483786179428590683912396379079477432E11),
+ L(3.172251138489229497223696648369823779729E10),
+ L(3.806961885984850433709295832245848084614E9),
+ L(2.278070344022934913730015420611609620171E8),
+ L(7.089478198662651683977290023829391596481E6),
+ L(1.083246385105903533237139380509590158658E5),
+ L(6.744420991491385145885727942219463243597E2)
+ /* 1.0E0L */
+};
+
+
+/* log gamma(x+10) = log gamma(10) + x P(x)/Q(x)
+ -0.5 <= x <= 0.5
+ 9.5 <= x+10 <= 10.5
+ Peak relative error 5.4e-37 */
+static const _Float128 lgam10a = L(1.280181884765625E1);
+static const _Float128 lgam10b = L(8.6324252196112077178745667061642811492557E-6);
+#define NRN10 7
+static const _Float128 RN10[NRN10 + 1] =
+{
+ L(-1.239059737177249934158597996648808363783E14),
+ L(-4.725899566371458992365624673357356908719E13),
+ L(-7.283906268647083312042059082837754850808E12),
+ L(-5.802855515464011422171165179767478794637E11),
+ L(-2.532349691157548788382820303182745897298E10),
+ L(-5.884260178023777312587193693477072061820E8),
+ L(-6.437774864512125749845840472131829114906E6),
+ L(-2.350975266781548931856017239843273049384E4)
+};
+#define NRD10 7
+static const _Float128 RD10[NRD10 + 1] =
+{
+ L(-5.502645997581822567468347817182347679552E13),
+ L(-1.970266640239849804162284805400136473801E13),
+ L(-2.819677689615038489384974042561531409392E12),
+ L(-2.056105863694742752589691183194061265094E11),
+ L(-8.053670086493258693186307810815819662078E9),
+ L(-1.632090155573373286153427982504851867131E8),
+ L(-1.483575879240631280658077826889223634921E6),
+ L(-4.002806669713232271615885826373550502510E3)
+ /* 1.0E0L */
+};
+
+
+/* log gamma(x+9) = log gamma(9) + x P(x)/Q(x)
+ -0.5 <= x <= 0.5
+ 8.5 <= x+9 <= 9.5
+ Peak relative error 3.6e-36 */
+static const _Float128 lgam9a = L(1.06045989990234375E1);
+static const _Float128 lgam9b = L(3.9037218127284172274007216547549861681400E-6);
+#define NRN9 7
+static const _Float128 RN9[NRN9 + 1] =
+{
+ L(-4.936332264202687973364500998984608306189E13),
+ L(-2.101372682623700967335206138517766274855E13),
+ L(-3.615893404644823888655732817505129444195E12),
+ L(-3.217104993800878891194322691860075472926E11),
+ L(-1.568465330337375725685439173603032921399E10),
+ L(-4.073317518162025744377629219101510217761E8),
+ L(-4.983232096406156139324846656819246974500E6),
+ L(-2.036280038903695980912289722995505277253E4)
+};
+#define NRD9 7
+static const _Float128 RD9[NRD9 + 1] =
+{
+ L(-2.306006080437656357167128541231915480393E13),
+ L(-9.183606842453274924895648863832233799950E12),
+ L(-1.461857965935942962087907301194381010380E12),
+ L(-1.185728254682789754150068652663124298303E11),
+ L(-5.166285094703468567389566085480783070037E9),
+ L(-1.164573656694603024184768200787835094317E8),
+ L(-1.177343939483908678474886454113163527909E6),
+ L(-3.529391059783109732159524500029157638736E3)
+ /* 1.0E0L */
+};
+
+
+/* log gamma(x+8) = log gamma(8) + x P(x)/Q(x)
+ -0.5 <= x <= 0.5
+ 7.5 <= x+8 <= 8.5
+ Peak relative error 2.4e-37 */
+static const _Float128 lgam8a = L(8.525146484375E0);
+static const _Float128 lgam8b = L(1.4876690414300165531036347125050759667737E-5);
+#define NRN8 8
+static const _Float128 RN8[NRN8 + 1] =
+{
+ L(6.600775438203423546565361176829139703289E11),
+ L(3.406361267593790705240802723914281025800E11),
+ L(7.222460928505293914746983300555538432830E10),
+ L(8.102984106025088123058747466840656458342E9),
+ L(5.157620015986282905232150979772409345927E8),
+ L(1.851445288272645829028129389609068641517E7),
+ L(3.489261702223124354745894067468953756656E5),
+ L(2.892095396706665774434217489775617756014E3),
+ L(6.596977510622195827183948478627058738034E0)
+};
+#define NRD8 7
+static const _Float128 RD8[NRD8 + 1] =
+{
+ L(3.274776546520735414638114828622673016920E11),
+ L(1.581811207929065544043963828487733970107E11),
+ L(3.108725655667825188135393076860104546416E10),
+ L(3.193055010502912617128480163681842165730E9),
+ L(1.830871482669835106357529710116211541839E8),
+ L(5.790862854275238129848491555068073485086E6),
+ L(9.305213264307921522842678835618803553589E4),
+ L(6.216974105861848386918949336819572333622E2)
+ /* 1.0E0L */
+};
+
+
+/* log gamma(x+7) = log gamma(7) + x P(x)/Q(x)
+ -0.5 <= x <= 0.5
+ 6.5 <= x+7 <= 7.5
+ Peak relative error 3.2e-36 */
+static const _Float128 lgam7a = L(6.5792388916015625E0);
+static const _Float128 lgam7b = L(1.2320408538495060178292903945321122583007E-5);
+#define NRN7 8
+static const _Float128 RN7[NRN7 + 1] =
+{
+ L(2.065019306969459407636744543358209942213E11),
+ L(1.226919919023736909889724951708796532847E11),
+ L(2.996157990374348596472241776917953749106E10),
+ L(3.873001919306801037344727168434909521030E9),
+ L(2.841575255593761593270885753992732145094E8),
+ L(1.176342515359431913664715324652399565551E7),
+ L(2.558097039684188723597519300356028511547E5),
+ L(2.448525238332609439023786244782810774702E3),
+ L(6.460280377802030953041566617300902020435E0)
+};
+#define NRD7 7
+static const _Float128 RD7[NRD7 + 1] =
+{
+ L(1.102646614598516998880874785339049304483E11),
+ L(6.099297512712715445879759589407189290040E10),
+ L(1.372898136289611312713283201112060238351E10),
+ L(1.615306270420293159907951633566635172343E9),
+ L(1.061114435798489135996614242842561967459E8),
+ L(3.845638971184305248268608902030718674691E6),
+ L(7.081730675423444975703917836972720495507E4),
+ L(5.423122582741398226693137276201344096370E2)
+ /* 1.0E0L */
+};
+
+
+/* log gamma(x+6) = log gamma(6) + x P(x)/Q(x)
+ -0.5 <= x <= 0.5
+ 5.5 <= x+6 <= 6.5
+ Peak relative error 6.2e-37 */
+static const _Float128 lgam6a = L(4.7874908447265625E0);
+static const _Float128 lgam6b = L(8.9805548349424770093452324304839959231517E-7);
+#define NRN6 8
+static const _Float128 RN6[NRN6 + 1] =
+{
+ L(-3.538412754670746879119162116819571823643E13),
+ L(-2.613432593406849155765698121483394257148E13),
+ L(-8.020670732770461579558867891923784753062E12),
+ L(-1.322227822931250045347591780332435433420E12),
+ L(-1.262809382777272476572558806855377129513E11),
+ L(-7.015006277027660872284922325741197022467E9),
+ L(-2.149320689089020841076532186783055727299E8),
+ L(-3.167210585700002703820077565539658995316E6),
+ L(-1.576834867378554185210279285358586385266E4)
+};
+#define NRD6 8
+static const _Float128 RD6[NRD6 + 1] =
+{
+ L(-2.073955870771283609792355579558899389085E13),
+ L(-1.421592856111673959642750863283919318175E13),
+ L(-4.012134994918353924219048850264207074949E12),
+ L(-6.013361045800992316498238470888523722431E11),
+ L(-5.145382510136622274784240527039643430628E10),
+ L(-2.510575820013409711678540476918249524123E9),
+ L(-6.564058379709759600836745035871373240904E7),
+ L(-7.861511116647120540275354855221373571536E5),
+ L(-2.821943442729620524365661338459579270561E3)
+ /* 1.0E0L */
+};
+
+
+/* log gamma(x+5) = log gamma(5) + x P(x)/Q(x)
+ -0.5 <= x <= 0.5
+ 4.5 <= x+5 <= 5.5
+ Peak relative error 3.4e-37 */
+static const _Float128 lgam5a = L(3.17803955078125E0);
+static const _Float128 lgam5b = L(1.4279566695619646941601297055408873990961E-5);
+#define NRN5 9
+static const _Float128 RN5[NRN5 + 1] =
+{
+ L(2.010952885441805899580403215533972172098E11),
+ L(1.916132681242540921354921906708215338584E11),
+ L(7.679102403710581712903937970163206882492E10),
+ L(1.680514903671382470108010973615268125169E10),
+ L(2.181011222911537259440775283277711588410E9),
+ L(1.705361119398837808244780667539728356096E8),
+ L(7.792391565652481864976147945997033946360E6),
+ L(1.910741381027985291688667214472560023819E5),
+ L(2.088138241893612679762260077783794329559E3),
+ L(6.330318119566998299106803922739066556550E0)
+};
+#define NRD5 8
+static const _Float128 RD5[NRD5 + 1] =
+{
+ L(1.335189758138651840605141370223112376176E11),
+ L(1.174130445739492885895466097516530211283E11),
+ L(4.308006619274572338118732154886328519910E10),
+ L(8.547402888692578655814445003283720677468E9),
+ L(9.934628078575618309542580800421370730906E8),
+ L(6.847107420092173812998096295422311820672E7),
+ L(2.698552646016599923609773122139463150403E6),
+ L(5.526516251532464176412113632726150253215E4),
+ L(4.772343321713697385780533022595450486932E2)
+ /* 1.0E0L */
+};
+
+
+/* log gamma(x+4) = log gamma(4) + x P(x)/Q(x)
+ -0.5 <= x <= 0.5
+ 3.5 <= x+4 <= 4.5
+ Peak relative error 6.7e-37 */
+static const _Float128 lgam4a = L(1.791748046875E0);
+static const _Float128 lgam4b = L(1.1422353055000812477358380702272722990692E-5);
+#define NRN4 9
+static const _Float128 RN4[NRN4 + 1] =
+{
+ L(-1.026583408246155508572442242188887829208E13),
+ L(-1.306476685384622809290193031208776258809E13),
+ L(-7.051088602207062164232806511992978915508E12),
+ L(-2.100849457735620004967624442027793656108E12),
+ L(-3.767473790774546963588549871673843260569E11),
+ L(-4.156387497364909963498394522336575984206E10),
+ L(-2.764021460668011732047778992419118757746E9),
+ L(-1.036617204107109779944986471142938641399E8),
+ L(-1.895730886640349026257780896972598305443E6),
+ L(-1.180509051468390914200720003907727988201E4)
+};
+#define NRD4 9
+static const _Float128 RD4[NRD4 + 1] =
+{
+ L(-8.172669122056002077809119378047536240889E12),
+ L(-9.477592426087986751343695251801814226960E12),
+ L(-4.629448850139318158743900253637212801682E12),
+ L(-1.237965465892012573255370078308035272942E12),
+ L(-1.971624313506929845158062177061297598956E11),
+ L(-1.905434843346570533229942397763361493610E10),
+ L(-1.089409357680461419743730978512856675984E9),
+ L(-3.416703082301143192939774401370222822430E7),
+ L(-4.981791914177103793218433195857635265295E5),
+ L(-2.192507743896742751483055798411231453733E3)
+ /* 1.0E0L */
+};
+
+
+/* log gamma(x+3) = log gamma(3) + x P(x)/Q(x)
+ -0.25 <= x <= 0.5
+ 2.75 <= x+3 <= 3.5
+ Peak relative error 6.0e-37 */
+static const _Float128 lgam3a = L(6.93145751953125E-1);
+static const _Float128 lgam3b = L(1.4286068203094172321214581765680755001344E-6);
+
+#define NRN3 9
+static const _Float128 RN3[NRN3 + 1] =
+{
+ L(-4.813901815114776281494823863935820876670E11),
+ L(-8.425592975288250400493910291066881992620E11),
+ L(-6.228685507402467503655405482985516909157E11),
+ L(-2.531972054436786351403749276956707260499E11),
+ L(-6.170200796658926701311867484296426831687E10),
+ L(-9.211477458528156048231908798456365081135E9),
+ L(-8.251806236175037114064561038908691305583E8),
+ L(-4.147886355917831049939930101151160447495E7),
+ L(-1.010851868928346082547075956946476932162E6),
+ L(-8.333374463411801009783402800801201603736E3)
+};
+#define NRD3 9
+static const _Float128 RD3[NRD3 + 1] =
+{
+ L(-5.216713843111675050627304523368029262450E11),
+ L(-8.014292925418308759369583419234079164391E11),
+ L(-5.180106858220030014546267824392678611990E11),
+ L(-1.830406975497439003897734969120997840011E11),
+ L(-3.845274631904879621945745960119924118925E10),
+ L(-4.891033385370523863288908070309417710903E9),
+ L(-3.670172254411328640353855768698287474282E8),
+ L(-1.505316381525727713026364396635522516989E7),
+ L(-2.856327162923716881454613540575964890347E5),
+ L(-1.622140448015769906847567212766206894547E3)
+ /* 1.0E0L */
+};
+
+
+/* log gamma(x+2.5) = log gamma(2.5) + x P(x)/Q(x)
+ -0.125 <= x <= 0.25
+ 2.375 <= x+2.5 <= 2.75 */
+static const _Float128 lgam2r5a = L(2.8466796875E-1);
+static const _Float128 lgam2r5b = L(1.4901722919159632494669682701924320137696E-5);
+#define NRN2r5 8
+static const _Float128 RN2r5[NRN2r5 + 1] =
+{
+ L(-4.676454313888335499356699817678862233205E9),
+ L(-9.361888347911187924389905984624216340639E9),
+ L(-7.695353600835685037920815799526540237703E9),
+ L(-3.364370100981509060441853085968900734521E9),
+ L(-8.449902011848163568670361316804900559863E8),
+ L(-1.225249050950801905108001246436783022179E8),
+ L(-9.732972931077110161639900388121650470926E6),
+ L(-3.695711763932153505623248207576425983573E5),
+ L(-4.717341584067827676530426007495274711306E3)
+};
+#define NRD2r5 8
+static const _Float128 RD2r5[NRD2r5 + 1] =
+{
+ L(-6.650657966618993679456019224416926875619E9),
+ L(-1.099511409330635807899718829033488771623E10),
+ L(-7.482546968307837168164311101447116903148E9),
+ L(-2.702967190056506495988922973755870557217E9),
+ L(-5.570008176482922704972943389590409280950E8),
+ L(-6.536934032192792470926310043166993233231E7),
+ L(-4.101991193844953082400035444146067511725E6),
+ L(-1.174082735875715802334430481065526664020E5),
+ L(-9.932840389994157592102947657277692978511E2)
+ /* 1.0E0L */
+};
+
+
+/* log gamma(x+2) = x P(x)/Q(x)
+ -0.125 <= x <= +0.375
+ 1.875 <= x+2 <= 2.375
+ Peak relative error 4.6e-36 */
+#define NRN2 9
+static const _Float128 RN2[NRN2 + 1] =
+{
+ L(-3.716661929737318153526921358113793421524E9),
+ L(-1.138816715030710406922819131397532331321E10),
+ L(-1.421017419363526524544402598734013569950E10),
+ L(-9.510432842542519665483662502132010331451E9),
+ L(-3.747528562099410197957514973274474767329E9),
+ L(-8.923565763363912474488712255317033616626E8),
+ L(-1.261396653700237624185350402781338231697E8),
+ L(-9.918402520255661797735331317081425749014E6),
+ L(-3.753996255897143855113273724233104768831E5),
+ L(-4.778761333044147141559311805999540765612E3)
+};
+#define NRD2 9
+static const _Float128 RD2[NRD2 + 1] =
+{
+ L(-8.790916836764308497770359421351673950111E9),
+ L(-2.023108608053212516399197678553737477486E10),
+ L(-1.958067901852022239294231785363504458367E10),
+ L(-1.035515043621003101254252481625188704529E10),
+ L(-3.253884432621336737640841276619272224476E9),
+ L(-6.186383531162456814954947669274235815544E8),
+ L(-6.932557847749518463038934953605969951466E7),
+ L(-4.240731768287359608773351626528479703758E6),
+ L(-1.197343995089189188078944689846348116630E5),
+ L(-1.004622911670588064824904487064114090920E3)
+/* 1.0E0 */
+};
+
+
+/* log gamma(x+1.75) = log gamma(1.75) + x P(x)/Q(x)
+ -0.125 <= x <= +0.125
+ 1.625 <= x+1.75 <= 1.875
+ Peak relative error 9.2e-37 */
+static const _Float128 lgam1r75a = L(-8.441162109375E-2);
+static const _Float128 lgam1r75b = L(1.0500073264444042213965868602268256157604E-5);
+#define NRN1r75 8
+static const _Float128 RN1r75[NRN1r75 + 1] =
+{
+ L(-5.221061693929833937710891646275798251513E7),
+ L(-2.052466337474314812817883030472496436993E8),
+ L(-2.952718275974940270675670705084125640069E8),
+ L(-2.132294039648116684922965964126389017840E8),
+ L(-8.554103077186505960591321962207519908489E7),
+ L(-1.940250901348870867323943119132071960050E7),
+ L(-2.379394147112756860769336400290402208435E6),
+ L(-1.384060879999526222029386539622255797389E5),
+ L(-2.698453601378319296159355612094598695530E3)
+};
+#define NRD1r75 8
+static const _Float128 RD1r75[NRD1r75 + 1] =
+{
+ L(-2.109754689501705828789976311354395393605E8),
+ L(-5.036651829232895725959911504899241062286E8),
+ L(-4.954234699418689764943486770327295098084E8),
+ L(-2.589558042412676610775157783898195339410E8),
+ L(-7.731476117252958268044969614034776883031E7),
+ L(-1.316721702252481296030801191240867486965E7),
+ L(-1.201296501404876774861190604303728810836E6),
+ L(-5.007966406976106636109459072523610273928E4),
+ L(-6.155817990560743422008969155276229018209E2)
+ /* 1.0E0L */
+};
+
+
+/* log gamma(x+x0) = y0 + x^2 P(x)/Q(x)
+ -0.0867 <= x <= +0.1634
+ 1.374932... <= x+x0 <= 1.625032...
+ Peak relative error 4.0e-36 */
+static const _Float128 x0a = L(1.4616241455078125);
+static const _Float128 x0b = L(7.9994605498412626595423257213002588621246E-6);
+static const _Float128 y0a = L(-1.21490478515625E-1);
+static const _Float128 y0b = L(4.1879797753919044854428223084178486438269E-6);
+#define NRN1r5 8
+static const _Float128 RN1r5[NRN1r5 + 1] =
+{
+ L(6.827103657233705798067415468881313128066E5),
+ L(1.910041815932269464714909706705242148108E6),
+ L(2.194344176925978377083808566251427771951E6),
+ L(1.332921400100891472195055269688876427962E6),
+ L(4.589080973377307211815655093824787123508E5),
+ L(8.900334161263456942727083580232613796141E4),
+ L(9.053840838306019753209127312097612455236E3),
+ L(4.053367147553353374151852319743594873771E2),
+ L(5.040631576303952022968949605613514584950E0)
+};
+#define NRD1r5 8
+static const _Float128 RD1r5[NRD1r5 + 1] =
+{
+ L(1.411036368843183477558773688484699813355E6),
+ L(4.378121767236251950226362443134306184849E6),
+ L(5.682322855631723455425929877581697918168E6),
+ L(3.999065731556977782435009349967042222375E6),
+ L(1.653651390456781293163585493620758410333E6),
+ L(4.067774359067489605179546964969435858311E5),
+ L(5.741463295366557346748361781768833633256E4),
+ L(4.226404539738182992856094681115746692030E3),
+ L(1.316980975410327975566999780608618774469E2),
+ /* 1.0E0L */
+};
+
+
+/* log gamma(x+1.25) = log gamma(1.25) + x P(x)/Q(x)
+ -.125 <= x <= +.125
+ 1.125 <= x+1.25 <= 1.375
+ Peak relative error = 4.9e-36 */
+static const _Float128 lgam1r25a = L(-9.82818603515625E-2);
+static const _Float128 lgam1r25b = L(1.0023929749338536146197303364159774377296E-5);
+#define NRN1r25 9
+static const _Float128 RN1r25[NRN1r25 + 1] =
+{
+ L(-9.054787275312026472896002240379580536760E4),
+ L(-8.685076892989927640126560802094680794471E4),
+ L(2.797898965448019916967849727279076547109E5),
+ L(6.175520827134342734546868356396008898299E5),
+ L(5.179626599589134831538516906517372619641E5),
+ L(2.253076616239043944538380039205558242161E5),
+ L(5.312653119599957228630544772499197307195E4),
+ L(6.434329437514083776052669599834938898255E3),
+ L(3.385414416983114598582554037612347549220E2),
+ L(4.907821957946273805080625052510832015792E0)
+};
+#define NRD1r25 8
+static const _Float128 RD1r25[NRD1r25 + 1] =
+{
+ L(3.980939377333448005389084785896660309000E5),
+ L(1.429634893085231519692365775184490465542E6),
+ L(2.145438946455476062850151428438668234336E6),
+ L(1.743786661358280837020848127465970357893E6),
+ L(8.316364251289743923178092656080441655273E5),
+ L(2.355732939106812496699621491135458324294E5),
+ L(3.822267399625696880571810137601310855419E4),
+ L(3.228463206479133236028576845538387620856E3),
+ L(1.152133170470059555646301189220117965514E2)
+ /* 1.0E0L */
+};
+
+
+/* log gamma(x + 1) = x P(x)/Q(x)
+ 0.0 <= x <= +0.125
+ 1.0 <= x+1 <= 1.125
+ Peak relative error 1.1e-35 */
+#define NRN1 8
+static const _Float128 RN1[NRN1 + 1] =
+{
+ L(-9.987560186094800756471055681088744738818E3),
+ L(-2.506039379419574361949680225279376329742E4),
+ L(-1.386770737662176516403363873617457652991E4),
+ L(1.439445846078103202928677244188837130744E4),
+ L(2.159612048879650471489449668295139990693E4),
+ L(1.047439813638144485276023138173676047079E4),
+ L(2.250316398054332592560412486630769139961E3),
+ L(1.958510425467720733041971651126443864041E2),
+ L(4.516830313569454663374271993200291219855E0)
+};
+#define NRD1 7
+static const _Float128 RD1[NRD1 + 1] =
+{
+ L(1.730299573175751778863269333703788214547E4),
+ L(6.807080914851328611903744668028014678148E4),
+ L(1.090071629101496938655806063184092302439E5),
+ L(9.124354356415154289343303999616003884080E4),
+ L(4.262071638655772404431164427024003253954E4),
+ L(1.096981664067373953673982635805821283581E4),
+ L(1.431229503796575892151252708527595787588E3),
+ L(7.734110684303689320830401788262295992921E1)
+ /* 1.0E0 */
+};
+
+
+/* log gamma(x + 1) = x P(x)/Q(x)
+ -0.125 <= x <= 0
+ 0.875 <= x+1 <= 1.0
+ Peak relative error 7.0e-37 */
+#define NRNr9 8
+static const _Float128 RNr9[NRNr9 + 1] =
+{
+ L(4.441379198241760069548832023257571176884E5),
+ L(1.273072988367176540909122090089580368732E6),
+ L(9.732422305818501557502584486510048387724E5),
+ L(-5.040539994443998275271644292272870348684E5),
+ L(-1.208719055525609446357448132109723786736E6),
+ L(-7.434275365370936547146540554419058907156E5),
+ L(-2.075642969983377738209203358199008185741E5),
+ L(-2.565534860781128618589288075109372218042E4),
+ L(-1.032901669542994124131223797515913955938E3),
+};
+#define NRDr9 8
+static const _Float128 RDr9[NRDr9 + 1] =
+{
+ L(-7.694488331323118759486182246005193998007E5),
+ L(-3.301918855321234414232308938454112213751E6),
+ L(-5.856830900232338906742924836032279404702E6),
+ L(-5.540672519616151584486240871424021377540E6),
+ L(-3.006530901041386626148342989181721176919E6),
+ L(-9.350378280513062139466966374330795935163E5),
+ L(-1.566179100031063346901755685375732739511E5),
+ L(-1.205016539620260779274902967231510804992E4),
+ L(-2.724583156305709733221564484006088794284E2)
+/* 1.0E0 */
+};
+
+
+/* Evaluate P[n] x^n + P[n-1] x^(n-1) + ... + P[0] */
+
+static _Float128
+neval (_Float128 x, const _Float128 *p, int n)
+{
+ _Float128 y;
+
+ p += n;
+ y = *p--;
+ do
+ {
+ y = y * x + *p--;
+ }
+ while (--n > 0);
+ return y;
+}
+
+
+/* Evaluate x^n+1 + P[n] x^(n) + P[n-1] x^(n-1) + ... + P[0] */
+
+static _Float128
+deval (_Float128 x, const _Float128 *p, int n)
+{
+ _Float128 y;
+
+ p += n;
+ y = x + *p--;
+ do
+ {
+ y = y * x + *p--;
+ }
+ while (--n > 0);
+ return y;
+}
+
+
+_Float128
+__ieee754_lgammal_r (_Float128 x, int *signgamp)
+{
+ _Float128 p, q, w, z, nx;
+ int i, nn;
+
+ *signgamp = 1;
+
+ if (! isfinite (x))
+ return x * x;
+
+ if (x == 0)
+ {
+ if (signbit (x))
+ *signgamp = -1;
+ }
+
+ if (x < 0)
+ {
+ if (x < -2 && x > (LDBL_MANT_DIG == 106 ? -48 : -50))
+ return __lgamma_negl (x, signgamp);
+ q = -x;
+ p = __floorl (q);
+ if (p == q)
+ return (one / __fabsl (p - p));
+ _Float128 halfp = p * L(0.5);
+ if (halfp == __floorl (halfp))
+ *signgamp = -1;
+ else
+ *signgamp = 1;
+ if (q < L(0x1p-120))
+ return -__logl (q);
+ z = q - p;
+ if (z > L(0.5))
+ {
+ p += 1;
+ z = p - q;
+ }
+ z = q * __sinl (PIL * z);
+ w = __ieee754_lgammal_r (q, &i);
+ z = __logl (PIL / z) - w;
+ return (z);
+ }
+
+ if (x < L(13.5))
+ {
+ p = 0;
+ nx = __floorl (x + L(0.5));
+ nn = nx;
+ switch (nn)
+ {
+ case 0:
+ /* log gamma (x + 1) = log(x) + log gamma(x) */
+ if (x < L(0x1p-120))
+ return -__logl (x);
+ else if (x <= 0.125)
+ {
+ p = x * neval (x, RN1, NRN1) / deval (x, RD1, NRD1);
+ }
+ else if (x <= 0.375)
+ {
+ z = x - L(0.25);
+ p = z * neval (z, RN1r25, NRN1r25) / deval (z, RD1r25, NRD1r25);
+ p += lgam1r25b;
+ p += lgam1r25a;
+ }
+ else if (x <= 0.625)
+ {
+ z = x + (1 - x0a);
+ z = z - x0b;
+ p = neval (z, RN1r5, NRN1r5) / deval (z, RD1r5, NRD1r5);
+ p = p * z * z;
+ p = p + y0b;
+ p = p + y0a;
+ }
+ else if (x <= 0.875)
+ {
+ z = x - L(0.75);
+ p = z * neval (z, RN1r75, NRN1r75) / deval (z, RD1r75, NRD1r75);
+ p += lgam1r75b;
+ p += lgam1r75a;
+ }
+ else
+ {
+ z = x - 1;
+ p = z * neval (z, RN2, NRN2) / deval (z, RD2, NRD2);
+ }
+ p = p - __logl (x);
+ break;
+
+ case 1:
+ if (x < L(0.875))
+ {
+ if (x <= 0.625)
+ {
+ z = x + (1 - x0a);
+ z = z - x0b;
+ p = neval (z, RN1r5, NRN1r5) / deval (z, RD1r5, NRD1r5);
+ p = p * z * z;
+ p = p + y0b;
+ p = p + y0a;
+ }
+ else if (x <= 0.875)
+ {
+ z = x - L(0.75);
+ p = z * neval (z, RN1r75, NRN1r75)
+ / deval (z, RD1r75, NRD1r75);
+ p += lgam1r75b;
+ p += lgam1r75a;
+ }
+ else
+ {
+ z = x - 1;
+ p = z * neval (z, RN2, NRN2) / deval (z, RD2, NRD2);
+ }
+ p = p - __logl (x);
+ }
+ else if (x < 1)
+ {
+ z = x - 1;
+ p = z * neval (z, RNr9, NRNr9) / deval (z, RDr9, NRDr9);
+ }
+ else if (x == 1)
+ p = 0;
+ else if (x <= L(1.125))
+ {
+ z = x - 1;
+ p = z * neval (z, RN1, NRN1) / deval (z, RD1, NRD1);
+ }
+ else if (x <= 1.375)
+ {
+ z = x - L(1.25);
+ p = z * neval (z, RN1r25, NRN1r25) / deval (z, RD1r25, NRD1r25);
+ p += lgam1r25b;
+ p += lgam1r25a;
+ }
+ else
+ {
+ /* 1.375 <= x+x0 <= 1.625 */
+ z = x - x0a;
+ z = z - x0b;
+ p = neval (z, RN1r5, NRN1r5) / deval (z, RD1r5, NRD1r5);
+ p = p * z * z;
+ p = p + y0b;
+ p = p + y0a;
+ }
+ break;
+
+ case 2:
+ if (x < L(1.625))
+ {
+ z = x - x0a;
+ z = z - x0b;
+ p = neval (z, RN1r5, NRN1r5) / deval (z, RD1r5, NRD1r5);
+ p = p * z * z;
+ p = p + y0b;
+ p = p + y0a;
+ }
+ else if (x < L(1.875))
+ {
+ z = x - L(1.75);
+ p = z * neval (z, RN1r75, NRN1r75) / deval (z, RD1r75, NRD1r75);
+ p += lgam1r75b;
+ p += lgam1r75a;
+ }
+ else if (x == 2)
+ p = 0;
+ else if (x < L(2.375))
+ {
+ z = x - 2;
+ p = z * neval (z, RN2, NRN2) / deval (z, RD2, NRD2);
+ }
+ else
+ {
+ z = x - L(2.5);
+ p = z * neval (z, RN2r5, NRN2r5) / deval (z, RD2r5, NRD2r5);
+ p += lgam2r5b;
+ p += lgam2r5a;
+ }
+ break;
+
+ case 3:
+ if (x < 2.75)
+ {
+ z = x - L(2.5);
+ p = z * neval (z, RN2r5, NRN2r5) / deval (z, RD2r5, NRD2r5);
+ p += lgam2r5b;
+ p += lgam2r5a;
+ }
+ else
+ {
+ z = x - 3;
+ p = z * neval (z, RN3, NRN3) / deval (z, RD3, NRD3);
+ p += lgam3b;
+ p += lgam3a;
+ }
+ break;
+
+ case 4:
+ z = x - 4;
+ p = z * neval (z, RN4, NRN4) / deval (z, RD4, NRD4);
+ p += lgam4b;
+ p += lgam4a;
+ break;
+
+ case 5:
+ z = x - 5;
+ p = z * neval (z, RN5, NRN5) / deval (z, RD5, NRD5);
+ p += lgam5b;
+ p += lgam5a;
+ break;
+
+ case 6:
+ z = x - 6;
+ p = z * neval (z, RN6, NRN6) / deval (z, RD6, NRD6);
+ p += lgam6b;
+ p += lgam6a;
+ break;
+
+ case 7:
+ z = x - 7;
+ p = z * neval (z, RN7, NRN7) / deval (z, RD7, NRD7);
+ p += lgam7b;
+ p += lgam7a;
+ break;
+
+ case 8:
+ z = x - 8;
+ p = z * neval (z, RN8, NRN8) / deval (z, RD8, NRD8);
+ p += lgam8b;
+ p += lgam8a;
+ break;
+
+ case 9:
+ z = x - 9;
+ p = z * neval (z, RN9, NRN9) / deval (z, RD9, NRD9);
+ p += lgam9b;
+ p += lgam9a;
+ break;
+
+ case 10:
+ z = x - 10;
+ p = z * neval (z, RN10, NRN10) / deval (z, RD10, NRD10);
+ p += lgam10b;
+ p += lgam10a;
+ break;
+
+ case 11:
+ z = x - 11;
+ p = z * neval (z, RN11, NRN11) / deval (z, RD11, NRD11);
+ p += lgam11b;
+ p += lgam11a;
+ break;
+
+ case 12:
+ z = x - 12;
+ p = z * neval (z, RN12, NRN12) / deval (z, RD12, NRD12);
+ p += lgam12b;
+ p += lgam12a;
+ break;
+
+ case 13:
+ z = x - 13;
+ p = z * neval (z, RN13, NRN13) / deval (z, RD13, NRD13);
+ p += lgam13b;
+ p += lgam13a;
+ break;
+ }
+ return p;
+ }
+
+ if (x > MAXLGM)
+ return (*signgamp * huge * huge);
+
+ if (x > L(0x1p120))
+ return x * (__logl (x) - 1);
+ q = ls2pi - x;
+ q = (x - L(0.5)) * __logl (x) + q;
+ if (x > L(1.0e18))
+ return (q);
+
+ p = 1 / (x * x);
+ q += neval (p, RASY, NRASY) / x;
+ return (q);
+}
+strong_alias (__ieee754_lgammal_r, __lgammal_r_finite)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128/e_log10l.c b/REORG.TODO/sysdeps/ieee754/ldbl-128/e_log10l.c
new file mode 100644
index 0000000000..c992f6e5ee
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128/e_log10l.c
@@ -0,0 +1,259 @@
+/* log10l.c
+ *
+ * Common logarithm, 128-bit long double precision
+ *
+ *
+ *
+ * SYNOPSIS:
+ *
+ * long double x, y, log10l();
+ *
+ * y = log10l( x );
+ *
+ *
+ *
+ * DESCRIPTION:
+ *
+ * Returns the base 10 logarithm of x.
+ *
+ * The argument is separated into its exponent and fractional
+ * parts. If the exponent is between -1 and +1, the logarithm
+ * of the fraction is approximated by
+ *
+ * log(1+x) = x - 0.5 x^2 + x^3 P(x)/Q(x).
+ *
+ * Otherwise, setting z = 2(x-1)/x+1),
+ *
+ * log(x) = z + z^3 P(z)/Q(z).
+ *
+ *
+ *
+ * ACCURACY:
+ *
+ * Relative error:
+ * arithmetic domain # trials peak rms
+ * IEEE 0.5, 2.0 30000 2.3e-34 4.9e-35
+ * IEEE exp(+-10000) 30000 1.0e-34 4.1e-35
+ *
+ * In the tests over the interval exp(+-10000), the logarithms
+ * of the random arguments were uniformly distributed over
+ * [-10000, +10000].
+ *
+ */
+
+/*
+ Cephes Math Library Release 2.2: January, 1991
+ Copyright 1984, 1991 by Stephen L. Moshier
+ Adapted for glibc November, 2001
+
+ This 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 2.1 of the License, or (at your option) any later version.
+
+ This 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 this library; if not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <math.h>
+#include <math_private.h>
+
+/* Coefficients for ln(1+x) = x - x**2/2 + x**3 P(x)/Q(x)
+ * 1/sqrt(2) <= x < sqrt(2)
+ * Theoretical peak relative error = 5.3e-37,
+ * relative peak error spread = 2.3e-14
+ */
+static const _Float128 P[13] =
+{
+ L(1.313572404063446165910279910527789794488E4),
+ L(7.771154681358524243729929227226708890930E4),
+ L(2.014652742082537582487669938141683759923E5),
+ L(3.007007295140399532324943111654767187848E5),
+ L(2.854829159639697837788887080758954924001E5),
+ L(1.797628303815655343403735250238293741397E5),
+ L(7.594356839258970405033155585486712125861E4),
+ L(2.128857716871515081352991964243375186031E4),
+ L(3.824952356185897735160588078446136783779E3),
+ L(4.114517881637811823002128927449878962058E2),
+ L(2.321125933898420063925789532045674660756E1),
+ L(4.998469661968096229986658302195402690910E-1),
+ L(1.538612243596254322971797716843006400388E-6)
+};
+static const _Float128 Q[12] =
+{
+ L(3.940717212190338497730839731583397586124E4),
+ L(2.626900195321832660448791748036714883242E5),
+ L(7.777690340007566932935753241556479363645E5),
+ L(1.347518538384329112529391120390701166528E6),
+ L(1.514882452993549494932585972882995548426E6),
+ L(1.158019977462989115839826904108208787040E6),
+ L(6.132189329546557743179177159925690841200E5),
+ L(2.248234257620569139969141618556349415120E5),
+ L(5.605842085972455027590989944010492125825E4),
+ L(9.147150349299596453976674231612674085381E3),
+ L(9.104928120962988414618126155557301584078E2),
+ L(4.839208193348159620282142911143429644326E1)
+/* 1.000000000000000000000000000000000000000E0L, */
+};
+
+/* Coefficients for log(x) = z + z^3 P(z^2)/Q(z^2),
+ * where z = 2(x-1)/(x+1)
+ * 1/sqrt(2) <= x < sqrt(2)
+ * Theoretical peak relative error = 1.1e-35,
+ * relative peak error spread 1.1e-9
+ */
+static const _Float128 R[6] =
+{
+ L(1.418134209872192732479751274970992665513E5),
+ L(-8.977257995689735303686582344659576526998E4),
+ L(2.048819892795278657810231591630928516206E4),
+ L(-2.024301798136027039250415126250455056397E3),
+ L(8.057002716646055371965756206836056074715E1),
+ L(-8.828896441624934385266096344596648080902E-1)
+};
+static const _Float128 S[6] =
+{
+ L(1.701761051846631278975701529965589676574E6),
+ L(-1.332535117259762928288745111081235577029E6),
+ L(4.001557694070773974936904547424676279307E5),
+ L(-5.748542087379434595104154610899551484314E4),
+ L(3.998526750980007367835804959888064681098E3),
+ L(-1.186359407982897997337150403816839480438E2)
+/* 1.000000000000000000000000000000000000000E0L, */
+};
+
+static const _Float128
+/* log10(2) */
+L102A = L(0.3125),
+L102B = L(-1.14700043360188047862611052755069732318101185E-2),
+/* log10(e) */
+L10EA = L(0.5),
+L10EB = L(-6.570551809674817234887108108339491770560299E-2),
+/* sqrt(2)/2 */
+SQRTH = L(7.071067811865475244008443621048490392848359E-1);
+
+
+
+/* Evaluate P[n] x^n + P[n-1] x^(n-1) + ... + P[0] */
+
+static _Float128
+neval (_Float128 x, const _Float128 *p, int n)
+{
+ _Float128 y;
+
+ p += n;
+ y = *p--;
+ do
+ {
+ y = y * x + *p--;
+ }
+ while (--n > 0);
+ return y;
+}
+
+
+/* Evaluate x^n+1 + P[n] x^(n) + P[n-1] x^(n-1) + ... + P[0] */
+
+static _Float128
+deval (_Float128 x, const _Float128 *p, int n)
+{
+ _Float128 y;
+
+ p += n;
+ y = x + *p--;
+ do
+ {
+ y = y * x + *p--;
+ }
+ while (--n > 0);
+ return y;
+}
+
+
+
+_Float128
+__ieee754_log10l (_Float128 x)
+{
+ _Float128 z;
+ _Float128 y;
+ int e;
+ int64_t hx, lx;
+
+/* Test for domain */
+ GET_LDOUBLE_WORDS64 (hx, lx, x);
+ if (((hx & 0x7fffffffffffffffLL) | lx) == 0)
+ return (-1 / __fabsl (x)); /* log10l(+-0)=-inf */
+ if (hx < 0)
+ return (x - x) / (x - x);
+ if (hx >= 0x7fff000000000000LL)
+ return (x + x);
+
+ if (x == 1)
+ return 0;
+
+/* separate mantissa from exponent */
+
+/* Note, frexp is used so that denormal numbers
+ * will be handled properly.
+ */
+ x = __frexpl (x, &e);
+
+
+/* logarithm using log(x) = z + z**3 P(z)/Q(z),
+ * where z = 2(x-1)/x+1)
+ */
+ if ((e > 2) || (e < -2))
+ {
+ if (x < SQRTH)
+ { /* 2( 2x-1 )/( 2x+1 ) */
+ e -= 1;
+ z = x - L(0.5);
+ y = L(0.5) * z + L(0.5);
+ }
+ else
+ { /* 2 (x-1)/(x+1) */
+ z = x - L(0.5);
+ z -= L(0.5);
+ y = L(0.5) * x + L(0.5);
+ }
+ x = z / y;
+ z = x * x;
+ y = x * (z * neval (z, R, 5) / deval (z, S, 5));
+ goto done;
+ }
+
+
+/* logarithm using log(1+x) = x - .5x**2 + x**3 P(x)/Q(x) */
+
+ if (x < SQRTH)
+ {
+ e -= 1;
+ x = 2.0 * x - 1; /* 2x - 1 */
+ }
+ else
+ {
+ x = x - 1;
+ }
+ z = x * x;
+ y = x * (z * neval (x, P, 12) / deval (x, Q, 11));
+ y = y - 0.5 * z;
+
+done:
+
+ /* Multiply log of fraction by log10(e)
+ * and base 2 exponent by log10(2).
+ */
+ z = y * L10EB;
+ z += x * L10EB;
+ z += e * L102B;
+ z += y * L10EA;
+ z += x * L10EA;
+ z += e * L102A;
+ return (z);
+}
+strong_alias (__ieee754_log10l, __log10l_finite)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128/e_log2l.c b/REORG.TODO/sysdeps/ieee754/ldbl-128/e_log2l.c
new file mode 100644
index 0000000000..cf4a380f16
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128/e_log2l.c
@@ -0,0 +1,252 @@
+/* log2l.c
+ * Base 2 logarithm, 128-bit long double precision
+ *
+ *
+ *
+ * SYNOPSIS:
+ *
+ * long double x, y, log2l();
+ *
+ * y = log2l( x );
+ *
+ *
+ *
+ * DESCRIPTION:
+ *
+ * Returns the base 2 logarithm of x.
+ *
+ * The argument is separated into its exponent and fractional
+ * parts. If the exponent is between -1 and +1, the (natural)
+ * logarithm of the fraction is approximated by
+ *
+ * log(1+x) = x - 0.5 x^2 + x^3 P(x)/Q(x).
+ *
+ * Otherwise, setting z = 2(x-1)/x+1),
+ *
+ * log(x) = z + z^3 P(z)/Q(z).
+ *
+ *
+ *
+ * ACCURACY:
+ *
+ * Relative error:
+ * arithmetic domain # trials peak rms
+ * IEEE 0.5, 2.0 100,000 2.6e-34 4.9e-35
+ * IEEE exp(+-10000) 100,000 9.6e-35 4.0e-35
+ *
+ * In the tests over the interval exp(+-10000), the logarithms
+ * of the random arguments were uniformly distributed over
+ * [-10000, +10000].
+ *
+ */
+
+/*
+ Cephes Math Library Release 2.2: January, 1991
+ Copyright 1984, 1991 by Stephen L. Moshier
+ Adapted for glibc November, 2001
+
+ This 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 2.1 of the License, or (at your option) any later version.
+
+ This 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 this library; if not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <math.h>
+#include <math_private.h>
+
+/* Coefficients for ln(1+x) = x - x**2/2 + x**3 P(x)/Q(x)
+ * 1/sqrt(2) <= x < sqrt(2)
+ * Theoretical peak relative error = 5.3e-37,
+ * relative peak error spread = 2.3e-14
+ */
+static const _Float128 P[13] =
+{
+ L(1.313572404063446165910279910527789794488E4),
+ L(7.771154681358524243729929227226708890930E4),
+ L(2.014652742082537582487669938141683759923E5),
+ L(3.007007295140399532324943111654767187848E5),
+ L(2.854829159639697837788887080758954924001E5),
+ L(1.797628303815655343403735250238293741397E5),
+ L(7.594356839258970405033155585486712125861E4),
+ L(2.128857716871515081352991964243375186031E4),
+ L(3.824952356185897735160588078446136783779E3),
+ L(4.114517881637811823002128927449878962058E2),
+ L(2.321125933898420063925789532045674660756E1),
+ L(4.998469661968096229986658302195402690910E-1),
+ L(1.538612243596254322971797716843006400388E-6)
+};
+static const _Float128 Q[12] =
+{
+ L(3.940717212190338497730839731583397586124E4),
+ L(2.626900195321832660448791748036714883242E5),
+ L(7.777690340007566932935753241556479363645E5),
+ L(1.347518538384329112529391120390701166528E6),
+ L(1.514882452993549494932585972882995548426E6),
+ L(1.158019977462989115839826904108208787040E6),
+ L(6.132189329546557743179177159925690841200E5),
+ L(2.248234257620569139969141618556349415120E5),
+ L(5.605842085972455027590989944010492125825E4),
+ L(9.147150349299596453976674231612674085381E3),
+ L(9.104928120962988414618126155557301584078E2),
+ L(4.839208193348159620282142911143429644326E1)
+/* 1.000000000000000000000000000000000000000E0L, */
+};
+
+/* Coefficients for log(x) = z + z^3 P(z^2)/Q(z^2),
+ * where z = 2(x-1)/(x+1)
+ * 1/sqrt(2) <= x < sqrt(2)
+ * Theoretical peak relative error = 1.1e-35,
+ * relative peak error spread 1.1e-9
+ */
+static const _Float128 R[6] =
+{
+ L(1.418134209872192732479751274970992665513E5),
+ L(-8.977257995689735303686582344659576526998E4),
+ L(2.048819892795278657810231591630928516206E4),
+ L(-2.024301798136027039250415126250455056397E3),
+ L(8.057002716646055371965756206836056074715E1),
+ L(-8.828896441624934385266096344596648080902E-1)
+};
+static const _Float128 S[6] =
+{
+ L(1.701761051846631278975701529965589676574E6),
+ L(-1.332535117259762928288745111081235577029E6),
+ L(4.001557694070773974936904547424676279307E5),
+ L(-5.748542087379434595104154610899551484314E4),
+ L(3.998526750980007367835804959888064681098E3),
+ L(-1.186359407982897997337150403816839480438E2)
+/* 1.000000000000000000000000000000000000000E0L, */
+};
+
+static const _Float128
+/* log2(e) - 1 */
+LOG2EA = L(4.4269504088896340735992468100189213742664595E-1),
+/* sqrt(2)/2 */
+SQRTH = L(7.071067811865475244008443621048490392848359E-1);
+
+
+/* Evaluate P[n] x^n + P[n-1] x^(n-1) + ... + P[0] */
+
+static _Float128
+neval (_Float128 x, const _Float128 *p, int n)
+{
+ _Float128 y;
+
+ p += n;
+ y = *p--;
+ do
+ {
+ y = y * x + *p--;
+ }
+ while (--n > 0);
+ return y;
+}
+
+
+/* Evaluate x^n+1 + P[n] x^(n) + P[n-1] x^(n-1) + ... + P[0] */
+
+static _Float128
+deval (_Float128 x, const _Float128 *p, int n)
+{
+ _Float128 y;
+
+ p += n;
+ y = x + *p--;
+ do
+ {
+ y = y * x + *p--;
+ }
+ while (--n > 0);
+ return y;
+}
+
+
+
+_Float128
+__ieee754_log2l (_Float128 x)
+{
+ _Float128 z;
+ _Float128 y;
+ int e;
+ int64_t hx, lx;
+
+/* Test for domain */
+ GET_LDOUBLE_WORDS64 (hx, lx, x);
+ if (((hx & 0x7fffffffffffffffLL) | lx) == 0)
+ return (-1 / __fabsl (x)); /* log2l(+-0)=-inf */
+ if (hx < 0)
+ return (x - x) / (x - x);
+ if (hx >= 0x7fff000000000000LL)
+ return (x + x);
+
+ if (x == 1)
+ return 0;
+
+/* separate mantissa from exponent */
+
+/* Note, frexp is used so that denormal numbers
+ * will be handled properly.
+ */
+ x = __frexpl (x, &e);
+
+
+/* logarithm using log(x) = z + z**3 P(z)/Q(z),
+ * where z = 2(x-1)/x+1)
+ */
+ if ((e > 2) || (e < -2))
+ {
+ if (x < SQRTH)
+ { /* 2( 2x-1 )/( 2x+1 ) */
+ e -= 1;
+ z = x - L(0.5);
+ y = L(0.5) * z + L(0.5);
+ }
+ else
+ { /* 2 (x-1)/(x+1) */
+ z = x - L(0.5);
+ z -= L(0.5);
+ y = L(0.5) * x + L(0.5);
+ }
+ x = z / y;
+ z = x * x;
+ y = x * (z * neval (z, R, 5) / deval (z, S, 5));
+ goto done;
+ }
+
+
+/* logarithm using log(1+x) = x - .5x**2 + x**3 P(x)/Q(x) */
+
+ if (x < SQRTH)
+ {
+ e -= 1;
+ x = 2.0 * x - 1; /* 2x - 1 */
+ }
+ else
+ {
+ x = x - 1;
+ }
+ z = x * x;
+ y = x * (z * neval (x, P, 12) / deval (x, Q, 11));
+ y = y - 0.5 * z;
+
+done:
+
+/* Multiply log of fraction by log2(e)
+ * and base 2 exponent by 1
+ */
+ z = y * LOG2EA;
+ z += x * LOG2EA;
+ z += y;
+ z += x;
+ z += e;
+ return (z);
+}
+strong_alias (__ieee754_log2l, __log2l_finite)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128/e_logl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128/e_logl.c
new file mode 100644
index 0000000000..8672047e43
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128/e_logl.c
@@ -0,0 +1,282 @@
+/* logll.c
+ *
+ * Natural logarithm for 128-bit long double precision.
+ *
+ *
+ *
+ * SYNOPSIS:
+ *
+ * long double x, y, logl();
+ *
+ * y = logl( x );
+ *
+ *
+ *
+ * DESCRIPTION:
+ *
+ * Returns the base e (2.718...) logarithm of x.
+ *
+ * The argument is separated into its exponent and fractional
+ * parts. Use of a lookup table increases the speed of the routine.
+ * The program uses logarithms tabulated at intervals of 1/128 to
+ * cover the domain from approximately 0.7 to 1.4.
+ *
+ * On the interval [-1/128, +1/128] the logarithm of 1+x is approximated by
+ * log(1+x) = x - 0.5 x^2 + x^3 P(x) .
+ *
+ *
+ *
+ * ACCURACY:
+ *
+ * Relative error:
+ * arithmetic domain # trials peak rms
+ * IEEE 0.875, 1.125 100000 1.2e-34 4.1e-35
+ * IEEE 0.125, 8 100000 1.2e-34 4.1e-35
+ *
+ *
+ * WARNING:
+ *
+ * This program uses integer operations on bit fields of floating-point
+ * numbers. It does not work with data structures other than the
+ * structure assumed.
+ *
+ */
+
+/* Copyright 2001 by Stephen L. Moshier <moshier@na-net.ornl.gov>
+
+ This 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 2.1 of the License, or (at your option) any later version.
+
+ This 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 this library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+#include <math_private.h>
+
+/* log(1+x) = x - .5 x^2 + x^3 l(x)
+ -.0078125 <= x <= +.0078125
+ peak relative error 1.2e-37 */
+static const _Float128
+l3 = L(3.333333333333333333333333333333336096926E-1),
+l4 = L(-2.499999999999999999999999999486853077002E-1),
+l5 = L(1.999999999999999999999999998515277861905E-1),
+l6 = L(-1.666666666666666666666798448356171665678E-1),
+l7 = L(1.428571428571428571428808945895490721564E-1),
+l8 = L(-1.249999999999999987884655626377588149000E-1),
+l9 = L(1.111111111111111093947834982832456459186E-1),
+l10 = L(-1.000000000000532974938900317952530453248E-1),
+l11 = L(9.090909090915566247008015301349979892689E-2),
+l12 = L(-8.333333211818065121250921925397567745734E-2),
+l13 = L(7.692307559897661630807048686258659316091E-2),
+l14 = L(-7.144242754190814657241902218399056829264E-2),
+l15 = L(6.668057591071739754844678883223432347481E-2);
+
+/* Lookup table of ln(t) - (t-1)
+ t = 0.5 + (k+26)/128)
+ k = 0, ..., 91 */
+static const _Float128 logtbl[92] = {
+L(-5.5345593589352099112142921677820359632418E-2),
+L(-5.2108257402767124761784665198737642086148E-2),
+L(-4.8991686870576856279407775480686721935120E-2),
+L(-4.5993270766361228596215288742353061431071E-2),
+L(-4.3110481649613269682442058976885699556950E-2),
+L(-4.0340872319076331310838085093194799765520E-2),
+L(-3.7682072451780927439219005993827431503510E-2),
+L(-3.5131785416234343803903228503274262719586E-2),
+L(-3.2687785249045246292687241862699949178831E-2),
+L(-3.0347913785027239068190798397055267411813E-2),
+L(-2.8110077931525797884641940838507561326298E-2),
+L(-2.5972247078357715036426583294246819637618E-2),
+L(-2.3932450635346084858612873953407168217307E-2),
+L(-2.1988775689981395152022535153795155900240E-2),
+L(-2.0139364778244501615441044267387667496733E-2),
+L(-1.8382413762093794819267536615342902718324E-2),
+L(-1.6716169807550022358923589720001638093023E-2),
+L(-1.5138929457710992616226033183958974965355E-2),
+L(-1.3649036795397472900424896523305726435029E-2),
+L(-1.2244881690473465543308397998034325468152E-2),
+L(-1.0924898127200937840689817557742469105693E-2),
+L(-9.6875626072830301572839422532631079809328E-3),
+L(-8.5313926245226231463436209313499745894157E-3),
+L(-7.4549452072765973384933565912143044991706E-3),
+L(-6.4568155251217050991200599386801665681310E-3),
+L(-5.5356355563671005131126851708522185605193E-3),
+L(-4.6900728132525199028885749289712348829878E-3),
+L(-3.9188291218610470766469347968659624282519E-3),
+L(-3.2206394539524058873423550293617843896540E-3),
+L(-2.5942708080877805657374888909297113032132E-3),
+L(-2.0385211375711716729239156839929281289086E-3),
+L(-1.5522183228760777967376942769773768850872E-3),
+L(-1.1342191863606077520036253234446621373191E-3),
+L(-7.8340854719967065861624024730268350459991E-4),
+L(-4.9869831458030115699628274852562992756174E-4),
+L(-2.7902661731604211834685052867305795169688E-4),
+L(-1.2335696813916860754951146082826952093496E-4),
+L(-3.0677461025892873184042490943581654591817E-5),
+#define ZERO logtbl[38]
+ L(0.0000000000000000000000000000000000000000E0),
+L(-3.0359557945051052537099938863236321874198E-5),
+L(-1.2081346403474584914595395755316412213151E-4),
+L(-2.7044071846562177120083903771008342059094E-4),
+L(-4.7834133324631162897179240322783590830326E-4),
+L(-7.4363569786340080624467487620270965403695E-4),
+L(-1.0654639687057968333207323853366578860679E-3),
+L(-1.4429854811877171341298062134712230604279E-3),
+L(-1.8753781835651574193938679595797367137975E-3),
+L(-2.3618380914922506054347222273705859653658E-3),
+L(-2.9015787624124743013946600163375853631299E-3),
+L(-3.4938307889254087318399313316921940859043E-3),
+L(-4.1378413103128673800485306215154712148146E-3),
+L(-4.8328735414488877044289435125365629849599E-3),
+L(-5.5782063183564351739381962360253116934243E-3),
+L(-6.3731336597098858051938306767880719015261E-3),
+L(-7.2169643436165454612058905294782949315193E-3),
+L(-8.1090214990427641365934846191367315083867E-3),
+L(-9.0486422112807274112838713105168375482480E-3),
+L(-1.0035177140880864314674126398350812606841E-2),
+L(-1.1067990155502102718064936259435676477423E-2),
+L(-1.2146457974158024928196575103115488672416E-2),
+L(-1.3269969823361415906628825374158424754308E-2),
+L(-1.4437927104692837124388550722759686270765E-2),
+L(-1.5649743073340777659901053944852735064621E-2),
+L(-1.6904842527181702880599758489058031645317E-2),
+L(-1.8202661505988007336096407340750378994209E-2),
+L(-1.9542647000370545390701192438691126552961E-2),
+L(-2.0924256670080119637427928803038530924742E-2),
+L(-2.2346958571309108496179613803760727786257E-2),
+L(-2.3810230892650362330447187267648486279460E-2),
+L(-2.5313561699385640380910474255652501521033E-2),
+L(-2.6856448685790244233704909690165496625399E-2),
+L(-2.8438398935154170008519274953860128449036E-2),
+L(-3.0058928687233090922411781058956589863039E-2),
+L(-3.1717563112854831855692484086486099896614E-2),
+L(-3.3413836095418743219397234253475252001090E-2),
+L(-3.5147290019036555862676702093393332533702E-2),
+L(-3.6917475563073933027920505457688955423688E-2),
+L(-3.8723951502862058660874073462456610731178E-2),
+L(-4.0566284516358241168330505467000838017425E-2),
+L(-4.2444048996543693813649967076598766917965E-2),
+L(-4.4356826869355401653098777649745233339196E-2),
+L(-4.6304207416957323121106944474331029996141E-2),
+L(-4.8285787106164123613318093945035804818364E-2),
+L(-5.0301169421838218987124461766244507342648E-2),
+L(-5.2349964705088137924875459464622098310997E-2),
+L(-5.4431789996103111613753440311680967840214E-2),
+L(-5.6546268881465384189752786409400404404794E-2),
+L(-5.8693031345788023909329239565012647817664E-2),
+L(-6.0871713627532018185577188079210189048340E-2),
+L(-6.3081958078862169742820420185833800925568E-2),
+L(-6.5323413029406789694910800219643791556918E-2),
+L(-6.7595732653791419081537811574227049288168E-2)
+};
+
+/* ln(2) = ln2a + ln2b with extended precision. */
+static const _Float128
+ ln2a = L(6.93145751953125e-1),
+ ln2b = L(1.4286068203094172321214581765680755001344E-6);
+
+_Float128
+__ieee754_logl(_Float128 x)
+{
+ _Float128 z, y, w;
+ ieee854_long_double_shape_type u, t;
+ unsigned int m;
+ int k, e;
+
+ u.value = x;
+ m = u.parts32.w0;
+
+ /* Check for IEEE special cases. */
+ k = m & 0x7fffffff;
+ /* log(0) = -infinity. */
+ if ((k | u.parts32.w1 | u.parts32.w2 | u.parts32.w3) == 0)
+ {
+ return L(-0.5) / ZERO;
+ }
+ /* log ( x < 0 ) = NaN */
+ if (m & 0x80000000)
+ {
+ return (x - x) / ZERO;
+ }
+ /* log (infinity or NaN) */
+ if (k >= 0x7fff0000)
+ {
+ return x + x;
+ }
+
+ /* Extract exponent and reduce domain to 0.703125 <= u < 1.40625 */
+ u.value = __frexpl (x, &e);
+ m = u.parts32.w0 & 0xffff;
+ m |= 0x10000;
+ /* Find lookup table index k from high order bits of the significand. */
+ if (m < 0x16800)
+ {
+ k = (m - 0xff00) >> 9;
+ /* t is the argument 0.5 + (k+26)/128
+ of the nearest item to u in the lookup table. */
+ t.parts32.w0 = 0x3fff0000 + (k << 9);
+ t.parts32.w1 = 0;
+ t.parts32.w2 = 0;
+ t.parts32.w3 = 0;
+ u.parts32.w0 += 0x10000;
+ e -= 1;
+ k += 64;
+ }
+ else
+ {
+ k = (m - 0xfe00) >> 10;
+ t.parts32.w0 = 0x3ffe0000 + (k << 10);
+ t.parts32.w1 = 0;
+ t.parts32.w2 = 0;
+ t.parts32.w3 = 0;
+ }
+ /* On this interval the table is not used due to cancellation error. */
+ if ((x <= L(1.0078125)) && (x >= L(0.9921875)))
+ {
+ if (x == 1)
+ return 0;
+ z = x - 1;
+ k = 64;
+ t.value = 1;
+ e = 0;
+ }
+ else
+ {
+ /* log(u) = log( t u/t ) = log(t) + log(u/t)
+ log(t) is tabulated in the lookup table.
+ Express log(u/t) = log(1+z), where z = u/t - 1 = (u-t)/t.
+ cf. Cody & Waite. */
+ z = (u.value - t.value) / t.value;
+ }
+ /* Series expansion of log(1+z). */
+ w = z * z;
+ y = ((((((((((((l15 * z
+ + l14) * z
+ + l13) * z
+ + l12) * z
+ + l11) * z
+ + l10) * z
+ + l9) * z
+ + l8) * z
+ + l7) * z
+ + l6) * z
+ + l5) * z
+ + l4) * z
+ + l3) * z * w;
+ y -= 0.5 * w;
+ y += e * ln2b; /* Base 2 exponent offset times ln(2). */
+ y += z;
+ y += logtbl[k-26]; /* log(t) - (t-1) */
+ y += (t.value - 1);
+ y += e * ln2a;
+ return y;
+}
+strong_alias (__ieee754_logl, __logl_finite)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128/e_powl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128/e_powl.c
new file mode 100644
index 0000000000..a344840090
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128/e_powl.c
@@ -0,0 +1,451 @@
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+/* Expansions and modifications for 128-bit long double are
+ Copyright (C) 2001 Stephen L. Moshier <moshier@na-net.ornl.gov>
+ and are incorporated herein by permission of the author. The author
+ reserves the right to distribute this material elsewhere under different
+ copying permissions. These modifications are distributed here under
+ the following terms:
+
+ This 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 2.1 of the License, or (at your option) any later version.
+
+ This 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 this library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+/* __ieee754_powl(x,y) return x**y
+ *
+ * n
+ * Method: Let x = 2 * (1+f)
+ * 1. Compute and return log2(x) in two pieces:
+ * log2(x) = w1 + w2,
+ * where w1 has 113-53 = 60 bit trailing zeros.
+ * 2. Perform y*log2(x) = n+y' by simulating muti-precision
+ * arithmetic, where |y'|<=0.5.
+ * 3. Return x**y = 2**n*exp(y'*log2)
+ *
+ * Special cases:
+ * 1. (anything) ** 0 is 1
+ * 2. (anything) ** 1 is itself
+ * 3. (anything) ** NAN is NAN
+ * 4. NAN ** (anything except 0) is NAN
+ * 5. +-(|x| > 1) ** +INF is +INF
+ * 6. +-(|x| > 1) ** -INF is +0
+ * 7. +-(|x| < 1) ** +INF is +0
+ * 8. +-(|x| < 1) ** -INF is +INF
+ * 9. +-1 ** +-INF is NAN
+ * 10. +0 ** (+anything except 0, NAN) is +0
+ * 11. -0 ** (+anything except 0, NAN, odd integer) is +0
+ * 12. +0 ** (-anything except 0, NAN) is +INF
+ * 13. -0 ** (-anything except 0, NAN, odd integer) is +INF
+ * 14. -0 ** (odd integer) = -( +0 ** (odd integer) )
+ * 15. +INF ** (+anything except 0,NAN) is +INF
+ * 16. +INF ** (-anything except 0,NAN) is +0
+ * 17. -INF ** (anything) = -0 ** (-anything)
+ * 18. (-anything) ** (integer) is (-1)**(integer)*(+anything**integer)
+ * 19. (-anything except 0 and inf) ** (non-integer) is NAN
+ *
+ */
+
+#include <math.h>
+#include <math_private.h>
+
+static const _Float128 bp[] = {
+ 1,
+ L(1.5),
+};
+
+/* log_2(1.5) */
+static const _Float128 dp_h[] = {
+ 0.0,
+ L(5.8496250072115607565592654282227158546448E-1)
+};
+
+/* Low part of log_2(1.5) */
+static const _Float128 dp_l[] = {
+ 0.0,
+ L(1.0579781240112554492329533686862998106046E-16)
+};
+
+static const _Float128 zero = 0,
+ one = 1,
+ two = 2,
+ two113 = L(1.0384593717069655257060992658440192E34),
+ huge = L(1.0e3000),
+ tiny = L(1.0e-3000);
+
+/* 3/2 log x = 3 z + z^3 + z^3 (z^2 R(z^2))
+ z = (x-1)/(x+1)
+ 1 <= x <= 1.25
+ Peak relative error 2.3e-37 */
+static const _Float128 LN[] =
+{
+ L(-3.0779177200290054398792536829702930623200E1),
+ L(6.5135778082209159921251824580292116201640E1),
+ L(-4.6312921812152436921591152809994014413540E1),
+ L(1.2510208195629420304615674658258363295208E1),
+ L(-9.9266909031921425609179910128531667336670E-1)
+};
+static const _Float128 LD[] =
+{
+ L(-5.129862866715009066465422805058933131960E1),
+ L(1.452015077564081884387441590064272782044E2),
+ L(-1.524043275549860505277434040464085593165E2),
+ L(7.236063513651544224319663428634139768808E1),
+ L(-1.494198912340228235853027849917095580053E1)
+ /* 1.0E0 */
+};
+
+/* exp(x) = 1 + x - x / (1 - 2 / (x - x^2 R(x^2)))
+ 0 <= x <= 0.5
+ Peak relative error 5.7e-38 */
+static const _Float128 PN[] =
+{
+ L(5.081801691915377692446852383385968225675E8),
+ L(9.360895299872484512023336636427675327355E6),
+ L(4.213701282274196030811629773097579432957E4),
+ L(5.201006511142748908655720086041570288182E1),
+ L(9.088368420359444263703202925095675982530E-3),
+};
+static const _Float128 PD[] =
+{
+ L(3.049081015149226615468111430031590411682E9),
+ L(1.069833887183886839966085436512368982758E8),
+ L(8.259257717868875207333991924545445705394E5),
+ L(1.872583833284143212651746812884298360922E3),
+ /* 1.0E0 */
+};
+
+static const _Float128
+ /* ln 2 */
+ lg2 = L(6.9314718055994530941723212145817656807550E-1),
+ lg2_h = L(6.9314718055994528622676398299518041312695E-1),
+ lg2_l = L(2.3190468138462996154948554638754786504121E-17),
+ ovt = L(8.0085662595372944372e-0017),
+ /* 2/(3*log(2)) */
+ cp = L(9.6179669392597560490661645400126142495110E-1),
+ cp_h = L(9.6179669392597555432899980587535537779331E-1),
+ cp_l = L(5.0577616648125906047157785230014751039424E-17);
+
+_Float128
+__ieee754_powl (_Float128 x, _Float128 y)
+{
+ _Float128 z, ax, z_h, z_l, p_h, p_l;
+ _Float128 y1, t1, t2, r, s, sgn, t, u, v, w;
+ _Float128 s2, s_h, s_l, t_h, t_l, ay;
+ int32_t i, j, k, yisint, n;
+ u_int32_t ix, iy;
+ int32_t hx, hy;
+ ieee854_long_double_shape_type o, p, q;
+
+ p.value = x;
+ hx = p.parts32.w0;
+ ix = hx & 0x7fffffff;
+
+ q.value = y;
+ hy = q.parts32.w0;
+ iy = hy & 0x7fffffff;
+
+
+ /* y==zero: x**0 = 1 */
+ if ((iy | q.parts32.w1 | q.parts32.w2 | q.parts32.w3) == 0
+ && !issignaling (x))
+ return one;
+
+ /* 1.0**y = 1; -1.0**+-Inf = 1 */
+ if (x == one && !issignaling (y))
+ return one;
+ if (x == -1 && iy == 0x7fff0000
+ && (q.parts32.w1 | q.parts32.w2 | q.parts32.w3) == 0)
+ return one;
+
+ /* +-NaN return x+y */
+ if ((ix > 0x7fff0000)
+ || ((ix == 0x7fff0000)
+ && ((p.parts32.w1 | p.parts32.w2 | p.parts32.w3) != 0))
+ || (iy > 0x7fff0000)
+ || ((iy == 0x7fff0000)
+ && ((q.parts32.w1 | q.parts32.w2 | q.parts32.w3) != 0)))
+ return x + y;
+
+ /* determine if y is an odd int when x < 0
+ * yisint = 0 ... y is not an integer
+ * yisint = 1 ... y is an odd int
+ * yisint = 2 ... y is an even int
+ */
+ yisint = 0;
+ if (hx < 0)
+ {
+ if (iy >= 0x40700000) /* 2^113 */
+ yisint = 2; /* even integer y */
+ else if (iy >= 0x3fff0000) /* 1.0 */
+ {
+ if (__floorl (y) == y)
+ {
+ z = 0.5 * y;
+ if (__floorl (z) == z)
+ yisint = 2;
+ else
+ yisint = 1;
+ }
+ }
+ }
+
+ /* special value of y */
+ if ((q.parts32.w1 | q.parts32.w2 | q.parts32.w3) == 0)
+ {
+ if (iy == 0x7fff0000) /* y is +-inf */
+ {
+ if (((ix - 0x3fff0000) | p.parts32.w1 | p.parts32.w2 | p.parts32.w3)
+ == 0)
+ return y - y; /* +-1**inf is NaN */
+ else if (ix >= 0x3fff0000) /* (|x|>1)**+-inf = inf,0 */
+ return (hy >= 0) ? y : zero;
+ else /* (|x|<1)**-,+inf = inf,0 */
+ return (hy < 0) ? -y : zero;
+ }
+ if (iy == 0x3fff0000)
+ { /* y is +-1 */
+ if (hy < 0)
+ return one / x;
+ else
+ return x;
+ }
+ if (hy == 0x40000000)
+ return x * x; /* y is 2 */
+ if (hy == 0x3ffe0000)
+ { /* y is 0.5 */
+ if (hx >= 0) /* x >= +0 */
+ return __ieee754_sqrtl (x);
+ }
+ }
+
+ ax = fabsl (x);
+ /* special value of x */
+ if ((p.parts32.w1 | p.parts32.w2 | p.parts32.w3) == 0)
+ {
+ if (ix == 0x7fff0000 || ix == 0 || ix == 0x3fff0000)
+ {
+ z = ax; /*x is +-0,+-inf,+-1 */
+ if (hy < 0)
+ z = one / z; /* z = (1/|x|) */
+ if (hx < 0)
+ {
+ if (((ix - 0x3fff0000) | yisint) == 0)
+ {
+ z = (z - z) / (z - z); /* (-1)**non-int is NaN */
+ }
+ else if (yisint == 1)
+ z = -z; /* (x<0)**odd = -(|x|**odd) */
+ }
+ return z;
+ }
+ }
+
+ /* (x<0)**(non-int) is NaN */
+ if (((((u_int32_t) hx >> 31) - 1) | yisint) == 0)
+ return (x - x) / (x - x);
+
+ /* sgn (sign of result -ve**odd) = -1 else = 1 */
+ sgn = one;
+ if (((((u_int32_t) hx >> 31) - 1) | (yisint - 1)) == 0)
+ sgn = -one; /* (-ve)**(odd int) */
+
+ /* |y| is huge.
+ 2^-16495 = 1/2 of smallest representable value.
+ If (1 - 1/131072)^y underflows, y > 1.4986e9 */
+ if (iy > 0x401d654b)
+ {
+ /* if (1 - 2^-113)^y underflows, y > 1.1873e38 */
+ if (iy > 0x407d654b)
+ {
+ if (ix <= 0x3ffeffff)
+ return (hy < 0) ? huge * huge : tiny * tiny;
+ if (ix >= 0x3fff0000)
+ return (hy > 0) ? huge * huge : tiny * tiny;
+ }
+ /* over/underflow if x is not close to one */
+ if (ix < 0x3ffeffff)
+ return (hy < 0) ? sgn * huge * huge : sgn * tiny * tiny;
+ if (ix > 0x3fff0000)
+ return (hy > 0) ? sgn * huge * huge : sgn * tiny * tiny;
+ }
+
+ ay = y > 0 ? y : -y;
+ if (ay < 0x1p-128)
+ y = y < 0 ? -0x1p-128 : 0x1p-128;
+
+ n = 0;
+ /* take care subnormal number */
+ if (ix < 0x00010000)
+ {
+ ax *= two113;
+ n -= 113;
+ o.value = ax;
+ ix = o.parts32.w0;
+ }
+ n += ((ix) >> 16) - 0x3fff;
+ j = ix & 0x0000ffff;
+ /* determine interval */
+ ix = j | 0x3fff0000; /* normalize ix */
+ if (j <= 0x3988)
+ k = 0; /* |x|<sqrt(3/2) */
+ else if (j < 0xbb67)
+ k = 1; /* |x|<sqrt(3) */
+ else
+ {
+ k = 0;
+ n += 1;
+ ix -= 0x00010000;
+ }
+
+ o.value = ax;
+ o.parts32.w0 = ix;
+ ax = o.value;
+
+ /* compute s = s_h+s_l = (x-1)/(x+1) or (x-1.5)/(x+1.5) */
+ u = ax - bp[k]; /* bp[0]=1.0, bp[1]=1.5 */
+ v = one / (ax + bp[k]);
+ s = u * v;
+ s_h = s;
+
+ o.value = s_h;
+ o.parts32.w3 = 0;
+ o.parts32.w2 &= 0xf8000000;
+ s_h = o.value;
+ /* t_h=ax+bp[k] High */
+ t_h = ax + bp[k];
+ o.value = t_h;
+ o.parts32.w3 = 0;
+ o.parts32.w2 &= 0xf8000000;
+ t_h = o.value;
+ t_l = ax - (t_h - bp[k]);
+ s_l = v * ((u - s_h * t_h) - s_h * t_l);
+ /* compute log(ax) */
+ s2 = s * s;
+ u = LN[0] + s2 * (LN[1] + s2 * (LN[2] + s2 * (LN[3] + s2 * LN[4])));
+ v = LD[0] + s2 * (LD[1] + s2 * (LD[2] + s2 * (LD[3] + s2 * (LD[4] + s2))));
+ r = s2 * s2 * u / v;
+ r += s_l * (s_h + s);
+ s2 = s_h * s_h;
+ t_h = 3.0 + s2 + r;
+ o.value = t_h;
+ o.parts32.w3 = 0;
+ o.parts32.w2 &= 0xf8000000;
+ t_h = o.value;
+ t_l = r - ((t_h - 3.0) - s2);
+ /* u+v = s*(1+...) */
+ u = s_h * t_h;
+ v = s_l * t_h + t_l * s;
+ /* 2/(3log2)*(s+...) */
+ p_h = u + v;
+ o.value = p_h;
+ o.parts32.w3 = 0;
+ o.parts32.w2 &= 0xf8000000;
+ p_h = o.value;
+ p_l = v - (p_h - u);
+ z_h = cp_h * p_h; /* cp_h+cp_l = 2/(3*log2) */
+ z_l = cp_l * p_h + p_l * cp + dp_l[k];
+ /* log2(ax) = (s+..)*2/(3*log2) = n + dp_h + z_h + z_l */
+ t = (_Float128) n;
+ t1 = (((z_h + z_l) + dp_h[k]) + t);
+ o.value = t1;
+ o.parts32.w3 = 0;
+ o.parts32.w2 &= 0xf8000000;
+ t1 = o.value;
+ t2 = z_l - (((t1 - t) - dp_h[k]) - z_h);
+
+ /* split up y into y1+y2 and compute (y1+y2)*(t1+t2) */
+ y1 = y;
+ o.value = y1;
+ o.parts32.w3 = 0;
+ o.parts32.w2 &= 0xf8000000;
+ y1 = o.value;
+ p_l = (y - y1) * t1 + y * t2;
+ p_h = y1 * t1;
+ z = p_l + p_h;
+ o.value = z;
+ j = o.parts32.w0;
+ if (j >= 0x400d0000) /* z >= 16384 */
+ {
+ /* if z > 16384 */
+ if (((j - 0x400d0000) | o.parts32.w1 | o.parts32.w2 | o.parts32.w3) != 0)
+ return sgn * huge * huge; /* overflow */
+ else
+ {
+ if (p_l + ovt > z - p_h)
+ return sgn * huge * huge; /* overflow */
+ }
+ }
+ else if ((j & 0x7fffffff) >= 0x400d01b9) /* z <= -16495 */
+ {
+ /* z < -16495 */
+ if (((j - 0xc00d01bc) | o.parts32.w1 | o.parts32.w2 | o.parts32.w3)
+ != 0)
+ return sgn * tiny * tiny; /* underflow */
+ else
+ {
+ if (p_l <= z - p_h)
+ return sgn * tiny * tiny; /* underflow */
+ }
+ }
+ /* compute 2**(p_h+p_l) */
+ i = j & 0x7fffffff;
+ k = (i >> 16) - 0x3fff;
+ n = 0;
+ if (i > 0x3ffe0000)
+ { /* if |z| > 0.5, set n = [z+0.5] */
+ n = __floorl (z + L(0.5));
+ t = n;
+ p_h -= t;
+ }
+ t = p_l + p_h;
+ o.value = t;
+ o.parts32.w3 = 0;
+ o.parts32.w2 &= 0xf8000000;
+ t = o.value;
+ u = t * lg2_h;
+ v = (p_l - (t - p_h)) * lg2 + t * lg2_l;
+ z = u + v;
+ w = v - (z - u);
+ /* exp(z) */
+ t = z * z;
+ u = PN[0] + t * (PN[1] + t * (PN[2] + t * (PN[3] + t * PN[4])));
+ v = PD[0] + t * (PD[1] + t * (PD[2] + t * (PD[3] + t)));
+ t1 = z - t * u / v;
+ r = (z * t1) / (t1 - two) - (w + z * w);
+ z = one - (r - z);
+ o.value = z;
+ j = o.parts32.w0;
+ j += (n << 16);
+ if ((j >> 16) <= 0)
+ {
+ z = __scalbnl (z, n); /* subnormal output */
+ _Float128 force_underflow = z * z;
+ math_force_eval (force_underflow);
+ }
+ else
+ {
+ o.parts32.w0 = j;
+ z = o.value;
+ }
+ return sgn * z;
+}
+strong_alias (__ieee754_powl, __powl_finite)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128/e_rem_pio2l.c b/REORG.TODO/sysdeps/ieee754/ldbl-128/e_rem_pio2l.c
new file mode 100644
index 0000000000..21b440762f
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128/e_rem_pio2l.c
@@ -0,0 +1,273 @@
+/* Quad-precision floating point argument reduction.
+ Copyright (C) 1999-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Jakub Jelinek <jj@ultra.linux.cz>
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+#include <math_private.h>
+
+/*
+ * Table of constants for 2/pi, 5628 hexadecimal digits of 2/pi
+ */
+static const int32_t two_over_pi[] = {
+0xa2f983, 0x6e4e44, 0x1529fc, 0x2757d1, 0xf534dd, 0xc0db62,
+0x95993c, 0x439041, 0xfe5163, 0xabdebb, 0xc561b7, 0x246e3a,
+0x424dd2, 0xe00649, 0x2eea09, 0xd1921c, 0xfe1deb, 0x1cb129,
+0xa73ee8, 0x8235f5, 0x2ebb44, 0x84e99c, 0x7026b4, 0x5f7e41,
+0x3991d6, 0x398353, 0x39f49c, 0x845f8b, 0xbdf928, 0x3b1ff8,
+0x97ffde, 0x05980f, 0xef2f11, 0x8b5a0a, 0x6d1f6d, 0x367ecf,
+0x27cb09, 0xb74f46, 0x3f669e, 0x5fea2d, 0x7527ba, 0xc7ebe5,
+0xf17b3d, 0x0739f7, 0x8a5292, 0xea6bfb, 0x5fb11f, 0x8d5d08,
+0x560330, 0x46fc7b, 0x6babf0, 0xcfbc20, 0x9af436, 0x1da9e3,
+0x91615e, 0xe61b08, 0x659985, 0x5f14a0, 0x68408d, 0xffd880,
+0x4d7327, 0x310606, 0x1556ca, 0x73a8c9, 0x60e27b, 0xc08c6b,
+0x47c419, 0xc367cd, 0xdce809, 0x2a8359, 0xc4768b, 0x961ca6,
+0xddaf44, 0xd15719, 0x053ea5, 0xff0705, 0x3f7e33, 0xe832c2,
+0xde4f98, 0x327dbb, 0xc33d26, 0xef6b1e, 0x5ef89f, 0x3a1f35,
+0xcaf27f, 0x1d87f1, 0x21907c, 0x7c246a, 0xfa6ed5, 0x772d30,
+0x433b15, 0xc614b5, 0x9d19c3, 0xc2c4ad, 0x414d2c, 0x5d000c,
+0x467d86, 0x2d71e3, 0x9ac69b, 0x006233, 0x7cd2b4, 0x97a7b4,
+0xd55537, 0xf63ed7, 0x1810a3, 0xfc764d, 0x2a9d64, 0xabd770,
+0xf87c63, 0x57b07a, 0xe71517, 0x5649c0, 0xd9d63b, 0x3884a7,
+0xcb2324, 0x778ad6, 0x23545a, 0xb91f00, 0x1b0af1, 0xdfce19,
+0xff319f, 0x6a1e66, 0x615799, 0x47fbac, 0xd87f7e, 0xb76522,
+0x89e832, 0x60bfe6, 0xcdc4ef, 0x09366c, 0xd43f5d, 0xd7de16,
+0xde3b58, 0x929bde, 0x2822d2, 0xe88628, 0x4d58e2, 0x32cac6,
+0x16e308, 0xcb7de0, 0x50c017, 0xa71df3, 0x5be018, 0x34132e,
+0x621283, 0x014883, 0x5b8ef5, 0x7fb0ad, 0xf2e91e, 0x434a48,
+0xd36710, 0xd8ddaa, 0x425fae, 0xce616a, 0xa4280a, 0xb499d3,
+0xf2a606, 0x7f775c, 0x83c2a3, 0x883c61, 0x78738a, 0x5a8caf,
+0xbdd76f, 0x63a62d, 0xcbbff4, 0xef818d, 0x67c126, 0x45ca55,
+0x36d9ca, 0xd2a828, 0x8d61c2, 0x77c912, 0x142604, 0x9b4612,
+0xc459c4, 0x44c5c8, 0x91b24d, 0xf31700, 0xad43d4, 0xe54929,
+0x10d5fd, 0xfcbe00, 0xcc941e, 0xeece70, 0xf53e13, 0x80f1ec,
+0xc3e7b3, 0x28f8c7, 0x940593, 0x3e71c1, 0xb3092e, 0xf3450b,
+0x9c1288, 0x7b20ab, 0x9fb52e, 0xc29247, 0x2f327b, 0x6d550c,
+0x90a772, 0x1fe76b, 0x96cb31, 0x4a1679, 0xe27941, 0x89dff4,
+0x9794e8, 0x84e6e2, 0x973199, 0x6bed88, 0x365f5f, 0x0efdbb,
+0xb49a48, 0x6ca467, 0x427271, 0x325d8d, 0xb8159f, 0x09e5bc,
+0x25318d, 0x3974f7, 0x1c0530, 0x010c0d, 0x68084b, 0x58ee2c,
+0x90aa47, 0x02e774, 0x24d6bd, 0xa67df7, 0x72486e, 0xef169f,
+0xa6948e, 0xf691b4, 0x5153d1, 0xf20acf, 0x339820, 0x7e4bf5,
+0x6863b2, 0x5f3edd, 0x035d40, 0x7f8985, 0x295255, 0xc06437,
+0x10d86d, 0x324832, 0x754c5b, 0xd4714e, 0x6e5445, 0xc1090b,
+0x69f52a, 0xd56614, 0x9d0727, 0x50045d, 0xdb3bb4, 0xc576ea,
+0x17f987, 0x7d6b49, 0xba271d, 0x296996, 0xacccc6, 0x5414ad,
+0x6ae290, 0x89d988, 0x50722c, 0xbea404, 0x940777, 0x7030f3,
+0x27fc00, 0xa871ea, 0x49c266, 0x3de064, 0x83dd97, 0x973fa3,
+0xfd9443, 0x8c860d, 0xde4131, 0x9d3992, 0x8c70dd, 0xe7b717,
+0x3bdf08, 0x2b3715, 0xa0805c, 0x93805a, 0x921110, 0xd8e80f,
+0xaf806c, 0x4bffdb, 0x0f9038, 0x761859, 0x15a562, 0xbbcb61,
+0xb989c7, 0xbd4010, 0x04f2d2, 0x277549, 0xf6b6eb, 0xbb22db,
+0xaa140a, 0x2f2689, 0x768364, 0x333b09, 0x1a940e, 0xaa3a51,
+0xc2a31d, 0xaeedaf, 0x12265c, 0x4dc26d, 0x9c7a2d, 0x9756c0,
+0x833f03, 0xf6f009, 0x8c402b, 0x99316d, 0x07b439, 0x15200c,
+0x5bc3d8, 0xc492f5, 0x4badc6, 0xa5ca4e, 0xcd37a7, 0x36a9e6,
+0x9492ab, 0x6842dd, 0xde6319, 0xef8c76, 0x528b68, 0x37dbfc,
+0xaba1ae, 0x3115df, 0xa1ae00, 0xdafb0c, 0x664d64, 0xb705ed,
+0x306529, 0xbf5657, 0x3aff47, 0xb9f96a, 0xf3be75, 0xdf9328,
+0x3080ab, 0xf68c66, 0x15cb04, 0x0622fa, 0x1de4d9, 0xa4b33d,
+0x8f1b57, 0x09cd36, 0xe9424e, 0xa4be13, 0xb52333, 0x1aaaf0,
+0xa8654f, 0xa5c1d2, 0x0f3f0b, 0xcd785b, 0x76f923, 0x048b7b,
+0x721789, 0x53a6c6, 0xe26e6f, 0x00ebef, 0x584a9b, 0xb7dac4,
+0xba66aa, 0xcfcf76, 0x1d02d1, 0x2df1b1, 0xc1998c, 0x77adc3,
+0xda4886, 0xa05df7, 0xf480c6, 0x2ff0ac, 0x9aecdd, 0xbc5c3f,
+0x6dded0, 0x1fc790, 0xb6db2a, 0x3a25a3, 0x9aaf00, 0x9353ad,
+0x0457b6, 0xb42d29, 0x7e804b, 0xa707da, 0x0eaa76, 0xa1597b,
+0x2a1216, 0x2db7dc, 0xfde5fa, 0xfedb89, 0xfdbe89, 0x6c76e4,
+0xfca906, 0x70803e, 0x156e85, 0xff87fd, 0x073e28, 0x336761,
+0x86182a, 0xeabd4d, 0xafe7b3, 0x6e6d8f, 0x396795, 0x5bbf31,
+0x48d784, 0x16df30, 0x432dc7, 0x356125, 0xce70c9, 0xb8cb30,
+0xfd6cbf, 0xa200a4, 0xe46c05, 0xa0dd5a, 0x476f21, 0xd21262,
+0x845cb9, 0x496170, 0xe0566b, 0x015299, 0x375550, 0xb7d51e,
+0xc4f133, 0x5f6e13, 0xe4305d, 0xa92e85, 0xc3b21d, 0x3632a1,
+0xa4b708, 0xd4b1ea, 0x21f716, 0xe4698f, 0x77ff27, 0x80030c,
+0x2d408d, 0xa0cd4f, 0x99a520, 0xd3a2b3, 0x0a5d2f, 0x42f9b4,
+0xcbda11, 0xd0be7d, 0xc1db9b, 0xbd17ab, 0x81a2ca, 0x5c6a08,
+0x17552e, 0x550027, 0xf0147f, 0x8607e1, 0x640b14, 0x8d4196,
+0xdebe87, 0x2afdda, 0xb6256b, 0x34897b, 0xfef305, 0x9ebfb9,
+0x4f6a68, 0xa82a4a, 0x5ac44f, 0xbcf82d, 0x985ad7, 0x95c7f4,
+0x8d4d0d, 0xa63a20, 0x5f57a4, 0xb13f14, 0x953880, 0x0120cc,
+0x86dd71, 0xb6dec9, 0xf560bf, 0x11654d, 0x6b0701, 0xacb08c,
+0xd0c0b2, 0x485551, 0x0efb1e, 0xc37295, 0x3b06a3, 0x3540c0,
+0x7bdc06, 0xcc45e0, 0xfa294e, 0xc8cad6, 0x41f3e8, 0xde647c,
+0xd8649b, 0x31bed9, 0xc397a4, 0xd45877, 0xc5e369, 0x13daf0,
+0x3c3aba, 0x461846, 0x5f7555, 0xf5bdd2, 0xc6926e, 0x5d2eac,
+0xed440e, 0x423e1c, 0x87c461, 0xe9fd29, 0xf3d6e7, 0xca7c22,
+0x35916f, 0xc5e008, 0x8dd7ff, 0xe26a6e, 0xc6fdb0, 0xc10893,
+0x745d7c, 0xb2ad6b, 0x9d6ecd, 0x7b723e, 0x6a11c6, 0xa9cff7,
+0xdf7329, 0xbac9b5, 0x5100b7, 0x0db2e2, 0x24ba74, 0x607de5,
+0x8ad874, 0x2c150d, 0x0c1881, 0x94667e, 0x162901, 0x767a9f,
+0xbefdfd, 0xef4556, 0x367ed9, 0x13d9ec, 0xb9ba8b, 0xfc97c4,
+0x27a831, 0xc36ef1, 0x36c594, 0x56a8d8, 0xb5a8b4, 0x0ecccf,
+0x2d8912, 0x34576f, 0x89562c, 0xe3ce99, 0xb920d6, 0xaa5e6b,
+0x9c2a3e, 0xcc5f11, 0x4a0bfd, 0xfbf4e1, 0x6d3b8e, 0x2c86e2,
+0x84d4e9, 0xa9b4fc, 0xd1eeef, 0xc9352e, 0x61392f, 0x442138,
+0xc8d91b, 0x0afc81, 0x6a4afb, 0xd81c2f, 0x84b453, 0x8c994e,
+0xcc2254, 0xdc552a, 0xd6c6c0, 0x96190b, 0xb8701a, 0x649569,
+0x605a26, 0xee523f, 0x0f117f, 0x11b5f4, 0xf5cbfc, 0x2dbc34,
+0xeebc34, 0xcc5de8, 0x605edd, 0x9b8e67, 0xef3392, 0xb817c9,
+0x9b5861, 0xbc57e1, 0xc68351, 0x103ed8, 0x4871dd, 0xdd1c2d,
+0xa118af, 0x462c21, 0xd7f359, 0x987ad9, 0xc0549e, 0xfa864f,
+0xfc0656, 0xae79e5, 0x362289, 0x22ad38, 0xdc9367, 0xaae855,
+0x382682, 0x9be7ca, 0xa40d51, 0xb13399, 0x0ed7a9, 0x480569,
+0xf0b265, 0xa7887f, 0x974c88, 0x36d1f9, 0xb39221, 0x4a827b,
+0x21cf98, 0xdc9f40, 0x5547dc, 0x3a74e1, 0x42eb67, 0xdf9dfe,
+0x5fd45e, 0xa4677b, 0x7aacba, 0xa2f655, 0x23882b, 0x55ba41,
+0x086e59, 0x862a21, 0x834739, 0xe6e389, 0xd49ee5, 0x40fb49,
+0xe956ff, 0xca0f1c, 0x8a59c5, 0x2bfa94, 0xc5c1d3, 0xcfc50f,
+0xae5adb, 0x86c547, 0x624385, 0x3b8621, 0x94792c, 0x876110,
+0x7b4c2a, 0x1a2c80, 0x12bf43, 0x902688, 0x893c78, 0xe4c4a8,
+0x7bdbe5, 0xc23ac4, 0xeaf426, 0x8a67f7, 0xbf920d, 0x2ba365,
+0xb1933d, 0x0b7cbd, 0xdc51a4, 0x63dd27, 0xdde169, 0x19949a,
+0x9529a8, 0x28ce68, 0xb4ed09, 0x209f44, 0xca984e, 0x638270,
+0x237c7e, 0x32b90f, 0x8ef5a7, 0xe75614, 0x08f121, 0x2a9db5,
+0x4d7e6f, 0x5119a5, 0xabf9b5, 0xd6df82, 0x61dd96, 0x023616,
+0x9f3ac4, 0xa1a283, 0x6ded72, 0x7a8d39, 0xa9b882, 0x5c326b,
+0x5b2746, 0xed3400, 0x7700d2, 0x55f4fc, 0x4d5901, 0x8071e0,
+0xe13f89, 0xb295f3, 0x64a8f1, 0xaea74b, 0x38fc4c, 0xeab2bb,
+0x47270b, 0xabc3a7, 0x34ba60, 0x52dd34, 0xf8563a, 0xeb7e8a,
+0x31bb36, 0x5895b7, 0x47f7a9, 0x94c3aa, 0xd39225, 0x1e7f3e,
+0xd8974e, 0xbba94f, 0xd8ae01, 0xe661b4, 0x393d8e, 0xa523aa,
+0x33068e, 0x1633b5, 0x3bb188, 0x1d3a9d, 0x4013d0, 0xcc1be5,
+0xf862e7, 0x3bf28f, 0x39b5bf, 0x0bc235, 0x22747e, 0xa247c0,
+0xd52d1f, 0x19add3, 0x9094df, 0x9311d0, 0xb42b25, 0x496db2,
+0xe264b2, 0x5ef135, 0x3bc6a4, 0x1a4ad0, 0xaac92e, 0x64e886,
+0x573091, 0x982cfb, 0x311b1a, 0x08728b, 0xbdcee1, 0x60e142,
+0xeb641d, 0xd0bba3, 0xe559d4, 0x597b8c, 0x2a4483, 0xf332ba,
+0xf84867, 0x2c8d1b, 0x2fa9b0, 0x50f3dd, 0xf9f573, 0xdb61b4,
+0xfe233e, 0x6c41a6, 0xeea318, 0x775a26, 0xbc5e5c, 0xcea708,
+0x94dc57, 0xe20196, 0xf1e839, 0xbe4851, 0x5d2d2f, 0x4e9555,
+0xd96ec2, 0xe7d755, 0x6304e0, 0xc02e0e, 0xfc40a0, 0xbbf9b3,
+0x7125a7, 0x222dfb, 0xf619d8, 0x838c1c, 0x6619e6, 0xb20d55,
+0xbb5137, 0x79e809, 0xaf9149, 0x0d73de, 0x0b0da5, 0xce7f58,
+0xac1934, 0x724667, 0x7a1a13, 0x9e26bc, 0x4555e7, 0x585cb5,
+0x711d14, 0x486991, 0x480d60, 0x56adab, 0xd62f64, 0x96ee0c,
+0x212ff3, 0x5d6d88, 0xa67684, 0x95651e, 0xab9e0a, 0x4ddefe,
+0x571010, 0x836a39, 0xf8ea31, 0x9e381d, 0xeac8b1, 0xcac96b,
+0x37f21e, 0xd505e9, 0x984743, 0x9fc56c, 0x0331b7, 0x3b8bf8,
+0x86e56a, 0x8dc343, 0x6230e7, 0x93cfd5, 0x6a8f2d, 0x733005,
+0x1af021, 0xa09fcb, 0x7415a1, 0xd56b23, 0x6ff725, 0x2f4bc7,
+0xb8a591, 0x7fac59, 0x5c55de, 0x212c38, 0xb13296, 0x5cff50,
+0x366262, 0xfa7b16, 0xf4d9a6, 0x2acfe7, 0xf07403, 0xd4d604,
+0x6fd916, 0x31b1bf, 0xcbb450, 0x5bd7c8, 0x0ce194, 0x6bd643,
+0x4fd91c, 0xdf4543, 0x5f3453, 0xe2b5aa, 0xc9aec8, 0x131485,
+0xf9d2bf, 0xbadb9e, 0x76f5b9, 0xaf15cf, 0xca3182, 0x14b56d,
+0xe9fe4d, 0x50fc35, 0xf5aed5, 0xa2d0c1, 0xc96057, 0x192eb6,
+0xe91d92, 0x07d144, 0xaea3c6, 0x343566, 0x26d5b4, 0x3161e2,
+0x37f1a2, 0x209eff, 0x958e23, 0x493798, 0x35f4a6, 0x4bdc02,
+0xc2be13, 0xbe80a0, 0x0b72a3, 0x115c5f, 0x1e1bd1, 0x0db4d3,
+0x869e85, 0x96976b, 0x2ac91f, 0x8a26c2, 0x3070f0, 0x041412,
+0xfc9fa5, 0xf72a38, 0x9c6878, 0xe2aa76, 0x50cfe1, 0x559274,
+0x934e38, 0x0a92f7, 0x5533f0, 0xa63db4, 0x399971, 0xe2b755,
+0xa98a7c, 0x008f19, 0xac54d2, 0x2ea0b4, 0xf5f3e0, 0x60c849,
+0xffd269, 0xae52ce, 0x7a5fdd, 0xe9ce06, 0xfb0ae8, 0xa50cce,
+0xea9d3e, 0x3766dd, 0xb834f5, 0x0da090, 0x846f88, 0x4ae3d5,
+0x099a03, 0x2eae2d, 0xfcb40a, 0xfb9b33, 0xe281dd, 0x1b16ba,
+0xd8c0af, 0xd96b97, 0xb52dc9, 0x9c277f, 0x5951d5, 0x21ccd6,
+0xb6496b, 0x584562, 0xb3baf2, 0xa1a5c4, 0x7ca2cf, 0xa9b93d,
+0x7b7b89, 0x483d38,
+};
+
+static const _Float128 c[] = {
+/* 113 bits of pi/2 */
+#define PI_2_1 c[0]
+ L(0x1.921fb54442d18469898cc51701b8p+0),
+
+/* pi/2 - PI_2_1 */
+#define PI_2_1t c[1]
+ L(0x3.9a252049c1114cf98e804177d4c8p-116),
+};
+
+int32_t __ieee754_rem_pio2l(_Float128 x, _Float128 *y)
+{
+ _Float128 z, w, t;
+ double tx[8];
+ int64_t exp, n, ix, hx;
+ u_int64_t lx;
+
+ GET_LDOUBLE_WORDS64 (hx, lx, x);
+ ix = hx & 0x7fffffffffffffffLL;
+ if (ix <= 0x3ffe921fb54442d1LL) /* x in <-pi/4, pi/4> */
+ {
+ y[0] = x;
+ y[1] = 0;
+ return 0;
+ }
+
+ if (ix < 0x40002d97c7f3321dLL) /* |x| in <pi/4, 3pi/4) */
+ {
+ if (hx > 0)
+ {
+ /* 113 + 113 bit PI is ok */
+ z = x - PI_2_1;
+ y[0] = z - PI_2_1t;
+ y[1] = (z - y[0]) - PI_2_1t;
+ return 1;
+ }
+ else
+ {
+ /* 113 + 113 bit PI is ok */
+ z = x + PI_2_1;
+ y[0] = z + PI_2_1t;
+ y[1] = (z - y[0]) + PI_2_1t;
+ return -1;
+ }
+ }
+
+ if (ix >= 0x7fff000000000000LL) /* x is +=oo or NaN */
+ {
+ y[0] = x - x;
+ y[1] = y[0];
+ return 0;
+ }
+
+ /* Handle large arguments.
+ We split the 113 bits of the mantissa into 5 24bit integers
+ stored in a double array. */
+ exp = (ix >> 48) - 16383 - 23;
+
+ /* This is faster than doing this in floating point, because we
+ have to convert it to integers anyway and like this we can keep
+ both integer and floating point units busy. */
+ tx [0] = (double)(((ix >> 25) & 0x7fffff) | 0x800000);
+ tx [1] = (double)((ix >> 1) & 0xffffff);
+ tx [2] = (double)(((ix << 23) | (lx >> 41)) & 0xffffff);
+ tx [3] = (double)((lx >> 17) & 0xffffff);
+ tx [4] = (double)((lx << 7) & 0xffffff);
+
+ n = __kernel_rem_pio2 (tx, tx + 5, exp, ((lx << 7) & 0xffffff) ? 5 : 4,
+ 3, two_over_pi);
+
+ /* The result is now stored in 3 double values, we need to convert it into
+ two long double values. */
+ t = (_Float128) tx [6] + (_Float128) tx [7];
+ w = (_Float128) tx [5];
+
+ if (hx >= 0)
+ {
+ y[0] = w + t;
+ y[1] = t - (y[0] - w);
+ return n;
+ }
+ else
+ {
+ y[0] = -(w + t);
+ y[1] = -t - (y[0] + w);
+ return -n;
+ }
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128/e_remainderl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128/e_remainderl.c
new file mode 100644
index 0000000000..c1c196ca9a
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128/e_remainderl.c
@@ -0,0 +1,71 @@
+/* e_fmodl.c -- long double version of e_fmod.c.
+ * Conversion to IEEE quad long double by Jakub Jelinek, jj@ultra.linux.cz.
+ */
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+/* __ieee754_remainderl(x,p)
+ * Return :
+ * returns x REM p = x - [x/p]*p as if in infinite
+ * precise arithmetic, where [x/p] is the (infinite bit)
+ * integer nearest x/p (in half way case choose the even one).
+ * Method :
+ * Based on fmodl() return x-[x/p]chopped*p exactlp.
+ */
+
+#include <math.h>
+#include <math_private.h>
+
+static const _Float128 zero = 0;
+
+
+_Float128
+__ieee754_remainderl(_Float128 x, _Float128 p)
+{
+ int64_t hx,hp;
+ u_int64_t sx,lx,lp;
+ _Float128 p_half;
+
+ GET_LDOUBLE_WORDS64(hx,lx,x);
+ GET_LDOUBLE_WORDS64(hp,lp,p);
+ sx = hx&0x8000000000000000ULL;
+ hp &= 0x7fffffffffffffffLL;
+ hx &= 0x7fffffffffffffffLL;
+
+ /* purge off exception values */
+ if((hp|lp)==0) return (x*p)/(x*p); /* p = 0 */
+ if((hx>=0x7fff000000000000LL)|| /* x not finite */
+ ((hp>=0x7fff000000000000LL)&& /* p is NaN */
+ (((hp-0x7fff000000000000LL)|lp)!=0)))
+ return (x*p)/(x*p);
+
+
+ if (hp<=0x7ffdffffffffffffLL) x = __ieee754_fmodl(x,p+p); /* now x < 2p */
+ if (((hx-hp)|(lx-lp))==0) return zero*x;
+ x = fabsl(x);
+ p = fabsl(p);
+ if (hp<0x0002000000000000LL) {
+ if(x+x>p) {
+ x-=p;
+ if(x+x>=p) x -= p;
+ }
+ } else {
+ p_half = L(0.5)*p;
+ if(x>p_half) {
+ x-=p;
+ if(x>=p_half) x -= p;
+ }
+ }
+ GET_LDOUBLE_MSW64(hx,x);
+ SET_LDOUBLE_MSW64(x,hx^sx);
+ return x;
+}
+strong_alias (__ieee754_remainderl, __remainderl_finite)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128/e_sinhl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128/e_sinhl.c
new file mode 100644
index 0000000000..a2b30c2190
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128/e_sinhl.c
@@ -0,0 +1,117 @@
+/* e_sinhl.c -- long double version of e_sinh.c.
+ * Conversion to long double by Ulrich Drepper,
+ * Cygnus Support, drepper@cygnus.com.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+/* Changes for 128-bit long double are
+ Copyright (C) 2001 Stephen L. Moshier <moshier@na-net.ornl.gov>
+ and are incorporated herein by permission of the author. The author
+ reserves the right to distribute this material elsewhere under different
+ copying permissions. These modifications are distributed here under
+ the following terms:
+
+ This 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 2.1 of the License, or (at your option) any later version.
+
+ This 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 this library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+/* __ieee754_sinhl(x)
+ * Method :
+ * mathematically sinh(x) if defined to be (exp(x)-exp(-x))/2
+ * 1. Replace x by |x| (sinhl(-x) = -sinhl(x)).
+ * 2.
+ * E + E/(E+1)
+ * 0 <= x <= 25 : sinhl(x) := --------------, E=expm1l(x)
+ * 2
+ *
+ * 25 <= x <= lnovft : sinhl(x) := expl(x)/2
+ * lnovft <= x <= ln2ovft: sinhl(x) := expl(x/2)/2 * expl(x/2)
+ * ln2ovft < x : sinhl(x) := x*shuge (overflow)
+ *
+ * Special cases:
+ * sinhl(x) is |x| if x is +INF, -INF, or NaN.
+ * only sinhl(0)=0 is exact for finite x.
+ */
+
+#include <float.h>
+#include <math.h>
+#include <math_private.h>
+
+static const _Float128 one = 1.0, shuge = L(1.0e4931),
+ovf_thresh = L(1.1357216553474703894801348310092223067821E4);
+
+_Float128
+__ieee754_sinhl (_Float128 x)
+{
+ _Float128 t, w, h;
+ u_int32_t jx, ix;
+ ieee854_long_double_shape_type u;
+
+ /* Words of |x|. */
+ u.value = x;
+ jx = u.parts32.w0;
+ ix = jx & 0x7fffffff;
+
+ /* x is INF or NaN */
+ if (ix >= 0x7fff0000)
+ return x + x;
+
+ h = 0.5;
+ if (jx & 0x80000000)
+ h = -h;
+
+ /* Absolute value of x. */
+ u.parts32.w0 = ix;
+
+ /* |x| in [0,40], return sign(x)*0.5*(E+E/(E+1))) */
+ if (ix <= 0x40044000)
+ {
+ if (ix < 0x3fc60000) /* |x| < 2^-57 */
+ {
+ math_check_force_underflow (x);
+ if (shuge + x > one)
+ return x; /* sinh(tiny) = tiny with inexact */
+ }
+ t = __expm1l (u.value);
+ if (ix < 0x3fff0000)
+ return h * (2.0 * t - t * t / (t + one));
+ return h * (t + t / (t + one));
+ }
+
+ /* |x| in [40, log(maxdouble)] return 0.5*exp(|x|) */
+ if (ix <= 0x400c62e3) /* 11356.375 */
+ return h * __ieee754_expl (u.value);
+
+ /* |x| in [log(maxdouble), overflowthreshold]
+ Overflow threshold is log(2 * maxdouble). */
+ if (u.value <= ovf_thresh)
+ {
+ w = __ieee754_expl (0.5 * u.value);
+ t = h * w;
+ return t * w;
+ }
+
+ /* |x| > overflowthreshold, sinhl(x) overflow */
+ return x * shuge;
+}
+strong_alias (__ieee754_sinhl, __sinhl_finite)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128/gamma_productl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128/gamma_productl.c
new file mode 100644
index 0000000000..319a45119e
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128/gamma_productl.c
@@ -0,0 +1,45 @@
+/* Compute a product of X, X+1, ..., with an error estimate.
+ Copyright (C) 2013-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+#include <math_private.h>
+#include <mul_splitl.h>
+
+/* Compute the product of X + X_EPS, X + X_EPS + 1, ..., X + X_EPS + N
+ - 1, in the form R * (1 + *EPS) where the return value R is an
+ approximation to the product and *EPS is set to indicate the
+ approximate error in the return value. X is such that all the
+ values X + 1, ..., X + N - 1 are exactly representable, and X_EPS /
+ X is small enough that factors quadratic in it can be
+ neglected. */
+
+_Float128
+__gamma_productl (_Float128 x, _Float128 x_eps, int n, _Float128 *eps)
+{
+ SET_RESTORE_ROUNDL (FE_TONEAREST);
+ _Float128 ret = x;
+ *eps = x_eps / x;
+ for (int i = 1; i < n; i++)
+ {
+ *eps += x_eps / (x + i);
+ _Float128 lo;
+ mul_splitl (&ret, &lo, ret, x + i);
+ *eps += lo / ret;
+ }
+ return ret;
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128/ieee754.h b/REORG.TODO/sysdeps/ieee754/ldbl-128/ieee754.h
new file mode 100644
index 0000000000..94662a350f
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128/ieee754.h
@@ -0,0 +1,170 @@
+/* Copyright (C) 1992-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#ifndef _IEEE754_H
+
+#define _IEEE754_H 1
+#include <features.h>
+
+#include <endian.h>
+
+__BEGIN_DECLS
+
+union ieee754_float
+ {
+ float f;
+
+ /* This is the IEEE 754 single-precision format. */
+ struct
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN
+ unsigned int negative:1;
+ unsigned int exponent:8;
+ unsigned int mantissa:23;
+#endif /* Big endian. */
+#if __BYTE_ORDER == __LITTLE_ENDIAN
+ unsigned int mantissa:23;
+ unsigned int exponent:8;
+ unsigned int negative:1;
+#endif /* Little endian. */
+ } ieee;
+
+ /* This format makes it easier to see if a NaN is a signalling NaN. */
+ struct
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN
+ unsigned int negative:1;
+ unsigned int exponent:8;
+ unsigned int quiet_nan:1;
+ unsigned int mantissa:22;
+#endif /* Big endian. */
+#if __BYTE_ORDER == __LITTLE_ENDIAN
+ unsigned int mantissa:22;
+ unsigned int quiet_nan:1;
+ unsigned int exponent:8;
+ unsigned int negative:1;
+#endif /* Little endian. */
+ } ieee_nan;
+ };
+
+#define IEEE754_FLOAT_BIAS 0x7f /* Added to exponent. */
+
+
+union ieee754_double
+ {
+ double d;
+
+ /* This is the IEEE 754 double-precision format. */
+ struct
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN
+ unsigned int negative:1;
+ unsigned int exponent:11;
+ /* Together these comprise the mantissa. */
+ unsigned int mantissa0:20;
+ unsigned int mantissa1:32;
+#endif /* Big endian. */
+#if __BYTE_ORDER == __LITTLE_ENDIAN
+ /* Together these comprise the mantissa. */
+ unsigned int mantissa1:32;
+ unsigned int mantissa0:20;
+ unsigned int exponent:11;
+ unsigned int negative:1;
+#endif /* Little endian. */
+ } ieee;
+
+ /* This format makes it easier to see if a NaN is a signalling NaN. */
+ struct
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN
+ unsigned int negative:1;
+ unsigned int exponent:11;
+ unsigned int quiet_nan:1;
+ /* Together these comprise the mantissa. */
+ unsigned int mantissa0:19;
+ unsigned int mantissa1:32;
+#else
+ /* Together these comprise the mantissa. */
+ unsigned int mantissa1:32;
+ unsigned int mantissa0:19;
+ unsigned int quiet_nan:1;
+ unsigned int exponent:11;
+ unsigned int negative:1;
+#endif
+ } ieee_nan;
+ };
+
+#define IEEE754_DOUBLE_BIAS 0x3ff /* Added to exponent. */
+
+
+union ieee854_long_double
+ {
+ long double d;
+
+ /* This is the IEEE 854 quad-precision format. */
+ struct
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN
+ unsigned int negative:1;
+ unsigned int exponent:15;
+ /* Together these comprise the mantissa. */
+ unsigned int mantissa0:16;
+ unsigned int mantissa1:32;
+ unsigned int mantissa2:32;
+ unsigned int mantissa3:32;
+#endif /* Big endian. */
+#if __BYTE_ORDER == __LITTLE_ENDIAN
+ /* Together these comprise the mantissa. */
+ unsigned int mantissa3:32;
+ unsigned int mantissa2:32;
+ unsigned int mantissa1:32;
+ unsigned int mantissa0:16;
+ unsigned int exponent:15;
+ unsigned int negative:1;
+#endif /* Little endian. */
+ } ieee;
+
+ /* This format makes it easier to see if a NaN is a signalling NaN. */
+ struct
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN
+ unsigned int negative:1;
+ unsigned int exponent:15;
+ unsigned int quiet_nan:1;
+ /* Together these comprise the mantissa. */
+ unsigned int mantissa0:15;
+ unsigned int mantissa1:32;
+ unsigned int mantissa2:32;
+ unsigned int mantissa3:32;
+#else
+ /* Together these comprise the mantissa. */
+ unsigned int mantissa3:32;
+ unsigned int mantissa2:32;
+ unsigned int mantissa1:32;
+ unsigned int mantissa0:15;
+ unsigned int quiet_nan:1;
+ unsigned int exponent:15;
+ unsigned int negative:1;
+#endif
+ } ieee_nan;
+ };
+
+#define IEEE854_LONG_DOUBLE_BIAS 0x3fff /* Added to exponent. */
+
+__END_DECLS
+
+#endif /* ieee754.h */
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128/k_cosl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128/k_cosl.c
new file mode 100644
index 0000000000..b7c606379e
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128/k_cosl.c
@@ -0,0 +1,131 @@
+/* Quad-precision floating point cosine on <-pi/4,pi/4>.
+ Copyright (C) 1999-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Jakub Jelinek <jj@ultra.linux.cz>
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+#include <math_private.h>
+
+static const _Float128 c[] = {
+#define ONE c[0]
+ L(1.00000000000000000000000000000000000E+00), /* 3fff0000000000000000000000000000 */
+
+/* cos x ~ ONE + x^2 ( SCOS1 + SCOS2 * x^2 + ... + SCOS4 * x^6 + SCOS5 * x^8 )
+ x in <0,1/256> */
+#define SCOS1 c[1]
+#define SCOS2 c[2]
+#define SCOS3 c[3]
+#define SCOS4 c[4]
+#define SCOS5 c[5]
+L(-5.00000000000000000000000000000000000E-01), /* bffe0000000000000000000000000000 */
+ L(4.16666666666666666666666666556146073E-02), /* 3ffa5555555555555555555555395023 */
+L(-1.38888888888888888888309442601939728E-03), /* bff56c16c16c16c16c16a566e42c0375 */
+ L(2.48015873015862382987049502531095061E-05), /* 3fefa01a01a019ee02dcf7da2d6d5444 */
+L(-2.75573112601362126593516899592158083E-07), /* bfe927e4f5dce637cb0b54908754bde0 */
+
+/* cos x ~ ONE + x^2 ( COS1 + COS2 * x^2 + ... + COS7 * x^12 + COS8 * x^14 )
+ x in <0,0.1484375> */
+#define COS1 c[6]
+#define COS2 c[7]
+#define COS3 c[8]
+#define COS4 c[9]
+#define COS5 c[10]
+#define COS6 c[11]
+#define COS7 c[12]
+#define COS8 c[13]
+L(-4.99999999999999999999999999999999759E-01), /* bffdfffffffffffffffffffffffffffb */
+ L(4.16666666666666666666666666651287795E-02), /* 3ffa5555555555555555555555516f30 */
+L(-1.38888888888888888888888742314300284E-03), /* bff56c16c16c16c16c16c16a463dfd0d */
+ L(2.48015873015873015867694002851118210E-05), /* 3fefa01a01a01a01a0195cebe6f3d3a5 */
+L(-2.75573192239858811636614709689300351E-07), /* bfe927e4fb7789f5aa8142a22044b51f */
+ L(2.08767569877762248667431926878073669E-09), /* 3fe21eed8eff881d1e9262d7adff4373 */
+L(-1.14707451049343817400420280514614892E-11), /* bfda9397496922a9601ed3d4ca48944b */
+ L(4.77810092804389587579843296923533297E-14), /* 3fd2ae5f8197cbcdcaf7c3fb4523414c */
+
+/* sin x ~ ONE * x + x^3 ( SSIN1 + SSIN2 * x^2 + ... + SSIN4 * x^6 + SSIN5 * x^8 )
+ x in <0,1/256> */
+#define SSIN1 c[14]
+#define SSIN2 c[15]
+#define SSIN3 c[16]
+#define SSIN4 c[17]
+#define SSIN5 c[18]
+L(-1.66666666666666666666666666666666659E-01), /* bffc5555555555555555555555555555 */
+ L(8.33333333333333333333333333146298442E-03), /* 3ff81111111111111111111110fe195d */
+L(-1.98412698412698412697726277416810661E-04), /* bff2a01a01a01a01a019e7121e080d88 */
+ L(2.75573192239848624174178393552189149E-06), /* 3fec71de3a556c640c6aaa51aa02ab41 */
+L(-2.50521016467996193495359189395805639E-08), /* bfe5ae644ee90c47dc71839de75b2787 */
+};
+
+#define SINCOSL_COS_HI 0
+#define SINCOSL_COS_LO 1
+#define SINCOSL_SIN_HI 2
+#define SINCOSL_SIN_LO 3
+extern const _Float128 __sincosl_table[];
+
+_Float128
+__kernel_cosl(_Float128 x, _Float128 y)
+{
+ _Float128 h, l, z, sin_l, cos_l_m1;
+ int64_t ix;
+ u_int32_t tix, hix, index;
+ GET_LDOUBLE_MSW64 (ix, x);
+ tix = ((u_int64_t)ix) >> 32;
+ tix &= ~0x80000000; /* tix = |x|'s high 32 bits */
+ if (tix < 0x3ffc3000) /* |x| < 0.1484375 */
+ {
+ /* Argument is small enough to approximate it by a Chebyshev
+ polynomial of degree 16. */
+ if (tix < 0x3fc60000) /* |x| < 2^-57 */
+ if (!((int)x)) return ONE; /* generate inexact */
+ z = x * x;
+ return ONE + (z*(COS1+z*(COS2+z*(COS3+z*(COS4+
+ z*(COS5+z*(COS6+z*(COS7+z*COS8))))))));
+ }
+ else
+ {
+ /* So that we don't have to use too large polynomial, we find
+ l and h such that x = l + h, where fabsl(l) <= 1.0/256 with 83
+ possible values for h. We look up cosl(h) and sinl(h) in
+ pre-computed tables, compute cosl(l) and sinl(l) using a
+ Chebyshev polynomial of degree 10(11) and compute
+ cosl(h+l) = cosl(h)cosl(l) - sinl(h)sinl(l). */
+ index = 0x3ffe - (tix >> 16);
+ hix = (tix + (0x200 << index)) & (0xfffffc00 << index);
+ if (signbit (x))
+ {
+ x = -x;
+ y = -y;
+ }
+ switch (index)
+ {
+ case 0: index = ((45 << 10) + hix - 0x3ffe0000) >> 8; break;
+ case 1: index = ((13 << 11) + hix - 0x3ffd0000) >> 9; break;
+ default:
+ case 2: index = (hix - 0x3ffc3000) >> 10; break;
+ }
+
+ SET_LDOUBLE_WORDS64(h, ((u_int64_t)hix) << 32, 0);
+ l = y - (h - x);
+ z = l * l;
+ sin_l = l*(ONE+z*(SSIN1+z*(SSIN2+z*(SSIN3+z*(SSIN4+z*SSIN5)))));
+ cos_l_m1 = z*(SCOS1+z*(SCOS2+z*(SCOS3+z*(SCOS4+z*SCOS5))));
+ return __sincosl_table [index + SINCOSL_COS_HI]
+ + (__sincosl_table [index + SINCOSL_COS_LO]
+ - (__sincosl_table [index + SINCOSL_SIN_HI] * sin_l
+ - __sincosl_table [index + SINCOSL_COS_HI] * cos_l_m1));
+ }
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128/k_sincosl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128/k_sincosl.c
new file mode 100644
index 0000000000..03710f9e3a
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128/k_sincosl.c
@@ -0,0 +1,170 @@
+/* Quad-precision floating point sine and cosine on <-pi/4,pi/4>.
+ Copyright (C) 1999-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Jakub Jelinek <jj@ultra.linux.cz>
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <float.h>
+#include <math.h>
+#include <math_private.h>
+
+static const _Float128 c[] = {
+#define ONE c[0]
+ L(1.00000000000000000000000000000000000E+00), /* 3fff0000000000000000000000000000 */
+
+/* cos x ~ ONE + x^2 ( SCOS1 + SCOS2 * x^2 + ... + SCOS4 * x^6 + SCOS5 * x^8 )
+ x in <0,1/256> */
+#define SCOS1 c[1]
+#define SCOS2 c[2]
+#define SCOS3 c[3]
+#define SCOS4 c[4]
+#define SCOS5 c[5]
+L(-5.00000000000000000000000000000000000E-01), /* bffe0000000000000000000000000000 */
+ L(4.16666666666666666666666666556146073E-02), /* 3ffa5555555555555555555555395023 */
+L(-1.38888888888888888888309442601939728E-03), /* bff56c16c16c16c16c16a566e42c0375 */
+ L(2.48015873015862382987049502531095061E-05), /* 3fefa01a01a019ee02dcf7da2d6d5444 */
+L(-2.75573112601362126593516899592158083E-07), /* bfe927e4f5dce637cb0b54908754bde0 */
+
+/* cos x ~ ONE + x^2 ( COS1 + COS2 * x^2 + ... + COS7 * x^12 + COS8 * x^14 )
+ x in <0,0.1484375> */
+#define COS1 c[6]
+#define COS2 c[7]
+#define COS3 c[8]
+#define COS4 c[9]
+#define COS5 c[10]
+#define COS6 c[11]
+#define COS7 c[12]
+#define COS8 c[13]
+L(-4.99999999999999999999999999999999759E-01), /* bffdfffffffffffffffffffffffffffb */
+ L(4.16666666666666666666666666651287795E-02), /* 3ffa5555555555555555555555516f30 */
+L(-1.38888888888888888888888742314300284E-03), /* bff56c16c16c16c16c16c16a463dfd0d */
+ L(2.48015873015873015867694002851118210E-05), /* 3fefa01a01a01a01a0195cebe6f3d3a5 */
+L(-2.75573192239858811636614709689300351E-07), /* bfe927e4fb7789f5aa8142a22044b51f */
+ L(2.08767569877762248667431926878073669E-09), /* 3fe21eed8eff881d1e9262d7adff4373 */
+L(-1.14707451049343817400420280514614892E-11), /* bfda9397496922a9601ed3d4ca48944b */
+ L(4.77810092804389587579843296923533297E-14), /* 3fd2ae5f8197cbcdcaf7c3fb4523414c */
+
+/* sin x ~ ONE * x + x^3 ( SSIN1 + SSIN2 * x^2 + ... + SSIN4 * x^6 + SSIN5 * x^8 )
+ x in <0,1/256> */
+#define SSIN1 c[14]
+#define SSIN2 c[15]
+#define SSIN3 c[16]
+#define SSIN4 c[17]
+#define SSIN5 c[18]
+L(-1.66666666666666666666666666666666659E-01), /* bffc5555555555555555555555555555 */
+ L(8.33333333333333333333333333146298442E-03), /* 3ff81111111111111111111110fe195d */
+L(-1.98412698412698412697726277416810661E-04), /* bff2a01a01a01a01a019e7121e080d88 */
+ L(2.75573192239848624174178393552189149E-06), /* 3fec71de3a556c640c6aaa51aa02ab41 */
+L(-2.50521016467996193495359189395805639E-08), /* bfe5ae644ee90c47dc71839de75b2787 */
+
+/* sin x ~ ONE * x + x^3 ( SIN1 + SIN2 * x^2 + ... + SIN7 * x^12 + SIN8 * x^14 )
+ x in <0,0.1484375> */
+#define SIN1 c[19]
+#define SIN2 c[20]
+#define SIN3 c[21]
+#define SIN4 c[22]
+#define SIN5 c[23]
+#define SIN6 c[24]
+#define SIN7 c[25]
+#define SIN8 c[26]
+L(-1.66666666666666666666666666666666538e-01), /* bffc5555555555555555555555555550 */
+ L(8.33333333333333333333333333307532934e-03), /* 3ff811111111111111111111110e7340 */
+L(-1.98412698412698412698412534478712057e-04), /* bff2a01a01a01a01a01a019e7a626296 */
+ L(2.75573192239858906520896496653095890e-06), /* 3fec71de3a556c7338fa38527474b8f5 */
+L(-2.50521083854417116999224301266655662e-08), /* bfe5ae64567f544e16c7de65c2ea551f */
+ L(1.60590438367608957516841576404938118e-10), /* 3fde6124613a811480538a9a41957115 */
+L(-7.64716343504264506714019494041582610e-13), /* bfd6ae7f3d5aef30c7bc660b060ef365 */
+ L(2.81068754939739570236322404393398135e-15), /* 3fce9510115aabf87aceb2022a9a9180 */
+};
+
+#define SINCOSL_COS_HI 0
+#define SINCOSL_COS_LO 1
+#define SINCOSL_SIN_HI 2
+#define SINCOSL_SIN_LO 3
+extern const _Float128 __sincosl_table[];
+
+void
+__kernel_sincosl(_Float128 x, _Float128 y, _Float128 *sinx, _Float128 *cosx, int iy)
+{
+ _Float128 h, l, z, sin_l, cos_l_m1;
+ int64_t ix;
+ u_int32_t tix, hix, index;
+ GET_LDOUBLE_MSW64 (ix, x);
+ tix = ((u_int64_t)ix) >> 32;
+ tix &= ~0x80000000; /* tix = |x|'s high 32 bits */
+ if (tix < 0x3ffc3000) /* |x| < 0.1484375 */
+ {
+ /* Argument is small enough to approximate it by a Chebyshev
+ polynomial of degree 16(17). */
+ if (tix < 0x3fc60000) /* |x| < 2^-57 */
+ {
+ math_check_force_underflow (x);
+ if (!((int)x)) /* generate inexact */
+ {
+ *sinx = x;
+ *cosx = ONE;
+ return;
+ }
+ }
+ z = x * x;
+ *sinx = x + (x * (z*(SIN1+z*(SIN2+z*(SIN3+z*(SIN4+
+ z*(SIN5+z*(SIN6+z*(SIN7+z*SIN8)))))))));
+ *cosx = ONE + (z*(COS1+z*(COS2+z*(COS3+z*(COS4+
+ z*(COS5+z*(COS6+z*(COS7+z*COS8))))))));
+ }
+ else
+ {
+ /* So that we don't have to use too large polynomial, we find
+ l and h such that x = l + h, where fabsl(l) <= 1.0/256 with 83
+ possible values for h. We look up cosl(h) and sinl(h) in
+ pre-computed tables, compute cosl(l) and sinl(l) using a
+ Chebyshev polynomial of degree 10(11) and compute
+ sinl(h+l) = sinl(h)cosl(l) + cosl(h)sinl(l) and
+ cosl(h+l) = cosl(h)cosl(l) - sinl(h)sinl(l). */
+ index = 0x3ffe - (tix >> 16);
+ hix = (tix + (0x200 << index)) & (0xfffffc00 << index);
+ if (signbit (x))
+ {
+ x = -x;
+ y = -y;
+ }
+ switch (index)
+ {
+ case 0: index = ((45 << 10) + hix - 0x3ffe0000) >> 8; break;
+ case 1: index = ((13 << 11) + hix - 0x3ffd0000) >> 9; break;
+ default:
+ case 2: index = (hix - 0x3ffc3000) >> 10; break;
+ }
+
+ SET_LDOUBLE_WORDS64(h, ((u_int64_t)hix) << 32, 0);
+ if (iy)
+ l = y - (h - x);
+ else
+ l = x - h;
+ z = l * l;
+ sin_l = l*(ONE+z*(SSIN1+z*(SSIN2+z*(SSIN3+z*(SSIN4+z*SSIN5)))));
+ cos_l_m1 = z*(SCOS1+z*(SCOS2+z*(SCOS3+z*(SCOS4+z*SCOS5))));
+ z = __sincosl_table [index + SINCOSL_SIN_HI]
+ + (__sincosl_table [index + SINCOSL_SIN_LO]
+ + (__sincosl_table [index + SINCOSL_SIN_HI] * cos_l_m1)
+ + (__sincosl_table [index + SINCOSL_COS_HI] * sin_l));
+ *sinx = (ix < 0) ? -z : z;
+ *cosx = __sincosl_table [index + SINCOSL_COS_HI]
+ + (__sincosl_table [index + SINCOSL_COS_LO]
+ - (__sincosl_table [index + SINCOSL_SIN_HI] * sin_l
+ - __sincosl_table [index + SINCOSL_COS_HI] * cos_l_m1));
+ }
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128/k_sinl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128/k_sinl.c
new file mode 100644
index 0000000000..4107eeb9f9
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128/k_sinl.c
@@ -0,0 +1,135 @@
+/* Quad-precision floating point sine on <-pi/4,pi/4>.
+ Copyright (C) 1999-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Jakub Jelinek <jj@ultra.linux.cz>
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <float.h>
+#include <math.h>
+#include <math_private.h>
+
+static const _Float128 c[] = {
+#define ONE c[0]
+ L(1.00000000000000000000000000000000000E+00), /* 3fff0000000000000000000000000000 */
+
+/* cos x ~ ONE + x^2 ( SCOS1 + SCOS2 * x^2 + ... + SCOS4 * x^6 + SCOS5 * x^8 )
+ x in <0,1/256> */
+#define SCOS1 c[1]
+#define SCOS2 c[2]
+#define SCOS3 c[3]
+#define SCOS4 c[4]
+#define SCOS5 c[5]
+L(-5.00000000000000000000000000000000000E-01), /* bffe0000000000000000000000000000 */
+ L(4.16666666666666666666666666556146073E-02), /* 3ffa5555555555555555555555395023 */
+L(-1.38888888888888888888309442601939728E-03), /* bff56c16c16c16c16c16a566e42c0375 */
+ L(2.48015873015862382987049502531095061E-05), /* 3fefa01a01a019ee02dcf7da2d6d5444 */
+L(-2.75573112601362126593516899592158083E-07), /* bfe927e4f5dce637cb0b54908754bde0 */
+
+/* sin x ~ ONE * x + x^3 ( SIN1 + SIN2 * x^2 + ... + SIN7 * x^12 + SIN8 * x^14 )
+ x in <0,0.1484375> */
+#define SIN1 c[6]
+#define SIN2 c[7]
+#define SIN3 c[8]
+#define SIN4 c[9]
+#define SIN5 c[10]
+#define SIN6 c[11]
+#define SIN7 c[12]
+#define SIN8 c[13]
+L(-1.66666666666666666666666666666666538e-01), /* bffc5555555555555555555555555550 */
+ L(8.33333333333333333333333333307532934e-03), /* 3ff811111111111111111111110e7340 */
+L(-1.98412698412698412698412534478712057e-04), /* bff2a01a01a01a01a01a019e7a626296 */
+ L(2.75573192239858906520896496653095890e-06), /* 3fec71de3a556c7338fa38527474b8f5 */
+L(-2.50521083854417116999224301266655662e-08), /* bfe5ae64567f544e16c7de65c2ea551f */
+ L(1.60590438367608957516841576404938118e-10), /* 3fde6124613a811480538a9a41957115 */
+L(-7.64716343504264506714019494041582610e-13), /* bfd6ae7f3d5aef30c7bc660b060ef365 */
+ L(2.81068754939739570236322404393398135e-15), /* 3fce9510115aabf87aceb2022a9a9180 */
+
+/* sin x ~ ONE * x + x^3 ( SSIN1 + SSIN2 * x^2 + ... + SSIN4 * x^6 + SSIN5 * x^8 )
+ x in <0,1/256> */
+#define SSIN1 c[14]
+#define SSIN2 c[15]
+#define SSIN3 c[16]
+#define SSIN4 c[17]
+#define SSIN5 c[18]
+L(-1.66666666666666666666666666666666659E-01), /* bffc5555555555555555555555555555 */
+ L(8.33333333333333333333333333146298442E-03), /* 3ff81111111111111111111110fe195d */
+L(-1.98412698412698412697726277416810661E-04), /* bff2a01a01a01a01a019e7121e080d88 */
+ L(2.75573192239848624174178393552189149E-06), /* 3fec71de3a556c640c6aaa51aa02ab41 */
+L(-2.50521016467996193495359189395805639E-08), /* bfe5ae644ee90c47dc71839de75b2787 */
+};
+
+#define SINCOSL_COS_HI 0
+#define SINCOSL_COS_LO 1
+#define SINCOSL_SIN_HI 2
+#define SINCOSL_SIN_LO 3
+extern const _Float128 __sincosl_table[];
+
+_Float128
+__kernel_sinl(_Float128 x, _Float128 y, int iy)
+{
+ _Float128 h, l, z, sin_l, cos_l_m1;
+ int64_t ix;
+ u_int32_t tix, hix, index;
+ GET_LDOUBLE_MSW64 (ix, x);
+ tix = ((u_int64_t)ix) >> 32;
+ tix &= ~0x80000000; /* tix = |x|'s high 32 bits */
+ if (tix < 0x3ffc3000) /* |x| < 0.1484375 */
+ {
+ /* Argument is small enough to approximate it by a Chebyshev
+ polynomial of degree 17. */
+ if (tix < 0x3fc60000) /* |x| < 2^-57 */
+ {
+ math_check_force_underflow (x);
+ if (!((int)x)) return x; /* generate inexact */
+ }
+ z = x * x;
+ return x + (x * (z*(SIN1+z*(SIN2+z*(SIN3+z*(SIN4+
+ z*(SIN5+z*(SIN6+z*(SIN7+z*SIN8)))))))));
+ }
+ else
+ {
+ /* So that we don't have to use too large polynomial, we find
+ l and h such that x = l + h, where fabsl(l) <= 1.0/256 with 83
+ possible values for h. We look up cosl(h) and sinl(h) in
+ pre-computed tables, compute cosl(l) and sinl(l) using a
+ Chebyshev polynomial of degree 10(11) and compute
+ sinl(h+l) = sinl(h)cosl(l) + cosl(h)sinl(l). */
+ index = 0x3ffe - (tix >> 16);
+ hix = (tix + (0x200 << index)) & (0xfffffc00 << index);
+ x = fabsl (x);
+ switch (index)
+ {
+ case 0: index = ((45 << 10) + hix - 0x3ffe0000) >> 8; break;
+ case 1: index = ((13 << 11) + hix - 0x3ffd0000) >> 9; break;
+ default:
+ case 2: index = (hix - 0x3ffc3000) >> 10; break;
+ }
+
+ SET_LDOUBLE_WORDS64(h, ((u_int64_t)hix) << 32, 0);
+ if (iy)
+ l = (ix < 0 ? -y : y) - (h - x);
+ else
+ l = x - h;
+ z = l * l;
+ sin_l = l*(ONE+z*(SSIN1+z*(SSIN2+z*(SSIN3+z*(SSIN4+z*SSIN5)))));
+ cos_l_m1 = z*(SCOS1+z*(SCOS2+z*(SCOS3+z*(SCOS4+z*SCOS5))));
+ z = __sincosl_table [index + SINCOSL_SIN_HI]
+ + (__sincosl_table [index + SINCOSL_SIN_LO]
+ + (__sincosl_table [index + SINCOSL_SIN_HI] * cos_l_m1)
+ + (__sincosl_table [index + SINCOSL_COS_HI] * sin_l));
+ return (ix < 0) ? -z : z;
+ }
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128/k_tanl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128/k_tanl.c
new file mode 100644
index 0000000000..e79023c69a
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128/k_tanl.c
@@ -0,0 +1,168 @@
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+/*
+ Long double expansions are
+ Copyright (C) 2001 Stephen L. Moshier <moshier@na-net.ornl.gov>
+ and are incorporated herein by permission of the author. The author
+ reserves the right to distribute this material elsewhere under different
+ copying permissions. These modifications are distributed here under
+ the following terms:
+
+ This 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 2.1 of the License, or (at your option) any later version.
+
+ This 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 this library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+/* __kernel_tanl( x, y, k )
+ * kernel tan function on [-pi/4, pi/4], pi/4 ~ 0.7854
+ * Input x is assumed to be bounded by ~pi/4 in magnitude.
+ * Input y is the tail of x.
+ * Input k indicates whether tan (if k=1) or
+ * -1/tan (if k= -1) is returned.
+ *
+ * Algorithm
+ * 1. Since tan(-x) = -tan(x), we need only to consider positive x.
+ * 2. if x < 2^-57, return x with inexact if x!=0.
+ * 3. tan(x) is approximated by a rational form x + x^3 / 3 + x^5 R(x^2)
+ * on [0,0.67433].
+ *
+ * Note: tan(x+y) = tan(x) + tan'(x)*y
+ * ~ tan(x) + (1+x*x)*y
+ * Therefore, for better accuracy in computing tan(x+y), let
+ * r = x^3 * R(x^2)
+ * then
+ * tan(x+y) = x + (x^3 / 3 + (x^2 *(r+y)+y))
+ *
+ * 4. For x in [0.67433,pi/4], let y = pi/4 - x, then
+ * tan(x) = tan(pi/4-y) = (1-tan(y))/(1+tan(y))
+ * = 1 - 2*(tan(y) - (tan(y)^2)/(1+tan(y)))
+ */
+
+#include <float.h>
+#include <math.h>
+#include <math_private.h>
+#include <libc-diag.h>
+
+static const _Float128
+ one = 1,
+ pio4hi = L(7.8539816339744830961566084581987569936977E-1),
+ pio4lo = L(2.1679525325309452561992610065108379921906E-35),
+
+ /* tan x = x + x^3 / 3 + x^5 T(x^2)/U(x^2)
+ 0 <= x <= 0.6743316650390625
+ Peak relative error 8.0e-36 */
+ TH = L(3.333333333333333333333333333333333333333E-1),
+ T0 = L(-1.813014711743583437742363284336855889393E7),
+ T1 = L(1.320767960008972224312740075083259247618E6),
+ T2 = L(-2.626775478255838182468651821863299023956E4),
+ T3 = L(1.764573356488504935415411383687150199315E2),
+ T4 = L(-3.333267763822178690794678978979803526092E-1),
+
+ U0 = L(-1.359761033807687578306772463253710042010E8),
+ U1 = L(6.494370630656893175666729313065113194784E7),
+ U2 = L(-4.180787672237927475505536849168729386782E6),
+ U3 = L(8.031643765106170040139966622980914621521E4),
+ U4 = L(-5.323131271912475695157127875560667378597E2);
+ /* 1.000000000000000000000000000000000000000E0 */
+
+
+_Float128
+__kernel_tanl (_Float128 x, _Float128 y, int iy)
+{
+ _Float128 z, r, v, w, s;
+ int32_t ix, sign;
+ ieee854_long_double_shape_type u, u1;
+
+ u.value = x;
+ ix = u.parts32.w0 & 0x7fffffff;
+ if (ix < 0x3fc60000) /* x < 2**-57 */
+ {
+ if ((int) x == 0)
+ { /* generate inexact */
+ if ((ix | u.parts32.w1 | u.parts32.w2 | u.parts32.w3
+ | (iy + 1)) == 0)
+ return one / fabsl (x);
+ else if (iy == 1)
+ {
+ math_check_force_underflow (x);
+ return x;
+ }
+ else
+ return -one / x;
+ }
+ }
+ if (ix >= 0x3ffe5942) /* |x| >= 0.6743316650390625 */
+ {
+ if ((u.parts32.w0 & 0x80000000) != 0)
+ {
+ x = -x;
+ y = -y;
+ sign = -1;
+ }
+ else
+ sign = 1;
+ z = pio4hi - x;
+ w = pio4lo - y;
+ x = z + w;
+ y = 0.0;
+ }
+ z = x * x;
+ r = T0 + z * (T1 + z * (T2 + z * (T3 + z * T4)));
+ v = U0 + z * (U1 + z * (U2 + z * (U3 + z * (U4 + z))));
+ r = r / v;
+
+ s = z * x;
+ r = y + z * (s * r + y);
+ r += TH * s;
+ w = x + r;
+ if (ix >= 0x3ffe5942)
+ {
+ v = (_Float128) iy;
+ w = (v - 2.0 * (x - (w * w / (w + v) - r)));
+ /* SIGN is set for arguments that reach this code, but not
+ otherwise, resulting in warnings that it may be used
+ uninitialized although in the cases where it is used it has
+ always been set. */
+ DIAG_PUSH_NEEDS_COMMENT;
+ DIAG_IGNORE_NEEDS_COMMENT (5, "-Wmaybe-uninitialized");
+ if (sign < 0)
+ w = -w;
+ DIAG_POP_NEEDS_COMMENT;
+ return w;
+ }
+ if (iy == 1)
+ return w;
+ else
+ { /* if allow error up to 2 ulp,
+ simply return -1.0/(x+r) here */
+ /* compute -1.0/(x+r) accurately */
+ u1.value = w;
+ u1.parts32.w2 = 0;
+ u1.parts32.w3 = 0;
+ v = r - (u1.value - x); /* u1+v = r+x */
+ z = -1.0 / w;
+ u.value = z;
+ u.parts32.w2 = 0;
+ u.parts32.w3 = 0;
+ s = 1.0 + u.value * u1.value;
+ return u.value + z * (s + u.value * v);
+ }
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128/ldbl2mpn.c b/REORG.TODO/sysdeps/ieee754/ldbl-128/ldbl2mpn.c
new file mode 100644
index 0000000000..1c79a5dbe5
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128/ldbl2mpn.c
@@ -0,0 +1,140 @@
+/* Copyright (C) 1995-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include "gmp.h"
+#include "gmp-impl.h"
+#include "longlong.h"
+#include <ieee754.h>
+#include <float.h>
+#include <math.h>
+#include <math_private.h>
+#include <stdlib.h>
+
+/* Convert a `long double' in IEEE854 quad-precision format to a
+ multi-precision integer representing the significand scaled up by its
+ number of bits (113 for long double) and an integral power of two
+ (MPN frexpl). */
+
+mp_size_t
+__mpn_extract_long_double (mp_ptr res_ptr, mp_size_t size,
+ int *expt, int *is_neg,
+ _Float128 value)
+{
+ union ieee854_long_double u;
+ u.d = value;
+
+ *is_neg = u.ieee.negative;
+ *expt = (int) u.ieee.exponent - IEEE854_LONG_DOUBLE_BIAS;
+
+#if BITS_PER_MP_LIMB == 32
+ res_ptr[0] = u.ieee.mantissa3; /* Low-order 32 bits of fraction. */
+ res_ptr[1] = u.ieee.mantissa2;
+ res_ptr[2] = u.ieee.mantissa1;
+ res_ptr[3] = u.ieee.mantissa0; /* High-order 32 bits. */
+ #define N 4
+#elif BITS_PER_MP_LIMB == 64
+ /* Hopefully the compiler will combine the two bitfield extracts
+ and this composition into just the original quadword extract. */
+ res_ptr[0] = ((mp_limb_t) u.ieee.mantissa2 << 32) | u.ieee.mantissa3;
+ res_ptr[1] = ((mp_limb_t) u.ieee.mantissa0 << 32) | u.ieee.mantissa1;
+ #define N 2
+#else
+ #error "mp_limb size " BITS_PER_MP_LIMB "not accounted for"
+#endif
+/* The format does not fill the last limb. There are some zeros. */
+#define NUM_LEADING_ZEROS (BITS_PER_MP_LIMB \
+ - (LDBL_MANT_DIG - ((N - 1) * BITS_PER_MP_LIMB)))
+
+ if (u.ieee.exponent == 0)
+ {
+ /* A biased exponent of zero is a special case.
+ Either it is a zero or it is a denormal number. */
+ if (res_ptr[0] == 0 && res_ptr[1] == 0
+ && res_ptr[N - 2] == 0 && res_ptr[N - 1] == 0) /* Assumes N<=4. */
+ /* It's zero. */
+ *expt = 0;
+ else
+ {
+ /* It is a denormal number, meaning it has no implicit leading
+ one bit, and its exponent is in fact the format minimum. */
+ int cnt;
+
+#if N == 2
+ if (res_ptr[N - 1] != 0)
+ {
+ count_leading_zeros (cnt, res_ptr[N - 1]);
+ cnt -= NUM_LEADING_ZEROS;
+ res_ptr[N - 1] = res_ptr[N - 1] << cnt
+ | (res_ptr[0] >> (BITS_PER_MP_LIMB - cnt));
+ res_ptr[0] <<= cnt;
+ *expt = LDBL_MIN_EXP - 1 - cnt;
+ }
+ else
+ {
+ count_leading_zeros (cnt, res_ptr[0]);
+ if (cnt >= NUM_LEADING_ZEROS)
+ {
+ res_ptr[N - 1] = res_ptr[0] << (cnt - NUM_LEADING_ZEROS);
+ res_ptr[0] = 0;
+ }
+ else
+ {
+ res_ptr[N - 1] = res_ptr[0] >> (NUM_LEADING_ZEROS - cnt);
+ res_ptr[0] <<= BITS_PER_MP_LIMB - (NUM_LEADING_ZEROS - cnt);
+ }
+ *expt = LDBL_MIN_EXP - 1
+ - (BITS_PER_MP_LIMB - NUM_LEADING_ZEROS) - cnt;
+ }
+#else
+ int j, k, l;
+
+ for (j = N - 1; j > 0; j--)
+ if (res_ptr[j] != 0)
+ break;
+
+ count_leading_zeros (cnt, res_ptr[j]);
+ cnt -= NUM_LEADING_ZEROS;
+ l = N - 1 - j;
+ if (cnt < 0)
+ {
+ cnt += BITS_PER_MP_LIMB;
+ l--;
+ }
+ if (!cnt)
+ for (k = N - 1; k >= l; k--)
+ res_ptr[k] = res_ptr[k-l];
+ else
+ {
+ for (k = N - 1; k > l; k--)
+ res_ptr[k] = res_ptr[k-l] << cnt
+ | res_ptr[k-l-1] >> (BITS_PER_MP_LIMB - cnt);
+ res_ptr[k--] = res_ptr[0] << cnt;
+ }
+
+ for (; k >= 0; k--)
+ res_ptr[k] = 0;
+ *expt = LDBL_MIN_EXP - 1 - l * BITS_PER_MP_LIMB - cnt;
+#endif
+ }
+ }
+ else
+ /* Add the implicit leading one bit for a normalized number. */
+ res_ptr[N - 1] |= (mp_limb_t) 1 << (LDBL_MANT_DIG - 1
+ - ((N - 1) * BITS_PER_MP_LIMB));
+
+ return N;
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128/lgamma_negl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128/lgamma_negl.c
new file mode 100644
index 0000000000..17dc4f5bfe
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128/lgamma_negl.c
@@ -0,0 +1,551 @@
+/* lgammal expanding around zeros.
+ Copyright (C) 2015-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <float.h>
+#include <math.h>
+#include <math_private.h>
+
+static const _Float128 lgamma_zeros[][2] =
+ {
+ { L(-0x2.74ff92c01f0d82abec9f315f1a08p+0), L(0xe.d3ccb7fb2658634a2b9f6b2ba81p-116) },
+ { L(-0x2.bf6821437b20197995a4b4641eaep+0), L(-0xb.f4b00b4829f961e428533e6ad048p-116) },
+ { L(-0x3.24c1b793cb35efb8be699ad3d9bap+0), L(-0x6.5454cb7fac60e3f16d9d7840c2ep-116) },
+ { L(-0x3.f48e2a8f85fca170d4561291236cp+0), L(-0xc.320a4887d1cb4c711828a75d5758p-116) },
+ { L(-0x4.0a139e16656030c39f0b0de18114p+0), L(0x1.53e84029416e1242006b2b3d1cfp-112) },
+ { L(-0x4.fdd5de9bbabf3510d0aa40769884p+0), L(-0x1.01d7d78125286f78d1e501f14966p-112) },
+ { L(-0x5.021a95fc2db6432a4c56e595394cp+0), L(-0x1.ecc6af0430d4fe5746fa7233356fp-112) },
+ { L(-0x5.ffa4bd647d0357dd4ed62cbd31ecp+0), L(-0x1.f8e3f8e5deba2d67dbd70dd96ce1p-112) },
+ { L(-0x6.005ac9625f233b607c2d96d16384p+0), L(-0x1.cb86ac569340cf1e5f24df7aab7bp-112) },
+ { L(-0x6.fff2fddae1bbff3d626b65c23fd4p+0), L(0x1.e0bfcff5c457ebcf4d3ad9674167p-112) },
+ { L(-0x7.000cff7b7f87adf4482dcdb98784p+0), L(0x1.54d99e35a74d6407b80292df199fp-112) },
+ { L(-0x7.fffe5fe05673c3ca9e82b522b0ccp+0), L(0x1.62d177c832e0eb42c2faffd1b145p-112) },
+ { L(-0x8.0001a01459fc9f60cb3cec1cec88p+0), L(0x2.8998835ac7277f7bcef67c47f188p-112) },
+ { L(-0x8.ffffd1c425e80ffc864e95749258p+0), L(-0x1.e7e20210e7f81cf781b44e9d2b02p-112) },
+ { L(-0x9.00002e3bb47d86d6d843fedc352p+0), L(0x2.14852f613a16291751d2ab751f7ep-112) },
+ { L(-0x9.fffffb606bdfdcd062ae77a50548p+0), L(0x3.962d1490cc2e8f031c7007eaa1ap-116) },
+ { L(-0xa.0000049f93bb9927b45d95e1544p+0), L(-0x1.e03086db9146a9287bd4f2172d5ap-112) },
+ { L(-0xa.ffffff9466e9f1b36dacd2adbd18p+0), L(-0xd.05a4e458062f3f95345a4d9c9b6p-116) },
+ { L(-0xb.0000006b9915315d965a6ffea41p+0), L(0x1.b415c6fff233e7b7fdc3a094246fp-112) },
+ { L(-0xb.fffffff7089387387de41acc3d4p+0), L(0x3.687427c6373bd74a10306e10a28ep-112) },
+ { L(-0xc.00000008f76c7731567c0f0250fp+0), L(-0x3.87920df5675833859190eb128ef6p-112) },
+ { L(-0xc.ffffffff4f6dcf617f97a5ffc758p+0), L(0x2.ab72d76f32eaee2d1a42ed515d3ap-116) },
+ { L(-0xd.00000000b092309c06683dd1b9p+0), L(-0x3.e3700857a15c19ac5a611de9688ap-112) },
+ { L(-0xd.fffffffff36345ab9e184a3e09dp+0), L(-0x1.176dc48e47f62d917973dd44e553p-112) },
+ { L(-0xe.000000000c9cba545e94e75ec57p+0), L(-0x1.8f753e2501e757a17cf2ecbeeb89p-112) },
+ { L(-0xe.ffffffffff28c060c6604ef3037p+0), L(-0x1.f89d37357c9e3dc17c6c6e63becap-112) },
+ { L(-0xf.0000000000d73f9f399bd0e420f8p+0), L(-0x5.e9ee31b0b890744fc0e3fbc01048p-116) },
+ { L(-0xf.fffffffffff28c060c6621f512e8p+0), L(0xd.1b2eec9d960bd9adc5be5f5fa5p-116) },
+ { L(-0x1.000000000000d73f9f399da1424cp+4), L(0x6.c46e0e88305d2800f0e414c506a8p-116) },
+ { L(-0x1.0ffffffffffff3569c47e7a93e1cp+4), L(-0x4.6a08a2e008a998ebabb8087efa2cp-112) },
+ { L(-0x1.1000000000000ca963b818568887p+4), L(-0x6.ca5a3a64ec15db0a95caf2c9ffb4p-112) },
+ { L(-0x1.1fffffffffffff4bec3ce234132dp+4), L(-0x8.b2b726187c841cb92cd5221e444p-116) },
+ { L(-0x1.20000000000000b413c31dcbeca5p+4), L(0x3.c4d005344b6cd0e7231120294abcp-112) },
+ { L(-0x1.2ffffffffffffff685b25cbf5f54p+4), L(-0x5.ced932e38485f7dd296b8fa41448p-112) },
+ { L(-0x1.30000000000000097a4da340a0acp+4), L(0x7.e484e0e0ffe38d406ebebe112f88p-112) },
+ { L(-0x1.3fffffffffffffff86af516ff7f7p+4), L(-0x6.bd67e720d57854502b7db75e1718p-112) },
+ { L(-0x1.40000000000000007950ae900809p+4), L(0x6.bec33375cac025d9c073168c5d9p-112) },
+ { L(-0x1.4ffffffffffffffffa391c4248c3p+4), L(0x5.c63022b62b5484ba346524db607p-112) },
+ { L(-0x1.500000000000000005c6e3bdb73dp+4), L(-0x5.c62f55ed5322b2685c5e9a51e6a8p-112) },
+ { L(-0x1.5fffffffffffffffffbcc71a492p+4), L(-0x1.eb5aeb96c74d7ad25e060528fb5p-112) },
+ { L(-0x1.6000000000000000004338e5b6ep+4), L(0x1.eb5aec04b2f2eb663e4e3d8a018cp-112) },
+ { L(-0x1.6ffffffffffffffffffd13c97d9dp+4), L(-0x3.8fcc4d08d6fe5aa56ab04307ce7ep-112) },
+ { L(-0x1.70000000000000000002ec368263p+4), L(0x3.8fcc4d090cee2f5d0b69a99c353cp-112) },
+ { L(-0x1.7fffffffffffffffffffe0d30fe7p+4), L(0x7.2f577cca4b4c8cb1dc14001ac5ecp-112) },
+ { L(-0x1.800000000000000000001f2cf019p+4), L(-0x7.2f577cca4b3442e35f0040b3b9e8p-112) },
+ { L(-0x1.8ffffffffffffffffffffec0c332p+4), L(-0x2.e9a0572b1bb5b95f346a92d67a6p-112) },
+ { L(-0x1.90000000000000000000013f3ccep+4), L(0x2.e9a0572b1bb5c371ddb3561705ap-112) },
+ { L(-0x1.9ffffffffffffffffffffff3b8bdp+4), L(-0x1.cad8d32e386fd783e97296d63dcbp-116) },
+ { L(-0x1.a0000000000000000000000c4743p+4), L(0x1.cad8d32e386fd7c1ab8c1fe34c0ep-116) },
+ { L(-0x1.afffffffffffffffffffffff8b95p+4), L(-0x3.8f48cc5737d5979c39db806c5406p-112) },
+ { L(-0x1.b00000000000000000000000746bp+4), L(0x3.8f48cc5737d5979c3b3a6bda06f6p-112) },
+ { L(-0x1.bffffffffffffffffffffffffbd8p+4), L(0x6.2898d42174dcf171470d8c8c6028p-112) },
+ { L(-0x1.c000000000000000000000000428p+4), L(-0x6.2898d42174dcf171470d18ba412cp-112) },
+ { L(-0x1.cfffffffffffffffffffffffffdbp+4), L(-0x4.c0ce9794ea50a839e311320bde94p-112) },
+ { L(-0x1.d000000000000000000000000025p+4), L(0x4.c0ce9794ea50a839e311322f7cf8p-112) },
+ { L(-0x1.dfffffffffffffffffffffffffffp+4), L(0x3.932c5047d60e60caded4c298a174p-112) },
+ { L(-0x1.e000000000000000000000000001p+4), L(-0x3.932c5047d60e60caded4c298973ap-112) },
+ { L(-0x1.fp+4), L(0xa.1a6973c1fade2170f7237d35fe3p-116) },
+ { L(-0x1.fp+4), L(-0xa.1a6973c1fade2170f7237d35fe08p-116) },
+ { L(-0x2p+4), L(0x5.0d34b9e0fd6f10b87b91be9aff1p-120) },
+ { L(-0x2p+4), L(-0x5.0d34b9e0fd6f10b87b91be9aff0cp-120) },
+ { L(-0x2.1p+4), L(0x2.73024a9ba1aa36a7059bff52e844p-124) },
+ { L(-0x2.1p+4), L(-0x2.73024a9ba1aa36a7059bff52e844p-124) },
+ { L(-0x2.2p+4), L(0x1.2710231c0fd7a13f8a2b4af9d6b7p-128) },
+ { L(-0x2.2p+4), L(-0x1.2710231c0fd7a13f8a2b4af9d6b7p-128) },
+ { L(-0x2.3p+4), L(0x8.6e2ce38b6c8f9419e3fad3f0312p-136) },
+ { L(-0x2.3p+4), L(-0x8.6e2ce38b6c8f9419e3fad3f0312p-136) },
+ { L(-0x2.4p+4), L(0x3.bf30652185952560d71a254e4eb8p-140) },
+ { L(-0x2.4p+4), L(-0x3.bf30652185952560d71a254e4eb8p-140) },
+ { L(-0x2.5p+4), L(0x1.9ec8d1c94e85af4c78b15c3d89d3p-144) },
+ { L(-0x2.5p+4), L(-0x1.9ec8d1c94e85af4c78b15c3d89d3p-144) },
+ { L(-0x2.6p+4), L(0xa.ea565ce061d57489e9b85276274p-152) },
+ { L(-0x2.6p+4), L(-0xa.ea565ce061d57489e9b85276274p-152) },
+ { L(-0x2.7p+4), L(0x4.7a6512692eb37804111dabad30ecp-156) },
+ { L(-0x2.7p+4), L(-0x4.7a6512692eb37804111dabad30ecp-156) },
+ { L(-0x2.8p+4), L(0x1.ca8ed42a12ae3001a07244abad2bp-160) },
+ { L(-0x2.8p+4), L(-0x1.ca8ed42a12ae3001a07244abad2bp-160) },
+ { L(-0x2.9p+4), L(0xb.2f30e1ce812063f12e7e8d8d96e8p-168) },
+ { L(-0x2.9p+4), L(-0xb.2f30e1ce812063f12e7e8d8d96e8p-168) },
+ { L(-0x2.ap+4), L(0x4.42bd49d4c37a0db136489772e428p-172) },
+ { L(-0x2.ap+4), L(-0x4.42bd49d4c37a0db136489772e428p-172) },
+ { L(-0x2.bp+4), L(0x1.95db45257e5122dcbae56def372p-176) },
+ { L(-0x2.bp+4), L(-0x1.95db45257e5122dcbae56def372p-176) },
+ { L(-0x2.cp+4), L(0x9.3958d81ff63527ecf993f3fb6f48p-184) },
+ { L(-0x2.cp+4), L(-0x9.3958d81ff63527ecf993f3fb6f48p-184) },
+ { L(-0x2.dp+4), L(0x3.47970e4440c8f1c058bd238c9958p-188) },
+ { L(-0x2.dp+4), L(-0x3.47970e4440c8f1c058bd238c9958p-188) },
+ { L(-0x2.ep+4), L(0x1.240804f65951062ca46e4f25c608p-192) },
+ { L(-0x2.ep+4), L(-0x1.240804f65951062ca46e4f25c608p-192) },
+ { L(-0x2.fp+4), L(0x6.36a382849fae6de2d15362d8a394p-200) },
+ { L(-0x2.fp+4), L(-0x6.36a382849fae6de2d15362d8a394p-200) },
+ { L(-0x3p+4), L(0x2.123680d6dfe4cf4b9b1bcb9d8bdcp-204) },
+ { L(-0x3p+4), L(-0x2.123680d6dfe4cf4b9b1bcb9d8bdcp-204) },
+ { L(-0x3.1p+4), L(0xa.d21786ff5842eca51fea0870919p-212) },
+ { L(-0x3.1p+4), L(-0xa.d21786ff5842eca51fea0870919p-212) },
+ { L(-0x3.2p+4), L(0x3.766dedc259af040be140a68a6c04p-216) },
+ };
+
+static const _Float128 e_hi = L(0x2.b7e151628aed2a6abf7158809cf4p+0);
+static const _Float128 e_lo = L(0xf.3c762e7160f38b4da56a784d9048p-116);
+
+
+/* Coefficients B_2k / 2k(2k-1) of x^-(2k-1) in Stirling's
+ approximation to lgamma function. */
+
+static const _Float128 lgamma_coeff[] =
+ {
+ L(0x1.5555555555555555555555555555p-4),
+ L(-0xb.60b60b60b60b60b60b60b60b60b8p-12),
+ L(0x3.4034034034034034034034034034p-12),
+ L(-0x2.7027027027027027027027027028p-12),
+ L(0x3.72a3c5631fe46ae1d4e700dca8f2p-12),
+ L(-0x7.daac36664f1f207daac36664f1f4p-12),
+ L(0x1.a41a41a41a41a41a41a41a41a41ap-8),
+ L(-0x7.90a1b2c3d4e5f708192a3b4c5d7p-8),
+ L(0x2.dfd2c703c0cfff430edfd2c703cp-4),
+ L(-0x1.6476701181f39edbdb9ce625987dp+0),
+ L(0xd.672219167002d3a7a9c886459cp+0),
+ L(-0x9.cd9292e6660d55b3f712eb9e07c8p+4),
+ L(0x8.911a740da740da740da740da741p+8),
+ L(-0x8.d0cc570e255bf59ff6eec24b49p+12),
+ L(0xa.8d1044d3708d1c219ee4fdc446ap+16),
+ L(-0xe.8844d8a169abbc406169abbc406p+20),
+ L(0x1.6d29a0f6433b79890cede62433b8p+28),
+ L(-0x2.88a233b3c8cddaba9809357125d8p+32),
+ L(0x5.0dde6f27500939a85c40939a85c4p+36),
+ L(-0xb.4005bde03d4642a243581714af68p+40),
+ L(0x1.bc8cd6f8f1f755c78753cdb5d5c9p+48),
+ L(-0x4.bbebb143bb94de5a0284fa7ec424p+52),
+ L(0xe.2e1337f5af0bed90b6b0a352d4fp+56),
+ L(-0x2.e78250162b62405ad3e4bfe61b38p+64),
+ L(0xa.5f7eef9e71ac7c80326ab4cc8bfp+68),
+ L(-0x2.83be0395e550213369924971b21ap+76),
+ L(0xa.8ebfe48da17dd999790760b0cep+80),
+ };
+
+#define NCOEFF (sizeof (lgamma_coeff) / sizeof (lgamma_coeff[0]))
+
+/* Polynomial approximations to (|gamma(x)|-1)(x-n)/(x-x0), where n is
+ the integer end-point of the half-integer interval containing x and
+ x0 is the zero of lgamma in that half-integer interval. Each
+ polynomial is expressed in terms of x-xm, where xm is the midpoint
+ of the interval for which the polynomial applies. */
+
+static const _Float128 poly_coeff[] =
+ {
+ /* Interval [-2.125, -2] (polynomial degree 23). */
+ L(-0x1.0b71c5c54d42eb6c17f30b7aa8f5p+0),
+ L(-0xc.73a1dc05f34951602554c6d7506p-4),
+ L(-0x1.ec841408528b51473e6c425ee5ffp-4),
+ L(-0xe.37c9da26fc3c9a3c1844c8c7f1cp-4),
+ L(-0x1.03cd87c519305703b021fa33f827p-4),
+ L(-0xe.ae9ada65e09aa7f1c75216128f58p-4),
+ L(0x9.b11855a4864b5731cf85736015a8p-8),
+ L(-0xe.f28c133e697a95c28607c9701dep-4),
+ L(0x2.6ec14a1c586a72a7cc33ee569d6ap-4),
+ L(-0xf.57cab973e14464a262fc24723c38p-4),
+ L(0x4.5b0fc25f16e52997b2886bbae808p-4),
+ L(-0xf.f50e59f1a9b56e76e988dac9ccf8p-4),
+ L(0x6.5f5eae15e9a93369e1d85146c6fcp-4),
+ L(-0x1.0d2422daac459e33e0994325ed23p+0),
+ L(0x8.82000a0e7401fb1117a0e6606928p-4),
+ L(-0x1.1f492f178a3f1b19f58a2ca68e55p+0),
+ L(0xa.cb545f949899a04c160b19389abp-4),
+ L(-0x1.36165a1b155ba3db3d1b77caf498p+0),
+ L(0xd.44c5d5576f74302e5cf79e183eep-4),
+ L(-0x1.51f22e0cdd33d3d481e326c02f3ep+0),
+ L(0xf.f73a349c08244ac389c007779bfp-4),
+ L(-0x1.73317bf626156ba716747c4ca866p+0),
+ L(0x1.379c3c97b9bc71e1c1c4802dd657p+0),
+ L(-0x1.a72a351c54f902d483052000f5dfp+0),
+ /* Interval [-2.25, -2.125] (polynomial degree 24). */
+ L(-0xf.2930890d7d675a80c36afb0fd5e8p-4),
+ L(-0xc.a5cfde054eab5c6770daeca577f8p-4),
+ L(0x3.9c9e0fdebb07cdf89c61d41c9238p-4),
+ L(-0x1.02a5ad35605fcf4af65a6dbacb84p+0),
+ L(0x9.6e9b1185bb48be9de1918e00a2e8p-4),
+ L(-0x1.4d8332f3cfbfa116fd611e9ce90dp+0),
+ L(0x1.1c0c8cb4d9f4b1d490e1a41fae4dp+0),
+ L(-0x1.c9a6f5ae9130cd0299e293a42714p+0),
+ L(0x1.d7e9307fd58a2ea997f29573a112p+0),
+ L(-0x2.921cb3473d96178ca2a11d2a8d46p+0),
+ L(0x2.e8d59113b6f3409ff8db226e9988p+0),
+ L(-0x3.cbab931625a1ae2b26756817f264p+0),
+ L(0x4.7d9f0f05d5296d18663ca003912p+0),
+ L(-0x5.ade9cba12a14ea485667b7135bbp+0),
+ L(0x6.dc983a5da74fb48e767b7fec0a3p+0),
+ L(-0x8.8d9ed454ae31d9e138dd8ee0d1a8p+0),
+ L(0xa.6fa099d4e7c202e0c0fd6ed8492p+0),
+ L(-0xc.ebc552a8090a0f0115e92d4ebbc8p+0),
+ L(0xf.d695e4772c0d829b53fba9ca5568p+0),
+ L(-0x1.38c32ae38e5e9eb79b2a4c5570a9p+4),
+ L(0x1.8035145646cfab49306d0999a51bp+4),
+ L(-0x1.d930adbb03dd342a4c2a8c4e1af6p+4),
+ L(0x2.45c2edb1b4943ddb3686cd9c6524p+4),
+ L(-0x2.e818ebbfafe2f916fa21abf7756p+4),
+ L(0x3.9804ce51d0fb9a430a711fd7307p+4),
+ /* Interval [-2.375, -2.25] (polynomial degree 25). */
+ L(-0xd.7d28d505d6181218a25f31d5e45p-4),
+ L(-0xe.69649a3040985140cdf946829fap-4),
+ L(0xb.0d74a2827d053a8d44595012484p-4),
+ L(-0x1.924b0922853617cac181afbc08ddp+0),
+ L(0x1.d49b12bccf0a568582e2d3c410f3p+0),
+ L(-0x3.0898bb7d8c4093e636279c791244p+0),
+ L(0x4.207a6cac711cb53868e8a5057eep+0),
+ L(-0x6.39ee63ea4fb1dcab0c9144bf3ddcp+0),
+ L(0x8.e2e2556a797b649bf3f53bd26718p+0),
+ L(-0xd.0e83ac82552ef12af508589e7a8p+0),
+ L(0x1.2e4525e0ce6670563c6484a82b05p+4),
+ L(-0x1.b8e350d6a8f2b222fa390a57c23dp+4),
+ L(0x2.805cd69b919087d8a80295892c2cp+4),
+ L(-0x3.a42585424a1b7e64c71743ab014p+4),
+ L(0x5.4b4f409f98de49f7bfb03c05f984p+4),
+ L(-0x7.b3c5827fbe934bc820d6832fb9fcp+4),
+ L(0xb.33b7b90cc96c425526e0d0866e7p+4),
+ L(-0x1.04b77047ac4f59ee3775ca10df0dp+8),
+ L(0x1.7b366f5e94a34f41386eac086313p+8),
+ L(-0x2.2797338429385c9849ca6355bfc2p+8),
+ L(0x3.225273cf92a27c9aac1b35511256p+8),
+ L(-0x4.8f078aa48afe6cb3a4e89690f898p+8),
+ L(0x6.9f311d7b6654fc1d0b5195141d04p+8),
+ L(-0x9.a0c297b6b4621619ca9bacc48ed8p+8),
+ L(0xe.ce1f06b6f90d92138232a76e4cap+8),
+ L(-0x1.5b0e6806fa064daf011613e43b17p+12),
+ /* Interval [-2.5, -2.375] (polynomial degree 27). */
+ L(-0xb.74ea1bcfff94b2c01afba9daa7d8p-4),
+ L(-0x1.2a82bd590c37538cab143308de4dp+0),
+ L(0x1.88020f828b966fec66b8649fd6fcp+0),
+ L(-0x3.32279f040eb694970e9db24863dcp+0),
+ L(0x5.57ac82517767e68a721005853864p+0),
+ L(-0x9.c2aedcfe22833de43834a0a6cc4p+0),
+ L(0x1.12c132f1f5577f99e1a0ed3538e1p+4),
+ L(-0x1.ea94e26628a3de3597f7bb55a948p+4),
+ L(0x3.66b4ac4fa582f58b59f96b2f7c7p+4),
+ L(-0x6.0cf746a9cf4cba8c39afcc73fc84p+4),
+ L(0xa.c102ef2c20d75a342197df7fedf8p+4),
+ L(-0x1.31ebff06e8f14626782df58db3b6p+8),
+ L(0x2.1fd6f0c0e710994e059b9dbdb1fep+8),
+ L(-0x3.c6d76040407f447f8b5074f07706p+8),
+ L(0x6.b6d18e0d8feb4c2ef5af6a40ed18p+8),
+ L(-0xb.efaf542c529f91e34217f24ae6a8p+8),
+ L(0x1.53852d873210e7070f5d9eb2296p+12),
+ L(-0x2.5b977c0ddc6d540717173ac29fc8p+12),
+ L(0x4.310d452ae05100eff1e02343a724p+12),
+ L(-0x7.73a5d8f20c4f986a7dd1912b2968p+12),
+ L(0xd.3f5ea2484f3fca15eab1f4d1a218p+12),
+ L(-0x1.78d18aac156d1d93a2ffe7e08d3fp+16),
+ L(0x2.9df49ca75e5b567f5ea3e47106cp+16),
+ L(-0x4.a7149af8961a08aa7c3233b5bb94p+16),
+ L(0x8.3db10ffa742c707c25197d989798p+16),
+ L(-0xe.a26d6dd023cadd02041a049ec368p+16),
+ L(0x1.c825d90514e7c57c7fa5316f947cp+20),
+ L(-0x3.34bb81e5a0952df8ca1abdc6684cp+20),
+ /* Interval [-2.625, -2.5] (polynomial degree 28). */
+ L(-0x3.d10108c27ebafad533c20eac32bp-4),
+ L(0x1.cd557caff7d2b2085f41dbec5106p+0),
+ L(0x3.819b4856d399520dad9776ea2cacp+0),
+ L(0x6.8505cbad03dc34c5e42e8b12eb78p+0),
+ L(0xb.c1b2e653a9e38f82b399c94e7f08p+0),
+ L(0x1.50a53a38f148138105124df65419p+4),
+ L(0x2.57ae00cbe5232cbeeed34d89727ap+4),
+ L(0x4.2b156301b8604db85a601544bfp+4),
+ L(0x7.6989ed23ca3ca7579b3462592b5cp+4),
+ L(0xd.2dd2976557939517f831f5552cc8p+4),
+ L(0x1.76e1c3430eb860969bce40cd494p+8),
+ L(0x2.9a77bf5488742466db3a2c7c1ec6p+8),
+ L(0x4.a0d62ed7266e8eb36f725a8ebcep+8),
+ L(0x8.3a6184dd3021067df2f8b91e99c8p+8),
+ L(0xe.a0ade1538245bf55d39d7e436b1p+8),
+ L(0x1.a01359fae8617b5826dd74428e9p+12),
+ L(0x2.e3b0a32caae77251169acaca1ad4p+12),
+ L(0x5.2301257c81589f62b38fb5993ee8p+12),
+ L(0x9.21c9275db253d4e719b73b18cb9p+12),
+ L(0x1.03c104bc96141cda3f3fa4b112bcp+16),
+ L(0x1.cdc8ed65119196a08b0c78f1445p+16),
+ L(0x3.34f31d2eaacf34382cdb0073572ap+16),
+ L(0x5.b37628cadf12bf0000907d0ef294p+16),
+ L(0xa.22d8b332c0b1e6a616f425dfe5ap+16),
+ L(0x1.205b01444804c3ff922cd78b4c42p+20),
+ L(0x1.fe8f0cea9d1e0ff25be2470b4318p+20),
+ L(0x3.8872aebeb368399aee02b39340aep+20),
+ L(0x6.ebd560d351e84e26a4381f5b293cp+20),
+ L(0xc.c3644d094b0dae2fbcbf682cd428p+20),
+ /* Interval [-2.75, -2.625] (polynomial degree 26). */
+ L(-0x6.b5d252a56e8a75458a27ed1c2dd4p-4),
+ L(0x1.28d60383da3ac721aed3c5794da9p+0),
+ L(0x1.db6513ada8a66ea77d87d9a8827bp+0),
+ L(0x2.e217118f9d348a27f7506a707e6ep+0),
+ L(0x4.450112c5cbf725a0fb9802396c9p+0),
+ L(0x6.4af99151eae7810a75df2a0303c4p+0),
+ L(0x9.2db598b4a97a7f69aeef32aec758p+0),
+ L(0xd.62bef9c22471f5ee47ea1b9c0b5p+0),
+ L(0x1.379f294e412bd62328326d4222f9p+4),
+ L(0x1.c5827349d8865f1e8825c37c31c6p+4),
+ L(0x2.93a7e7a75b7568cc8cbe8c016c12p+4),
+ L(0x3.bf9bb882afe57edb383d41879d3ap+4),
+ L(0x5.73c737828cee095c43a5566731c8p+4),
+ L(0x7.ee4653493a7f81e0442062b3823cp+4),
+ L(0xb.891c6b83fc8b55bd973b5d962d6p+4),
+ L(0x1.0c775d7de3bf9b246c0208e0207ep+8),
+ L(0x1.867ee43ec4bd4f4fd56abc05110ap+8),
+ L(0x2.37fe9ba6695821e9822d8c8af0a6p+8),
+ L(0x3.3a2c667e37c942f182cd3223a936p+8),
+ L(0x4.b1b500eb59f3f782c7ccec88754p+8),
+ L(0x6.d3efd3b65b3d0d8488d30b79fa4cp+8),
+ L(0x9.ee8224e65bed5ced8b75eaec609p+8),
+ L(0xe.72416e510cca77d53fc615c1f3dp+8),
+ L(0x1.4fb538b0a2dfe567a8904b7e0445p+12),
+ L(0x1.e7f56a9266cf525a5b8cf4cb76cep+12),
+ L(0x2.f0365c983f68c597ee49d099cce8p+12),
+ L(0x4.53aa229e1b9f5b5e59625265951p+12),
+ /* Interval [-2.875, -2.75] (polynomial degree 24). */
+ L(-0x8.a41b1e4f36ff88dc820815607d68p-4),
+ L(0xc.da87d3b69dc0f2f9c6f368b8ca1p-4),
+ L(0x1.1474ad5c36158a7bea04fd2f98c6p+0),
+ L(0x1.761ecb90c555df6555b7dba955b6p+0),
+ L(0x1.d279bff9ae291caf6c4b4bcb3202p+0),
+ L(0x2.4e5d00559a6e2b9b5d7fe1f6689cp+0),
+ L(0x2.d57545a75cee8743ae2b17bc8d24p+0),
+ L(0x3.8514eee3aac88b89bec2307021bap+0),
+ L(0x4.5235e3b6e1891ffeb87fed9f8a24p+0),
+ L(0x5.562acdb10eef3c9a773b3e27a864p+0),
+ L(0x6.8ec8965c76efe03c26bff60b1194p+0),
+ L(0x8.15251aca144877af32658399f9b8p+0),
+ L(0x9.f08d56aba174d844138af782c0f8p+0),
+ L(0xc.3dbbeda2679e8a1346ccc3f6da88p+0),
+ L(0xf.0f5bfd5eacc26db308ffa0556fa8p+0),
+ L(0x1.28a6ccd84476fbc713d6bab49ac9p+4),
+ L(0x1.6d0a3ae2a3b1c8ff400641a3a21fp+4),
+ L(0x1.c15701b28637f87acfb6a91d33b5p+4),
+ L(0x2.28fbe0eccf472089b017651ca55ep+4),
+ L(0x2.a8a453004f6e8ffaacd1603bc3dp+4),
+ L(0x3.45ae4d9e1e7cd1a5dba0e4ec7f6cp+4),
+ L(0x4.065fbfacb7fad3e473cb577a61e8p+4),
+ L(0x4.f3d1473020927acac1944734a39p+4),
+ L(0x6.54bb091245815a36fb74e314dd18p+4),
+ L(0x7.d7f445129f7fb6c055e582d3f6ep+4),
+ /* Interval [-3, -2.875] (polynomial degree 23). */
+ L(-0xa.046d667e468f3e44dcae1afcc648p-4),
+ L(0x9.70b88dcc006c214d8d996fdf5ccp-4),
+ L(0xa.a8a39421c86d3ff24931a0929fp-4),
+ L(0xd.2f4d1363f324da2b357c8b6ec94p-4),
+ L(0xd.ca9aa1a3a5c00de11bf60499a97p-4),
+ L(0xf.cf09c31eeb52a45dfa7ebe3778dp-4),
+ L(0x1.04b133a39ed8a09691205660468bp+0),
+ L(0x1.22b547a06edda944fcb12fd9b5ecp+0),
+ L(0x1.2c57fce7db86a91df09602d344b3p+0),
+ L(0x1.4aade4894708f84795212fe257eep+0),
+ L(0x1.579c8b7b67ec4afed5b28c8bf787p+0),
+ L(0x1.776820e7fc80ae5284239733078ap+0),
+ L(0x1.883ab28c7301fde4ca6b8ec26ec8p+0),
+ L(0x1.aa2ef6e1ae52eb42c9ee83b206e3p+0),
+ L(0x1.bf4ad50f0a9a9311300cf0c51ee7p+0),
+ L(0x1.e40206e0e96b1da463814dde0d09p+0),
+ L(0x1.fdcbcffef3a21b29719c2bd9feb1p+0),
+ L(0x2.25e2e8948939c4d42cf108fae4bep+0),
+ L(0x2.44ce14d2b59c1c0e6bf2cfa81018p+0),
+ L(0x2.70ee80bbd0387162be4861c43622p+0),
+ L(0x2.954b64d2c2ebf3489b949c74476p+0),
+ L(0x2.c616e133a811c1c9446105208656p+0),
+ L(0x3.05a69dfe1a9ba1079f90fcf26bd4p+0),
+ L(0x3.410d2ad16a0506de29736e6aafdap+0),
+ };
+
+static const size_t poly_deg[] =
+ {
+ 23,
+ 24,
+ 25,
+ 27,
+ 28,
+ 26,
+ 24,
+ 23,
+ };
+
+static const size_t poly_end[] =
+ {
+ 23,
+ 48,
+ 74,
+ 102,
+ 131,
+ 158,
+ 183,
+ 207,
+ };
+
+/* Compute sin (pi * X) for -0.25 <= X <= 0.5. */
+
+static _Float128
+lg_sinpi (_Float128 x)
+{
+ if (x <= L(0.25))
+ return __sinl (M_PIl * x);
+ else
+ return __cosl (M_PIl * (L(0.5) - x));
+}
+
+/* Compute cos (pi * X) for -0.25 <= X <= 0.5. */
+
+static _Float128
+lg_cospi (_Float128 x)
+{
+ if (x <= L(0.25))
+ return __cosl (M_PIl * x);
+ else
+ return __sinl (M_PIl * (L(0.5) - x));
+}
+
+/* Compute cot (pi * X) for -0.25 <= X <= 0.5. */
+
+static _Float128
+lg_cotpi (_Float128 x)
+{
+ return lg_cospi (x) / lg_sinpi (x);
+}
+
+/* Compute lgamma of a negative argument -50 < X < -2, setting
+ *SIGNGAMP accordingly. */
+
+_Float128
+__lgamma_negl (_Float128 x, int *signgamp)
+{
+ /* Determine the half-integer region X lies in, handle exact
+ integers and determine the sign of the result. */
+ int i = __floorl (-2 * x);
+ if ((i & 1) == 0 && i == -2 * x)
+ return L(1.0) / L(0.0);
+ _Float128 xn = ((i & 1) == 0 ? -i / 2 : (-i - 1) / 2);
+ i -= 4;
+ *signgamp = ((i & 2) == 0 ? -1 : 1);
+
+ SET_RESTORE_ROUNDL (FE_TONEAREST);
+
+ /* Expand around the zero X0 = X0_HI + X0_LO. */
+ _Float128 x0_hi = lgamma_zeros[i][0], x0_lo = lgamma_zeros[i][1];
+ _Float128 xdiff = x - x0_hi - x0_lo;
+
+ /* For arguments in the range -3 to -2, use polynomial
+ approximations to an adjusted version of the gamma function. */
+ if (i < 2)
+ {
+ int j = __floorl (-8 * x) - 16;
+ _Float128 xm = (-33 - 2 * j) * L(0.0625);
+ _Float128 x_adj = x - xm;
+ size_t deg = poly_deg[j];
+ size_t end = poly_end[j];
+ _Float128 g = poly_coeff[end];
+ for (size_t j = 1; j <= deg; j++)
+ g = g * x_adj + poly_coeff[end - j];
+ return __log1pl (g * xdiff / (x - xn));
+ }
+
+ /* The result we want is log (sinpi (X0) / sinpi (X))
+ + log (gamma (1 - X0) / gamma (1 - X)). */
+ _Float128 x_idiff = fabsl (xn - x), x0_idiff = fabsl (xn - x0_hi - x0_lo);
+ _Float128 log_sinpi_ratio;
+ if (x0_idiff < x_idiff * L(0.5))
+ /* Use log not log1p to avoid inaccuracy from log1p of arguments
+ close to -1. */
+ log_sinpi_ratio = __ieee754_logl (lg_sinpi (x0_idiff)
+ / lg_sinpi (x_idiff));
+ else
+ {
+ /* Use log1p not log to avoid inaccuracy from log of arguments
+ close to 1. X0DIFF2 has positive sign if X0 is further from
+ XN than X is from XN, negative sign otherwise. */
+ _Float128 x0diff2 = ((i & 1) == 0 ? xdiff : -xdiff) * L(0.5);
+ _Float128 sx0d2 = lg_sinpi (x0diff2);
+ _Float128 cx0d2 = lg_cospi (x0diff2);
+ log_sinpi_ratio = __log1pl (2 * sx0d2
+ * (-sx0d2 + cx0d2 * lg_cotpi (x_idiff)));
+ }
+
+ _Float128 log_gamma_ratio;
+ _Float128 y0 = 1 - x0_hi;
+ _Float128 y0_eps = -x0_hi + (1 - y0) - x0_lo;
+ _Float128 y = 1 - x;
+ _Float128 y_eps = -x + (1 - y);
+ /* We now wish to compute LOG_GAMMA_RATIO
+ = log (gamma (Y0 + Y0_EPS) / gamma (Y + Y_EPS)). XDIFF
+ accurately approximates the difference Y0 + Y0_EPS - Y -
+ Y_EPS. Use Stirling's approximation. First, we may need to
+ adjust into the range where Stirling's approximation is
+ sufficiently accurate. */
+ _Float128 log_gamma_adj = 0;
+ if (i < 20)
+ {
+ int n_up = (21 - i) / 2;
+ _Float128 ny0, ny0_eps, ny, ny_eps;
+ ny0 = y0 + n_up;
+ ny0_eps = y0 - (ny0 - n_up) + y0_eps;
+ y0 = ny0;
+ y0_eps = ny0_eps;
+ ny = y + n_up;
+ ny_eps = y - (ny - n_up) + y_eps;
+ y = ny;
+ y_eps = ny_eps;
+ _Float128 prodm1 = __lgamma_productl (xdiff, y - n_up, y_eps, n_up);
+ log_gamma_adj = -__log1pl (prodm1);
+ }
+ _Float128 log_gamma_high
+ = (xdiff * __log1pl ((y0 - e_hi - e_lo + y0_eps) / e_hi)
+ + (y - L(0.5) + y_eps) * __log1pl (xdiff / y) + log_gamma_adj);
+ /* Compute the sum of (B_2k / 2k(2k-1))(Y0^-(2k-1) - Y^-(2k-1)). */
+ _Float128 y0r = 1 / y0, yr = 1 / y;
+ _Float128 y0r2 = y0r * y0r, yr2 = yr * yr;
+ _Float128 rdiff = -xdiff / (y * y0);
+ _Float128 bterm[NCOEFF];
+ _Float128 dlast = rdiff, elast = rdiff * yr * (yr + y0r);
+ bterm[0] = dlast * lgamma_coeff[0];
+ for (size_t j = 1; j < NCOEFF; j++)
+ {
+ _Float128 dnext = dlast * y0r2 + elast;
+ _Float128 enext = elast * yr2;
+ bterm[j] = dnext * lgamma_coeff[j];
+ dlast = dnext;
+ elast = enext;
+ }
+ _Float128 log_gamma_low = 0;
+ for (size_t j = 0; j < NCOEFF; j++)
+ log_gamma_low += bterm[NCOEFF - 1 - j];
+ log_gamma_ratio = log_gamma_high + log_gamma_low;
+
+ return log_sinpi_ratio + log_gamma_ratio;
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128/lgamma_productl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128/lgamma_productl.c
new file mode 100644
index 0000000000..212c26a960
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128/lgamma_productl.c
@@ -0,0 +1,52 @@
+/* Compute a product of 1 + (T/X), 1 + (T/(X+1)), ....
+ Copyright (C) 2015-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+#include <math_private.h>
+#include <mul_splitl.h>
+
+/* Compute the product of 1 + (T / (X + X_EPS)), 1 + (T / (X + X_EPS +
+ 1)), ..., 1 + (T / (X + X_EPS + N - 1)), minus 1. X is such that
+ all the values X + 1, ..., X + N - 1 are exactly representable, and
+ X_EPS / X is small enough that factors quadratic in it can be
+ neglected. */
+
+_Float128
+__lgamma_productl (_Float128 t, _Float128 x, _Float128 x_eps, int n)
+{
+ _Float128 ret = 0, ret_eps = 0;
+ for (int i = 0; i < n; i++)
+ {
+ _Float128 xi = x + i;
+ _Float128 quot = t / xi;
+ _Float128 mhi, mlo;
+ mul_splitl (&mhi, &mlo, quot, xi);
+ _Float128 quot_lo = (t - mhi - mlo) / xi - t * x_eps / (xi * xi);
+ /* We want (1 + RET + RET_EPS) * (1 + QUOT + QUOT_LO) - 1. */
+ _Float128 rhi, rlo;
+ mul_splitl (&rhi, &rlo, ret, quot);
+ _Float128 rpq = ret + quot;
+ _Float128 rpq_eps = (ret - rpq) + quot;
+ _Float128 nret = rpq + rhi;
+ _Float128 nret_eps = (rpq - nret) + rhi;
+ ret_eps += (rpq_eps + nret_eps + rlo + ret_eps * quot
+ + quot_lo + quot_lo * (ret + ret_eps));
+ ret = nret;
+ }
+ return ret + ret_eps;
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128/math_ldbl.h b/REORG.TODO/sysdeps/ieee754/ldbl-128/math_ldbl.h
new file mode 100644
index 0000000000..bb5cce2a36
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128/math_ldbl.h
@@ -0,0 +1,120 @@
+/* Manipulation of the bit representation of 'long double' quantities.
+ Copyright (C) 1999-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#ifndef _MATH_LDBL_H_
+#define _MATH_LDBL_H_ 1
+
+#include <stdint.h>
+#include <endian.h>
+
+/* A union which permits us to convert between a long double and
+ four 32 bit ints or two 64 bit ints. */
+
+#if __FLOAT_WORD_ORDER == __BIG_ENDIAN
+
+typedef union
+{
+ long double value;
+ struct
+ {
+ uint64_t msw;
+ uint64_t lsw;
+ } parts64;
+ struct
+ {
+ uint32_t w0, w1, w2, w3;
+ } parts32;
+} ieee854_long_double_shape_type;
+
+#endif
+
+#if __FLOAT_WORD_ORDER == __LITTLE_ENDIAN
+
+typedef union
+{
+ long double value;
+ struct
+ {
+ uint64_t lsw;
+ uint64_t msw;
+ } parts64;
+ struct
+ {
+ uint32_t w3, w2, w1, w0;
+ } parts32;
+} ieee854_long_double_shape_type;
+
+#endif
+
+/* Get two 64 bit ints from a long double. */
+
+#define GET_LDOUBLE_WORDS64(ix0,ix1,d) \
+do { \
+ ieee854_long_double_shape_type qw_u; \
+ qw_u.value = (d); \
+ (ix0) = qw_u.parts64.msw; \
+ (ix1) = qw_u.parts64.lsw; \
+} while (0)
+
+/* Set a long double from two 64 bit ints. */
+
+#define SET_LDOUBLE_WORDS64(d,ix0,ix1) \
+do { \
+ ieee854_long_double_shape_type qw_u; \
+ qw_u.parts64.msw = (ix0); \
+ qw_u.parts64.lsw = (ix1); \
+ (d) = qw_u.value; \
+} while (0)
+
+/* Get the more significant 64 bits of a long double mantissa. */
+
+#define GET_LDOUBLE_MSW64(v,d) \
+do { \
+ ieee854_long_double_shape_type sh_u; \
+ sh_u.value = (d); \
+ (v) = sh_u.parts64.msw; \
+} while (0)
+
+/* Set the more significant 64 bits of a long double mantissa from an int. */
+
+#define SET_LDOUBLE_MSW64(d,v) \
+do { \
+ ieee854_long_double_shape_type sh_u; \
+ sh_u.value = (d); \
+ sh_u.parts64.msw = (v); \
+ (d) = sh_u.value; \
+} while (0)
+
+/* Get the least significant 64 bits of a long double mantissa. */
+
+#define GET_LDOUBLE_LSW64(v,d) \
+do { \
+ ieee854_long_double_shape_type sh_u; \
+ sh_u.value = (d); \
+ (v) = sh_u.parts64.lsw; \
+} while (0)
+
+/*
+ On a platform already supporting a binary128 long double,
+ _Float128 will alias to long double. This transformation
+ makes aliasing *l functions to *f128 trivial.
+*/
+#define _Float128 long double
+#define L(x) x##L
+
+#endif /* math_ldbl.h */
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128/mpn2ldbl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128/mpn2ldbl.c
new file mode 100644
index 0000000000..625186fdc2
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128/mpn2ldbl.c
@@ -0,0 +1,52 @@
+/* Copyright (C) 1995-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include "gmp.h"
+#include "gmp-impl.h"
+#include <ieee754.h>
+#include <float.h>
+#include <math.h>
+
+/* Convert a multi-precision integer of the needed number of bits (113 for
+ long double) and an integral power of two to a `long double' in IEEE854
+ quad-precision format. */
+
+long double
+__mpn_construct_long_double (mp_srcptr frac_ptr, int expt, int sign)
+{
+ union ieee854_long_double u;
+
+ u.ieee.negative = sign;
+ u.ieee.exponent = expt + IEEE854_LONG_DOUBLE_BIAS;
+#if BITS_PER_MP_LIMB == 32
+ u.ieee.mantissa3 = frac_ptr[0];
+ u.ieee.mantissa2 = frac_ptr[1];
+ u.ieee.mantissa1 = frac_ptr[2];
+ u.ieee.mantissa0 = frac_ptr[3] & (((mp_limb_t) 1
+ << (LDBL_MANT_DIG - 96)) - 1);
+#elif BITS_PER_MP_LIMB == 64
+ u.ieee.mantissa3 = frac_ptr[0] & (((mp_limb_t) 1 << 32) - 1);
+ u.ieee.mantissa2 = frac_ptr[0] >> 32;
+ u.ieee.mantissa1 = frac_ptr[1] & (((mp_limb_t) 1 << 32) - 1);
+ u.ieee.mantissa0 = (frac_ptr[1] >> 32) & (((mp_limb_t) 1
+ << (LDBL_MANT_DIG - 96)) - 1);
+#else
+ #error "mp_limb size " BITS_PER_MP_LIMB "not accounted for"
+#endif
+
+ return u.d;
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128/printf_fphex.c b/REORG.TODO/sysdeps/ieee754/ldbl-128/printf_fphex.c
new file mode 100644
index 0000000000..294464ecff
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128/printf_fphex.c
@@ -0,0 +1,25 @@
+/* Print floating point number in hexadecimal notation according to
+ ISO C99.
+ Copyright (C) 1997-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <ldbl-128/printf_fphex_macros.h>
+#define PRINT_FPHEX_LONG_DOUBLE \
+ PRINT_FPHEX (long double, fpnum.ldbl, ieee854_long_double, \
+ IEEE854_LONG_DOUBLE_BIAS)
+
+#include <stdio-common/printf_fphex.c>
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128/printf_fphex_macros.h b/REORG.TODO/sysdeps/ieee754/ldbl-128/printf_fphex_macros.h
new file mode 100644
index 0000000000..86681c4c1e
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128/printf_fphex_macros.h
@@ -0,0 +1,104 @@
+/* Macro to print floating point numbers in hexadecimal notation.
+ Copyright (C) 2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#define PRINT_FPHEX(FLOAT, VAR, IEEE854_UNION, IEEE854_BIAS) \
+do { \
+ /* We have 112 bits of mantissa plus one implicit digit. Since \
+ 112 bits are representable without rest using hexadecimal \
+ digits we use only the implicit digits for the number before \
+ the decimal point. */ \
+ unsigned long long int num0, num1; \
+ union IEEE854_UNION u; \
+ u.d = VAR; \
+ \
+ assert (sizeof (FLOAT) == 16); \
+ \
+ num0 = (((unsigned long long int) u.ieee.mantissa0) << 32 \
+ | u.ieee.mantissa1); \
+ num1 = (((unsigned long long int) u.ieee.mantissa2) << 32 \
+ | u.ieee.mantissa3); \
+ \
+ zero_mantissa = (num0|num1) == 0; \
+ \
+ if (sizeof (unsigned long int) > 6) \
+ { \
+ numstr = _itoa_word (num1, numbuf + sizeof numbuf, 16, \
+ info->spec == 'A'); \
+ wnumstr = _itowa_word (num1, \
+ wnumbuf + sizeof (wnumbuf) / sizeof (wchar_t),\
+ 16, info->spec == 'A'); \
+ } \
+ else \
+ { \
+ numstr = _itoa (num1, numbuf + sizeof numbuf, 16, \
+ info->spec == 'A'); \
+ wnumstr = _itowa (num1, \
+ wnumbuf + sizeof (wnumbuf) / sizeof (wchar_t), \
+ 16, info->spec == 'A'); \
+ } \
+ \
+ while (numstr > numbuf + (sizeof numbuf - 64 / 4)) \
+ { \
+ *--numstr = '0'; \
+ *--wnumstr = L'0'; \
+ } \
+ \
+ if (sizeof (unsigned long int) > 6) \
+ { \
+ numstr = _itoa_word (num0, numstr, 16, info->spec == 'A'); \
+ wnumstr = _itowa_word (num0, wnumstr, 16, info->spec == 'A'); \
+ } \
+ else \
+ { \
+ numstr = _itoa (num0, numstr, 16, info->spec == 'A'); \
+ wnumstr = _itowa (num0, wnumstr, 16, info->spec == 'A'); \
+ } \
+ \
+ /* Fill with zeroes. */ \
+ while (numstr > numbuf + (sizeof numbuf - 112 / 4)) \
+ { \
+ *--numstr = '0'; \
+ *--wnumstr = L'0'; \
+ } \
+ \
+ leading = u.ieee.exponent == 0 ? '0' : '1'; \
+ \
+ exponent = u.ieee.exponent; \
+ \
+ if (exponent == 0) \
+ { \
+ if (zero_mantissa) \
+ expnegative = 0; \
+ else \
+ { \
+ /* This is a denormalized number. */ \
+ expnegative = 1; \
+ exponent = IEEE854_BIAS - 1; \
+ } \
+ } \
+ else if (exponent >= IEEE854_BIAS) \
+ { \
+ expnegative = 0; \
+ exponent -= IEEE854_BIAS; \
+ } \
+ else \
+ { \
+ expnegative = 1; \
+ exponent = -(exponent - IEEE854_BIAS); \
+ } \
+} while (0)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128/s_asinhl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128/s_asinhl.c
new file mode 100644
index 0000000000..83efb34447
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128/s_asinhl.c
@@ -0,0 +1,79 @@
+/* s_asinhl.c -- long double version of s_asinh.c.
+ * Conversion to long double by Ulrich Drepper,
+ * Cygnus Support, drepper@cygnus.com.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: $";
+#endif
+
+/* asinhl(x)
+ * Method :
+ * Based on
+ * asinhl(x) = signl(x) * logl [ |x| + sqrtl(x*x+1) ]
+ * we have
+ * asinhl(x) := x if 1+x*x=1,
+ * := signl(x)*(logl(x)+ln2)) for large |x|, else
+ * := signl(x)*logl(2|x|+1/(|x|+sqrtl(x*x+1))) if|x|>2, else
+ * := signl(x)*log1pl(|x| + x^2/(1 + sqrtl(1+x^2)))
+ */
+
+#include <float.h>
+#include <math.h>
+#include <math_private.h>
+
+static const _Float128
+ one = 1,
+ ln2 = L(6.931471805599453094172321214581765681e-1),
+ huge = L(1.0e+4900);
+
+_Float128
+__asinhl (_Float128 x)
+{
+ _Float128 t, w;
+ int32_t ix, sign;
+ ieee854_long_double_shape_type u;
+
+ u.value = x;
+ sign = u.parts32.w0;
+ ix = sign & 0x7fffffff;
+ if (ix == 0x7fff0000)
+ return x + x; /* x is inf or NaN */
+ if (ix < 0x3fc70000)
+ { /* |x| < 2^ -56 */
+ math_check_force_underflow (x);
+ if (huge + x > one)
+ return x; /* return x inexact except 0 */
+ }
+ u.parts32.w0 = ix;
+ if (ix > 0x40350000)
+ { /* |x| > 2 ^ 54 */
+ w = __ieee754_logl (u.value) + ln2;
+ }
+ else if (ix >0x40000000)
+ { /* 2^ 54 > |x| > 2.0 */
+ t = u.value;
+ w = __ieee754_logl (2.0 * t + one / (__ieee754_sqrtl (x * x + one) + t));
+ }
+ else
+ { /* 2.0 > |x| > 2 ^ -56 */
+ t = x * x;
+ w = __log1pl (u.value + t / (one + __ieee754_sqrtl (one + t)));
+ }
+ if (sign & 0x80000000)
+ return -w;
+ else
+ return w;
+}
+weak_alias (__asinhl, asinhl)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128/s_atanl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128/s_atanl.c
new file mode 100644
index 0000000000..6f2cd549ec
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128/s_atanl.c
@@ -0,0 +1,253 @@
+/* s_atanl.c
+ *
+ * Inverse circular tangent for 128-bit long double precision
+ * (arctangent)
+ *
+ *
+ *
+ * SYNOPSIS:
+ *
+ * long double x, y, atanl();
+ *
+ * y = atanl( x );
+ *
+ *
+ *
+ * DESCRIPTION:
+ *
+ * Returns radian angle between -pi/2 and +pi/2 whose tangent is x.
+ *
+ * The function uses a rational approximation of the form
+ * t + t^3 P(t^2)/Q(t^2), optimized for |t| < 0.09375.
+ *
+ * The argument is reduced using the identity
+ * arctan x - arctan u = arctan ((x-u)/(1 + ux))
+ * and an 83-entry lookup table for arctan u, with u = 0, 1/8, ..., 10.25.
+ * Use of the table improves the execution speed of the routine.
+ *
+ *
+ *
+ * ACCURACY:
+ *
+ * Relative error:
+ * arithmetic domain # trials peak rms
+ * IEEE -19, 19 4e5 1.7e-34 5.4e-35
+ *
+ *
+ * WARNING:
+ *
+ * This program uses integer operations on bit fields of floating-point
+ * numbers. It does not work with data structures other than the
+ * structure assumed.
+ *
+ */
+
+/* Copyright 2001 by Stephen L. Moshier <moshier@na-net.ornl.gov>
+
+ This 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 2.1 of the License, or (at your option) any later version.
+
+ This 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 this library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+
+#include <float.h>
+#include <math.h>
+#include <math_private.h>
+
+/* arctan(k/8), k = 0, ..., 82 */
+static const _Float128 atantbl[84] = {
+ L(0.0000000000000000000000000000000000000000E0),
+ L(1.2435499454676143503135484916387102557317E-1), /* arctan(0.125) */
+ L(2.4497866312686415417208248121127581091414E-1),
+ L(3.5877067027057222039592006392646049977698E-1),
+ L(4.6364760900080611621425623146121440202854E-1),
+ L(5.5859931534356243597150821640166127034645E-1),
+ L(6.4350110879328438680280922871732263804151E-1),
+ L(7.1882999962162450541701415152590465395142E-1),
+ L(7.8539816339744830961566084581987572104929E-1),
+ L(8.4415398611317100251784414827164750652594E-1),
+ L(8.9605538457134395617480071802993782702458E-1),
+ L(9.4200004037946366473793717053459358607166E-1),
+ L(9.8279372324732906798571061101466601449688E-1),
+ L(1.0191413442663497346383429170230636487744E0),
+ L(1.0516502125483736674598673120862998296302E0),
+ L(1.0808390005411683108871567292171998202703E0),
+ L(1.1071487177940905030170654601785370400700E0),
+ L(1.1309537439791604464709335155363278047493E0),
+ L(1.1525719972156675180401498626127513797495E0),
+ L(1.1722738811284763866005949441337046149712E0),
+ L(1.1902899496825317329277337748293183376012E0),
+ L(1.2068173702852525303955115800565576303133E0),
+ L(1.2220253232109896370417417439225704908830E0),
+ L(1.2360594894780819419094519711090786987027E0),
+ L(1.2490457723982544258299170772810901230778E0),
+ L(1.2610933822524404193139408812473357720101E0),
+ L(1.2722973952087173412961937498224804940684E0),
+ L(1.2827408797442707473628852511364955306249E0),
+ L(1.2924966677897852679030914214070816845853E0),
+ L(1.3016288340091961438047858503666855921414E0),
+ L(1.3101939350475556342564376891719053122733E0),
+ L(1.3182420510168370498593302023271362531155E0),
+ L(1.3258176636680324650592392104284756311844E0),
+ L(1.3329603993374458675538498697331558093700E0),
+ L(1.3397056595989995393283037525895557411039E0),
+ L(1.3460851583802539310489409282517796256512E0),
+ L(1.3521273809209546571891479413898128509842E0),
+ L(1.3578579772154994751124898859640585287459E0),
+ L(1.3633001003596939542892985278250991189943E0),
+ L(1.3684746984165928776366381936948529556191E0),
+ L(1.3734007669450158608612719264449611486510E0),
+ L(1.3780955681325110444536609641291551522494E0),
+ L(1.3825748214901258580599674177685685125566E0),
+ L(1.3868528702577214543289381097042486034883E0),
+ L(1.3909428270024183486427686943836432060856E0),
+ L(1.3948567013423687823948122092044222644895E0),
+ L(1.3986055122719575950126700816114282335732E0),
+ L(1.4021993871854670105330304794336492676944E0),
+ L(1.4056476493802697809521934019958079881002E0),
+ L(1.4089588955564736949699075250792569287156E0),
+ L(1.4121410646084952153676136718584891599630E0),
+ L(1.4152014988178669079462550975833894394929E0),
+ L(1.4181469983996314594038603039700989523716E0),
+ L(1.4209838702219992566633046424614466661176E0),
+ L(1.4237179714064941189018190466107297503086E0),
+ L(1.4263547484202526397918060597281265695725E0),
+ L(1.4288992721907326964184700745371983590908E0),
+ L(1.4313562697035588982240194668401779312122E0),
+ L(1.4337301524847089866404719096698873648610E0),
+ L(1.4360250423171655234964275337155008780675E0),
+ L(1.4382447944982225979614042479354815855386E0),
+ L(1.4403930189057632173997301031392126865694E0),
+ L(1.4424730991091018200252920599377292525125E0),
+ L(1.4444882097316563655148453598508037025938E0),
+ L(1.4464413322481351841999668424758804165254E0),
+ L(1.4483352693775551917970437843145232637695E0),
+ L(1.4501726582147939000905940595923466567576E0),
+ L(1.4519559822271314199339700039142990228105E0),
+ L(1.4536875822280323362423034480994649820285E0),
+ L(1.4553696664279718992423082296859928222270E0),
+ L(1.4570043196511885530074841089245667532358E0),
+ L(1.4585935117976422128825857356750737658039E0),
+ L(1.4601391056210009726721818194296893361233E0),
+ L(1.4616428638860188872060496086383008594310E0),
+ L(1.4631064559620759326975975316301202111560E0),
+ L(1.4645314639038178118428450961503371619177E0),
+ L(1.4659193880646627234129855241049975398470E0),
+ L(1.4672716522843522691530527207287398276197E0),
+ L(1.4685896086876430842559640450619880951144E0),
+ L(1.4698745421276027686510391411132998919794E0),
+ L(1.4711276743037345918528755717617308518553E0),
+ L(1.4723501675822635384916444186631899205983E0),
+ L(1.4735431285433308455179928682541563973416E0), /* arctan(10.25) */
+ L(1.5707963267948966192313216916397514420986E0) /* pi/2 */
+};
+
+
+/* arctan t = t + t^3 p(t^2) / q(t^2)
+ |t| <= 0.09375
+ peak relative error 5.3e-37 */
+
+static const _Float128
+ p0 = L(-4.283708356338736809269381409828726405572E1),
+ p1 = L(-8.636132499244548540964557273544599863825E1),
+ p2 = L(-5.713554848244551350855604111031839613216E1),
+ p3 = L(-1.371405711877433266573835355036413750118E1),
+ p4 = L(-8.638214309119210906997318946650189640184E-1),
+ q0 = L(1.285112506901621042780814422948906537959E2),
+ q1 = L(3.361907253914337187957855834229672347089E2),
+ q2 = L(3.180448303864130128268191635189365331680E2),
+ q3 = L(1.307244136980865800160844625025280344686E2),
+ q4 = L(2.173623741810414221251136181221172551416E1);
+ /* q5 = 1.000000000000000000000000000000000000000E0 */
+
+static const _Float128 huge = L(1.0e4930);
+
+_Float128
+__atanl (_Float128 x)
+{
+ int k, sign;
+ _Float128 t, u, p, q;
+ ieee854_long_double_shape_type s;
+
+ s.value = x;
+ k = s.parts32.w0;
+ if (k & 0x80000000)
+ sign = 1;
+ else
+ sign = 0;
+
+ /* Check for IEEE special cases. */
+ k &= 0x7fffffff;
+ if (k >= 0x7fff0000)
+ {
+ /* NaN. */
+ if ((k & 0xffff) | s.parts32.w1 | s.parts32.w2 | s.parts32.w3)
+ return (x + x);
+
+ /* Infinity. */
+ if (sign)
+ return -atantbl[83];
+ else
+ return atantbl[83];
+ }
+
+ if (k <= 0x3fc50000) /* |x| < 2**-58 */
+ {
+ math_check_force_underflow (x);
+ /* Raise inexact. */
+ if (huge + x > 0.0)
+ return x;
+ }
+
+ if (k >= 0x40720000) /* |x| > 2**115 */
+ {
+ /* Saturate result to {-,+}pi/2 */
+ if (sign)
+ return -atantbl[83];
+ else
+ return atantbl[83];
+ }
+
+ if (sign)
+ x = -x;
+
+ if (k >= 0x40024800) /* 10.25 */
+ {
+ k = 83;
+ t = -1.0/x;
+ }
+ else
+ {
+ /* Index of nearest table element.
+ Roundoff to integer is asymmetrical to avoid cancellation when t < 0
+ (cf. fdlibm). */
+ k = 8.0 * x + 0.25;
+ u = L(0.125) * k;
+ /* Small arctan argument. */
+ t = (x - u) / (1.0 + x * u);
+ }
+
+ /* Arctan of small argument t. */
+ u = t * t;
+ p = ((((p4 * u) + p3) * u + p2) * u + p1) * u + p0;
+ q = ((((u + q4) * u + q3) * u + q2) * u + q1) * u + q0;
+ u = t * u * p / q + t;
+
+ /* arctan x = arctan u + arctan t */
+ u = atantbl[k] + u;
+ if (sign)
+ return (-u);
+ else
+ return u;
+}
+
+weak_alias (__atanl, atanl)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128/s_cbrtl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128/s_cbrtl.c
new file mode 100644
index 0000000000..eb88d29fc9
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128/s_cbrtl.c
@@ -0,0 +1,135 @@
+/* cbrtl.c
+ *
+ * Cube root, long double precision
+ *
+ *
+ *
+ * SYNOPSIS:
+ *
+ * long double x, y, cbrtl();
+ *
+ * y = cbrtl( x );
+ *
+ *
+ *
+ * DESCRIPTION:
+ *
+ * Returns the cube root of the argument, which may be negative.
+ *
+ * Range reduction involves determining the power of 2 of
+ * the argument. A polynomial of degree 2 applied to the
+ * mantissa, and multiplication by the cube root of 1, 2, or 4
+ * approximates the root to within about 0.1%. Then Newton's
+ * iteration is used three times to converge to an accurate
+ * result.
+ *
+ *
+ *
+ * ACCURACY:
+ *
+ * Relative error:
+ * arithmetic domain # trials peak rms
+ * IEEE -8,8 100000 1.3e-34 3.9e-35
+ * IEEE exp(+-707) 100000 1.3e-34 4.3e-35
+ *
+ */
+
+/*
+Cephes Math Library Release 2.2: January, 1991
+Copyright 1984, 1991 by Stephen L. Moshier
+Adapted for glibc October, 2001.
+
+ This 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 2.1 of the License, or (at your option) any later version.
+
+ This 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 this library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+
+#include <math.h>
+#include <math_private.h>
+
+static const _Float128 CBRT2 = L(1.259921049894873164767210607278228350570251);
+static const _Float128 CBRT4 = L(1.587401051968199474751705639272308260391493);
+static const _Float128 CBRT2I = L(0.7937005259840997373758528196361541301957467);
+static const _Float128 CBRT4I = L(0.6299605249474365823836053036391141752851257);
+
+
+_Float128
+__cbrtl (_Float128 x)
+{
+ int e, rem, sign;
+ _Float128 z;
+
+ if (!isfinite (x))
+ return x + x;
+
+ if (x == 0)
+ return (x);
+
+ if (x > 0)
+ sign = 1;
+ else
+ {
+ sign = -1;
+ x = -x;
+ }
+
+ z = x;
+ /* extract power of 2, leaving mantissa between 0.5 and 1 */
+ x = __frexpl (x, &e);
+
+ /* Approximate cube root of number between .5 and 1,
+ peak relative error = 1.2e-6 */
+ x = ((((L(1.3584464340920900529734e-1) * x
+ - L(6.3986917220457538402318e-1)) * x
+ + L(1.2875551670318751538055e0)) * x
+ - L(1.4897083391357284957891e0)) * x
+ + L(1.3304961236013647092521e0)) * x + L(3.7568280825958912391243e-1);
+
+ /* exponent divided by 3 */
+ if (e >= 0)
+ {
+ rem = e;
+ e /= 3;
+ rem -= 3 * e;
+ if (rem == 1)
+ x *= CBRT2;
+ else if (rem == 2)
+ x *= CBRT4;
+ }
+ else
+ { /* argument less than 1 */
+ e = -e;
+ rem = e;
+ e /= 3;
+ rem -= 3 * e;
+ if (rem == 1)
+ x *= CBRT2I;
+ else if (rem == 2)
+ x *= CBRT4I;
+ e = -e;
+ }
+
+ /* multiply by power of 2 */
+ x = __ldexpl (x, e);
+
+ /* Newton iteration */
+ x -= (x - (z / (x * x))) * L(0.3333333333333333333333333333333333333333);
+ x -= (x - (z / (x * x))) * L(0.3333333333333333333333333333333333333333);
+ x -= (x - (z / (x * x))) * L(0.3333333333333333333333333333333333333333);
+
+ if (sign < 0)
+ x = -x;
+ return (x);
+}
+
+weak_alias (__cbrtl, cbrtl)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128/s_ceill.c b/REORG.TODO/sysdeps/ieee754/ldbl-128/s_ceill.c
new file mode 100644
index 0000000000..8034795072
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128/s_ceill.c
@@ -0,0 +1,66 @@
+/* s_ceill.c -- long double version of s_ceil.c.
+ * Conversion to IEEE quad long double by Jakub Jelinek, jj@ultra.linux.cz.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: $";
+#endif
+
+/*
+ * ceill(x)
+ * Return x rounded toward -inf to integral value
+ * Method:
+ * Bit twiddling.
+ */
+
+#include <math.h>
+#include <math_private.h>
+
+_Float128 __ceill(_Float128 x)
+{
+ int64_t i0,i1,j0;
+ u_int64_t i,j;
+ GET_LDOUBLE_WORDS64(i0,i1,x);
+ j0 = ((i0>>48)&0x7fff)-0x3fff;
+ if(j0<48) {
+ if(j0<0) {
+ /* return 0*sign(x) if |x|<1 */
+ if(i0<0) {i0=0x8000000000000000ULL;i1=0;}
+ else if((i0|i1)!=0) { i0=0x3fff000000000000ULL;i1=0;}
+ } else {
+ i = (0x0000ffffffffffffULL)>>j0;
+ if(((i0&i)|i1)==0) return x; /* x is integral */
+ if(i0>0) i0 += (0x0001000000000000LL)>>j0;
+ i0 &= (~i); i1=0;
+ }
+ } else if (j0>111) {
+ if(j0==0x4000) return x+x; /* inf or NaN */
+ else return x; /* x is integral */
+ } else {
+ i = -1ULL>>(j0-48);
+ if((i1&i)==0) return x; /* x is integral */
+ if(i0>0) {
+ if(j0==48) i0+=1;
+ else {
+ j = i1+(1LL<<(112-j0));
+ if(j<i1) i0 +=1 ; /* got a carry */
+ i1=j;
+ }
+ }
+ i1 &= (~i);
+ }
+ SET_LDOUBLE_WORDS64(x,i0,i1);
+ return x;
+}
+weak_alias (__ceill, ceill)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128/s_copysignl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128/s_copysignl.c
new file mode 100644
index 0000000000..8ee85ea8f7
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128/s_copysignl.c
@@ -0,0 +1,38 @@
+/* s_copysignl.c -- long double version of s_copysign.c.
+ * Conversion to long double by Jakub Jelinek, jj@ultra.linux.cz.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: $";
+#endif
+
+/*
+ * copysignl(long double x, long double y)
+ * copysignl(x,y) returns a value with the magnitude of x and
+ * with the sign bit of y.
+ */
+
+#include <math.h>
+#include <math_private.h>
+
+_Float128 __copysignl(_Float128 x, _Float128 y)
+{
+ u_int64_t hx,hy;
+ GET_LDOUBLE_MSW64(hx,x);
+ GET_LDOUBLE_MSW64(hy,y);
+ SET_LDOUBLE_MSW64(x,(hx&0x7fffffffffffffffULL)
+ |(hy&0x8000000000000000ULL));
+ return x;
+}
+weak_alias (__copysignl, copysignl)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128/s_cosl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128/s_cosl.c
new file mode 100644
index 0000000000..ed3e77d0db
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128/s_cosl.c
@@ -0,0 +1,86 @@
+/* s_cosl.c -- long double version of s_cos.c.
+ * Conversion to long double by Jakub Jelinek, jj@ultra.linux.cz.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+/* cosl(x)
+ * Return cosine function of x.
+ *
+ * kernel function:
+ * __kernel_sinl ... sine function on [-pi/4,pi/4]
+ * __kernel_cosl ... cosine function on [-pi/4,pi/4]
+ * __ieee754_rem_pio2l ... argument reduction routine
+ *
+ * Method.
+ * Let S,C and T denote the sin, cos and tan respectively on
+ * [-PI/4, +PI/4]. Reduce the argument x to y1+y2 = x-k*pi/2
+ * in [-pi/4 , +pi/4], and let n = k mod 4.
+ * We have
+ *
+ * n sin(x) cos(x) tan(x)
+ * ----------------------------------------------------------
+ * 0 S C T
+ * 1 C -S -1/T
+ * 2 -S -C T
+ * 3 -C S -1/T
+ * ----------------------------------------------------------
+ *
+ * Special cases:
+ * Let trig be any of sin, cos, or tan.
+ * trig(+-INF) is NaN, with signals;
+ * trig(NaN) is that NaN;
+ *
+ * Accuracy:
+ * TRIG(x) returns trig(x) nearly rounded
+ */
+
+#include <errno.h>
+#include <math.h>
+#include <math_private.h>
+
+_Float128 __cosl(_Float128 x)
+{
+ _Float128 y[2],z=0;
+ int64_t n, ix;
+
+ /* High word of x. */
+ GET_LDOUBLE_MSW64(ix,x);
+
+ /* |x| ~< pi/4 */
+ ix &= 0x7fffffffffffffffLL;
+ if(ix <= 0x3ffe921fb54442d1LL)
+ return __kernel_cosl(x,z);
+
+ /* cos(Inf or NaN) is NaN */
+ else if (ix>=0x7fff000000000000LL) {
+ if (ix == 0x7fff000000000000LL) {
+ GET_LDOUBLE_LSW64(n,x);
+ if (n == 0)
+ __set_errno (EDOM);
+ }
+ return x-x;
+ }
+
+ /* argument reduction needed */
+ else {
+ n = __ieee754_rem_pio2l(x,y);
+ switch(n&3) {
+ case 0: return __kernel_cosl(y[0],y[1]);
+ case 1: return -__kernel_sinl(y[0],y[1],1);
+ case 2: return -__kernel_cosl(y[0],y[1]);
+ default:
+ return __kernel_sinl(y[0],y[1],1);
+ }
+ }
+}
+weak_alias (__cosl, cosl)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128/s_erfl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128/s_erfl.c
new file mode 100644
index 0000000000..e5dfae9636
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128/s_erfl.c
@@ -0,0 +1,948 @@
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+/* Modifications and expansions for 128-bit long double are
+ Copyright (C) 2001 Stephen L. Moshier <moshier@na-net.ornl.gov>
+ and are incorporated herein by permission of the author. The author
+ reserves the right to distribute this material elsewhere under different
+ copying permissions. These modifications are distributed here under
+ the following terms:
+
+ This 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 2.1 of the License, or (at your option) any later version.
+
+ This 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 this library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+/* double erf(double x)
+ * double erfc(double x)
+ * x
+ * 2 |\
+ * erf(x) = --------- | exp(-t*t)dt
+ * sqrt(pi) \|
+ * 0
+ *
+ * erfc(x) = 1-erf(x)
+ * Note that
+ * erf(-x) = -erf(x)
+ * erfc(-x) = 2 - erfc(x)
+ *
+ * Method:
+ * 1. erf(x) = x + x*R(x^2) for |x| in [0, 7/8]
+ * Remark. The formula is derived by noting
+ * erf(x) = (2/sqrt(pi))*(x - x^3/3 + x^5/10 - x^7/42 + ....)
+ * and that
+ * 2/sqrt(pi) = 1.128379167095512573896158903121545171688
+ * is close to one.
+ *
+ * 1a. erf(x) = 1 - erfc(x), for |x| > 1.0
+ * erfc(x) = 1 - erf(x) if |x| < 1/4
+ *
+ * 2. For |x| in [7/8, 1], let s = |x| - 1, and
+ * c = 0.84506291151 rounded to single (24 bits)
+ * erf(s + c) = sign(x) * (c + P1(s)/Q1(s))
+ * Remark: here we use the taylor series expansion at x=1.
+ * erf(1+s) = erf(1) + s*Poly(s)
+ * = 0.845.. + P1(s)/Q1(s)
+ * Note that |P1/Q1|< 0.078 for x in [0.84375,1.25]
+ *
+ * 3. For x in [1/4, 5/4],
+ * erfc(s + const) = erfc(const) + s P1(s)/Q1(s)
+ * for const = 1/4, 3/8, ..., 9/8
+ * and 0 <= s <= 1/8 .
+ *
+ * 4. For x in [5/4, 107],
+ * erfc(x) = (1/x)*exp(-x*x-0.5625 + R(z))
+ * z=1/x^2
+ * The interval is partitioned into several segments
+ * of width 1/8 in 1/x.
+ *
+ * Note1:
+ * To compute exp(-x*x-0.5625+R/S), let s be a single
+ * precision number and s := x; then
+ * -x*x = -s*s + (s-x)*(s+x)
+ * exp(-x*x-0.5626+R/S) =
+ * exp(-s*s-0.5625)*exp((s-x)*(s+x)+R/S);
+ * Note2:
+ * Here 4 and 5 make use of the asymptotic series
+ * exp(-x*x)
+ * erfc(x) ~ ---------- * ( 1 + Poly(1/x^2) )
+ * x*sqrt(pi)
+ *
+ * 5. For inf > x >= 107
+ * erf(x) = sign(x) *(1 - tiny) (raise inexact)
+ * erfc(x) = tiny*tiny (raise underflow) if x > 0
+ * = 2 - tiny if x<0
+ *
+ * 7. Special case:
+ * erf(0) = 0, erf(inf) = 1, erf(-inf) = -1,
+ * erfc(0) = 1, erfc(inf) = 0, erfc(-inf) = 2,
+ * erfc/erf(NaN) is NaN
+ */
+
+#include <errno.h>
+#include <float.h>
+#include <math.h>
+#include <math_private.h>
+
+/* Evaluate P[n] x^n + P[n-1] x^(n-1) + ... + P[0] */
+
+static _Float128
+neval (_Float128 x, const _Float128 *p, int n)
+{
+ _Float128 y;
+
+ p += n;
+ y = *p--;
+ do
+ {
+ y = y * x + *p--;
+ }
+ while (--n > 0);
+ return y;
+}
+
+
+/* Evaluate x^n+1 + P[n] x^(n) + P[n-1] x^(n-1) + ... + P[0] */
+
+static _Float128
+deval (_Float128 x, const _Float128 *p, int n)
+{
+ _Float128 y;
+
+ p += n;
+ y = x + *p--;
+ do
+ {
+ y = y * x + *p--;
+ }
+ while (--n > 0);
+ return y;
+}
+
+
+
+static const _Float128
+tiny = L(1e-4931),
+ one = 1,
+ two = 2,
+ /* 2/sqrt(pi) - 1 */
+ efx = L(1.2837916709551257389615890312154517168810E-1);
+
+
+/* erf(x) = x + x R(x^2)
+ 0 <= x <= 7/8
+ Peak relative error 1.8e-35 */
+#define NTN1 8
+static const _Float128 TN1[NTN1 + 1] =
+{
+ L(-3.858252324254637124543172907442106422373E10),
+ L(9.580319248590464682316366876952214879858E10),
+ L(1.302170519734879977595901236693040544854E10),
+ L(2.922956950426397417800321486727032845006E9),
+ L(1.764317520783319397868923218385468729799E8),
+ L(1.573436014601118630105796794840834145120E7),
+ L(4.028077380105721388745632295157816229289E5),
+ L(1.644056806467289066852135096352853491530E4),
+ L(3.390868480059991640235675479463287886081E1)
+};
+#define NTD1 8
+static const _Float128 TD1[NTD1 + 1] =
+{
+ L(-3.005357030696532927149885530689529032152E11),
+ L(-1.342602283126282827411658673839982164042E11),
+ L(-2.777153893355340961288511024443668743399E10),
+ L(-3.483826391033531996955620074072768276974E9),
+ L(-2.906321047071299585682722511260895227921E8),
+ L(-1.653347985722154162439387878512427542691E7),
+ L(-6.245520581562848778466500301865173123136E5),
+ L(-1.402124304177498828590239373389110545142E4),
+ L(-1.209368072473510674493129989468348633579E2)
+/* 1.0E0 */
+};
+
+
+/* erf(z+1) = erf_const + P(z)/Q(z)
+ -.125 <= z <= 0
+ Peak relative error 7.3e-36 */
+static const _Float128 erf_const = L(0.845062911510467529296875);
+#define NTN2 8
+static const _Float128 TN2[NTN2 + 1] =
+{
+ L(-4.088889697077485301010486931817357000235E1),
+ L(7.157046430681808553842307502826960051036E3),
+ L(-2.191561912574409865550015485451373731780E3),
+ L(2.180174916555316874988981177654057337219E3),
+ L(2.848578658049670668231333682379720943455E2),
+ L(1.630362490952512836762810462174798925274E2),
+ L(6.317712353961866974143739396865293596895E0),
+ L(2.450441034183492434655586496522857578066E1),
+ L(5.127662277706787664956025545897050896203E-1)
+};
+#define NTD2 8
+static const _Float128 TD2[NTD2 + 1] =
+{
+ L(1.731026445926834008273768924015161048885E4),
+ L(1.209682239007990370796112604286048173750E4),
+ L(1.160950290217993641320602282462976163857E4),
+ L(5.394294645127126577825507169061355698157E3),
+ L(2.791239340533632669442158497532521776093E3),
+ L(8.989365571337319032943005387378993827684E2),
+ L(2.974016493766349409725385710897298069677E2),
+ L(6.148192754590376378740261072533527271947E1),
+ L(1.178502892490738445655468927408440847480E1)
+ /* 1.0E0 */
+};
+
+
+/* erfc(x + 0.25) = erfc(0.25) + x R(x)
+ 0 <= x < 0.125
+ Peak relative error 1.4e-35 */
+#define NRNr13 8
+static const _Float128 RNr13[NRNr13 + 1] =
+{
+ L(-2.353707097641280550282633036456457014829E3),
+ L(3.871159656228743599994116143079870279866E2),
+ L(-3.888105134258266192210485617504098426679E2),
+ L(-2.129998539120061668038806696199343094971E1),
+ L(-8.125462263594034672468446317145384108734E1),
+ L(8.151549093983505810118308635926270319660E0),
+ L(-5.033362032729207310462422357772568553670E0),
+ L(-4.253956621135136090295893547735851168471E-2),
+ L(-8.098602878463854789780108161581050357814E-2)
+};
+#define NRDr13 7
+static const _Float128 RDr13[NRDr13 + 1] =
+{
+ L(2.220448796306693503549505450626652881752E3),
+ L(1.899133258779578688791041599040951431383E2),
+ L(1.061906712284961110196427571557149268454E3),
+ L(7.497086072306967965180978101974566760042E1),
+ L(2.146796115662672795876463568170441327274E2),
+ L(1.120156008362573736664338015952284925592E1),
+ L(2.211014952075052616409845051695042741074E1),
+ L(6.469655675326150785692908453094054988938E-1)
+ /* 1.0E0 */
+};
+/* erfc(0.25) = C13a + C13b to extra precision. */
+static const _Float128 C13a = L(0.723663330078125);
+static const _Float128 C13b = L(1.0279753638067014931732235184287934646022E-5);
+
+
+/* erfc(x + 0.375) = erfc(0.375) + x R(x)
+ 0 <= x < 0.125
+ Peak relative error 1.2e-35 */
+#define NRNr14 8
+static const _Float128 RNr14[NRNr14 + 1] =
+{
+ L(-2.446164016404426277577283038988918202456E3),
+ L(6.718753324496563913392217011618096698140E2),
+ L(-4.581631138049836157425391886957389240794E2),
+ L(-2.382844088987092233033215402335026078208E1),
+ L(-7.119237852400600507927038680970936336458E1),
+ L(1.313609646108420136332418282286454287146E1),
+ L(-6.188608702082264389155862490056401365834E0),
+ L(-2.787116601106678287277373011101132659279E-2),
+ L(-2.230395570574153963203348263549700967918E-2)
+};
+#define NRDr14 7
+static const _Float128 RDr14[NRDr14 + 1] =
+{
+ L(2.495187439241869732696223349840963702875E3),
+ L(2.503549449872925580011284635695738412162E2),
+ L(1.159033560988895481698051531263861842461E3),
+ L(9.493751466542304491261487998684383688622E1),
+ L(2.276214929562354328261422263078480321204E2),
+ L(1.367697521219069280358984081407807931847E1),
+ L(2.276988395995528495055594829206582732682E1),
+ L(7.647745753648996559837591812375456641163E-1)
+ /* 1.0E0 */
+};
+/* erfc(0.375) = C14a + C14b to extra precision. */
+static const _Float128 C14a = L(0.5958709716796875);
+static const _Float128 C14b = L(1.2118885490201676174914080878232469565953E-5);
+
+/* erfc(x + 0.5) = erfc(0.5) + x R(x)
+ 0 <= x < 0.125
+ Peak relative error 4.7e-36 */
+#define NRNr15 8
+static const _Float128 RNr15[NRNr15 + 1] =
+{
+ L(-2.624212418011181487924855581955853461925E3),
+ L(8.473828904647825181073831556439301342756E2),
+ L(-5.286207458628380765099405359607331669027E2),
+ L(-3.895781234155315729088407259045269652318E1),
+ L(-6.200857908065163618041240848728398496256E1),
+ L(1.469324610346924001393137895116129204737E1),
+ L(-6.961356525370658572800674953305625578903E0),
+ L(5.145724386641163809595512876629030548495E-3),
+ L(1.990253655948179713415957791776180406812E-2)
+};
+#define NRDr15 7
+static const _Float128 RDr15[NRDr15 + 1] =
+{
+ L(2.986190760847974943034021764693341524962E3),
+ L(5.288262758961073066335410218650047725985E2),
+ L(1.363649178071006978355113026427856008978E3),
+ L(1.921707975649915894241864988942255320833E2),
+ L(2.588651100651029023069013885900085533226E2),
+ L(2.628752920321455606558942309396855629459E1),
+ L(2.455649035885114308978333741080991380610E1),
+ L(1.378826653595128464383127836412100939126E0)
+ /* 1.0E0 */
+};
+/* erfc(0.5) = C15a + C15b to extra precision. */
+static const _Float128 C15a = L(0.4794921875);
+static const _Float128 C15b = L(7.9346869534623172533461080354712635484242E-6);
+
+/* erfc(x + 0.625) = erfc(0.625) + x R(x)
+ 0 <= x < 0.125
+ Peak relative error 5.1e-36 */
+#define NRNr16 8
+static const _Float128 RNr16[NRNr16 + 1] =
+{
+ L(-2.347887943200680563784690094002722906820E3),
+ L(8.008590660692105004780722726421020136482E2),
+ L(-5.257363310384119728760181252132311447963E2),
+ L(-4.471737717857801230450290232600243795637E1),
+ L(-4.849540386452573306708795324759300320304E1),
+ L(1.140885264677134679275986782978655952843E1),
+ L(-6.731591085460269447926746876983786152300E0),
+ L(1.370831653033047440345050025876085121231E-1),
+ L(2.022958279982138755020825717073966576670E-2),
+};
+#define NRDr16 7
+static const _Float128 RDr16[NRDr16 + 1] =
+{
+ L(3.075166170024837215399323264868308087281E3),
+ L(8.730468942160798031608053127270430036627E2),
+ L(1.458472799166340479742581949088453244767E3),
+ L(3.230423687568019709453130785873540386217E2),
+ L(2.804009872719893612081109617983169474655E2),
+ L(4.465334221323222943418085830026979293091E1),
+ L(2.612723259683205928103787842214809134746E1),
+ L(2.341526751185244109722204018543276124997E0),
+ /* 1.0E0 */
+};
+/* erfc(0.625) = C16a + C16b to extra precision. */
+static const _Float128 C16a = L(0.3767547607421875);
+static const _Float128 C16b = L(4.3570693945275513594941232097252997287766E-6);
+
+/* erfc(x + 0.75) = erfc(0.75) + x R(x)
+ 0 <= x < 0.125
+ Peak relative error 1.7e-35 */
+#define NRNr17 8
+static const _Float128 RNr17[NRNr17 + 1] =
+{
+ L(-1.767068734220277728233364375724380366826E3),
+ L(6.693746645665242832426891888805363898707E2),
+ L(-4.746224241837275958126060307406616817753E2),
+ L(-2.274160637728782675145666064841883803196E1),
+ L(-3.541232266140939050094370552538987982637E1),
+ L(6.988950514747052676394491563585179503865E0),
+ L(-5.807687216836540830881352383529281215100E0),
+ L(3.631915988567346438830283503729569443642E-1),
+ L(-1.488945487149634820537348176770282391202E-2)
+};
+#define NRDr17 7
+static const _Float128 RDr17[NRDr17 + 1] =
+{
+ L(2.748457523498150741964464942246913394647E3),
+ L(1.020213390713477686776037331757871252652E3),
+ L(1.388857635935432621972601695296561952738E3),
+ L(3.903363681143817750895999579637315491087E2),
+ L(2.784568344378139499217928969529219886578E2),
+ L(5.555800830216764702779238020065345401144E1),
+ L(2.646215470959050279430447295801291168941E1),
+ L(2.984905282103517497081766758550112011265E0),
+ /* 1.0E0 */
+};
+/* erfc(0.75) = C17a + C17b to extra precision. */
+static const _Float128 C17a = L(0.2888336181640625);
+static const _Float128 C17b = L(1.0748182422368401062165408589222625794046E-5);
+
+
+/* erfc(x + 0.875) = erfc(0.875) + x R(x)
+ 0 <= x < 0.125
+ Peak relative error 2.2e-35 */
+#define NRNr18 8
+static const _Float128 RNr18[NRNr18 + 1] =
+{
+ L(-1.342044899087593397419622771847219619588E3),
+ L(6.127221294229172997509252330961641850598E2),
+ L(-4.519821356522291185621206350470820610727E2),
+ L(1.223275177825128732497510264197915160235E1),
+ L(-2.730789571382971355625020710543532867692E1),
+ L(4.045181204921538886880171727755445395862E0),
+ L(-4.925146477876592723401384464691452700539E0),
+ L(5.933878036611279244654299924101068088582E-1),
+ L(-5.557645435858916025452563379795159124753E-2)
+};
+#define NRDr18 7
+static const _Float128 RDr18[NRDr18 + 1] =
+{
+ L(2.557518000661700588758505116291983092951E3),
+ L(1.070171433382888994954602511991940418588E3),
+ L(1.344842834423493081054489613250688918709E3),
+ L(4.161144478449381901208660598266288188426E2),
+ L(2.763670252219855198052378138756906980422E2),
+ L(5.998153487868943708236273854747564557632E1),
+ L(2.657695108438628847733050476209037025318E1),
+ L(3.252140524394421868923289114410336976512E0),
+ /* 1.0E0 */
+};
+/* erfc(0.875) = C18a + C18b to extra precision. */
+static const _Float128 C18a = L(0.215911865234375);
+static const _Float128 C18b = L(1.3073705765341685464282101150637224028267E-5);
+
+/* erfc(x + 1.0) = erfc(1.0) + x R(x)
+ 0 <= x < 0.125
+ Peak relative error 1.6e-35 */
+#define NRNr19 8
+static const _Float128 RNr19[NRNr19 + 1] =
+{
+ L(-1.139180936454157193495882956565663294826E3),
+ L(6.134903129086899737514712477207945973616E2),
+ L(-4.628909024715329562325555164720732868263E2),
+ L(4.165702387210732352564932347500364010833E1),
+ L(-2.286979913515229747204101330405771801610E1),
+ L(1.870695256449872743066783202326943667722E0),
+ L(-4.177486601273105752879868187237000032364E0),
+ L(7.533980372789646140112424811291782526263E-1),
+ L(-8.629945436917752003058064731308767664446E-2)
+};
+#define NRDr19 7
+static const _Float128 RDr19[NRDr19 + 1] =
+{
+ L(2.744303447981132701432716278363418643778E3),
+ L(1.266396359526187065222528050591302171471E3),
+ L(1.466739461422073351497972255511919814273E3),
+ L(4.868710570759693955597496520298058147162E2),
+ L(2.993694301559756046478189634131722579643E2),
+ L(6.868976819510254139741559102693828237440E1),
+ L(2.801505816247677193480190483913753613630E1),
+ L(3.604439909194350263552750347742663954481E0),
+ /* 1.0E0 */
+};
+/* erfc(1.0) = C19a + C19b to extra precision. */
+static const _Float128 C19a = L(0.15728759765625);
+static const _Float128 C19b = L(1.1609394035130658779364917390740703933002E-5);
+
+/* erfc(x + 1.125) = erfc(1.125) + x R(x)
+ 0 <= x < 0.125
+ Peak relative error 3.6e-36 */
+#define NRNr20 8
+static const _Float128 RNr20[NRNr20 + 1] =
+{
+ L(-9.652706916457973956366721379612508047640E2),
+ L(5.577066396050932776683469951773643880634E2),
+ L(-4.406335508848496713572223098693575485978E2),
+ L(5.202893466490242733570232680736966655434E1),
+ L(-1.931311847665757913322495948705563937159E1),
+ L(-9.364318268748287664267341457164918090611E-2),
+ L(-3.306390351286352764891355375882586201069E0),
+ L(7.573806045289044647727613003096916516475E-1),
+ L(-9.611744011489092894027478899545635991213E-2)
+};
+#define NRDr20 7
+static const _Float128 RDr20[NRDr20 + 1] =
+{
+ L(3.032829629520142564106649167182428189014E3),
+ L(1.659648470721967719961167083684972196891E3),
+ L(1.703545128657284619402511356932569292535E3),
+ L(6.393465677731598872500200253155257708763E2),
+ L(3.489131397281030947405287112726059221934E2),
+ L(8.848641738570783406484348434387611713070E1),
+ L(3.132269062552392974833215844236160958502E1),
+ L(4.430131663290563523933419966185230513168E0)
+ /* 1.0E0 */
+};
+/* erfc(1.125) = C20a + C20b to extra precision. */
+static const _Float128 C20a = L(0.111602783203125);
+static const _Float128 C20b = L(8.9850951672359304215530728365232161564636E-6);
+
+/* erfc(1/x) = 1/x exp (-1/x^2 - 0.5625 + R(1/x^2))
+ 7/8 <= 1/x < 1
+ Peak relative error 1.4e-35 */
+#define NRNr8 9
+static const _Float128 RNr8[NRNr8 + 1] =
+{
+ L(3.587451489255356250759834295199296936784E1),
+ L(5.406249749087340431871378009874875889602E2),
+ L(2.931301290625250886238822286506381194157E3),
+ L(7.359254185241795584113047248898753470923E3),
+ L(9.201031849810636104112101947312492532314E3),
+ L(5.749697096193191467751650366613289284777E3),
+ L(1.710415234419860825710780802678697889231E3),
+ L(2.150753982543378580859546706243022719599E2),
+ L(8.740953582272147335100537849981160931197E0),
+ L(4.876422978828717219629814794707963640913E-2)
+};
+#define NRDr8 8
+static const _Float128 RDr8[NRDr8 + 1] =
+{
+ L(6.358593134096908350929496535931630140282E1),
+ L(9.900253816552450073757174323424051765523E2),
+ L(5.642928777856801020545245437089490805186E3),
+ L(1.524195375199570868195152698617273739609E4),
+ L(2.113829644500006749947332935305800887345E4),
+ L(1.526438562626465706267943737310282977138E4),
+ L(5.561370922149241457131421914140039411782E3),
+ L(9.394035530179705051609070428036834496942E2),
+ L(6.147019596150394577984175188032707343615E1)
+ /* 1.0E0 */
+};
+
+/* erfc(1/x) = 1/x exp (-1/x^2 - 0.5625 + R(1/x^2))
+ 0.75 <= 1/x <= 0.875
+ Peak relative error 2.0e-36 */
+#define NRNr7 9
+static const _Float128 RNr7[NRNr7 + 1] =
+{
+ L(1.686222193385987690785945787708644476545E1),
+ L(1.178224543567604215602418571310612066594E3),
+ L(1.764550584290149466653899886088166091093E4),
+ L(1.073758321890334822002849369898232811561E5),
+ L(3.132840749205943137619839114451290324371E5),
+ L(4.607864939974100224615527007793867585915E5),
+ L(3.389781820105852303125270837910972384510E5),
+ L(1.174042187110565202875011358512564753399E5),
+ L(1.660013606011167144046604892622504338313E4),
+ L(6.700393957480661937695573729183733234400E2)
+};
+#define NRDr7 9
+static const _Float128 RDr7[NRDr7 + 1] =
+{
+L(-1.709305024718358874701575813642933561169E3),
+L(-3.280033887481333199580464617020514788369E4),
+L(-2.345284228022521885093072363418750835214E5),
+L(-8.086758123097763971926711729242327554917E5),
+L(-1.456900414510108718402423999575992450138E6),
+L(-1.391654264881255068392389037292702041855E6),
+L(-6.842360801869939983674527468509852583855E5),
+L(-1.597430214446573566179675395199807533371E5),
+L(-1.488876130609876681421645314851760773480E4),
+L(-3.511762950935060301403599443436465645703E2)
+ /* 1.0E0 */
+};
+
+/* erfc(1/x) = 1/x exp(-1/x^2 - 0.5625 + R(1/x^2))
+ 5/8 <= 1/x < 3/4
+ Peak relative error 1.9e-35 */
+#define NRNr6 9
+static const _Float128 RNr6[NRNr6 + 1] =
+{
+ L(1.642076876176834390623842732352935761108E0),
+ L(1.207150003611117689000664385596211076662E2),
+ L(2.119260779316389904742873816462800103939E3),
+ L(1.562942227734663441801452930916044224174E4),
+ L(5.656779189549710079988084081145693580479E4),
+ L(1.052166241021481691922831746350942786299E5),
+ L(9.949798524786000595621602790068349165758E4),
+ L(4.491790734080265043407035220188849562856E4),
+ L(8.377074098301530326270432059434791287601E3),
+ L(4.506934806567986810091824791963991057083E2)
+};
+#define NRDr6 9
+static const _Float128 RDr6[NRDr6 + 1] =
+{
+L(-1.664557643928263091879301304019826629067E2),
+L(-3.800035902507656624590531122291160668452E3),
+L(-3.277028191591734928360050685359277076056E4),
+L(-1.381359471502885446400589109566587443987E5),
+L(-3.082204287382581873532528989283748656546E5),
+L(-3.691071488256738343008271448234631037095E5),
+L(-2.300482443038349815750714219117566715043E5),
+L(-6.873955300927636236692803579555752171530E4),
+L(-8.262158817978334142081581542749986845399E3),
+L(-2.517122254384430859629423488157361983661E2)
+ /* 1.00 */
+};
+
+/* erfc(1/x) = 1/x exp(-1/x^2 - 0.5625 + R(1/x^2))
+ 1/2 <= 1/x < 5/8
+ Peak relative error 4.6e-36 */
+#define NRNr5 10
+static const _Float128 RNr5[NRNr5 + 1] =
+{
+L(-3.332258927455285458355550878136506961608E-3),
+L(-2.697100758900280402659586595884478660721E-1),
+L(-6.083328551139621521416618424949137195536E0),
+L(-6.119863528983308012970821226810162441263E1),
+L(-3.176535282475593173248810678636522589861E2),
+L(-8.933395175080560925809992467187963260693E2),
+L(-1.360019508488475978060917477620199499560E3),
+L(-1.075075579828188621541398761300910213280E3),
+L(-4.017346561586014822824459436695197089916E2),
+L(-5.857581368145266249509589726077645791341E1),
+L(-2.077715925587834606379119585995758954399E0)
+};
+#define NRDr5 9
+static const _Float128 RDr5[NRDr5 + 1] =
+{
+ L(3.377879570417399341550710467744693125385E-1),
+ L(1.021963322742390735430008860602594456187E1),
+ L(1.200847646592942095192766255154827011939E2),
+ L(7.118915528142927104078182863387116942836E2),
+ L(2.318159380062066469386544552429625026238E3),
+ L(4.238729853534009221025582008928765281620E3),
+ L(4.279114907284825886266493994833515580782E3),
+ L(2.257277186663261531053293222591851737504E3),
+ L(5.570475501285054293371908382916063822957E2),
+ L(5.142189243856288981145786492585432443560E1)
+ /* 1.0E0 */
+};
+
+/* erfc(1/x) = 1/x exp(-1/x^2 - 0.5625 + R(1/x^2))
+ 3/8 <= 1/x < 1/2
+ Peak relative error 2.0e-36 */
+#define NRNr4 10
+static const _Float128 RNr4[NRNr4 + 1] =
+{
+ L(3.258530712024527835089319075288494524465E-3),
+ L(2.987056016877277929720231688689431056567E-1),
+ L(8.738729089340199750734409156830371528862E0),
+ L(1.207211160148647782396337792426311125923E2),
+ L(8.997558632489032902250523945248208224445E2),
+ L(3.798025197699757225978410230530640879762E3),
+ L(9.113203668683080975637043118209210146846E3),
+ L(1.203285891339933238608683715194034900149E4),
+ L(8.100647057919140328536743641735339740855E3),
+ L(2.383888249907144945837976899822927411769E3),
+ L(2.127493573166454249221983582495245662319E2)
+};
+#define NRDr4 10
+static const _Float128 RDr4[NRDr4 + 1] =
+{
+L(-3.303141981514540274165450687270180479586E-1),
+L(-1.353768629363605300707949368917687066724E1),
+L(-2.206127630303621521950193783894598987033E2),
+L(-1.861800338758066696514480386180875607204E3),
+L(-8.889048775872605708249140016201753255599E3),
+L(-2.465888106627948210478692168261494857089E4),
+L(-3.934642211710774494879042116768390014289E4),
+L(-3.455077258242252974937480623730228841003E4),
+L(-1.524083977439690284820586063729912653196E4),
+L(-2.810541887397984804237552337349093953857E3),
+L(-1.343929553541159933824901621702567066156E2)
+ /* 1.0E0 */
+};
+
+/* erfc(1/x) = 1/x exp(-1/x^2 - 0.5625 + R(1/x^2))
+ 1/4 <= 1/x < 3/8
+ Peak relative error 8.4e-37 */
+#define NRNr3 11
+static const _Float128 RNr3[NRNr3 + 1] =
+{
+L(-1.952401126551202208698629992497306292987E-6),
+L(-2.130881743066372952515162564941682716125E-4),
+L(-8.376493958090190943737529486107282224387E-3),
+L(-1.650592646560987700661598877522831234791E-1),
+L(-1.839290818933317338111364667708678163199E0),
+L(-1.216278715570882422410442318517814388470E1),
+L(-4.818759344462360427612133632533779091386E1),
+L(-1.120994661297476876804405329172164436784E2),
+L(-1.452850765662319264191141091859300126931E2),
+L(-9.485207851128957108648038238656777241333E1),
+L(-2.563663855025796641216191848818620020073E1),
+L(-1.787995944187565676837847610706317833247E0)
+};
+#define NRDr3 10
+static const _Float128 RDr3[NRDr3 + 1] =
+{
+ L(1.979130686770349481460559711878399476903E-4),
+ L(1.156941716128488266238105813374635099057E-2),
+ L(2.752657634309886336431266395637285974292E-1),
+ L(3.482245457248318787349778336603569327521E0),
+ L(2.569347069372696358578399521203959253162E1),
+ L(1.142279000180457419740314694631879921561E2),
+ L(3.056503977190564294341422623108332700840E2),
+ L(4.780844020923794821656358157128719184422E2),
+ L(4.105972727212554277496256802312730410518E2),
+ L(1.724072188063746970865027817017067646246E2),
+ L(2.815939183464818198705278118326590370435E1)
+ /* 1.0E0 */
+};
+
+/* erfc(1/x) = 1/x exp(-1/x^2 - 0.5625 + R(1/x^2))
+ 1/8 <= 1/x < 1/4
+ Peak relative error 1.5e-36 */
+#define NRNr2 11
+static const _Float128 RNr2[NRNr2 + 1] =
+{
+L(-2.638914383420287212401687401284326363787E-8),
+L(-3.479198370260633977258201271399116766619E-6),
+L(-1.783985295335697686382487087502222519983E-4),
+L(-4.777876933122576014266349277217559356276E-3),
+L(-7.450634738987325004070761301045014986520E-2),
+L(-7.068318854874733315971973707247467326619E-1),
+L(-4.113919921935944795764071670806867038732E0),
+L(-1.440447573226906222417767283691888875082E1),
+L(-2.883484031530718428417168042141288943905E1),
+L(-2.990886974328476387277797361464279931446E1),
+L(-1.325283914915104866248279787536128997331E1),
+L(-1.572436106228070195510230310658206154374E0)
+};
+#define NRDr2 10
+static const _Float128 RDr2[NRDr2 + 1] =
+{
+ L(2.675042728136731923554119302571867799673E-6),
+ L(2.170997868451812708585443282998329996268E-4),
+ L(7.249969752687540289422684951196241427445E-3),
+ L(1.302040375859768674620410563307838448508E-1),
+ L(1.380202483082910888897654537144485285549E0),
+ L(8.926594113174165352623847870299170069350E0),
+ L(3.521089584782616472372909095331572607185E1),
+ L(8.233547427533181375185259050330809105570E1),
+ L(1.072971579885803033079469639073292840135E2),
+ L(6.943803113337964469736022094105143158033E1),
+ L(1.775695341031607738233608307835017282662E1)
+ /* 1.0E0 */
+};
+
+/* erfc(1/x) = 1/x exp(-1/x^2 - 0.5625 + R(1/x^2))
+ 1/128 <= 1/x < 1/8
+ Peak relative error 2.2e-36 */
+#define NRNr1 9
+static const _Float128 RNr1[NRNr1 + 1] =
+{
+L(-4.250780883202361946697751475473042685782E-8),
+L(-5.375777053288612282487696975623206383019E-6),
+L(-2.573645949220896816208565944117382460452E-4),
+L(-6.199032928113542080263152610799113086319E-3),
+L(-8.262721198693404060380104048479916247786E-2),
+L(-6.242615227257324746371284637695778043982E-1),
+L(-2.609874739199595400225113299437099626386E0),
+L(-5.581967563336676737146358534602770006970E0),
+L(-5.124398923356022609707490956634280573882E0),
+L(-1.290865243944292370661544030414667556649E0)
+};
+#define NRDr1 8
+static const _Float128 RDr1[NRDr1 + 1] =
+{
+ L(4.308976661749509034845251315983612976224E-6),
+ L(3.265390126432780184125233455960049294580E-4),
+ L(9.811328839187040701901866531796570418691E-3),
+ L(1.511222515036021033410078631914783519649E-1),
+ L(1.289264341917429958858379585970225092274E0),
+ L(6.147640356182230769548007536914983522270E0),
+ L(1.573966871337739784518246317003956180750E1),
+ L(1.955534123435095067199574045529218238263E1),
+ L(9.472613121363135472247929109615785855865E0)
+ /* 1.0E0 */
+};
+
+
+_Float128
+__erfl (_Float128 x)
+{
+ _Float128 a, y, z;
+ int32_t i, ix, sign;
+ ieee854_long_double_shape_type u;
+
+ u.value = x;
+ sign = u.parts32.w0;
+ ix = sign & 0x7fffffff;
+
+ if (ix >= 0x7fff0000)
+ { /* erf(nan)=nan */
+ i = ((sign & 0xffff0000) >> 31) << 1;
+ return (_Float128) (1 - i) + one / x; /* erf(+-inf)=+-1 */
+ }
+
+ if (ix >= 0x3fff0000) /* |x| >= 1.0 */
+ {
+ if (ix >= 0x40030000 && sign > 0)
+ return one; /* x >= 16, avoid spurious underflow from erfc. */
+ y = __erfcl (x);
+ return (one - y);
+ /* return (one - __erfcl (x)); */
+ }
+ u.parts32.w0 = ix;
+ a = u.value;
+ z = x * x;
+ if (ix < 0x3ffec000) /* a < 0.875 */
+ {
+ if (ix < 0x3fc60000) /* |x|<2**-57 */
+ {
+ if (ix < 0x00080000)
+ {
+ /* Avoid spurious underflow. */
+ _Float128 ret = 0.0625 * (16.0 * x + (16.0 * efx) * x);
+ math_check_force_underflow (ret);
+ return ret;
+ }
+ return x + efx * x;
+ }
+ y = a + a * neval (z, TN1, NTN1) / deval (z, TD1, NTD1);
+ }
+ else
+ {
+ a = a - one;
+ y = erf_const + neval (a, TN2, NTN2) / deval (a, TD2, NTD2);
+ }
+
+ if (sign & 0x80000000) /* x < 0 */
+ y = -y;
+ return( y );
+}
+
+weak_alias (__erfl, erfl)
+_Float128
+__erfcl (_Float128 x)
+{
+ _Float128 y, z, p, r;
+ int32_t i, ix, sign;
+ ieee854_long_double_shape_type u;
+
+ u.value = x;
+ sign = u.parts32.w0;
+ ix = sign & 0x7fffffff;
+ u.parts32.w0 = ix;
+
+ if (ix >= 0x7fff0000)
+ { /* erfc(nan)=nan */
+ /* erfc(+-inf)=0,2 */
+ return (_Float128) (((u_int32_t) sign >> 31) << 1) + one / x;
+ }
+
+ if (ix < 0x3ffd0000) /* |x| <1/4 */
+ {
+ if (ix < 0x3f8d0000) /* |x|<2**-114 */
+ return one - x;
+ return one - __erfl (x);
+ }
+ if (ix < 0x3fff4000) /* 1.25 */
+ {
+ x = u.value;
+ i = 8.0 * x;
+ switch (i)
+ {
+ case 2:
+ z = x - L(0.25);
+ y = C13b + z * neval (z, RNr13, NRNr13) / deval (z, RDr13, NRDr13);
+ y += C13a;
+ break;
+ case 3:
+ z = x - L(0.375);
+ y = C14b + z * neval (z, RNr14, NRNr14) / deval (z, RDr14, NRDr14);
+ y += C14a;
+ break;
+ case 4:
+ z = x - L(0.5);
+ y = C15b + z * neval (z, RNr15, NRNr15) / deval (z, RDr15, NRDr15);
+ y += C15a;
+ break;
+ case 5:
+ z = x - L(0.625);
+ y = C16b + z * neval (z, RNr16, NRNr16) / deval (z, RDr16, NRDr16);
+ y += C16a;
+ break;
+ case 6:
+ z = x - L(0.75);
+ y = C17b + z * neval (z, RNr17, NRNr17) / deval (z, RDr17, NRDr17);
+ y += C17a;
+ break;
+ case 7:
+ z = x - L(0.875);
+ y = C18b + z * neval (z, RNr18, NRNr18) / deval (z, RDr18, NRDr18);
+ y += C18a;
+ break;
+ case 8:
+ z = x - 1;
+ y = C19b + z * neval (z, RNr19, NRNr19) / deval (z, RDr19, NRDr19);
+ y += C19a;
+ break;
+ default: /* i == 9. */
+ z = x - L(1.125);
+ y = C20b + z * neval (z, RNr20, NRNr20) / deval (z, RDr20, NRDr20);
+ y += C20a;
+ break;
+ }
+ if (sign & 0x80000000)
+ y = 2 - y;
+ return y;
+ }
+ /* 1.25 < |x| < 107 */
+ if (ix < 0x4005ac00)
+ {
+ /* x < -9 */
+ if ((ix >= 0x40022000) && (sign & 0x80000000))
+ return two - tiny;
+
+ x = fabsl (x);
+ z = one / (x * x);
+ i = 8.0 / x;
+ switch (i)
+ {
+ default:
+ case 0:
+ p = neval (z, RNr1, NRNr1) / deval (z, RDr1, NRDr1);
+ break;
+ case 1:
+ p = neval (z, RNr2, NRNr2) / deval (z, RDr2, NRDr2);
+ break;
+ case 2:
+ p = neval (z, RNr3, NRNr3) / deval (z, RDr3, NRDr3);
+ break;
+ case 3:
+ p = neval (z, RNr4, NRNr4) / deval (z, RDr4, NRDr4);
+ break;
+ case 4:
+ p = neval (z, RNr5, NRNr5) / deval (z, RDr5, NRDr5);
+ break;
+ case 5:
+ p = neval (z, RNr6, NRNr6) / deval (z, RDr6, NRDr6);
+ break;
+ case 6:
+ p = neval (z, RNr7, NRNr7) / deval (z, RDr7, NRDr7);
+ break;
+ case 7:
+ p = neval (z, RNr8, NRNr8) / deval (z, RDr8, NRDr8);
+ break;
+ }
+ u.value = x;
+ u.parts32.w3 = 0;
+ u.parts32.w2 &= 0xfe000000;
+ z = u.value;
+ r = __ieee754_expl (-z * z - 0.5625) *
+ __ieee754_expl ((z - x) * (z + x) + p);
+ if ((sign & 0x80000000) == 0)
+ {
+ _Float128 ret = r / x;
+ if (ret == 0)
+ __set_errno (ERANGE);
+ return ret;
+ }
+ else
+ return two - r / x;
+ }
+ else
+ {
+ if ((sign & 0x80000000) == 0)
+ {
+ __set_errno (ERANGE);
+ return tiny * tiny;
+ }
+ else
+ return two - tiny;
+ }
+}
+
+weak_alias (__erfcl, erfcl)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128/s_expm1l.c b/REORG.TODO/sysdeps/ieee754/ldbl-128/s_expm1l.c
new file mode 100644
index 0000000000..46d078b77b
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128/s_expm1l.c
@@ -0,0 +1,166 @@
+/* expm1l.c
+ *
+ * Exponential function, minus 1
+ * 128-bit long double precision
+ *
+ *
+ *
+ * SYNOPSIS:
+ *
+ * long double x, y, expm1l();
+ *
+ * y = expm1l( x );
+ *
+ *
+ *
+ * DESCRIPTION:
+ *
+ * Returns e (2.71828...) raised to the x power, minus one.
+ *
+ * Range reduction is accomplished by separating the argument
+ * into an integer k and fraction f such that
+ *
+ * x k f
+ * e = 2 e.
+ *
+ * An expansion x + .5 x^2 + x^3 R(x) approximates exp(f) - 1
+ * in the basic range [-0.5 ln 2, 0.5 ln 2].
+ *
+ *
+ * ACCURACY:
+ *
+ * Relative error:
+ * arithmetic domain # trials peak rms
+ * IEEE -79,+MAXLOG 100,000 1.7e-34 4.5e-35
+ *
+ */
+
+/* Copyright 2001 by Stephen L. Moshier
+
+ This 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 2.1 of the License, or (at your option) any later version.
+
+ This 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 this library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+
+
+#include <errno.h>
+#include <float.h>
+#include <math.h>
+#include <math_private.h>
+
+/* exp(x) - 1 = x + 0.5 x^2 + x^3 P(x)/Q(x)
+ -.5 ln 2 < x < .5 ln 2
+ Theoretical peak relative error = 8.1e-36 */
+
+static const _Float128
+ P0 = L(2.943520915569954073888921213330863757240E8),
+ P1 = L(-5.722847283900608941516165725053359168840E7),
+ P2 = L(8.944630806357575461578107295909719817253E6),
+ P3 = L(-7.212432713558031519943281748462837065308E5),
+ P4 = L(4.578962475841642634225390068461943438441E4),
+ P5 = L(-1.716772506388927649032068540558788106762E3),
+ P6 = L(4.401308817383362136048032038528753151144E1),
+ P7 = L(-4.888737542888633647784737721812546636240E-1),
+ Q0 = L(1.766112549341972444333352727998584753865E9),
+ Q1 = L(-7.848989743695296475743081255027098295771E8),
+ Q2 = L(1.615869009634292424463780387327037251069E8),
+ Q3 = L(-2.019684072836541751428967854947019415698E7),
+ Q4 = L(1.682912729190313538934190635536631941751E6),
+ Q5 = L(-9.615511549171441430850103489315371768998E4),
+ Q6 = L(3.697714952261803935521187272204485251835E3),
+ Q7 = L(-8.802340681794263968892934703309274564037E1),
+ /* Q8 = 1.000000000000000000000000000000000000000E0 */
+/* C1 + C2 = ln 2 */
+
+ C1 = L(6.93145751953125E-1),
+ C2 = L(1.428606820309417232121458176568075500134E-6),
+/* ln 2^-114 */
+ minarg = L(-7.9018778583833765273564461846232128760607E1), big = L(1e4932);
+
+
+_Float128
+__expm1l (_Float128 x)
+{
+ _Float128 px, qx, xx;
+ int32_t ix, sign;
+ ieee854_long_double_shape_type u;
+ int k;
+
+ /* Detect infinity and NaN. */
+ u.value = x;
+ ix = u.parts32.w0;
+ sign = ix & 0x80000000;
+ ix &= 0x7fffffff;
+ if (!sign && ix >= 0x40060000)
+ {
+ /* If num is positive and exp >= 6 use plain exp. */
+ return __expl (x);
+ }
+ if (ix >= 0x7fff0000)
+ {
+ /* Infinity (which must be negative infinity). */
+ if (((ix & 0xffff) | u.parts32.w1 | u.parts32.w2 | u.parts32.w3) == 0)
+ return -1;
+ /* NaN. Invalid exception if signaling. */
+ return x + x;
+ }
+
+ /* expm1(+- 0) = +- 0. */
+ if ((ix == 0) && (u.parts32.w1 | u.parts32.w2 | u.parts32.w3) == 0)
+ return x;
+
+ /* Minimum value. */
+ if (x < minarg)
+ return (4.0/big - 1);
+
+ /* Avoid internal underflow when result does not underflow, while
+ ensuring underflow (without returning a zero of the wrong sign)
+ when the result does underflow. */
+ if (fabsl (x) < L(0x1p-113))
+ {
+ math_check_force_underflow (x);
+ return x;
+ }
+
+ /* Express x = ln 2 (k + remainder), remainder not exceeding 1/2. */
+ xx = C1 + C2; /* ln 2. */
+ px = __floorl (0.5 + x / xx);
+ k = px;
+ /* remainder times ln 2 */
+ x -= px * C1;
+ x -= px * C2;
+
+ /* Approximate exp(remainder ln 2). */
+ px = (((((((P7 * x
+ + P6) * x
+ + P5) * x + P4) * x + P3) * x + P2) * x + P1) * x + P0) * x;
+
+ qx = (((((((x
+ + Q7) * x
+ + Q6) * x + Q5) * x + Q4) * x + Q3) * x + Q2) * x + Q1) * x + Q0;
+
+ xx = x * x;
+ qx = x + (0.5 * xx + xx * px / qx);
+
+ /* exp(x) = exp(k ln 2) exp(remainder ln 2) = 2^k exp(remainder ln 2).
+
+ We have qx = exp(remainder ln 2) - 1, so
+ exp(x) - 1 = 2^k (qx + 1) - 1
+ = 2^k qx + 2^k - 1. */
+
+ px = __ldexpl (1, k);
+ x = px * qx + (px - 1.0);
+ return x;
+}
+libm_hidden_def (__expm1l)
+weak_alias (__expm1l, expm1l)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128/s_fabsl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128/s_fabsl.c
new file mode 100644
index 0000000000..0ce6f734cf
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128/s_fabsl.c
@@ -0,0 +1,34 @@
+/* s_fabsl.c -- long double version of s_fabs.c.
+ * Conversion to IEEE quad long double by Jakub Jelinek, jj@ultra.linux.cz.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: $";
+#endif
+
+/*
+ * fabsl(x) returns the absolute value of x.
+ */
+
+#include <math.h>
+#include <math_private.h>
+
+_Float128 __fabsl(_Float128 x)
+{
+ u_int64_t hx;
+ GET_LDOUBLE_MSW64(hx,x);
+ SET_LDOUBLE_MSW64(x,hx&0x7fffffffffffffffLL);
+ return x;
+}
+weak_alias (__fabsl, fabsl)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128/s_finitel.c b/REORG.TODO/sysdeps/ieee754/ldbl-128/s_finitel.c
new file mode 100644
index 0000000000..7c699688fe
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128/s_finitel.c
@@ -0,0 +1,36 @@
+/* s_finitel.c -- long double version of s_finite.c.
+ * Conversion to IEEE quad long double by Jakub Jelinek, jj@ultra.linux.cz.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: $";
+#endif
+
+/*
+ * finitel(x) returns 1 is x is finite, else 0;
+ * no branching!
+ */
+
+#include <math.h>
+#include <math_private.h>
+
+int __finitel(_Float128 x)
+{
+ int64_t hx;
+ GET_LDOUBLE_MSW64(hx,x);
+ return (int)((u_int64_t)((hx&0x7fff000000000000LL)
+ -0x7fff000000000000LL)>>63);
+}
+mathx_hidden_def (__finitel)
+weak_alias (__finitel, finitel)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128/s_floorl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128/s_floorl.c
new file mode 100644
index 0000000000..13ad0848a4
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128/s_floorl.c
@@ -0,0 +1,67 @@
+/* s_floorl.c -- long double version of s_floor.c.
+ * Conversion to IEEE quad long double by Jakub Jelinek, jj@ultra.linux.cz.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: $";
+#endif
+
+/*
+ * floorl(x)
+ * Return x rounded toward -inf to integral value
+ * Method:
+ * Bit twiddling.
+ */
+
+#include <math.h>
+#include <math_private.h>
+
+_Float128 __floorl(_Float128 x)
+{
+ int64_t i0,i1,j0;
+ u_int64_t i,j;
+ GET_LDOUBLE_WORDS64(i0,i1,x);
+ j0 = ((i0>>48)&0x7fff)-0x3fff;
+ if(j0<48) {
+ if(j0<0) {
+ /* return 0*sign(x) if |x|<1 */
+ if(i0>=0) {i0=i1=0;}
+ else if(((i0&0x7fffffffffffffffLL)|i1)!=0)
+ { i0=0xbfff000000000000ULL;i1=0;}
+ } else {
+ i = (0x0000ffffffffffffULL)>>j0;
+ if(((i0&i)|i1)==0) return x; /* x is integral */
+ if(i0<0) i0 += (0x0001000000000000LL)>>j0;
+ i0 &= (~i); i1=0;
+ }
+ } else if (j0>111) {
+ if(j0==0x4000) return x+x; /* inf or NaN */
+ else return x; /* x is integral */
+ } else {
+ i = -1ULL>>(j0-48);
+ if((i1&i)==0) return x; /* x is integral */
+ if(i0<0) {
+ if(j0==48) i0+=1;
+ else {
+ j = i1+(1LL<<(112-j0));
+ if(j<i1) i0 +=1 ; /* got a carry */
+ i1=j;
+ }
+ }
+ i1 &= (~i);
+ }
+ SET_LDOUBLE_WORDS64(x,i0,i1);
+ return x;
+}
+weak_alias (__floorl, floorl)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128/s_fma.c b/REORG.TODO/sysdeps/ieee754/ldbl-128/s_fma.c
new file mode 100644
index 0000000000..13da2904f4
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128/s_fma.c
@@ -0,0 +1,55 @@
+/* Compute x * y + z as ternary operation.
+ Copyright (C) 2010-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Jakub Jelinek <jakub@redhat.com>, 2010.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+#include <fenv.h>
+#include <ieee754.h>
+
+/* This implementation relies on long double being more than twice as
+ precise as double and uses rounding to odd in order to avoid problems
+ with double rounding.
+ See a paper by Boldo and Melquiond:
+ http://www.lri.fr/~melquion/doc/08-tc.pdf */
+
+double
+__fma (double x, double y, double z)
+{
+ fenv_t env;
+ /* Multiplication is always exact. */
+ long double temp = (long double) x * (long double) y;
+
+ /* Ensure correct sign of an exact zero result by performing the
+ addition in the original rounding mode in that case. */
+ if (temp == -z)
+ return (double) temp + z;
+
+ union ieee854_long_double u;
+ feholdexcept (&env);
+ fesetround (FE_TOWARDZERO);
+ /* Perform addition with round to odd. */
+ u.d = temp + (long double) z;
+ if ((u.ieee.mantissa3 & 1) == 0 && u.ieee.exponent != 0x7fff)
+ u.ieee.mantissa3 |= fetestexcept (FE_INEXACT) != 0;
+ feupdateenv (&env);
+ /* And finally truncation with round to nearest. */
+ return (double) u.d;
+}
+#ifndef __fma
+weak_alias (__fma, fma)
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128/s_fmal.c b/REORG.TODO/sysdeps/ieee754/ldbl-128/s_fmal.c
new file mode 100644
index 0000000000..40c4e73d2b
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128/s_fmal.c
@@ -0,0 +1,298 @@
+/* Compute x * y + z as ternary operation.
+ Copyright (C) 2010-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Jakub Jelinek <jakub@redhat.com>, 2010.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <float.h>
+#include <math.h>
+#include <fenv.h>
+#include <ieee754.h>
+#include <math_private.h>
+#include <tininess.h>
+
+/* This implementation uses rounding to odd to avoid problems with
+ double rounding. See a paper by Boldo and Melquiond:
+ http://www.lri.fr/~melquion/doc/08-tc.pdf */
+
+_Float128
+__fmal (_Float128 x, _Float128 y, _Float128 z)
+{
+ union ieee854_long_double u, v, w;
+ int adjust = 0;
+ u.d = x;
+ v.d = y;
+ w.d = z;
+ if (__builtin_expect (u.ieee.exponent + v.ieee.exponent
+ >= 0x7fff + IEEE854_LONG_DOUBLE_BIAS
+ - LDBL_MANT_DIG, 0)
+ || __builtin_expect (u.ieee.exponent >= 0x7fff - LDBL_MANT_DIG, 0)
+ || __builtin_expect (v.ieee.exponent >= 0x7fff - LDBL_MANT_DIG, 0)
+ || __builtin_expect (w.ieee.exponent >= 0x7fff - LDBL_MANT_DIG, 0)
+ || __builtin_expect (u.ieee.exponent + v.ieee.exponent
+ <= IEEE854_LONG_DOUBLE_BIAS + LDBL_MANT_DIG, 0))
+ {
+ /* If z is Inf, but x and y are finite, the result should be
+ z rather than NaN. */
+ if (w.ieee.exponent == 0x7fff
+ && u.ieee.exponent != 0x7fff
+ && v.ieee.exponent != 0x7fff)
+ return (z + x) + y;
+ /* If z is zero and x are y are nonzero, compute the result
+ as x * y to avoid the wrong sign of a zero result if x * y
+ underflows to 0. */
+ if (z == 0 && x != 0 && y != 0)
+ return x * y;
+ /* If x or y or z is Inf/NaN, or if x * y is zero, compute as
+ x * y + z. */
+ if (u.ieee.exponent == 0x7fff
+ || v.ieee.exponent == 0x7fff
+ || w.ieee.exponent == 0x7fff
+ || x == 0
+ || y == 0)
+ return x * y + z;
+ /* If fma will certainly overflow, compute as x * y. */
+ if (u.ieee.exponent + v.ieee.exponent
+ > 0x7fff + IEEE854_LONG_DOUBLE_BIAS)
+ return x * y;
+ /* If x * y is less than 1/4 of LDBL_TRUE_MIN, neither the
+ result nor whether there is underflow depends on its exact
+ value, only on its sign. */
+ if (u.ieee.exponent + v.ieee.exponent
+ < IEEE854_LONG_DOUBLE_BIAS - LDBL_MANT_DIG - 2)
+ {
+ int neg = u.ieee.negative ^ v.ieee.negative;
+ _Float128 tiny = neg ? L(-0x1p-16494) : L(0x1p-16494);
+ if (w.ieee.exponent >= 3)
+ return tiny + z;
+ /* Scaling up, adding TINY and scaling down produces the
+ correct result, because in round-to-nearest mode adding
+ TINY has no effect and in other modes double rounding is
+ harmless. But it may not produce required underflow
+ exceptions. */
+ v.d = z * L(0x1p114) + tiny;
+ if (TININESS_AFTER_ROUNDING
+ ? v.ieee.exponent < 115
+ : (w.ieee.exponent == 0
+ || (w.ieee.exponent == 1
+ && w.ieee.negative != neg
+ && w.ieee.mantissa3 == 0
+ && w.ieee.mantissa2 == 0
+ && w.ieee.mantissa1 == 0
+ && w.ieee.mantissa0 == 0)))
+ {
+ _Float128 force_underflow = x * y;
+ math_force_eval (force_underflow);
+ }
+ return v.d * L(0x1p-114);
+ }
+ if (u.ieee.exponent + v.ieee.exponent
+ >= 0x7fff + IEEE854_LONG_DOUBLE_BIAS - LDBL_MANT_DIG)
+ {
+ /* Compute 1p-113 times smaller result and multiply
+ at the end. */
+ if (u.ieee.exponent > v.ieee.exponent)
+ u.ieee.exponent -= LDBL_MANT_DIG;
+ else
+ v.ieee.exponent -= LDBL_MANT_DIG;
+ /* If x + y exponent is very large and z exponent is very small,
+ it doesn't matter if we don't adjust it. */
+ if (w.ieee.exponent > LDBL_MANT_DIG)
+ w.ieee.exponent -= LDBL_MANT_DIG;
+ adjust = 1;
+ }
+ else if (w.ieee.exponent >= 0x7fff - LDBL_MANT_DIG)
+ {
+ /* Similarly.
+ If z exponent is very large and x and y exponents are
+ very small, adjust them up to avoid spurious underflows,
+ rather than down. */
+ if (u.ieee.exponent + v.ieee.exponent
+ <= IEEE854_LONG_DOUBLE_BIAS + 2 * LDBL_MANT_DIG)
+ {
+ if (u.ieee.exponent > v.ieee.exponent)
+ u.ieee.exponent += 2 * LDBL_MANT_DIG + 2;
+ else
+ v.ieee.exponent += 2 * LDBL_MANT_DIG + 2;
+ }
+ else if (u.ieee.exponent > v.ieee.exponent)
+ {
+ if (u.ieee.exponent > LDBL_MANT_DIG)
+ u.ieee.exponent -= LDBL_MANT_DIG;
+ }
+ else if (v.ieee.exponent > LDBL_MANT_DIG)
+ v.ieee.exponent -= LDBL_MANT_DIG;
+ w.ieee.exponent -= LDBL_MANT_DIG;
+ adjust = 1;
+ }
+ else if (u.ieee.exponent >= 0x7fff - LDBL_MANT_DIG)
+ {
+ u.ieee.exponent -= LDBL_MANT_DIG;
+ if (v.ieee.exponent)
+ v.ieee.exponent += LDBL_MANT_DIG;
+ else
+ v.d *= L(0x1p113);
+ }
+ else if (v.ieee.exponent >= 0x7fff - LDBL_MANT_DIG)
+ {
+ v.ieee.exponent -= LDBL_MANT_DIG;
+ if (u.ieee.exponent)
+ u.ieee.exponent += LDBL_MANT_DIG;
+ else
+ u.d *= L(0x1p113);
+ }
+ else /* if (u.ieee.exponent + v.ieee.exponent
+ <= IEEE854_LONG_DOUBLE_BIAS + LDBL_MANT_DIG) */
+ {
+ if (u.ieee.exponent > v.ieee.exponent)
+ u.ieee.exponent += 2 * LDBL_MANT_DIG + 2;
+ else
+ v.ieee.exponent += 2 * LDBL_MANT_DIG + 2;
+ if (w.ieee.exponent <= 4 * LDBL_MANT_DIG + 6)
+ {
+ if (w.ieee.exponent)
+ w.ieee.exponent += 2 * LDBL_MANT_DIG + 2;
+ else
+ w.d *= L(0x1p228);
+ adjust = -1;
+ }
+ /* Otherwise x * y should just affect inexact
+ and nothing else. */
+ }
+ x = u.d;
+ y = v.d;
+ z = w.d;
+ }
+
+ /* Ensure correct sign of exact 0 + 0. */
+ if (__glibc_unlikely ((x == 0 || y == 0) && z == 0))
+ {
+ x = math_opt_barrier (x);
+ return x * y + z;
+ }
+
+ fenv_t env;
+ feholdexcept (&env);
+ fesetround (FE_TONEAREST);
+
+ /* Multiplication m1 + m2 = x * y using Dekker's algorithm. */
+#define C ((1LL << (LDBL_MANT_DIG + 1) / 2) + 1)
+ _Float128 x1 = x * C;
+ _Float128 y1 = y * C;
+ _Float128 m1 = x * y;
+ x1 = (x - x1) + x1;
+ y1 = (y - y1) + y1;
+ _Float128 x2 = x - x1;
+ _Float128 y2 = y - y1;
+ _Float128 m2 = (((x1 * y1 - m1) + x1 * y2) + x2 * y1) + x2 * y2;
+
+ /* Addition a1 + a2 = z + m1 using Knuth's algorithm. */
+ _Float128 a1 = z + m1;
+ _Float128 t1 = a1 - z;
+ _Float128 t2 = a1 - t1;
+ t1 = m1 - t1;
+ t2 = z - t2;
+ _Float128 a2 = t1 + t2;
+ /* Ensure the arithmetic is not scheduled after feclearexcept call. */
+ math_force_eval (m2);
+ math_force_eval (a2);
+ feclearexcept (FE_INEXACT);
+
+ /* If the result is an exact zero, ensure it has the correct sign. */
+ if (a1 == 0 && m2 == 0)
+ {
+ feupdateenv (&env);
+ /* Ensure that round-to-nearest value of z + m1 is not reused. */
+ z = math_opt_barrier (z);
+ return z + m1;
+ }
+
+ fesetround (FE_TOWARDZERO);
+ /* Perform m2 + a2 addition with round to odd. */
+ u.d = a2 + m2;
+
+ if (__glibc_likely (adjust == 0))
+ {
+ if ((u.ieee.mantissa3 & 1) == 0 && u.ieee.exponent != 0x7fff)
+ u.ieee.mantissa3 |= fetestexcept (FE_INEXACT) != 0;
+ feupdateenv (&env);
+ /* Result is a1 + u.d. */
+ return a1 + u.d;
+ }
+ else if (__glibc_likely (adjust > 0))
+ {
+ if ((u.ieee.mantissa3 & 1) == 0 && u.ieee.exponent != 0x7fff)
+ u.ieee.mantissa3 |= fetestexcept (FE_INEXACT) != 0;
+ feupdateenv (&env);
+ /* Result is a1 + u.d, scaled up. */
+ return (a1 + u.d) * L(0x1p113);
+ }
+ else
+ {
+ if ((u.ieee.mantissa3 & 1) == 0)
+ u.ieee.mantissa3 |= fetestexcept (FE_INEXACT) != 0;
+ v.d = a1 + u.d;
+ /* Ensure the addition is not scheduled after fetestexcept call. */
+ math_force_eval (v.d);
+ int j = fetestexcept (FE_INEXACT) != 0;
+ feupdateenv (&env);
+ /* Ensure the following computations are performed in default rounding
+ mode instead of just reusing the round to zero computation. */
+ asm volatile ("" : "=m" (u) : "m" (u));
+ /* If a1 + u.d is exact, the only rounding happens during
+ scaling down. */
+ if (j == 0)
+ return v.d * L(0x1p-228);
+ /* If result rounded to zero is not subnormal, no double
+ rounding will occur. */
+ if (v.ieee.exponent > 228)
+ return (a1 + u.d) * L(0x1p-228);
+ /* If v.d * 0x1p-228L with round to zero is a subnormal above
+ or equal to LDBL_MIN / 2, then v.d * 0x1p-228L shifts mantissa
+ down just by 1 bit, which means v.ieee.mantissa3 |= j would
+ change the round bit, not sticky or guard bit.
+ v.d * 0x1p-228L never normalizes by shifting up,
+ so round bit plus sticky bit should be already enough
+ for proper rounding. */
+ if (v.ieee.exponent == 228)
+ {
+ /* If the exponent would be in the normal range when
+ rounding to normal precision with unbounded exponent
+ range, the exact result is known and spurious underflows
+ must be avoided on systems detecting tininess after
+ rounding. */
+ if (TININESS_AFTER_ROUNDING)
+ {
+ w.d = a1 + u.d;
+ if (w.ieee.exponent == 229)
+ return w.d * L(0x1p-228);
+ }
+ /* v.ieee.mantissa3 & 2 is LSB bit of the result before rounding,
+ v.ieee.mantissa3 & 1 is the round bit and j is our sticky
+ bit. */
+ w.d = 0;
+ w.ieee.mantissa3 = ((v.ieee.mantissa3 & 3) << 1) | j;
+ w.ieee.negative = v.ieee.negative;
+ v.ieee.mantissa3 &= ~3U;
+ v.d *= L(0x1p-228);
+ w.d *= L(0x1p-2);
+ return v.d + w.d;
+ }
+ v.ieee.mantissa3 |= j;
+ return v.d * L(0x1p-228);
+ }
+}
+weak_alias (__fmal, fmal)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128/s_fpclassifyl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128/s_fpclassifyl.c
new file mode 100644
index 0000000000..daa7d79ec2
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128/s_fpclassifyl.c
@@ -0,0 +1,44 @@
+/* Return classification value corresponding to argument.
+ Copyright (C) 1997-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997 and
+ Jakub Jelinek <jj@ultra.linux.cz>, 1999.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+
+#include <math_private.h>
+
+
+int
+__fpclassifyl (_Float128 x)
+{
+ u_int64_t hx, lx;
+ int retval = FP_NORMAL;
+
+ GET_LDOUBLE_WORDS64 (hx, lx, x);
+ lx |= (hx & 0x0000ffffffffffffLL);
+ hx &= 0x7fff000000000000LL;
+ if ((hx | lx) == 0)
+ retval = FP_ZERO;
+ else if (hx == 0)
+ retval = FP_SUBNORMAL;
+ else if (hx == 0x7fff000000000000LL)
+ retval = lx != 0 ? FP_NAN : FP_INFINITE;
+
+ return retval;
+}
+libm_hidden_def (__fpclassifyl)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128/s_frexpl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128/s_frexpl.c
new file mode 100644
index 0000000000..47a171f551
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128/s_frexpl.c
@@ -0,0 +1,54 @@
+/* s_frexpl.c -- long double version of s_frexp.c.
+ * Conversion to IEEE quad long double by Jakub Jelinek, jj@ultra.linux.cz.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: $";
+#endif
+
+/*
+ * for non-zero x
+ * x = frexpl(arg,&exp);
+ * return a long double fp quantity x such that 0.5 <= |x| <1.0
+ * and the corresponding binary exponent "exp". That is
+ * arg = x*2^exp.
+ * If arg is inf, 0.0, or NaN, then frexpl(arg,&exp) returns arg
+ * with *exp=0.
+ */
+
+#include <math.h>
+#include <math_private.h>
+
+static const _Float128
+two114 = L(2.0769187434139310514121985316880384E+34); /* 0x4071000000000000, 0 */
+
+_Float128 __frexpl(_Float128 x, int *eptr)
+{
+ u_int64_t hx, lx, ix;
+ GET_LDOUBLE_WORDS64(hx,lx,x);
+ ix = 0x7fffffffffffffffULL&hx;
+ *eptr = 0;
+ if(ix>=0x7fff000000000000ULL||((ix|lx)==0)) return x + x;/* 0,inf,nan */
+ if (ix<0x0001000000000000ULL) { /* subnormal */
+ x *= two114;
+ GET_LDOUBLE_MSW64(hx,x);
+ ix = hx&0x7fffffffffffffffULL;
+ *eptr = -114;
+ }
+ *eptr += (ix>>48)-16382;
+ hx = (hx&0x8000ffffffffffffULL) | 0x3ffe000000000000ULL;
+ SET_LDOUBLE_MSW64(x,hx);
+ return x;
+}
+weak_alias (__frexpl, frexpl)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128/s_fromfpl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128/s_fromfpl.c
new file mode 100644
index 0000000000..e323b4c25b
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128/s_fromfpl.c
@@ -0,0 +1,4 @@
+#define UNSIGNED 0
+#define INEXACT 0
+#define FUNC fromfpl
+#include <s_fromfpl_main.c>
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128/s_fromfpl_main.c b/REORG.TODO/sysdeps/ieee754/ldbl-128/s_fromfpl_main.c
new file mode 100644
index 0000000000..7dc507111b
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128/s_fromfpl_main.c
@@ -0,0 +1,90 @@
+/* Round to integer type. ldbl-128 version.
+ Copyright (C) 2016-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <errno.h>
+#include <fenv.h>
+#include <math.h>
+#include <math_private.h>
+#include <stdbool.h>
+#include <stdint.h>
+
+#define BIAS 0x3fff
+#define MANT_DIG 113
+
+#if UNSIGNED
+# define RET_TYPE uintmax_t
+#else
+# define RET_TYPE intmax_t
+#endif
+
+#include <fromfp.h>
+
+RET_TYPE
+FUNC (_Float128 x, int round, unsigned int width)
+{
+ if (width > INTMAX_WIDTH)
+ width = INTMAX_WIDTH;
+ uint64_t hx, lx;
+ GET_LDOUBLE_WORDS64 (hx, lx, x);
+ bool negative = (hx & 0x8000000000000000ULL) != 0;
+ if (width == 0)
+ return fromfp_domain_error (negative, width);
+ hx &= 0x7fffffffffffffffULL;
+ if ((hx | lx) == 0)
+ return 0;
+ int exponent = hx >> (MANT_DIG - 1 - 64);
+ exponent -= BIAS;
+ int max_exponent = fromfp_max_exponent (negative, width);
+ if (exponent > max_exponent)
+ return fromfp_domain_error (negative, width);
+
+ hx &= ((1ULL << (MANT_DIG - 1 - 64)) - 1);
+ hx |= 1ULL << (MANT_DIG - 1 - 64);
+ uintmax_t uret;
+ bool half_bit, more_bits;
+ /* The exponent is at most 63, so we are shifting right by at least
+ 49 bits. */
+ if (exponent >= -1)
+ {
+ int shift = MANT_DIG - 1 - exponent;
+ if (shift <= 64)
+ {
+ uint64_t h = 1ULL << (shift - 1);
+ half_bit = (lx & h) != 0;
+ more_bits = (lx & (h - 1)) != 0;
+ uret = hx << (64 - shift);
+ if (shift != 64)
+ uret |= lx >> shift;
+ }
+ else
+ {
+ uint64_t h = 1ULL << (shift - 1 - 64);
+ half_bit = (hx & h) != 0;
+ more_bits = ((hx & (h - 1)) | lx) != 0;
+ uret = hx >> (shift - 64);
+ }
+ }
+ else
+ {
+ uret = 0;
+ half_bit = false;
+ more_bits = true;
+ }
+ return fromfp_round_and_return (negative, uret, half_bit, more_bits, round,
+ exponent, max_exponent, width);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128/s_fromfpxl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128/s_fromfpxl.c
new file mode 100644
index 0000000000..2f3189d7de
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128/s_fromfpxl.c
@@ -0,0 +1,4 @@
+#define UNSIGNED 0
+#define INEXACT 1
+#define FUNC fromfpxl
+#include <s_fromfpl_main.c>
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128/s_getpayloadl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128/s_getpayloadl.c
new file mode 100644
index 0000000000..d384645532
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128/s_getpayloadl.c
@@ -0,0 +1,57 @@
+/* Get NaN payload. ldbl-128 version.
+ Copyright (C) 2016-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+#include <math_private.h>
+#include <stdint.h>
+
+_Float128
+getpayloadl (const _Float128 *x)
+{
+ uint64_t hx, lx;
+ GET_LDOUBLE_WORDS64 (hx, lx, *x);
+ hx &= 0x7fffffffffffULL;
+ /* Construct the representation of the return value directly, since
+ 128-bit integers may not be available. */
+ int lz;
+ if (hx == 0)
+ {
+ if (lx == 0)
+ return 0.0L;
+ else
+ lz = __builtin_clzll (lx) + 64;
+ }
+ else
+ lz = __builtin_clzll (hx);
+ int shift = lz - 15;
+ if (shift >= 64)
+ {
+ hx = lx << (shift - 64);
+ lx = 0;
+ }
+ else
+ {
+ /* 2 <= SHIFT <= 63. */
+ hx = (hx << shift) | (lx >> (64 - shift));
+ lx <<= shift;
+ }
+ hx = (hx & 0xffffffffffffULL) | ((0x3fffULL + 127 - lz) << 48);
+ _Float128 ret;
+ SET_LDOUBLE_WORDS64 (ret, hx, lx);
+ return ret;
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128/s_isinfl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128/s_isinfl.c
new file mode 100644
index 0000000000..a41e8cf44b
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128/s_isinfl.c
@@ -0,0 +1,29 @@
+/*
+ * Written by J.T. Conklin <jtc@netbsd.org>.
+ * Change for long double by Jakub Jelinek <jj@ultra.linux.cz>
+ * Public domain.
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: $";
+#endif
+
+/*
+ * isinfl(x) returns 1 if x is inf, -1 if x is -inf, else 0;
+ * no branching!
+ */
+
+#include <math.h>
+#include <math_private.h>
+
+int
+__isinfl (_Float128 x)
+{
+ int64_t hx,lx;
+ GET_LDOUBLE_WORDS64(hx,lx,x);
+ lx |= (hx & 0x7fffffffffffffffLL) ^ 0x7fff000000000000LL;
+ lx |= -lx;
+ return ~(lx >> 63) & (hx >> 62);
+}
+mathx_hidden_def (__isinfl)
+weak_alias (__isinfl, isinfl)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128/s_isnanl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128/s_isnanl.c
new file mode 100644
index 0000000000..80f97fea4c
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128/s_isnanl.c
@@ -0,0 +1,38 @@
+/* s_isnanl.c -- long double version of s_isnan.c.
+ * Conversion to long double by Jakub Jelinek, jj@ultra.linux.cz.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: $";
+#endif
+
+/*
+ * isnanl(x) returns 1 is x is nan, else 0;
+ * no branching!
+ */
+
+#include <math.h>
+#include <math_private.h>
+
+int __isnanl(_Float128 x)
+{
+ int64_t hx,lx;
+ GET_LDOUBLE_WORDS64(hx,lx,x);
+ hx &= 0x7fffffffffffffffLL;
+ hx |= (u_int64_t)(lx|(-lx))>>63;
+ hx = 0x7fff000000000000LL - hx;
+ return (int)((u_int64_t)hx>>63);
+}
+mathx_hidden_def (__isnanl)
+weak_alias (__isnanl, isnanl)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128/s_issignalingl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128/s_issignalingl.c
new file mode 100644
index 0000000000..02d6a0ae07
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128/s_issignalingl.c
@@ -0,0 +1,46 @@
+/* Test for signaling NaN.
+ Copyright (C) 2013-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+#include <math_private.h>
+#include <nan-high-order-bit.h>
+
+int
+__issignalingl (_Float128 x)
+{
+ u_int64_t hxi, lxi __attribute__ ((unused));
+ GET_LDOUBLE_WORDS64 (hxi, lxi, x);
+#if HIGH_ORDER_BIT_IS_SET_FOR_SNAN
+ /* We only have to care about the high-order bit of x's significand, because
+ having it set (sNaN) already makes the significand different from that
+ used to designate infinity. */
+ return ((hxi & UINT64_C (0x7fff800000000000))
+ == UINT64_C (0x7fff800000000000));
+#else
+ /* To keep the following comparison simple, toggle the quiet/signaling bit,
+ so that it is set for sNaNs. This is inverse to IEEE 754-2008 (as well as
+ common practice for IEEE 754-1985). */
+ hxi ^= UINT64_C (0x0000800000000000);
+ /* If lxi != 0, then set any suitable bit of the significand in hxi. */
+ hxi |= (lxi | -lxi) >> 63;
+ /* We have to compare for greater (instead of greater or equal), because x's
+ significand being all-zero designates infinity not NaN. */
+ return (hxi & UINT64_C (0x7fffffffffffffff)) > UINT64_C (0x7fff800000000000);
+#endif
+}
+libm_hidden_def (__issignalingl)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128/s_llrintl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128/s_llrintl.c
new file mode 100644
index 0000000000..d08a90a1b3
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128/s_llrintl.c
@@ -0,0 +1,108 @@
+/* Round argument to nearest integral value according to current rounding
+ direction.
+ Copyright (C) 1997-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997 and
+ Jakub Jelinek <jj@ultra.linux.cz>, 1999.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <fenv.h>
+#include <limits.h>
+#include <math.h>
+
+#include <math_private.h>
+#include <fix-fp-int-convert-overflow.h>
+
+static const _Float128 two112[2] =
+{
+ L(5.19229685853482762853049632922009600E+33), /* 0x406F000000000000, 0 */
+ L(-5.19229685853482762853049632922009600E+33) /* 0xC06F000000000000, 0 */
+};
+
+long long int
+__llrintl (_Float128 x)
+{
+ int32_t j0;
+ u_int64_t i0,i1;
+ _Float128 w;
+ _Float128 t;
+ long long int result;
+ int sx;
+
+ GET_LDOUBLE_WORDS64 (i0, i1, x);
+ j0 = ((i0 >> 48) & 0x7fff) - 0x3fff;
+ sx = i0 >> 63;
+ i0 &= 0x0000ffffffffffffLL;
+ i0 |= 0x0001000000000000LL;
+
+ if (j0 < (int32_t) (8 * sizeof (long long int)) - 1)
+ {
+#if defined FE_INVALID || defined FE_INEXACT
+ /* X < LLONG_MAX + 1 implied by J0 < 63. */
+ if (x > (_Float128) LLONG_MAX)
+ {
+ /* In the event of overflow we must raise the "invalid"
+ exception, but not "inexact". */
+ t = __nearbyintl (x);
+ feraiseexcept (t == LLONG_MAX ? FE_INEXACT : FE_INVALID);
+ }
+ else
+#endif
+ {
+ w = two112[sx] + x;
+ t = w - two112[sx];
+ }
+ GET_LDOUBLE_WORDS64 (i0, i1, t);
+ j0 = ((i0 >> 48) & 0x7fff) - 0x3fff;
+ i0 &= 0x0000ffffffffffffLL;
+ i0 |= 0x0001000000000000LL;
+
+ if (j0 < 0)
+ result = 0;
+ else if (j0 <= 48)
+ result = i0 >> (48 - j0);
+ else
+ result = ((long long int) i0 << (j0 - 48)) | (i1 >> (112 - j0));
+ }
+ else
+ {
+ /* The number is too large. Unless it rounds to LLONG_MIN,
+ FE_INVALID must be raised and the return value is
+ unspecified. */
+#if defined FE_INVALID || defined FE_INEXACT
+ if (x < (_Float128) LLONG_MIN
+ && x > (_Float128) LLONG_MIN - 1)
+ {
+ /* If truncation produces LLONG_MIN, the cast will not raise
+ the exception, but may raise "inexact". */
+ t = __nearbyintl (x);
+ feraiseexcept (t == LLONG_MIN ? FE_INEXACT : FE_INVALID);
+ return LLONG_MIN;
+ }
+ else if (FIX_LDBL_LLONG_CONVERT_OVERFLOW && x != (_Float128) LLONG_MIN)
+ {
+ feraiseexcept (FE_INVALID);
+ return sx == 0 ? LLONG_MAX : LLONG_MIN;
+ }
+
+#endif
+ return (long long int) x;
+ }
+
+ return sx ? -result : result;
+}
+
+weak_alias (__llrintl, llrintl)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128/s_llroundl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128/s_llroundl.c
new file mode 100644
index 0000000000..bb0b5bcf4b
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128/s_llroundl.c
@@ -0,0 +1,102 @@
+/* Round long double value to long long int.
+ Copyright (C) 1997-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997 and
+ Jakub Jelinek <jj@ultra.linux.cz>, 1999.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <fenv.h>
+#include <limits.h>
+#include <math.h>
+
+#include <math_private.h>
+#include <fix-fp-int-convert-overflow.h>
+
+long long int
+__llroundl (_Float128 x)
+{
+ int64_t j0;
+ u_int64_t i1, i0;
+ long long int result;
+ int sign;
+
+ GET_LDOUBLE_WORDS64 (i0, i1, x);
+ j0 = ((i0 >> 48) & 0x7fff) - 0x3fff;
+ sign = (i0 & 0x8000000000000000ULL) != 0 ? -1 : 1;
+ i0 &= 0x0000ffffffffffffLL;
+ i0 |= 0x0001000000000000LL;
+
+ if (j0 < 48)
+ {
+ if (j0 < 0)
+ return j0 < -1 ? 0 : sign;
+ else
+ {
+ i0 += 0x0000800000000000LL >> j0;
+ result = i0 >> (48 - j0);
+ }
+ }
+ else if (j0 < (int32_t) (8 * sizeof (long long int)) - 1)
+ {
+ if (j0 >= 112)
+ result = ((long long int) i0 << (j0 - 48)) | (i1 << (j0 - 112));
+ else
+ {
+ u_int64_t j = i1 + (0x8000000000000000ULL >> (j0 - 48));
+ if (j < i1)
+ ++i0;
+
+ if (j0 == 48)
+ result = (long long int) i0;
+ else
+ {
+ result = ((long long int) i0 << (j0 - 48)) | (j >> (112 - j0));
+#ifdef FE_INVALID
+ if (sign == 1 && result == LLONG_MIN)
+ /* Rounding brought the value out of range. */
+ feraiseexcept (FE_INVALID);
+#endif
+ }
+ }
+ }
+ else
+ {
+ /* The number is too large. Unless it rounds to LLONG_MIN,
+ FE_INVALID must be raised and the return value is
+ unspecified. */
+#ifdef FE_INVALID
+ if (FIX_LDBL_LLONG_CONVERT_OVERFLOW
+ && !(sign == -1 && x > (_Float128) LLONG_MIN - L(0.5)))
+ {
+ feraiseexcept (FE_INVALID);
+ return sign == 1 ? LLONG_MAX : LLONG_MIN;
+ }
+ else if (!FIX_LDBL_LLONG_CONVERT_OVERFLOW
+ && x <= (_Float128) LLONG_MIN - L(0.5))
+ {
+ /* If truncation produces LLONG_MIN, the cast will not raise
+ the exception, but may raise "inexact". */
+ feraiseexcept (FE_INVALID);
+ return LLONG_MIN;
+ }
+#endif
+ return (long long int) x;
+ }
+
+ return sign * result;
+}
+
+weak_alias (__llroundl, llroundl)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128/s_log1pl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128/s_log1pl.c
new file mode 100644
index 0000000000..b8b2ffeba1
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128/s_log1pl.c
@@ -0,0 +1,256 @@
+/* log1pl.c
+ *
+ * Relative error logarithm
+ * Natural logarithm of 1+x, 128-bit long double precision
+ *
+ *
+ *
+ * SYNOPSIS:
+ *
+ * long double x, y, log1pl();
+ *
+ * y = log1pl( x );
+ *
+ *
+ *
+ * DESCRIPTION:
+ *
+ * Returns the base e (2.718...) logarithm of 1+x.
+ *
+ * The argument 1+x is separated into its exponent and fractional
+ * parts. If the exponent is between -1 and +1, the logarithm
+ * of the fraction is approximated by
+ *
+ * log(1+x) = x - 0.5 x^2 + x^3 P(x)/Q(x).
+ *
+ * Otherwise, setting z = 2(w-1)/(w+1),
+ *
+ * log(w) = z + z^3 P(z)/Q(z).
+ *
+ *
+ *
+ * ACCURACY:
+ *
+ * Relative error:
+ * arithmetic domain # trials peak rms
+ * IEEE -1, 8 100000 1.9e-34 4.3e-35
+ */
+
+/* Copyright 2001 by Stephen L. Moshier
+
+ This 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 2.1 of the License, or (at your option) any later version.
+
+ This 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 this library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+
+#include <float.h>
+#include <math.h>
+#include <math_private.h>
+
+/* Coefficients for log(1+x) = x - x^2 / 2 + x^3 P(x)/Q(x)
+ * 1/sqrt(2) <= 1+x < sqrt(2)
+ * Theoretical peak relative error = 5.3e-37,
+ * relative peak error spread = 2.3e-14
+ */
+static const _Float128
+ P12 = L(1.538612243596254322971797716843006400388E-6),
+ P11 = L(4.998469661968096229986658302195402690910E-1),
+ P10 = L(2.321125933898420063925789532045674660756E1),
+ P9 = L(4.114517881637811823002128927449878962058E2),
+ P8 = L(3.824952356185897735160588078446136783779E3),
+ P7 = L(2.128857716871515081352991964243375186031E4),
+ P6 = L(7.594356839258970405033155585486712125861E4),
+ P5 = L(1.797628303815655343403735250238293741397E5),
+ P4 = L(2.854829159639697837788887080758954924001E5),
+ P3 = L(3.007007295140399532324943111654767187848E5),
+ P2 = L(2.014652742082537582487669938141683759923E5),
+ P1 = L(7.771154681358524243729929227226708890930E4),
+ P0 = L(1.313572404063446165910279910527789794488E4),
+ /* Q12 = 1.000000000000000000000000000000000000000E0L, */
+ Q11 = L(4.839208193348159620282142911143429644326E1),
+ Q10 = L(9.104928120962988414618126155557301584078E2),
+ Q9 = L(9.147150349299596453976674231612674085381E3),
+ Q8 = L(5.605842085972455027590989944010492125825E4),
+ Q7 = L(2.248234257620569139969141618556349415120E5),
+ Q6 = L(6.132189329546557743179177159925690841200E5),
+ Q5 = L(1.158019977462989115839826904108208787040E6),
+ Q4 = L(1.514882452993549494932585972882995548426E6),
+ Q3 = L(1.347518538384329112529391120390701166528E6),
+ Q2 = L(7.777690340007566932935753241556479363645E5),
+ Q1 = L(2.626900195321832660448791748036714883242E5),
+ Q0 = L(3.940717212190338497730839731583397586124E4);
+
+/* Coefficients for log(x) = z + z^3 P(z^2)/Q(z^2),
+ * where z = 2(x-1)/(x+1)
+ * 1/sqrt(2) <= x < sqrt(2)
+ * Theoretical peak relative error = 1.1e-35,
+ * relative peak error spread 1.1e-9
+ */
+static const _Float128
+ R5 = L(-8.828896441624934385266096344596648080902E-1),
+ R4 = L(8.057002716646055371965756206836056074715E1),
+ R3 = L(-2.024301798136027039250415126250455056397E3),
+ R2 = L(2.048819892795278657810231591630928516206E4),
+ R1 = L(-8.977257995689735303686582344659576526998E4),
+ R0 = L(1.418134209872192732479751274970992665513E5),
+ /* S6 = 1.000000000000000000000000000000000000000E0L, */
+ S5 = L(-1.186359407982897997337150403816839480438E2),
+ S4 = L(3.998526750980007367835804959888064681098E3),
+ S3 = L(-5.748542087379434595104154610899551484314E4),
+ S2 = L(4.001557694070773974936904547424676279307E5),
+ S1 = L(-1.332535117259762928288745111081235577029E6),
+ S0 = L(1.701761051846631278975701529965589676574E6);
+
+/* C1 + C2 = ln 2 */
+static const _Float128 C1 = L(6.93145751953125E-1);
+static const _Float128 C2 = L(1.428606820309417232121458176568075500134E-6);
+
+static const _Float128 sqrth = L(0.7071067811865475244008443621048490392848);
+/* ln (2^16384 * (1 - 2^-113)) */
+static const _Float128 zero = 0;
+
+_Float128
+__log1pl (_Float128 xm1)
+{
+ _Float128 x, y, z, r, s;
+ ieee854_long_double_shape_type u;
+ int32_t hx;
+ int e;
+
+ /* Test for NaN or infinity input. */
+ u.value = xm1;
+ hx = u.parts32.w0;
+ if ((hx & 0x7fffffff) >= 0x7fff0000)
+ return xm1 + fabsl (xm1);
+
+ /* log1p(+- 0) = +- 0. */
+ if (((hx & 0x7fffffff) == 0)
+ && (u.parts32.w1 | u.parts32.w2 | u.parts32.w3) == 0)
+ return xm1;
+
+ if ((hx & 0x7fffffff) < 0x3f8e0000)
+ {
+ math_check_force_underflow (xm1);
+ if ((int) xm1 == 0)
+ return xm1;
+ }
+
+ if (xm1 >= L(0x1p113))
+ x = xm1;
+ else
+ x = xm1 + 1;
+
+ /* log1p(-1) = -inf */
+ if (x <= 0)
+ {
+ if (x == 0)
+ return (-1 / zero); /* log1p(-1) = -inf */
+ else
+ return (zero / (x - x));
+ }
+
+ /* Separate mantissa from exponent. */
+
+ /* Use frexp used so that denormal numbers will be handled properly. */
+ x = __frexpl (x, &e);
+
+ /* Logarithm using log(x) = z + z^3 P(z^2)/Q(z^2),
+ where z = 2(x-1)/x+1). */
+ if ((e > 2) || (e < -2))
+ {
+ if (x < sqrth)
+ { /* 2( 2x-1 )/( 2x+1 ) */
+ e -= 1;
+ z = x - L(0.5);
+ y = L(0.5) * z + L(0.5);
+ }
+ else
+ { /* 2 (x-1)/(x+1) */
+ z = x - L(0.5);
+ z -= L(0.5);
+ y = L(0.5) * x + L(0.5);
+ }
+ x = z / y;
+ z = x * x;
+ r = ((((R5 * z
+ + R4) * z
+ + R3) * z
+ + R2) * z
+ + R1) * z
+ + R0;
+ s = (((((z
+ + S5) * z
+ + S4) * z
+ + S3) * z
+ + S2) * z
+ + S1) * z
+ + S0;
+ z = x * (z * r / s);
+ z = z + e * C2;
+ z = z + x;
+ z = z + e * C1;
+ return (z);
+ }
+
+
+ /* Logarithm using log(1+x) = x - .5x^2 + x^3 P(x)/Q(x). */
+
+ if (x < sqrth)
+ {
+ e -= 1;
+ if (e != 0)
+ x = 2 * x - 1; /* 2x - 1 */
+ else
+ x = xm1;
+ }
+ else
+ {
+ if (e != 0)
+ x = x - 1;
+ else
+ x = xm1;
+ }
+ z = x * x;
+ r = (((((((((((P12 * x
+ + P11) * x
+ + P10) * x
+ + P9) * x
+ + P8) * x
+ + P7) * x
+ + P6) * x
+ + P5) * x
+ + P4) * x
+ + P3) * x
+ + P2) * x
+ + P1) * x
+ + P0;
+ s = (((((((((((x
+ + Q11) * x
+ + Q10) * x
+ + Q9) * x
+ + Q8) * x
+ + Q7) * x
+ + Q6) * x
+ + Q5) * x
+ + Q4) * x
+ + Q3) * x
+ + Q2) * x
+ + Q1) * x
+ + Q0;
+ y = x * (z * r / s);
+ y = y + e * C2;
+ z = y - L(0.5) * z;
+ z = z + x;
+ z = z + e * C1;
+ return (z);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128/s_logbl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128/s_logbl.c
new file mode 100644
index 0000000000..24baae64fa
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128/s_logbl.c
@@ -0,0 +1,54 @@
+/* s_logbl.c -- long double version of s_logb.c.
+ * Conversion to IEEE quad long double by Jakub Jelinek, jj@ultra.linux.cz.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: $";
+#endif
+
+/*
+ * long double logbl(x)
+ * IEEE 754 logb. Included to pass IEEE test suite. Not recommend.
+ * Use ilogb instead.
+ */
+
+#include <math.h>
+#include <math_private.h>
+
+_Float128
+__logbl (_Float128 x)
+{
+ int64_t lx, hx, ex;
+
+ GET_LDOUBLE_WORDS64 (hx, lx, x);
+ hx &= 0x7fffffffffffffffLL; /* high |x| */
+ if ((hx | lx) == 0)
+ return -1.0 / fabsl (x);
+ if (hx >= 0x7fff000000000000LL)
+ return x * x;
+ if ((ex = hx >> 48) == 0) /* IEEE 754 logb */
+ {
+ /* POSIX specifies that denormal number is treated as
+ though it were normalized. */
+ int ma;
+ if (hx == 0)
+ ma = __builtin_clzll (lx) + 64;
+ else
+ ma = __builtin_clzll (hx);
+ ex -= ma - 16;
+ }
+ return (_Float128) (ex - 16383);
+}
+
+weak_alias (__logbl, logbl)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128/s_lrintl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128/s_lrintl.c
new file mode 100644
index 0000000000..c690ddc8b8
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128/s_lrintl.c
@@ -0,0 +1,137 @@
+/* Round argument to nearest integral value according to current rounding
+ direction.
+ Copyright (C) 1997-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997 and
+ Jakub Jelinek <jj@ultra.linux.cz>, 1999.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <fenv.h>
+#include <limits.h>
+#include <math.h>
+
+#include <math_private.h>
+#include <fix-fp-int-convert-overflow.h>
+
+static const _Float128 two112[2] =
+{
+ L(5.19229685853482762853049632922009600E+33), /* 0x406F000000000000, 0 */
+ L(-5.19229685853482762853049632922009600E+33) /* 0xC06F000000000000, 0 */
+};
+
+long int
+__lrintl (_Float128 x)
+{
+ int32_t j0;
+ u_int64_t i0,i1;
+ _Float128 w;
+ _Float128 t;
+ long int result;
+ int sx;
+
+ GET_LDOUBLE_WORDS64 (i0, i1, x);
+ j0 = ((i0 >> 48) & 0x7fff) - 0x3fff;
+ sx = i0 >> 63;
+ i0 &= 0x0000ffffffffffffLL;
+ i0 |= 0x0001000000000000LL;
+
+ if (j0 < (int32_t) (8 * sizeof (long int)) - 1)
+ {
+ if (j0 < 48)
+ {
+#if defined FE_INVALID || defined FE_INEXACT
+ /* X < LONG_MAX + 1 implied by J0 < 31. */
+ if (sizeof (long int) == 4
+ && x > (_Float128) LONG_MAX)
+ {
+ /* In the event of overflow we must raise the "invalid"
+ exception, but not "inexact". */
+ t = __nearbyintl (x);
+ feraiseexcept (t == LONG_MAX ? FE_INEXACT : FE_INVALID);
+ }
+ else
+#endif
+ {
+ w = two112[sx] + x;
+ t = w - two112[sx];
+ }
+ GET_LDOUBLE_WORDS64 (i0, i1, t);
+ j0 = ((i0 >> 48) & 0x7fff) - 0x3fff;
+ i0 &= 0x0000ffffffffffffLL;
+ i0 |= 0x0001000000000000LL;
+
+ result = (j0 < 0 ? 0 : i0 >> (48 - j0));
+ }
+ else if (j0 >= 112)
+ result = ((long int) i0 << (j0 - 48)) | (i1 << (j0 - 112));
+ else
+ {
+#if defined FE_INVALID || defined FE_INEXACT
+ /* X < LONG_MAX + 1 implied by J0 < 63. */
+ if (sizeof (long int) == 8
+ && x > (_Float128) LONG_MAX)
+ {
+ /* In the event of overflow we must raise the "invalid"
+ exception, but not "inexact". */
+ t = __nearbyintl (x);
+ feraiseexcept (t == LONG_MAX ? FE_INEXACT : FE_INVALID);
+ }
+ else
+#endif
+ {
+ w = two112[sx] + x;
+ t = w - two112[sx];
+ }
+ GET_LDOUBLE_WORDS64 (i0, i1, t);
+ j0 = ((i0 >> 48) & 0x7fff) - 0x3fff;
+ i0 &= 0x0000ffffffffffffLL;
+ i0 |= 0x0001000000000000LL;
+
+ if (j0 == 48)
+ result = (long int) i0;
+ else
+ result = ((long int) i0 << (j0 - 48)) | (i1 >> (112 - j0));
+ }
+ }
+ else
+ {
+ /* The number is too large. Unless it rounds to LONG_MIN,
+ FE_INVALID must be raised and the return value is
+ unspecified. */
+#if defined FE_INVALID || defined FE_INEXACT
+ if (x < (_Float128) LONG_MIN
+ && x > (_Float128) LONG_MIN - 1)
+ {
+ /* If truncation produces LONG_MIN, the cast will not raise
+ the exception, but may raise "inexact". */
+ t = __nearbyintl (x);
+ feraiseexcept (t == LONG_MIN ? FE_INEXACT : FE_INVALID);
+ return LONG_MIN;
+ }
+ else if (FIX_LDBL_LONG_CONVERT_OVERFLOW && x != (_Float128) LONG_MIN)
+ {
+ feraiseexcept (FE_INVALID);
+ return sx == 0 ? LONG_MAX : LONG_MIN;
+ }
+
+#endif
+ return (long int) x;
+ }
+
+ return sx ? -result : result;
+}
+
+weak_alias (__lrintl, lrintl)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128/s_lroundl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128/s_lroundl.c
new file mode 100644
index 0000000000..419112519d
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128/s_lroundl.c
@@ -0,0 +1,113 @@
+/* Round long double value to long int.
+ Copyright (C) 1997-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997 and
+ Jakub Jelinek <jj@ultra.linux.cz>, 1999.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <fenv.h>
+#include <limits.h>
+#include <math.h>
+
+#include <math_private.h>
+#include <fix-fp-int-convert-overflow.h>
+
+long int
+__lroundl (_Float128 x)
+{
+ int64_t j0;
+ u_int64_t i1, i0;
+ long int result;
+ int sign;
+
+ GET_LDOUBLE_WORDS64 (i0, i1, x);
+ j0 = ((i0 >> 48) & 0x7fff) - 0x3fff;
+ sign = (i0 & 0x8000000000000000ULL) != 0 ? -1 : 1;
+ i0 &= 0x0000ffffffffffffLL;
+ i0 |= 0x0001000000000000LL;
+
+ if (j0 < (int32_t) (8 * sizeof (long int)) - 1)
+ {
+ if (j0 < 48)
+ {
+ if (j0 < 0)
+ return j0 < -1 ? 0 : sign;
+ else
+ {
+ i0 += 0x0000800000000000LL >> j0;
+ result = i0 >> (48 - j0);
+#ifdef FE_INVALID
+ if (sizeof (long int) == 4
+ && sign == 1
+ && result == LONG_MIN)
+ /* Rounding brought the value out of range. */
+ feraiseexcept (FE_INVALID);
+#endif
+ }
+ }
+ else if (j0 >= 112)
+ result = ((long int) i0 << (j0 - 48)) | (i1 << (j0 - 112));
+ else
+ {
+ u_int64_t j = i1 + (0x8000000000000000ULL >> (j0 - 48));
+ if (j < i1)
+ ++i0;
+
+ if (j0 == 48)
+ result = (long int) i0;
+ else
+ {
+ result = ((long int) i0 << (j0 - 48)) | (j >> (112 - j0));
+#ifdef FE_INVALID
+ if (sizeof (long int) == 8
+ && sign == 1
+ && result == LONG_MIN)
+ /* Rounding brought the value out of range. */
+ feraiseexcept (FE_INVALID);
+#endif
+ }
+ }
+ }
+ else
+ {
+ /* The number is too large. Unless it rounds to LONG_MIN,
+ FE_INVALID must be raised and the return value is
+ unspecified. */
+#ifdef FE_INVALID
+ if (FIX_LDBL_LONG_CONVERT_OVERFLOW
+ && !(sign == -1 && x > (_Float128) LONG_MIN - L(0.5)))
+ {
+ feraiseexcept (FE_INVALID);
+ return sign == 1 ? LONG_MAX : LONG_MIN;
+ }
+ else if (!FIX_LDBL_LONG_CONVERT_OVERFLOW
+ && x <= (_Float128) LONG_MIN - L(0.5))
+ {
+ /* If truncation produces LONG_MIN, the cast will not raise
+ the exception, but may raise "inexact". */
+ feraiseexcept (FE_INVALID);
+ return LONG_MIN;
+ }
+#endif
+ /* The number is too large. It is left implementation defined
+ what happens. */
+ return (long int) x;
+ }
+
+ return sign * result;
+}
+
+weak_alias (__lroundl, lroundl)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128/s_modfl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128/s_modfl.c
new file mode 100644
index 0000000000..01e150b24f
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128/s_modfl.c
@@ -0,0 +1,79 @@
+/* s_modfl.c -- long double version of s_modf.c.
+ * Conversion to IEEE quad long double by Jakub Jelinek, jj@ultra.linux.cz.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: $";
+#endif
+
+/*
+ * modfl(long double x, long double *iptr)
+ * return fraction part of x, and return x's integral part in *iptr.
+ * Method:
+ * Bit twiddling.
+ *
+ * Exception:
+ * No exception.
+ */
+
+#include <math.h>
+#include <math_private.h>
+
+static const _Float128 one = 1.0;
+
+_Float128 __modfl(_Float128 x, _Float128 *iptr)
+{
+ int64_t i0,i1,j0;
+ u_int64_t i;
+ GET_LDOUBLE_WORDS64(i0,i1,x);
+ j0 = ((i0>>48)&0x7fff)-0x3fff; /* exponent of x */
+ if(j0<48) { /* integer part in high x */
+ if(j0<0) { /* |x|<1 */
+ /* *iptr = +-0 */
+ SET_LDOUBLE_WORDS64(*iptr,i0&0x8000000000000000ULL,0);
+ return x;
+ } else {
+ i = (0x0000ffffffffffffLL)>>j0;
+ if(((i0&i)|i1)==0) { /* x is integral */
+ *iptr = x;
+ /* return +-0 */
+ SET_LDOUBLE_WORDS64(x,i0&0x8000000000000000ULL,0);
+ return x;
+ } else {
+ SET_LDOUBLE_WORDS64(*iptr,i0&(~i),0);
+ return x - *iptr;
+ }
+ }
+ } else if (j0>111) { /* no fraction part */
+ *iptr = x*one;
+ /* We must handle NaNs separately. */
+ if (j0 == 0x4000 && ((i0 & 0x0000ffffffffffffLL) | i1))
+ return x*one;
+ /* return +-0 */
+ SET_LDOUBLE_WORDS64(x,i0&0x8000000000000000ULL,0);
+ return x;
+ } else { /* fraction part in low x */
+ i = -1ULL>>(j0-48);
+ if((i1&i)==0) { /* x is integral */
+ *iptr = x;
+ /* return +-0 */
+ SET_LDOUBLE_WORDS64(x,i0&0x8000000000000000ULL,0);
+ return x;
+ } else {
+ SET_LDOUBLE_WORDS64(*iptr,i0,i1&(~i));
+ return x - *iptr;
+ }
+ }
+}
+weak_alias (__modfl, modfl)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128/s_nearbyintl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128/s_nearbyintl.c
new file mode 100644
index 0000000000..1565a8183f
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128/s_nearbyintl.c
@@ -0,0 +1,67 @@
+/* s_nearbyintl.c -- long double version of s_nearbyint.c.
+ * Conversion to IEEE quad long double by Jakub Jelinek, jj@ultra.linux.cz.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+/*
+ * nearbyintl(x)
+ * Return x rounded to integral value according to the prevailing
+ * rounding mode.
+ * Method:
+ * Using floating addition.
+ * Exception:
+ * Inexact flag raised if x not equal to rintl(x).
+ */
+
+#include <fenv.h>
+#include <math.h>
+#include <math_private.h>
+
+static const _Float128
+TWO112[2]={
+ L(5.19229685853482762853049632922009600E+33), /* 0x406F000000000000, 0 */
+ L(-5.19229685853482762853049632922009600E+33) /* 0xC06F000000000000, 0 */
+};
+
+_Float128 __nearbyintl(_Float128 x)
+{
+ fenv_t env;
+ int64_t i0,j0,sx;
+ u_int64_t i1 __attribute__ ((unused));
+ _Float128 w,t;
+ GET_LDOUBLE_WORDS64(i0,i1,x);
+ sx = (((u_int64_t)i0)>>63);
+ j0 = ((i0>>48)&0x7fff)-0x3fff;
+ if(j0<112) {
+ if(j0<0) {
+ feholdexcept (&env);
+ w = TWO112[sx]+x;
+ t = w-TWO112[sx];
+ math_force_eval (t);
+ fesetenv (&env);
+ GET_LDOUBLE_MSW64(i0,t);
+ SET_LDOUBLE_MSW64(t,(i0&0x7fffffffffffffffLL)|(sx<<63));
+ return t;
+ }
+ } else {
+ if(j0==0x4000) return x+x; /* inf or NaN */
+ else return x; /* x is integral */
+ }
+ feholdexcept (&env);
+ w = TWO112[sx]+x;
+ t = w-TWO112[sx];
+ math_force_eval (t);
+ fesetenv (&env);
+ return t;
+}
+weak_alias (__nearbyintl, nearbyintl)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128/s_nextafterl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128/s_nextafterl.c
new file mode 100644
index 0000000000..d29f58a7e0
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128/s_nextafterl.c
@@ -0,0 +1,86 @@
+/* s_nextafterl.c -- long double version of s_nextafter.c.
+ * Conversion to IEEE quad long double by Jakub Jelinek, jj@ultra.linux.cz.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: $";
+#endif
+
+/* IEEE functions
+ * nextafterl(x,y)
+ * return the next machine floating-point number of x in the
+ * direction toward y.
+ * Special cases:
+ */
+
+#include <errno.h>
+#include <math.h>
+#include <math_private.h>
+
+_Float128 __nextafterl(_Float128 x, _Float128 y)
+{
+ int64_t hx,hy,ix,iy;
+ u_int64_t lx,ly;
+
+ GET_LDOUBLE_WORDS64(hx,lx,x);
+ GET_LDOUBLE_WORDS64(hy,ly,y);
+ ix = hx&0x7fffffffffffffffLL; /* |x| */
+ iy = hy&0x7fffffffffffffffLL; /* |y| */
+
+ if(((ix>=0x7fff000000000000LL)&&((ix-0x7fff000000000000LL)|lx)!=0) || /* x is nan */
+ ((iy>=0x7fff000000000000LL)&&((iy-0x7fff000000000000LL)|ly)!=0)) /* y is nan */
+ return x+y;
+ if(x==y) return y; /* x=y, return y */
+ if((ix|lx)==0) { /* x == 0 */
+ _Float128 u;
+ SET_LDOUBLE_WORDS64(x,hy&0x8000000000000000ULL,1);/* return +-minsubnormal */
+ u = math_opt_barrier (x);
+ u = u * u;
+ math_force_eval (u); /* raise underflow flag */
+ return x;
+ }
+ if(hx>=0) { /* x > 0 */
+ if(hx>hy||((hx==hy)&&(lx>ly))) { /* x > y, x -= ulp */
+ if(lx==0) hx--;
+ lx--;
+ } else { /* x < y, x += ulp */
+ lx++;
+ if(lx==0) hx++;
+ }
+ } else { /* x < 0 */
+ if(hy>=0||hx>hy||((hx==hy)&&(lx>ly))){/* x < y, x -= ulp */
+ if(lx==0) hx--;
+ lx--;
+ } else { /* x > y, x += ulp */
+ lx++;
+ if(lx==0) hx++;
+ }
+ }
+ hy = hx&0x7fff000000000000LL;
+ if(hy==0x7fff000000000000LL) {
+ _Float128 u = x + x; /* overflow */
+ math_force_eval (u);
+ __set_errno (ERANGE);
+ }
+ if(hy==0) {
+ _Float128 u = x*x; /* underflow */
+ math_force_eval (u); /* raise underflow flag */
+ __set_errno (ERANGE);
+ }
+ SET_LDOUBLE_WORDS64(x,hx,lx);
+ return x;
+}
+weak_alias (__nextafterl, nextafterl)
+strong_alias (__nextafterl, __nexttowardl)
+weak_alias (__nextafterl, nexttowardl)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128/s_nexttoward.c b/REORG.TODO/sysdeps/ieee754/ldbl-128/s_nexttoward.c
new file mode 100644
index 0000000000..4343fe83f8
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128/s_nexttoward.c
@@ -0,0 +1,89 @@
+/* s_nexttoward.c
+ * Conversion from s_nextafter.c by Ulrich Drepper, Cygnus Support,
+ * drepper@cygnus.com and Jakub Jelinek, jj@ultra.linux.cz.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: $";
+#endif
+
+/* IEEE functions
+ * nexttoward(x,y)
+ * return the next machine floating-point number of x in the
+ * direction toward y.
+ * Special cases:
+ */
+
+#include <errno.h>
+#include <math.h>
+#include <math_private.h>
+#include <float.h>
+
+double __nexttoward(double x, long double y)
+{
+ int32_t hx,ix;
+ int64_t hy,iy;
+ u_int32_t lx;
+ u_int64_t ly;
+
+ EXTRACT_WORDS(hx,lx,x);
+ GET_LDOUBLE_WORDS64(hy,ly,y);
+ ix = hx&0x7fffffff; /* |x| */
+ iy = hy&0x7fffffffffffffffLL; /* |y| */
+
+ if(((ix>=0x7ff00000)&&((ix-0x7ff00000)|lx)!=0) || /* x is nan */
+ ((iy>=0x7fff000000000000LL)&&((iy-0x7fff000000000000LL)|ly)!=0))
+ /* y is nan */
+ return x+y;
+ if((long double) x==y) return y; /* x=y, return y */
+ if((ix|lx)==0) { /* x == 0 */
+ double u;
+ INSERT_WORDS(x,(u_int32_t)((hy>>32)&0x80000000),1);/* return +-minsub */
+ u = math_opt_barrier (x);
+ u = u * u;
+ math_force_eval (u); /* raise underflow flag */
+ return x;
+ }
+ if(hx>=0) { /* x > 0 */
+ if (x > y) { /* x -= ulp */
+ if(lx==0) hx -= 1;
+ lx -= 1;
+ } else { /* x < y, x += ulp */
+ lx += 1;
+ if(lx==0) hx += 1;
+ }
+ } else { /* x < 0 */
+ if (x < y) { /* x -= ulp */
+ if(lx==0) hx -= 1;
+ lx -= 1;
+ } else { /* x > y, x += ulp */
+ lx += 1;
+ if(lx==0) hx += 1;
+ }
+ }
+ hy = hx&0x7ff00000;
+ if(hy>=0x7ff00000) {
+ double u = x+x; /* overflow */
+ math_force_eval (u);
+ __set_errno (ERANGE);
+ }
+ if(hy<0x00100000) {
+ double u = x*x; /* underflow */
+ math_force_eval (u); /* raise underflow flag */
+ __set_errno (ERANGE);
+ }
+ INSERT_WORDS(x,hx,lx);
+ return x;
+}
+weak_alias (__nexttoward, nexttoward)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128/s_nexttowardf.c b/REORG.TODO/sysdeps/ieee754/ldbl-128/s_nexttowardf.c
new file mode 100644
index 0000000000..8703359d4f
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128/s_nexttowardf.c
@@ -0,0 +1,76 @@
+/* s_nexttowardf.c -- float version of s_nextafter.c.
+ * Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com
+ * and Jakub Jelinek, jj@ultra.linux.cz.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: $";
+#endif
+
+#include <errno.h>
+#include <math.h>
+#include <math_private.h>
+
+float __nexttowardf(float x, long double y)
+{
+ int32_t hx,ix;
+ int64_t hy,iy;
+ u_int64_t ly;
+
+ GET_FLOAT_WORD(hx,x);
+ GET_LDOUBLE_WORDS64(hy,ly,y);
+ ix = hx&0x7fffffff; /* |x| */
+ iy = hy&0x7fffffffffffffffLL; /* |y| */
+
+ if((ix>0x7f800000) || /* x is nan */
+ ((iy>=0x7fff000000000000LL)&&((iy-0x7fff000000000000LL)|ly)!=0))
+ /* y is nan */
+ return x+y;
+ if((long double) x==y) return y; /* x=y, return y */
+ if(ix==0) { /* x == 0 */
+ float u;
+ SET_FLOAT_WORD(x,(u_int32_t)((hy>>32)&0x80000000)|1);/* return +-minsub*/
+ u = math_opt_barrier (x);
+ u = u * u;
+ math_force_eval (u); /* raise underflow flag */
+ return x;
+ }
+ if(hx>=0) { /* x > 0 */
+ if(x > y) { /* x -= ulp */
+ hx -= 1;
+ } else { /* x < y, x += ulp */
+ hx += 1;
+ }
+ } else { /* x < 0 */
+ if(x < y) { /* x < y, x -= ulp */
+ hx -= 1;
+ } else { /* x > y, x += ulp */
+ hx += 1;
+ }
+ }
+ hy = hx&0x7f800000;
+ if(hy>=0x7f800000) {
+ float u = x+x; /* overflow */
+ math_force_eval (u);
+ __set_errno (ERANGE);
+ }
+ if(hy<0x00800000) {
+ float u = x*x; /* underflow */
+ math_force_eval (u); /* raise underflow flag */
+ __set_errno (ERANGE);
+ }
+ SET_FLOAT_WORD(x,hx);
+ return x;
+}
+weak_alias (__nexttowardf, nexttowardf)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128/s_nextupl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128/s_nextupl.c
new file mode 100644
index 0000000000..85f43b4eb0
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128/s_nextupl.c
@@ -0,0 +1,56 @@
+/* Return the least floating-point number greater than X.
+ Copyright (C) 2016-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+#include <math_private.h>
+
+/* Return the least floating-point number greater than X. */
+_Float128
+__nextupl (_Float128 x)
+{
+ int64_t hx, ix;
+ u_int64_t lx;
+
+ GET_LDOUBLE_WORDS64 (hx, lx, x);
+ ix = hx & 0x7fffffffffffffffLL;
+
+ /* x is nan. */
+ if (((ix >= 0x7fff000000000000LL)
+ && ((ix - 0x7fff000000000000LL) | lx) != 0))
+ return x + x;
+ if ((ix | lx) == 0)
+ return LDBL_TRUE_MIN;
+ if (hx >= 0)
+ { /* x > 0. */
+ if (isinf (x))
+ return x;
+ lx++;
+ if (lx == 0)
+ hx++;
+ }
+ else
+ { /* x < 0. */
+ if (lx == 0)
+ hx--;
+ lx--;
+ }
+ SET_LDOUBLE_WORDS64 (x, hx, lx);
+ return x;
+}
+
+weak_alias (__nextupl, nextupl)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128/s_remquol.c b/REORG.TODO/sysdeps/ieee754/ldbl-128/s_remquol.c
new file mode 100644
index 0000000000..d360f82dba
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128/s_remquol.c
@@ -0,0 +1,112 @@
+/* Compute remainder and a congruent to the quotient.
+ Copyright (C) 1997-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997 and
+ Jakub Jelinek <jj@ultra.linux.cz>, 1999.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+
+#include <math_private.h>
+
+
+static const _Float128 zero = 0.0;
+
+
+_Float128
+__remquol (_Float128 x, _Float128 y, int *quo)
+{
+ int64_t hx,hy;
+ u_int64_t sx,lx,ly,qs;
+ int cquo;
+
+ GET_LDOUBLE_WORDS64 (hx, lx, x);
+ GET_LDOUBLE_WORDS64 (hy, ly, y);
+ sx = hx & 0x8000000000000000ULL;
+ qs = sx ^ (hy & 0x8000000000000000ULL);
+ hy &= 0x7fffffffffffffffLL;
+ hx &= 0x7fffffffffffffffLL;
+
+ /* Purge off exception values. */
+ if ((hy | ly) == 0)
+ return (x * y) / (x * y); /* y = 0 */
+ if ((hx >= 0x7fff000000000000LL) /* x not finite */
+ || ((hy >= 0x7fff000000000000LL) /* y is NaN */
+ && (((hy - 0x7fff000000000000LL) | ly) != 0)))
+ return (x * y) / (x * y);
+
+ if (hy <= 0x7ffbffffffffffffLL)
+ x = __ieee754_fmodl (x, 8 * y); /* now x < 8y */
+
+ if (((hx - hy) | (lx - ly)) == 0)
+ {
+ *quo = qs ? -1 : 1;
+ return zero * x;
+ }
+
+ x = fabsl (x);
+ y = fabsl (y);
+ cquo = 0;
+
+ if (hy <= 0x7ffcffffffffffffLL && x >= 4 * y)
+ {
+ x -= 4 * y;
+ cquo += 4;
+ }
+ if (hy <= 0x7ffdffffffffffffLL && x >= 2 * y)
+ {
+ x -= 2 * y;
+ cquo += 2;
+ }
+
+ if (hy < 0x0002000000000000LL)
+ {
+ if (x + x > y)
+ {
+ x -= y;
+ ++cquo;
+ if (x + x >= y)
+ {
+ x -= y;
+ ++cquo;
+ }
+ }
+ }
+ else
+ {
+ _Float128 y_half = L(0.5) * y;
+ if (x > y_half)
+ {
+ x -= y;
+ ++cquo;
+ if (x >= y_half)
+ {
+ x -= y;
+ ++cquo;
+ }
+ }
+ }
+
+ *quo = qs ? -cquo : cquo;
+
+ /* Ensure correct sign of zero result in round-downward mode. */
+ if (x == 0)
+ x = 0;
+ if (sx)
+ x = -x;
+ return x;
+}
+weak_alias (__remquol, remquol)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128/s_rintl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128/s_rintl.c
new file mode 100644
index 0000000000..410951626b
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128/s_rintl.c
@@ -0,0 +1,62 @@
+/* s_rintl.c -- long double version of s_rint.c.
+ * Conversion to IEEE quad long double by Jakub Jelinek, jj@ultra.linux.cz.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: $";
+#endif
+
+/*
+ * rintl(x)
+ * Return x rounded to integral value according to the prevailing
+ * rounding mode.
+ * Method:
+ * Using floating addition.
+ * Exception:
+ * Inexact flag raised if x not equal to rintl(x).
+ */
+
+#include <math.h>
+#include <math_private.h>
+
+static const _Float128
+TWO112[2]={
+ 5.19229685853482762853049632922009600E+33L, /* 0x406F000000000000, 0 */
+ -5.19229685853482762853049632922009600E+33L /* 0xC06F000000000000, 0 */
+};
+
+_Float128 __rintl(_Float128 x)
+{
+ int64_t i0,j0,sx;
+ u_int64_t i1 __attribute__ ((unused));
+ _Float128 w,t;
+ GET_LDOUBLE_WORDS64(i0,i1,x);
+ sx = (((u_int64_t)i0)>>63);
+ j0 = ((i0>>48)&0x7fff)-0x3fff;
+ if(j0<112) {
+ if(j0<0) {
+ w = TWO112[sx]+x;
+ t = w-TWO112[sx];
+ GET_LDOUBLE_MSW64(i0,t);
+ SET_LDOUBLE_MSW64(t,(i0&0x7fffffffffffffffLL)|(sx<<63));
+ return t;
+ }
+ } else {
+ if(j0==0x4000) return x+x; /* inf or NaN */
+ else return x; /* x is integral */
+ }
+ w = TWO112[sx]+x;
+ return w-TWO112[sx];
+}
+weak_alias (__rintl, rintl)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128/s_roundevenl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128/s_roundevenl.c
new file mode 100644
index 0000000000..93b895546a
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128/s_roundevenl.c
@@ -0,0 +1,102 @@
+/* Round to nearest integer value, rounding halfway cases to even.
+ ldbl-128 version.
+ Copyright (C) 2016-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+#include <math_private.h>
+#include <stdint.h>
+
+#define BIAS 0x3fff
+#define MANT_DIG 113
+#define MAX_EXP (2 * BIAS + 1)
+
+_Float128
+roundevenl (_Float128 x)
+{
+ uint64_t hx, lx, uhx;
+ GET_LDOUBLE_WORDS64 (hx, lx, x);
+ uhx = hx & 0x7fffffffffffffffULL;
+ int exponent = uhx >> (MANT_DIG - 1 - 64);
+ if (exponent >= BIAS + MANT_DIG - 1)
+ {
+ /* Integer, infinity or NaN. */
+ if (exponent == MAX_EXP)
+ /* Infinity or NaN; quiet signaling NaNs. */
+ return x + x;
+ else
+ return x;
+ }
+ else if (exponent >= BIAS + MANT_DIG - 64)
+ {
+ /* Not necessarily an integer; integer bit is in low word.
+ Locate the bits with exponents 0 and -1. */
+ int int_pos = (BIAS + MANT_DIG - 1) - exponent;
+ int half_pos = int_pos - 1;
+ uint64_t half_bit = 1ULL << half_pos;
+ uint64_t int_bit = 1ULL << int_pos;
+ if ((lx & (int_bit | (half_bit - 1))) != 0)
+ {
+ /* Carry into the exponent works correctly. No need to test
+ whether HALF_BIT is set. */
+ lx += half_bit;
+ hx += lx < half_bit;
+ }
+ lx &= ~(int_bit - 1);
+ }
+ else if (exponent == BIAS + MANT_DIG - 65)
+ {
+ /* Not necessarily an integer; integer bit is bottom of high
+ word, half bit is top of low word. */
+ if (((hx & 1) | (lx & 0x7fffffffffffffffULL)) != 0)
+ {
+ lx += 0x8000000000000000ULL;
+ hx += lx < 0x8000000000000000ULL;
+ }
+ lx = 0;
+ }
+ else if (exponent >= BIAS)
+ {
+ /* At least 1; not necessarily an integer, integer bit and half
+ bit are in the high word. Locate the bits with exponents 0
+ and -1 (when the unbiased exponent is 0, the bit with
+ exponent 0 is implicit, but as the bias is odd it is OK to
+ take it from the low bit of the exponent). */
+ int int_pos = (BIAS + MANT_DIG - 65) - exponent;
+ int half_pos = int_pos - 1;
+ uint64_t half_bit = 1ULL << half_pos;
+ uint64_t int_bit = 1ULL << int_pos;
+ if (((hx & (int_bit | (half_bit - 1))) | lx) != 0)
+ hx += half_bit;
+ hx &= ~(int_bit - 1);
+ lx = 0;
+ }
+ else if (exponent == BIAS - 1 && (uhx > 0x3ffe000000000000ULL || lx != 0))
+ {
+ /* Interval (0.5, 1). */
+ hx = (hx & 0x8000000000000000ULL) | 0x3fff000000000000ULL;
+ lx = 0;
+ }
+ else
+ {
+ /* Rounds to 0. */
+ hx &= 0x8000000000000000ULL;
+ lx = 0;
+ }
+ SET_LDOUBLE_WORDS64 (x, hx, lx);
+ return x;
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128/s_roundl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128/s_roundl.c
new file mode 100644
index 0000000000..078d9b9c45
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128/s_roundl.c
@@ -0,0 +1,80 @@
+/* Round long double to integer away from zero.
+ Copyright (C) 1997-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997 and
+ Jakub Jelinek <jj@ultra.linux.cz>, 1999.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+
+#include <math_private.h>
+
+
+_Float128
+__roundl (_Float128 x)
+{
+ int32_t j0;
+ u_int64_t i1, i0;
+
+ GET_LDOUBLE_WORDS64 (i0, i1, x);
+ j0 = ((i0 >> 48) & 0x7fff) - 0x3fff;
+ if (j0 < 48)
+ {
+ if (j0 < 0)
+ {
+ i0 &= 0x8000000000000000ULL;
+ if (j0 == -1)
+ i0 |= 0x3fff000000000000LL;
+ i1 = 0;
+ }
+ else
+ {
+ u_int64_t i = 0x0000ffffffffffffLL >> j0;
+ if (((i0 & i) | i1) == 0)
+ /* X is integral. */
+ return x;
+
+ i0 += 0x0000800000000000LL >> j0;
+ i0 &= ~i;
+ i1 = 0;
+ }
+ }
+ else if (j0 > 111)
+ {
+ if (j0 == 0x4000)
+ /* Inf or NaN. */
+ return x + x;
+ else
+ return x;
+ }
+ else
+ {
+ u_int64_t i = -1ULL >> (j0 - 48);
+ if ((i1 & i) == 0)
+ /* X is integral. */
+ return x;
+
+ u_int64_t j = i1 + (1LL << (111 - j0));
+ if (j < i1)
+ i0 += 1;
+ i1 = j;
+ i1 &= ~i;
+ }
+
+ SET_LDOUBLE_WORDS64 (x, i0, i1);
+ return x;
+}
+weak_alias (__roundl, roundl)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128/s_scalblnl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128/s_scalblnl.c
new file mode 100644
index 0000000000..5864eaf93c
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128/s_scalblnl.c
@@ -0,0 +1,62 @@
+/* s_scalblnl.c -- long double version of s_scalbn.c.
+ * Conversion to IEEE quad long double by Jakub Jelinek, jj@ultra.linux.cz.
+ */
+
+/* @(#)s_scalbn.c 5.1 93/09/24 */
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: $";
+#endif
+
+/*
+ * scalblnl (long double x, long int n)
+ * scalblnl(x,n) returns x* 2**n computed by exponent
+ * manipulation rather than by actually performing an
+ * exponentiation or a multiplication.
+ */
+
+#include <math.h>
+#include <math_private.h>
+
+static const _Float128
+two114 = L(2.0769187434139310514121985316880384E+34), /* 0x4071000000000000, 0 */
+twom114 = L(4.8148248609680896326399448564623183E-35), /* 0x3F8D000000000000, 0 */
+huge = L(1.0E+4900),
+tiny = L(1.0E-4900);
+
+_Float128 __scalblnl (_Float128 x, long int n)
+{
+ int64_t k,hx,lx;
+ GET_LDOUBLE_WORDS64(hx,lx,x);
+ k = (hx>>48)&0x7fff; /* extract exponent */
+ if (k==0) { /* 0 or subnormal x */
+ if ((lx|(hx&0x7fffffffffffffffULL))==0) return x; /* +-0 */
+ x *= two114;
+ GET_LDOUBLE_MSW64(hx,x);
+ k = ((hx>>48)&0x7fff) - 114;
+ }
+ if (k==0x7fff) return x+x; /* NaN or Inf */
+ if (n< -50000) return tiny*__copysignl(tiny,x); /*underflow*/
+ if (n> 50000 || k+n > 0x7ffe)
+ return huge*__copysignl(huge,x); /* overflow */
+ /* Now k and n are bounded we know that k = k+n does not
+ overflow. */
+ k = k+n;
+ if (k > 0) /* normal result */
+ {SET_LDOUBLE_MSW64(x,(hx&0x8000ffffffffffffULL)|(k<<48)); return x;}
+ if (k <= -114)
+ return tiny*__copysignl(tiny,x); /*underflow*/
+ k += 114; /* subnormal result */
+ SET_LDOUBLE_MSW64(x,(hx&0x8000ffffffffffffULL)|(k<<48));
+ return x*twom114;
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128/s_scalbnl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128/s_scalbnl.c
new file mode 100644
index 0000000000..e6fe796079
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128/s_scalbnl.c
@@ -0,0 +1,62 @@
+/* s_scalbnl.c -- long double version of s_scalbn.c.
+ * Conversion to IEEE quad long double by Jakub Jelinek, jj@ultra.linux.cz.
+ */
+
+/* @(#)s_scalbn.c 5.1 93/09/24 */
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: $";
+#endif
+
+/*
+ * scalbnl (long double x, int n)
+ * scalbnl(x,n) returns x* 2**n computed by exponent
+ * manipulation rather than by actually performing an
+ * exponentiation or a multiplication.
+ */
+
+#include <math.h>
+#include <math_private.h>
+
+static const _Float128
+two114 = L(2.0769187434139310514121985316880384E+34), /* 0x4071000000000000, 0 */
+twom114 = L(4.8148248609680896326399448564623183E-35), /* 0x3F8D000000000000, 0 */
+huge = L(1.0E+4900),
+tiny = L(1.0E-4900);
+
+_Float128 __scalbnl (_Float128 x, int n)
+{
+ int64_t k,hx,lx;
+ GET_LDOUBLE_WORDS64(hx,lx,x);
+ k = (hx>>48)&0x7fff; /* extract exponent */
+ if (k==0) { /* 0 or subnormal x */
+ if ((lx|(hx&0x7fffffffffffffffULL))==0) return x; /* +-0 */
+ x *= two114;
+ GET_LDOUBLE_MSW64(hx,x);
+ k = ((hx>>48)&0x7fff) - 114;
+ }
+ if (k==0x7fff) return x+x; /* NaN or Inf */
+ if (n< -50000) return tiny*__copysignl(tiny,x); /*underflow*/
+ if (n> 50000 || k+n > 0x7ffe)
+ return huge*__copysignl(huge,x); /* overflow */
+ /* Now k and n are bounded we know that k = k+n does not
+ overflow. */
+ k = k+n;
+ if (k > 0) /* normal result */
+ {SET_LDOUBLE_MSW64(x,(hx&0x8000ffffffffffffULL)|(k<<48)); return x;}
+ if (k <= -114)
+ return tiny*__copysignl(tiny,x); /*underflow*/
+ k += 114; /* subnormal result */
+ SET_LDOUBLE_MSW64(x,(hx&0x8000ffffffffffffULL)|(k<<48));
+ return x*twom114;
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128/s_setpayloadl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128/s_setpayloadl.c
new file mode 100644
index 0000000000..1aba33e6e2
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128/s_setpayloadl.c
@@ -0,0 +1,3 @@
+#define SIG 0
+#define FUNC setpayloadl
+#include <s_setpayloadl_main.c>
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128/s_setpayloadl_main.c b/REORG.TODO/sysdeps/ieee754/ldbl-128/s_setpayloadl_main.c
new file mode 100644
index 0000000000..5646634db2
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128/s_setpayloadl_main.c
@@ -0,0 +1,69 @@
+/* Set NaN payload. ldbl-128 version.
+ Copyright (C) 2016-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+#include <math_private.h>
+#include <nan-high-order-bit.h>
+#include <stdint.h>
+
+#define SET_HIGH_BIT (HIGH_ORDER_BIT_IS_SET_FOR_SNAN ? SIG : !SIG)
+#define BIAS 0x3fff
+#define PAYLOAD_DIG 111
+#define EXPLICIT_MANT_DIG 112
+
+int
+FUNC (_Float128 *x, _Float128 payload)
+{
+ uint64_t hx, lx;
+ GET_LDOUBLE_WORDS64 (hx, lx, payload);
+ int exponent = hx >> (EXPLICIT_MANT_DIG - 64);
+ /* Test if argument is (a) negative or too large; (b) too small,
+ except for 0 when allowed; (c) not an integer. */
+ if (exponent >= BIAS + PAYLOAD_DIG
+ || (exponent < BIAS && !(SET_HIGH_BIT && hx == 0 && lx == 0)))
+ {
+ SET_LDOUBLE_WORDS64 (*x, 0, 0);
+ return 1;
+ }
+ int shift = BIAS + EXPLICIT_MANT_DIG - exponent;
+ if (shift < 64
+ ? (lx & ((1ULL << shift) - 1)) != 0
+ : (lx != 0 || (hx & ((1ULL << (shift - 64)) - 1)) != 0))
+ {
+ SET_LDOUBLE_WORDS64 (*x, 0, 0);
+ return 1;
+ }
+ if (exponent != 0)
+ {
+ hx &= (1ULL << (EXPLICIT_MANT_DIG - 64)) - 1;
+ hx |= 1ULL << (EXPLICIT_MANT_DIG - 64);
+ if (shift >= 64)
+ {
+ lx = hx >> (shift - 64);
+ hx = 0;
+ }
+ else if (shift != 0)
+ {
+ lx = (lx >> shift) | (hx << (64 - shift));
+ hx >>= shift;
+ }
+ }
+ hx |= 0x7fff000000000000ULL | (SET_HIGH_BIT ? 0x800000000000ULL : 0);
+ SET_LDOUBLE_WORDS64 (*x, hx, lx);
+ return 0;
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128/s_setpayloadsigl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128/s_setpayloadsigl.c
new file mode 100644
index 0000000000..d97e2c8206
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128/s_setpayloadsigl.c
@@ -0,0 +1,3 @@
+#define SIG 1
+#define FUNC setpayloadsigl
+#include <s_setpayloadl_main.c>
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128/s_signbitl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128/s_signbitl.c
new file mode 100644
index 0000000000..062b47f55b
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128/s_signbitl.c
@@ -0,0 +1,27 @@
+/* Return nonzero value if number is negative.
+ Copyright (C) 1997-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+#include <math_private.h>
+
+int
+__signbitl (_Float128 x)
+{
+ return __builtin_signbitl (x);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128/s_sincosl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128/s_sincosl.c
new file mode 100644
index 0000000000..34ca6ee03b
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128/s_sincosl.c
@@ -0,0 +1,73 @@
+/* Compute sine and cosine of argument.
+ Copyright (C) 1997-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997 and
+ Jakub Jelinek <jj@ultra.linux.cz>.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <errno.h>
+#include <math.h>
+
+#include <math_private.h>
+
+void
+__sincosl (_Float128 x, _Float128 *sinx, _Float128 *cosx)
+{
+ int64_t ix;
+
+ /* High word of x. */
+ GET_LDOUBLE_MSW64 (ix, x);
+
+ /* |x| ~< pi/4 */
+ ix &= 0x7fffffffffffffffLL;
+ if (ix <= 0x3ffe921fb54442d1LL)
+ __kernel_sincosl (x, 0, sinx, cosx, 0);
+ else if (ix >= 0x7fff000000000000LL)
+ {
+ /* sin(Inf or NaN) is NaN */
+ *sinx = *cosx = x - x;
+ if (isinf (x))
+ __set_errno (EDOM);
+ }
+ else
+ {
+ /* Argument reduction needed. */
+ _Float128 y[2];
+ int n;
+
+ n = __ieee754_rem_pio2l (x, y);
+ switch (n & 3)
+ {
+ case 0:
+ __kernel_sincosl (y[0], y[1], sinx, cosx, 1);
+ break;
+ case 1:
+ __kernel_sincosl (y[0], y[1], cosx, sinx, 1);
+ *cosx = -*cosx;
+ break;
+ case 2:
+ __kernel_sincosl (y[0], y[1], sinx, cosx, 1);
+ *sinx = -*sinx;
+ *cosx = -*cosx;
+ break;
+ default:
+ __kernel_sincosl (y[0], y[1], cosx, sinx, 1);
+ *sinx = -*sinx;
+ break;
+ }
+ }
+}
+weak_alias (__sincosl, sincosl)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128/s_sinl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128/s_sinl.c
new file mode 100644
index 0000000000..887e45dbfa
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128/s_sinl.c
@@ -0,0 +1,86 @@
+/* s_sinl.c -- long double version of s_sin.c.
+ * Conversion to long double by Jakub Jelinek, jj@ultra.linux.cz.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+/* sinl(x)
+ * Return sine function of x.
+ *
+ * kernel function:
+ * __kernel_sinl ... sine function on [-pi/4,pi/4]
+ * __kernel_cosl ... cose function on [-pi/4,pi/4]
+ * __ieee754_rem_pio2l ... argument reduction routine
+ *
+ * Method.
+ * Let S,C and T denote the sin, cos and tan respectively on
+ * [-PI/4, +PI/4]. Reduce the argument x to y1+y2 = x-k*pi/2
+ * in [-pi/4 , +pi/4], and let n = k mod 4.
+ * We have
+ *
+ * n sin(x) cos(x) tan(x)
+ * ----------------------------------------------------------
+ * 0 S C T
+ * 1 C -S -1/T
+ * 2 -S -C T
+ * 3 -C S -1/T
+ * ----------------------------------------------------------
+ *
+ * Special cases:
+ * Let trig be any of sin, cos, or tan.
+ * trig(+-INF) is NaN, with signals;
+ * trig(NaN) is that NaN;
+ *
+ * Accuracy:
+ * TRIG(x) returns trig(x) nearly rounded
+ */
+
+#include <errno.h>
+#include <math.h>
+#include <math_private.h>
+
+_Float128 __sinl(_Float128 x)
+{
+ _Float128 y[2],z=0;
+ int64_t n, ix;
+
+ /* High word of x. */
+ GET_LDOUBLE_MSW64(ix,x);
+
+ /* |x| ~< pi/4 */
+ ix &= 0x7fffffffffffffffLL;
+ if(ix <= 0x3ffe921fb54442d1LL)
+ return __kernel_sinl(x,z,0);
+
+ /* sin(Inf or NaN) is NaN */
+ else if (ix>=0x7fff000000000000LL) {
+ if (ix == 0x7fff000000000000LL) {
+ GET_LDOUBLE_LSW64(n,x);
+ if (n == 0)
+ __set_errno (EDOM);
+ }
+ return x-x;
+ }
+
+ /* argument reduction needed */
+ else {
+ n = __ieee754_rem_pio2l(x,y);
+ switch(n&3) {
+ case 0: return __kernel_sinl(y[0],y[1],1);
+ case 1: return __kernel_cosl(y[0],y[1]);
+ case 2: return -__kernel_sinl(y[0],y[1],1);
+ default:
+ return -__kernel_cosl(y[0],y[1]);
+ }
+ }
+}
+weak_alias (__sinl, sinl)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128/s_tanhl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128/s_tanhl.c
new file mode 100644
index 0000000000..0db8f5f775
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128/s_tanhl.c
@@ -0,0 +1,100 @@
+/* s_tanhl.c -- long double version of s_tanh.c.
+ * Conversion to long double by Ulrich Drepper,
+ * Cygnus Support, drepper@cygnus.com.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+/* Changes for 128-bit long double contributed by
+ Stephen L. Moshier <moshier@na-net.ornl.gov> */
+
+/* tanhl(x)
+ * Return the Hyperbolic Tangent of x
+ *
+ * Method :
+ * x -x
+ * e - e
+ * 0. tanhl(x) is defined to be -----------
+ * x -x
+ * e + e
+ * 1. reduce x to non-negative by tanhl(-x) = -tanhl(x).
+ * 2. 0 <= x <= 2**-57 : tanhl(x) := x*(one+x)
+ * -t
+ * 2**-57 < x <= 1 : tanhl(x) := -----; t = expm1l(-2x)
+ * t + 2
+ * 2
+ * 1 <= x <= 40.0 : tanhl(x) := 1- ----- ; t=expm1l(2x)
+ * t + 2
+ * 40.0 < x <= INF : tanhl(x) := 1.
+ *
+ * Special cases:
+ * tanhl(NaN) is NaN;
+ * only tanhl(0)=0 is exact for finite argument.
+ */
+
+#include <float.h>
+#include <math.h>
+#include <math_private.h>
+
+static const _Float128 one = 1.0, two = 2.0, tiny = L(1.0e-4900);
+
+_Float128
+__tanhl (_Float128 x)
+{
+ _Float128 t, z;
+ u_int32_t jx, ix;
+ ieee854_long_double_shape_type u;
+
+ /* Words of |x|. */
+ u.value = x;
+ jx = u.parts32.w0;
+ ix = jx & 0x7fffffff;
+ /* x is INF or NaN */
+ if (ix >= 0x7fff0000)
+ {
+ /* for NaN it's not important which branch: tanhl(NaN) = NaN */
+ if (jx & 0x80000000)
+ return one / x - one; /* tanhl(-inf)= -1; */
+ else
+ return one / x + one; /* tanhl(+inf)=+1 */
+ }
+
+ /* |x| < 40 */
+ if (ix < 0x40044000)
+ {
+ if (u.value == 0)
+ return x; /* x == +- 0 */
+ if (ix < 0x3fc60000) /* |x| < 2^-57 */
+ {
+ math_check_force_underflow (x);
+ return x * (one + tiny); /* tanh(small) = small */
+ }
+ u.parts32.w0 = ix; /* Absolute value of x. */
+ if (ix >= 0x3fff0000)
+ { /* |x| >= 1 */
+ t = __expm1l (two * u.value);
+ z = one - two / (t + two);
+ }
+ else
+ {
+ t = __expm1l (-two * u.value);
+ z = -t / (t + two);
+ }
+ /* |x| > 40, return +-1 */
+ }
+ else
+ {
+ z = one - tiny; /* raised inexact flag */
+ }
+ return (jx & 0x80000000) ? -z : z;
+}
+weak_alias (__tanhl, tanhl)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128/s_tanl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128/s_tanl.c
new file mode 100644
index 0000000000..cd7b258616
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128/s_tanl.c
@@ -0,0 +1,80 @@
+/* s_tanl.c -- long double version of s_tan.c.
+ * Conversion to IEEE quad long double by Jakub Jelinek, jj@ultra.linux.cz.
+ */
+
+/* @(#)s_tan.c 5.1 93/09/24 */
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+/* tanl(x)
+ * Return tangent function of x.
+ *
+ * kernel function:
+ * __kernel_tanl ... tangent function on [-pi/4,pi/4]
+ * __ieee754_rem_pio2l ... argument reduction routine
+ *
+ * Method.
+ * Let S,C and T denote the sin, cos and tan respectively on
+ * [-PI/4, +PI/4]. Reduce the argument x to y1+y2 = x-k*pi/2
+ * in [-pi/4 , +pi/4], and let n = k mod 4.
+ * We have
+ *
+ * n sin(x) cos(x) tan(x)
+ * ----------------------------------------------------------
+ * 0 S C T
+ * 1 C -S -1/T
+ * 2 -S -C T
+ * 3 -C S -1/T
+ * ----------------------------------------------------------
+ *
+ * Special cases:
+ * Let trig be any of sin, cos, or tan.
+ * trig(+-INF) is NaN, with signals;
+ * trig(NaN) is that NaN;
+ *
+ * Accuracy:
+ * TRIG(x) returns trig(x) nearly rounded
+ */
+
+#include <errno.h>
+#include <math.h>
+#include <math_private.h>
+
+_Float128 __tanl(_Float128 x)
+{
+ _Float128 y[2],z=0;
+ int64_t n, ix;
+
+ /* High word of x. */
+ GET_LDOUBLE_MSW64(ix,x);
+
+ /* |x| ~< pi/4 */
+ ix &= 0x7fffffffffffffffLL;
+ if(ix <= 0x3ffe921fb54442d1LL) return __kernel_tanl(x,z,1);
+
+ /* tanl(Inf or NaN) is NaN */
+ else if (ix>=0x7fff000000000000LL) {
+ if (ix == 0x7fff000000000000LL) {
+ GET_LDOUBLE_LSW64(n,x);
+ if (n == 0)
+ __set_errno (EDOM);
+ }
+ return x-x; /* NaN */
+ }
+
+ /* argument reduction needed */
+ else {
+ n = __ieee754_rem_pio2l(x,y);
+ return __kernel_tanl(y[0],y[1],1-((n&1)<<1)); /* 1 -- n even
+ -1 -- n odd */
+ }
+}
+weak_alias (__tanl, tanl)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128/s_totalorderl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128/s_totalorderl.c
new file mode 100644
index 0000000000..ca7b3102e1
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128/s_totalorderl.c
@@ -0,0 +1,54 @@
+/* Total order operation. ldbl-128 version.
+ Copyright (C) 2016-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+#include <math_private.h>
+#include <nan-high-order-bit.h>
+#include <stdint.h>
+
+int
+totalorderl (_Float128 x, _Float128 y)
+{
+ int64_t hx, hy;
+ uint64_t lx, ly;
+ GET_LDOUBLE_WORDS64 (hx, lx, x);
+ GET_LDOUBLE_WORDS64 (hy, ly, y);
+#if HIGH_ORDER_BIT_IS_SET_FOR_SNAN
+ uint64_t uhx = hx & 0x7fffffffffffffffULL;
+ uint64_t uhy = hy & 0x7fffffffffffffffULL;
+ /* For the preferred quiet NaN convention, this operation is a
+ comparison of the representations of the arguments interpreted as
+ sign-magnitude integers. If both arguments are NaNs, invert the
+ quiet/signaling bit so comparing that way works. */
+ if ((uhx > 0x7fff000000000000ULL || (uhx == 0x7fff000000000000ULL
+ && lx != 0))
+ && (uhy > 0x7fff000000000000ULL || (uhy == 0x7fff000000000000ULL
+ && ly != 0)))
+ {
+ hx ^= 0x0000800000000000ULL;
+ hy ^= 0x0000800000000000ULL;
+ }
+#endif
+ uint64_t hx_sign = hx >> 63;
+ uint64_t hy_sign = hy >> 63;
+ hx ^= hx_sign >> 1;
+ lx ^= hx_sign;
+ hy ^= hy_sign >> 1;
+ ly ^= hy_sign;
+ return hx < hy || (hx == hy && lx <= ly);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128/s_totalordermagl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128/s_totalordermagl.c
new file mode 100644
index 0000000000..41b969d811
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128/s_totalordermagl.c
@@ -0,0 +1,48 @@
+/* Total order operation on absolute values. ldbl-128 version.
+ Copyright (C) 2016-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+#include <math_private.h>
+#include <nan-high-order-bit.h>
+#include <stdint.h>
+
+int
+totalordermagl (_Float128 x, _Float128 y)
+{
+ uint64_t hx, hy;
+ uint64_t lx, ly;
+ GET_LDOUBLE_WORDS64 (hx, lx, x);
+ GET_LDOUBLE_WORDS64 (hy, ly, y);
+ hx &= 0x7fffffffffffffffULL;
+ hy &= 0x7fffffffffffffffULL;
+#if HIGH_ORDER_BIT_IS_SET_FOR_SNAN
+ /* For the preferred quiet NaN convention, this operation is a
+ comparison of the representations of the absolute values of the
+ arguments. If both arguments are NaNs, invert the
+ quiet/signaling bit so comparing that way works. */
+ if ((hx > 0x7fff000000000000ULL || (hx == 0x7fff000000000000ULL
+ && lx != 0))
+ && (hy > 0x7fff000000000000ULL || (hy == 0x7fff000000000000ULL
+ && ly != 0)))
+ {
+ hx ^= 0x0000800000000000ULL;
+ hy ^= 0x0000800000000000ULL;
+ }
+#endif
+ return hx < hy || (hx == hy && lx <= ly);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128/s_truncl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128/s_truncl.c
new file mode 100644
index 0000000000..6d1a11e7c4
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128/s_truncl.c
@@ -0,0 +1,56 @@
+/* Truncate argument to nearest integral value not larger than the argument.
+ Copyright (C) 1997-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997 and
+ Jakub Jelinek <jj@ultra.linux.cz>, 1999.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+
+#include <math_private.h>
+
+
+_Float128
+__truncl (_Float128 x)
+{
+ int32_t j0;
+ u_int64_t i0, i1, sx;
+
+ GET_LDOUBLE_WORDS64 (i0, i1, x);
+ sx = i0 & 0x8000000000000000ULL;
+ j0 = ((i0 >> 48) & 0x7fff) - 0x3fff;
+ if (j0 < 48)
+ {
+ if (j0 < 0)
+ /* The magnitude of the number is < 1 so the result is +-0. */
+ SET_LDOUBLE_WORDS64 (x, sx, 0);
+ else
+ SET_LDOUBLE_WORDS64 (x, i0 & ~(0x0000ffffffffffffLL >> j0), 0);
+ }
+ else if (j0 > 111)
+ {
+ if (j0 == 0x4000)
+ /* x is inf or NaN. */
+ return x + x;
+ }
+ else
+ {
+ SET_LDOUBLE_WORDS64 (x, i0, i1 & ~(0xffffffffffffffffULL >> (j0 - 48)));
+ }
+
+ return x;
+}
+weak_alias (__truncl, truncl)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128/s_ufromfpl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128/s_ufromfpl.c
new file mode 100644
index 0000000000..c686daa4a7
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128/s_ufromfpl.c
@@ -0,0 +1,4 @@
+#define UNSIGNED 1
+#define INEXACT 0
+#define FUNC ufromfpl
+#include <s_fromfpl_main.c>
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128/s_ufromfpxl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128/s_ufromfpxl.c
new file mode 100644
index 0000000000..906066c83c
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128/s_ufromfpxl.c
@@ -0,0 +1,4 @@
+#define UNSIGNED 1
+#define INEXACT 1
+#define FUNC ufromfpxl
+#include <s_fromfpl_main.c>
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128/strtod_nan_ldouble.h b/REORG.TODO/sysdeps/ieee754/ldbl-128/strtod_nan_ldouble.h
new file mode 100644
index 0000000000..142393d787
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128/strtod_nan_ldouble.h
@@ -0,0 +1,33 @@
+/* Convert string for NaN payload to corresponding NaN. For ldbl-128.
+ Copyright (C) 1997-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#define FLOAT long double
+#define SET_MANTISSA(flt, mant) \
+ do \
+ { \
+ union ieee854_long_double u; \
+ u.d = (flt); \
+ u.ieee_nan.mantissa0 = 0; \
+ u.ieee_nan.mantissa1 = 0; \
+ u.ieee_nan.mantissa2 = (mant) >> 32; \
+ u.ieee_nan.mantissa3 = (mant); \
+ if ((u.ieee.mantissa0 | u.ieee.mantissa1 \
+ | u.ieee.mantissa2 | u.ieee.mantissa3) != 0) \
+ (flt) = u.d; \
+ } \
+ while (0)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128/strtold_l.c b/REORG.TODO/sysdeps/ieee754/ldbl-128/strtold_l.c
new file mode 100644
index 0000000000..4a8b14c4bb
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128/strtold_l.c
@@ -0,0 +1,37 @@
+/* Copyright (C) 1999-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+
+/* The actual implementation for all floating point sizes is in strtod.c.
+ These macros tell it to produce the `long double' version, `strtold'. */
+
+#define FLOAT long double
+#define FLT LDBL
+#ifdef USE_WIDE_CHAR
+# define STRTOF wcstold_l
+# define __STRTOF __wcstold_l
+# define STRTOF_NAN __wcstold_nan
+#else
+# define STRTOF strtold_l
+# define __STRTOF __strtold_l
+# define STRTOF_NAN __strtold_nan
+#endif
+#define MPN2FLOAT __mpn_construct_long_double
+#define FLOAT_HUGE_VAL HUGE_VALL
+
+#include <strtod_l.c>
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128/t_expl.h b/REORG.TODO/sysdeps/ieee754/ldbl-128/t_expl.h
new file mode 100644
index 0000000000..2b1b647db9
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128/t_expl.h
@@ -0,0 +1,970 @@
+/* Accurate table for expl().
+ Copyright (C) 1999-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Jakub Jelinek <jj@ultra.linux.cz>
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+/* __expl_table basically consists of four tables, T_EXPL_ARG{1,2} and
+ T_EXPL_RES{1,2}. All tables use positive and negative indexes, the 0 points
+ are marked by T_EXPL_* defines.
+ For ARG1 and RES1 tables lets B be 89 and S 256.0, for ARG2 and RES2 B is 65
+ and S 32768.0.
+ These table have the property that, for all integers -B <= i <= B
+ expl(__expl_table[T_EXPL_ARGN+2*i]+__expl_table[T_EXPL_ARGN+2*i+1]+r) ==
+ __expl_table[T_EXPL_RESN+i], __expl_table[T_EXPL_RESN+i] is some exact number
+ with the low 58 bits of the mantissa 0,
+ __expl_table[T_EXPL_ARGN+2*i] == i/S+s
+ where absl(s) <= 2^-54 and absl(r) <= 2^-212. */
+
+static const _Float128 __expl_table [] = {
+ L(-3.47656250000000000584188889839535373E-01), /* bffd640000000000002b1b04213cf000 */
+ L(6.90417668990715641167244540876988960E-32), /* 3f97667c3fdb588a6ae1af8748357a17 */
+ L(-3.43749999999999981853132895957607418E-01), /* bffd5ffffffffffffac4ff5f4050b000 */
+ L(-7.16021898043268093462818380603370350E-33), /* bf94296c8219427edc1431ac2498583e */
+ L(-3.39843750000000013418643523138766329E-01), /* bffd5c000000000003de1f027a30e000 */
+ L(8.16920774283317801641347327589583265E-32), /* 3f97a82b65774bdca1b4440d749ed8d3 */
+ L(-3.35937500000000014998092453039303051E-01), /* bffd5800000000000452a9f4d8857000 */
+ L(-6.55865578425428447938248396879359670E-32), /* bf97548b7d240f3d034b395e6eecfac8 */
+ L(-3.32031250000000000981984049529998541E-01), /* bffd540000000000004875277cda5000 */
+ L(6.91213046334032232108944519541512737E-32), /* 3f9766e5f925338a19045c94443b66e1 */
+ L(-3.28124999999999986646017645350399708E-01), /* bffd4ffffffffffffc26a667bf44d000 */
+ L(-6.16281060996110316602421505683742661E-32), /* bf973ffdcdcffb6fbffc86b2b8d42f5d */
+ L(-3.24218749999999991645717430645867963E-01), /* bffd4bfffffffffffd97901063e48000 */
+ L(-7.90797211087760527593856542417304137E-32), /* bf979a9afaaca1ada6a8ed1c80584d60 */
+ L(-3.20312499999999998918211610690789652E-01), /* bffd47ffffffffffffb02d9856d71000 */
+ L(8.64024799457616856987630373786503376E-32), /* 3f97c0a098623f95579d5d9b2b67342d */
+ L(-3.16406249999999998153974811017181883E-01), /* bffd43ffffffffffff77c991f1076000 */
+ L(-2.73176610180696076418536105483668404E-32), /* bf961baeccb32f9b1fcbb8e60468e95a */
+ L(-3.12500000000000011420976192575972779E-01), /* bffd400000000000034ab8240483d000 */
+ L(7.16573502812389453744433792609989420E-32), /* 3f977410f4c2cfc4335f28446c0fb363 */
+ L(-3.08593750000000001735496343854851414E-01), /* bffd3c000000000000800e995c176000 */
+ L(-1.56292999645122272621237565671593071E-32), /* bf95449b9cbdaff6ac1246adb2c826ac */
+ L(-3.04687499999999982592401295899221626E-01), /* bffd37fffffffffffafb8bc1e061a000 */
+ L(6.48993208584888904958594509625158417E-32), /* 3f9750f9fe8366d82d77afa0031a92e1 */
+ L(-3.00781249999999999230616898937763959E-01), /* bffd33ffffffffffffc73ac39da54000 */
+ L(6.57082437496961397305801409357792029E-32), /* 3f97552d3cb598ea80135cf3feb27ec4 */
+ L(-2.96874999999999998788769281703245722E-01), /* bffd2fffffffffffffa6a07fa5021000 */
+ L(-3.26588297198283968096426564544269170E-32), /* bf9653260fc1802f46b629aee171809b */
+ L(-2.92968750000000015318089182805941695E-01), /* bffd2c0000000000046a468614bd6000 */
+ L(-1.73291974845198589684358727559290718E-32), /* bf9567e9d158f52e483c8d8dcb5961dd */
+ L(-2.89062500000000007736778942676309681E-01), /* bffd280000000000023adf9f4c3d3000 */
+ L(-6.83629745986675744404029225571026236E-32), /* bf9762f5face6281c1daf1c6aedbdb45 */
+ L(-2.85156250000000001367091555763661937E-01), /* bffd2400000000000064dfa11e3fb000 */
+ L(-5.44898442619766878281110054067026237E-32), /* bf971aed6d2db9f542986a785edae072 */
+ L(-2.81249999999999986958718100227029406E-01), /* bffd1ffffffffffffc3db9265ca9d000 */
+ L(1.13007318374506125723591889451107046E-32), /* 3f94d569fe387f456a97902907ac3856 */
+ L(-2.77343750000000000356078829380495179E-01), /* bffd1c0000000000001a462390083000 */
+ L(-4.98979365468978332358409063436543102E-32), /* bf970315bbf3e0d14b5c94c900702d4c */
+ L(-2.73437499999999990276993957508540484E-01), /* bffd17fffffffffffd32919bcdc94000 */
+ L(-8.79390484115892344533724650295100871E-32), /* bf97c89b0b89cc19c3ab2b60da9bbbc3 */
+ L(-2.69531250000000002434203866460082225E-01), /* bffd14000000000000b39ccf9e130000 */
+ L(9.44060754687026590886751809927191596E-32), /* 3f97ea2f32cfecca5c64a26137a9210f */
+ L(-2.65624999999999997296320716986257179E-01), /* bffd0fffffffffffff3880f13a2bc000 */
+ L(2.07142664067265697791007875348396921E-32), /* 3f95ae37ee685b9122fbe377bd205ee4 */
+ L(-2.61718750000000010237478733739017956E-01), /* bffd0c000000000002f3648179d40000 */
+ L(-6.10552936159265665298996309192680256E-32), /* bf973d0467d31e407515a3cca0f3b4e2 */
+ L(-2.57812500000000011948220522778370303E-01), /* bffd08000000000003719f81275bd000 */
+ L(6.72477169058908902499239631466443836E-32), /* 3f975d2b8c475d3160cf72d227d8e6f9 */
+ L(-2.53906249999999991822993360536596860E-01), /* bffd03fffffffffffda4a4b62f818000 */
+ L(-2.44868296623215865054704392917190994E-32), /* bf95fc92516c6d057d29fc2528855976 */
+ L(-2.49999999999999986862019457428548084E-01), /* bffcfffffffffffff86d2d20d5ff4000 */
+ L(-3.85302898949105073614122724961613078E-32), /* bf96901f147cb7d643af71b6129ce929 */
+ L(-2.46093750000000000237554160737318435E-01), /* bffcf8000000000000230e8ade26b000 */
+ L(-1.52823675242678363494345369284988589E-32), /* bf953d6700c5f3fc303f79d0ec8c680a */
+ L(-2.42187500000000003023380963205457065E-01), /* bffcf0000000000001be2c1a78bb0000 */
+ L(-7.78402037952209709489481182714311699E-34), /* bf9102ab1f3998e887f0ee4cf940faa5 */
+ L(-2.38281249999999995309623303145485725E-01), /* bffce7fffffffffffd4bd2940f43f000 */
+ L(-3.54307216794236899443913216397197696E-32), /* bf966fef03ab69c3f289436205b21d02 */
+ L(-2.34374999999999998425804947623207526E-01), /* bffcdfffffffffffff17b097a6092000 */
+ L(-2.86038428948386602859761879407549696E-32), /* bf96290a0eba0131efe3a05fe188f2e3 */
+ L(-2.30468749999999993822207406785200832E-01), /* bffcd7fffffffffffc70519834eae000 */
+ L(-2.54339521031747516806893838749365762E-32), /* bf96081f0ad7f9107ae6cddb32c178ab */
+ L(-2.26562499999999997823524030344489884E-01), /* bffccffffffffffffebecf10093df000 */
+ L(4.31904611473158635644635628922959401E-32), /* 3f96c083f0b1faa7c4c686193e38d67c */
+ L(-2.22656250000000004835132405125162742E-01), /* bffcc8000000000002c98a233f19f000 */
+ L(2.54709791629335691650310168420597566E-33), /* 3f92a735903f5eed07a716ab931e20d9 */
+ L(-2.18749999999999988969454021829236626E-01), /* bffcbffffffffffff9a42dc14ce36000 */
+ L(-3.77236096429336082213752014054909454E-32), /* bf9687be8e5b2fca54d3e81157eac660 */
+ L(-2.14843750000000010613256919115758495E-01), /* bffcb80000000000061e3d828ecac000 */
+ L(-4.55194148712216691177097854305964738E-32), /* bf96d8b35c776aa3e1a4768271380503 */
+ L(-2.10937499999999993204656148110447201E-01), /* bffcaffffffffffffc152f2aea118000 */
+ L(-2.95044199165561453749332254271716417E-32), /* bf96326433b00b2439094d9bef22ddd1 */
+ L(-2.07031250000000012233944895423355677E-01), /* bffca80000000000070d695ee0e94000 */
+ L(1.93146788688385419095981415411012357E-32), /* 3f959126729135a5e390d4bb802a0bde */
+ L(-2.03125000000000008030983633336321863E-01), /* bffca0000000000004a129fbc51af000 */
+ L(2.37361904671826193563212931215900137E-32), /* 3f95ecfb3c4ba1b97ea3ad45cbb1e68a */
+ L(-1.99218750000000001763815712796132779E-01), /* bffc98000000000001044b12d9950000 */
+ L(-3.63171243370923753295192486732883239E-33), /* bf932db5fb3f27c38e0fa7bbcfc64f55 */
+ L(-1.95312500000000004883660234506677272E-01), /* bffc90000000000002d0b3779d1f9000 */
+ L(-3.19989507343607877747980892249711601E-33), /* bf9309d63de96bb3ef744c865f22f1bd */
+ L(-1.91406250000000013720152363227519348E-01), /* bffc88000000000007e8bcb387121000 */
+ L(-1.89295754093147174148371614722178860E-32), /* bf958926e2e67dfe812c508290add2e7 */
+ L(-1.87500000000000000182342082774432620E-01), /* bffc800000000000001ae8b06a39f000 */
+ L(-2.96812835183184815200854214892983927E-32), /* bf96343a62d156bbe71f55d14ca4b6e5 */
+ L(-1.83593750000000012410147185883290345E-01), /* bffc78000000000007276a1adda8d000 */
+ L(-2.02191931237489669058466239995304587E-32), /* bf95a3efab92d26ec2df90df036a117f */
+ L(-1.79687499999999997439177363346082917E-01), /* bffc6ffffffffffffe8616db2927d000 */
+ L(-9.92752326937775530007399526834009465E-33), /* bf949c5f88ed17041e1a3f1829d543cd */
+ L(-1.75781249999999995824373974504785174E-01), /* bffc67fffffffffffd97c94f13ea3000 */
+ L(1.44184772065335613487885714828816178E-32), /* 3f952b75c63476e7fcc2f5841c27bcce */
+ L(-1.71874999999999986685050259043077809E-01), /* bffc5ffffffffffff8530f6bc531a000 */
+ L(-3.49007014971241147689894940544402482E-32), /* bf966a6dfaa012aea8ffe6d90b02330f */
+ L(-1.67968749999999997316058782350439701E-01), /* bffc57fffffffffffe73eb914f2aa000 */
+ L(3.34025733574205019081305778794376391E-32), /* 3f965adf4572561fd5456a6c13d8babf */
+ L(-1.64062499999999993322730602128318480E-01), /* bffc4ffffffffffffc269be4f68f3000 */
+ L(-1.83345916769684984022099095506340635E-32), /* bf957ccb69026cb2f6024c211576d5f4 */
+ L(-1.60156249999999992419000744447607979E-01), /* bffc47fffffffffffba13df21784a000 */
+ L(2.73442789798110494773517431626534726E-32), /* 3f961bf58ff22c9b30f1e2b39f26d7d5 */
+ L(-1.56249999999999987665010524130393080E-01), /* bffc3ffffffffffff8e3ad45e7508000 */
+ L(2.02695576464836145806428118889332191E-32), /* 3f95a4fb7435a4a2f71de81eb8ae75d1 */
+ L(-1.52343749999999989905291167951491803E-01), /* bffc37fffffffffffa2e48aecfc24000 */
+ L(-3.61436631548815190395331054871041524E-32), /* bf967756567ebd108075ae527cc2e7f0 */
+ L(-1.48437500000000006686107754967759751E-01), /* bffc30000000000003dab20261b3c000 */
+ L(-2.15524270159131591469319477922198390E-32), /* bf95bfa05b82ef3a708c4f0395e9fcf6 */
+ L(-1.44531250000000005132889939177166485E-01), /* bffc28000000000002f57b1969e7b000 */
+ L(2.74741116529653547935086189244019604E-32), /* 3f961d4eb77c1185d34fe1b04a3f3cf5 */
+ L(-1.40625000000000000707469094533647325E-01), /* bffc2000000000000068676d3d5c4000 */
+ L(4.40607097220049957013547629906723266E-33), /* 3f936e0ac425daf795b42913cf0ef881 */
+ L(-1.36718749999999995713752139187543306E-01), /* bffc17fffffffffffd87762255991000 */
+ L(-3.73751317180116492404578048203389108E-32), /* bf9684202491e9cbb7ceb67d9ff7e0c9 */
+ L(-1.32812500000000007198453630478482191E-01), /* bffc10000000000004264de3a4379000 */
+ L(-3.97050085179660203884930593717220728E-32), /* bf969c52048de14be3c9c1971e50869c */
+ L(-1.28906250000000006070486371645733082E-01), /* bffc080000000000037fd87db2cb0000 */
+ L(3.59610068058504988294019521946586131E-32), /* 3f967570c10687cb8e9ebd0b280abf5a */
+ L(-1.25000000000000003700729208608337966E-01), /* bffc00000000000002222198bbc74000 */
+ L(3.23464851393124362331846965931995969E-33), /* 3f930cb95da3bfc847e593716c91d57a */
+ L(-1.21093750000000013729038501177102555E-01), /* bffbf000000000000fd418d1f5fda000 */
+ L(2.45242487730722066611358741283977619E-32), /* 3f95fd5945ad86a464292e26ac192a84 */
+ L(-1.17187499999999999765305306880205578E-01), /* bffbdfffffffffffffbabaf869845000 */
+ L(-1.14557520298960389903199646350205537E-32), /* bf94dbda735322179d9bcf392e1dd06d */
+ L(-1.13281250000000009579647893740755690E-01), /* bffbd000000000000b0b69bae7ab9000 */
+ L(2.37873962873837390105423621772752350E-32), /* 3f95ee0b7e0bd5ac1f6fab1e2a71abc3 */
+ L(-1.09375000000000008981153004560108539E-01), /* bffbc000000000000a5ac4bc1d2c3000 */
+ L(1.53152444860014076105003555837231015E-32), /* 3f953e15ce931e12ef9a152522e32bdd */
+ L(-1.05468749999999992399063850363228723E-01), /* bffbaffffffffffff73c998091408000 */
+ L(-8.75920903597804862471749360196688834E-33), /* bf946bd7e310a01bae5687ebdc47fcc5 */
+ L(-1.01562500000000007685885179918350550E-01), /* bffba0000000000008dc7910a648c000 */
+ L(-4.63820993797174451904075397785059501E-33), /* bf938153d0e54001a472da180fb5e8aa */
+ L(-9.76562499999999887262211517861331814E-02), /* bffb8ffffffffffff300915aa6fd6000 */
+ L(-2.63767025974952608658936466715705903E-33), /* bf92b64215bb8d520be5404620d38088 */
+ L(-9.37499999999999939650246024457439795E-02), /* bffb7ffffffffffff90aca26bd0fc000 */
+ L(-1.72047822349322956713582039121348377E-32), /* bf9565545015c5b9b56d02cfefca2c7d */
+ L(-8.98437500000000033088896383977486369E-02), /* bffb70000000000003d09ca1e3cbe000 */
+ L(3.04831994420989436248526129869697270E-33), /* 3f92fa7d30d2ed90e7ebbd6231fd08b1 */
+ L(-8.59374999999999947312400115121319225E-02), /* bffb5ffffffffffff9ecefc03376e000 */
+ L(1.50416954438393392150792422537312281E-32), /* 3f9538675ee99bd722fad0023c09c915 */
+ L(-8.20312500000000054182280847004695514E-02), /* bffb500000000000063f2dbd40200000 */
+ L(2.68399664523430004488075638997207289E-33), /* 3f92bdf49766629882c49a3da88928ed */
+ L(-7.81250000000000114767533968079748798E-02), /* bffb4000000000000d3b56f81ba70000 */
+ L(1.72318124201659121296305402819694281E-32), /* 3f9565e407aaabfb359e8a567d760de3 */
+ L(-7.42187500000000035531829472486812869E-02), /* bffb3000000000000418b6e9b5388000 */
+ L(2.09401756478514117051383998628099655E-32), /* 3f95b2e91221fcd74be0a86d8ad658d2 */
+ L(-7.03124999999999987474933134860732535E-02), /* bffb1ffffffffffffe8e53453d2ac000 */
+ L(2.28515798224350800271565551341211666E-32), /* 3f95da9bd6adf00894f05b5cc5530125 */
+ L(-6.64062500000000042267533361089054159E-02), /* bffb10000000000004df8473dbcf2000 */
+ L(1.97576478800281368377376002585430031E-32), /* 3f959a59acbddb2f53bd3096b66370e9 */
+ L(-6.25000000000000066329769382774201686E-02), /* bffb00000000000007a5b5914e336000 */
+ L(-1.46422615813786836245343723048221678E-33), /* bf91e69295f069fc0c4a9db181ea25a3 */
+ L(-5.85937500000000002823707957982406053E-02), /* bffae0000000000000a6aeab10592000 */
+ L(9.25637741701318872896718218457555829E-33), /* 3f94807eb021f1f40a37d4015b1eb76b */
+ L(-5.46875000000000081586888005226044448E-02), /* bffac0000000000012d00a3171e3a000 */
+ L(-4.87144542459404765480424673678105050E-33), /* bf9394b42faba6b7036fe7b36269daf3 */
+ L(-5.07812499999999927720348253140567013E-02), /* bffa9fffffffffffef555cc8dd914000 */
+ L(-3.01901021987395945826043649523451725E-33), /* bf92f59e7e3025691f290f8f67277faf */
+ L(-4.68749999999999935349476738962633103E-02), /* bffa7ffffffffffff117b4ea2b876000 */
+ L(1.21521638219189777347767475937119750E-32), /* 3f94f8c7f88c5b56674b94d984ac8ecb */
+ L(-4.29687500000000056305562847814228219E-02), /* bffa6000000000000cfbb19be30c0000 */
+ L(-1.18643699217679276275559592978275214E-32), /* bf94ecd39f0833a876550e83eb012b99 */
+ L(-3.90624999999999962692914526031373542E-02), /* bffa3ffffffffffff765c743922f9000 */
+ L(-4.91277156857520035712509544689973679E-33), /* bf939823189996193872e58ac0dececb */
+ L(-3.51562500000000108152468207687602886E-02), /* bffa20000000000018f031e41177f000 */
+ L(1.18599806302656253755207072755609820E-32), /* 3f94eca4f23e787fab73ce8f6b9b8d64 */
+ L(-3.12500000000000077376981036742289578E-02), /* bffa00000000000011d787e0b386f000 */
+ L(9.97730386477005171963635210799577079E-33), /* 3f949e70e498c46a0173ac0d46c699fc */
+ L(-2.73437500000000139436129596418623235E-02), /* bff9c00000000000404db66e70a08000 */
+ L(2.25755321633070123579875157841633859E-33), /* 3f927719b1a93074bdf9f3c2cb784785 */
+ L(-2.34375000000000088003629211828324876E-02), /* bff98000000000002895a27d45feb000 */
+ L(2.84374279216848803102126617873942975E-33), /* 3f92d87f70e749d6da6c260b68dc210b */
+ L(-1.95312500000000107408831063404855424E-02), /* bff9400000000000318898ba69f71000 */
+ L(2.47348089686935458989103979140011912E-33), /* 3f929afa3de45086fe909fdddb41edce */
+ L(-1.56250000000000081443917555362290635E-02), /* bff9000000000000258f335e9cdd6000 */
+ L(-2.43379314483517422161458863218426254E-33), /* bf9294621c8a9ccacf2b020ec19cad27 */
+ L(-1.17187500000000051490597418161403184E-02), /* bff88000000000002f7ddfa26221f000 */
+ L(1.83405297208145390679150568810924707E-33), /* 3f9230bbfc5d5fe1b534fbcda0465bb9 */
+ L(-7.81249999999999715861805208310174953E-03), /* bff7ffffffffffffcb95f3fff157d000 */
+ L(3.51548384878710915171654413641872451E-34), /* 3f8fd349b76c22966f77a39fc37ed704 */
+ L(-3.90625000000000309326013918295097128E-03), /* bff7000000000000390f820c8e153000 */
+ L(6.38058004651791109324060099097251911E-36), /* 3f8a0f665d3ac25a1ac94d688273dbcd */
+#define T_EXPL_ARG1 (2*89)
+ L(0.00000000000000000000000000000000000E+00), /* 00000000000000000000000000000000 */
+ L(0.00000000000000000000000000000000000E+00), /* 00000000000000000000000000000000 */
+ L(3.90625000000000245479958859972588985E-03), /* 3ff70000000000002d48769ac9874000 */
+ L(-6.58439598384342854976169982902779828E-36), /* bf8a1811b923e6c626b07ef29761482a */
+ L(7.81250000000001311374391093664996358E-03), /* 3ff800000000000078f3f3cd89111000 */
+ L(2.60265650555493781464273319671555602E-33), /* 3f92b070c3b635b87af426735a71fc87 */
+ L(1.17187500000000269581156218247101912E-02), /* 3ff8800000000000f8a50d02fe20d000 */
+ L(1.00961747974945520631836275894919326E-33), /* 3f914f80c1a4f8042044fe3b757b030b */
+ L(1.56249999999999797878275270751825475E-02), /* 3ff8ffffffffffff45935b69da62e000 */
+ L(2.03174577741375590087897353146748580E-33), /* 3f925194e863496e0f6e91cbf6b22e26 */
+ L(1.95312499999999760319884511789111533E-02), /* 3ff93fffffffffff917790ff9a8f4000 */
+ L(4.62788519658803722282100289809515007E-33), /* 3f9380783ba81295feeb3e4879d7d52d */
+ L(2.34374999999999822953909016349145918E-02), /* 3ff97fffffffffffae5a163bd3cd5000 */
+ L(-3.19499956304699705390404384504876533E-33), /* bf93096e2037ced8194cf344c692f8d6 */
+ L(2.73437500000000137220327275871555682E-02), /* 3ff9c000000000003f481dea5dd51000 */
+ L(-2.25757776523031994464630107442723424E-33), /* bf92771abcf988a02b414bf2614e3734 */
+ L(3.12499999999999790857640618332718621E-02), /* 3ff9ffffffffffff9f8cd40b51509000 */
+ L(-4.22479470489989916319395454536511458E-33), /* bf935efb7245612f371deca17cb7b30c */
+ L(3.51562499999999840753382405747597346E-02), /* 3ffa1fffffffffffdb47bd275f722000 */
+ L(1.08459658374118041980976756063083500E-34), /* 3f8e2055d18b7117c9db1c318b1e889b */
+ L(3.90624999999999989384433621470426757E-02), /* 3ffa3ffffffffffffd8d5e18b042e000 */
+ L(-7.41674226146122000759491297811091830E-33), /* bf94341454e48029e5b0205d91baffdc */
+ L(4.29687500000000107505739500500200462E-02), /* 3ffa60000000000018ca04cd9085c000 */
+ L(-4.74689012756713017494437969420919847E-34), /* bf903b7c268103c6f7fbaaa24142e287 */
+ L(4.68749999999999978700749928325717352E-02), /* 3ffa7ffffffffffffb16b6d5479e3000 */
+ L(-1.06208165308448830117773486334902917E-32), /* bf94b92be4b3b5b5a596a0a5187cc955 */
+ L(5.07812499999999815072625435955786253E-02), /* 3ffa9fffffffffffd55bd086d5cbc000 */
+ L(-9.37038897148383660401929567549111394E-33), /* bf94853b111b0175b491c80d00419416 */
+ L(5.46874999999999809511553152189867394E-02), /* 3ffabfffffffffffd4138bfa74a61000 */
+ L(1.06642963074562437340498606682822123E-32), /* 3f94bafa3fe991b39255d563dfa05d89 */
+ L(5.85937500000000184331996330905145551E-02), /* 3ffae000000000002a810a5f2f8bf000 */
+ L(-1.76639977694797200820296641773791945E-34), /* bf8ed596f07ce4408f1705c8ec16864c */
+ L(6.25000000000000021544696744852045001E-02), /* 3ffb000000000000027be32045e2b000 */
+ L(1.68616371995798354366633034788947149E-32), /* 3f955e33d7440794d8a1b25233d086ab */
+ L(6.64062499999999965563110718495802889E-02), /* 3ffb0ffffffffffffc079a38a3fed000 */
+ L(-1.82463217667830160048872113565316215E-32), /* bf957af6163bcdb97cefab44a942482a */
+ L(7.03124999999999759989183341261898222E-02), /* 3ffb1fffffffffffe454218acea05000 */
+ L(-1.07843770101525495515646940862541503E-32), /* bf94bff72aada26d94e76e71c07e0580 */
+ L(7.42187499999999898968873730710101412E-02), /* 3ffb2ffffffffffff45a166496dc1000 */
+ L(1.28629441689592874462780757154138223E-32), /* 3f950b2724597b8b93ce1e9d1cf4d035 */
+ L(7.81249999999999957198938523510804668E-02), /* 3ffb3ffffffffffffb10bc52adbc5000 */
+ L(1.13297573459968118467100063135856856E-33), /* 3f91787eea895b3c245899cf34ad0abd */
+ L(8.20312500000000199911640621145851159E-02), /* 3ffb500000000000170c59a661a89000 */
+ L(-1.51161335208135146756554123073528707E-32), /* bf9539f326c5ca84e7db5401566f3775 */
+ L(8.59375000000000134175373433347670743E-02), /* 3ffb6000000000000f78287547af0000 */
+ L(1.09763629458404270323909815379924900E-32), /* 3f94c7f0b61b6e3e27d44b9f5bbc7e9d */
+ L(8.98437500000000036533922600308306335E-02), /* 3ffb70000000000004364a83b7a14000 */
+ L(3.11459653680110433194288029777718358E-33), /* 3f9302c0248136d65cebeab69488d949 */
+ L(9.37500000000000184977946245216914691E-02), /* 3ffb800000000000155395d870b17000 */
+ L(-4.66656154468277949130395786965043927E-33), /* bf9383aec9b993b6db492b1ede786d8a */
+ L(9.76562500000000237839723100419376084E-02), /* 3ffb9000000000001b6bca237f6c4000 */
+ L(-1.03028043424658760249140747856831301E-32), /* bf94abf6352e3d2bb398e47919a343fb */
+ L(1.01562500000000012345545575236836572E-01), /* 3ffba000000000000e3bc30cd9a1f000 */
+ L(2.15755372310795701322789783729456319E-32), /* 3f95c01b3b819edd9d07548fafd61550 */
+ L(1.05468749999999976493840484471911438E-01), /* 3ffbafffffffffffe4e634cd77985000 */
+ L(1.78771847038773333029677216592309083E-32), /* 3f95734b6ae650f33dd43c49a1df9fc0 */
+ L(1.09375000000000002267015055992785402E-01), /* 3ffbc00000000000029d1ad08de7b000 */
+ L(6.23263106693943817730045115112427717E-33), /* 3f9402e4b39ce2198a45e1d045868cd6 */
+ L(1.13281250000000022354208618429577398E-01), /* 3ffbd0000000000019c5cc3f9d2b5000 */
+ L(5.40514416644786448581426756221178868E-33), /* 3f93c10ab4021472c662f69435de9269 */
+ L(1.17187500000000013252367133076817603E-01), /* 3ffbe000000000000f47688cc561b000 */
+ L(-7.12412585457324989451327215568641325E-33), /* bf9427ecb343a8d1758990565fcfbf45 */
+ L(1.21093750000000020759863992944300792E-01), /* 3ffbf0000000000017ef3af97bf04000 */
+ L(6.26591408357572503875647872077266444E-33), /* 3f940446a09a2da771b45fc075514d12 */
+ L(1.25000000000000004739659392396765618E-01), /* 3ffc00000000000002bb7344ecd89000 */
+ L(-1.55611398459729463981000080101758830E-32), /* bf95433135febefa9e6aa4db39e263d2 */
+ L(1.28906249999999982360888081057894783E-01), /* 3ffc07fffffffffff5d4ed3154361000 */
+ L(-1.77531518652835570781208599686606474E-32), /* bf9570b7f225ea076f97f418d11359c1 */
+ L(1.32812500000000010568583998727400436E-01), /* 3ffc1000000000000617a5d09526a000 */
+ L(2.12104021624990594668286391598300893E-32), /* 3f95b885d767a1048d93055927a27adc */
+ L(1.36718749999999998434125157367005292E-01), /* 3ffc17ffffffffffff18eaebc7970000 */
+ L(2.50454798592543203967309921276955297E-32), /* 3f9604164e5598528a76faff26cd1c97 */
+ L(1.40625000000000015550032422969330356E-01), /* 3ffc20000000000008f6c79d8928c000 */
+ L(7.80972982879849783680252962992639832E-33), /* 3f9444674acf2b3225c7647e0d95edf3 */
+ L(1.44531250000000012402535562111122522E-01), /* 3ffc28000000000007264a8bc1ff1000 */
+ L(2.79662468716455159585514763921671876E-32), /* 3f96226b095bd78aa650faf95a221993 */
+ L(1.48437500000000007761020440087419948E-01), /* 3ffc3000000000000479530ff8fe3000 */
+ L(2.15518492972728435680556239996258527E-32), /* 3f95bf9d49295e73a957906a029768cb */
+ L(1.52343750000000001733189947520484032E-01), /* 3ffc38000000000000ffc6109f71f000 */
+ L(8.34032236093545825619420380704500188E-33), /* 3f945a71851226a1d0ce5e656693153e */
+ L(1.56249999999999988073295321246958484E-01), /* 3ffc3ffffffffffff91fedd62ae0f000 */
+ L(2.44119337150624789345260194989620908E-32), /* 3f95fb041a57bc1c1280680ac1620bea */
+ L(1.60156250000000002076894210913572460E-01), /* 3ffc48000000000001327ed84a199000 */
+ L(-7.36124501128859978061216696286151753E-33), /* bf9431c62f01e59d2c1e00f195a0037f */
+ L(1.64062500000000000950861276373482172E-01), /* 3ffc500000000000008c5285fba85000 */
+ L(-4.80566184447001164583855800470217373E-33), /* bf938f3d1fcafd390f22f80e6c19421f */
+ L(1.67968749999999989878071706155265999E-01), /* 3ffc57fffffffffffa2a445c548c5000 */
+ L(-4.42154428718618459799673088733365064E-32), /* bf96cb28cf1c1b28006d53ffe633b22a */
+ L(1.71874999999999999459734108403218175E-01), /* 3ffc5fffffffffffffb04554e9dd4000 */
+ L(-3.29736288190321377985697972236270628E-32), /* bf96566af0ebc852e84be12859b24a31 */
+ L(1.75781249999999997987525759778901845E-01), /* 3ffc67fffffffffffed702df6ffff000 */
+ L(-1.28800728638468399687523924685844352E-32), /* bf950b8236b88ca0c1b739dc91a7e3fc */
+ L(1.79687500000000004929565820437175783E-01), /* 3ffc70000000000002d779bb32d2e000 */
+ L(1.60624461317978482424582320675174225E-32), /* 3f954d9a9cc0c963fd081f3dc922d04e */
+ L(1.83593750000000016873727045739708856E-01), /* 3ffc78000000000009ba1f6263c9a000 */
+ L(-3.83390389582056606880506003118452558E-32), /* bf968e22a5d826f77f19ee788474df22 */
+ L(1.87500000000000013443068740761666872E-01), /* 3ffc80000000000007bfd8c72a1bf000 */
+ L(-2.74141662712926256150154726565203091E-32), /* bf961caf5ac59c7f941f928e324c2cc1 */
+ L(1.91406249999999981494101786848611970E-01), /* 3ffc87fffffffffff55502eeae001000 */
+ L(3.68992437075565165346469517256118001E-32), /* 3f967f2f03f9096793372a27b92ad79d */
+ L(1.95312499999999989069921848800501648E-01), /* 3ffc8ffffffffffff9b3015280394000 */
+ L(3.69712249337856518452988332367785220E-32), /* 3f967fee5fdb5bd501ff93516999faa0 */
+ L(1.99218750000000021148042946919300804E-01), /* 3ffc9800000000000c30e67939095000 */
+ L(2.50142536781142175091322844848566649E-32), /* 3f9603c34ae58e10b300b07137ee618a */
+ L(2.03124999999999977732559198825437141E-01), /* 3ffc9ffffffffffff329e7df079e4000 */
+ L(-2.41951877287895024779300892731537816E-32), /* bf95f683aefe6965f080df8f59dd34a1 */
+ L(2.07031249999999996744030653771913124E-01), /* 3ffca7fffffffffffe1f80f4b73ca000 */
+ L(-1.94346475904454000031592792989765585E-32), /* bf9593a44f87870a3d100d498501ecc7 */
+ L(2.10937500000000000251399259834392298E-01), /* 3ffcb000000000000025199873310000 */
+ L(-1.33528748788094249098998693871759411E-33), /* bf91bbb9b25c813668d6103d08acac35 */
+ L(2.14843749999999993936323609611875097E-01), /* 3ffcb7fffffffffffc8128c866236000 */
+ L(1.14839877977014974625242788556545292E-32), /* 3f94dd06b4655c9b83a1305b240e7a42 */
+ L(2.18750000000000015181732784749663837E-01), /* 3ffcc0000000000008c06da5fff24000 */
+ L(1.42689085313142539755499441881408391E-32), /* 3f95285a87dfa7ea7dad5b3be8c669f4 */
+ L(2.22656249999999992172647770539596569E-01), /* 3ffcc7fffffffffffb7ce2fe531f6000 */
+ L(-3.34421462850496887359128610229650547E-32), /* bf965b487962b5c2d9056ca6ac0c2e5c */
+ L(2.26562499999999989595607223847082419E-01), /* 3ffccffffffffffffa0095277be5c000 */
+ L(-3.08983588107248752517344356508205569E-32), /* bf9640dded57157f8eded311213bdbcd */
+ L(2.30468749999999979130462438434567117E-01), /* 3ffcd7fffffffffff3f8332996560000 */
+ L(-3.01407539802851697849105682795217019E-32), /* bf9638ffde35dbdfe1a1ffe45185de5d */
+ L(2.34375000000000012194252337217891971E-01), /* 3ffce0000000000007078dd402c86000 */
+ L(-8.46879710915628592284714319904522657E-33), /* bf945fc7b29a2ac6c9eff9eb258a510f */
+ L(2.38281249999999982991877076137149870E-01), /* 3ffce7fffffffffff6320b486eece000 */
+ L(-2.93563878880439245627127095245798544E-32), /* bf9630daaa4f40ff05caf29ace2ea7d4 */
+ L(2.42187499999999981447559841442773990E-01), /* 3ffceffffffffffff54e24a09a8d5000 */
+ L(-4.56766746558806021264215486909850481E-32), /* bf96da556dee11f3113e5a3467b908e6 */
+ L(2.46093749999999991067720539980207318E-01), /* 3ffcf7fffffffffffad9d405dcb5d000 */
+ L(2.14033004219908074003010247652128251E-32), /* 3f95bc8776e8f9ae098884aa664cc3df */
+ L(2.50000000000000016613825838126835953E-01), /* 3ffd00000000000004c9e24c12bb3000 */
+ L(2.57617532593749185996714235009382870E-32), /* 3f960b867cc01178c0ec68226c6cb47d */
+ L(2.53906250000000013372004437827044321E-01), /* 3ffd04000000000003daae05b3168000 */
+ L(7.20177123439204414298152646284640101E-32), /* 3f9775eff59ddad7e7530b83934af87f */
+ L(2.57812499999999995765234725413886085E-01), /* 3ffd07fffffffffffec7878bad9d5000 */
+ L(6.51253187532920882777046064603770602E-32), /* 3f975226659ca241402e71c2011583b0 */
+ L(2.61718750000000007647689994011222248E-01), /* 3ffd0c000000000002344cc793a0f000 */
+ L(3.02370610028725823590045201871491395E-32), /* 3f9639ffe55fa2fa011674448b4e5b96 */
+ L(2.65624999999999986893899042596554269E-01), /* 3ffd0ffffffffffffc38f0c0a1e9f000 */
+ L(-2.07683715950724761146070082510569258E-32), /* bf95af579a92e872fef81abfdf06bae8 */
+ L(2.69531249999999979842788204900639327E-01), /* 3ffd13fffffffffffa30a908d67db000 */
+ L(8.71465252506557329027658736641075706E-32), /* 3f97c47d99e19830447a42b1c0ffac61 */
+ L(2.73437500000000006712165837793818271E-01), /* 3ffd18000000000001ef453a58edb000 */
+ L(-6.62704045767568912140550474455810301E-32), /* bf9758187a204dcb06ece46588aeeaba */
+ L(2.77343749999999994411329302988535617E-01), /* 3ffd1bfffffffffffe63a0fec9c9e000 */
+ L(-4.87273466291944117406493607771338767E-32), /* bf96fa0381b0844a0be46bac2d673f0c */
+ L(2.81250000000000012677892447379453135E-01), /* 3ffd20000000000003a7769e125d6000 */
+ L(-8.55871796664700790726282049552906783E-32), /* bf97bc64e01332cf7616b0091b8dff2c */
+ L(2.85156249999999998558643013736363981E-01), /* 3ffd23ffffffffffff95a5894bccf000 */
+ L(-1.33068334720606220176455289635046875E-32), /* bf95145f43290ecf5b7adcb24697bc73 */
+ L(2.89062500000000008831431235621753924E-01), /* 3ffd280000000000028ba504fac59000 */
+ L(-9.34157398616814623985483776710704237E-32), /* bf97e50ad1115b941fcb5f0c88a428f7 */
+ L(2.92968750000000019840235286110877063E-01), /* 3ffd2c000000000005b7f372d184f000 */
+ L(4.99302093775173155906059132992249671E-33), /* 3f939ecdcfb97bad3f8dbec5df5ec67d */
+ L(2.96875000000000015867911730971630513E-01), /* 3ffd3000000000000492d860c79db000 */
+ L(7.86107787827057767235127454590866211E-33), /* 3f944689517ee8f16cdb97d6a6938f32 */
+ L(3.00781250000000015814100002286124758E-01), /* 3ffd340000000000048edfe73a17d000 */
+ L(-1.65419431293024229981937172317171504E-32), /* bf9557900e3efca16c89646b57f68dc0 */
+ L(3.04687499999999985213157159965287195E-01), /* 3ffd37fffffffffffbbcec6f99b36000 */
+ L(9.68753602893894024018934325652944198E-32), /* 3f97f70170e5458660c33a7e8d43d049 */
+ L(3.08593749999999989969324338045156215E-01), /* 3ffd3bfffffffffffd1bdde4d0fb1000 */
+ L(7.10268609610294706092252562643261106E-32), /* 3f9770cae45cdf615010401a4b37d8d4 */
+ L(3.12500000000000002971606591018488854E-01), /* 3ffd40000000000000db440fbc06b000 */
+ L(6.38924218802905979887732294952782964E-32), /* 3f974bbf988bb5622bd8fbaa46e8b811 */
+ L(3.16406250000000006594921047402056305E-01), /* 3ffd44000000000001e69e8954814000 */
+ L(3.96079878754651470094149874444850097E-32), /* 3f969b5017b9fa7a1e86975258c73d3d */
+ L(3.20312500000000006713799366908329147E-01), /* 3ffd48000000000001ef64159c065000 */
+ L(-1.86401314975634286055150437995880517E-32), /* bf958323f0434911794e5fb8bfe136ba */
+ L(3.24218749999999987061246567584951210E-01), /* 3ffd4bfffffffffffc4549db9b928000 */
+ L(-3.18643523744758601387071062700407431E-32), /* bf964ae5fa7e26c2c3981bed12e14372 */
+ L(3.28124999999999991782776266707412953E-01), /* 3ffd4ffffffffffffda1ad0840ca8000 */
+ L(-4.46964199751314296839915534813144652E-32), /* bf96d0277729ffd74727150df6d15547 */
+ L(3.32031250000000000393816557756032682E-01), /* 3ffd540000000000001d0efc04fad000 */
+ L(-9.03246333902065439930373230002688649E-33), /* bf947731a008748cc6dee948839ef7ae */
+ L(3.35937499999999983810482995064392173E-01), /* 3ffd57fffffffffffb556cab8ae61000 */
+ L(5.27742727066129518825981597650621794E-32), /* 3f9712050a6ddbf1cabf1b971f4b5d0b */
+ L(3.39843750000000004310441349760912471E-01), /* 3ffd5c0000000000013e0def5ddc4000 */
+ L(-3.85927263474732591932884416445586106E-32), /* bf9690c51088ef3db9ca000829c450c2 */
+ L(3.43749999999999990248130003997484364E-01), /* 3ffd5ffffffffffffd3070624a0af000 */
+ L(9.62005170171527308106468341512327487E-34), /* 3f913fae595cea84432eb01430817fca */
+ L(3.47656250000000004085726414568625697E-01), /* 3ffd640000000000012d79309e291000 */
+ L(-6.59664093705705297250259434519072507E-32), /* bf97568465eafb0e662e64a5dbfaf35f */
+
+ L(-1.98364257812501251077851763965418372E-03), /* bff6040000000001cd90f658cf0b1000 */
+ L(-3.71984513103117734260309047540278737E-34), /* bf8fee73c54483194782aac4a6154d11 */
+ L(-1.95312500000000378520649630233891879E-03), /* bff60000000000008ba643bb5e2e8000 */
+ L(-1.12194202736719050440745599339855038E-34), /* bf8e2a436aeff7bc529873354f47a3f5 */
+ L(-1.92260742187499397430259771221991482E-03), /* bff5f7fffffffffe4361cb51170da000 */
+ L(-2.30068299876822157331268484824540848E-34), /* bf8f31d02f85cfe8c0cc02276ce0f437 */
+ L(-1.89208984375001137424603270262074989E-03), /* bff5f0000000000347456ed490c23000 */
+ L(-1.15012507244426243338260435466985403E-34), /* bf8e31c174d5677a937a34ad8d2a70b4 */
+ L(-1.86157226562500172319250342061336738E-03), /* bff5e800000000007f262fa3617b4000 */
+ L(-3.12438344643346437509767736937785561E-34), /* bf8f9f4d426a2457c273d34ef7d9bde9 */
+ L(-1.83105468749999505256246872355430379E-03), /* bff5dffffffffffe92f18c1c2b6fa000 */
+ L(-5.91130415288336591179087455220308942E-35), /* bf8d3a4c80b42dc036bae446c9807f78 */
+ L(-1.80053710937499445182387245573120522E-03), /* bff5d7fffffffffe669dea82b4a4c000 */
+ L(-1.92396289352411531324908916321392100E-34), /* bf8eff7a2123fb573ba9778550d669bd */
+ L(-1.77001953125000387737631542516323906E-03), /* bff5d000000000011e19915c3ddb7000 */
+ L(7.91101758977203355387806553469731354E-36), /* 3f8a507f5a70faaccf469e3461873dea */
+ L(-1.73950195312500034854670281415554486E-03), /* bff5c8000000000019b7dc6ef97bd000 */
+ L(1.55906551582436824067407021178835755E-34), /* 3f8e9e7880333e34955aebcde3cfb053 */
+ L(-1.70898437499998955782591472611429852E-03), /* bff5bffffffffffcfd80e88aa6b96000 */
+ L(8.22951661962611381718215899498500357E-35), /* 3f8db58e6031a779b59f6ece191de7cc */
+ L(-1.67846679687500586652037711131708544E-03), /* bff5b80000000001b0df6fd21c133000 */
+ L(-8.96642618848426299713145894522897419E-35), /* bf8ddcbcab46d531801bfae4121f2f8a */
+ L(-1.64794921875000109499161354039904782E-03), /* bff5b0000000000050cbce8915575000 */
+ L(-2.88077905394253859590587789680486639E-34), /* bf8f7eebd4dd860ef73b674d5e707959 */
+ L(-1.61743164062501133830507079150388351E-03), /* bff5a80000000003449e8700c3e82000 */
+ L(-3.68271725851639066312899986829350273E-34), /* bf8fe9845fe20a5fe74059e0cae185d6 */
+ L(-1.58691406249999015546015764131101956E-03), /* bff59ffffffffffd2999e668cdd28000 */
+ L(8.48197657099957029953716507898788812E-35), /* 3f8dc2faaebb97392e451b07b28c4b12 */
+ L(-1.55639648437500317366570219290722587E-03), /* bff5980000000000ea2cd9a40d256000 */
+ L(-3.45156704719737676412949957712570373E-36), /* bf8925a079505516c8e317ac1ff53255 */
+ L(-1.52587890625000568759013197767046039E-03), /* bff5900000000001a3ab8a3f6b698000 */
+ L(-1.01902948542497496574967177677556729E-34), /* bf8e0ee78d94d9b5ad3d63ae35c9b554 */
+ L(-1.49536132812500945889014955936485340E-03), /* bff5880000000002b9f1621b57743000 */
+ L(-3.32264697086631598830366079048117140E-34), /* bf8fb9a7d14c32289204fbb0c9eb20e0 */
+ L(-1.46484374999999931883259902869504725E-03), /* bff57fffffffffffcdbd1c90e1b4a000 */
+ L(-1.76487524793892929381101031660811433E-34), /* bf8ed52f2f724bc1ae870b18356337b4 */
+ L(-1.43432617187498876325946983333888768E-03), /* bff577fffffffffcc2dff8faa5570000 */
+ L(-3.54550084538495708816233114576143814E-34), /* bf8fd74724576915868c1e8ce9f430f1 */
+ L(-1.40380859374999215367421282192718062E-03), /* bff56ffffffffffdbd0b18aac65ed000 */
+ L(-1.90585907028351204486765167064669639E-34), /* bf8efaaa0c0e23e50c11b2120348054f */
+ L(-1.37329101562499692341771212945644892E-03), /* bff567ffffffffff1cfd00f1b0577000 */
+ L(-3.59631150411372589637918252836880320E-34), /* bf8fde08239ac74942a46298ea4fb715 */
+ L(-1.34277343749999137467356674296739172E-03), /* bff55ffffffffffd839030b05d53d000 */
+ L(-1.49571076125940368185068762485268117E-35), /* bf8b3e1a3d5c684b27a9f835b1d8d3c9 */
+ L(-1.31225585937499247038404301859788734E-03), /* bff557fffffffffdd469936e691e3000 */
+ L(3.10375845385355395586146533282311300E-34), /* 3f8f9c8f6d63b7a4145716ffd92491fb */
+ L(-1.28173828124999024755581675764821898E-03), /* bff54ffffffffffd306589b0ab21d000 */
+ L(-1.98541096105909793397376077900810019E-34), /* bf8f07e808bbb1e35106c294ffbb9687 */
+ L(-1.25122070312500340204619591143332523E-03), /* bff5480000000000fb06d5f16ad2c000 */
+ L(3.62884195935761446237911443317457521E-34), /* 3f8fe25b17d623178a386a6fa6c5afb2 */
+ L(-1.22070312499999591578388993012071279E-03), /* bff53ffffffffffed2a356c440074000 */
+ L(-2.96756662615653130862526710937493307E-35), /* bf8c3b90d8ff2a991e5bd16718fb0645 */
+ L(-1.19018554687498821966212632349422735E-03), /* bff537fffffffffc9ac3b585dda89000 */
+ L(1.44659971891167323357060028901142644E-34), /* 3f8e809279ab249edf1dad9fe13fb0bf */
+ L(-1.15966796875000160938908064907298384E-03), /* bff530000000000076c0800db9639000 */
+ L(2.50088010538742402346270685365928513E-34), /* 3f8f4c6c8a483b60201d30c1a83c3cb7 */
+ L(-1.12915039062500267151512523291939657E-03), /* bff5280000000000c51f7e7315137000 */
+ L(7.56402096465615210500092443924888831E-35), /* 3f8d922c1e485d99aea2668ed32b55a6 */
+ L(-1.09863281249998665006360103291051571E-03), /* bff51ffffffffffc26f2d4c9ce2ba000 */
+ L(1.43982174467233642713619821353592061E-34), /* 3f8e7ec530b3d92b6303bec1c81214d1 */
+ L(-1.06811523437500522742248711752028025E-03), /* bff518000000000181b7380f10446000 */
+ L(5.41265133745862349181293024531133174E-35), /* 3f8d1fc9313d018b30e790e06b6be723 */
+ L(-1.03759765624999980942114138999770552E-03), /* bff50ffffffffffff1f01130490e1000 */
+ L(1.21525139612685854366189534669623436E-34), /* 3f8e4311b96b6fcde412caf3f0d86fb9 */
+ L(-1.00708007812499602697537601515759439E-03), /* bff507fffffffffedad7afcce7051000 */
+ L(1.00020246351201558505328236381833392E-34), /* 3f8e09e640992512b1300744a7e984ed */
+ L(-9.76562499999992592487302113340463694E-04), /* bff4fffffffffffbbad8151f8adf6000 */
+ L(-1.64984406575162932060422892046851002E-34), /* bf8eb69a919986e8054b86fc34300f24 */
+ L(-9.46044921874989085824996924138179594E-04), /* bff4effffffffff9b55a204fd9792000 */
+ L(-9.29539174108308550334255350011347171E-35), /* bf8dee3a50ed896b4656fa577a1df3d7 */
+ L(-9.15527343750013735214860599791540029E-04), /* bff4e00000000007eaf5bf103f82d000 */
+ L(3.07557018309280519949818825519490586E-35), /* 3f8c470cfbef77d32c74cb8042f6ee81 */
+ L(-8.85009765625012292294986105781516428E-04), /* bff4d000000000071605c65403b97000 */
+ L(4.77499983783821950338363358545463558E-35), /* 3f8cfbc3dc18884c4c4f9e07d90d7bd3 */
+ L(-8.54492187499986941239470706817188192E-04), /* bff4bffffffffff878ddf9cab264a000 */
+ L(-1.60128240346239526958630011447901568E-34), /* bf8ea9b1a21e19e2d5bd84b0fbffcf95 */
+ L(-8.23974609374996290174598690241743810E-04), /* bff4affffffffffddc86c249ebe06000 */
+ L(1.61677540391961912631535763471935882E-34), /* 3f8eadd00841366b0dc2bc262c2c8c36 */
+ L(-7.93457031249988696952538334288757473E-04), /* bff49ffffffffff97bf6f0aa85a5f000 */
+ L(1.22318577008381887076634753347515709E-34), /* 3f8e452db5b5d250878f71040da06d14 */
+ L(-7.62939453124996723316499040007097041E-04), /* bff48ffffffffffe1c7265b431108000 */
+ L(-1.03845161748762410745671891558398468E-34), /* bf8e14115ad884c96d1a820c73647220 */
+ L(-7.32421874999998242520117923997325794E-04), /* bff47ffffffffffefca4498b7aa8a000 */
+ L(5.64005211953031009549514026639438083E-35), /* 3f8d2be06950f68f1a6d8ff829a6928e */
+ L(-7.01904296874999772890934814265622012E-04), /* bff46fffffffffffde7c0fe5d8041000 */
+ L(5.90245467325173644235991233229525762E-35), /* 3f8d39d40cc49002189243c194b1db0e */
+ L(-6.71386718750008699269643939210658742E-04), /* bff460000000000503c91d798b60c000 */
+ L(-5.20515801723324452151498579012322191E-35), /* bf8d14c0f08a6a9285b32b8bda003eb5 */
+ L(-6.40869140625005499535275057463709988E-04), /* bff45000000000032b969184e9751000 */
+ L(-6.69469163285461870099846471658294534E-35), /* bf8d63f36bab7b24d936c9380e3d3fa6 */
+ L(-6.10351562499999293780097329596079841E-04), /* bff43fffffffffff97c7c433e35ed000 */
+ L(-1.16941808547394177991845382085515086E-34), /* bf8e36e27886f10b234a7dd8fc588bf0 */
+ L(-5.79833984375000068291972326409994795E-04), /* bff43000000000000a13ff6dcf2bf000 */
+ L(1.17885044988246219185041488459766001E-34), /* 3f8e3964677e001a00412aab52790842 */
+ L(-5.49316406249990904622170867910987793E-04), /* bff41ffffffffffac1c25739c716b000 */
+ L(-3.31875702128137033065075734368960972E-35), /* bf8c60e928d8982c3c99aef4f885a121 */
+ L(-5.18798828125011293653756992177727236E-04), /* bff410000000000682a62cff36775000 */
+ L(-5.69971237642088463334239430962628187E-35), /* bf8d2f0c76f8757d61cd1abc7ea7d066 */
+ L(-4.88281249999990512232251384917893121E-04), /* bff3fffffffffff50fb48992320df000 */
+ L(1.02144616714408655325510171265051108E-35), /* 3f8ab279a3626612710b9b3ac71734ac */
+ L(-4.57763671874997554564967307956493434E-04), /* bff3dffffffffffd2e3c272e3cca9000 */
+ L(-8.25484058867957231164162481843653503E-35), /* bf8db6e71158e7bf93e2e683f07aa841 */
+ L(-4.27246093749991203999790346349633286E-04), /* bff3bffffffffff5dbe103cba0eb2000 */
+ L(-3.51191203319375193921924105905691755E-35), /* bf8c757356d0f3dd7fbefc0dd419ab50 */
+ L(-3.96728515624986649402960638705483281E-04), /* bff39ffffffffff09b996882706ec000 */
+ L(-5.51925962073095883016589497244931171E-36), /* bf89d586d49f22289cfc860bebb99056 */
+ L(-3.66210937499999945095511981300980754E-04), /* bff37fffffffffffefcb88bfc7df6000 */
+ L(-2.11696465278144529364423332249588595E-35), /* bf8bc23a84d28e5496c874ef9833be25 */
+ L(-3.35693359374992480958458008559640163E-04), /* bff35ffffffffff754c548a8798f2000 */
+ L(-8.58941791799705081104736787493668352E-35), /* bf8dc8b1192fb7c3662826d43acb7c68 */
+ L(-3.05175781250009811036303273640122156E-04), /* bff340000000000b4fb4f1aad1c76000 */
+ L(-8.61173897858769926480551302277426632E-35), /* bf8dc9e0eabb1c0b33051011b64769fa */
+ L(-2.74658203124987298321920308390303850E-04), /* bff31ffffffffff15b2056ac252fd000 */
+ L(3.35152809454778381053519808988046631E-37), /* 3f85c82fb59ff8d7c80d44e635420ab1 */
+ L(-2.44140624999999992770514819575735516E-04), /* bff2fffffffffffffbbb82d6a7636000 */
+ L(3.54445837111124472730013879165516908E-35), /* 3f8c78e955b01378be647b1c92aa9a77 */
+ L(-2.13623046875012756463165168672749438E-04), /* bff2c0000000001d6a1635fea6bbf000 */
+ L(1.50050816288650121729916777279129473E-35), /* 3f8b3f1f6f616a61129a58e131cbd31d */
+ L(-1.83105468749991323078784464300306893E-04), /* bff27fffffffffebfe0cbd0c82399000 */
+ L(-9.14919506501448661140572099029756008E-37), /* bf873754bacaa9d9513b6127e791eb47 */
+ L(-1.52587890625013337032336300236461546E-04), /* bff240000000001ec0cb57f2cc995000 */
+ L(2.84906084373176180870418394956384516E-35), /* 3f8c2ef6d03a7e6ab087c4f099e4de89 */
+ L(-1.22070312499990746786116828458007518E-04), /* bff1ffffffffffd553bbb49f35a34000 */
+ L(6.71618008964968339584520728412444537E-36), /* 3f8a1dacb99c60071fc9cd2349495bf0 */
+ L(-9.15527343750029275602791047595142231E-05), /* bff180000000000d8040cd6ecde28000 */
+ L(-1.95753652091078750312541716951402172E-35), /* bf8ba0526cfb24d8d59122f1c7a09a14 */
+ L(-6.10351562499913258461494008080572701E-05), /* bff0ffffffffffaffebbb92d7f6a9000 */
+ L(5.69868489273961111703398456218119973E-36), /* 3f89e4ca5df09ef4a4386dd5b3bf0331 */
+ L(-3.05175781250092882818419203884960853E-05), /* bff0000000000055ab55de88fac1d000 */
+ L(9.03341100018476837609128961872915953E-36), /* 3f8a803d229fa3a0e834a63abb06662b */
+#define T_EXPL_ARG2 (2*T_EXPL_ARG1 + 2 + 2*65)
+ L(0.00000000000000000000000000000000000E+00), /* 00000000000000000000000000000000 */
+ L(0.00000000000000000000000000000000000E+00), /* 00000000000000000000000000000000 */
+ L(3.05175781249814607084128277672749162E-05), /* 3feffffffffffeaa02abb9102f499000 */
+ L(1.00271855391179733380665816525889949E-36), /* 3f8755351afa042ac3f58114824d4c10 */
+ L(6.10351562500179243748093427073421439E-05), /* 3ff1000000000052a95de07a4c26d000 */
+ L(1.67231624299180373502350811501181670E-36), /* 3f881c87a53691cae9d77f4e40d66616 */
+ L(9.15527343749970728685313252158399200E-05), /* 3ff17ffffffffff28040cc2acde28000 */
+ L(2.43665747834893104318707597514407880E-36), /* 3f889e9366c7c6c6a2ecb78dc9b0509e */
+ L(1.22070312500027751961838150070880064E-04), /* 3ff200000000003ffddde6c153b53000 */
+ L(-1.73322146370624186623546452226755405E-35), /* bf8b709d8d658ed5dbbe943de56ee84e */
+ L(1.52587890624995916105682628143179430E-04), /* 3ff23ffffffffff6954b56e285d23000 */
+ L(1.23580432650945898349135528000443828E-35), /* 3f8b06d396601dde16de7d7bc27346e6 */
+ L(1.83105468750008670314358488289621794E-04), /* 3ff2800000000013fe0cdc8c823b7000 */
+ L(4.30446229148833293310207915930740796E-35), /* 3f8cc9ba9bfe554a4f7f2fece291eb23 */
+ L(2.13623046875005741337455947623248132E-04), /* 3ff2c0000000000d3d1662de21a3f000 */
+ L(-3.96110759869520786681660669615255057E-35), /* bf8ca5379b04ff4a31aab0ceacc917e6 */
+ L(2.44140624999981493573336463433440506E-04), /* 3ff2ffffffffffd553bbdf48e0534000 */
+ L(-1.39617373942387888957350179316792928E-35), /* bf8b28eeedc286015802b63f96b8c5cd */
+ L(2.74658203124984920706309918754626834E-04), /* 3ff31fffffffffee9d60c8439ec1d000 */
+ L(-3.16168080483901830349738314447356223E-36), /* bf890cf74f81c77a611abc1243812444 */
+ L(3.05175781250008648918265055410966055E-04), /* 3ff3400000000009f8b5c9a346636000 */
+ L(8.54421306185008998867856704677221443E-35), /* 3f8dc649cd40922fc08adc6b6b20ead0 */
+ L(3.35693359374988945462612499316774515E-04), /* 3ff35ffffffffff34146c540f15b2000 */
+ L(7.96443137431639500475160850431097078E-35), /* 3f8da77638ed3148fc4d99d1c9e13446 */
+ L(3.66210937500027690542093987739604535E-04), /* 3ff380000000001fecce34bea89c4000 */
+ L(2.14507323877752361258862577769090367E-35), /* 3f8bc834e554d38894cf91957b0253d3 */
+ L(3.96728515625003928083564943615052121E-04), /* 3ff3a00000000004875d9a4acf6ab000 */
+ L(4.88358523466632050664019922448605508E-35), /* 3f8d03a7eaeef1a9f78c71a12c44dd28 */
+ L(4.27246093750017799227172345607351585E-04), /* 3ff3c00000000014856794c3ee850000 */
+ L(6.66520494592631402182216588784828935E-35), /* 3f8d6262118fcdb59b8f16108f5f1a6c */
+ L(4.57763671875002108342364320152138181E-04), /* 3ff3e000000000026e45d855410b9000 */
+ L(7.21799615960261390920033272189522298E-35), /* 3f8d7fc645cff8879462296af975c9fd */
+ L(4.88281249999999768797631616370963356E-04), /* 3ff3ffffffffffffbbc2d7cc004df000 */
+ L(-5.30564629906905979452258114088325361E-35), /* bf8d1a18b71929a30d67a217a27ae851 */
+ L(5.18798828124997339054881383202487041E-04), /* 3ff40ffffffffffe775055eea5851000 */
+ L(-4.03682911253647925867848180522846377E-35), /* bf8cad44f0f3e5199d8a589d9332acad */
+ L(5.49316406249980511907933706754958501E-04), /* 3ff41ffffffffff4c410b29bb62fb000 */
+ L(-2.08166843948323917121806956728438051E-35), /* bf8bbab8cf691403249fe5b699e25143 */
+ L(5.79833984374989593561576568548497165E-04), /* 3ff42ffffffffffa0047df328d817000 */
+ L(-1.72745033420153042445343706432627539E-34), /* bf8ecb3c2d7d3a9e6e960576be901fdf */
+ L(6.10351562500008540711511259540838154E-04), /* 3ff4400000000004ec62f54f8c271000 */
+ L(7.41889382604319545724663095428976499E-35), /* 3f8d8a74c002c81a47c93b8e05d15f8e */
+ L(6.40869140625020444702875407535884986E-04), /* 3ff450000000000bc91b09718515d000 */
+ L(-4.47321009727305792048065440180490107E-35), /* bf8cdbac5c8fe70822081d8993eb5cb6 */
+ L(6.71386718750007531635964622352684074E-04), /* 3ff460000000000457792973db05c000 */
+ L(5.13698959677949336513874456684462092E-35), /* 3f8d112114436949c5ef38d8049004ab */
+ L(7.01904296875006634673332887754430334E-04), /* 3ff4700000000003d31adf2cb8b1d000 */
+ L(-8.25665755717729437292989870760751482E-35), /* bf8db6ffcc8ef71f8e648e3a8b160f5a */
+ L(7.32421874999998244664170215504673504E-04), /* 3ff47ffffffffffefcf5498bd5c8a000 */
+ L(-5.64005234937832153139057628112753364E-35), /* bf8d2be06a1dfe90e7bf90fba7c12a98 */
+ L(7.62939453125017456345986752604096408E-04), /* 3ff490000000000a101a1b093d4a8000 */
+ L(-1.11084094120417622468550608896588329E-34), /* bf8e274feabd2d94f6694507a46accb1 */
+ L(7.93457031249987558617598988993908016E-04), /* 3ff49ffffffffff8d3f9dcab74bbf000 */
+ L(-1.22966480225449015129079129940978828E-34), /* bf8e46e6a65eef8fa9e42eddf3da305e */
+ L(8.23974609374997378723747633335135819E-04), /* 3ff4affffffffffe7d2afbaa55b26000 */
+ L(-1.62270010016794279091906973366704963E-34), /* bf8eaf633f057ebdb664a34566401c4e */
+ L(8.54492187500023938282350821569920958E-04), /* 3ff4c0000000000dccaabce399e59000 */
+ L(-1.39076361712838158775374263169606160E-34), /* bf8e71ba779364b3bbdba7841f2c4ca1 */
+ L(8.85009765624987932362186815286691297E-04), /* 3ff4cffffffffff90b218886edc2a000 */
+ L(4.07328275060905585228261577392403980E-35), /* 3f8cb1254dbb6ea4b8cfa5ed4cf28d24 */
+ L(9.15527343749975579461305518559161974E-04), /* 3ff4dffffffffff1ec2a21f25df33000 */
+ L(1.16855112459192484947855553716334015E-35), /* 3f8af10bf319e9f5270cf249eeffbe5c */
+ L(9.46044921875016761584725882821122521E-04), /* 3ff4f00000000009a992c46c16d71000 */
+ L(9.51660680007524262741115611071680436E-35), /* 3f8df9fd56e81f8edf133843910ee831 */
+ L(9.76562499999974118878133088548272636E-04), /* 3ff4fffffffffff1149edc46a6df6000 */
+ L(-5.65271128977550656964071208289181661E-36), /* bf89e0e12689dd721aa2314c81eb6429 */
+ L(1.00708007812498671732140389760347830E-03), /* 3ff507fffffffffc2be94b90ed091000 */
+ L(-1.43355074891483635310132767255371379E-34), /* bf8e7d1a688c247b16022daab1316d55 */
+ L(1.03759765625002637786192745235343007E-03), /* 3ff51000000000079a57b966bc158000 */
+ L(2.95905815240957629366749917020106928E-34), /* 3f8f895387fc73bb38f8a1b254c01a60 */
+ L(1.06811523437500860568717813047520763E-03), /* 3ff51800000000027afcd5b35f5e6000 */
+ L(-5.98328495358586628195372356742878314E-35), /* bf8d3e204130013bf6328f1b70ff8c76 */
+ L(1.09863281250001439958487251556220070E-03), /* 3ff5200000000004268077c6c66bd000 */
+ L(2.41371837889426603334113000868144760E-34), /* 3f8f40d6948edf864054ccf151f9815e */
+ L(1.12915039062501298413451613770002366E-03), /* 3ff5280000000003be0f5dd8fe81b000 */
+ L(-1.28815268997394164973472617519705703E-34), /* bf8e567321172ea089dce4bc8354ecb7 */
+ L(1.15966796874997272036339054191407232E-03), /* 3ff52ffffffffff8231e3bcfff1e8000 */
+ L(1.02996064554316248496839462594377804E-34), /* 3f8e11cf7d402789244f68e2d4f985b1 */
+ L(1.19018554687502744121802585360546796E-03), /* 3ff5380000000007e8cdf3f8f6c20000 */
+ L(-1.43453217726255628994625761307322163E-34), /* bf8e7d5d3370d85a374f5f4802fc517a */
+ L(1.22070312499997743541996266398850614E-03), /* 3ff53ffffffffff97f0722561f454000 */
+ L(-1.41086259180534339713692694428211646E-34), /* bf8e77125519ff76244dfec5fbd58402 */
+ L(1.25122070312501024092560690174507039E-03), /* 3ff5480000000002f3a59d8820691000 */
+ L(3.84102646020099293168698506729765213E-34), /* 3f8ffe8f5b86f9c3569c8f26e19b1f50 */
+ L(1.28173828124997986521442660131425390E-03), /* 3ff54ffffffffffa3250a764439d9000 */
+ L(1.44644589735033114377952806106652650E-34), /* 3f8e808801b80dcf38323cdbfdca2549 */
+ L(1.31225585937501665804856968749058137E-03), /* 3ff5580000000004cd25a414c6d62000 */
+ L(1.67474574742200577294563576414361377E-34), /* 3f8ebd394a151dbda4f81d5d83c0f1e9 */
+ L(1.34277343749997290265837386401818888E-03), /* 3ff55ffffffffff83091b042cfd59000 */
+ L(-1.55650565030381326742591837551559103E-34), /* bf8e9dca490d7fecfadba9625ffb91c5 */
+ L(1.37329101562497720784949380297774268E-03), /* 3ff567fffffffff96e3c7312f5ccf000 */
+ L(1.65279335325630026116581677369221748E-34), /* 3f8eb763496f5bd7404f2298b402074f */
+ L(1.40380859374999099958354100336136647E-03), /* 3ff56ffffffffffd67e2f09f2a381000 */
+ L(1.89919944388961890195706641264717076E-34), /* 3f8ef8e4d0ffdfeba982aa8829501389 */
+ L(1.43432617187497484122173130998160625E-03), /* 3ff577fffffffff8bf9c1d71af8a8000 */
+ L(2.57638517142061429772064578590009568E-34), /* 3f8f5675d82c1cc4ada70fd3a957b89a */
+ L(1.46484374999999929342158925502052945E-03), /* 3ff57fffffffffffcbdd1c7671b46000 */
+ L(1.76487201934184070490166772482073801E-34), /* 3f8ed52ef732458f6e4c5c07504f33cc */
+ L(1.49536132812502318451070466256902933E-03), /* 3ff5880000000006aeb7066c8ad43000 */
+ L(2.38068367275295804321313550609246656E-34), /* 3f8f3c7277ae6fc390ace5e06c0b025b */
+ L(1.52587890625000448053340248672949543E-03), /* 3ff59000000000014a9ae2104b3bc000 */
+ L(1.01174455568392813258454590274740959E-34), /* 3f8e0cf7c434762991bb38e12acee215 */
+ L(1.55639648437501113499837053523090913E-03), /* 3ff5980000000003359e2c204355e000 */
+ L(-2.82398418808099749023517211651363693E-35), /* bf8c2c4c2971d88caa95e15fb1ccb1a1 */
+ L(1.58691406249999937955142588308171026E-03), /* 3ff59fffffffffffd2380ecbc87c2000 */
+ L(-1.27361695572422741562701199136538047E-34), /* bf8e5295e0e206dfb0f0266c07225448 */
+ L(1.61743164062498000531048954475329309E-03), /* 3ff5a7fffffffffa3ca6fe61ed94c000 */
+ L(-1.22606548862580061633942923016222044E-34), /* bf8e45f1b17bb61039d21a351bb207b8 */
+ L(1.64794921875001835451453858682255576E-03), /* 3ff5b000000000054a52fa20f6565000 */
+ L(1.39132339594152335892305491425264583E-34), /* 3f8e71e0904c5449b414ee49b191cef2 */
+ L(1.67846679687501263995029340691547953E-03), /* 3ff5b80000000003a4a9e912c910b000 */
+ L(6.67245854693585315412242764786197029E-35), /* 3f8d62c4ccac1e7511a617d469468ccd */
+ L(1.70898437500002646861403514115369655E-03), /* 3ff5c00000000007a109fbaa7e015000 */
+ L(6.87367172354719289559624829652240928E-36), /* 3f8a245fa835eceb42bae8128d9336db */
+ L(1.73950195312501174308226096992992128E-03), /* 3ff5c80000000003627c8d637a005000 */
+ L(-2.20824271875474985927385878948759352E-34), /* bf8f25869b1cbefb25e735992f232f57 */
+ L(1.77001953124997491747605207736194513E-03), /* 3ff5cffffffffff8c53c84b6883b8000 */
+ L(3.43123048533596296514343180408963705E-34), /* 3f8fc816b91d173ddadbbf09b1287906 */
+ L(1.80053710937497698911127570705069398E-03), /* 3ff5d7fffffffff95e1899f4a8430000 */
+ L(3.99231237340890073475077494556136100E-35), /* 3f8ca889148f62fa854da5674df41279 */
+ L(1.83105468750002267094899598630423914E-03), /* 3ff5e0000000000688d21e62ba674000 */
+ L(-3.22274595655810623999007524769365273E-34), /* bf8fac605cb9ae01eb719675ced25560 */
+ L(1.86157226562500499224728040579690330E-03), /* 3ff5e80000000001705ce28a6d89e000 */
+ L(3.07094985075881613489605622068441083E-34), /* 3f8f98330225ec7e2c8f3c0d1c432b91 */
+ L(1.89208984374998234666824993196980949E-03), /* 3ff5effffffffffae969fdc7cd8cf000 */
+ L(-3.06287628722973914692165056776495733E-34), /* bf8f9720477d9cfa10e464df7f91020c */
+ L(1.92260742187501225343755557292811682E-03), /* 3ff5f800000000038824e428ed49a000 */
+ L(6.30049124729794620592961282769623368E-35), /* 3f8d4efdd7cd4336d88a6aa49e1e96bc */
+ L(1.95312499999998514894032051116231258E-03), /* 3ff5fffffffffffbb82f6a04f1ae0000 */
+ L(-6.14610057507500948543216998736262902E-35), /* bf8d46c862d39255370e7974d48daa7e */
+ L(1.98364257812501222021119324146882732E-03), /* 3ff6040000000001c2d8a1aa5188d000 */
+ L(3.71942298418113774118754986159801984E-34), /* 3f8fee6567d9940495519ffe62cbc9a4 */
+
+ L(7.06341639425619532977052017486130353E-01), /* 3ffe69a59c8245a9ac00000000000000 */
+ L(7.09106182437398424589503065362805501E-01), /* 3ffe6b0ff72deb89d000000000000000 */
+ L(7.11881545564596485142772053222870454E-01), /* 3ffe6c7bbce9a6d93000000000000000 */
+ L(7.14667771155948150507697391731198877E-01), /* 3ffe6de8ef213d71e000000000000000 */
+ L(7.17464901725936049503573599395167548E-01), /* 3ffe6f578f41e1a9e400000000000000 */
+ L(7.20272979955439790478166628417966422E-01), /* 3ffe70c79eba33c06c00000000000000 */
+ L(7.23092048692387218133958981525211129E-01), /* 3ffe72391efa434c7400000000000000 */
+ L(7.25922150952408251622927082280511968E-01), /* 3ffe73ac117390acd800000000000000 */
+ L(7.28763329919491220643124052003258839E-01), /* 3ffe752077990e79d000000000000000 */
+ L(7.31615628946641782803794740175362676E-01), /* 3ffe769652df22f7e000000000000000 */
+ L(7.34479091556544505525749855223693885E-01), /* 3ffe780da4bba98c4800000000000000 */
+ L(7.37353761442226890432394270646909717E-01), /* 3ffe79866ea5f432d400000000000000 */
+ L(7.40239682467726090031590047146892175E-01), /* 3ffe7b00b216ccf53000000000000000 */
+ L(7.43136898668758316688354170764796436E-01), /* 3ffe7c7c70887763c000000000000000 */
+ L(7.46045454253390638577059235103661194E-01), /* 3ffe7df9ab76b20fd000000000000000 */
+ L(7.48965393602715662213498148958024103E-01), /* 3ffe7f78645eb8076400000000000000 */
+ L(7.51896761271528629722027403659012634E-01), /* 3ffe80f89cbf42526400000000000000 */
+ L(7.54839601989007347171423134568613023E-01), /* 3ffe827a561889716000000000000000 */
+ L(7.57793960659394638668118204805068672E-01), /* 3ffe83fd91ec46ddc000000000000000 */
+ L(7.60759882362683631518152083117456641E-01), /* 3ffe858251bdb68b8c00000000000000 */
+ L(7.63737412355305483879774897104653064E-01), /* 3ffe87089711986c9400000000000000 */
+ L(7.66726596070820082262642358728044201E-01), /* 3ffe8890636e31f54400000000000000 */
+ L(7.69727479120609181517664865168626420E-01), /* 3ffe8a19b85b4fa2d800000000000000 */
+ L(7.72740107294572486917871856348938309E-01), /* 3ffe8ba4976246833800000000000000 */
+ L(7.75764526561826289752232810315035749E-01), /* 3ffe8d31020df5be4400000000000000 */
+ L(7.78800783071404878477039801509818062E-01), /* 3ffe8ebef9eac820b000000000000000 */
+ L(7.81848923152964780936002853195532225E-01), /* 3ffe904e8086b5a87800000000000000 */
+ L(7.84908993317491698871180005880887620E-01), /* 3ffe91df97714512d800000000000000 */
+ L(7.87981040258010162480317717381694820E-01), /* 3ffe9372403b8d6bcc00000000000000 */
+ L(7.91065110850296016042904057030682452E-01), /* 3ffe95067c78379f2800000000000000 */
+ L(7.94161252153591734614934694036492147E-01), /* 3ffe969c4dbb800b4800000000000000 */
+ L(7.97269511411324433014513601847284008E-01), /* 3ffe9833b59b38154400000000000000 */
+ L(8.00389936051826789142893403550260700E-01), /* 3ffe99ccb5aec7bec800000000000000 */
+ L(8.03522573689060742863077280162542593E-01), /* 3ffe9b674f8f2f3d7c00000000000000 */
+ L(8.06667472123343942680406826184480451E-01), /* 3ffe9d0384d70893f800000000000000 */
+ L(8.09824679342079301047618855591281317E-01), /* 3ffe9ea15722892c7800000000000000 */
+ L(8.12994243520486992160556383169023320E-01), /* 3ffea040c80f8374f000000000000000 */
+ L(8.16176213022339780422953481320291758E-01), /* 3ffea1e1d93d687d0000000000000000 */
+ L(8.19370636400700819157449927843117621E-01), /* 3ffea3848c4d49954c00000000000000 */
+ L(8.22577562398664585696650419777142815E-01), /* 3ffea528e2e1d9f09800000000000000 */
+ L(8.25797039950100647542896581398963463E-01), /* 3ffea6cede9f70467c00000000000000 */
+ L(8.29029118180400342863478613253391813E-01), /* 3ffea876812c0877bc00000000000000 */
+ L(8.32273846407226292054559735333896242E-01), /* 3ffeaa1fcc2f45343800000000000000 */
+ L(8.35531274141265073440720811959181447E-01), /* 3ffeabcac15271a2a400000000000000 */
+ L(8.38801451086982535754188461396552157E-01), /* 3ffead7762408309bc00000000000000 */
+ L(8.42084427143382358016410194068157580E-01), /* 3ffeaf25b0a61a7b4c00000000000000 */
+ L(8.45380252404767357221615498019673396E-01), /* 3ffeb0d5ae318680c400000000000000 */
+ L(8.48688977161503960155997106085123960E-01), /* 3ffeb2875c92c4c99400000000000000 */
+ L(8.52010651900789478530029441571969073E-01), /* 3ffeb43abd7b83db1c00000000000000 */
+ L(8.55345327307422548246407245642330963E-01), /* 3ffeb5efd29f24c26400000000000000 */
+ L(8.58693054264576483003423845730139874E-01), /* 3ffeb7a69db2bcc77800000000000000 */
+ L(8.62053883854575708767242758767679334E-01), /* 3ffeb95f206d17228000000000000000 */
+ L(8.65427867359675251357487013592617586E-01), /* 3ffebb195c86b6b29000000000000000 */
+ L(8.68815056262843166123843730019871145E-01), /* 3ffebcd553b9d7b62000000000000000 */
+ L(8.72215502248546159513864495238522068E-01), /* 3ffebe9307c271855000000000000000 */
+ L(8.75629257203538208242932228131394368E-01), /* 3ffec0527a5e384ddc00000000000000 */
+ L(8.79056373217652342599848225290770642E-01), /* 3ffec213ad4c9ed0d800000000000000 */
+ L(8.82496902584595399599010079327854328E-01), /* 3ffec3d6a24ed8221800000000000000 */
+ L(8.85950897802745995779361010136199184E-01), /* 3ffec59b5b27d9696800000000000000 */
+ L(8.89418411575955636383383762222365476E-01), /* 3ffec761d99c5ba58800000000000000 */
+ L(8.92899496814352794382685374330321793E-01), /* 3ffec92a1f72dd70d400000000000000 */
+ L(8.96394206635150403439382671422208659E-01), /* 3ffecaf42e73a4c7d800000000000000 */
+ L(8.99902594363456265202927397695020773E-01), /* 3ffeccc00868c0d18800000000000000 */
+ L(9.03424713533086704009278378180169966E-01), /* 3ffece8daf1e0ba94c00000000000000 */
+ L(9.06960617887383580004723171441582963E-01), /* 3ffed05d24612c2af000000000000000 */
+ L(9.10510361380034133338412516422977205E-01), /* 3ffed22e6a0197c02c00000000000000 */
+ L(9.14073998175894436579724811053893063E-01), /* 3ffed40181d094303400000000000000 */
+ L(9.17651582651815816982221463149471674E-01), /* 3ffed5d66da13970f400000000000000 */
+ L(9.21243169397474526149949269893113524E-01), /* 3ffed7ad2f48737a2000000000000000 */
+ L(9.24848813216204823639543519675498828E-01), /* 3ffed985c89d041a3000000000000000 */
+ L(9.28468569125835141431224428743007593E-01), /* 3ffedb603b7784cd1800000000000000 */
+ L(9.32102492359527579068867453315760940E-01), /* 3ffedd3c89b26894e000000000000000 */
+ L(9.35750638366620729469147477175283711E-01), /* 3ffedf1ab529fdd41c00000000000000 */
+ L(9.39413062813475779888605643463961314E-01), /* 3ffee0fabfbc702a3c00000000000000 */
+ L(9.43089821584325888048638830696290825E-01), /* 3ffee2dcab49ca51b400000000000000 */
+ L(9.46780970782128888929563004239753354E-01), /* 3ffee4c079b3f8000400000000000000 */
+ L(9.50486566729423443256052905780961737E-01), /* 3ffee6a62cdec7c7b000000000000000 */
+ L(9.54206665969188322362626308859034907E-01), /* 3ffee88dc6afecfbfc00000000000000 */
+ L(9.57941325265705301283958306157728657E-01), /* 3ffeea77490f0196b000000000000000 */
+ L(9.61690601605425299247542625380447134E-01), /* 3ffeec62b5e5881fb000000000000000 */
+ L(9.65454552197837823079851204965962097E-01), /* 3ffeee500f1eed967000000000000000 */
+ L(9.69233234476344074348475032820715569E-01), /* 3ffef03f56a88b5d7800000000000000 */
+ L(9.73026706099133165128733935489435680E-01), /* 3ffef2308e71a927a800000000000000 */
+ L(9.76835024950062025261843245971249416E-01), /* 3ffef423b86b7ee79000000000000000 */
+ L(9.80658249139538557015427500118676107E-01), /* 3ffef618d68936c09c00000000000000 */
+ L(9.84496437005408397968864164795377292E-01), /* 3ffef80feabfeefa4800000000000000 */
+ L(9.88349647113845042323276857132441364E-01), /* 3ffefa08f706bbf53800000000000000 */
+ L(9.92217938260243514925207364285597578E-01), /* 3ffefc03fd56aa225000000000000000 */
+ L(9.96101369470117486981664001177705359E-01), /* 3ffefe00ffaabffbbc00000000000000 */
+#define T_EXPL_RES1 (T_EXPL_ARG2 + 2 + 2*65 + 89)
+ L(1.00000000000000000000000000000000000E+00), /* 3fff0000000000000000000000000000 */
+ L(1.00391388933834757590801700644078664E+00), /* 3fff0100802ab5577800000000000000 */
+ L(1.00784309720644799091004983893071767E+00), /* 3fff0202015600445c00000000000000 */
+ L(1.01178768355933151879000320150225889E+00), /* 3fff0304848362076c00000000000000 */
+ L(1.01574770858668572692806719715008512E+00), /* 3fff04080ab55de39000000000000000 */
+ L(1.01972323271377413034244341361045372E+00), /* 3fff050c94ef7a206c00000000000000 */
+ L(1.02371431660235789884438872832106426E+00), /* 3fff06122436410dd000000000000000 */
+ L(1.02772102115162167201845022646011785E+00), /* 3fff0718b98f42085000000000000000 */
+ L(1.03174340749910264936062276319717057E+00), /* 3fff08205601127ec800000000000000 */
+ L(1.03578153702162378824169763902318664E+00), /* 3fff0928fa934ef90800000000000000 */
+ L(1.03983547133622999947277776300325058E+00), /* 3fff0a32a84e9c1f5800000000000000 */
+ L(1.04390527230112850620713516036630608E+00), /* 3fff0b3d603ca7c32800000000000000 */
+ L(1.04799100201663270004459604933799710E+00), /* 3fff0c49236829e8bc00000000000000 */
+ L(1.05209272282610977189420964350574650E+00), /* 3fff0d55f2dce5d1e800000000000000 */
+ L(1.05621049731693195106174698594259098E+00), /* 3fff0e63cfa7ab09d000000000000000 */
+ L(1.06034438832143151909548350886325352E+00), /* 3fff0f72bad65671b800000000000000 */
+ L(1.06449445891785943185681162503897212E+00), /* 3fff1082b577d34ed800000000000000 */
+ L(1.06866077243134810492719566354935523E+00), /* 3fff1193c09c1c595c00000000000000 */
+ L(1.07284339243487741866189821848820429E+00), /* 3fff12a5dd543ccc4c00000000000000 */
+ L(1.07704238275024494209120007326419000E+00), /* 3fff13b90cb25176a400000000000000 */
+ L(1.08125780744903959851299646288680378E+00), /* 3fff14cd4fc989cd6400000000000000 */
+ L(1.08548973085361949442173568058933597E+00), /* 3fff15e2a7ae28fecc00000000000000 */
+ L(1.08973821753809324563988525369495619E+00), /* 3fff16f9157587069400000000000000 */
+ L(1.09400333232930546678574046381982043E+00), /* 3fff18109a3611c35000000000000000 */
+ L(1.09828514030782586896606289883493446E+00), /* 3fff192937074e0cd800000000000000 */
+ L(1.10258370680894224324930519287590869E+00), /* 3fff1a42ed01d8cbc800000000000000 */
+ L(1.10689909742365749645287564817408565E+00), /* 3fff1b5dbd3f68122400000000000000 */
+ L(1.11123137799969046168868658241990488E+00), /* 3fff1c79a8dacc350c00000000000000 */
+ L(1.11558061464248076122274255794764031E+00), /* 3fff1d96b0eff0e79400000000000000 */
+ L(1.11994687371619722204840741142106708E+00), /* 3fff1eb4d69bde569c00000000000000 */
+ L(1.12433022184475073235176978414529003E+00), /* 3fff1fd41afcba45e800000000000000 */
+ L(1.12873072591281087273529237791080959E+00), /* 3fff20f47f31c92e4800000000000000 */
+ L(1.13314845306682632219974493636982515E+00), /* 3fff2216045b6f5cd000000000000000 */
+ L(1.13758347071604959399593326452304609E+00), /* 3fff2338ab9b32134800000000000000 */
+ L(1.14203584653356560174586320499656722E+00), /* 3fff245c7613b8a9b000000000000000 */
+ L(1.14650564845732405583333957110880874E+00), /* 3fff258164e8cdb0d800000000000000 */
+ L(1.15099294469117646722011727433709893E+00), /* 3fff26a7793f60164400000000000000 */
+ L(1.15549780370591653744227755851170514E+00), /* 3fff27ceb43d84490400000000000000 */
+ L(1.16002029424032515603215642840950750E+00), /* 3fff28f7170a755fd800000000000000 */
+ L(1.16456048530221917269855680387991015E+00), /* 3fff2a20a2ce96406400000000000000 */
+ L(1.16911844616950438835445424956560601E+00), /* 3fff2b4b58b372c79400000000000000 */
+ L(1.17369424639123270948104504896036815E+00), /* 3fff2c7739e3c0f32c00000000000000 */
+ L(1.17828795578866324378353169777255971E+00), /* 3fff2da4478b620c7400000000000000 */
+ L(1.18289964445632783673900689791480545E+00), /* 3fff2ed282d763d42400000000000000 */
+ L(1.18752938276310060494722620205720887E+00), /* 3fff3001ecf601af7000000000000000 */
+ L(1.19217724135327157730657177125976887E+00), /* 3fff31328716a5d63c00000000000000 */
+ L(1.19684329114762477708211463323095813E+00), /* 3fff32645269ea829000000000000000 */
+ L(1.20152760334452030077656559114984702E+00), /* 3fff339750219b212c00000000000000 */
+ L(1.20623024942098072687102217059873510E+00), /* 3fff34cb8170b5835400000000000000 */
+ L(1.21095130113378179892436037334846333E+00), /* 3fff3600e78b6b11d000000000000000 */
+ L(1.21569083052054743854242246925423387E+00), /* 3fff373783a722012400000000000000 */
+ L(1.22044890990084875515009343871497549E+00), /* 3fff386f56fa7686e800000000000000 */
+ L(1.22522561187730755216662714701669756E+00), /* 3fff39a862bd3c106400000000000000 */
+ L(1.23002100933670455162882717559114099E+00), /* 3fff3ae2a8287e7a8000000000000000 */
+ L(1.23483517545109100499445276000187732E+00), /* 3fff3c1e2876834aa800000000000000 */
+ L(1.23966818367890557750499169742397498E+00), /* 3fff3d5ae4e2cae92c00000000000000 */
+ L(1.24452010776609517384017067342938390E+00), /* 3fff3e98deaa11dcbc00000000000000 */
+ L(1.24939102174724003813111039562500082E+00), /* 3fff3fd8170a52071800000000000000 */
+ L(1.25428099994668373895478907797951251E+00), /* 3fff41188f42c3e32000000000000000 */
+ L(1.25919011697966698459794088194030337E+00), /* 3fff425a4893dfc3f800000000000000 */
+ L(1.26411844775346637881341393949696794E+00), /* 3fff439d443f5f159000000000000000 */
+ L(1.26906606746853711786826579555054195E+00), /* 3fff44e183883d9e4800000000000000 */
+ L(1.27403305161966090564007458851847332E+00), /* 3fff462707b2bac20c00000000000000 */
+ L(1.27901947599709753244923149395617656E+00), /* 3fff476dd2045ac67800000000000000 */
+ L(1.28402541668774150540599521264084615E+00), /* 3fff48b5e3c3e8186800000000000000 */
+ L(1.28905095007628295311619126550795045E+00), /* 3fff49ff3e397492bc00000000000000 */
+ L(1.29409615284637330434591717676084954E+00), /* 3fff4b49e2ae5ac67400000000000000 */
+ L(1.29916110198179535206719492634874769E+00), /* 3fff4c95d26d3f440800000000000000 */
+ L(1.30424587476763775839572190307080746E+00), /* 3fff4de30ec211e60000000000000000 */
+ L(1.30935054879147461104338390214252286E+00), /* 3fff4f3198fa0f1cf800000000000000 */
+ L(1.31447520194454914310711046709911898E+00), /* 3fff50817263c13cd000000000000000 */
+ L(1.31961991242296217130558488861424848E+00), /* 3fff51d29c4f01cb3000000000000000 */
+ L(1.32478475872886558573071624778094701E+00), /* 3fff5325180cfacf7800000000000000 */
+ L(1.32996981967165983640200010995613411E+00), /* 3fff5478e6f02823d000000000000000 */
+ L(1.33517517436919680440254865061433520E+00), /* 3fff55ce0a4c58c7bc00000000000000 */
+ L(1.34040090224898678084031189428060316E+00), /* 3fff57248376b033d800000000000000 */
+ L(1.34564708304941055283521222918352578E+00), /* 3fff587c53c5a7af0400000000000000 */
+ L(1.35091379682093615244298234756570309E+00), /* 3fff59d57c910fa4e000000000000000 */
+ L(1.35620112392734021300455538039386738E+00), /* 3fff5b2fff3210fd9400000000000000 */
+ L(1.36150914504693443252136830778908916E+00), /* 3fff5c8bdd032e770800000000000000 */
+ L(1.36683794117379636690046140756749082E+00), /* 3fff5de9176045ff5400000000000000 */
+ L(1.37218759361900544124779344201670028E+00), /* 3fff5f47afa69210a800000000000000 */
+ L(1.37755818401188367960941150158760138E+00), /* 3fff60a7a734ab0e8800000000000000 */
+ L(1.38294979430124120867162673675920814E+00), /* 3fff6208ff6a88a46000000000000000 */
+ L(1.38836250675662681297595213436579797E+00), /* 3fff636bb9a983258400000000000000 */
+ L(1.39379640396958309755959248832368758E+00), /* 3fff64cfd75454ee7c00000000000000 */
+ L(1.39925156885490681313299887733592186E+00), /* 3fff663559cf1bc7c400000000000000 */
+ L(1.40472808465191417726103395580139477E+00), /* 3fff679c427f5a49f400000000000000 */
+ L(1.41022603492571069194738697660795879E+00), /* 3fff690492cbf9432c00000000000000 */
+ L(1.41574550356846662335641440222389065E+00), /* 3fff6a6e4c1d491e1800000000000000 */
+
+ L(9.98018323540573404351050612604012713E-01), /* 3ffefefc41f8d4bdb000000000000000 */
+ L(9.98048781107475468932221929208026268E-01), /* 3ffeff003ff556aa8800000000000000 */
+ L(9.98079239603882895082165305211674422E-01), /* 3ffeff043df9d4986000000000000000 */
+ L(9.98109699029824021243584297735651489E-01), /* 3ffeff083c064e972c00000000000000 */
+ L(9.98140159385327269125909310787392315E-01), /* 3ffeff0c3a1ac4b6ec00000000000000 */
+ L(9.98170620670420977171843901487591211E-01), /* 3ffeff10383737079400000000000000 */
+ L(9.98201082885133511579667242585856002E-01), /* 3ffeff14365ba5991c00000000000000 */
+ L(9.98231546029493238547658506831794512E-01), /* 3ffeff183488107b7c00000000000000 */
+ L(9.98262010103528552029672482603928074E-01), /* 3ffeff1c32bc77beb000000000000000 */
+ L(9.98292475107267818223988342651864514E-01), /* 3ffeff2030f8db72b000000000000000 */
+ L(9.98322941040739375573309644096298143E-01), /* 3ffeff242f3d3ba77000000000000000 */
+ L(9.98353407903971645787066790944663808E-01), /* 3ffeff282d89986cf000000000000000 */
+ L(9.98383875696992967307963340317655820E-01), /* 3ffeff2c2bddf1d32400000000000000 */
+ L(9.98414344419831761845429696222709026E-01), /* 3ffeff302a3a47ea0c00000000000000 */
+ L(9.98444814072516340086593800151604228E-01), /* 3ffeff34289e9ac19800000000000000 */
+ L(9.98475284655075123740886056111776270E-01), /* 3ffeff38270aea69c800000000000000 */
+ L(9.98505756167536479006585636852832977E-01), /* 3ffeff3c257f36f29400000000000000 */
+ L(9.98536228609928799837547330753295682E-01), /* 3ffeff4023fb806bf800000000000000 */
+ L(9.98566701982280452432050310562772211E-01), /* 3ffeff44227fc6e5ec00000000000000 */
+ L(9.98597176284619802988373749030870385E-01), /* 3ffeff48210c0a706800000000000000 */
+ L(9.98627651516975245460372434536111541E-01), /* 3ffeff4c1fa04b1b6800000000000000 */
+ L(9.98658127679375173801901155457017012E-01), /* 3ffeff501e3c88f6e800000000000000 */
+ L(9.98688604771847954211239084543194622E-01), /* 3ffeff541ce0c412e000000000000000 */
+ L(9.98719082794421980642241010173165705E-01), /* 3ffeff581b8cfc7f4c00000000000000 */
+ L(9.98749561747125619293186105096538085E-01), /* 3ffeff5c1a41324c2400000000000000 */
+ L(9.98780041629987291873504773320746608E-01), /* 3ffeff6018fd65896800000000000000 */
+ L(9.98810522443035364581476187595399097E-01), /* 3ffeff6417c196471000000000000000 */
+ L(9.98841004186298203615379520670103375E-01), /* 3ffeff68168dc4951400000000000000 */
+ L(9.98871486859804230684645176552294288E-01), /* 3ffeff6c1561f0837400000000000000 */
+ L(9.98901970463581839743127943620493170E-01), /* 3ffeff70143e1a222c00000000000000 */
+ L(9.98932454997659369233531378995394334E-01), /* 3ffeff74132241813000000000000000 */
+ L(9.98962940462065268620861502313346136E-01), /* 3ffeff78120e66b08400000000000000 */
+ L(9.98993426856827904103397486323956400E-01), /* 3ffeff7c110289c02000000000000000 */
+ L(9.99023914181975669634994119405746460E-01), /* 3ffeff800ffeaac00000000000000000 */
+ L(9.99054402437536959169506189937237650E-01), /* 3ffeff840f02c9c02000000000000000 */
+ L(9.99084891623540138905212870668037795E-01), /* 3ffeff880e0ee6d07800000000000000 */
+ L(9.99115381740013658307120181234495249E-01), /* 3ffeff8c0d2302010c00000000000000 */
+ L(9.99145872786985911329082910015131347E-01), /* 3ffeff900c3f1b61d800000000000000 */
+ L(9.99176364764485236413804614130640402E-01), /* 3ffeff940b633302d000000000000000 */
+ L(9.99206857672540083026291313217370771E-01), /* 3ffeff980a8f48f3f800000000000000 */
+ L(9.99237351511178817364822180024930276E-01), /* 3ffeff9c09c35d454800000000000000 */
+ L(9.99267846280429861138827618560753763E-01), /* 3ffeffa008ff7006c000000000000000 */
+ L(9.99298341980321608302162417203362565E-01), /* 3ffeffa4084381485c00000000000000 */
+ L(9.99328838610882452808681364331278019E-01), /* 3ffeffa8078f911a1800000000000000 */
+ L(9.99359336172140816367814863951934967E-01), /* 3ffeffac06e39f8bf400000000000000 */
+ L(9.99389834664125092933417704443854745E-01), /* 3ffeffb0063facadec00000000000000 */
+ L(9.99420334086863676459344674185558688E-01), /* 3ffeffb405a3b88ffc00000000000000 */
+ L(9.99450834440384988655026177184481639E-01), /* 3ffeffb8050fc3422400000000000000 */
+ L(9.99481335724717395718741386190231424E-01), /* 3ffeffbc0483ccd45c00000000000000 */
+ L(9.99511837939889374871071936468069907E-01), /* 3ffeffc003ffd556ac00000000000000 */
+ L(9.99542341085929264554721385138691403E-01), /* 3ffeffc40383dcd90800000000000000 */
+ L(9.99572845162865514234695751838444266E-01), /* 3ffeffc8030fe36b7400000000000000 */
+ L(9.99603350170726517864849824945849832E-01), /* 3ffeffcc02a3e91dec00000000000000 */
+ L(9.99633856109540669399038392839429434E-01), /* 3ffeffd0023fee006c00000000000000 */
+ L(9.99664362979336418302267475155531429E-01), /* 3ffeffd401e3f222f800000000000000 */
+ L(9.99694870780142130772816244643763639E-01), /* 3ffeffd8018ff5958800000000000000 */
+ L(9.99725379511986284031266336569387931E-01), /* 3ffeffdc0143f8682400000000000000 */
+ L(9.99755889174897216520321308053098619E-01), /* 3ffeffe000fffaaac000000000000000 */
+ L(9.99786399768903377704987178731244057E-01), /* 3ffeffe400c3fc6d6000000000000000 */
+ L(9.99816911294033217050269968240172602E-01), /* 3ffeffe8008ffdc00800000000000000 */
+ L(9.99847423750315072998873233700578567E-01), /* 3ffeffec0063feb2ac00000000000000 */
+ L(9.99877937137777450526954226006637327E-01), /* 3ffefff0003fff555800000000000000 */
+ L(9.99908451456448688077216502279043198E-01), /* 3ffefff40023ffb80000000000000000 */
+ L(9.99938966706357262870241697783058044E-01), /* 3ffefff8000fffeaac00000000000000 */
+ L(9.99969482887531541104308985268289689E-01), /* 3ffefffc0003fffd5400000000000000 */
+#define T_EXPL_RES2 (T_EXPL_RES1 + 1 + 89 + 65)
+ L(1.00000000000000000000000000000000000E+00), /* 3fff0000000000000000000000000000 */
+ L(1.00003051804379100575559391472779680E+00), /* 3fff0002000200015400000000000000 */
+ L(1.00006103701893306334724798034585547E+00), /* 3fff00040008000aac00000000000000 */
+ L(1.00009155692545448346209013834595680E+00), /* 3fff0006001200240000000000000000 */
+ L(1.00012207776338379883185325525118969E+00), /* 3fff0008002000555800000000000000 */
+ L(1.00015259953274932014366527255333494E+00), /* 3fff000a003200a6ac00000000000000 */
+ L(1.00018312223357958012925905677548144E+00), /* 3fff000c004801200400000000000000 */
+ L(1.00021364586590294498691378066723701E+00), /* 3fff000e006201c95c00000000000000 */
+ L(1.00024417042974783642605984823603649E+00), /* 3fff0010008002aab400000000000000 */
+ L(1.00027469592514273166727889474714175E+00), /* 3fff001200a203cc1000000000000000 */
+ L(1.00030522235211605242000132420798764E+00), /* 3fff001400c805357000000000000000 */
+ L(1.00033574971069616488250630936818197E+00), /* 3fff001600f206eed000000000000000 */
+ L(1.00036627800091160178652671675081365E+00), /* 3fff0018012009003800000000000000 */
+ L(1.00039680722279067381919048784766346E+00), /* 3fff001a01520b71a000000000000000 */
+ L(1.00042733737636191371223048918182030E+00), /* 3fff001c01880e4b1000000000000000 */
+ L(1.00045786846165368766392589350289200E+00), /* 3fff001e01c211948400000000000000 */
+ L(1.00048840047869447289485833607614040E+00), /* 3fff0020020015560000000000000000 */
+ L(1.00051893342751269111445822090900037E+00), /* 3fff0022024219978400000000000000 */
+ L(1.00054946730813676403215595200890675E+00), /* 3fff002402881e611000000000000000 */
+ L(1.00058000212059516886853316464112140E+00), /* 3fff002602d223baa800000000000000 */
+ L(1.00061053786491632733302026281307917E+00), /* 3fff0028032029ac4c00000000000000 */
+ L(1.00064107454112866113504765053221490E+00), /* 3fff002a0372303dfc00000000000000 */
+ L(1.00067161214926059198404573180596344E+00), /* 3fff002c03c83777b800000000000000 */
+ L(1.00070215068934059710059614189958666E+00), /* 3fff002e04223f618400000000000000 */
+ L(1.00073269016139709819412928482051939E+00), /* 3fff0030048048036000000000000000 */
+ L(1.00076323056545857248522679583402351E+00), /* 3fff003204e251655000000000000000 */
+ L(1.00079377190155338617216784768970683E+00), /* 3fff003405485b8f5000000000000000 */
+ L(1.00082431416971007198668530691065826E+00), /* 3fff003605b266896800000000000000 */
+ L(1.00085485736995705163820957750431262E+00), /* 3fff00380620725b9800000000000000 */
+ L(1.00088540150232269132501983222027775E+00), /* 3fff003a06927f0ddc00000000000000 */
+ L(1.00091594656683552377884893758164253E+00), /* 3fff003c07088ca83c00000000000000 */
+ L(1.00094649256352402622027852885366883E+00), /* 3fff003e07829b32bc00000000000000 */
+ L(1.00097703949241650933643654752813745E+00), /* 3fff00400800aab55400000000000000 */
+ L(1.00100758735354156137020709138596430E+00), /* 3fff00420882bb381000000000000000 */
+ L(1.00103813614692760403102056443458423E+00), /* 3fff00440908ccc2f000000000000000 */
+ L(1.00106868587260300351715613942360505E+00), /* 3fff00460992df5df000000000000000 */
+ L(1.00109923653059629256034668287611566E+00), /* 3fff00480a20f3111800000000000000 */
+ L(1.00112978812093589287002259879955091E+00), /* 3fff004a0ab307e46800000000000000 */
+ L(1.00116034064365022615561429120134562E+00), /* 3fff004c0b491ddfe000000000000000 */
+ L(1.00119089409876788066000585786241572E+00), /* 3fff004e0be3350b8c00000000000000 */
+ L(1.00122144848631711155917400901671499E+00), /* 3fff00500c814d6f6000000000000000 */
+ L(1.00125200380632656260715407370298635E+00), /* 3fff00520d2367136c00000000000000 */
+ L(1.00128256005882454449107399341301061E+00), /* 3fff00540dc981ffa800000000000000 */
+ L(1.00131311724383964545381786592770368E+00), /* 3fff00560e739e3c2000000000000000 */
+ L(1.00134367536140017618251363273884635E+00), /* 3fff00580f21bbd0cc00000000000000 */
+ L(1.00137423441153472492004539162735455E+00), /* 3fff005a0fd3dac5b800000000000000 */
+ L(1.00140479439427171337584354660066310E+00), /* 3fff005c1089fb22e400000000000000 */
+ L(1.00143535530963956325933850166620687E+00), /* 3fff005e11441cf05000000000000000 */
+ L(1.00146591715766680730226312334707472E+00), /* 3fff0060120240360400000000000000 */
+ L(1.00149647993838186721404781565070152E+00), /* 3fff006212c464fc0000000000000000 */
+ L(1.00152704365181316470412298258452211E+00), /* 3fff0064138a8b4a4400000000000000 */
+ L(1.00155760829798923250422149067162536E+00), /* 3fff00661454b328d800000000000000 */
+ L(1.00158817387693849232377374391944613E+00), /* 3fff00681522dc9fbc00000000000000 */
+ L(1.00161874038868942138336137759324629E+00), /* 3fff006a15f507b6f400000000000000 */
+ L(1.00164930783327055241471725821611471E+00), /* 3fff006c16cb34768800000000000000 */
+ L(1.00167987621071025161612055853765924E+00), /* 3fff006e17a562e67400000000000000 */
+ L(1.00171044552103705171930414508096874E+00), /* 3fff00701883930ec000000000000000 */
+ L(1.00174101576427937443369842185347807E+00), /* 3fff00721965c4f76c00000000000000 */
+ L(1.00177158694046569697988502412044909E+00), /* 3fff00741a4bf8a87c00000000000000 */
+ L(1.00180215904962455208959681840497069E+00), /* 3fff00761b362e29f800000000000000 */
+ L(1.00183273209178441698341543997230474E+00), /* 3fff00781c246583e400000000000000 */
+ L(1.00186330606697365785962006157205906E+00), /* 3fff007a1d169ebe3c00000000000000 */
+ L(1.00189388097522080744994354972732253E+00), /* 3fff007c1e0cd9e10800000000000000 */
+ L(1.00192445681655439848611877096118405E+00), /* 3fff007e1f0716f45000000000000000 */
+ L(1.00195503359100279716642489802325144E+00), /* 3fff0080200556001000000000000000 */
+ L(1.00198561129859459173374602869444061E+00), /* 3fff00822107970c5400000000000000 */
+};
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128/t_sincosl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128/t_sincosl.c
new file mode 100644
index 0000000000..601662c399
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128/t_sincosl.c
@@ -0,0 +1,696 @@
+/* Quad-precision floating point sine and cosine tables.
+ Copyright (C) 1999-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Jakub Jelinek <jj@ultra.linux.cz>
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+/* For 0.1484375 + n/128.0, n=0..82 this table contains
+ first 113 bits of cosine, then at least 113 additional
+ bits and the same for sine.
+ 0.1484375+82.0/128.0 is the smallest number among above defined numbers
+ larger than pi/4.
+ Computed using gmp.
+ */
+
+/* Include to grab typedefs and wrappers for _Float128 and such. */
+#include <math_private.h>
+
+const _Float128 __sincosl_table[] = {
+
+/* x = 1.48437500000000000000000000000000000e-01L 3ffc3000000000000000000000000000 */
+/* cos(x) = 0.fd2f5320e1b790209b4dda2f98f79caaa7b873aff1014b0fbc5243766d03cb006bc837c4358 */
+ L(9.89003367927322909016887196069562069e-01), /* 3ffefa5ea641c36f2041369bb45f31ef */
+ L(2.15663692029265697782289400027743703e-35), /* 3f8bcaaa7b873aff1014b0fbc5243767 */
+/* sin(x) = 0.25dc50bc95711d0d9787d108fd438cf5959ee0bfb7a1e36e8b1a112968f356657420e9cc9ea */
+ L(1.47892995873409608580026675734609314e-01), /* 3ffc2ee285e4ab88e86cbc3e8847ea1c */
+ L(9.74950446464233268291647449768590886e-36), /* 3f8a9eb2b3dc17f6f43c6dd16342252d */
+
+/* x = 1.56250000000000000000000000000000000e-01 3ffc4000000000000000000000000000 */
+/* cos(x) = 0.fce1a053e621438b6d60c76e8c45bf0a9dc71aa16f922acc10e95144ec796a249813c9cb649 */
+ L(9.87817783816471944100503034363211317e-01), /* 3ffef9c340a7cc428716dac18edd188b */
+ L(4.74271307836705897892468107620526395e-35), /* 3f8cf854ee38d50b7c915660874a8a27 */
+/* sin(x) = 0.27d66258bacd96a3eb335b365c87d59438c5142bb56a489e9b8db9d36234ffdebb6bdc22d8e */
+ L(1.55614992773556041209920643203516258e-01), /* 3ffc3eb312c5d66cb51f599ad9b2e43f */
+L(-7.83989563419287980121718050629497270e-36), /* bf8a4d78e75d7a8952b6ec2c8e48c594 */
+
+/* x = 1.64062500000000000000000000000000000e-01 3ffc5000000000000000000000000000 */
+/* cos(x) = 0.fc8ffa01ba6807417e05962b0d9fdf1fddb0cc4c07d22e19e08019bffa50a6c7acdb40307a3 */
+ L(9.86571908399497588757337407495308409e-01), /* 3ffef91ff40374d00e82fc0b2c561b40 */
+L(-2.47327949936985362476252401212720725e-35), /* bf8c070112799d9fc16e8f30fbff3200 */
+/* sin(x) = 0.29cfd49b8be4f665276cab01cbf0426934906c3dd105473b226e410b1450f62e53ff7c6cce1 */
+ L(1.63327491736612850846866172454354370e-01), /* 3ffc4e7ea4dc5f27b3293b65580e5f82 */
+ L(1.81380344301155485770367902300754350e-36), /* 3f88349a48361ee882a39d913720858a */
+
+/* x = 1.71875000000000000000000000000000000e-01 3ffc6000000000000000000000000000 */
+/* cos(x) = 0.fc3a6170f767ac735d63d99a9d439e1db5e59d3ef153a4265d5855850ed82b536bf361b80e3 */
+ L(9.85265817718213816204294709759578994e-01), /* 3ffef874c2e1eecf58e6bac7b3353a87 */
+ L(2.26568029505818066141517497778527952e-35), /* 3f8be1db5e59d3ef153a4265d5855851 */
+/* sin(x) = 0.2bc89f9f424de5485de7ce03b2514952b9faf5648c3244d4736feb95dbb9da49f3b58a9253b */
+ L(1.71030022031395019281347969239834331e-01), /* 3ffc5e44fcfa126f2a42ef3e701d928a */
+ L(7.01395875187487608875416030203241317e-36), /* 3f8a2a573f5eac9186489a8e6dfd72bb */
+
+/* x = 1.79687500000000000000000000000000000e-01 3ffc7000000000000000000000000000 */
+/* cos(x) = 0.fbe0d7f7fef11e70aa43b8abf4f6a457cea20c8f3f676b47781f9821bbe9ce04b3c7b981c0b */
+ L(9.83899591489663972178309351416487245e-01), /* 3ffef7c1afeffde23ce154877157e9ed */
+ L(2.73414318948066207810486330723761265e-35), /* 3f8c22be75106479fb3b5a3bc0fcc10e */
+/* sin(x) = 0.2dc0bb80b49a97ffb34e8dd1f8db9df7af47ed2dcf58b12c8e7827e048cae929da02c04ecac */
+ L(1.78722113535153659375356241864180724e-01), /* 3ffc6e05dc05a4d4bffd9a746e8fc6dd */
+L(-1.52906926517265103202547561260594148e-36), /* bf8804285c09691853a769b8c3ec0fdc */
+
+/* x = 1.87500000000000000000000000000000000e-01 3ffc8000000000000000000000000000 */
+/* cos(x) = 0.fb835efcf670dd2ce6fe7924697eea13ea358867e9cdb3899b783f4f9f43aa5626e8b67b3bc */
+ L(9.82473313101255257487327683243622495e-01), /* 3ffef706bdf9ece1ba59cdfcf248d2fe */
+L(-1.64924358891557584625463868014230342e-35), /* bf8b5ec15ca779816324c766487c0b06 */
+/* sin(x) = 0.2fb8205f75e56a2b56a1c4792f856258769af396e0189ef72c05e4df59a6b00e4b44a6ea515 */
+ L(1.86403296762269884552379983103205261e-01), /* 3ffc7dc102fbaf2b515ab50e23c97c2b */
+ L(1.76460304806826780010586715975331753e-36), /* 3f882c3b4d79cb700c4f7b9602f26fad */
+
+/* x = 1.95312500000000000000000000000000000e-01 3ffc9000000000000000000000000000 */
+/* cos(x) = 0.fb21f7f5c156696b00ac1fe28ac5fd76674a92b4df80d9c8a46c684399005deccc41386257c */
+ L(9.80987069605669190469329896435309665e-01), /* 3ffef643efeb82acd2d601583fc5158c */
+L(-1.90899259410096419886996331536278461e-36), /* bf8844cc5ab6a5903f931badc9cbde34 */
+/* sin(x) = 0.31aec65df552876f82ece9a2356713246eba6799983d7011b0b3698d6e1da919c15d57c30c1 */
+ L(1.94073102892909791156055200214145404e-01), /* 3ffc8d7632efaa943b7c17674d11ab39 */
+L(-9.67304741051998267208945242944928999e-36), /* bf8a9b7228b30cccf851fdc9e992ce52 */
+
+/* x = 2.03125000000000000000000000000000000e-01 3ffca000000000000000000000000000 */
+/* cos(x) = 0.fabca467fb3cb8f1d069f01d8ea33ade5bfd68296ecd1cc9f7b7609bbcf3676e726c3301334 */
+ L(9.79440951715548359998530954502987493e-01), /* 3ffef57948cff67971e3a0d3e03b1d46 */
+ L(4.42878056591560757066844797290067990e-35), /* 3f8cd6f2dfeb414b7668e64fbdbb04de */
+/* sin(x) = 0.33a4a5a19d86246710f602c44df4fa513f4639ce938477aeeabb82e8e0a7ed583a188879fd4 */
+ L(2.01731063801638804725038151164000971e-01), /* 3ffc9d252d0cec31233887b016226fa8 */
+L(-4.27513434754966978435151290617384120e-36), /* bf896bb02e718c5b1ee21445511f45c8 */
+
+/* x = 2.10937500000000000000000000000000000e-01 3ffcb000000000000000000000000000 */
+/* cos(x) = 0.fa5365e8f1d3ca27be1db5d76ae64d983d7470a4ab0f4ccf65a2b8c67a380df949953a09bc1 */
+ L(9.77835053797959793331971572944454549e-01), /* 3ffef4a6cbd1e3a7944f7c3b6baed5cd */
+L(-3.79207422905180416937210853779192702e-35), /* bf8c933e145c7adaa7859984d2ea39cc */
+/* sin(x) = 0.3599b652f40ec999df12a0a4c8561de159c98d4e54555de518b97f48886f715d8df5f4f093e */
+ L(2.09376712085993643711890752724881652e-01), /* 3ffcaccdb297a0764ccef895052642b1 */
+L(-1.59470287344329449965314638482515925e-36), /* bf880f531b3958d5d5510d73a3405bbc */
+
+/* x = 2.18750000000000000000000000000000000e-01 3ffcc000000000000000000000000000 */
+/* cos(x) = 0.f9e63e1d9e8b6f6f2e296bae5b5ed9c11fd7fa2fe11e09fc7bde901abed24b6365e72f7db4e */
+ L(9.76169473868635276723989035435135534e-01), /* 3ffef3cc7c3b3d16dede5c52d75cb6be */
+L(-2.87727974249481583047944860626985460e-35), /* bf8c31f701402e80f70fb01c210b7f2a */
+/* sin(x) = 0.378df09db8c332ce0d2b53d865582e4526ea336c768f68c32b496c6d11c1cd241bb9f1da523 */
+ L(2.17009581095010156760578095826055396e-01), /* 3ffcbc6f84edc6199670695a9ec32ac1 */
+ L(1.07356488794216831812829549198201194e-35), /* 3f8ac8a4dd466d8ed1ed1865692d8da2 */
+
+/* x = 2.26562500000000000000000000000000000e-01 3ffcd000000000000000000000000000 */
+/* cos(x) = 0.f9752eba9fff6b98842beadab054a932fb0f8d5b875ae63d6b2288d09b148921aeb6e52f61b */
+ L(9.74444313585988980349711056045434344e-01), /* 3ffef2ea5d753ffed7310857d5b560a9 */
+ L(3.09947905955053419304514538592548333e-35), /* 3f8c4997d87c6adc3ad731eb59144685 */
+/* sin(x) = 0.39814cb10513453cb97b21bc1ca6a337b150c21a675ab85503bc09a436a10ab1473934e20c8 */
+ L(2.24629204957705292350428549796424820e-01), /* 3ffccc0a6588289a29e5cbd90de0e535 */
+ L(2.42061510849297469844695751870058679e-36), /* 3f889bd8a8610d33ad5c2a81de04d21b */
+
+/* x = 2.34375000000000000000000000000000000e-01 3ffce000000000000000000000000000 */
+/* cos(x) = 0.f90039843324f9b940416c1984b6cbed1fc733d97354d4265788a86150493ce657cae032674 */
+ L(9.72659678244912752670913058267565260e-01), /* 3ffef20073086649f3728082d833096e */
+L(-3.91759231819314904966076958560252735e-35), /* bf8ca09701c6613465595ecd43babcf5 */
+/* sin(x) = 0.3b73c2bf6b4b9f668ef9499c81f0d965087f1753fa64b086e58cb8470515c18c1412f8c2e02 */
+ L(2.32235118611511462413930877746235872e-01), /* 3ffcdb9e15fb5a5cfb3477ca4ce40f87 */
+L(-4.96930483364191020075024624332928910e-36), /* bf89a6bde03a2b0166d3de469cd1ee3f */
+
+/* x = 2.42187500000000000000000000000000000e-01 3ffcf000000000000000000000000000 */
+/* cos(x) = 0.f887604e2c39dbb20e4ec5825059a789ffc95b275ad9954078ba8a28d3fcfe9cc2c1d49697b */
+ L(9.70815676770349462947490545785046027e-01), /* 3ffef10ec09c5873b7641c9d8b04a0b3 */
+ L(2.97458820972393859125277682021202860e-35), /* 3f8c3c4ffe4ad93ad6ccaa03c5d45147 */
+/* sin(x) = 0.3d654aff15cb457a0fca854698aba33039a8a40626609204472d9d40309b626eccc6dff0ffa */
+ L(2.39826857830661564441369251810886574e-01), /* 3ffceb2a57f8ae5a2bd07e542a34c55d */
+ L(2.39867036569896287240938444445071448e-36), /* 3f88981cd45203133049022396cea018 */
+
+/* x = 2.50000000000000000000000000000000000e-01 3ffd0000000000000000000000000000 */
+/* cos(x) = 0.f80aa4fbef750ba783d33cb95f94f8a41426dbe79edc4a023ef9ec13c944551c0795b84fee1 */
+ L(9.68912421710644784144595449494189205e-01), /* 3ffef01549f7deea174f07a67972bf2a */
+L(-5.53634706113461989398873287749326500e-36), /* bf89d6faf649061848ed7f704184fb0e */
+/* sin(x) = 0.3f55dda9e62aed7513bd7b8e6a3d1635dd5676648d7db525898d7086af9330f03c7f285442a */
+ L(2.47403959254522929596848704849389203e-01), /* 3ffcfaaeed4f31576ba89debdc7351e9 */
+L(-7.36487001108599532943597115275811618e-36), /* bf8a39445531336e50495b4ece51ef2a */
+
+/* x = 2.57812500000000000000000000000000000e-01 3ffd0800000000000000000000000000 */
+/* cos(x) = 0.f78a098069792daabc9ee42591b7c5a68cb1ab822aeb446b3311b4ba5371b8970e2c1547ad7 */
+ L(9.66950029230677822008341623610531503e-01), /* 3ffeef141300d2f25b55793dc84b2370 */
+L(-4.38972214432792412062088059990480514e-35), /* bf8cd2cb9a72a3eea8a5dca667725a2d */
+/* sin(x) = 0.414572fd94556e6473d620271388dd47c0ba050cdb5270112e3e370e8c4705ae006426fb5d5 */
+ L(2.54965960415878467487556574864872628e-01), /* 3ffd0515cbf65155b991cf58809c4e23 */
+ L(2.20280377918534721005071688328074154e-35), /* 3f8bd47c0ba050cdb5270112e3e370e9 */
+
+/* x = 2.65625000000000000000000000000000000e-01 3ffd1000000000000000000000000000 */
+/* cos(x) = 0.f7058fde0788dfc805b8fe88789e4f4253e3c50afe8b22f41159620ab5940ff7df9557c0d1f */
+ L(9.64928619104771009581074665315748371e-01), /* 3ffeee0b1fbc0f11bf900b71fd10f13d */
+L(-3.66685832670820775002475545602761113e-35), /* bf8c85ed60e1d7a80ba6e85f7534efaa */
+/* sin(x) = 0.4334033bcd90d6604f5f36c1d4b84451a87150438275b77470b50e5b968fa7962b5ffb379b7 */
+ L(2.62512399769153281450949626395692931e-01), /* 3ffd0cd00cef364359813d7cdb0752e1 */
+ L(3.24923677072031064673177178571821843e-36), /* 3f89146a1c5410e09d6ddd1c2d4396e6 */
+
+/* x = 2.73437500000000000000000000000000000e-01 3ffd1800000000000000000000000000 */
+/* cos(x) = 0.f67d3a26af7d07aa4bd6d42af8c0067fefb96d5b46c031eff53627f215ea3242edc3f2e13eb */
+ L(9.62848314709379699899701093480214365e-01), /* 3ffeecfa744d5efa0f5497ada855f180 */
+ L(4.88986966383343450799422013051821394e-36), /* 3f899ffbee5b56d1b00c7bfd4d89fc85 */
+/* sin(x) = 0.452186aa5377ab20bbf2524f52e3a06a969f47166ab88cf88c111ad12c55941021ef3317a1a */
+ L(2.70042816718585031552755063618827102e-01), /* 3ffd14861aa94ddeac82efc9493d4b8f */
+L(-2.37608892440611310321138680065803162e-35), /* bf8bf956960b8e99547730773eee52ed */
+
+/* x = 2.81250000000000000000000000000000000e-01 3ffd2000000000000000000000000000 */
+/* cos(x) = 0.f5f10a7bb77d3dfa0c1da8b57842783280d01ce3c0f82bae3b9d623c168d2e7c29977994451 */
+ L(9.60709243015561903066659350581313472e-01), /* 3ffeebe214f76efa7bf4183b516af085 */
+L(-5.87011558231583960712013351601221840e-36), /* bf89f35fcbf8c70fc1f5147118a770fa */
+/* sin(x) = 0.470df5931ae1d946076fe0dcff47fe31bb2ede618ebc607821f8462b639e1f4298b5ae87fd3 */
+ L(2.77556751646336325922023446828128568e-01), /* 3ffd1c37d64c6b8765181dbf8373fd20 */
+L(-1.35848595468998128214344668770082997e-36), /* bf87ce44d1219e71439f87de07b9d49c */
+
+/* x = 2.89062500000000000000000000000000000e-01 3ffd2800000000000000000000000000 */
+/* cos(x) = 0.f561030ddd7a78960ea9f4a32c6521554995667f5547bafee9ec48b3155cdb0f7fd00509713 */
+ L(9.58511534581228627301969408154919822e-01), /* 3ffeeac2061bbaf4f12c1d53e94658ca */
+ L(2.50770779371636481145735089393154404e-35), /* 3f8c0aaa4cab33faaa3dd7f74f624599 */
+/* sin(x) = 0.48f948446abcd6b0f7fccb100e7a1b26eccad880b0d24b59948c7cdd49514d44b933e6985c2 */
+ L(2.85053745940547424587763033323252561e-01), /* 3ffd23e52111aaf35ac3dff32c4039e8 */
+ L(2.04269325885902918802700123680403749e-35), /* 3f8bb26eccad880b0d24b59948c7cdd5 */
+
+/* x = 2.96875000000000000000000000000000000e-01 3ffd3000000000000000000000000000 */
+/* cos(x) = 0.f4cd261d3e6c15bb369c8758630d2ac00b7ace2a51c0631bfeb39ed158ba924cc91e259c195 */
+ L(9.56255323543175296975599942263028361e-01), /* 3ffee99a4c3a7cd82b766d390eb0c61a */
+ L(3.21616572190865997051103645135837207e-35), /* 3f8c56005bd671528e0318dff59cf68b */
+/* sin(x) = 0.4ae37710fad27c8aa9c4cf96c03519b9ce07dc08a1471775499f05c29f86190aaebaeb9716e */
+ L(2.92533342023327543624702326493913423e-01), /* 3ffd2b8ddc43eb49f22aa7133e5b00d4 */
+ L(1.93539408668704450308003687950685128e-35), /* 3f8b9b9ce07dc08a1471775499f05c2a */
+
+/* x = 3.04687500000000000000000000000000000e-01 3ffd3800000000000000000000000000 */
+/* cos(x) = 0.f43575f94d4f6b272f5fb76b14d2a64ab52df1ee8ddf7c651034e5b2889305a9ea9015d758a */
+ L(9.53940747608894733981324795987611623e-01), /* 3ffee86aebf29a9ed64e5ebf6ed629a5 */
+ L(2.88075689052478602008395972924657164e-35), /* 3f8c3255a96f8f746efbe32881a72d94 */
+/* sin(x) = 0.4ccc7a50127e1de0cb6b40c302c651f7bded4f9e7702b0471ae0288d091a37391950907202f */
+ L(2.99995083378683051163248282011699944e-01), /* 3ffd3331e94049f877832dad030c0b19 */
+ L(1.35174265535697850139283361475571050e-35), /* 3f8b1f7bded4f9e7702b0471ae0288d1 */
+
+/* x = 3.12500000000000000000000000000000000e-01 3ffd4000000000000000000000000000 */
+/* cos(x) = 0.f399f500c9e9fd37ae9957263dab8877102beb569f101ee4495350868e5847d181d50d3cca2 */
+ L(9.51567948048172202145488217364270962e-01), /* 3ffee733ea0193d3fa6f5d32ae4c7b57 */
+ L(6.36842628598115658308749288799884606e-36), /* 3f8a0ee2057d6ad3e203dc892a6a10d2 */
+/* sin(x) = 0.4eb44a5da74f600207aaa090f0734e288603ffadb3eb2542a46977b105f8547128036dcf7f0 */
+ L(3.07438514580380850670502958201982091e-01), /* 3ffd3ad129769d3d80081eaa8243c1cd */
+ L(1.06515172423204645839241099453417152e-35), /* 3f8ac510c07ff5b67d64a8548d2ef621 */
+
+/* x = 3.20312500000000000000000000000000000e-01 3ffd4800000000000000000000000000 */
+/* cos(x) = 0.f2faa5a1b74e82fd61fa05f9177380e8e69b7b15a945e8e5ae1124bf3d12b0617e03af4fab5 */
+ L(9.49137069684463027665847421762105623e-01), /* 3ffee5f54b436e9d05fac3f40bf22ee7 */
+ L(6.84433965991637152250309190468859701e-37), /* 3f86d1cd36f62b528bd1cb5c22497e7a */
+/* sin(x) = 0.509adf9a7b9a5a0f638a8fa3a60a199418859f18b37169a644fdb986c21ecb00133853bc35b */
+ L(3.14863181319745250865036315126939016e-01), /* 3ffd426b7e69ee69683d8e2a3e8e9828 */
+ L(1.92431240212432926993057705062834160e-35), /* 3f8b99418859f18b37169a644fdb986c */
+
+/* x = 3.28125000000000000000000000000000000e-01 3ffd5000000000000000000000000000 */
+/* cos(x) = 0.f2578a595224dd2e6bfa2eb2f99cc674f5ea6f479eae2eb580186897ae3f893df1113ca06b8 */
+ L(9.46648260886053321846099507295532976e-01), /* 3ffee4af14b2a449ba5cd7f45d65f33a */
+L(-4.32906339663000890941529420498824645e-35), /* bf8ccc5850ac85c30a8e8a53ff3cbb43 */
+/* sin(x) = 0.5280326c3cf481823ba6bb08eac82c2093f2bce3c4eb4ee3dec7df41c92c8a4226098616075 */
+ L(3.22268630433386625687745919893188031e-01), /* 3ffd4a00c9b0f3d20608ee9aec23ab21 */
+L(-1.49505897804759263483853908335500228e-35), /* bf8b3df6c0d431c3b14b11c213820be3 */
+
+/* x = 3.35937500000000000000000000000000000e-01 3ffd5800000000000000000000000000 */
+/* cos(x) = 0.f1b0a5b406b526d886c55feadc8d0dcc8eb9ae2ac707051771b48e05b25b000009660bdb3e3 */
+ L(9.44101673557004345630017691253124860e-01), /* 3ffee3614b680d6a4db10d8abfd5b91a */
+ L(1.03812535240120229609822461172145584e-35), /* 3f8ab991d735c558e0e0a2ee3691c0b6 */
+/* sin(x) = 0.54643b3da29de9b357155eef0f332fb3e66c83bf4dddd9491c5eb8e103ccd92d6175220ed51 */
+ L(3.29654409930860171914317725126463176e-01), /* 3ffd5190ecf68a77a6cd5c557bbc3ccd */
+L(-1.22606996784743214973082192294232854e-35), /* bf8b04c19937c40b22226b6e3a1471f0 */
+
+/* x = 3.43750000000000000000000000000000000e-01 3ffd6000000000000000000000000000 */
+/* cos(x) = 0.f105fa4d66b607a67d44e042725204435142ac8ad54dfb0907a4f6b56b06d98ee60f19e557a */
+ L(9.41497463127881068644511236053670815e-01), /* 3ffee20bf49acd6c0f4cfa89c084e4a4 */
+ L(3.20709366603165602071590241054884900e-36), /* 3f8910d450ab22b5537ec241e93dad5b */
+/* sin(x) = 0.5646f27e8bd65cbe3a5d61ff06572290ee826d9674a00246b05ae26753cdfc90d9ce81a7d02 */
+ L(3.37020069022253076261281754173810024e-01), /* 3ffd591bc9fa2f5972f8e97587fc195d */
+L(-2.21435756148839473677777545049890664e-35), /* bf8bd6f117d92698b5ffdb94fa51d98b */
+
+/* x = 3.51562500000000000000000000000000000e-01 3ffd6800000000000000000000000000 */
+/* cos(x) = 0.f0578ad01ede707fa39c09dc6b984afef74f3dc8d0efb0f4c5a6b13771145b3e0446fe33887 */
+ L(9.38835788546265488632578305984712554e-01), /* 3ffee0af15a03dbce0ff473813b8d731 */
+L(-3.98758068773974031348585072752245458e-35), /* bf8ca808458611b978827859d2ca7644 */
+/* sin(x) = 0.582850a41e1dd46c7f602ea244cdbbbfcdfa8f3189be794dda427ce090b5f85164f1f80ac13 */
+ L(3.44365158145698408207172046472223747e-01), /* 3ffd60a14290787751b1fd80ba891337 */
+L(-3.19791885005480924937758467594051927e-36), /* bf89100c815c339d9061ac896f60c7dc */
+
+/* x = 3.59375000000000000000000000000000000e-01 3ffd7000000000000000000000000000 */
+/* cos(x) = 0.efa559f5ec3aec3a4eb03319278a2d41fcf9189462261125fe6147b078f1daa0b06750a1654 */
+ L(9.36116812267055290294237411019508588e-01), /* 3ffedf4ab3ebd875d8749d6066324f14 */
+ L(3.40481591236710658435409862439032162e-35), /* 3f8c6a0fe7c8c4a31130892ff30a3d84 */
+/* sin(x) = 0.5a084e28e35fda2776dfdbbb5531d74ced2b5d17c0b1afc4647529d50c295e36d8ceec126c1 */
+ L(3.51689228994814059222584896955547016e-01), /* 3ffd682138a38d7f689ddb7f6eed54c7 */
+ L(1.75293433418270210567525412802083294e-35), /* 3f8b74ced2b5d17c0b1afc4647529d51 */
+
+/* x = 3.67187500000000000000000000000000000e-01 3ffd7800000000000000000000000000 */
+/* cos(x) = 0.eeef6a879146af0bf9b95ea2ea0ac0d3e2e4d7e15d93f48cbd41bf8e4fded40bef69e19eafa */
+ L(9.33340700242548435655299229469995527e-01), /* 3ffeddded50f228d5e17f372bd45d416 */
+L(-4.75255707251679831124800898831382223e-35), /* bf8cf960e8d940f513605b9a15f2038e */
+/* sin(x) = 0.5be6e38ce8095542bc14ee9da0d36483e6734bcab2e07624188af5653f114eeb46738fa899d */
+ L(3.58991834546065053677710299152868941e-01), /* 3ffd6f9b8e33a025550af053ba76834e */
+L(-2.06772389262723368139416970257112089e-35), /* bf8bb7c198cb4354d1f89dbe7750a9ac */
+
+/* x = 3.75000000000000000000000000000000000e-01 3ffd8000000000000000000000000000 */
+/* cos(x) = 0.ee35bf5ccac89052cd91ddb734d3a47e262e3b609db604e217053803be0091e76daf28a89b7 */
+ L(9.30507621912314291149476792229555481e-01), /* 3ffedc6b7eb9959120a59b23bb6e69a7 */
+ L(2.74541088551732982573335285685416092e-35), /* 3f8c23f13171db04edb02710b829c01e */
+/* sin(x) = 0.5dc40955d9084f48a94675a2498de5d851320ff5528a6afb3f2e24de240fce6cbed1ba0ccd6 */
+ L(3.66272529086047561372909351716264177e-01), /* 3ffd7710255764213d22a519d6892638 */
+L(-1.96768433534936592675897818253108989e-35), /* bf8ba27aecdf00aad759504c0d1db21e */
+
+/* x = 3.82812500000000000000000000000000000e-01 3ffd8800000000000000000000000000 */
+/* cos(x) = 0.ed785b5c44741b4493c56bcb9d338a151c6f6b85d8f8aca658b28572c162b199680eb9304da */
+ L(9.27617750192851909628030798799961350e-01), /* 3ffedaf0b6b888e83689278ad7973a67 */
+ L(7.58520371916345756281201167126854712e-36), /* 3f8a42a38ded70bb1f1594cb1650ae58 */
+/* sin(x) = 0.5f9fb80f21b53649c432540a50e22c53057ff42ae0fdf1307760dc0093f99c8efeb2fbd7073 */
+ L(3.73530868238692946416839752660848112e-01), /* 3ffd7e7ee03c86d4d92710c950294389 */
+L(-1.48023494778986556048879113411517128e-35), /* bf8b3acfa800bd51f020ecf889f23ff7 */
+
+/* x = 3.90625000000000000000000000000000000e-01 3ffd9000000000000000000000000000 */
+/* cos(x) = 0.ecb7417b8d4ee3fec37aba4073aa48f1f14666006fb431d9671303c8100d10190ec8179c41d */
+ L(9.24671261467036098502113014560138771e-01), /* 3ffed96e82f71a9dc7fd86f57480e755 */
+L(-4.14187124860031825108649347251175815e-35), /* bf8cb87075cccffc825e7134c767e1bf */
+/* sin(x) = 0.6179e84a09a5258a40e9b5face03e525f8b5753cd0105d93fe6298010c3458e84d75fe420e9 */
+ L(3.80766408992390192057200703388896675e-01), /* 3ffd85e7a1282694962903a6d7eb3810 */
+L(-2.02009541175208636336924533372496107e-35), /* bf8bada074a8ac32fefa26c019d67fef */
+
+/* x = 3.98437500000000000000000000000000000e-01 3ffd9800000000000000000000000000 */
+/* cos(x) = 0.ebf274bf0bda4f62447e56a093626798d3013b5942b1abfd155aacc9dc5c6d0806a20d6b9c1 */
+ L(9.21668335573351918175411368202712714e-01), /* 3ffed7e4e97e17b49ec488fcad4126c5 */
+L(-1.83587995433957622948710263541479322e-35), /* bf8b8672cfec4a6bd4e5402eaa553362 */
+/* sin(x) = 0.6352929dd264bd44a02ea766325d8aa8bd9695fc8def3caefba5b94c9a3c873f7b2d3776ead */
+ L(3.87978709727025046051079690813741960e-01), /* 3ffd8d4a4a774992f51280ba9d98c976 */
+ L(8.01904783870935075844443278617586301e-36), /* 3f8a5517b2d2bf91bde795df74b72993 */
+
+/* x = 4.06250000000000000000000000000000000e-01 3ffda000000000000000000000000000 */
+/* cos(x) = 0.eb29f839f201fd13b93796827916a78f15c85230a4e8ea4b21558265a14367e1abb4c30695a */
+ L(9.18609155794918267837824977718549863e-01), /* 3ffed653f073e403fa27726f2d04f22d */
+ L(2.97608282778274433460057745798409849e-35), /* 3f8c3c78ae429185274752590aac132d */
+/* sin(x) = 0.6529afa7d51b129631ec197c0a840a11d7dc5368b0a47956feb285caa8371c4637ef17ef01b */
+ L(3.95167330240934236244832640419653657e-01), /* 3ffd94a6be9f546c4a58c7b065f02a10 */
+ L(7.57560031388312550940040194042627704e-36), /* 3f8a423afb8a6d16148f2adfd650b955 */
+
+/* x = 4.14062500000000000000000000000000000e-01 3ffda800000000000000000000000000 */
+/* cos(x) = 0.ea5dcf0e30cf03e6976ef0b1ec26515fba47383855c3b4055a99b5e86824b2cd1a691fdca7b */
+ L(9.15493908848301228563917732180221882e-01), /* 3ffed4bb9e1c619e07cd2edde163d84d */
+L(-3.50775517955306954815090901168305659e-35), /* bf8c75022dc63e3d51e25fd52b3250bd */
+/* sin(x) = 0.66ff380ba0144109e39a320b0a3fa5fd65ea0585bcbf9b1a769a9b0334576c658139e1a1cbe */
+ L(4.02331831777773111217105598880982387e-01), /* 3ffd9bfce02e805104278e68c82c28ff */
+L(-1.95678722882848174723569916504871563e-35), /* bf8ba029a15fa7a434064e5896564fcd */
+
+/* x = 4.21875000000000000000000000000000000e-01 3ffdb000000000000000000000000000 */
+/* cos(x) = 0.e98dfc6c6be031e60dd3089cbdd18a75b1f6b2c1e97f79225202f03dbea45b07a5ec4efc062 */
+ L(9.12322784872117846492029542047341734e-01), /* 3ffed31bf8d8d7c063cc1ba611397ba3 */
+ L(7.86903886556373674267948132178845568e-36), /* 3f8a4eb63ed6583d2fef244a405e07b8 */
+/* sin(x) = 0.68d32473143327973bc712bcc4ccddc47630d755850c0655243b205934dc49ffed8eb76adcb */
+ L(4.09471777053295066122694027011452236e-01), /* 3ffda34c91cc50cc9e5cef1c4af31333 */
+ L(2.23945241468457597921655785729821354e-35), /* 3f8bdc47630d755850c0655243b20593 */
+
+/* x = 4.29687500000000000000000000000000000e-01 3ffdb800000000000000000000000000 */
+/* cos(x) = 0.e8ba8393eca7821aa563d83491b6101189b3b101c3677f73d7bad7c10f9ee02b7ab4009739a */
+ L(9.09095977415431051650381735684476417e-01), /* 3ffed1750727d94f04354ac7b069236c */
+ L(1.20886014028444155733776025085677953e-35), /* 3f8b01189b3b101c3677f73d7bad7c11 */
+/* sin(x) = 0.6aa56d8e8249db4eb60a761fe3f9e559be456b9e13349ca99b0bfb787f22b95db3b70179615 */
+ L(4.16586730282041119259112448831069657e-01), /* 3ffdaa95b63a09276d3ad829d87f8fe8 */
+L(-2.00488106831998813675438269796963612e-35), /* bf8baa641ba9461eccb635664f404878 */
+
+/* x = 4.37500000000000000000000000000000000e-01 3ffdc000000000000000000000000000 */
+/* cos(x) = 0.e7e367d2956cfb16b6aa11e5419cd0057f5c132a6455bf064297e6a76fe2b72bb630d6d50ff */
+ L(9.05813683425936420744516660652700258e-01), /* 3ffecfc6cfa52ad9f62d6d5423ca833a */
+L(-3.60950307605941169775676563004467163e-35), /* bf8c7fd4051f66acdd5207cdeb40cac5 */
+/* sin(x) = 0.6c760c14c8585a51dbd34660ae6c52ac7036a0b40887a0b63724f8b4414348c3063a637f457 */
+ L(4.23676257203938010361683988031102480e-01), /* 3ffdb1d83053216169476f4d1982b9b1 */
+ L(1.40484456388654470329473096579312595e-35), /* 3f8b2ac7036a0b40887a0b63724f8b44 */
+
+/* x = 4.45312500000000000000000000000000000e-01 3ffdc800000000000000000000000000 */
+/* cos(x) = 0.e708ac84d4172a3e2737662213429e14021074d7e702e77d72a8f1101a7e70410df8273e9aa */
+ L(9.02476103237941504925183272675895999e-01), /* 3ffece115909a82e547c4e6ecc442685 */
+ L(2.26282899501344419018306295680210602e-35), /* 3f8be14021074d7e702e77d72a8f1102 */
+/* sin(x) = 0.6e44f8c36eb10a1c752d093c00f4d47ba446ac4c215d26b0316442f168459e677d06e7249e3 */
+ L(4.30739925110803197216321517850849190e-01), /* 3ffdb913e30dbac42871d4b424f003d3 */
+ L(1.54096780001629398850891218396761548e-35), /* 3f8b47ba446ac4c215d26b0316442f17 */
+
+/* x = 4.53125000000000000000000000000000000e-01 3ffdd000000000000000000000000000 */
+/* cos(x) = 0.e62a551594b970a770b15d41d4c0e483e47aca550111df6966f9e7ac3a94ae49e6a71eb031e */
+ L(8.99083440560138456216544929209379307e-01), /* 3ffecc54aa2b2972e14ee162ba83a982 */
+L(-2.06772615490904370666670275154751976e-35), /* bf8bb7c1b8535aafeee209699061853c */
+/* sin(x) = 0.70122c5ec5028c8cff33abf4fd340ccc382e038379b09cf04f9a52692b10b72586060cbb001 */
+ L(4.37777302872755132861618974702796680e-01), /* 3ffdc048b17b140a3233fcceafd3f4d0 */
+ L(9.62794364503442612477117426033922467e-36), /* 3f8a998705c0706f36139e09f34a4d25 */
+
+/* x = 4.60937500000000000000000000000000000e-01 3ffdd800000000000000000000000000 */
+/* cos(x) = 0.e54864fe33e8575cabf5bd0e5cf1b1a8bc7c0d5f61702450fa6b6539735820dd2603ae355d5 */
+ L(8.95635902463170698900570000446256350e-01), /* 3ffeca90c9fc67d0aeb957eb7a1cb9e3 */
+ L(3.73593741659866883088620495542311808e-35), /* 3f8c8d45e3e06afb0b812287d35b29cc */
+/* sin(x) = 0.71dd9fb1ff4677853acb970a9f6729c6e3aac247b1c57cea66c77413f1f98e8b9e98e49d851 */
+ L(4.44787960964527211433056012529525211e-01), /* 3ffdc7767ec7fd19de14eb2e5c2a7d9d */
+L(-1.67187936511493678007508371613954899e-35), /* bf8b6391c553db84e3a831599388bec1 */
+
+/* x = 4.68750000000000000000000000000000000e-01 3ffde000000000000000000000000000 */
+/* cos(x) = 0.e462dfc670d421ab3d1a15901228f146a0547011202bf5ab01f914431859aef577966bc4fa4 */
+ L(8.92133699366994404723900253723788575e-01), /* 3ffec8c5bf8ce1a843567a342b202452 */
+L(-1.10771937602567314732693079264692504e-35), /* bf8ad72bf571fddbfa814a9fc0dd779d */
+/* sin(x) = 0.73a74b8f52947b681baf6928eb3fb021769bf4779bad0e3aa9b1cdb75ec60aad9fc63ff19d5 */
+ L(4.51771471491683776581688750134062870e-01), /* 3ffdce9d2e3d4a51eda06ebda4a3acff */
+L(-1.19387223016472295893794387275284505e-35), /* bf8afbd12c81710c8a5e38aac9c64914 */
+
+/* x = 4.76562500000000000000000000000000000e-01 3ffde800000000000000000000000000 */
+/* cos(x) = 0.e379c9045f29d517c4808aa497c2057b2b3d109e76c0dc302d4d0698b36e3f0bdbf33d8e952 */
+ L(8.88577045028035543317609023116020980e-01), /* 3ffec6f39208be53aa2f890115492f84 */
+ L(4.12354278954664731443813655177022170e-36), /* 3f895ecacf44279db0370c0b5341a62d */
+/* sin(x) = 0.756f28d011d98528a44a75fc29c779bd734ecdfb582fdb74b68a4c4c4be54cfd0b2d3ad292f */
+ L(4.58727408216736592377295028972874773e-01), /* 3ffdd5bca340476614a29129d7f0a71e */
+L(-4.70946994194182908929251719575431779e-36), /* bf8990a32c4c8129f40922d25d6ceced */
+
+/* x = 4.84375000000000000000000000000000000e-01 3ffdf000000000000000000000000000 */
+/* cos(x) = 0.e28d245c58baef72225e232abc003c4366acd9eb4fc2808c2ab7fe7676cf512ac7f945ae5fb */
+ L(8.84966156526143291697296536966647926e-01), /* 3ffec51a48b8b175dee444bc46557800 */
+ L(4.53370570288325630442037826313462165e-35), /* 3f8ce21b3566cf5a7e14046155bff3b4 */
+/* sin(x) = 0.77353054ca72690d4c6e171fd99e6b39fa8e1ede5f052fd2964534c75340970a3a9cd3c5c32 */
+ L(4.65655346585160182681199512507546779e-01), /* 3ffddcd4c15329c9a43531b85c7f667a */
+L(-1.56282598978971872478619772155305961e-35), /* bf8b4c60571e121a0fad02d69bacb38b */
+
+/* x = 4.92187500000000000000000000000000000e-01 3ffdf800000000000000000000000000 */
+/* cos(x) = 0.e19cf580eeec046aa1422fa74807ecefb2a1911c94e7b5f20a00f70022d940193691e5bd790 */
+ L(8.81301254251340599140161908298100173e-01), /* 3ffec339eb01ddd808d542845f4e9010 */
+L(-1.43419192312116687783945619009629445e-35), /* bf8b3104d5e6ee36b184a0df5ff08ffe */
+/* sin(x) = 0.78f95b0560a9a3bd6df7bd981dc38c61224d08bc20631ea932e605e53b579e9e0767dfcbbcb */
+ L(4.72554863751304451146551317808516942e-01), /* 3ffde3e56c1582a68ef5b7def660770e */
+ L(9.31324774957768018850224267625371204e-36), /* 3f8a8c2449a117840c63d5265cc0bca7 */
+
+/* x = 5.00000000000000000000000000000000000e-01 3ffe0000000000000000000000000000 */
+/* cos(x) = 0.e0a94032dbea7cedbddd9da2fafad98556566b3a89f43eabd72350af3e8b19e801204d8fe2e */
+ L(8.77582561890372716116281582603829681e-01), /* 3ffec1528065b7d4f9db7bbb3b45f5f6 */
+L(-2.89484960181363924855192538540698851e-35), /* bf8c33d54d4ca62bb05e0aa146e57a86 */
+/* sin(x) = 0.7abba1d12c17bfa1d92f0d93f60ded9992f45b4fcaf13cd58b303693d2a0db47db35ae8a3a9 */
+ L(4.79425538604203000273287935215571402e-01), /* 3ffdeaee8744b05efe8764bc364fd838 */
+L(-1.38426977616718318950175848639381926e-35), /* bf8b2666d0ba4b0350ec32a74cfc96c3 */
+
+/* x = 5.07812500000000000000000000000000000e-01 3ffe0400000000000000000000000000 */
+/* cos(x) = 0.dfb20840f3a9b36f7ae2c515342890b5ec583b8366cc2b55029e95094d31112383f2553498b */
+ L(8.73810306413054508282556837071377159e-01), /* 3ffebf641081e75366def5c58a2a6851 */
+ L(1.25716864497849302237218128599994785e-35), /* 3f8b0b5ec583b8366cc2b55029e95095 */
+/* sin(x) = 0.7c7bfdaf13e5ed17212f8a7525bfb113aba6c0741b5362bb8d59282a850b63716bca0c910f0 */
+ L(4.86266951793275574311011306895834993e-01), /* 3ffdf1eff6bc4f97b45c84be29d496ff */
+L(-1.12269393250914752644352376448094271e-35), /* bf8add8a8b27f17c9593a88e54dafaaf */
+
+/* x = 5.15625000000000000000000000000000000e-01 3ffe0800000000000000000000000000 */
+/* cos(x) = 0.deb7518814a7a931bbcc88c109cd41c50bf8bb48f20ae8c36628d1d3d57574f7dc58f27d91c */
+ L(8.69984718058417388828915599901466243e-01), /* 3ffebd6ea310294f526377991182139b */
+L(-4.68168638300575626782741319792183837e-35), /* bf8cf1d7a03a25b86fa8b9e4ceb97161 */
+/* sin(x) = 0.7e3a679daaf25c676542bcb4028d0964172961c921823a4ef0c3a9070d886dbd073f6283699 */
+ L(4.93078685753923057265136552753487121e-01), /* 3ffdf8e99e76abc9719d950af2d00a34 */
+ L(7.06498693112535056352301101088624950e-36), /* 3f8a2c82e52c3924304749de187520e2 */
+
+/* x = 5.23437500000000000000000000000000000e-01 3ffe0c00000000000000000000000000 */
+/* cos(x) = 0.ddb91ff318799172bd2452d0a3889f5169c64a0094bcf0b8aa7dcf0d7640a2eba68955a80be */
+ L(8.66106030320656714696616831654267220e-01), /* 3ffebb723fe630f322e57a48a5a14711 */
+ L(2.35610597588322493119667003904687628e-35), /* 3f8bf5169c64a0094bcf0b8aa7dcf0d7 */
+/* sin(x) = 0.7ff6d8a34bd5e8fa54c97482db5159df1f24e8038419c0b448b9eea8939b5d4dfcf40900257 */
+ L(4.99860324733013463819556536946425724e-01), /* 3ffdffdb628d2f57a3e95325d20b6d45 */
+ L(1.94636052312235297538564591686645139e-35), /* 3f8b9df1f24e8038419c0b448b9eea89 */
+
+/* x = 5.31250000000000000000000000000000000e-01 3ffe1000000000000000000000000000 */
+/* cos(x) = 0.dcb7777ac420705168f31e3eb780ce9c939ecada62843b54522f5407eb7f21e556059fcd734 */
+ L(8.62174479934880504367162510253324274e-01), /* 3ffeb96eeef58840e0a2d1e63c7d6f02 */
+L(-3.71556818317533582234562471835771823e-35), /* bf8c8b1b6309a92cebde255d6e855fc1 */
+/* sin(x) = 0.81b149ce34caa5a4e650f8d09fd4d6aa74206c32ca951a93074c83b2d294d25dbb0f7fdfad2 */
+ L(5.06611454814257367642296000893867192e-01), /* 3ffe0362939c69954b49cca1f1a13faa */
+L(-3.10963699824274155702706043065967062e-35), /* bf8c4aac5efc9e69ab572b67c59be269 */
+
+/* x = 5.39062500000000000000000000000000000e-01 3ffe1400000000000000000000000000 */
+/* cos(x) = 0.dbb25c25b8260c14f6e7bc98ec991b70c65335198b0ab628bad20cc7b229d4dd62183cfa055 */
+ L(8.58190306862660347046629564970494649e-01), /* 3ffeb764b84b704c1829edcf7931d932 */
+ L(2.06439574601190798155563653000684861e-35), /* 3f8bb70c65335198b0ab628bad20cc7b */
+/* sin(x) = 0.8369b434a372da7eb5c8a71fe36ce1e0b2b493f6f5cb2e38bcaec2a556b3678c401940d1c3c */
+ L(5.13331663943471218288801270215706878e-01), /* 3ffe06d3686946e5b4fd6b914e3fc6da */
+L(-2.26614796466671970772244932848067224e-35), /* bf8be1f4d4b6c090a34d1c743513d5ab */
+
+/* x = 5.46875000000000000000000000000000000e-01 3ffe1800000000000000000000000000 */
+/* cos(x) = 0.daa9d20860827063fde51c09e855e9932e1b17143e7244fd267a899d41ae1f3bc6a0ec42e27 */
+ L(8.54153754277385385143451785105103176e-01), /* 3ffeb553a410c104e0c7fbca3813d0ac */
+L(-1.68707534013095152873222061722573172e-35), /* bf8b66cd1e4e8ebc18dbb02d9857662c */
+/* sin(x) = 0.852010f4f0800521378bd8dd614753d080c2e9e0775ffc609947b9132f5357404f464f06a58 */
+ L(5.20020541953727004760213699874674730e-01), /* 3ffe0a4021e9e1000a426f17b1bac28f */
+L(-3.32415021330884924833711842866896734e-35), /* bf8c617bf9e8b0fc45001cfb35c23767 */
+
+/* x = 5.54687500000000000000000000000000000e-01 3ffe1c00000000000000000000000000 */
+/* cos(x) = 0.d99ddd44e44a43d4d4a3a3ed95204106fd54d78e8c7684545c0da0b7c2c72be7a89b7c182ad */
+ L(8.50065068549420263957072899177793617e-01), /* 3ffeb33bba89c89487a9a94747db2a41 */
+L(-4.73753917078785974356016104842568442e-35), /* bf8cf7c81559438b9c4bdd5d1f92fa42 */
+/* sin(x) = 0.86d45935ab396cb4e421e822dee54f3562dfcefeaa782184c23401d231f5ad981a1cc195b18 */
+ L(5.26677680590386730710789410624833901e-01), /* 3ffe0da8b26b5672d969c843d045bdcb */
+L(-3.67066148195515214077582496518566735e-35), /* bf8c8654e901880aac3ef3d9ee5ff16e */
+
+/* x = 5.62500000000000000000000000000000000e-01 3ffe2000000000000000000000000000 */
+/* cos(x) = 0.d88e820b1526311dd561efbc0c1a9a5375eb26f65d246c5744b13ca26a7e0fd42556da843c8 */
+ L(8.45924499231067954459723078597493262e-01), /* 3ffeb11d04162a4c623baac3df781835 */
+ L(1.98054947141989878179164342925274053e-35), /* 3f8ba5375eb26f65d246c5744b13ca27 */
+/* sin(x) = 0.88868625b4e1dbb2313310133022527200c143a5cb16637cb7daf8ade82459ff2e98511f40f */
+ L(5.33302673536020173329131103308161529e-01), /* 3ffe110d0c4b69c3b764626620266045 */
+L(-3.42715291319551615996993795226755157e-35), /* bf8c6c6ff9f5e2d1a74ce41a41283a91 */
+
+/* x = 5.70312500000000000000000000000000000e-01 3ffe2400000000000000000000000000 */
+/* cos(x) = 0.d77bc4985e93a607c9d868b906bbc6bbe3a04258814acb0358468b826fc91bd4d814827f65e */
+ L(8.41732299041338366963111794309701085e-01), /* 3ffeaef78930bd274c0f93b0d1720d78 */
+L(-4.30821936750410026005408345400225948e-35), /* bf8cca20e2fded3bf5a9a7e53dcba3ed */
+/* sin(x) = 0.8a3690fc5bfc11bf9535e2739a8512f448a41251514bbed7fc18d530f9b4650fcbb2861b0aa */
+ L(5.39895116435204405041660709903993340e-01), /* 3ffe146d21f8b7f8237f2a6bc4e7350a */
+ L(1.42595803521626714477253741404712093e-35), /* 3f8b2f448a41251514bbed7fc18d5310 */
+
+/* x = 5.78125000000000000000000000000000000e-01 3ffe2800000000000000000000000000 */
+/* cos(x) = 0.d665a937b4ef2b1f6d51bad6d988a4419c1d7051faf31a9efa151d7631117efac03713f950a */
+ L(8.37488723850523685315353348917240617e-01), /* 3ffeaccb526f69de563edaa375adb311 */
+ L(2.72761997872084533045777718677326179e-35), /* 3f8c220ce0eb828fd798d4f7d0a8ebb2 */
+/* sin(x) = 0.8be472f9776d809af2b88171243d63d66dfceeeb739cc894e023fbc165a0e3f26ff729c5d57 */
+ L(5.46454606919203564403349553749411001e-01), /* 3ffe17c8e5f2eedb0135e57102e2487b */
+L(-2.11870230730160315420936523771864858e-35), /* bf8bc29920311148c63376b1fdc043ea */
+
+/* x = 5.85937500000000000000000000000000000e-01 3ffe2c00000000000000000000000000 */
+/* cos(x) = 0.d54c3441844897fc8f853f0655f1ba695eba9fbfd7439dbb1171d862d9d9146ca5136f825ac */
+ L(8.33194032664581363070224042208032321e-01), /* 3ffeaa98688308912ff91f0a7e0cabe3 */
+ L(4.39440050052045486567668031751259899e-35), /* 3f8cd34af5d4fdfeba1cedd88b8ec317 */
+/* sin(x) = 0.8d902565817ee7839bce3cd128060119492cd36d42d82ada30d7f8bde91324808377ddbf5d4 */
+ L(5.52980744630527369849695082681623667e-01), /* 3ffe1b204acb02fdcf07379c79a2500c */
+ L(8.26624790417342895897164123189984127e-37), /* 3f8719492cd36d42d82ada30d7f8bde9 */
+
+/* x = 5.93750000000000000000000000000000000e-01 3ffe3000000000000000000000000000 */
+/* cos(x) = 0.d42f6a1b9f0168cdf031c2f63c8d9304d86f8d34cb1d5fccb68ca0f2241427fc18d1fd5bbdf */
+ L(8.28848487609325734810171790119116638e-01), /* 3ffea85ed4373e02d19be06385ec791b */
+ L(1.43082508100496581719048175506239770e-35), /* 3f8b304d86f8d34cb1d5fccb68ca0f22 */
+/* sin(x) = 0.8f39a191b2ba6122a3fa4f41d5a3ffd421417d46f19a22230a14f7fcc8fce5c75b4b28b29d1 */
+ L(5.59473131247366877384844006003116688e-01), /* 3ffe1e7343236574c24547f49e83ab48 */
+L(-1.28922620524163922306886952100992796e-37), /* bf845ef5f415c8732eeee7af584019b8 */
+
+/* x = 6.01562500000000000000000000000000000e-01 3ffe3400000000000000000000000000 */
+/* cos(x) = 0.d30f4f392c357ab0661c5fa8a7d9b26627846fef214b1d19a22379ff9eddba087cf410eb097 */
+ L(8.24452353914429207485643598212356053e-01), /* 3ffea61e9e72586af560cc38bf514fb3 */
+ L(3.79160239225080026987031418939026741e-35), /* 3f8c93313c237f790a58e8cd111bcffd */
+/* sin(x) = 0.90e0e0d81ca678796cc92c8ea8c2815bc72ca78abe571bfa8576aacc571e096a33237e0e830 */
+ L(5.65931370507905990773159095689276114e-01), /* 3ffe21c1c1b0394cf0f2d992591d5185 */
+ L(1.02202775968053982310991962521535027e-36), /* 3f875bc72ca78abe571bfa8576aacc57 */
+
+/* x = 6.09375000000000000000000000000000000e-01 3ffe3800000000000000000000000000 */
+/* cos(x) = 0.d1ebe81a95ee752e48a26bcd32d6e922d7eb44b8ad2232f6930795e84b56317269b9dd1dfa6 */
+ L(8.20005899897234008255550633876556043e-01), /* 3ffea3d7d0352bdcea5c9144d79a65ae */
+L(-1.72008811955230823416724332297991247e-35), /* bf8b6dd2814bb4752ddcd096cf86a17b */
+/* sin(x) = 0.9285dc9bc45dd9ea3d02457bcce59c4175aab6ff7929a8d287195525fdace200dba032874fb */
+ L(5.72355068234507240384953706824503608e-01), /* 3ffe250bb93788bbb3d47a048af799cb */
+ L(2.12572273479933123944580199464514529e-35), /* 3f8bc4175aab6ff7929a8d2871955260 */
+
+/* x = 6.17187500000000000000000000000000000e-01 3ffe3c00000000000000000000000000 */
+/* cos(x) = 0.d0c5394d772228195e25736c03574707de0af1ca344b13bd3914bfe27518e9e426f5deff1e1 */
+ L(8.15509396946375476876345384201386217e-01), /* 3ffea18a729aee445032bc4ae6d806af */
+L(-4.28589138410712954051679139949341961e-35), /* bf8cc7c10fa871ae5da76216375a00ec */
+/* sin(x) = 0.94288e48bd0335fc41c4cbd2920497a8f5d1d8185c99fa0081f90c27e2a53ffdd208a0dbe69 */
+ L(5.78743832357770354521111378581385347e-01), /* 3ffe28511c917a066bf8838997a52409 */
+ L(1.77998063432551282609698670002456093e-35), /* 3f8b7a8f5d1d8185c99fa0081f90c27e */
+
+/* x = 6.25000000000000000000000000000000000e-01 3ffe4000000000000000000000000000 */
+/* cos(x) = 0.cf9b476c897c25c5bfe750dd3f308eaf7bcc1ed00179a256870f4200445043dcdb1974b5878 */
+ L(8.10963119505217902189534803941080724e-01), /* 3ffe9f368ed912f84b8b7fcea1ba7e61 */
+ L(1.10481292856794436426051402418804358e-35), /* 3f8ad5ef7983da002f344ad0e1e84009 */
+/* sin(x) = 0.95c8ef544210ec0b91c49bd2aa09e8515fa61a156ebb10f5f8c232a6445b61ebf3c2ec268f9 */
+ L(5.85097272940462154805399314150080459e-01), /* 3ffe2b91dea88421d817238937a55414 */
+L(-1.78164576278056195136525335403380464e-35), /* bf8b7aea059e5ea9144ef0a073dcd59c */
+
+/* x = 6.32812500000000000000000000000000000e-01 3ffe4400000000000000000000000000 */
+/* cos(x) = 0.ce6e171f92f2e27f32225327ec440ddaefae248413efc0e58ceee1ae369aabe73f88c87ed1a */
+ L(8.06367345055103913698795406077297399e-01), /* 3ffe9cdc2e3f25e5c4fe6444a64fd888 */
+ L(1.04235088143133625463876245029180850e-35), /* 3f8abb5df5c490827df81cb19ddc35c7 */
+/* sin(x) = 0.9766f93cd18413a6aafc1cfc6fc28abb6817bf94ce349901ae3f48c3215d3eb60acc5f78903 */
+ L(5.91415002201316315087000225758031236e-01), /* 3ffe2ecdf279a308274d55f839f8df85 */
+ L(8.07390238063560077355762466502569603e-36), /* 3f8a576d02f7f299c6932035c7e91864 */
+
+/* x = 6.40625000000000000000000000000000000e-01 3ffe4800000000000000000000000000 */
+/* cos(x) = 0.cd3dad1b5328a2e459f993f4f5108819faccbc4eeba9604e81c7adad51cc8a2561631a06826 */
+ L(8.01722354098418450607492605652964208e-01), /* 3ffe9a7b5a36a65145c8b3f327e9ea21 */
+ L(6.09487851305233089325627939458963741e-36), /* 3f8a033f599789dd752c09d038f5b5aa */
+/* sin(x) = 0.9902a58a45e27bed68412b426b675ed503f54d14c8172e0d373f42cadf04daf67319a7f94be */
+ L(5.97696634538701531238647618967334337e-01), /* 3ffe32054b148bc4f7dad0825684d6cf */
+L(-2.49527608940873714527427941350461554e-35), /* bf8c0957e0559759bf468f964605e9a9 */
+
+/* x = 6.48437500000000000000000000000000000e-01 3ffe4c00000000000000000000000000 */
+/* cos(x) = 0.cc0a0e21709883a3ff00911e11a07ee3bd7ea2b04e081be99be0264791170761ae64b8b744a */
+ L(7.97028430141468342004642741431945296e-01), /* 3ffe98141c42e1310747fe01223c2341 */
+L(-8.35364432831812599727083251866305534e-37), /* bf871c42815d4fb1f7e416641fd9b86f */
+/* sin(x) = 0.9a9bedcdf01b38d993f3d7820781de292033ead73b89e28f39313dbe3a6e463f845b5fa8490 */
+ L(6.03941786554156657267270287527367726e-01), /* 3ffe3537db9be03671b327e7af040f04 */
+L(-2.54578992328947177770363936132309779e-35), /* bf8c0eb6fe60a94623b0eb863676120e */
+
+/* x = 6.56250000000000000000000000000000000e-01 3ffe5000000000000000000000000000 */
+/* cos(x) = 0.cad33f00658fe5e8204bbc0f3a66a0e6a773f87987a780b243d7be83b3db1448ca0e0e62787 */
+ L(7.92285859677178543141501323781709399e-01), /* 3ffe95a67e00cb1fcbd04097781e74cd */
+ L(2.47519558228473167879248891673807645e-35), /* 3f8c07353b9fc3cc3d3c05921ebdf41e */
+/* sin(x) = 0.9c32cba2b14156ef05256c4f857991ca6a547cd7ceb1ac8a8e62a282bd7b9183648a462bd04 */
+ L(6.10150077075791371273742393566183220e-01), /* 3ffe386597456282adde0a4ad89f0af3 */
+ L(1.33842237929938963780969418369150532e-35), /* 3f8b1ca6a547cd7ceb1ac8a8e62a282c */
+
+/* x = 6.64062500000000000000000000000000000e-01 3ffe5400000000000000000000000000 */
+/* cos(x) = 0.c99944936cf48c8911ff93fe64b3ddb7981e414bdaf6aae1203577de44878c62bc3bc9cf7b9 */
+ L(7.87494932167606083931328295965533034e-01), /* 3ffe93328926d9e9191223ff27fcc968 */
+L(-2.57915385618070637156514241185180920e-35), /* bf8c12433f0df5a1284aa8f6fe54410e */
+/* sin(x) = 0.9dc738ad14204e689ac582d0f85826590feece34886cfefe2e08cf2bb8488d55424dc9d3525 */
+ L(6.16321127181550943005700433761731837e-01), /* 3ffe3b8e715a28409cd1358b05a1f0b0 */
+ L(2.88497530050197716298085892460478666e-35), /* 3f8c32c87f7671a44367f7f17046795e */
+
+/* x = 6.71875000000000000000000000000000000e-01 3ffe5800000000000000000000000000 */
+/* cos(x) = 0.c85c23c26ed7b6f014ef546c47929682122876bfbf157de0aff3c4247d820c746e32cd4174f */
+ L(7.82655940026272796930787447428139026e-01), /* 3ffe90b84784ddaf6de029dea8d88f25 */
+ L(1.69332045679237919427807771288506254e-35), /* 3f8b682122876bfbf157de0aff3c4248 */
+/* sin(x) = 0.9f592e9b66a9cf906a3c7aa3c10199849040c45ec3f0a747597311038101780c5f266059dbf */
+ L(6.22454560222343683041926705090443330e-01), /* 3ffe3eb25d36cd539f20d478f5478203 */
+ L(1.91974786921147072717621236192269859e-35), /* 3f8b9849040c45ec3f0a747597311038 */
+
+/* x = 6.79687500000000000000000000000000000e-01 3ffe5c00000000000000000000000000 */
+/* cos(x) = 0.c71be181ecd6875ce2da5615a03cca207d9adcb9dfb0a1d6c40a4f0056437f1a59ccddd06ee */
+ L(7.77769178600317903122203513685412863e-01), /* 3ffe8e37c303d9ad0eb9c5b4ac2b407a */
+L(-4.05296033424632846931240580239929672e-35), /* bf8caefc13291a31027af149dfad87fd */
+/* sin(x) = 0.a0e8a725d33c828c11fa50fd9e9a15ffecfad43f3e534358076b9b0f6865694842b1e8c67dc */
+ L(6.28550001845029662028004327939032867e-01), /* 3ffe41d14e4ba679051823f4a1fb3d34 */
+ L(1.65507421184028099672784511397428852e-35), /* 3f8b5ffecfad43f3e534358076b9b0f7 */
+
+/* x = 6.87500000000000000000000000000000000e-01 3ffe6000000000000000000000000000 */
+/* cos(x) = 0.c5d882d2ee48030c7c07d28e981e34804f82ed4cf93655d2365389b716de6ad44676a1cc5da */
+ L(7.72834946152471544810851845913425178e-01), /* 3ffe8bb105a5dc900618f80fa51d303c */
+ L(3.94975229341211664237241534741146939e-35), /* 3f8ca4027c176a67c9b2ae91b29c4db9 */
+/* sin(x) = 0.a2759c0e79c35582527c32b55f5405c182c66160cb1d9eb7bb0b7cdf4ad66f317bda4332914 */
+ L(6.34607080015269296850309914203671436e-01), /* 3ffe44eb381cf386ab04a4f8656abea8 */
+ L(4.33025916939968369326060156455927002e-36), /* 3f897060b1985832c767adeec2df37d3 */
+
+/* x = 6.95312500000000000000000000000000000e-01 3ffe6400000000000000000000000000 */
+/* cos(x) = 0.c4920cc2ec38fb891b38827db08884fc66371ac4c2052ca8885b981bbcfd3bb7b093ee31515 */
+ L(7.67853543842850365879920759114193964e-01), /* 3ffe89241985d871f712367104fb6111 */
+ L(3.75100035267325597157244776081706979e-36), /* 3f893f198dc6b130814b2a2216e606ef */
+/* sin(x) = 0.a400072188acf49cd6b173825e038346f105e1301afe642bcc364cea455e21e506e3e927ed8 */
+ L(6.40625425040230409188409779413961021e-01), /* 3ffe48000e431159e939ad62e704bc07 */
+ L(2.46542747294664049615806500747173281e-36), /* 3f88a37882f0980d7f3215e61b267523 */
+
+/* x = 7.03125000000000000000000000000000000e-01 3ffe6800000000000000000000000000 */
+/* cos(x) = 0.c348846bbd3631338ffe2bfe9dd1381a35b4e9c0c51b4c13fe376bad1bf5caacc4542be0aa9 */
+ L(7.62825275710576250507098753625429792e-01), /* 3ffe869108d77a6c62671ffc57fd3ba2 */
+ L(4.22067411888601505004748939382325080e-35), /* 3f8cc0d1ada74e0628da609ff1bb5d69 */
+/* sin(x) = 0.a587e23555bb08086d02b9c662cdd29316c3e9bd08d93793634a21b1810cce73bdb97a99b9e */
+ L(6.46604669591152370524042159882800763e-01), /* 3ffe4b0fc46aab761010da05738cc59c */
+L(-3.41742981816219412415674365946079826e-35), /* bf8c6b6749e0b217b9364364e5aef274 */
+
+/* x = 7.10937500000000000000000000000000000e-01 3ffe6c00000000000000000000000000 */
+/* cos(x) = 0.c1fbeef380e4ffdd5a613ec8722f643ffe814ec2343e53adb549627224fdc9f2a7b77d3d69f */
+ L(7.57750448655219342240234832230493361e-01), /* 3ffe83f7dde701c9ffbab4c27d90e45f */
+L(-2.08767968311222650582659938787920125e-35), /* bf8bbc0017eb13dcbc1ac524ab69d8de */
+/* sin(x) = 0.a70d272a76a8d4b6da0ec90712bb748b96dabf88c3079246f3db7eea6e58ead4ed0e2843303 */
+ L(6.52544448725765956407573982284767763e-01), /* 3ffe4e1a4e54ed51a96db41d920e2577 */
+L(-8.61758060284379660697102362141557170e-36), /* bf8a6e8d24a80ee79f0db721849022b2 */
+
+/* x = 7.18750000000000000000000000000000000e-01 3ffe7000000000000000000000000000 */
+/* cos(x) = 0.c0ac518c8b6ae710ba37a3eeb90cb15aebcb8bed4356fb507a48a6e97de9aa6d9660116b436 */
+ L(7.52629372418066476054541324847143116e-01), /* 3ffe8158a31916d5ce21746f47dd7219 */
+ L(3.71306958657663189665450864311104571e-35), /* 3f8c8ad75e5c5f6a1ab7da83d245374c */
+/* sin(x) = 0.a88fcfebd9a8dd47e2f3c76ef9e2439920f7e7fbe735f8bcc985491ec6f12a2d4214f8cfa99 */
+ L(6.58444399910567541589583954884041989e-01), /* 3ffe511f9fd7b351ba8fc5e78eddf3c5 */
+L(-4.54412944084300330523721391865787219e-35), /* bf8ce336f840c020c6503a19b3d5b70a */
+
+/* x = 7.26562500000000000000000000000000000e-01 3ffe7400000000000000000000000000 */
+/* cos(x) = 0.bf59b17550a4406875969296567cf3e3b4e483061877c02811c6cae85fad5a6c3da58f49292 */
+ L(7.47462359563216166669700384714767552e-01), /* 3ffe7eb362eaa14880d0eb2d252cacfa */
+L(-9.11094340926220027288083639048016945e-36), /* bf8a8389636f9f3cf107fafdc726a2f4 */
+/* sin(x) = 0.aa0fd66eddb921232c28520d3911b8a03193b47f187f1471ac216fbcd5bb81029294d3a73f1 */
+ L(6.64304163042946276515506587432846246e-01), /* 3ffe541facddbb7242465850a41a7223 */
+ L(4.26004843895378210155889028714676019e-35), /* 3f8cc5018c9da3f8c3f8a38d610b7de7 */
+
+/* x = 7.34375000000000000000000000000000000e-01 3ffe7800000000000000000000000000 */
+/* cos(x) = 0.be0413f84f2a771c614946a88cbf4da1d75a5560243de8f2283fefa0ea4a48468a52d51d8b3 */
+ L(7.42249725458501306991347253449610537e-01), /* 3ffe7c0827f09e54ee38c2928d51197f */
+L(-3.78925270049800913539923473871287550e-35), /* bf8c92f1452d54fede10b86ebe0082f9 */
+/* sin(x) = 0.ab8d34b36acd987210ed343ec65d7e3adc2e7109fce43d55c8d57dfdf55b9e01d2cc1f1b9ec */
+ L(6.70123380473162894654531583500648495e-01), /* 3ffe571a6966d59b30e421da687d8cbb */
+L(-1.33165852952743729897634069393684656e-36), /* bf87c523d18ef6031bc2aa372a82020b */
+
+/* x = 7.42187500000000000000000000000000000e-01 3ffe7c00000000000000000000000000 */
+/* cos(x) = 0.bcab7e6bfb2a14a9b122c574a376bec98ab14808c64a4e731b34047e217611013ac99c0f25d */
+ L(7.36991788256240741057089385586450844e-01), /* 3ffe7956fcd7f654295362458ae946ed */
+ L(4.72358938637974850573747497460125519e-35), /* 3f8cf64c558a404632527398d9a023f1 */
+/* sin(x) = 0.ad07e4c409d08c4fa3a9057bb0ac24b8636e74e76f51e09bd6b2319707cbd9f5e254643897a */
+ L(6.75901697026178809189642203142423973e-01), /* 3ffe5a0fc98813a1189f47520af76158 */
+ L(2.76252586616364878801928456702948857e-35), /* 3f8c25c31b73a73b7a8f04deb5918cb8 */
+
+/* x = 7.50000000000000000000000000000000000e-01 3ffe8000000000000000000000000000 */
+/* cos(x) = 0.bb4ff632a908f73ec151839cb9d993b4e0bfb8f20e7e44e6e4aee845e35575c3106dbe6fd06 */
+ L(7.31688868873820886311838753000084529e-01), /* 3ffe769fec655211ee7d82a3073973b3 */
+ L(1.48255637548931697184991710293198620e-35), /* 3f8b3b4e0bfb8f20e7e44e6e4aee845e */
+/* sin(x) = 0.ae7fe0b5fc786b2d966e1d6af140a488476747c2646425fc7533f532cd044cb10a971a49a6a */
+ L(6.81638760023334166733241952779893908e-01), /* 3ffe5cffc16bf8f0d65b2cdc3ad5e281 */
+ L(2.74838775935027549024224114338667371e-35), /* 3f8c24423b3a3e1323212fe3a99fa996 */
+
+/* x = 7.57812500000000000000000000000000000e-01 3ffe8400000000000000000000000000 */
+/* cos(x) = 0.b9f180ba77dd0751628e135a9508299012230f14becacdd14c3f8862d122de5b56d55b53360 */
+ L(7.26341290974108590410147630237598973e-01), /* 3ffe73e30174efba0ea2c51c26b52a10 */
+ L(3.12683579338351123545814364980658990e-35), /* 3f8c4c80911878a5f6566e8a61fc4317 */
+/* sin(x) = 0.aff522a954f2ba16d9defdc416e33f5e9a5dfd5a6c228e0abc4d521327ff6e2517a7b3851dd */
+ L(6.87334219303873534951703613035647220e-01), /* 3ffe5fea4552a9e5742db3bdfb882dc6 */
+ L(4.76739454455410744997012795035529128e-35), /* 3f8cfaf4d2efead361147055e26a9099 */
+
+/* x = 7.65625000000000000000000000000000000e-01 3ffe8800000000000000000000000000 */
+/* cos(x) = 0.b890237d3bb3c284b614a0539016bfa1053730bbdf940fa895e185f8e58884d3dda15e63371 */
+ L(7.20949380945696418043812784148447688e-01), /* 3ffe712046fa776785096c2940a7202d */
+ L(4.78691285733673379499536326050811832e-35), /* 3f8cfd0829b985defca07d44af0c2fc7 */
+/* sin(x) = 0.b167a4c90d63c4244cf5493b7cc23bd3c3c1225e078baa0c53d6d400b926281f537a1a260e6 */
+ L(6.92987727246317910281815490823048210e-01), /* 3ffe62cf49921ac7884899ea9276f984 */
+ L(4.50089871077663557180849219529189918e-35), /* 3f8cde9e1e0912f03c5d50629eb6a006 */
+
+/* x = 7.73437500000000000000000000000000000e-01 3ffe8c00000000000000000000000000 */
+/* cos(x) = 0.b72be40067aaf2c050dbdb7a14c3d7d4f203f6b3f0224a4afe55d6ec8e92b508fd5c5984b3b */
+ L(7.15513467882981573520620561289896903e-01), /* 3ffe6e57c800cf55e580a1b7b6f42988 */
+L(-3.02191815581445336509438104625489192e-35), /* bf8c41586fe04a607eedada80d51489c */
+/* sin(x) = 0.b2d7614b1f3aaa24df2d6e20a77e1ca3e6d838c03e29c1bcb026e6733324815fadc9eb89674 */
+ L(6.98598938789681741301929277107891591e-01), /* 3ffe65aec2963e755449be5adc414efc */
+ L(2.15465226809256290914423429408722521e-35), /* 3f8bca3e6d838c03e29c1bcb026e6733 */
+
+/* x = 7.81250000000000000000000000000000000e-01 3ffe9000000000000000000000000000 */
+/* cos(x) = 0.b5c4c7d4f7dae915ac786ccf4b1a498d3e73b6e5e74fe7519d9c53ee6d6b90e881bddfc33e1 */
+ L(7.10033883566079674974121643959490219e-01), /* 3ffe6b898fa9efb5d22b58f0d99e9635 */
+L(-4.09623224763692443220896752907902465e-35), /* bf8cb3960c6248d0c580c573131d608d */
+/* sin(x) = 0.b44452709a59752905913765434a59d111f0433eb2b133f7d103207e2aeb4aae111ddc385b3 */
+ L(7.04167511454533672780059509973942844e-01), /* 3ffe6888a4e134b2ea520b226eca8695 */
+L(-2.87259372740393348676633610275598640e-35), /* bf8c3177707de60a6a76604177e6fc0f */
+
+/* x = 7.89062500000000000000000000000000000e-01 3ffe9400000000000000000000000000 */
+/* cos(x) = 0.b45ad4975b1294cadca4cf40ec8f22a68cd14b175835239a37e63acb85e8e9505215df18140 */
+ L(7.04510962440574606164129481545916976e-01), /* 3ffe68b5a92eb6252995b9499e81d91e */
+ L(2.60682037357042658395360726992048803e-35), /* 3f8c1534668a58bac1a91cd1bf31d65c */
+/* sin(x) = 0.b5ae7285bc10cf515753847e8f8b7a30e0a580d929d770103509880680f7b8b0e8ad23b65d8 */
+ L(7.09693105363899724959669028139035515e-01), /* 3ffe6b5ce50b78219ea2aea708fd1f17 */
+L(-4.37026016974122945368562319136420097e-36), /* bf8973c7d69fc9b58a23fbf2bd9dfe60 */
+};
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128/w_expl_compat.c b/REORG.TODO/sysdeps/ieee754/ldbl-128/w_expl_compat.c
new file mode 100644
index 0000000000..c32616e504
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128/w_expl_compat.c
@@ -0,0 +1,42 @@
+/* w_expl.c -- long double version of w_exp.c.
+ * Conversion to long double by Ulrich Drepper,
+ * Cygnus Support, drepper@cygnus.com.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: $";
+#endif
+
+/*
+ * wrapper expl(x)
+ */
+
+#include <math.h>
+#include <math_private.h>
+
+long double __expl(long double x) /* wrapper exp */
+{
+#ifdef _IEEE_LIBM
+ return __ieee754_expl(x);
+#else
+ long double z = __ieee754_expl (x);
+ if (__glibc_unlikely (!isfinite (z) || z == 0)
+ && isfinite (x) && _LIB_VERSION != _IEEE_)
+ return __kernel_standard_l (x, x, 206 + !!signbit (x));
+
+ return z;
+#endif
+}
+hidden_def (__expl)
+weak_alias (__expl, expl)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128/x2y2m1l.c b/REORG.TODO/sysdeps/ieee754/ldbl-128/x2y2m1l.c
new file mode 100644
index 0000000000..d3f88331b5
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128/x2y2m1l.c
@@ -0,0 +1,76 @@
+/* Compute x^2 + y^2 - 1, without large cancellation error.
+ Copyright (C) 2012-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+#include <math_private.h>
+#include <mul_splitl.h>
+#include <stdlib.h>
+
+
+/* Calculate X + Y exactly and store the result in *HI + *LO. It is
+ given that |X| >= |Y| and the values are small enough that no
+ overflow occurs. */
+
+static inline void
+add_split (_Float128 *hi, _Float128 *lo, _Float128 x, _Float128 y)
+{
+ /* Apply Dekker's algorithm. */
+ *hi = x + y;
+ *lo = (x - *hi) + y;
+}
+
+/* Compare absolute values of floating-point values pointed to by P
+ and Q for qsort. */
+
+static int
+compare (const void *p, const void *q)
+{
+ _Float128 pld = fabsl (*(const _Float128 *) p);
+ _Float128 qld = fabsl (*(const _Float128 *) q);
+ if (pld < qld)
+ return -1;
+ else if (pld == qld)
+ return 0;
+ else
+ return 1;
+}
+
+/* Return X^2 + Y^2 - 1, computed without large cancellation error.
+ It is given that 1 > X >= Y >= epsilon / 2, and that X^2 + Y^2 >=
+ 0.5. */
+
+_Float128
+__x2y2m1l (_Float128 x, _Float128 y)
+{
+ _Float128 vals[5];
+ SET_RESTORE_ROUNDL (FE_TONEAREST);
+ mul_splitl (&vals[1], &vals[0], x, x);
+ mul_splitl (&vals[3], &vals[2], y, y);
+ vals[4] = -1;
+ qsort (vals, 5, sizeof (_Float128), compare);
+ /* Add up the values so that each element of VALS has absolute value
+ at most equal to the last set bit of the next nonzero
+ element. */
+ for (size_t i = 0; i <= 3; i++)
+ {
+ add_split (&vals[i + 1], &vals[i], vals[i + 1], vals[i]);
+ qsort (vals + i + 1, 4 - i, sizeof (_Float128), compare);
+ }
+ /* Now any error from this addition will be small. */
+ return vals[4] + vals[3] + vals[2] + vals[1] + vals[0];
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/Makefile b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/Makefile
new file mode 100644
index 0000000000..bdba6cc6b5
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/Makefile
@@ -0,0 +1,16 @@
+# The`long double' type is a distinct type we support if
+# -mlong-double-128 option is used (or when it becomes a default
+# when -mlong-double-64 is not used).
+long-double-fcts = yes
+sysdep-CFLAGS += -mlong-double-128
+
+ifeq ($(subdir),stdlib)
+tests += tst-strtold-ldbl-128ibm
+$(objpfx)tst-strtold-ldbl-128ibm: $(libm)
+endif
+
+ifeq ($(subdir),math)
+tests += test-fmodl-ldbl-128ibm test-remainderl-ldbl-128ibm \
+ test-remquol-ldbl-128ibm test-canonical-ldbl-128ibm \
+ test-totalorderl-ldbl-128ibm
+endif
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/bits/iscanonical.h b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/bits/iscanonical.h
new file mode 100644
index 0000000000..7ddb368d26
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/bits/iscanonical.h
@@ -0,0 +1,41 @@
+/* Define iscanonical macro. ldbl-128ibm version.
+ Copyright (C) 2016-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#ifndef _MATH_H
+# error "Never use <bits/iscanonical.h> directly; include <math.h> instead."
+#endif
+
+#ifdef __NO_LONG_DOUBLE_MATH
+# define iscanonical(x) ((void) (__typeof (x)) (x), 1)
+#else
+extern int __iscanonicall (long double __x)
+ __THROW __attribute__ ((__const__));
+# define __iscanonicalf(x) ((void) (__typeof (x)) (x), 1)
+# define __iscanonical(x) ((void) (__typeof (x)) (x), 1)
+# if __HAVE_DISTINCT_FLOAT128
+# define __iscanonicalf128(x) ((void) (__typeof (x)) (x), 1)
+# endif
+
+/* Return nonzero value if X is canonical. In IEEE interchange binary
+ formats, all values are canonical, but the argument must still be
+ converted to its semantic type for any exceptions arising from the
+ conversion, before being discarded; in IBM long double, there are
+ encodings that are not consistently handled as corresponding to any
+ particular value of the type, and we return 0 for those. */
+# define iscanonical(x) __MATH_TG ((x), __iscanonical, (x))
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/e_acoshl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/e_acoshl.c
new file mode 100644
index 0000000000..cab1da9995
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/e_acoshl.c
@@ -0,0 +1,62 @@
+/* @(#)e_acosh.c 5.1 93/09/24 */
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+/* __ieee754_acosh(x)
+ * Method :
+ * Based on
+ * acosh(x) = log [ x + sqrt(x*x-1) ]
+ * we have
+ * acosh(x) := log(x)+ln2, if x is large; else
+ * acosh(x) := log(2x-1/(sqrt(x*x-1)+x)) if x>2; else
+ * acosh(x) := log1p(t+sqrt(2.0*t+t*t)); where t=x-1.
+ *
+ * Special cases:
+ * acosh(x) is NaN with signal if x<1.
+ * acosh(NaN) is NaN without signal.
+ */
+
+#include <math.h>
+#include <math_private.h>
+
+static const long double
+one = 1.0L,
+ln2 = M_LN2l;
+
+long double
+__ieee754_acoshl(long double x)
+{
+ long double t;
+ int64_t hx;
+ uint64_t lx;
+ double xhi, xlo;
+
+ ldbl_unpack (x, &xhi, &xlo);
+ EXTRACT_WORDS64 (hx, xhi);
+ EXTRACT_WORDS64 (lx, xlo);
+ if(hx<0x3ff0000000000000LL) { /* x < 1 */
+ return (x-x)/(x-x);
+ } else if(hx >=0x4370000000000000LL) { /* x >= 2**56 */
+ if(hx >=0x7ff0000000000000LL) { /* x is inf of NaN */
+ return x+x;
+ } else
+ return __ieee754_logl(x)+ln2; /* acosh(huge)=log(2x) */
+ } else if (((hx-0x3ff0000000000000LL)|(lx&0x7fffffffffffffffLL))==0) {
+ return 0.0; /* acosh(1) = 0 */
+ } else if (hx > 0x4000000000000000LL) { /* 2**56 > x > 2 */
+ t=x*x;
+ return __ieee754_logl(2.0*x-one/(x+__ieee754_sqrtl(t-one)));
+ } else { /* 1<x<2 */
+ t = x-one;
+ return __log1pl(t+__ieee754_sqrtl(2.0*t+t*t));
+ }
+}
+strong_alias (__ieee754_acoshl, __acoshl_finite)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/e_acosl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/e_acosl.c
new file mode 100644
index 0000000000..5974ee1338
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/e_acosl.c
@@ -0,0 +1,316 @@
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+/*
+ Long double expansions are
+ Copyright (C) 2001 Stephen L. Moshier <moshier@na-net.ornl.gov>
+ and are incorporated herein by permission of the author. The author
+ reserves the right to distribute this material elsewhere under different
+ copying permissions. These modifications are distributed here under
+ the following terms:
+
+ This 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 2.1 of the License, or (at your option) any later version.
+
+ This 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 this library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+/* __ieee754_acosl(x)
+ * Method :
+ * acos(x) = pi/2 - asin(x)
+ * acos(-x) = pi/2 + asin(x)
+ * For |x| <= 0.375
+ * acos(x) = pi/2 - asin(x)
+ * Between .375 and .5 the approximation is
+ * acos(0.4375 + x) = acos(0.4375) + x P(x) / Q(x)
+ * Between .5 and .625 the approximation is
+ * acos(0.5625 + x) = acos(0.5625) + x rS(x) / sS(x)
+ * For x > 0.625,
+ * acos(x) = 2 asin(sqrt((1-x)/2))
+ * computed with an extended precision square root in the leading term.
+ * For x < -0.625
+ * acos(x) = pi - 2 asin(sqrt((1-|x|)/2))
+ *
+ * Special cases:
+ * if x is NaN, return x itself;
+ * if |x|>1, return NaN with invalid signal.
+ *
+ * Functions needed: __ieee754_sqrtl.
+ */
+
+#include <math.h>
+#include <math_private.h>
+
+static const long double
+ one = 1.0L,
+ pio2_hi = 1.5707963267948966192313216916397514420986L,
+ pio2_lo = 4.3359050650618905123985220130216759843812E-35L,
+
+ /* acos(0.5625 + x) = acos(0.5625) + x rS(x) / sS(x)
+ -0.0625 <= x <= 0.0625
+ peak relative error 3.3e-35 */
+
+ rS0 = 5.619049346208901520945464704848780243887E0L,
+ rS1 = -4.460504162777731472539175700169871920352E1L,
+ rS2 = 1.317669505315409261479577040530751477488E2L,
+ rS3 = -1.626532582423661989632442410808596009227E2L,
+ rS4 = 3.144806644195158614904369445440583873264E1L,
+ rS5 = 9.806674443470740708765165604769099559553E1L,
+ rS6 = -5.708468492052010816555762842394927806920E1L,
+ rS7 = -1.396540499232262112248553357962639431922E1L,
+ rS8 = 1.126243289311910363001762058295832610344E1L,
+ rS9 = 4.956179821329901954211277873774472383512E-1L,
+ rS10 = -3.313227657082367169241333738391762525780E-1L,
+
+ sS0 = -4.645814742084009935700221277307007679325E0L,
+ sS1 = 3.879074822457694323970438316317961918430E1L,
+ sS2 = -1.221986588013474694623973554726201001066E2L,
+ sS3 = 1.658821150347718105012079876756201905822E2L,
+ sS4 = -4.804379630977558197953176474426239748977E1L,
+ sS5 = -1.004296417397316948114344573811562952793E2L,
+ sS6 = 7.530281592861320234941101403870010111138E1L,
+ sS7 = 1.270735595411673647119592092304357226607E1L,
+ sS8 = -1.815144839646376500705105967064792930282E1L,
+ sS9 = -7.821597334910963922204235247786840828217E-2L,
+ /* 1.000000000000000000000000000000000000000E0 */
+
+ acosr5625 = 9.7338991014954640492751132535550279812151E-1L,
+ pimacosr5625 = 2.1682027434402468335351320579240000860757E0L,
+
+ /* acos(0.4375 + x) = acos(0.4375) + x rS(x) / sS(x)
+ -0.0625 <= x <= 0.0625
+ peak relative error 2.1e-35 */
+
+ P0 = 2.177690192235413635229046633751390484892E0L,
+ P1 = -2.848698225706605746657192566166142909573E1L,
+ P2 = 1.040076477655245590871244795403659880304E2L,
+ P3 = -1.400087608918906358323551402881238180553E2L,
+ P4 = 2.221047917671449176051896400503615543757E1L,
+ P5 = 9.643714856395587663736110523917499638702E1L,
+ P6 = -5.158406639829833829027457284942389079196E1L,
+ P7 = -1.578651828337585944715290382181219741813E1L,
+ P8 = 1.093632715903802870546857764647931045906E1L,
+ P9 = 5.448925479898460003048760932274085300103E-1L,
+ P10 = -3.315886001095605268470690485170092986337E-1L,
+ Q0 = -1.958219113487162405143608843774587557016E0L,
+ Q1 = 2.614577866876185080678907676023269360520E1L,
+ Q2 = -9.990858606464150981009763389881793660938E1L,
+ Q3 = 1.443958741356995763628660823395334281596E2L,
+ Q4 = -3.206441012484232867657763518369723873129E1L,
+ Q5 = -1.048560885341833443564920145642588991492E2L,
+ Q6 = 6.745883931909770880159915641984874746358E1L,
+ Q7 = 1.806809656342804436118449982647641392951E1L,
+ Q8 = -1.770150690652438294290020775359580915464E1L,
+ Q9 = -5.659156469628629327045433069052560211164E-1L,
+ /* 1.000000000000000000000000000000000000000E0 */
+
+ acosr4375 = 1.1179797320499710475919903296900511518755E0L,
+ pimacosr4375 = 2.0236129215398221908706530535894517323217E0L,
+
+ /* asin(x) = x + x^3 pS(x^2) / qS(x^2)
+ 0 <= x <= 0.5
+ peak relative error 1.9e-35 */
+ pS0 = -8.358099012470680544198472400254596543711E2L,
+ pS1 = 3.674973957689619490312782828051860366493E3L,
+ pS2 = -6.730729094812979665807581609853656623219E3L,
+ pS3 = 6.643843795209060298375552684423454077633E3L,
+ pS4 = -3.817341990928606692235481812252049415993E3L,
+ pS5 = 1.284635388402653715636722822195716476156E3L,
+ pS6 = -2.410736125231549204856567737329112037867E2L,
+ pS7 = 2.219191969382402856557594215833622156220E1L,
+ pS8 = -7.249056260830627156600112195061001036533E-1L,
+ pS9 = 1.055923570937755300061509030361395604448E-3L,
+
+ qS0 = -5.014859407482408326519083440151745519205E3L,
+ qS1 = 2.430653047950480068881028451580393430537E4L,
+ qS2 = -4.997904737193653607449250593976069726962E4L,
+ qS3 = 5.675712336110456923807959930107347511086E4L,
+ qS4 = -3.881523118339661268482937768522572588022E4L,
+ qS5 = 1.634202194895541569749717032234510811216E4L,
+ qS6 = -4.151452662440709301601820849901296953752E3L,
+ qS7 = 5.956050864057192019085175976175695342168E2L,
+ qS8 = -4.175375777334867025769346564600396877176E1L;
+ /* 1.000000000000000000000000000000000000000E0 */
+
+long double
+__ieee754_acosl (long double x)
+{
+ long double a, z, r, w, p, q, s, t, f2;
+
+ if (__glibc_unlikely (isnan (x)))
+ return x + x;
+ a = __builtin_fabsl (x);
+ if (a == 1.0L)
+ {
+ if (x > 0.0L)
+ return 0.0; /* acos(1) = 0 */
+ else
+ return (2.0 * pio2_hi) + (2.0 * pio2_lo); /* acos(-1)= pi */
+ }
+ else if (a > 1.0L)
+ {
+ return (x - x) / (x - x); /* acos(|x| > 1) is NaN */
+ }
+ if (a < 0.5L)
+ {
+ if (a < 0x1p-106L)
+ return pio2_hi + pio2_lo;
+ if (a < 0.4375L)
+ {
+ /* Arcsine of x. */
+ z = x * x;
+ p = (((((((((pS9 * z
+ + pS8) * z
+ + pS7) * z
+ + pS6) * z
+ + pS5) * z
+ + pS4) * z
+ + pS3) * z
+ + pS2) * z
+ + pS1) * z
+ + pS0) * z;
+ q = (((((((( z
+ + qS8) * z
+ + qS7) * z
+ + qS6) * z
+ + qS5) * z
+ + qS4) * z
+ + qS3) * z
+ + qS2) * z
+ + qS1) * z
+ + qS0;
+ r = x + x * p / q;
+ z = pio2_hi - (r - pio2_lo);
+ return z;
+ }
+ /* .4375 <= |x| < .5 */
+ t = a - 0.4375L;
+ p = ((((((((((P10 * t
+ + P9) * t
+ + P8) * t
+ + P7) * t
+ + P6) * t
+ + P5) * t
+ + P4) * t
+ + P3) * t
+ + P2) * t
+ + P1) * t
+ + P0) * t;
+
+ q = (((((((((t
+ + Q9) * t
+ + Q8) * t
+ + Q7) * t
+ + Q6) * t
+ + Q5) * t
+ + Q4) * t
+ + Q3) * t
+ + Q2) * t
+ + Q1) * t
+ + Q0;
+ r = p / q;
+ if (x < 0.0L)
+ r = pimacosr4375 - r;
+ else
+ r = acosr4375 + r;
+ return r;
+ }
+ else if (a < 0.625L)
+ {
+ t = a - 0.5625L;
+ p = ((((((((((rS10 * t
+ + rS9) * t
+ + rS8) * t
+ + rS7) * t
+ + rS6) * t
+ + rS5) * t
+ + rS4) * t
+ + rS3) * t
+ + rS2) * t
+ + rS1) * t
+ + rS0) * t;
+
+ q = (((((((((t
+ + sS9) * t
+ + sS8) * t
+ + sS7) * t
+ + sS6) * t
+ + sS5) * t
+ + sS4) * t
+ + sS3) * t
+ + sS2) * t
+ + sS1) * t
+ + sS0;
+ if (x < 0.0L)
+ r = pimacosr5625 - p / q;
+ else
+ r = acosr5625 + p / q;
+ return r;
+ }
+ else
+ { /* |x| >= .625 */
+ double shi, slo;
+
+ z = (one - a) * 0.5;
+ s = __ieee754_sqrtl (z);
+ /* Compute an extended precision square root from
+ the Newton iteration s -> 0.5 * (s + z / s).
+ The change w from s to the improved value is
+ w = 0.5 * (s + z / s) - s = (s^2 + z)/2s - s = (z - s^2)/2s.
+ Express s = f1 + f2 where f1 * f1 is exactly representable.
+ w = (z - s^2)/2s = (z - f1^2 - 2 f1 f2 - f2^2)/2s .
+ s + w has extended precision. */
+ ldbl_unpack (s, &shi, &slo);
+ a = shi;
+ f2 = slo;
+ w = z - a * a;
+ w = w - 2.0 * a * f2;
+ w = w - f2 * f2;
+ w = w / (2.0 * s);
+ /* Arcsine of s. */
+ p = (((((((((pS9 * z
+ + pS8) * z
+ + pS7) * z
+ + pS6) * z
+ + pS5) * z
+ + pS4) * z
+ + pS3) * z
+ + pS2) * z
+ + pS1) * z
+ + pS0) * z;
+ q = (((((((( z
+ + qS8) * z
+ + qS7) * z
+ + qS6) * z
+ + qS5) * z
+ + qS4) * z
+ + qS3) * z
+ + qS2) * z
+ + qS1) * z
+ + qS0;
+ r = s + (w + s * p / q);
+
+ if (x < 0.0L)
+ w = pio2_hi + (pio2_lo - r);
+ else
+ w = r;
+ return 2.0 * w;
+ }
+}
+strong_alias (__ieee754_acosl, __acosl_finite)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/e_asinl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/e_asinl.c
new file mode 100644
index 0000000000..6ed5e8d68d
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/e_asinl.c
@@ -0,0 +1,250 @@
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+/*
+ Long double expansions are
+ Copyright (C) 2001 Stephen L. Moshier <moshier@na-net.ornl.gov>
+ and are incorporated herein by permission of the author. The author
+ reserves the right to distribute this material elsewhere under different
+ copying permissions. These modifications are distributed here under the
+ following terms:
+
+ This 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 2.1 of the License, or (at your option) any later version.
+
+ This 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 this library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+/* __ieee754_asin(x)
+ * Method :
+ * Since asin(x) = x + x^3/6 + x^5*3/40 + x^7*15/336 + ...
+ * we approximate asin(x) on [0,0.5] by
+ * asin(x) = x + x*x^2*R(x^2)
+ * Between .5 and .625 the approximation is
+ * asin(0.5625 + x) = asin(0.5625) + x rS(x) / sS(x)
+ * For x in [0.625,1]
+ * asin(x) = pi/2-2*asin(sqrt((1-x)/2))
+ * Let y = (1-x), z = y/2, s := sqrt(z), and pio2_hi+pio2_lo=pi/2;
+ * then for x>0.98
+ * asin(x) = pi/2 - 2*(s+s*z*R(z))
+ * = pio2_hi - (2*(s+s*z*R(z)) - pio2_lo)
+ * For x<=0.98, let pio4_hi = pio2_hi/2, then
+ * f = hi part of s;
+ * c = sqrt(z) - f = (z-f*f)/(s+f) ...f+c=sqrt(z)
+ * and
+ * asin(x) = pi/2 - 2*(s+s*z*R(z))
+ * = pio4_hi+(pio4-2s)-(2s*z*R(z)-pio2_lo)
+ * = pio4_hi+(pio4-2f)-(2s*z*R(z)-(pio2_lo+2c))
+ *
+ * Special cases:
+ * if x is NaN, return x itself;
+ * if |x|>1, return NaN with invalid signal.
+ *
+ */
+
+
+#include <float.h>
+#include <math.h>
+#include <math_private.h>
+long double sqrtl (long double);
+
+static const long double
+ one = 1.0L,
+ huge = 1.0e+300L,
+ pio2_hi = 1.5707963267948966192313216916397514420986L,
+ pio2_lo = 4.3359050650618905123985220130216759843812E-35L,
+ pio4_hi = 7.8539816339744830961566084581987569936977E-1L,
+
+ /* coefficient for R(x^2) */
+
+ /* asin(x) = x + x^3 pS(x^2) / qS(x^2)
+ 0 <= x <= 0.5
+ peak relative error 1.9e-35 */
+ pS0 = -8.358099012470680544198472400254596543711E2L,
+ pS1 = 3.674973957689619490312782828051860366493E3L,
+ pS2 = -6.730729094812979665807581609853656623219E3L,
+ pS3 = 6.643843795209060298375552684423454077633E3L,
+ pS4 = -3.817341990928606692235481812252049415993E3L,
+ pS5 = 1.284635388402653715636722822195716476156E3L,
+ pS6 = -2.410736125231549204856567737329112037867E2L,
+ pS7 = 2.219191969382402856557594215833622156220E1L,
+ pS8 = -7.249056260830627156600112195061001036533E-1L,
+ pS9 = 1.055923570937755300061509030361395604448E-3L,
+
+ qS0 = -5.014859407482408326519083440151745519205E3L,
+ qS1 = 2.430653047950480068881028451580393430537E4L,
+ qS2 = -4.997904737193653607449250593976069726962E4L,
+ qS3 = 5.675712336110456923807959930107347511086E4L,
+ qS4 = -3.881523118339661268482937768522572588022E4L,
+ qS5 = 1.634202194895541569749717032234510811216E4L,
+ qS6 = -4.151452662440709301601820849901296953752E3L,
+ qS7 = 5.956050864057192019085175976175695342168E2L,
+ qS8 = -4.175375777334867025769346564600396877176E1L,
+ /* 1.000000000000000000000000000000000000000E0 */
+
+ /* asin(0.5625 + x) = asin(0.5625) + x rS(x) / sS(x)
+ -0.0625 <= x <= 0.0625
+ peak relative error 3.3e-35 */
+ rS0 = -5.619049346208901520945464704848780243887E0L,
+ rS1 = 4.460504162777731472539175700169871920352E1L,
+ rS2 = -1.317669505315409261479577040530751477488E2L,
+ rS3 = 1.626532582423661989632442410808596009227E2L,
+ rS4 = -3.144806644195158614904369445440583873264E1L,
+ rS5 = -9.806674443470740708765165604769099559553E1L,
+ rS6 = 5.708468492052010816555762842394927806920E1L,
+ rS7 = 1.396540499232262112248553357962639431922E1L,
+ rS8 = -1.126243289311910363001762058295832610344E1L,
+ rS9 = -4.956179821329901954211277873774472383512E-1L,
+ rS10 = 3.313227657082367169241333738391762525780E-1L,
+
+ sS0 = -4.645814742084009935700221277307007679325E0L,
+ sS1 = 3.879074822457694323970438316317961918430E1L,
+ sS2 = -1.221986588013474694623973554726201001066E2L,
+ sS3 = 1.658821150347718105012079876756201905822E2L,
+ sS4 = -4.804379630977558197953176474426239748977E1L,
+ sS5 = -1.004296417397316948114344573811562952793E2L,
+ sS6 = 7.530281592861320234941101403870010111138E1L,
+ sS7 = 1.270735595411673647119592092304357226607E1L,
+ sS8 = -1.815144839646376500705105967064792930282E1L,
+ sS9 = -7.821597334910963922204235247786840828217E-2L,
+ /* 1.000000000000000000000000000000000000000E0 */
+
+ asinr5625 = 5.9740641664535021430381036628424864397707E-1L;
+
+
+
+long double
+__ieee754_asinl (long double x)
+{
+ long double a, t, w, p, q, c, r, s;
+ int flag;
+
+ if (__glibc_unlikely (isnan (x)))
+ return x + x;
+ flag = 0;
+ a = __builtin_fabsl (x);
+ if (a == 1.0L) /* |x|>= 1 */
+ return x * pio2_hi + x * pio2_lo; /* asin(1)=+-pi/2 with inexact */
+ else if (a >= 1.0L)
+ return (x - x) / (x - x); /* asin(|x|>1) is NaN */
+ else if (a < 0.5L)
+ {
+ if (a < 6.938893903907228e-18L) /* |x| < 2**-57 */
+ {
+ math_check_force_underflow (x);
+ long double force_inexact = huge + x;
+ math_force_eval (force_inexact);
+ return x; /* return x with inexact if x!=0 */
+ }
+ else
+ {
+ t = x * x;
+ /* Mark to use pS, qS later on. */
+ flag = 1;
+ }
+ }
+ else if (a < 0.625L)
+ {
+ t = a - 0.5625;
+ p = ((((((((((rS10 * t
+ + rS9) * t
+ + rS8) * t
+ + rS7) * t
+ + rS6) * t
+ + rS5) * t
+ + rS4) * t
+ + rS3) * t
+ + rS2) * t
+ + rS1) * t
+ + rS0) * t;
+
+ q = ((((((((( t
+ + sS9) * t
+ + sS8) * t
+ + sS7) * t
+ + sS6) * t
+ + sS5) * t
+ + sS4) * t
+ + sS3) * t
+ + sS2) * t
+ + sS1) * t
+ + sS0;
+ t = asinr5625 + p / q;
+ if (x > 0.0L)
+ return t;
+ else
+ return -t;
+ }
+ else
+ {
+ /* 1 > |x| >= 0.625 */
+ w = one - a;
+ t = w * 0.5;
+ }
+
+ p = (((((((((pS9 * t
+ + pS8) * t
+ + pS7) * t
+ + pS6) * t
+ + pS5) * t
+ + pS4) * t
+ + pS3) * t
+ + pS2) * t
+ + pS1) * t
+ + pS0) * t;
+
+ q = (((((((( t
+ + qS8) * t
+ + qS7) * t
+ + qS6) * t
+ + qS5) * t
+ + qS4) * t
+ + qS3) * t
+ + qS2) * t
+ + qS1) * t
+ + qS0;
+
+ if (flag) /* 2^-57 < |x| < 0.5 */
+ {
+ w = p / q;
+ return x + x * w;
+ }
+
+ s = __ieee754_sqrtl (t);
+ if (a > 0.975L)
+ {
+ w = p / q;
+ t = pio2_hi - (2.0 * (s + s * w) - pio2_lo);
+ }
+ else
+ {
+ w = ldbl_high (s);
+ c = (t - w * w) / (s + w);
+ r = p / q;
+ p = 2.0 * s * r - (pio2_lo - 2.0 * c);
+ q = pio4_hi - 2.0 * w;
+ t = pio4_hi - (p - q);
+ }
+
+ if (x > 0.0L)
+ return t;
+ else
+ return -t;
+}
+strong_alias (__ieee754_asinl, __asinl_finite)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/e_atan2l.c b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/e_atan2l.c
new file mode 100644
index 0000000000..b625323df3
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/e_atan2l.c
@@ -0,0 +1,122 @@
+/* e_atan2l.c -- long double version of e_atan2.c.
+ * Conversion to long double by Jakub Jelinek, jj@ultra.linux.cz.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+/* __ieee754_atan2l(y,x)
+ * Method :
+ * 1. Reduce y to positive by atan2l(y,x)=-atan2l(-y,x).
+ * 2. Reduce x to positive by (if x and y are unexceptional):
+ * ARG (x+iy) = arctan(y/x) ... if x > 0,
+ * ARG (x+iy) = pi - arctan[y/(-x)] ... if x < 0,
+ *
+ * Special cases:
+ *
+ * ATAN2((anything), NaN ) is NaN;
+ * ATAN2(NAN , (anything) ) is NaN;
+ * ATAN2(+-0, +(anything but NaN)) is +-0 ;
+ * ATAN2(+-0, -(anything but NaN)) is +-pi ;
+ * ATAN2(+-(anything but 0 and NaN), 0) is +-pi/2;
+ * ATAN2(+-(anything but INF and NaN), +INF) is +-0 ;
+ * ATAN2(+-(anything but INF and NaN), -INF) is +-pi;
+ * ATAN2(+-INF,+INF ) is +-pi/4 ;
+ * ATAN2(+-INF,-INF ) is +-3pi/4;
+ * ATAN2(+-INF, (anything but,0,NaN, and INF)) is +-pi/2;
+ *
+ * Constants:
+ * The hexadecimal values are the intended ones for the following
+ * constants. The decimal values may be used, provided that the
+ * compiler will convert from decimal to binary accurately enough
+ * to produce the hexadecimal values shown.
+ */
+
+#include <math.h>
+#include <math_private.h>
+
+static const long double
+tiny = 1.0e-300L,
+zero = 0.0,
+pi_o_4 = 7.85398163397448309615660845819875699e-01L, /* 3ffe921fb54442d18469898cc51701b8 */
+pi_o_2 = 1.57079632679489661923132169163975140e+00L, /* 3fff921fb54442d18469898cc51701b8 */
+pi = 3.14159265358979323846264338327950280e+00L, /* 4000921fb54442d18469898cc51701b8 */
+pi_lo = 8.67181013012378102479704402604335225e-35L; /* 3f8dcd129024e088a67cc74020bbea64 */
+
+long double
+__ieee754_atan2l(long double y, long double x)
+{
+ long double z;
+ int64_t k,m,hx,hy,ix,iy;
+ uint64_t lx;
+ double xhi, xlo, yhi;
+
+ ldbl_unpack (x, &xhi, &xlo);
+ EXTRACT_WORDS64 (hx, xhi);
+ EXTRACT_WORDS64 (lx, xlo);
+ ix = hx&0x7fffffffffffffffLL;
+ yhi = ldbl_high (y);
+ EXTRACT_WORDS64 (hy, yhi);
+ iy = hy&0x7fffffffffffffffLL;
+ if(((ix)>0x7ff0000000000000LL)||
+ ((iy)>0x7ff0000000000000LL)) /* x or y is NaN */
+ return x+y;
+ if(((hx-0x3ff0000000000000LL))==0
+ && (lx&0x7fffffffffffffff)==0) return __atanl(y); /* x=1.0L */
+ m = ((hy>>63)&1)|((hx>>62)&2); /* 2*sign(x)+sign(y) */
+
+ /* when y = 0 */
+ if(iy==0) {
+ switch(m) {
+ case 0:
+ case 1: return y; /* atan(+-0,+anything)=+-0 */
+ case 2: return pi+tiny;/* atan(+0,-anything) = pi */
+ case 3: return -pi-tiny;/* atan(-0,-anything) =-pi */
+ }
+ }
+ /* when x = 0 */
+ if(ix==0) return (hy<0)? -pi_o_2-tiny: pi_o_2+tiny;
+
+ /* when x is INF */
+ if(ix==0x7ff0000000000000LL) {
+ if(iy==0x7ff0000000000000LL) {
+ switch(m) {
+ case 0: return pi_o_4+tiny;/* atan(+INF,+INF) */
+ case 1: return -pi_o_4-tiny;/* atan(-INF,+INF) */
+ case 2: return 3.0L*pi_o_4+tiny;/*atan(+INF,-INF)*/
+ case 3: return -3.0L*pi_o_4-tiny;/*atan(-INF,-INF)*/
+ }
+ } else {
+ switch(m) {
+ case 0: return zero ; /* atan(+...,+INF) */
+ case 1: return -zero ; /* atan(-...,+INF) */
+ case 2: return pi+tiny ; /* atan(+...,-INF) */
+ case 3: return -pi-tiny ; /* atan(-...,-INF) */
+ }
+ }
+ }
+ /* when y is INF */
+ if(iy==0x7ff0000000000000LL) return (hy<0)? -pi_o_2-tiny: pi_o_2+tiny;
+
+ /* compute y/x */
+ k = (iy-ix)>>52;
+ if(k > 120) z=pi_o_2+0.5L*pi_lo; /* |y/x| > 2**120 */
+ else if(hx<0&&k<-120) z=0.0L; /* |y|/x < -2**120 */
+ else z=__atanl(fabsl(y/x)); /* safe to do y/x */
+ switch (m) {
+ case 0: return z ; /* atan(+,+) */
+ case 1: return -z ; /* atan(-,+) */
+ case 2: return pi-(z-pi_lo);/* atan(+,-) */
+ default: /* case 3 */
+ return (z-pi_lo)-pi;/* atan(-,-) */
+ }
+}
+strong_alias (__ieee754_atan2l, __atan2l_finite)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/e_atanhl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/e_atanhl.c
new file mode 100644
index 0000000000..b576f42030
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/e_atanhl.c
@@ -0,0 +1,71 @@
+/* @(#)e_atanh.c 5.1 93/09/24 */
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+/* __ieee754_atanh(x)
+ * Method :
+ * 1.Reduced x to positive by atanh(-x) = -atanh(x)
+ * 2.For x>=0.5
+ * 1 2x x
+ * atanh(x) = --- * log(1 + -------) = 0.5 * log1p(2 * --------)
+ * 2 1 - x 1 - x
+ *
+ * For x<0.5
+ * atanh(x) = 0.5*log1p(2x+2x*x/(1-x))
+ *
+ * Special cases:
+ * atanh(x) is NaN if |x| > 1 with signal;
+ * atanh(NaN) is that NaN with no signal;
+ * atanh(+-1) is +-INF with signal.
+ *
+ */
+
+#include <float.h>
+#include <math.h>
+#include <math_private.h>
+
+static const long double one = 1.0L, huge = 1e300L;
+
+static const long double zero = 0.0L;
+
+long double
+__ieee754_atanhl(long double x)
+{
+ long double t;
+ int64_t hx,ix;
+ double xhi;
+
+ xhi = ldbl_high (x);
+ EXTRACT_WORDS64 (hx, xhi);
+ ix = hx&0x7fffffffffffffffLL;
+ if (ix >= 0x3ff0000000000000LL) { /* |x|>=1 */
+ if (ix > 0x3ff0000000000000LL)
+ return (x-x)/(x-x);
+ t = fabsl (x);
+ if (t > one)
+ return (x-x)/(x-x);
+ if (t == one)
+ return x/zero;
+ }
+ if(ix<0x3c70000000000000LL&&(huge+x)>zero) /* x<2**-56 */
+ {
+ math_check_force_underflow (x);
+ return x;
+ }
+ x = fabsl (x);
+ if(ix<0x3fe0000000000000LL) { /* x < 0.5 */
+ t = x+x;
+ t = 0.5*__log1pl(t+t*x/(one-x));
+ } else
+ t = 0.5*__log1pl((x+x)/(one-x));
+ if(hx>=0) return t; else return -t;
+}
+strong_alias (__ieee754_atanhl, __atanhl_finite)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/e_coshl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/e_coshl.c
new file mode 100644
index 0000000000..327b2ab960
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/e_coshl.c
@@ -0,0 +1,81 @@
+/* @(#)e_cosh.c 5.1 93/09/24 */
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+/* __ieee754_cosh(x)
+ * Method :
+ * mathematically cosh(x) if defined to be (exp(x)+exp(-x))/2
+ * 1. Replace x by |x| (cosh(x) = cosh(-x)).
+ * 2.
+ * [ exp(x) - 1 ]^2
+ * 0 <= x <= ln2/2 : cosh(x) := 1 + -------------------
+ * 2*exp(x)
+ *
+ * exp(x) + 1/exp(x)
+ * ln2/2 <= x <= 40 : cosh(x) := -------------------
+ * 2
+ * 40 <= x <= lnovft : cosh(x) := exp(x)/2
+ * lnovft <= x <= ln2ovft: cosh(x) := exp(x/2)/2 * exp(x/2)
+ * ln2ovft < x : cosh(x) := huge*huge (overflow)
+ *
+ * Special cases:
+ * cosh(x) is |x| if x is +INF, -INF, or NaN.
+ * only cosh(0)=1 is exact for finite x.
+ */
+
+#include <math.h>
+#include <math_private.h>
+
+static const long double one = 1.0L, half=0.5L, huge = 1.0e300L;
+
+long double
+__ieee754_coshl (long double x)
+{
+ long double t,w;
+ int64_t ix;
+ double xhi;
+
+ /* High word of |x|. */
+ xhi = ldbl_high (x);
+ EXTRACT_WORDS64 (ix, xhi);
+ ix &= 0x7fffffffffffffffLL;
+
+ /* x is INF or NaN */
+ if(ix>=0x7ff0000000000000LL) return x*x;
+
+ /* |x| in [0,0.5*ln2], return 1+expm1(|x|)^2/(2*exp(|x|)) */
+ if(ix<0x3fd62e42fefa39efLL) {
+ if (ix<0x3c80000000000000LL) return one; /* cosh(tiny) = 1 */
+ t = __expm1l(fabsl(x));
+ w = one+t;
+ return one+(t*t)/(w+w);
+ }
+
+ /* |x| in [0.5*ln2,40], return (exp(|x|)+1/exp(|x|)/2; */
+ if (ix < 0x4044000000000000LL) {
+ t = __ieee754_expl(fabsl(x));
+ return half*t+half/t;
+ }
+
+ /* |x| in [40, log(maxdouble)] return half*exp(|x|) */
+ if (ix < 0x40862e42fefa39efLL) return half*__ieee754_expl(fabsl(x));
+
+ /* |x| in [log(maxdouble), overflowthresold] */
+ if (ix < 0x408633ce8fb9f87fLL) {
+ w = __ieee754_expl(half*fabsl(x));
+ t = half*w;
+ return t*w;
+ }
+
+ /* |x| > overflowthresold, cosh(x) overflow */
+ return huge*huge;
+}
+strong_alias (__ieee754_coshl, __coshl_finite)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/e_exp10l.c b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/e_exp10l.c
new file mode 100644
index 0000000000..6c3b6f5589
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/e_exp10l.c
@@ -0,0 +1,48 @@
+/* Copyright (C) 2012-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+#include <math_private.h>
+#include <float.h>
+
+static const long double log10_high = 0x2.4d763776aaap+0L;
+static const long double log10_low = 0x2.b05ba95b58ae0b4c28a38a3fb4p-48L;
+
+long double
+__ieee754_exp10l (long double arg)
+{
+ union ibm_extended_long_double u;
+ long double arg_high, arg_low;
+ long double exp_high, exp_low;
+
+ if (!isfinite (arg))
+ return __ieee754_expl (arg);
+ if (arg < LDBL_MIN_10_EXP - LDBL_DIG - 10)
+ return LDBL_MIN * LDBL_MIN;
+ else if (arg > LDBL_MAX_10_EXP + 1)
+ return LDBL_MAX * LDBL_MAX;
+ else if (fabsl (arg) < 0x1p-109L)
+ return 1.0L;
+
+ u.ld = arg;
+ arg_high = u.d[0].d;
+ arg_low = u.d[1].d;
+ exp_high = arg_high * log10_high;
+ exp_low = arg_high * log10_low + arg_low * M_LN10l;
+ return __ieee754_expl (exp_high) * __ieee754_expl (exp_low);
+}
+strong_alias (__ieee754_exp10l, __exp10l_finite)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/e_expl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/e_expl.c
new file mode 100644
index 0000000000..10df6bb7d5
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/e_expl.c
@@ -0,0 +1,256 @@
+/* Quad-precision floating point e^x.
+ Copyright (C) 1999-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Jakub Jelinek <jj@ultra.linux.cz>
+ Partly based on double-precision code
+ by Geoffrey Keating <geoffk@ozemail.com.au>
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+/* The basic design here is from
+ Abraham Ziv, "Fast Evaluation of Elementary Mathematical Functions with
+ Correctly Rounded Last Bit", ACM Trans. Math. Soft., 17 (3), September 1991,
+ pp. 410-423.
+
+ We work with number pairs where the first number is the high part and
+ the second one is the low part. Arithmetic with the high part numbers must
+ be exact, without any roundoff errors.
+
+ The input value, X, is written as
+ X = n * ln(2)_0 + arg1[t1]_0 + arg2[t2]_0 + x
+ - n * ln(2)_1 + arg1[t1]_1 + arg2[t2]_1 + xl
+
+ where:
+ - n is an integer, 16384 >= n >= -16495;
+ - ln(2)_0 is the first 93 bits of ln(2), and |ln(2)_0-ln(2)-ln(2)_1| < 2^-205
+ - t1 is an integer, 89 >= t1 >= -89
+ - t2 is an integer, 65 >= t2 >= -65
+ - |arg1[t1]-t1/256.0| < 2^-53
+ - |arg2[t2]-t2/32768.0| < 2^-53
+ - x + xl is whatever is left, |x + xl| < 2^-16 + 2^-53
+
+ Then e^x is approximated as
+
+ e^x = 2^n_1 ( 2^n_0 e^(arg1[t1]_0 + arg1[t1]_1) e^(arg2[t2]_0 + arg2[t2]_1)
+ + 2^n_0 e^(arg1[t1]_0 + arg1[t1]_1) e^(arg2[t2]_0 + arg2[t2]_1)
+ * p (x + xl + n * ln(2)_1))
+ where:
+ - p(x) is a polynomial approximating e(x)-1
+ - e^(arg1[t1]_0 + arg1[t1]_1) is obtained from a table
+ - e^(arg2[t2]_0 + arg2[t2]_1) likewise
+ - n_1 + n_0 = n, so that |n_0| < -LDBL_MIN_EXP-1.
+
+ If it happens that n_1 == 0 (this is the usual case), that multiplication
+ is omitted.
+ */
+
+#ifndef _GNU_SOURCE
+#define _GNU_SOURCE
+#endif
+#include <float.h>
+#include <ieee754.h>
+#include <math.h>
+#include <fenv.h>
+#include <inttypes.h>
+#include <math_private.h>
+
+#define _Float128 long double
+#define L(x) x ## L
+
+#include <sysdeps/ieee754/ldbl-128/t_expl.h>
+
+static const long double C[] = {
+/* Smallest integer x for which e^x overflows. */
+#define himark C[0]
+ 709.78271289338399678773454114191496482L,
+
+/* Largest integer x for which e^x underflows. */
+#define lomark C[1]
+-744.44007192138126231410729844608163411L,
+
+/* 3x2^96 */
+#define THREEp96 C[2]
+ 59421121885698253195157962752.0L,
+
+/* 3x2^103 */
+#define THREEp103 C[3]
+ 30423614405477505635920876929024.0L,
+
+/* 3x2^111 */
+#define THREEp111 C[4]
+ 7788445287802241442795744493830144.0L,
+
+/* 1/ln(2) */
+#define M_1_LN2 C[5]
+ 1.44269504088896340735992468100189204L,
+
+/* first 93 bits of ln(2) */
+#define M_LN2_0 C[6]
+ 0.693147180559945309417232121457981864L,
+
+/* ln2_0 - ln(2) */
+#define M_LN2_1 C[7]
+-1.94704509238074995158795957333327386E-31L,
+
+/* very small number */
+#define TINY C[8]
+ 1.0e-308L,
+
+/* 2^16383 */
+#define TWO1023 C[9]
+ 8.988465674311579538646525953945123668E+307L,
+
+/* 256 */
+#define TWO8 C[10]
+ 256.0L,
+
+/* 32768 */
+#define TWO15 C[11]
+ 32768.0L,
+
+/* Chebyshev polynom coefficients for (exp(x)-1)/x */
+#define P1 C[12]
+#define P2 C[13]
+#define P3 C[14]
+#define P4 C[15]
+#define P5 C[16]
+#define P6 C[17]
+ 0.5L,
+ 1.66666666666666666666666666666666683E-01L,
+ 4.16666666666666666666654902320001674E-02L,
+ 8.33333333333333333333314659767198461E-03L,
+ 1.38888888889899438565058018857254025E-03L,
+ 1.98412698413981650382436541785404286E-04L,
+};
+
+long double
+__ieee754_expl (long double x)
+{
+ long double result, x22;
+ union ibm_extended_long_double ex2_u, scale_u;
+ int unsafe;
+
+ /* Check for usual case. */
+ if (isless (x, himark) && isgreater (x, lomark))
+ {
+ int tval1, tval2, n_i, exponent2;
+ long double n, xl;
+
+ SET_RESTORE_ROUND (FE_TONEAREST);
+
+ n = __roundl (x*M_1_LN2);
+ x = x-n*M_LN2_0;
+ xl = n*M_LN2_1;
+
+ tval1 = __roundl (x*TWO8);
+ x -= __expl_table[T_EXPL_ARG1+2*tval1];
+ xl -= __expl_table[T_EXPL_ARG1+2*tval1+1];
+
+ tval2 = __roundl (x*TWO15);
+ x -= __expl_table[T_EXPL_ARG2+2*tval2];
+ xl -= __expl_table[T_EXPL_ARG2+2*tval2+1];
+
+ x = x + xl;
+
+ /* Compute ex2 = 2^n_0 e^(argtable[tval1]) e^(argtable[tval2]). */
+ ex2_u.ld = (__expl_table[T_EXPL_RES1 + tval1]
+ * __expl_table[T_EXPL_RES2 + tval2]);
+ n_i = (int)n;
+ /* 'unsafe' is 1 iff n_1 != 0. */
+ unsafe = fabsl(n_i) >= -LDBL_MIN_EXP - 1;
+ ex2_u.d[0].ieee.exponent += n_i >> unsafe;
+ /* Fortunately, there are no subnormal lowpart doubles in
+ __expl_table, only normal values and zeros.
+ But after scaling it can be subnormal. */
+ exponent2 = ex2_u.d[1].ieee.exponent + (n_i >> unsafe);
+ if (ex2_u.d[1].ieee.exponent == 0)
+ /* assert ((ex2_u.d[1].ieee.mantissa0|ex2_u.d[1].ieee.mantissa1) == 0) */;
+ else if (exponent2 > 0)
+ ex2_u.d[1].ieee.exponent = exponent2;
+ else if (exponent2 <= -54)
+ {
+ ex2_u.d[1].ieee.exponent = 0;
+ ex2_u.d[1].ieee.mantissa0 = 0;
+ ex2_u.d[1].ieee.mantissa1 = 0;
+ }
+ else
+ {
+ static const double
+ two54 = 1.80143985094819840000e+16, /* 4350000000000000 */
+ twom54 = 5.55111512312578270212e-17; /* 3C90000000000000 */
+ ex2_u.d[1].d *= two54;
+ ex2_u.d[1].ieee.exponent += n_i >> unsafe;
+ ex2_u.d[1].d *= twom54;
+ }
+
+ /* Compute scale = 2^n_1. */
+ scale_u.ld = 1.0L;
+ scale_u.d[0].ieee.exponent += n_i - (n_i >> unsafe);
+
+ /* Approximate e^x2 - 1, using a seventh-degree polynomial,
+ with maximum error in [-2^-16-2^-53,2^-16+2^-53]
+ less than 4.8e-39. */
+ x22 = x + x*x*(P1+x*(P2+x*(P3+x*(P4+x*(P5+x*P6)))));
+
+ /* Now we can test whether the result is ultimate or if we are unsure.
+ In the later case we should probably call a mpn based routine to give
+ the ultimate result.
+ Empirically, this routine is already ultimate in about 99.9986% of
+ cases, the test below for the round to nearest case will be false
+ in ~ 99.9963% of cases.
+ Without proc2 routine maximum error which has been seen is
+ 0.5000262 ulp.
+
+ union ieee854_long_double ex3_u;
+
+ #ifdef FE_TONEAREST
+ fesetround (FE_TONEAREST);
+ #endif
+ ex3_u.d = (result - ex2_u.d) - x22 * ex2_u.d;
+ ex2_u.d = result;
+ ex3_u.ieee.exponent += LDBL_MANT_DIG + 15 + IEEE854_LONG_DOUBLE_BIAS
+ - ex2_u.ieee.exponent;
+ n_i = abs (ex3_u.d);
+ n_i = (n_i + 1) / 2;
+ fesetenv (&oldenv);
+ #ifdef FE_TONEAREST
+ if (fegetround () == FE_TONEAREST)
+ n_i -= 0x4000;
+ #endif
+ if (!n_i) {
+ return __ieee754_expl_proc2 (origx);
+ }
+ */
+ }
+ /* Exceptional cases: */
+ else if (isless (x, himark))
+ {
+ if (isinf (x))
+ /* e^-inf == 0, with no error. */
+ return 0;
+ else
+ /* Underflow */
+ return TINY * TINY;
+ }
+ else
+ /* Return x, if x is a NaN or Inf; or overflow, otherwise. */
+ return TWO1023*x;
+
+ result = x22 * ex2_u.ld + ex2_u.ld;
+ if (!unsafe)
+ return result;
+ return result * scale_u.ld;
+}
+strong_alias (__ieee754_expl, __expl_finite)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/e_fmodl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/e_fmodl.c
new file mode 100644
index 0000000000..5284fd0fd5
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/e_fmodl.c
@@ -0,0 +1,149 @@
+/* e_fmodl.c -- long double version of e_fmod.c.
+ * Conversion to IEEE quad long double by Jakub Jelinek, jj@ultra.linux.cz.
+ */
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+/*
+ * __ieee754_fmodl(x,y)
+ * Return x mod y in exact arithmetic
+ * Method: shift and subtract
+ */
+
+#include <math.h>
+#include <math_private.h>
+#include <ieee754.h>
+
+static const long double one = 1.0, Zero[] = {0.0, -0.0,};
+
+long double
+__ieee754_fmodl (long double x, long double y)
+{
+ int64_t hx, hy, hz, sx, sy;
+ uint64_t lx, ly, lz;
+ int n, ix, iy;
+ double xhi, xlo, yhi, ylo;
+
+ ldbl_unpack (x, &xhi, &xlo);
+ EXTRACT_WORDS64 (hx, xhi);
+ EXTRACT_WORDS64 (lx, xlo);
+ ldbl_unpack (y, &yhi, &ylo);
+ EXTRACT_WORDS64 (hy, yhi);
+ EXTRACT_WORDS64 (ly, ylo);
+ sx = hx&0x8000000000000000ULL; /* sign of x */
+ hx ^= sx; /* |x| */
+ sy = hy&0x8000000000000000ULL; /* sign of y */
+ hy ^= sy; /* |y| */
+
+ /* purge off exception values */
+ if(__builtin_expect(hy==0 ||
+ (hx>=0x7ff0000000000000LL)|| /* y=0,or x not finite */
+ (hy>0x7ff0000000000000LL),0)) /* or y is NaN */
+ return (x*y)/(x*y);
+ if (__glibc_unlikely (hx <= hy))
+ {
+ /* If |x| < |y| return x. */
+ if (hx < hy)
+ return x;
+ /* At this point the absolute value of the high doubles of
+ x and y must be equal. */
+ if ((lx & 0x7fffffffffffffffLL) == 0
+ && (ly & 0x7fffffffffffffffLL) == 0)
+ /* Both low parts are zero. The result should be an
+ appropriately signed zero, but the subsequent logic
+ could treat them as unequal, depending on the signs
+ of the low parts. */
+ return Zero[(uint64_t) sx >> 63];
+ /* If the low double of y is the same sign as the high
+ double of y (ie. the low double increases |y|)... */
+ if (((ly ^ sy) & 0x8000000000000000LL) == 0
+ /* ... then a different sign low double to high double
+ for x or same sign but lower magnitude... */
+ && (int64_t) (lx ^ sx) < (int64_t) (ly ^ sy))
+ /* ... means |x| < |y|. */
+ return x;
+ /* If the low double of x differs in sign to the high
+ double of x (ie. the low double decreases |x|)... */
+ if (((lx ^ sx) & 0x8000000000000000LL) != 0
+ /* ... then a different sign low double to high double
+ for y with lower magnitude (we've already caught
+ the same sign for y case above)... */
+ && (int64_t) (lx ^ sx) > (int64_t) (ly ^ sy))
+ /* ... means |x| < |y|. */
+ return x;
+ /* If |x| == |y| return x*0. */
+ if ((lx ^ sx) == (ly ^ sy))
+ return Zero[(uint64_t) sx >> 63];
+ }
+
+ /* Make the IBM extended format 105 bit mantissa look like the ieee854 112
+ bit mantissa so the following operations will give the correct
+ result. */
+ ldbl_extract_mantissa(&hx, &lx, &ix, x);
+ ldbl_extract_mantissa(&hy, &ly, &iy, y);
+
+ if (__glibc_unlikely (ix == -IEEE754_DOUBLE_BIAS))
+ {
+ /* subnormal x, shift x to normal. */
+ while ((hx & (1LL << 48)) == 0)
+ {
+ hx = (hx << 1) | (lx >> 63);
+ lx = lx << 1;
+ ix -= 1;
+ }
+ }
+
+ if (__glibc_unlikely (iy == -IEEE754_DOUBLE_BIAS))
+ {
+ /* subnormal y, shift y to normal. */
+ while ((hy & (1LL << 48)) == 0)
+ {
+ hy = (hy << 1) | (ly >> 63);
+ ly = ly << 1;
+ iy -= 1;
+ }
+ }
+
+ /* fix point fmod */
+ n = ix - iy;
+ while(n--) {
+ hz=hx-hy;lz=lx-ly; if(lx<ly) hz -= 1;
+ if(hz<0){hx = hx+hx+(lx>>63); lx = lx+lx;}
+ else {
+ if((hz|lz)==0) /* return sign(x)*0 */
+ return Zero[(u_int64_t)sx>>63];
+ hx = hz+hz+(lz>>63); lx = lz+lz;
+ }
+ }
+ hz=hx-hy;lz=lx-ly; if(lx<ly) hz -= 1;
+ if(hz>=0) {hx=hz;lx=lz;}
+
+ /* convert back to floating value and restore the sign */
+ if((hx|lx)==0) /* return sign(x)*0 */
+ return Zero[(u_int64_t)sx>>63];
+ while(hx<0x0001000000000000LL) { /* normalize x */
+ hx = hx+hx+(lx>>63); lx = lx+lx;
+ iy -= 1;
+ }
+ if(__builtin_expect(iy>= -1022,0)) { /* normalize output */
+ x = ldbl_insert_mantissa((sx>>63), iy, hx, lx);
+ } else { /* subnormal output */
+ n = -1022 - iy;
+ /* We know 1 <= N <= 52, and that there are no nonzero
+ bits in places below 2^-1074. */
+ lx = (lx >> n) | ((u_int64_t) hx << (64 - n));
+ hx >>= n;
+ x = ldbl_insert_mantissa((sx>>63), -1023, hx, lx);
+ x *= one; /* create necessary signal */
+ }
+ return x; /* exact output */
+}
+strong_alias (__ieee754_fmodl, __fmodl_finite)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/e_gammal_r.c b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/e_gammal_r.c
new file mode 100644
index 0000000000..81dbe42c79
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/e_gammal_r.c
@@ -0,0 +1,218 @@
+/* Implementation of gamma function according to ISO C.
+ Copyright (C) 1997-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997 and
+ Jakub Jelinek <jj@ultra.linux.cz, 1999.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+#include <math_private.h>
+#include <float.h>
+
+/* Coefficients B_2k / 2k(2k-1) of x^-(2k-1) inside exp in Stirling's
+ approximation to gamma function. */
+
+static const long double gamma_coeff[] =
+ {
+ 0x1.555555555555555555555555558p-4L,
+ -0xb.60b60b60b60b60b60b60b60b6p-12L,
+ 0x3.4034034034034034034034034p-12L,
+ -0x2.7027027027027027027027027p-12L,
+ 0x3.72a3c5631fe46ae1d4e700dca9p-12L,
+ -0x7.daac36664f1f207daac36664f2p-12L,
+ 0x1.a41a41a41a41a41a41a41a41a4p-8L,
+ -0x7.90a1b2c3d4e5f708192a3b4c5ep-8L,
+ 0x2.dfd2c703c0cfff430edfd2c704p-4L,
+ -0x1.6476701181f39edbdb9ce625988p+0L,
+ 0xd.672219167002d3a7a9c886459cp+0L,
+ -0x9.cd9292e6660d55b3f712eb9e08p+4L,
+ 0x8.911a740da740da740da740da74p+8L,
+ };
+
+#define NCOEFF (sizeof (gamma_coeff) / sizeof (gamma_coeff[0]))
+
+/* Return gamma (X), for positive X less than 191, in the form R *
+ 2^(*EXP2_ADJ), where R is the return value and *EXP2_ADJ is set to
+ avoid overflow or underflow in intermediate calculations. */
+
+static long double
+gammal_positive (long double x, int *exp2_adj)
+{
+ int local_signgam;
+ if (x < 0.5L)
+ {
+ *exp2_adj = 0;
+ return __ieee754_expl (__ieee754_lgammal_r (x + 1, &local_signgam)) / x;
+ }
+ else if (x <= 1.5L)
+ {
+ *exp2_adj = 0;
+ return __ieee754_expl (__ieee754_lgammal_r (x, &local_signgam));
+ }
+ else if (x < 11.5L)
+ {
+ /* Adjust into the range for using exp (lgamma). */
+ *exp2_adj = 0;
+ long double n = __ceill (x - 1.5L);
+ long double x_adj = x - n;
+ long double eps;
+ long double prod = __gamma_productl (x_adj, 0, n, &eps);
+ return (__ieee754_expl (__ieee754_lgammal_r (x_adj, &local_signgam))
+ * prod * (1.0L + eps));
+ }
+ else
+ {
+ long double eps = 0;
+ long double x_eps = 0;
+ long double x_adj = x;
+ long double prod = 1;
+ if (x < 23.0L)
+ {
+ /* Adjust into the range for applying Stirling's
+ approximation. */
+ long double n = __ceill (23.0L - x);
+ x_adj = x + n;
+ x_eps = (x - (x_adj - n));
+ prod = __gamma_productl (x_adj - n, x_eps, n, &eps);
+ }
+ /* The result is now gamma (X_ADJ + X_EPS) / (PROD * (1 + EPS)).
+ Compute gamma (X_ADJ + X_EPS) using Stirling's approximation,
+ starting by computing pow (X_ADJ, X_ADJ) with a power of 2
+ factored out. */
+ long double exp_adj = -eps;
+ long double x_adj_int = __roundl (x_adj);
+ long double x_adj_frac = x_adj - x_adj_int;
+ int x_adj_log2;
+ long double x_adj_mant = __frexpl (x_adj, &x_adj_log2);
+ if (x_adj_mant < M_SQRT1_2l)
+ {
+ x_adj_log2--;
+ x_adj_mant *= 2.0L;
+ }
+ *exp2_adj = x_adj_log2 * (int) x_adj_int;
+ long double ret = (__ieee754_powl (x_adj_mant, x_adj)
+ * __ieee754_exp2l (x_adj_log2 * x_adj_frac)
+ * __ieee754_expl (-x_adj)
+ * __ieee754_sqrtl (2 * M_PIl / x_adj)
+ / prod);
+ exp_adj += x_eps * __ieee754_logl (x_adj);
+ long double bsum = gamma_coeff[NCOEFF - 1];
+ long double x_adj2 = x_adj * x_adj;
+ for (size_t i = 1; i <= NCOEFF - 1; i++)
+ bsum = bsum / x_adj2 + gamma_coeff[NCOEFF - 1 - i];
+ exp_adj += bsum / x_adj;
+ return ret + ret * __expm1l (exp_adj);
+ }
+}
+
+long double
+__ieee754_gammal_r (long double x, int *signgamp)
+{
+ int64_t hx;
+ double xhi;
+ long double ret;
+
+ xhi = ldbl_high (x);
+ EXTRACT_WORDS64 (hx, xhi);
+
+ if ((hx & 0x7fffffffffffffffLL) == 0)
+ {
+ /* Return value for x == 0 is Inf with divide by zero exception. */
+ *signgamp = 0;
+ return 1.0 / x;
+ }
+ if (hx < 0 && (u_int64_t) hx < 0xfff0000000000000ULL && __rintl (x) == x)
+ {
+ /* Return value for integer x < 0 is NaN with invalid exception. */
+ *signgamp = 0;
+ return (x - x) / (x - x);
+ }
+ if (hx == 0xfff0000000000000ULL)
+ {
+ /* x == -Inf. According to ISO this is NaN. */
+ *signgamp = 0;
+ return x - x;
+ }
+ if ((hx & 0x7ff0000000000000ULL) == 0x7ff0000000000000ULL)
+ {
+ /* Positive infinity (return positive infinity) or NaN (return
+ NaN). */
+ *signgamp = 0;
+ return x + x;
+ }
+
+ if (x >= 172.0L)
+ {
+ /* Overflow. */
+ *signgamp = 0;
+ return LDBL_MAX * LDBL_MAX;
+ }
+ else
+ {
+ SET_RESTORE_ROUNDL (FE_TONEAREST);
+ if (x > 0.0L)
+ {
+ *signgamp = 0;
+ int exp2_adj;
+ ret = gammal_positive (x, &exp2_adj);
+ ret = __scalbnl (ret, exp2_adj);
+ }
+ else if (x >= -0x1p-110L)
+ {
+ *signgamp = 0;
+ ret = 1.0L / x;
+ }
+ else
+ {
+ long double tx = __truncl (x);
+ *signgamp = (tx == 2.0L * __truncl (tx / 2.0L)) ? -1 : 1;
+ if (x <= -191.0L)
+ /* Underflow. */
+ ret = LDBL_MIN * LDBL_MIN;
+ else
+ {
+ long double frac = tx - x;
+ if (frac > 0.5L)
+ frac = 1.0L - frac;
+ long double sinpix = (frac <= 0.25L
+ ? __sinl (M_PIl * frac)
+ : __cosl (M_PIl * (0.5L - frac)));
+ int exp2_adj;
+ ret = M_PIl / (-x * sinpix
+ * gammal_positive (-x, &exp2_adj));
+ ret = __scalbnl (ret, -exp2_adj);
+ math_check_force_underflow_nonneg (ret);
+ }
+ }
+ }
+ if (isinf (ret) && x != 0)
+ {
+ if (*signgamp < 0)
+ return -(-__copysignl (LDBL_MAX, ret) * LDBL_MAX);
+ else
+ return __copysignl (LDBL_MAX, ret) * LDBL_MAX;
+ }
+ else if (ret == 0)
+ {
+ if (*signgamp < 0)
+ return -(-__copysignl (LDBL_MIN, ret) * LDBL_MIN);
+ else
+ return __copysignl (LDBL_MIN, ret) * LDBL_MIN;
+ }
+ else
+ return ret;
+}
+strong_alias (__ieee754_gammal_r, __gammal_r_finite)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/e_hypotl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/e_hypotl.c
new file mode 100644
index 0000000000..de5a66ab05
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/e_hypotl.c
@@ -0,0 +1,138 @@
+/* @(#)e_hypotl.c 5.1 93/09/24 */
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+/* __ieee754_hypotl(x,y)
+ *
+ * Method :
+ * If (assume round-to-nearest) z=x*x+y*y
+ * has error less than sqrtl(2)/2 ulp, than
+ * sqrtl(z) has error less than 1 ulp (exercise).
+ *
+ * So, compute sqrtl(x*x+y*y) with some care as
+ * follows to get the error below 1 ulp:
+ *
+ * Assume x>y>0;
+ * (if possible, set rounding to round-to-nearest)
+ * 1. if x > 2y use
+ * x1*x1+(y*y+(x2*(x+x1))) for x*x+y*y
+ * where x1 = x with lower 53 bits cleared, x2 = x-x1; else
+ * 2. if x <= 2y use
+ * t1*y1+((x-y)*(x-y)+(t1*y2+t2*y))
+ * where t1 = 2x with lower 53 bits cleared, t2 = 2x-t1,
+ * y1= y with lower 53 bits chopped, y2 = y-y1.
+ *
+ * NOTE: scaling may be necessary if some argument is too
+ * large or too tiny
+ *
+ * Special cases:
+ * hypotl(x,y) is INF if x or y is +INF or -INF; else
+ * hypotl(x,y) is NAN if x or y is NAN.
+ *
+ * Accuracy:
+ * hypotl(x,y) returns sqrtl(x^2+y^2) with error less
+ * than 1 ulps (units in the last place)
+ */
+
+#include <math.h>
+#include <math_private.h>
+
+long double
+__ieee754_hypotl(long double x, long double y)
+{
+ long double a,b,a1,a2,b1,b2,w,kld;
+ int64_t j,k,ha,hb;
+ double xhi, yhi, hi, lo;
+
+ xhi = ldbl_high (x);
+ EXTRACT_WORDS64 (ha, xhi);
+ yhi = ldbl_high (y);
+ EXTRACT_WORDS64 (hb, yhi);
+ ha &= 0x7fffffffffffffffLL;
+ hb &= 0x7fffffffffffffffLL;
+ if(hb > ha) {a=y;b=x;j=ha; ha=hb;hb=j;} else {a=x;b=y;}
+ a = fabsl(a); /* a <- |a| */
+ b = fabsl(b); /* b <- |b| */
+ if((ha-hb)>0x0780000000000000LL) {return a+b;} /* x/y > 2**120 */
+ k=0;
+ kld = 1.0L;
+ if(ha > 0x5f30000000000000LL) { /* a>2**500 */
+ if(ha >= 0x7ff0000000000000LL) { /* Inf or NaN */
+ w = a+b; /* for sNaN */
+ if (issignaling (a) || issignaling (b))
+ return w;
+ if(ha == 0x7ff0000000000000LL)
+ w = a;
+ if(hb == 0x7ff0000000000000LL)
+ w = b;
+ return w;
+ }
+ /* scale a and b by 2**-600 */
+ a *= 0x1p-600L;
+ b *= 0x1p-600L;
+ k = 600;
+ kld = 0x1p+600L;
+ }
+ else if(hb < 0x23d0000000000000LL) { /* b < 2**-450 */
+ if(hb <= 0x000fffffffffffffLL) { /* subnormal b or 0 */
+ if(hb==0) return a;
+ a *= 0x1p+1022L;
+ b *= 0x1p+1022L;
+ k = -1022;
+ kld = 0x1p-1022L;
+ } else { /* scale a and b by 2^600 */
+ a *= 0x1p+600L;
+ b *= 0x1p+600L;
+ k = -600;
+ kld = 0x1p-600L;
+ }
+ }
+ /* medium size a and b */
+ w = a-b;
+ if (w>b) {
+ ldbl_unpack (a, &hi, &lo);
+ a1 = hi;
+ a2 = lo;
+ /* a*a + b*b
+ = (a1+a2)*a + b*b
+ = a1*a + a2*a + b*b
+ = a1*(a1+a2) + a2*a + b*b
+ = a1*a1 + a1*a2 + a2*a + b*b
+ = a1*a1 + a2*(a+a1) + b*b */
+ w = __ieee754_sqrtl(a1*a1-(b*(-b)-a2*(a+a1)));
+ } else {
+ a = a+a;
+ ldbl_unpack (b, &hi, &lo);
+ b1 = hi;
+ b2 = lo;
+ ldbl_unpack (a, &hi, &lo);
+ a1 = hi;
+ a2 = lo;
+ /* a*a + b*b
+ = a*a + (a-b)*(a-b) - (a-b)*(a-b) + b*b
+ = a*a + w*w - (a*a - 2*a*b + b*b) + b*b
+ = w*w + 2*a*b
+ = w*w + (a1+a2)*b
+ = w*w + a1*b + a2*b
+ = w*w + a1*(b1+b2) + a2*b
+ = w*w + a1*b1 + a1*b2 + a2*b */
+ w = __ieee754_sqrtl(a1*b1-(w*(-w)-(a1*b2+a2*b)));
+ }
+ if(k!=0)
+ {
+ w *= kld;
+ math_check_force_underflow_nonneg (w);
+ return w;
+ }
+ else
+ return w;
+}
+strong_alias (__ieee754_hypotl, __hypotl_finite)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/e_ilogbl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/e_ilogbl.c
new file mode 100644
index 0000000000..4088238f30
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/e_ilogbl.c
@@ -0,0 +1,70 @@
+/* s_ilogbl.c -- long double version of s_ilogb.c.
+ * Conversion to IEEE quad long double by Jakub Jelinek, jj@ultra.linux.cz.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: $";
+#endif
+
+/* ilogbl(long double x)
+ * return the binary exponent of non-zero x
+ * ilogbl(0) = FP_ILOGB0
+ * ilogbl(NaN) = FP_ILOGBNAN (no signal is raised)
+ * ilogbl(+-Inf) = INT_MAX (no signal is raised)
+ */
+
+#include <limits.h>
+#include <math.h>
+#include <math_private.h>
+#include <math_ldbl_opt.h>
+
+int __ieee754_ilogbl(long double x)
+{
+ int64_t hx, hxs;
+ int ix;
+ double xhi, xlo;
+
+ ldbl_unpack (x, &xhi, &xlo);
+ EXTRACT_WORDS64 (hx, xhi);
+ hxs = hx;
+ hx &= 0x7fffffffffffffffLL;
+ if(hx <= 0x0010000000000000LL) {
+ if(hx==0)
+ return FP_ILOGB0; /* ilogbl(0) = FP_ILOGB0 */
+ else /* subnormal x */
+ for (ix = -1022, hx<<=11; hx>0; hx<<=1) ix -=1;
+ return ix;
+ }
+ else if (hx < 0x7ff0000000000000LL)
+ {
+ int hexp = (hx >> 52) - 0x3ff;
+ /* If the high part is a power of 2, and the low part is
+ nonzero with the opposite sign, the low part affects
+ the exponent. */
+ if ((hx & 0x000fffffffffffffLL) == 0)
+ {
+ int64_t lx;
+ EXTRACT_WORDS64 (lx, xlo);
+ if ((hxs ^ lx) < 0 && (lx & 0x7fffffffffffffffLL) != 0)
+ hexp--;
+ }
+ return hexp;
+ }
+ else if (FP_ILOGBNAN != INT_MAX) {
+ /* ISO C99 requires ilogbl(+-Inf) == INT_MAX. */
+ if (hx==0x7ff0000000000000LL)
+ return INT_MAX;
+ }
+ return FP_ILOGBNAN;
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/e_j0l.c b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/e_j0l.c
new file mode 100644
index 0000000000..00bce29284
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/e_j0l.c
@@ -0,0 +1,5 @@
+/* Looks like we can use ieee854 e_j0l.c as is for IBM extended format. */
+#define _Float128 long double
+#define L(x) x ## L
+#include <sysdeps/ieee754/ldbl-128/e_j0l.c>
+
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/e_j1l.c b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/e_j1l.c
new file mode 100644
index 0000000000..da9fd9eeca
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/e_j1l.c
@@ -0,0 +1,4 @@
+/* Looks like we can use ieee854 e_j1l.c as is for IBM extended format. */
+#define _Float128 long double
+#define L(x) x ## L
+#include <sysdeps/ieee754/ldbl-128/e_j1l.c>
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/e_jnl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/e_jnl.c
new file mode 100644
index 0000000000..4a8ccb044e
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/e_jnl.c
@@ -0,0 +1,421 @@
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+/* Modifications for 128-bit long double are
+ Copyright (C) 2001 Stephen L. Moshier <moshier@na-net.ornl.gov>
+ and are incorporated herein by permission of the author. The author
+ reserves the right to distribute this material elsewhere under different
+ copying permissions. These modifications are distributed here under
+ the following terms:
+
+ This 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 2.1 of the License, or (at your option) any later version.
+
+ This 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 this library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+/*
+ * __ieee754_jn(n, x), __ieee754_yn(n, x)
+ * floating point Bessel's function of the 1st and 2nd kind
+ * of order n
+ *
+ * Special cases:
+ * y0(0)=y1(0)=yn(n,0) = -inf with division by zero signal;
+ * y0(-ve)=y1(-ve)=yn(n,-ve) are NaN with invalid signal.
+ * Note 2. About jn(n,x), yn(n,x)
+ * For n=0, j0(x) is called,
+ * for n=1, j1(x) is called,
+ * for n<x, forward recursion us used starting
+ * from values of j0(x) and j1(x).
+ * for n>x, a continued fraction approximation to
+ * j(n,x)/j(n-1,x) is evaluated and then backward
+ * recursion is used starting from a supposed value
+ * for j(n,x). The resulting value of j(0,x) is
+ * compared with the actual value to correct the
+ * supposed value of j(n,x).
+ *
+ * yn(n,x) is similar in all respects, except
+ * that forward recursion is used for all
+ * values of n>1.
+ *
+ */
+
+#include <errno.h>
+#include <float.h>
+#include <math.h>
+#include <math_private.h>
+
+static const long double
+ invsqrtpi = 5.6418958354775628694807945156077258584405E-1L,
+ two = 2.0e0L,
+ one = 1.0e0L,
+ zero = 0.0L;
+
+
+long double
+__ieee754_jnl (int n, long double x)
+{
+ uint32_t se, lx;
+ int32_t i, ix, sgn;
+ long double a, b, temp, di, ret;
+ long double z, w;
+ double xhi;
+
+
+ /* J(-n,x) = (-1)^n * J(n, x), J(n, -x) = (-1)^n * J(n, x)
+ * Thus, J(-n,x) = J(n,-x)
+ */
+
+ xhi = ldbl_high (x);
+ EXTRACT_WORDS (se, lx, xhi);
+ ix = se & 0x7fffffff;
+
+ /* if J(n,NaN) is NaN */
+ if (ix >= 0x7ff00000)
+ {
+ if (((ix - 0x7ff00000) | lx) != 0)
+ return x + x;
+ }
+
+ if (n < 0)
+ {
+ n = -n;
+ x = -x;
+ se ^= 0x80000000;
+ }
+ if (n == 0)
+ return (__ieee754_j0l (x));
+ if (n == 1)
+ return (__ieee754_j1l (x));
+ sgn = (n & 1) & (se >> 31); /* even n -- 0, odd n -- sign(x) */
+ x = fabsl (x);
+
+ {
+ SET_RESTORE_ROUNDL (FE_TONEAREST);
+ if (x == 0.0L || ix >= 0x7ff00000) /* if x is 0 or inf */
+ return sgn == 1 ? -zero : zero;
+ else if ((long double) n <= x)
+ {
+ /* Safe to use J(n+1,x)=2n/x *J(n,x)-J(n-1,x) */
+ if (ix >= 0x52d00000)
+ { /* x > 2**302 */
+
+ /* ??? Could use an expansion for large x here. */
+
+ /* (x >> n**2)
+ * Jn(x) = cos(x-(2n+1)*pi/4)*sqrt(2/x*pi)
+ * Yn(x) = sin(x-(2n+1)*pi/4)*sqrt(2/x*pi)
+ * Let s=sin(x), c=cos(x),
+ * xn=x-(2n+1)*pi/4, sqt2 = sqrt(2),then
+ *
+ * n sin(xn)*sqt2 cos(xn)*sqt2
+ * ----------------------------------
+ * 0 s-c c+s
+ * 1 -s-c -c+s
+ * 2 -s+c -c-s
+ * 3 s+c c-s
+ */
+ long double s;
+ long double c;
+ __sincosl (x, &s, &c);
+ switch (n & 3)
+ {
+ case 0:
+ temp = c + s;
+ break;
+ case 1:
+ temp = -c + s;
+ break;
+ case 2:
+ temp = -c - s;
+ break;
+ case 3:
+ temp = c - s;
+ break;
+ }
+ b = invsqrtpi * temp / __ieee754_sqrtl (x);
+ }
+ else
+ {
+ a = __ieee754_j0l (x);
+ b = __ieee754_j1l (x);
+ for (i = 1; i < n; i++)
+ {
+ temp = b;
+ b = b * ((long double) (i + i) / x) - a; /* avoid underflow */
+ a = temp;
+ }
+ }
+ }
+ else
+ {
+ if (ix < 0x3e100000)
+ { /* x < 2**-29 */
+ /* x is tiny, return the first Taylor expansion of J(n,x)
+ * J(n,x) = 1/n!*(x/2)^n - ...
+ */
+ if (n >= 33) /* underflow, result < 10^-300 */
+ b = zero;
+ else
+ {
+ temp = x * 0.5;
+ b = temp;
+ for (a = one, i = 2; i <= n; i++)
+ {
+ a *= (long double) i; /* a = n! */
+ b *= temp; /* b = (x/2)^n */
+ }
+ b = b / a;
+ }
+ }
+ else
+ {
+ /* use backward recurrence */
+ /* x x^2 x^2
+ * J(n,x)/J(n-1,x) = ---- ------ ------ .....
+ * 2n - 2(n+1) - 2(n+2)
+ *
+ * 1 1 1
+ * (for large x) = ---- ------ ------ .....
+ * 2n 2(n+1) 2(n+2)
+ * -- - ------ - ------ -
+ * x x x
+ *
+ * Let w = 2n/x and h=2/x, then the above quotient
+ * is equal to the continued fraction:
+ * 1
+ * = -----------------------
+ * 1
+ * w - -----------------
+ * 1
+ * w+h - ---------
+ * w+2h - ...
+ *
+ * To determine how many terms needed, let
+ * Q(0) = w, Q(1) = w(w+h) - 1,
+ * Q(k) = (w+k*h)*Q(k-1) - Q(k-2),
+ * When Q(k) > 1e4 good for single
+ * When Q(k) > 1e9 good for double
+ * When Q(k) > 1e17 good for quadruple
+ */
+ /* determine k */
+ long double t, v;
+ long double q0, q1, h, tmp;
+ int32_t k, m;
+ w = (n + n) / (long double) x;
+ h = 2.0L / (long double) x;
+ q0 = w;
+ z = w + h;
+ q1 = w * z - 1.0L;
+ k = 1;
+ while (q1 < 1.0e17L)
+ {
+ k += 1;
+ z += h;
+ tmp = z * q1 - q0;
+ q0 = q1;
+ q1 = tmp;
+ }
+ m = n + n;
+ for (t = zero, i = 2 * (n + k); i >= m; i -= 2)
+ t = one / (i / x - t);
+ a = t;
+ b = one;
+ /* estimate log((2/x)^n*n!) = n*log(2/x)+n*ln(n)
+ * Hence, if n*(log(2n/x)) > ...
+ * single 8.8722839355e+01
+ * double 7.09782712893383973096e+02
+ * long double 1.1356523406294143949491931077970765006170e+04
+ * then recurrent value may overflow and the result is
+ * likely underflow to zero
+ */
+ tmp = n;
+ v = two / x;
+ tmp = tmp * __ieee754_logl (fabsl (v * tmp));
+
+ if (tmp < 1.1356523406294143949491931077970765006170e+04L)
+ {
+ for (i = n - 1, di = (long double) (i + i); i > 0; i--)
+ {
+ temp = b;
+ b *= di;
+ b = b / x - a;
+ a = temp;
+ di -= two;
+ }
+ }
+ else
+ {
+ for (i = n - 1, di = (long double) (i + i); i > 0; i--)
+ {
+ temp = b;
+ b *= di;
+ b = b / x - a;
+ a = temp;
+ di -= two;
+ /* scale b to avoid spurious overflow */
+ if (b > 1e100L)
+ {
+ a /= b;
+ t /= b;
+ b = one;
+ }
+ }
+ }
+ /* j0() and j1() suffer enormous loss of precision at and
+ * near zero; however, we know that their zero points never
+ * coincide, so just choose the one further away from zero.
+ */
+ z = __ieee754_j0l (x);
+ w = __ieee754_j1l (x);
+ if (fabsl (z) >= fabsl (w))
+ b = (t * z / b);
+ else
+ b = (t * w / a);
+ }
+ }
+ if (sgn == 1)
+ ret = -b;
+ else
+ ret = b;
+ }
+ if (ret == 0)
+ {
+ ret = __copysignl (LDBL_MIN, ret) * LDBL_MIN;
+ __set_errno (ERANGE);
+ }
+ else
+ math_check_force_underflow (ret);
+ return ret;
+}
+strong_alias (__ieee754_jnl, __jnl_finite)
+
+long double
+__ieee754_ynl (int n, long double x)
+{
+ uint32_t se, lx;
+ int32_t i, ix;
+ int32_t sign;
+ long double a, b, temp, ret;
+ double xhi;
+
+ xhi = ldbl_high (x);
+ EXTRACT_WORDS (se, lx, xhi);
+ ix = se & 0x7fffffff;
+
+ /* if Y(n,NaN) is NaN */
+ if (ix >= 0x7ff00000)
+ {
+ if (((ix - 0x7ff00000) | lx) != 0)
+ return x + x;
+ }
+ if (x <= 0.0L)
+ {
+ if (x == 0.0L)
+ return ((n < 0 && (n & 1) != 0) ? 1.0L : -1.0L) / 0.0L;
+ if (se & 0x80000000)
+ return zero / (zero * x);
+ }
+ sign = 1;
+ if (n < 0)
+ {
+ n = -n;
+ sign = 1 - ((n & 1) << 1);
+ }
+ if (n == 0)
+ return (__ieee754_y0l (x));
+ {
+ SET_RESTORE_ROUNDL (FE_TONEAREST);
+ if (n == 1)
+ {
+ ret = sign * __ieee754_y1l (x);
+ goto out;
+ }
+ if (ix >= 0x7ff00000)
+ return zero;
+ if (ix >= 0x52D00000)
+ { /* x > 2**302 */
+
+ /* ??? See comment above on the possible futility of this. */
+
+ /* (x >> n**2)
+ * Jn(x) = cos(x-(2n+1)*pi/4)*sqrt(2/x*pi)
+ * Yn(x) = sin(x-(2n+1)*pi/4)*sqrt(2/x*pi)
+ * Let s=sin(x), c=cos(x),
+ * xn=x-(2n+1)*pi/4, sqt2 = sqrt(2),then
+ *
+ * n sin(xn)*sqt2 cos(xn)*sqt2
+ * ----------------------------------
+ * 0 s-c c+s
+ * 1 -s-c -c+s
+ * 2 -s+c -c-s
+ * 3 s+c c-s
+ */
+ long double s;
+ long double c;
+ __sincosl (x, &s, &c);
+ switch (n & 3)
+ {
+ case 0:
+ temp = s - c;
+ break;
+ case 1:
+ temp = -s - c;
+ break;
+ case 2:
+ temp = -s + c;
+ break;
+ case 3:
+ temp = s + c;
+ break;
+ }
+ b = invsqrtpi * temp / __ieee754_sqrtl (x);
+ }
+ else
+ {
+ a = __ieee754_y0l (x);
+ b = __ieee754_y1l (x);
+ /* quit if b is -inf */
+ xhi = ldbl_high (b);
+ GET_HIGH_WORD (se, xhi);
+ se &= 0xfff00000;
+ for (i = 1; i < n && se != 0xfff00000; i++)
+ {
+ temp = b;
+ b = ((long double) (i + i) / x) * b - a;
+ xhi = ldbl_high (b);
+ GET_HIGH_WORD (se, xhi);
+ se &= 0xfff00000;
+ a = temp;
+ }
+ }
+ /* If B is +-Inf, set up errno accordingly. */
+ if (! isfinite (b))
+ __set_errno (ERANGE);
+ if (sign > 0)
+ ret = b;
+ else
+ ret = -b;
+ }
+ out:
+ if (isinf (ret))
+ ret = __copysignl (LDBL_MAX, ret) * LDBL_MAX;
+ return ret;
+}
+strong_alias (__ieee754_ynl, __ynl_finite)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/e_lgammal_r.c b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/e_lgammal_r.c
new file mode 100644
index 0000000000..8ac8283bd8
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/e_lgammal_r.c
@@ -0,0 +1,5 @@
+/* Looks like we can use ieee854 e_lgammal_r.c as is for IBM extended format. */
+#define _Float128 long double
+#define L(x) x ## L
+#include <sysdeps/ieee754/ldbl-128/e_lgammal_r.c>
+
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/e_log10l.c b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/e_log10l.c
new file mode 100644
index 0000000000..1fbfa48e13
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/e_log10l.c
@@ -0,0 +1,261 @@
+/* log10l.c
+ *
+ * Common logarithm, 128-bit long double precision
+ *
+ *
+ *
+ * SYNOPSIS:
+ *
+ * long double x, y, log10l();
+ *
+ * y = log10l( x );
+ *
+ *
+ *
+ * DESCRIPTION:
+ *
+ * Returns the base 10 logarithm of x.
+ *
+ * The argument is separated into its exponent and fractional
+ * parts. If the exponent is between -1 and +1, the logarithm
+ * of the fraction is approximated by
+ *
+ * log(1+x) = x - 0.5 x^2 + x^3 P(x)/Q(x).
+ *
+ * Otherwise, setting z = 2(x-1)/x+1),
+ *
+ * log(x) = z + z^3 P(z)/Q(z).
+ *
+ *
+ *
+ * ACCURACY:
+ *
+ * Relative error:
+ * arithmetic domain # trials peak rms
+ * IEEE 0.5, 2.0 30000 2.3e-34 4.9e-35
+ * IEEE exp(+-10000) 30000 1.0e-34 4.1e-35
+ *
+ * In the tests over the interval exp(+-10000), the logarithms
+ * of the random arguments were uniformly distributed over
+ * [-10000, +10000].
+ *
+ */
+
+/*
+ Cephes Math Library Release 2.2: January, 1991
+ Copyright 1984, 1991 by Stephen L. Moshier
+ Adapted for glibc November, 2001
+
+ This 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 2.1 of the License, or (at your option) any later version.
+
+ This 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 this library; if not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <math.h>
+#include <math_private.h>
+
+/* Coefficients for ln(1+x) = x - x**2/2 + x**3 P(x)/Q(x)
+ * 1/sqrt(2) <= x < sqrt(2)
+ * Theoretical peak relative error = 5.3e-37,
+ * relative peak error spread = 2.3e-14
+ */
+static const long double P[13] =
+{
+ 1.313572404063446165910279910527789794488E4L,
+ 7.771154681358524243729929227226708890930E4L,
+ 2.014652742082537582487669938141683759923E5L,
+ 3.007007295140399532324943111654767187848E5L,
+ 2.854829159639697837788887080758954924001E5L,
+ 1.797628303815655343403735250238293741397E5L,
+ 7.594356839258970405033155585486712125861E4L,
+ 2.128857716871515081352991964243375186031E4L,
+ 3.824952356185897735160588078446136783779E3L,
+ 4.114517881637811823002128927449878962058E2L,
+ 2.321125933898420063925789532045674660756E1L,
+ 4.998469661968096229986658302195402690910E-1L,
+ 1.538612243596254322971797716843006400388E-6L
+};
+static const long double Q[12] =
+{
+ 3.940717212190338497730839731583397586124E4L,
+ 2.626900195321832660448791748036714883242E5L,
+ 7.777690340007566932935753241556479363645E5L,
+ 1.347518538384329112529391120390701166528E6L,
+ 1.514882452993549494932585972882995548426E6L,
+ 1.158019977462989115839826904108208787040E6L,
+ 6.132189329546557743179177159925690841200E5L,
+ 2.248234257620569139969141618556349415120E5L,
+ 5.605842085972455027590989944010492125825E4L,
+ 9.147150349299596453976674231612674085381E3L,
+ 9.104928120962988414618126155557301584078E2L,
+ 4.839208193348159620282142911143429644326E1L
+/* 1.000000000000000000000000000000000000000E0L, */
+};
+
+/* Coefficients for log(x) = z + z^3 P(z^2)/Q(z^2),
+ * where z = 2(x-1)/(x+1)
+ * 1/sqrt(2) <= x < sqrt(2)
+ * Theoretical peak relative error = 1.1e-35,
+ * relative peak error spread 1.1e-9
+ */
+static const long double R[6] =
+{
+ 1.418134209872192732479751274970992665513E5L,
+ -8.977257995689735303686582344659576526998E4L,
+ 2.048819892795278657810231591630928516206E4L,
+ -2.024301798136027039250415126250455056397E3L,
+ 8.057002716646055371965756206836056074715E1L,
+ -8.828896441624934385266096344596648080902E-1L
+};
+static const long double S[6] =
+{
+ 1.701761051846631278975701529965589676574E6L,
+ -1.332535117259762928288745111081235577029E6L,
+ 4.001557694070773974936904547424676279307E5L,
+ -5.748542087379434595104154610899551484314E4L,
+ 3.998526750980007367835804959888064681098E3L,
+ -1.186359407982897997337150403816839480438E2L
+/* 1.000000000000000000000000000000000000000E0L, */
+};
+
+static const long double
+/* log10(2) */
+L102A = 0.3125L,
+L102B = -1.14700043360188047862611052755069732318101185E-2L,
+/* log10(e) */
+L10EA = 0.5L,
+L10EB = -6.570551809674817234887108108339491770560299E-2L,
+/* sqrt(2)/2 */
+SQRTH = 7.071067811865475244008443621048490392848359E-1L;
+
+
+
+/* Evaluate P[n] x^n + P[n-1] x^(n-1) + ... + P[0] */
+
+static long double
+neval (long double x, const long double *p, int n)
+{
+ long double y;
+
+ p += n;
+ y = *p--;
+ do
+ {
+ y = y * x + *p--;
+ }
+ while (--n > 0);
+ return y;
+}
+
+
+/* Evaluate x^n+1 + P[n] x^(n) + P[n-1] x^(n-1) + ... + P[0] */
+
+static long double
+deval (long double x, const long double *p, int n)
+{
+ long double y;
+
+ p += n;
+ y = x + *p--;
+ do
+ {
+ y = y * x + *p--;
+ }
+ while (--n > 0);
+ return y;
+}
+
+
+
+long double
+__ieee754_log10l (long double x)
+{
+ long double z;
+ long double y;
+ int e;
+ int64_t hx;
+ double xhi;
+
+/* Test for domain */
+ xhi = ldbl_high (x);
+ EXTRACT_WORDS64 (hx, xhi);
+ if ((hx & 0x7fffffffffffffffLL) == 0)
+ return (-1.0L / __fabsl (x)); /* log10l(+-0)=-inf */
+ if (hx < 0)
+ return (x - x) / (x - x);
+ if (hx >= 0x7ff0000000000000LL)
+ return (x + x);
+
+ if (x == 1.0L)
+ return 0.0L;
+
+/* separate mantissa from exponent */
+
+/* Note, frexp is used so that denormal numbers
+ * will be handled properly.
+ */
+ x = __frexpl (x, &e);
+
+
+/* logarithm using log(x) = z + z**3 P(z)/Q(z),
+ * where z = 2(x-1)/x+1)
+ */
+ if ((e > 2) || (e < -2))
+ {
+ if (x < SQRTH)
+ { /* 2( 2x-1 )/( 2x+1 ) */
+ e -= 1;
+ z = x - 0.5L;
+ y = 0.5L * z + 0.5L;
+ }
+ else
+ { /* 2 (x-1)/(x+1) */
+ z = x - 0.5L;
+ z -= 0.5L;
+ y = 0.5L * x + 0.5L;
+ }
+ x = z / y;
+ z = x * x;
+ y = x * (z * neval (z, R, 5) / deval (z, S, 5));
+ goto done;
+ }
+
+
+/* logarithm using log(1+x) = x - .5x**2 + x**3 P(x)/Q(x) */
+
+ if (x < SQRTH)
+ {
+ e -= 1;
+ x = 2.0 * x - 1.0L; /* 2x - 1 */
+ }
+ else
+ {
+ x = x - 1.0L;
+ }
+ z = x * x;
+ y = x * (z * neval (x, P, 12) / deval (x, Q, 11));
+ y = y - 0.5 * z;
+
+done:
+
+ /* Multiply log of fraction by log10(e)
+ * and base 2 exponent by log10(2).
+ */
+ z = y * L10EB;
+ z += x * L10EB;
+ z += e * L102B;
+ z += y * L10EA;
+ z += x * L10EA;
+ z += e * L102A;
+ return (z);
+}
+strong_alias (__ieee754_log10l, __log10l_finite)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/e_log2l.c b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/e_log2l.c
new file mode 100644
index 0000000000..c820dacf08
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/e_log2l.c
@@ -0,0 +1,254 @@
+/* log2l.c
+ * Base 2 logarithm, 128-bit long double precision
+ *
+ *
+ *
+ * SYNOPSIS:
+ *
+ * long double x, y, log2l();
+ *
+ * y = log2l( x );
+ *
+ *
+ *
+ * DESCRIPTION:
+ *
+ * Returns the base 2 logarithm of x.
+ *
+ * The argument is separated into its exponent and fractional
+ * parts. If the exponent is between -1 and +1, the (natural)
+ * logarithm of the fraction is approximated by
+ *
+ * log(1+x) = x - 0.5 x^2 + x^3 P(x)/Q(x).
+ *
+ * Otherwise, setting z = 2(x-1)/x+1),
+ *
+ * log(x) = z + z^3 P(z)/Q(z).
+ *
+ *
+ *
+ * ACCURACY:
+ *
+ * Relative error:
+ * arithmetic domain # trials peak rms
+ * IEEE 0.5, 2.0 100,000 2.6e-34 4.9e-35
+ * IEEE exp(+-10000) 100,000 9.6e-35 4.0e-35
+ *
+ * In the tests over the interval exp(+-10000), the logarithms
+ * of the random arguments were uniformly distributed over
+ * [-10000, +10000].
+ *
+ */
+
+/*
+ Cephes Math Library Release 2.2: January, 1991
+ Copyright 1984, 1991 by Stephen L. Moshier
+ Adapted for glibc November, 2001
+
+ This 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 2.1 of the License, or (at your option) any later version.
+
+ This 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 this library; if not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <math.h>
+#include <math_private.h>
+
+/* Coefficients for ln(1+x) = x - x**2/2 + x**3 P(x)/Q(x)
+ * 1/sqrt(2) <= x < sqrt(2)
+ * Theoretical peak relative error = 5.3e-37,
+ * relative peak error spread = 2.3e-14
+ */
+static const long double P[13] =
+{
+ 1.313572404063446165910279910527789794488E4L,
+ 7.771154681358524243729929227226708890930E4L,
+ 2.014652742082537582487669938141683759923E5L,
+ 3.007007295140399532324943111654767187848E5L,
+ 2.854829159639697837788887080758954924001E5L,
+ 1.797628303815655343403735250238293741397E5L,
+ 7.594356839258970405033155585486712125861E4L,
+ 2.128857716871515081352991964243375186031E4L,
+ 3.824952356185897735160588078446136783779E3L,
+ 4.114517881637811823002128927449878962058E2L,
+ 2.321125933898420063925789532045674660756E1L,
+ 4.998469661968096229986658302195402690910E-1L,
+ 1.538612243596254322971797716843006400388E-6L
+};
+static const long double Q[12] =
+{
+ 3.940717212190338497730839731583397586124E4L,
+ 2.626900195321832660448791748036714883242E5L,
+ 7.777690340007566932935753241556479363645E5L,
+ 1.347518538384329112529391120390701166528E6L,
+ 1.514882452993549494932585972882995548426E6L,
+ 1.158019977462989115839826904108208787040E6L,
+ 6.132189329546557743179177159925690841200E5L,
+ 2.248234257620569139969141618556349415120E5L,
+ 5.605842085972455027590989944010492125825E4L,
+ 9.147150349299596453976674231612674085381E3L,
+ 9.104928120962988414618126155557301584078E2L,
+ 4.839208193348159620282142911143429644326E1L
+/* 1.000000000000000000000000000000000000000E0L, */
+};
+
+/* Coefficients for log(x) = z + z^3 P(z^2)/Q(z^2),
+ * where z = 2(x-1)/(x+1)
+ * 1/sqrt(2) <= x < sqrt(2)
+ * Theoretical peak relative error = 1.1e-35,
+ * relative peak error spread 1.1e-9
+ */
+static const long double R[6] =
+{
+ 1.418134209872192732479751274970992665513E5L,
+ -8.977257995689735303686582344659576526998E4L,
+ 2.048819892795278657810231591630928516206E4L,
+ -2.024301798136027039250415126250455056397E3L,
+ 8.057002716646055371965756206836056074715E1L,
+ -8.828896441624934385266096344596648080902E-1L
+};
+static const long double S[6] =
+{
+ 1.701761051846631278975701529965589676574E6L,
+ -1.332535117259762928288745111081235577029E6L,
+ 4.001557694070773974936904547424676279307E5L,
+ -5.748542087379434595104154610899551484314E4L,
+ 3.998526750980007367835804959888064681098E3L,
+ -1.186359407982897997337150403816839480438E2L
+/* 1.000000000000000000000000000000000000000E0L, */
+};
+
+static const long double
+/* log2(e) - 1 */
+LOG2EA = 4.4269504088896340735992468100189213742664595E-1L,
+/* sqrt(2)/2 */
+SQRTH = 7.071067811865475244008443621048490392848359E-1L;
+
+
+/* Evaluate P[n] x^n + P[n-1] x^(n-1) + ... + P[0] */
+
+static long double
+neval (long double x, const long double *p, int n)
+{
+ long double y;
+
+ p += n;
+ y = *p--;
+ do
+ {
+ y = y * x + *p--;
+ }
+ while (--n > 0);
+ return y;
+}
+
+
+/* Evaluate x^n+1 + P[n] x^(n) + P[n-1] x^(n-1) + ... + P[0] */
+
+static long double
+deval (long double x, const long double *p, int n)
+{
+ long double y;
+
+ p += n;
+ y = x + *p--;
+ do
+ {
+ y = y * x + *p--;
+ }
+ while (--n > 0);
+ return y;
+}
+
+
+
+long double
+__ieee754_log2l (long double x)
+{
+ long double z;
+ long double y;
+ int e;
+ int64_t hx;
+ double xhi;
+
+/* Test for domain */
+ xhi = ldbl_high (x);
+ EXTRACT_WORDS64 (hx, xhi);
+ if ((hx & 0x7fffffffffffffffLL) == 0)
+ return (-1.0L / __fabsl (x)); /* log2l(+-0)=-inf */
+ if (hx < 0)
+ return (x - x) / (x - x);
+ if (hx >= 0x7ff0000000000000LL)
+ return (x + x);
+
+ if (x == 1.0L)
+ return 0.0L;
+
+/* separate mantissa from exponent */
+
+/* Note, frexp is used so that denormal numbers
+ * will be handled properly.
+ */
+ x = __frexpl (x, &e);
+
+
+/* logarithm using log(x) = z + z**3 P(z)/Q(z),
+ * where z = 2(x-1)/x+1)
+ */
+ if ((e > 2) || (e < -2))
+ {
+ if (x < SQRTH)
+ { /* 2( 2x-1 )/( 2x+1 ) */
+ e -= 1;
+ z = x - 0.5L;
+ y = 0.5L * z + 0.5L;
+ }
+ else
+ { /* 2 (x-1)/(x+1) */
+ z = x - 0.5L;
+ z -= 0.5L;
+ y = 0.5L * x + 0.5L;
+ }
+ x = z / y;
+ z = x * x;
+ y = x * (z * neval (z, R, 5) / deval (z, S, 5));
+ goto done;
+ }
+
+
+/* logarithm using log(1+x) = x - .5x**2 + x**3 P(x)/Q(x) */
+
+ if (x < SQRTH)
+ {
+ e -= 1;
+ x = 2.0 * x - 1.0L; /* 2x - 1 */
+ }
+ else
+ {
+ x = x - 1.0L;
+ }
+ z = x * x;
+ y = x * (z * neval (x, P, 12) / deval (x, Q, 11));
+ y = y - 0.5 * z;
+
+done:
+
+/* Multiply log of fraction by log2(e)
+ * and base 2 exponent by 1
+ */
+ z = y * LOG2EA;
+ z += x * LOG2EA;
+ z += y;
+ z += x;
+ z += e;
+ return (z);
+}
+strong_alias (__ieee754_log2l, __log2l_finite)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/e_logl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/e_logl.c
new file mode 100644
index 0000000000..c44feca65b
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/e_logl.c
@@ -0,0 +1,300 @@
+/* logll.c
+ *
+ * Natural logarithm for 128-bit long double precision.
+ *
+ *
+ *
+ * SYNOPSIS:
+ *
+ * long double x, y, logl();
+ *
+ * y = logl( x );
+ *
+ *
+ *
+ * DESCRIPTION:
+ *
+ * Returns the base e (2.718...) logarithm of x.
+ *
+ * The argument is separated into its exponent and fractional
+ * parts. Use of a lookup table increases the speed of the routine.
+ * The program uses logarithms tabulated at intervals of 1/128 to
+ * cover the domain from approximately 0.7 to 1.4.
+ *
+ * On the interval [-1/128, +1/128] the logarithm of 1+x is approximated by
+ * log(1+x) = x - 0.5 x^2 + x^3 P(x) .
+ *
+ *
+ *
+ * ACCURACY:
+ *
+ * Relative error:
+ * arithmetic domain # trials peak rms
+ * IEEE 0.875, 1.125 100000 1.2e-34 4.1e-35
+ * IEEE 0.125, 8 100000 1.2e-34 4.1e-35
+ *
+ *
+ * WARNING:
+ *
+ * This program uses integer operations on bit fields of floating-point
+ * numbers. It does not work with data structures other than the
+ * structure assumed.
+ *
+ */
+
+/* Copyright 2001 by Stephen L. Moshier <moshier@na-net.ornl.gov>
+
+ This 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 2.1 of the License, or (at your option) any later version.
+
+ This 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 this library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+#include <math_private.h>
+
+/* log(1+x) = x - .5 x^2 + x^3 l(x)
+ -.0078125 <= x <= +.0078125
+ peak relative error 1.2e-37 */
+static const long double
+l3 = 3.333333333333333333333333333333336096926E-1L,
+l4 = -2.499999999999999999999999999486853077002E-1L,
+l5 = 1.999999999999999999999999998515277861905E-1L,
+l6 = -1.666666666666666666666798448356171665678E-1L,
+l7 = 1.428571428571428571428808945895490721564E-1L,
+l8 = -1.249999999999999987884655626377588149000E-1L,
+l9 = 1.111111111111111093947834982832456459186E-1L,
+l10 = -1.000000000000532974938900317952530453248E-1L,
+l11 = 9.090909090915566247008015301349979892689E-2L,
+l12 = -8.333333211818065121250921925397567745734E-2L,
+l13 = 7.692307559897661630807048686258659316091E-2L,
+l14 = -7.144242754190814657241902218399056829264E-2L,
+l15 = 6.668057591071739754844678883223432347481E-2L;
+
+/* Lookup table of ln(t) - (t-1)
+ t = 0.5 + (k+26)/128)
+ k = 0, ..., 91 */
+static const long double logtbl[92] = {
+-5.5345593589352099112142921677820359632418E-2L,
+-5.2108257402767124761784665198737642086148E-2L,
+-4.8991686870576856279407775480686721935120E-2L,
+-4.5993270766361228596215288742353061431071E-2L,
+-4.3110481649613269682442058976885699556950E-2L,
+-4.0340872319076331310838085093194799765520E-2L,
+-3.7682072451780927439219005993827431503510E-2L,
+-3.5131785416234343803903228503274262719586E-2L,
+-3.2687785249045246292687241862699949178831E-2L,
+-3.0347913785027239068190798397055267411813E-2L,
+-2.8110077931525797884641940838507561326298E-2L,
+-2.5972247078357715036426583294246819637618E-2L,
+-2.3932450635346084858612873953407168217307E-2L,
+-2.1988775689981395152022535153795155900240E-2L,
+-2.0139364778244501615441044267387667496733E-2L,
+-1.8382413762093794819267536615342902718324E-2L,
+-1.6716169807550022358923589720001638093023E-2L,
+-1.5138929457710992616226033183958974965355E-2L,
+-1.3649036795397472900424896523305726435029E-2L,
+-1.2244881690473465543308397998034325468152E-2L,
+-1.0924898127200937840689817557742469105693E-2L,
+-9.6875626072830301572839422532631079809328E-3L,
+-8.5313926245226231463436209313499745894157E-3L,
+-7.4549452072765973384933565912143044991706E-3L,
+-6.4568155251217050991200599386801665681310E-3L,
+-5.5356355563671005131126851708522185605193E-3L,
+-4.6900728132525199028885749289712348829878E-3L,
+-3.9188291218610470766469347968659624282519E-3L,
+-3.2206394539524058873423550293617843896540E-3L,
+-2.5942708080877805657374888909297113032132E-3L,
+-2.0385211375711716729239156839929281289086E-3L,
+-1.5522183228760777967376942769773768850872E-3L,
+-1.1342191863606077520036253234446621373191E-3L,
+-7.8340854719967065861624024730268350459991E-4L,
+-4.9869831458030115699628274852562992756174E-4L,
+-2.7902661731604211834685052867305795169688E-4L,
+-1.2335696813916860754951146082826952093496E-4L,
+-3.0677461025892873184042490943581654591817E-5L,
+#define ZERO logtbl[38]
+ 0.0000000000000000000000000000000000000000E0L,
+-3.0359557945051052537099938863236321874198E-5L,
+-1.2081346403474584914595395755316412213151E-4L,
+-2.7044071846562177120083903771008342059094E-4L,
+-4.7834133324631162897179240322783590830326E-4L,
+-7.4363569786340080624467487620270965403695E-4L,
+-1.0654639687057968333207323853366578860679E-3L,
+-1.4429854811877171341298062134712230604279E-3L,
+-1.8753781835651574193938679595797367137975E-3L,
+-2.3618380914922506054347222273705859653658E-3L,
+-2.9015787624124743013946600163375853631299E-3L,
+-3.4938307889254087318399313316921940859043E-3L,
+-4.1378413103128673800485306215154712148146E-3L,
+-4.8328735414488877044289435125365629849599E-3L,
+-5.5782063183564351739381962360253116934243E-3L,
+-6.3731336597098858051938306767880719015261E-3L,
+-7.2169643436165454612058905294782949315193E-3L,
+-8.1090214990427641365934846191367315083867E-3L,
+-9.0486422112807274112838713105168375482480E-3L,
+-1.0035177140880864314674126398350812606841E-2L,
+-1.1067990155502102718064936259435676477423E-2L,
+-1.2146457974158024928196575103115488672416E-2L,
+-1.3269969823361415906628825374158424754308E-2L,
+-1.4437927104692837124388550722759686270765E-2L,
+-1.5649743073340777659901053944852735064621E-2L,
+-1.6904842527181702880599758489058031645317E-2L,
+-1.8202661505988007336096407340750378994209E-2L,
+-1.9542647000370545390701192438691126552961E-2L,
+-2.0924256670080119637427928803038530924742E-2L,
+-2.2346958571309108496179613803760727786257E-2L,
+-2.3810230892650362330447187267648486279460E-2L,
+-2.5313561699385640380910474255652501521033E-2L,
+-2.6856448685790244233704909690165496625399E-2L,
+-2.8438398935154170008519274953860128449036E-2L,
+-3.0058928687233090922411781058956589863039E-2L,
+-3.1717563112854831855692484086486099896614E-2L,
+-3.3413836095418743219397234253475252001090E-2L,
+-3.5147290019036555862676702093393332533702E-2L,
+-3.6917475563073933027920505457688955423688E-2L,
+-3.8723951502862058660874073462456610731178E-2L,
+-4.0566284516358241168330505467000838017425E-2L,
+-4.2444048996543693813649967076598766917965E-2L,
+-4.4356826869355401653098777649745233339196E-2L,
+-4.6304207416957323121106944474331029996141E-2L,
+-4.8285787106164123613318093945035804818364E-2L,
+-5.0301169421838218987124461766244507342648E-2L,
+-5.2349964705088137924875459464622098310997E-2L,
+-5.4431789996103111613753440311680967840214E-2L,
+-5.6546268881465384189752786409400404404794E-2L,
+-5.8693031345788023909329239565012647817664E-2L,
+-6.0871713627532018185577188079210189048340E-2L,
+-6.3081958078862169742820420185833800925568E-2L,
+-6.5323413029406789694910800219643791556918E-2L,
+-6.7595732653791419081537811574227049288168E-2L
+};
+
+/* ln(2) = ln2a + ln2b with extended precision. */
+static const long double
+ ln2a = 6.93145751953125e-1L,
+ ln2b = 1.4286068203094172321214581765680755001344E-6L;
+
+static const long double
+ ldbl_epsilon = 0x1p-106L;
+
+long double
+__ieee754_logl(long double x)
+{
+ long double z, y, w, t;
+ unsigned int m;
+ int k, e;
+ double xhi;
+ uint32_t hx, lx;
+
+ xhi = ldbl_high (x);
+ EXTRACT_WORDS (hx, lx, xhi);
+ m = hx;
+
+ /* Check for IEEE special cases. */
+ k = m & 0x7fffffff;
+ /* log(0) = -infinity. */
+ if ((k | lx) == 0)
+ {
+ return -0.5L / ZERO;
+ }
+ /* log ( x < 0 ) = NaN */
+ if (m & 0x80000000)
+ {
+ return (x - x) / ZERO;
+ }
+ /* log (infinity or NaN) */
+ if (k >= 0x7ff00000)
+ {
+ return x + x;
+ }
+
+ /* On this interval the table is not used due to cancellation error. */
+ if ((x <= 1.0078125L) && (x >= 0.9921875L))
+ {
+ if (x == 1.0L)
+ return 0.0L;
+ z = x - 1.0L;
+ k = 64;
+ t = 1.0L;
+ e = 0;
+ }
+ else
+ {
+ /* Extract exponent and reduce domain to 0.703125 <= u < 1.40625 */
+ unsigned int w0;
+ e = (int) (m >> 20) - (int) 0x3fe;
+ if (e == -1022)
+ {
+ x *= 0x1p106L;
+ xhi = ldbl_high (x);
+ EXTRACT_WORDS (hx, lx, xhi);
+ m = hx;
+ e = (int) (m >> 20) - (int) 0x3fe - 106;
+ }
+ m &= 0xfffff;
+ w0 = m | 0x3fe00000;
+ m |= 0x100000;
+ /* Find lookup table index k from high order bits of the significand. */
+ if (m < 0x168000)
+ {
+ k = (m - 0xff000) >> 13;
+ /* t is the argument 0.5 + (k+26)/128
+ of the nearest item to u in the lookup table. */
+ INSERT_WORDS (xhi, 0x3ff00000 + (k << 13), 0);
+ t = xhi;
+ w0 += 0x100000;
+ e -= 1;
+ k += 64;
+ }
+ else
+ {
+ k = (m - 0xfe000) >> 14;
+ INSERT_WORDS (xhi, 0x3fe00000 + (k << 14), 0);
+ t = xhi;
+ }
+ x = __scalbnl (x, ((int) ((w0 - hx) * 2)) >> 21);
+ /* log(u) = log( t u/t ) = log(t) + log(u/t)
+ log(t) is tabulated in the lookup table.
+ Express log(u/t) = log(1+z), where z = u/t - 1 = (u-t)/t.
+ cf. Cody & Waite. */
+ z = (x - t) / t;
+ }
+ /* Series expansion of log(1+z). */
+ w = z * z;
+ /* Avoid spurious underflows. */
+ if (__glibc_unlikely (fabsl (z) <= ldbl_epsilon))
+ y = 0.0L;
+ else
+ {
+ y = ((((((((((((l15 * z
+ + l14) * z
+ + l13) * z
+ + l12) * z
+ + l11) * z
+ + l10) * z
+ + l9) * z
+ + l8) * z
+ + l7) * z
+ + l6) * z
+ + l5) * z
+ + l4) * z
+ + l3) * z * w;
+ y -= 0.5 * w;
+ }
+ y += e * ln2b; /* Base 2 exponent offset times ln(2). */
+ y += z;
+ y += logtbl[k-26]; /* log(t) - (t-1) */
+ y += (t - 1.0L);
+ y += e * ln2a;
+ return y;
+}
+strong_alias (__ieee754_logl, __logl_finite)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/e_powl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/e_powl.c
new file mode 100644
index 0000000000..d6fbef6997
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/e_powl.c
@@ -0,0 +1,415 @@
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+/* Expansions and modifications for 128-bit long double are
+ Copyright (C) 2001 Stephen L. Moshier <moshier@na-net.ornl.gov>
+ and are incorporated herein by permission of the author. The author
+ reserves the right to distribute this material elsewhere under different
+ copying permissions. These modifications are distributed here under
+ the following terms:
+
+ This 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 2.1 of the License, or (at your option) any later version.
+
+ This 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 this library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+/* __ieee754_powl(x,y) return x**y
+ *
+ * n
+ * Method: Let x = 2 * (1+f)
+ * 1. Compute and return log2(x) in two pieces:
+ * log2(x) = w1 + w2,
+ * where w1 has 113-53 = 60 bit trailing zeros.
+ * 2. Perform y*log2(x) = n+y' by simulating muti-precision
+ * arithmetic, where |y'|<=0.5.
+ * 3. Return x**y = 2**n*exp(y'*log2)
+ *
+ * Special cases:
+ * 1. (anything) ** 0 is 1
+ * 2. (anything) ** 1 is itself
+ * 3. (anything) ** NAN is NAN
+ * 4. NAN ** (anything except 0) is NAN
+ * 5. +-(|x| > 1) ** +INF is +INF
+ * 6. +-(|x| > 1) ** -INF is +0
+ * 7. +-(|x| < 1) ** +INF is +0
+ * 8. +-(|x| < 1) ** -INF is +INF
+ * 9. +-1 ** +-INF is NAN
+ * 10. +0 ** (+anything except 0, NAN) is +0
+ * 11. -0 ** (+anything except 0, NAN, odd integer) is +0
+ * 12. +0 ** (-anything except 0, NAN) is +INF
+ * 13. -0 ** (-anything except 0, NAN, odd integer) is +INF
+ * 14. -0 ** (odd integer) = -( +0 ** (odd integer) )
+ * 15. +INF ** (+anything except 0,NAN) is +INF
+ * 16. +INF ** (-anything except 0,NAN) is +0
+ * 17. -INF ** (anything) = -0 ** (-anything)
+ * 18. (-anything) ** (integer) is (-1)**(integer)*(+anything**integer)
+ * 19. (-anything except 0 and inf) ** (non-integer) is NAN
+ *
+ */
+
+#include <math.h>
+#include <math_private.h>
+
+static const long double bp[] = {
+ 1.0L,
+ 1.5L,
+};
+
+/* log_2(1.5) */
+static const long double dp_h[] = {
+ 0.0,
+ 5.8496250072115607565592654282227158546448E-1L
+};
+
+/* Low part of log_2(1.5) */
+static const long double dp_l[] = {
+ 0.0,
+ 1.0579781240112554492329533686862998106046E-16L
+};
+
+static const long double zero = 0.0L,
+ one = 1.0L,
+ two = 2.0L,
+ two113 = 1.0384593717069655257060992658440192E34L,
+ huge = 1.0e300L,
+ tiny = 1.0e-300L;
+
+/* 3/2 log x = 3 z + z^3 + z^3 (z^2 R(z^2))
+ z = (x-1)/(x+1)
+ 1 <= x <= 1.25
+ Peak relative error 2.3e-37 */
+static const long double LN[] =
+{
+ -3.0779177200290054398792536829702930623200E1L,
+ 6.5135778082209159921251824580292116201640E1L,
+ -4.6312921812152436921591152809994014413540E1L,
+ 1.2510208195629420304615674658258363295208E1L,
+ -9.9266909031921425609179910128531667336670E-1L
+};
+static const long double LD[] =
+{
+ -5.129862866715009066465422805058933131960E1L,
+ 1.452015077564081884387441590064272782044E2L,
+ -1.524043275549860505277434040464085593165E2L,
+ 7.236063513651544224319663428634139768808E1L,
+ -1.494198912340228235853027849917095580053E1L
+ /* 1.0E0 */
+};
+
+/* exp(x) = 1 + x - x / (1 - 2 / (x - x^2 R(x^2)))
+ 0 <= x <= 0.5
+ Peak relative error 5.7e-38 */
+static const long double PN[] =
+{
+ 5.081801691915377692446852383385968225675E8L,
+ 9.360895299872484512023336636427675327355E6L,
+ 4.213701282274196030811629773097579432957E4L,
+ 5.201006511142748908655720086041570288182E1L,
+ 9.088368420359444263703202925095675982530E-3L,
+};
+static const long double PD[] =
+{
+ 3.049081015149226615468111430031590411682E9L,
+ 1.069833887183886839966085436512368982758E8L,
+ 8.259257717868875207333991924545445705394E5L,
+ 1.872583833284143212651746812884298360922E3L,
+ /* 1.0E0 */
+};
+
+static const long double
+ /* ln 2 */
+ lg2 = 6.9314718055994530941723212145817656807550E-1L,
+ lg2_h = 6.9314718055994528622676398299518041312695E-1L,
+ lg2_l = 2.3190468138462996154948554638754786504121E-17L,
+ ovt = 8.0085662595372944372e-0017L,
+ /* 2/(3*log(2)) */
+ cp = 9.6179669392597560490661645400126142495110E-1L,
+ cp_h = 9.6179669392597555432899980587535537779331E-1L,
+ cp_l = 5.0577616648125906047157785230014751039424E-17L;
+
+long double
+__ieee754_powl (long double x, long double y)
+{
+ long double z, ax, z_h, z_l, p_h, p_l;
+ long double y1, t1, t2, r, s, sgn, t, u, v, w;
+ long double s2, s_h, s_l, t_h, t_l, ay;
+ int32_t i, j, k, yisint, n;
+ uint32_t ix, iy;
+ int32_t hx, hy, hax;
+ double ohi, xhi, xlo, yhi, ylo;
+ uint32_t lx, ly, lj;
+
+ ldbl_unpack (x, &xhi, &xlo);
+ EXTRACT_WORDS (hx, lx, xhi);
+ ix = hx & 0x7fffffff;
+
+ ldbl_unpack (y, &yhi, &ylo);
+ EXTRACT_WORDS (hy, ly, yhi);
+ iy = hy & 0x7fffffff;
+
+ /* y==zero: x**0 = 1 */
+ if ((iy | ly) == 0 && !issignaling (x))
+ return one;
+
+ /* 1.0**y = 1; -1.0**+-Inf = 1 */
+ if (x == one && !issignaling (y))
+ return one;
+ if (x == -1.0L && ((iy - 0x7ff00000) | ly) == 0)
+ return one;
+
+ /* +-NaN return x+y */
+ if ((ix >= 0x7ff00000 && ((ix - 0x7ff00000) | lx) != 0)
+ || (iy >= 0x7ff00000 && ((iy - 0x7ff00000) | ly) != 0))
+ return x + y;
+
+ /* determine if y is an odd int when x < 0
+ * yisint = 0 ... y is not an integer
+ * yisint = 1 ... y is an odd int
+ * yisint = 2 ... y is an even int
+ */
+ yisint = 0;
+ if (hx < 0)
+ {
+ uint32_t low_ye;
+
+ GET_HIGH_WORD (low_ye, ylo);
+ if ((low_ye & 0x7fffffff) >= 0x43400000) /* Low part >= 2^53 */
+ yisint = 2; /* even integer y */
+ else if (iy >= 0x3ff00000) /* 1.0 */
+ {
+ if (__floorl (y) == y)
+ {
+ z = 0.5 * y;
+ if (__floorl (z) == z)
+ yisint = 2;
+ else
+ yisint = 1;
+ }
+ }
+ }
+
+ ax = fabsl (x);
+
+ /* special value of y */
+ if (ly == 0)
+ {
+ if (iy == 0x7ff00000) /* y is +-inf */
+ {
+ if (ax > one)
+ /* (|x|>1)**+-inf = inf,0 */
+ return (hy >= 0) ? y : zero;
+ else
+ /* (|x|<1)**-,+inf = inf,0 */
+ return (hy < 0) ? -y : zero;
+ }
+ if (ylo == 0.0)
+ {
+ if (iy == 0x3ff00000)
+ { /* y is +-1 */
+ if (hy < 0)
+ return one / x;
+ else
+ return x;
+ }
+ if (hy == 0x40000000)
+ return x * x; /* y is 2 */
+ if (hy == 0x3fe00000)
+ { /* y is 0.5 */
+ if (hx >= 0) /* x >= +0 */
+ return __ieee754_sqrtl (x);
+ }
+ }
+ }
+
+ /* special value of x */
+ if (lx == 0)
+ {
+ if (ix == 0x7ff00000 || ix == 0 || (ix == 0x3ff00000 && xlo == 0.0))
+ {
+ z = ax; /*x is +-0,+-inf,+-1 */
+ if (hy < 0)
+ z = one / z; /* z = (1/|x|) */
+ if (hx < 0)
+ {
+ if (((ix - 0x3ff00000) | yisint) == 0)
+ {
+ z = (z - z) / (z - z); /* (-1)**non-int is NaN */
+ }
+ else if (yisint == 1)
+ z = -z; /* (x<0)**odd = -(|x|**odd) */
+ }
+ return z;
+ }
+ }
+
+ /* (x<0)**(non-int) is NaN */
+ if (((((u_int32_t) hx >> 31) - 1) | yisint) == 0)
+ return (x - x) / (x - x);
+
+ /* sgn (sign of result -ve**odd) = -1 else = 1 */
+ sgn = one;
+ if (((((u_int32_t) hx >> 31) - 1) | (yisint - 1)) == 0)
+ sgn = -one; /* (-ve)**(odd int) */
+
+ /* |y| is huge.
+ 2^-16495 = 1/2 of smallest representable value.
+ If (1 - 1/131072)^y underflows, y > 1.4986e9 */
+ if (iy > 0x41d654b0)
+ {
+ /* if (1 - 2^-113)^y underflows, y > 1.1873e38 */
+ if (iy > 0x47d654b0)
+ {
+ if (ix <= 0x3fefffff)
+ return (hy < 0) ? sgn * huge * huge : sgn * tiny * tiny;
+ if (ix >= 0x3ff00000)
+ return (hy > 0) ? sgn * huge * huge : sgn * tiny * tiny;
+ }
+ /* over/underflow if x is not close to one */
+ if (ix < 0x3fefffff)
+ return (hy < 0) ? sgn * huge * huge : sgn * tiny * tiny;
+ if (ix > 0x3ff00000)
+ return (hy > 0) ? sgn * huge * huge : sgn * tiny * tiny;
+ }
+
+ ay = y > 0 ? y : -y;
+ if (ay < 0x1p-117)
+ y = y < 0 ? -0x1p-117 : 0x1p-117;
+
+ n = 0;
+ /* take care subnormal number */
+ if (ix < 0x00100000)
+ {
+ ax *= two113;
+ n -= 113;
+ ohi = ldbl_high (ax);
+ GET_HIGH_WORD (ix, ohi);
+ }
+ n += ((ix) >> 20) - 0x3ff;
+ j = ix & 0x000fffff;
+ /* determine interval */
+ ix = j | 0x3ff00000; /* normalize ix */
+ if (j <= 0x39880)
+ k = 0; /* |x|<sqrt(3/2) */
+ else if (j < 0xbb670)
+ k = 1; /* |x|<sqrt(3) */
+ else
+ {
+ k = 0;
+ n += 1;
+ ix -= 0x00100000;
+ }
+
+ ohi = ldbl_high (ax);
+ GET_HIGH_WORD (hax, ohi);
+ ax = __scalbnl (ax, ((int) ((ix - hax) * 2)) >> 21);
+
+ /* compute s = s_h+s_l = (x-1)/(x+1) or (x-1.5)/(x+1.5) */
+ u = ax - bp[k]; /* bp[0]=1.0, bp[1]=1.5 */
+ v = one / (ax + bp[k]);
+ s = u * v;
+ s_h = ldbl_high (s);
+
+ /* t_h=ax+bp[k] High */
+ t_h = ax + bp[k];
+ t_h = ldbl_high (t_h);
+ t_l = ax - (t_h - bp[k]);
+ s_l = v * ((u - s_h * t_h) - s_h * t_l);
+ /* compute log(ax) */
+ s2 = s * s;
+ u = LN[0] + s2 * (LN[1] + s2 * (LN[2] + s2 * (LN[3] + s2 * LN[4])));
+ v = LD[0] + s2 * (LD[1] + s2 * (LD[2] + s2 * (LD[3] + s2 * (LD[4] + s2))));
+ r = s2 * s2 * u / v;
+ r += s_l * (s_h + s);
+ s2 = s_h * s_h;
+ t_h = 3.0 + s2 + r;
+ t_h = ldbl_high (t_h);
+ t_l = r - ((t_h - 3.0) - s2);
+ /* u+v = s*(1+...) */
+ u = s_h * t_h;
+ v = s_l * t_h + t_l * s;
+ /* 2/(3log2)*(s+...) */
+ p_h = u + v;
+ p_h = ldbl_high (p_h);
+ p_l = v - (p_h - u);
+ z_h = cp_h * p_h; /* cp_h+cp_l = 2/(3*log2) */
+ z_l = cp_l * p_h + p_l * cp + dp_l[k];
+ /* log2(ax) = (s+..)*2/(3*log2) = n + dp_h + z_h + z_l */
+ t = (long double) n;
+ t1 = (((z_h + z_l) + dp_h[k]) + t);
+ t1 = ldbl_high (t1);
+ t2 = z_l - (((t1 - t) - dp_h[k]) - z_h);
+
+ /* split up y into y1+y2 and compute (y1+y2)*(t1+t2) */
+ y1 = ldbl_high (y);
+ p_l = (y - y1) * t1 + y * t2;
+ p_h = y1 * t1;
+ z = p_l + p_h;
+ ohi = ldbl_high (z);
+ EXTRACT_WORDS (j, lj, ohi);
+ if (j >= 0x40d00000) /* z >= 16384 */
+ {
+ /* if z > 16384 */
+ if (((j - 0x40d00000) | lj) != 0)
+ return sgn * huge * huge; /* overflow */
+ else
+ {
+ if (p_l + ovt > z - p_h)
+ return sgn * huge * huge; /* overflow */
+ }
+ }
+ else if ((j & 0x7fffffff) >= 0x40d01b90) /* z <= -16495 */
+ {
+ /* z < -16495 */
+ if (((j - 0xc0d01bc0) | lj) != 0)
+ return sgn * tiny * tiny; /* underflow */
+ else
+ {
+ if (p_l <= z - p_h)
+ return sgn * tiny * tiny; /* underflow */
+ }
+ }
+ /* compute 2**(p_h+p_l) */
+ i = j & 0x7fffffff;
+ k = (i >> 20) - 0x3ff;
+ n = 0;
+ if (i > 0x3fe00000)
+ { /* if |z| > 0.5, set n = [z+0.5] */
+ n = __floorl (z + 0.5L);
+ t = n;
+ p_h -= t;
+ }
+ t = p_l + p_h;
+ t = ldbl_high (t);
+ u = t * lg2_h;
+ v = (p_l - (t - p_h)) * lg2 + t * lg2_l;
+ z = u + v;
+ w = v - (z - u);
+ /* exp(z) */
+ t = z * z;
+ u = PN[0] + t * (PN[1] + t * (PN[2] + t * (PN[3] + t * PN[4])));
+ v = PD[0] + t * (PD[1] + t * (PD[2] + t * (PD[3] + t)));
+ t1 = z - t * u / v;
+ r = (z * t1) / (t1 - two) - (w + z * w);
+ z = one - (r - z);
+ z = __scalbnl (sgn * z, n);
+ math_check_force_underflow (z);
+ return z;
+}
+strong_alias (__ieee754_powl, __powl_finite)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/e_rem_pio2l.c b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/e_rem_pio2l.c
new file mode 100644
index 0000000000..5aa2c1c007
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/e_rem_pio2l.c
@@ -0,0 +1,279 @@
+/* Quad-precision floating point argument reduction.
+ Copyright (C) 1999-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Jakub Jelinek <jj@ultra.linux.cz>
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+#include <math_private.h>
+#include <ieee754.h>
+
+/*
+ * Table of constants for 2/pi, 5628 hexadecimal digits of 2/pi
+ */
+static const int32_t two_over_pi[] = {
+0xa2f983, 0x6e4e44, 0x1529fc, 0x2757d1, 0xf534dd, 0xc0db62,
+0x95993c, 0x439041, 0xfe5163, 0xabdebb, 0xc561b7, 0x246e3a,
+0x424dd2, 0xe00649, 0x2eea09, 0xd1921c, 0xfe1deb, 0x1cb129,
+0xa73ee8, 0x8235f5, 0x2ebb44, 0x84e99c, 0x7026b4, 0x5f7e41,
+0x3991d6, 0x398353, 0x39f49c, 0x845f8b, 0xbdf928, 0x3b1ff8,
+0x97ffde, 0x05980f, 0xef2f11, 0x8b5a0a, 0x6d1f6d, 0x367ecf,
+0x27cb09, 0xb74f46, 0x3f669e, 0x5fea2d, 0x7527ba, 0xc7ebe5,
+0xf17b3d, 0x0739f7, 0x8a5292, 0xea6bfb, 0x5fb11f, 0x8d5d08,
+0x560330, 0x46fc7b, 0x6babf0, 0xcfbc20, 0x9af436, 0x1da9e3,
+0x91615e, 0xe61b08, 0x659985, 0x5f14a0, 0x68408d, 0xffd880,
+0x4d7327, 0x310606, 0x1556ca, 0x73a8c9, 0x60e27b, 0xc08c6b,
+0x47c419, 0xc367cd, 0xdce809, 0x2a8359, 0xc4768b, 0x961ca6,
+0xddaf44, 0xd15719, 0x053ea5, 0xff0705, 0x3f7e33, 0xe832c2,
+0xde4f98, 0x327dbb, 0xc33d26, 0xef6b1e, 0x5ef89f, 0x3a1f35,
+0xcaf27f, 0x1d87f1, 0x21907c, 0x7c246a, 0xfa6ed5, 0x772d30,
+0x433b15, 0xc614b5, 0x9d19c3, 0xc2c4ad, 0x414d2c, 0x5d000c,
+0x467d86, 0x2d71e3, 0x9ac69b, 0x006233, 0x7cd2b4, 0x97a7b4,
+0xd55537, 0xf63ed7, 0x1810a3, 0xfc764d, 0x2a9d64, 0xabd770,
+0xf87c63, 0x57b07a, 0xe71517, 0x5649c0, 0xd9d63b, 0x3884a7,
+0xcb2324, 0x778ad6, 0x23545a, 0xb91f00, 0x1b0af1, 0xdfce19,
+0xff319f, 0x6a1e66, 0x615799, 0x47fbac, 0xd87f7e, 0xb76522,
+0x89e832, 0x60bfe6, 0xcdc4ef, 0x09366c, 0xd43f5d, 0xd7de16,
+0xde3b58, 0x929bde, 0x2822d2, 0xe88628, 0x4d58e2, 0x32cac6,
+0x16e308, 0xcb7de0, 0x50c017, 0xa71df3, 0x5be018, 0x34132e,
+0x621283, 0x014883, 0x5b8ef5, 0x7fb0ad, 0xf2e91e, 0x434a48,
+0xd36710, 0xd8ddaa, 0x425fae, 0xce616a, 0xa4280a, 0xb499d3,
+0xf2a606, 0x7f775c, 0x83c2a3, 0x883c61, 0x78738a, 0x5a8caf,
+0xbdd76f, 0x63a62d, 0xcbbff4, 0xef818d, 0x67c126, 0x45ca55,
+0x36d9ca, 0xd2a828, 0x8d61c2, 0x77c912, 0x142604, 0x9b4612,
+0xc459c4, 0x44c5c8, 0x91b24d, 0xf31700, 0xad43d4, 0xe54929,
+0x10d5fd, 0xfcbe00, 0xcc941e, 0xeece70, 0xf53e13, 0x80f1ec,
+0xc3e7b3, 0x28f8c7, 0x940593, 0x3e71c1, 0xb3092e, 0xf3450b,
+0x9c1288, 0x7b20ab, 0x9fb52e, 0xc29247, 0x2f327b, 0x6d550c,
+0x90a772, 0x1fe76b, 0x96cb31, 0x4a1679, 0xe27941, 0x89dff4,
+0x9794e8, 0x84e6e2, 0x973199, 0x6bed88, 0x365f5f, 0x0efdbb,
+0xb49a48, 0x6ca467, 0x427271, 0x325d8d, 0xb8159f, 0x09e5bc,
+0x25318d, 0x3974f7, 0x1c0530, 0x010c0d, 0x68084b, 0x58ee2c,
+0x90aa47, 0x02e774, 0x24d6bd, 0xa67df7, 0x72486e, 0xef169f,
+0xa6948e, 0xf691b4, 0x5153d1, 0xf20acf, 0x339820, 0x7e4bf5,
+0x6863b2, 0x5f3edd, 0x035d40, 0x7f8985, 0x295255, 0xc06437,
+0x10d86d, 0x324832, 0x754c5b, 0xd4714e, 0x6e5445, 0xc1090b,
+0x69f52a, 0xd56614, 0x9d0727, 0x50045d, 0xdb3bb4, 0xc576ea,
+0x17f987, 0x7d6b49, 0xba271d, 0x296996, 0xacccc6, 0x5414ad,
+0x6ae290, 0x89d988, 0x50722c, 0xbea404, 0x940777, 0x7030f3,
+0x27fc00, 0xa871ea, 0x49c266, 0x3de064, 0x83dd97, 0x973fa3,
+0xfd9443, 0x8c860d, 0xde4131, 0x9d3992, 0x8c70dd, 0xe7b717,
+0x3bdf08, 0x2b3715, 0xa0805c, 0x93805a, 0x921110, 0xd8e80f,
+0xaf806c, 0x4bffdb, 0x0f9038, 0x761859, 0x15a562, 0xbbcb61,
+0xb989c7, 0xbd4010, 0x04f2d2, 0x277549, 0xf6b6eb, 0xbb22db,
+0xaa140a, 0x2f2689, 0x768364, 0x333b09, 0x1a940e, 0xaa3a51,
+0xc2a31d, 0xaeedaf, 0x12265c, 0x4dc26d, 0x9c7a2d, 0x9756c0,
+0x833f03, 0xf6f009, 0x8c402b, 0x99316d, 0x07b439, 0x15200c,
+0x5bc3d8, 0xc492f5, 0x4badc6, 0xa5ca4e, 0xcd37a7, 0x36a9e6,
+0x9492ab, 0x6842dd, 0xde6319, 0xef8c76, 0x528b68, 0x37dbfc,
+0xaba1ae, 0x3115df, 0xa1ae00, 0xdafb0c, 0x664d64, 0xb705ed,
+0x306529, 0xbf5657, 0x3aff47, 0xb9f96a, 0xf3be75, 0xdf9328,
+0x3080ab, 0xf68c66, 0x15cb04, 0x0622fa, 0x1de4d9, 0xa4b33d,
+0x8f1b57, 0x09cd36, 0xe9424e, 0xa4be13, 0xb52333, 0x1aaaf0,
+0xa8654f, 0xa5c1d2, 0x0f3f0b, 0xcd785b, 0x76f923, 0x048b7b,
+0x721789, 0x53a6c6, 0xe26e6f, 0x00ebef, 0x584a9b, 0xb7dac4,
+0xba66aa, 0xcfcf76, 0x1d02d1, 0x2df1b1, 0xc1998c, 0x77adc3,
+0xda4886, 0xa05df7, 0xf480c6, 0x2ff0ac, 0x9aecdd, 0xbc5c3f,
+0x6dded0, 0x1fc790, 0xb6db2a, 0x3a25a3, 0x9aaf00, 0x9353ad,
+0x0457b6, 0xb42d29, 0x7e804b, 0xa707da, 0x0eaa76, 0xa1597b,
+0x2a1216, 0x2db7dc, 0xfde5fa, 0xfedb89, 0xfdbe89, 0x6c76e4,
+0xfca906, 0x70803e, 0x156e85, 0xff87fd, 0x073e28, 0x336761,
+0x86182a, 0xeabd4d, 0xafe7b3, 0x6e6d8f, 0x396795, 0x5bbf31,
+0x48d784, 0x16df30, 0x432dc7, 0x356125, 0xce70c9, 0xb8cb30,
+0xfd6cbf, 0xa200a4, 0xe46c05, 0xa0dd5a, 0x476f21, 0xd21262,
+0x845cb9, 0x496170, 0xe0566b, 0x015299, 0x375550, 0xb7d51e,
+0xc4f133, 0x5f6e13, 0xe4305d, 0xa92e85, 0xc3b21d, 0x3632a1,
+0xa4b708, 0xd4b1ea, 0x21f716, 0xe4698f, 0x77ff27, 0x80030c,
+0x2d408d, 0xa0cd4f, 0x99a520, 0xd3a2b3, 0x0a5d2f, 0x42f9b4,
+0xcbda11, 0xd0be7d, 0xc1db9b, 0xbd17ab, 0x81a2ca, 0x5c6a08,
+0x17552e, 0x550027, 0xf0147f, 0x8607e1, 0x640b14, 0x8d4196,
+0xdebe87, 0x2afdda, 0xb6256b, 0x34897b, 0xfef305, 0x9ebfb9,
+0x4f6a68, 0xa82a4a, 0x5ac44f, 0xbcf82d, 0x985ad7, 0x95c7f4,
+0x8d4d0d, 0xa63a20, 0x5f57a4, 0xb13f14, 0x953880, 0x0120cc,
+0x86dd71, 0xb6dec9, 0xf560bf, 0x11654d, 0x6b0701, 0xacb08c,
+0xd0c0b2, 0x485551, 0x0efb1e, 0xc37295, 0x3b06a3, 0x3540c0,
+0x7bdc06, 0xcc45e0, 0xfa294e, 0xc8cad6, 0x41f3e8, 0xde647c,
+0xd8649b, 0x31bed9, 0xc397a4, 0xd45877, 0xc5e369, 0x13daf0,
+0x3c3aba, 0x461846, 0x5f7555, 0xf5bdd2, 0xc6926e, 0x5d2eac,
+0xed440e, 0x423e1c, 0x87c461, 0xe9fd29, 0xf3d6e7, 0xca7c22,
+0x35916f, 0xc5e008, 0x8dd7ff, 0xe26a6e, 0xc6fdb0, 0xc10893,
+0x745d7c, 0xb2ad6b, 0x9d6ecd, 0x7b723e, 0x6a11c6, 0xa9cff7,
+0xdf7329, 0xbac9b5, 0x5100b7, 0x0db2e2, 0x24ba74, 0x607de5,
+0x8ad874, 0x2c150d, 0x0c1881, 0x94667e, 0x162901, 0x767a9f,
+0xbefdfd, 0xef4556, 0x367ed9, 0x13d9ec, 0xb9ba8b, 0xfc97c4,
+0x27a831, 0xc36ef1, 0x36c594, 0x56a8d8, 0xb5a8b4, 0x0ecccf,
+0x2d8912, 0x34576f, 0x89562c, 0xe3ce99, 0xb920d6, 0xaa5e6b,
+0x9c2a3e, 0xcc5f11, 0x4a0bfd, 0xfbf4e1, 0x6d3b8e, 0x2c86e2,
+0x84d4e9, 0xa9b4fc, 0xd1eeef, 0xc9352e, 0x61392f, 0x442138,
+0xc8d91b, 0x0afc81, 0x6a4afb, 0xd81c2f, 0x84b453, 0x8c994e,
+0xcc2254, 0xdc552a, 0xd6c6c0, 0x96190b, 0xb8701a, 0x649569,
+0x605a26, 0xee523f, 0x0f117f, 0x11b5f4, 0xf5cbfc, 0x2dbc34,
+0xeebc34, 0xcc5de8, 0x605edd, 0x9b8e67, 0xef3392, 0xb817c9,
+0x9b5861, 0xbc57e1, 0xc68351, 0x103ed8, 0x4871dd, 0xdd1c2d,
+0xa118af, 0x462c21, 0xd7f359, 0x987ad9, 0xc0549e, 0xfa864f,
+0xfc0656, 0xae79e5, 0x362289, 0x22ad38, 0xdc9367, 0xaae855,
+0x382682, 0x9be7ca, 0xa40d51, 0xb13399, 0x0ed7a9, 0x480569,
+0xf0b265, 0xa7887f, 0x974c88, 0x36d1f9, 0xb39221, 0x4a827b,
+0x21cf98, 0xdc9f40, 0x5547dc, 0x3a74e1, 0x42eb67, 0xdf9dfe,
+0x5fd45e, 0xa4677b, 0x7aacba, 0xa2f655, 0x23882b, 0x55ba41,
+0x086e59, 0x862a21, 0x834739, 0xe6e389, 0xd49ee5, 0x40fb49,
+0xe956ff, 0xca0f1c, 0x8a59c5, 0x2bfa94, 0xc5c1d3, 0xcfc50f,
+0xae5adb, 0x86c547, 0x624385, 0x3b8621, 0x94792c, 0x876110,
+0x7b4c2a, 0x1a2c80, 0x12bf43, 0x902688, 0x893c78, 0xe4c4a8,
+0x7bdbe5, 0xc23ac4, 0xeaf426, 0x8a67f7, 0xbf920d, 0x2ba365,
+0xb1933d, 0x0b7cbd, 0xdc51a4, 0x63dd27, 0xdde169, 0x19949a,
+0x9529a8, 0x28ce68, 0xb4ed09, 0x209f44, 0xca984e, 0x638270,
+0x237c7e, 0x32b90f, 0x8ef5a7, 0xe75614, 0x08f121, 0x2a9db5,
+0x4d7e6f, 0x5119a5, 0xabf9b5, 0xd6df82, 0x61dd96, 0x023616,
+0x9f3ac4, 0xa1a283, 0x6ded72, 0x7a8d39, 0xa9b882, 0x5c326b,
+0x5b2746, 0xed3400, 0x7700d2, 0x55f4fc, 0x4d5901, 0x8071e0,
+0xe13f89, 0xb295f3, 0x64a8f1, 0xaea74b, 0x38fc4c, 0xeab2bb,
+0x47270b, 0xabc3a7, 0x34ba60, 0x52dd34, 0xf8563a, 0xeb7e8a,
+0x31bb36, 0x5895b7, 0x47f7a9, 0x94c3aa, 0xd39225, 0x1e7f3e,
+0xd8974e, 0xbba94f, 0xd8ae01, 0xe661b4, 0x393d8e, 0xa523aa,
+0x33068e, 0x1633b5, 0x3bb188, 0x1d3a9d, 0x4013d0, 0xcc1be5,
+0xf862e7, 0x3bf28f, 0x39b5bf, 0x0bc235, 0x22747e, 0xa247c0,
+0xd52d1f, 0x19add3, 0x9094df, 0x9311d0, 0xb42b25, 0x496db2,
+0xe264b2, 0x5ef135, 0x3bc6a4, 0x1a4ad0, 0xaac92e, 0x64e886,
+0x573091, 0x982cfb, 0x311b1a, 0x08728b, 0xbdcee1, 0x60e142,
+0xeb641d, 0xd0bba3, 0xe559d4, 0x597b8c, 0x2a4483, 0xf332ba,
+0xf84867, 0x2c8d1b, 0x2fa9b0, 0x50f3dd, 0xf9f573, 0xdb61b4,
+0xfe233e, 0x6c41a6, 0xeea318, 0x775a26, 0xbc5e5c, 0xcea708,
+0x94dc57, 0xe20196, 0xf1e839, 0xbe4851, 0x5d2d2f, 0x4e9555,
+0xd96ec2, 0xe7d755, 0x6304e0, 0xc02e0e, 0xfc40a0, 0xbbf9b3,
+0x7125a7, 0x222dfb, 0xf619d8, 0x838c1c, 0x6619e6, 0xb20d55,
+0xbb5137, 0x79e809, 0xaf9149, 0x0d73de, 0x0b0da5, 0xce7f58,
+0xac1934, 0x724667, 0x7a1a13, 0x9e26bc, 0x4555e7, 0x585cb5,
+0x711d14, 0x486991, 0x480d60, 0x56adab, 0xd62f64, 0x96ee0c,
+0x212ff3, 0x5d6d88, 0xa67684, 0x95651e, 0xab9e0a, 0x4ddefe,
+0x571010, 0x836a39, 0xf8ea31, 0x9e381d, 0xeac8b1, 0xcac96b,
+0x37f21e, 0xd505e9, 0x984743, 0x9fc56c, 0x0331b7, 0x3b8bf8,
+0x86e56a, 0x8dc343, 0x6230e7, 0x93cfd5, 0x6a8f2d, 0x733005,
+0x1af021, 0xa09fcb, 0x7415a1, 0xd56b23, 0x6ff725, 0x2f4bc7,
+0xb8a591, 0x7fac59, 0x5c55de, 0x212c38, 0xb13296, 0x5cff50,
+0x366262, 0xfa7b16, 0xf4d9a6, 0x2acfe7, 0xf07403, 0xd4d604,
+0x6fd916, 0x31b1bf, 0xcbb450, 0x5bd7c8, 0x0ce194, 0x6bd643,
+0x4fd91c, 0xdf4543, 0x5f3453, 0xe2b5aa, 0xc9aec8, 0x131485,
+0xf9d2bf, 0xbadb9e, 0x76f5b9, 0xaf15cf, 0xca3182, 0x14b56d,
+0xe9fe4d, 0x50fc35, 0xf5aed5, 0xa2d0c1, 0xc96057, 0x192eb6,
+0xe91d92, 0x07d144, 0xaea3c6, 0x343566, 0x26d5b4, 0x3161e2,
+0x37f1a2, 0x209eff, 0x958e23, 0x493798, 0x35f4a6, 0x4bdc02,
+0xc2be13, 0xbe80a0, 0x0b72a3, 0x115c5f, 0x1e1bd1, 0x0db4d3,
+0x869e85, 0x96976b, 0x2ac91f, 0x8a26c2, 0x3070f0, 0x041412,
+0xfc9fa5, 0xf72a38, 0x9c6878, 0xe2aa76, 0x50cfe1, 0x559274,
+0x934e38, 0x0a92f7, 0x5533f0, 0xa63db4, 0x399971, 0xe2b755,
+0xa98a7c, 0x008f19, 0xac54d2, 0x2ea0b4, 0xf5f3e0, 0x60c849,
+0xffd269, 0xae52ce, 0x7a5fdd, 0xe9ce06, 0xfb0ae8, 0xa50cce,
+0xea9d3e, 0x3766dd, 0xb834f5, 0x0da090, 0x846f88, 0x4ae3d5,
+0x099a03, 0x2eae2d, 0xfcb40a, 0xfb9b33, 0xe281dd, 0x1b16ba,
+0xd8c0af, 0xd96b97, 0xb52dc9, 0x9c277f, 0x5951d5, 0x21ccd6,
+0xb6496b, 0x584562, 0xb3baf2, 0xa1a5c4, 0x7ca2cf, 0xa9b93d,
+0x7b7b89, 0x483d38,
+};
+
+static const long double c[] = {
+/* 106 bits of pi/2 */
+#define PI_2_1 c[0]
+ 0x1.921fb54442d18469898cc517018p+0L,
+
+/* pi/2 - PI_2_1 */
+#define PI_2_1t c[1]
+ 0x3.839a252049c1114cf98e804178p-108L,
+};
+
+int32_t __ieee754_rem_pio2l(long double x, long double *y)
+{
+ long double z, w, t;
+ double tx[8];
+ int exp;
+ int64_t n, ix, hx, ixd;
+ u_int64_t lxd;
+ double xhi;
+
+ xhi = ldbl_high (x);
+ EXTRACT_WORDS64 (hx, xhi);
+ ix = hx & 0x7fffffffffffffffLL;
+ if (ix <= 0x3fe921fb54442d10LL) /* x in <-pi/4, pi/4> */
+ {
+ y[0] = x;
+ y[1] = 0;
+ return 0;
+ }
+
+ if (ix < 0x4002d97c7f3321d0LL) /* |x| in <pi/4, 3pi/4) */
+ {
+ if (hx > 0)
+ {
+ /* 106 + 106 bit PI is ok */
+ z = x - PI_2_1;
+ y[0] = z - PI_2_1t;
+ y[1] = (z - y[0]) - PI_2_1t;
+ return 1;
+ }
+ else
+ {
+ /* 106 + 106 bit PI is ok */
+ z = x + PI_2_1;
+ y[0] = z + PI_2_1t;
+ y[1] = (z - y[0]) + PI_2_1t;
+ return -1;
+ }
+ }
+
+ if (ix >= 0x7ff0000000000000LL) /* x is +=oo or NaN */
+ {
+ y[0] = x - x;
+ y[1] = y[0];
+ return 0;
+ }
+
+ /* Handle large arguments.
+ We split the 113 bits of the mantissa into 5 24bit integers
+ stored in a double array. */
+ /* Make the IBM extended format 105 bit mantissa look like the ieee854 112
+ bit mantissa so the next operation will give the correct result. */
+ ldbl_extract_mantissa (&ixd, &lxd, &exp, x);
+ exp = exp - 23;
+ /* This is faster than doing this in floating point, because we
+ have to convert it to integers anyway and like this we can keep
+ both integer and floating point units busy. */
+ tx [0] = (double)(((ixd >> 25) & 0x7fffff) | 0x800000);
+ tx [1] = (double)((ixd >> 1) & 0xffffff);
+ tx [2] = (double)(((ixd << 23) | (lxd >> 41)) & 0xffffff);
+ tx [3] = (double)((lxd >> 17) & 0xffffff);
+ tx [4] = (double)((lxd << 7) & 0xffffff);
+
+ n = __kernel_rem_pio2 (tx, tx + 5, exp, ((lxd << 7) & 0xffffff) ? 5 : 4,
+ 3, two_over_pi);
+
+ /* The result is now stored in 3 double values, we need to convert it into
+ two long double values. */
+ t = (long double) tx [6] + (long double) tx [7];
+ w = (long double) tx [5];
+
+ if (hx >= 0)
+ {
+ y[0] = w + t;
+ y[1] = t - (y[0] - w);
+ return n;
+ }
+ else
+ {
+ y[0] = -(w + t);
+ y[1] = -t - (y[0] + w);
+ return -n;
+ }
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/e_remainderl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/e_remainderl.c
new file mode 100644
index 0000000000..68b8fb3519
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/e_remainderl.c
@@ -0,0 +1,81 @@
+/* e_fmodl.c -- long double version of e_fmod.c.
+ * Conversion to IEEE quad long double by Jakub Jelinek, jj@ultra.linux.cz.
+ */
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+/* __ieee754_remainderl(x,p)
+ * Return :
+ * returns x REM p = x - [x/p]*p as if in infinite
+ * precise arithmetic, where [x/p] is the (infinite bit)
+ * integer nearest x/p (in half way case choose the even one).
+ * Method :
+ * Based on fmodl() return x-[x/p]chopped*p exactlp.
+ */
+
+#include <math.h>
+#include <math_private.h>
+
+static const long double zero = 0.0L;
+
+
+long double
+__ieee754_remainderl(long double x, long double p)
+{
+ int64_t hx,hp;
+ u_int64_t sx,lx,lp;
+ long double p_half;
+ double xhi, xlo, phi, plo;
+
+ ldbl_unpack (x, &xhi, &xlo);
+ EXTRACT_WORDS64 (hx, xhi);
+ EXTRACT_WORDS64 (lx, xlo);
+ ldbl_unpack (p, &phi, &plo);
+ EXTRACT_WORDS64 (hp, phi);
+ EXTRACT_WORDS64 (lp, plo);
+ sx = hx&0x8000000000000000ULL;
+ lp ^= hp & 0x8000000000000000ULL;
+ hp &= 0x7fffffffffffffffLL;
+ lx ^= sx;
+ hx &= 0x7fffffffffffffffLL;
+ if (lp == 0x8000000000000000ULL)
+ lp = 0;
+ if (lx == 0x8000000000000000ULL)
+ lx = 0;
+
+ /* purge off exception values */
+ if(hp==0) return (x*p)/(x*p); /* p = 0 */
+ if((hx>=0x7ff0000000000000LL)|| /* x not finite */
+ (hp>0x7ff0000000000000LL)) /* p is NaN */
+ return (x*p)/(x*p);
+
+
+ if (hp<=0x7fdfffffffffffffLL) x = __ieee754_fmodl(x,p+p); /* now x < 2p */
+ if (((hx-hp)|(lx-lp))==0) return zero*x;
+ x = fabsl(x);
+ p = fabsl(p);
+ if (hp<0x0020000000000000LL) {
+ if(x+x>p) {
+ x-=p;
+ if(x+x>=p) x -= p;
+ }
+ } else {
+ p_half = 0.5L*p;
+ if(x>p_half) {
+ x-=p;
+ if(x>=p_half) x -= p;
+ }
+ }
+ if (sx)
+ x = -x;
+ return x;
+}
+strong_alias (__ieee754_remainderl, __remainderl_finite)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/e_sinhl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/e_sinhl.c
new file mode 100644
index 0000000000..67d9d24ce7
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/e_sinhl.c
@@ -0,0 +1,79 @@
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+
+/* __ieee754_sinh(x)
+ * Method :
+ * mathematically sinh(x) if defined to be (exp(x)-exp(-x))/2
+ * 1. Replace x by |x| (sinh(-x) = -sinh(x)).
+ * 2.
+ * E + E/(E+1)
+ * 0 <= x <= 40 : sinh(x) := --------------, E=expm1(x)
+ * 2
+ *
+ * 40 <= x <= lnovft : sinh(x) := exp(x)/2
+ * lnovft <= x <= ln2ovft: sinh(x) := exp(x/2)/2 * exp(x/2)
+ * ln2ovft < x : sinh(x) := x*shuge (overflow)
+ *
+ * Special cases:
+ * sinh(x) is |x| if x is +INF, -INF, or NaN.
+ * only sinh(0)=0 is exact for finite x.
+ */
+
+#include <float.h>
+#include <math.h>
+#include <math_private.h>
+
+static const long double one = 1.0, shuge = 1.0e307;
+
+long double
+__ieee754_sinhl(long double x)
+{
+ long double t,w,h;
+ int64_t ix,jx;
+ double xhi;
+
+ /* High word of |x|. */
+ xhi = ldbl_high (x);
+ EXTRACT_WORDS64 (jx, xhi);
+ ix = jx&0x7fffffffffffffffLL;
+
+ /* x is INF or NaN */
+ if(ix>=0x7ff0000000000000LL) return x+x;
+
+ h = 0.5;
+ if (jx<0) h = -h;
+ /* |x| in [0,40], return sign(x)*0.5*(E+E/(E+1))) */
+ if (ix < 0x4044000000000000LL) { /* |x|<40 */
+ if (ix<0x3c90000000000000LL) { /* |x|<2**-54 */
+ math_check_force_underflow (x);
+ if(shuge+x>one) return x;/* sinhl(tiny) = tiny with inexact */
+ }
+ t = __expm1l(fabsl(x));
+ if(ix<0x3ff0000000000000LL) return h*(2.0*t-t*t/(t+one));
+ w = t/(t+one);
+ return h*(t+w);
+ }
+
+ /* |x| in [40, log(maxdouble)] return 0.5*exp(|x|) */
+ if (ix < 0x40862e42fefa39efLL) return h*__ieee754_expl(fabsl(x));
+
+ /* |x| in [log(maxdouble), overflowthresold] */
+ if (ix <= 0x408633ce8fb9f87eLL) {
+ w = __ieee754_expl(0.5*fabsl(x));
+ t = h*w;
+ return t*w;
+ }
+
+ /* |x| > overflowthresold, sinh(x) overflow */
+ return x*shuge;
+}
+strong_alias (__ieee754_sinhl, __sinhl_finite)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/e_sqrtl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/e_sqrtl.c
new file mode 100644
index 0000000000..8089090533
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/e_sqrtl.c
@@ -0,0 +1,102 @@
+/*
+ * IBM Accurate Mathematical Library
+ * written by International Business Machines Corp.
+ * Copyright (C) 2001-2017 Free Software Foundation, Inc.
+ *
+ * This program 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 2.1 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 program; if not, see <http://www.gnu.org/licenses/>.
+ */
+/*********************************************************************/
+/* MODULE_NAME: uroot.c */
+/* */
+/* FUNCTION: usqrt */
+/* */
+/* FILES NEEDED: dla.h endian.h mydefs.h uroot.h */
+/* uroot.tbl */
+/* */
+/* An ultimate sqrt routine. Given an IEEE double machine number x */
+/* it computes the correctly rounded (to nearest) value of square */
+/* root of x. */
+/* Assumption: Machine arithmetic operations are performed in */
+/* round to nearest mode of IEEE 754 standard. */
+/* */
+/*********************************************************************/
+
+#include <math_private.h>
+
+typedef union {int64_t i[2]; long double x; double d[2]; } mynumber;
+
+static const double
+ t512 = 0x1p512,
+ tm256 = 0x1p-256,
+ two54 = 0x1p54, /* 0x4350000000000000 */
+ twom54 = 0x1p-54; /* 0x3C90000000000000 */
+
+/*********************************************************************/
+/* An ultimate sqrt routine. Given an IEEE double machine number x */
+/* it computes the correctly rounded (to nearest) value of square */
+/* root of x. */
+/*********************************************************************/
+long double __ieee754_sqrtl(long double x)
+{
+ static const long double big = 134217728.0, big1 = 134217729.0;
+ long double t,s,i;
+ mynumber a,c;
+ uint64_t k, l;
+ int64_t m, n;
+ double d;
+
+ a.x=x;
+ k=a.i[0] & INT64_C(0x7fffffffffffffff);
+ /*----------------- 2^-1022 <= | x |< 2^1024 -----------------*/
+ if (k>INT64_C(0x000fffff00000000) && k<INT64_C(0x7ff0000000000000)) {
+ if (x < 0) return (big1-big1)/(big-big);
+ l = (k&INT64_C(0x001fffffffffffff))|INT64_C(0x3fe0000000000000);
+ if ((a.i[1] & INT64_C(0x7fffffffffffffff)) != 0) {
+ n = (int64_t) ((l - k) * 2) >> 53;
+ m = (a.i[1] >> 52) & 0x7ff;
+ if (m == 0) {
+ a.d[1] *= two54;
+ m = ((a.i[1] >> 52) & 0x7ff) - 54;
+ }
+ m += n;
+ if (m > 0)
+ a.i[1] = (a.i[1] & INT64_C(0x800fffffffffffff)) | (m << 52);
+ else if (m <= -54) {
+ a.i[1] &= INT64_C(0x8000000000000000);
+ } else {
+ m += 54;
+ a.i[1] = (a.i[1] & INT64_C(0x800fffffffffffff)) | (m << 52);
+ a.d[1] *= twom54;
+ }
+ }
+ a.i[0] = l;
+ s = a.x;
+ d = __ieee754_sqrt (a.d[0]);
+ c.i[0] = INT64_C(0x2000000000000000)+((k&INT64_C(0x7fe0000000000000))>>1);
+ c.i[1] = 0;
+ i = d;
+ t = 0.5L * (i + s / i);
+ i = 0.5L * (t + s / t);
+ return c.x * i;
+ }
+ else {
+ if (k>=INT64_C(0x7ff0000000000000))
+ /* sqrt (-Inf) = NaN, sqrt (NaN) = NaN, sqrt (+Inf) = +Inf. */
+ return x * x + x;
+ if (x == 0) return x;
+ if (x < 0) return (big1-big1)/(big-big);
+ return tm256*__ieee754_sqrtl(x*t512);
+ }
+}
+strong_alias (__ieee754_sqrtl, __sqrtl_finite)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/gamma_productl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/gamma_productl.c
new file mode 100644
index 0000000000..7e71cb008a
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/gamma_productl.c
@@ -0,0 +1,42 @@
+/* Compute a product of X, X+1, ..., with an error estimate.
+ Copyright (C) 2013-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+#include <math_private.h>
+
+/* Compute the product of X + X_EPS, X + X_EPS + 1, ..., X + X_EPS + N
+ - 1, in the form R * (1 + *EPS) where the return value R is an
+ approximation to the product and *EPS is set to indicate the
+ approximate error in the return value. X is such that all the
+ values X + 1, ..., X + N - 1 are exactly representable, and X_EPS /
+ X is small enough that factors quadratic in it can be
+ neglected. */
+
+long double
+__gamma_productl (long double x, long double x_eps, int n, long double *eps)
+{
+ long double ret = x;
+ *eps = x_eps / x;
+ for (int i = 1; i < n; i++)
+ {
+ *eps += x_eps / (x + i);
+ ret *= x + i;
+ /* FIXME: no error estimates for the multiplication. */
+ }
+ return ret;
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/ieee754.h b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/ieee754.h
new file mode 100644
index 0000000000..7e31128996
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/ieee754.h
@@ -0,0 +1,133 @@
+/* Copyright (C) 1992-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#ifndef _IEEE754_H
+
+#define _IEEE754_H 1
+#include <features.h>
+
+#include <endian.h>
+
+__BEGIN_DECLS
+
+union ieee754_float
+ {
+ float f;
+
+ /* This is the IEEE 754 single-precision format. */
+ struct
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN
+ unsigned int negative:1;
+ unsigned int exponent:8;
+ unsigned int mantissa:23;
+#endif /* Big endian. */
+#if __BYTE_ORDER == __LITTLE_ENDIAN
+ unsigned int mantissa:23;
+ unsigned int exponent:8;
+ unsigned int negative:1;
+#endif /* Little endian. */
+ } ieee;
+
+ /* This format makes it easier to see if a NaN is a signalling NaN. */
+ struct
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN
+ unsigned int negative:1;
+ unsigned int exponent:8;
+ unsigned int quiet_nan:1;
+ unsigned int mantissa:22;
+#endif /* Big endian. */
+#if __BYTE_ORDER == __LITTLE_ENDIAN
+ unsigned int mantissa:22;
+ unsigned int quiet_nan:1;
+ unsigned int exponent:8;
+ unsigned int negative:1;
+#endif /* Little endian. */
+ } ieee_nan;
+ };
+
+#define IEEE754_FLOAT_BIAS 0x7f /* Added to exponent. */
+
+
+union ieee754_double
+ {
+ double d;
+
+ /* This is the IEEE 754 double-precision format. */
+ struct
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN
+ unsigned int negative:1;
+ unsigned int exponent:11;
+ /* Together these comprise the mantissa. */
+ unsigned int mantissa0:20;
+ unsigned int mantissa1:32;
+#endif /* Big endian. */
+#if __BYTE_ORDER == __LITTLE_ENDIAN
+ /* Together these comprise the mantissa. */
+ unsigned int mantissa1:32;
+ unsigned int mantissa0:20;
+ unsigned int exponent:11;
+ unsigned int negative:1;
+#endif /* Little endian. */
+ } ieee;
+
+ /* This format makes it easier to see if a NaN is a signalling NaN. */
+ struct
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN
+ unsigned int negative:1;
+ unsigned int exponent:11;
+ unsigned int quiet_nan:1;
+ /* Together these comprise the mantissa. */
+ unsigned int mantissa0:19;
+ unsigned int mantissa1:32;
+#else
+ /* Together these comprise the mantissa. */
+ unsigned int mantissa1:32;
+ unsigned int mantissa0:19;
+ unsigned int quiet_nan:1;
+ unsigned int exponent:11;
+ unsigned int negative:1;
+#endif
+ } ieee_nan;
+ };
+
+#define IEEE754_DOUBLE_BIAS 0x3ff /* Added to exponent. */
+
+
+/* IBM extended format for long double.
+
+ Each long double is made up of two IEEE doubles. The value of the
+ long double is the sum of the values of the two parts. The most
+ significant part is required to be the value of the long double
+ rounded to the nearest double, as specified by IEEE. For Inf
+ values, the least significant part is required to be one of +0.0 or
+ -0.0. No other requirements are made; so, for example, 1.0 may be
+ represented as (1.0, +0.0) or (1.0, -0.0), and the low part of a
+ NaN is don't-care. */
+
+union ibm_extended_long_double
+ {
+ long double ld;
+ union ieee754_double d[2];
+ };
+
+__END_DECLS
+
+#endif /* ieee754.h */
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/include/bits/iscanonical.h b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/include/bits/iscanonical.h
new file mode 100644
index 0000000000..bee080bd29
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/include/bits/iscanonical.h
@@ -0,0 +1,5 @@
+#include_next <bits/iscanonical.h>
+
+#ifndef _ISOMAC
+libm_hidden_proto (__iscanonicall)
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/k_cosl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/k_cosl.c
new file mode 100644
index 0000000000..0010d6274a
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/k_cosl.c
@@ -0,0 +1,153 @@
+/* Quad-precision floating point cosine on <-pi/4,pi/4>.
+ Copyright (C) 1999-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Jakub Jelinek <jj@ultra.linux.cz>
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+#include <math_private.h>
+
+static const long double c[] = {
+#define ONE c[0]
+ 1.00000000000000000000000000000000000E+00L, /* 3fff0000000000000000000000000000 */
+
+/* cos x ~ ONE + x^2 ( SCOS1 + SCOS2 * x^2 + ... + SCOS4 * x^6 + SCOS5 * x^8 )
+ x in <0,1/256> */
+#define SCOS1 c[1]
+#define SCOS2 c[2]
+#define SCOS3 c[3]
+#define SCOS4 c[4]
+#define SCOS5 c[5]
+-5.00000000000000000000000000000000000E-01L, /* bffe0000000000000000000000000000 */
+ 4.16666666666666666666666666556146073E-02L, /* 3ffa5555555555555555555555395023 */
+-1.38888888888888888888309442601939728E-03L, /* bff56c16c16c16c16c16a566e42c0375 */
+ 2.48015873015862382987049502531095061E-05L, /* 3fefa01a01a019ee02dcf7da2d6d5444 */
+-2.75573112601362126593516899592158083E-07L, /* bfe927e4f5dce637cb0b54908754bde0 */
+
+/* cos x ~ ONE + x^2 ( COS1 + COS2 * x^2 + ... + COS7 * x^12 + COS8 * x^14 )
+ x in <0,0.1484375> */
+#define COS1 c[6]
+#define COS2 c[7]
+#define COS3 c[8]
+#define COS4 c[9]
+#define COS5 c[10]
+#define COS6 c[11]
+#define COS7 c[12]
+#define COS8 c[13]
+-4.99999999999999999999999999999999759E-01L, /* bffdfffffffffffffffffffffffffffb */
+ 4.16666666666666666666666666651287795E-02L, /* 3ffa5555555555555555555555516f30 */
+-1.38888888888888888888888742314300284E-03L, /* bff56c16c16c16c16c16c16a463dfd0d */
+ 2.48015873015873015867694002851118210E-05L, /* 3fefa01a01a01a01a0195cebe6f3d3a5 */
+-2.75573192239858811636614709689300351E-07L, /* bfe927e4fb7789f5aa8142a22044b51f */
+ 2.08767569877762248667431926878073669E-09L, /* 3fe21eed8eff881d1e9262d7adff4373 */
+-1.14707451049343817400420280514614892E-11L, /* bfda9397496922a9601ed3d4ca48944b */
+ 4.77810092804389587579843296923533297E-14L, /* 3fd2ae5f8197cbcdcaf7c3fb4523414c */
+
+/* sin x ~ ONE * x + x^3 ( SSIN1 + SSIN2 * x^2 + ... + SSIN4 * x^6 + SSIN5 * x^8 )
+ x in <0,1/256> */
+#define SSIN1 c[14]
+#define SSIN2 c[15]
+#define SSIN3 c[16]
+#define SSIN4 c[17]
+#define SSIN5 c[18]
+-1.66666666666666666666666666666666659E-01L, /* bffc5555555555555555555555555555 */
+ 8.33333333333333333333333333146298442E-03L, /* 3ff81111111111111111111110fe195d */
+-1.98412698412698412697726277416810661E-04L, /* bff2a01a01a01a01a019e7121e080d88 */
+ 2.75573192239848624174178393552189149E-06L, /* 3fec71de3a556c640c6aaa51aa02ab41 */
+-2.50521016467996193495359189395805639E-08L, /* bfe5ae644ee90c47dc71839de75b2787 */
+};
+
+#define SINCOSL_COS_HI 0
+#define SINCOSL_COS_LO 1
+#define SINCOSL_SIN_HI 2
+#define SINCOSL_SIN_LO 3
+extern const long double __sincosl_table[];
+
+long double
+__kernel_cosl(long double x, long double y)
+{
+ long double h, l, z, sin_l, cos_l_m1;
+ int64_t ix;
+ uint32_t tix, hix, index;
+ double xhi, hhi;
+
+ xhi = ldbl_high (x);
+ EXTRACT_WORDS64 (ix, xhi);
+ tix = ((u_int64_t)ix) >> 32;
+ tix &= ~0x80000000; /* tix = |x|'s high 32 bits */
+ if (tix < 0x3fc30000) /* |x| < 0.1484375 */
+ {
+ /* Argument is small enough to approximate it by a Chebyshev
+ polynomial of degree 16. */
+ if (tix < 0x3c600000) /* |x| < 2^-57 */
+ if (!((int)x)) return ONE; /* generate inexact */
+ z = x * x;
+ return ONE + (z*(COS1+z*(COS2+z*(COS3+z*(COS4+
+ z*(COS5+z*(COS6+z*(COS7+z*COS8))))))));
+ }
+ else
+ {
+ /* So that we don't have to use too large polynomial, we find
+ l and h such that x = l + h, where fabsl(l) <= 1.0/256 with 83
+ possible values for h. We look up cosl(h) and sinl(h) in
+ pre-computed tables, compute cosl(l) and sinl(l) using a
+ Chebyshev polynomial of degree 10(11) and compute
+ cosl(h+l) = cosl(h)cosl(l) - sinl(h)sinl(l). */
+ int six = tix;
+ tix = ((six - 0x3ff00000) >> 4) + 0x3fff0000;
+ index = 0x3ffe - (tix >> 16);
+ hix = (tix + (0x200 << index)) & (0xfffffc00 << index);
+ x = fabsl (x);
+ switch (index)
+ {
+ case 0: index = ((45 << 10) + hix - 0x3ffe0000) >> 8; break;
+ case 1: index = ((13 << 11) + hix - 0x3ffd0000) >> 9; break;
+ default:
+ case 2: index = (hix - 0x3ffc3000) >> 10; break;
+ }
+ hix = (hix << 4) & 0x3fffffff;
+/*
+ The following should work for double but generates the wrong index.
+ For now the code above converts double to ieee extended to compute
+ the index back to double for the h value.
+
+ index = 0x3fe - (tix >> 20);
+ hix = (tix + (0x200 << index)) & (0xfffffc00 << index);
+ if (signbit (x))
+ {
+ x = -x;
+ y = -y;
+ }
+ switch (index)
+ {
+ case 0: index = ((45 << 14) + hix - 0x3fe00000) >> 12; break;
+ case 1: index = ((13 << 15) + hix - 0x3fd00000) >> 13; break;
+ default:
+ case 2: index = (hix - 0x3fc30000) >> 14; break;
+ }
+*/
+ INSERT_WORDS64 (hhi, ((uint64_t)hix) << 32);
+ h = hhi;
+ l = y - (h - x);
+ z = l * l;
+ sin_l = l*(ONE+z*(SSIN1+z*(SSIN2+z*(SSIN3+z*(SSIN4+z*SSIN5)))));
+ cos_l_m1 = z*(SCOS1+z*(SCOS2+z*(SCOS3+z*(SCOS4+z*SCOS5))));
+ return __sincosl_table [index + SINCOSL_COS_HI]
+ + (__sincosl_table [index + SINCOSL_COS_LO]
+ - (__sincosl_table [index + SINCOSL_SIN_HI] * sin_l
+ - __sincosl_table [index + SINCOSL_COS_HI] * cos_l_m1));
+ }
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/k_sincosl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/k_sincosl.c
new file mode 100644
index 0000000000..14b0359c15
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/k_sincosl.c
@@ -0,0 +1,193 @@
+/* Quad-precision floating point sine and cosine on <-pi/4,pi/4>.
+ Copyright (C) 1999-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Jakub Jelinek <jj@ultra.linux.cz>
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <float.h>
+#include <math.h>
+#include <math_private.h>
+
+static const long double c[] = {
+#define ONE c[0]
+ 1.00000000000000000000000000000000000E+00L, /* 3fff0000000000000000000000000000 */
+
+/* cos x ~ ONE + x^2 ( SCOS1 + SCOS2 * x^2 + ... + SCOS4 * x^6 + SCOS5 * x^8 )
+ x in <0,1/256> */
+#define SCOS1 c[1]
+#define SCOS2 c[2]
+#define SCOS3 c[3]
+#define SCOS4 c[4]
+#define SCOS5 c[5]
+-5.00000000000000000000000000000000000E-01L, /* bffe0000000000000000000000000000 */
+ 4.16666666666666666666666666556146073E-02L, /* 3ffa5555555555555555555555395023 */
+-1.38888888888888888888309442601939728E-03L, /* bff56c16c16c16c16c16a566e42c0375 */
+ 2.48015873015862382987049502531095061E-05L, /* 3fefa01a01a019ee02dcf7da2d6d5444 */
+-2.75573112601362126593516899592158083E-07L, /* bfe927e4f5dce637cb0b54908754bde0 */
+
+/* cos x ~ ONE + x^2 ( COS1 + COS2 * x^2 + ... + COS7 * x^12 + COS8 * x^14 )
+ x in <0,0.1484375> */
+#define COS1 c[6]
+#define COS2 c[7]
+#define COS3 c[8]
+#define COS4 c[9]
+#define COS5 c[10]
+#define COS6 c[11]
+#define COS7 c[12]
+#define COS8 c[13]
+-4.99999999999999999999999999999999759E-01L, /* bffdfffffffffffffffffffffffffffb */
+ 4.16666666666666666666666666651287795E-02L, /* 3ffa5555555555555555555555516f30 */
+-1.38888888888888888888888742314300284E-03L, /* bff56c16c16c16c16c16c16a463dfd0d */
+ 2.48015873015873015867694002851118210E-05L, /* 3fefa01a01a01a01a0195cebe6f3d3a5 */
+-2.75573192239858811636614709689300351E-07L, /* bfe927e4fb7789f5aa8142a22044b51f */
+ 2.08767569877762248667431926878073669E-09L, /* 3fe21eed8eff881d1e9262d7adff4373 */
+-1.14707451049343817400420280514614892E-11L, /* bfda9397496922a9601ed3d4ca48944b */
+ 4.77810092804389587579843296923533297E-14L, /* 3fd2ae5f8197cbcdcaf7c3fb4523414c */
+
+/* sin x ~ ONE * x + x^3 ( SSIN1 + SSIN2 * x^2 + ... + SSIN4 * x^6 + SSIN5 * x^8 )
+ x in <0,1/256> */
+#define SSIN1 c[14]
+#define SSIN2 c[15]
+#define SSIN3 c[16]
+#define SSIN4 c[17]
+#define SSIN5 c[18]
+-1.66666666666666666666666666666666659E-01L, /* bffc5555555555555555555555555555 */
+ 8.33333333333333333333333333146298442E-03L, /* 3ff81111111111111111111110fe195d */
+-1.98412698412698412697726277416810661E-04L, /* bff2a01a01a01a01a019e7121e080d88 */
+ 2.75573192239848624174178393552189149E-06L, /* 3fec71de3a556c640c6aaa51aa02ab41 */
+-2.50521016467996193495359189395805639E-08L, /* bfe5ae644ee90c47dc71839de75b2787 */
+
+/* sin x ~ ONE * x + x^3 ( SIN1 + SIN2 * x^2 + ... + SIN7 * x^12 + SIN8 * x^14 )
+ x in <0,0.1484375> */
+#define SIN1 c[19]
+#define SIN2 c[20]
+#define SIN3 c[21]
+#define SIN4 c[22]
+#define SIN5 c[23]
+#define SIN6 c[24]
+#define SIN7 c[25]
+#define SIN8 c[26]
+-1.66666666666666666666666666666666538e-01L, /* bffc5555555555555555555555555550 */
+ 8.33333333333333333333333333307532934e-03L, /* 3ff811111111111111111111110e7340 */
+-1.98412698412698412698412534478712057e-04L, /* bff2a01a01a01a01a01a019e7a626296 */
+ 2.75573192239858906520896496653095890e-06L, /* 3fec71de3a556c7338fa38527474b8f5 */
+-2.50521083854417116999224301266655662e-08L, /* bfe5ae64567f544e16c7de65c2ea551f */
+ 1.60590438367608957516841576404938118e-10L, /* 3fde6124613a811480538a9a41957115 */
+-7.64716343504264506714019494041582610e-13L, /* bfd6ae7f3d5aef30c7bc660b060ef365 */
+ 2.81068754939739570236322404393398135e-15L, /* 3fce9510115aabf87aceb2022a9a9180 */
+};
+
+#define SINCOSL_COS_HI 0
+#define SINCOSL_COS_LO 1
+#define SINCOSL_SIN_HI 2
+#define SINCOSL_SIN_LO 3
+extern const long double __sincosl_table[];
+
+void
+__kernel_sincosl(long double x, long double y, long double *sinx, long double *cosx, int iy)
+{
+ long double h, l, z, sin_l, cos_l_m1;
+ int64_t ix;
+ uint32_t tix, hix, index;
+ double xhi, hhi;
+
+ xhi = ldbl_high (x);
+ EXTRACT_WORDS64 (ix, xhi);
+ tix = ((uint64_t)ix) >> 32;
+ tix &= ~0x80000000; /* tix = |x|'s high 32 bits */
+ if (tix < 0x3fc30000) /* |x| < 0.1484375 */
+ {
+ /* Argument is small enough to approximate it by a Chebyshev
+ polynomial of degree 16(17). */
+ if (tix < 0x3c600000) /* |x| < 2^-57 */
+ {
+ math_check_force_underflow (x);
+ if (!((int)x)) /* generate inexact */
+ {
+ *sinx = x;
+ *cosx = ONE;
+ return;
+ }
+ }
+ z = x * x;
+ *sinx = x + (x * (z*(SIN1+z*(SIN2+z*(SIN3+z*(SIN4+
+ z*(SIN5+z*(SIN6+z*(SIN7+z*SIN8)))))))));
+ *cosx = ONE + (z*(COS1+z*(COS2+z*(COS3+z*(COS4+
+ z*(COS5+z*(COS6+z*(COS7+z*COS8))))))));
+ }
+ else
+ {
+ /* So that we don't have to use too large polynomial, we find
+ l and h such that x = l + h, where fabsl(l) <= 1.0/256 with 83
+ possible values for h. We look up cosl(h) and sinl(h) in
+ pre-computed tables, compute cosl(l) and sinl(l) using a
+ Chebyshev polynomial of degree 10(11) and compute
+ sinl(h+l) = sinl(h)cosl(l) + cosl(h)sinl(l) and
+ cosl(h+l) = cosl(h)cosl(l) - sinl(h)sinl(l). */
+ int six = tix;
+ tix = ((six - 0x3ff00000) >> 4) + 0x3fff0000;
+ index = 0x3ffe - (tix >> 16);
+ hix = (tix + (0x200 << index)) & (0xfffffc00 << index);
+ x = fabsl (x);
+ switch (index)
+ {
+ case 0: index = ((45 << 10) + hix - 0x3ffe0000) >> 8; break;
+ case 1: index = ((13 << 11) + hix - 0x3ffd0000) >> 9; break;
+ default:
+ case 2: index = (hix - 0x3ffc3000) >> 10; break;
+ }
+ hix = (hix << 4) & 0x3fffffff;
+/*
+ The following should work for double but generates the wrong index.
+ For now the code above converts double to ieee extended to compute
+ the index back to double for the h value.
+
+
+ index = 0x3fe - (tix >> 20);
+ hix = (tix + (0x2000 << index)) & (0xffffc000 << index);
+ if (signbit (x))
+ {
+ x = -x;
+ y = -y;
+ }
+ switch (index)
+ {
+ case 0: index = ((45 << 14) + hix - 0x3fe00000) >> 12; break;
+ case 1: index = ((13 << 15) + hix - 0x3fd00000) >> 13; break;
+ default:
+ case 2: index = (hix - 0x3fc30000) >> 14; break;
+ }
+*/
+ INSERT_WORDS64 (hhi, ((uint64_t)hix) << 32);
+ h = hhi;
+ if (iy)
+ l = y - (h - x);
+ else
+ l = x - h;
+ z = l * l;
+ sin_l = l*(ONE+z*(SSIN1+z*(SSIN2+z*(SSIN3+z*(SSIN4+z*SSIN5)))));
+ cos_l_m1 = z*(SCOS1+z*(SCOS2+z*(SCOS3+z*(SCOS4+z*SCOS5))));
+ z = __sincosl_table [index + SINCOSL_SIN_HI]
+ + (__sincosl_table [index + SINCOSL_SIN_LO]
+ + (__sincosl_table [index + SINCOSL_SIN_HI] * cos_l_m1)
+ + (__sincosl_table [index + SINCOSL_COS_HI] * sin_l));
+ *sinx = (ix < 0) ? -z : z;
+ *cosx = __sincosl_table [index + SINCOSL_COS_HI]
+ + (__sincosl_table [index + SINCOSL_COS_LO]
+ - (__sincosl_table [index + SINCOSL_SIN_HI] * sin_l
+ - __sincosl_table [index + SINCOSL_COS_HI] * cos_l_m1));
+ }
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/k_sinl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/k_sinl.c
new file mode 100644
index 0000000000..2138ccf13b
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/k_sinl.c
@@ -0,0 +1,157 @@
+/* Quad-precision floating point sine on <-pi/4,pi/4>.
+ Copyright (C) 1999-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Jakub Jelinek <jj@ultra.linux.cz>
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <float.h>
+#include <math.h>
+#include <math_private.h>
+
+static const long double c[] = {
+#define ONE c[0]
+ 1.00000000000000000000000000000000000E+00L, /* 3fff0000000000000000000000000000 */
+
+/* cos x ~ ONE + x^2 ( SCOS1 + SCOS2 * x^2 + ... + SCOS4 * x^6 + SCOS5 * x^8 )
+ x in <0,1/256> */
+#define SCOS1 c[1]
+#define SCOS2 c[2]
+#define SCOS3 c[3]
+#define SCOS4 c[4]
+#define SCOS5 c[5]
+-5.00000000000000000000000000000000000E-01L, /* bffe0000000000000000000000000000 */
+ 4.16666666666666666666666666556146073E-02L, /* 3ffa5555555555555555555555395023 */
+-1.38888888888888888888309442601939728E-03L, /* bff56c16c16c16c16c16a566e42c0375 */
+ 2.48015873015862382987049502531095061E-05L, /* 3fefa01a01a019ee02dcf7da2d6d5444 */
+-2.75573112601362126593516899592158083E-07L, /* bfe927e4f5dce637cb0b54908754bde0 */
+
+/* sin x ~ ONE * x + x^3 ( SIN1 + SIN2 * x^2 + ... + SIN7 * x^12 + SIN8 * x^14 )
+ x in <0,0.1484375> */
+#define SIN1 c[6]
+#define SIN2 c[7]
+#define SIN3 c[8]
+#define SIN4 c[9]
+#define SIN5 c[10]
+#define SIN6 c[11]
+#define SIN7 c[12]
+#define SIN8 c[13]
+-1.66666666666666666666666666666666538e-01L, /* bffc5555555555555555555555555550 */
+ 8.33333333333333333333333333307532934e-03L, /* 3ff811111111111111111111110e7340 */
+-1.98412698412698412698412534478712057e-04L, /* bff2a01a01a01a01a01a019e7a626296 */
+ 2.75573192239858906520896496653095890e-06L, /* 3fec71de3a556c7338fa38527474b8f5 */
+-2.50521083854417116999224301266655662e-08L, /* bfe5ae64567f544e16c7de65c2ea551f */
+ 1.60590438367608957516841576404938118e-10L, /* 3fde6124613a811480538a9a41957115 */
+-7.64716343504264506714019494041582610e-13L, /* bfd6ae7f3d5aef30c7bc660b060ef365 */
+ 2.81068754939739570236322404393398135e-15L, /* 3fce9510115aabf87aceb2022a9a9180 */
+
+/* sin x ~ ONE * x + x^3 ( SSIN1 + SSIN2 * x^2 + ... + SSIN4 * x^6 + SSIN5 * x^8 )
+ x in <0,1/256> */
+#define SSIN1 c[14]
+#define SSIN2 c[15]
+#define SSIN3 c[16]
+#define SSIN4 c[17]
+#define SSIN5 c[18]
+-1.66666666666666666666666666666666659E-01L, /* bffc5555555555555555555555555555 */
+ 8.33333333333333333333333333146298442E-03L, /* 3ff81111111111111111111110fe195d */
+-1.98412698412698412697726277416810661E-04L, /* bff2a01a01a01a01a019e7121e080d88 */
+ 2.75573192239848624174178393552189149E-06L, /* 3fec71de3a556c640c6aaa51aa02ab41 */
+-2.50521016467996193495359189395805639E-08L, /* bfe5ae644ee90c47dc71839de75b2787 */
+};
+
+#define SINCOSL_COS_HI 0
+#define SINCOSL_COS_LO 1
+#define SINCOSL_SIN_HI 2
+#define SINCOSL_SIN_LO 3
+extern const long double __sincosl_table[];
+
+long double
+__kernel_sinl(long double x, long double y, int iy)
+{
+ long double h, l, z, sin_l, cos_l_m1;
+ int64_t ix;
+ u_int32_t tix, hix, index;
+ double xhi, hhi;
+
+ xhi = ldbl_high (x);
+ EXTRACT_WORDS64 (ix, xhi);
+ tix = ((u_int64_t)ix) >> 32;
+ tix &= ~0x80000000; /* tix = |x|'s high 32 bits */
+ if (tix < 0x3fc30000) /* |x| < 0.1484375 */
+ {
+ /* Argument is small enough to approximate it by a Chebyshev
+ polynomial of degree 17. */
+ if (tix < 0x3c600000) /* |x| < 2^-57 */
+ {
+ math_check_force_underflow (x);
+ if (!((int)x)) return x; /* generate inexact */
+ }
+ z = x * x;
+ return x + (x * (z*(SIN1+z*(SIN2+z*(SIN3+z*(SIN4+
+ z*(SIN5+z*(SIN6+z*(SIN7+z*SIN8)))))))));
+ }
+ else
+ {
+ /* So that we don't have to use too large polynomial, we find
+ l and h such that x = l + h, where fabsl(l) <= 1.0/256 with 83
+ possible values for h. We look up cosl(h) and sinl(h) in
+ pre-computed tables, compute cosl(l) and sinl(l) using a
+ Chebyshev polynomial of degree 10(11) and compute
+ sinl(h+l) = sinl(h)cosl(l) + cosl(h)sinl(l). */
+ int six = tix;
+ tix = ((six - 0x3ff00000) >> 4) + 0x3fff0000;
+ index = 0x3ffe - (tix >> 16);
+ hix = (tix + (0x200 << index)) & (0xfffffc00 << index);
+ x = fabsl (x);
+ switch (index)
+ {
+ case 0: index = ((45 << 10) + hix - 0x3ffe0000) >> 8; break;
+ case 1: index = ((13 << 11) + hix - 0x3ffd0000) >> 9; break;
+ default:
+ case 2: index = (hix - 0x3ffc3000) >> 10; break;
+ }
+ hix = (hix << 4) & 0x3fffffff;
+/*
+ The following should work for double but generates the wrong index.
+ For now the code above converts double to ieee extended to compute
+ the index back to double for the h value.
+
+ index = 0x3fe - (tix >> 20);
+ hix = (tix + (0x2000 << index)) & (0xffffc000 << index);
+ x = fabsl (x);
+ switch (index)
+ {
+ case 0: index = ((45 << 14) + hix - 0x3fe00000) >> 12; break;
+ case 1: index = ((13 << 15) + hix - 0x3fd00000) >> 13; break;
+ default:
+ case 2: index = (hix - 0x3fc30000) >> 14; break;
+ }
+*/
+ INSERT_WORDS64 (hhi, ((uint64_t)hix) << 32);
+ h = hhi;
+ if (iy)
+ l = (ix < 0 ? -y : y) - (h - x);
+ else
+ l = x - h;
+ z = l * l;
+ sin_l = l*(ONE+z*(SSIN1+z*(SSIN2+z*(SSIN3+z*(SSIN4+z*SSIN5)))));
+ cos_l_m1 = z*(SCOS1+z*(SCOS2+z*(SCOS3+z*(SCOS4+z*SCOS5))));
+ z = __sincosl_table [index + SINCOSL_SIN_HI]
+ + (__sincosl_table [index + SINCOSL_SIN_LO]
+ + (__sincosl_table [index + SINCOSL_SIN_HI] * cos_l_m1)
+ + (__sincosl_table [index + SINCOSL_COS_HI] * sin_l));
+ return (ix < 0) ? -z : z;
+ }
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/k_tanl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/k_tanl.c
new file mode 100644
index 0000000000..232e00c345
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/k_tanl.c
@@ -0,0 +1,166 @@
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+/*
+ Long double expansions are
+ Copyright (C) 2001 Stephen L. Moshier <moshier@na-net.ornl.gov>
+ and are incorporated herein by permission of the author. The author
+ reserves the right to distribute this material elsewhere under different
+ copying permissions. These modifications are distributed here under
+ the following terms:
+
+ This 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 2.1 of the License, or (at your option) any later version.
+
+ This 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 this library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+/* __kernel_tanl( x, y, k )
+ * kernel tan function on [-pi/4, pi/4], pi/4 ~ 0.7854
+ * Input x is assumed to be bounded by ~pi/4 in magnitude.
+ * Input y is the tail of x.
+ * Input k indicates whether tan (if k=1) or
+ * -1/tan (if k= -1) is returned.
+ *
+ * Algorithm
+ * 1. Since tan(-x) = -tan(x), we need only to consider positive x.
+ * 2. if x < 2^-57, return x with inexact if x!=0.
+ * 3. tan(x) is approximated by a rational form x + x^3 / 3 + x^5 R(x^2)
+ * on [0,0.67433].
+ *
+ * Note: tan(x+y) = tan(x) + tan'(x)*y
+ * ~ tan(x) + (1+x*x)*y
+ * Therefore, for better accuracy in computing tan(x+y), let
+ * r = x^3 * R(x^2)
+ * then
+ * tan(x+y) = x + (x^3 / 3 + (x^2 *(r+y)+y))
+ *
+ * 4. For x in [0.67433,pi/4], let y = pi/4 - x, then
+ * tan(x) = tan(pi/4-y) = (1-tan(y))/(1+tan(y))
+ * = 1 - 2*(tan(y) - (tan(y)^2)/(1+tan(y)))
+ */
+
+#include <float.h>
+#include <math.h>
+#include <math_private.h>
+#include <libc-diag.h>
+
+static const long double
+ one = 1.0L,
+ pio4hi = 7.8539816339744830961566084581987569936977E-1L,
+ pio4lo = 2.1679525325309452561992610065108379921906E-35L,
+
+ /* tan x = x + x^3 / 3 + x^5 T(x^2)/U(x^2)
+ 0 <= x <= 0.6743316650390625
+ Peak relative error 8.0e-36 */
+ TH = 3.333333333333333333333333333333333333333E-1L,
+ T0 = -1.813014711743583437742363284336855889393E7L,
+ T1 = 1.320767960008972224312740075083259247618E6L,
+ T2 = -2.626775478255838182468651821863299023956E4L,
+ T3 = 1.764573356488504935415411383687150199315E2L,
+ T4 = -3.333267763822178690794678978979803526092E-1L,
+
+ U0 = -1.359761033807687578306772463253710042010E8L,
+ U1 = 6.494370630656893175666729313065113194784E7L,
+ U2 = -4.180787672237927475505536849168729386782E6L,
+ U3 = 8.031643765106170040139966622980914621521E4L,
+ U4 = -5.323131271912475695157127875560667378597E2L;
+ /* 1.000000000000000000000000000000000000000E0 */
+
+
+long double
+__kernel_tanl (long double x, long double y, int iy)
+{
+ long double z, r, v, w, s;
+ int32_t ix, sign, hx, lx;
+ double xhi;
+
+ xhi = ldbl_high (x);
+ EXTRACT_WORDS (hx, lx, xhi);
+ ix = hx & 0x7fffffff;
+ if (ix < 0x3c600000) /* x < 2**-57 */
+ {
+ if ((int) x == 0) /* generate inexact */
+ {
+ if ((ix | lx | (iy + 1)) == 0)
+ return one / fabs (x);
+ else if (iy == 1)
+ {
+ math_check_force_underflow (x);
+ return x;
+ }
+ else
+ return -one / x;
+ }
+ }
+ if (ix >= 0x3fe59420) /* |x| >= 0.6743316650390625 */
+ {
+ if ((hx & 0x80000000) != 0)
+ {
+ x = -x;
+ y = -y;
+ sign = -1;
+ }
+ else
+ sign = 1;
+ z = pio4hi - x;
+ w = pio4lo - y;
+ x = z + w;
+ y = 0.0;
+ }
+ z = x * x;
+ r = T0 + z * (T1 + z * (T2 + z * (T3 + z * T4)));
+ v = U0 + z * (U1 + z * (U2 + z * (U3 + z * (U4 + z))));
+ r = r / v;
+
+ s = z * x;
+ r = y + z * (s * r + y);
+ r += TH * s;
+ w = x + r;
+ if (ix >= 0x3fe59420)
+ {
+ v = (long double) iy;
+ w = (v - 2.0 * (x - (w * w / (w + v) - r)));
+ /* SIGN is set for arguments that reach this code, but not
+ otherwise, resulting in warnings that it may be used
+ uninitialized although in the cases where it is used it has
+ always been set. */
+ DIAG_PUSH_NEEDS_COMMENT;
+ DIAG_IGNORE_NEEDS_COMMENT (5, "-Wmaybe-uninitialized");
+ if (sign < 0)
+ w = -w;
+ DIAG_POP_NEEDS_COMMENT;
+ return w;
+ }
+ if (iy == 1)
+ return w;
+ else
+ { /* if allow error up to 2 ulp,
+ simply return -1.0/(x+r) here */
+ /* compute -1.0/(x+r) accurately */
+ long double u1, z1;
+
+ u1 = ldbl_high (w);
+ v = r - (u1 - x); /* u1+v = r+x */
+ z = -1.0 / w;
+ z1 = ldbl_high (z);
+ s = 1.0 + z1 * u1;
+ return z1 + z * (s + z1 * v);
+ }
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/ldbl2mpn.c b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/ldbl2mpn.c
new file mode 100644
index 0000000000..4146e5c2d4
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/ldbl2mpn.c
@@ -0,0 +1,197 @@
+/* Copyright (C) 1995-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include "gmp.h"
+#include "gmp-impl.h"
+#include "longlong.h"
+#include <ieee754.h>
+#include <float.h>
+#include <math.h>
+#include <stdlib.h>
+
+/* Convert a `long double' in IBM extended format to a multi-precision
+ integer representing the significand scaled up by its number of
+ bits (106 for long double) and an integral power of two (MPN
+ frexpl). */
+
+
+/* When signs differ, the actual value is the difference between the
+ significant double and the less significant double. Sometimes a
+ bit can be lost when we borrow from the significant mantissa. */
+#define EXTRA_INTERNAL_PRECISION (7)
+
+mp_size_t
+__mpn_extract_long_double (mp_ptr res_ptr, mp_size_t size,
+ int *expt, int *is_neg,
+ long double value)
+{
+ union ibm_extended_long_double u;
+ unsigned long long hi, lo;
+ int ediff;
+
+ u.ld = value;
+
+ *is_neg = u.d[0].ieee.negative;
+ *expt = (int) u.d[0].ieee.exponent - IEEE754_DOUBLE_BIAS;
+
+ lo = ((long long) u.d[1].ieee.mantissa0 << 32) | u.d[1].ieee.mantissa1;
+ hi = ((long long) u.d[0].ieee.mantissa0 << 32) | u.d[0].ieee.mantissa1;
+
+ /* Hold 7 extra bits of precision in the mantissa. This allows
+ the normalizing shifts below to prevent losing precision when
+ the signs differ and the exponents are sufficiently far apart. */
+ lo <<= EXTRA_INTERNAL_PRECISION;
+
+ /* If the lower double is not a denormal or zero then set the hidden
+ 53rd bit. */
+ if (u.d[1].ieee.exponent != 0)
+ lo |= 1ULL << (52 + EXTRA_INTERNAL_PRECISION);
+ else
+ lo = lo << 1;
+
+ /* The lower double is normalized separately from the upper. We may
+ need to adjust the lower manitissa to reflect this. */
+ ediff = u.d[0].ieee.exponent - u.d[1].ieee.exponent - 53;
+ if (ediff > 0)
+ {
+ if (ediff < 64)
+ lo = lo >> ediff;
+ else
+ lo = 0;
+ }
+ else if (ediff < 0)
+ lo = lo << -ediff;
+
+ /* The high double may be rounded and the low double reflects the
+ difference between the long double and the rounded high double
+ value. This is indicated by a differnce between the signs of the
+ high and low doubles. */
+ if (u.d[0].ieee.negative != u.d[1].ieee.negative
+ && lo != 0)
+ {
+ lo = (1ULL << (53 + EXTRA_INTERNAL_PRECISION)) - lo;
+ if (hi == 0)
+ {
+ /* we have a borrow from the hidden bit, so shift left 1. */
+ hi = 0x000ffffffffffffeLL | (lo >> (52 + EXTRA_INTERNAL_PRECISION));
+ lo = 0x0fffffffffffffffLL & (lo << 1);
+ (*expt)--;
+ }
+ else
+ hi--;
+ }
+#if BITS_PER_MP_LIMB == 32
+ /* Combine the mantissas to be contiguous. */
+ res_ptr[0] = lo >> EXTRA_INTERNAL_PRECISION;
+ res_ptr[1] = (hi << (53 - 32)) | (lo >> (32 + EXTRA_INTERNAL_PRECISION));
+ res_ptr[2] = hi >> 11;
+ res_ptr[3] = hi >> (32 + 11);
+ #define N 4
+#elif BITS_PER_MP_LIMB == 64
+ /* Combine the two mantissas to be contiguous. */
+ res_ptr[0] = (hi << 53) | (lo >> EXTRA_INTERNAL_PRECISION);
+ res_ptr[1] = hi >> 11;
+ #define N 2
+#else
+ #error "mp_limb size " BITS_PER_MP_LIMB "not accounted for"
+#endif
+/* The format does not fill the last limb. There are some zeros. */
+#define NUM_LEADING_ZEROS (BITS_PER_MP_LIMB \
+ - (LDBL_MANT_DIG - ((N - 1) * BITS_PER_MP_LIMB)))
+
+ if (u.d[0].ieee.exponent == 0)
+ {
+ /* A biased exponent of zero is a special case.
+ Either it is a zero or it is a denormal number. */
+ if (res_ptr[0] == 0 && res_ptr[1] == 0
+ && res_ptr[N - 2] == 0 && res_ptr[N - 1] == 0) /* Assumes N<=4. */
+ /* It's zero. */
+ *expt = 0;
+ else
+ {
+ /* It is a denormal number, meaning it has no implicit leading
+ one bit, and its exponent is in fact the format minimum. We
+ use DBL_MIN_EXP instead of LDBL_MIN_EXP below because the
+ latter describes the properties of both parts together, but
+ the exponent is computed from the high part only. */
+ int cnt;
+
+#if N == 2
+ if (res_ptr[N - 1] != 0)
+ {
+ count_leading_zeros (cnt, res_ptr[N - 1]);
+ cnt -= NUM_LEADING_ZEROS;
+ res_ptr[N - 1] = res_ptr[N - 1] << cnt
+ | (res_ptr[0] >> (BITS_PER_MP_LIMB - cnt));
+ res_ptr[0] <<= cnt;
+ *expt = DBL_MIN_EXP - 1 - cnt;
+ }
+ else
+ {
+ count_leading_zeros (cnt, res_ptr[0]);
+ if (cnt >= NUM_LEADING_ZEROS)
+ {
+ res_ptr[N - 1] = res_ptr[0] << (cnt - NUM_LEADING_ZEROS);
+ res_ptr[0] = 0;
+ }
+ else
+ {
+ res_ptr[N - 1] = res_ptr[0] >> (NUM_LEADING_ZEROS - cnt);
+ res_ptr[0] <<= BITS_PER_MP_LIMB - (NUM_LEADING_ZEROS - cnt);
+ }
+ *expt = DBL_MIN_EXP - 1
+ - (BITS_PER_MP_LIMB - NUM_LEADING_ZEROS) - cnt;
+ }
+#else
+ int j, k, l;
+
+ for (j = N - 1; j > 0; j--)
+ if (res_ptr[j] != 0)
+ break;
+
+ count_leading_zeros (cnt, res_ptr[j]);
+ cnt -= NUM_LEADING_ZEROS;
+ l = N - 1 - j;
+ if (cnt < 0)
+ {
+ cnt += BITS_PER_MP_LIMB;
+ l--;
+ }
+ if (!cnt)
+ for (k = N - 1; k >= l; k--)
+ res_ptr[k] = res_ptr[k-l];
+ else
+ {
+ for (k = N - 1; k > l; k--)
+ res_ptr[k] = res_ptr[k-l] << cnt
+ | res_ptr[k-l-1] >> (BITS_PER_MP_LIMB - cnt);
+ res_ptr[k--] = res_ptr[0] << cnt;
+ }
+
+ for (; k >= 0; k--)
+ res_ptr[k] = 0;
+ *expt = DBL_MIN_EXP - 1 - l * BITS_PER_MP_LIMB - cnt;
+#endif
+ }
+ }
+ else
+ /* Add the implicit leading one bit for a normalized number. */
+ res_ptr[N - 1] |= (mp_limb_t) 1 << (LDBL_MANT_DIG - 1
+ - ((N - 1) * BITS_PER_MP_LIMB));
+
+ return N;
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/lgamma_negl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/lgamma_negl.c
new file mode 100644
index 0000000000..638812c50b
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/lgamma_negl.c
@@ -0,0 +1,532 @@
+/* lgammal expanding around zeros.
+ Copyright (C) 2015-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <float.h>
+#include <math.h>
+#include <math_private.h>
+
+static const long double lgamma_zeros[][2] =
+ {
+ { -0x2.74ff92c01f0d82abec9f315f1ap+0L, -0x7.12c334804d9a79cb5d46094d46p-112L },
+ { -0x2.bf6821437b20197995a4b4641fp+0L, 0x5.140b4ff4b7d6069e1bd7acc196p-108L },
+ { -0x3.24c1b793cb35efb8be699ad3dap+0L, 0x4.59abab3480539f1c0e926287cp-108L },
+ { -0x3.f48e2a8f85fca170d456129123p+0L, -0x6.cc320a4887d1cb4c711828a75ep-108L },
+ { -0x4.0a139e16656030c39f0b0de182p+0L, 0xe.d53e84029416e1242006b2b3dp-108L },
+ { -0x4.fdd5de9bbabf3510d0aa407698p+0L, -0x8.501d7d78125286f78d1e501f14p-108L },
+ { -0x5.021a95fc2db6432a4c56e5953ap+0L, 0xb.2133950fbcf2b01a8b9058dcccp-108L },
+ { -0x5.ffa4bd647d0357dd4ed62cbd32p+0L, 0x1.2071c071a2145d2982428f2269p-108L },
+ { -0x6.005ac9625f233b607c2d96d164p+0L, 0x7.a347953a96cbf30e1a0db20856p-108L },
+ { -0x6.fff2fddae1bbff3d626b65c24p+0L, 0x2.de0bfcff5c457ebcf4d3ad9674p-108L },
+ { -0x7.000cff7b7f87adf4482dcdb988p+0L, 0x7.d54d99e35a74d6407b80292df2p-108L },
+ { -0x7.fffe5fe05673c3ca9e82b522bp+0L, -0xc.a9d2e8837cd1f14bd3d05002e4p-108L },
+ { -0x8.0001a01459fc9f60cb3cec1cecp+0L, -0x8.576677ca538d88084310983b8p-108L },
+ { -0x8.ffffd1c425e80ffc864e957494p+0L, 0x1.a6181dfdef1807e3087e4bb163p-104L },
+ { -0x9.00002e3bb47d86d6d843fedc34p+0L, -0x1.1deb7ad09ec5e9d6e8ae2d548bp-104L },
+ { -0x9.fffffb606bdfdcd062ae77a504p+0L, -0x1.47c69d2eb6f33d170fce38ff818p-104L },
+ { -0xa.0000049f93bb9927b45d95e154p+0L, -0x4.1e03086db9146a9287bd4f2172p-108L },
+ { -0xa.ffffff9466e9f1b36dacd2adbcp+0L, -0x1.18d05a4e458062f3f95345a4dap-104L },
+ { -0xb.0000006b9915315d965a6ffea4p+0L, -0xe.4bea39000dcc1848023c5f6bdcp-112L },
+ { -0xb.fffffff7089387387de41acc3cp+0L, -0x1.3c978bd839c8c428b5efcf91ef8p-104L },
+ { -0xc.00000008f76c7731567c0f025p+0L, -0xf.387920df5675833859190eb128p-108L },
+ { -0xc.ffffffff4f6dcf617f97a5ffc8p+0L, 0xa.82ab72d76f32eaee2d1a42ed5p-108L },
+ { -0xd.00000000b092309c06683dd1b8p+0L, -0x1.03e3700857a15c19ac5a611de98p-104L },
+ { -0xd.fffffffff36345ab9e184a3e08p+0L, -0x1.d1176dc48e47f62d917973dd45p-104L },
+ { -0xe.000000000c9cba545e94e75ec4p+0L, -0x1.718f753e2501e757a17cf2ecbfp-104L },
+ { -0xe.ffffffffff28c060c6604ef304p+0L, 0x8.e0762c8ca8361c23e8393919c4p-108L },
+ { -0xf.0000000000d73f9f399bd0e42p+0L, -0xf.85e9ee31b0b890744fc0e3fbcp-108L },
+ { -0xf.fffffffffff28c060c6621f514p+0L, 0x1.18d1b2eec9d960bd9adc5be5f6p-104L },
+ { -0x1.000000000000d73f9f399da1428p+4L, 0x3.406c46e0e88305d2800f0e414cp-104L },
+ { -0x1.0ffffffffffff3569c47e7a93ep+4L, -0x1.c46a08a2e008a998ebabb8087fp-104L },
+ { -0x1.1000000000000ca963b81856888p+4L, -0x7.6ca5a3a64ec15db0a95caf2cap-108L },
+ { -0x1.1fffffffffffff4bec3ce23413p+4L, -0x2.d08b2b726187c841cb92cd5222p-104L },
+ { -0x1.20000000000000b413c31dcbec8p+4L, -0x2.4c3b2ffacbb4932f18dceedfd7p-104L },
+ { -0x1.2ffffffffffffff685b25cbf5f8p+4L, 0x2.ba3126cd1c7b7a0822d694705cp-104L },
+ { -0x1.30000000000000097a4da340a08p+4L, -0x2.b81b7b1f1f001c72bf914141efp-104L },
+ { -0x1.3fffffffffffffff86af516ff8p+4L, 0x8.9429818df2a87abafd48248a2p-108L },
+ { -0x1.40000000000000007950ae9008p+4L, -0x8.9413ccc8a353fda263f8ce973cp-108L },
+ { -0x1.4ffffffffffffffffa391c4249p+4L, 0x3.d5c63022b62b5484ba346524dbp-104L },
+ { -0x1.500000000000000005c6e3bdb7p+4L, -0x3.d5c62f55ed5322b2685c5e9a52p-104L },
+ { -0x1.5fffffffffffffffffbcc71a49p+4L, -0x2.01eb5aeb96c74d7ad25e060529p-104L },
+ { -0x1.6000000000000000004338e5b7p+4L, 0x2.01eb5aec04b2f2eb663e4e3d8ap-104L },
+ { -0x1.6ffffffffffffffffffd13c97d8p+4L, -0x1.d38fcc4d08d6fe5aa56ab04308p-104L },
+ { -0x1.70000000000000000002ec36828p+4L, 0x1.d38fcc4d090cee2f5d0b69a99cp-104L },
+ { -0x1.7fffffffffffffffffffe0d31p+4L, 0x1.972f577cca4b4c8cb1dc14001bp-104L },
+ { -0x1.800000000000000000001f2cfp+4L, -0x1.972f577cca4b3442e35f0040b38p-104L },
+ { -0x1.8ffffffffffffffffffffec0c3p+4L, -0x3.22e9a0572b1bb5b95f346a92d6p-104L },
+ { -0x1.90000000000000000000013f3dp+4L, 0x3.22e9a0572b1bb5c371ddb35617p-104L },
+ { -0x1.9ffffffffffffffffffffff3b88p+4L, -0x3.d01cad8d32e386fd783e97296dp-104L },
+ { -0x1.a0000000000000000000000c478p+4L, 0x3.d01cad8d32e386fd7c1ab8c1fep-104L },
+ { -0x1.afffffffffffffffffffffff8b8p+4L, -0x1.538f48cc5737d5979c39db806c8p-104L },
+ { -0x1.b00000000000000000000000748p+4L, 0x1.538f48cc5737d5979c3b3a6bdap-104L },
+ { -0x1.bffffffffffffffffffffffffcp+4L, 0x2.862898d42174dcf171470d8c8cp-104L },
+ { -0x1.c0000000000000000000000004p+4L, -0x2.862898d42174dcf171470d18bap-104L },
+ { -0x1.dp+4L, 0x2.4b3f31686b15af57c61ceecdf4p-104L },
+ { -0x1.dp+4L, -0x2.4b3f31686b15af57c61ceecdd1p-104L },
+ { -0x1.ep+4L, 0x1.3932c5047d60e60caded4c298ap-108L },
+ { -0x1.ep+4L, -0x1.3932c5047d60e60caded4c29898p-108L },
+ { -0x1.fp+4L, 0xa.1a6973c1fade2170f7237d36p-116L },
+ { -0x1.fp+4L, -0xa.1a6973c1fade2170f7237d36p-116L },
+ { -0x2p+4L, 0x5.0d34b9e0fd6f10b87b91be9bp-120L },
+ { -0x2p+4L, -0x5.0d34b9e0fd6f10b87b91be9bp-120L },
+ { -0x2.1p+4L, 0x2.73024a9ba1aa36a7059bff52e8p-124L },
+ { -0x2.1p+4L, -0x2.73024a9ba1aa36a7059bff52e8p-124L },
+ { -0x2.2p+4L, 0x1.2710231c0fd7a13f8a2b4af9d68p-128L },
+ { -0x2.2p+4L, -0x1.2710231c0fd7a13f8a2b4af9d68p-128L },
+ { -0x2.3p+4L, 0x8.6e2ce38b6c8f9419e3fad3f03p-136L },
+ { -0x2.3p+4L, -0x8.6e2ce38b6c8f9419e3fad3f03p-136L },
+ { -0x2.4p+4L, 0x3.bf30652185952560d71a254e4fp-140L },
+ { -0x2.4p+4L, -0x3.bf30652185952560d71a254e4fp-140L },
+ { -0x2.5p+4L, 0x1.9ec8d1c94e85af4c78b15c3d8ap-144L },
+ { -0x2.5p+4L, -0x1.9ec8d1c94e85af4c78b15c3d8ap-144L },
+ { -0x2.6p+4L, 0xa.ea565ce061d57489e9b8527628p-152L },
+ { -0x2.6p+4L, -0xa.ea565ce061d57489e9b8527628p-152L },
+ { -0x2.7p+4L, 0x4.7a6512692eb37804111dabad3p-156L },
+ { -0x2.7p+4L, -0x4.7a6512692eb37804111dabad3p-156L },
+ { -0x2.8p+4L, 0x1.ca8ed42a12ae3001a07244abadp-160L },
+ { -0x2.8p+4L, -0x1.ca8ed42a12ae3001a07244abadp-160L },
+ { -0x2.9p+4L, 0xb.2f30e1ce812063f12e7e8d8d98p-168L },
+ { -0x2.9p+4L, -0xb.2f30e1ce812063f12e7e8d8d98p-168L },
+ { -0x2.ap+4L, 0x4.42bd49d4c37a0db136489772e4p-172L },
+ { -0x2.ap+4L, -0x4.42bd49d4c37a0db136489772e4p-172L },
+ { -0x2.bp+4L, 0x1.95db45257e5122dcbae56def37p-176L },
+ { -0x2.bp+4L, -0x1.95db45257e5122dcbae56def37p-176L },
+ { -0x2.cp+4L, 0x9.3958d81ff63527ecf993f3fb7p-184L },
+ { -0x2.cp+4L, -0x9.3958d81ff63527ecf993f3fb7p-184L },
+ { -0x2.dp+4L, 0x3.47970e4440c8f1c058bd238c99p-188L },
+ { -0x2.dp+4L, -0x3.47970e4440c8f1c058bd238c99p-188L },
+ { -0x2.ep+4L, 0x1.240804f65951062ca46e4f25c6p-192L },
+ { -0x2.ep+4L, -0x1.240804f65951062ca46e4f25c6p-192L },
+ { -0x2.fp+4L, 0x6.36a382849fae6de2d15362d8a4p-200L },
+ { -0x2.fp+4L, -0x6.36a382849fae6de2d15362d8a4p-200L },
+ { -0x3p+4L, 0x2.123680d6dfe4cf4b9b1bcb9d8cp-204L },
+ };
+
+static const long double e_hi = 0x2.b7e151628aed2a6abf7158809dp+0L;
+static const long double e_lo = -0xb.0c389d18e9f0c74b25a9587b28p-112L;
+
+/* Coefficients B_2k / 2k(2k-1) of x^-(2k-1) in Stirling's
+ approximation to lgamma function. */
+
+static const long double lgamma_coeff[] =
+ {
+ 0x1.555555555555555555555555558p-4L,
+ -0xb.60b60b60b60b60b60b60b60b6p-12L,
+ 0x3.4034034034034034034034034p-12L,
+ -0x2.7027027027027027027027027p-12L,
+ 0x3.72a3c5631fe46ae1d4e700dca9p-12L,
+ -0x7.daac36664f1f207daac36664f2p-12L,
+ 0x1.a41a41a41a41a41a41a41a41a4p-8L,
+ -0x7.90a1b2c3d4e5f708192a3b4c5ep-8L,
+ 0x2.dfd2c703c0cfff430edfd2c704p-4L,
+ -0x1.6476701181f39edbdb9ce625988p+0L,
+ 0xd.672219167002d3a7a9c886459cp+0L,
+ -0x9.cd9292e6660d55b3f712eb9e08p+4L,
+ 0x8.911a740da740da740da740da74p+8L,
+ -0x8.d0cc570e255bf59ff6eec24b48p+12L,
+ 0xa.8d1044d3708d1c219ee4fdc448p+16L,
+ -0xe.8844d8a169abbc406169abbc4p+20L,
+ 0x1.6d29a0f6433b79890cede624338p+28L,
+ -0x2.88a233b3c8cddaba9809357126p+32L,
+ 0x5.0dde6f27500939a85c40939a86p+36L,
+ -0xb.4005bde03d4642a243581714bp+40L,
+ 0x1.bc8cd6f8f1f755c78753cdb5d6p+48L,
+ -0x4.bbebb143bb94de5a0284fa7ec4p+52L,
+ 0xe.2e1337f5af0bed90b6b0a352d4p+56L,
+ -0x2.e78250162b62405ad3e4bfe61bp+64L,
+ 0xa.5f7eef9e71ac7c80326ab4cc8cp+68L,
+ -0x2.83be0395e550213369924971b2p+76L,
+ };
+
+#define NCOEFF (sizeof (lgamma_coeff) / sizeof (lgamma_coeff[0]))
+
+/* Polynomial approximations to (|gamma(x)|-1)(x-n)/(x-x0), where n is
+ the integer end-point of the half-integer interval containing x and
+ x0 is the zero of lgamma in that half-integer interval. Each
+ polynomial is expressed in terms of x-xm, where xm is the midpoint
+ of the interval for which the polynomial applies. */
+
+static const long double poly_coeff[] =
+ {
+ /* Interval [-2.125, -2] (polynomial degree 21). */
+ -0x1.0b71c5c54d42eb6c17f30b7aa9p+0L,
+ -0xc.73a1dc05f34951602554c6d76cp-4L,
+ -0x1.ec841408528b51473e6c42f1c58p-4L,
+ -0xe.37c9da26fc3c9a3c1844c04b84p-4L,
+ -0x1.03cd87c519305703b00b046ce4p-4L,
+ -0xe.ae9ada65e09aa7f1c817c91048p-4L,
+ 0x9.b11855a4864b571b6a4f571c88p-8L,
+ -0xe.f28c133e697a95ba2dabb97584p-4L,
+ 0x2.6ec14a1c586a7ddb6c4be90fe1p-4L,
+ -0xf.57cab973e14496f0900851c0d4p-4L,
+ 0x4.5b0fc25f16b0df37175495c70cp-4L,
+ -0xf.f50e59f1a8fb8c402091e3cd3cp-4L,
+ 0x6.5f5eae1681d1e50e575c3d4d36p-4L,
+ -0x1.0d2422dac7ea8a52db6bf0d14fp+0L,
+ 0x8.820008f221eae5a36e15913bacp-4L,
+ -0x1.1f492eec53b9481ea23a7e944ep+0L,
+ 0xa.cb55b4d662945e8cf1f81ee5b4p-4L,
+ -0x1.3616863983e131d7935700ccd48p+0L,
+ 0xd.43c783ebab66074d18709d5cap-4L,
+ -0x1.51d5dbc56bc85976871c6e51f78p+0L,
+ 0x1.06253af656eb6b2ed998387aabp+0L,
+ -0x1.7d910a0aadc63d7a1ef7690dbb8p+0L,
+ /* Interval [-2.25, -2.125] (polynomial degree 22). */
+ -0xf.2930890d7d675a80c36afb0fd4p-4L,
+ -0xc.a5cfde054eab5c6770daeca684p-4L,
+ 0x3.9c9e0fdebb07cdf89c61d434adp-4L,
+ -0x1.02a5ad35605fcf4af65a67fe8a8p+0L,
+ 0x9.6e9b1185bb48be9de18d8bbeb8p-4L,
+ -0x1.4d8332f3cfbfa116fdf648372cp+0L,
+ 0x1.1c0c8cb4d9f4b1d495142b53ebp+0L,
+ -0x1.c9a6f5ae9130ccfb9b7e39136f8p+0L,
+ 0x1.d7e9307fd58a2e85209d0e83eap+0L,
+ -0x2.921cb3473d96462f22c171712fp+0L,
+ 0x2.e8d59113b6f3fc1ed3b556b62cp+0L,
+ -0x3.cbab931624e3b6cf299cea1213p+0L,
+ 0x4.7d9f0f05d2c4cf91e41ea1f048p+0L,
+ -0x5.ade9cba31affa276fe516135eep+0L,
+ 0x6.dc983a62cf6ddc935ae3c5b9ap+0L,
+ -0x8.8d9ed100b2a7813f82cbd83e3cp+0L,
+ 0xa.6fa0926892835a9a29c9b8db8p+0L,
+ -0xc.ebc90aff4ffe319d70bef0d61p+0L,
+ 0xf.d69cf50ab226bacece014c0b44p+0L,
+ -0x1.389964ac7cfef4578eec028e5c8p+4L,
+ 0x1.7ff0d2090164e25901f97cab3bp+4L,
+ -0x1.e9e6d282da6bd004619d073071p+4L,
+ 0x2.5d719ab6ad4be8b5c32b0fba2ap+4L,
+ /* Interval [-2.375, -2.25] (polynomial degree 24). */
+ -0xd.7d28d505d6181218a25f31d5e4p-4L,
+ -0xe.69649a3040985140cdf946827cp-4L,
+ 0xb.0d74a2827d053a8d4459500f88p-4L,
+ -0x1.924b0922853617cac181b097e48p+0L,
+ 0x1.d49b12bccf0a568582e2dbf8ep+0L,
+ -0x3.0898bb7d8c4093e6360d26bbc5p+0L,
+ 0x4.207a6cac711cb538684f74619ep+0L,
+ -0x6.39ee63ea4fb1dcac86ab337e3cp+0L,
+ 0x8.e2e2556a797b64a1b9328a3978p+0L,
+ -0xd.0e83ac82552ee5596df1706ff4p+0L,
+ 0x1.2e4525e0ce666e48fac68ddcdep+4L,
+ -0x1.b8e350d6a8f6597ed2eb3c2eff8p+4L,
+ 0x2.805cd69b9197ee0089dd1b1c46p+4L,
+ -0x3.a42585423e4d00db075f2d687ep+4L,
+ 0x5.4b4f409f874e2a7dcd8aa4a62ap+4L,
+ -0x7.b3c5829962ca1b95535db9cc4ep+4L,
+ 0xb.33b7b928986ec6b219e2e15a98p+4L,
+ -0x1.04b76dec4115106bb16316d9cd8p+8L,
+ 0x1.7b366d8d46f179d5c5302d6534p+8L,
+ -0x2.2799846ddc54813d40da622b99p+8L,
+ 0x3.2253a862c1078a3ccabac65bebp+8L,
+ -0x4.8d92cebc90a4a29816f4952f4ep+8L,
+ 0x6.9ebb8f9d72c66c80c4f4492e7ap+8L,
+ -0xa.2850a483f9ba0e43f5848b5cd8p+8L,
+ 0xe.e1b6bdce83b27944edab8c428p+8L,
+ /* Interval [-2.5, -2.375] (polynomial degree 25). */
+ -0xb.74ea1bcfff94b2c01afba9daa8p-4L,
+ -0x1.2a82bd590c37538cab143308e3p+0L,
+ 0x1.88020f828b966fec66b8648d16p+0L,
+ -0x3.32279f040eb694970e9db0308bp+0L,
+ 0x5.57ac82517767e68a72142041b4p+0L,
+ -0x9.c2aedcfe22833de438786dc658p+0L,
+ 0x1.12c132f1f5577f99dbfb7ecb408p+4L,
+ -0x1.ea94e26628a3de3557dc349db8p+4L,
+ 0x3.66b4ac4fa582f5cbe7e19d10c6p+4L,
+ -0x6.0cf746a9cf4cbcb0004cb01f66p+4L,
+ 0xa.c102ef2c20d5a313cbfd37f5b8p+4L,
+ -0x1.31ebff06e8f08f58d1c35eacfdp+8L,
+ 0x2.1fd6f0c0e788660ba1f1573722p+8L,
+ -0x3.c6d760404305e75356a86a11d6p+8L,
+ 0x6.b6d18e0c31a2ba4d5b5ac78676p+8L,
+ -0xb.efaf5426343e6b41a823ed6c44p+8L,
+ 0x1.53852db2fe01305b9f336d132d8p+12L,
+ -0x2.5b977cb2b568382e71ca93a36bp+12L,
+ 0x4.310d090a6119c7d85a2786a616p+12L,
+ -0x7.73a518387ef1d4d04917dfb25cp+12L,
+ 0xd.3f965798601aabd24bdaa6e68cp+12L,
+ -0x1.78db20b0b166480c93cf0031198p+16L,
+ 0x2.9be0068b65cf13bd1cf71f0eccp+16L,
+ -0x4.a221230466b9cd51d5b811d6b6p+16L,
+ 0x8.f6f8c13e2b52aa3e30a4ce6898p+16L,
+ -0x1.02145337ff16b44fa7c2adf7f28p+20L,
+ /* Interval [-2.625, -2.5] (polynomial degree 26). */
+ -0x3.d10108c27ebafad533c20eac33p-4L,
+ 0x1.cd557caff7d2b2085f41dbec538p+0L,
+ 0x3.819b4856d399520dad9776ebb9p+0L,
+ 0x6.8505cbad03dc34c5e42e89c4b4p+0L,
+ 0xb.c1b2e653a9e38f82b3997134a8p+0L,
+ 0x1.50a53a38f1481381051544750ep+4L,
+ 0x2.57ae00cbe5232cbeef4e94eb2cp+4L,
+ 0x4.2b156301b8604db82856d5767p+4L,
+ 0x7.6989ed23ca3ca751fc9c32eb88p+4L,
+ 0xd.2dd29765579396f3a456772c44p+4L,
+ 0x1.76e1c3430eb8630991d1aa8a248p+8L,
+ 0x2.9a77bf548873743fe65d025f56p+8L,
+ 0x4.a0d62ed7266389753842d7be74p+8L,
+ 0x8.3a6184dd32d31ec73fc6f2d37cp+8L,
+ 0xe.a0ade153a3bf0247db49e11ae8p+8L,
+ 0x1.a01359fa74d4eaf8858bbc35f68p+12L,
+ 0x2.e3b0a32845cbc135bae4a5216cp+12L,
+ 0x5.23012653815fe88456170a7dc6p+12L,
+ 0x9.21c92dcde748ec199bc9c65738p+12L,
+ 0x1.03c0f3621b4c67d2d86e5e813d8p+16L,
+ 0x1.cdc884edcc9f5404f2708551cb8p+16L,
+ 0x3.35025f0b1624d1ffc86688bf03p+16L,
+ 0x5.b3bd9562ebf2409c5ce99929ep+16L,
+ 0xa.1a229b1986d9f89cb80abccfdp+16L,
+ 0x1.1e69136ebd520146d51837f3308p+20L,
+ 0x2.2d2738c72449db2524171b9271p+20L,
+ 0x4.036e80cc6621b836f94f426834p+20L,
+ /* Interval [-2.75, -2.625] (polynomial degree 24). */
+ -0x6.b5d252a56e8a75458a27ed1c2ep-4L,
+ 0x1.28d60383da3ac721aed3c57949p+0L,
+ 0x1.db6513ada8a66ea77d87d9a796p+0L,
+ 0x2.e217118f9d348a27f7506c4b4fp+0L,
+ 0x4.450112c5cbf725a0fb982fc44cp+0L,
+ 0x6.4af99151eae7810a75a5fceac8p+0L,
+ 0x9.2db598b4a97a7f69ab7be31128p+0L,
+ 0xd.62bef9c22471f5f17955733c6p+0L,
+ 0x1.379f294e412bd6255506135f4a8p+4L,
+ 0x1.c5827349d8865d858d4f85f3c38p+4L,
+ 0x2.93a7e7a75b755bbea1785a1349p+4L,
+ 0x3.bf9bb882afed66a08b22ed7a45p+4L,
+ 0x5.73c737828d2044aca95fdef33ep+4L,
+ 0x7.ee46534920f1c81574db260f0ep+4L,
+ 0xb.891c6b837b513eaf1592fe78ccp+4L,
+ 0x1.0c775d815bf741526a3dd66ded8p+8L,
+ 0x1.867ee44cf11f26455a8924a56bp+8L,
+ 0x2.37fe968baa1018e55cae680f1dp+8L,
+ 0x3.3a2c557f686679eb5d8e960fd1p+8L,
+ 0x4.b1ba0539d4d80cc9174738b992p+8L,
+ 0x6.d3fd80155b6d2211956cb6bc5ap+8L,
+ 0x9.eb5a96b0ee3d9ca523f5fbc1fp+8L,
+ 0xe.6b37429c1acc7dc19ef312dda4p+8L,
+ 0x1.621132d6aa138b203a28e4792fp+12L,
+ 0x2.09610219270e2ce11a985d4d36p+12L,
+ /* Interval [-2.875, -2.75] (polynomial degree 23). */
+ -0x8.a41b1e4f36ff88dc820815607cp-4L,
+ 0xc.da87d3b69dc0f2f9c6f368b8c8p-4L,
+ 0x1.1474ad5c36158a7bea04fd30b28p+0L,
+ 0x1.761ecb90c555df6555b7dbb9ce8p+0L,
+ 0x1.d279bff9ae291caf6c4b17497f8p+0L,
+ 0x2.4e5d00559a6e2b9b5d7e35b575p+0L,
+ 0x2.d57545a75cee8743b1ff6e22b8p+0L,
+ 0x3.8514eee3aac88b89d2d4ddef4ep+0L,
+ 0x4.5235e3b6e1891fd9c975383318p+0L,
+ 0x5.562acdb10eef3c14a780490e3cp+0L,
+ 0x6.8ec8965c76f0b261bc41b5e532p+0L,
+ 0x8.15251aca144a98a1e1c0981388p+0L,
+ 0x9.f08d56ab9e7eee9515a457214cp+0L,
+ 0xc.3dbbeda2620d5be4fe8621ce6p+0L,
+ 0xf.0f5bfd65b3feb6d745a2cdbf9cp+0L,
+ 0x1.28a6ccd8dd27fb90fcaa31d37dp+4L,
+ 0x1.6d0a3a3091c3d64cfd1a3c5769p+4L,
+ 0x1.c1570107e02d5ab0b8bea6d6c98p+4L,
+ 0x2.28fc9b295b583fa469de7acceap+4L,
+ 0x2.a8a4cac0217026bbdbce34f4adp+4L,
+ 0x3.4532c98bce75262ac0ede53edep+4L,
+ 0x4.062fd9ba18e00e55c25a4f0688p+4L,
+ 0x5.22e00e6d9846a3451fad5587f8p+4L,
+ 0x6.5d0f7ce92a0bf928d4a30e92c6p+4L,
+ /* Interval [-3, -2.875] (polynomial degree 22). */
+ -0xa.046d667e468f3e44dcae1afcc8p-4L,
+ 0x9.70b88dcc006c214d8d996fdf7p-4L,
+ 0xa.a8a39421c86d3ff24931a093c4p-4L,
+ 0xd.2f4d1363f324da2b357c850124p-4L,
+ 0xd.ca9aa1a3a5c00de11bf5d7047p-4L,
+ 0xf.cf09c31eeb52a45dfb25e50ebcp-4L,
+ 0x1.04b133a39ed8a096914cc78812p+0L,
+ 0x1.22b547a06edda9447f516a2ee7p+0L,
+ 0x1.2c57fce7db86a91c8d0f12077b8p+0L,
+ 0x1.4aade4894708fb8b78365e9bf88p+0L,
+ 0x1.579c8b7b67ec5179ecc4e9c7dp+0L,
+ 0x1.776820e7fc7361c50e7ef40a88p+0L,
+ 0x1.883ab28c72ef238ada6c480ab18p+0L,
+ 0x1.aa2ef6e1d11b9fcea06a1dcab1p+0L,
+ 0x1.bf4ad50f2dd2aeb02395ea08648p+0L,
+ 0x1.e40206a5477615838e02279dfc8p+0L,
+ 0x1.fdcbcfd4b0777fb173b85d5b398p+0L,
+ 0x2.25e32b3b3c89e833029169a17bp+0L,
+ 0x2.44ce344ff0bda6570fe3d0a76dp+0L,
+ 0x2.70bfba6fa079faf2dbf31d2216p+0L,
+ 0x2.953e22a97725cc179ad21024fap+0L,
+ 0x2.d8ccc51524659a499eee0f267p+0L,
+ 0x3.080fbb09c14936c2171c8a51bcp+0L,
+ };
+
+static const size_t poly_deg[] =
+ {
+ 21,
+ 22,
+ 24,
+ 25,
+ 26,
+ 24,
+ 23,
+ 22,
+ };
+
+static const size_t poly_end[] =
+ {
+ 21,
+ 44,
+ 69,
+ 95,
+ 122,
+ 147,
+ 171,
+ 194,
+ };
+
+/* Compute sin (pi * X) for -0.25 <= X <= 0.5. */
+
+static long double
+lg_sinpi (long double x)
+{
+ if (x <= 0.25L)
+ return __sinl (M_PIl * x);
+ else
+ return __cosl (M_PIl * (0.5L - x));
+}
+
+/* Compute cos (pi * X) for -0.25 <= X <= 0.5. */
+
+static long double
+lg_cospi (long double x)
+{
+ if (x <= 0.25L)
+ return __cosl (M_PIl * x);
+ else
+ return __sinl (M_PIl * (0.5L - x));
+}
+
+/* Compute cot (pi * X) for -0.25 <= X <= 0.5. */
+
+static long double
+lg_cotpi (long double x)
+{
+ return lg_cospi (x) / lg_sinpi (x);
+}
+
+/* Compute lgamma of a negative argument -48 < X < -2, setting
+ *SIGNGAMP accordingly. */
+
+long double
+__lgamma_negl (long double x, int *signgamp)
+{
+ /* Determine the half-integer region X lies in, handle exact
+ integers and determine the sign of the result. */
+ int i = __floorl (-2 * x);
+ if ((i & 1) == 0 && i == -2 * x)
+ return 1.0L / 0.0L;
+ long double xn = ((i & 1) == 0 ? -i / 2 : (-i - 1) / 2);
+ i -= 4;
+ *signgamp = ((i & 2) == 0 ? -1 : 1);
+
+ SET_RESTORE_ROUNDL (FE_TONEAREST);
+
+ /* Expand around the zero X0 = X0_HI + X0_LO. */
+ long double x0_hi = lgamma_zeros[i][0], x0_lo = lgamma_zeros[i][1];
+ long double xdiff = x - x0_hi - x0_lo;
+
+ /* For arguments in the range -3 to -2, use polynomial
+ approximations to an adjusted version of the gamma function. */
+ if (i < 2)
+ {
+ int j = __floorl (-8 * x) - 16;
+ long double xm = (-33 - 2 * j) * 0.0625L;
+ long double x_adj = x - xm;
+ size_t deg = poly_deg[j];
+ size_t end = poly_end[j];
+ long double g = poly_coeff[end];
+ for (size_t j = 1; j <= deg; j++)
+ g = g * x_adj + poly_coeff[end - j];
+ return __log1pl (g * xdiff / (x - xn));
+ }
+
+ /* The result we want is log (sinpi (X0) / sinpi (X))
+ + log (gamma (1 - X0) / gamma (1 - X)). */
+ long double x_idiff = fabsl (xn - x), x0_idiff = fabsl (xn - x0_hi - x0_lo);
+ long double log_sinpi_ratio;
+ if (x0_idiff < x_idiff * 0.5L)
+ /* Use log not log1p to avoid inaccuracy from log1p of arguments
+ close to -1. */
+ log_sinpi_ratio = __ieee754_logl (lg_sinpi (x0_idiff)
+ / lg_sinpi (x_idiff));
+ else
+ {
+ /* Use log1p not log to avoid inaccuracy from log of arguments
+ close to 1. X0DIFF2 has positive sign if X0 is further from
+ XN than X is from XN, negative sign otherwise. */
+ long double x0diff2 = ((i & 1) == 0 ? xdiff : -xdiff) * 0.5L;
+ long double sx0d2 = lg_sinpi (x0diff2);
+ long double cx0d2 = lg_cospi (x0diff2);
+ log_sinpi_ratio = __log1pl (2 * sx0d2
+ * (-sx0d2 + cx0d2 * lg_cotpi (x_idiff)));
+ }
+
+ long double log_gamma_ratio;
+ long double y0 = 1 - x0_hi;
+ long double y0_eps = -x0_hi + (1 - y0) - x0_lo;
+ long double y = 1 - x;
+ long double y_eps = -x + (1 - y);
+ /* We now wish to compute LOG_GAMMA_RATIO
+ = log (gamma (Y0 + Y0_EPS) / gamma (Y + Y_EPS)). XDIFF
+ accurately approximates the difference Y0 + Y0_EPS - Y -
+ Y_EPS. Use Stirling's approximation. First, we may need to
+ adjust into the range where Stirling's approximation is
+ sufficiently accurate. */
+ long double log_gamma_adj = 0;
+ if (i < 18)
+ {
+ int n_up = (19 - i) / 2;
+ long double ny0, ny0_eps, ny, ny_eps;
+ ny0 = y0 + n_up;
+ ny0_eps = y0 - (ny0 - n_up) + y0_eps;
+ y0 = ny0;
+ y0_eps = ny0_eps;
+ ny = y + n_up;
+ ny_eps = y - (ny - n_up) + y_eps;
+ y = ny;
+ y_eps = ny_eps;
+ long double prodm1 = __lgamma_productl (xdiff, y - n_up, y_eps, n_up);
+ log_gamma_adj = -__log1pl (prodm1);
+ }
+ long double log_gamma_high
+ = (xdiff * __log1pl ((y0 - e_hi - e_lo + y0_eps) / e_hi)
+ + (y - 0.5L + y_eps) * __log1pl (xdiff / y) + log_gamma_adj);
+ /* Compute the sum of (B_2k / 2k(2k-1))(Y0^-(2k-1) - Y^-(2k-1)). */
+ long double y0r = 1 / y0, yr = 1 / y;
+ long double y0r2 = y0r * y0r, yr2 = yr * yr;
+ long double rdiff = -xdiff / (y * y0);
+ long double bterm[NCOEFF];
+ long double dlast = rdiff, elast = rdiff * yr * (yr + y0r);
+ bterm[0] = dlast * lgamma_coeff[0];
+ for (size_t j = 1; j < NCOEFF; j++)
+ {
+ long double dnext = dlast * y0r2 + elast;
+ long double enext = elast * yr2;
+ bterm[j] = dnext * lgamma_coeff[j];
+ dlast = dnext;
+ elast = enext;
+ }
+ long double log_gamma_low = 0;
+ for (size_t j = 0; j < NCOEFF; j++)
+ log_gamma_low += bterm[NCOEFF - 1 - j];
+ log_gamma_ratio = log_gamma_high + log_gamma_low;
+
+ return log_sinpi_ratio + log_gamma_ratio;
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/lgamma_productl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/lgamma_productl.c
new file mode 100644
index 0000000000..92c1cffd67
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/lgamma_productl.c
@@ -0,0 +1,38 @@
+/* Compute a product of 1 + (T/X), 1 + (T/(X+1)), ....
+ Copyright (C) 2015-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+#include <math_private.h>
+#include <float.h>
+
+/* Compute the product of 1 + (T / (X + X_EPS)), 1 + (T / (X + X_EPS +
+ 1)), ..., 1 + (T / (X + X_EPS + N - 1)), minus 1. X is such that
+ all the values X + 1, ..., X + N - 1 are exactly representable, and
+ X_EPS / X is small enough that factors quadratic in it can be
+ neglected. */
+
+long double
+__lgamma_productl (long double t, long double x, long double x_eps, int n)
+{
+ long double x_full = x + x_eps;
+ long double ret = 0;
+ for (int i = 0; i < n; i++)
+ /* FIXME: no extra precision used. */
+ ret += (t / (x_full + i)) * (1 + ret);
+ return ret;
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/math_ldbl.h b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/math_ldbl.h
new file mode 100644
index 0000000000..8f2984e924
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/math_ldbl.h
@@ -0,0 +1,290 @@
+/* Manipulation of the bit representation of 'long double' quantities.
+ Copyright (C) 2006-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#ifndef _MATH_LDBL_H_
+#define _MATH_LDBL_H_ 1
+
+#include <ieee754.h>
+#include <stdint.h>
+
+/* To suit our callers we return *hi64 and *lo64 as if they came from
+ an ieee854 112 bit mantissa, that is, 48 bits in *hi64 (plus one
+ implicit bit) and 64 bits in *lo64. */
+
+static inline void
+ldbl_extract_mantissa (int64_t *hi64, uint64_t *lo64, int *exp, long double x)
+{
+ /* We have 105 bits of mantissa plus one implicit digit. Since
+ 106 bits are representable we use the first implicit digit for
+ the number before the decimal point and the second implicit bit
+ as bit 53 of the mantissa. */
+ uint64_t hi, lo;
+ union ibm_extended_long_double u;
+
+ u.ld = x;
+ *exp = u.d[0].ieee.exponent - IEEE754_DOUBLE_BIAS;
+
+ lo = ((uint64_t) u.d[1].ieee.mantissa0 << 32) | u.d[1].ieee.mantissa1;
+ hi = ((uint64_t) u.d[0].ieee.mantissa0 << 32) | u.d[0].ieee.mantissa1;
+
+ if (u.d[0].ieee.exponent != 0)
+ {
+ int ediff;
+
+ /* If not a denormal or zero then we have an implicit 53rd bit. */
+ hi |= (uint64_t) 1 << 52;
+
+ if (u.d[1].ieee.exponent != 0)
+ lo |= (uint64_t) 1 << 52;
+ else
+ /* A denormal is to be interpreted as having a biased exponent
+ of 1. */
+ lo = lo << 1;
+
+ /* We are going to shift 4 bits out of hi later, because we only
+ want 48 bits in *hi64. That means we want 60 bits in lo, but
+ we currently only have 53. Shift the value up. */
+ lo = lo << 7;
+
+ /* The lower double is normalized separately from the upper.
+ We may need to adjust the lower mantissa to reflect this.
+ The difference between the exponents can be larger than 53
+ when the low double is much less than 1ULP of the upper
+ (in which case there are significant bits, all 0's or all
+ 1's, between the two significands). The difference between
+ the exponents can be less than 53 when the upper double
+ exponent is nearing its minimum value (in which case the low
+ double is denormal ie. has an exponent of zero). */
+ ediff = u.d[0].ieee.exponent - u.d[1].ieee.exponent - 53;
+ if (ediff > 0)
+ {
+ if (ediff < 64)
+ lo = lo >> ediff;
+ else
+ lo = 0;
+ }
+ else if (ediff < 0)
+ lo = lo << -ediff;
+
+ if (u.d[0].ieee.negative != u.d[1].ieee.negative
+ && lo != 0)
+ {
+ hi--;
+ lo = ((uint64_t) 1 << 60) - lo;
+ if (hi < (uint64_t) 1 << 52)
+ {
+ /* We have a borrow from the hidden bit, so shift left 1. */
+ hi = (hi << 1) | (lo >> 59);
+ lo = (((uint64_t) 1 << 60) - 1) & (lo << 1);
+ *exp = *exp - 1;
+ }
+ }
+ }
+ else
+ /* If the larger magnitude double is denormal then the smaller
+ one must be zero. */
+ hi = hi << 1;
+
+ *lo64 = (hi << 60) | lo;
+ *hi64 = hi >> 4;
+}
+
+static inline long double
+ldbl_insert_mantissa (int sign, int exp, int64_t hi64, uint64_t lo64)
+{
+ union ibm_extended_long_double u;
+ int expnt2;
+ uint64_t hi, lo;
+
+ u.d[0].ieee.negative = sign;
+ u.d[1].ieee.negative = sign;
+ u.d[0].ieee.exponent = exp + IEEE754_DOUBLE_BIAS;
+ u.d[1].ieee.exponent = 0;
+ expnt2 = exp - 53 + IEEE754_DOUBLE_BIAS;
+
+ /* Expect 113 bits (112 bits + hidden) right justified in two longs.
+ The low order 53 bits (52 + hidden) go into the lower double */
+ lo = (lo64 >> 7) & (((uint64_t) 1 << 53) - 1);
+ /* The high order 53 bits (52 + hidden) go into the upper double */
+ hi = lo64 >> 60;
+ hi |= hi64 << 4;
+
+ if (lo != 0)
+ {
+ int lzcount;
+
+ /* hidden bit of low double controls rounding of the high double.
+ If hidden is '1' and either the explicit mantissa is non-zero
+ or hi is odd, then round up hi and adjust lo (2nd mantissa)
+ plus change the sign of the low double to compensate. */
+ if ((lo & ((uint64_t) 1 << 52)) != 0
+ && ((hi & 1) != 0 || (lo & (((uint64_t) 1 << 52) - 1)) != 0))
+ {
+ hi++;
+ if ((hi & ((uint64_t) 1 << 53)) != 0)
+ {
+ hi = hi >> 1;
+ u.d[0].ieee.exponent++;
+ }
+ u.d[1].ieee.negative = !sign;
+ lo = ((uint64_t) 1 << 53) - lo;
+ }
+
+ /* Normalize the low double. Shift the mantissa left until
+ the hidden bit is '1' and adjust the exponent accordingly. */
+
+ if (sizeof (lo) == sizeof (long))
+ lzcount = __builtin_clzl (lo);
+ else if ((lo >> 32) != 0)
+ lzcount = __builtin_clzl ((long) (lo >> 32));
+ else
+ lzcount = __builtin_clzl ((long) lo) + 32;
+ lzcount = lzcount - (64 - 53);
+ lo <<= lzcount;
+ expnt2 -= lzcount;
+
+ if (expnt2 >= 1)
+ /* Not denormal. */
+ u.d[1].ieee.exponent = expnt2;
+ else
+ {
+ /* Is denormal. Note that biased exponent of 0 is treated
+ as if it was 1, hence the extra shift. */
+ if (expnt2 > -53)
+ lo >>= 1 - expnt2;
+ else
+ lo = 0;
+ }
+ }
+ else
+ u.d[1].ieee.negative = 0;
+
+ u.d[1].ieee.mantissa1 = lo;
+ u.d[1].ieee.mantissa0 = lo >> 32;
+ u.d[0].ieee.mantissa1 = hi;
+ u.d[0].ieee.mantissa0 = hi >> 32;
+ return u.ld;
+}
+
+/* Handy utility functions to pack/unpack/cononicalize and find the nearbyint
+ of long double implemented as double double. */
+static inline long double
+default_ldbl_pack (double a, double aa)
+{
+ union ibm_extended_long_double u;
+ u.d[0].d = a;
+ u.d[1].d = aa;
+ return u.ld;
+}
+
+static inline void
+default_ldbl_unpack (long double l, double *a, double *aa)
+{
+ union ibm_extended_long_double u;
+ u.ld = l;
+ *a = u.d[0].d;
+ *aa = u.d[1].d;
+}
+
+#ifndef ldbl_pack
+# define ldbl_pack default_ldbl_pack
+#endif
+#ifndef ldbl_unpack
+# define ldbl_unpack default_ldbl_unpack
+#endif
+
+/* Extract high double. */
+#define ldbl_high(x) ((double) x)
+
+/* Convert a finite long double to canonical form.
+ Does not handle +/-Inf properly. */
+static inline void
+ldbl_canonicalize (double *a, double *aa)
+{
+ double xh, xl;
+
+ xh = *a + *aa;
+ xl = (*a - xh) + *aa;
+ *a = xh;
+ *aa = xl;
+}
+
+/* Simple inline nearbyint (double) function.
+ Only works in the default rounding mode
+ but is useful in long double rounding functions. */
+static inline double
+ldbl_nearbyint (double a)
+{
+ double two52 = 0x1p52;
+
+ if (__glibc_likely ((__builtin_fabs (a) < two52)))
+ {
+ if (__glibc_likely ((a > 0.0)))
+ {
+ a += two52;
+ a -= two52;
+ }
+ else if (__glibc_likely ((a < 0.0)))
+ {
+ a = two52 - a;
+ a = -(a - two52);
+ }
+ }
+ return a;
+}
+
+/* Canonicalize a result from an integer rounding function, in any
+ rounding mode. *A and *AA are finite and integers, with *A being
+ nonzero; if the result is not already canonical, *AA is plus or
+ minus a power of 2 that does not exceed the least set bit in
+ *A. */
+static inline void
+ldbl_canonicalize_int (double *a, double *aa)
+{
+ /* Previously we used EXTRACT_WORDS64 from math_private.h, but in order
+ to avoid including internal headers we duplicate that code here. */
+ uint64_t ax, aax;
+ union { double value; uint64_t word; } extractor;
+ extractor.value = *a;
+ ax = extractor.word;
+ extractor.value = *aa;
+ aax = extractor.word;
+
+ int expdiff = ((ax >> 52) & 0x7ff) - ((aax >> 52) & 0x7ff);
+ if (expdiff <= 53)
+ {
+ if (expdiff == 53)
+ {
+ /* Half way between two double values; noncanonical iff the
+ low bit of A's mantissa is 1. */
+ if ((ax & 1) != 0)
+ {
+ *a += 2 * *aa;
+ *aa = -*aa;
+ }
+ }
+ else
+ {
+ /* The sum can be represented in a single double. */
+ *a += *aa;
+ *aa = 0;
+ }
+ }
+}
+
+#endif /* math_ldbl.h */
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/mpn2ldbl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/mpn2ldbl.c
new file mode 100644
index 0000000000..92b28b8b5d
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/mpn2ldbl.c
@@ -0,0 +1,161 @@
+/* Copyright (C) 1995-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <ieee754.h>
+#include <errno.h>
+#include <float.h>
+#include <math.h>
+
+/* Need to set this when including gmp headers after system headers. */
+#define HAVE_ALLOCA 1
+
+#include "gmp.h"
+#include "gmp-impl.h"
+
+/* Convert a multi-precision integer of the needed number of bits (106
+ for long double) and an integral power of two to a `long double' in
+ IBM extended format. */
+
+long double
+__mpn_construct_long_double (mp_srcptr frac_ptr, int expt, int sign)
+{
+ union ibm_extended_long_double u;
+ unsigned long lzcount;
+ unsigned long long hi, lo;
+ int exponent2;
+
+ u.d[0].ieee.negative = sign;
+ u.d[1].ieee.negative = sign;
+ u.d[0].ieee.exponent = expt + IEEE754_DOUBLE_BIAS;
+ u.d[1].ieee.exponent = 0;
+ exponent2 = expt - 53 + IEEE754_DOUBLE_BIAS;
+
+#if BITS_PER_MP_LIMB == 32
+ /* The low order 53 bits (52 + hidden) go into the lower double */
+ lo = frac_ptr[0];
+ lo |= (frac_ptr[1] & ((1LL << (53 - 32)) - 1)) << 32;
+ /* The high order 53 bits (52 + hidden) go into the upper double */
+ hi = (frac_ptr[1] >> (53 - 32)) & ((1 << 11) - 1);
+ hi |= ((unsigned long long) frac_ptr[2]) << 11;
+ hi |= ((unsigned long long) frac_ptr[3]) << (32 + 11);
+#elif BITS_PER_MP_LIMB == 64
+ /* The low order 53 bits (52 + hidden) go into the lower double */
+ lo = frac_ptr[0] & (((mp_limb_t) 1 << 53) - 1);
+ /* The high order 53 bits (52 + hidden) go into the upper double */
+ hi = (frac_ptr[0] >> 53) & (((mp_limb_t) 1 << 11) - 1);
+ hi |= (frac_ptr[1] << 11);
+#else
+ #error "mp_limb size " BITS_PER_MP_LIMB "not accounted for"
+#endif
+
+ if ((hi & (1LL << 52)) == 0 && (hi | lo) != 0)
+ {
+ /* denormal number */
+ unsigned long long val = hi ? hi : lo;
+
+ if (sizeof (val) == sizeof (long))
+ lzcount = __builtin_clzl (val);
+ else if ((val >> 32) != 0)
+ lzcount = __builtin_clzl ((long) (val >> 32));
+ else
+ lzcount = __builtin_clzl ((long) val) + 32;
+ if (hi)
+ lzcount = lzcount - (64 - 53);
+ else
+ lzcount = lzcount + 53 - (64 - 53);
+
+ if (lzcount > u.d[0].ieee.exponent)
+ {
+ lzcount = u.d[0].ieee.exponent;
+ u.d[0].ieee.exponent = 0;
+ exponent2 -= lzcount;
+ }
+ else
+ {
+ u.d[0].ieee.exponent -= (lzcount - 1);
+ exponent2 -= (lzcount - 1);
+ }
+
+ if (lzcount <= 53)
+ {
+ hi = (hi << lzcount) | (lo >> (53 - lzcount));
+ lo = (lo << lzcount) & ((1LL << 53) - 1);
+ }
+ else
+ {
+ hi = lo << (lzcount - 53);
+ lo = 0;
+ }
+ }
+
+ if (lo != 0)
+ {
+ /* hidden bit of low double controls rounding of the high double.
+ If hidden is '1' and either the explicit mantissa is non-zero
+ or hi is odd, then round up hi and adjust lo (2nd mantissa)
+ plus change the sign of the low double to compensate. */
+ if ((lo & (1LL << 52)) != 0
+ && ((hi & 1) != 0 || (lo & ((1LL << 52) - 1)) != 0))
+ {
+ hi++;
+ if ((hi & (1LL << 53)) != 0)
+ {
+ hi >>= 1;
+ u.d[0].ieee.exponent++;
+ if (u.d[0].ieee.exponent == IEEE754_DOUBLE_BIAS + DBL_MAX_EXP)
+ {
+ /* Overflow. The appropriate overflowed result must
+ be produced (if an infinity, that means the low
+ part must be zero). */
+ __set_errno (ERANGE);
+ return (sign ? -LDBL_MAX : LDBL_MAX) * LDBL_MAX;
+ }
+ }
+ u.d[1].ieee.negative = !sign;
+ lo = (1LL << 53) - lo;
+ }
+
+ /* Normalize the low double. Shift the mantissa left until
+ the hidden bit is '1' and adjust the exponent accordingly. */
+
+ if (sizeof (lo) == sizeof (long))
+ lzcount = __builtin_clzl (lo);
+ else if ((lo >> 32) != 0)
+ lzcount = __builtin_clzl ((long) (lo >> 32));
+ else
+ lzcount = __builtin_clzl ((long) lo) + 32;
+ lzcount = lzcount - (64 - 53);
+ lo <<= lzcount;
+ exponent2 -= lzcount;
+
+ if (exponent2 > 0)
+ u.d[1].ieee.exponent = exponent2;
+ else if (exponent2 > -53)
+ lo >>= 1 - exponent2;
+ else
+ lo = 0;
+ }
+ else
+ u.d[1].ieee.negative = 0;
+
+ u.d[1].ieee.mantissa1 = lo;
+ u.d[1].ieee.mantissa0 = lo >> 32;
+ u.d[0].ieee.mantissa1 = hi;
+ u.d[0].ieee.mantissa0 = hi >> 32;
+
+ return u.ld;
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/printf_fphex.c b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/printf_fphex.c
new file mode 100644
index 0000000000..2f87ec17cc
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/printf_fphex.c
@@ -0,0 +1,139 @@
+/* Print floating point number in hexadecimal notation according to ISO C99.
+ Copyright (C) 1997-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#define PRINT_FPHEX_LONG_DOUBLE \
+do { \
+ /* We have 105 bits of mantissa plus one implicit digit. Since \
+ 106 bits are representable without rest using hexadecimal \
+ digits we use only the implicit digits for the number before \
+ the decimal point. */ \
+ unsigned long long int num0, num1; \
+ unsigned long long hi, lo; \
+ int ediff; \
+ union ibm_extended_long_double u; \
+ u.ld = fpnum.ldbl; \
+ \
+ assert (sizeof (long double) == 16); \
+ \
+ lo = ((long long)u.d[1].ieee.mantissa0 << 32) | u.d[1].ieee.mantissa1; \
+ hi = ((long long)u.d[0].ieee.mantissa0 << 32) | u.d[0].ieee.mantissa1; \
+ lo <<= 7; /* pre-shift lo to match ieee854. */ \
+ /* If the lower double is not a denormal or zero then set the hidden \
+ 53rd bit. */ \
+ if (u.d[1].ieee.exponent != 0) \
+ lo |= (1ULL << (52 + 7)); \
+ else \
+ lo <<= 1; \
+ /* The lower double is normalized separately from the upper. We \
+ may need to adjust the lower manitissa to reflect this. */ \
+ ediff = u.d[0].ieee.exponent - u.d[1].ieee.exponent - 53; \
+ if (ediff > 63) \
+ lo = 0; \
+ else if (ediff > 0) \
+ lo = lo >> ediff; \
+ else if (ediff < 0) \
+ lo = lo << -ediff; \
+ if (u.d[0].ieee.negative != u.d[1].ieee.negative \
+ && lo != 0) \
+ { \
+ lo = (1ULL << 60) - lo; \
+ if (hi == 0L) \
+ { \
+ /* we have a borrow from the hidden bit, so shift left 1. */ \
+ hi = 0xffffffffffffeLL | (lo >> 59); \
+ lo = 0xfffffffffffffffLL & (lo << 1); \
+ u.d[0].ieee.exponent--; \
+ } \
+ else \
+ hi--; \
+ } \
+ num1 = (hi << 60) | lo; \
+ num0 = hi >> 4; \
+ \
+ zero_mantissa = (num0|num1) == 0; \
+ \
+ if (sizeof (unsigned long int) > 6) \
+ { \
+ numstr = _itoa_word (num1, numbuf + sizeof numbuf, 16, \
+ info->spec == 'A'); \
+ wnumstr = _itowa_word (num1, \
+ wnumbuf + sizeof (wnumbuf) / sizeof (wchar_t),\
+ 16, info->spec == 'A'); \
+ } \
+ else \
+ { \
+ numstr = _itoa (num1, numbuf + sizeof numbuf, 16, \
+ info->spec == 'A'); \
+ wnumstr = _itowa (num1, \
+ wnumbuf + sizeof (wnumbuf) / sizeof (wchar_t), \
+ 16, info->spec == 'A'); \
+ } \
+ \
+ while (numstr > numbuf + (sizeof numbuf - 64 / 4)) \
+ { \
+ *--numstr = '0'; \
+ *--wnumstr = L'0'; \
+ } \
+ \
+ if (sizeof (unsigned long int) > 6) \
+ { \
+ numstr = _itoa_word (num0, numstr, 16, info->spec == 'A'); \
+ wnumstr = _itowa_word (num0, wnumstr, 16, info->spec == 'A'); \
+ } \
+ else \
+ { \
+ numstr = _itoa (num0, numstr, 16, info->spec == 'A'); \
+ wnumstr = _itowa (num0, wnumstr, 16, info->spec == 'A'); \
+ } \
+ \
+ /* Fill with zeroes. */ \
+ while (numstr > numbuf + (sizeof numbuf - 112 / 4)) \
+ { \
+ *--numstr = '0'; \
+ *--wnumstr = L'0'; \
+ } \
+ \
+ leading = u.d[0].ieee.exponent == 0 ? '0' : '1'; \
+ \
+ exponent = u.d[0].ieee.exponent; \
+ \
+ if (exponent == 0) \
+ { \
+ if (zero_mantissa) \
+ expnegative = 0; \
+ else \
+ { \
+ /* This is a denormalized number. */ \
+ expnegative = 1; \
+ exponent = IEEE754_DOUBLE_BIAS - 1; \
+ } \
+ } \
+ else if (exponent >= IEEE754_DOUBLE_BIAS) \
+ { \
+ expnegative = 0; \
+ exponent -= IEEE754_DOUBLE_BIAS; \
+ } \
+ else \
+ { \
+ expnegative = 1; \
+ exponent = -(exponent - IEEE754_DOUBLE_BIAS); \
+ } \
+} while (0)
+
+#include <stdio-common/printf_fphex.c>
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_asinhl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_asinhl.c
new file mode 100644
index 0000000000..aa9a9ba213
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_asinhl.c
@@ -0,0 +1,63 @@
+/* @(#)s_asinh.c 5.1 93/09/24 */
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: s_asinh.c,v 1.9 1995/05/12 04:57:37 jtc Exp $";
+#endif
+
+/* asinh(x)
+ * Method :
+ * Based on
+ * asinh(x) = sign(x) * log [ |x| + sqrt(x*x+1) ]
+ * we have
+ * asinh(x) := x if 1+x*x=1,
+ * := sign(x)*(log(x)+ln2)) for large |x|, else
+ * := sign(x)*log(2|x|+1/(|x|+sqrt(x*x+1))) if|x|>2, else
+ * := sign(x)*log1p(|x| + x^2/(1 + sqrt(1+x^2)))
+ */
+
+#include <float.h>
+#include <math.h>
+#include <math_private.h>
+#include <math_ldbl_opt.h>
+
+static const long double
+one = 1.00000000000000000000e+00L, /* 0x3ff0000000000000, 0 */
+ln2 = 0.6931471805599453094172321214581766L, /* 0x3fe62e42fefa39ef, 0x3c7abc9e3b398040 */
+huge= 1.00000000000000000000e+300L;
+
+long double __asinhl(long double x)
+{
+ long double t,w;
+ int64_t hx,ix;
+ double xhi;
+
+ xhi = ldbl_high (x);
+ EXTRACT_WORDS64 (hx, xhi);
+ ix = hx&0x7fffffffffffffffLL;
+ if(ix>=0x7ff0000000000000LL) return x+x; /* x is inf or NaN */
+ if(ix< 0x3c70000000000000LL) { /* |x|<2**-56 */
+ math_check_force_underflow (x);
+ if(huge+x>one) return x; /* return x inexact except 0 */
+ }
+ if(ix>0x4370000000000000LL) { /* |x| > 2**56 */
+ w = __ieee754_logl(fabsl(x))+ln2;
+ } else if (ix>0x4000000000000000LL) { /* 2**56 >= |x| > 2.0 */
+ t = fabs(x);
+ w = __ieee754_logl(2.0*t+one/(__ieee754_sqrtl(x*x+one)+t));
+ } else { /* 2.0 >= |x| >= 2**-56 */
+ t = x*x;
+ w =__log1pl(fabsl(x)+t/(one+__ieee754_sqrtl(one+t)));
+ }
+ if(hx>0) return w; else return -w;
+}
+long_double_symbol (libm, __asinhl, asinhl);
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_atanl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_atanl.c
new file mode 100644
index 0000000000..0560d820ae
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_atanl.c
@@ -0,0 +1,250 @@
+/* s_atanl.c
+ *
+ * Inverse circular tangent for 128-bit long double precision
+ * (arctangent)
+ *
+ *
+ *
+ * SYNOPSIS:
+ *
+ * long double x, y, atanl();
+ *
+ * y = atanl( x );
+ *
+ *
+ *
+ * DESCRIPTION:
+ *
+ * Returns radian angle between -pi/2 and +pi/2 whose tangent is x.
+ *
+ * The function uses a rational approximation of the form
+ * t + t^3 P(t^2)/Q(t^2), optimized for |t| < 0.09375.
+ *
+ * The argument is reduced using the identity
+ * arctan x - arctan u = arctan ((x-u)/(1 + ux))
+ * and an 83-entry lookup table for arctan u, with u = 0, 1/8, ..., 10.25.
+ * Use of the table improves the execution speed of the routine.
+ *
+ *
+ *
+ * ACCURACY:
+ *
+ * Relative error:
+ * arithmetic domain # trials peak rms
+ * IEEE -19, 19 4e5 1.7e-34 5.4e-35
+ *
+ *
+ * WARNING:
+ *
+ * This program uses integer operations on bit fields of floating-point
+ * numbers. It does not work with data structures other than the
+ * structure assumed.
+ *
+ */
+
+/* Copyright 2001 by Stephen L. Moshier <moshier@na-net.ornl.gov>
+
+ This 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 2.1 of the License, or (at your option) any later version.
+
+ This 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 this library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+
+#include <float.h>
+#include <math.h>
+#include <math_private.h>
+#include <math_ldbl_opt.h>
+
+/* arctan(k/8), k = 0, ..., 82 */
+static const long double atantbl[84] = {
+ 0.0000000000000000000000000000000000000000E0L,
+ 1.2435499454676143503135484916387102557317E-1L, /* arctan(0.125) */
+ 2.4497866312686415417208248121127581091414E-1L,
+ 3.5877067027057222039592006392646049977698E-1L,
+ 4.6364760900080611621425623146121440202854E-1L,
+ 5.5859931534356243597150821640166127034645E-1L,
+ 6.4350110879328438680280922871732263804151E-1L,
+ 7.1882999962162450541701415152590465395142E-1L,
+ 7.8539816339744830961566084581987572104929E-1L,
+ 8.4415398611317100251784414827164750652594E-1L,
+ 8.9605538457134395617480071802993782702458E-1L,
+ 9.4200004037946366473793717053459358607166E-1L,
+ 9.8279372324732906798571061101466601449688E-1L,
+ 1.0191413442663497346383429170230636487744E0L,
+ 1.0516502125483736674598673120862998296302E0L,
+ 1.0808390005411683108871567292171998202703E0L,
+ 1.1071487177940905030170654601785370400700E0L,
+ 1.1309537439791604464709335155363278047493E0L,
+ 1.1525719972156675180401498626127513797495E0L,
+ 1.1722738811284763866005949441337046149712E0L,
+ 1.1902899496825317329277337748293183376012E0L,
+ 1.2068173702852525303955115800565576303133E0L,
+ 1.2220253232109896370417417439225704908830E0L,
+ 1.2360594894780819419094519711090786987027E0L,
+ 1.2490457723982544258299170772810901230778E0L,
+ 1.2610933822524404193139408812473357720101E0L,
+ 1.2722973952087173412961937498224804940684E0L,
+ 1.2827408797442707473628852511364955306249E0L,
+ 1.2924966677897852679030914214070816845853E0L,
+ 1.3016288340091961438047858503666855921414E0L,
+ 1.3101939350475556342564376891719053122733E0L,
+ 1.3182420510168370498593302023271362531155E0L,
+ 1.3258176636680324650592392104284756311844E0L,
+ 1.3329603993374458675538498697331558093700E0L,
+ 1.3397056595989995393283037525895557411039E0L,
+ 1.3460851583802539310489409282517796256512E0L,
+ 1.3521273809209546571891479413898128509842E0L,
+ 1.3578579772154994751124898859640585287459E0L,
+ 1.3633001003596939542892985278250991189943E0L,
+ 1.3684746984165928776366381936948529556191E0L,
+ 1.3734007669450158608612719264449611486510E0L,
+ 1.3780955681325110444536609641291551522494E0L,
+ 1.3825748214901258580599674177685685125566E0L,
+ 1.3868528702577214543289381097042486034883E0L,
+ 1.3909428270024183486427686943836432060856E0L,
+ 1.3948567013423687823948122092044222644895E0L,
+ 1.3986055122719575950126700816114282335732E0L,
+ 1.4021993871854670105330304794336492676944E0L,
+ 1.4056476493802697809521934019958079881002E0L,
+ 1.4089588955564736949699075250792569287156E0L,
+ 1.4121410646084952153676136718584891599630E0L,
+ 1.4152014988178669079462550975833894394929E0L,
+ 1.4181469983996314594038603039700989523716E0L,
+ 1.4209838702219992566633046424614466661176E0L,
+ 1.4237179714064941189018190466107297503086E0L,
+ 1.4263547484202526397918060597281265695725E0L,
+ 1.4288992721907326964184700745371983590908E0L,
+ 1.4313562697035588982240194668401779312122E0L,
+ 1.4337301524847089866404719096698873648610E0L,
+ 1.4360250423171655234964275337155008780675E0L,
+ 1.4382447944982225979614042479354815855386E0L,
+ 1.4403930189057632173997301031392126865694E0L,
+ 1.4424730991091018200252920599377292525125E0L,
+ 1.4444882097316563655148453598508037025938E0L,
+ 1.4464413322481351841999668424758804165254E0L,
+ 1.4483352693775551917970437843145232637695E0L,
+ 1.4501726582147939000905940595923466567576E0L,
+ 1.4519559822271314199339700039142990228105E0L,
+ 1.4536875822280323362423034480994649820285E0L,
+ 1.4553696664279718992423082296859928222270E0L,
+ 1.4570043196511885530074841089245667532358E0L,
+ 1.4585935117976422128825857356750737658039E0L,
+ 1.4601391056210009726721818194296893361233E0L,
+ 1.4616428638860188872060496086383008594310E0L,
+ 1.4631064559620759326975975316301202111560E0L,
+ 1.4645314639038178118428450961503371619177E0L,
+ 1.4659193880646627234129855241049975398470E0L,
+ 1.4672716522843522691530527207287398276197E0L,
+ 1.4685896086876430842559640450619880951144E0L,
+ 1.4698745421276027686510391411132998919794E0L,
+ 1.4711276743037345918528755717617308518553E0L,
+ 1.4723501675822635384916444186631899205983E0L,
+ 1.4735431285433308455179928682541563973416E0L, /* arctan(10.25) */
+ 1.5707963267948966192313216916397514420986E0L /* pi/2 */
+};
+
+
+/* arctan t = t + t^3 p(t^2) / q(t^2)
+ |t| <= 0.09375
+ peak relative error 5.3e-37 */
+
+static const long double
+ p0 = -4.283708356338736809269381409828726405572E1L,
+ p1 = -8.636132499244548540964557273544599863825E1L,
+ p2 = -5.713554848244551350855604111031839613216E1L,
+ p3 = -1.371405711877433266573835355036413750118E1L,
+ p4 = -8.638214309119210906997318946650189640184E-1L,
+ q0 = 1.285112506901621042780814422948906537959E2L,
+ q1 = 3.361907253914337187957855834229672347089E2L,
+ q2 = 3.180448303864130128268191635189365331680E2L,
+ q3 = 1.307244136980865800160844625025280344686E2L,
+ q4 = 2.173623741810414221251136181221172551416E1L;
+ /* q5 = 1.000000000000000000000000000000000000000E0 */
+
+
+long double
+__atanl (long double x)
+{
+ int32_t k, sign, lx;
+ long double t, u, p, q;
+ double xhi;
+
+ xhi = ldbl_high (x);
+ EXTRACT_WORDS (k, lx, xhi);
+ sign = k & 0x80000000;
+
+ /* Check for IEEE special cases. */
+ k &= 0x7fffffff;
+ if (k >= 0x7ff00000)
+ {
+ /* NaN. */
+ if (((k - 0x7ff00000) | lx) != 0)
+ return (x + x);
+
+ /* Infinity. */
+ if (sign)
+ return -atantbl[83];
+ else
+ return atantbl[83];
+ }
+
+ if (k <= 0x3c800000) /* |x| <= 2**-55. */
+ {
+ math_check_force_underflow (x);
+ /* Raise inexact. */
+ if (1e300L + x > 0.0)
+ return x;
+ }
+
+ if (k >= 0x46c00000) /* |x| >= 2**109. */
+ {
+ /* Saturate result to {-,+}pi/2. */
+ if (sign)
+ return -atantbl[83];
+ else
+ return atantbl[83];
+ }
+
+ if (sign)
+ x = -x;
+
+ if (k >= 0x40248000) /* 10.25 */
+ {
+ k = 83;
+ t = -1.0/x;
+ }
+ else
+ {
+ /* Index of nearest table element.
+ Roundoff to integer is asymmetrical to avoid cancellation when t < 0
+ (cf. fdlibm). */
+ k = 8.0 * x + 0.25;
+ u = 0.125 * k;
+ /* Small arctan argument. */
+ t = (x - u) / (1.0 + x * u);
+ }
+
+ /* Arctan of small argument t. */
+ u = t * t;
+ p = ((((p4 * u) + p3) * u + p2) * u + p1) * u + p0;
+ q = ((((u + q4) * u + q3) * u + q2) * u + q1) * u + q0;
+ u = t * u * p / q + t;
+
+ /* arctan x = arctan u + arctan t */
+ u = atantbl[k] + u;
+ if (sign)
+ return (-u);
+ else
+ return u;
+}
+
+long_double_symbol (libm, __atanl, atanl);
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_cbrtl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_cbrtl.c
new file mode 100644
index 0000000000..64bfc46414
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_cbrtl.c
@@ -0,0 +1,10 @@
+/* Looks like we can use ieee854 s_cbrtl.c as is for IBM extended format. */
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+
+#define _Float128 long double
+#define L(x) x ## L
+
+#include <sysdeps/ieee754/ldbl-128/s_cbrtl.c>
+long_double_symbol (libm, __cbrtl, cbrtl);
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_ceill.c b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_ceill.c
new file mode 100644
index 0000000000..c451825c62
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_ceill.c
@@ -0,0 +1,62 @@
+/* Ceil (round to +inf) long double floating-point values.
+ IBM extended format long double version.
+ Copyright (C) 2006-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+#include <math_ldbl_opt.h>
+#include <float.h>
+#include <ieee754.h>
+
+
+long double
+__ceill (long double x)
+{
+ double xh, xl, hi, lo;
+
+ ldbl_unpack (x, &xh, &xl);
+
+ /* Return Inf, Nan, +/-0 unchanged. */
+ if (__builtin_expect (xh != 0.0
+ && __builtin_isless (__builtin_fabs (xh),
+ __builtin_inf ()), 1))
+ {
+ hi = __ceil (xh);
+ if (hi != xh)
+ {
+ /* The high part is not an integer; the low part does not
+ affect the result. */
+ xh = hi;
+ xl = 0;
+ }
+ else
+ {
+ /* The high part is a nonzero integer. */
+ lo = __ceil (xl);
+ xh = hi;
+ xl = lo;
+ ldbl_canonicalize_int (&xh, &xl);
+ }
+ }
+ else
+ /* Quiet signaling NaN arguments. */
+ xh += xh;
+
+ return ldbl_pack (xh, xl);
+}
+
+long_double_symbol (libm, __ceill, ceill);
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_copysignl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_copysignl.c
new file mode 100644
index 0000000000..3b8ec1a74d
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_copysignl.c
@@ -0,0 +1,41 @@
+/* s_copysignl.c -- long double version of s_copysign.c.
+ * Conversion to long double by Jakub Jelinek, jj@ultra.linux.cz.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: $";
+#endif
+
+/*
+ * copysignl(long double x, long double y)
+ * copysignl(x,y) returns a value with the magnitude of x and
+ * with the sign bit of y.
+ */
+
+#include <math.h>
+#include <math_private.h>
+#include <math_ldbl_opt.h>
+
+long double __copysignl(long double x, long double y)
+{
+ if (signbit (x) != signbit (y))
+ x = -x;
+ return x;
+}
+
+#if IS_IN (libm)
+long_double_symbol (libm, __copysignl, copysignl);
+#else
+long_double_symbol (libc, __copysignl, copysignl);
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_cosl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_cosl.c
new file mode 100644
index 0000000000..54c6cc77d2
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_cosl.c
@@ -0,0 +1,88 @@
+/* s_cosl.c -- long double version of s_cos.c.
+ * Conversion to long double by Jakub Jelinek, jj@ultra.linux.cz.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+/* cosl(x)
+ * Return cosine function of x.
+ *
+ * kernel function:
+ * __kernel_sinl ... sine function on [-pi/4,pi/4]
+ * __kernel_cosl ... cosine function on [-pi/4,pi/4]
+ * __ieee754_rem_pio2l ... argument reduction routine
+ *
+ * Method.
+ * Let S,C and T denote the sin, cos and tan respectively on
+ * [-PI/4, +PI/4]. Reduce the argument x to y1+y2 = x-k*pi/2
+ * in [-pi/4 , +pi/4], and let n = k mod 4.
+ * We have
+ *
+ * n sin(x) cos(x) tan(x)
+ * ----------------------------------------------------------
+ * 0 S C T
+ * 1 C -S -1/T
+ * 2 -S -C T
+ * 3 -C S -1/T
+ * ----------------------------------------------------------
+ *
+ * Special cases:
+ * Let trig be any of sin, cos, or tan.
+ * trig(+-INF) is NaN, with signals;
+ * trig(NaN) is that NaN;
+ *
+ * Accuracy:
+ * TRIG(x) returns trig(x) nearly rounded
+ */
+
+#include <errno.h>
+#include <math.h>
+#include <math_private.h>
+#include <math_ldbl_opt.h>
+
+long double __cosl(long double x)
+{
+ long double y[2],z=0.0L;
+ int64_t n, ix;
+ double xhi;
+
+ /* High word of x. */
+ xhi = ldbl_high (x);
+ EXTRACT_WORDS64 (ix, xhi);
+
+ /* |x| ~< pi/4 */
+ ix &= 0x7fffffffffffffffLL;
+ if(ix <= 0x3fe921fb54442d18LL)
+ return __kernel_cosl(x,z);
+
+ /* cos(Inf or NaN) is NaN */
+ else if (ix>=0x7ff0000000000000LL) {
+ if (ix == 0x7ff0000000000000LL)
+ __set_errno (EDOM);
+ return x-x;
+ }
+ /* argument reduction needed */
+ else {
+ n = __ieee754_rem_pio2l(x,y);
+ switch(n&3) {
+ case 0:
+ return __kernel_cosl(y[0],y[1]);
+ case 1:
+ return -__kernel_sinl(y[0],y[1],1);
+ case 2:
+ return -__kernel_cosl(y[0],y[1]);
+ default:
+ return __kernel_sinl(y[0],y[1],1);
+ }
+ }
+}
+long_double_symbol (libm, __cosl, cosl);
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_erfl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_erfl.c
new file mode 100644
index 0000000000..7b761b0afa
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_erfl.c
@@ -0,0 +1,970 @@
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+/* Modifications and expansions for 128-bit long double are
+ Copyright (C) 2001 Stephen L. Moshier <moshier@na-net.ornl.gov>
+ and are incorporated herein by permission of the author. The author
+ reserves the right to distribute this material elsewhere under different
+ copying permissions. These modifications are distributed here under
+ the following terms:
+
+ This 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 2.1 of the License, or (at your option) any later version.
+
+ This 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 this library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+/* double erf(double x)
+ * double erfc(double x)
+ * x
+ * 2 |\
+ * erf(x) = --------- | exp(-t*t)dt
+ * sqrt(pi) \|
+ * 0
+ *
+ * erfc(x) = 1-erf(x)
+ * Note that
+ * erf(-x) = -erf(x)
+ * erfc(-x) = 2 - erfc(x)
+ *
+ * Method:
+ * 1. erf(x) = x + x*R(x^2) for |x| in [0, 7/8]
+ * Remark. The formula is derived by noting
+ * erf(x) = (2/sqrt(pi))*(x - x^3/3 + x^5/10 - x^7/42 + ....)
+ * and that
+ * 2/sqrt(pi) = 1.128379167095512573896158903121545171688
+ * is close to one.
+ *
+ * 1a. erf(x) = 1 - erfc(x), for |x| > 1.0
+ * erfc(x) = 1 - erf(x) if |x| < 1/4
+ *
+ * 2. For |x| in [7/8, 1], let s = |x| - 1, and
+ * c = 0.84506291151 rounded to single (24 bits)
+ * erf(s + c) = sign(x) * (c + P1(s)/Q1(s))
+ * Remark: here we use the taylor series expansion at x=1.
+ * erf(1+s) = erf(1) + s*Poly(s)
+ * = 0.845.. + P1(s)/Q1(s)
+ * Note that |P1/Q1|< 0.078 for x in [0.84375,1.25]
+ *
+ * 3. For x in [1/4, 5/4],
+ * erfc(s + const) = erfc(const) + s P1(s)/Q1(s)
+ * for const = 1/4, 3/8, ..., 9/8
+ * and 0 <= s <= 1/8 .
+ *
+ * 4. For x in [5/4, 107],
+ * erfc(x) = (1/x)*exp(-x*x-0.5625 + R(z))
+ * z=1/x^2
+ * The interval is partitioned into several segments
+ * of width 1/8 in 1/x.
+ * erf(x) = 1.0 - erfc(x) if x < 25.6283 else
+ * erf(x) = sign(x)*(1.0 - tiny)
+ *
+ * Note1:
+ * To compute exp(-x*x-0.5625+R/S), let s be a single
+ * precision number and s := x; then
+ * -x*x = -s*s + (s-x)*(s+x)
+ * exp(-x*x-0.5626+R/S) =
+ * exp(-s*s-0.5625)*exp((s-x)*(s+x)+R/S);
+ * Note2:
+ * Here 4 and 5 make use of the asymptotic series
+ * exp(-x*x)
+ * erfc(x) ~ ---------- * ( 1 + Poly(1/x^2) )
+ * x*sqrt(pi)
+ *
+ * Note3:
+ * For x higher than 25.6283, erf(x) underflows.
+ *
+ * 5. For inf > x >= 107
+ * erf(x) = sign(x) *(1 - tiny) (raise inexact)
+ * erfc(x) = tiny*tiny (raise underflow) if x > 0
+ * = 2 - tiny if x<0
+ *
+ * 7. Special case:
+ * erf(0) = 0, erf(inf) = 1, erf(-inf) = -1,
+ * erfc(0) = 1, erfc(inf) = 0, erfc(-inf) = 2,
+ * erfc/erf(NaN) is NaN
+ */
+
+#include <errno.h>
+#include <float.h>
+#include <math.h>
+#include <math_private.h>
+#include <math_ldbl_opt.h>
+#include <fix-int-fp-convert-zero.h>
+
+/* Evaluate P[n] x^n + P[n-1] x^(n-1) + ... + P[0] */
+
+static long double
+neval (long double x, const long double *p, int n)
+{
+ long double y;
+
+ p += n;
+ y = *p--;
+ do
+ {
+ y = y * x + *p--;
+ }
+ while (--n > 0);
+ return y;
+}
+
+
+/* Evaluate x^n+1 + P[n] x^(n) + P[n-1] x^(n-1) + ... + P[0] */
+
+static long double
+deval (long double x, const long double *p, int n)
+{
+ long double y;
+
+ p += n;
+ y = x + *p--;
+ do
+ {
+ y = y * x + *p--;
+ }
+ while (--n > 0);
+ return y;
+}
+
+
+
+static const long double
+tiny = 1e-300L,
+ one = 1.0L,
+ two = 2.0L,
+ /* 2/sqrt(pi) - 1 */
+ efx = 1.2837916709551257389615890312154517168810E-1L;
+
+
+/* erf(x) = x + x R(x^2)
+ 0 <= x <= 7/8
+ Peak relative error 1.8e-35 */
+#define NTN1 8
+static const long double TN1[NTN1 + 1] =
+{
+ -3.858252324254637124543172907442106422373E10L,
+ 9.580319248590464682316366876952214879858E10L,
+ 1.302170519734879977595901236693040544854E10L,
+ 2.922956950426397417800321486727032845006E9L,
+ 1.764317520783319397868923218385468729799E8L,
+ 1.573436014601118630105796794840834145120E7L,
+ 4.028077380105721388745632295157816229289E5L,
+ 1.644056806467289066852135096352853491530E4L,
+ 3.390868480059991640235675479463287886081E1L
+};
+#define NTD1 8
+static const long double TD1[NTD1 + 1] =
+{
+ -3.005357030696532927149885530689529032152E11L,
+ -1.342602283126282827411658673839982164042E11L,
+ -2.777153893355340961288511024443668743399E10L,
+ -3.483826391033531996955620074072768276974E9L,
+ -2.906321047071299585682722511260895227921E8L,
+ -1.653347985722154162439387878512427542691E7L,
+ -6.245520581562848778466500301865173123136E5L,
+ -1.402124304177498828590239373389110545142E4L,
+ -1.209368072473510674493129989468348633579E2L
+/* 1.0E0 */
+};
+
+
+/* erf(z+1) = erf_const + P(z)/Q(z)
+ -.125 <= z <= 0
+ Peak relative error 7.3e-36 */
+static const long double erf_const = 0.845062911510467529296875L;
+#define NTN2 8
+static const long double TN2[NTN2 + 1] =
+{
+ -4.088889697077485301010486931817357000235E1L,
+ 7.157046430681808553842307502826960051036E3L,
+ -2.191561912574409865550015485451373731780E3L,
+ 2.180174916555316874988981177654057337219E3L,
+ 2.848578658049670668231333682379720943455E2L,
+ 1.630362490952512836762810462174798925274E2L,
+ 6.317712353961866974143739396865293596895E0L,
+ 2.450441034183492434655586496522857578066E1L,
+ 5.127662277706787664956025545897050896203E-1L
+};
+#define NTD2 8
+static const long double TD2[NTD2 + 1] =
+{
+ 1.731026445926834008273768924015161048885E4L,
+ 1.209682239007990370796112604286048173750E4L,
+ 1.160950290217993641320602282462976163857E4L,
+ 5.394294645127126577825507169061355698157E3L,
+ 2.791239340533632669442158497532521776093E3L,
+ 8.989365571337319032943005387378993827684E2L,
+ 2.974016493766349409725385710897298069677E2L,
+ 6.148192754590376378740261072533527271947E1L,
+ 1.178502892490738445655468927408440847480E1L
+ /* 1.0E0 */
+};
+
+
+/* erfc(x + 0.25) = erfc(0.25) + x R(x)
+ 0 <= x < 0.125
+ Peak relative error 1.4e-35 */
+#define NRNr13 8
+static const long double RNr13[NRNr13 + 1] =
+{
+ -2.353707097641280550282633036456457014829E3L,
+ 3.871159656228743599994116143079870279866E2L,
+ -3.888105134258266192210485617504098426679E2L,
+ -2.129998539120061668038806696199343094971E1L,
+ -8.125462263594034672468446317145384108734E1L,
+ 8.151549093983505810118308635926270319660E0L,
+ -5.033362032729207310462422357772568553670E0L,
+ -4.253956621135136090295893547735851168471E-2L,
+ -8.098602878463854789780108161581050357814E-2L
+};
+#define NRDr13 7
+static const long double RDr13[NRDr13 + 1] =
+{
+ 2.220448796306693503549505450626652881752E3L,
+ 1.899133258779578688791041599040951431383E2L,
+ 1.061906712284961110196427571557149268454E3L,
+ 7.497086072306967965180978101974566760042E1L,
+ 2.146796115662672795876463568170441327274E2L,
+ 1.120156008362573736664338015952284925592E1L,
+ 2.211014952075052616409845051695042741074E1L,
+ 6.469655675326150785692908453094054988938E-1L
+ /* 1.0E0 */
+};
+/* erfc(0.25) = C13a + C13b to extra precision. */
+static const long double C13a = 0.723663330078125L;
+static const long double C13b = 1.0279753638067014931732235184287934646022E-5L;
+
+
+/* erfc(x + 0.375) = erfc(0.375) + x R(x)
+ 0 <= x < 0.125
+ Peak relative error 1.2e-35 */
+#define NRNr14 8
+static const long double RNr14[NRNr14 + 1] =
+{
+ -2.446164016404426277577283038988918202456E3L,
+ 6.718753324496563913392217011618096698140E2L,
+ -4.581631138049836157425391886957389240794E2L,
+ -2.382844088987092233033215402335026078208E1L,
+ -7.119237852400600507927038680970936336458E1L,
+ 1.313609646108420136332418282286454287146E1L,
+ -6.188608702082264389155862490056401365834E0L,
+ -2.787116601106678287277373011101132659279E-2L,
+ -2.230395570574153963203348263549700967918E-2L
+};
+#define NRDr14 7
+static const long double RDr14[NRDr14 + 1] =
+{
+ 2.495187439241869732696223349840963702875E3L,
+ 2.503549449872925580011284635695738412162E2L,
+ 1.159033560988895481698051531263861842461E3L,
+ 9.493751466542304491261487998684383688622E1L,
+ 2.276214929562354328261422263078480321204E2L,
+ 1.367697521219069280358984081407807931847E1L,
+ 2.276988395995528495055594829206582732682E1L,
+ 7.647745753648996559837591812375456641163E-1L
+ /* 1.0E0 */
+};
+/* erfc(0.375) = C14a + C14b to extra precision. */
+static const long double C14a = 0.5958709716796875L;
+static const long double C14b = 1.2118885490201676174914080878232469565953E-5L;
+
+/* erfc(x + 0.5) = erfc(0.5) + x R(x)
+ 0 <= x < 0.125
+ Peak relative error 4.7e-36 */
+#define NRNr15 8
+static const long double RNr15[NRNr15 + 1] =
+{
+ -2.624212418011181487924855581955853461925E3L,
+ 8.473828904647825181073831556439301342756E2L,
+ -5.286207458628380765099405359607331669027E2L,
+ -3.895781234155315729088407259045269652318E1L,
+ -6.200857908065163618041240848728398496256E1L,
+ 1.469324610346924001393137895116129204737E1L,
+ -6.961356525370658572800674953305625578903E0L,
+ 5.145724386641163809595512876629030548495E-3L,
+ 1.990253655948179713415957791776180406812E-2L
+};
+#define NRDr15 7
+static const long double RDr15[NRDr15 + 1] =
+{
+ 2.986190760847974943034021764693341524962E3L,
+ 5.288262758961073066335410218650047725985E2L,
+ 1.363649178071006978355113026427856008978E3L,
+ 1.921707975649915894241864988942255320833E2L,
+ 2.588651100651029023069013885900085533226E2L,
+ 2.628752920321455606558942309396855629459E1L,
+ 2.455649035885114308978333741080991380610E1L,
+ 1.378826653595128464383127836412100939126E0L
+ /* 1.0E0 */
+};
+/* erfc(0.5) = C15a + C15b to extra precision. */
+static const long double C15a = 0.4794921875L;
+static const long double C15b = 7.9346869534623172533461080354712635484242E-6L;
+
+/* erfc(x + 0.625) = erfc(0.625) + x R(x)
+ 0 <= x < 0.125
+ Peak relative error 5.1e-36 */
+#define NRNr16 8
+static const long double RNr16[NRNr16 + 1] =
+{
+ -2.347887943200680563784690094002722906820E3L,
+ 8.008590660692105004780722726421020136482E2L,
+ -5.257363310384119728760181252132311447963E2L,
+ -4.471737717857801230450290232600243795637E1L,
+ -4.849540386452573306708795324759300320304E1L,
+ 1.140885264677134679275986782978655952843E1L,
+ -6.731591085460269447926746876983786152300E0L,
+ 1.370831653033047440345050025876085121231E-1L,
+ 2.022958279982138755020825717073966576670E-2L,
+};
+#define NRDr16 7
+static const long double RDr16[NRDr16 + 1] =
+{
+ 3.075166170024837215399323264868308087281E3L,
+ 8.730468942160798031608053127270430036627E2L,
+ 1.458472799166340479742581949088453244767E3L,
+ 3.230423687568019709453130785873540386217E2L,
+ 2.804009872719893612081109617983169474655E2L,
+ 4.465334221323222943418085830026979293091E1L,
+ 2.612723259683205928103787842214809134746E1L,
+ 2.341526751185244109722204018543276124997E0L,
+ /* 1.0E0 */
+};
+/* erfc(0.625) = C16a + C16b to extra precision. */
+static const long double C16a = 0.3767547607421875L;
+static const long double C16b = 4.3570693945275513594941232097252997287766E-6L;
+
+/* erfc(x + 0.75) = erfc(0.75) + x R(x)
+ 0 <= x < 0.125
+ Peak relative error 1.7e-35 */
+#define NRNr17 8
+static const long double RNr17[NRNr17 + 1] =
+{
+ -1.767068734220277728233364375724380366826E3L,
+ 6.693746645665242832426891888805363898707E2L,
+ -4.746224241837275958126060307406616817753E2L,
+ -2.274160637728782675145666064841883803196E1L,
+ -3.541232266140939050094370552538987982637E1L,
+ 6.988950514747052676394491563585179503865E0L,
+ -5.807687216836540830881352383529281215100E0L,
+ 3.631915988567346438830283503729569443642E-1L,
+ -1.488945487149634820537348176770282391202E-2L
+};
+#define NRDr17 7
+static const long double RDr17[NRDr17 + 1] =
+{
+ 2.748457523498150741964464942246913394647E3L,
+ 1.020213390713477686776037331757871252652E3L,
+ 1.388857635935432621972601695296561952738E3L,
+ 3.903363681143817750895999579637315491087E2L,
+ 2.784568344378139499217928969529219886578E2L,
+ 5.555800830216764702779238020065345401144E1L,
+ 2.646215470959050279430447295801291168941E1L,
+ 2.984905282103517497081766758550112011265E0L,
+ /* 1.0E0 */
+};
+/* erfc(0.75) = C17a + C17b to extra precision. */
+static const long double C17a = 0.2888336181640625L;
+static const long double C17b = 1.0748182422368401062165408589222625794046E-5L;
+
+
+/* erfc(x + 0.875) = erfc(0.875) + x R(x)
+ 0 <= x < 0.125
+ Peak relative error 2.2e-35 */
+#define NRNr18 8
+static const long double RNr18[NRNr18 + 1] =
+{
+ -1.342044899087593397419622771847219619588E3L,
+ 6.127221294229172997509252330961641850598E2L,
+ -4.519821356522291185621206350470820610727E2L,
+ 1.223275177825128732497510264197915160235E1L,
+ -2.730789571382971355625020710543532867692E1L,
+ 4.045181204921538886880171727755445395862E0L,
+ -4.925146477876592723401384464691452700539E0L,
+ 5.933878036611279244654299924101068088582E-1L,
+ -5.557645435858916025452563379795159124753E-2L
+};
+#define NRDr18 7
+static const long double RDr18[NRDr18 + 1] =
+{
+ 2.557518000661700588758505116291983092951E3L,
+ 1.070171433382888994954602511991940418588E3L,
+ 1.344842834423493081054489613250688918709E3L,
+ 4.161144478449381901208660598266288188426E2L,
+ 2.763670252219855198052378138756906980422E2L,
+ 5.998153487868943708236273854747564557632E1L,
+ 2.657695108438628847733050476209037025318E1L,
+ 3.252140524394421868923289114410336976512E0L,
+ /* 1.0E0 */
+};
+/* erfc(0.875) = C18a + C18b to extra precision. */
+static const long double C18a = 0.215911865234375L;
+static const long double C18b = 1.3073705765341685464282101150637224028267E-5L;
+
+/* erfc(x + 1.0) = erfc(1.0) + x R(x)
+ 0 <= x < 0.125
+ Peak relative error 1.6e-35 */
+#define NRNr19 8
+static const long double RNr19[NRNr19 + 1] =
+{
+ -1.139180936454157193495882956565663294826E3L,
+ 6.134903129086899737514712477207945973616E2L,
+ -4.628909024715329562325555164720732868263E2L,
+ 4.165702387210732352564932347500364010833E1L,
+ -2.286979913515229747204101330405771801610E1L,
+ 1.870695256449872743066783202326943667722E0L,
+ -4.177486601273105752879868187237000032364E0L,
+ 7.533980372789646140112424811291782526263E-1L,
+ -8.629945436917752003058064731308767664446E-2L
+};
+#define NRDr19 7
+static const long double RDr19[NRDr19 + 1] =
+{
+ 2.744303447981132701432716278363418643778E3L,
+ 1.266396359526187065222528050591302171471E3L,
+ 1.466739461422073351497972255511919814273E3L,
+ 4.868710570759693955597496520298058147162E2L,
+ 2.993694301559756046478189634131722579643E2L,
+ 6.868976819510254139741559102693828237440E1L,
+ 2.801505816247677193480190483913753613630E1L,
+ 3.604439909194350263552750347742663954481E0L,
+ /* 1.0E0 */
+};
+/* erfc(1.0) = C19a + C19b to extra precision. */
+static const long double C19a = 0.15728759765625L;
+static const long double C19b = 1.1609394035130658779364917390740703933002E-5L;
+
+/* erfc(x + 1.125) = erfc(1.125) + x R(x)
+ 0 <= x < 0.125
+ Peak relative error 3.6e-36 */
+#define NRNr20 8
+static const long double RNr20[NRNr20 + 1] =
+{
+ -9.652706916457973956366721379612508047640E2L,
+ 5.577066396050932776683469951773643880634E2L,
+ -4.406335508848496713572223098693575485978E2L,
+ 5.202893466490242733570232680736966655434E1L,
+ -1.931311847665757913322495948705563937159E1L,
+ -9.364318268748287664267341457164918090611E-2L,
+ -3.306390351286352764891355375882586201069E0L,
+ 7.573806045289044647727613003096916516475E-1L,
+ -9.611744011489092894027478899545635991213E-2L
+};
+#define NRDr20 7
+static const long double RDr20[NRDr20 + 1] =
+{
+ 3.032829629520142564106649167182428189014E3L,
+ 1.659648470721967719961167083684972196891E3L,
+ 1.703545128657284619402511356932569292535E3L,
+ 6.393465677731598872500200253155257708763E2L,
+ 3.489131397281030947405287112726059221934E2L,
+ 8.848641738570783406484348434387611713070E1L,
+ 3.132269062552392974833215844236160958502E1L,
+ 4.430131663290563523933419966185230513168E0L
+ /* 1.0E0 */
+};
+/* erfc(1.125) = C20a + C20b to extra precision. */
+static const long double C20a = 0.111602783203125L;
+static const long double C20b = 8.9850951672359304215530728365232161564636E-6L;
+
+/* erfc(1/x) = 1/x exp (-1/x^2 - 0.5625 + R(1/x^2))
+ 7/8 <= 1/x < 1
+ Peak relative error 1.4e-35 */
+#define NRNr8 9
+static const long double RNr8[NRNr8 + 1] =
+{
+ 3.587451489255356250759834295199296936784E1L,
+ 5.406249749087340431871378009874875889602E2L,
+ 2.931301290625250886238822286506381194157E3L,
+ 7.359254185241795584113047248898753470923E3L,
+ 9.201031849810636104112101947312492532314E3L,
+ 5.749697096193191467751650366613289284777E3L,
+ 1.710415234419860825710780802678697889231E3L,
+ 2.150753982543378580859546706243022719599E2L,
+ 8.740953582272147335100537849981160931197E0L,
+ 4.876422978828717219629814794707963640913E-2L
+};
+#define NRDr8 8
+static const long double RDr8[NRDr8 + 1] =
+{
+ 6.358593134096908350929496535931630140282E1L,
+ 9.900253816552450073757174323424051765523E2L,
+ 5.642928777856801020545245437089490805186E3L,
+ 1.524195375199570868195152698617273739609E4L,
+ 2.113829644500006749947332935305800887345E4L,
+ 1.526438562626465706267943737310282977138E4L,
+ 5.561370922149241457131421914140039411782E3L,
+ 9.394035530179705051609070428036834496942E2L,
+ 6.147019596150394577984175188032707343615E1L
+ /* 1.0E0 */
+};
+
+/* erfc(1/x) = 1/x exp (-1/x^2 - 0.5625 + R(1/x^2))
+ 0.75 <= 1/x <= 0.875
+ Peak relative error 2.0e-36 */
+#define NRNr7 9
+static const long double RNr7[NRNr7 + 1] =
+{
+ 1.686222193385987690785945787708644476545E1L,
+ 1.178224543567604215602418571310612066594E3L,
+ 1.764550584290149466653899886088166091093E4L,
+ 1.073758321890334822002849369898232811561E5L,
+ 3.132840749205943137619839114451290324371E5L,
+ 4.607864939974100224615527007793867585915E5L,
+ 3.389781820105852303125270837910972384510E5L,
+ 1.174042187110565202875011358512564753399E5L,
+ 1.660013606011167144046604892622504338313E4L,
+ 6.700393957480661937695573729183733234400E2L
+};
+#define NRDr7 9
+static const long double RDr7[NRDr7 + 1] =
+{
+-1.709305024718358874701575813642933561169E3L,
+-3.280033887481333199580464617020514788369E4L,
+-2.345284228022521885093072363418750835214E5L,
+-8.086758123097763971926711729242327554917E5L,
+-1.456900414510108718402423999575992450138E6L,
+-1.391654264881255068392389037292702041855E6L,
+-6.842360801869939983674527468509852583855E5L,
+-1.597430214446573566179675395199807533371E5L,
+-1.488876130609876681421645314851760773480E4L,
+-3.511762950935060301403599443436465645703E2L
+ /* 1.0E0 */
+};
+
+/* erfc(1/x) = 1/x exp(-1/x^2 - 0.5625 + R(1/x^2))
+ 5/8 <= 1/x < 3/4
+ Peak relative error 1.9e-35 */
+#define NRNr6 9
+static const long double RNr6[NRNr6 + 1] =
+{
+ 1.642076876176834390623842732352935761108E0L,
+ 1.207150003611117689000664385596211076662E2L,
+ 2.119260779316389904742873816462800103939E3L,
+ 1.562942227734663441801452930916044224174E4L,
+ 5.656779189549710079988084081145693580479E4L,
+ 1.052166241021481691922831746350942786299E5L,
+ 9.949798524786000595621602790068349165758E4L,
+ 4.491790734080265043407035220188849562856E4L,
+ 8.377074098301530326270432059434791287601E3L,
+ 4.506934806567986810091824791963991057083E2L
+};
+#define NRDr6 9
+static const long double RDr6[NRDr6 + 1] =
+{
+-1.664557643928263091879301304019826629067E2L,
+-3.800035902507656624590531122291160668452E3L,
+-3.277028191591734928360050685359277076056E4L,
+-1.381359471502885446400589109566587443987E5L,
+-3.082204287382581873532528989283748656546E5L,
+-3.691071488256738343008271448234631037095E5L,
+-2.300482443038349815750714219117566715043E5L,
+-6.873955300927636236692803579555752171530E4L,
+-8.262158817978334142081581542749986845399E3L,
+-2.517122254384430859629423488157361983661E2L
+ /* 1.00 */
+};
+
+/* erfc(1/x) = 1/x exp(-1/x^2 - 0.5625 + R(1/x^2))
+ 1/2 <= 1/x < 5/8
+ Peak relative error 4.6e-36 */
+#define NRNr5 10
+static const long double RNr5[NRNr5 + 1] =
+{
+-3.332258927455285458355550878136506961608E-3L,
+-2.697100758900280402659586595884478660721E-1L,
+-6.083328551139621521416618424949137195536E0L,
+-6.119863528983308012970821226810162441263E1L,
+-3.176535282475593173248810678636522589861E2L,
+-8.933395175080560925809992467187963260693E2L,
+-1.360019508488475978060917477620199499560E3L,
+-1.075075579828188621541398761300910213280E3L,
+-4.017346561586014822824459436695197089916E2L,
+-5.857581368145266249509589726077645791341E1L,
+-2.077715925587834606379119585995758954399E0L
+};
+#define NRDr5 9
+static const long double RDr5[NRDr5 + 1] =
+{
+ 3.377879570417399341550710467744693125385E-1L,
+ 1.021963322742390735430008860602594456187E1L,
+ 1.200847646592942095192766255154827011939E2L,
+ 7.118915528142927104078182863387116942836E2L,
+ 2.318159380062066469386544552429625026238E3L,
+ 4.238729853534009221025582008928765281620E3L,
+ 4.279114907284825886266493994833515580782E3L,
+ 2.257277186663261531053293222591851737504E3L,
+ 5.570475501285054293371908382916063822957E2L,
+ 5.142189243856288981145786492585432443560E1L
+ /* 1.0E0 */
+};
+
+/* erfc(1/x) = 1/x exp(-1/x^2 - 0.5625 + R(1/x^2))
+ 3/8 <= 1/x < 1/2
+ Peak relative error 2.0e-36 */
+#define NRNr4 10
+static const long double RNr4[NRNr4 + 1] =
+{
+ 3.258530712024527835089319075288494524465E-3L,
+ 2.987056016877277929720231688689431056567E-1L,
+ 8.738729089340199750734409156830371528862E0L,
+ 1.207211160148647782396337792426311125923E2L,
+ 8.997558632489032902250523945248208224445E2L,
+ 3.798025197699757225978410230530640879762E3L,
+ 9.113203668683080975637043118209210146846E3L,
+ 1.203285891339933238608683715194034900149E4L,
+ 8.100647057919140328536743641735339740855E3L,
+ 2.383888249907144945837976899822927411769E3L,
+ 2.127493573166454249221983582495245662319E2L
+};
+#define NRDr4 10
+static const long double RDr4[NRDr4 + 1] =
+{
+-3.303141981514540274165450687270180479586E-1L,
+-1.353768629363605300707949368917687066724E1L,
+-2.206127630303621521950193783894598987033E2L,
+-1.861800338758066696514480386180875607204E3L,
+-8.889048775872605708249140016201753255599E3L,
+-2.465888106627948210478692168261494857089E4L,
+-3.934642211710774494879042116768390014289E4L,
+-3.455077258242252974937480623730228841003E4L,
+-1.524083977439690284820586063729912653196E4L,
+-2.810541887397984804237552337349093953857E3L,
+-1.343929553541159933824901621702567066156E2L
+ /* 1.0E0 */
+};
+
+/* erfc(1/x) = 1/x exp(-1/x^2 - 0.5625 + R(1/x^2))
+ 1/4 <= 1/x < 3/8
+ Peak relative error 8.4e-37 */
+#define NRNr3 11
+static const long double RNr3[NRNr3 + 1] =
+{
+-1.952401126551202208698629992497306292987E-6L,
+-2.130881743066372952515162564941682716125E-4L,
+-8.376493958090190943737529486107282224387E-3L,
+-1.650592646560987700661598877522831234791E-1L,
+-1.839290818933317338111364667708678163199E0L,
+-1.216278715570882422410442318517814388470E1L,
+-4.818759344462360427612133632533779091386E1L,
+-1.120994661297476876804405329172164436784E2L,
+-1.452850765662319264191141091859300126931E2L,
+-9.485207851128957108648038238656777241333E1L,
+-2.563663855025796641216191848818620020073E1L,
+-1.787995944187565676837847610706317833247E0L
+};
+#define NRDr3 10
+static const long double RDr3[NRDr3 + 1] =
+{
+ 1.979130686770349481460559711878399476903E-4L,
+ 1.156941716128488266238105813374635099057E-2L,
+ 2.752657634309886336431266395637285974292E-1L,
+ 3.482245457248318787349778336603569327521E0L,
+ 2.569347069372696358578399521203959253162E1L,
+ 1.142279000180457419740314694631879921561E2L,
+ 3.056503977190564294341422623108332700840E2L,
+ 4.780844020923794821656358157128719184422E2L,
+ 4.105972727212554277496256802312730410518E2L,
+ 1.724072188063746970865027817017067646246E2L,
+ 2.815939183464818198705278118326590370435E1L
+ /* 1.0E0 */
+};
+
+/* erfc(1/x) = 1/x exp(-1/x^2 - 0.5625 + R(1/x^2))
+ 1/8 <= 1/x < 1/4
+ Peak relative error 1.5e-36 */
+#define NRNr2 11
+static const long double RNr2[NRNr2 + 1] =
+{
+-2.638914383420287212401687401284326363787E-8L,
+-3.479198370260633977258201271399116766619E-6L,
+-1.783985295335697686382487087502222519983E-4L,
+-4.777876933122576014266349277217559356276E-3L,
+-7.450634738987325004070761301045014986520E-2L,
+-7.068318854874733315971973707247467326619E-1L,
+-4.113919921935944795764071670806867038732E0L,
+-1.440447573226906222417767283691888875082E1L,
+-2.883484031530718428417168042141288943905E1L,
+-2.990886974328476387277797361464279931446E1L,
+-1.325283914915104866248279787536128997331E1L,
+-1.572436106228070195510230310658206154374E0L
+};
+#define NRDr2 10
+static const long double RDr2[NRDr2 + 1] =
+{
+ 2.675042728136731923554119302571867799673E-6L,
+ 2.170997868451812708585443282998329996268E-4L,
+ 7.249969752687540289422684951196241427445E-3L,
+ 1.302040375859768674620410563307838448508E-1L,
+ 1.380202483082910888897654537144485285549E0L,
+ 8.926594113174165352623847870299170069350E0L,
+ 3.521089584782616472372909095331572607185E1L,
+ 8.233547427533181375185259050330809105570E1L,
+ 1.072971579885803033079469639073292840135E2L,
+ 6.943803113337964469736022094105143158033E1L,
+ 1.775695341031607738233608307835017282662E1L
+ /* 1.0E0 */
+};
+
+/* erfc(1/x) = 1/x exp(-1/x^2 - 0.5625 + R(1/x^2))
+ 1/128 <= 1/x < 1/8
+ Peak relative error 2.2e-36 */
+#define NRNr1 9
+static const long double RNr1[NRNr1 + 1] =
+{
+-4.250780883202361946697751475473042685782E-8L,
+-5.375777053288612282487696975623206383019E-6L,
+-2.573645949220896816208565944117382460452E-4L,
+-6.199032928113542080263152610799113086319E-3L,
+-8.262721198693404060380104048479916247786E-2L,
+-6.242615227257324746371284637695778043982E-1L,
+-2.609874739199595400225113299437099626386E0L,
+-5.581967563336676737146358534602770006970E0L,
+-5.124398923356022609707490956634280573882E0L,
+-1.290865243944292370661544030414667556649E0L
+};
+#define NRDr1 8
+static const long double RDr1[NRDr1 + 1] =
+{
+ 4.308976661749509034845251315983612976224E-6L,
+ 3.265390126432780184125233455960049294580E-4L,
+ 9.811328839187040701901866531796570418691E-3L,
+ 1.511222515036021033410078631914783519649E-1L,
+ 1.289264341917429958858379585970225092274E0L,
+ 6.147640356182230769548007536914983522270E0L,
+ 1.573966871337739784518246317003956180750E1L,
+ 1.955534123435095067199574045529218238263E1L,
+ 9.472613121363135472247929109615785855865E0L
+ /* 1.0E0 */
+};
+
+
+long double
+__erfl (long double x)
+{
+ long double a, y, z;
+ int32_t i, ix, hx;
+ double xhi;
+
+ xhi = ldbl_high (x);
+ GET_HIGH_WORD (hx, xhi);
+ ix = hx & 0x7fffffff;
+
+ if (ix >= 0x7ff00000)
+ { /* erf(nan)=nan */
+ i = ((uint32_t) hx >> 31) << 1;
+ return (long double) (1 - i) + one / x; /* erf(+-inf)=+-1 */
+ }
+
+ if (ix >= 0x3ff00000) /* |x| >= 1.0 */
+ {
+ if (ix >= 0x4039A0DE)
+ {
+ /* __erfcl (x) underflows if x > 25.6283 */
+ if ((hx & 0x80000000) == 0)
+ return one-tiny;
+ else
+ return tiny-one;
+ }
+ else
+ {
+ y = __erfcl (x);
+ return (one - y);
+ }
+ }
+ a = x;
+ if ((hx & 0x80000000) != 0)
+ a = -a;
+ z = x * x;
+ if (ix < 0x3fec0000) /* a < 0.875 */
+ {
+ if (ix < 0x3c600000) /* |x|<2**-57 */
+ {
+ if (ix < 0x00800000)
+ {
+ /* erf (-0) = -0. Unfortunately, for IBM extended double
+ 0.0625 * (16.0 * x + (16.0 * efx) * x) for x = -0
+ evaluates to 0. */
+ if (x == 0)
+ return x;
+ long double ret = 0.0625 * (16.0 * x + (16.0 * efx) * x);
+ math_check_force_underflow (ret);
+ return ret;
+ }
+ return x + efx * x;
+ }
+ y = a + a * neval (z, TN1, NTN1) / deval (z, TD1, NTD1);
+ }
+ else
+ {
+ a = a - one;
+ y = erf_const + neval (a, TN2, NTN2) / deval (a, TD2, NTD2);
+ }
+
+ if (hx & 0x80000000) /* x < 0 */
+ y = -y;
+ return( y );
+}
+
+long_double_symbol (libm, __erfl, erfl);
+long double
+__erfcl (long double x)
+{
+ long double y, z, p, r;
+ int32_t i, ix;
+ uint32_t hx;
+ double xhi;
+
+ xhi = ldbl_high (x);
+ GET_HIGH_WORD (hx, xhi);
+ ix = hx & 0x7fffffff;
+
+ if (ix >= 0x7ff00000)
+ { /* erfc(nan)=nan */
+ /* erfc(+-inf)=0,2 */
+ long double ret = (long double) ((hx >> 31) << 1) + one / x;
+ if (FIX_INT_FP_CONVERT_ZERO && ret == 0.0L)
+ return 0.0L;
+ return ret;
+ }
+
+ if (ix < 0x3fd00000) /* |x| <1/4 */
+ {
+ if (ix < 0x38d00000) /* |x|<2**-114 */
+ return one - x;
+ return one - __erfl (x);
+ }
+ if (ix < 0x3ff40000) /* 1.25 */
+ {
+ if ((hx & 0x80000000) != 0)
+ x = -x;
+ i = 8.0 * x;
+ switch (i)
+ {
+ case 2:
+ z = x - 0.25L;
+ y = C13b + z * neval (z, RNr13, NRNr13) / deval (z, RDr13, NRDr13);
+ y += C13a;
+ break;
+ case 3:
+ z = x - 0.375L;
+ y = C14b + z * neval (z, RNr14, NRNr14) / deval (z, RDr14, NRDr14);
+ y += C14a;
+ break;
+ case 4:
+ z = x - 0.5L;
+ y = C15b + z * neval (z, RNr15, NRNr15) / deval (z, RDr15, NRDr15);
+ y += C15a;
+ break;
+ case 5:
+ z = x - 0.625L;
+ y = C16b + z * neval (z, RNr16, NRNr16) / deval (z, RDr16, NRDr16);
+ y += C16a;
+ break;
+ case 6:
+ z = x - 0.75L;
+ y = C17b + z * neval (z, RNr17, NRNr17) / deval (z, RDr17, NRDr17);
+ y += C17a;
+ break;
+ case 7:
+ z = x - 0.875L;
+ y = C18b + z * neval (z, RNr18, NRNr18) / deval (z, RDr18, NRDr18);
+ y += C18a;
+ break;
+ case 8:
+ z = x - 1.0L;
+ y = C19b + z * neval (z, RNr19, NRNr19) / deval (z, RDr19, NRDr19);
+ y += C19a;
+ break;
+ default: /* i == 9. */
+ z = x - 1.125L;
+ y = C20b + z * neval (z, RNr20, NRNr20) / deval (z, RDr20, NRDr20);
+ y += C20a;
+ break;
+ }
+ if (hx & 0x80000000)
+ y = 2.0L - y;
+ return y;
+ }
+ /* 1.25 < |x| < 107 */
+ if (ix < 0x405ac000)
+ {
+ /* x < -9 */
+ if (hx >= 0xc0220000)
+ return two - tiny;
+
+ if ((hx & 0x80000000) != 0)
+ x = -x;
+ z = one / (x * x);
+ i = 8.0 / x;
+ switch (i)
+ {
+ default:
+ case 0:
+ p = neval (z, RNr1, NRNr1) / deval (z, RDr1, NRDr1);
+ break;
+ case 1:
+ p = neval (z, RNr2, NRNr2) / deval (z, RDr2, NRDr2);
+ break;
+ case 2:
+ p = neval (z, RNr3, NRNr3) / deval (z, RDr3, NRDr3);
+ break;
+ case 3:
+ p = neval (z, RNr4, NRNr4) / deval (z, RDr4, NRDr4);
+ break;
+ case 4:
+ p = neval (z, RNr5, NRNr5) / deval (z, RDr5, NRDr5);
+ break;
+ case 5:
+ p = neval (z, RNr6, NRNr6) / deval (z, RDr6, NRDr6);
+ break;
+ case 6:
+ p = neval (z, RNr7, NRNr7) / deval (z, RDr7, NRDr7);
+ break;
+ case 7:
+ p = neval (z, RNr8, NRNr8) / deval (z, RDr8, NRDr8);
+ break;
+ }
+ z = (float) x;
+ r = __ieee754_expl (-z * z - 0.5625) *
+ __ieee754_expl ((z - x) * (z + x) + p);
+ if ((hx & 0x80000000) == 0)
+ {
+ long double ret = r / x;
+ if (ret == 0)
+ __set_errno (ERANGE);
+ return ret;
+ }
+ else
+ return two - r / x;
+ }
+ else
+ {
+ if ((hx & 0x80000000) == 0)
+ {
+ __set_errno (ERANGE);
+ return tiny * tiny;
+ }
+ else
+ return two - tiny;
+ }
+}
+
+long_double_symbol (libm, __erfcl, erfcl);
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_expm1l.c b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_expm1l.c
new file mode 100644
index 0000000000..42d57c6eec
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_expm1l.c
@@ -0,0 +1,152 @@
+/* expm1l.c
+ *
+ * Exponential function, minus 1
+ * 128-bit long double precision
+ *
+ *
+ *
+ * SYNOPSIS:
+ *
+ * long double x, y, expm1l();
+ *
+ * y = expm1l( x );
+ *
+ *
+ *
+ * DESCRIPTION:
+ *
+ * Returns e (2.71828...) raised to the x power, minus one.
+ *
+ * Range reduction is accomplished by separating the argument
+ * into an integer k and fraction f such that
+ *
+ * x k f
+ * e = 2 e.
+ *
+ * An expansion x + .5 x^2 + x^3 R(x) approximates exp(f) - 1
+ * in the basic range [-0.5 ln 2, 0.5 ln 2].
+ *
+ *
+ * ACCURACY:
+ *
+ * Relative error:
+ * arithmetic domain # trials peak rms
+ * IEEE -79,+MAXLOG 100,000 1.7e-34 4.5e-35
+ *
+ */
+
+/* Copyright 2001 by Stephen L. Moshier
+
+ This 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 2.1 of the License, or (at your option) any later version.
+
+ This 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 this library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <errno.h>
+#include <math.h>
+#include <math_private.h>
+#include <math_ldbl_opt.h>
+
+/* exp(x) - 1 = x + 0.5 x^2 + x^3 P(x)/Q(x)
+ -.5 ln 2 < x < .5 ln 2
+ Theoretical peak relative error = 8.1e-36 */
+
+static const long double
+ P0 = 2.943520915569954073888921213330863757240E8L,
+ P1 = -5.722847283900608941516165725053359168840E7L,
+ P2 = 8.944630806357575461578107295909719817253E6L,
+ P3 = -7.212432713558031519943281748462837065308E5L,
+ P4 = 4.578962475841642634225390068461943438441E4L,
+ P5 = -1.716772506388927649032068540558788106762E3L,
+ P6 = 4.401308817383362136048032038528753151144E1L,
+ P7 = -4.888737542888633647784737721812546636240E-1L,
+ Q0 = 1.766112549341972444333352727998584753865E9L,
+ Q1 = -7.848989743695296475743081255027098295771E8L,
+ Q2 = 1.615869009634292424463780387327037251069E8L,
+ Q3 = -2.019684072836541751428967854947019415698E7L,
+ Q4 = 1.682912729190313538934190635536631941751E6L,
+ Q5 = -9.615511549171441430850103489315371768998E4L,
+ Q6 = 3.697714952261803935521187272204485251835E3L,
+ Q7 = -8.802340681794263968892934703309274564037E1L,
+ /* Q8 = 1.000000000000000000000000000000000000000E0 */
+/* C1 + C2 = ln 2 */
+
+ C1 = 6.93145751953125E-1L,
+ C2 = 1.428606820309417232121458176568075500134E-6L,
+/* ln 2^-114 */
+ minarg = -7.9018778583833765273564461846232128760607E1L, big = 1e290L;
+
+
+long double
+__expm1l (long double x)
+{
+ long double px, qx, xx;
+ int32_t ix, lx, sign;
+ int k;
+ double xhi;
+
+ /* Detect infinity and NaN. */
+ xhi = ldbl_high (x);
+ EXTRACT_WORDS (ix, lx, xhi);
+ sign = ix & 0x80000000;
+ ix &= 0x7fffffff;
+ if (!sign && ix >= 0x40600000)
+ return __expl (x);
+ if (ix >= 0x7ff00000)
+ {
+ /* Infinity (which must be negative infinity). */
+ if (((ix - 0x7ff00000) | lx) == 0)
+ return -1.0L;
+ /* NaN. Invalid exception if signaling. */
+ return x + x;
+ }
+
+ /* expm1(+- 0) = +- 0. */
+ if ((ix | lx) == 0)
+ return x;
+
+ /* Minimum value. */
+ if (x < minarg)
+ return (4.0/big - 1.0L);
+
+ /* Express x = ln 2 (k + remainder), remainder not exceeding 1/2. */
+ xx = C1 + C2; /* ln 2. */
+ px = __floorl (0.5 + x / xx);
+ k = px;
+ /* remainder times ln 2 */
+ x -= px * C1;
+ x -= px * C2;
+
+ /* Approximate exp(remainder ln 2). */
+ px = (((((((P7 * x
+ + P6) * x
+ + P5) * x + P4) * x + P3) * x + P2) * x + P1) * x + P0) * x;
+
+ qx = (((((((x
+ + Q7) * x
+ + Q6) * x + Q5) * x + Q4) * x + Q3) * x + Q2) * x + Q1) * x + Q0;
+
+ xx = x * x;
+ qx = x + (0.5 * xx + xx * px / qx);
+
+ /* exp(x) = exp(k ln 2) exp(remainder ln 2) = 2^k exp(remainder ln 2).
+
+ We have qx = exp(remainder ln 2) - 1, so
+ exp(x) - 1 = 2^k (qx + 1) - 1
+ = 2^k qx + 2^k - 1. */
+
+ px = __ldexpl (1.0L, k);
+ x = px * qx + (px - 1.0);
+ return x;
+}
+libm_hidden_def (__expm1l)
+long_double_symbol (libm, __expm1l, expm1l);
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_fabsl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_fabsl.c
new file mode 100644
index 0000000000..c801c97065
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_fabsl.c
@@ -0,0 +1,44 @@
+/* s_fabsl.c -- long double version of s_fabs.c.
+ * Conversion to IEEE quad long double by Jakub Jelinek, jj@ultra.linux.cz.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: $";
+#endif
+
+
+/*
+ * fabsl(x) returns the absolute value of x.
+ */
+
+#include <math.h>
+#include <math_private.h>
+#include <math_ldbl_opt.h>
+
+long double __fabsl(long double x)
+{
+ u_int64_t hx, lx;
+ double xhi, xlo;
+
+ ldbl_unpack (x, &xhi, &xlo);
+ EXTRACT_WORDS64 (hx, xhi);
+ EXTRACT_WORDS64 (lx, xlo);
+ lx = lx ^ ( hx & 0x8000000000000000LL );
+ hx = hx & 0x7fffffffffffffffLL;
+ INSERT_WORDS64 (xhi, hx);
+ INSERT_WORDS64 (xlo, lx);
+ x = ldbl_pack (xhi, xlo);
+ return x;
+}
+long_double_symbol (libm, __fabsl, fabsl);
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_finitel.c b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_finitel.c
new file mode 100644
index 0000000000..3b9e3de292
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_finitel.c
@@ -0,0 +1,49 @@
+/* s_finitel.c -- long double version of s_finite.c.
+ * Conversion to IEEE quad long double by Jakub Jelinek, jj@ultra.linux.cz.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: $";
+#endif
+
+/*
+ * finitel(x) returns 1 is x is finite, else 0;
+ * no branching!
+ */
+
+#include <math.h>
+#include <math_private.h>
+#include <math_ldbl_opt.h>
+
+int
+___finitel (long double x)
+{
+ uint64_t hx;
+ double xhi;
+
+ xhi = ldbl_high (x);
+ EXTRACT_WORDS64 (hx, xhi);
+ hx &= 0x7ff0000000000000LL;
+ hx -= 0x7ff0000000000000LL;
+ return hx >> 63;
+}
+hidden_ver (___finitel, __finitel)
+weak_alias (___finitel, ____finitel)
+#if IS_IN (libm)
+long_double_symbol (libm, ____finitel, finitel);
+long_double_symbol (libm, ___finitel, __finitel);
+#else
+long_double_symbol (libc, ____finitel, finitel);
+long_double_symbol (libc, ___finitel, __finitel);
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_floorl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_floorl.c
new file mode 100644
index 0000000000..6b837c7bcd
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_floorl.c
@@ -0,0 +1,62 @@
+/* Round to int long double floating-point values.
+ IBM extended format long double version.
+ Copyright (C) 2006-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+#include <math_ldbl_opt.h>
+#include <float.h>
+#include <ieee754.h>
+
+
+long double
+__floorl (long double x)
+{
+ double xh, xl, hi, lo;
+
+ ldbl_unpack (x, &xh, &xl);
+
+ /* Return Inf, Nan, +/-0 unchanged. */
+ if (__builtin_expect (xh != 0.0
+ && __builtin_isless (__builtin_fabs (xh),
+ __builtin_inf ()), 1))
+ {
+ hi = __floor (xh);
+ if (hi != xh)
+ {
+ /* The high part is not an integer; the low part does not
+ affect the result. */
+ xh = hi;
+ xl = 0;
+ }
+ else
+ {
+ /* The high part is a nonzero integer. */
+ lo = __floor (xl);
+ xh = hi;
+ xl = lo;
+ ldbl_canonicalize_int (&xh, &xl);
+ }
+ }
+ else
+ /* Quiet signaling NaN arguments. */
+ xh += xh;
+
+ return ldbl_pack (xh, xl);
+}
+
+long_double_symbol (libm, __floorl, floorl);
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_fmal.c b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_fmal.c
new file mode 100644
index 0000000000..9098e79df9
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_fmal.c
@@ -0,0 +1,257 @@
+/* Compute x * y + z as ternary operation.
+ Copyright (C) 2011-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by David Flaherty <flaherty@linux.vnet.ibm.com>.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <fenv.h>
+#include <float.h>
+#include <math.h>
+#include <math_private.h>
+#include <math_ldbl_opt.h>
+#include <mul_split.h>
+#include <stdlib.h>
+
+/* Calculate X + Y exactly and store the result in *HI + *LO. It is
+ given that |X| >= |Y| and the values are small enough that no
+ overflow occurs. */
+
+static void
+add_split (double *hi, double *lo, double x, double y)
+{
+ /* Apply Dekker's algorithm. */
+ *hi = x + y;
+ *lo = (x - *hi) + y;
+}
+
+/* Value with extended range, used in intermediate computations. */
+typedef struct
+{
+ /* Value in [0.5, 1), as from frexp, or 0. */
+ double val;
+ /* Exponent of power of 2 it is multiplied by, or 0 for zero. */
+ int exp;
+} ext_val;
+
+/* Store D as an ext_val value. */
+
+static void
+store_ext_val (ext_val *v, double d)
+{
+ v->val = __frexp (d, &v->exp);
+}
+
+/* Store X * Y as ext_val values *V0 and *V1. */
+
+static void
+mul_ext_val (ext_val *v0, ext_val *v1, double x, double y)
+{
+ int xexp, yexp;
+ x = __frexp (x, &xexp);
+ y = __frexp (y, &yexp);
+ double hi, lo;
+ mul_split (&hi, &lo, x, y);
+ store_ext_val (v0, hi);
+ if (hi != 0)
+ v0->exp += xexp + yexp;
+ store_ext_val (v1, lo);
+ if (lo != 0)
+ v1->exp += xexp + yexp;
+}
+
+/* Compare absolute values of ext_val values pointed to by P and Q for
+ qsort. */
+
+static int
+compare (const void *p, const void *q)
+{
+ const ext_val *pe = p;
+ const ext_val *qe = q;
+ if (pe->val == 0)
+ return qe->val == 0 ? 0 : -1;
+ else if (qe->val == 0)
+ return 1;
+ else if (pe->exp < qe->exp)
+ return -1;
+ else if (pe->exp > qe->exp)
+ return 1;
+ else
+ {
+ double pd = fabs (pe->val);
+ double qd = fabs (qe->val);
+ if (pd < qd)
+ return -1;
+ else if (pd == qd)
+ return 0;
+ else
+ return 1;
+ }
+}
+
+/* Calculate *X + *Y exactly, storing the high part in *X (rounded to
+ nearest) and the low part in *Y. It is given that |X| >= |Y|. */
+
+static void
+add_split_ext (ext_val *x, ext_val *y)
+{
+ int xexp = x->exp, yexp = y->exp;
+ if (y->val == 0 || xexp - yexp > 53)
+ return;
+ double hi = x->val;
+ double lo = __scalbn (y->val, yexp - xexp);
+ add_split (&hi, &lo, hi, lo);
+ store_ext_val (x, hi);
+ if (hi != 0)
+ x->exp += xexp;
+ store_ext_val (y, lo);
+ if (lo != 0)
+ y->exp += xexp;
+}
+
+long double
+__fmal (long double x, long double y, long double z)
+{
+ double xhi, xlo, yhi, ylo, zhi, zlo;
+ int64_t hx, hy, hz;
+ int xexp, yexp, zexp;
+ double scale_val;
+ int scale_exp;
+ ldbl_unpack (x, &xhi, &xlo);
+ EXTRACT_WORDS64 (hx, xhi);
+ xexp = (hx & 0x7ff0000000000000LL) >> 52;
+ ldbl_unpack (y, &yhi, &ylo);
+ EXTRACT_WORDS64 (hy, yhi);
+ yexp = (hy & 0x7ff0000000000000LL) >> 52;
+ ldbl_unpack (z, &zhi, &zlo);
+ EXTRACT_WORDS64 (hz, zhi);
+ zexp = (hz & 0x7ff0000000000000LL) >> 52;
+
+ /* If z is Inf or NaN, but x and y are finite, avoid any exceptions
+ from computing x * y. */
+ if (zexp == 0x7ff && xexp != 0x7ff && yexp != 0x7ff)
+ return (z + x) + y;
+
+ /* If z is zero and x are y are nonzero, compute the result as x * y
+ to avoid the wrong sign of a zero result if x * y underflows to
+ 0. */
+ if (z == 0 && x != 0 && y != 0)
+ return x * y;
+
+ /* If x or y or z is Inf/NaN, or if x * y is zero, compute as x * y
+ + z. */
+ if (xexp == 0x7ff || yexp == 0x7ff || zexp == 0x7ff
+ || x == 0 || y == 0)
+ return (x * y) + z;
+
+ {
+ SET_RESTORE_ROUND (FE_TONEAREST);
+
+ ext_val vals[10];
+ store_ext_val (&vals[0], zhi);
+ store_ext_val (&vals[1], zlo);
+ mul_ext_val (&vals[2], &vals[3], xhi, yhi);
+ mul_ext_val (&vals[4], &vals[5], xhi, ylo);
+ mul_ext_val (&vals[6], &vals[7], xlo, yhi);
+ mul_ext_val (&vals[8], &vals[9], xlo, ylo);
+ qsort (vals, 10, sizeof (ext_val), compare);
+ /* Add up the values so that each element of VALS has absolute
+ value at most equal to the last set bit of the next nonzero
+ element. */
+ for (size_t i = 0; i <= 8; i++)
+ {
+ add_split_ext (&vals[i + 1], &vals[i]);
+ qsort (vals + i + 1, 9 - i, sizeof (ext_val), compare);
+ }
+ /* Add up the values in the other direction, so that each element
+ of VALS has absolute value less than 5ulp of the next
+ value. */
+ size_t dstpos = 9;
+ for (size_t i = 1; i <= 9; i++)
+ {
+ if (vals[dstpos].val == 0)
+ {
+ vals[dstpos] = vals[9 - i];
+ vals[9 - i].val = 0;
+ vals[9 - i].exp = 0;
+ }
+ else
+ {
+ add_split_ext (&vals[dstpos], &vals[9 - i]);
+ if (vals[9 - i].val != 0)
+ {
+ if (9 - i < dstpos - 1)
+ {
+ vals[dstpos - 1] = vals[9 - i];
+ vals[9 - i].val = 0;
+ vals[9 - i].exp = 0;
+ }
+ dstpos--;
+ }
+ }
+ }
+ /* If the result is an exact zero, it results from adding two
+ values with opposite signs; recompute in the original rounding
+ mode. */
+ if (vals[9].val == 0)
+ goto zero_out;
+ /* Adding the top three values will now give a result as accurate
+ as the underlying long double arithmetic. */
+ add_split_ext (&vals[9], &vals[8]);
+ if (compare (&vals[8], &vals[7]) < 0)
+ {
+ ext_val tmp = vals[7];
+ vals[7] = vals[8];
+ vals[8] = tmp;
+ }
+ add_split_ext (&vals[8], &vals[7]);
+ add_split_ext (&vals[9], &vals[8]);
+ if (vals[9].exp > DBL_MAX_EXP || vals[9].exp < DBL_MIN_EXP)
+ {
+ /* Overflow or underflow, with the result depending on the
+ original rounding mode, but not on the low part computed
+ here. */
+ scale_val = vals[9].val;
+ scale_exp = vals[9].exp;
+ goto scale_out;
+ }
+ double hi = __scalbn (vals[9].val, vals[9].exp);
+ double lo = __scalbn (vals[8].val, vals[8].exp);
+ /* It is possible that the low part became subnormal and was
+ rounded so that the result is no longer canonical. */
+ ldbl_canonicalize (&hi, &lo);
+ long double ret = ldbl_pack (hi, lo);
+ math_check_force_underflow (ret);
+ return ret;
+ }
+
+ scale_out:
+ scale_val = math_opt_barrier (scale_val);
+ scale_val = __scalbn (scale_val, scale_exp);
+ if (fabs (scale_val) == DBL_MAX)
+ return __copysignl (LDBL_MAX, scale_val);
+ math_check_force_underflow (scale_val);
+ return scale_val;
+
+ zero_out:;
+ double zero = 0.0;
+ zero = math_opt_barrier (zero);
+ return zero - zero;
+}
+#if IS_IN (libm)
+long_double_symbol (libm, __fmal, fmal);
+#else
+long_double_symbol (libc, __fmal, fmal);
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_fpclassifyl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_fpclassifyl.c
new file mode 100644
index 0000000000..82d520bc7f
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_fpclassifyl.c
@@ -0,0 +1,97 @@
+/* Return classification value corresponding to argument.
+ Copyright (C) 1997-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997 and
+ Jakub Jelinek <jj@ultra.linux.cz>, 1999.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+
+#include <math_private.h>
+#include <math_ldbl_opt.h>
+
+ /*
+ * hx lx
+ * +NaN 7ffn nnnn nnnn nnnn xxxx xxxx xxxx xxxx
+ * -NaN fffn nnnn nnnn nnnn xxxx xxxx xxxx xxxx
+ * +Inf 7ff0 0000 0000 0000 xxxx xxxx xxxx xxxx
+ * -Inf fff0 0000 0000 0000 xxxx xxxx xxxx xxxx
+ * +0 0000 0000 0000 0000 xxxx xxxx xxxx xxxx
+ * -0 8000 0000 0000 0000 xxxx xxxx xxxx xxxx
+ * +normal 0360 0000 0000 0000 0000 0000 0000 0000 (smallest)
+ * -normal 8360 0000 0000 0000 0000 0000 0000 0000 (smallest)
+ * +normal 7fef ffff ffff ffff 7c8f ffff ffff fffe (largest)
+ * +normal ffef ffff ffff ffff fc8f ffff ffff fffe (largest)
+ * +denorm 0360 0000 0000 0000 8000 0000 0000 0001 (largest)
+ * -denorm 8360 0000 0000 0000 0000 0000 0000 0001 (largest)
+ * +denorm 000n nnnn nnnn nnnn xxxx xxxx xxxx xxxx
+ * -denorm 800n nnnn nnnn nnnn xxxx xxxx xxxx xxxx
+ */
+
+int
+___fpclassifyl (long double x)
+{
+ u_int64_t hx, lx;
+ int retval = FP_NORMAL;
+ double xhi, xlo;
+
+ ldbl_unpack (x, &xhi, &xlo);
+ EXTRACT_WORDS64 (hx, xhi);
+ if ((hx & 0x7ff0000000000000ULL) == 0x7ff0000000000000ULL) {
+ /* +/-NaN or +/-Inf */
+ if (hx & 0x000fffffffffffffULL) {
+ /* +/-NaN */
+ retval = FP_NAN;
+ } else {
+ retval = FP_INFINITE;
+ }
+ } else {
+ /* +/-zero or +/- normal or +/- denormal */
+ if (hx & 0x7fffffffffffffffULL) {
+ /* +/- normal or +/- denormal */
+ if ((hx & 0x7ff0000000000000ULL) > 0x0360000000000000ULL) {
+ /* +/- normal */
+ retval = FP_NORMAL;
+ } else {
+ if ((hx & 0x7ff0000000000000ULL) == 0x0360000000000000ULL) {
+ EXTRACT_WORDS64 (lx, xlo);
+ if ((lx & 0x7fffffffffffffff) /* lower is non-zero */
+ && ((lx^hx) & 0x8000000000000000ULL)) { /* and sign differs */
+ /* +/- denormal */
+ retval = FP_SUBNORMAL;
+ } else {
+ /* +/- normal */
+ retval = FP_NORMAL;
+ }
+ } else {
+ /* +/- denormal */
+ retval = FP_SUBNORMAL;
+ }
+ }
+ } else {
+ /* +/- zero */
+ retval = FP_ZERO;
+ }
+ }
+
+ return retval;
+}
+long_double_symbol (libm, ___fpclassifyl, __fpclassifyl);
+#ifdef __LONG_DOUBLE_MATH_OPTIONAL
+libm_hidden_ver (___fpclassifyl, __fpclassifyl)
+#else
+libm_hidden_def (__fpclassifyl)
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_frexpl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_frexpl.c
new file mode 100644
index 0000000000..210c5d2ed4
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_frexpl.c
@@ -0,0 +1,148 @@
+/* s_frexpl.c -- long double version of s_frexp.c.
+ * Conversion to IEEE quad long double by Jakub Jelinek, jj@ultra.linux.cz.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: $";
+#endif
+
+/*
+ * for non-zero x
+ * x = frexpl(arg,&exp);
+ * return a long double fp quantity x such that 0.5 <= |x| <1.0
+ * and the corresponding binary exponent "exp". That is
+ * arg = x*2^exp.
+ * If arg is inf, 0.0, or NaN, then frexpl(arg,&exp) returns arg
+ * with *exp=0.
+ */
+
+#include <math.h>
+#include <math_private.h>
+#include <math_ldbl_opt.h>
+
+long double __frexpl(long double x, int *eptr)
+{
+ uint64_t hx, lx, ix, ixl;
+ int64_t explo, expon;
+ double xhi, xlo;
+
+ ldbl_unpack (x, &xhi, &xlo);
+ EXTRACT_WORDS64 (hx, xhi);
+ EXTRACT_WORDS64 (lx, xlo);
+ ixl = 0x7fffffffffffffffULL & lx;
+ ix = 0x7fffffffffffffffULL & hx;
+ expon = 0;
+ if (ix >= 0x7ff0000000000000ULL || ix == 0)
+ {
+ /* 0,inf,nan. */
+ *eptr = expon;
+ return x + x;
+ }
+ expon = ix >> 52;
+ if (expon == 0)
+ {
+ /* Denormal high double, the low double must be 0.0. */
+ int cnt;
+
+ /* Normalize. */
+ if (sizeof (ix) == sizeof (long))
+ cnt = __builtin_clzl (ix);
+ else if ((ix >> 32) != 0)
+ cnt = __builtin_clzl ((long) (ix >> 32));
+ else
+ cnt = __builtin_clzl ((long) ix) + 32;
+ cnt = cnt - 12;
+ expon -= cnt;
+ ix <<= cnt + 1;
+ }
+ expon -= 1022;
+ ix &= 0x000fffffffffffffULL;
+ hx &= 0x8000000000000000ULL;
+ hx |= (1022LL << 52) | ix;
+
+ if (ixl != 0)
+ {
+ /* If the high double is an exact power of two and the low
+ double has the opposite sign, then the exponent calculated
+ from the high double is one too big. */
+ if (ix == 0
+ && (int64_t) (hx ^ lx) < 0)
+ {
+ hx += 1LL << 52;
+ expon -= 1;
+ }
+
+ explo = ixl >> 52;
+ if (explo == 0)
+ {
+ /* The low double started out as a denormal. Normalize its
+ mantissa and adjust the exponent. */
+ int cnt;
+
+ if (sizeof (ixl) == sizeof (long))
+ cnt = __builtin_clzl (ixl);
+ else if ((ixl >> 32) != 0)
+ cnt = __builtin_clzl ((long) (ixl >> 32));
+ else
+ cnt = __builtin_clzl ((long) ixl) + 32;
+ cnt = cnt - 12;
+ explo -= cnt;
+ ixl <<= cnt + 1;
+ }
+
+ /* With variable precision we can't assume much about the
+ magnitude of the returned low double. It may even be a
+ denormal. */
+ explo -= expon;
+ ixl &= 0x000fffffffffffffULL;
+ lx &= 0x8000000000000000ULL;
+ if (explo <= 0)
+ {
+ /* Handle denormal low double. */
+ if (explo > -52)
+ {
+ ixl |= 1LL << 52;
+ ixl >>= 1 - explo;
+ }
+ else
+ {
+ ixl = 0;
+ lx = 0;
+ if ((hx & 0x7ff0000000000000ULL) == (1023LL << 52))
+ {
+ /* Oops, the adjustment we made above for values a
+ little smaller than powers of two turned out to
+ be wrong since the returned low double will be
+ zero. This can happen if the input was
+ something weird like 0x1p1000 - 0x1p-1000. */
+ hx -= 1LL << 52;
+ expon += 1;
+ }
+ }
+ explo = 0;
+ }
+ lx |= (explo << 52) | ixl;
+ }
+
+ INSERT_WORDS64 (xhi, hx);
+ INSERT_WORDS64 (xlo, lx);
+ x = ldbl_pack (xhi, xlo);
+ *eptr = expon;
+ return x;
+}
+#if IS_IN (libm)
+long_double_symbol (libm, __frexpl, frexpl);
+#else
+long_double_symbol (libc, __frexpl, frexpl);
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_fromfpl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_fromfpl.c
new file mode 100644
index 0000000000..e323b4c25b
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_fromfpl.c
@@ -0,0 +1,4 @@
+#define UNSIGNED 0
+#define INEXACT 0
+#define FUNC fromfpl
+#include <s_fromfpl_main.c>
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_fromfpl_main.c b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_fromfpl_main.c
new file mode 100644
index 0000000000..8b9108e84d
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_fromfpl_main.c
@@ -0,0 +1,147 @@
+/* Round to integer type. ldbl-128ibm version.
+ Copyright (C) 2016-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <errno.h>
+#include <fenv.h>
+#include <math.h>
+#include <math_private.h>
+#include <stdbool.h>
+#include <stdint.h>
+
+#define BIAS 0x3ff
+#define MANT_DIG 53
+
+#if UNSIGNED
+# define RET_TYPE uintmax_t
+#else
+# define RET_TYPE intmax_t
+#endif
+
+#include <fromfp.h>
+
+RET_TYPE
+FUNC (long double x, int round, unsigned int width)
+{
+ double hi, lo;
+ if (width > INTMAX_WIDTH)
+ width = INTMAX_WIDTH;
+ uint64_t hx, lx;
+ ldbl_unpack (x, &hi, &lo);
+ EXTRACT_WORDS64 (hx, hi);
+ EXTRACT_WORDS64 (lx, lo);
+ bool negative = (hx & 0x8000000000000000ULL) != 0;
+ bool lo_negative = (lx & 0x8000000000000000ULL) != 0;
+ if (width == 0)
+ return fromfp_domain_error (negative, width);
+ hx &= 0x7fffffffffffffffULL;
+ lx &= 0x7fffffffffffffffULL;
+ if ((hx | lx) == 0)
+ return 0;
+ int hi_exponent = hx >> (MANT_DIG - 1);
+ hi_exponent -= BIAS;
+ int exponent = hi_exponent;
+ hx &= ((1ULL << (MANT_DIG - 1)) - 1);
+ if (hx == 0 && lx != 0 && lo_negative != negative)
+ exponent--;
+ int max_exponent = fromfp_max_exponent (negative, width);
+ if (exponent > max_exponent)
+ return fromfp_domain_error (negative, width);
+ int lo_exponent = lx >> (MANT_DIG - 1);
+ lo_exponent -= BIAS;
+
+ /* Convert the high part to integer. */
+ hx |= 1ULL << (MANT_DIG - 1);
+ uintmax_t uret;
+ bool half_bit, more_bits;
+ if (hi_exponent >= MANT_DIG - 1)
+ {
+ uret = hx;
+ uret <<= hi_exponent - (MANT_DIG - 1);
+ half_bit = false;
+ more_bits = false;
+ }
+ else if (hi_exponent >= -1)
+ {
+ uint64_t h = 1ULL << (MANT_DIG - 2 - hi_exponent);
+ half_bit = (hx & h) != 0;
+ more_bits = (hx & (h - 1)) != 0;
+ uret = hx >> (MANT_DIG - 1 - hi_exponent);
+ }
+ else
+ {
+ uret = 0;
+ half_bit = false;
+ more_bits = true;
+ }
+
+ /* Likewise, the low part. */
+ if (lx != 0)
+ {
+ uintmax_t lo_uret;
+ bool lo_half_bit, lo_more_bits;
+ lx &= ((1ULL << (MANT_DIG - 1)) - 1);
+ lx |= 1ULL << (MANT_DIG - 1);
+ /* The high part exponent is at most 64, so the low part
+ exponent is at most 11. */
+ if (lo_exponent >= -1)
+ {
+ uint64_t h = 1ULL << (MANT_DIG - 2 - lo_exponent);
+ lo_half_bit = (lx & h) != 0;
+ lo_more_bits = (lx & (h - 1)) != 0;
+ lo_uret = lx >> (MANT_DIG - 1 - lo_exponent);
+ }
+ else
+ {
+ lo_uret = 0;
+ lo_half_bit = false;
+ lo_more_bits = true;
+ }
+ if (lo_negative == negative)
+ {
+ uret += lo_uret;
+ half_bit |= lo_half_bit;
+ more_bits |= lo_more_bits;
+ }
+ else
+ {
+ uret -= lo_uret;
+ if (lo_half_bit)
+ {
+ uret--;
+ half_bit = true;
+ }
+ if (lo_more_bits && !more_bits)
+ {
+ if (half_bit)
+ {
+ half_bit = false;
+ more_bits = true;
+ }
+ else
+ {
+ uret--;
+ half_bit = true;
+ more_bits = true;
+ }
+ }
+ }
+ }
+
+ return fromfp_round_and_return (negative, uret, half_bit, more_bits, round,
+ exponent, max_exponent, width);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_fromfpxl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_fromfpxl.c
new file mode 100644
index 0000000000..2f3189d7de
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_fromfpxl.c
@@ -0,0 +1,4 @@
+#define UNSIGNED 0
+#define INEXACT 1
+#define FUNC fromfpxl
+#include <s_fromfpl_main.c>
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_getpayloadl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_getpayloadl.c
new file mode 100644
index 0000000000..420b17837e
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_getpayloadl.c
@@ -0,0 +1,34 @@
+/* Get NaN payload. ldbl-128ibm version.
+ Copyright (C) 2016-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <fix-int-fp-convert-zero.h>
+#include <math.h>
+#include <math_private.h>
+#include <stdint.h>
+
+long double
+getpayloadl (const long double *x)
+{
+ double xhi = ldbl_high (*x);
+ uint64_t ix;
+ EXTRACT_WORDS64 (ix, xhi);
+ ix &= 0x7ffffffffffffULL;
+ if (FIX_INT_FP_CONVERT_ZERO && ix == 0)
+ return 0.0L;
+ return (long double) ix;
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_iscanonicall.c b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_iscanonicall.c
new file mode 100644
index 0000000000..24999a920d
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_iscanonicall.c
@@ -0,0 +1,60 @@
+/* Test whether long double value is canonical. ldbl-128ibm version.
+ Copyright (C) 2016-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+#include <math_private.h>
+#include <stdint.h>
+
+int
+__iscanonicall (long double x)
+{
+ double xhi, xlo;
+ uint64_t hx, lx;
+
+ ldbl_unpack (x, &xhi, &xlo);
+ EXTRACT_WORDS64 (hx, xhi);
+ EXTRACT_WORDS64 (lx, xlo);
+ int64_t ix = hx & 0x7fffffffffffffffULL;
+ int64_t iy = lx & 0x7fffffffffffffffULL;
+ int hexp = (ix & 0x7ff0000000000000LL) >> 52;
+ int lexp = (iy & 0x7ff0000000000000LL) >> 52;
+
+ if (iy == 0)
+ /* Low part 0 is always OK. */
+ return 1;
+
+ if (hexp == 0x7ff)
+ /* If a NaN, the low part does not matter. If an infinity, the
+ low part must be 0, in which case we have already returned. */
+ return ix != 0x7ff0000000000000LL;
+
+ /* The high part is finite and the low part is nonzero. There must
+ be sufficient difference between the exponents. */
+ bool low_p2;
+ if (lexp == 0)
+ {
+ /* Adjust the exponent for subnormal low part. */
+ lexp = 12 - __builtin_clzll (iy);
+ low_p2 = iy == (1LL << (51 + lexp));
+ }
+ else
+ low_p2 = (iy & 0xfffffffffffffLL) == 0;
+ int expdiff = hexp - lexp;
+ return expdiff > 53 || (expdiff == 53 && low_p2 && (ix & 1) == 0);
+}
+libm_hidden_def (__iscanonicall)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_isinfl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_isinfl.c
new file mode 100644
index 0000000000..730aa4d8d1
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_isinfl.c
@@ -0,0 +1,40 @@
+/*
+ * Written by J.T. Conklin <jtc@netbsd.org>.
+ * Change for long double by Jakub Jelinek <jj@ultra.linux.cz>
+ * Public domain.
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: $";
+#endif
+
+/*
+ * isinfl(x) returns 1 if x is inf, -1 if x is -inf, else 0;
+ * no branching!
+ * slightly dodgy in relying on signed shift right copying sign bit
+ */
+
+#include <math.h>
+#include <math_private.h>
+#include <math_ldbl_opt.h>
+
+int
+___isinfl (long double x)
+{
+ double xhi;
+ int64_t hx, mask;
+
+ xhi = ldbl_high (x);
+ EXTRACT_WORDS64 (hx, xhi);
+
+ mask = (hx & 0x7fffffffffffffffLL) ^ 0x7ff0000000000000LL;
+ mask |= -mask;
+ mask >>= 63;
+ return ~mask & (hx >> 62);
+}
+hidden_ver (___isinfl, __isinfl)
+#if !IS_IN (libm)
+weak_alias (___isinfl, ____isinfl)
+long_double_symbol (libc, ___isinfl, isinfl);
+long_double_symbol (libc, ____isinfl, __isinfl);
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_isnanl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_isnanl.c
new file mode 100644
index 0000000000..9980875df2
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_isnanl.c
@@ -0,0 +1,46 @@
+/* s_isnanl.c -- long double version of s_isnan.c.
+ * Conversion to long double by Jakub Jelinek, jj@ultra.linux.cz.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: $";
+#endif
+
+/*
+ * isnanl(x) returns 1 is x is nan, else 0;
+ * no branching!
+ */
+
+#include <math.h>
+#include <math_private.h>
+#include <math_ldbl_opt.h>
+
+int
+___isnanl (long double x)
+{
+ uint64_t hx;
+ double xhi;
+
+ xhi = ldbl_high (x);
+ EXTRACT_WORDS64 (hx, xhi);
+ hx &= 0x7fffffffffffffffLL;
+ hx = 0x7ff0000000000000LL - hx;
+ return (int) (hx >> 63);
+}
+hidden_ver (___isnanl, __isnanl)
+#if !IS_IN (libm)
+weak_alias (___isnanl, ____isnanl)
+long_double_symbol (libc, ___isnanl, isnanl);
+long_double_symbol (libc, ____isnanl, __isnanl);
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_issignalingl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_issignalingl.c
new file mode 100644
index 0000000000..feb7edea5d
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_issignalingl.c
@@ -0,0 +1,49 @@
+/* Test for signaling NaN.
+ Copyright (C) 2013-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+#include <math_private.h>
+#include <nan-high-order-bit.h>
+
+int
+__issignalingl (long double x)
+{
+ uint64_t xi;
+ /* For inspecting NaN status, we only have to look at the first of the pair
+ of IEEE 754 64-bit precision numbers. */
+ double xhi;
+
+ xhi = ldbl_high (x);
+ EXTRACT_WORDS64 (xi, xhi);
+#if HIGH_ORDER_BIT_IS_SET_FOR_SNAN
+# error untested
+ /* We only have to care about the high-order bit of x's significand, because
+ having it set (sNaN) already makes the significand different from that
+ used to designate infinity. */
+ return (xi & UINT64_C (0x7ff8000000000000)) == UINT64_C (0x7ff8000000000000);
+#else
+ /* To keep the following comparison simple, toggle the quiet/signaling bit,
+ so that it is set for sNaNs. This is inverse to IEEE 754-2008 (as well as
+ common practice for IEEE 754-1985). */
+ xi ^= UINT64_C (0x0008000000000000);
+ /* We have to compare for greater (instead of greater or equal), because x's
+ significand being all-zero designates infinity not NaN. */
+ return (xi & UINT64_C (0x7fffffffffffffff)) > UINT64_C (0x7ff8000000000000);
+#endif
+}
+libm_hidden_def (__issignalingl)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_llrintl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_llrintl.c
new file mode 100644
index 0000000000..fbf38bf717
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_llrintl.c
@@ -0,0 +1,140 @@
+/* Round to long long int long double floating-point values.
+ IBM extended format long double version.
+ Copyright (C) 2006-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+#include <fenv.h>
+#include <math_ldbl_opt.h>
+#include <float.h>
+#include <ieee754.h>
+
+
+long long
+__llrintl (long double x)
+{
+ double xh, xl;
+ long long res, hi, lo;
+ int save_round;
+
+ ldbl_unpack (x, &xh, &xl);
+
+ /* Limit the range of values handled by the conversion to long long.
+ We do this because we aren't sure whether that conversion properly
+ raises FE_INVALID. */
+ if (__builtin_expect
+ ((__builtin_fabs (xh) <= -(double) (-__LONG_LONG_MAX__ - 1)), 1)
+#if !defined (FE_INVALID)
+ || 1
+#endif
+ )
+ {
+ save_round = fegetround ();
+
+ if (__glibc_unlikely ((xh == -(double) (-__LONG_LONG_MAX__ - 1))))
+ {
+ /* When XH is 9223372036854775808.0, converting to long long will
+ overflow, resulting in an invalid operation. However, XL might
+ be negative and of sufficient magnitude that the overall long
+ double is in fact in range. Avoid raising an exception. In any
+ case we need to convert this value specially, because
+ the converted value is not exactly represented as a double
+ thus subtracting HI from XH suffers rounding error. */
+ hi = __LONG_LONG_MAX__;
+ xh = 1.0;
+ }
+ else
+ {
+ hi = (long long) xh;
+ xh -= hi;
+ }
+ ldbl_canonicalize (&xh, &xl);
+
+ lo = (long long) xh;
+
+ /* Peg at max/min values, assuming that the above conversions do so.
+ Strictly speaking, we can return anything for values that overflow,
+ but this is more useful. */
+ res = hi + lo;
+
+ /* This is just sign(hi) == sign(lo) && sign(res) != sign(hi). */
+ if (__glibc_unlikely (((~(hi ^ lo) & (res ^ hi)) < 0)))
+ goto overflow;
+
+ xh -= lo;
+ ldbl_canonicalize (&xh, &xl);
+
+ hi = res;
+ switch (save_round)
+ {
+ case FE_TONEAREST:
+ if (fabs (xh) < 0.5
+ || (fabs (xh) == 0.5
+ && ((xh > 0.0 && xl < 0.0)
+ || (xh < 0.0 && xl > 0.0)
+ || (xl == 0.0 && (res & 1) == 0))))
+ return res;
+
+ if (xh < 0.0)
+ res -= 1;
+ else
+ res += 1;
+ break;
+
+ case FE_TOWARDZERO:
+ if (res > 0 && (xh < 0.0 || (xh == 0.0 && xl < 0.0)))
+ res -= 1;
+ else if (res < 0 && (xh > 0.0 || (xh == 0.0 && xl > 0.0)))
+ res += 1;
+ return res;
+ break;
+
+ case FE_UPWARD:
+ if (xh > 0.0 || (xh == 0.0 && xl > 0.0))
+ res += 1;
+ break;
+
+ case FE_DOWNWARD:
+ if (xh < 0.0 || (xh == 0.0 && xl < 0.0))
+ res -= 1;
+ break;
+ }
+
+ if (__glibc_unlikely (((~(hi ^ (res - hi)) & (res ^ hi)) < 0)))
+ goto overflow;
+
+ return res;
+ }
+ else
+ {
+ if (xh > 0.0)
+ hi = __LONG_LONG_MAX__;
+ else if (xh < 0.0)
+ hi = -__LONG_LONG_MAX__ - 1;
+ else
+ /* Nan */
+ hi = 0;
+ }
+
+overflow:
+#ifdef FE_INVALID
+ feraiseexcept (FE_INVALID);
+#endif
+ return hi;
+}
+
+long_double_symbol (libm, __llrintl, llrintl);
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_llroundl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_llroundl.c
new file mode 100644
index 0000000000..609cc864de
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_llroundl.c
@@ -0,0 +1,120 @@
+/* Round to long long int long double floating-point values.
+ IBM extended format long double version.
+ Copyright (C) 2006-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+#include <fenv.h>
+#include <math_ldbl_opt.h>
+#include <float.h>
+#include <ieee754.h>
+
+long long
+__llroundl (long double x)
+{
+ double xh, xl;
+ long long res, hi, lo;
+
+ ldbl_unpack (x, &xh, &xl);
+
+ /* Limit the range of values handled by the conversion to long long.
+ We do this because we aren't sure whether that conversion properly
+ raises FE_INVALID. */
+ if (__builtin_expect
+ ((__builtin_fabs (xh) <= -(double) (-__LONG_LONG_MAX__ - 1)), 1)
+#if !defined (FE_INVALID)
+ || 1
+#endif
+ )
+ {
+ if (__glibc_unlikely ((xh == -(double) (-__LONG_LONG_MAX__ - 1))))
+ {
+ /* When XH is 9223372036854775808.0, converting to long long will
+ overflow, resulting in an invalid operation. However, XL might
+ be negative and of sufficient magnitude that the overall long
+ double is in fact in range. Avoid raising an exception. In any
+ case we need to convert this value specially, because
+ the converted value is not exactly represented as a double
+ thus subtracting HI from XH suffers rounding error. */
+ hi = __LONG_LONG_MAX__;
+ xh = 1.0;
+ }
+ else
+ {
+ hi = (long long) xh;
+ xh -= hi;
+ }
+ ldbl_canonicalize (&xh, &xl);
+
+ lo = (long long) xh;
+
+ /* Peg at max/min values, assuming that the above conversions do so.
+ Strictly speaking, we can return anything for values that overflow,
+ but this is more useful. */
+ res = hi + lo;
+
+ /* This is just sign(hi) == sign(lo) && sign(res) != sign(hi). */
+ if (__glibc_unlikely (((~(hi ^ lo) & (res ^ hi)) < 0)))
+ goto overflow;
+
+ xh -= lo;
+ ldbl_canonicalize (&xh, &xl);
+
+ hi = res;
+ if (xh > 0.5)
+ {
+ res += 1;
+ }
+ else if (xh == 0.5)
+ {
+ if (xl > 0.0 || (xl == 0.0 && res >= 0))
+ res += 1;
+ }
+ else if (-xh > 0.5)
+ {
+ res -= 1;
+ }
+ else if (-xh == 0.5)
+ {
+ if (xl < 0.0 || (xl == 0.0 && res <= 0))
+ res -= 1;
+ }
+
+ if (__glibc_unlikely (((~(hi ^ (res - hi)) & (res ^ hi)) < 0)))
+ goto overflow;
+
+ return res;
+ }
+ else
+ {
+ if (xh > 0.0)
+ hi = __LONG_LONG_MAX__;
+ else if (xh < 0.0)
+ hi = -__LONG_LONG_MAX__ - 1;
+ else
+ /* Nan */
+ hi = 0;
+ }
+
+overflow:
+#ifdef FE_INVALID
+ feraiseexcept (FE_INVALID);
+#endif
+ return hi;
+}
+
+long_double_symbol (libm, __llroundl, llroundl);
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_log1pl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_log1pl.c
new file mode 100644
index 0000000000..5457892a98
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_log1pl.c
@@ -0,0 +1,249 @@
+/* log1pl.c
+ *
+ * Relative error logarithm
+ * Natural logarithm of 1+x, 128-bit long double precision
+ *
+ *
+ *
+ * SYNOPSIS:
+ *
+ * long double x, y, log1pl();
+ *
+ * y = log1pl( x );
+ *
+ *
+ *
+ * DESCRIPTION:
+ *
+ * Returns the base e (2.718...) logarithm of 1+x.
+ *
+ * The argument 1+x is separated into its exponent and fractional
+ * parts. If the exponent is between -1 and +1, the logarithm
+ * of the fraction is approximated by
+ *
+ * log(1+x) = x - 0.5 x^2 + x^3 P(x)/Q(x).
+ *
+ * Otherwise, setting z = 2(w-1)/(w+1),
+ *
+ * log(w) = z + z^3 P(z)/Q(z).
+ *
+ *
+ *
+ * ACCURACY:
+ *
+ * Relative error:
+ * arithmetic domain # trials peak rms
+ * IEEE -1, 8 100000 1.9e-34 4.3e-35
+ */
+
+/* Copyright 2001 by Stephen L. Moshier
+
+ This 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 2.1 of the License, or (at your option) any later version.
+
+ This 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 this library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+
+#include <math.h>
+#include <math_private.h>
+#include <math_ldbl_opt.h>
+
+/* Coefficients for log(1+x) = x - x^2 / 2 + x^3 P(x)/Q(x)
+ * 1/sqrt(2) <= 1+x < sqrt(2)
+ * Theoretical peak relative error = 5.3e-37,
+ * relative peak error spread = 2.3e-14
+ */
+static const long double
+ P12 = 1.538612243596254322971797716843006400388E-6L,
+ P11 = 4.998469661968096229986658302195402690910E-1L,
+ P10 = 2.321125933898420063925789532045674660756E1L,
+ P9 = 4.114517881637811823002128927449878962058E2L,
+ P8 = 3.824952356185897735160588078446136783779E3L,
+ P7 = 2.128857716871515081352991964243375186031E4L,
+ P6 = 7.594356839258970405033155585486712125861E4L,
+ P5 = 1.797628303815655343403735250238293741397E5L,
+ P4 = 2.854829159639697837788887080758954924001E5L,
+ P3 = 3.007007295140399532324943111654767187848E5L,
+ P2 = 2.014652742082537582487669938141683759923E5L,
+ P1 = 7.771154681358524243729929227226708890930E4L,
+ P0 = 1.313572404063446165910279910527789794488E4L,
+ /* Q12 = 1.000000000000000000000000000000000000000E0L, */
+ Q11 = 4.839208193348159620282142911143429644326E1L,
+ Q10 = 9.104928120962988414618126155557301584078E2L,
+ Q9 = 9.147150349299596453976674231612674085381E3L,
+ Q8 = 5.605842085972455027590989944010492125825E4L,
+ Q7 = 2.248234257620569139969141618556349415120E5L,
+ Q6 = 6.132189329546557743179177159925690841200E5L,
+ Q5 = 1.158019977462989115839826904108208787040E6L,
+ Q4 = 1.514882452993549494932585972882995548426E6L,
+ Q3 = 1.347518538384329112529391120390701166528E6L,
+ Q2 = 7.777690340007566932935753241556479363645E5L,
+ Q1 = 2.626900195321832660448791748036714883242E5L,
+ Q0 = 3.940717212190338497730839731583397586124E4L;
+
+/* Coefficients for log(x) = z + z^3 P(z^2)/Q(z^2),
+ * where z = 2(x-1)/(x+1)
+ * 1/sqrt(2) <= x < sqrt(2)
+ * Theoretical peak relative error = 1.1e-35,
+ * relative peak error spread 1.1e-9
+ */
+static const long double
+ R5 = -8.828896441624934385266096344596648080902E-1L,
+ R4 = 8.057002716646055371965756206836056074715E1L,
+ R3 = -2.024301798136027039250415126250455056397E3L,
+ R2 = 2.048819892795278657810231591630928516206E4L,
+ R1 = -8.977257995689735303686582344659576526998E4L,
+ R0 = 1.418134209872192732479751274970992665513E5L,
+ /* S6 = 1.000000000000000000000000000000000000000E0L, */
+ S5 = -1.186359407982897997337150403816839480438E2L,
+ S4 = 3.998526750980007367835804959888064681098E3L,
+ S3 = -5.748542087379434595104154610899551484314E4L,
+ S2 = 4.001557694070773974936904547424676279307E5L,
+ S1 = -1.332535117259762928288745111081235577029E6L,
+ S0 = 1.701761051846631278975701529965589676574E6L;
+
+/* C1 + C2 = ln 2 */
+static const long double C1 = 6.93145751953125E-1L;
+static const long double C2 = 1.428606820309417232121458176568075500134E-6L;
+
+static const long double sqrth = 0.7071067811865475244008443621048490392848L;
+/* ln (2^16384 * (1 - 2^-113)) */
+static const long double zero = 0.0L;
+
+
+long double
+__log1pl (long double xm1)
+{
+ long double x, y, z, r, s;
+ double xhi;
+ int32_t hx, lx;
+ int e;
+
+ /* Test for NaN or infinity input. */
+ xhi = ldbl_high (xm1);
+ EXTRACT_WORDS (hx, lx, xhi);
+ if (hx >= 0x7ff00000)
+ return xm1 + xm1;
+
+ /* log1p(+- 0) = +- 0. */
+ if (((hx & 0x7fffffff) | lx) == 0)
+ return xm1;
+
+ if (xm1 >= 0x1p107L)
+ x = xm1;
+ else
+ x = xm1 + 1.0L;
+
+ /* log1p(-1) = -inf */
+ if (x <= 0.0L)
+ {
+ if (x == 0.0L)
+ return (-1.0L / 0.0L);
+ else
+ return (zero / (x - x));
+ }
+
+ /* Separate mantissa from exponent. */
+
+ /* Use frexp used so that denormal numbers will be handled properly. */
+ x = __frexpl (x, &e);
+
+ /* Logarithm using log(x) = z + z^3 P(z^2)/Q(z^2),
+ where z = 2(x-1)/x+1). */
+ if ((e > 2) || (e < -2))
+ {
+ if (x < sqrth)
+ { /* 2( 2x-1 )/( 2x+1 ) */
+ e -= 1;
+ z = x - 0.5L;
+ y = 0.5L * z + 0.5L;
+ }
+ else
+ { /* 2 (x-1)/(x+1) */
+ z = x - 0.5L;
+ z -= 0.5L;
+ y = 0.5L * x + 0.5L;
+ }
+ x = z / y;
+ z = x * x;
+ r = ((((R5 * z
+ + R4) * z
+ + R3) * z
+ + R2) * z
+ + R1) * z
+ + R0;
+ s = (((((z
+ + S5) * z
+ + S4) * z
+ + S3) * z
+ + S2) * z
+ + S1) * z
+ + S0;
+ z = x * (z * r / s);
+ z = z + e * C2;
+ z = z + x;
+ z = z + e * C1;
+ return (z);
+ }
+
+
+ /* Logarithm using log(1+x) = x - .5x^2 + x^3 P(x)/Q(x). */
+
+ if (x < sqrth)
+ {
+ e -= 1;
+ if (e != 0)
+ x = 2.0L * x - 1.0L; /* 2x - 1 */
+ else
+ x = xm1;
+ }
+ else
+ {
+ if (e != 0)
+ x = x - 1.0L;
+ else
+ x = xm1;
+ }
+ z = x * x;
+ r = (((((((((((P12 * x
+ + P11) * x
+ + P10) * x
+ + P9) * x
+ + P8) * x
+ + P7) * x
+ + P6) * x
+ + P5) * x
+ + P4) * x
+ + P3) * x
+ + P2) * x
+ + P1) * x
+ + P0;
+ s = (((((((((((x
+ + Q11) * x
+ + Q10) * x
+ + Q9) * x
+ + Q8) * x
+ + Q7) * x
+ + Q6) * x
+ + Q5) * x
+ + Q4) * x
+ + Q3) * x
+ + Q2) * x
+ + Q1) * x
+ + Q0;
+ y = x * (z * r / s);
+ y = y + e * C2;
+ z = y - 0.5L * z;
+ z = z + x;
+ z = z + e * C1;
+ return (z);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_logbl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_logbl.c
new file mode 100644
index 0000000000..3c07c5e8e2
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_logbl.c
@@ -0,0 +1,63 @@
+/* s_logbl.c -- long double version of s_logb.c.
+ * Conversion to IEEE quad long double by Jakub Jelinek, jj@ultra.linux.cz.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+/*
+ * long double logbl(x)
+ * IEEE 754 logb. Included to pass IEEE test suite. Not recommend.
+ * Use ilogb instead.
+ */
+
+#include <math.h>
+#include <math_private.h>
+#include <math_ldbl_opt.h>
+#include <fix-int-fp-convert-zero.h>
+
+long double
+__logbl (long double x)
+{
+ int64_t hx, hxs, rhx;
+ double xhi, xlo;
+
+ ldbl_unpack (x, &xhi, &xlo);
+ EXTRACT_WORDS64 (hx, xhi);
+ hxs = hx;
+ hx &= 0x7fffffffffffffffLL; /* high |x| */
+ if (hx == 0)
+ return -1.0 / fabs (x);
+ if (hx >= 0x7ff0000000000000LL)
+ return x * x;
+ if (__glibc_unlikely ((rhx = hx >> 52) == 0))
+ {
+ /* POSIX specifies that denormal number is treated as
+ though it were normalized. */
+ rhx -= __builtin_clzll (hx) - 12;
+ }
+ else if ((hx & 0x000fffffffffffffLL) == 0)
+ {
+ /* If the high part is a power of 2, and the low part is nonzero
+ with the opposite sign, the low part affects the
+ exponent. */
+ int64_t lx;
+ EXTRACT_WORDS64 (lx, xlo);
+ if ((hxs ^ lx) < 0 && (lx & 0x7fffffffffffffffLL) != 0)
+ rhx--;
+ }
+ if (FIX_INT_FP_CONVERT_ZERO && rhx == 1023)
+ return 0.0L;
+ return (long double) (rhx - 1023);
+}
+#ifndef __logbl
+long_double_symbol (libm, __logbl, logbl);
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_lrintl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_lrintl.c
new file mode 100644
index 0000000000..b404cab8e3
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_lrintl.c
@@ -0,0 +1,155 @@
+/* Round to long int long double floating-point values.
+ IBM extended format long double version.
+ Copyright (C) 2006-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+#include <fenv.h>
+#include <math_ldbl_opt.h>
+#include <float.h>
+#include <ieee754.h>
+
+
+long
+__lrintl (long double x)
+{
+ double xh, xl;
+ long res, hi, lo;
+ int save_round;
+
+ ldbl_unpack (x, &xh, &xl);
+
+ /* Limit the range of values handled by the conversion to long.
+ We do this because we aren't sure whether that conversion properly
+ raises FE_INVALID. */
+ if (
+#if __LONG_MAX__ == 2147483647
+ __builtin_expect
+ ((__builtin_fabs (xh) <= (double) __LONG_MAX__ + 2), 1)
+#else
+ __builtin_expect
+ ((__builtin_fabs (xh) <= -(double) (-__LONG_MAX__ - 1)), 1)
+#endif
+#if !defined (FE_INVALID)
+ || 1
+#endif
+ )
+ {
+ save_round = fegetround ();
+
+#if __LONG_MAX__ == 2147483647
+ long long llhi = (long long) xh;
+ if (llhi != (long) llhi)
+ hi = llhi < 0 ? -__LONG_MAX__ - 1 : __LONG_MAX__;
+ else
+ hi = llhi;
+ xh -= hi;
+#else
+ if (__glibc_unlikely ((xh == -(double) (-__LONG_MAX__ - 1))))
+ {
+ /* When XH is 9223372036854775808.0, converting to long long will
+ overflow, resulting in an invalid operation. However, XL might
+ be negative and of sufficient magnitude that the overall long
+ double is in fact in range. Avoid raising an exception. In any
+ case we need to convert this value specially, because
+ the converted value is not exactly represented as a double
+ thus subtracting HI from XH suffers rounding error. */
+ hi = __LONG_MAX__;
+ xh = 1.0;
+ }
+ else
+ {
+ hi = (long) xh;
+ xh -= hi;
+ }
+#endif
+ ldbl_canonicalize (&xh, &xl);
+
+ lo = (long) xh;
+
+ /* Peg at max/min values, assuming that the above conversions do so.
+ Strictly speaking, we can return anything for values that overflow,
+ but this is more useful. */
+ res = hi + lo;
+
+ /* This is just sign(hi) == sign(lo) && sign(res) != sign(hi). */
+ if (__glibc_unlikely (((~(hi ^ lo) & (res ^ hi)) < 0)))
+ goto overflow;
+
+ xh -= lo;
+ ldbl_canonicalize (&xh, &xl);
+
+ hi = res;
+ switch (save_round)
+ {
+ case FE_TONEAREST:
+ if (fabs (xh) < 0.5
+ || (fabs (xh) == 0.5
+ && ((xh > 0.0 && xl < 0.0)
+ || (xh < 0.0 && xl > 0.0)
+ || (xl == 0.0 && (res & 1) == 0))))
+ return res;
+
+ if (xh < 0.0)
+ res -= 1;
+ else
+ res += 1;
+ break;
+
+ case FE_TOWARDZERO:
+ if (res > 0 && (xh < 0.0 || (xh == 0.0 && xl < 0.0)))
+ res -= 1;
+ else if (res < 0 && (xh > 0.0 || (xh == 0.0 && xl > 0.0)))
+ res += 1;
+ return res;
+ break;
+
+ case FE_UPWARD:
+ if (xh > 0.0 || (xh == 0.0 && xl > 0.0))
+ res += 1;
+ break;
+
+ case FE_DOWNWARD:
+ if (xh < 0.0 || (xh == 0.0 && xl < 0.0))
+ res -= 1;
+ break;
+ }
+
+ if (__glibc_unlikely (((~(hi ^ (res - hi)) & (res ^ hi)) < 0)))
+ goto overflow;
+
+ return res;
+ }
+ else
+ {
+ if (xh > 0.0)
+ hi = __LONG_MAX__;
+ else if (xh < 0.0)
+ hi = -__LONG_MAX__ - 1;
+ else
+ /* Nan */
+ hi = 0;
+ }
+
+overflow:
+#ifdef FE_INVALID
+ feraiseexcept (FE_INVALID);
+#endif
+ return hi;
+}
+
+long_double_symbol (libm, __lrintl, lrintl);
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_lroundl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_lroundl.c
new file mode 100644
index 0000000000..f9ae37e844
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_lroundl.c
@@ -0,0 +1,135 @@
+/* Round to long int long double floating-point values.
+ IBM extended format long double version.
+ Copyright (C) 2006-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+#include <fenv.h>
+#include <math_ldbl_opt.h>
+#include <float.h>
+#include <ieee754.h>
+
+long
+__lroundl (long double x)
+{
+ double xh, xl;
+ long res, hi, lo;
+
+ ldbl_unpack (x, &xh, &xl);
+
+ /* Limit the range of values handled by the conversion to long.
+ We do this because we aren't sure whether that conversion properly
+ raises FE_INVALID. */
+ if (
+#if __LONG_MAX__ == 2147483647
+ __builtin_expect
+ ((__builtin_fabs (xh) <= (double) __LONG_MAX__ + 2), 1)
+#else
+ __builtin_expect
+ ((__builtin_fabs (xh) <= -(double) (-__LONG_MAX__ - 1)), 1)
+#endif
+#if !defined (FE_INVALID)
+ || 1
+#endif
+ )
+ {
+#if __LONG_MAX__ == 2147483647
+ long long llhi = (long long) xh;
+ if (llhi != (long) llhi)
+ hi = llhi < 0 ? -__LONG_MAX__ - 1 : __LONG_MAX__;
+ else
+ hi = llhi;
+ xh -= hi;
+#else
+ if (__glibc_unlikely ((xh == -(double) (-__LONG_MAX__ - 1))))
+ {
+ /* When XH is 9223372036854775808.0, converting to long long will
+ overflow, resulting in an invalid operation. However, XL might
+ be negative and of sufficient magnitude that the overall long
+ double is in fact in range. Avoid raising an exception. In any
+ case we need to convert this value specially, because
+ the converted value is not exactly represented as a double
+ thus subtracting HI from XH suffers rounding error. */
+ hi = __LONG_MAX__;
+ xh = 1.0;
+ }
+ else
+ {
+ hi = (long) xh;
+ xh -= hi;
+ }
+#endif
+ ldbl_canonicalize (&xh, &xl);
+
+ lo = (long) xh;
+
+ /* Peg at max/min values, assuming that the above conversions do so.
+ Strictly speaking, we can return anything for values that overflow,
+ but this is more useful. */
+ res = hi + lo;
+
+ /* This is just sign(hi) == sign(lo) && sign(res) != sign(hi). */
+ if (__glibc_unlikely (((~(hi ^ lo) & (res ^ hi)) < 0)))
+ goto overflow;
+
+ xh -= lo;
+ ldbl_canonicalize (&xh, &xl);
+
+ hi = res;
+ if (xh > 0.5)
+ {
+ res += 1;
+ }
+ else if (xh == 0.5)
+ {
+ if (xl > 0.0 || (xl == 0.0 && res >= 0))
+ res += 1;
+ }
+ else if (-xh > 0.5)
+ {
+ res -= 1;
+ }
+ else if (-xh == 0.5)
+ {
+ if (xl < 0.0 || (xl == 0.0 && res <= 0))
+ res -= 1;
+ }
+
+ if (__glibc_unlikely (((~(hi ^ (res - hi)) & (res ^ hi)) < 0)))
+ goto overflow;
+
+ return res;
+ }
+ else
+ {
+ if (xh > 0.0)
+ hi = __LONG_MAX__;
+ else if (xh < 0.0)
+ hi = -__LONG_MAX__ - 1;
+ else
+ /* Nan */
+ hi = 0;
+ }
+
+overflow:
+#ifdef FE_INVALID
+ feraiseexcept (FE_INVALID);
+#endif
+ return hi;
+}
+
+long_double_symbol (libm, __lroundl, lroundl);
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_modfl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_modfl.c
new file mode 100644
index 0000000000..260cc3e33c
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_modfl.c
@@ -0,0 +1,96 @@
+/* s_modfl.c -- long double version of s_modf.c.
+ * Conversion to IEEE quad long double by Jakub Jelinek, jj@ultra.linux.cz.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: $";
+#endif
+
+/*
+ * modfl(long double x, long double *iptr)
+ * return fraction part of x, and return x's integral part in *iptr.
+ * Method:
+ * Bit twiddling.
+ *
+ * Exception:
+ * No exception.
+ */
+
+#include <math.h>
+#include <math_private.h>
+#include <math_ldbl_opt.h>
+
+static const long double one = 1.0;
+
+long double __modfl(long double x, long double *iptr)
+{
+ int64_t i0,i1,j0;
+ u_int64_t i;
+ double xhi, xlo;
+
+ ldbl_unpack (x, &xhi, &xlo);
+ EXTRACT_WORDS64 (i0, xhi);
+ EXTRACT_WORDS64 (i1, xlo);
+ i1 &= 0x000fffffffffffffLL;
+ j0 = ((i0>>52)&0x7ff)-0x3ff; /* exponent of x */
+ if(j0<52) { /* integer part in high x */
+ if(j0<0) { /* |x|<1 */
+ /* *iptr = +-0 */
+ INSERT_WORDS64 (xhi, i0&0x8000000000000000ULL);
+ *iptr = xhi;
+ return x;
+ } else {
+ i = (0x000fffffffffffffLL)>>j0;
+ if(((i0&i)|(i1&0x7fffffffffffffffLL))==0) { /* x is integral */
+ *iptr = x;
+ /* return +-0 */
+ INSERT_WORDS64 (xhi, i0&0x8000000000000000ULL);
+ x = xhi;
+ return x;
+ } else {
+ INSERT_WORDS64 (xhi, i0&(~i));
+ *iptr = xhi;
+ return x - *iptr;
+ }
+ }
+ } else if (j0>103) { /* no fraction part */
+ *iptr = x*one;
+ /* We must handle NaNs separately. */
+ if ((i0 & 0x7fffffffffffffffLL) > 0x7ff0000000000000LL)
+ return x*one;
+ /* return +-0 */
+ INSERT_WORDS64 (xhi, i0&0x8000000000000000ULL);
+ x = xhi;
+ return x;
+ } else { /* fraction part in low x */
+ i = -1ULL>>(j0-52);
+ if((i1&i)==0) { /* x is integral */
+ *iptr = x;
+ /* return +-0 */
+ INSERT_WORDS64 (xhi, i0&0x8000000000000000ULL);
+ x = xhi;
+ return x;
+ } else {
+ INSERT_WORDS64 (xhi, i0);
+ INSERT_WORDS64 (xlo, i1&(~i));
+ *iptr = ldbl_pack (xhi, xlo);
+ return x - *iptr;
+ }
+ }
+}
+#if IS_IN (libm)
+long_double_symbol (libm, __modfl, modfl);
+#else
+long_double_symbol (libc, __modfl, modfl);
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_nearbyintl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_nearbyintl.c
new file mode 100644
index 0000000000..18b052cecb
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_nearbyintl.c
@@ -0,0 +1,21 @@
+/* Round to int long double floating-point values without raising inexact.
+ IBM extended format long double version.
+ Copyright (C) 2006-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#define USE_AS_NEARBYINTL
+#include "s_rintl.c"
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_nextafterl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_nextafterl.c
new file mode 100644
index 0000000000..0d6469d548
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_nextafterl.c
@@ -0,0 +1,160 @@
+/* s_nextafterl.c -- long double version of s_nextafter.c.
+ * Conversion to IEEE quad long double by Jakub Jelinek, jj@ultra.linux.cz.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: $";
+#endif
+
+/* IEEE functions
+ * nextafterl(x,y)
+ * return the next machine floating-point number of x in the
+ * direction toward y.
+ * Special cases:
+ */
+
+#include <errno.h>
+#include <float.h>
+#include <math.h>
+#include <math_private.h>
+#include <math_ldbl_opt.h>
+
+long double __nextafterl(long double x, long double y)
+{
+ int64_t hx, hy, ihx, ihy, lx;
+ double xhi, xlo, yhi;
+
+ ldbl_unpack (x, &xhi, &xlo);
+ EXTRACT_WORDS64 (hx, xhi);
+ EXTRACT_WORDS64 (lx, xlo);
+ yhi = ldbl_high (y);
+ EXTRACT_WORDS64 (hy, yhi);
+ ihx = hx&0x7fffffffffffffffLL; /* |hx| */
+ ihy = hy&0x7fffffffffffffffLL; /* |hy| */
+
+ if((ihx>0x7ff0000000000000LL) || /* x is nan */
+ (ihy>0x7ff0000000000000LL)) /* y is nan */
+ return x+y; /* signal the nan */
+ if(x==y)
+ return y; /* x=y, return y */
+ if(ihx == 0) { /* x == 0 */
+ long double u; /* return +-minsubnormal */
+ hy = (hy & 0x8000000000000000ULL) | 1;
+ INSERT_WORDS64 (yhi, hy);
+ x = yhi;
+ u = math_opt_barrier (x);
+ u = u * u;
+ math_force_eval (u); /* raise underflow flag */
+ return x;
+ }
+
+ long double u;
+ if(x > y) { /* x > y, x -= ulp */
+ /* This isn't the largest magnitude correctly rounded
+ long double as you can see from the lowest mantissa
+ bit being zero. It is however the largest magnitude
+ long double with a 106 bit mantissa, and nextafterl
+ is insane with variable precision. So to make
+ nextafterl sane we assume 106 bit precision. */
+ if((hx==0xffefffffffffffffLL)&&(lx==0xfc8ffffffffffffeLL)) {
+ u = x+x; /* overflow, return -inf */
+ math_force_eval (u);
+ __set_errno (ERANGE);
+ return y;
+ }
+ if (hx >= 0x7ff0000000000000LL) {
+ u = 0x1.fffffffffffff7ffffffffffff8p+1023L;
+ return u;
+ }
+ if(ihx <= 0x0360000000000000LL) { /* x <= LDBL_MIN */
+ u = math_opt_barrier (x);
+ x -= LDBL_TRUE_MIN;
+ if (ihx < 0x0360000000000000LL
+ || (hx > 0 && lx <= 0)
+ || (hx < 0 && lx > 1)) {
+ u = u * u;
+ math_force_eval (u); /* raise underflow flag */
+ __set_errno (ERANGE);
+ }
+ /* Avoid returning -0 in FE_DOWNWARD mode. */
+ if (x == 0.0L)
+ return 0.0L;
+ return x;
+ }
+ /* If the high double is an exact power of two and the low
+ double is the opposite sign, then 1ulp is one less than
+ what we might determine from the high double. Similarly
+ if X is an exact power of two, and positive, because
+ making it a little smaller will result in the exponent
+ decreasing by one and normalisation of the mantissa. */
+ if ((hx & 0x000fffffffffffffLL) == 0
+ && ((lx != 0 && (hx ^ lx) < 0)
+ || (lx == 0 && hx >= 0)))
+ ihx -= 1LL << 52;
+ if (ihx < (106LL << 52)) { /* ulp will denormal */
+ INSERT_WORDS64 (yhi, ihx & (0x7ffLL<<52));
+ u = yhi * 0x1p-105;
+ } else {
+ INSERT_WORDS64 (yhi, (ihx & (0x7ffLL<<52))-(105LL<<52));
+ u = yhi;
+ }
+ return x - u;
+ } else { /* x < y, x += ulp */
+ if((hx==0x7fefffffffffffffLL)&&(lx==0x7c8ffffffffffffeLL)) {
+ u = x+x; /* overflow, return +inf */
+ math_force_eval (u);
+ __set_errno (ERANGE);
+ return y;
+ }
+ if ((uint64_t) hx >= 0xfff0000000000000ULL) {
+ u = -0x1.fffffffffffff7ffffffffffff8p+1023L;
+ return u;
+ }
+ if(ihx <= 0x0360000000000000LL) { /* x <= LDBL_MIN */
+ u = math_opt_barrier (x);
+ x += LDBL_TRUE_MIN;
+ if (ihx < 0x0360000000000000LL
+ || (hx > 0 && lx < 0 && lx != 0x8000000000000001LL)
+ || (hx < 0 && lx >= 0)) {
+ u = u * u;
+ math_force_eval (u); /* raise underflow flag */
+ __set_errno (ERANGE);
+ }
+ if (x == 0.0L) /* handle negative LDBL_TRUE_MIN case */
+ x = -0.0L;
+ return x;
+ }
+ /* If the high double is an exact power of two and the low
+ double is the opposite sign, then 1ulp is one less than
+ what we might determine from the high double. Similarly
+ if X is an exact power of two, and negative, because
+ making it a little larger will result in the exponent
+ decreasing by one and normalisation of the mantissa. */
+ if ((hx & 0x000fffffffffffffLL) == 0
+ && ((lx != 0 && (hx ^ lx) < 0)
+ || (lx == 0 && hx < 0)))
+ ihx -= 1LL << 52;
+ if (ihx < (106LL << 52)) { /* ulp will denormal */
+ INSERT_WORDS64 (yhi, ihx & (0x7ffLL<<52));
+ u = yhi * 0x1p-105;
+ } else {
+ INSERT_WORDS64 (yhi, (ihx & (0x7ffLL<<52))-(105LL<<52));
+ u = yhi;
+ }
+ return x + u;
+ }
+}
+strong_alias (__nextafterl, __nexttowardl)
+long_double_symbol (libm, __nextafterl, nextafterl);
+long_double_symbol (libm, __nexttowardl, nexttowardl);
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_nexttoward.c b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_nexttoward.c
new file mode 100644
index 0000000000..d8f4fc6523
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_nexttoward.c
@@ -0,0 +1,90 @@
+/* s_nexttoward.c
+ * Conversion from s_nextafter.c by Ulrich Drepper, Cygnus Support,
+ * drepper@cygnus.com and Jakub Jelinek, jj@ultra.linux.cz.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: $";
+#endif
+
+/* IEEE functions
+ * nexttoward(x,y)
+ * return the next machine floating-point number of x in the
+ * direction toward y.
+ * Special cases:
+ */
+
+#include <errno.h>
+#include <math.h>
+#include <math_private.h>
+#include <math_ldbl_opt.h>
+#include <float.h>
+
+double __nexttoward(double x, long double y)
+{
+ int32_t hx,ix;
+ int64_t hy,iy;
+ uint32_t lx;
+ double yhi;
+
+ EXTRACT_WORDS(hx,lx,x);
+ yhi = ldbl_high (y);
+ EXTRACT_WORDS64(hy,yhi);
+ ix = hx&0x7fffffff; /* |x| */
+ iy = hy&0x7fffffffffffffffLL; /* |y| */
+
+ if(((ix>=0x7ff00000)&&((ix-0x7ff00000)|lx)!=0) || /* x is nan */
+ iy>0x7ff0000000000000LL) /* y is nan */
+ return x+y;
+ if((long double) x==y) return y; /* x=y, return y */
+ if((ix|lx)==0) { /* x == 0 */
+ double u;
+ INSERT_WORDS(x,(uint32_t)((hy>>32)&0x80000000),1);/* return +-minsub */
+ u = math_opt_barrier (x);
+ u = u * u;
+ math_force_eval (u); /* raise underflow flag */
+ return x;
+ }
+ if(hx>=0) { /* x > 0 */
+ if (x > y) { /* x > 0 */
+ if(lx==0) hx -= 1;
+ lx -= 1;
+ } else { /* x < y, x += ulp */
+ lx += 1;
+ if(lx==0) hx += 1;
+ }
+ } else { /* x < 0 */
+ if (x < y) { /* x < 0 */
+ if(lx==0) hx -= 1;
+ lx -= 1;
+ } else { /* x > y, x += ulp */
+ lx += 1;
+ if(lx==0) hx += 1;
+ }
+ }
+ hy = hx&0x7ff00000;
+ if(hy>=0x7ff00000) {
+ double u = x+x; /* overflow */
+ math_force_eval (u);
+ __set_errno (ERANGE);
+ }
+ if(hy<0x00100000) {
+ double u = x*x; /* underflow */
+ math_force_eval (u); /* raise underflow flag */
+ __set_errno (ERANGE);
+ }
+ INSERT_WORDS(x,hx,lx);
+ return x;
+}
+long_double_symbol (libm, __nexttoward, nexttoward);
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_nexttowardf.c b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_nexttowardf.c
new file mode 100644
index 0000000000..7c5d1cc112
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_nexttowardf.c
@@ -0,0 +1,79 @@
+/* s_nexttowardf.c -- float version of s_nextafter.c.
+ * Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com
+ * and Jakub Jelinek, jj@ultra.linux.cz.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: $";
+#endif
+
+#include <errno.h>
+#include <math.h>
+#include <math_private.h>
+#include <math_ldbl_opt.h>
+#include <float.h>
+
+float __nexttowardf(float x, long double y)
+{
+ int32_t hx,ix;
+ int64_t hy,iy;
+ double yhi;
+
+ GET_FLOAT_WORD(hx,x);
+ yhi = ldbl_high (y);
+ EXTRACT_WORDS64 (hy, yhi);
+ ix = hx&0x7fffffff; /* |x| */
+ iy = hy&0x7fffffffffffffffLL; /* |y| */
+
+ if((ix>0x7f800000) || /* x is nan */
+ (iy>0x7ff0000000000000LL))
+ /* y is nan */
+ return x+y;
+ if((long double) x==y) return y; /* x=y, return y */
+ if(ix==0) { /* x == 0 */
+ float u;
+ SET_FLOAT_WORD(x,(u_int32_t)((hy>>32)&0x80000000)|1);/* return +-minsub*/
+ u = math_opt_barrier (x);
+ u = u * u;
+ math_force_eval (u); /* raise underflow flag */
+ return x;
+ }
+ if(hx>=0) { /* x > 0 */
+ if(x > y) { /* x -= ulp */
+ hx -= 1;
+ } else { /* x < y, x += ulp */
+ hx += 1;
+ }
+ } else { /* x < 0 */
+ if(x < y) { /* x -= ulp */
+ hx -= 1;
+ } else { /* x > y, x += ulp */
+ hx += 1;
+ }
+ }
+ hy = hx&0x7f800000;
+ if(hy>=0x7f800000) {
+ float u = x+x; /* overflow */
+ math_force_eval (u);
+ __set_errno (ERANGE);
+ }
+ if(hy<0x00800000) { /* underflow */
+ float u = x*x;
+ math_force_eval (u); /* raise underflow flag */
+ __set_errno (ERANGE);
+ }
+ SET_FLOAT_WORD(x,hx);
+ return x;
+}
+long_double_symbol (libm, __nexttowardf, nexttowardf);
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_nextupl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_nextupl.c
new file mode 100644
index 0000000000..bf74f0e1ab
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_nextupl.c
@@ -0,0 +1,78 @@
+/* Return the least floating-point number greater than X.
+ Copyright (C) 2016-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+#include <math_private.h>
+#include <math_ldbl_opt.h>
+
+/* Return the least floating-point number greater than X. */
+long double
+__nextupl (long double x)
+{
+ int64_t hx, ihx, lx;
+ double xhi, xlo, yhi;
+
+ ldbl_unpack (x, &xhi, &xlo);
+ EXTRACT_WORDS64 (hx, xhi);
+ EXTRACT_WORDS64 (lx, xlo);
+ ihx = hx & 0x7fffffffffffffffLL;
+
+ if (ihx > 0x7ff0000000000000LL) /* x is nan. */
+ return x + x; /* Signal the nan. */
+ if (ihx == 0)
+ return LDBL_TRUE_MIN;
+
+ long double u;
+ if ((hx == 0x7fefffffffffffffLL) && (lx == 0x7c8ffffffffffffeLL))
+ return INFINITY;
+ if ((uint64_t) hx >= 0xfff0000000000000ULL)
+ {
+ u = -0x1.fffffffffffff7ffffffffffff8p+1023L;
+ return u;
+ }
+ if (ihx <= 0x0360000000000000LL)
+ { /* x <= LDBL_MIN. */
+ x += LDBL_TRUE_MIN;
+ if (x == 0.0L) /* Handle negative LDBL_TRUE_MIN case. */
+ x = -0.0L;
+ return x;
+ }
+ /* If the high double is an exact power of two and the low
+ double is the opposite sign, then 1ulp is one less than
+ what we might determine from the high double. Similarly
+ if X is an exact power of two, and negative, because
+ making it a little larger will result in the exponent
+ decreasing by one and normalisation of the mantissa. */
+ if ((hx & 0x000fffffffffffffLL) == 0
+ && ((lx != 0 && lx != 0x8000000000000000LL && (hx ^ lx) < 0)
+ || ((lx == 0 || lx == 0x8000000000000000LL) && hx < 0)))
+ ihx -= 1LL << 52;
+ if (ihx < (106LL << 52))
+ { /* ulp will denormal. */
+ INSERT_WORDS64 (yhi, ihx & (0x7ffLL << 52));
+ u = yhi * 0x1p-105;
+ }
+ else
+ {
+ INSERT_WORDS64 (yhi, (ihx & (0x7ffLL << 52)) - (105LL << 52));
+ u = yhi;
+ }
+ return x + u;
+}
+
+weak_alias (__nextupl, nextupl)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_remquol.c b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_remquol.c
new file mode 100644
index 0000000000..9b6ec09d41
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_remquol.c
@@ -0,0 +1,119 @@
+/* Compute remainder and a congruent to the quotient.
+ Copyright (C) 1997-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997 and
+ Jakub Jelinek <jj@ultra.linux.cz>, 1999.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+
+#include <math_private.h>
+#include <math_ldbl_opt.h>
+
+
+static const long double zero = 0.0;
+
+
+long double
+__remquol (long double x, long double y, int *quo)
+{
+ int64_t hx,hy;
+ u_int64_t sx,lx,ly,qs;
+ int cquo;
+ double xhi, xlo, yhi, ylo;
+
+ ldbl_unpack (x, &xhi, &xlo);
+ EXTRACT_WORDS64 (hx, xhi);
+ EXTRACT_WORDS64 (lx, xlo);
+ ldbl_unpack (y, &yhi, &ylo);
+ EXTRACT_WORDS64 (hy, yhi);
+ EXTRACT_WORDS64 (ly, ylo);
+ sx = hx & 0x8000000000000000ULL;
+ qs = sx ^ (hy & 0x8000000000000000ULL);
+ ly ^= hy & 0x8000000000000000ULL;
+ hy &= 0x7fffffffffffffffLL;
+ lx ^= sx;
+ hx &= 0x7fffffffffffffffLL;
+
+ /* Purge off exception values. */
+ if (hy == 0)
+ return (x * y) / (x * y); /* y = 0 */
+ if ((hx >= 0x7ff0000000000000LL) /* x not finite */
+ || (hy > 0x7ff0000000000000LL)) /* y is NaN */
+ return (x * y) / (x * y);
+
+ if (hy <= 0x7fbfffffffffffffLL)
+ x = __ieee754_fmodl (x, 8 * y); /* now x < 8y */
+
+ if (((hx - hy) | (lx - ly)) == 0)
+ {
+ *quo = qs ? -1 : 1;
+ return zero * x;
+ }
+
+ x = fabsl (x);
+ y = fabsl (y);
+ cquo = 0;
+
+ if (hy <= 0x7fcfffffffffffffLL && x >= 4 * y)
+ {
+ x -= 4 * y;
+ cquo += 4;
+ }
+ if (hy <= 0x7fdfffffffffffffLL && x >= 2 * y)
+ {
+ x -= 2 * y;
+ cquo += 2;
+ }
+
+ if (hy < 0x0020000000000000LL)
+ {
+ if (x + x > y)
+ {
+ x -= y;
+ ++cquo;
+ if (x + x >= y)
+ {
+ x -= y;
+ ++cquo;
+ }
+ }
+ }
+ else
+ {
+ long double y_half = 0.5L * y;
+ if (x > y_half)
+ {
+ x -= y;
+ ++cquo;
+ if (x >= y_half)
+ {
+ x -= y;
+ ++cquo;
+ }
+ }
+ }
+
+ *quo = qs ? -cquo : cquo;
+
+ /* Ensure correct sign of zero result in round-downward mode. */
+ if (x == 0.0L)
+ x = 0.0L;
+ if (sx)
+ x = -x;
+ return x;
+}
+long_double_symbol (libm, __remquol, remquol);
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_rintl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_rintl.c
new file mode 100644
index 0000000000..ea8c2bca0e
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_rintl.c
@@ -0,0 +1,129 @@
+/* Round to int long double floating-point values.
+ IBM extended format long double version.
+ Copyright (C) 2006-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+/* This has been coded in assembler because GCC makes such a mess of it
+ when it's coded in C. */
+
+#include <math.h>
+#include <fenv.h>
+#include <math_ldbl_opt.h>
+#include <float.h>
+#include <ieee754.h>
+
+#ifdef USE_AS_NEARBYINTL
+# define rintl nearbyintl
+# define __rintl __nearbyintl
+#endif
+
+
+long double
+__rintl (long double x)
+{
+ double xh, xl, hi, lo;
+
+ ldbl_unpack (x, &xh, &xl);
+
+ /* Return Inf, Nan, +/-0 unchanged. */
+ if (__builtin_expect (xh != 0.0
+ && __builtin_isless (__builtin_fabs (xh),
+ __builtin_inf ()), 1))
+ {
+ double orig_xh;
+ int save_round = fegetround ();
+
+ /* Long double arithmetic, including the canonicalisation below,
+ only works in round-to-nearest mode. */
+#ifdef USE_AS_NEARBYINTL
+ SET_RESTORE_ROUND_NOEX (FE_TONEAREST);
+#else
+ fesetround (FE_TONEAREST);
+#endif
+
+ /* Convert the high double to integer. */
+ orig_xh = xh;
+ hi = ldbl_nearbyint (xh);
+
+ /* Subtract integral high part from the value. If the low double
+ happens to be exactly 0.5 or -0.5, you might think that this
+ subtraction could result in an incorrect conversion. For
+ instance, subtracting an odd number would cause this function
+ to round in the wrong direction. However, if we have a
+ canonical long double with the low double 0.5 or -0.5, then the
+ high double must be even. */
+ xh -= hi;
+ ldbl_canonicalize (&xh, &xl);
+
+ /* Now convert the low double, adjusted for any remainder from the
+ high double. */
+ lo = ldbl_nearbyint (xh);
+
+ xh -= lo;
+ ldbl_canonicalize (&xh, &xl);
+
+ switch (save_round)
+ {
+ case FE_TONEAREST:
+ if (xl > 0.0 && xh == 0.5)
+ lo += 1.0;
+ else if (xl < 0.0 && -xh == 0.5)
+ lo -= 1.0;
+ break;
+
+ case FE_TOWARDZERO:
+ if (orig_xh < 0.0)
+ goto do_up;
+ /* Fall thru */
+
+ case FE_DOWNWARD:
+ if (xh < 0.0 || (xh == 0.0 && xl < 0.0))
+ lo -= 1.0;
+ break;
+
+ case FE_UPWARD:
+ do_up:
+ if (xh > 0.0 || (xh == 0.0 && xl > 0.0))
+ lo += 1.0;
+ break;
+ }
+
+ /* Ensure the final value is canonical. In certain cases,
+ rounding causes hi,lo calculated so far to be non-canonical. */
+ xh = hi;
+ xl = lo;
+ ldbl_canonicalize (&xh, &xl);
+
+ /* Ensure we return -0 rather than +0 when appropriate. */
+ if (orig_xh < 0.0)
+ xh = -__builtin_fabs (xh);
+
+#ifdef USE_AS_NEARBYINTL
+ math_force_eval (xh);
+ math_force_eval (xl);
+#else
+ fesetround (save_round);
+#endif
+ }
+ else
+ /* Quiet signaling NaN arguments. */
+ xh += xh;
+
+ return ldbl_pack (xh, xl);
+}
+
+long_double_symbol (libm, __rintl, rintl);
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_roundevenl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_roundevenl.c
new file mode 100644
index 0000000000..f4221cda4b
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_roundevenl.c
@@ -0,0 +1,69 @@
+/* Round to nearest integer value, rounding halfway cases to even.
+ ldbl-128ibm version.
+ Copyright (C) 2016-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+#include <math_private.h>
+
+long double
+roundevenl (long double x)
+{
+ double xh, xl, hi;
+
+ ldbl_unpack (x, &xh, &xl);
+
+ if (xh != 0 && isfinite (xh))
+ {
+ hi = roundeven (xh);
+ if (hi != xh)
+ {
+ /* The high part is not an integer; the low part only
+ affects the result if the high part is exactly half way
+ between two integers and the low part is nonzero in the
+ opposite direction to the rounding of the high part. */
+ double diff = hi - xh;
+ if (fabs (diff) == 0.5)
+ {
+ if (xl < 0 && diff > 0)
+ xh = hi - 1;
+ else if (xl > 0 && diff < 0)
+ xh = hi + 1;
+ else
+ xh = hi;
+ }
+ else
+ xh = hi;
+ xl = 0;
+ }
+ else
+ {
+ /* The high part is a nonzero integer. Rounding the low
+ part to nearest, ties round to even, is always correct,
+ as a high part that is an odd integer together with a low
+ part with magnitude 0.5 is not a valid long double. */
+ xl = roundeven (xl);
+ xh = hi;
+ ldbl_canonicalize_int (&xh, &xl);
+ }
+ }
+ else
+ /* Quiet signaling NaN arguments. */
+ xh += xh;
+
+ return ldbl_pack (xh, xl);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_roundl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_roundl.c
new file mode 100644
index 0000000000..0b70e24637
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_roundl.c
@@ -0,0 +1,87 @@
+/* Round to int long double floating-point values.
+ IBM extended format long double version.
+ Copyright (C) 2006-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+/* This has been coded in assembler because GCC makes such a mess of it
+ when it's coded in C. */
+
+#include <math.h>
+#include <math_ldbl_opt.h>
+#include <float.h>
+#include <ieee754.h>
+
+
+long double
+__roundl (long double x)
+{
+ double xh, xl, hi, lo;
+
+ ldbl_unpack (x, &xh, &xl);
+
+ /* Return Inf, Nan, +/-0 unchanged. */
+ if (__builtin_expect (xh != 0.0
+ && __builtin_isless (__builtin_fabs (xh),
+ __builtin_inf ()), 1))
+ {
+ hi = __round (xh);
+ if (hi != xh)
+ {
+ /* The high part is not an integer; the low part only
+ affects the result if the high part is exactly half way
+ between two integers and the low part is nonzero with the
+ opposite sign. */
+ if (fabs (hi - xh) == 0.5)
+ {
+ if (xh > 0 && xl < 0)
+ xh = hi - 1;
+ else if (xh < 0 && xl > 0)
+ xh = hi + 1;
+ else
+ xh = hi;
+ }
+ else
+ xh = hi;
+ xl = 0;
+ }
+ else
+ {
+ /* The high part is a nonzero integer. */
+ lo = __round (xl);
+ if (fabs (lo - xl) == 0.5)
+ {
+ if (xh > 0 && xl < 0)
+ xl = lo + 1;
+ else if (xh < 0 && lo > 0)
+ xl = lo - 1;
+ else
+ xl = lo;
+ }
+ else
+ xl = lo;
+ xh = hi;
+ ldbl_canonicalize_int (&xh, &xl);
+ }
+ }
+ else
+ /* Quiet signaling NaN arguments. */
+ xh += xh;
+
+ return ldbl_pack (xh, xl);
+}
+
+long_double_symbol (libm, __roundl, roundl);
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_scalblnl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_scalblnl.c
new file mode 100644
index 0000000000..031635267f
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_scalblnl.c
@@ -0,0 +1,104 @@
+/* s_scalblnl.c -- long double version of s_scalbln.c.
+ * Conversion to IEEE quad long double by Jakub Jelinek, jj@ultra.linux.cz.
+ */
+
+/* @(#)s_scalbln.c 5.1 93/09/24 */
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: $";
+#endif
+
+/*
+ * scalblnl (long double x, long int n)
+ * scalblnl(x,n) returns x* 2**n computed by exponent
+ * manipulation rather than by actually performing an
+ * exponentiation or a multiplication.
+ */
+
+#include <math.h>
+#include <math_private.h>
+#include <math_ldbl_opt.h>
+
+static const long double
+twolm54 = 5.55111512312578270212e-17, /* 0x3C90000000000000, 0 */
+huge = 1.0E+300L,
+tiny = 1.0E-300L;
+static const double
+two54 = 1.80143985094819840000e+16, /* 0x4350000000000000 */
+twom54 = 5.55111512312578270212e-17; /* 0x3C90000000000000 */
+
+long double __scalblnl (long double x, long int n)
+{
+ int64_t k,l,hx,lx;
+ union { int64_t i; double d; } u;
+ double xhi, xlo;
+
+ ldbl_unpack (x, &xhi, &xlo);
+ EXTRACT_WORDS64 (hx, xhi);
+ EXTRACT_WORDS64 (lx, xlo);
+ k = (hx>>52)&0x7ff; /* extract exponent */
+ l = (lx>>52)&0x7ff;
+ if (k==0) { /* 0 or subnormal x */
+ if ((hx&0x7fffffffffffffffULL)==0) return x; /* +-0 */
+ u.i = hx;
+ u.d *= two54;
+ hx = u.i;
+ k = ((hx>>52)&0x7ff) - 54;
+ }
+ else if (k==0x7ff) return x+x; /* NaN or Inf */
+ if (n< -50000) return tiny*__copysignl(tiny,x); /*underflow */
+ if (n> 50000 || k+n > 0x7fe)
+ return huge*__copysignl(huge,x); /* overflow */
+ /* Now k and n are bounded we know that k = k+n does not
+ overflow. */
+ k = k+n;
+ if (k > 0) { /* normal result */
+ hx = (hx&0x800fffffffffffffULL)|(k<<52);
+ if ((lx & 0x7fffffffffffffffULL) == 0) { /* low part +-0 */
+ INSERT_WORDS64 (xhi, hx);
+ INSERT_WORDS64 (xlo, lx);
+ x = ldbl_pack (xhi, xlo);
+ return x;
+ }
+ if (l == 0) { /* low part subnormal */
+ u.i = lx;
+ u.d *= two54;
+ lx = u.i;
+ l = ((lx>>52)&0x7ff) - 54;
+ }
+ l = l + n;
+ if (l > 0)
+ lx = (lx&0x800fffffffffffffULL)|(l<<52);
+ else if (l <= -54)
+ lx = (lx&0x8000000000000000ULL);
+ else {
+ l += 54;
+ u.i = (lx&0x800fffffffffffffULL)|(l<<52);
+ u.d *= twom54;
+ lx = u.i;
+ }
+ INSERT_WORDS64 (xhi, hx);
+ INSERT_WORDS64 (xlo, lx);
+ x = ldbl_pack (xhi, xlo);
+ return x;
+ }
+ if (k <= -54)
+ return tiny*__copysignl(tiny,x); /*underflow*/
+ k += 54; /* subnormal result */
+ lx &= 0x8000000000000000ULL;
+ hx &= 0x800fffffffffffffULL;
+ INSERT_WORDS64 (xhi, hx|(k<<52));
+ INSERT_WORDS64 (xlo, lx);
+ x = ldbl_pack (xhi, xlo);
+ return x*twolm54;
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_scalbnl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_scalbnl.c
new file mode 100644
index 0000000000..0c4508835e
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_scalbnl.c
@@ -0,0 +1,104 @@
+/* s_scalbnl.c -- long double version of s_scalbn.c.
+ * Conversion to IEEE quad long double by Jakub Jelinek, jj@ultra.linux.cz.
+ */
+
+/* @(#)s_scalbn.c 5.1 93/09/24 */
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: $";
+#endif
+
+/*
+ * scalbnl (long double x, int n)
+ * scalbnl(x,n) returns x* 2**n computed by exponent
+ * manipulation rather than by actually performing an
+ * exponentiation or a multiplication.
+ */
+
+#include <math.h>
+#include <math_private.h>
+#include <math_ldbl_opt.h>
+
+static const long double
+twolm54 = 5.55111512312578270212e-17, /* 0x3C90000000000000, 0 */
+huge = 1.0E+300L,
+tiny = 1.0E-300L;
+static const double
+two54 = 1.80143985094819840000e+16, /* 0x4350000000000000 */
+twom54 = 5.55111512312578270212e-17; /* 0x3C90000000000000 */
+
+long double __scalbnl (long double x, int n)
+{
+ int64_t k,l,hx,lx;
+ union { int64_t i; double d; } u;
+ double xhi, xlo;
+
+ ldbl_unpack (x, &xhi, &xlo);
+ EXTRACT_WORDS64 (hx, xhi);
+ EXTRACT_WORDS64 (lx, xlo);
+ k = (hx>>52)&0x7ff; /* extract exponent */
+ l = (lx>>52)&0x7ff;
+ if (k==0) { /* 0 or subnormal x */
+ if ((hx&0x7fffffffffffffffULL)==0) return x; /* +-0 */
+ u.i = hx;
+ u.d *= two54;
+ hx = u.i;
+ k = ((hx>>52)&0x7ff) - 54;
+ }
+ else if (k==0x7ff) return x+x; /* NaN or Inf */
+ if (n< -50000) return tiny*__copysignl(tiny,x); /*underflow */
+ if (n> 50000 || k+n > 0x7fe)
+ return huge*__copysignl(huge,x); /* overflow */
+ /* Now k and n are bounded we know that k = k+n does not
+ overflow. */
+ k = k+n;
+ if (k > 0) { /* normal result */
+ hx = (hx&0x800fffffffffffffULL)|(k<<52);
+ if ((lx & 0x7fffffffffffffffULL) == 0) { /* low part +-0 */
+ INSERT_WORDS64 (xhi, hx);
+ INSERT_WORDS64 (xlo, lx);
+ x = ldbl_pack (xhi, xlo);
+ return x;
+ }
+ if (l == 0) { /* low part subnormal */
+ u.i = lx;
+ u.d *= two54;
+ lx = u.i;
+ l = ((lx>>52)&0x7ff) - 54;
+ }
+ l = l + n;
+ if (l > 0)
+ lx = (lx&0x800fffffffffffffULL)|(l<<52);
+ else if (l <= -54)
+ lx = (lx&0x8000000000000000ULL);
+ else {
+ l += 54;
+ u.i = (lx&0x800fffffffffffffULL)|(l<<52);
+ u.d *= twom54;
+ lx = u.i;
+ }
+ INSERT_WORDS64 (xhi, hx);
+ INSERT_WORDS64 (xlo, lx);
+ x = ldbl_pack (xhi, xlo);
+ return x;
+ }
+ if (k <= -54)
+ return tiny*__copysignl(tiny,x); /*underflow*/
+ k += 54; /* subnormal result */
+ lx &= 0x8000000000000000ULL;
+ hx &= 0x800fffffffffffffULL;
+ INSERT_WORDS64 (xhi, hx|(k<<52));
+ INSERT_WORDS64 (xlo, lx);
+ x = ldbl_pack (xhi, xlo);
+ return x*twolm54;
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_setpayloadl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_setpayloadl.c
new file mode 100644
index 0000000000..1aba33e6e2
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_setpayloadl.c
@@ -0,0 +1,3 @@
+#define SIG 0
+#define FUNC setpayloadl
+#include <s_setpayloadl_main.c>
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_setpayloadl_main.c b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_setpayloadl_main.c
new file mode 100644
index 0000000000..9aa02cdf93
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_setpayloadl_main.c
@@ -0,0 +1,60 @@
+/* Set NaN payload. ldbl-128ibm version.
+ Copyright (C) 2016-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+#include <math_private.h>
+#include <nan-high-order-bit.h>
+#include <stdint.h>
+
+#define SET_HIGH_BIT (HIGH_ORDER_BIT_IS_SET_FOR_SNAN ? SIG : !SIG)
+#define BIAS 0x3ff
+#define PAYLOAD_DIG 51
+#define EXPLICIT_MANT_DIG 52
+
+int
+FUNC (long double *x, long double payload)
+{
+ double hi, lo;
+ uint64_t hx, lx;
+
+ ldbl_unpack (payload, &hi, &lo);
+ EXTRACT_WORDS64 (hx, hi);
+ EXTRACT_WORDS64 (lx, lo);
+ int exponent = hx >> EXPLICIT_MANT_DIG;
+ /* Test if argument is (a) negative or too large; (b) too small,
+ except for 0 when allowed; (c) not an integer. All valid
+ arguments have the low part zero. */
+ if ((lx & 0x7fffffffffffffffULL) != 0
+ || exponent >= BIAS + PAYLOAD_DIG
+ || (exponent < BIAS && !(SET_HIGH_BIT && hx == 0))
+ || (hx & ((1ULL << (BIAS + EXPLICIT_MANT_DIG - exponent)) - 1)) != 0)
+ {
+ *x = 0.0L;
+ return 1;
+ }
+ if (hx != 0)
+ {
+ hx &= (1ULL << EXPLICIT_MANT_DIG) - 1;
+ hx |= 1ULL << EXPLICIT_MANT_DIG;
+ hx >>= BIAS + EXPLICIT_MANT_DIG - exponent;
+ }
+ hx |= 0x7ff0000000000000ULL | (SET_HIGH_BIT ? 0x8000000000000ULL : 0);
+ INSERT_WORDS64 (hi, hx);
+ *x = ldbl_pack (hi, 0.0);
+ return 0;
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_setpayloadsigl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_setpayloadsigl.c
new file mode 100644
index 0000000000..d97e2c8206
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_setpayloadsigl.c
@@ -0,0 +1,3 @@
+#define SIG 1
+#define FUNC setpayloadsigl
+#include <s_setpayloadl_main.c>
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_signbitl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_signbitl.c
new file mode 100644
index 0000000000..d6ceede69f
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_signbitl.c
@@ -0,0 +1,32 @@
+/* Return nonzero value if number is negative.
+ Copyright (C) 1997-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+#include <math_ldbl_opt.h>
+
+int
+___signbitl (long double x)
+{
+ return __builtin_signbitl (x);
+}
+#if IS_IN (libm)
+long_double_symbol (libm, ___signbitl, __signbitl);
+#else
+long_double_symbol (libc, ___signbitl, __signbitl);
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_sincosl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_sincosl.c
new file mode 100644
index 0000000000..8329979931
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_sincosl.c
@@ -0,0 +1,76 @@
+/* Compute sine and cosine of argument.
+ Copyright (C) 1997-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997 and
+ Jakub Jelinek <jj@ultra.linux.cz>.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <errno.h>
+#include <math.h>
+
+#include <math_private.h>
+#include <math_ldbl_opt.h>
+
+void
+__sincosl (long double x, long double *sinx, long double *cosx)
+{
+ int64_t ix;
+ double xhi;
+
+ /* High word of x. */
+ xhi = ldbl_high (x);
+ EXTRACT_WORDS64 (ix, xhi);
+
+ /* |x| ~< pi/4 */
+ ix &= 0x7fffffffffffffffLL;
+ if (ix <= 0x3fe921fb54442d10LL)
+ __kernel_sincosl (x, 0.0L, sinx, cosx, 0);
+ else if (ix >= 0x7ff0000000000000LL)
+ {
+ /* sin(Inf or NaN) is NaN */
+ *sinx = *cosx = x - x;
+ if (isinf (x))
+ __set_errno (EDOM);
+ }
+ else
+ {
+ /* Argument reduction needed. */
+ long double y[2];
+ int n;
+
+ n = __ieee754_rem_pio2l (x, y);
+ switch (n & 3)
+ {
+ case 0:
+ __kernel_sincosl (y[0], y[1], sinx, cosx, 1);
+ break;
+ case 1:
+ __kernel_sincosl (y[0], y[1], cosx, sinx, 1);
+ *cosx = -*cosx;
+ break;
+ case 2:
+ __kernel_sincosl (y[0], y[1], sinx, cosx, 1);
+ *sinx = -*sinx;
+ *cosx = -*cosx;
+ break;
+ default:
+ __kernel_sincosl (y[0], y[1], cosx, sinx, 1);
+ *sinx = -*sinx;
+ break;
+ }
+ }
+}
+long_double_symbol (libm, __sincosl, sincosl);
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_sinl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_sinl.c
new file mode 100644
index 0000000000..087921a913
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_sinl.c
@@ -0,0 +1,85 @@
+/* s_sinl.c -- long double version of s_sin.c.
+ * Conversion to long double by Jakub Jelinek, jj@ultra.linux.cz.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+/* sinl(x)
+ * Return sine function of x.
+ *
+ * kernel function:
+ * __kernel_sinl ... sine function on [-pi/4,pi/4]
+ * __kernel_cosl ... cose function on [-pi/4,pi/4]
+ * __ieee754_rem_pio2l ... argument reduction routine
+ *
+ * Method.
+ * Let S,C and T denote the sin, cos and tan respectively on
+ * [-PI/4, +PI/4]. Reduce the argument x to y1+y2 = x-k*pi/2
+ * in [-pi/4 , +pi/4], and let n = k mod 4.
+ * We have
+ *
+ * n sin(x) cos(x) tan(x)
+ * ----------------------------------------------------------
+ * 0 S C T
+ * 1 C -S -1/T
+ * 2 -S -C T
+ * 3 -C S -1/T
+ * ----------------------------------------------------------
+ *
+ * Special cases:
+ * Let trig be any of sin, cos, or tan.
+ * trig(+-INF) is NaN, with signals;
+ * trig(NaN) is that NaN;
+ *
+ * Accuracy:
+ * TRIG(x) returns trig(x) nearly rounded
+ */
+
+#include <errno.h>
+#include <math.h>
+#include <math_private.h>
+#include <math_ldbl_opt.h>
+
+long double __sinl(long double x)
+{
+ long double y[2],z=0.0L;
+ int64_t n, ix;
+ double xhi;
+
+ /* High word of x. */
+ xhi = ldbl_high (x);
+ EXTRACT_WORDS64 (ix, xhi);
+
+ /* |x| ~< pi/4 */
+ ix &= 0x7fffffffffffffffLL;
+ if(ix <= 0x3fe921fb54442d10LL)
+ return __kernel_sinl(x,z,0);
+
+ /* sin(Inf or NaN) is NaN */
+ else if (ix>=0x7ff0000000000000LL) {
+ if (ix == 0x7ff0000000000000LL)
+ __set_errno (EDOM);
+ return x-x;
+ }
+ /* argument reduction needed */
+ else {
+ n = __ieee754_rem_pio2l(x,y);
+ switch(n&3) {
+ case 0: return __kernel_sinl(y[0],y[1],1);
+ case 1: return __kernel_cosl(y[0],y[1]);
+ case 2: return -__kernel_sinl(y[0],y[1],1);
+ default:
+ return -__kernel_cosl(y[0],y[1]);
+ }
+ }
+}
+long_double_symbol (libm, __sinl, sinl);
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_tanhl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_tanhl.c
new file mode 100644
index 0000000000..e6457a1c1c
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_tanhl.c
@@ -0,0 +1,87 @@
+/* @(#)s_tanh.c 5.1 93/09/24 */
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: s_tanh.c,v 1.7 1995/05/10 20:48:22 jtc Exp $";
+#endif
+
+/* Tanh(x)
+ * Return the Hyperbolic Tangent of x
+ *
+ * Method :
+ * x -x
+ * e - e
+ * 0. tanh(x) is defined to be -----------
+ * x -x
+ * e + e
+ * 1. reduce x to non-negative by tanh(-x) = -tanh(x).
+ * 2. 0 <= x <= 2**-57 : tanh(x) := x*(one+x)
+ * -t
+ * 2**-57 < x <= 1 : tanh(x) := -----; t = expm1(-2x)
+ * t + 2
+ * 2
+ * 1 <= x <= 40.0 : tanh(x) := 1- ----- ; t=expm1(2x)
+ * t + 2
+ * 40.0 < x <= INF : tanh(x) := 1.
+ *
+ * Special cases:
+ * tanh(NaN) is NaN;
+ * only tanh(0)=0 is exact for finite argument.
+ */
+
+#include <float.h>
+#include <math.h>
+#include <math_private.h>
+#include <math_ldbl_opt.h>
+
+static const long double one=1.0L, two=2.0L, tiny = 1.0e-300L;
+
+long double __tanhl(long double x)
+{
+ long double t,z;
+ int64_t jx,ix;
+ double xhi;
+
+ /* High word of |x|. */
+ xhi = ldbl_high (x);
+ EXTRACT_WORDS64 (jx, xhi);
+ ix = jx&0x7fffffffffffffffLL;
+
+ /* x is INF or NaN */
+ if(ix>=0x7ff0000000000000LL) {
+ if (jx>=0) return one/x+one; /* tanh(+-inf)=+-1 */
+ else return one/x-one; /* tanh(NaN) = NaN */
+ }
+
+ /* |x| < 40 */
+ if (ix < 0x4044000000000000LL) { /* |x|<40 */
+ if (ix == 0)
+ return x; /* x == +-0 */
+ if (ix<0x3c60000000000000LL) /* |x|<2**-57 */
+ {
+ math_check_force_underflow (x);
+ return x; /* tanh(small) = small */
+ }
+ if (ix>=0x3ff0000000000000LL) { /* |x|>=1 */
+ t = __expm1l(two*fabsl(x));
+ z = one - two/(t+two);
+ } else {
+ t = __expm1l(-two*fabsl(x));
+ z= -t/(t+two);
+ }
+ /* |x| > 40, return +-1 */
+ } else {
+ z = one - tiny; /* raised inexact flag */
+ }
+ return (jx>=0)? z: -z;
+}
+long_double_symbol (libm, __tanhl, tanhl);
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_tanl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_tanl.c
new file mode 100644
index 0000000000..66b8a0621e
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_tanl.c
@@ -0,0 +1,79 @@
+/* s_tanl.c -- long double version of s_tan.c.
+ * Conversion to IEEE quad long double by Jakub Jelinek, jj@ultra.linux.cz.
+ */
+
+/* @(#)s_tan.c 5.1 93/09/24 */
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+/* tanl(x)
+ * Return tangent function of x.
+ *
+ * kernel function:
+ * __kernel_tanl ... tangent function on [-pi/4,pi/4]
+ * __ieee754_rem_pio2l ... argument reduction routine
+ *
+ * Method.
+ * Let S,C and T denote the sin, cos and tan respectively on
+ * [-PI/4, +PI/4]. Reduce the argument x to y1+y2 = x-k*pi/2
+ * in [-pi/4 , +pi/4], and let n = k mod 4.
+ * We have
+ *
+ * n sin(x) cos(x) tan(x)
+ * ----------------------------------------------------------
+ * 0 S C T
+ * 1 C -S -1/T
+ * 2 -S -C T
+ * 3 -C S -1/T
+ * ----------------------------------------------------------
+ *
+ * Special cases:
+ * Let trig be any of sin, cos, or tan.
+ * trig(+-INF) is NaN, with signals;
+ * trig(NaN) is that NaN;
+ *
+ * Accuracy:
+ * TRIG(x) returns trig(x) nearly rounded
+ */
+
+#include <errno.h>
+#include <math.h>
+#include <math_private.h>
+#include <math_ldbl_opt.h>
+
+long double __tanl(long double x)
+{
+ long double y[2],z=0.0L;
+ int64_t n, ix;
+ double xhi;
+
+ /* High word of x. */
+ xhi = ldbl_high (x);
+ EXTRACT_WORDS64 (ix, xhi);
+
+ /* |x| ~< pi/4 */
+ ix &= 0x7fffffffffffffffLL;
+ if(ix <= 0x3fe921fb54442d10LL) return __kernel_tanl(x,z,1);
+
+ /* tanl(Inf or NaN) is NaN */
+ else if (ix>=0x7ff0000000000000LL) {
+ if (ix == 0x7ff0000000000000LL)
+ __set_errno (EDOM);
+ return x-x; /* NaN */
+ }
+ /* argument reduction needed */
+ else {
+ n = __ieee754_rem_pio2l(x,y);
+ return __kernel_tanl(y[0],y[1],1-((n&1)<<1)); /* 1 -- n even
+ -1 -- n odd */
+ }
+}
+long_double_symbol (libm, __tanl, tanl);
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_totalorderl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_totalorderl.c
new file mode 100644
index 0000000000..963376a7cf
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_totalorderl.c
@@ -0,0 +1,62 @@
+/* Total order operation. ldbl-128ibm version.
+ Copyright (C) 2016-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+#include <math_private.h>
+#include <nan-high-order-bit.h>
+#include <stdint.h>
+
+int
+totalorderl (long double x, long double y)
+{
+ double xhi, xlo, yhi, ylo;
+ int64_t hx, hy, lx, ly;
+
+ ldbl_unpack (x, &xhi, &xlo);
+ EXTRACT_WORDS64 (hx, xhi);
+ ldbl_unpack (y, &yhi, &ylo);
+ EXTRACT_WORDS64 (hy, yhi);
+#if HIGH_ORDER_BIT_IS_SET_FOR_SNAN
+# error not implemented
+#endif
+ uint64_t hx_sign = hx >> 63;
+ uint64_t hy_sign = hy >> 63;
+ int64_t hx_adj = hx ^ (hx_sign >> 1);
+ int64_t hy_adj = hy ^ (hy_sign >> 1);
+ if (hx_adj < hy_adj)
+ return 1;
+ else if (hx_adj > hy_adj)
+ return 0;
+
+ /* The high doubles are identical. If they are NaNs or both the low
+ parts are zero, the low parts are not significant (and if they
+ are infinities, both the low parts must be zero). */
+ if ((hx & 0x7fffffffffffffffULL) >= 0x7ff0000000000000ULL)
+ return 1;
+ EXTRACT_WORDS64 (lx, xlo);
+ EXTRACT_WORDS64 (ly, ylo);
+ if (((lx | ly) & 0x7fffffffffffffffULL) == 0)
+ return 1;
+
+ /* Otherwise compare the low parts. */
+ uint64_t lx_sign = lx >> 63;
+ uint64_t ly_sign = ly >> 63;
+ lx ^= lx_sign >> 1;
+ ly ^= ly_sign >> 1;
+ return lx <= ly;
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_totalordermagl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_totalordermagl.c
new file mode 100644
index 0000000000..f7480909df
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_totalordermagl.c
@@ -0,0 +1,64 @@
+/* Total order operation on absolute values. ldbl-128ibm version.
+ Copyright (C) 2016-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+#include <math_private.h>
+#include <nan-high-order-bit.h>
+#include <stdint.h>
+
+int
+totalordermagl (long double x, long double y)
+{
+ double xhi, xlo, yhi, ylo;
+ int64_t hx, hy, lx, ly;
+
+ ldbl_unpack (x, &xhi, &xlo);
+ EXTRACT_WORDS64 (hx, xhi);
+ ldbl_unpack (y, &yhi, &ylo);
+ EXTRACT_WORDS64 (hy, yhi);
+#if HIGH_ORDER_BIT_IS_SET_FOR_SNAN
+# error not implemented
+#endif
+ uint64_t x_sign = hx & 0x8000000000000000ULL;
+ uint64_t y_sign = hy & 0x8000000000000000ULL;
+ hx ^= x_sign;
+ hy ^= y_sign;
+ if (hx < hy)
+ return 1;
+ else if (hx > hy)
+ return 0;
+
+ /* The high doubles are identical. If they are NaNs or both the low
+ parts are zero, the low parts are not significant (and if they
+ are infinities, both the low parts must be zero). */
+ if (hx >= 0x7ff0000000000000ULL)
+ return 1;
+ EXTRACT_WORDS64 (lx, xlo);
+ EXTRACT_WORDS64 (ly, ylo);
+ if (((lx | ly) & 0x7fffffffffffffffULL) == 0)
+ return 1;
+ lx ^= x_sign;
+ ly ^= y_sign;
+
+ /* Otherwise compare the low parts. */
+ uint64_t lx_sign = lx >> 63;
+ uint64_t ly_sign = ly >> 63;
+ lx ^= lx_sign >> 1;
+ ly ^= ly_sign >> 1;
+ return lx <= ly;
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_truncl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_truncl.c
new file mode 100644
index 0000000000..ecabf9d711
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_truncl.c
@@ -0,0 +1,62 @@
+/* Truncate (toward zero) long double floating-point values.
+ IBM extended format long double version.
+ Copyright (C) 2006-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+#include <math_ldbl_opt.h>
+#include <float.h>
+#include <ieee754.h>
+
+
+long double
+__truncl (long double x)
+{
+ double xh, xl, hi, lo;
+
+ ldbl_unpack (x, &xh, &xl);
+
+ /* Return Inf, Nan, +/-0 unchanged. */
+ if (__builtin_expect (xh != 0.0
+ && __builtin_isless (__builtin_fabs (xh),
+ __builtin_inf ()), 1))
+ {
+ hi = __trunc (xh);
+ if (hi != xh)
+ {
+ /* The high part is not an integer; the low part does not
+ affect the result. */
+ xh = hi;
+ xl = 0;
+ }
+ else
+ {
+ /* The high part is a nonzero integer. */
+ lo = xh > 0 ? __floor (xl) : __ceil (xl);
+ xh = hi;
+ xl = lo;
+ ldbl_canonicalize_int (&xh, &xl);
+ }
+ }
+ else
+ /* Quiet signaling NaN arguments. */
+ xh += xh;
+
+ return ldbl_pack (xh, xl);
+}
+
+long_double_symbol (libm, __truncl, truncl);
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_ufromfpl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_ufromfpl.c
new file mode 100644
index 0000000000..c686daa4a7
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_ufromfpl.c
@@ -0,0 +1,4 @@
+#define UNSIGNED 1
+#define INEXACT 0
+#define FUNC ufromfpl
+#include <s_fromfpl_main.c>
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_ufromfpxl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_ufromfpxl.c
new file mode 100644
index 0000000000..906066c83c
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/s_ufromfpxl.c
@@ -0,0 +1,4 @@
+#define UNSIGNED 1
+#define INEXACT 1
+#define FUNC ufromfpxl
+#include <s_fromfpl_main.c>
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/strtod_nan_ldouble.h b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/strtod_nan_ldouble.h
new file mode 100644
index 0000000000..198fe48f5c
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/strtod_nan_ldouble.h
@@ -0,0 +1,30 @@
+/* Convert string for NaN payload to corresponding NaN. For ldbl-128ibm.
+ Copyright (C) 1997-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#define FLOAT long double
+#define SET_MANTISSA(flt, mant) \
+ do \
+ { \
+ union ibm_extended_long_double u; \
+ u.ld = (flt); \
+ u.d[0].ieee_nan.mantissa0 = (mant) >> 32; \
+ u.d[0].ieee_nan.mantissa1 = (mant); \
+ if ((u.d[0].ieee.mantissa0 | u.d[0].ieee.mantissa1) != 0) \
+ (flt) = u.ld; \
+ } \
+ while (0)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/strtold_l.c b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/strtold_l.c
new file mode 100644
index 0000000000..37034cb254
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/strtold_l.c
@@ -0,0 +1,60 @@
+/* Copyright (C) 1999-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+#include <stdlib.h>
+#include <wchar.h>
+#include <xlocale.h>
+
+/* The actual implementation for all floating point sizes is in strtod.c.
+ These macros tell it to produce the `long double' version, `strtold'. */
+
+#define FLOAT long double
+#define FLT LDBL
+#ifdef USE_WIDE_CHAR
+extern long double ____new_wcstold_l (const wchar_t *, wchar_t **, __locale_t);
+# define STRTOF __new_wcstold_l
+# define __STRTOF ____new_wcstold_l
+# define ____STRTOF_INTERNAL ____wcstold_l_internal
+# define STRTOF_NAN __wcstold_nan
+#else
+extern long double ____new_strtold_l (const char *, char **, __locale_t);
+# define STRTOF __new_strtold_l
+# define __STRTOF ____new_strtold_l
+# define ____STRTOF_INTERNAL ____strtold_l_internal
+# define STRTOF_NAN __strtold_nan
+#endif
+extern __typeof (__STRTOF) STRTOF;
+libc_hidden_proto (__STRTOF)
+libc_hidden_proto (STRTOF)
+#define MPN2FLOAT __mpn_construct_long_double
+#define FLOAT_HUGE_VAL HUGE_VALL
+
+#include <strtod_l.c>
+
+#ifdef __LONG_DOUBLE_MATH_OPTIONAL
+# include <math_ldbl_opt.h>
+# ifdef USE_WIDE_CHAR
+weak_alias (____new_wcstold_l, ___new_wcstold_l);
+long_double_symbol (libc, ___new_wcstold_l, wcstold_l);
+long_double_symbol (libc, ____new_wcstold_l, __wcstold_l);
+# else
+weak_alias (____new_strtold_l, ___new_strtold_l);
+long_double_symbol (libc, ___new_strtold_l, strtold_l);
+long_double_symbol (libc, ____new_strtold_l, __strtold_l);
+# endif
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/t_sincosl.c b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/t_sincosl.c
new file mode 100644
index 0000000000..22c59150be
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/t_sincosl.c
@@ -0,0 +1,693 @@
+/* Quad-precision floating point sine and cosine tables.
+ Copyright (C) 1999-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Jakub Jelinek <jj@ultra.linux.cz>
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+/* For 0.1484375 + n/128.0, n=0..82 this table contains
+ first 113 bits of cosine, then at least 113 additional
+ bits and the same for sine.
+ 0.1484375+82.0/128.0 is the smallest number among above defined numbers
+ larger than pi/4.
+ Computed using gmp.
+ */
+
+const long double __sincosl_table[] = {
+
+/* x = 1.48437500000000000000000000000000000e-01L 3ffc3000000000000000000000000000 */
+/* cos(x) = 0.fd2f5320e1b790209b4dda2f98 f79caaa7b873aff1014b0fbc52 43766d03cb006bc837c4358 */
+ 0x0.fd2f5320e1b790209b4dda2f98p0L,
+ 0x0.f79caaa7b873aff1014b0fbc52p-104L,
+/* sin(x) = 0.25dc50bc95711d0d9787d108fd 438cf5959ee0bfb7a1e36e8b1a 112968f356657420e9cc9ea */
+ 0x0.25dc50bc95711d0d9787d108fdp0L,
+ 0x0.438cf5959ee0bfb7a1e36e8b1ap-104L,
+
+/* x = 1.56250000000000000000000000000000000e-01 3ffc4000000000000000000000000000 */
+/* cos(x) = 0.fce1a053e621438b6d60c76e8c 45bf0a9dc71aa16f922acc10e9 5144ec796a249813c9cb649 */
+ 0x0.fce1a053e621438b6d60c76e8cp0L,
+ 0x0.45bf0a9dc71aa16f922acc10e9p-104L,
+/* sin(x) = 0.27d66258bacd96a3eb335b365c 87d59438c5142bb56a489e9b8d b9d36234ffdebb6bdc22d8e */
+ 0x0.27d66258bacd96a3eb335b365cp0L,
+ 0x0.87d59438c5142bb56a489e9b8dp-104L,
+
+/* x = 1.64062500000000000000000000000000000e-01 3ffc5000000000000000000000000000 */
+/* cos(x) = 0.fc8ffa01ba6807417e05962b0d 9fdf1fddb0cc4c07d22e19e080 19bffa50a6c7acdb40307a3 */
+ 0x0.fc8ffa01ba6807417e05962b0dp0L,
+ 0x0.9fdf1fddb0cc4c07d22e19e080p-104L,
+/* sin(x) = 0.29cfd49b8be4f665276cab01cb f0426934906c3dd105473b226e 410b1450f62e53ff7c6cce1 */
+ 0x0.29cfd49b8be4f665276cab01cbp0L,
+ 0x0.f0426934906c3dd105473b226ep-104L,
+
+/* x = 1.71875000000000000000000000000000000e-01 3ffc6000000000000000000000000000 */
+/* cos(x) = 0.fc3a6170f767ac735d63d99a9d 439e1db5e59d3ef153a4265d58 55850ed82b536bf361b80e3 */
+ 0x0.fc3a6170f767ac735d63d99a9dp0L,
+ 0x0.439e1db5e59d3ef153a4265d58p-104L,
+/* sin(x) = 0.2bc89f9f424de5485de7ce03b2 514952b9faf5648c3244d4736f eb95dbb9da49f3b58a9253b */
+ 0x0.2bc89f9f424de5485de7ce03b2p0L,
+ 0x0.514952b9faf5648c3244d4736fp-104L,
+
+/* x = 1.79687500000000000000000000000000000e-01 3ffc7000000000000000000000000000 */
+/* cos(x) = 0.fbe0d7f7fef11e70aa43b8abf4 f6a457cea20c8f3f676b47781f 9821bbe9ce04b3c7b981c0b */
+ 0x0.fbe0d7f7fef11e70aa43b8abf4p0L,
+ 0x0.f6a457cea20c8f3f676b47781fp-104L,
+/* sin(x) = 0.2dc0bb80b49a97ffb34e8dd1f8 db9df7af47ed2dcf58b12c8e78 27e048cae929da02c04ecac */
+ 0x0.2dc0bb80b49a97ffb34e8dd1f8p0L,
+ 0x0.db9df7af47ed2dcf58b12c8e78p-104L,
+
+/* x = 1.87500000000000000000000000000000000e-01 3ffc8000000000000000000000000000 */
+/* cos(x) = 0.fb835efcf670dd2ce6fe792469 7eea13ea358867e9cdb3899b78 3f4f9f43aa5626e8b67b3bc */
+ 0x0.fb835efcf670dd2ce6fe792469p0L,
+ 0x0.7eea13ea358867e9cdb3899b78p-104L,
+/* sin(x) = 0.2fb8205f75e56a2b56a1c4792f 856258769af396e0189ef72c05 e4df59a6b00e4b44a6ea515 */
+ 0x0.2fb8205f75e56a2b56a1c4792fp0L,
+ 0x0.856258769af396e0189ef72c05p-104L,
+
+/* x = 1.95312500000000000000000000000000000e-01 3ffc9000000000000000000000000000 */
+/* cos(x) = 0.fb21f7f5c156696b00ac1fe28a c5fd76674a92b4df80d9c8a46c 684399005deccc41386257c */
+ 0x0.fb21f7f5c156696b00ac1fe28ap0L,
+ 0x0.c5fd76674a92b4df80d9c8a46cp-104L,
+/* sin(x) = 0.31aec65df552876f82ece9a235 6713246eba6799983d7011b0b3 698d6e1da919c15d57c30c1 */
+ 0x0.31aec65df552876f82ece9a235p0L,
+ 0x0.6713246eba6799983d7011b0b3p-104L,
+
+/* x = 2.03125000000000000000000000000000000e-01 3ffca000000000000000000000000000 */
+/* cos(x) = 0.fabca467fb3cb8f1d069f01d8e a33ade5bfd68296ecd1cc9f7b7 609bbcf3676e726c3301334 */
+ 0x0.fabca467fb3cb8f1d069f01d8ep0L,
+ 0x0.a33ade5bfd68296ecd1cc9f7b7p-104L,
+/* sin(x) = 0.33a4a5a19d86246710f602c44d f4fa513f4639ce938477aeeabb 82e8e0a7ed583a188879fd4 */
+ 0x0.33a4a5a19d86246710f602c44dp0L,
+ 0x0.f4fa513f4639ce938477aeeabbp-104L,
+
+/* x = 2.10937500000000000000000000000000000e-01 3ffcb000000000000000000000000000 */
+/* cos(x) = 0.fa5365e8f1d3ca27be1db5d76a e64d983d7470a4ab0f4ccf65a2 b8c67a380df949953a09bc1 */
+ 0x0.fa5365e8f1d3ca27be1db5d76ap0L,
+ 0x0.e64d983d7470a4ab0f4ccf65a2p-104L,
+/* sin(x) = 0.3599b652f40ec999df12a0a4c8 561de159c98d4e54555de518b9 7f48886f715d8df5f4f093e */
+ 0x0.3599b652f40ec999df12a0a4c8p0L,
+ 0x0.561de159c98d4e54555de518b9p-104L,
+
+/* x = 2.18750000000000000000000000000000000e-01 3ffcc000000000000000000000000000 */
+/* cos(x) = 0.f9e63e1d9e8b6f6f2e296bae5b 5ed9c11fd7fa2fe11e09fc7bde 901abed24b6365e72f7db4e */
+ 0x0.f9e63e1d9e8b6f6f2e296bae5bp0L,
+ 0x0.5ed9c11fd7fa2fe11e09fc7bdep-104L,
+/* sin(x) = 0.378df09db8c332ce0d2b53d865 582e4526ea336c768f68c32b49 6c6d11c1cd241bb9f1da523 */
+ 0x0.378df09db8c332ce0d2b53d865p0L,
+ 0x0.582e4526ea336c768f68c32b49p-104L,
+
+/* x = 2.26562500000000000000000000000000000e-01 3ffcd000000000000000000000000000 */
+/* cos(x) = 0.f9752eba9fff6b98842beadab0 54a932fb0f8d5b875ae63d6b22 88d09b148921aeb6e52f61b */
+ 0x0.f9752eba9fff6b98842beadab0p0L,
+ 0x0.54a932fb0f8d5b875ae63d6b22p-104L,
+/* sin(x) = 0.39814cb10513453cb97b21bc1c a6a337b150c21a675ab85503bc 09a436a10ab1473934e20c8 */
+ 0x0.39814cb10513453cb97b21bc1cp0L,
+ 0x0.a6a337b150c21a675ab85503bcp-104L,
+
+/* x = 2.34375000000000000000000000000000000e-01 3ffce000000000000000000000000000 */
+/* cos(x) = 0.f90039843324f9b940416c1984 b6cbed1fc733d97354d4265788 a86150493ce657cae032674 */
+ 0x0.f90039843324f9b940416c1984p0L,
+ 0x0.b6cbed1fc733d97354d4265788p-104L,
+/* sin(x) = 0.3b73c2bf6b4b9f668ef9499c81 f0d965087f1753fa64b086e58c b8470515c18c1412f8c2e02 */
+ 0x0.3b73c2bf6b4b9f668ef9499c81p0L,
+ 0x0.f0d965087f1753fa64b086e58cp-104L,
+
+/* x = 2.42187500000000000000000000000000000e-01 3ffcf000000000000000000000000000 */
+/* cos(x) = 0.f887604e2c39dbb20e4ec58250 59a789ffc95b275ad9954078ba 8a28d3fcfe9cc2c1d49697b */
+ 0x0.f887604e2c39dbb20e4ec58250p0L,
+ 0x0.59a789ffc95b275ad9954078bap-104L,
+/* sin(x) = 0.3d654aff15cb457a0fca854698 aba33039a8a40626609204472d 9d40309b626eccc6dff0ffa */
+ 0x0.3d654aff15cb457a0fca854698p0L,
+ 0x0.aba33039a8a40626609204472dp-104L,
+
+/* x = 2.50000000000000000000000000000000000e-01 3ffd0000000000000000000000000000 */
+/* cos(x) = 0.f80aa4fbef750ba783d33cb95f 94f8a41426dbe79edc4a023ef9 ec13c944551c0795b84fee1 */
+ 0x0.f80aa4fbef750ba783d33cb95fp0L,
+ 0x0.94f8a41426dbe79edc4a023ef9p-104L,
+/* sin(x) = 0.3f55dda9e62aed7513bd7b8e6a 3d1635dd5676648d7db525898d 7086af9330f03c7f285442a */
+ 0x0.3f55dda9e62aed7513bd7b8e6ap0L,
+ 0x0.3d1635dd5676648d7db525898dp-104L,
+
+/* x = 2.57812500000000000000000000000000000e-01 3ffd0800000000000000000000000000 */
+/* cos(x) = 0.f78a098069792daabc9ee42591 b7c5a68cb1ab822aeb446b3311 b4ba5371b8970e2c1547ad7 */
+ 0x0.f78a098069792daabc9ee42591p0L,
+ 0x0.b7c5a68cb1ab822aeb446b3311p-104L,
+/* sin(x) = 0.414572fd94556e6473d6202713 88dd47c0ba050cdb5270112e3e 370e8c4705ae006426fb5d5 */
+ 0x0.414572fd94556e6473d6202713p0L,
+ 0x0.88dd47c0ba050cdb5270112e3ep-104L,
+
+/* x = 2.65625000000000000000000000000000000e-01 3ffd1000000000000000000000000000 */
+/* cos(x) = 0.f7058fde0788dfc805b8fe8878 9e4f4253e3c50afe8b22f41159 620ab5940ff7df9557c0d1f */
+ 0x0.f7058fde0788dfc805b8fe8878p0L,
+ 0x0.9e4f4253e3c50afe8b22f41159p-104L,
+/* sin(x) = 0.4334033bcd90d6604f5f36c1d4 b84451a87150438275b77470b5 0e5b968fa7962b5ffb379b7 */
+ 0x0.4334033bcd90d6604f5f36c1d4p0L,
+ 0x0.b84451a87150438275b77470b5p-104L,
+
+/* x = 2.73437500000000000000000000000000000e-01 3ffd1800000000000000000000000000 */
+/* cos(x) = 0.f67d3a26af7d07aa4bd6d42af8 c0067fefb96d5b46c031eff536 27f215ea3242edc3f2e13eb */
+ 0x0.f67d3a26af7d07aa4bd6d42af8p0L,
+ 0x0.c0067fefb96d5b46c031eff536p-104L,
+/* sin(x) = 0.452186aa5377ab20bbf2524f52 e3a06a969f47166ab88cf88c11 1ad12c55941021ef3317a1a */
+ 0x0.452186aa5377ab20bbf2524f52p0L,
+ 0x0.e3a06a969f47166ab88cf88c11p-104L,
+
+/* x = 2.81250000000000000000000000000000000e-01 3ffd2000000000000000000000000000 */
+/* cos(x) = 0.f5f10a7bb77d3dfa0c1da8b578 42783280d01ce3c0f82bae3b9d 623c168d2e7c29977994451 */
+ 0x0.f5f10a7bb77d3dfa0c1da8b578p0L,
+ 0x0.42783280d01ce3c0f82bae3b9dp-104L,
+/* sin(x) = 0.470df5931ae1d946076fe0dcff 47fe31bb2ede618ebc607821f8 462b639e1f4298b5ae87fd3 */
+ 0x0.470df5931ae1d946076fe0dcffp0L,
+ 0x0.47fe31bb2ede618ebc607821f8p-104L,
+
+/* x = 2.89062500000000000000000000000000000e-01 3ffd2800000000000000000000000000 */
+/* cos(x) = 0.f561030ddd7a78960ea9f4a32c 6521554995667f5547bafee9ec 48b3155cdb0f7fd00509713 */
+ 0x0.f561030ddd7a78960ea9f4a32cp0L,
+ 0x0.6521554995667f5547bafee9ecp-104L,
+/* sin(x) = 0.48f948446abcd6b0f7fccb100e 7a1b26eccad880b0d24b59948c 7cdd49514d44b933e6985c2 */
+ 0x0.48f948446abcd6b0f7fccb100ep0L,
+ 0x0.7a1b26eccad880b0d24b59948cp-104L,
+
+/* x = 2.96875000000000000000000000000000000e-01 3ffd3000000000000000000000000000 */
+/* cos(x) = 0.f4cd261d3e6c15bb369c875863 0d2ac00b7ace2a51c0631bfeb3 9ed158ba924cc91e259c195 */
+ 0x0.f4cd261d3e6c15bb369c875863p0L,
+ 0x0.0d2ac00b7ace2a51c0631bfeb3p-104L,
+/* sin(x) = 0.4ae37710fad27c8aa9c4cf96c0 3519b9ce07dc08a1471775499f 05c29f86190aaebaeb9716e */
+ 0x0.4ae37710fad27c8aa9c4cf96c0p0L,
+ 0x0.3519b9ce07dc08a1471775499fp-104L,
+
+/* x = 3.04687500000000000000000000000000000e-01 3ffd3800000000000000000000000000 */
+/* cos(x) = 0.f43575f94d4f6b272f5fb76b14 d2a64ab52df1ee8ddf7c651034 e5b2889305a9ea9015d758a */
+ 0x0.f43575f94d4f6b272f5fb76b14p0L,
+ 0x0.d2a64ab52df1ee8ddf7c651034p-104L,
+/* sin(x) = 0.4ccc7a50127e1de0cb6b40c302 c651f7bded4f9e7702b0471ae0 288d091a37391950907202f */
+ 0x0.4ccc7a50127e1de0cb6b40c302p0L,
+ 0x0.c651f7bded4f9e7702b0471ae0p-104L,
+
+/* x = 3.12500000000000000000000000000000000e-01 3ffd4000000000000000000000000000 */
+/* cos(x) = 0.f399f500c9e9fd37ae9957263d ab8877102beb569f101ee44953 50868e5847d181d50d3cca2 */
+ 0x0.f399f500c9e9fd37ae9957263dp0L,
+ 0x0.ab8877102beb569f101ee44953p-104L,
+/* sin(x) = 0.4eb44a5da74f600207aaa090f0 734e288603ffadb3eb2542a469 77b105f8547128036dcf7f0 */
+ 0x0.4eb44a5da74f600207aaa090f0p0L,
+ 0x0.734e288603ffadb3eb2542a469p-104L,
+
+/* x = 3.20312500000000000000000000000000000e-01 3ffd4800000000000000000000000000 */
+/* cos(x) = 0.f2faa5a1b74e82fd61fa05f917 7380e8e69b7b15a945e8e5ae11 24bf3d12b0617e03af4fab5 */
+ 0x0.f2faa5a1b74e82fd61fa05f917p0L,
+ 0x0.7380e8e69b7b15a945e8e5ae11p-104L,
+/* sin(x) = 0.509adf9a7b9a5a0f638a8fa3a6 0a199418859f18b37169a644fd b986c21ecb00133853bc35b */
+ 0x0.509adf9a7b9a5a0f638a8fa3a6p0L,
+ 0x0.0a199418859f18b37169a644fdp-104L,
+
+/* x = 3.28125000000000000000000000000000000e-01 3ffd5000000000000000000000000000 */
+/* cos(x) = 0.f2578a595224dd2e6bfa2eb2f9 9cc674f5ea6f479eae2eb58018 6897ae3f893df1113ca06b8 */
+ 0x0.f2578a595224dd2e6bfa2eb2f9p0L,
+ 0x0.9cc674f5ea6f479eae2eb58018p-104L,
+/* sin(x) = 0.5280326c3cf481823ba6bb08ea c82c2093f2bce3c4eb4ee3dec7 df41c92c8a4226098616075 */
+ 0x0.5280326c3cf481823ba6bb08eap0L,
+ 0x0.c82c2093f2bce3c4eb4ee3dec7p-104L,
+
+/* x = 3.35937500000000000000000000000000000e-01 3ffd5800000000000000000000000000 */
+/* cos(x) = 0.f1b0a5b406b526d886c55feadc 8d0dcc8eb9ae2ac707051771b4 8e05b25b000009660bdb3e3 */
+ 0x0.f1b0a5b406b526d886c55feadcp0L,
+ 0x0.8d0dcc8eb9ae2ac707051771b4p-104L,
+/* sin(x) = 0.54643b3da29de9b357155eef0f 332fb3e66c83bf4dddd9491c5e b8e103ccd92d6175220ed51 */
+ 0x0.54643b3da29de9b357155eef0fp0L,
+ 0x0.332fb3e66c83bf4dddd9491c5ep-104L,
+
+/* x = 3.43750000000000000000000000000000000e-01 3ffd6000000000000000000000000000 */
+/* cos(x) = 0.f105fa4d66b607a67d44e04272 5204435142ac8ad54dfb0907a4 f6b56b06d98ee60f19e557a */
+ 0x0.f105fa4d66b607a67d44e04272p0L,
+ 0x0.5204435142ac8ad54dfb0907a4p-104L,
+/* sin(x) = 0.5646f27e8bd65cbe3a5d61ff06 572290ee826d9674a00246b05a e26753cdfc90d9ce81a7d02 */
+ 0x0.5646f27e8bd65cbe3a5d61ff06p0L,
+ 0x0.572290ee826d9674a00246b05ap-104L,
+
+/* x = 3.51562500000000000000000000000000000e-01 3ffd6800000000000000000000000000 */
+/* cos(x) = 0.f0578ad01ede707fa39c09dc6b 984afef74f3dc8d0efb0f4c5a6 b13771145b3e0446fe33887 */
+ 0x0.f0578ad01ede707fa39c09dc6bp0L,
+ 0x0.984afef74f3dc8d0efb0f4c5a6p-104L,
+/* sin(x) = 0.582850a41e1dd46c7f602ea244 cdbbbfcdfa8f3189be794dda42 7ce090b5f85164f1f80ac13 */
+ 0x0.582850a41e1dd46c7f602ea244p0L,
+ 0x0.cdbbbfcdfa8f3189be794dda42p-104L,
+
+/* x = 3.59375000000000000000000000000000000e-01 3ffd7000000000000000000000000000 */
+/* cos(x) = 0.efa559f5ec3aec3a4eb0331927 8a2d41fcf9189462261125fe61 47b078f1daa0b06750a1654 */
+ 0x0.efa559f5ec3aec3a4eb0331927p0L,
+ 0x0.8a2d41fcf9189462261125fe61p-104L,
+/* sin(x) = 0.5a084e28e35fda2776dfdbbb55 31d74ced2b5d17c0b1afc46475 29d50c295e36d8ceec126c1 */
+ 0x0.5a084e28e35fda2776dfdbbb55p0L,
+ 0x0.31d74ced2b5d17c0b1afc46475p-104L,
+
+/* x = 3.67187500000000000000000000000000000e-01 3ffd7800000000000000000000000000 */
+/* cos(x) = 0.eeef6a879146af0bf9b95ea2ea 0ac0d3e2e4d7e15d93f48cbd41 bf8e4fded40bef69e19eafa */
+ 0x0.eeef6a879146af0bf9b95ea2eap0L,
+ 0x0.0ac0d3e2e4d7e15d93f48cbd41p-104L,
+/* sin(x) = 0.5be6e38ce8095542bc14ee9da0 d36483e6734bcab2e07624188a f5653f114eeb46738fa899d */
+ 0x0.5be6e38ce8095542bc14ee9da0p0L,
+ 0x0.d36483e6734bcab2e07624188ap-104L,
+
+/* x = 3.75000000000000000000000000000000000e-01 3ffd8000000000000000000000000000 */
+/* cos(x) = 0.ee35bf5ccac89052cd91ddb734 d3a47e262e3b609db604e21705 3803be0091e76daf28a89b7 */
+ 0x0.ee35bf5ccac89052cd91ddb734p0L,
+ 0x0.d3a47e262e3b609db604e21705p-104L,
+/* sin(x) = 0.5dc40955d9084f48a94675a249 8de5d851320ff5528a6afb3f2e 24de240fce6cbed1ba0ccd6 */
+ 0x0.5dc40955d9084f48a94675a249p0L,
+ 0x0.8de5d851320ff5528a6afb3f2ep-104L,
+
+/* x = 3.82812500000000000000000000000000000e-01 3ffd8800000000000000000000000000 */
+/* cos(x) = 0.ed785b5c44741b4493c56bcb9d 338a151c6f6b85d8f8aca658b2 8572c162b199680eb9304da */
+ 0x0.ed785b5c44741b4493c56bcb9dp0L,
+ 0x0.338a151c6f6b85d8f8aca658b2p-104L,
+/* sin(x) = 0.5f9fb80f21b53649c432540a50 e22c53057ff42ae0fdf1307760 dc0093f99c8efeb2fbd7073 */
+ 0x0.5f9fb80f21b53649c432540a50p0L,
+ 0x0.e22c53057ff42ae0fdf1307760p-104L,
+
+/* x = 3.90625000000000000000000000000000000e-01 3ffd9000000000000000000000000000 */
+/* cos(x) = 0.ecb7417b8d4ee3fec37aba4073 aa48f1f14666006fb431d96713 03c8100d10190ec8179c41d */
+ 0x0.ecb7417b8d4ee3fec37aba4073p0L,
+ 0x0.aa48f1f14666006fb431d96713p-104L,
+/* sin(x) = 0.6179e84a09a5258a40e9b5face 03e525f8b5753cd0105d93fe62 98010c3458e84d75fe420e9 */
+ 0x0.6179e84a09a5258a40e9b5facep0L,
+ 0x0.03e525f8b5753cd0105d93fe62p-104L,
+
+/* x = 3.98437500000000000000000000000000000e-01 3ffd9800000000000000000000000000 */
+/* cos(x) = 0.ebf274bf0bda4f62447e56a093 626798d3013b5942b1abfd155a acc9dc5c6d0806a20d6b9c1 */
+ 0x0.ebf274bf0bda4f62447e56a093p0L,
+ 0x0.626798d3013b5942b1abfd155ap-104L,
+/* sin(x) = 0.6352929dd264bd44a02ea76632 5d8aa8bd9695fc8def3caefba5 b94c9a3c873f7b2d3776ead */
+ 0x0.6352929dd264bd44a02ea76632p0L,
+ 0x0.5d8aa8bd9695fc8def3caefba5p-104L,
+
+/* x = 4.06250000000000000000000000000000000e-01 3ffda000000000000000000000000000 */
+/* cos(x) = 0.eb29f839f201fd13b937968279 16a78f15c85230a4e8ea4b2155 8265a14367e1abb4c30695a */
+ 0x0.eb29f839f201fd13b937968279p0L,
+ 0x0.16a78f15c85230a4e8ea4b2155p-104L,
+/* sin(x) = 0.6529afa7d51b129631ec197c0a 840a11d7dc5368b0a47956feb2 85caa8371c4637ef17ef01b */
+ 0x0.6529afa7d51b129631ec197c0ap0L,
+ 0x0.840a11d7dc5368b0a47956feb2p-104L,
+
+/* x = 4.14062500000000000000000000000000000e-01 3ffda800000000000000000000000000 */
+/* cos(x) = 0.ea5dcf0e30cf03e6976ef0b1ec 26515fba47383855c3b4055a99 b5e86824b2cd1a691fdca7b */
+ 0x0.ea5dcf0e30cf03e6976ef0b1ecp0L,
+ 0x0.26515fba47383855c3b4055a99p-104L,
+/* sin(x) = 0.66ff380ba0144109e39a320b0a 3fa5fd65ea0585bcbf9b1a769a 9b0334576c658139e1a1cbe */
+ 0x0.66ff380ba0144109e39a320b0ap0L,
+ 0x0.3fa5fd65ea0585bcbf9b1a769ap-104L,
+
+/* x = 4.21875000000000000000000000000000000e-01 3ffdb000000000000000000000000000 */
+/* cos(x) = 0.e98dfc6c6be031e60dd3089cbd d18a75b1f6b2c1e97f79225202 f03dbea45b07a5ec4efc062 */
+ 0x0.e98dfc6c6be031e60dd3089cbdp0L,
+ 0x0.d18a75b1f6b2c1e97f79225202p-104L,
+/* sin(x) = 0.68d32473143327973bc712bcc4 ccddc47630d755850c0655243b 205934dc49ffed8eb76adcb */
+ 0x0.68d32473143327973bc712bcc4p0L,
+ 0x0.ccddc47630d755850c0655243bp-104L,
+
+/* x = 4.29687500000000000000000000000000000e-01 3ffdb800000000000000000000000000 */
+/* cos(x) = 0.e8ba8393eca7821aa563d83491 b6101189b3b101c3677f73d7ba d7c10f9ee02b7ab4009739a */
+ 0x0.e8ba8393eca7821aa563d83491p0L,
+ 0x0.b6101189b3b101c3677f73d7bap-104L,
+/* sin(x) = 0.6aa56d8e8249db4eb60a761fe3 f9e559be456b9e13349ca99b0b fb787f22b95db3b70179615 */
+ 0x0.6aa56d8e8249db4eb60a761fe3p0L,
+ 0x0.f9e559be456b9e13349ca99b0bp-104L,
+
+/* x = 4.37500000000000000000000000000000000e-01 3ffdc000000000000000000000000000 */
+/* cos(x) = 0.e7e367d2956cfb16b6aa11e541 9cd0057f5c132a6455bf064297 e6a76fe2b72bb630d6d50ff */
+ 0x0.e7e367d2956cfb16b6aa11e541p0L,
+ 0x0.9cd0057f5c132a6455bf064297p-104L,
+/* sin(x) = 0.6c760c14c8585a51dbd34660ae 6c52ac7036a0b40887a0b63724 f8b4414348c3063a637f457 */
+ 0x0.6c760c14c8585a51dbd34660aep0L,
+ 0x0.6c52ac7036a0b40887a0b63724p-104L,
+
+/* x = 4.45312500000000000000000000000000000e-01 3ffdc800000000000000000000000000 */
+/* cos(x) = 0.e708ac84d4172a3e2737662213 429e14021074d7e702e77d72a8 f1101a7e70410df8273e9aa */
+ 0x0.e708ac84d4172a3e2737662213p0L,
+ 0x0.429e14021074d7e702e77d72a8p-104L,
+/* sin(x) = 0.6e44f8c36eb10a1c752d093c00 f4d47ba446ac4c215d26b03164 42f168459e677d06e7249e3 */
+ 0x0.6e44f8c36eb10a1c752d093c00p0L,
+ 0x0.f4d47ba446ac4c215d26b03164p-104L,
+
+/* x = 4.53125000000000000000000000000000000e-01 3ffdd000000000000000000000000000 */
+/* cos(x) = 0.e62a551594b970a770b15d41d4 c0e483e47aca550111df6966f9 e7ac3a94ae49e6a71eb031e */
+ 0x0.e62a551594b970a770b15d41d4p0L,
+ 0x0.c0e483e47aca550111df6966f9p-104L,
+/* sin(x) = 0.70122c5ec5028c8cff33abf4fd 340ccc382e038379b09cf04f9a 52692b10b72586060cbb001 */
+ 0x0.70122c5ec5028c8cff33abf4fdp0L,
+ 0x0.340ccc382e038379b09cf04f9ap-104L,
+
+/* x = 4.60937500000000000000000000000000000e-01 3ffdd800000000000000000000000000 */
+/* cos(x) = 0.e54864fe33e8575cabf5bd0e5c f1b1a8bc7c0d5f61702450fa6b 6539735820dd2603ae355d5 */
+ 0x0.e54864fe33e8575cabf5bd0e5cp0L,
+ 0x0.f1b1a8bc7c0d5f61702450fa6bp-104L,
+/* sin(x) = 0.71dd9fb1ff4677853acb970a9f 6729c6e3aac247b1c57cea66c7 7413f1f98e8b9e98e49d851 */
+ 0x0.71dd9fb1ff4677853acb970a9fp0L,
+ 0x0.6729c6e3aac247b1c57cea66c7p-104L,
+
+/* x = 4.68750000000000000000000000000000000e-01 3ffde000000000000000000000000000 */
+/* cos(x) = 0.e462dfc670d421ab3d1a159012 28f146a0547011202bf5ab01f9 14431859aef577966bc4fa4 */
+ 0x0.e462dfc670d421ab3d1a159012p0L,
+ 0x0.28f146a0547011202bf5ab01f9p-104L,
+/* sin(x) = 0.73a74b8f52947b681baf6928eb 3fb021769bf4779bad0e3aa9b1 cdb75ec60aad9fc63ff19d5 */
+ 0x0.73a74b8f52947b681baf6928ebp0L,
+ 0x0.3fb021769bf4779bad0e3aa9b1p-104L,
+
+/* x = 4.76562500000000000000000000000000000e-01 3ffde800000000000000000000000000 */
+/* cos(x) = 0.e379c9045f29d517c4808aa497 c2057b2b3d109e76c0dc302d4d 0698b36e3f0bdbf33d8e952 */
+ 0x0.e379c9045f29d517c4808aa497p0L,
+ 0x0.c2057b2b3d109e76c0dc302d4dp-104L,
+/* sin(x) = 0.756f28d011d98528a44a75fc29 c779bd734ecdfb582fdb74b68a 4c4c4be54cfd0b2d3ad292f */
+ 0x0.756f28d011d98528a44a75fc29p0L,
+ 0x0.c779bd734ecdfb582fdb74b68ap-104L,
+
+/* x = 4.84375000000000000000000000000000000e-01 3ffdf000000000000000000000000000 */
+/* cos(x) = 0.e28d245c58baef72225e232abc 003c4366acd9eb4fc2808c2ab7 fe7676cf512ac7f945ae5fb */
+ 0x0.e28d245c58baef72225e232abcp0L,
+ 0x0.003c4366acd9eb4fc2808c2ab7p-104L,
+/* sin(x) = 0.77353054ca72690d4c6e171fd9 9e6b39fa8e1ede5f052fd29645 34c75340970a3a9cd3c5c32 */
+ 0x0.77353054ca72690d4c6e171fd9p0L,
+ 0x0.9e6b39fa8e1ede5f052fd29645p-104L,
+
+/* x = 4.92187500000000000000000000000000000e-01 3ffdf800000000000000000000000000 */
+/* cos(x) = 0.e19cf580eeec046aa1422fa748 07ecefb2a1911c94e7b5f20a00 f70022d940193691e5bd790 */
+ 0x0.e19cf580eeec046aa1422fa748p0L,
+ 0x0.07ecefb2a1911c94e7b5f20a00p-104L,
+/* sin(x) = 0.78f95b0560a9a3bd6df7bd981d c38c61224d08bc20631ea932e6 05e53b579e9e0767dfcbbcb */
+ 0x0.78f95b0560a9a3bd6df7bd981dp0L,
+ 0x0.c38c61224d08bc20631ea932e6p-104L,
+
+/* x = 5.00000000000000000000000000000000000e-01 3ffe0000000000000000000000000000 */
+/* cos(x) = 0.e0a94032dbea7cedbddd9da2fa fad98556566b3a89f43eabd723 50af3e8b19e801204d8fe2e */
+ 0x0.e0a94032dbea7cedbddd9da2fap0L,
+ 0x0.fad98556566b3a89f43eabd723p-104L,
+/* sin(x) = 0.7abba1d12c17bfa1d92f0d93f6 0ded9992f45b4fcaf13cd58b30 3693d2a0db47db35ae8a3a9 */
+ 0x0.7abba1d12c17bfa1d92f0d93f6p0L,
+ 0x0.0ded9992f45b4fcaf13cd58b30p-104L,
+
+/* x = 5.07812500000000000000000000000000000e-01 3ffe0400000000000000000000000000 */
+/* cos(x) = 0.dfb20840f3a9b36f7ae2c51534 2890b5ec583b8366cc2b55029e 95094d31112383f2553498b */
+ 0x0.dfb20840f3a9b36f7ae2c51534p0L,
+ 0x0.2890b5ec583b8366cc2b55029ep-104L,
+/* sin(x) = 0.7c7bfdaf13e5ed17212f8a7525 bfb113aba6c0741b5362bb8d59 282a850b63716bca0c910f0 */
+ 0x0.7c7bfdaf13e5ed17212f8a7525p0L,
+ 0x0.bfb113aba6c0741b5362bb8d59p-104L,
+
+/* x = 5.15625000000000000000000000000000000e-01 3ffe0800000000000000000000000000 */
+/* cos(x) = 0.deb7518814a7a931bbcc88c109 cd41c50bf8bb48f20ae8c36628 d1d3d57574f7dc58f27d91c */
+ 0x0.deb7518814a7a931bbcc88c109p0L,
+ 0x0.cd41c50bf8bb48f20ae8c36628p-104L,
+/* sin(x) = 0.7e3a679daaf25c676542bcb402 8d0964172961c921823a4ef0c3 a9070d886dbd073f6283699 */
+ 0x0.7e3a679daaf25c676542bcb402p0L,
+ 0x0.8d0964172961c921823a4ef0c3p-104L,
+
+/* x = 5.23437500000000000000000000000000000e-01 3ffe0c00000000000000000000000000 */
+/* cos(x) = 0.ddb91ff318799172bd2452d0a3 889f5169c64a0094bcf0b8aa7d cf0d7640a2eba68955a80be */
+ 0x0.ddb91ff318799172bd2452d0a3p0L,
+ 0x0.889f5169c64a0094bcf0b8aa7dp-104L,
+/* sin(x) = 0.7ff6d8a34bd5e8fa54c97482db 5159df1f24e8038419c0b448b9 eea8939b5d4dfcf40900257 */
+ 0x0.7ff6d8a34bd5e8fa54c97482dbp0L,
+ 0x0.5159df1f24e8038419c0b448b9p-104L,
+
+/* x = 5.31250000000000000000000000000000000e-01 3ffe1000000000000000000000000000 */
+/* cos(x) = 0.dcb7777ac420705168f31e3eb7 80ce9c939ecada62843b54522f 5407eb7f21e556059fcd734 */
+ 0x0.dcb7777ac420705168f31e3eb7p0L,
+ 0x0.80ce9c939ecada62843b54522fp-104L,
+/* sin(x) = 0.81b149ce34caa5a4e650f8d09f d4d6aa74206c32ca951a93074c 83b2d294d25dbb0f7fdfad2 */
+ 0x0.81b149ce34caa5a4e650f8d09fp0L,
+ 0x0.d4d6aa74206c32ca951a93074cp-104L,
+
+/* x = 5.39062500000000000000000000000000000e-01 3ffe1400000000000000000000000000 */
+/* cos(x) = 0.dbb25c25b8260c14f6e7bc98ec 991b70c65335198b0ab628bad2 0cc7b229d4dd62183cfa055 */
+ 0x0.dbb25c25b8260c14f6e7bc98ecp0L,
+ 0x0.991b70c65335198b0ab628bad2p-104L,
+/* sin(x) = 0.8369b434a372da7eb5c8a71fe3 6ce1e0b2b493f6f5cb2e38bcae c2a556b3678c401940d1c3c */
+ 0x0.8369b434a372da7eb5c8a71fe3p0L,
+ 0x0.6ce1e0b2b493f6f5cb2e38bcaep-104L,
+
+/* x = 5.46875000000000000000000000000000000e-01 3ffe1800000000000000000000000000 */
+/* cos(x) = 0.daa9d20860827063fde51c09e8 55e9932e1b17143e7244fd267a 899d41ae1f3bc6a0ec42e27 */
+ 0x0.daa9d20860827063fde51c09e8p0L,
+ 0x0.55e9932e1b17143e7244fd267ap-104L,
+/* sin(x) = 0.852010f4f0800521378bd8dd61 4753d080c2e9e0775ffc609947 b9132f5357404f464f06a58 */
+ 0x0.852010f4f0800521378bd8dd61p0L,
+ 0x0.4753d080c2e9e0775ffc609947p-104L,
+
+/* x = 5.54687500000000000000000000000000000e-01 3ffe1c00000000000000000000000000 */
+/* cos(x) = 0.d99ddd44e44a43d4d4a3a3ed95 204106fd54d78e8c7684545c0d a0b7c2c72be7a89b7c182ad */
+ 0x0.d99ddd44e44a43d4d4a3a3ed95p0L,
+ 0x0.204106fd54d78e8c7684545c0dp-104L,
+/* sin(x) = 0.86d45935ab396cb4e421e822de e54f3562dfcefeaa782184c234 01d231f5ad981a1cc195b18 */
+ 0x0.86d45935ab396cb4e421e822dep0L,
+ 0x0.e54f3562dfcefeaa782184c234p-104L,
+
+/* x = 5.62500000000000000000000000000000000e-01 3ffe2000000000000000000000000000 */
+/* cos(x) = 0.d88e820b1526311dd561efbc0c 1a9a5375eb26f65d246c5744b1 3ca26a7e0fd42556da843c8 */
+ 0x0.d88e820b1526311dd561efbc0cp0L,
+ 0x0.1a9a5375eb26f65d246c5744b1p-104L,
+/* sin(x) = 0.88868625b4e1dbb23133101330 22527200c143a5cb16637cb7da f8ade82459ff2e98511f40f */
+ 0x0.88868625b4e1dbb23133101330p0L,
+ 0x0.22527200c143a5cb16637cb7dap-104L,
+
+/* x = 5.70312500000000000000000000000000000e-01 3ffe2400000000000000000000000000 */
+/* cos(x) = 0.d77bc4985e93a607c9d868b906 bbc6bbe3a04258814acb035846 8b826fc91bd4d814827f65e */
+ 0x0.d77bc4985e93a607c9d868b906p0L,
+ 0x0.bbc6bbe3a04258814acb035846p-104L,
+/* sin(x) = 0.8a3690fc5bfc11bf9535e2739a 8512f448a41251514bbed7fc18 d530f9b4650fcbb2861b0aa */
+ 0x0.8a3690fc5bfc11bf9535e2739ap0L,
+ 0x0.8512f448a41251514bbed7fc18p-104L,
+
+/* x = 5.78125000000000000000000000000000000e-01 3ffe2800000000000000000000000000 */
+/* cos(x) = 0.d665a937b4ef2b1f6d51bad6d9 88a4419c1d7051faf31a9efa15 1d7631117efac03713f950a */
+ 0x0.d665a937b4ef2b1f6d51bad6d9p0L,
+ 0x0.88a4419c1d7051faf31a9efa15p-104L,
+/* sin(x) = 0.8be472f9776d809af2b8817124 3d63d66dfceeeb739cc894e023 fbc165a0e3f26ff729c5d57 */
+ 0x0.8be472f9776d809af2b8817124p0L,
+ 0x0.3d63d66dfceeeb739cc894e023p-104L,
+
+/* x = 5.85937500000000000000000000000000000e-01 3ffe2c00000000000000000000000000 */
+/* cos(x) = 0.d54c3441844897fc8f853f0655 f1ba695eba9fbfd7439dbb1171 d862d9d9146ca5136f825ac */
+ 0x0.d54c3441844897fc8f853f0655p0L,
+ 0x0.f1ba695eba9fbfd7439dbb1171p-104L,
+/* sin(x) = 0.8d902565817ee7839bce3cd128 060119492cd36d42d82ada30d7 f8bde91324808377ddbf5d4 */
+ 0x0.8d902565817ee7839bce3cd128p0L,
+ 0x0.060119492cd36d42d82ada30d7p-104L,
+
+/* x = 5.93750000000000000000000000000000000e-01 3ffe3000000000000000000000000000 */
+/* cos(x) = 0.d42f6a1b9f0168cdf031c2f63c 8d9304d86f8d34cb1d5fccb68c a0f2241427fc18d1fd5bbdf */
+ 0x0.d42f6a1b9f0168cdf031c2f63cp0L,
+ 0x0.8d9304d86f8d34cb1d5fccb68cp-104L,
+/* sin(x) = 0.8f39a191b2ba6122a3fa4f41d5 a3ffd421417d46f19a22230a14 f7fcc8fce5c75b4b28b29d1 */
+ 0x0.8f39a191b2ba6122a3fa4f41d5p0L,
+ 0x0.a3ffd421417d46f19a22230a14p-104L,
+
+/* x = 6.01562500000000000000000000000000000e-01 3ffe3400000000000000000000000000 */
+/* cos(x) = 0.d30f4f392c357ab0661c5fa8a7 d9b26627846fef214b1d19a223 79ff9eddba087cf410eb097 */
+ 0x0.d30f4f392c357ab0661c5fa8a7p0L,
+ 0x0.d9b26627846fef214b1d19a223p-104L,
+/* sin(x) = 0.90e0e0d81ca678796cc92c8ea8 c2815bc72ca78abe571bfa8576 aacc571e096a33237e0e830 */
+ 0x0.90e0e0d81ca678796cc92c8ea8p0L,
+ 0x0.c2815bc72ca78abe571bfa8576p-104L,
+
+/* x = 6.09375000000000000000000000000000000e-01 3ffe3800000000000000000000000000 */
+/* cos(x) = 0.d1ebe81a95ee752e48a26bcd32 d6e922d7eb44b8ad2232f69307 95e84b56317269b9dd1dfa6 */
+ 0x0.d1ebe81a95ee752e48a26bcd32p0L,
+ 0x0.d6e922d7eb44b8ad2232f69307p-104L,
+/* sin(x) = 0.9285dc9bc45dd9ea3d02457bcc e59c4175aab6ff7929a8d28719 5525fdace200dba032874fb */
+ 0x0.9285dc9bc45dd9ea3d02457bccp0L,
+ 0x0.e59c4175aab6ff7929a8d28719p-104L,
+
+/* x = 6.17187500000000000000000000000000000e-01 3ffe3c00000000000000000000000000 */
+/* cos(x) = 0.d0c5394d772228195e25736c03 574707de0af1ca344b13bd3914 bfe27518e9e426f5deff1e1 */
+ 0x0.d0c5394d772228195e25736c03p0L,
+ 0x0.574707de0af1ca344b13bd3914p-104L,
+/* sin(x) = 0.94288e48bd0335fc41c4cbd292 0497a8f5d1d8185c99fa0081f9 0c27e2a53ffdd208a0dbe69 */
+ 0x0.94288e48bd0335fc41c4cbd292p0L,
+ 0x0.0497a8f5d1d8185c99fa0081f9p-104L,
+
+/* x = 6.25000000000000000000000000000000000e-01 3ffe4000000000000000000000000000 */
+/* cos(x) = 0.cf9b476c897c25c5bfe750dd3f 308eaf7bcc1ed00179a256870f 4200445043dcdb1974b5878 */
+ 0x0.cf9b476c897c25c5bfe750dd3fp0L,
+ 0x0.308eaf7bcc1ed00179a256870fp-104L,
+/* sin(x) = 0.95c8ef544210ec0b91c49bd2aa 09e8515fa61a156ebb10f5f8c2 32a6445b61ebf3c2ec268f9 */
+ 0x0.95c8ef544210ec0b91c49bd2aap0L,
+ 0x0.09e8515fa61a156ebb10f5f8c2p-104L,
+
+/* x = 6.32812500000000000000000000000000000e-01 3ffe4400000000000000000000000000 */
+/* cos(x) = 0.ce6e171f92f2e27f32225327ec 440ddaefae248413efc0e58cee e1ae369aabe73f88c87ed1a */
+ 0x0.ce6e171f92f2e27f32225327ecp0L,
+ 0x0.440ddaefae248413efc0e58ceep-104L,
+/* sin(x) = 0.9766f93cd18413a6aafc1cfc6f c28abb6817bf94ce349901ae3f 48c3215d3eb60acc5f78903 */
+ 0x0.9766f93cd18413a6aafc1cfc6fp0L,
+ 0x0.c28abb6817bf94ce349901ae3fp-104L,
+
+/* x = 6.40625000000000000000000000000000000e-01 3ffe4800000000000000000000000000 */
+/* cos(x) = 0.cd3dad1b5328a2e459f993f4f5 108819faccbc4eeba9604e81c7 adad51cc8a2561631a06826 */
+ 0x0.cd3dad1b5328a2e459f993f4f5p0L,
+ 0x0.108819faccbc4eeba9604e81c7p-104L,
+/* sin(x) = 0.9902a58a45e27bed68412b426b 675ed503f54d14c8172e0d373f 42cadf04daf67319a7f94be */
+ 0x0.9902a58a45e27bed68412b426bp0L,
+ 0x0.675ed503f54d14c8172e0d373fp-104L,
+
+/* x = 6.48437500000000000000000000000000000e-01 3ffe4c00000000000000000000000000 */
+/* cos(x) = 0.cc0a0e21709883a3ff00911e11 a07ee3bd7ea2b04e081be99be0 264791170761ae64b8b744a */
+ 0x0.cc0a0e21709883a3ff00911e11p0L,
+ 0x0.a07ee3bd7ea2b04e081be99be0p-104L,
+/* sin(x) = 0.9a9bedcdf01b38d993f3d78207 81de292033ead73b89e28f3931 3dbe3a6e463f845b5fa8490 */
+ 0x0.9a9bedcdf01b38d993f3d78207p0L,
+ 0x0.81de292033ead73b89e28f3931p-104L,
+
+/* x = 6.56250000000000000000000000000000000e-01 3ffe5000000000000000000000000000 */
+/* cos(x) = 0.cad33f00658fe5e8204bbc0f3a 66a0e6a773f87987a780b243d7 be83b3db1448ca0e0e62787 */
+ 0x0.cad33f00658fe5e8204bbc0f3ap0L,
+ 0x0.66a0e6a773f87987a780b243d7p-104L,
+/* sin(x) = 0.9c32cba2b14156ef05256c4f85 7991ca6a547cd7ceb1ac8a8e62 a282bd7b9183648a462bd04 */
+ 0x0.9c32cba2b14156ef05256c4f85p0L,
+ 0x0.7991ca6a547cd7ceb1ac8a8e62p-104L,
+
+/* x = 6.64062500000000000000000000000000000e-01 3ffe5400000000000000000000000000 */
+/* cos(x) = 0.c99944936cf48c8911ff93fe64 b3ddb7981e414bdaf6aae12035 77de44878c62bc3bc9cf7b9 */
+ 0x0.c99944936cf48c8911ff93fe64p0L,
+ 0x0.b3ddb7981e414bdaf6aae12035p-104L,
+/* sin(x) = 0.9dc738ad14204e689ac582d0f8 5826590feece34886cfefe2e08 cf2bb8488d55424dc9d3525 */
+ 0x0.9dc738ad14204e689ac582d0f8p0L,
+ 0x0.5826590feece34886cfefe2e08p-104L,
+
+/* x = 6.71875000000000000000000000000000000e-01 3ffe5800000000000000000000000000 */
+/* cos(x) = 0.c85c23c26ed7b6f014ef546c47 929682122876bfbf157de0aff3 c4247d820c746e32cd4174f */
+ 0x0.c85c23c26ed7b6f014ef546c47p0L,
+ 0x0.929682122876bfbf157de0aff3p-104L,
+/* sin(x) = 0.9f592e9b66a9cf906a3c7aa3c1 0199849040c45ec3f0a7475973 11038101780c5f266059dbf */
+ 0x0.9f592e9b66a9cf906a3c7aa3c1p0L,
+ 0x0.0199849040c45ec3f0a7475973p-104L,
+
+/* x = 6.79687500000000000000000000000000000e-01 3ffe5c00000000000000000000000000 */
+/* cos(x) = 0.c71be181ecd6875ce2da5615a0 3cca207d9adcb9dfb0a1d6c40a 4f0056437f1a59ccddd06ee */
+ 0x0.c71be181ecd6875ce2da5615a0p0L,
+ 0x0.3cca207d9adcb9dfb0a1d6c40ap-104L,
+/* sin(x) = 0.a0e8a725d33c828c11fa50fd9e 9a15ffecfad43f3e534358076b 9b0f6865694842b1e8c67dc */
+ 0x0.a0e8a725d33c828c11fa50fd9ep0L,
+ 0x0.9a15ffecfad43f3e534358076bp-104L,
+
+/* x = 6.87500000000000000000000000000000000e-01 3ffe6000000000000000000000000000 */
+/* cos(x) = 0.c5d882d2ee48030c7c07d28e98 1e34804f82ed4cf93655d23653 89b716de6ad44676a1cc5da */
+ 0x0.c5d882d2ee48030c7c07d28e98p0L,
+ 0x0.1e34804f82ed4cf93655d23653p-104L,
+/* sin(x) = 0.a2759c0e79c35582527c32b55f 5405c182c66160cb1d9eb7bb0b 7cdf4ad66f317bda4332914 */
+ 0x0.a2759c0e79c35582527c32b55fp0L,
+ 0x0.5405c182c66160cb1d9eb7bb0bp-104L,
+
+/* x = 6.95312500000000000000000000000000000e-01 3ffe6400000000000000000000000000 */
+/* cos(x) = 0.c4920cc2ec38fb891b38827db0 8884fc66371ac4c2052ca8885b 981bbcfd3bb7b093ee31515 */
+ 0x0.c4920cc2ec38fb891b38827db0p0L,
+ 0x0.8884fc66371ac4c2052ca8885bp-104L,
+/* sin(x) = 0.a400072188acf49cd6b173825e 038346f105e1301afe642bcc36 4cea455e21e506e3e927ed8 */
+ 0x0.a400072188acf49cd6b173825ep0L,
+ 0x0.038346f105e1301afe642bcc36p-104L,
+
+/* x = 7.03125000000000000000000000000000000e-01 3ffe6800000000000000000000000000 */
+/* cos(x) = 0.c348846bbd3631338ffe2bfe9d d1381a35b4e9c0c51b4c13fe37 6bad1bf5caacc4542be0aa9 */
+ 0x0.c348846bbd3631338ffe2bfe9dp0L,
+ 0x0.d1381a35b4e9c0c51b4c13fe37p-104L,
+/* sin(x) = 0.a587e23555bb08086d02b9c662 cdd29316c3e9bd08d93793634a 21b1810cce73bdb97a99b9e */
+ 0x0.a587e23555bb08086d02b9c662p0L,
+ 0x0.cdd29316c3e9bd08d93793634ap-104L,
+
+/* x = 7.10937500000000000000000000000000000e-01 3ffe6c00000000000000000000000000 */
+/* cos(x) = 0.c1fbeef380e4ffdd5a613ec872 2f643ffe814ec2343e53adb549 627224fdc9f2a7b77d3d69f */
+ 0x0.c1fbeef380e4ffdd5a613ec872p0L,
+ 0x0.2f643ffe814ec2343e53adb549p-104L,
+/* sin(x) = 0.a70d272a76a8d4b6da0ec90712 bb748b96dabf88c3079246f3db 7eea6e58ead4ed0e2843303 */
+ 0x0.a70d272a76a8d4b6da0ec90712p0L,
+ 0x0.bb748b96dabf88c3079246f3dbp-104L,
+
+/* x = 7.18750000000000000000000000000000000e-01 3ffe7000000000000000000000000000 */
+/* cos(x) = 0.c0ac518c8b6ae710ba37a3eeb9 0cb15aebcb8bed4356fb507a48 a6e97de9aa6d9660116b436 */
+ 0x0.c0ac518c8b6ae710ba37a3eeb9p0L,
+ 0x0.0cb15aebcb8bed4356fb507a48p-104L,
+/* sin(x) = 0.a88fcfebd9a8dd47e2f3c76ef9 e2439920f7e7fbe735f8bcc985 491ec6f12a2d4214f8cfa99 */
+ 0x0.a88fcfebd9a8dd47e2f3c76ef9p0L,
+ 0x0.e2439920f7e7fbe735f8bcc985p-104L,
+
+/* x = 7.26562500000000000000000000000000000e-01 3ffe7400000000000000000000000000 */
+/* cos(x) = 0.bf59b17550a440687596929656 7cf3e3b4e483061877c02811c6 cae85fad5a6c3da58f49292 */
+ 0x0.bf59b17550a440687596929656p0L,
+ 0x0.7cf3e3b4e483061877c02811c6p-104L,
+/* sin(x) = 0.aa0fd66eddb921232c28520d39 11b8a03193b47f187f1471ac21 6fbcd5bb81029294d3a73f1 */
+ 0x0.aa0fd66eddb921232c28520d39p0L,
+ 0x0.11b8a03193b47f187f1471ac21p-104L,
+
+/* x = 7.34375000000000000000000000000000000e-01 3ffe7800000000000000000000000000 */
+/* cos(x) = 0.be0413f84f2a771c614946a88c bf4da1d75a5560243de8f2283f efa0ea4a48468a52d51d8b3 */
+ 0x0.be0413f84f2a771c614946a88cp0L,
+ 0x0.bf4da1d75a5560243de8f2283fp-104L,
+/* sin(x) = 0.ab8d34b36acd987210ed343ec6 5d7e3adc2e7109fce43d55c8d5 7dfdf55b9e01d2cc1f1b9ec */
+ 0x0.ab8d34b36acd987210ed343ec6p0L,
+ 0x0.5d7e3adc2e7109fce43d55c8d5p-104L,
+
+/* x = 7.42187500000000000000000000000000000e-01 3ffe7c00000000000000000000000000 */
+/* cos(x) = 0.bcab7e6bfb2a14a9b122c574a3 76bec98ab14808c64a4e731b34 047e217611013ac99c0f25d */
+ 0x0.bcab7e6bfb2a14a9b122c574a3p0L,
+ 0x0.76bec98ab14808c64a4e731b34p-104L,
+/* sin(x) = 0.ad07e4c409d08c4fa3a9057bb0 ac24b8636e74e76f51e09bd6b2 319707cbd9f5e254643897a */
+ 0x0.ad07e4c409d08c4fa3a9057bb0p0L,
+ 0x0.ac24b8636e74e76f51e09bd6b2p-104L,
+
+/* x = 7.50000000000000000000000000000000000e-01 3ffe8000000000000000000000000000 */
+/* cos(x) = 0.bb4ff632a908f73ec151839cb9 d993b4e0bfb8f20e7e44e6e4ae e845e35575c3106dbe6fd06 */
+ 0x0.bb4ff632a908f73ec151839cb9p0L,
+ 0x0.d993b4e0bfb8f20e7e44e6e4aep-104L,
+/* sin(x) = 0.ae7fe0b5fc786b2d966e1d6af1 40a488476747c2646425fc7533 f532cd044cb10a971a49a6a */
+ 0x0.ae7fe0b5fc786b2d966e1d6af1p0L,
+ 0x0.40a488476747c2646425fc7533p-104L,
+
+/* x = 7.57812500000000000000000000000000000e-01 3ffe8400000000000000000000000000 */
+/* cos(x) = 0.b9f180ba77dd0751628e135a95 08299012230f14becacdd14c3f 8862d122de5b56d55b53360 */
+ 0x0.b9f180ba77dd0751628e135a95p0L,
+ 0x0.08299012230f14becacdd14c3fp-104L,
+/* sin(x) = 0.aff522a954f2ba16d9defdc416 e33f5e9a5dfd5a6c228e0abc4d 521327ff6e2517a7b3851dd */
+ 0x0.aff522a954f2ba16d9defdc416p0L,
+ 0x0.e33f5e9a5dfd5a6c228e0abc4dp-104L,
+
+/* x = 7.65625000000000000000000000000000000e-01 3ffe8800000000000000000000000000 */
+/* cos(x) = 0.b890237d3bb3c284b614a05390 16bfa1053730bbdf940fa895e1 85f8e58884d3dda15e63371 */
+ 0x0.b890237d3bb3c284b614a05390p0L,
+ 0x0.16bfa1053730bbdf940fa895e1p-104L,
+/* sin(x) = 0.b167a4c90d63c4244cf5493b7c c23bd3c3c1225e078baa0c53d6 d400b926281f537a1a260e6 */
+ 0x0.b167a4c90d63c4244cf5493b7cp0L,
+ 0x0.c23bd3c3c1225e078baa0c53d6p-104L,
+
+/* x = 7.73437500000000000000000000000000000e-01 3ffe8c00000000000000000000000000 */
+/* cos(x) = 0.b72be40067aaf2c050dbdb7a14 c3d7d4f203f6b3f0224a4afe55 d6ec8e92b508fd5c5984b3b */
+ 0x0.b72be40067aaf2c050dbdb7a14p0L,
+ 0x0.c3d7d4f203f6b3f0224a4afe55p-104L,
+/* sin(x) = 0.b2d7614b1f3aaa24df2d6e20a7 7e1ca3e6d838c03e29c1bcb026 e6733324815fadc9eb89674 */
+ 0x0.b2d7614b1f3aaa24df2d6e20a7p0L,
+ 0x0.7e1ca3e6d838c03e29c1bcb026p-104L,
+
+/* x = 7.81250000000000000000000000000000000e-01 3ffe9000000000000000000000000000 */
+/* cos(x) = 0.b5c4c7d4f7dae915ac786ccf4b 1a498d3e73b6e5e74fe7519d9c 53ee6d6b90e881bddfc33e1 */
+ 0x0.b5c4c7d4f7dae915ac786ccf4bp0L,
+ 0x0.1a498d3e73b6e5e74fe7519d9cp-104L,
+/* sin(x) = 0.b44452709a5975290591376543 4a59d111f0433eb2b133f7d103 207e2aeb4aae111ddc385b3 */
+ 0x0.b44452709a5975290591376543p0L,
+ 0x0.4a59d111f0433eb2b133f7d103p-104L,
+
+/* x = 7.89062500000000000000000000000000000e-01 3ffe9400000000000000000000000000 */
+/* cos(x) = 0.b45ad4975b1294cadca4cf40ec 8f22a68cd14b175835239a37e6 3acb85e8e9505215df18140 */
+ 0x0.b45ad4975b1294cadca4cf40ecp0L,
+ 0x0.8f22a68cd14b175835239a37e6p-104L,
+/* sin(x) = 0.b5ae7285bc10cf515753847e8f 8b7a30e0a580d929d770103509 880680f7b8b0e8ad23b65d8 */
+ 0x0.b5ae7285bc10cf515753847e8fp0L,
+ 0x0.8b7a30e0a580d929d770103509p-104L
+};
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/test-canonical-ldbl-128ibm.c b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/test-canonical-ldbl-128ibm.c
new file mode 100644
index 0000000000..75735db18e
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/test-canonical-ldbl-128ibm.c
@@ -0,0 +1,230 @@
+/* Test iscanonical and canonicalizel for ldbl-128ibm.
+ Copyright (C) 2016-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <float.h>
+#include <math.h>
+#include <math_ldbl.h>
+#include <stdbool.h>
+#include <stdio.h>
+
+struct test
+{
+ double hi, lo;
+ bool canonical;
+};
+
+static const struct test tests[] =
+ {
+ { __builtin_nan (""), 0.0, true },
+ { __builtin_nan (""), DBL_MAX, true },
+ { __builtin_nan (""), __builtin_inf (), true },
+ { __builtin_nan (""), __builtin_nan (""), true },
+ { __builtin_nan (""), __builtin_nans (""), true },
+ { __builtin_nans (""), 0.0, true },
+ { __builtin_nans (""), DBL_MAX, true },
+ { __builtin_nans (""), __builtin_inf (), true },
+ { __builtin_nans (""), __builtin_nan (""), true },
+ { __builtin_nans (""), __builtin_nans (""), true },
+ { __builtin_inf (), 0.0, true },
+ { __builtin_inf (), -0.0, true },
+ { -__builtin_inf (), 0.0, true },
+ { -__builtin_inf (), -0.0, true },
+ { __builtin_inf (), DBL_TRUE_MIN, false },
+ { __builtin_inf (), -DBL_TRUE_MIN, false },
+ { -__builtin_inf (), DBL_TRUE_MIN, false },
+ { -__builtin_inf (), -DBL_TRUE_MIN, false },
+ { __builtin_inf (), DBL_MIN, false },
+ { __builtin_inf (), -DBL_MIN, false },
+ { -__builtin_inf (), DBL_MIN, false },
+ { -__builtin_inf (), -DBL_MIN, false },
+ { __builtin_inf (), __builtin_inf (), false },
+ { __builtin_inf (), -__builtin_inf (), false },
+ { -__builtin_inf (), __builtin_inf (), false },
+ { -__builtin_inf (), -__builtin_inf (), false },
+ { __builtin_inf (), __builtin_nan (""), false },
+ { __builtin_inf (), -__builtin_nan (""), false },
+ { -__builtin_inf (), __builtin_nan (""), false },
+ { -__builtin_inf (), -__builtin_nan (""), false },
+ { 0.0, 0.0, true },
+ { 0.0, -0.0, true },
+ { -0.0, 0.0, true },
+ { -0.0, -0.0, true },
+ { 0.0, DBL_TRUE_MIN, false },
+ { 0.0, -DBL_TRUE_MIN, false },
+ { -0.0, DBL_TRUE_MIN, false },
+ { -0.0, -DBL_TRUE_MIN, false },
+ { 0.0, DBL_MAX, false },
+ { 0.0, -DBL_MAX, false },
+ { -0.0, DBL_MAX, false },
+ { -0.0, -DBL_MAX, false },
+ { 0.0, __builtin_inf (), false },
+ { 0.0, -__builtin_inf (), false },
+ { -0.0, __builtin_inf (), false },
+ { -0.0, -__builtin_inf (), false },
+ { 0.0, __builtin_nan (""), false },
+ { 0.0, -__builtin_nan (""), false },
+ { -0.0, __builtin_nan (""), false },
+ { -0.0, -__builtin_nan (""), false },
+ { 1.0, 0.0, true },
+ { 1.0, -0.0, true },
+ { -1.0, 0.0, true },
+ { -1.0, -0.0, true },
+ { 1.0, DBL_TRUE_MIN, true },
+ { 1.0, -DBL_TRUE_MIN, true },
+ { -1.0, DBL_TRUE_MIN, true },
+ { -1.0, -DBL_TRUE_MIN, true },
+ { 1.0, DBL_MAX, false },
+ { 1.0, -DBL_MAX, false },
+ { -1.0, DBL_MAX, false },
+ { -1.0, -DBL_MAX, false },
+ { 1.0, __builtin_inf (), false },
+ { 1.0, -__builtin_inf (), false },
+ { -1.0, __builtin_inf (), false },
+ { -1.0, -__builtin_inf (), false },
+ { 1.0, __builtin_nan (""), false },
+ { 1.0, -__builtin_nan (""), false },
+ { -1.0, __builtin_nan (""), false },
+ { -1.0, -__builtin_nan (""), false },
+ { 0x1p1023, 0x1.1p969, true },
+ { 0x1p1023, -0x1.1p969, true },
+ { -0x1p1023, 0x1.1p969, true },
+ { -0x1p1023, -0x1.1p969, true },
+ { 0x1p1023, 0x1.1p970, false },
+ { 0x1p1023, -0x1.1p970, false },
+ { -0x1p1023, 0x1.1p970, false },
+ { -0x1p1023, -0x1.1p970, false },
+ { 0x1p1023, 0x1p970, true },
+ { 0x1p1023, -0x1p970, true },
+ { -0x1p1023, 0x1p970, true },
+ { -0x1p1023, -0x1p970, true },
+ { 0x1.0000000000001p1023, 0x1p970, false },
+ { 0x1.0000000000001p1023, -0x1p970, false },
+ { -0x1.0000000000001p1023, 0x1p970, false },
+ { -0x1.0000000000001p1023, -0x1p970, false },
+ { 0x1p-969, 0x1.1p-1023, true },
+ { 0x1p-969, -0x1.1p-1023, true },
+ { -0x1p-969, 0x1.1p-1023, true },
+ { -0x1p-969, -0x1.1p-1023, true },
+ { 0x1p-969, 0x1.1p-1022, false },
+ { 0x1p-969, -0x1.1p-1022, false },
+ { -0x1p-969, 0x1.1p-1022, false },
+ { -0x1p-969, -0x1.1p-1022, false },
+ { 0x1p-969, 0x1p-1022, true },
+ { 0x1p-969, -0x1p-1022, true },
+ { -0x1p-969, 0x1p-1022, true },
+ { -0x1p-969, -0x1p-1022, true },
+ { 0x1.0000000000001p-969, 0x1p-1022, false },
+ { 0x1.0000000000001p-969, -0x1p-1022, false },
+ { -0x1.0000000000001p-969, 0x1p-1022, false },
+ { -0x1.0000000000001p-969, -0x1p-1022, false },
+ { 0x1p-970, 0x1.1p-1024, true },
+ { 0x1p-970, -0x1.1p-1024, true },
+ { -0x1p-970, 0x1.1p-1024, true },
+ { -0x1p-970, -0x1.1p-1024, true },
+ { 0x1p-970, 0x1.1p-1023, false },
+ { 0x1p-970, -0x1.1p-1023, false },
+ { -0x1p-970, 0x1.1p-1023, false },
+ { -0x1p-970, -0x1.1p-1023, false },
+ { 0x1p-970, 0x1p-1023, true },
+ { 0x1p-970, -0x1p-1023, true },
+ { -0x1p-970, 0x1p-1023, true },
+ { -0x1p-970, -0x1p-1023, true },
+ { 0x1.0000000000001p-970, 0x1p-1023, false },
+ { 0x1.0000000000001p-970, -0x1p-1023, false },
+ { -0x1.0000000000001p-970, 0x1p-1023, false },
+ { -0x1.0000000000001p-970, -0x1p-1023, false },
+ { 0x1p-1000, 0x1.1p-1054, true },
+ { 0x1p-1000, -0x1.1p-1054, true },
+ { -0x1p-1000, 0x1.1p-1054, true },
+ { -0x1p-1000, -0x1.1p-1054, true },
+ { 0x1p-1000, 0x1.1p-1053, false },
+ { 0x1p-1000, -0x1.1p-1053, false },
+ { -0x1p-1000, 0x1.1p-1053, false },
+ { -0x1p-1000, -0x1.1p-1053, false },
+ { 0x1p-1000, 0x1p-1053, true },
+ { 0x1p-1000, -0x1p-1053, true },
+ { -0x1p-1000, 0x1p-1053, true },
+ { -0x1p-1000, -0x1p-1053, true },
+ { 0x1.0000000000001p-1000, 0x1p-1053, false },
+ { 0x1.0000000000001p-1000, -0x1p-1053, false },
+ { -0x1.0000000000001p-1000, 0x1p-1053, false },
+ { -0x1.0000000000001p-1000, -0x1p-1053, false },
+ { 0x1p-1021, 0x1p-1074, true },
+ { 0x1p-1021, -0x1p-1074, true },
+ { -0x1p-1021, 0x1p-1074, true },
+ { -0x1p-1021, -0x1p-1074, true },
+ { 0x1.0000000000001p-1021, 0x1p-1074, false },
+ { 0x1.0000000000001p-1021, -0x1p-1074, false },
+ { -0x1.0000000000001p-1021, 0x1p-1074, false },
+ { -0x1.0000000000001p-1021, -0x1p-1074, false },
+ { 0x1p-1022, 0x1p-1074, false },
+ { 0x1p-1022, -0x1p-1074, false },
+ { -0x1p-1022, 0x1p-1074, false },
+ { -0x1p-1022, -0x1p-1074, false },
+ };
+
+static int
+do_test (void)
+{
+ int result = 0;
+
+ for (size_t i = 0; i < sizeof (tests) / sizeof (tests[0]); i++)
+ {
+ long double ld = ldbl_pack (tests[i].hi, tests[i].lo);
+ bool canonical = iscanonical (ld);
+ if (canonical == tests[i].canonical)
+ {
+ printf ("PASS: iscanonical test %zu\n", i);
+ long double ldc = 12345.0L;
+ bool canonicalize_ret = canonicalizel (&ldc, &ld);
+ if (canonicalize_ret == !canonical)
+ {
+ printf ("PASS: canonicalizel test %zu\n", i);
+ bool canon_ok;
+ if (!canonical)
+ canon_ok = ldc == 12345.0L;
+ else if (isnan (ld))
+ canon_ok = isnan (ldc) && !issignaling (ldc);
+ else
+ canon_ok = ldc == ld;
+ if (canon_ok)
+ printf ("PASS: canonicalized value test %zu\n", i);
+ else
+ {
+ printf ("FAIL: canonicalized value test %zu\n", i);
+ result = 1;
+ }
+ }
+ else
+ {
+ printf ("FAIL: canonicalizel test %zu\n", i);
+ result = 1;
+ }
+ }
+ else
+ {
+ printf ("FAIL: iscanonical test %zu\n", i);
+ result = 1;
+ }
+ }
+
+ return result;
+}
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/test-fmodl-ldbl-128ibm.c b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/test-fmodl-ldbl-128ibm.c
new file mode 100644
index 0000000000..c9bfcfc5a8
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/test-fmodl-ldbl-128ibm.c
@@ -0,0 +1,21 @@
+/* Test for ldbl-128ibm fmodl handling of equal values (bug 19602).
+ Copyright (C) 2016-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#define FUNC fmodl
+#define SETUP
+#include "test-fmodrem-ldbl-128ibm.c"
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/test-fmodrem-ldbl-128ibm.c b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/test-fmodrem-ldbl-128ibm.c
new file mode 100644
index 0000000000..a7cc042a15
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/test-fmodrem-ldbl-128ibm.c
@@ -0,0 +1,84 @@
+/* Test for ldbl-128ibm fmodl etc. handling of equal values.
+ Copyright (C) 2016-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <fenv.h>
+#include <float.h>
+#include <math.h>
+#include <stdio.h>
+
+/* FUNC is defined to be the name of the function to test. */
+#define STRX(x) #x
+#define STR(x) STRX (x)
+#define SFUNC STR (FUNC)
+
+union u
+{
+ long double ld;
+ double d[2];
+};
+
+volatile union u p1 = { .d = { DBL_MIN, 0.0 } };
+volatile union u p2 = { .d = { DBL_MIN, -0.0 } };
+volatile union u m1 = { .d = { -DBL_MIN, 0.0 } };
+volatile union u m2 = { .d = { -DBL_MIN, -0.0 } };
+
+static int
+test_func (const char *s, long double x, long double y, long double expected)
+{
+ volatile long double r;
+ r = FUNC (x, y);
+ if (r != expected || copysignl (1.0, r) != copysignl (1.0, expected))
+ {
+ printf ("FAIL: " SFUNC " (%s)\n", s);
+ return 1;
+ }
+ else
+ {
+ printf ("PASS: " SFUNC " (%s)\n", s);
+ return 0;
+ }
+}
+
+#define TEST_FUNC(a, b, e) test_func (#a ", " #b, a, b, e)
+
+static int
+do_test (void)
+{
+ int result = 0;
+ SETUP;
+ result |= TEST_FUNC (p1.ld, p1.ld, 0.0L);
+ result |= TEST_FUNC (p1.ld, p2.ld, 0.0L);
+ result |= TEST_FUNC (p1.ld, m1.ld, 0.0L);
+ result |= TEST_FUNC (p1.ld, m2.ld, 0.0L);
+ result |= TEST_FUNC (p2.ld, p1.ld, 0.0L);
+ result |= TEST_FUNC (p2.ld, p2.ld, 0.0L);
+ result |= TEST_FUNC (p2.ld, m1.ld, 0.0L);
+ result |= TEST_FUNC (p2.ld, m2.ld, 0.0L);
+ result |= TEST_FUNC (m1.ld, p1.ld, -0.0L);
+ result |= TEST_FUNC (m1.ld, p2.ld, -0.0L);
+ result |= TEST_FUNC (m1.ld, m1.ld, -0.0L);
+ result |= TEST_FUNC (m1.ld, m2.ld, -0.0L);
+ result |= TEST_FUNC (m2.ld, p1.ld, -0.0L);
+ result |= TEST_FUNC (m2.ld, p2.ld, -0.0L);
+ result |= TEST_FUNC (m2.ld, m1.ld, -0.0L);
+ result |= TEST_FUNC (m2.ld, m2.ld, -0.0L);
+ return result;
+}
+
+#define TEST_FUNCTION do_test ()
+#include "../../../test-skeleton.c"
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/test-remainderl-ldbl-128ibm.c b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/test-remainderl-ldbl-128ibm.c
new file mode 100644
index 0000000000..32b18be741
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/test-remainderl-ldbl-128ibm.c
@@ -0,0 +1,21 @@
+/* Test for ldbl-128ibm remainderl handling of equal values (bug 19677).
+ Copyright (C) 2016-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#define FUNC remainderl
+#define SETUP fesetround (FE_DOWNWARD)
+#include "test-fmodrem-ldbl-128ibm.c"
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/test-remquol-ldbl-128ibm.c b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/test-remquol-ldbl-128ibm.c
new file mode 100644
index 0000000000..f0d48420b8
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/test-remquol-ldbl-128ibm.c
@@ -0,0 +1,30 @@
+/* Test for ldbl-128ibm remquol handling of equal values (bug 19677).
+ Copyright (C) 2016-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+
+static long double
+wrap_remquol (long double x, long double y)
+{
+ int quo;
+ return remquol (x, y, &quo);
+}
+
+#define FUNC wrap_remquol
+#define SETUP fesetround (FE_DOWNWARD)
+#include "test-fmodrem-ldbl-128ibm.c"
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/test-totalorderl-ldbl-128ibm.c b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/test-totalorderl-ldbl-128ibm.c
new file mode 100644
index 0000000000..eaada2f848
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/test-totalorderl-ldbl-128ibm.c
@@ -0,0 +1,73 @@
+/* Test totalorderl and totalordermagl for ldbl-128ibm.
+ Copyright (C) 2016-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+#include <math_ldbl.h>
+#include <stdbool.h>
+#include <stdio.h>
+
+struct test
+{
+ double hi, lo1, lo2;
+};
+
+static const struct test tests[] =
+ {
+ { __builtin_nan (""), 1, __builtin_nans ("") },
+ { -__builtin_nan (""), 1, __builtin_nans ("") },
+ { __builtin_nans (""), 1, __builtin_nan ("") },
+ { -__builtin_nans (""), 1, __builtin_nan ("") },
+ { __builtin_inf (), 0.0, -0.0 },
+ { -__builtin_inf (), 0.0, -0.0 },
+ { 1.5, 0.0, -0.0 },
+ };
+
+static int
+do_test (void)
+{
+ int result = 0;
+
+ for (size_t i = 0; i < sizeof (tests) / sizeof (tests[0]); i++)
+ {
+ long double ldx = ldbl_pack (tests[i].hi, tests[i].lo1);
+ long double ldy = ldbl_pack (tests[i].hi, tests[i].lo2);
+ bool to1 = totalorderl (ldx, ldy);
+ bool to2 = totalorderl (ldy, ldx);
+ if (to1 && to2)
+ printf ("PASS: test %zu\n", i);
+ else
+ {
+ printf ("FAIL: test %zu\n", i);
+ result = 1;
+ }
+ to1 = totalordermagl (ldx, ldy);
+ to2 = totalordermagl (ldy, ldx);
+ if (to1 && to2)
+ printf ("PASS: test %zu (totalordermagl)\n", i);
+ else
+ {
+ printf ("FAIL: test %zu (totalordermagl)\n", i);
+ result = 1;
+ }
+ }
+
+ return result;
+}
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/tst-strtold-ldbl-128ibm.c b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/tst-strtold-ldbl-128ibm.c
new file mode 100644
index 0000000000..1181892165
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/tst-strtold-ldbl-128ibm.c
@@ -0,0 +1,85 @@
+/* Test for ldbl-128ibm strtold overflow to infinity (bug 14551).
+ Copyright (C) 2015-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <errno.h>
+#include <fenv.h>
+#include <math.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+static int
+test_strtold_value (const char *s, double exp_hi, double exp_lo, int exp_exc,
+ int exp_errno)
+{
+ int result = 0;
+ union { long double ld; double d[2]; } x;
+ feclearexcept (FE_ALL_EXCEPT);
+ errno = 0;
+ x.ld = strtold (s, NULL);
+ int exc = fetestexcept (FE_ALL_EXCEPT);
+ int new_errno = errno;
+ printf ("strtold (\"%s\") returned (%a, %a), exceptions 0x%x, errno %d\n",
+ s, x.d[0], x.d[1], exc, new_errno);
+ if (x.d[0] == exp_hi)
+ printf ("PASS: strtold (\"%s\") high == %a\n", s, exp_hi);
+ else
+ {
+ printf ("FAIL: strtold (\"%s\") high == %a\n", s, exp_hi);
+ result = 1;
+ }
+ if (x.d[1] == exp_lo)
+ printf ("PASS: strtold (\"%s\") low == %a\n", s, exp_lo);
+ else
+ {
+ printf ("FAIL: strtold (\"%s\") low == %a\n", s, exp_lo);
+ result = 1;
+ }
+ if (exc == exp_exc)
+ printf ("PASS: strtold (\"%s\") exceptions 0x%x\n", s, exp_exc);
+ else
+ {
+ printf ("FAIL: strtold (\"%s\") exceptions 0x%x\n", s, exp_exc);
+ result = 1;
+ }
+ if (new_errno == exp_errno)
+ printf ("PASS: strtold (\"%s\") errno %d\n", s, exp_errno);
+ else
+ {
+ printf ("FAIL: strtold (\"%s\") errno %d\n", s, exp_errno);
+ result = 1;
+ }
+ return result;
+}
+
+static int
+do_test (void)
+{
+ int result = 0;
+ result |= test_strtold_value ("0x1.fffffffffffff8p+1023", INFINITY, 0,
+ FE_OVERFLOW | FE_INEXACT, ERANGE);
+ result |= test_strtold_value ("-0x1.fffffffffffff8p+1023", -INFINITY, 0,
+ FE_OVERFLOW | FE_INEXACT, ERANGE);
+ result |= test_strtold_value ("0x1.ffffffffffffffp+1023", INFINITY, 0,
+ FE_OVERFLOW | FE_INEXACT, ERANGE);
+ result |= test_strtold_value ("-0x1.ffffffffffffffp+1023", -INFINITY, 0,
+ FE_OVERFLOW | FE_INEXACT, ERANGE);
+ return result;
+}
+
+#define TEST_FUNCTION do_test ()
+#include "../../../test-skeleton.c"
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/w_expl_compat.c b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/w_expl_compat.c
new file mode 100644
index 0000000000..c9d44b61dd
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/w_expl_compat.c
@@ -0,0 +1,21 @@
+#include <math.h>
+#include <math_private.h>
+#include <math_ldbl_opt.h>
+
+long double __expl(long double x) /* wrapper exp */
+{
+ long double z;
+ z = __ieee754_expl(x);
+ if (_LIB_VERSION == _IEEE_)
+ return z;
+ if (isfinite(x))
+ {
+ if (!isfinite (z))
+ return __kernel_standard_l(x,x,206); /* exp overflow */
+ else if (z == 0.0L)
+ return __kernel_standard_l(x,x,207); /* exp underflow */
+ }
+ return z;
+}
+hidden_def (__expl)
+long_double_symbol (libm, __expl, expl);
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/x2y2m1l.c b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/x2y2m1l.c
new file mode 100644
index 0000000000..0bdb9a1848
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-128ibm/x2y2m1l.c
@@ -0,0 +1,93 @@
+/* Compute x^2 + y^2 - 1, without large cancellation error.
+ Copyright (C) 2012-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+#include <math_private.h>
+#include <mul_split.h>
+#include <stdlib.h>
+
+/* Calculate X + Y exactly and store the result in *HI + *LO. It is
+ given that |X| >= |Y| and the values are small enough that no
+ overflow occurs. */
+
+static inline void
+add_split (double *hi, double *lo, double x, double y)
+{
+ /* Apply Dekker's algorithm. */
+ *hi = x + y;
+ *lo = (x - *hi) + y;
+}
+
+/* Compare absolute values of floating-point values pointed to by P
+ and Q for qsort. */
+
+static int
+compare (const void *p, const void *q)
+{
+ double pd = fabs (*(const double *) p);
+ double qd = fabs (*(const double *) q);
+ if (pd < qd)
+ return -1;
+ else if (pd == qd)
+ return 0;
+ else
+ return 1;
+}
+
+/* Return X^2 + Y^2 - 1, computed without large cancellation error.
+ It is given that 1 > X >= Y >= epsilon / 2, and that X^2 + Y^2 >=
+ 0.5. */
+
+long double
+__x2y2m1l (long double x, long double y)
+{
+ double vals[13];
+ SET_RESTORE_ROUND (FE_TONEAREST);
+ union ibm_extended_long_double xu, yu;
+ xu.ld = x;
+ yu.ld = y;
+ if (fabs (xu.d[1].d) < 0x1p-500)
+ xu.d[1].d = 0.0;
+ if (fabs (yu.d[1].d) < 0x1p-500)
+ yu.d[1].d = 0.0;
+ mul_split (&vals[1], &vals[0], xu.d[0].d, xu.d[0].d);
+ mul_split (&vals[3], &vals[2], xu.d[0].d, xu.d[1].d);
+ vals[2] *= 2.0;
+ vals[3] *= 2.0;
+ mul_split (&vals[5], &vals[4], xu.d[1].d, xu.d[1].d);
+ mul_split (&vals[7], &vals[6], yu.d[0].d, yu.d[0].d);
+ mul_split (&vals[9], &vals[8], yu.d[0].d, yu.d[1].d);
+ vals[8] *= 2.0;
+ vals[9] *= 2.0;
+ mul_split (&vals[11], &vals[10], yu.d[1].d, yu.d[1].d);
+ vals[12] = -1.0;
+ qsort (vals, 13, sizeof (double), compare);
+ /* Add up the values so that each element of VALS has absolute value
+ at most equal to the last set bit of the next nonzero
+ element. */
+ for (size_t i = 0; i <= 11; i++)
+ {
+ add_split (&vals[i + 1], &vals[i], vals[i + 1], vals[i]);
+ qsort (vals + i + 1, 12 - i, sizeof (double), compare);
+ }
+ /* Now any error from this addition will be small. */
+ long double retval = (long double) vals[12];
+ for (size_t i = 11; i != (size_t) -1; i--)
+ retval += (long double) vals[i];
+ return retval;
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-64-128/e_ilogbl.c b/REORG.TODO/sysdeps/ieee754/ldbl-64-128/e_ilogbl.c
new file mode 100644
index 0000000000..75a38e13ce
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-64-128/e_ilogbl.c
@@ -0,0 +1,2 @@
+#include <math_ldbl_opt.h>
+#include <sysdeps/ieee754/ldbl-128/e_ilogbl.c>
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_asinhl.c b/REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_asinhl.c
new file mode 100644
index 0000000000..4e8a541263
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_asinhl.c
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/ieee754/ldbl-128/s_asinhl.c>
+long_double_symbol (libm, __asinhl, asinhl);
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_atanl.c b/REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_atanl.c
new file mode 100644
index 0000000000..c23d14aade
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_atanl.c
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/ieee754/ldbl-128/s_atanl.c>
+long_double_symbol (libm, __atanl, atanl);
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_cbrtl.c b/REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_cbrtl.c
new file mode 100644
index 0000000000..ace5645277
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_cbrtl.c
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/ieee754/ldbl-128/s_cbrtl.c>
+long_double_symbol (libm, __cbrtl, cbrtl);
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_ceill.c b/REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_ceill.c
new file mode 100644
index 0000000000..a646494f14
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_ceill.c
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/ieee754/ldbl-128/s_ceill.c>
+long_double_symbol (libm, __ceill, ceill);
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_copysignl.c b/REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_copysignl.c
new file mode 100644
index 0000000000..211e7240ac
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_copysignl.c
@@ -0,0 +1,9 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/ieee754/ldbl-128/s_copysignl.c>
+#if IS_IN (libm)
+long_double_symbol (libm, __copysignl, copysignl);
+#else
+long_double_symbol (libc, __copysignl, copysignl);
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_cosl.c b/REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_cosl.c
new file mode 100644
index 0000000000..6a7e2e3162
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_cosl.c
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/ieee754/ldbl-128/s_cosl.c>
+long_double_symbol (libm, __cosl, cosl);
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_erfl.c b/REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_erfl.c
new file mode 100644
index 0000000000..c5f9bb3ac4
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_erfl.c
@@ -0,0 +1,6 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/ieee754/ldbl-128/s_erfl.c>
+long_double_symbol (libm, __erfl, erfl);
+long_double_symbol (libm, __erfcl, erfcl);
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_expm1l.c b/REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_expm1l.c
new file mode 100644
index 0000000000..4fb186127f
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_expm1l.c
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/ieee754/ldbl-128/s_expm1l.c>
+long_double_symbol (libm, __expm1l, expm1l);
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_fabsl.c b/REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_fabsl.c
new file mode 100644
index 0000000000..93d81d98bc
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_fabsl.c
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/ieee754/ldbl-128/s_fabsl.c>
+long_double_symbol (libm, __fabsl, fabsl);
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_finitel.c b/REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_finitel.c
new file mode 100644
index 0000000000..c0862a7485
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_finitel.c
@@ -0,0 +1,17 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#undef hidden_def
+#define hidden_def(x)
+#define __finitel(arg) ___finitel(arg)
+#include <sysdeps/ieee754/ldbl-128/s_finitel.c>
+#undef __finitel
+hidden_ver (___finitel, __finitel)
+_weak_alias (___finitel, ____finitel)
+#if IS_IN (libm)
+long_double_symbol (libm, ____finitel, finitel);
+long_double_symbol (libm, ___finitel, __finitel);
+#else
+long_double_symbol (libc, ____finitel, finitel);
+long_double_symbol (libc, ___finitel, __finitel);
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_floorl.c b/REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_floorl.c
new file mode 100644
index 0000000000..953043035e
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_floorl.c
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/ieee754/ldbl-128/s_floorl.c>
+long_double_symbol (libm, __floorl, floorl);
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_fmal.c b/REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_fmal.c
new file mode 100644
index 0000000000..218aa52b35
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_fmal.c
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/ieee754/ldbl-128/s_fmal.c>
+long_double_symbol (libm, __fmal, fmal);
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_fpclassifyl.c b/REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_fpclassifyl.c
new file mode 100644
index 0000000000..a10b6c3a1a
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_fpclassifyl.c
@@ -0,0 +1,10 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#define __fpclassifyl ___fpclassifyl
+#undef libm_hidden_def
+#define libm_hidden_def(a)
+#include <sysdeps/ieee754/ldbl-128/s_fpclassifyl.c>
+#undef __fpclassifyl
+long_double_symbol (libm, ___fpclassifyl, __fpclassifyl);
+libm_hidden_ver (___fpclassifyl, __fpclassifyl)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_frexpl.c b/REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_frexpl.c
new file mode 100644
index 0000000000..c7b6aaaaee
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_frexpl.c
@@ -0,0 +1,9 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/ieee754/ldbl-128/s_frexpl.c>
+#if IS_IN (libm)
+long_double_symbol (libm, __frexpl, frexpl);
+#else
+long_double_symbol (libc, __frexpl, frexpl);
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_isinfl.c b/REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_isinfl.c
new file mode 100644
index 0000000000..6dab0e9223
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_isinfl.c
@@ -0,0 +1,16 @@
+#include <math_ldbl_opt.h>
+#if !IS_IN (libm)
+# undef weak_alias
+# define weak_alias(n,a)
+# undef hidden_def
+# define hidden_def(x)
+# define __isinfl(arg) ___isinfl(arg)
+#endif
+#include <sysdeps/ieee754/ldbl-128/s_isinfl.c>
+#if !IS_IN (libm)
+# undef __isinfl
+hidden_ver (___isinfl, __isinfl)
+_weak_alias (___isinfl, ____isinfl)
+long_double_symbol (libc, ____isinfl, isinfl);
+long_double_symbol (libc, ___isinfl, __isinfl);
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_isnanl.c b/REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_isnanl.c
new file mode 100644
index 0000000000..ad5ecc5281
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_isnanl.c
@@ -0,0 +1,16 @@
+#include <math_ldbl_opt.h>
+#if !IS_IN (libm)
+# undef weak_alias
+# define weak_alias(n,a)
+# undef hidden_def
+# define hidden_def(x)
+# define __isnanl(arg) ___isnanl(arg)
+#endif
+#include <sysdeps/ieee754/ldbl-128/s_isnanl.c>
+#if !IS_IN (libm)
+# undef __isnanl
+hidden_ver (___isnanl, __isnanl)
+_weak_alias (___isnanl, ____isnanl)
+long_double_symbol (libc, ____isnanl, isnanl);
+long_double_symbol (libc, ___isnanl, __isnanl);
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_llrintl.c b/REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_llrintl.c
new file mode 100644
index 0000000000..1515f3abd7
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_llrintl.c
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/ieee754/ldbl-128/s_llrintl.c>
+long_double_symbol (libm, __llrintl, llrintl);
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_llroundl.c b/REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_llroundl.c
new file mode 100644
index 0000000000..ca35dae491
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_llroundl.c
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/ieee754/ldbl-128/s_llroundl.c>
+long_double_symbol (libm, __llroundl, llroundl);
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_log1pl.c b/REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_log1pl.c
new file mode 100644
index 0000000000..11d56bfe9f
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_log1pl.c
@@ -0,0 +1,2 @@
+#include <math_ldbl_opt.h>
+#include <sysdeps/ieee754/ldbl-128/s_log1pl.c>
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_logbl.c b/REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_logbl.c
new file mode 100644
index 0000000000..8ba8179feb
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_logbl.c
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/ieee754/ldbl-128/s_logbl.c>
+long_double_symbol (libm, __logbl, logbl);
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_lrintl.c b/REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_lrintl.c
new file mode 100644
index 0000000000..56e69c94f9
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_lrintl.c
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/ieee754/ldbl-128/s_lrintl.c>
+long_double_symbol (libm, __lrintl, lrintl);
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_lroundl.c b/REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_lroundl.c
new file mode 100644
index 0000000000..d5429e2384
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_lroundl.c
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/ieee754/ldbl-128/s_lroundl.c>
+long_double_symbol (libm, __lroundl, lroundl);
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_modfl.c b/REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_modfl.c
new file mode 100644
index 0000000000..fa4d3ad82a
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_modfl.c
@@ -0,0 +1,9 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/ieee754/ldbl-128/s_modfl.c>
+#if IS_IN (libm)
+long_double_symbol (libm, __modfl, modfl);
+#else
+long_double_symbol (libc, __modfl, modfl);
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_nearbyintl.c b/REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_nearbyintl.c
new file mode 100644
index 0000000000..a6d0a313fd
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_nearbyintl.c
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/ieee754/ldbl-128/s_nearbyintl.c>
+long_double_symbol (libm, __nearbyintl, nearbyintl);
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_nextafterl.c b/REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_nextafterl.c
new file mode 100644
index 0000000000..64c663eda3
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_nextafterl.c
@@ -0,0 +1,6 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/ieee754/ldbl-128/s_nextafterl.c>
+long_double_symbol (libm, __nextafterl, nextafterl);
+long_double_symbol (libm, __nexttowardl, nexttowardl);
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_nexttoward.c b/REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_nexttoward.c
new file mode 100644
index 0000000000..2968503d2e
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_nexttoward.c
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/ieee754/ldbl-128/s_nexttoward.c>
+long_double_symbol (libm, __nexttoward, nexttoward);
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_nexttowardf.c b/REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_nexttowardf.c
new file mode 100644
index 0000000000..64b9c24465
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_nexttowardf.c
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/ieee754/ldbl-128/s_nexttowardf.c>
+long_double_symbol (libm, __nexttowardf, nexttowardf);
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_remquol.c b/REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_remquol.c
new file mode 100644
index 0000000000..16f0eb16a4
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_remquol.c
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/ieee754/ldbl-128/s_remquol.c>
+long_double_symbol (libm, __remquol, remquol);
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_rintl.c b/REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_rintl.c
new file mode 100644
index 0000000000..19af9bbdcb
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_rintl.c
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/ieee754/ldbl-128/s_rintl.c>
+long_double_symbol (libm, __rintl, rintl);
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_roundl.c b/REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_roundl.c
new file mode 100644
index 0000000000..3fa99d6f2a
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_roundl.c
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/ieee754/ldbl-128/s_roundl.c>
+long_double_symbol (libm, __roundl, roundl);
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_scalblnl.c b/REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_scalblnl.c
new file mode 100644
index 0000000000..97181d29b9
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_scalblnl.c
@@ -0,0 +1,4 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/ieee754/ldbl-128/s_scalblnl.c>
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_scalbnl.c b/REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_scalbnl.c
new file mode 100644
index 0000000000..15af1b2849
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_scalbnl.c
@@ -0,0 +1,4 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/ieee754/ldbl-128/s_scalbnl.c>
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_signbitl.c b/REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_signbitl.c
new file mode 100644
index 0000000000..850db7386a
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_signbitl.c
@@ -0,0 +1,11 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#define __signbitl(arg) ___signbitl(arg)
+#include <sysdeps/ieee754/ldbl-128/s_signbitl.c>
+#undef __signbitl
+#if IS_IN (libm)
+long_double_symbol (libm, ___signbitl, __signbitl);
+#else
+long_double_symbol (libc, ___signbitl, __signbitl);
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_sincosl.c b/REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_sincosl.c
new file mode 100644
index 0000000000..ce0d4e2887
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_sincosl.c
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/ieee754/ldbl-128/s_sincosl.c>
+long_double_symbol (libm, __sincosl, sincosl);
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_sinl.c b/REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_sinl.c
new file mode 100644
index 0000000000..ebc20affdb
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_sinl.c
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/ieee754/ldbl-128/s_sinl.c>
+long_double_symbol (libm, __sinl, sinl);
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_tanhl.c b/REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_tanhl.c
new file mode 100644
index 0000000000..ede93930cd
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_tanhl.c
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/ieee754/ldbl-128/s_tanhl.c>
+long_double_symbol (libm, __tanhl, tanhl);
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_tanl.c b/REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_tanl.c
new file mode 100644
index 0000000000..6e635dfdc9
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_tanl.c
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/ieee754/ldbl-128/s_tanl.c>
+long_double_symbol (libm, __tanl, tanl);
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_truncl.c b/REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_truncl.c
new file mode 100644
index 0000000000..6311479d01
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-64-128/s_truncl.c
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/ieee754/ldbl-128/s_truncl.c>
+long_double_symbol (libm, __truncl, truncl);
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-64-128/strtold_l.c b/REORG.TODO/sysdeps/ieee754/ldbl-64-128/strtold_l.c
new file mode 100644
index 0000000000..37034cb254
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-64-128/strtold_l.c
@@ -0,0 +1,60 @@
+/* Copyright (C) 1999-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+#include <stdlib.h>
+#include <wchar.h>
+#include <xlocale.h>
+
+/* The actual implementation for all floating point sizes is in strtod.c.
+ These macros tell it to produce the `long double' version, `strtold'. */
+
+#define FLOAT long double
+#define FLT LDBL
+#ifdef USE_WIDE_CHAR
+extern long double ____new_wcstold_l (const wchar_t *, wchar_t **, __locale_t);
+# define STRTOF __new_wcstold_l
+# define __STRTOF ____new_wcstold_l
+# define ____STRTOF_INTERNAL ____wcstold_l_internal
+# define STRTOF_NAN __wcstold_nan
+#else
+extern long double ____new_strtold_l (const char *, char **, __locale_t);
+# define STRTOF __new_strtold_l
+# define __STRTOF ____new_strtold_l
+# define ____STRTOF_INTERNAL ____strtold_l_internal
+# define STRTOF_NAN __strtold_nan
+#endif
+extern __typeof (__STRTOF) STRTOF;
+libc_hidden_proto (__STRTOF)
+libc_hidden_proto (STRTOF)
+#define MPN2FLOAT __mpn_construct_long_double
+#define FLOAT_HUGE_VAL HUGE_VALL
+
+#include <strtod_l.c>
+
+#ifdef __LONG_DOUBLE_MATH_OPTIONAL
+# include <math_ldbl_opt.h>
+# ifdef USE_WIDE_CHAR
+weak_alias (____new_wcstold_l, ___new_wcstold_l);
+long_double_symbol (libc, ___new_wcstold_l, wcstold_l);
+long_double_symbol (libc, ____new_wcstold_l, __wcstold_l);
+# else
+weak_alias (____new_strtold_l, ___new_strtold_l);
+long_double_symbol (libc, ___new_strtold_l, strtold_l);
+long_double_symbol (libc, ____new_strtold_l, __strtold_l);
+# endif
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-64-128/w_expl_compat.c b/REORG.TODO/sysdeps/ieee754/ldbl-64-128/w_expl_compat.c
new file mode 100644
index 0000000000..37c153e2a4
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-64-128/w_expl_compat.c
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <sysdeps/ieee754/ldbl-128/w_expl_compat.c>
+long_double_symbol (libm, __expl, expl);
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-64-128/w_scalblnl.c b/REORG.TODO/sysdeps/ieee754/ldbl-64-128/w_scalblnl.c
new file mode 100644
index 0000000000..fef2507cd5
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-64-128/w_scalblnl.c
@@ -0,0 +1,26 @@
+/* Wrapper for __scalblnl handles setting errno.
+ Copyright (C) 2014-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#define declare_mgen_alias(from, to)
+#include <math-type-macros-ldouble.h>
+#include <w_scalbln_template.c>
+#if IS_IN (libm)
+long_double_symbol (libm, __w_scalblnl, scalblnl);
+#else
+long_double_symbol (libc, __w_scalblnl, scalblnl);
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-96/Makefile b/REORG.TODO/sysdeps/ieee754/ldbl-96/Makefile
new file mode 100644
index 0000000000..279342acdf
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-96/Makefile
@@ -0,0 +1,21 @@
+# Makefile for sysdeps/ieee754/ldbl-96.
+# Copyright (C) 2016-2017 Free Software Foundation, Inc.
+# This file is part of the GNU C Library.
+
+# The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+# The GNU C 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 C Library; if not, see
+# <http://www.gnu.org/licenses/>.
+
+ifeq ($(subdir),math)
+tests += test-canonical-ldbl-96 test-totalorderl-ldbl-96
+endif
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-96/bits/iscanonical.h b/REORG.TODO/sysdeps/ieee754/ldbl-96/bits/iscanonical.h
new file mode 100644
index 0000000000..2c8b786183
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-96/bits/iscanonical.h
@@ -0,0 +1,34 @@
+/* Define iscanonical macro. ldbl-96 version.
+ Copyright (C) 2016-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#ifndef _MATH_H
+# error "Never use <bits/iscanonical.h> directly; include <math.h> instead."
+#endif
+
+extern int __iscanonicall (long double __x)
+ __THROW __attribute__ ((__const__));
+#define __iscanonicalf(x) ((void) (__typeof (x)) (x), 1)
+#define __iscanonical(x) ((void) (__typeof (x)) (x), 1)
+
+/* Return nonzero value if X is canonical. In IEEE interchange binary
+ formats, all values are canonical, but the argument must still be
+ converted to its semantic type for any exceptions arising from the
+ conversion, before being discarded; in extended precision, there
+ are encodings that are not consistently handled as corresponding to
+ any particular value of the type, and we return 0 for those. */
+#define iscanonical(x) __MATH_TG ((x), __iscanonical, (x))
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-96/bits/long-double.h b/REORG.TODO/sysdeps/ieee754/ldbl-96/bits/long-double.h
new file mode 100644
index 0000000000..bb06df077f
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-96/bits/long-double.h
@@ -0,0 +1,20 @@
+/* Properties of long double type. ldbl-96 version.
+ Copyright (C) 2016-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+/* long double is distinct from double, so there is nothing to
+ define here. */
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-96/e_acoshl.c b/REORG.TODO/sysdeps/ieee754/ldbl-96/e_acoshl.c
new file mode 100644
index 0000000000..cf9a6db0ef
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-96/e_acoshl.c
@@ -0,0 +1,61 @@
+/* e_acoshl.c -- long double version of e_acosh.c.
+ * Conversion to long double by Ulrich Drepper,
+ * Cygnus Support, drepper@cygnus.com.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+/* __ieee754_acoshl(x)
+ * Method :
+ * Based on
+ * acoshl(x) = logl [ x + sqrtl(x*x-1) ]
+ * we have
+ * acoshl(x) := logl(x)+ln2, if x is large; else
+ * acoshl(x) := logl(2x-1/(sqrtl(x*x-1)+x)) if x>2; else
+ * acoshl(x) := log1pl(t+sqrtl(2.0*t+t*t)); where t=x-1.
+ *
+ * Special cases:
+ * acoshl(x) is NaN with signal if x<1.
+ * acoshl(NaN) is NaN without signal.
+ */
+
+#include <math.h>
+#include <math_private.h>
+
+static const long double
+one = 1.0,
+ln2 = 6.931471805599453094287e-01L; /* 0x3FFE, 0xB17217F7, 0xD1CF79AC */
+
+long double
+__ieee754_acoshl(long double x)
+{
+ long double t;
+ u_int32_t se,i0,i1;
+ GET_LDOUBLE_WORDS(se,i0,i1,x);
+ if(se<0x3fff || se & 0x8000) { /* x < 1 */
+ return (x-x)/(x-x);
+ } else if(se >=0x401d) { /* x > 2**30 */
+ if(se >=0x7fff) { /* x is inf of NaN */
+ return x+x;
+ } else
+ return __ieee754_logl(x)+ln2; /* acoshl(huge)=logl(2x) */
+ } else if(((se-0x3fff)|(i0^0x80000000)|i1)==0) {
+ return 0.0; /* acosh(1) = 0 */
+ } else if (se > 0x4000) { /* 2**28 > x > 2 */
+ t=x*x;
+ return __ieee754_logl(2.0*x-one/(x+__ieee754_sqrtl(t-one)));
+ } else { /* 1<x<2 */
+ t = x-one;
+ return __log1pl(t+__ieee754_sqrtl(2.0*t+t*t));
+ }
+}
+strong_alias (__ieee754_acoshl, __acoshl_finite)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-96/e_asinl.c b/REORG.TODO/sysdeps/ieee754/ldbl-96/e_asinl.c
new file mode 100644
index 0000000000..f52b931459
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-96/e_asinl.c
@@ -0,0 +1,157 @@
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+/*
+ Long double expansions are
+ Copyright (C) 2001 Stephen L. Moshier <moshier@na-net.ornl.gov>
+ and are incorporated herein by permission of the author. The author
+ reserves the right to distribute this material elsewhere under different
+ copying permissions. These modifications are distributed here under
+ the following terms:
+
+ This 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 2.1 of the License, or (at your option) any later version.
+
+ This 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 this library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+/* __ieee754_asin(x)
+ * Method :
+ * Since asin(x) = x + x^3/6 + x^5*3/40 + x^7*15/336 + ...
+ * we approximate asin(x) on [0,0.5] by
+ * asin(x) = x + x*x^2*R(x^2)
+ *
+ * For x in [0.5,1]
+ * asin(x) = pi/2-2*asin(sqrt((1-x)/2))
+ * Let y = (1-x), z = y/2, s := sqrt(z), and pio2_hi+pio2_lo=pi/2;
+ * then for x>0.98
+ * asin(x) = pi/2 - 2*(s+s*z*R(z))
+ * = pio2_hi - (2*(s+s*z*R(z)) - pio2_lo)
+ * For x<=0.98, let pio4_hi = pio2_hi/2, then
+ * f = hi part of s;
+ * c = sqrt(z) - f = (z-f*f)/(s+f) ...f+c=sqrt(z)
+ * and
+ * asin(x) = pi/2 - 2*(s+s*z*R(z))
+ * = pio4_hi+(pio4-2s)-(2s*z*R(z)-pio2_lo)
+ * = pio4_hi+(pio4-2f)-(2s*z*R(z)-(pio2_lo+2c))
+ *
+ * Special cases:
+ * if x is NaN, return x itself;
+ * if |x|>1, return NaN with invalid signal.
+ *
+ */
+
+
+#include <float.h>
+#include <math.h>
+#include <math_private.h>
+
+static const long double
+ one = 1.0L,
+ huge = 1.0e+4932L,
+ pio2_hi = 0x1.921fb54442d1846ap+0L, /* pi/2 rounded to nearest to 64
+ bits. */
+ pio2_lo = -0x7.6733ae8fe47c65d8p-68L, /* pi/2 - pio2_hi rounded to
+ nearest to 64 bits. */
+ pio4_hi = 0xc.90fdaa22168c235p-4L, /* pi/4 rounded to nearest to 64
+ bits. */
+
+ /* coefficient for R(x^2) */
+
+ /* asin(x) = x + x^3 pS(x^2) / qS(x^2)
+ 0 <= x <= 0.5
+ peak relative error 1.9e-21 */
+ pS0 = -1.008714657938491626019651170502036851607E1L,
+ pS1 = 2.331460313214179572063441834101394865259E1L,
+ pS2 = -1.863169762159016144159202387315381830227E1L,
+ pS3 = 5.930399351579141771077475766877674661747E0L,
+ pS4 = -6.121291917696920296944056882932695185001E-1L,
+ pS5 = 3.776934006243367487161248678019350338383E-3L,
+
+ qS0 = -6.052287947630949712886794360635592886517E1L,
+ qS1 = 1.671229145571899593737596543114258558503E2L,
+ qS2 = -1.707840117062586426144397688315411324388E2L,
+ qS3 = 7.870295154902110425886636075950077640623E1L,
+ qS4 = -1.568433562487314651121702982333303458814E1L;
+ /* 1.000000000000000000000000000000000000000E0 */
+
+long double
+__ieee754_asinl (long double x)
+{
+ long double t, w, p, q, c, r, s;
+ int32_t ix;
+ u_int32_t se, i0, i1, k;
+
+ GET_LDOUBLE_WORDS (se, i0, i1, x);
+ ix = se & 0x7fff;
+ ix = (ix << 16) | (i0 >> 16);
+ if (ix >= 0x3fff8000)
+ { /* |x|>= 1 */
+ if (ix == 0x3fff8000 && ((i0 - 0x80000000) | i1) == 0)
+ /* asin(1)=+-pi/2 with inexact */
+ return x * pio2_hi + x * pio2_lo;
+ return (x - x) / (x - x); /* asin(|x|>1) is NaN */
+ }
+ else if (ix < 0x3ffe8000)
+ { /* |x|<0.5 */
+ if (ix < 0x3fde8000)
+ { /* if |x| < 2**-33 */
+ math_check_force_underflow (x);
+ if (huge + x > one)
+ return x; /* return x with inexact if x!=0 */
+ }
+ else
+ {
+ t = x * x;
+ p =
+ t * (pS0 +
+ t * (pS1 + t * (pS2 + t * (pS3 + t * (pS4 + t * pS5)))));
+ q = qS0 + t * (qS1 + t * (qS2 + t * (qS3 + t * (qS4 + t))));
+ w = p / q;
+ return x + x * w;
+ }
+ }
+ /* 1> |x|>= 0.5 */
+ w = one - fabsl (x);
+ t = w * 0.5;
+ p = t * (pS0 + t * (pS1 + t * (pS2 + t * (pS3 + t * (pS4 + t * pS5)))));
+ q = qS0 + t * (qS1 + t * (qS2 + t * (qS3 + t * (qS4 + t))));
+ s = __ieee754_sqrtl (t);
+ if (ix >= 0x3ffef999)
+ { /* if |x| > 0.975 */
+ w = p / q;
+ t = pio2_hi - (2.0 * (s + s * w) - pio2_lo);
+ }
+ else
+ {
+ GET_LDOUBLE_WORDS (k, i0, i1, s);
+ i1 = 0;
+ SET_LDOUBLE_WORDS (w,k,i0,i1);
+ c = (t - w * w) / (s + w);
+ r = p / q;
+ p = 2.0 * s * r - (pio2_lo - 2.0 * c);
+ q = pio4_hi - 2.0 * w;
+ t = pio4_hi - (p - q);
+ }
+ if ((se & 0x8000) == 0)
+ return t;
+ else
+ return -t;
+}
+strong_alias (__ieee754_asinl, __asinl_finite)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-96/e_atanhl.c b/REORG.TODO/sysdeps/ieee754/ldbl-96/e_atanhl.c
new file mode 100644
index 0000000000..b99a83c6ee
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-96/e_atanhl.c
@@ -0,0 +1,69 @@
+/* s_atanhl.c -- long double version of s_atan.c.
+ * Conversion to long double by Ulrich Drepper,
+ * Cygnus Support, drepper@cygnus.com.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+/* __ieee754_atanhl(x)
+ * Method :
+ * 1.Reduced x to positive by atanh(-x) = -atanh(x)
+ * 2.For x>=0.5
+ * 1 2x x
+ * atanhl(x) = --- * log(1 + -------) = 0.5 * log1p(2 * --------)
+ * 2 1 - x 1 - x
+ *
+ * For x<0.5
+ * atanhl(x) = 0.5*log1pl(2x+2x*x/(1-x))
+ *
+ * Special cases:
+ * atanhl(x) is NaN if |x| > 1 with signal;
+ * atanhl(NaN) is that NaN with no signal;
+ * atanhl(+-1) is +-INF with signal.
+ *
+ */
+
+#include <float.h>
+#include <math.h>
+#include <math_private.h>
+
+static const long double one = 1.0, huge = 1e4900L;
+
+static const long double zero = 0.0;
+
+long double
+__ieee754_atanhl(long double x)
+{
+ long double t;
+ int32_t ix;
+ u_int32_t se,i0,i1;
+ GET_LDOUBLE_WORDS(se,i0,i1,x);
+ ix = se&0x7fff;
+ if ((ix+((((i0&0x7fffffff)|i1)|(-((i0&0x7fffffff)|i1)))>>31))>0x3fff)
+ /* |x|>1 */
+ return (x-x)/(x-x);
+ if(ix==0x3fff)
+ return x/zero;
+ if(ix<0x3fdf) {
+ math_force_eval(huge+x);
+ math_check_force_underflow (x);
+ return x; /* x<2**-32 */
+ }
+ SET_LDOUBLE_EXP(x,ix);
+ if(ix<0x3ffe) { /* x < 0.5 */
+ t = x+x;
+ t = 0.5*__log1pl(t+t*x/(one-x));
+ } else
+ t = 0.5*__log1pl((x+x)/(one-x));
+ if(se<=0x7fff) return t; else return -t;
+}
+strong_alias (__ieee754_atanhl, __atanhl_finite)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-96/e_coshl.c b/REORG.TODO/sysdeps/ieee754/ldbl-96/e_coshl.c
new file mode 100644
index 0000000000..dd22cae363
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-96/e_coshl.c
@@ -0,0 +1,87 @@
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: e_cosh.c,v 1.7 1995/05/10 20:44:58 jtc Exp $";
+#endif
+
+/* __ieee754_coshl(x)
+ * Method :
+ * mathematically coshl(x) if defined to be (exp(x)+exp(-x))/2
+ * 1. Replace x by |x| (coshl(x) = coshl(-x)).
+ * 2.
+ * [ exp(x) - 1 ]^2
+ * 0 <= x <= ln2/2 : coshl(x) := 1 + -------------------
+ * 2*exp(x)
+ *
+ * exp(x) + 1/exp(x)
+ * ln2/2 <= x <= 22 : coshl(x) := -------------------
+ * 2
+ * 22 <= x <= lnovft : coshl(x) := expl(x)/2
+ * lnovft <= x <= ln2ovft: coshl(x) := expl(x/2)/2 * expl(x/2)
+ * ln2ovft < x : coshl(x) := huge*huge (overflow)
+ *
+ * Special cases:
+ * coshl(x) is |x| if x is +INF, -INF, or NaN.
+ * only coshl(0)=1 is exact for finite x.
+ */
+
+#include <math.h>
+#include <math_private.h>
+
+static const long double one = 1.0, half=0.5, huge = 1.0e4900L;
+
+long double
+__ieee754_coshl (long double x)
+{
+ long double t,w;
+ int32_t ex;
+ u_int32_t mx,lx;
+
+ /* High word of |x|. */
+ GET_LDOUBLE_WORDS(ex,mx,lx,x);
+ ex &= 0x7fff;
+
+ /* |x| in [0,22] */
+ if (ex < 0x4003 || (ex == 0x4003 && mx < 0xb0000000u)) {
+ /* |x| in [0,0.5*ln2], return 1+expm1l(|x|)^2/(2*expl(|x|)) */
+ if(ex < 0x3ffd || (ex == 0x3ffd && mx < 0xb17217f7u)) {
+ if (ex<0x3fbc) return one; /* cosh(tiny) = 1 */
+ t = __expm1l(fabsl(x));
+ w = one+t;
+ return one+(t*t)/(w+w);
+ }
+
+ /* |x| in [0.5*ln2,22], return (exp(|x|)+1/exp(|x|)/2; */
+ t = __ieee754_expl(fabsl(x));
+ return half*t+half/t;
+ }
+
+ /* |x| in [22, ln(maxdouble)] return half*exp(|x|) */
+ if (ex < 0x400c || (ex == 0x400c && mx < 0xb1700000u))
+ return half*__ieee754_expl(fabsl(x));
+
+ /* |x| in [log(maxdouble), log(2*maxdouble)) */
+ if (ex == 0x400c && (mx < 0xb174ddc0u
+ || (mx == 0xb174ddc0u && lx < 0x31aec0ebu)))
+ {
+ w = __ieee754_expl(half*fabsl(x));
+ t = half*w;
+ return t*w;
+ }
+
+ /* x is INF or NaN */
+ if(ex==0x7fff) return x*x;
+
+ /* |x| >= log(2*maxdouble), cosh(x) overflow */
+ return huge*huge;
+}
+strong_alias (__ieee754_coshl, __coshl_finite)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-96/e_gammal_r.c b/REORG.TODO/sysdeps/ieee754/ldbl-96/e_gammal_r.c
new file mode 100644
index 0000000000..7e42cc1161
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-96/e_gammal_r.c
@@ -0,0 +1,210 @@
+/* Implementation of gamma function according to ISO C.
+ Copyright (C) 1997-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+#include <math_private.h>
+#include <float.h>
+
+/* Coefficients B_2k / 2k(2k-1) of x^-(2k-1) inside exp in Stirling's
+ approximation to gamma function. */
+
+static const long double gamma_coeff[] =
+ {
+ 0x1.5555555555555556p-4L,
+ -0xb.60b60b60b60b60bp-12L,
+ 0x3.4034034034034034p-12L,
+ -0x2.7027027027027028p-12L,
+ 0x3.72a3c5631fe46aep-12L,
+ -0x7.daac36664f1f208p-12L,
+ 0x1.a41a41a41a41a41ap-8L,
+ -0x7.90a1b2c3d4e5f708p-8L,
+ };
+
+#define NCOEFF (sizeof (gamma_coeff) / sizeof (gamma_coeff[0]))
+
+/* Return gamma (X), for positive X less than 1766, in the form R *
+ 2^(*EXP2_ADJ), where R is the return value and *EXP2_ADJ is set to
+ avoid overflow or underflow in intermediate calculations. */
+
+static long double
+gammal_positive (long double x, int *exp2_adj)
+{
+ int local_signgam;
+ if (x < 0.5L)
+ {
+ *exp2_adj = 0;
+ return __ieee754_expl (__ieee754_lgammal_r (x + 1, &local_signgam)) / x;
+ }
+ else if (x <= 1.5L)
+ {
+ *exp2_adj = 0;
+ return __ieee754_expl (__ieee754_lgammal_r (x, &local_signgam));
+ }
+ else if (x < 7.5L)
+ {
+ /* Adjust into the range for using exp (lgamma). */
+ *exp2_adj = 0;
+ long double n = __ceill (x - 1.5L);
+ long double x_adj = x - n;
+ long double eps;
+ long double prod = __gamma_productl (x_adj, 0, n, &eps);
+ return (__ieee754_expl (__ieee754_lgammal_r (x_adj, &local_signgam))
+ * prod * (1.0L + eps));
+ }
+ else
+ {
+ long double eps = 0;
+ long double x_eps = 0;
+ long double x_adj = x;
+ long double prod = 1;
+ if (x < 13.0L)
+ {
+ /* Adjust into the range for applying Stirling's
+ approximation. */
+ long double n = __ceill (13.0L - x);
+ x_adj = x + n;
+ x_eps = (x - (x_adj - n));
+ prod = __gamma_productl (x_adj - n, x_eps, n, &eps);
+ }
+ /* The result is now gamma (X_ADJ + X_EPS) / (PROD * (1 + EPS)).
+ Compute gamma (X_ADJ + X_EPS) using Stirling's approximation,
+ starting by computing pow (X_ADJ, X_ADJ) with a power of 2
+ factored out. */
+ long double exp_adj = -eps;
+ long double x_adj_int = __roundl (x_adj);
+ long double x_adj_frac = x_adj - x_adj_int;
+ int x_adj_log2;
+ long double x_adj_mant = __frexpl (x_adj, &x_adj_log2);
+ if (x_adj_mant < M_SQRT1_2l)
+ {
+ x_adj_log2--;
+ x_adj_mant *= 2.0L;
+ }
+ *exp2_adj = x_adj_log2 * (int) x_adj_int;
+ long double ret = (__ieee754_powl (x_adj_mant, x_adj)
+ * __ieee754_exp2l (x_adj_log2 * x_adj_frac)
+ * __ieee754_expl (-x_adj)
+ * __ieee754_sqrtl (2 * M_PIl / x_adj)
+ / prod);
+ exp_adj += x_eps * __ieee754_logl (x_adj);
+ long double bsum = gamma_coeff[NCOEFF - 1];
+ long double x_adj2 = x_adj * x_adj;
+ for (size_t i = 1; i <= NCOEFF - 1; i++)
+ bsum = bsum / x_adj2 + gamma_coeff[NCOEFF - 1 - i];
+ exp_adj += bsum / x_adj;
+ return ret + ret * __expm1l (exp_adj);
+ }
+}
+
+long double
+__ieee754_gammal_r (long double x, int *signgamp)
+{
+ u_int32_t es, hx, lx;
+ long double ret;
+
+ GET_LDOUBLE_WORDS (es, hx, lx, x);
+
+ if (__glibc_unlikely (((es & 0x7fff) | hx | lx) == 0))
+ {
+ /* Return value for x == 0 is Inf with divide by zero exception. */
+ *signgamp = 0;
+ return 1.0 / x;
+ }
+ if (__glibc_unlikely (es == 0xffffffff && ((hx & 0x7fffffff) | lx) == 0))
+ {
+ /* x == -Inf. According to ISO this is NaN. */
+ *signgamp = 0;
+ return x - x;
+ }
+ if (__glibc_unlikely ((es & 0x7fff) == 0x7fff))
+ {
+ /* Positive infinity (return positive infinity) or NaN (return
+ NaN). */
+ *signgamp = 0;
+ return x + x;
+ }
+ if (__builtin_expect ((es & 0x8000) != 0, 0) && __rintl (x) == x)
+ {
+ /* Return value for integer x < 0 is NaN with invalid exception. */
+ *signgamp = 0;
+ return (x - x) / (x - x);
+ }
+
+ if (x >= 1756.0L)
+ {
+ /* Overflow. */
+ *signgamp = 0;
+ return LDBL_MAX * LDBL_MAX;
+ }
+ else
+ {
+ SET_RESTORE_ROUNDL (FE_TONEAREST);
+ if (x > 0.0L)
+ {
+ *signgamp = 0;
+ int exp2_adj;
+ ret = gammal_positive (x, &exp2_adj);
+ ret = __scalbnl (ret, exp2_adj);
+ }
+ else if (x >= -LDBL_EPSILON / 4.0L)
+ {
+ *signgamp = 0;
+ ret = 1.0L / x;
+ }
+ else
+ {
+ long double tx = __truncl (x);
+ *signgamp = (tx == 2.0L * __truncl (tx / 2.0L)) ? -1 : 1;
+ if (x <= -1766.0L)
+ /* Underflow. */
+ ret = LDBL_MIN * LDBL_MIN;
+ else
+ {
+ long double frac = tx - x;
+ if (frac > 0.5L)
+ frac = 1.0L - frac;
+ long double sinpix = (frac <= 0.25L
+ ? __sinl (M_PIl * frac)
+ : __cosl (M_PIl * (0.5L - frac)));
+ int exp2_adj;
+ ret = M_PIl / (-x * sinpix
+ * gammal_positive (-x, &exp2_adj));
+ ret = __scalbnl (ret, -exp2_adj);
+ math_check_force_underflow_nonneg (ret);
+ }
+ }
+ }
+ if (isinf (ret) && x != 0)
+ {
+ if (*signgamp < 0)
+ return -(-__copysignl (LDBL_MAX, ret) * LDBL_MAX);
+ else
+ return __copysignl (LDBL_MAX, ret) * LDBL_MAX;
+ }
+ else if (ret == 0)
+ {
+ if (*signgamp < 0)
+ return -(-__copysignl (LDBL_MIN, ret) * LDBL_MIN);
+ else
+ return __copysignl (LDBL_MIN, ret) * LDBL_MIN;
+ }
+ else
+ return ret;
+}
+strong_alias (__ieee754_gammal_r, __gammal_r_finite)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-96/e_hypotl.c b/REORG.TODO/sysdeps/ieee754/ldbl-96/e_hypotl.c
new file mode 100644
index 0000000000..6b55b6d8ee
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-96/e_hypotl.c
@@ -0,0 +1,142 @@
+/* e_hypotl.c -- long double version of e_hypot.c.
+ * Conversion to long double by Ulrich Drepper,
+ * Cygnus Support, drepper@cygnus.com.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+/* __ieee754_hypotl(x,y)
+ *
+ * Method :
+ * If (assume round-to-nearest) z=x*x+y*y
+ * has error less than sqrt(2)/2 ulp, than
+ * sqrt(z) has error less than 1 ulp (exercise).
+ *
+ * So, compute sqrt(x*x+y*y) with some care as
+ * follows to get the error below 1 ulp:
+ *
+ * Assume x>y>0;
+ * (if possible, set rounding to round-to-nearest)
+ * 1. if x > 2y use
+ * x1*x1+(y*y+(x2*(x+x1))) for x*x+y*y
+ * where x1 = x with lower 32 bits cleared, x2 = x-x1; else
+ * 2. if x <= 2y use
+ * t1*y1+((x-y)*(x-y)+(t1*y2+t2*y))
+ * where t1 = 2x with lower 32 bits cleared, t2 = 2x-t1,
+ * y1= y with lower 32 bits chopped, y2 = y-y1.
+ *
+ * NOTE: scaling may be necessary if some argument is too
+ * large or too tiny
+ *
+ * Special cases:
+ * hypot(x,y) is INF if x or y is +INF or -INF; else
+ * hypot(x,y) is NAN if x or y is NAN.
+ *
+ * Accuracy:
+ * hypot(x,y) returns sqrt(x^2+y^2) with error less
+ * than 1 ulps (units in the last place)
+ */
+
+#include <math.h>
+#include <math_private.h>
+
+long double __ieee754_hypotl(long double x, long double y)
+{
+ long double a,b,t1,t2,y1,y2,w;
+ u_int32_t j,k,ea,eb;
+
+ GET_LDOUBLE_EXP(ea,x);
+ ea &= 0x7fff;
+ GET_LDOUBLE_EXP(eb,y);
+ eb &= 0x7fff;
+ if(eb > ea) {a=y;b=x;j=ea; ea=eb;eb=j;} else {a=x;b=y;}
+ SET_LDOUBLE_EXP(a,ea); /* a <- |a| */
+ SET_LDOUBLE_EXP(b,eb); /* b <- |b| */
+ if((ea-eb)>0x46) {return a+b;} /* x/y > 2**70 */
+ k=0;
+ if(__builtin_expect(ea > 0x5f3f,0)) { /* a>2**8000 */
+ if(ea == 0x7fff) { /* Inf or NaN */
+ u_int32_t exp __attribute__ ((unused));
+ u_int32_t high,low;
+ w = a+b; /* for sNaN */
+ if (issignaling (a) || issignaling (b))
+ return w;
+ GET_LDOUBLE_WORDS(exp,high,low,a);
+ if(((high&0x7fffffff)|low)==0) w = a;
+ GET_LDOUBLE_WORDS(exp,high,low,b);
+ if(((eb^0x7fff)|(high&0x7fffffff)|low)==0) w = b;
+ return w;
+ }
+ /* scale a and b by 2**-9600 */
+ ea -= 0x2580; eb -= 0x2580; k += 9600;
+ SET_LDOUBLE_EXP(a,ea);
+ SET_LDOUBLE_EXP(b,eb);
+ }
+ if(__builtin_expect(eb < 0x20bf, 0)) { /* b < 2**-8000 */
+ if(eb == 0) { /* subnormal b or 0 */
+ u_int32_t exp __attribute__ ((unused));
+ u_int32_t high,low;
+ GET_LDOUBLE_WORDS(exp,high,low,b);
+ if((high|low)==0) return a;
+ SET_LDOUBLE_WORDS(t1, 0x7ffd, 0x80000000, 0); /* t1=2^16382 */
+ b *= t1;
+ a *= t1;
+ k -= 16382;
+ GET_LDOUBLE_EXP (ea, a);
+ GET_LDOUBLE_EXP (eb, b);
+ if (eb > ea)
+ {
+ t1 = a;
+ a = b;
+ b = t1;
+ j = ea;
+ ea = eb;
+ eb = j;
+ }
+ } else { /* scale a and b by 2^9600 */
+ ea += 0x2580; /* a *= 2^9600 */
+ eb += 0x2580; /* b *= 2^9600 */
+ k -= 9600;
+ SET_LDOUBLE_EXP(a,ea);
+ SET_LDOUBLE_EXP(b,eb);
+ }
+ }
+ /* medium size a and b */
+ w = a-b;
+ if (w>b) {
+ u_int32_t high;
+ GET_LDOUBLE_MSW(high,a);
+ SET_LDOUBLE_WORDS(t1,ea,high,0);
+ t2 = a-t1;
+ w = __ieee754_sqrtl(t1*t1-(b*(-b)-t2*(a+t1)));
+ } else {
+ u_int32_t high;
+ GET_LDOUBLE_MSW(high,b);
+ a = a+a;
+ SET_LDOUBLE_WORDS(y1,eb,high,0);
+ y2 = b - y1;
+ GET_LDOUBLE_MSW(high,a);
+ SET_LDOUBLE_WORDS(t1,ea+1,high,0);
+ t2 = a - t1;
+ w = __ieee754_sqrtl(t1*y1-(w*(-w)-(t1*y2+t2*b)));
+ }
+ if(k!=0) {
+ u_int32_t exp;
+ t1 = 1.0;
+ GET_LDOUBLE_EXP(exp,t1);
+ SET_LDOUBLE_EXP(t1,exp+k);
+ w *= t1;
+ math_check_force_underflow_nonneg (w);
+ return w;
+ } else return w;
+}
+strong_alias (__ieee754_hypotl, __hypotl_finite)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-96/e_j0l.c b/REORG.TODO/sysdeps/ieee754/ldbl-96/e_j0l.c
new file mode 100644
index 0000000000..a536054cde
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-96/e_j0l.c
@@ -0,0 +1,531 @@
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+/* Long double expansions are
+ Copyright (C) 2001 Stephen L. Moshier <moshier@na-net.ornl.gov>
+ and are incorporated herein by permission of the author. The author
+ reserves the right to distribute this material elsewhere under different
+ copying permissions. These modifications are distributed here under
+ the following terms:
+
+ This 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 2.1 of the License, or (at your option) any later version.
+
+ This 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 this library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+/* __ieee754_j0(x), __ieee754_y0(x)
+ * Bessel function of the first and second kinds of order zero.
+ * Method -- j0(x):
+ * 1. For tiny x, we use j0(x) = 1 - x^2/4 + x^4/64 - ...
+ * 2. Reduce x to |x| since j0(x)=j0(-x), and
+ * for x in (0,2)
+ * j0(x) = 1 - z/4 + z^2*R0/S0, where z = x*x;
+ * for x in (2,inf)
+ * j0(x) = sqrt(2/(pi*x))*(p0(x)*cos(x0)-q0(x)*sin(x0))
+ * where x0 = x-pi/4. It is better to compute sin(x0),cos(x0)
+ * as follow:
+ * cos(x0) = cos(x)cos(pi/4)+sin(x)sin(pi/4)
+ * = 1/sqrt(2) * (cos(x) + sin(x))
+ * sin(x0) = sin(x)cos(pi/4)-cos(x)sin(pi/4)
+ * = 1/sqrt(2) * (sin(x) - cos(x))
+ * (To avoid cancellation, use
+ * sin(x) +- cos(x) = -cos(2x)/(sin(x) -+ cos(x))
+ * to compute the worse one.)
+ *
+ * 3 Special cases
+ * j0(nan)= nan
+ * j0(0) = 1
+ * j0(inf) = 0
+ *
+ * Method -- y0(x):
+ * 1. For x<2.
+ * Since
+ * y0(x) = 2/pi*(j0(x)*(ln(x/2)+Euler) + x^2/4 - ...)
+ * therefore y0(x)-2/pi*j0(x)*ln(x) is an even function.
+ * We use the following function to approximate y0,
+ * y0(x) = U(z)/V(z) + (2/pi)*(j0(x)*ln(x)), z= x^2
+ *
+ * Note: For tiny x, U/V = u0 and j0(x)~1, hence
+ * y0(tiny) = u0 + (2/pi)*ln(tiny), (choose tiny<2**-27)
+ * 2. For x>=2.
+ * y0(x) = sqrt(2/(pi*x))*(p0(x)*cos(x0)+q0(x)*sin(x0))
+ * where x0 = x-pi/4. It is better to compute sin(x0),cos(x0)
+ * by the method mentioned above.
+ * 3. Special cases: y0(0)=-inf, y0(x<0)=NaN, y0(inf)=0.
+ */
+
+#include <math.h>
+#include <math_private.h>
+
+static long double pzero (long double), qzero (long double);
+
+static const long double
+ huge = 1e4930L,
+ one = 1.0L,
+ invsqrtpi = 5.6418958354775628694807945156077258584405e-1L,
+ tpi = 6.3661977236758134307553505349005744813784e-1L,
+
+ /* J0(x) = 1 - x^2 / 4 + x^4 R0(x^2) / S0(x^2)
+ 0 <= x <= 2
+ peak relative error 1.41e-22 */
+ R[5] = {
+ 4.287176872744686992880841716723478740566E7L,
+ -6.652058897474241627570911531740907185772E5L,
+ 7.011848381719789863458364584613651091175E3L,
+ -3.168040850193372408702135490809516253693E1L,
+ 6.030778552661102450545394348845599300939E-2L,
+},
+
+ S[4] = {
+ 2.743793198556599677955266341699130654342E9L,
+ 3.364330079384816249840086842058954076201E7L,
+ 1.924119649412510777584684927494642526573E5L,
+ 6.239282256012734914211715620088714856494E2L,
+ /* 1.000000000000000000000000000000000000000E0L,*/
+};
+
+static const long double zero = 0.0;
+
+long double
+__ieee754_j0l (long double x)
+{
+ long double z, s, c, ss, cc, r, u, v;
+ int32_t ix;
+ u_int32_t se;
+
+ GET_LDOUBLE_EXP (se, x);
+ ix = se & 0x7fff;
+ if (__glibc_unlikely (ix >= 0x7fff))
+ return one / (x * x);
+ x = fabsl (x);
+ if (ix >= 0x4000) /* |x| >= 2.0 */
+ {
+ __sincosl (x, &s, &c);
+ ss = s - c;
+ cc = s + c;
+ if (ix < 0x7ffe)
+ { /* make sure x+x not overflow */
+ z = -__cosl (x + x);
+ if ((s * c) < zero)
+ cc = z / ss;
+ else
+ ss = z / cc;
+ }
+ /*
+ * j0(x) = 1/sqrt(pi) * (P(0,x)*cc - Q(0,x)*ss) / sqrt(x)
+ * y0(x) = 1/sqrt(pi) * (P(0,x)*ss + Q(0,x)*cc) / sqrt(x)
+ */
+ if (__glibc_unlikely (ix > 0x4080)) /* 2^129 */
+ z = (invsqrtpi * cc) / __ieee754_sqrtl (x);
+ else
+ {
+ u = pzero (x);
+ v = qzero (x);
+ z = invsqrtpi * (u * cc - v * ss) / __ieee754_sqrtl (x);
+ }
+ return z;
+ }
+ if (__glibc_unlikely (ix < 0x3fef)) /* |x| < 2**-16 */
+ {
+ /* raise inexact if x != 0 */
+ math_force_eval (huge + x);
+ if (ix < 0x3fde) /* |x| < 2^-33 */
+ return one;
+ else
+ return one - 0.25 * x * x;
+ }
+ z = x * x;
+ r = z * (R[0] + z * (R[1] + z * (R[2] + z * (R[3] + z * R[4]))));
+ s = S[0] + z * (S[1] + z * (S[2] + z * (S[3] + z)));
+ if (ix < 0x3fff)
+ { /* |x| < 1.00 */
+ return (one - 0.25 * z + z * (r / s));
+ }
+ else
+ {
+ u = 0.5 * x;
+ return ((one + u) * (one - u) + z * (r / s));
+ }
+}
+strong_alias (__ieee754_j0l, __j0l_finite)
+
+
+/* y0(x) = 2/pi ln(x) J0(x) + U(x^2)/V(x^2)
+ 0 < x <= 2
+ peak relative error 1.7e-21 */
+static const long double
+U[6] = {
+ -1.054912306975785573710813351985351350861E10L,
+ 2.520192609749295139432773849576523636127E10L,
+ -1.856426071075602001239955451329519093395E9L,
+ 4.079209129698891442683267466276785956784E7L,
+ -3.440684087134286610316661166492641011539E5L,
+ 1.005524356159130626192144663414848383774E3L,
+};
+static const long double
+V[5] = {
+ 1.429337283720789610137291929228082613676E11L,
+ 2.492593075325119157558811370165695013002E9L,
+ 2.186077620785925464237324417623665138376E7L,
+ 1.238407896366385175196515057064384929222E5L,
+ 4.693924035211032457494368947123233101664E2L,
+ /* 1.000000000000000000000000000000000000000E0L */
+};
+
+long double
+__ieee754_y0l (long double x)
+{
+ long double z, s, c, ss, cc, u, v;
+ int32_t ix;
+ u_int32_t se, i0, i1;
+
+ GET_LDOUBLE_WORDS (se, i0, i1, x);
+ ix = se & 0x7fff;
+ /* Y0(NaN) is NaN, y0(-inf) is Nan, y0(inf) is 0 */
+ if (__glibc_unlikely (se & 0x8000))
+ return zero / (zero * x);
+ if (__glibc_unlikely (ix >= 0x7fff))
+ return one / (x + x * x);
+ if (__glibc_unlikely ((i0 | i1) == 0))
+ return -HUGE_VALL + x; /* -inf and overflow exception. */
+ if (ix >= 0x4000)
+ { /* |x| >= 2.0 */
+
+ /* y0(x) = sqrt(2/(pi*x))*(p0(x)*sin(x0)+q0(x)*cos(x0))
+ * where x0 = x-pi/4
+ * Better formula:
+ * cos(x0) = cos(x)cos(pi/4)+sin(x)sin(pi/4)
+ * = 1/sqrt(2) * (sin(x) + cos(x))
+ * sin(x0) = sin(x)cos(3pi/4)-cos(x)sin(3pi/4)
+ * = 1/sqrt(2) * (sin(x) - cos(x))
+ * To avoid cancellation, use
+ * sin(x) +- cos(x) = -cos(2x)/(sin(x) -+ cos(x))
+ * to compute the worse one.
+ */
+ __sincosl (x, &s, &c);
+ ss = s - c;
+ cc = s + c;
+ /*
+ * j0(x) = 1/sqrt(pi) * (P(0,x)*cc - Q(0,x)*ss) / sqrt(x)
+ * y0(x) = 1/sqrt(pi) * (P(0,x)*ss + Q(0,x)*cc) / sqrt(x)
+ */
+ if (ix < 0x7ffe)
+ { /* make sure x+x not overflow */
+ z = -__cosl (x + x);
+ if ((s * c) < zero)
+ cc = z / ss;
+ else
+ ss = z / cc;
+ }
+ if (__glibc_unlikely (ix > 0x4080)) /* 1e39 */
+ z = (invsqrtpi * ss) / __ieee754_sqrtl (x);
+ else
+ {
+ u = pzero (x);
+ v = qzero (x);
+ z = invsqrtpi * (u * ss + v * cc) / __ieee754_sqrtl (x);
+ }
+ return z;
+ }
+ if (__glibc_unlikely (ix <= 0x3fde)) /* x < 2^-33 */
+ {
+ z = -7.380429510868722527629822444004602747322E-2L
+ + tpi * __ieee754_logl (x);
+ return z;
+ }
+ z = x * x;
+ u = U[0] + z * (U[1] + z * (U[2] + z * (U[3] + z * (U[4] + z * U[5]))));
+ v = V[0] + z * (V[1] + z * (V[2] + z * (V[3] + z * (V[4] + z))));
+ return (u / v + tpi * (__ieee754_j0l (x) * __ieee754_logl (x)));
+}
+strong_alias (__ieee754_y0l, __y0l_finite)
+
+/* The asymptotic expansions of pzero is
+ * 1 - 9/128 s^2 + 11025/98304 s^4 - ..., where s = 1/x.
+ * For x >= 2, We approximate pzero by
+ * pzero(x) = 1 + s^2 R(s^2) / S(s^2)
+ */
+static const long double pR8[7] = {
+ /* 8 <= x <= inf
+ Peak relative error 4.62 */
+ -4.094398895124198016684337960227780260127E-9L,
+ -8.929643669432412640061946338524096893089E-7L,
+ -6.281267456906136703868258380673108109256E-5L,
+ -1.736902783620362966354814353559382399665E-3L,
+ -1.831506216290984960532230842266070146847E-2L,
+ -5.827178869301452892963280214772398135283E-2L,
+ -2.087563267939546435460286895807046616992E-2L,
+};
+static const long double pS8[6] = {
+ 5.823145095287749230197031108839653988393E-8L,
+ 1.279281986035060320477759999428992730280E-5L,
+ 9.132668954726626677174825517150228961304E-4L,
+ 2.606019379433060585351880541545146252534E-2L,
+ 2.956262215119520464228467583516287175244E-1L,
+ 1.149498145388256448535563278632697465675E0L,
+ /* 1.000000000000000000000000000000000000000E0L, */
+};
+
+static const long double pR5[7] = {
+ /* 4.54541015625 <= x <= 8
+ Peak relative error 6.51E-22 */
+ -2.041226787870240954326915847282179737987E-7L,
+ -2.255373879859413325570636768224534428156E-5L,
+ -7.957485746440825353553537274569102059990E-4L,
+ -1.093205102486816696940149222095559439425E-2L,
+ -5.657957849316537477657603125260701114646E-2L,
+ -8.641175552716402616180994954177818461588E-2L,
+ -1.354654710097134007437166939230619726157E-2L,
+};
+static const long double pS5[6] = {
+ 2.903078099681108697057258628212823545290E-6L,
+ 3.253948449946735405975737677123673867321E-4L,
+ 1.181269751723085006534147920481582279979E-2L,
+ 1.719212057790143888884745200257619469363E-1L,
+ 1.006306498779212467670654535430694221924E0L,
+ 2.069568808688074324555596301126375951502E0L,
+ /* 1.000000000000000000000000000000000000000E0L, */
+};
+
+static const long double pR3[7] = {
+ /* 2.85711669921875 <= x <= 4.54541015625
+ peak relative error 5.25e-21 */
+ -5.755732156848468345557663552240816066802E-6L,
+ -3.703675625855715998827966962258113034767E-4L,
+ -7.390893350679637611641350096842846433236E-3L,
+ -5.571922144490038765024591058478043873253E-2L,
+ -1.531290690378157869291151002472627396088E-1L,
+ -1.193350853469302941921647487062620011042E-1L,
+ -8.567802507331578894302991505331963782905E-3L,
+};
+static const long double pS3[6] = {
+ 8.185931139070086158103309281525036712419E-5L,
+ 5.398016943778891093520574483111255476787E-3L,
+ 1.130589193590489566669164765853409621081E-1L,
+ 9.358652328786413274673192987670237145071E-1L,
+ 3.091711512598349056276917907005098085273E0L,
+ 3.594602474737921977972586821673124231111E0L,
+ /* 1.000000000000000000000000000000000000000E0L, */
+};
+
+static const long double pR2[7] = {
+ /* 2 <= x <= 2.85711669921875
+ peak relative error 2.64e-21 */
+ -1.219525235804532014243621104365384992623E-4L,
+ -4.838597135805578919601088680065298763049E-3L,
+ -5.732223181683569266223306197751407418301E-2L,
+ -2.472947430526425064982909699406646503758E-1L,
+ -3.753373645974077960207588073975976327695E-1L,
+ -1.556241316844728872406672349347137975495E-1L,
+ -5.355423239526452209595316733635519506958E-3L,
+};
+static const long double pS2[6] = {
+ 1.734442793664291412489066256138894953823E-3L,
+ 7.158111826468626405416300895617986926008E-2L,
+ 9.153839713992138340197264669867993552641E-1L,
+ 4.539209519433011393525841956702487797582E0L,
+ 8.868932430625331650266067101752626253644E0L,
+ 6.067161890196324146320763844772857713502E0L,
+ /* 1.000000000000000000000000000000000000000E0L, */
+};
+
+static long double
+pzero (long double x)
+{
+ const long double *p, *q;
+ long double z, r, s;
+ int32_t ix;
+ u_int32_t se, i0, i1;
+
+ GET_LDOUBLE_WORDS (se, i0, i1, x);
+ ix = se & 0x7fff;
+ /* ix >= 0x4000 for all calls to this function. */
+ if (ix >= 0x4002)
+ {
+ p = pR8;
+ q = pS8;
+ } /* x >= 8 */
+ else
+ {
+ i1 = (ix << 16) | (i0 >> 16);
+ if (i1 >= 0x40019174) /* x >= 4.54541015625 */
+ {
+ p = pR5;
+ q = pS5;
+ }
+ else if (i1 >= 0x4000b6db) /* x >= 2.85711669921875 */
+ {
+ p = pR3;
+ q = pS3;
+ }
+ else /* x >= 2 */
+ {
+ p = pR2;
+ q = pS2;
+ }
+ }
+ z = one / (x * x);
+ r =
+ p[0] + z * (p[1] +
+ z * (p[2] + z * (p[3] + z * (p[4] + z * (p[5] + z * p[6])))));
+ s =
+ q[0] + z * (q[1] + z * (q[2] + z * (q[3] + z * (q[4] + z * (q[5] + z)))));
+ return (one + z * r / s);
+}
+
+
+/* For x >= 8, the asymptotic expansions of qzero is
+ * -1/8 s + 75/1024 s^3 - ..., where s = 1/x.
+ * We approximate qzero by
+ * qzero(x) = s*(-.125 + R(s^2) / S(s^2))
+ */
+static const long double qR8[7] = {
+ /* 8 <= x <= inf
+ peak relative error 2.23e-21 */
+ 3.001267180483191397885272640777189348008E-10L,
+ 8.693186311430836495238494289942413810121E-8L,
+ 8.496875536711266039522937037850596580686E-6L,
+ 3.482702869915288984296602449543513958409E-4L,
+ 6.036378380706107692863811938221290851352E-3L,
+ 3.881970028476167836382607922840452192636E-2L,
+ 6.132191514516237371140841765561219149638E-2L,
+};
+static const long double qS8[7] = {
+ 4.097730123753051126914971174076227600212E-9L,
+ 1.199615869122646109596153392152131139306E-6L,
+ 1.196337580514532207793107149088168946451E-4L,
+ 5.099074440112045094341500497767181211104E-3L,
+ 9.577420799632372483249761659674764460583E-2L,
+ 7.385243015344292267061953461563695918646E-1L,
+ 1.917266424391428937962682301561699055943E0L,
+ /* 1.000000000000000000000000000000000000000E0L, */
+};
+
+static const long double qR5[7] = {
+ /* 4.54541015625 <= x <= 8
+ peak relative error 1.03e-21 */
+ 3.406256556438974327309660241748106352137E-8L,
+ 4.855492710552705436943630087976121021980E-6L,
+ 2.301011739663737780613356017352912281980E-4L,
+ 4.500470249273129953870234803596619899226E-3L,
+ 3.651376459725695502726921248173637054828E-2L,
+ 1.071578819056574524416060138514508609805E-1L,
+ 7.458950172851611673015774675225656063757E-2L,
+};
+static const long double qS5[7] = {
+ 4.650675622764245276538207123618745150785E-7L,
+ 6.773573292521412265840260065635377164455E-5L,
+ 3.340711249876192721980146877577806687714E-3L,
+ 7.036218046856839214741678375536970613501E-2L,
+ 6.569599559163872573895171876511377891143E-1L,
+ 2.557525022583599204591036677199171155186E0L,
+ 3.457237396120935674982927714210361269133E0L,
+ /* 1.000000000000000000000000000000000000000E0L,*/
+};
+
+static const long double qR3[7] = {
+ /* 2.85711669921875 <= x <= 4.54541015625
+ peak relative error 5.24e-21 */
+ 1.749459596550816915639829017724249805242E-6L,
+ 1.446252487543383683621692672078376929437E-4L,
+ 3.842084087362410664036704812125005761859E-3L,
+ 4.066369994699462547896426554180954233581E-2L,
+ 1.721093619117980251295234795188992722447E-1L,
+ 2.538595333972857367655146949093055405072E-1L,
+ 8.560591367256769038905328596020118877936E-2L,
+};
+static const long double qS3[7] = {
+ 2.388596091707517488372313710647510488042E-5L,
+ 2.048679968058758616370095132104333998147E-3L,
+ 5.824663198201417760864458765259945181513E-2L,
+ 6.953906394693328750931617748038994763958E-1L,
+ 3.638186936390881159685868764832961092476E0L,
+ 7.900169524705757837298990558459547842607E0L,
+ 5.992718532451026507552820701127504582907E0L,
+ /* 1.000000000000000000000000000000000000000E0L, */
+};
+
+static const long double qR2[7] = {
+ /* 2 <= x <= 2.85711669921875
+ peak relative error 1.58e-21 */
+ 6.306524405520048545426928892276696949540E-5L,
+ 3.209606155709930950935893996591576624054E-3L,
+ 5.027828775702022732912321378866797059604E-2L,
+ 3.012705561838718956481911477587757845163E-1L,
+ 6.960544893905752937420734884995688523815E-1L,
+ 5.431871999743531634887107835372232030655E-1L,
+ 9.447736151202905471899259026430157211949E-2L,
+};
+static const long double qS2[7] = {
+ 8.610579901936193494609755345106129102676E-4L,
+ 4.649054352710496997203474853066665869047E-2L,
+ 8.104282924459837407218042945106320388339E-1L,
+ 5.807730930825886427048038146088828206852E0L,
+ 1.795310145936848873627710102199881642939E1L,
+ 2.281313316875375733663657188888110605044E1L,
+ 1.011242067883822301487154844458322200143E1L,
+ /* 1.000000000000000000000000000000000000000E0L, */
+};
+
+static long double
+qzero (long double x)
+{
+ const long double *p, *q;
+ long double s, r, z;
+ int32_t ix;
+ u_int32_t se, i0, i1;
+
+ GET_LDOUBLE_WORDS (se, i0, i1, x);
+ ix = se & 0x7fff;
+ /* ix >= 0x4000 for all calls to this function. */
+ if (ix >= 0x4002) /* x >= 8 */
+ {
+ p = qR8;
+ q = qS8;
+ }
+ else
+ {
+ i1 = (ix << 16) | (i0 >> 16);
+ if (i1 >= 0x40019174) /* x >= 4.54541015625 */
+ {
+ p = qR5;
+ q = qS5;
+ }
+ else if (i1 >= 0x4000b6db) /* x >= 2.85711669921875 */
+ {
+ p = qR3;
+ q = qS3;
+ }
+ else /* x >= 2 */
+ {
+ p = qR2;
+ q = qS2;
+ }
+ }
+ z = one / (x * x);
+ r =
+ p[0] + z * (p[1] +
+ z * (p[2] + z * (p[3] + z * (p[4] + z * (p[5] + z * p[6])))));
+ s =
+ q[0] + z * (q[1] +
+ z * (q[2] +
+ z * (q[3] + z * (q[4] + z * (q[5] + z * (q[6] + z))))));
+ return (-.125 + z * r / s) / x;
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-96/e_j1l.c b/REORG.TODO/sysdeps/ieee754/ldbl-96/e_j1l.c
new file mode 100644
index 0000000000..e8a7349cf4
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-96/e_j1l.c
@@ -0,0 +1,550 @@
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+/* Long double expansions are
+ Copyright (C) 2001 Stephen L. Moshier <moshier@na-net.ornl.gov>
+ and are incorporated herein by permission of the author. The author
+ reserves the right to distribute this material elsewhere under different
+ copying permissions. These modifications are distributed here under
+ the following terms:
+
+ This 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 2.1 of the License, or (at your option) any later version.
+
+ This 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 this library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+/* __ieee754_j1(x), __ieee754_y1(x)
+ * Bessel function of the first and second kinds of order zero.
+ * Method -- j1(x):
+ * 1. For tiny x, we use j1(x) = x/2 - x^3/16 + x^5/384 - ...
+ * 2. Reduce x to |x| since j1(x)=-j1(-x), and
+ * for x in (0,2)
+ * j1(x) = x/2 + x*z*R0/S0, where z = x*x;
+ * for x in (2,inf)
+ * j1(x) = sqrt(2/(pi*x))*(p1(x)*cos(x1)-q1(x)*sin(x1))
+ * y1(x) = sqrt(2/(pi*x))*(p1(x)*sin(x1)+q1(x)*cos(x1))
+ * where x1 = x-3*pi/4. It is better to compute sin(x1),cos(x1)
+ * as follow:
+ * cos(x1) = cos(x)cos(3pi/4)+sin(x)sin(3pi/4)
+ * = 1/sqrt(2) * (sin(x) - cos(x))
+ * sin(x1) = sin(x)cos(3pi/4)-cos(x)sin(3pi/4)
+ * = -1/sqrt(2) * (sin(x) + cos(x))
+ * (To avoid cancellation, use
+ * sin(x) +- cos(x) = -cos(2x)/(sin(x) -+ cos(x))
+ * to compute the worse one.)
+ *
+ * 3 Special cases
+ * j1(nan)= nan
+ * j1(0) = 0
+ * j1(inf) = 0
+ *
+ * Method -- y1(x):
+ * 1. screen out x<=0 cases: y1(0)=-inf, y1(x<0)=NaN
+ * 2. For x<2.
+ * Since
+ * y1(x) = 2/pi*(j1(x)*(ln(x/2)+Euler)-1/x-x/2+5/64*x^3-...)
+ * therefore y1(x)-2/pi*j1(x)*ln(x)-1/x is an odd function.
+ * We use the following function to approximate y1,
+ * y1(x) = x*U(z)/V(z) + (2/pi)*(j1(x)*ln(x)-1/x), z= x^2
+ * Note: For tiny x, 1/x dominate y1 and hence
+ * y1(tiny) = -2/pi/tiny
+ * 3. For x>=2.
+ * y1(x) = sqrt(2/(pi*x))*(p1(x)*sin(x1)+q1(x)*cos(x1))
+ * where x1 = x-3*pi/4. It is better to compute sin(x1),cos(x1)
+ * by method mentioned above.
+ */
+
+#include <errno.h>
+#include <float.h>
+#include <math.h>
+#include <math_private.h>
+
+static long double pone (long double), qone (long double);
+
+static const long double
+ huge = 1e4930L,
+ one = 1.0L,
+ invsqrtpi = 5.6418958354775628694807945156077258584405e-1L,
+ tpi = 6.3661977236758134307553505349005744813784e-1L,
+
+ /* J1(x) = .5 x + x x^2 R(x^2) / S(x^2)
+ 0 <= x <= 2
+ Peak relative error 4.5e-21 */
+R[5] = {
+ -9.647406112428107954753770469290757756814E7L,
+ 2.686288565865230690166454005558203955564E6L,
+ -3.689682683905671185891885948692283776081E4L,
+ 2.195031194229176602851429567792676658146E2L,
+ -5.124499848728030297902028238597308971319E-1L,
+},
+
+ S[4] =
+{
+ 1.543584977988497274437410333029029035089E9L,
+ 2.133542369567701244002565983150952549520E7L,
+ 1.394077011298227346483732156167414670520E5L,
+ 5.252401789085732428842871556112108446506E2L,
+ /* 1.000000000000000000000000000000000000000E0L, */
+};
+
+static const long double zero = 0.0;
+
+
+long double
+__ieee754_j1l (long double x)
+{
+ long double z, c, r, s, ss, cc, u, v, y;
+ int32_t ix;
+ u_int32_t se;
+
+ GET_LDOUBLE_EXP (se, x);
+ ix = se & 0x7fff;
+ if (__glibc_unlikely (ix >= 0x7fff))
+ return one / x;
+ y = fabsl (x);
+ if (ix >= 0x4000)
+ { /* |x| >= 2.0 */
+ __sincosl (y, &s, &c);
+ ss = -s - c;
+ cc = s - c;
+ if (ix < 0x7ffe)
+ { /* make sure y+y not overflow */
+ z = __cosl (y + y);
+ if ((s * c) > zero)
+ cc = z / ss;
+ else
+ ss = z / cc;
+ }
+ /*
+ * j1(x) = 1/sqrt(pi) * (P(1,x)*cc - Q(1,x)*ss) / sqrt(x)
+ * y1(x) = 1/sqrt(pi) * (P(1,x)*ss + Q(1,x)*cc) / sqrt(x)
+ */
+ if (__glibc_unlikely (ix > 0x4080))
+ z = (invsqrtpi * cc) / __ieee754_sqrtl (y);
+ else
+ {
+ u = pone (y);
+ v = qone (y);
+ z = invsqrtpi * (u * cc - v * ss) / __ieee754_sqrtl (y);
+ }
+ if (se & 0x8000)
+ return -z;
+ else
+ return z;
+ }
+ if (__glibc_unlikely (ix < 0x3fde)) /* |x| < 2^-33 */
+ {
+ if (huge + x > one) /* inexact if x!=0 necessary */
+ {
+ long double ret = 0.5 * x;
+ math_check_force_underflow (ret);
+ if (ret == 0 && x != 0)
+ __set_errno (ERANGE);
+ return ret;
+ }
+ }
+ z = x * x;
+ r = z * (R[0] + z * (R[1]+ z * (R[2] + z * (R[3] + z * R[4]))));
+ s = S[0] + z * (S[1] + z * (S[2] + z * (S[3] + z)));
+ r *= x;
+ return (x * 0.5 + r / s);
+}
+strong_alias (__ieee754_j1l, __j1l_finite)
+
+
+/* Y1(x) = 2/pi * (log(x) * j1(x) - 1/x) + x R(x^2)
+ 0 <= x <= 2
+ Peak relative error 2.3e-23 */
+static const long double U0[6] = {
+ -5.908077186259914699178903164682444848615E10L,
+ 1.546219327181478013495975514375773435962E10L,
+ -6.438303331169223128870035584107053228235E8L,
+ 9.708540045657182600665968063824819371216E6L,
+ -6.138043997084355564619377183564196265471E4L,
+ 1.418503228220927321096904291501161800215E2L,
+};
+static const long double V0[5] = {
+ 3.013447341682896694781964795373783679861E11L,
+ 4.669546565705981649470005402243136124523E9L,
+ 3.595056091631351184676890179233695857260E7L,
+ 1.761554028569108722903944659933744317994E5L,
+ 5.668480419646516568875555062047234534863E2L,
+ /* 1.000000000000000000000000000000000000000E0L, */
+};
+
+
+long double
+__ieee754_y1l (long double x)
+{
+ long double z, s, c, ss, cc, u, v;
+ int32_t ix;
+ u_int32_t se, i0, i1;
+
+ GET_LDOUBLE_WORDS (se, i0, i1, x);
+ ix = se & 0x7fff;
+ /* if Y1(NaN) is NaN, Y1(-inf) is NaN, Y1(inf) is 0 */
+ if (__glibc_unlikely (se & 0x8000))
+ return zero / (zero * x);
+ if (__glibc_unlikely (ix >= 0x7fff))
+ return one / (x + x * x);
+ if (__glibc_unlikely ((i0 | i1) == 0))
+ return -HUGE_VALL + x; /* -inf and overflow exception. */
+ if (ix >= 0x4000)
+ { /* |x| >= 2.0 */
+ __sincosl (x, &s, &c);
+ ss = -s - c;
+ cc = s - c;
+ if (ix < 0x7ffe)
+ { /* make sure x+x not overflow */
+ z = __cosl (x + x);
+ if ((s * c) > zero)
+ cc = z / ss;
+ else
+ ss = z / cc;
+ }
+ /* y1(x) = sqrt(2/(pi*x))*(p1(x)*sin(x0)+q1(x)*cos(x0))
+ * where x0 = x-3pi/4
+ * Better formula:
+ * cos(x0) = cos(x)cos(3pi/4)+sin(x)sin(3pi/4)
+ * = 1/sqrt(2) * (sin(x) - cos(x))
+ * sin(x0) = sin(x)cos(3pi/4)-cos(x)sin(3pi/4)
+ * = -1/sqrt(2) * (cos(x) + sin(x))
+ * To avoid cancellation, use
+ * sin(x) +- cos(x) = -cos(2x)/(sin(x) -+ cos(x))
+ * to compute the worse one.
+ */
+ if (__glibc_unlikely (ix > 0x4080))
+ z = (invsqrtpi * ss) / __ieee754_sqrtl (x);
+ else
+ {
+ u = pone (x);
+ v = qone (x);
+ z = invsqrtpi * (u * ss + v * cc) / __ieee754_sqrtl (x);
+ }
+ return z;
+ }
+ if (__glibc_unlikely (ix <= 0x3fbe))
+ { /* x < 2**-65 */
+ z = -tpi / x;
+ if (isinf (z))
+ __set_errno (ERANGE);
+ return z;
+ }
+ z = x * x;
+ u = U0[0] + z * (U0[1] + z * (U0[2] + z * (U0[3] + z * (U0[4] + z * U0[5]))));
+ v = V0[0] + z * (V0[1] + z * (V0[2] + z * (V0[3] + z * (V0[4] + z))));
+ return (x * (u / v) +
+ tpi * (__ieee754_j1l (x) * __ieee754_logl (x) - one / x));
+}
+strong_alias (__ieee754_y1l, __y1l_finite)
+
+
+/* For x >= 8, the asymptotic expansions of pone is
+ * 1 + 15/128 s^2 - 4725/2^15 s^4 - ..., where s = 1/x.
+ * We approximate pone by
+ * pone(x) = 1 + (R/S)
+ */
+
+/* J1(x) cosX + Y1(x) sinX = sqrt( 2/(pi x)) P1(x)
+ P1(x) = 1 + z^2 R(z^2), z=1/x
+ 8 <= x <= inf (0 <= z <= 0.125)
+ Peak relative error 5.2e-22 */
+
+static const long double pr8[7] = {
+ 8.402048819032978959298664869941375143163E-9L,
+ 1.813743245316438056192649247507255996036E-6L,
+ 1.260704554112906152344932388588243836276E-4L,
+ 3.439294839869103014614229832700986965110E-3L,
+ 3.576910849712074184504430254290179501209E-2L,
+ 1.131111483254318243139953003461511308672E-1L,
+ 4.480715825681029711521286449131671880953E-2L,
+};
+static const long double ps8[6] = {
+ 7.169748325574809484893888315707824924354E-8L,
+ 1.556549720596672576431813934184403614817E-5L,
+ 1.094540125521337139209062035774174565882E-3L,
+ 3.060978962596642798560894375281428805840E-2L,
+ 3.374146536087205506032643098619414507024E-1L,
+ 1.253830208588979001991901126393231302559E0L,
+ /* 1.000000000000000000000000000000000000000E0L, */
+};
+
+/* J1(x) cosX + Y1(x) sinX = sqrt( 2/(pi x)) P1(x)
+ P1(x) = 1 + z^2 R(z^2), z=1/x
+ 4.54541015625 <= x <= 8
+ Peak relative error 7.7e-22 */
+static const long double pr5[7] = {
+ 4.318486887948814529950980396300969247900E-7L,
+ 4.715341880798817230333360497524173929315E-5L,
+ 1.642719430496086618401091544113220340094E-3L,
+ 2.228688005300803935928733750456396149104E-2L,
+ 1.142773760804150921573259605730018327162E-1L,
+ 1.755576530055079253910829652698703791957E-1L,
+ 3.218803858282095929559165965353784980613E-2L,
+};
+static const long double ps5[6] = {
+ 3.685108812227721334719884358034713967557E-6L,
+ 4.069102509511177498808856515005792027639E-4L,
+ 1.449728676496155025507893322405597039816E-2L,
+ 2.058869213229520086582695850441194363103E-1L,
+ 1.164890985918737148968424972072751066553E0L,
+ 2.274776933457009446573027260373361586841E0L,
+ /* 1.000000000000000000000000000000000000000E0L,*/
+};
+
+/* J1(x) cosX + Y1(x) sinX = sqrt( 2/(pi x)) P1(x)
+ P1(x) = 1 + z^2 R(z^2), z=1/x
+ 2.85711669921875 <= x <= 4.54541015625
+ Peak relative error 6.5e-21 */
+static const long double pr3[7] = {
+ 1.265251153957366716825382654273326407972E-5L,
+ 8.031057269201324914127680782288352574567E-4L,
+ 1.581648121115028333661412169396282881035E-2L,
+ 1.179534658087796321928362981518645033967E-1L,
+ 3.227936912780465219246440724502790727866E-1L,
+ 2.559223765418386621748404398017602935764E-1L,
+ 2.277136933287817911091370397134882441046E-2L,
+};
+static const long double ps3[6] = {
+ 1.079681071833391818661952793568345057548E-4L,
+ 6.986017817100477138417481463810841529026E-3L,
+ 1.429403701146942509913198539100230540503E-1L,
+ 1.148392024337075609460312658938700765074E0L,
+ 3.643663015091248720208251490291968840882E0L,
+ 3.990702269032018282145100741746633960737E0L,
+ /* 1.000000000000000000000000000000000000000E0L, */
+};
+
+/* J1(x) cosX + Y1(x) sinX = sqrt( 2/(pi x)) P1(x)
+ P1(x) = 1 + z^2 R(z^2), z=1/x
+ 2 <= x <= 2.85711669921875
+ Peak relative error 3.5e-21 */
+static const long double pr2[7] = {
+ 2.795623248568412225239401141338714516445E-4L,
+ 1.092578168441856711925254839815430061135E-2L,
+ 1.278024620468953761154963591853679640560E-1L,
+ 5.469680473691500673112904286228351988583E-1L,
+ 8.313769490922351300461498619045639016059E-1L,
+ 3.544176317308370086415403567097130611468E-1L,
+ 1.604142674802373041247957048801599740644E-2L,
+};
+static const long double ps2[6] = {
+ 2.385605161555183386205027000675875235980E-3L,
+ 9.616778294482695283928617708206967248579E-2L,
+ 1.195215570959693572089824415393951258510E0L,
+ 5.718412857897054829999458736064922974662E0L,
+ 1.065626298505499086386584642761602177568E1L,
+ 6.809140730053382188468983548092322151791E0L,
+ /* 1.000000000000000000000000000000000000000E0L, */
+};
+
+
+static long double
+pone (long double x)
+{
+ const long double *p, *q;
+ long double z, r, s;
+ int32_t ix;
+ u_int32_t se, i0, i1;
+
+ GET_LDOUBLE_WORDS (se, i0, i1, x);
+ ix = se & 0x7fff;
+ /* ix >= 0x4000 for all calls to this function. */
+ if (ix >= 0x4002) /* x >= 8 */
+ {
+ p = pr8;
+ q = ps8;
+ }
+ else
+ {
+ i1 = (ix << 16) | (i0 >> 16);
+ if (i1 >= 0x40019174) /* x >= 4.54541015625 */
+ {
+ p = pr5;
+ q = ps5;
+ }
+ else if (i1 >= 0x4000b6db) /* x >= 2.85711669921875 */
+ {
+ p = pr3;
+ q = ps3;
+ }
+ else /* x >= 2 */
+ {
+ p = pr2;
+ q = ps2;
+ }
+ }
+ z = one / (x * x);
+ r = p[0] + z * (p[1] +
+ z * (p[2] + z * (p[3] + z * (p[4] + z * (p[5] + z * p[6])))));
+ s = q[0] + z * (q[1] + z * (q[2] + z * (q[3] + z * (q[4] + z * (q[5] + z)))));
+ return one + z * r / s;
+}
+
+
+/* For x >= 8, the asymptotic expansions of qone is
+ * 3/8 s - 105/1024 s^3 - ..., where s = 1/x.
+ * We approximate pone by
+ * qone(x) = s*(0.375 + (R/S))
+ */
+
+/* Y1(x)cosX - J1(x)sinX = sqrt( 2/(pi x)) Q1(x),
+ Q1(x) = z(.375 + z^2 R(z^2)), z=1/x
+ 8 <= x <= inf
+ Peak relative error 8.3e-22 */
+
+static const long double qr8[7] = {
+ -5.691925079044209246015366919809404457380E-10L,
+ -1.632587664706999307871963065396218379137E-7L,
+ -1.577424682764651970003637263552027114600E-5L,
+ -6.377627959241053914770158336842725291713E-4L,
+ -1.087408516779972735197277149494929568768E-2L,
+ -6.854943629378084419631926076882330494217E-2L,
+ -1.055448290469180032312893377152490183203E-1L,
+};
+static const long double qs8[7] = {
+ 5.550982172325019811119223916998393907513E-9L,
+ 1.607188366646736068460131091130644192244E-6L,
+ 1.580792530091386496626494138334505893599E-4L,
+ 6.617859900815747303032860443855006056595E-3L,
+ 1.212840547336984859952597488863037659161E-1L,
+ 9.017885953937234900458186716154005541075E-1L,
+ 2.201114489712243262000939120146436167178E0L,
+ /* 1.000000000000000000000000000000000000000E0L, */
+};
+
+/* Y1(x)cosX - J1(x)sinX = sqrt( 2/(pi x)) Q1(x),
+ Q1(x) = z(.375 + z^2 R(z^2)), z=1/x
+ 4.54541015625 <= x <= 8
+ Peak relative error 4.1e-22 */
+static const long double qr5[7] = {
+ -6.719134139179190546324213696633564965983E-8L,
+ -9.467871458774950479909851595678622044140E-6L,
+ -4.429341875348286176950914275723051452838E-4L,
+ -8.539898021757342531563866270278505014487E-3L,
+ -6.818691805848737010422337101409276287170E-2L,
+ -1.964432669771684034858848142418228214855E-1L,
+ -1.333896496989238600119596538299938520726E-1L,
+};
+static const long double qs5[7] = {
+ 6.552755584474634766937589285426911075101E-7L,
+ 9.410814032118155978663509073200494000589E-5L,
+ 4.561677087286518359461609153655021253238E-3L,
+ 9.397742096177905170800336715661091535805E-2L,
+ 8.518538116671013902180962914473967738771E-1L,
+ 3.177729183645800174212539541058292579009E0L,
+ 4.006745668510308096259753538973038902990E0L,
+ /* 1.000000000000000000000000000000000000000E0L, */
+};
+
+/* Y1(x)cosX - J1(x)sinX = sqrt( 2/(pi x)) Q1(x),
+ Q1(x) = z(.375 + z^2 R(z^2)), z=1/x
+ 2.85711669921875 <= x <= 4.54541015625
+ Peak relative error 2.2e-21 */
+static const long double qr3[7] = {
+ -3.618746299358445926506719188614570588404E-6L,
+ -2.951146018465419674063882650970344502798E-4L,
+ -7.728518171262562194043409753656506795258E-3L,
+ -8.058010968753999435006488158237984014883E-2L,
+ -3.356232856677966691703904770937143483472E-1L,
+ -4.858192581793118040782557808823460276452E-1L,
+ -1.592399251246473643510898335746432479373E-1L,
+};
+static const long double qs3[7] = {
+ 3.529139957987837084554591421329876744262E-5L,
+ 2.973602667215766676998703687065066180115E-3L,
+ 8.273534546240864308494062287908662592100E-2L,
+ 9.613359842126507198241321110649974032726E-1L,
+ 4.853923697093974370118387947065402707519E0L,
+ 1.002671608961669247462020977417828796933E1L,
+ 7.028927383922483728931327850683151410267E0L,
+ /* 1.000000000000000000000000000000000000000E0L, */
+};
+
+/* Y1(x)cosX - J1(x)sinX = sqrt( 2/(pi x)) Q1(x),
+ Q1(x) = z(.375 + z^2 R(z^2)), z=1/x
+ 2 <= x <= 2.85711669921875
+ Peak relative error 6.9e-22 */
+static const long double qr2[7] = {
+ -1.372751603025230017220666013816502528318E-4L,
+ -6.879190253347766576229143006767218972834E-3L,
+ -1.061253572090925414598304855316280077828E-1L,
+ -6.262164224345471241219408329354943337214E-1L,
+ -1.423149636514768476376254324731437473915E0L,
+ -1.087955310491078933531734062917489870754E0L,
+ -1.826821119773182847861406108689273719137E-1L,
+};
+static const long double qs2[7] = {
+ 1.338768933634451601814048220627185324007E-3L,
+ 7.071099998918497559736318523932241901810E-2L,
+ 1.200511429784048632105295629933382142221E0L,
+ 8.327301713640367079030141077172031825276E0L,
+ 2.468479301872299311658145549931764426840E1L,
+ 2.961179686096262083509383820557051621644E1L,
+ 1.201402313144305153005639494661767354977E1L,
+ /* 1.000000000000000000000000000000000000000E0L, */
+};
+
+
+static long double
+qone (long double x)
+{
+ const long double *p, *q;
+ static long double s, r, z;
+ int32_t ix;
+ u_int32_t se, i0, i1;
+
+ GET_LDOUBLE_WORDS (se, i0, i1, x);
+ ix = se & 0x7fff;
+ /* ix >= 0x4000 for all calls to this function. */
+ if (ix >= 0x4002) /* x >= 8 */
+ {
+ p = qr8;
+ q = qs8;
+ }
+ else
+ {
+ i1 = (ix << 16) | (i0 >> 16);
+ if (i1 >= 0x40019174) /* x >= 4.54541015625 */
+ {
+ p = qr5;
+ q = qs5;
+ }
+ else if (i1 >= 0x4000b6db) /* x >= 2.85711669921875 */
+ {
+ p = qr3;
+ q = qs3;
+ }
+ else /* x >= 2 */
+ {
+ p = qr2;
+ q = qs2;
+ }
+ }
+ z = one / (x * x);
+ r =
+ p[0] + z * (p[1] +
+ z * (p[2] + z * (p[3] + z * (p[4] + z * (p[5] + z * p[6])))));
+ s =
+ q[0] + z * (q[1] +
+ z * (q[2] +
+ z * (q[3] + z * (q[4] + z * (q[5] + z * (q[6] + z))))));
+ return (.375 + z * r / s) / x;
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-96/e_jnl.c b/REORG.TODO/sysdeps/ieee754/ldbl-96/e_jnl.c
new file mode 100644
index 0000000000..92f96921a7
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-96/e_jnl.c
@@ -0,0 +1,404 @@
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+/* Modifications for long double are
+ Copyright (C) 2001 Stephen L. Moshier <moshier@na-net.ornl.gov>
+ and are incorporated herein by permission of the author. The author
+ reserves the right to distribute this material elsewhere under different
+ copying permissions. These modifications are distributed here under
+ the following terms:
+
+ This 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 2.1 of the License, or (at your option) any later version.
+
+ This 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 this library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+/*
+ * __ieee754_jn(n, x), __ieee754_yn(n, x)
+ * floating point Bessel's function of the 1st and 2nd kind
+ * of order n
+ *
+ * Special cases:
+ * y0(0)=y1(0)=yn(n,0) = -inf with overflow signal;
+ * y0(-ve)=y1(-ve)=yn(n,-ve) are NaN with invalid signal.
+ * Note 2. About jn(n,x), yn(n,x)
+ * For n=0, j0(x) is called,
+ * for n=1, j1(x) is called,
+ * for n<x, forward recursion us used starting
+ * from values of j0(x) and j1(x).
+ * for n>x, a continued fraction approximation to
+ * j(n,x)/j(n-1,x) is evaluated and then backward
+ * recursion is used starting from a supposed value
+ * for j(n,x). The resulting value of j(0,x) is
+ * compared with the actual value to correct the
+ * supposed value of j(n,x).
+ *
+ * yn(n,x) is similar in all respects, except
+ * that forward recursion is used for all
+ * values of n>1.
+ *
+ */
+
+#include <errno.h>
+#include <float.h>
+#include <math.h>
+#include <math_private.h>
+
+static const long double
+ invsqrtpi = 5.64189583547756286948079e-1L, two = 2.0e0L, one = 1.0e0L;
+
+static const long double zero = 0.0L;
+
+long double
+__ieee754_jnl (int n, long double x)
+{
+ u_int32_t se, i0, i1;
+ int32_t i, ix, sgn;
+ long double a, b, temp, di, ret;
+ long double z, w;
+
+ /* J(-n,x) = (-1)^n * J(n, x), J(n, -x) = (-1)^n * J(n, x)
+ * Thus, J(-n,x) = J(n,-x)
+ */
+
+ GET_LDOUBLE_WORDS (se, i0, i1, x);
+ ix = se & 0x7fff;
+
+ /* if J(n,NaN) is NaN */
+ if (__glibc_unlikely ((ix == 0x7fff) && ((i0 & 0x7fffffff) != 0)))
+ return x + x;
+ if (n < 0)
+ {
+ n = -n;
+ x = -x;
+ se ^= 0x8000;
+ }
+ if (n == 0)
+ return (__ieee754_j0l (x));
+ if (n == 1)
+ return (__ieee754_j1l (x));
+ sgn = (n & 1) & (se >> 15); /* even n -- 0, odd n -- sign(x) */
+ x = fabsl (x);
+ {
+ SET_RESTORE_ROUNDL (FE_TONEAREST);
+ if (__glibc_unlikely ((ix | i0 | i1) == 0 || ix >= 0x7fff))
+ /* if x is 0 or inf */
+ return sgn == 1 ? -zero : zero;
+ else if ((long double) n <= x)
+ {
+ /* Safe to use J(n+1,x)=2n/x *J(n,x)-J(n-1,x) */
+ if (ix >= 0x412D)
+ { /* x > 2**302 */
+
+ /* ??? This might be a futile gesture.
+ If x exceeds X_TLOSS anyway, the wrapper function
+ will set the result to zero. */
+
+ /* (x >> n**2)
+ * Jn(x) = cos(x-(2n+1)*pi/4)*sqrt(2/x*pi)
+ * Yn(x) = sin(x-(2n+1)*pi/4)*sqrt(2/x*pi)
+ * Let s=sin(x), c=cos(x),
+ * xn=x-(2n+1)*pi/4, sqt2 = sqrt(2),then
+ *
+ * n sin(xn)*sqt2 cos(xn)*sqt2
+ * ----------------------------------
+ * 0 s-c c+s
+ * 1 -s-c -c+s
+ * 2 -s+c -c-s
+ * 3 s+c c-s
+ */
+ long double s;
+ long double c;
+ __sincosl (x, &s, &c);
+ switch (n & 3)
+ {
+ case 0:
+ temp = c + s;
+ break;
+ case 1:
+ temp = -c + s;
+ break;
+ case 2:
+ temp = -c - s;
+ break;
+ case 3:
+ temp = c - s;
+ break;
+ }
+ b = invsqrtpi * temp / __ieee754_sqrtl (x);
+ }
+ else
+ {
+ a = __ieee754_j0l (x);
+ b = __ieee754_j1l (x);
+ for (i = 1; i < n; i++)
+ {
+ temp = b;
+ b = b * ((long double) (i + i) / x) - a; /* avoid underflow */
+ a = temp;
+ }
+ }
+ }
+ else
+ {
+ if (ix < 0x3fde)
+ { /* x < 2**-33 */
+ /* x is tiny, return the first Taylor expansion of J(n,x)
+ * J(n,x) = 1/n!*(x/2)^n - ...
+ */
+ if (n >= 400) /* underflow, result < 10^-4952 */
+ b = zero;
+ else
+ {
+ temp = x * 0.5;
+ b = temp;
+ for (a = one, i = 2; i <= n; i++)
+ {
+ a *= (long double) i; /* a = n! */
+ b *= temp; /* b = (x/2)^n */
+ }
+ b = b / a;
+ }
+ }
+ else
+ {
+ /* use backward recurrence */
+ /* x x^2 x^2
+ * J(n,x)/J(n-1,x) = ---- ------ ------ .....
+ * 2n - 2(n+1) - 2(n+2)
+ *
+ * 1 1 1
+ * (for large x) = ---- ------ ------ .....
+ * 2n 2(n+1) 2(n+2)
+ * -- - ------ - ------ -
+ * x x x
+ *
+ * Let w = 2n/x and h=2/x, then the above quotient
+ * is equal to the continued fraction:
+ * 1
+ * = -----------------------
+ * 1
+ * w - -----------------
+ * 1
+ * w+h - ---------
+ * w+2h - ...
+ *
+ * To determine how many terms needed, let
+ * Q(0) = w, Q(1) = w(w+h) - 1,
+ * Q(k) = (w+k*h)*Q(k-1) - Q(k-2),
+ * When Q(k) > 1e4 good for single
+ * When Q(k) > 1e9 good for double
+ * When Q(k) > 1e17 good for quadruple
+ */
+ /* determine k */
+ long double t, v;
+ long double q0, q1, h, tmp;
+ int32_t k, m;
+ w = (n + n) / (long double) x;
+ h = 2.0L / (long double) x;
+ q0 = w;
+ z = w + h;
+ q1 = w * z - 1.0L;
+ k = 1;
+ while (q1 < 1.0e11L)
+ {
+ k += 1;
+ z += h;
+ tmp = z * q1 - q0;
+ q0 = q1;
+ q1 = tmp;
+ }
+ m = n + n;
+ for (t = zero, i = 2 * (n + k); i >= m; i -= 2)
+ t = one / (i / x - t);
+ a = t;
+ b = one;
+ /* estimate log((2/x)^n*n!) = n*log(2/x)+n*ln(n)
+ * Hence, if n*(log(2n/x)) > ...
+ * single 8.8722839355e+01
+ * double 7.09782712893383973096e+02
+ * long double 1.1356523406294143949491931077970765006170e+04
+ * then recurrent value may overflow and the result is
+ * likely underflow to zero
+ */
+ tmp = n;
+ v = two / x;
+ tmp = tmp * __ieee754_logl (fabsl (v * tmp));
+
+ if (tmp < 1.1356523406294143949491931077970765006170e+04L)
+ {
+ for (i = n - 1, di = (long double) (i + i); i > 0; i--)
+ {
+ temp = b;
+ b *= di;
+ b = b / x - a;
+ a = temp;
+ di -= two;
+ }
+ }
+ else
+ {
+ for (i = n - 1, di = (long double) (i + i); i > 0; i--)
+ {
+ temp = b;
+ b *= di;
+ b = b / x - a;
+ a = temp;
+ di -= two;
+ /* scale b to avoid spurious overflow */
+ if (b > 1e100L)
+ {
+ a /= b;
+ t /= b;
+ b = one;
+ }
+ }
+ }
+ /* j0() and j1() suffer enormous loss of precision at and
+ * near zero; however, we know that their zero points never
+ * coincide, so just choose the one further away from zero.
+ */
+ z = __ieee754_j0l (x);
+ w = __ieee754_j1l (x);
+ if (fabsl (z) >= fabsl (w))
+ b = (t * z / b);
+ else
+ b = (t * w / a);
+ }
+ }
+ if (sgn == 1)
+ ret = -b;
+ else
+ ret = b;
+ }
+ if (ret == 0)
+ {
+ ret = __copysignl (LDBL_MIN, ret) * LDBL_MIN;
+ __set_errno (ERANGE);
+ }
+ else
+ math_check_force_underflow (ret);
+ return ret;
+}
+strong_alias (__ieee754_jnl, __jnl_finite)
+
+long double
+__ieee754_ynl (int n, long double x)
+{
+ u_int32_t se, i0, i1;
+ int32_t i, ix;
+ int32_t sign;
+ long double a, b, temp, ret;
+
+
+ GET_LDOUBLE_WORDS (se, i0, i1, x);
+ ix = se & 0x7fff;
+ /* if Y(n,NaN) is NaN */
+ if (__builtin_expect ((ix == 0x7fff) && ((i0 & 0x7fffffff) != 0), 0))
+ return x + x;
+ if (__builtin_expect ((ix | i0 | i1) == 0, 0))
+ /* -inf or inf and divide-by-zero exception. */
+ return ((n < 0 && (n & 1) != 0) ? 1.0L : -1.0L) / 0.0L;
+ if (__builtin_expect (se & 0x8000, 0))
+ return zero / (zero * x);
+ sign = 1;
+ if (n < 0)
+ {
+ n = -n;
+ sign = 1 - ((n & 1) << 1);
+ }
+ if (n == 0)
+ return (__ieee754_y0l (x));
+ {
+ SET_RESTORE_ROUNDL (FE_TONEAREST);
+ if (n == 1)
+ {
+ ret = sign * __ieee754_y1l (x);
+ goto out;
+ }
+ if (__glibc_unlikely (ix == 0x7fff))
+ return zero;
+ if (ix >= 0x412D)
+ { /* x > 2**302 */
+
+ /* ??? See comment above on the possible futility of this. */
+
+ /* (x >> n**2)
+ * Jn(x) = cos(x-(2n+1)*pi/4)*sqrt(2/x*pi)
+ * Yn(x) = sin(x-(2n+1)*pi/4)*sqrt(2/x*pi)
+ * Let s=sin(x), c=cos(x),
+ * xn=x-(2n+1)*pi/4, sqt2 = sqrt(2),then
+ *
+ * n sin(xn)*sqt2 cos(xn)*sqt2
+ * ----------------------------------
+ * 0 s-c c+s
+ * 1 -s-c -c+s
+ * 2 -s+c -c-s
+ * 3 s+c c-s
+ */
+ long double s;
+ long double c;
+ __sincosl (x, &s, &c);
+ switch (n & 3)
+ {
+ case 0:
+ temp = s - c;
+ break;
+ case 1:
+ temp = -s - c;
+ break;
+ case 2:
+ temp = -s + c;
+ break;
+ case 3:
+ temp = s + c;
+ break;
+ }
+ b = invsqrtpi * temp / __ieee754_sqrtl (x);
+ }
+ else
+ {
+ a = __ieee754_y0l (x);
+ b = __ieee754_y1l (x);
+ /* quit if b is -inf */
+ GET_LDOUBLE_WORDS (se, i0, i1, b);
+ /* Use 0xffffffff since GET_LDOUBLE_WORDS sign-extends SE. */
+ for (i = 1; i < n && se != 0xffffffff; i++)
+ {
+ temp = b;
+ b = ((long double) (i + i) / x) * b - a;
+ GET_LDOUBLE_WORDS (se, i0, i1, b);
+ a = temp;
+ }
+ }
+ /* If B is +-Inf, set up errno accordingly. */
+ if (! isfinite (b))
+ __set_errno (ERANGE);
+ if (sign > 0)
+ ret = b;
+ else
+ ret = -b;
+ }
+ out:
+ if (isinf (ret))
+ ret = __copysignl (LDBL_MAX, ret) * LDBL_MAX;
+ return ret;
+}
+strong_alias (__ieee754_ynl, __ynl_finite)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-96/e_lgammal_r.c b/REORG.TODO/sysdeps/ieee754/ldbl-96/e_lgammal_r.c
new file mode 100644
index 0000000000..4ecd63045f
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-96/e_lgammal_r.c
@@ -0,0 +1,439 @@
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+/* Long double expansions are
+ Copyright (C) 2001 Stephen L. Moshier <moshier@na-net.ornl.gov>
+ and are incorporated herein by permission of the author. The author
+ reserves the right to distribute this material elsewhere under different
+ copying permissions. These modifications are distributed here under
+ the following terms:
+
+ This 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 2.1 of the License, or (at your option) any later version.
+
+ This 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 this library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+/* __ieee754_lgammal_r(x, signgamp)
+ * Reentrant version of the logarithm of the Gamma function
+ * with user provide pointer for the sign of Gamma(x).
+ *
+ * Method:
+ * 1. Argument Reduction for 0 < x <= 8
+ * Since gamma(1+s)=s*gamma(s), for x in [0,8], we may
+ * reduce x to a number in [1.5,2.5] by
+ * lgamma(1+s) = log(s) + lgamma(s)
+ * for example,
+ * lgamma(7.3) = log(6.3) + lgamma(6.3)
+ * = log(6.3*5.3) + lgamma(5.3)
+ * = log(6.3*5.3*4.3*3.3*2.3) + lgamma(2.3)
+ * 2. Polynomial approximation of lgamma around its
+ * minimun ymin=1.461632144968362245 to maintain monotonicity.
+ * On [ymin-0.23, ymin+0.27] (i.e., [1.23164,1.73163]), use
+ * Let z = x-ymin;
+ * lgamma(x) = -1.214862905358496078218 + z^2*poly(z)
+ * 2. Rational approximation in the primary interval [2,3]
+ * We use the following approximation:
+ * s = x-2.0;
+ * lgamma(x) = 0.5*s + s*P(s)/Q(s)
+ * Our algorithms are based on the following observation
+ *
+ * zeta(2)-1 2 zeta(3)-1 3
+ * lgamma(2+s) = s*(1-Euler) + --------- * s - --------- * s + ...
+ * 2 3
+ *
+ * where Euler = 0.5771... is the Euler constant, which is very
+ * close to 0.5.
+ *
+ * 3. For x>=8, we have
+ * lgamma(x)~(x-0.5)log(x)-x+0.5*log(2pi)+1/(12x)-1/(360x**3)+....
+ * (better formula:
+ * lgamma(x)~(x-0.5)*(log(x)-1)-.5*(log(2pi)-1) + ...)
+ * Let z = 1/x, then we approximation
+ * f(z) = lgamma(x) - (x-0.5)(log(x)-1)
+ * by
+ * 3 5 11
+ * w = w0 + w1*z + w2*z + w3*z + ... + w6*z
+ *
+ * 4. For negative x, since (G is gamma function)
+ * -x*G(-x)*G(x) = pi/sin(pi*x),
+ * we have
+ * G(x) = pi/(sin(pi*x)*(-x)*G(-x))
+ * since G(-x) is positive, sign(G(x)) = sign(sin(pi*x)) for x<0
+ * Hence, for x<0, signgam = sign(sin(pi*x)) and
+ * lgamma(x) = log(|Gamma(x)|)
+ * = log(pi/(|x*sin(pi*x)|)) - lgamma(-x);
+ * Note: one should avoid compute pi*(-x) directly in the
+ * computation of sin(pi*(-x)).
+ *
+ * 5. Special Cases
+ * lgamma(2+s) ~ s*(1-Euler) for tiny s
+ * lgamma(1)=lgamma(2)=0
+ * lgamma(x) ~ -log(x) for tiny x
+ * lgamma(0) = lgamma(inf) = inf
+ * lgamma(-integer) = +-inf
+ *
+ */
+
+#include <math.h>
+#include <math_private.h>
+#include <libc-diag.h>
+
+static const long double
+ half = 0.5L,
+ one = 1.0L,
+ pi = 3.14159265358979323846264L,
+ two63 = 9.223372036854775808e18L,
+
+ /* lgam(1+x) = 0.5 x + x a(x)/b(x)
+ -0.268402099609375 <= x <= 0
+ peak relative error 6.6e-22 */
+ a0 = -6.343246574721079391729402781192128239938E2L,
+ a1 = 1.856560238672465796768677717168371401378E3L,
+ a2 = 2.404733102163746263689288466865843408429E3L,
+ a3 = 8.804188795790383497379532868917517596322E2L,
+ a4 = 1.135361354097447729740103745999661157426E2L,
+ a5 = 3.766956539107615557608581581190400021285E0L,
+
+ b0 = 8.214973713960928795704317259806842490498E3L,
+ b1 = 1.026343508841367384879065363925870888012E4L,
+ b2 = 4.553337477045763320522762343132210919277E3L,
+ b3 = 8.506975785032585797446253359230031874803E2L,
+ b4 = 6.042447899703295436820744186992189445813E1L,
+ /* b5 = 1.000000000000000000000000000000000000000E0 */
+
+
+ tc = 1.4616321449683623412626595423257213284682E0L,
+ tf = -1.2148629053584961146050602565082954242826E-1,/* double precision */
+/* tt = (tail of tf), i.e. tf + tt has extended precision. */
+ tt = 3.3649914684731379602768989080467587736363E-18L,
+ /* lgam ( 1.4616321449683623412626595423257213284682E0 ) =
+-1.2148629053584960809551455717769158215135617312999903886372437313313530E-1 */
+
+ /* lgam (x + tc) = tf + tt + x g(x)/h(x)
+ - 0.230003726999612341262659542325721328468 <= x
+ <= 0.2699962730003876587373404576742786715318
+ peak relative error 2.1e-21 */
+ g0 = 3.645529916721223331888305293534095553827E-18L,
+ g1 = 5.126654642791082497002594216163574795690E3L,
+ g2 = 8.828603575854624811911631336122070070327E3L,
+ g3 = 5.464186426932117031234820886525701595203E3L,
+ g4 = 1.455427403530884193180776558102868592293E3L,
+ g5 = 1.541735456969245924860307497029155838446E2L,
+ g6 = 4.335498275274822298341872707453445815118E0L,
+
+ h0 = 1.059584930106085509696730443974495979641E4L,
+ h1 = 2.147921653490043010629481226937850618860E4L,
+ h2 = 1.643014770044524804175197151958100656728E4L,
+ h3 = 5.869021995186925517228323497501767586078E3L,
+ h4 = 9.764244777714344488787381271643502742293E2L,
+ h5 = 6.442485441570592541741092969581997002349E1L,
+ /* h6 = 1.000000000000000000000000000000000000000E0 */
+
+
+ /* lgam (x+1) = -0.5 x + x u(x)/v(x)
+ -0.100006103515625 <= x <= 0.231639862060546875
+ peak relative error 1.3e-21 */
+ u0 = -8.886217500092090678492242071879342025627E1L,
+ u1 = 6.840109978129177639438792958320783599310E2L,
+ u2 = 2.042626104514127267855588786511809932433E3L,
+ u3 = 1.911723903442667422201651063009856064275E3L,
+ u4 = 7.447065275665887457628865263491667767695E2L,
+ u5 = 1.132256494121790736268471016493103952637E2L,
+ u6 = 4.484398885516614191003094714505960972894E0L,
+
+ v0 = 1.150830924194461522996462401210374632929E3L,
+ v1 = 3.399692260848747447377972081399737098610E3L,
+ v2 = 3.786631705644460255229513563657226008015E3L,
+ v3 = 1.966450123004478374557778781564114347876E3L,
+ v4 = 4.741359068914069299837355438370682773122E2L,
+ v5 = 4.508989649747184050907206782117647852364E1L,
+ /* v6 = 1.000000000000000000000000000000000000000E0 */
+
+
+ /* lgam (x+2) = .5 x + x s(x)/r(x)
+ 0 <= x <= 1
+ peak relative error 7.2e-22 */
+ s0 = 1.454726263410661942989109455292824853344E6L,
+ s1 = -3.901428390086348447890408306153378922752E6L,
+ s2 = -6.573568698209374121847873064292963089438E6L,
+ s3 = -3.319055881485044417245964508099095984643E6L,
+ s4 = -7.094891568758439227560184618114707107977E5L,
+ s5 = -6.263426646464505837422314539808112478303E4L,
+ s6 = -1.684926520999477529949915657519454051529E3L,
+
+ r0 = -1.883978160734303518163008696712983134698E7L,
+ r1 = -2.815206082812062064902202753264922306830E7L,
+ r2 = -1.600245495251915899081846093343626358398E7L,
+ r3 = -4.310526301881305003489257052083370058799E6L,
+ r4 = -5.563807682263923279438235987186184968542E5L,
+ r5 = -3.027734654434169996032905158145259713083E4L,
+ r6 = -4.501995652861105629217250715790764371267E2L,
+ /* r6 = 1.000000000000000000000000000000000000000E0 */
+
+
+/* lgam(x) = ( x - 0.5 ) * log(x) - x + LS2PI + 1/x w(1/x^2)
+ x >= 8
+ Peak relative error 1.51e-21
+ w0 = LS2PI - 0.5 */
+ w0 = 4.189385332046727417803e-1L,
+ w1 = 8.333333333333331447505E-2L,
+ w2 = -2.777777777750349603440E-3L,
+ w3 = 7.936507795855070755671E-4L,
+ w4 = -5.952345851765688514613E-4L,
+ w5 = 8.412723297322498080632E-4L,
+ w6 = -1.880801938119376907179E-3L,
+ w7 = 4.885026142432270781165E-3L;
+
+static const long double zero = 0.0L;
+
+static long double
+sin_pi (long double x)
+{
+ long double y, z;
+ int n, ix;
+ u_int32_t se, i0, i1;
+
+ GET_LDOUBLE_WORDS (se, i0, i1, x);
+ ix = se & 0x7fff;
+ ix = (ix << 16) | (i0 >> 16);
+ if (ix < 0x3ffd8000) /* 0.25 */
+ return __sinl (pi * x);
+ y = -x; /* x is assume negative */
+
+ /*
+ * argument reduction, make sure inexact flag not raised if input
+ * is an integer
+ */
+ z = __floorl (y);
+ if (z != y)
+ { /* inexact anyway */
+ y *= 0.5;
+ y = 2.0*(y - __floorl(y)); /* y = |x| mod 2.0 */
+ n = (int) (y*4.0);
+ }
+ else
+ {
+ if (ix >= 0x403f8000) /* 2^64 */
+ {
+ y = zero; n = 0; /* y must be even */
+ }
+ else
+ {
+ if (ix < 0x403e8000) /* 2^63 */
+ z = y + two63; /* exact */
+ GET_LDOUBLE_WORDS (se, i0, i1, z);
+ n = i1 & 1;
+ y = n;
+ n <<= 2;
+ }
+ }
+
+ switch (n)
+ {
+ case 0:
+ y = __sinl (pi * y);
+ break;
+ case 1:
+ case 2:
+ y = __cosl (pi * (half - y));
+ break;
+ case 3:
+ case 4:
+ y = __sinl (pi * (one - y));
+ break;
+ case 5:
+ case 6:
+ y = -__cosl (pi * (y - 1.5));
+ break;
+ default:
+ y = __sinl (pi * (y - 2.0));
+ break;
+ }
+ return -y;
+}
+
+
+long double
+__ieee754_lgammal_r (long double x, int *signgamp)
+{
+ long double t, y, z, nadj, p, p1, p2, q, r, w;
+ int i, ix;
+ u_int32_t se, i0, i1;
+
+ *signgamp = 1;
+ GET_LDOUBLE_WORDS (se, i0, i1, x);
+ ix = se & 0x7fff;
+
+ if (__builtin_expect((ix | i0 | i1) == 0, 0))
+ {
+ if (se & 0x8000)
+ *signgamp = -1;
+ return one / fabsl (x);
+ }
+
+ ix = (ix << 16) | (i0 >> 16);
+
+ /* purge off +-inf, NaN, +-0, and negative arguments */
+ if (__builtin_expect(ix >= 0x7fff0000, 0))
+ return x * x;
+
+ if (__builtin_expect(ix < 0x3fc08000, 0)) /* 2^-63 */
+ { /* |x|<2**-63, return -log(|x|) */
+ if (se & 0x8000)
+ {
+ *signgamp = -1;
+ return -__ieee754_logl (-x);
+ }
+ else
+ return -__ieee754_logl (x);
+ }
+ if (se & 0x8000)
+ {
+ if (x < -2.0L && x > -33.0L)
+ return __lgamma_negl (x, signgamp);
+ t = sin_pi (x);
+ if (t == zero)
+ return one / fabsl (t); /* -integer */
+ nadj = __ieee754_logl (pi / fabsl (t * x));
+ if (t < zero)
+ *signgamp = -1;
+ x = -x;
+ }
+
+ /* purge off 1 and 2 */
+ if ((((ix - 0x3fff8000) | i0 | i1) == 0)
+ || (((ix - 0x40008000) | i0 | i1) == 0))
+ r = 0;
+ else if (ix < 0x40008000) /* 2.0 */
+ {
+ /* x < 2.0 */
+ if (ix <= 0x3ffee666) /* 8.99993896484375e-1 */
+ {
+ /* lgamma(x) = lgamma(x+1) - log(x) */
+ r = -__ieee754_logl (x);
+ if (ix >= 0x3ffebb4a) /* 7.31597900390625e-1 */
+ {
+ y = x - one;
+ i = 0;
+ }
+ else if (ix >= 0x3ffced33)/* 2.31639862060546875e-1 */
+ {
+ y = x - (tc - one);
+ i = 1;
+ }
+ else
+ {
+ /* x < 0.23 */
+ y = x;
+ i = 2;
+ }
+ }
+ else
+ {
+ r = zero;
+ if (ix >= 0x3fffdda6) /* 1.73162841796875 */
+ {
+ /* [1.7316,2] */
+ y = x - 2.0;
+ i = 0;
+ }
+ else if (ix >= 0x3fff9da6)/* 1.23162841796875 */
+ {
+ /* [1.23,1.73] */
+ y = x - tc;
+ i = 1;
+ }
+ else
+ {
+ /* [0.9, 1.23] */
+ y = x - one;
+ i = 2;
+ }
+ }
+ switch (i)
+ {
+ case 0:
+ p1 = a0 + y * (a1 + y * (a2 + y * (a3 + y * (a4 + y * a5))));
+ p2 = b0 + y * (b1 + y * (b2 + y * (b3 + y * (b4 + y))));
+ r += half * y + y * p1/p2;
+ break;
+ case 1:
+ p1 = g0 + y * (g1 + y * (g2 + y * (g3 + y * (g4 + y * (g5 + y * g6)))));
+ p2 = h0 + y * (h1 + y * (h2 + y * (h3 + y * (h4 + y * (h5 + y)))));
+ p = tt + y * p1/p2;
+ r += (tf + p);
+ break;
+ case 2:
+ p1 = y * (u0 + y * (u1 + y * (u2 + y * (u3 + y * (u4 + y * (u5 + y * u6))))));
+ p2 = v0 + y * (v1 + y * (v2 + y * (v3 + y * (v4 + y * (v5 + y)))));
+ r += (-half * y + p1 / p2);
+ }
+ }
+ else if (ix < 0x40028000) /* 8.0 */
+ {
+ /* x < 8.0 */
+ i = (int) x;
+ t = zero;
+ y = x - (double) i;
+ p = y *
+ (s0 + y * (s1 + y * (s2 + y * (s3 + y * (s4 + y * (s5 + y * s6))))));
+ q = r0 + y * (r1 + y * (r2 + y * (r3 + y * (r4 + y * (r5 + y * (r6 + y))))));
+ r = half * y + p / q;
+ z = one; /* lgamma(1+s) = log(s) + lgamma(s) */
+ switch (i)
+ {
+ case 7:
+ z *= (y + 6.0); /* FALLTHRU */
+ case 6:
+ z *= (y + 5.0); /* FALLTHRU */
+ case 5:
+ z *= (y + 4.0); /* FALLTHRU */
+ case 4:
+ z *= (y + 3.0); /* FALLTHRU */
+ case 3:
+ z *= (y + 2.0); /* FALLTHRU */
+ r += __ieee754_logl (z);
+ break;
+ }
+ }
+ else if (ix < 0x40418000) /* 2^66 */
+ {
+ /* 8.0 <= x < 2**66 */
+ t = __ieee754_logl (x);
+ z = one / x;
+ y = z * z;
+ w = w0 + z * (w1
+ + y * (w2 + y * (w3 + y * (w4 + y * (w5 + y * (w6 + y * w7))))));
+ r = (x - half) * (t - one) + w;
+ }
+ else
+ /* 2**66 <= x <= inf */
+ r = x * (__ieee754_logl (x) - one);
+ /* NADJ is set for negative arguments but not otherwise, resulting
+ in warnings that it may be used uninitialized although in the
+ cases where it is used it has always been set. */
+ DIAG_PUSH_NEEDS_COMMENT;
+ DIAG_IGNORE_NEEDS_COMMENT (4.9, "-Wmaybe-uninitialized");
+ if (se & 0x8000)
+ r = nadj - r;
+ DIAG_POP_NEEDS_COMMENT;
+ return r;
+}
+strong_alias (__ieee754_lgammal_r, __lgammal_r_finite)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-96/e_rem_pio2l.c b/REORG.TODO/sysdeps/ieee754/ldbl-96/e_rem_pio2l.c
new file mode 100644
index 0000000000..43c5d91f0b
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-96/e_rem_pio2l.c
@@ -0,0 +1,236 @@
+/* Extended-precision floating point argument reduction.
+ Copyright (C) 1999-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Based on quad-precision code by Jakub Jelinek <jj@ultra.linux.cz>
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+#include <math_private.h>
+
+/* Table of constants for 2/pi, 5628 hexadecimal digits of 2/pi. */
+static const int32_t two_over_pi[] = {
+0xa2f983, 0x6e4e44, 0x1529fc, 0x2757d1, 0xf534dd, 0xc0db62,
+0x95993c, 0x439041, 0xfe5163, 0xabdebb, 0xc561b7, 0x246e3a,
+0x424dd2, 0xe00649, 0x2eea09, 0xd1921c, 0xfe1deb, 0x1cb129,
+0xa73ee8, 0x8235f5, 0x2ebb44, 0x84e99c, 0x7026b4, 0x5f7e41,
+0x3991d6, 0x398353, 0x39f49c, 0x845f8b, 0xbdf928, 0x3b1ff8,
+0x97ffde, 0x05980f, 0xef2f11, 0x8b5a0a, 0x6d1f6d, 0x367ecf,
+0x27cb09, 0xb74f46, 0x3f669e, 0x5fea2d, 0x7527ba, 0xc7ebe5,
+0xf17b3d, 0x0739f7, 0x8a5292, 0xea6bfb, 0x5fb11f, 0x8d5d08,
+0x560330, 0x46fc7b, 0x6babf0, 0xcfbc20, 0x9af436, 0x1da9e3,
+0x91615e, 0xe61b08, 0x659985, 0x5f14a0, 0x68408d, 0xffd880,
+0x4d7327, 0x310606, 0x1556ca, 0x73a8c9, 0x60e27b, 0xc08c6b,
+0x47c419, 0xc367cd, 0xdce809, 0x2a8359, 0xc4768b, 0x961ca6,
+0xddaf44, 0xd15719, 0x053ea5, 0xff0705, 0x3f7e33, 0xe832c2,
+0xde4f98, 0x327dbb, 0xc33d26, 0xef6b1e, 0x5ef89f, 0x3a1f35,
+0xcaf27f, 0x1d87f1, 0x21907c, 0x7c246a, 0xfa6ed5, 0x772d30,
+0x433b15, 0xc614b5, 0x9d19c3, 0xc2c4ad, 0x414d2c, 0x5d000c,
+0x467d86, 0x2d71e3, 0x9ac69b, 0x006233, 0x7cd2b4, 0x97a7b4,
+0xd55537, 0xf63ed7, 0x1810a3, 0xfc764d, 0x2a9d64, 0xabd770,
+0xf87c63, 0x57b07a, 0xe71517, 0x5649c0, 0xd9d63b, 0x3884a7,
+0xcb2324, 0x778ad6, 0x23545a, 0xb91f00, 0x1b0af1, 0xdfce19,
+0xff319f, 0x6a1e66, 0x615799, 0x47fbac, 0xd87f7e, 0xb76522,
+0x89e832, 0x60bfe6, 0xcdc4ef, 0x09366c, 0xd43f5d, 0xd7de16,
+0xde3b58, 0x929bde, 0x2822d2, 0xe88628, 0x4d58e2, 0x32cac6,
+0x16e308, 0xcb7de0, 0x50c017, 0xa71df3, 0x5be018, 0x34132e,
+0x621283, 0x014883, 0x5b8ef5, 0x7fb0ad, 0xf2e91e, 0x434a48,
+0xd36710, 0xd8ddaa, 0x425fae, 0xce616a, 0xa4280a, 0xb499d3,
+0xf2a606, 0x7f775c, 0x83c2a3, 0x883c61, 0x78738a, 0x5a8caf,
+0xbdd76f, 0x63a62d, 0xcbbff4, 0xef818d, 0x67c126, 0x45ca55,
+0x36d9ca, 0xd2a828, 0x8d61c2, 0x77c912, 0x142604, 0x9b4612,
+0xc459c4, 0x44c5c8, 0x91b24d, 0xf31700, 0xad43d4, 0xe54929,
+0x10d5fd, 0xfcbe00, 0xcc941e, 0xeece70, 0xf53e13, 0x80f1ec,
+0xc3e7b3, 0x28f8c7, 0x940593, 0x3e71c1, 0xb3092e, 0xf3450b,
+0x9c1288, 0x7b20ab, 0x9fb52e, 0xc29247, 0x2f327b, 0x6d550c,
+0x90a772, 0x1fe76b, 0x96cb31, 0x4a1679, 0xe27941, 0x89dff4,
+0x9794e8, 0x84e6e2, 0x973199, 0x6bed88, 0x365f5f, 0x0efdbb,
+0xb49a48, 0x6ca467, 0x427271, 0x325d8d, 0xb8159f, 0x09e5bc,
+0x25318d, 0x3974f7, 0x1c0530, 0x010c0d, 0x68084b, 0x58ee2c,
+0x90aa47, 0x02e774, 0x24d6bd, 0xa67df7, 0x72486e, 0xef169f,
+0xa6948e, 0xf691b4, 0x5153d1, 0xf20acf, 0x339820, 0x7e4bf5,
+0x6863b2, 0x5f3edd, 0x035d40, 0x7f8985, 0x295255, 0xc06437,
+0x10d86d, 0x324832, 0x754c5b, 0xd4714e, 0x6e5445, 0xc1090b,
+0x69f52a, 0xd56614, 0x9d0727, 0x50045d, 0xdb3bb4, 0xc576ea,
+0x17f987, 0x7d6b49, 0xba271d, 0x296996, 0xacccc6, 0x5414ad,
+0x6ae290, 0x89d988, 0x50722c, 0xbea404, 0x940777, 0x7030f3,
+0x27fc00, 0xa871ea, 0x49c266, 0x3de064, 0x83dd97, 0x973fa3,
+0xfd9443, 0x8c860d, 0xde4131, 0x9d3992, 0x8c70dd, 0xe7b717,
+0x3bdf08, 0x2b3715, 0xa0805c, 0x93805a, 0x921110, 0xd8e80f,
+0xaf806c, 0x4bffdb, 0x0f9038, 0x761859, 0x15a562, 0xbbcb61,
+0xb989c7, 0xbd4010, 0x04f2d2, 0x277549, 0xf6b6eb, 0xbb22db,
+0xaa140a, 0x2f2689, 0x768364, 0x333b09, 0x1a940e, 0xaa3a51,
+0xc2a31d, 0xaeedaf, 0x12265c, 0x4dc26d, 0x9c7a2d, 0x9756c0,
+0x833f03, 0xf6f009, 0x8c402b, 0x99316d, 0x07b439, 0x15200c,
+0x5bc3d8, 0xc492f5, 0x4badc6, 0xa5ca4e, 0xcd37a7, 0x36a9e6,
+0x9492ab, 0x6842dd, 0xde6319, 0xef8c76, 0x528b68, 0x37dbfc,
+0xaba1ae, 0x3115df, 0xa1ae00, 0xdafb0c, 0x664d64, 0xb705ed,
+0x306529, 0xbf5657, 0x3aff47, 0xb9f96a, 0xf3be75, 0xdf9328,
+0x3080ab, 0xf68c66, 0x15cb04, 0x0622fa, 0x1de4d9, 0xa4b33d,
+0x8f1b57, 0x09cd36, 0xe9424e, 0xa4be13, 0xb52333, 0x1aaaf0,
+0xa8654f, 0xa5c1d2, 0x0f3f0b, 0xcd785b, 0x76f923, 0x048b7b,
+0x721789, 0x53a6c6, 0xe26e6f, 0x00ebef, 0x584a9b, 0xb7dac4,
+0xba66aa, 0xcfcf76, 0x1d02d1, 0x2df1b1, 0xc1998c, 0x77adc3,
+0xda4886, 0xa05df7, 0xf480c6, 0x2ff0ac, 0x9aecdd, 0xbc5c3f,
+0x6dded0, 0x1fc790, 0xb6db2a, 0x3a25a3, 0x9aaf00, 0x9353ad,
+0x0457b6, 0xb42d29, 0x7e804b, 0xa707da, 0x0eaa76, 0xa1597b,
+0x2a1216, 0x2db7dc, 0xfde5fa, 0xfedb89, 0xfdbe89, 0x6c76e4,
+0xfca906, 0x70803e, 0x156e85, 0xff87fd, 0x073e28, 0x336761,
+0x86182a, 0xeabd4d, 0xafe7b3, 0x6e6d8f, 0x396795, 0x5bbf31,
+0x48d784, 0x16df30, 0x432dc7, 0x356125, 0xce70c9, 0xb8cb30,
+0xfd6cbf, 0xa200a4, 0xe46c05, 0xa0dd5a, 0x476f21, 0xd21262,
+0x845cb9, 0x496170, 0xe0566b, 0x015299, 0x375550, 0xb7d51e,
+0xc4f133, 0x5f6e13, 0xe4305d, 0xa92e85, 0xc3b21d, 0x3632a1,
+0xa4b708, 0xd4b1ea, 0x21f716, 0xe4698f, 0x77ff27, 0x80030c,
+0x2d408d, 0xa0cd4f, 0x99a520, 0xd3a2b3, 0x0a5d2f, 0x42f9b4,
+0xcbda11, 0xd0be7d, 0xc1db9b, 0xbd17ab, 0x81a2ca, 0x5c6a08,
+0x17552e, 0x550027, 0xf0147f, 0x8607e1, 0x640b14, 0x8d4196,
+0xdebe87, 0x2afdda, 0xb6256b, 0x34897b, 0xfef305, 0x9ebfb9,
+0x4f6a68, 0xa82a4a, 0x5ac44f, 0xbcf82d, 0x985ad7, 0x95c7f4,
+0x8d4d0d, 0xa63a20, 0x5f57a4, 0xb13f14, 0x953880, 0x0120cc,
+0x86dd71, 0xb6dec9, 0xf560bf, 0x11654d, 0x6b0701, 0xacb08c,
+0xd0c0b2, 0x485551, 0x0efb1e, 0xc37295, 0x3b06a3, 0x3540c0,
+0x7bdc06, 0xcc45e0, 0xfa294e, 0xc8cad6, 0x41f3e8, 0xde647c,
+0xd8649b, 0x31bed9, 0xc397a4, 0xd45877, 0xc5e369, 0x13daf0,
+0x3c3aba, 0x461846, 0x5f7555, 0xf5bdd2, 0xc6926e, 0x5d2eac,
+0xed440e, 0x423e1c, 0x87c461, 0xe9fd29, 0xf3d6e7, 0xca7c22,
+0x35916f, 0xc5e008, 0x8dd7ff, 0xe26a6e, 0xc6fdb0, 0xc10893,
+0x745d7c, 0xb2ad6b, 0x9d6ecd, 0x7b723e, 0x6a11c6, 0xa9cff7,
+0xdf7329, 0xbac9b5, 0x5100b7, 0x0db2e2, 0x24ba74, 0x607de5,
+0x8ad874, 0x2c150d, 0x0c1881, 0x94667e, 0x162901, 0x767a9f,
+0xbefdfd, 0xef4556, 0x367ed9, 0x13d9ec, 0xb9ba8b, 0xfc97c4,
+0x27a831, 0xc36ef1, 0x36c594, 0x56a8d8, 0xb5a8b4, 0x0ecccf,
+0x2d8912, 0x34576f, 0x89562c, 0xe3ce99, 0xb920d6, 0xaa5e6b,
+0x9c2a3e, 0xcc5f11, 0x4a0bfd, 0xfbf4e1, 0x6d3b8e, 0x2c86e2,
+0x84d4e9, 0xa9b4fc, 0xd1eeef, 0xc9352e, 0x61392f, 0x442138,
+0xc8d91b, 0x0afc81, 0x6a4afb, 0xd81c2f, 0x84b453, 0x8c994e,
+0xcc2254, 0xdc552a, 0xd6c6c0, 0x96190b, 0xb8701a, 0x649569,
+0x605a26, 0xee523f, 0x0f117f, 0x11b5f4, 0xf5cbfc, 0x2dbc34,
+0xeebc34, 0xcc5de8, 0x605edd, 0x9b8e67, 0xef3392, 0xb817c9,
+0x9b5861, 0xbc57e1, 0xc68351, 0x103ed8, 0x4871dd, 0xdd1c2d,
+0xa118af, 0x462c21, 0xd7f359, 0x987ad9, 0xc0549e, 0xfa864f,
+0xfc0656, 0xae79e5, 0x362289, 0x22ad38, 0xdc9367, 0xaae855,
+0x382682, 0x9be7ca, 0xa40d51, 0xb13399, 0x0ed7a9, 0x480569,
+0xf0b265, 0xa7887f, 0x974c88, 0x36d1f9, 0xb39221, 0x4a827b,
+0x21cf98, 0xdc9f40, 0x5547dc, 0x3a74e1, 0x42eb67, 0xdf9dfe,
+0x5fd45e, 0xa4677b, 0x7aacba, 0xa2f655, 0x23882b, 0x55ba41,
+0x086e59, 0x862a21, 0x834739, 0xe6e389, 0xd49ee5, 0x40fb49,
+0xe956ff, 0xca0f1c, 0x8a59c5, 0x2bfa94, 0xc5c1d3, 0xcfc50f,
+0xae5adb, 0x86c547, 0x624385, 0x3b8621, 0x94792c, 0x876110,
+0x7b4c2a, 0x1a2c80, 0x12bf43, 0x902688, 0x893c78, 0xe4c4a8,
+0x7bdbe5, 0xc23ac4, 0xeaf426, 0x8a67f7, 0xbf920d, 0x2ba365,
+0xb1933d, 0x0b7cbd, 0xdc51a4, 0x63dd27, 0xdde169, 0x19949a,
+0x9529a8, 0x28ce68, 0xb4ed09, 0x209f44, 0xca984e, 0x638270,
+0x237c7e, 0x32b90f, 0x8ef5a7, 0xe75614, 0x08f121, 0x2a9db5,
+0x4d7e6f, 0x5119a5, 0xabf9b5, 0xd6df82, 0x61dd96, 0x023616,
+0x9f3ac4, 0xa1a283, 0x6ded72, 0x7a8d39, 0xa9b882, 0x5c326b,
+0x5b2746, 0xed3400, 0x7700d2, 0x55f4fc, 0x4d5901, 0x8071e0,
+0xe13f89, 0xb295f3, 0x64a8f1, 0xaea74b, 0x38fc4c, 0xeab2bb,
+0x47270b, 0xabc3a7, 0x34ba60, 0x52dd34, 0xf8563a, 0xeb7e8a,
+0x31bb36, 0x5895b7, 0x47f7a9, 0x94c3aa, 0xd39225, 0x1e7f3e,
+0xd8974e, 0xbba94f, 0xd8ae01, 0xe661b4, 0x393d8e, 0xa523aa,
+0x33068e, 0x1633b5, 0x3bb188, 0x1d3a9d, 0x4013d0, 0xcc1be5,
+0xf862e7, 0x3bf28f, 0x39b5bf, 0x0bc235, 0x22747e, 0xa247c0,
+0xd52d1f, 0x19add3, 0x9094df, 0x9311d0, 0xb42b25, 0x496db2,
+0xe264b2, 0x5ef135, 0x3bc6a4, 0x1a4ad0, 0xaac92e, 0x64e886,
+0x573091, 0x982cfb, 0x311b1a, 0x08728b, 0xbdcee1, 0x60e142,
+0xeb641d, 0xd0bba3, 0xe559d4, 0x597b8c, 0x2a4483, 0xf332ba,
+0xf84867, 0x2c8d1b, 0x2fa9b0, 0x50f3dd, 0xf9f573, 0xdb61b4,
+0xfe233e, 0x6c41a6, 0xeea318, 0x775a26, 0xbc5e5c, 0xcea708,
+0x94dc57, 0xe20196, 0xf1e839, 0xbe4851, 0x5d2d2f, 0x4e9555,
+0xd96ec2, 0xe7d755, 0x6304e0, 0xc02e0e, 0xfc40a0, 0xbbf9b3,
+0x7125a7, 0x222dfb, 0xf619d8, 0x838c1c, 0x6619e6, 0xb20d55,
+0xbb5137, 0x79e809, 0xaf9149, 0x0d73de, 0x0b0da5, 0xce7f58,
+0xac1934, 0x724667, 0x7a1a13, 0x9e26bc, 0x4555e7, 0x585cb5,
+0x711d14, 0x486991, 0x480d60, 0x56adab, 0xd62f64, 0x96ee0c,
+0x212ff3, 0x5d6d88, 0xa67684, 0x95651e, 0xab9e0a, 0x4ddefe,
+0x571010, 0x836a39, 0xf8ea31, 0x9e381d, 0xeac8b1, 0xcac96b,
+0x37f21e, 0xd505e9, 0x984743, 0x9fc56c, 0x0331b7, 0x3b8bf8,
+0x86e56a, 0x8dc343, 0x6230e7, 0x93cfd5, 0x6a8f2d, 0x733005,
+0x1af021, 0xa09fcb, 0x7415a1, 0xd56b23, 0x6ff725, 0x2f4bc7,
+0xb8a591, 0x7fac59, 0x5c55de, 0x212c38, 0xb13296, 0x5cff50,
+0x366262, 0xfa7b16, 0xf4d9a6, 0x2acfe7, 0xf07403, 0xd4d604,
+0x6fd916, 0x31b1bf, 0xcbb450, 0x5bd7c8, 0x0ce194, 0x6bd643,
+0x4fd91c, 0xdf4543, 0x5f3453, 0xe2b5aa, 0xc9aec8, 0x131485,
+0xf9d2bf, 0xbadb9e, 0x76f5b9, 0xaf15cf, 0xca3182, 0x14b56d,
+0xe9fe4d, 0x50fc35, 0xf5aed5, 0xa2d0c1, 0xc96057, 0x192eb6,
+0xe91d92, 0x07d144, 0xaea3c6, 0x343566, 0x26d5b4, 0x3161e2,
+0x37f1a2, 0x209eff, 0x958e23, 0x493798, 0x35f4a6, 0x4bdc02,
+0xc2be13, 0xbe80a0, 0x0b72a3, 0x115c5f, 0x1e1bd1, 0x0db4d3,
+0x869e85, 0x96976b, 0x2ac91f, 0x8a26c2, 0x3070f0, 0x041412,
+0xfc9fa5, 0xf72a38, 0x9c6878, 0xe2aa76, 0x50cfe1, 0x559274,
+0x934e38, 0x0a92f7, 0x5533f0, 0xa63db4, 0x399971, 0xe2b755,
+0xa98a7c, 0x008f19, 0xac54d2, 0x2ea0b4, 0xf5f3e0, 0x60c849,
+0xffd269, 0xae52ce, 0x7a5fdd, 0xe9ce06, 0xfb0ae8, 0xa50cce,
+0xea9d3e, 0x3766dd, 0xb834f5, 0x0da090, 0x846f88, 0x4ae3d5,
+0x099a03, 0x2eae2d, 0xfcb40a, 0xfb9b33, 0xe281dd, 0x1b16ba,
+0xd8c0af, 0xd96b97, 0xb52dc9, 0x9c277f, 0x5951d5, 0x21ccd6,
+0xb6496b, 0x584562, 0xb3baf2, 0xa1a5c4, 0x7ca2cf, 0xa9b93d,
+0x7b7b89, 0x483d38,
+};
+
+int32_t
+__ieee754_rem_pio2l (long double x, long double *y)
+{
+ double tx[3], ty[3];
+ int32_t se, j0;
+ u_int32_t i0, i1;
+ int sx;
+ int n, exp;
+
+ GET_LDOUBLE_WORDS (se, i0, i1, x);
+ sx = (se >> 15) & 1;
+ j0 = (se & 0x7fff) - 0x3fff;
+
+ if (j0 < -1)
+ {
+ /* |x| < pi/4. */
+ y[0] = x;
+ y[1] = 0;
+ return 0;
+ }
+
+ if (j0 >= 0x8000)
+ {
+ /* x is infinite or NaN. */
+ y[0] = x - x;
+ y[1] = y[0];
+ return 0;
+ }
+
+ /* Split the 64 bits of the mantissa into three 24-bit integers
+ stored in a double array. */
+ exp = j0 - 23;
+ tx[0] = (double) (i0 >> 8);
+ tx[1] = (double) (((i0 << 16) | (i1 >> 16)) & 0xffffff);
+ tx[2] = (double) ((i1 << 8) & 0xffffff);
+
+ n = __kernel_rem_pio2 (tx, ty, exp, 3, 2, two_over_pi);
+
+ /* The result is now stored in two double values, we need to convert
+ it into two long double values. */
+ if (sx == 0)
+ {
+ y[0] = (long double) ty[0] + (long double) ty[1];
+ y[1] = ty[1] - (y[0] - ty[0]);
+ return n;
+ }
+ else
+ {
+ y[0] = -((long double) ty[0] + (long double) ty[1]);
+ y[1] = -ty[1] - (y[0] + ty[0]);
+ return -n;
+ }
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-96/e_sinhl.c b/REORG.TODO/sysdeps/ieee754/ldbl-96/e_sinhl.c
new file mode 100644
index 0000000000..095b142621
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-96/e_sinhl.c
@@ -0,0 +1,87 @@
+/* e_asinhl.c -- long double version of e_asinh.c.
+ * Conversion to long double by Ulrich Drepper,
+ * Cygnus Support, drepper@cygnus.com.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: $";
+#endif
+
+/* __ieee754_sinhl(x)
+ * Method :
+ * mathematically sinh(x) if defined to be (exp(x)-exp(-x))/2
+ * 1. Replace x by |x| (sinhl(-x) = -sinhl(x)).
+ * 2.
+ * E + E/(E+1)
+ * 0 <= x <= 25 : sinhl(x) := --------------, E=expm1l(x)
+ * 2
+ *
+ * 25 <= x <= lnovft : sinhl(x) := expl(x)/2
+ * lnovft <= x <= ln2ovft: sinhl(x) := expl(x/2)/2 * expl(x/2)
+ * ln2ovft < x : sinhl(x) := x*shuge (overflow)
+ *
+ * Special cases:
+ * sinhl(x) is |x| if x is +INF, -INF, or NaN.
+ * only sinhl(0)=0 is exact for finite x.
+ */
+
+#include <float.h>
+#include <math.h>
+#include <math_private.h>
+
+static const long double one = 1.0, shuge = 1.0e4931L;
+
+long double
+__ieee754_sinhl(long double x)
+{
+ long double t,w,h;
+ u_int32_t jx,ix,i0,i1;
+
+ /* Words of |x|. */
+ GET_LDOUBLE_WORDS(jx,i0,i1,x);
+ ix = jx&0x7fff;
+
+ /* x is INF or NaN */
+ if(__builtin_expect(ix==0x7fff, 0)) return x+x;
+
+ h = 0.5;
+ if (jx & 0x8000) h = -h;
+ /* |x| in [0,25], return sign(x)*0.5*(E+E/(E+1))) */
+ if (ix < 0x4003 || (ix == 0x4003 && i0 <= 0xc8000000)) { /* |x|<25 */
+ if (ix<0x3fdf) { /* |x|<2**-32 */
+ math_check_force_underflow (x);
+ if(shuge+x>one) return x;/* sinh(tiny) = tiny with inexact */
+ }
+ t = __expm1l(fabsl(x));
+ if(ix<0x3fff) return h*(2.0*t-t*t/(t+one));
+ return h*(t+t/(t+one));
+ }
+
+ /* |x| in [25, log(maxdouble)] return 0.5*exp(|x|) */
+ if (ix < 0x400c || (ix == 0x400c && i0 < 0xb17217f7))
+ return h*__ieee754_expl(fabsl(x));
+
+ /* |x| in [log(maxdouble), overflowthreshold] */
+ if (ix<0x400c || (ix == 0x400c && (i0 < 0xb174ddc0
+ || (i0 == 0xb174ddc0
+ && i1 <= 0x31aec0ea)))) {
+ w = __ieee754_expl(0.5*fabsl(x));
+ t = h*w;
+ return t*w;
+ }
+
+ /* |x| > overflowthreshold, sinhl(x) overflow */
+ return x*shuge;
+}
+strong_alias (__ieee754_sinhl, __sinhl_finite)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-96/gamma_product.c b/REORG.TODO/sysdeps/ieee754/ldbl-96/gamma_product.c
new file mode 100644
index 0000000000..31931bbd17
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-96/gamma_product.c
@@ -0,0 +1,43 @@
+/* Compute a product of X, X+1, ..., with an error estimate.
+ Copyright (C) 2013-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+#include <math_private.h>
+#include <float.h>
+
+/* Compute the product of X + X_EPS, X + X_EPS + 1, ..., X + X_EPS + N
+ - 1, in the form R * (1 + *EPS) where the return value R is an
+ approximation to the product and *EPS is set to indicate the
+ approximate error in the return value. X is such that all the
+ values X + 1, ..., X + N - 1 are exactly representable, and X_EPS /
+ X is small enough that factors quadratic in it can be
+ neglected. */
+
+double
+__gamma_product (double x, double x_eps, int n, double *eps)
+{
+ long double x_full = (long double) x + (long double) x_eps;
+ long double ret = x_full;
+ for (int i = 1; i < n; i++)
+ ret *= x_full + i;
+
+ double fret = math_narrow_eval ((double) ret);
+ *eps = (ret - fret) / fret;
+
+ return fret;
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-96/gamma_productl.c b/REORG.TODO/sysdeps/ieee754/ldbl-96/gamma_productl.c
new file mode 100644
index 0000000000..0f1ccc4a2d
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-96/gamma_productl.c
@@ -0,0 +1,45 @@
+/* Compute a product of X, X+1, ..., with an error estimate.
+ Copyright (C) 2013-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+#include <math_private.h>
+#include <mul_splitl.h>
+
+/* Compute the product of X + X_EPS, X + X_EPS + 1, ..., X + X_EPS + N
+ - 1, in the form R * (1 + *EPS) where the return value R is an
+ approximation to the product and *EPS is set to indicate the
+ approximate error in the return value. X is such that all the
+ values X + 1, ..., X + N - 1 are exactly representable, and X_EPS /
+ X is small enough that factors quadratic in it can be
+ neglected. */
+
+long double
+__gamma_productl (long double x, long double x_eps, int n, long double *eps)
+{
+ SET_RESTORE_ROUNDL (FE_TONEAREST);
+ long double ret = x;
+ *eps = x_eps / x;
+ for (int i = 1; i < n; i++)
+ {
+ *eps += x_eps / (x + i);
+ long double lo;
+ mul_splitl (&ret, &lo, ret, x + i);
+ *eps += lo / ret;
+ }
+ return ret;
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-96/include/bits/iscanonical.h b/REORG.TODO/sysdeps/ieee754/ldbl-96/include/bits/iscanonical.h
new file mode 100644
index 0000000000..bee080bd29
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-96/include/bits/iscanonical.h
@@ -0,0 +1,5 @@
+#include_next <bits/iscanonical.h>
+
+#ifndef _ISOMAC
+libm_hidden_proto (__iscanonicall)
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-96/k_cosl.c b/REORG.TODO/sysdeps/ieee754/ldbl-96/k_cosl.c
new file mode 100644
index 0000000000..8e3cd49f81
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-96/k_cosl.c
@@ -0,0 +1,123 @@
+/* Extended-precision floating point cosine on <-pi/4,pi/4>.
+ Copyright (C) 1999-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Based on quad-precision cosine by Jakub Jelinek <jj@ultra.linux.cz>
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+#include <math_private.h>
+
+/* The polynomials have not been optimized for extended-precision and
+ may contain more terms than needed. */
+
+static const long double c[] = {
+#define ONE c[0]
+ 1.00000000000000000000000000000000000E+00L,
+
+/* cos x ~ ONE + x^2 ( SCOS1 + SCOS2 * x^2 + ... + SCOS4 * x^6 + SCOS5 * x^8 )
+ x in <0,1/256> */
+#define SCOS1 c[1]
+#define SCOS2 c[2]
+#define SCOS3 c[3]
+#define SCOS4 c[4]
+#define SCOS5 c[5]
+-5.00000000000000000000000000000000000E-01L,
+ 4.16666666666666666666666666556146073E-02L,
+-1.38888888888888888888309442601939728E-03L,
+ 2.48015873015862382987049502531095061E-05L,
+-2.75573112601362126593516899592158083E-07L,
+
+/* cos x ~ ONE + x^2 ( COS1 + COS2 * x^2 + ... + COS7 * x^12 + COS8 * x^14 )
+ x in <0,0.1484375> */
+#define COS1 c[6]
+#define COS2 c[7]
+#define COS3 c[8]
+#define COS4 c[9]
+#define COS5 c[10]
+#define COS6 c[11]
+#define COS7 c[12]
+#define COS8 c[13]
+-4.99999999999999999999999999999999759E-01L,
+ 4.16666666666666666666666666651287795E-02L,
+-1.38888888888888888888888742314300284E-03L,
+ 2.48015873015873015867694002851118210E-05L,
+-2.75573192239858811636614709689300351E-07L,
+ 2.08767569877762248667431926878073669E-09L,
+-1.14707451049343817400420280514614892E-11L,
+ 4.77810092804389587579843296923533297E-14L,
+
+/* sin x ~ ONE * x + x^3 ( SSIN1 + SSIN2 * x^2 + ... + SSIN4 * x^6 + SSIN5 * x^8 )
+ x in <0,1/256> */
+#define SSIN1 c[14]
+#define SSIN2 c[15]
+#define SSIN3 c[16]
+#define SSIN4 c[17]
+#define SSIN5 c[18]
+-1.66666666666666666666666666666666659E-01L,
+ 8.33333333333333333333333333146298442E-03L,
+-1.98412698412698412697726277416810661E-04L,
+ 2.75573192239848624174178393552189149E-06L,
+-2.50521016467996193495359189395805639E-08L,
+};
+
+#define SINCOSL_COS_HI 0
+#define SINCOSL_COS_LO 1
+#define SINCOSL_SIN_HI 2
+#define SINCOSL_SIN_LO 3
+extern const long double __sincosl_table[];
+
+long double
+__kernel_cosl(long double x, long double y)
+{
+ long double h, l, z, sin_l, cos_l_m1;
+ int index;
+
+ if (signbit (x))
+ {
+ x = -x;
+ y = -y;
+ }
+ if (x < 0.1484375L)
+ {
+ /* Argument is small enough to approximate it by a Chebyshev
+ polynomial of degree 16. */
+ if (x < 0x1p-33L)
+ if (!((int)x)) return ONE; /* generate inexact */
+ z = x * x;
+ return ONE + (z*(COS1+z*(COS2+z*(COS3+z*(COS4+
+ z*(COS5+z*(COS6+z*(COS7+z*COS8))))))));
+ }
+ else
+ {
+ /* So that we don't have to use too large polynomial, we find
+ l and h such that x = l + h, where fabsl(l) <= 1.0/256 with 83
+ possible values for h. We look up cosl(h) and sinl(h) in
+ pre-computed tables, compute cosl(l) and sinl(l) using a
+ Chebyshev polynomial of degree 10(11) and compute
+ cosl(h+l) = cosl(h)cosl(l) - sinl(h)sinl(l). */
+ index = (int) (128 * (x - (0.1484375L - 1.0L / 256.0L)));
+ h = 0.1484375L + index / 128.0;
+ index *= 4;
+ l = y - (h - x);
+ z = l * l;
+ sin_l = l*(ONE+z*(SSIN1+z*(SSIN2+z*(SSIN3+z*(SSIN4+z*SSIN5)))));
+ cos_l_m1 = z*(SCOS1+z*(SCOS2+z*(SCOS3+z*(SCOS4+z*SCOS5))));
+ return __sincosl_table [index + SINCOSL_COS_HI]
+ + (__sincosl_table [index + SINCOSL_COS_LO]
+ - (__sincosl_table [index + SINCOSL_SIN_HI] * sin_l
+ - __sincosl_table [index + SINCOSL_COS_HI] * cos_l_m1));
+ }
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-96/k_sinl.c b/REORG.TODO/sysdeps/ieee754/ldbl-96/k_sinl.c
new file mode 100644
index 0000000000..d56023aa8d
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-96/k_sinl.c
@@ -0,0 +1,130 @@
+/* Quad-precision floating point sine on <-pi/4,pi/4>.
+ Copyright (C) 1999-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Based on quad-precision sine by Jakub Jelinek <jj@ultra.linux.cz>
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+/* The polynomials have not been optimized for extended-precision and
+ may contain more terms than needed. */
+
+#include <float.h>
+#include <math.h>
+#include <math_private.h>
+
+/* The polynomials have not been optimized for extended-precision and
+ may contain more terms than needed. */
+
+static const long double c[] = {
+#define ONE c[0]
+ 1.00000000000000000000000000000000000E+00L,
+
+/* cos x ~ ONE + x^2 ( SCOS1 + SCOS2 * x^2 + ... + SCOS4 * x^6 + SCOS5 * x^8 )
+ x in <0,1/256> */
+#define SCOS1 c[1]
+#define SCOS2 c[2]
+#define SCOS3 c[3]
+#define SCOS4 c[4]
+#define SCOS5 c[5]
+-5.00000000000000000000000000000000000E-01L,
+ 4.16666666666666666666666666556146073E-02L,
+-1.38888888888888888888309442601939728E-03L,
+ 2.48015873015862382987049502531095061E-05L,
+-2.75573112601362126593516899592158083E-07L,
+
+/* sin x ~ ONE * x + x^3 ( SIN1 + SIN2 * x^2 + ... + SIN7 * x^12 + SIN8 * x^14 )
+ x in <0,0.1484375> */
+#define SIN1 c[6]
+#define SIN2 c[7]
+#define SIN3 c[8]
+#define SIN4 c[9]
+#define SIN5 c[10]
+#define SIN6 c[11]
+#define SIN7 c[12]
+#define SIN8 c[13]
+-1.66666666666666666666666666666666538e-01L,
+ 8.33333333333333333333333333307532934e-03L,
+-1.98412698412698412698412534478712057e-04L,
+ 2.75573192239858906520896496653095890e-06L,
+-2.50521083854417116999224301266655662e-08L,
+ 1.60590438367608957516841576404938118e-10L,
+-7.64716343504264506714019494041582610e-13L,
+ 2.81068754939739570236322404393398135e-15L,
+
+/* sin x ~ ONE * x + x^3 ( SSIN1 + SSIN2 * x^2 + ... + SSIN4 * x^6 + SSIN5 * x^8 )
+ x in <0,1/256> */
+#define SSIN1 c[14]
+#define SSIN2 c[15]
+#define SSIN3 c[16]
+#define SSIN4 c[17]
+#define SSIN5 c[18]
+-1.66666666666666666666666666666666659E-01L,
+ 8.33333333333333333333333333146298442E-03L,
+-1.98412698412698412697726277416810661E-04L,
+ 2.75573192239848624174178393552189149E-06L,
+-2.50521016467996193495359189395805639E-08L,
+};
+
+#define SINCOSL_COS_HI 0
+#define SINCOSL_COS_LO 1
+#define SINCOSL_SIN_HI 2
+#define SINCOSL_SIN_LO 3
+extern const long double __sincosl_table[];
+
+long double
+__kernel_sinl(long double x, long double y, int iy)
+{
+ long double absx, h, l, z, sin_l, cos_l_m1;
+ int index;
+
+ absx = fabsl (x);
+ if (absx < 0.1484375L)
+ {
+ /* Argument is small enough to approximate it by a Chebyshev
+ polynomial of degree 17. */
+ if (absx < 0x1p-33L)
+ {
+ math_check_force_underflow (x);
+ if (!((int)x)) return x; /* generate inexact */
+ }
+ z = x * x;
+ return x + (x * (z*(SIN1+z*(SIN2+z*(SIN3+z*(SIN4+
+ z*(SIN5+z*(SIN6+z*(SIN7+z*SIN8)))))))));
+ }
+ else
+ {
+ /* So that we don't have to use too large polynomial, we find
+ l and h such that x = l + h, where fabsl(l) <= 1.0/256 with 83
+ possible values for h. We look up cosl(h) and sinl(h) in
+ pre-computed tables, compute cosl(l) and sinl(l) using a
+ Chebyshev polynomial of degree 10(11) and compute
+ sinl(h+l) = sinl(h)cosl(l) + cosl(h)sinl(l). */
+ index = (int) (128 * (absx - (0.1484375L - 1.0L / 256.0L)));
+ h = 0.1484375L + index / 128.0;
+ index *= 4;
+ if (iy)
+ l = (x < 0 ? -y : y) - (h - absx);
+ else
+ l = absx - h;
+ z = l * l;
+ sin_l = l*(ONE+z*(SSIN1+z*(SSIN2+z*(SSIN3+z*(SSIN4+z*SSIN5)))));
+ cos_l_m1 = z*(SCOS1+z*(SCOS2+z*(SCOS3+z*(SCOS4+z*SCOS5))));
+ z = __sincosl_table [index + SINCOSL_SIN_HI]
+ + (__sincosl_table [index + SINCOSL_SIN_LO]
+ + (__sincosl_table [index + SINCOSL_SIN_HI] * cos_l_m1)
+ + (__sincosl_table [index + SINCOSL_COS_HI] * sin_l));
+ return (x < 0) ? -z : z;
+ }
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-96/k_tanl.c b/REORG.TODO/sysdeps/ieee754/ldbl-96/k_tanl.c
new file mode 100644
index 0000000000..f8641d5ce4
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-96/k_tanl.c
@@ -0,0 +1,152 @@
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+/*
+ Long double expansions are
+ Copyright (C) 2001 Stephen L. Moshier <moshier@na-net.ornl.gov>
+ and are incorporated herein by permission of the author. The author
+ reserves the right to distribute this material elsewhere under different
+ copying permissions. These modifications are distributed here under
+ the following terms:
+
+ This 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 2.1 of the License, or (at your option) any later version.
+
+ This 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 this library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+/* __kernel_tanl( x, y, k )
+ * kernel tan function on [-pi/4, pi/4], pi/4 ~ 0.7854
+ * Input x is assumed to be bounded by ~pi/4 in magnitude.
+ * Input y is the tail of x.
+ * Input k indicates whether tan (if k=1) or
+ * -1/tan (if k= -1) is returned.
+ *
+ * Algorithm
+ * 1. Since tan(-x) = -tan(x), we need only to consider positive x.
+ * 2. if x < 2^-33, return x with inexact if x!=0.
+ * 3. tan(x) is approximated by a rational form x + x^3 / 3 + x^5 R(x^2)
+ * on [0,0.67433].
+ *
+ * Note: tan(x+y) = tan(x) + tan'(x)*y
+ * ~ tan(x) + (1+x*x)*y
+ * Therefore, for better accuracy in computing tan(x+y), let
+ * r = x^3 * R(x^2)
+ * then
+ * tan(x+y) = x + (x^3 / 3 + (x^2 *(r+y)+y))
+ *
+ * 4. For x in [0.67433,pi/4], let y = pi/4 - x, then
+ * tan(x) = tan(pi/4-y) = (1-tan(y))/(1+tan(y))
+ * = 1 - 2*(tan(y) - (tan(y)^2)/(1+tan(y)))
+ */
+
+#include <float.h>
+#include <math.h>
+#include <math_private.h>
+#include <libc-diag.h>
+
+static const long double
+ one = 1.0L,
+ pio4hi = 0xc.90fdaa22168c235p-4L,
+ pio4lo = -0x3.b399d747f23e32ecp-68L,
+
+ /* tan x = x + x^3 / 3 + x^5 T(x^2)/U(x^2)
+ 0 <= x <= 0.6743316650390625
+ Peak relative error 8.0e-36 */
+ TH = 3.333333333333333333333333333333333333333E-1L,
+ T0 = -1.813014711743583437742363284336855889393E7L,
+ T1 = 1.320767960008972224312740075083259247618E6L,
+ T2 = -2.626775478255838182468651821863299023956E4L,
+ T3 = 1.764573356488504935415411383687150199315E2L,
+ T4 = -3.333267763822178690794678978979803526092E-1L,
+
+ U0 = -1.359761033807687578306772463253710042010E8L,
+ U1 = 6.494370630656893175666729313065113194784E7L,
+ U2 = -4.180787672237927475505536849168729386782E6L,
+ U3 = 8.031643765106170040139966622980914621521E4L,
+ U4 = -5.323131271912475695157127875560667378597E2L;
+ /* 1.000000000000000000000000000000000000000E0 */
+
+
+long double
+__kernel_tanl (long double x, long double y, int iy)
+{
+ long double z, r, v, w, s;
+ long double absx = fabsl (x);
+ int sign;
+
+ if (absx < 0x1p-33)
+ {
+ if ((int) x == 0)
+ { /* generate inexact */
+ if (x == 0 && iy == -1)
+ return one / fabsl (x);
+ else if (iy == 1)
+ {
+ math_check_force_underflow_nonneg (absx);
+ return x;
+ }
+ else
+ return -one / x;
+ }
+ }
+ if (absx >= 0.6743316650390625L)
+ {
+ if (signbit (x))
+ {
+ x = -x;
+ y = -y;
+ sign = -1;
+ }
+ else
+ sign = 1;
+ z = pio4hi - x;
+ w = pio4lo - y;
+ x = z + w;
+ y = 0.0;
+ }
+ z = x * x;
+ r = T0 + z * (T1 + z * (T2 + z * (T3 + z * T4)));
+ v = U0 + z * (U1 + z * (U2 + z * (U3 + z * (U4 + z))));
+ r = r / v;
+
+ s = z * x;
+ r = y + z * (s * r + y);
+ r += TH * s;
+ w = x + r;
+ if (absx >= 0.6743316650390625L)
+ {
+ v = (long double) iy;
+ w = (v - 2.0 * (x - (w * w / (w + v) - r)));
+ /* SIGN is set for arguments that reach this code, but not
+ otherwise, resulting in warnings that it may be used
+ uninitialized although in the cases where it is used it has
+ always been set. */
+ DIAG_PUSH_NEEDS_COMMENT;
+ DIAG_IGNORE_NEEDS_COMMENT (4.8, "-Wmaybe-uninitialized");
+ if (sign < 0)
+ w = -w;
+ DIAG_POP_NEEDS_COMMENT;
+ return w;
+ }
+ if (iy == 1)
+ return w;
+ else
+ return -1.0 / (x + r);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-96/ldbl2mpn.c b/REORG.TODO/sysdeps/ieee754/ldbl-96/ldbl2mpn.c
new file mode 100644
index 0000000000..425078e1de
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-96/ldbl2mpn.c
@@ -0,0 +1,94 @@
+/* Copyright (C) 1995-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include "gmp.h"
+#include "gmp-impl.h"
+#include "longlong.h"
+#include <ieee754.h>
+#include <float.h>
+#include <math.h>
+#include <stdlib.h>
+
+/* Convert a `long double' in IEEE854 standard double-precision format to a
+ multi-precision integer representing the significand scaled up by its
+ number of bits (64 for long double) and an integral power of two
+ (MPN frexpl). */
+
+mp_size_t
+__mpn_extract_long_double (mp_ptr res_ptr, mp_size_t size,
+ int *expt, int *is_neg,
+ long double value)
+{
+ union ieee854_long_double u;
+ u.d = value;
+
+ *is_neg = u.ieee.negative;
+ *expt = (int) u.ieee.exponent - IEEE854_LONG_DOUBLE_BIAS;
+
+#if BITS_PER_MP_LIMB == 32
+ res_ptr[0] = u.ieee.mantissa1; /* Low-order 32 bits of fraction. */
+ res_ptr[1] = u.ieee.mantissa0; /* High-order 32 bits. */
+ #define N 2
+#elif BITS_PER_MP_LIMB == 64
+ /* Hopefully the compiler will combine the two bitfield extracts
+ and this composition into just the original quadword extract. */
+ res_ptr[0] = ((mp_limb_t) u.ieee.mantissa0 << 32) | u.ieee.mantissa1;
+ #define N 1
+#else
+ #error "mp_limb size " BITS_PER_MP_LIMB "not accounted for"
+#endif
+
+ if (u.ieee.exponent == 0)
+ {
+ /* A biased exponent of zero is a special case.
+ Either it is a zero or it is a denormal number. */
+ if (res_ptr[0] == 0 && res_ptr[N - 1] == 0) /* Assumes N<=2. */
+ /* It's zero. */
+ *expt = 0;
+ else
+ {
+ /* It is a denormal number, meaning it has no implicit leading
+ one bit, and its exponent is in fact the format minimum. */
+ int cnt;
+
+ if (res_ptr[N - 1] != 0)
+ {
+ count_leading_zeros (cnt, res_ptr[N - 1]);
+ if (cnt != 0)
+ {
+#if N == 2
+ res_ptr[N - 1] = res_ptr[N - 1] << cnt
+ | (res_ptr[0] >> (BITS_PER_MP_LIMB - cnt));
+ res_ptr[0] <<= cnt;
+#else
+ res_ptr[N - 1] <<= cnt;
+#endif
+ }
+ *expt = LDBL_MIN_EXP - 1 - cnt;
+ }
+ else
+ {
+ count_leading_zeros (cnt, res_ptr[0]);
+ res_ptr[N - 1] = res_ptr[0] << cnt;
+ res_ptr[0] = 0;
+ *expt = LDBL_MIN_EXP - 1 - BITS_PER_MP_LIMB - cnt;
+ }
+ }
+ }
+
+ return N;
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-96/lgamma_negl.c b/REORG.TODO/sysdeps/ieee754/ldbl-96/lgamma_negl.c
new file mode 100644
index 0000000000..36beb764be
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-96/lgamma_negl.c
@@ -0,0 +1,418 @@
+/* lgammal expanding around zeros.
+ Copyright (C) 2015-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <float.h>
+#include <math.h>
+#include <math_private.h>
+
+static const long double lgamma_zeros[][2] =
+ {
+ { -0x2.74ff92c01f0d82acp+0L, 0x1.360cea0e5f8ed3ccp-68L },
+ { -0x2.bf6821437b201978p+0L, -0x1.95a4b4641eaebf4cp-64L },
+ { -0x3.24c1b793cb35efb8p+0L, -0xb.e699ad3d9ba6545p-68L },
+ { -0x3.f48e2a8f85fca17p+0L, -0xd.4561291236cc321p-68L },
+ { -0x4.0a139e16656030cp+0L, -0x3.9f0b0de18112ac18p-64L },
+ { -0x4.fdd5de9bbabf351p+0L, -0xd.0aa4076988501d8p-68L },
+ { -0x5.021a95fc2db64328p+0L, -0x2.4c56e595394decc8p-64L },
+ { -0x5.ffa4bd647d0357ep+0L, 0x2.b129d342ce12071cp-64L },
+ { -0x6.005ac9625f233b6p+0L, -0x7.c2d96d16385cb868p-68L },
+ { -0x6.fff2fddae1bbff4p+0L, 0x2.9d949a3dc02de0cp-64L },
+ { -0x7.000cff7b7f87adf8p+0L, 0x3.b7d23246787d54d8p-64L },
+ { -0x7.fffe5fe05673c3c8p+0L, -0x2.9e82b522b0ca9d3p-64L },
+ { -0x8.0001a01459fc9f6p+0L, -0xc.b3cec1cec857667p-68L },
+ { -0x8.ffffd1c425e81p+0L, 0x3.79b16a8b6da6181cp-64L },
+ { -0x9.00002e3bb47d86dp+0L, -0x6.d843fedc351deb78p-64L },
+ { -0x9.fffffb606bdfdcdp+0L, -0x6.2ae77a50547c69dp-68L },
+ { -0xa.0000049f93bb992p+0L, -0x7.b45d95e15441e03p-64L },
+ { -0xa.ffffff9466e9f1bp+0L, -0x3.6dacd2adbd18d05cp-64L },
+ { -0xb.0000006b9915316p+0L, 0x2.69a590015bf1b414p-64L },
+ { -0xb.fffffff70893874p+0L, 0x7.821be533c2c36878p-64L },
+ { -0xc.00000008f76c773p+0L, -0x1.567c0f0250f38792p-64L },
+ { -0xc.ffffffff4f6dcf6p+0L, -0x1.7f97a5ffc757d548p-64L },
+ { -0xd.00000000b09230ap+0L, 0x3.f997c22e46fc1c9p-64L },
+ { -0xd.fffffffff36345bp+0L, 0x4.61e7b5c1f62ee89p-64L },
+ { -0xe.000000000c9cba5p+0L, -0x4.5e94e75ec5718f78p-64L },
+ { -0xe.ffffffffff28c06p+0L, -0xc.6604ef30371f89dp-68L },
+ { -0xf.0000000000d73fap+0L, 0xc.6642f1bdf07a161p-68L },
+ { -0xf.fffffffffff28cp+0L, -0x6.0c6621f512e72e5p-64L },
+ { -0x1.000000000000d74p+4L, 0x6.0c6625ebdb406c48p-64L },
+ { -0x1.0ffffffffffff356p+4L, -0x9.c47e7a93e1c46a1p-64L },
+ { -0x1.1000000000000caap+4L, 0x9.c47e7a97778935ap-64L },
+ { -0x1.1fffffffffffff4cp+4L, 0x1.3c31dcbecd2f74d4p-64L },
+ { -0x1.20000000000000b4p+4L, -0x1.3c31dcbeca4c3b3p-64L },
+ { -0x1.2ffffffffffffff6p+4L, -0x8.5b25cbf5f545ceep-64L },
+ { -0x1.300000000000000ap+4L, 0x8.5b25cbf5f547e48p-64L },
+ { -0x1.4p+4L, 0x7.950ae90080894298p-64L },
+ { -0x1.4p+4L, -0x7.950ae9008089414p-64L },
+ { -0x1.5p+4L, 0x5.c6e3bdb73d5c63p-68L },
+ { -0x1.5p+4L, -0x5.c6e3bdb73d5c62f8p-68L },
+ { -0x1.6p+4L, 0x4.338e5b6dfe14a518p-72L },
+ { -0x1.6p+4L, -0x4.338e5b6dfe14a51p-72L },
+ { -0x1.7p+4L, 0x2.ec368262c7033b3p-76L },
+ { -0x1.7p+4L, -0x2.ec368262c7033b3p-76L },
+ { -0x1.8p+4L, 0x1.f2cf01972f577ccap-80L },
+ { -0x1.8p+4L, -0x1.f2cf01972f577ccap-80L },
+ { -0x1.9p+4L, 0x1.3f3ccdd165fa8d4ep-84L },
+ { -0x1.9p+4L, -0x1.3f3ccdd165fa8d4ep-84L },
+ { -0x1.ap+4L, 0xc.4742fe35272cd1cp-92L },
+ { -0x1.ap+4L, -0xc.4742fe35272cd1cp-92L },
+ { -0x1.bp+4L, 0x7.46ac70b733a8c828p-96L },
+ { -0x1.bp+4L, -0x7.46ac70b733a8c828p-96L },
+ { -0x1.cp+4L, 0x4.2862898d42174ddp-100L },
+ { -0x1.cp+4L, -0x4.2862898d42174ddp-100L },
+ { -0x1.dp+4L, 0x2.4b3f31686b15af58p-104L },
+ { -0x1.dp+4L, -0x2.4b3f31686b15af58p-104L },
+ { -0x1.ep+4L, 0x1.3932c5047d60e60cp-108L },
+ { -0x1.ep+4L, -0x1.3932c5047d60e60cp-108L },
+ { -0x1.fp+4L, 0xa.1a6973c1fade217p-116L },
+ { -0x1.fp+4L, -0xa.1a6973c1fade217p-116L },
+ { -0x2p+4L, 0x5.0d34b9e0fd6f10b8p-120L },
+ { -0x2p+4L, -0x5.0d34b9e0fd6f10b8p-120L },
+ { -0x2.1p+4L, 0x2.73024a9ba1aa36a8p-124L },
+ };
+
+static const long double e_hi = 0x2.b7e151628aed2a6cp+0L;
+static const long double e_lo = -0x1.408ea77f630b0c38p-64L;
+
+/* Coefficients B_2k / 2k(2k-1) of x^-(2k-1) in Stirling's
+ approximation to lgamma function. */
+
+static const long double lgamma_coeff[] =
+ {
+ 0x1.5555555555555556p-4L,
+ -0xb.60b60b60b60b60bp-12L,
+ 0x3.4034034034034034p-12L,
+ -0x2.7027027027027028p-12L,
+ 0x3.72a3c5631fe46aep-12L,
+ -0x7.daac36664f1f208p-12L,
+ 0x1.a41a41a41a41a41ap-8L,
+ -0x7.90a1b2c3d4e5f708p-8L,
+ 0x2.dfd2c703c0cfff44p-4L,
+ -0x1.6476701181f39edcp+0L,
+ 0xd.672219167002d3ap+0L,
+ -0x9.cd9292e6660d55bp+4L,
+ 0x8.911a740da740da7p+8L,
+ -0x8.d0cc570e255bf5ap+12L,
+ 0xa.8d1044d3708d1c2p+16L,
+ -0xe.8844d8a169abbc4p+20L,
+ };
+
+#define NCOEFF (sizeof (lgamma_coeff) / sizeof (lgamma_coeff[0]))
+
+/* Polynomial approximations to (|gamma(x)|-1)(x-n)/(x-x0), where n is
+ the integer end-point of the half-integer interval containing x and
+ x0 is the zero of lgamma in that half-integer interval. Each
+ polynomial is expressed in terms of x-xm, where xm is the midpoint
+ of the interval for which the polynomial applies. */
+
+static const long double poly_coeff[] =
+ {
+ /* Interval [-2.125, -2] (polynomial degree 13). */
+ -0x1.0b71c5c54d42eb6cp+0L,
+ -0xc.73a1dc05f349517p-4L,
+ -0x1.ec841408528b6baep-4L,
+ -0xe.37c9da26fc3b492p-4L,
+ -0x1.03cd87c5178991ap-4L,
+ -0xe.ae9ada65ece2f39p-4L,
+ 0x9.b1185505edac18dp-8L,
+ -0xe.f28c130b54d3cb2p-4L,
+ 0x2.6ec1666cf44a63bp-4L,
+ -0xf.57cb2774193bbd5p-4L,
+ 0x4.5ae64671a41b1c4p-4L,
+ -0xf.f48ea8b5bd3a7cep-4L,
+ 0x6.7d73788a8d30ef58p-4L,
+ -0x1.11e0e4b506bd272ep+0L,
+ /* Interval [-2.25, -2.125] (polynomial degree 13). */
+ -0xf.2930890d7d675a8p-4L,
+ -0xc.a5cfde054eab5cdp-4L,
+ 0x3.9c9e0fdebb0676e4p-4L,
+ -0x1.02a5ad35605f0d8cp+0L,
+ 0x9.6e9b1185d0b92edp-4L,
+ -0x1.4d8332f3d6a3959p+0L,
+ 0x1.1c0c8cacd0ced3eap+0L,
+ -0x1.c9a6f592a67b1628p+0L,
+ 0x1.d7e9476f96aa4bd6p+0L,
+ -0x2.921cedb488bb3318p+0L,
+ 0x2.e8b3fd6ca193e4c8p+0L,
+ -0x3.cb69d9d6628e4a2p+0L,
+ 0x4.95f12c73b558638p+0L,
+ -0x5.d392d0b97c02ab6p+0L,
+ /* Interval [-2.375, -2.25] (polynomial degree 14). */
+ -0xd.7d28d505d618122p-4L,
+ -0xe.69649a304098532p-4L,
+ 0xb.0d74a2827d055c5p-4L,
+ -0x1.924b09228531c00ep+0L,
+ 0x1.d49b12bccee4f888p+0L,
+ -0x3.0898bb7dbb21e458p+0L,
+ 0x4.207a6cad6fa10a2p+0L,
+ -0x6.39ee630b46093ad8p+0L,
+ 0x8.e2e25211a3fb5ccp+0L,
+ -0xd.0e85ccd8e79c08p+0L,
+ 0x1.2e45882bc17f9e16p+4L,
+ -0x1.b8b6e841815ff314p+4L,
+ 0x2.7ff8bf7504fa04dcp+4L,
+ -0x3.c192e9c903352974p+4L,
+ 0x5.8040b75f4ef07f98p+4L,
+ /* Interval [-2.5, -2.375] (polynomial degree 15). */
+ -0xb.74ea1bcfff94b2cp-4L,
+ -0x1.2a82bd590c375384p+0L,
+ 0x1.88020f828b968634p+0L,
+ -0x3.32279f040eb80fa4p+0L,
+ 0x5.57ac825175943188p+0L,
+ -0x9.c2aedcfe10f129ep+0L,
+ 0x1.12c132f2df02881ep+4L,
+ -0x1.ea94e26c0b6ffa6p+4L,
+ 0x3.66b4a8bb0290013p+4L,
+ -0x6.0cf735e01f5990bp+4L,
+ 0xa.c10a8db7ae99343p+4L,
+ -0x1.31edb212b315feeap+8L,
+ 0x2.1f478592298b3ebp+8L,
+ -0x3.c546da5957ace6ccp+8L,
+ 0x7.0e3d2a02579ba4bp+8L,
+ -0xc.b1ea961c39302f8p+8L,
+ /* Interval [-2.625, -2.5] (polynomial degree 16). */
+ -0x3.d10108c27ebafad4p-4L,
+ 0x1.cd557caff7d2b202p+0L,
+ 0x3.819b4856d3995034p+0L,
+ 0x6.8505cbad03dd3bd8p+0L,
+ 0xb.c1b2e653aa0b924p+0L,
+ 0x1.50a53a38f05f72d6p+4L,
+ 0x2.57ae00cbd06efb34p+4L,
+ 0x4.2b1563077a577e9p+4L,
+ 0x7.6989ed790138a7f8p+4L,
+ 0xd.2dd28417b4f8406p+4L,
+ 0x1.76e1b71f0710803ap+8L,
+ 0x2.9a7a096254ac032p+8L,
+ 0x4.a0e6109e2a039788p+8L,
+ 0x8.37ea17a93c877b2p+8L,
+ 0xe.9506a641143612bp+8L,
+ 0x1.b680ed4ea386d52p+12L,
+ 0x3.28a2130c8de0ae84p+12L,
+ /* Interval [-2.75, -2.625] (polynomial degree 15). */
+ -0x6.b5d252a56e8a7548p-4L,
+ 0x1.28d60383da3ac72p+0L,
+ 0x1.db6513ada8a6703ap+0L,
+ 0x2.e217118f9d34aa7cp+0L,
+ 0x4.450112c5cbd6256p+0L,
+ 0x6.4af99151e972f92p+0L,
+ 0x9.2db598b5b183cd6p+0L,
+ 0xd.62bef9c9adcff6ap+0L,
+ 0x1.379f290d743d9774p+4L,
+ 0x1.c58271ff823caa26p+4L,
+ 0x2.93a871b87a06e73p+4L,
+ 0x3.bf9db66103d7ec98p+4L,
+ 0x5.73247c111fbf197p+4L,
+ 0x7.ec8b9973ba27d008p+4L,
+ 0xb.eca5f9619b39c03p+4L,
+ 0x1.18f2e46411c78b1cp+8L,
+ /* Interval [-2.875, -2.75] (polynomial degree 14). */
+ -0x8.a41b1e4f36ff88ep-4L,
+ 0xc.da87d3b69dc0f34p-4L,
+ 0x1.1474ad5c36158ad2p+0L,
+ 0x1.761ecb90c5553996p+0L,
+ 0x1.d279bff9ae234f8p+0L,
+ 0x2.4e5d0055a16c5414p+0L,
+ 0x2.d57545a783902f8cp+0L,
+ 0x3.8514eec263aa9f98p+0L,
+ 0x4.5235e338245f6fe8p+0L,
+ 0x5.562b1ef200b256c8p+0L,
+ 0x6.8ec9782b93bd565p+0L,
+ 0x8.14baf4836483508p+0L,
+ 0x9.efaf35dc712ea79p+0L,
+ 0xc.8431f6a226507a9p+0L,
+ 0xf.80358289a768401p+0L,
+ /* Interval [-3, -2.875] (polynomial degree 13). */
+ -0xa.046d667e468f3e4p-4L,
+ 0x9.70b88dcc006c216p-4L,
+ 0xa.a8a39421c86ce9p-4L,
+ 0xd.2f4d1363f321e89p-4L,
+ 0xd.ca9aa1a3ab2f438p-4L,
+ 0xf.cf09c31f05d02cbp-4L,
+ 0x1.04b133a195686a38p+0L,
+ 0x1.22b54799d0072024p+0L,
+ 0x1.2c5802b869a36ae8p+0L,
+ 0x1.4aadf23055d7105ep+0L,
+ 0x1.5794078dd45c55d6p+0L,
+ 0x1.7759069da18bcf0ap+0L,
+ 0x1.8e672cefa4623f34p+0L,
+ 0x1.b2acfa32c17145e6p+0L,
+ };
+
+static const size_t poly_deg[] =
+ {
+ 13,
+ 13,
+ 14,
+ 15,
+ 16,
+ 15,
+ 14,
+ 13,
+ };
+
+static const size_t poly_end[] =
+ {
+ 13,
+ 27,
+ 42,
+ 58,
+ 75,
+ 91,
+ 106,
+ 120,
+ };
+
+/* Compute sin (pi * X) for -0.25 <= X <= 0.5. */
+
+static long double
+lg_sinpi (long double x)
+{
+ if (x <= 0.25L)
+ return __sinl (M_PIl * x);
+ else
+ return __cosl (M_PIl * (0.5L - x));
+}
+
+/* Compute cos (pi * X) for -0.25 <= X <= 0.5. */
+
+static long double
+lg_cospi (long double x)
+{
+ if (x <= 0.25L)
+ return __cosl (M_PIl * x);
+ else
+ return __sinl (M_PIl * (0.5L - x));
+}
+
+/* Compute cot (pi * X) for -0.25 <= X <= 0.5. */
+
+static long double
+lg_cotpi (long double x)
+{
+ return lg_cospi (x) / lg_sinpi (x);
+}
+
+/* Compute lgamma of a negative argument -33 < X < -2, setting
+ *SIGNGAMP accordingly. */
+
+long double
+__lgamma_negl (long double x, int *signgamp)
+{
+ /* Determine the half-integer region X lies in, handle exact
+ integers and determine the sign of the result. */
+ int i = __floorl (-2 * x);
+ if ((i & 1) == 0 && i == -2 * x)
+ return 1.0L / 0.0L;
+ long double xn = ((i & 1) == 0 ? -i / 2 : (-i - 1) / 2);
+ i -= 4;
+ *signgamp = ((i & 2) == 0 ? -1 : 1);
+
+ SET_RESTORE_ROUNDL (FE_TONEAREST);
+
+ /* Expand around the zero X0 = X0_HI + X0_LO. */
+ long double x0_hi = lgamma_zeros[i][0], x0_lo = lgamma_zeros[i][1];
+ long double xdiff = x - x0_hi - x0_lo;
+
+ /* For arguments in the range -3 to -2, use polynomial
+ approximations to an adjusted version of the gamma function. */
+ if (i < 2)
+ {
+ int j = __floorl (-8 * x) - 16;
+ long double xm = (-33 - 2 * j) * 0.0625L;
+ long double x_adj = x - xm;
+ size_t deg = poly_deg[j];
+ size_t end = poly_end[j];
+ long double g = poly_coeff[end];
+ for (size_t j = 1; j <= deg; j++)
+ g = g * x_adj + poly_coeff[end - j];
+ return __log1pl (g * xdiff / (x - xn));
+ }
+
+ /* The result we want is log (sinpi (X0) / sinpi (X))
+ + log (gamma (1 - X0) / gamma (1 - X)). */
+ long double x_idiff = fabsl (xn - x), x0_idiff = fabsl (xn - x0_hi - x0_lo);
+ long double log_sinpi_ratio;
+ if (x0_idiff < x_idiff * 0.5L)
+ /* Use log not log1p to avoid inaccuracy from log1p of arguments
+ close to -1. */
+ log_sinpi_ratio = __ieee754_logl (lg_sinpi (x0_idiff)
+ / lg_sinpi (x_idiff));
+ else
+ {
+ /* Use log1p not log to avoid inaccuracy from log of arguments
+ close to 1. X0DIFF2 has positive sign if X0 is further from
+ XN than X is from XN, negative sign otherwise. */
+ long double x0diff2 = ((i & 1) == 0 ? xdiff : -xdiff) * 0.5L;
+ long double sx0d2 = lg_sinpi (x0diff2);
+ long double cx0d2 = lg_cospi (x0diff2);
+ log_sinpi_ratio = __log1pl (2 * sx0d2
+ * (-sx0d2 + cx0d2 * lg_cotpi (x_idiff)));
+ }
+
+ long double log_gamma_ratio;
+ long double y0 = 1 - x0_hi;
+ long double y0_eps = -x0_hi + (1 - y0) - x0_lo;
+ long double y = 1 - x;
+ long double y_eps = -x + (1 - y);
+ /* We now wish to compute LOG_GAMMA_RATIO
+ = log (gamma (Y0 + Y0_EPS) / gamma (Y + Y_EPS)). XDIFF
+ accurately approximates the difference Y0 + Y0_EPS - Y -
+ Y_EPS. Use Stirling's approximation. First, we may need to
+ adjust into the range where Stirling's approximation is
+ sufficiently accurate. */
+ long double log_gamma_adj = 0;
+ if (i < 8)
+ {
+ int n_up = (9 - i) / 2;
+ long double ny0, ny0_eps, ny, ny_eps;
+ ny0 = y0 + n_up;
+ ny0_eps = y0 - (ny0 - n_up) + y0_eps;
+ y0 = ny0;
+ y0_eps = ny0_eps;
+ ny = y + n_up;
+ ny_eps = y - (ny - n_up) + y_eps;
+ y = ny;
+ y_eps = ny_eps;
+ long double prodm1 = __lgamma_productl (xdiff, y - n_up, y_eps, n_up);
+ log_gamma_adj = -__log1pl (prodm1);
+ }
+ long double log_gamma_high
+ = (xdiff * __log1pl ((y0 - e_hi - e_lo + y0_eps) / e_hi)
+ + (y - 0.5L + y_eps) * __log1pl (xdiff / y) + log_gamma_adj);
+ /* Compute the sum of (B_2k / 2k(2k-1))(Y0^-(2k-1) - Y^-(2k-1)). */
+ long double y0r = 1 / y0, yr = 1 / y;
+ long double y0r2 = y0r * y0r, yr2 = yr * yr;
+ long double rdiff = -xdiff / (y * y0);
+ long double bterm[NCOEFF];
+ long double dlast = rdiff, elast = rdiff * yr * (yr + y0r);
+ bterm[0] = dlast * lgamma_coeff[0];
+ for (size_t j = 1; j < NCOEFF; j++)
+ {
+ long double dnext = dlast * y0r2 + elast;
+ long double enext = elast * yr2;
+ bterm[j] = dnext * lgamma_coeff[j];
+ dlast = dnext;
+ elast = enext;
+ }
+ long double log_gamma_low = 0;
+ for (size_t j = 0; j < NCOEFF; j++)
+ log_gamma_low += bterm[NCOEFF - 1 - j];
+ log_gamma_ratio = log_gamma_high + log_gamma_low;
+
+ return log_sinpi_ratio + log_gamma_ratio;
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-96/lgamma_product.c b/REORG.TODO/sysdeps/ieee754/ldbl-96/lgamma_product.c
new file mode 100644
index 0000000000..46be5df762
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-96/lgamma_product.c
@@ -0,0 +1,37 @@
+/* Compute a product of 1 + (T/X), 1 + (T/(X+1)), ....
+ Copyright (C) 2015-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+#include <math_private.h>
+#include <float.h>
+
+/* Compute the product of 1 + (T / (X + X_EPS)), 1 + (T / (X + X_EPS +
+ 1)), ..., 1 + (T / (X + X_EPS + N - 1)), minus 1. X is such that
+ all the values X + 1, ..., X + N - 1 are exactly representable, and
+ X_EPS / X is small enough that factors quadratic in it can be
+ neglected. */
+
+double
+__lgamma_product (double t, double x, double x_eps, int n)
+{
+ long double x_full = (long double) x + (long double) x_eps;
+ long double ret = 0;
+ for (int i = 0; i < n; i++)
+ ret += (t / (x_full + i)) * (1 + ret);
+ return ret;
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-96/lgamma_productl.c b/REORG.TODO/sysdeps/ieee754/ldbl-96/lgamma_productl.c
new file mode 100644
index 0000000000..cd6f2f3156
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-96/lgamma_productl.c
@@ -0,0 +1,52 @@
+/* Compute a product of 1 + (T/X), 1 + (T/(X+1)), ....
+ Copyright (C) 2015-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+#include <math_private.h>
+#include <mul_splitl.h>
+
+/* Compute the product of 1 + (T / (X + X_EPS)), 1 + (T / (X + X_EPS +
+ 1)), ..., 1 + (T / (X + X_EPS + N - 1)), minus 1. X is such that
+ all the values X + 1, ..., X + N - 1 are exactly representable, and
+ X_EPS / X is small enough that factors quadratic in it can be
+ neglected. */
+
+long double
+__lgamma_productl (long double t, long double x, long double x_eps, int n)
+{
+ long double ret = 0, ret_eps = 0;
+ for (int i = 0; i < n; i++)
+ {
+ long double xi = x + i;
+ long double quot = t / xi;
+ long double mhi, mlo;
+ mul_splitl (&mhi, &mlo, quot, xi);
+ long double quot_lo = (t - mhi - mlo) / xi - t * x_eps / (xi * xi);
+ /* We want (1 + RET + RET_EPS) * (1 + QUOT + QUOT_LO) - 1. */
+ long double rhi, rlo;
+ mul_splitl (&rhi, &rlo, ret, quot);
+ long double rpq = ret + quot;
+ long double rpq_eps = (ret - rpq) + quot;
+ long double nret = rpq + rhi;
+ long double nret_eps = (rpq - nret) + rhi;
+ ret_eps += (rpq_eps + nret_eps + rlo + ret_eps * quot
+ + quot_lo + quot_lo * (ret + ret_eps));
+ ret = nret;
+ }
+ return ret + ret_eps;
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-96/math_ldbl.h b/REORG.TODO/sysdeps/ieee754/ldbl-96/math_ldbl.h
new file mode 100644
index 0000000000..ef897065b7
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-96/math_ldbl.h
@@ -0,0 +1,120 @@
+/* Manipulation of the bit representation of 'long double' quantities.
+ Copyright (C) 1999-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#ifndef _MATH_LDBL_H_
+#define _MATH_LDBL_H_ 1
+
+#include <stdint.h>
+#include <endian.h>
+
+/* A union which permits us to convert between a long double and
+ three 32 bit ints. */
+
+#if __FLOAT_WORD_ORDER == __BIG_ENDIAN
+
+typedef union
+{
+ long double value;
+ struct
+ {
+ int sign_exponent:16;
+ unsigned int empty:16;
+ uint32_t msw;
+ uint32_t lsw;
+ } parts;
+} ieee_long_double_shape_type;
+
+#endif
+
+#if __FLOAT_WORD_ORDER == __LITTLE_ENDIAN
+
+typedef union
+{
+ long double value;
+ struct
+ {
+ uint32_t lsw;
+ uint32_t msw;
+ int sign_exponent:16;
+ unsigned int empty:16;
+ } parts;
+} ieee_long_double_shape_type;
+
+#endif
+
+/* Get three 32 bit ints from a double. */
+
+#define GET_LDOUBLE_WORDS(exp,ix0,ix1,d) \
+do { \
+ ieee_long_double_shape_type ew_u; \
+ ew_u.value = (d); \
+ (exp) = ew_u.parts.sign_exponent; \
+ (ix0) = ew_u.parts.msw; \
+ (ix1) = ew_u.parts.lsw; \
+} while (0)
+
+/* Set a double from two 32 bit ints. */
+
+#define SET_LDOUBLE_WORDS(d,exp,ix0,ix1) \
+do { \
+ ieee_long_double_shape_type iw_u; \
+ iw_u.parts.sign_exponent = (exp); \
+ iw_u.parts.msw = (ix0); \
+ iw_u.parts.lsw = (ix1); \
+ (d) = iw_u.value; \
+} while (0)
+
+/* Get the more significant 32 bits of a long double mantissa. */
+
+#define GET_LDOUBLE_MSW(v,d) \
+do { \
+ ieee_long_double_shape_type sh_u; \
+ sh_u.value = (d); \
+ (v) = sh_u.parts.msw; \
+} while (0)
+
+/* Set the more significant 32 bits of a long double mantissa from an int. */
+
+#define SET_LDOUBLE_MSW(d,v) \
+do { \
+ ieee_long_double_shape_type sh_u; \
+ sh_u.value = (d); \
+ sh_u.parts.msw = (v); \
+ (d) = sh_u.value; \
+} while (0)
+
+/* Get int from the exponent of a long double. */
+
+#define GET_LDOUBLE_EXP(exp,d) \
+do { \
+ ieee_long_double_shape_type ge_u; \
+ ge_u.value = (d); \
+ (exp) = ge_u.parts.sign_exponent; \
+} while (0)
+
+/* Set exponent of a long double from an int. */
+
+#define SET_LDOUBLE_EXP(d,exp) \
+do { \
+ ieee_long_double_shape_type se_u; \
+ se_u.value = (d); \
+ se_u.parts.sign_exponent = (exp); \
+ (d) = se_u.value; \
+} while (0)
+
+#endif /* math_ldbl.h */
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-96/mpn2ldbl.c b/REORG.TODO/sysdeps/ieee754/ldbl-96/mpn2ldbl.c
new file mode 100644
index 0000000000..715efb40b2
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-96/mpn2ldbl.c
@@ -0,0 +1,46 @@
+/* Copyright (C) 1995-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include "gmp.h"
+#include "gmp-impl.h"
+#include <ieee754.h>
+#include <float.h>
+#include <math.h>
+
+/* Convert a multi-precision integer of the needed number of bits (64 for
+ long double) and an integral power of two to a `long double' in IEEE854
+ extended-precision format. */
+
+long double
+__mpn_construct_long_double (mp_srcptr frac_ptr, int expt, int sign)
+{
+ union ieee854_long_double u;
+
+ u.ieee.negative = sign;
+ u.ieee.exponent = expt + IEEE854_LONG_DOUBLE_BIAS;
+#if BITS_PER_MP_LIMB == 32
+ u.ieee.mantissa1 = frac_ptr[0];
+ u.ieee.mantissa0 = frac_ptr[1];
+#elif BITS_PER_MP_LIMB == 64
+ u.ieee.mantissa1 = frac_ptr[0] & (((mp_limb_t) 1 << 32) - 1);
+ u.ieee.mantissa0 = frac_ptr[0] >> 32;
+#else
+ #error "mp_limb size " BITS_PER_MP_LIMB "not accounted for"
+#endif
+
+ return u.d;
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-96/printf_fphex.c b/REORG.TODO/sysdeps/ieee754/ldbl-96/printf_fphex.c
new file mode 100644
index 0000000000..0df9462d91
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-96/printf_fphex.c
@@ -0,0 +1,95 @@
+/* Print floating point number in hexadecimal notation according to ISO C99.
+ Copyright (C) 1997-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#ifndef LONG_DOUBLE_DENORM_BIAS
+# define LONG_DOUBLE_DENORM_BIAS (IEEE854_LONG_DOUBLE_BIAS - 1)
+#endif
+
+#define PRINT_FPHEX_LONG_DOUBLE \
+do { \
+ /* The "strange" 80 bit format on ix86 and m68k has an explicit \
+ leading digit in the 64 bit mantissa. */ \
+ unsigned long long int num; \
+ union ieee854_long_double u; \
+ u.d = fpnum.ldbl; \
+ \
+ assert (sizeof (long double) == 12); \
+ \
+ num = (((unsigned long long int) u.ieee.mantissa0) << 32 \
+ | u.ieee.mantissa1); \
+ \
+ zero_mantissa = num == 0; \
+ \
+ if (sizeof (unsigned long int) > 6) \
+ { \
+ numstr = _itoa_word (num, numbuf + sizeof numbuf, 16, \
+ info->spec == 'A'); \
+ wnumstr = _itowa_word (num, \
+ wnumbuf + sizeof (wnumbuf) / sizeof (wchar_t),\
+ 16, info->spec == 'A'); \
+ } \
+ else \
+ { \
+ numstr = _itoa (num, numbuf + sizeof numbuf, 16, info->spec == 'A');\
+ wnumstr = _itowa (num, \
+ wnumbuf + sizeof (wnumbuf) / sizeof (wchar_t), \
+ 16, info->spec == 'A'); \
+ } \
+ \
+ /* Fill with zeroes. */ \
+ while (numstr > numbuf + (sizeof numbuf - 64 / 4)) \
+ { \
+ *--numstr = '0'; \
+ *--wnumstr = L'0'; \
+ } \
+ \
+ /* We use a full nibble for the leading digit. */ \
+ leading = *numstr++; \
+ wnumstr++; \
+ \
+ /* We have 3 bits from the mantissa in the leading nibble. \
+ Therefore we are here using `IEEE854_LONG_DOUBLE_BIAS + 3'. */ \
+ exponent = u.ieee.exponent; \
+ \
+ if (exponent == 0) \
+ { \
+ if (zero_mantissa) \
+ expnegative = 0; \
+ else \
+ { \
+ /* This is a denormalized number. */ \
+ expnegative = 1; \
+ /* This is a hook for the m68k long double format, where the \
+ exponent bias is the same for normalized and denormalized \
+ numbers. */ \
+ exponent = LONG_DOUBLE_DENORM_BIAS + 3; \
+ } \
+ } \
+ else if (exponent >= IEEE854_LONG_DOUBLE_BIAS + 3) \
+ { \
+ expnegative = 0; \
+ exponent -= IEEE854_LONG_DOUBLE_BIAS + 3; \
+ } \
+ else \
+ { \
+ expnegative = 1; \
+ exponent = -(exponent - (IEEE854_LONG_DOUBLE_BIAS + 3)); \
+ } \
+} while (0)
+
+#include <stdio-common/printf_fphex.c>
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-96/s_asinhl.c b/REORG.TODO/sysdeps/ieee754/ldbl-96/s_asinhl.c
new file mode 100644
index 0000000000..da49ea5988
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-96/s_asinhl.c
@@ -0,0 +1,65 @@
+/* s_asinhl.c -- long double version of s_asinh.c.
+ * Conversion to long double by Ulrich Drepper,
+ * Cygnus Support, drepper@cygnus.com.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: $";
+#endif
+
+/* asinhl(x)
+ * Method :
+ * Based on
+ * asinhl(x) = signl(x) * logl [ |x| + sqrtl(x*x+1) ]
+ * we have
+ * asinhl(x) := x if 1+x*x=1,
+ * := signl(x)*(logl(x)+ln2)) for large |x|, else
+ * := signl(x)*logl(2|x|+1/(|x|+sqrtl(x*x+1))) if|x|>2, else
+ * := signl(x)*log1pl(|x| + x^2/(1 + sqrtl(1+x^2)))
+ */
+
+#include <float.h>
+#include <math.h>
+#include <math_private.h>
+
+static const long double
+one = 1.000000000000000000000e+00L, /* 0x3FFF, 0x00000000, 0x00000000 */
+ln2 = 6.931471805599453094287e-01L, /* 0x3FFE, 0xB17217F7, 0xD1CF79AC */
+huge= 1.000000000000000000e+4900L;
+
+long double __asinhl(long double x)
+{
+ long double t,w;
+ int32_t hx,ix;
+ GET_LDOUBLE_EXP(hx,x);
+ ix = hx&0x7fff;
+ if(__builtin_expect(ix< 0x3fde, 0)) { /* |x|<2**-34 */
+ math_check_force_underflow (x);
+ if(huge+x>one) return x; /* return x inexact except 0 */
+ }
+ if(__builtin_expect(ix>0x4020,0)) { /* |x| > 2**34 */
+ if(ix==0x7fff) return x+x; /* x is inf or NaN */
+ w = __ieee754_logl(fabsl(x))+ln2;
+ } else {
+ long double xa = fabsl(x);
+ if (ix>0x4000) { /* 2**34 > |x| > 2.0 */
+ w = __ieee754_logl(2.0*xa+one/(__ieee754_sqrtl(xa*xa+one)+xa));
+ } else { /* 2.0 > |x| > 2**-28 */
+ t = xa*xa;
+ w =__log1pl(xa+t/(one+__ieee754_sqrtl(one+t)));
+ }
+ }
+ return __copysignl(w, x);
+}
+weak_alias (__asinhl, asinhl)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-96/s_cbrtl.c b/REORG.TODO/sysdeps/ieee754/ldbl-96/s_cbrtl.c
new file mode 100644
index 0000000000..5712fce2e9
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-96/s_cbrtl.c
@@ -0,0 +1,70 @@
+/* Compute cubic root of double value.
+ Copyright (C) 1997-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Dirk Alboth <dirka@uni-paderborn.de> and
+ Ulrich Drepper <drepper@cygnus.com>, 1997.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+#include <math_private.h>
+
+
+#define CBRT2 1.2599210498948731648 /* 2^(1/3) */
+#define SQR_CBRT2 1.5874010519681994748 /* 2^(2/3) */
+
+/* We don't use long double values here since U need not be computed
+ with full precision. */
+static const double factor[5] =
+{
+ 1.0 / SQR_CBRT2,
+ 1.0 / CBRT2,
+ 1.0,
+ CBRT2,
+ SQR_CBRT2
+};
+
+static const long double third = 0.3333333333333333333333333L;
+
+long double
+__cbrtl (long double x)
+{
+ long double xm, u;
+ int xe;
+
+ /* Reduce X. XM now is an range 1.0 to 0.5. */
+ xm = __frexpl (fabsl (x), &xe);
+
+ /* If X is not finite or is null return it (with raising exceptions
+ if necessary.
+ Note: *Our* version of `frexp' sets XE to zero if the argument is
+ Inf or NaN. This is not portable but faster. */
+ if (xe == 0 && fpclassify (x) <= FP_ZERO)
+ return x + x;
+
+ u = (((-1.34661104733595206551E-1 * xm
+ + 5.46646013663955245034E-1) * xm
+ - 9.54382247715094465250E-1) * xm
+ + 1.13999833547172932737E0) * xm
+ + 4.02389795645447521269E-1;
+
+ u *= factor[2 + xe % 3];
+ u = __ldexpl (x > 0.0 ? u : -u, xe / 3);
+
+ u -= (u - (x / (u * u))) * third;
+ u -= (u - (x / (u * u))) * third;
+ return u;
+}
+weak_alias (__cbrtl, cbrtl)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-96/s_copysignl.c b/REORG.TODO/sysdeps/ieee754/ldbl-96/s_copysignl.c
new file mode 100644
index 0000000000..b1c442452f
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-96/s_copysignl.c
@@ -0,0 +1,38 @@
+/* s_copysignl.c -- long double version of s_copysign.c.
+ * Conversion to long double by Ulrich Drepper,
+ * Cygnus Support, drepper@cygnus.com.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: $";
+#endif
+
+/*
+ * copysignl(long double x, long double y)
+ * copysignl(x,y) returns a value with the magnitude of x and
+ * with the sign bit of y.
+ */
+
+#include <math.h>
+#include <math_private.h>
+
+long double __copysignl(long double x, long double y)
+{
+ u_int32_t es1,es2;
+ GET_LDOUBLE_EXP(es1,x);
+ GET_LDOUBLE_EXP(es2,y);
+ SET_LDOUBLE_EXP(x,(es1&0x7fff)|(es2&0x8000));
+ return x;
+}
+weak_alias (__copysignl, copysignl)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-96/s_cosl.c b/REORG.TODO/sysdeps/ieee754/ldbl-96/s_cosl.c
new file mode 100644
index 0000000000..8b0b7d3cc2
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-96/s_cosl.c
@@ -0,0 +1,88 @@
+/* s_cosl.c -- long double version of s_cos.c.
+ * Conversion to long double by Ulrich Drepper,
+ * Cygnus Support, drepper@cygnus.com.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: $";
+#endif
+
+/* cosl(x)
+ * Return cosine function of x.
+ *
+ * kernel function:
+ * __kernel_sinl ... sine function on [-pi/4,pi/4]
+ * __kernel_cosl ... cosine function on [-pi/4,pi/4]
+ * __ieee754_rem_pio2l ... argument reduction routine
+ *
+ * Method.
+ * Let S,C and T denote the sin, cos and tan respectively on
+ * [-PI/4, +PI/4]. Reduce the argument x to y1+y2 = x-k*pi/2
+ * in [-pi/4 , +pi/4], and let n = k mod 4.
+ * We have
+ *
+ * n sin(x) cos(x) tan(x)
+ * ----------------------------------------------------------
+ * 0 S C T
+ * 1 C -S -1/T
+ * 2 -S -C T
+ * 3 -C S -1/T
+ * ----------------------------------------------------------
+ *
+ * Special cases:
+ * Let trig be any of sin, cos, or tan.
+ * trig(+-INF) is NaN, with signals;
+ * trig(NaN) is that NaN;
+ *
+ * Accuracy:
+ * TRIG(x) returns trig(x) nearly rounded
+ */
+
+#include <errno.h>
+#include <math.h>
+#include <math_private.h>
+
+long double __cosl(long double x)
+{
+ long double y[2],z=0.0;
+ int32_t n, se, i0, i1;
+
+ /* High word of x. */
+ GET_LDOUBLE_WORDS(se,i0,i1,x);
+
+ /* |x| ~< pi/4 */
+ se &= 0x7fff;
+ if(se < 0x3ffe || (se == 0x3ffe && i0 <= 0xc90fdaa2))
+ return __kernel_cosl(x,z);
+
+ /* cos(Inf or NaN) is NaN */
+ else if (se==0x7fff) {
+ if (i1 == 0 && i0 == 0x80000000)
+ __set_errno (EDOM);
+ return x-x;
+ }
+
+ /* argument reduction needed */
+ else {
+ n = __ieee754_rem_pio2l(x,y);
+ switch(n&3) {
+ case 0: return __kernel_cosl(y[0],y[1]);
+ case 1: return -__kernel_sinl(y[0],y[1],1);
+ case 2: return -__kernel_cosl(y[0],y[1]);
+ default:
+ return __kernel_sinl(y[0],y[1],1);
+ }
+ }
+}
+weak_alias (__cosl, cosl)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-96/s_erfl.c b/REORG.TODO/sysdeps/ieee754/ldbl-96/s_erfl.c
new file mode 100644
index 0000000000..d00adb1000
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-96/s_erfl.c
@@ -0,0 +1,451 @@
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+/* Long double expansions are
+ Copyright (C) 2001 Stephen L. Moshier <moshier@na-net.ornl.gov>
+ and are incorporated herein by permission of the author. The author
+ reserves the right to distribute this material elsewhere under different
+ copying permissions. These modifications are distributed here under
+ the following terms:
+
+ This 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 2.1 of the License, or (at your option) any later version.
+
+ This 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 this library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+/* double erf(double x)
+ * double erfc(double x)
+ * x
+ * 2 |\
+ * erf(x) = --------- | exp(-t*t)dt
+ * sqrt(pi) \|
+ * 0
+ *
+ * erfc(x) = 1-erf(x)
+ * Note that
+ * erf(-x) = -erf(x)
+ * erfc(-x) = 2 - erfc(x)
+ *
+ * Method:
+ * 1. For |x| in [0, 0.84375]
+ * erf(x) = x + x*R(x^2)
+ * erfc(x) = 1 - erf(x) if x in [-.84375,0.25]
+ * = 0.5 + ((0.5-x)-x*R) if x in [0.25,0.84375]
+ * Remark. The formula is derived by noting
+ * erf(x) = (2/sqrt(pi))*(x - x^3/3 + x^5/10 - x^7/42 + ....)
+ * and that
+ * 2/sqrt(pi) = 1.128379167095512573896158903121545171688
+ * is close to one. The interval is chosen because the fix
+ * point of erf(x) is near 0.6174 (i.e., erf(x)=x when x is
+ * near 0.6174), and by some experiment, 0.84375 is chosen to
+ * guarantee the error is less than one ulp for erf.
+ *
+ * 2. For |x| in [0.84375,1.25], let s = |x| - 1, and
+ * c = 0.84506291151 rounded to single (24 bits)
+ * erf(x) = sign(x) * (c + P1(s)/Q1(s))
+ * erfc(x) = (1-c) - P1(s)/Q1(s) if x > 0
+ * 1+(c+P1(s)/Q1(s)) if x < 0
+ * Remark: here we use the taylor series expansion at x=1.
+ * erf(1+s) = erf(1) + s*Poly(s)
+ * = 0.845.. + P1(s)/Q1(s)
+ * Note that |P1/Q1|< 0.078 for x in [0.84375,1.25]
+ *
+ * 3. For x in [1.25,1/0.35(~2.857143)],
+ * erfc(x) = (1/x)*exp(-x*x-0.5625+R1(z)/S1(z))
+ * z=1/x^2
+ * erf(x) = 1 - erfc(x)
+ *
+ * 4. For x in [1/0.35,107]
+ * erfc(x) = (1/x)*exp(-x*x-0.5625+R2/S2) if x > 0
+ * = 2.0 - (1/x)*exp(-x*x-0.5625+R2(z)/S2(z))
+ * if -6.666<x<0
+ * = 2.0 - tiny (if x <= -6.666)
+ * z=1/x^2
+ * erf(x) = sign(x)*(1.0 - erfc(x)) if x < 6.666, else
+ * erf(x) = sign(x)*(1.0 - tiny)
+ * Note1:
+ * To compute exp(-x*x-0.5625+R/S), let s be a single
+ * precision number and s := x; then
+ * -x*x = -s*s + (s-x)*(s+x)
+ * exp(-x*x-0.5626+R/S) =
+ * exp(-s*s-0.5625)*exp((s-x)*(s+x)+R/S);
+ * Note2:
+ * Here 4 and 5 make use of the asymptotic series
+ * exp(-x*x)
+ * erfc(x) ~ ---------- * ( 1 + Poly(1/x^2) )
+ * x*sqrt(pi)
+ *
+ * 5. For inf > x >= 107
+ * erf(x) = sign(x) *(1 - tiny) (raise inexact)
+ * erfc(x) = tiny*tiny (raise underflow) if x > 0
+ * = 2 - tiny if x<0
+ *
+ * 7. Special case:
+ * erf(0) = 0, erf(inf) = 1, erf(-inf) = -1,
+ * erfc(0) = 1, erfc(inf) = 0, erfc(-inf) = 2,
+ * erfc/erf(NaN) is NaN
+ */
+
+
+#include <errno.h>
+#include <float.h>
+#include <math.h>
+#include <math_private.h>
+
+static const long double
+tiny = 1e-4931L,
+ half = 0.5L,
+ one = 1.0L,
+ two = 2.0L,
+ /* c = (float)0.84506291151 */
+ erx = 0.845062911510467529296875L,
+/*
+ * Coefficients for approximation to erf on [0,0.84375]
+ */
+ /* 2/sqrt(pi) - 1 */
+ efx = 1.2837916709551257389615890312154517168810E-1L,
+
+ pp[6] = {
+ 1.122751350964552113068262337278335028553E6L,
+ -2.808533301997696164408397079650699163276E6L,
+ -3.314325479115357458197119660818768924100E5L,
+ -6.848684465326256109712135497895525446398E4L,
+ -2.657817695110739185591505062971929859314E3L,
+ -1.655310302737837556654146291646499062882E2L,
+ },
+
+ qq[6] = {
+ 8.745588372054466262548908189000448124232E6L,
+ 3.746038264792471129367533128637019611485E6L,
+ 7.066358783162407559861156173539693900031E5L,
+ 7.448928604824620999413120955705448117056E4L,
+ 4.511583986730994111992253980546131408924E3L,
+ 1.368902937933296323345610240009071254014E2L,
+ /* 1.000000000000000000000000000000000000000E0 */
+ },
+
+/*
+ * Coefficients for approximation to erf in [0.84375,1.25]
+ */
+/* erf(x+1) = 0.845062911510467529296875 + pa(x)/qa(x)
+ -0.15625 <= x <= +.25
+ Peak relative error 8.5e-22 */
+
+ pa[8] = {
+ -1.076952146179812072156734957705102256059E0L,
+ 1.884814957770385593365179835059971587220E2L,
+ -5.339153975012804282890066622962070115606E1L,
+ 4.435910679869176625928504532109635632618E1L,
+ 1.683219516032328828278557309642929135179E1L,
+ -2.360236618396952560064259585299045804293E0L,
+ 1.852230047861891953244413872297940938041E0L,
+ 9.394994446747752308256773044667843200719E-2L,
+ },
+
+ qa[7] = {
+ 4.559263722294508998149925774781887811255E2L,
+ 3.289248982200800575749795055149780689738E2L,
+ 2.846070965875643009598627918383314457912E2L,
+ 1.398715859064535039433275722017479994465E2L,
+ 6.060190733759793706299079050985358190726E1L,
+ 2.078695677795422351040502569964299664233E1L,
+ 4.641271134150895940966798357442234498546E0L,
+ /* 1.000000000000000000000000000000000000000E0 */
+ },
+
+/*
+ * Coefficients for approximation to erfc in [1.25,1/0.35]
+ */
+/* erfc(1/x) = x exp (-1/x^2 - 0.5625 + ra(x^2)/sa(x^2))
+ 1/2.85711669921875 < 1/x < 1/1.25
+ Peak relative error 3.1e-21 */
+
+ ra[] = {
+ 1.363566591833846324191000679620738857234E-1L,
+ 1.018203167219873573808450274314658434507E1L,
+ 1.862359362334248675526472871224778045594E2L,
+ 1.411622588180721285284945138667933330348E3L,
+ 5.088538459741511988784440103218342840478E3L,
+ 8.928251553922176506858267311750789273656E3L,
+ 7.264436000148052545243018622742770549982E3L,
+ 2.387492459664548651671894725748959751119E3L,
+ 2.220916652813908085449221282808458466556E2L,
+ },
+
+ sa[] = {
+ -1.382234625202480685182526402169222331847E1L,
+ -3.315638835627950255832519203687435946482E2L,
+ -2.949124863912936259747237164260785326692E3L,
+ -1.246622099070875940506391433635999693661E4L,
+ -2.673079795851665428695842853070996219632E4L,
+ -2.880269786660559337358397106518918220991E4L,
+ -1.450600228493968044773354186390390823713E4L,
+ -2.874539731125893533960680525192064277816E3L,
+ -1.402241261419067750237395034116942296027E2L,
+ /* 1.000000000000000000000000000000000000000E0 */
+ },
+/*
+ * Coefficients for approximation to erfc in [1/.35,107]
+ */
+/* erfc(1/x) = x exp (-1/x^2 - 0.5625 + rb(x^2)/sb(x^2))
+ 1/6.6666259765625 < 1/x < 1/2.85711669921875
+ Peak relative error 4.2e-22 */
+ rb[] = {
+ -4.869587348270494309550558460786501252369E-5L,
+ -4.030199390527997378549161722412466959403E-3L,
+ -9.434425866377037610206443566288917589122E-2L,
+ -9.319032754357658601200655161585539404155E-1L,
+ -4.273788174307459947350256581445442062291E0L,
+ -8.842289940696150508373541814064198259278E0L,
+ -7.069215249419887403187988144752613025255E0L,
+ -1.401228723639514787920274427443330704764E0L,
+ },
+
+ sb[] = {
+ 4.936254964107175160157544545879293019085E-3L,
+ 1.583457624037795744377163924895349412015E-1L,
+ 1.850647991850328356622940552450636420484E0L,
+ 9.927611557279019463768050710008450625415E0L,
+ 2.531667257649436709617165336779212114570E1L,
+ 2.869752886406743386458304052862814690045E1L,
+ 1.182059497870819562441683560749192539345E1L,
+ /* 1.000000000000000000000000000000000000000E0 */
+ },
+/* erfc(1/x) = x exp (-1/x^2 - 0.5625 + rc(x^2)/sc(x^2))
+ 1/107 <= 1/x <= 1/6.6666259765625
+ Peak relative error 1.1e-21 */
+ rc[] = {
+ -8.299617545269701963973537248996670806850E-5L,
+ -6.243845685115818513578933902532056244108E-3L,
+ -1.141667210620380223113693474478394397230E-1L,
+ -7.521343797212024245375240432734425789409E-1L,
+ -1.765321928311155824664963633786967602934E0L,
+ -1.029403473103215800456761180695263439188E0L,
+ },
+
+ sc[] = {
+ 8.413244363014929493035952542677768808601E-3L,
+ 2.065114333816877479753334599639158060979E-1L,
+ 1.639064941530797583766364412782135680148E0L,
+ 4.936788463787115555582319302981666347450E0L,
+ 5.005177727208955487404729933261347679090E0L,
+ /* 1.000000000000000000000000000000000000000E0 */
+ };
+
+long double
+__erfl (long double x)
+{
+ long double R, S, P, Q, s, y, z, r;
+ int32_t ix, i;
+ u_int32_t se, i0, i1;
+
+ GET_LDOUBLE_WORDS (se, i0, i1, x);
+ ix = se & 0x7fff;
+
+ if (ix >= 0x7fff)
+ { /* erf(nan)=nan */
+ i = ((se & 0xffff) >> 15) << 1;
+ return (long double) (1 - i) + one / x; /* erf(+-inf)=+-1 */
+ }
+
+ ix = (ix << 16) | (i0 >> 16);
+ if (ix < 0x3ffed800) /* |x|<0.84375 */
+ {
+ if (ix < 0x3fde8000) /* |x|<2**-33 */
+ {
+ if (ix < 0x00080000)
+ {
+ /* Avoid spurious underflow. */
+ long double ret = 0.0625 * (16.0 * x + (16.0 * efx) * x);
+ math_check_force_underflow (ret);
+ return ret;
+ }
+ return x + efx * x;
+ }
+ z = x * x;
+ r = pp[0] + z * (pp[1]
+ + z * (pp[2] + z * (pp[3] + z * (pp[4] + z * pp[5]))));
+ s = qq[0] + z * (qq[1]
+ + z * (qq[2] + z * (qq[3] + z * (qq[4] + z * (qq[5] + z)))));
+ y = r / s;
+ return x + x * y;
+ }
+ if (ix < 0x3fffa000) /* 1.25 */
+ { /* 0.84375 <= |x| < 1.25 */
+ s = fabsl (x) - one;
+ P = pa[0] + s * (pa[1] + s * (pa[2]
+ + s * (pa[3] + s * (pa[4] + s * (pa[5] + s * (pa[6] + s * pa[7]))))));
+ Q = qa[0] + s * (qa[1] + s * (qa[2]
+ + s * (qa[3] + s * (qa[4] + s * (qa[5] + s * (qa[6] + s))))));
+ if ((se & 0x8000) == 0)
+ return erx + P / Q;
+ else
+ return -erx - P / Q;
+ }
+ if (ix >= 0x4001d555) /* 6.6666259765625 */
+ { /* inf>|x|>=6.666 */
+ if ((se & 0x8000) == 0)
+ return one - tiny;
+ else
+ return tiny - one;
+ }
+ x = fabsl (x);
+ s = one / (x * x);
+ if (ix < 0x4000b6db) /* 2.85711669921875 */
+ {
+ R = ra[0] + s * (ra[1] + s * (ra[2] + s * (ra[3] + s * (ra[4] +
+ s * (ra[5] + s * (ra[6] + s * (ra[7] + s * ra[8])))))));
+ S = sa[0] + s * (sa[1] + s * (sa[2] + s * (sa[3] + s * (sa[4] +
+ s * (sa[5] + s * (sa[6] + s * (sa[7] + s * (sa[8] + s))))))));
+ }
+ else
+ { /* |x| >= 1/0.35 */
+ R = rb[0] + s * (rb[1] + s * (rb[2] + s * (rb[3] + s * (rb[4] +
+ s * (rb[5] + s * (rb[6] + s * rb[7]))))));
+ S = sb[0] + s * (sb[1] + s * (sb[2] + s * (sb[3] + s * (sb[4] +
+ s * (sb[5] + s * (sb[6] + s))))));
+ }
+ z = x;
+ GET_LDOUBLE_WORDS (i, i0, i1, z);
+ i1 = 0;
+ SET_LDOUBLE_WORDS (z, i, i0, i1);
+ r =
+ __ieee754_expl (-z * z - 0.5625) * __ieee754_expl ((z - x) * (z + x) +
+ R / S);
+ if ((se & 0x8000) == 0)
+ return one - r / x;
+ else
+ return r / x - one;
+}
+
+weak_alias (__erfl, erfl)
+long double
+__erfcl (long double x)
+{
+ int32_t hx, ix;
+ long double R, S, P, Q, s, y, z, r;
+ u_int32_t se, i0, i1;
+
+ GET_LDOUBLE_WORDS (se, i0, i1, x);
+ ix = se & 0x7fff;
+ if (ix >= 0x7fff)
+ { /* erfc(nan)=nan */
+ /* erfc(+-inf)=0,2 */
+ return (long double) (((se & 0xffff) >> 15) << 1) + one / x;
+ }
+
+ ix = (ix << 16) | (i0 >> 16);
+ if (ix < 0x3ffed800) /* |x|<0.84375 */
+ {
+ if (ix < 0x3fbe0000) /* |x|<2**-65 */
+ return one - x;
+ z = x * x;
+ r = pp[0] + z * (pp[1]
+ + z * (pp[2] + z * (pp[3] + z * (pp[4] + z * pp[5]))));
+ s = qq[0] + z * (qq[1]
+ + z * (qq[2] + z * (qq[3] + z * (qq[4] + z * (qq[5] + z)))));
+ y = r / s;
+ if (ix < 0x3ffd8000) /* x<1/4 */
+ {
+ return one - (x + x * y);
+ }
+ else
+ {
+ r = x * y;
+ r += (x - half);
+ return half - r;
+ }
+ }
+ if (ix < 0x3fffa000) /* 1.25 */
+ { /* 0.84375 <= |x| < 1.25 */
+ s = fabsl (x) - one;
+ P = pa[0] + s * (pa[1] + s * (pa[2]
+ + s * (pa[3] + s * (pa[4] + s * (pa[5] + s * (pa[6] + s * pa[7]))))));
+ Q = qa[0] + s * (qa[1] + s * (qa[2]
+ + s * (qa[3] + s * (qa[4] + s * (qa[5] + s * (qa[6] + s))))));
+ if ((se & 0x8000) == 0)
+ {
+ z = one - erx;
+ return z - P / Q;
+ }
+ else
+ {
+ z = erx + P / Q;
+ return one + z;
+ }
+ }
+ if (ix < 0x4005d600) /* 107 */
+ { /* |x|<107 */
+ x = fabsl (x);
+ s = one / (x * x);
+ if (ix < 0x4000b6db) /* 2.85711669921875 */
+ { /* |x| < 1/.35 ~ 2.857143 */
+ R = ra[0] + s * (ra[1] + s * (ra[2] + s * (ra[3] + s * (ra[4] +
+ s * (ra[5] + s * (ra[6] + s * (ra[7] + s * ra[8])))))));
+ S = sa[0] + s * (sa[1] + s * (sa[2] + s * (sa[3] + s * (sa[4] +
+ s * (sa[5] + s * (sa[6] + s * (sa[7] + s * (sa[8] + s))))))));
+ }
+ else if (ix < 0x4001d555) /* 6.6666259765625 */
+ { /* 6.666 > |x| >= 1/.35 ~ 2.857143 */
+ R = rb[0] + s * (rb[1] + s * (rb[2] + s * (rb[3] + s * (rb[4] +
+ s * (rb[5] + s * (rb[6] + s * rb[7]))))));
+ S = sb[0] + s * (sb[1] + s * (sb[2] + s * (sb[3] + s * (sb[4] +
+ s * (sb[5] + s * (sb[6] + s))))));
+ }
+ else
+ { /* |x| >= 6.666 */
+ if (se & 0x8000)
+ return two - tiny; /* x < -6.666 */
+
+ R = rc[0] + s * (rc[1] + s * (rc[2] + s * (rc[3] +
+ s * (rc[4] + s * rc[5]))));
+ S = sc[0] + s * (sc[1] + s * (sc[2] + s * (sc[3] +
+ s * (sc[4] + s))));
+ }
+ z = x;
+ GET_LDOUBLE_WORDS (hx, i0, i1, z);
+ i1 = 0;
+ i0 &= 0xffffff00;
+ SET_LDOUBLE_WORDS (z, hx, i0, i1);
+ r = __ieee754_expl (-z * z - 0.5625) *
+ __ieee754_expl ((z - x) * (z + x) + R / S);
+ if ((se & 0x8000) == 0)
+ {
+ long double ret = r / x;
+ if (ret == 0)
+ __set_errno (ERANGE);
+ return ret;
+ }
+ else
+ return two - r / x;
+ }
+ else
+ {
+ if ((se & 0x8000) == 0)
+ {
+ __set_errno (ERANGE);
+ return tiny * tiny;
+ }
+ else
+ return two - tiny;
+ }
+}
+
+weak_alias (__erfcl, erfcl)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-96/s_fma.c b/REORG.TODO/sysdeps/ieee754/ldbl-96/s_fma.c
new file mode 100644
index 0000000000..370592074e
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-96/s_fma.c
@@ -0,0 +1,101 @@
+/* Compute x * y + z as ternary operation.
+ Copyright (C) 2010-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Jakub Jelinek <jakub@redhat.com>, 2010.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <float.h>
+#include <math.h>
+#include <fenv.h>
+#include <ieee754.h>
+#include <math_private.h>
+
+/* This implementation uses rounding to odd to avoid problems with
+ double rounding. See a paper by Boldo and Melquiond:
+ http://www.lri.fr/~melquion/doc/08-tc.pdf */
+
+double
+__fma (double x, double y, double z)
+{
+ if (__glibc_unlikely (isinf (z)))
+ {
+ /* If z is Inf, but x and y are finite, the result should be
+ z rather than NaN. */
+ if (isfinite (x) && isfinite (y))
+ return (z + x) + y;
+ return (x * y) + z;
+ }
+
+ /* Ensure correct sign of exact 0 + 0. */
+ if (__glibc_unlikely ((x == 0 || y == 0) && z == 0))
+ {
+ x = math_opt_barrier (x);
+ return x * y + z;
+ }
+
+ fenv_t env;
+ feholdexcept (&env);
+ fesetround (FE_TONEAREST);
+
+ /* Multiplication m1 + m2 = x * y using Dekker's algorithm. */
+#define C ((1ULL << (LDBL_MANT_DIG + 1) / 2) + 1)
+ long double x1 = (long double) x * C;
+ long double y1 = (long double) y * C;
+ long double m1 = (long double) x * y;
+ x1 = (x - x1) + x1;
+ y1 = (y - y1) + y1;
+ long double x2 = x - x1;
+ long double y2 = y - y1;
+ long double m2 = (((x1 * y1 - m1) + x1 * y2) + x2 * y1) + x2 * y2;
+
+ /* Addition a1 + a2 = z + m1 using Knuth's algorithm. */
+ long double a1 = z + m1;
+ long double t1 = a1 - z;
+ long double t2 = a1 - t1;
+ t1 = m1 - t1;
+ t2 = z - t2;
+ long double a2 = t1 + t2;
+ /* Ensure the arithmetic is not scheduled after feclearexcept call. */
+ math_force_eval (m2);
+ math_force_eval (a2);
+ feclearexcept (FE_INEXACT);
+
+ /* If the result is an exact zero, ensure it has the correct sign. */
+ if (a1 == 0 && m2 == 0)
+ {
+ feupdateenv (&env);
+ /* Ensure that round-to-nearest value of z + m1 is not reused. */
+ z = math_opt_barrier (z);
+ return z + m1;
+ }
+
+ fesetround (FE_TOWARDZERO);
+ /* Perform m2 + a2 addition with round to odd. */
+ a2 = a2 + m2;
+
+ /* Add that to a1 again using rounding to odd. */
+ union ieee854_long_double u;
+ u.d = a1 + a2;
+ if ((u.ieee.mantissa1 & 1) == 0 && u.ieee.exponent != 0x7fff)
+ u.ieee.mantissa1 |= fetestexcept (FE_INEXACT) != 0;
+ feupdateenv (&env);
+
+ /* Add finally round to double precision. */
+ return u.d;
+}
+#ifndef __fma
+weak_alias (__fma, fma)
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-96/s_fmal.c b/REORG.TODO/sysdeps/ieee754/ldbl-96/s_fmal.c
new file mode 100644
index 0000000000..1f3fa1ea1e
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-96/s_fmal.c
@@ -0,0 +1,296 @@
+/* Compute x * y + z as ternary operation.
+ Copyright (C) 2010-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Jakub Jelinek <jakub@redhat.com>, 2010.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <float.h>
+#include <math.h>
+#include <fenv.h>
+#include <ieee754.h>
+#include <math_private.h>
+#include <tininess.h>
+
+/* This implementation uses rounding to odd to avoid problems with
+ double rounding. See a paper by Boldo and Melquiond:
+ http://www.lri.fr/~melquion/doc/08-tc.pdf */
+
+long double
+__fmal (long double x, long double y, long double z)
+{
+ union ieee854_long_double u, v, w;
+ int adjust = 0;
+ u.d = x;
+ v.d = y;
+ w.d = z;
+ if (__builtin_expect (u.ieee.exponent + v.ieee.exponent
+ >= 0x7fff + IEEE854_LONG_DOUBLE_BIAS
+ - LDBL_MANT_DIG, 0)
+ || __builtin_expect (u.ieee.exponent >= 0x7fff - LDBL_MANT_DIG, 0)
+ || __builtin_expect (v.ieee.exponent >= 0x7fff - LDBL_MANT_DIG, 0)
+ || __builtin_expect (w.ieee.exponent >= 0x7fff - LDBL_MANT_DIG, 0)
+ || __builtin_expect (u.ieee.exponent + v.ieee.exponent
+ <= IEEE854_LONG_DOUBLE_BIAS + LDBL_MANT_DIG, 0))
+ {
+ /* If z is Inf, but x and y are finite, the result should be
+ z rather than NaN. */
+ if (w.ieee.exponent == 0x7fff
+ && u.ieee.exponent != 0x7fff
+ && v.ieee.exponent != 0x7fff)
+ return (z + x) + y;
+ /* If z is zero and x are y are nonzero, compute the result
+ as x * y to avoid the wrong sign of a zero result if x * y
+ underflows to 0. */
+ if (z == 0 && x != 0 && y != 0)
+ return x * y;
+ /* If x or y or z is Inf/NaN, or if x * y is zero, compute as
+ x * y + z. */
+ if (u.ieee.exponent == 0x7fff
+ || v.ieee.exponent == 0x7fff
+ || w.ieee.exponent == 0x7fff
+ || x == 0
+ || y == 0)
+ return x * y + z;
+ /* If fma will certainly overflow, compute as x * y. */
+ if (u.ieee.exponent + v.ieee.exponent
+ > 0x7fff + IEEE854_LONG_DOUBLE_BIAS)
+ return x * y;
+ /* If x * y is less than 1/4 of LDBL_TRUE_MIN, neither the
+ result nor whether there is underflow depends on its exact
+ value, only on its sign. */
+ if (u.ieee.exponent + v.ieee.exponent
+ < IEEE854_LONG_DOUBLE_BIAS - LDBL_MANT_DIG - 2)
+ {
+ int neg = u.ieee.negative ^ v.ieee.negative;
+ long double tiny = neg ? -0x1p-16445L : 0x1p-16445L;
+ if (w.ieee.exponent >= 3)
+ return tiny + z;
+ /* Scaling up, adding TINY and scaling down produces the
+ correct result, because in round-to-nearest mode adding
+ TINY has no effect and in other modes double rounding is
+ harmless. But it may not produce required underflow
+ exceptions. */
+ v.d = z * 0x1p65L + tiny;
+ if (TININESS_AFTER_ROUNDING
+ ? v.ieee.exponent < 66
+ : (w.ieee.exponent == 0
+ || (w.ieee.exponent == 1
+ && w.ieee.negative != neg
+ && w.ieee.mantissa1 == 0
+ && w.ieee.mantissa0 == 0x80000000)))
+ {
+ long double force_underflow = x * y;
+ math_force_eval (force_underflow);
+ }
+ return v.d * 0x1p-65L;
+ }
+ if (u.ieee.exponent + v.ieee.exponent
+ >= 0x7fff + IEEE854_LONG_DOUBLE_BIAS - LDBL_MANT_DIG)
+ {
+ /* Compute 1p-64 times smaller result and multiply
+ at the end. */
+ if (u.ieee.exponent > v.ieee.exponent)
+ u.ieee.exponent -= LDBL_MANT_DIG;
+ else
+ v.ieee.exponent -= LDBL_MANT_DIG;
+ /* If x + y exponent is very large and z exponent is very small,
+ it doesn't matter if we don't adjust it. */
+ if (w.ieee.exponent > LDBL_MANT_DIG)
+ w.ieee.exponent -= LDBL_MANT_DIG;
+ adjust = 1;
+ }
+ else if (w.ieee.exponent >= 0x7fff - LDBL_MANT_DIG)
+ {
+ /* Similarly.
+ If z exponent is very large and x and y exponents are
+ very small, adjust them up to avoid spurious underflows,
+ rather than down. */
+ if (u.ieee.exponent + v.ieee.exponent
+ <= IEEE854_LONG_DOUBLE_BIAS + 2 * LDBL_MANT_DIG)
+ {
+ if (u.ieee.exponent > v.ieee.exponent)
+ u.ieee.exponent += 2 * LDBL_MANT_DIG + 2;
+ else
+ v.ieee.exponent += 2 * LDBL_MANT_DIG + 2;
+ }
+ else if (u.ieee.exponent > v.ieee.exponent)
+ {
+ if (u.ieee.exponent > LDBL_MANT_DIG)
+ u.ieee.exponent -= LDBL_MANT_DIG;
+ }
+ else if (v.ieee.exponent > LDBL_MANT_DIG)
+ v.ieee.exponent -= LDBL_MANT_DIG;
+ w.ieee.exponent -= LDBL_MANT_DIG;
+ adjust = 1;
+ }
+ else if (u.ieee.exponent >= 0x7fff - LDBL_MANT_DIG)
+ {
+ u.ieee.exponent -= LDBL_MANT_DIG;
+ if (v.ieee.exponent)
+ v.ieee.exponent += LDBL_MANT_DIG;
+ else
+ v.d *= 0x1p64L;
+ }
+ else if (v.ieee.exponent >= 0x7fff - LDBL_MANT_DIG)
+ {
+ v.ieee.exponent -= LDBL_MANT_DIG;
+ if (u.ieee.exponent)
+ u.ieee.exponent += LDBL_MANT_DIG;
+ else
+ u.d *= 0x1p64L;
+ }
+ else /* if (u.ieee.exponent + v.ieee.exponent
+ <= IEEE854_LONG_DOUBLE_BIAS + LDBL_MANT_DIG) */
+ {
+ if (u.ieee.exponent > v.ieee.exponent)
+ u.ieee.exponent += 2 * LDBL_MANT_DIG + 2;
+ else
+ v.ieee.exponent += 2 * LDBL_MANT_DIG + 2;
+ if (w.ieee.exponent <= 4 * LDBL_MANT_DIG + 6)
+ {
+ if (w.ieee.exponent)
+ w.ieee.exponent += 2 * LDBL_MANT_DIG + 2;
+ else
+ w.d *= 0x1p130L;
+ adjust = -1;
+ }
+ /* Otherwise x * y should just affect inexact
+ and nothing else. */
+ }
+ x = u.d;
+ y = v.d;
+ z = w.d;
+ }
+
+ /* Ensure correct sign of exact 0 + 0. */
+ if (__glibc_unlikely ((x == 0 || y == 0) && z == 0))
+ {
+ x = math_opt_barrier (x);
+ return x * y + z;
+ }
+
+ fenv_t env;
+ feholdexcept (&env);
+ fesetround (FE_TONEAREST);
+
+ /* Multiplication m1 + m2 = x * y using Dekker's algorithm. */
+#define C ((1LL << (LDBL_MANT_DIG + 1) / 2) + 1)
+ long double x1 = x * C;
+ long double y1 = y * C;
+ long double m1 = x * y;
+ x1 = (x - x1) + x1;
+ y1 = (y - y1) + y1;
+ long double x2 = x - x1;
+ long double y2 = y - y1;
+ long double m2 = (((x1 * y1 - m1) + x1 * y2) + x2 * y1) + x2 * y2;
+
+ /* Addition a1 + a2 = z + m1 using Knuth's algorithm. */
+ long double a1 = z + m1;
+ long double t1 = a1 - z;
+ long double t2 = a1 - t1;
+ t1 = m1 - t1;
+ t2 = z - t2;
+ long double a2 = t1 + t2;
+ /* Ensure the arithmetic is not scheduled after feclearexcept call. */
+ math_force_eval (m2);
+ math_force_eval (a2);
+ feclearexcept (FE_INEXACT);
+
+ /* If the result is an exact zero, ensure it has the correct sign. */
+ if (a1 == 0 && m2 == 0)
+ {
+ feupdateenv (&env);
+ /* Ensure that round-to-nearest value of z + m1 is not reused. */
+ z = math_opt_barrier (z);
+ return z + m1;
+ }
+
+ fesetround (FE_TOWARDZERO);
+ /* Perform m2 + a2 addition with round to odd. */
+ u.d = a2 + m2;
+
+ if (__glibc_likely (adjust == 0))
+ {
+ if ((u.ieee.mantissa1 & 1) == 0 && u.ieee.exponent != 0x7fff)
+ u.ieee.mantissa1 |= fetestexcept (FE_INEXACT) != 0;
+ feupdateenv (&env);
+ /* Result is a1 + u.d. */
+ return a1 + u.d;
+ }
+ else if (__glibc_likely (adjust > 0))
+ {
+ if ((u.ieee.mantissa1 & 1) == 0 && u.ieee.exponent != 0x7fff)
+ u.ieee.mantissa1 |= fetestexcept (FE_INEXACT) != 0;
+ feupdateenv (&env);
+ /* Result is a1 + u.d, scaled up. */
+ return (a1 + u.d) * 0x1p64L;
+ }
+ else
+ {
+ if ((u.ieee.mantissa1 & 1) == 0)
+ u.ieee.mantissa1 |= fetestexcept (FE_INEXACT) != 0;
+ v.d = a1 + u.d;
+ /* Ensure the addition is not scheduled after fetestexcept call. */
+ math_force_eval (v.d);
+ int j = fetestexcept (FE_INEXACT) != 0;
+ feupdateenv (&env);
+ /* Ensure the following computations are performed in default rounding
+ mode instead of just reusing the round to zero computation. */
+ asm volatile ("" : "=m" (u) : "m" (u));
+ /* If a1 + u.d is exact, the only rounding happens during
+ scaling down. */
+ if (j == 0)
+ return v.d * 0x1p-130L;
+ /* If result rounded to zero is not subnormal, no double
+ rounding will occur. */
+ if (v.ieee.exponent > 130)
+ return (a1 + u.d) * 0x1p-130L;
+ /* If v.d * 0x1p-130L with round to zero is a subnormal above
+ or equal to LDBL_MIN / 2, then v.d * 0x1p-130L shifts mantissa
+ down just by 1 bit, which means v.ieee.mantissa1 |= j would
+ change the round bit, not sticky or guard bit.
+ v.d * 0x1p-130L never normalizes by shifting up,
+ so round bit plus sticky bit should be already enough
+ for proper rounding. */
+ if (v.ieee.exponent == 130)
+ {
+ /* If the exponent would be in the normal range when
+ rounding to normal precision with unbounded exponent
+ range, the exact result is known and spurious underflows
+ must be avoided on systems detecting tininess after
+ rounding. */
+ if (TININESS_AFTER_ROUNDING)
+ {
+ w.d = a1 + u.d;
+ if (w.ieee.exponent == 131)
+ return w.d * 0x1p-130L;
+ }
+ /* v.ieee.mantissa1 & 2 is LSB bit of the result before rounding,
+ v.ieee.mantissa1 & 1 is the round bit and j is our sticky
+ bit. */
+ w.d = 0.0L;
+ w.ieee.mantissa1 = ((v.ieee.mantissa1 & 3) << 1) | j;
+ w.ieee.negative = v.ieee.negative;
+ v.ieee.mantissa1 &= ~3U;
+ v.d *= 0x1p-130L;
+ w.d *= 0x1p-2L;
+ return v.d + w.d;
+ }
+ v.ieee.mantissa1 |= j;
+ return v.d * 0x1p-130L;
+ }
+}
+weak_alias (__fmal, fmal)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-96/s_frexpl.c b/REORG.TODO/sysdeps/ieee754/ldbl-96/s_frexpl.c
new file mode 100644
index 0000000000..799880f373
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-96/s_frexpl.c
@@ -0,0 +1,61 @@
+/* s_frexpl.c -- long double version of s_frexp.c.
+ * Conversion to long double by Ulrich Drepper,
+ * Cygnus Support, drepper@cygnus.com.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: $";
+#endif
+
+/*
+ * for non-zero x
+ * x = frexpl(arg,&exp);
+ * return a long double fp quantity x such that 0.5 <= |x| <1.0
+ * and the corresponding binary exponent "exp". That is
+ * arg = x*2^exp.
+ * If arg is inf, 0.0, or NaN, then frexpl(arg,&exp) returns arg
+ * with *exp=0.
+ */
+
+#include <float.h>
+#include <math.h>
+#include <math_private.h>
+
+static const long double
+#if LDBL_MANT_DIG == 64
+two65 = 3.68934881474191032320e+19L; /* 0x4040, 0x80000000, 0x00000000 */
+#else
+# error "Cannot handle this MANT_DIG"
+#endif
+
+
+long double __frexpl(long double x, int *eptr)
+{
+ u_int32_t se, hx, ix, lx;
+ GET_LDOUBLE_WORDS(se,hx,lx,x);
+ ix = 0x7fff&se;
+ *eptr = 0;
+ if(ix==0x7fff||((ix|hx|lx)==0)) return x + x; /* 0,inf,nan */
+ if (ix==0x0000) { /* subnormal */
+ x *= two65;
+ GET_LDOUBLE_EXP(se,x);
+ ix = se&0x7fff;
+ *eptr = -65;
+ }
+ *eptr += ix-16382;
+ se = (se & 0x8000) | 0x3ffe;
+ SET_LDOUBLE_EXP(x,se);
+ return x;
+}
+weak_alias (__frexpl, frexpl)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-96/s_fromfpl.c b/REORG.TODO/sysdeps/ieee754/ldbl-96/s_fromfpl.c
new file mode 100644
index 0000000000..e323b4c25b
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-96/s_fromfpl.c
@@ -0,0 +1,4 @@
+#define UNSIGNED 0
+#define INEXACT 0
+#define FUNC fromfpl
+#include <s_fromfpl_main.c>
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-96/s_fromfpl_main.c b/REORG.TODO/sysdeps/ieee754/ldbl-96/s_fromfpl_main.c
new file mode 100644
index 0000000000..05de1fa6c0
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-96/s_fromfpl_main.c
@@ -0,0 +1,84 @@
+/* Round to integer type. ldbl-96 version.
+ Copyright (C) 2016-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <errno.h>
+#include <fenv.h>
+#include <math.h>
+#include <math_private.h>
+#include <stdbool.h>
+#include <stdint.h>
+
+#define BIAS 0x3fff
+#define MANT_DIG 64
+
+#if UNSIGNED
+# define RET_TYPE uintmax_t
+#else
+# define RET_TYPE intmax_t
+#endif
+
+#include <fromfp.h>
+
+RET_TYPE
+FUNC (long double x, int round, unsigned int width)
+{
+ if (width > INTMAX_WIDTH)
+ width = INTMAX_WIDTH;
+ uint16_t se;
+ uint32_t hx, lx;
+ GET_LDOUBLE_WORDS (se, hx, lx, x);
+ bool negative = (se & 0x8000) != 0;
+ if (width == 0)
+ return fromfp_domain_error (negative, width);
+ if ((hx | lx) == 0)
+ return 0;
+ int exponent = se & 0x7fff;
+ exponent -= BIAS;
+ int max_exponent = fromfp_max_exponent (negative, width);
+ if (exponent > max_exponent)
+ return fromfp_domain_error (negative, width);
+
+ uint64_t ix = (((uint64_t) hx) << 32) | lx;
+ uintmax_t uret;
+ bool half_bit, more_bits;
+ if (exponent >= MANT_DIG - 1)
+ {
+ uret = ix;
+ /* Exponent 63; no shifting required. */
+ half_bit = false;
+ more_bits = false;
+ }
+ else if (exponent >= -1)
+ {
+ uint64_t h = 1ULL << (MANT_DIG - 2 - exponent);
+ half_bit = (ix & h) != 0;
+ more_bits = (ix & (h - 1)) != 0;
+ if (exponent == -1)
+ uret = 0;
+ else
+ uret = ix >> (MANT_DIG - 1 - exponent);
+ }
+ else
+ {
+ uret = 0;
+ half_bit = false;
+ more_bits = true;
+ }
+ return fromfp_round_and_return (negative, uret, half_bit, more_bits, round,
+ exponent, max_exponent, width);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-96/s_fromfpxl.c b/REORG.TODO/sysdeps/ieee754/ldbl-96/s_fromfpxl.c
new file mode 100644
index 0000000000..2f3189d7de
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-96/s_fromfpxl.c
@@ -0,0 +1,4 @@
+#define UNSIGNED 0
+#define INEXACT 1
+#define FUNC fromfpxl
+#include <s_fromfpl_main.c>
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-96/s_getpayloadl.c b/REORG.TODO/sysdeps/ieee754/ldbl-96/s_getpayloadl.c
new file mode 100644
index 0000000000..6efe97baee
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-96/s_getpayloadl.c
@@ -0,0 +1,32 @@
+/* Get NaN payload. ldbl-96 version.
+ Copyright (C) 2016-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+#include <math_private.h>
+#include <stdint.h>
+
+long double
+getpayloadl (const long double *x)
+{
+ uint16_t se __attribute__ ((unused));
+ uint32_t hx, lx;
+ GET_LDOUBLE_WORDS (se, hx, lx, *x);
+ hx &= 0x3fffffff;
+ uint64_t ix = ((uint64_t) hx << 32) | lx;
+ return (long double) ix;
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-96/s_iscanonicall.c b/REORG.TODO/sysdeps/ieee754/ldbl-96/s_iscanonicall.c
new file mode 100644
index 0000000000..820a45e3a8
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-96/s_iscanonicall.c
@@ -0,0 +1,44 @@
+/* Test whether long double value is canonical. ldbl-96 version.
+ Copyright (C) 2016-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <float.h>
+#include <math.h>
+#include <math_private.h>
+#include <stdbool.h>
+#include <stdint.h>
+
+int
+__iscanonicall (long double x)
+{
+ uint32_t se, i0, i1 __attribute__ ((unused));
+
+ GET_LDOUBLE_WORDS (se, i0, i1, x);
+ int32_t ix = se & 0x7fff;
+ bool mant_high = (i0 & 0x80000000) != 0;
+
+ if (LDBL_MIN_EXP == -16381)
+ /* Intel variant: the high mantissa bit should have a value
+ determined by the exponent. */
+ return ix > 0 ? mant_high : !mant_high;
+ else
+ /* M68K variant: both values of the high bit are valid for the
+ greatest and smallest exponents, while other exponents require
+ the high bit to be set. */
+ return ix == 0 || ix == 0x7fff || mant_high;
+}
+libm_hidden_def (__iscanonicall)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-96/s_issignalingl.c b/REORG.TODO/sysdeps/ieee754/ldbl-96/s_issignalingl.c
new file mode 100644
index 0000000000..f659bb7b35
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-96/s_issignalingl.c
@@ -0,0 +1,44 @@
+/* Test for signaling NaN.
+ Copyright (C) 2013-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+#include <math_private.h>
+#include <nan-high-order-bit.h>
+
+int
+__issignalingl (long double x)
+{
+ u_int32_t exi, hxi, lxi;
+ GET_LDOUBLE_WORDS (exi, hxi, lxi, x);
+#if HIGH_ORDER_BIT_IS_SET_FOR_SNAN
+# error not implemented
+#else
+ /* To keep the following comparison simple, toggle the quiet/signaling bit,
+ so that it is set for sNaNs. This is inverse to IEEE 754-2008 (as well as
+ common practice for IEEE 754-1985). */
+ hxi ^= 0x40000000;
+ /* If lxi != 0, then set any suitable bit of the significand in hxi. */
+ hxi |= (lxi | -lxi) >> 31;
+ /* We do not recognize a pseudo NaN as sNaN; they're invalid on 80387 and
+ later. */
+ /* We have to compare for greater (instead of greater or equal), because x's
+ significand being all-zero designates infinity not NaN. */
+ return ((exi & 0x7fff) == 0x7fff) && (hxi > 0xc0000000);
+#endif
+}
+libm_hidden_def (__issignalingl)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-96/s_llrintl.c b/REORG.TODO/sysdeps/ieee754/ldbl-96/s_llrintl.c
new file mode 100644
index 0000000000..53d33c3999
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-96/s_llrintl.c
@@ -0,0 +1,91 @@
+/* Round argument to nearest integral value according to current rounding
+ direction.
+ Copyright (C) 1997-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <fenv.h>
+#include <limits.h>
+#include <math.h>
+
+#include <math_private.h>
+
+static const long double two63[2] =
+{
+ 9.223372036854775808000000e+18, /* 0x403E, 0x00000000, 0x00000000 */
+ -9.223372036854775808000000e+18 /* 0xC03E, 0x00000000, 0x00000000 */
+};
+
+
+long long int
+__llrintl (long double x)
+{
+ int32_t se,j0;
+ u_int32_t i0, i1;
+ long long int result;
+ long double w;
+ long double t;
+ int sx;
+
+ GET_LDOUBLE_WORDS (se, i0, i1, x);
+
+ sx = (se >> 15) & 1;
+ j0 = (se & 0x7fff) - 0x3fff;
+
+ if (j0 < (int32_t) (8 * sizeof (long long int)) - 1)
+ {
+ if (j0 >= 63)
+ result = (((long long int) i0 << 32) | i1) << (j0 - 63);
+ else
+ {
+#if defined FE_INVALID || defined FE_INEXACT
+ /* X < LLONG_MAX + 1 implied by J0 < 63. */
+ if (x > (long double) LLONG_MAX)
+ {
+ /* In the event of overflow we must raise the "invalid"
+ exception, but not "inexact". */
+ t = __nearbyintl (x);
+ feraiseexcept (t == LLONG_MAX ? FE_INEXACT : FE_INVALID);
+ }
+ else
+#endif
+ {
+ w = two63[sx] + x;
+ t = w - two63[sx];
+ }
+ GET_LDOUBLE_WORDS (se, i0, i1, t);
+ j0 = (se & 0x7fff) - 0x3fff;
+
+ if (j0 < 0)
+ result = 0;
+ else if (j0 <= 31)
+ result = i0 >> (31 - j0);
+ else
+ result = ((long long int) i0 << (j0 - 31)) | (i1 >> (63 - j0));
+ }
+ }
+ else
+ {
+ /* The number is too large. It is left implementation defined
+ what happens. */
+ return (long long int) x;
+ }
+
+ return sx ? -result : result;
+}
+
+weak_alias (__llrintl, llrintl)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-96/s_llroundl.c b/REORG.TODO/sysdeps/ieee754/ldbl-96/s_llroundl.c
new file mode 100644
index 0000000000..f113fabd1a
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-96/s_llroundl.c
@@ -0,0 +1,89 @@
+/* Round long double value to long long int.
+ Copyright (C) 1997-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <fenv.h>
+#include <limits.h>
+#include <math.h>
+
+#include <math_private.h>
+
+
+long long int
+__llroundl (long double x)
+{
+ int32_t j0;
+ u_int32_t se, i1, i0;
+ long long int result;
+ int sign;
+
+ GET_LDOUBLE_WORDS (se, i0, i1, x);
+ j0 = (se & 0x7fff) - 0x3fff;
+ sign = (se & 0x8000) != 0 ? -1 : 1;
+
+ if (j0 < 31)
+ {
+ if (j0 < 0)
+ return j0 < -1 ? 0 : sign;
+ else
+ {
+ u_int32_t j = i0 + (0x40000000 >> j0);
+ if (j < i0)
+ {
+ j >>= 1;
+ j |= 0x80000000;
+ ++j0;
+ }
+
+ result = j >> (31 - j0);
+ }
+ }
+ else if (j0 < (int32_t) (8 * sizeof (long long int)) - 1)
+ {
+ if (j0 >= 63)
+ result = (((long long int) i0 << 32) | i1) << (j0 - 63);
+ else
+ {
+ u_int32_t j = i1 + (0x80000000 >> (j0 - 31));
+
+ result = (long long int) i0;
+ if (j < i1)
+ ++result;
+
+ if (j0 > 31)
+ {
+ result = (result << (j0 - 31)) | (j >> (63 - j0));
+#ifdef FE_INVALID
+ if (sign == 1 && result == LLONG_MIN)
+ /* Rounding brought the value out of range. */
+ feraiseexcept (FE_INVALID);
+#endif
+ }
+ }
+ }
+ else
+ {
+ /* The number is too large. It is left implementation defined
+ what happens. */
+ return (long long int) x;
+ }
+
+ return sign * result;
+}
+
+weak_alias (__llroundl, llroundl)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-96/s_lrintl.c b/REORG.TODO/sysdeps/ieee754/ldbl-96/s_lrintl.c
new file mode 100644
index 0000000000..02dafe67f3
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-96/s_lrintl.c
@@ -0,0 +1,126 @@
+/* Round argument to nearest integral value according to current rounding
+ direction.
+ Copyright (C) 1997-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <fenv.h>
+#include <limits.h>
+#include <math.h>
+
+#include <math_private.h>
+
+static const long double two63[2] =
+{
+ 9.223372036854775808000000e+18, /* 0x403E, 0x00000000, 0x00000000 */
+ -9.223372036854775808000000e+18 /* 0xC03E, 0x00000000, 0x00000000 */
+};
+
+
+long int
+__lrintl (long double x)
+{
+ int32_t se,j0;
+ u_int32_t i0, i1;
+ long int result;
+ long double w;
+ long double t;
+ int sx;
+
+ GET_LDOUBLE_WORDS (se, i0, i1, x);
+
+ sx = (se >> 15) & 1;
+ j0 = (se & 0x7fff) - 0x3fff;
+
+ if (j0 < 31)
+ {
+#if defined FE_INVALID || defined FE_INEXACT
+ /* X < LONG_MAX + 1 implied by J0 < 31. */
+ if (sizeof (long int) == 4
+ && x > (long double) LONG_MAX)
+ {
+ /* In the event of overflow we must raise the "invalid"
+ exception, but not "inexact". */
+ t = __nearbyintl (x);
+ feraiseexcept (t == LONG_MAX ? FE_INEXACT : FE_INVALID);
+ }
+ else
+#endif
+ {
+ w = two63[sx] + x;
+ t = w - two63[sx];
+ }
+ GET_LDOUBLE_WORDS (se, i0, i1, t);
+ j0 = (se & 0x7fff) - 0x3fff;
+
+ result = (j0 < 0 ? 0 : i0 >> (31 - j0));
+ }
+ else if (j0 < (int32_t) (8 * sizeof (long int)) - 1)
+ {
+ if (j0 >= 63)
+ result = ((long int) i0 << (j0 - 31)) | (i1 << (j0 - 63));
+ else
+ {
+#if defined FE_INVALID || defined FE_INEXACT
+ /* X < LONG_MAX + 1 implied by J0 < 63. */
+ if (sizeof (long int) == 8
+ && x > (long double) LONG_MAX)
+ {
+ /* In the event of overflow we must raise the "invalid"
+ exception, but not "inexact". */
+ t = __nearbyintl (x);
+ feraiseexcept (t == LONG_MAX ? FE_INEXACT : FE_INVALID);
+ }
+ else
+#endif
+ {
+ w = two63[sx] + x;
+ t = w - two63[sx];
+ }
+ GET_LDOUBLE_WORDS (se, i0, i1, t);
+ j0 = (se & 0x7fff) - 0x3fff;
+
+ if (j0 == 31)
+ result = (long int) i0;
+ else
+ result = ((long int) i0 << (j0 - 31)) | (i1 >> (63 - j0));
+ }
+ }
+ else
+ {
+ /* The number is too large. Unless it rounds to LONG_MIN,
+ FE_INVALID must be raised and the return value is
+ unspecified. */
+#if defined FE_INVALID || defined FE_INEXACT
+ if (sizeof (long int) == 4
+ && x < (long double) LONG_MIN
+ && x > (long double) LONG_MIN - 1.0L)
+ {
+ /* If truncation produces LONG_MIN, the cast will not raise
+ the exception, but may raise "inexact". */
+ t = __nearbyintl (x);
+ feraiseexcept (t == LONG_MIN ? FE_INEXACT : FE_INVALID);
+ return LONG_MIN;
+ }
+#endif
+ return (long int) x;
+ }
+
+ return sx ? -result : result;
+}
+
+weak_alias (__lrintl, lrintl)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-96/s_lroundl.c b/REORG.TODO/sysdeps/ieee754/ldbl-96/s_lroundl.c
new file mode 100644
index 0000000000..7f418e6142
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-96/s_lroundl.c
@@ -0,0 +1,111 @@
+/* Round long double value to long int.
+ Copyright (C) 1997-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <fenv.h>
+#include <limits.h>
+#include <math.h>
+
+#include <math_private.h>
+
+
+long int
+__lroundl (long double x)
+{
+ int32_t j0;
+ u_int32_t se, i1, i0;
+ long int result;
+ int sign;
+
+ GET_LDOUBLE_WORDS (se, i0, i1, x);
+ j0 = (se & 0x7fff) - 0x3fff;
+ sign = (se & 0x8000) != 0 ? -1 : 1;
+
+ if (j0 < 31)
+ {
+ if (j0 < 0)
+ return j0 < -1 ? 0 : sign;
+ else
+ {
+ u_int32_t j = i0 + (0x40000000 >> j0);
+ if (j < i0)
+ {
+ j >>= 1;
+ j |= 0x80000000;
+ ++j0;
+ }
+
+ result = j >> (31 - j0);
+#ifdef FE_INVALID
+ if (sizeof (long int) == 4
+ && sign == 1
+ && result == LONG_MIN)
+ /* Rounding brought the value out of range. */
+ feraiseexcept (FE_INVALID);
+#endif
+ }
+ }
+ else if (j0 < (int32_t) (8 * sizeof (long int)) - 1)
+ {
+ if (j0 >= 63)
+ result = ((long int) i0 << (j0 - 31)) | (i1 << (j0 - 63));
+ else
+ {
+ u_int32_t j = i1 + (0x80000000 >> (j0 - 31));
+ unsigned long int ures = i0;
+
+ if (j < i1)
+ ++ures;
+
+ if (j0 == 31)
+ result = ures;
+ else
+ {
+ result = (ures << (j0 - 31)) | (j >> (63 - j0));
+#ifdef FE_INVALID
+ if (sizeof (long int) == 8
+ && sign == 1
+ && result == LONG_MIN)
+ /* Rounding brought the value out of range. */
+ feraiseexcept (FE_INVALID);
+#endif
+ }
+ }
+ }
+ else
+ {
+ /* The number is too large. Unless it rounds to LONG_MIN,
+ FE_INVALID must be raised and the return value is
+ unspecified. */
+#ifdef FE_INVALID
+ if (sizeof (long int) == 4
+ && x <= (long double) LONG_MIN - 0.5L)
+ {
+ /* If truncation produces LONG_MIN, the cast will not raise
+ the exception, but may raise "inexact". */
+ feraiseexcept (FE_INVALID);
+ return LONG_MIN;
+ }
+#endif
+ return (long int) x;
+ }
+
+ return sign * result;
+}
+
+weak_alias (__lroundl, lroundl)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-96/s_modfl.c b/REORG.TODO/sysdeps/ieee754/ldbl-96/s_modfl.c
new file mode 100644
index 0000000000..e9401d0f5d
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-96/s_modfl.c
@@ -0,0 +1,73 @@
+/* s_modfl.c -- long double version of s_modf.c.
+ * Conversion to long double by Ulrich Drepper,
+ * Cygnus Support, drepper@cygnus.com.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+/*
+ * modfl(long double x, long double *iptr)
+ * return fraction part of x, and return x's integral part in *iptr.
+ * Method:
+ * Bit twiddling.
+ *
+ * Exception:
+ * No exception.
+ */
+
+#include <math.h>
+#include <math_private.h>
+
+static const long double one = 1.0;
+
+long double
+__modfl(long double x, long double *iptr)
+{
+ int32_t i0,i1,j0;
+ u_int32_t i,se;
+ GET_LDOUBLE_WORDS(se,i0,i1,x);
+ j0 = (se&0x7fff)-0x3fff; /* exponent of x */
+ if(j0<32) { /* integer part in high x */
+ if(j0<0) { /* |x|<1 */
+ SET_LDOUBLE_WORDS(*iptr,se&0x8000,0,0); /* *iptr = +-0 */
+ return x;
+ } else {
+ i = (0x7fffffff)>>j0;
+ if(((i0&i)|i1)==0) { /* x is integral */
+ *iptr = x;
+ SET_LDOUBLE_WORDS(x,se&0x8000,0,0); /* return +-0 */
+ return x;
+ } else {
+ SET_LDOUBLE_WORDS(*iptr,se,i0&(~i),0);
+ return x - *iptr;
+ }
+ }
+ } else if (__builtin_expect(j0>63, 0)) { /* no fraction part */
+ *iptr = x*one;
+ /* We must handle NaNs separately. */
+ if (j0 == 0x4000 && ((i0 & 0x7fffffff) | i1))
+ return x*one;
+ SET_LDOUBLE_WORDS(x,se&0x8000,0,0); /* return +-0 */
+ return x;
+ } else { /* fraction part in low x */
+ i = ((u_int32_t)(0x7fffffff))>>(j0-32);
+ if((i1&i)==0) { /* x is integral */
+ *iptr = x;
+ SET_LDOUBLE_WORDS(x,se&0x8000,0,0); /* return +-0 */
+ return x;
+ } else {
+ SET_LDOUBLE_WORDS(*iptr,se,i0,i1&(~i));
+ return x - *iptr;
+ }
+ }
+}
+weak_alias (__modfl, modfl)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-96/s_nexttoward.c b/REORG.TODO/sysdeps/ieee754/ldbl-96/s_nexttoward.c
new file mode 100644
index 0000000000..3d0382eac9
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-96/s_nexttoward.c
@@ -0,0 +1,86 @@
+/* s_nexttoward.c
+ * Conversion from s_nextafter.c by Ulrich Drepper, Cygnus Support,
+ * drepper@cygnus.com.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: $";
+#endif
+
+/* IEEE functions
+ * nexttoward(x,y)
+ * return the next machine floating-point number of x in the
+ * direction toward y.
+ * Special cases:
+ */
+
+#include <errno.h>
+#include <math.h>
+#include <math_private.h>
+#include <float.h>
+
+double __nexttoward(double x, long double y)
+{
+ int32_t hx,ix,iy;
+ u_int32_t lx,hy,ly,esy;
+
+ EXTRACT_WORDS(hx,lx,x);
+ GET_LDOUBLE_WORDS(esy,hy,ly,y);
+ ix = hx&0x7fffffff; /* |x| */
+ iy = esy&0x7fff; /* |y| */
+
+ if(((ix>=0x7ff00000)&&((ix-0x7ff00000)|lx)!=0) || /* x is nan */
+ ((iy>=0x7fff)&&(hy|ly)!=0)) /* y is nan */
+ return x+y;
+ if((long double) x==y) return y; /* x=y, return y */
+ if((ix|lx)==0) { /* x == 0 */
+ double u;
+ INSERT_WORDS(x,(esy&0x8000)<<16,1); /* return +-minsub */
+ u = math_opt_barrier (x);
+ u = u * u;
+ math_force_eval (u); /* raise underflow flag */
+ return x;
+ }
+ if(hx>=0) { /* x > 0 */
+ if (x > y) { /* x -= ulp */
+ if(lx==0) hx -= 1;
+ lx -= 1;
+ } else { /* x < y, x += ulp */
+ lx += 1;
+ if(lx==0) hx += 1;
+ }
+ } else { /* x < 0 */
+ if (x < y) { /* x -= ulp */
+ if(lx==0) hx -= 1;
+ lx -= 1;
+ } else { /* x > y, x += ulp */
+ lx += 1;
+ if(lx==0) hx += 1;
+ }
+ }
+ hy = hx&0x7ff00000;
+ if(hy>=0x7ff00000) {
+ double u = x+x; /* overflow */
+ math_force_eval (u);
+ __set_errno (ERANGE);
+ }
+ if(hy<0x00100000) {
+ double u = x*x; /* underflow */
+ math_force_eval (u); /* raise underflow flag */
+ __set_errno (ERANGE);
+ }
+ INSERT_WORDS(x,hx,lx);
+ return x;
+}
+weak_alias (__nexttoward, nexttoward)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-96/s_nexttowardf.c b/REORG.TODO/sysdeps/ieee754/ldbl-96/s_nexttowardf.c
new file mode 100644
index 0000000000..ae7538942f
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-96/s_nexttowardf.c
@@ -0,0 +1,74 @@
+/* s_nexttowardf.c -- float version of s_nextafter.c.
+ * Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: $";
+#endif
+
+#include <errno.h>
+#include <math.h>
+#include <math_private.h>
+#include <float.h>
+
+float __nexttowardf(float x, long double y)
+{
+ int32_t hx,ix,iy;
+ u_int32_t hy,ly,esy;
+
+ GET_FLOAT_WORD(hx,x);
+ GET_LDOUBLE_WORDS(esy,hy,ly,y);
+ ix = hx&0x7fffffff; /* |x| */
+ iy = esy&0x7fff; /* |y| */
+
+ if((ix>0x7f800000) || /* x is nan */
+ (iy>=0x7fff&&((hy|ly)!=0))) /* y is nan */
+ return x+y;
+ if((long double) x==y) return y; /* x=y, return y */
+ if(ix==0) { /* x == 0 */
+ float u;
+ SET_FLOAT_WORD(x,((esy&0x8000)<<16)|1);/* return +-minsub*/
+ u = math_opt_barrier (x);
+ u = u * u;
+ math_force_eval (u); /* raise underflow flag */
+ return x;
+ }
+ if(hx>=0) { /* x > 0 */
+ if(x > y) { /* x -= ulp */
+ hx -= 1;
+ } else { /* x < y, x += ulp */
+ hx += 1;
+ }
+ } else { /* x < 0 */
+ if(x < y) { /* x -= ulp */
+ hx -= 1;
+ } else { /* x > y, x += ulp */
+ hx += 1;
+ }
+ }
+ hy = hx&0x7f800000;
+ if(hy>=0x7f800000) {
+ float u = x+x; /* overflow */
+ math_force_eval (u);
+ __set_errno (ERANGE);
+ }
+ if(hy<0x00800000) {
+ float u = x*x; /* underflow */
+ math_force_eval (u); /* raise underflow flag */
+ __set_errno (ERANGE);
+ }
+ SET_FLOAT_WORD(x,hx);
+ return x;
+}
+weak_alias (__nexttowardf, nexttowardf)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-96/s_nextupl.c b/REORG.TODO/sysdeps/ieee754/ldbl-96/s_nextupl.c
new file mode 100644
index 0000000000..aa66eaf106
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-96/s_nextupl.c
@@ -0,0 +1,84 @@
+/* Return the least floating-point number greater than X.
+ Copyright (C) 2016-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+#include <math_private.h>
+
+/* Return the least floating-point number greater than X. */
+long double
+__nextupl (long double x)
+{
+ u_int32_t hx, ix;
+ u_int32_t lx;
+ int32_t esx;
+
+ GET_LDOUBLE_WORDS (esx, hx, lx, x);
+ ix = esx & 0x7fff;
+
+ if (((ix == 0x7fff) && (((hx & 0x7fffffff) | lx) != 0))) /* x is nan. */
+ return x + x;
+ if ((ix | hx | lx) == 0)
+ return LDBL_TRUE_MIN;
+ if (esx >= 0)
+ { /* x > 0. */
+ if (isinf (x))
+ return x;
+ lx += 1;
+ if (lx == 0)
+ {
+ hx += 1;
+#if LDBL_MIN_EXP == -16381
+ if (hx == 0 || (esx == 0 && hx == 0x80000000))
+#else
+ if (hx == 0)
+#endif
+ {
+ esx += 1;
+ hx |= 0x80000000;
+ }
+ }
+ }
+ else
+ { /* x < 0. */
+ if (lx == 0)
+ {
+#if LDBL_MIN_EXP == -16381
+ if (hx <= 0x80000000 && esx != 0xffff8000)
+ {
+ esx -= 1;
+ hx = hx - 1;
+ if ((esx & 0x7fff) > 0)
+ hx |= 0x80000000;
+ }
+ else
+ hx -= 1;
+#else
+ if (ix != 0 && hx == 0x80000000)
+ hx = 0;
+ if (hx == 0)
+ esx -= 1;
+ hx -= 1;
+#endif
+ }
+ lx -= 1;
+ }
+ SET_LDOUBLE_WORDS (x, esx, hx, lx);
+ return x;
+}
+
+weak_alias (__nextupl, nextupl)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-96/s_remquol.c b/REORG.TODO/sysdeps/ieee754/ldbl-96/s_remquol.c
new file mode 100644
index 0000000000..ee9a6a7d2a
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-96/s_remquol.c
@@ -0,0 +1,111 @@
+/* Compute remainder and a congruent to the quotient.
+ Copyright (C) 1997-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+
+#include <math_private.h>
+
+
+static const long double zero = 0.0;
+
+
+long double
+__remquol (long double x, long double p, int *quo)
+{
+ int32_t ex,ep,hx,hp;
+ u_int32_t sx,lx,lp;
+ int cquo,qs;
+
+ GET_LDOUBLE_WORDS (ex, hx, lx, x);
+ GET_LDOUBLE_WORDS (ep, hp, lp, p);
+ sx = ex & 0x8000;
+ qs = (sx ^ (ep & 0x8000)) >> 15;
+ ep &= 0x7fff;
+ ex &= 0x7fff;
+
+ /* Purge off exception values. */
+ if ((ep | hp | lp) == 0)
+ return (x * p) / (x * p); /* p = 0 */
+ if ((ex == 0x7fff) /* x not finite */
+ || ((ep == 0x7fff) /* p is NaN */
+ && (((hp & 0x7fffffff) | lp) != 0)))
+ return (x * p) / (x * p);
+
+ if (ep <= 0x7ffb)
+ x = __ieee754_fmodl (x, 8 * p); /* now x < 8p */
+
+ if (((ex - ep) | (hx - hp) | (lx - lp)) == 0)
+ {
+ *quo = qs ? -1 : 1;
+ return zero * x;
+ }
+
+ x = fabsl (x);
+ p = fabsl (p);
+ cquo = 0;
+
+ if (ep <= 0x7ffc && x >= 4 * p)
+ {
+ x -= 4 * p;
+ cquo += 4;
+ }
+ if (ep <= 0x7ffd && x >= 2 * p)
+ {
+ x -= 2 * p;
+ cquo += 2;
+ }
+
+ if (ep < 0x0002)
+ {
+ if (x + x > p)
+ {
+ x -= p;
+ ++cquo;
+ if (x + x >= p)
+ {
+ x -= p;
+ ++cquo;
+ }
+ }
+ }
+ else
+ {
+ long double p_half = 0.5 * p;
+ if (x > p_half)
+ {
+ x -= p;
+ ++cquo;
+ if (x >= p_half)
+ {
+ x -= p;
+ ++cquo;
+ }
+ }
+ }
+
+ *quo = qs ? -cquo : cquo;
+
+ /* Ensure correct sign of zero result in round-downward mode. */
+ if (x == 0.0L)
+ x = 0.0L;
+ if (sx)
+ x = -x;
+ return x;
+}
+weak_alias (__remquol, remquol)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-96/s_roundevenl.c b/REORG.TODO/sysdeps/ieee754/ldbl-96/s_roundevenl.c
new file mode 100644
index 0000000000..dab6aa6558
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-96/s_roundevenl.c
@@ -0,0 +1,124 @@
+/* Round to nearest integer value, rounding halfway cases to even.
+ ldbl-96 version.
+ Copyright (C) 2016-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+#include <math_private.h>
+#include <stdint.h>
+
+#define BIAS 0x3fff
+#define MANT_DIG 64
+#define MAX_EXP (2 * BIAS + 1)
+
+long double
+roundevenl (long double x)
+{
+ uint16_t se;
+ uint32_t hx, lx;
+ GET_LDOUBLE_WORDS (se, hx, lx, x);
+ int exponent = se & 0x7fff;
+ if (exponent >= BIAS + MANT_DIG - 1)
+ {
+ /* Integer, infinity or NaN. */
+ if (exponent == MAX_EXP)
+ /* Infinity or NaN; quiet signaling NaNs. */
+ return x + x;
+ else
+ return x;
+ }
+ else if (exponent >= BIAS + MANT_DIG - 32)
+ {
+ /* Not necessarily an integer; integer bit is in low word.
+ Locate the bits with exponents 0 and -1. */
+ int int_pos = (BIAS + MANT_DIG - 1) - exponent;
+ int half_pos = int_pos - 1;
+ uint32_t half_bit = 1U << half_pos;
+ uint32_t int_bit = 1U << int_pos;
+ if ((lx & (int_bit | (half_bit - 1))) != 0)
+ {
+ /* No need to test whether HALF_BIT is set. */
+ lx += half_bit;
+ if (lx < half_bit)
+ {
+ hx++;
+ if (hx == 0)
+ {
+ hx = 0x80000000;
+ se++;
+ }
+ }
+ }
+ lx &= ~(int_bit - 1);
+ }
+ else if (exponent == BIAS + MANT_DIG - 33)
+ {
+ /* Not necessarily an integer; integer bit is bottom of high
+ word, half bit is top of low word. */
+ if (((hx & 1) | (lx & 0x7fffffff)) != 0)
+ {
+ lx += 0x80000000;
+ if (lx < 0x80000000)
+ {
+ hx++;
+ if (hx == 0)
+ {
+ hx = 0x80000000;
+ se++;
+ }
+ }
+ }
+ lx = 0;
+ }
+ else if (exponent >= BIAS)
+ {
+ /* At least 1; not necessarily an integer, integer bit and half
+ bit are in the high word. Locate the bits with exponents 0
+ and -1. */
+ int int_pos = (BIAS + MANT_DIG - 33) - exponent;
+ int half_pos = int_pos - 1;
+ uint32_t half_bit = 1U << half_pos;
+ uint32_t int_bit = 1U << int_pos;
+ if (((hx & (int_bit | (half_bit - 1))) | lx) != 0)
+ {
+ hx += half_bit;
+ if (hx < half_bit)
+ {
+ hx = 0x80000000;
+ se++;
+ }
+ }
+ hx &= ~(int_bit - 1);
+ lx = 0;
+ }
+ else if (exponent == BIAS - 1 && (hx > 0x80000000 || lx != 0))
+ {
+ /* Interval (0.5, 1). */
+ se = (se & 0x8000) | 0x3fff;
+ hx = 0x80000000;
+ lx = 0;
+ }
+ else
+ {
+ /* Rounds to 0. */
+ se &= 0x8000;
+ hx = 0;
+ lx = 0;
+ }
+ SET_LDOUBLE_WORDS (x, se, hx, lx);
+ return x;
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-96/s_roundl.c b/REORG.TODO/sysdeps/ieee754/ldbl-96/s_roundl.c
new file mode 100644
index 0000000000..d8918d2874
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-96/s_roundl.c
@@ -0,0 +1,92 @@
+/* Round long double to integer away from zero.
+ Copyright (C) 1997-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+
+#include <math_private.h>
+
+
+long double
+__roundl (long double x)
+{
+ int32_t j0;
+ u_int32_t se, i1, i0;
+
+ GET_LDOUBLE_WORDS (se, i0, i1, x);
+ j0 = (se & 0x7fff) - 0x3fff;
+ if (j0 < 31)
+ {
+ if (j0 < 0)
+ {
+ se &= 0x8000;
+ i0 = i1 = 0;
+ if (j0 == -1)
+ {
+ se |= 0x3fff;
+ i0 = 0x80000000;
+ }
+ }
+ else
+ {
+ u_int32_t i = 0x7fffffff >> j0;
+ if (((i0 & i) | i1) == 0)
+ /* X is integral. */
+ return x;
+
+ u_int32_t j = i0 + (0x40000000 >> j0);
+ if (j < i0)
+ se += 1;
+ i0 = (j & ~i) | 0x80000000;
+ i1 = 0;
+ }
+ }
+ else if (j0 > 62)
+ {
+ if (j0 == 0x4000)
+ /* Inf or NaN. */
+ return x + x;
+ else
+ return x;
+ }
+ else
+ {
+ u_int32_t i = 0xffffffff >> (j0 - 31);
+ if ((i1 & i) == 0)
+ /* X is integral. */
+ return x;
+
+ u_int32_t j = i1 + (1 << (62 - j0));
+ if (j < i1)
+ {
+ u_int32_t k = i0 + 1;
+ if (k < i0)
+ {
+ se += 1;
+ k |= 0x80000000;
+ }
+ i0 = k;
+ }
+ i1 = j;
+ i1 &= ~i;
+ }
+
+ SET_LDOUBLE_WORDS (x, se, i0, i1);
+ return x;
+}
+weak_alias (__roundl, roundl)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-96/s_scalblnl.c b/REORG.TODO/sysdeps/ieee754/ldbl-96/s_scalblnl.c
new file mode 100644
index 0000000000..457e999c6c
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-96/s_scalblnl.c
@@ -0,0 +1,60 @@
+/* s_scalbnl.c -- long double version of s_scalbn.c.
+ * Conversion to long double by Ulrich Drepper,
+ * Cygnus Support, drepper@cygnus.com.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+/*
+ * scalbnl (long double x, int n)
+ * scalbnl(x,n) returns x* 2**n computed by exponent
+ * manipulation rather than by actually performing an
+ * exponentiation or a multiplication.
+ */
+
+#include <math.h>
+#include <math_private.h>
+
+static const long double
+two63 = 0x1p63L,
+twom64 = 0x1p-64L,
+huge = 1.0e+4900L,
+tiny = 1.0e-4900L;
+
+long double
+__scalblnl (long double x, long int n)
+{
+ int32_t k,es,hx,lx;
+ GET_LDOUBLE_WORDS(es,hx,lx,x);
+ k = es&0x7fff; /* extract exponent */
+ if (__builtin_expect(k==0, 0)) { /* 0 or subnormal x */
+ if ((lx|(hx&0x7fffffff))==0) return x; /* +-0 */
+ x *= two63;
+ GET_LDOUBLE_EXP(es,x);
+ k = (es&0x7fff) - 63;
+ }
+ if (__builtin_expect(k==0x7fff, 0)) return x+x; /* NaN or Inf */
+ if (__builtin_expect(n< -50000, 0))
+ return tiny*__copysignl(tiny,x);
+ if (__builtin_expect(n> 50000 || k+n > 0x7ffe, 0))
+ return huge*__copysignl(huge,x); /* overflow */
+ /* Now k and n are bounded we know that k = k+n does not
+ overflow. */
+ k = k+n;
+ if (__builtin_expect(k > 0, 1)) /* normal result */
+ {SET_LDOUBLE_EXP(x,(es&0x8000)|k); return x;}
+ if (k <= -64)
+ return tiny*__copysignl(tiny,x); /*underflow*/
+ k += 64; /* subnormal result */
+ SET_LDOUBLE_EXP(x,(es&0x8000)|k);
+ return x*twom64;
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-96/s_setpayloadl.c b/REORG.TODO/sysdeps/ieee754/ldbl-96/s_setpayloadl.c
new file mode 100644
index 0000000000..1aba33e6e2
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-96/s_setpayloadl.c
@@ -0,0 +1,3 @@
+#define SIG 0
+#define FUNC setpayloadl
+#include <s_setpayloadl_main.c>
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-96/s_setpayloadl_main.c b/REORG.TODO/sysdeps/ieee754/ldbl-96/s_setpayloadl_main.c
new file mode 100644
index 0000000000..c2fd0401d7
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-96/s_setpayloadl_main.c
@@ -0,0 +1,68 @@
+/* Set NaN payload. ldbl-96 version.
+ Copyright (C) 2016-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+#include <math_private.h>
+#include <nan-high-order-bit.h>
+#include <stdint.h>
+
+#define SET_HIGH_BIT (HIGH_ORDER_BIT_IS_SET_FOR_SNAN ? SIG : !SIG)
+#define BIAS 0x3fff
+#define PAYLOAD_DIG 62
+#define EXPLICIT_MANT_DIG 63
+
+int
+FUNC (long double *x, long double payload)
+{
+ uint32_t hx, lx;
+ uint16_t exponent;
+ GET_LDOUBLE_WORDS (exponent, hx, lx, payload);
+ /* Test if argument is (a) negative or too large; (b) too small,
+ except for 0 when allowed; (c) not an integer. */
+ if (exponent >= BIAS + PAYLOAD_DIG
+ || (exponent < BIAS && !(SET_HIGH_BIT
+ && exponent == 0 && hx == 0 && lx == 0)))
+ {
+ SET_LDOUBLE_WORDS (*x, 0, 0, 0);
+ return 1;
+ }
+ int shift = BIAS + EXPLICIT_MANT_DIG - exponent;
+ if (shift < 32
+ ? (lx & ((1U << shift) - 1)) != 0
+ : (lx != 0 || (hx & ((1U << (shift - 32)) - 1)) != 0))
+ {
+ SET_LDOUBLE_WORDS (*x, 0, 0, 0);
+ return 1;
+ }
+ if (exponent != 0)
+ {
+ if (shift >= 32)
+ {
+ lx = hx >> (shift - 32);
+ hx = 0;
+ }
+ else if (shift != 0)
+ {
+ lx = (lx >> shift) | (hx << (32 - shift));
+ hx >>= shift;
+ }
+ }
+ hx |= 0x80000000 | (SET_HIGH_BIT ? 0x40000000 : 0);
+ SET_LDOUBLE_WORDS (*x, 0x7fff, hx, lx);
+ return 0;
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-96/s_setpayloadsigl.c b/REORG.TODO/sysdeps/ieee754/ldbl-96/s_setpayloadsigl.c
new file mode 100644
index 0000000000..d97e2c8206
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-96/s_setpayloadsigl.c
@@ -0,0 +1,3 @@
+#define SIG 1
+#define FUNC setpayloadsigl
+#include <s_setpayloadl_main.c>
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-96/s_signbitl.c b/REORG.TODO/sysdeps/ieee754/ldbl-96/s_signbitl.c
new file mode 100644
index 0000000000..d430eb8600
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-96/s_signbitl.c
@@ -0,0 +1,26 @@
+/* Return nonzero value if number is negative.
+ Copyright (C) 1997-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+
+int
+__signbitl (long double x)
+{
+ return __builtin_signbitl (x);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-96/s_sincosl.c b/REORG.TODO/sysdeps/ieee754/ldbl-96/s_sincosl.c
new file mode 100644
index 0000000000..7d33c97162
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-96/s_sincosl.c
@@ -0,0 +1,76 @@
+/* Compute sine and cosine of argument.
+ Copyright (C) 1997-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <errno.h>
+#include <math.h>
+
+#include <math_private.h>
+
+
+void
+__sincosl (long double x, long double *sinx, long double *cosx)
+{
+ int32_t se, i0, i1 __attribute__ ((unused));
+
+ /* High word of x. */
+ GET_LDOUBLE_WORDS (se, i0, i1, x);
+
+ /* |x| ~< pi/4 */
+ se &= 0x7fff;
+ if (se < 0x3ffe || (se == 0x3ffe && i0 <= 0xc90fdaa2))
+ {
+ *sinx = __kernel_sinl (x, 0.0, 0);
+ *cosx = __kernel_cosl (x, 0.0);
+ }
+ else if (se == 0x7fff)
+ {
+ /* sin(Inf or NaN) is NaN */
+ *sinx = *cosx = x - x;
+ if (isinf (x))
+ __set_errno (EDOM);
+ }
+ else
+ {
+ /* Argument reduction needed. */
+ long double y[2];
+ int n;
+
+ n = __ieee754_rem_pio2l (x, y);
+ switch (n & 3)
+ {
+ case 0:
+ *sinx = __kernel_sinl (y[0], y[1], 1);
+ *cosx = __kernel_cosl (y[0], y[1]);
+ break;
+ case 1:
+ *sinx = __kernel_cosl (y[0], y[1]);
+ *cosx = -__kernel_sinl (y[0], y[1], 1);
+ break;
+ case 2:
+ *sinx = -__kernel_sinl (y[0], y[1], 1);
+ *cosx = -__kernel_cosl (y[0], y[1]);
+ break;
+ default:
+ *sinx = -__kernel_cosl (y[0], y[1]);
+ *cosx = __kernel_sinl (y[0], y[1], 1);
+ break;
+ }
+ }
+}
+weak_alias (__sincosl, sincosl)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-96/s_sinl.c b/REORG.TODO/sysdeps/ieee754/ldbl-96/s_sinl.c
new file mode 100644
index 0000000000..11e1899822
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-96/s_sinl.c
@@ -0,0 +1,88 @@
+/* s_sinl.c -- long double version of s_sin.c.
+ * Conversion to long double by Ulrich Drepper,
+ * Cygnus Support, drepper@cygnus.com.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: $";
+#endif
+
+/* sinl(x)
+ * Return sine function of x.
+ *
+ * kernel function:
+ * __kernel_sinl ... sine function on [-pi/4,pi/4]
+ * __kernel_cosl ... cose function on [-pi/4,pi/4]
+ * __ieee754_rem_pio2l ... argument reduction routine
+ *
+ * Method.
+ * Let S,C and T denote the sin, cos and tan respectively on
+ * [-PI/4, +PI/4]. Reduce the argument x to y1+y2 = x-k*pi/2
+ * in [-pi/4 , +pi/4], and let n = k mod 4.
+ * We have
+ *
+ * n sin(x) cos(x) tan(x)
+ * ----------------------------------------------------------
+ * 0 S C T
+ * 1 C -S -1/T
+ * 2 -S -C T
+ * 3 -C S -1/T
+ * ----------------------------------------------------------
+ *
+ * Special cases:
+ * Let trig be any of sin, cos, or tan.
+ * trig(+-INF) is NaN, with signals;
+ * trig(NaN) is that NaN;
+ *
+ * Accuracy:
+ * TRIG(x) returns trig(x) nearly rounded
+ */
+
+#include <errno.h>
+#include <math.h>
+#include <math_private.h>
+
+long double __sinl(long double x)
+{
+ long double y[2],z=0.0;
+ int32_t n, se, i0, i1;
+
+ /* High word of x. */
+ GET_LDOUBLE_WORDS(se,i0,i1,x);
+
+ /* |x| ~< pi/4 */
+ se &= 0x7fff;
+ if(se < 0x3ffe || (se == 0x3ffe && i0 <= 0xc90fdaa2))
+ return __kernel_sinl(x,z,0);
+
+ /* sin(Inf or NaN) is NaN */
+ else if (se==0x7fff) {
+ if (i1 == 0 && i0 == 0x80000000)
+ __set_errno (EDOM);
+ return x-x;
+ }
+
+ /* argument reduction needed */
+ else {
+ n = __ieee754_rem_pio2l(x,y);
+ switch(n&3) {
+ case 0: return __kernel_sinl(y[0],y[1],1);
+ case 1: return __kernel_cosl(y[0],y[1]);
+ case 2: return -__kernel_sinl(y[0],y[1],1);
+ default:
+ return -__kernel_cosl(y[0],y[1]);
+ }
+ }
+}
+weak_alias (__sinl, sinl)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-96/s_tanhl.c b/REORG.TODO/sysdeps/ieee754/ldbl-96/s_tanhl.c
new file mode 100644
index 0000000000..38edf9f75e
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-96/s_tanhl.c
@@ -0,0 +1,90 @@
+/* s_tanhl.c -- long double version of s_tanh.c.
+ * Conversion to long double by Ulrich Drepper,
+ * Cygnus Support, drepper@cygnus.com.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: $";
+#endif
+
+/* tanhl(x)
+ * Return the Hyperbolic Tangent of x
+ *
+ * Method :
+ * x -x
+ * e - e
+ * 0. tanhl(x) is defined to be -----------
+ * x -x
+ * e + e
+ * 1. reduce x to non-negative by tanhl(-x) = -tanhl(x).
+ * 2. 0 <= x <= 2**-55 : tanhl(x) := x*(one+x)
+ * -t
+ * 2**-55 < x <= 1 : tanhl(x) := -----; t = expm1l(-2x)
+ * t + 2
+ * 2
+ * 1 <= x <= 23.0 : tanhl(x) := 1- ----- ; t=expm1l(2x)
+ * t + 2
+ * 23.0 < x <= INF : tanhl(x) := 1.
+ *
+ * Special cases:
+ * tanhl(NaN) is NaN;
+ * only tanhl(0)=0 is exact for finite argument.
+ */
+
+#include <float.h>
+#include <math.h>
+#include <math_private.h>
+
+static const long double one=1.0, two=2.0, tiny = 1.0e-4900L;
+
+long double __tanhl(long double x)
+{
+ long double t,z;
+ int32_t se;
+ u_int32_t j0,j1,ix;
+
+ /* High word of |x|. */
+ GET_LDOUBLE_WORDS(se,j0,j1,x);
+ ix = se&0x7fff;
+
+ /* x is INF or NaN */
+ if(ix==0x7fff) {
+ /* for NaN it's not important which branch: tanhl(NaN) = NaN */
+ if (se&0x8000) return one/x-one; /* tanhl(-inf)= -1; */
+ else return one/x+one; /* tanhl(+inf)=+1 */
+ }
+
+ /* |x| < 23 */
+ if (ix < 0x4003 || (ix == 0x4003 && j0 < 0xb8000000u)) {/* |x|<23 */
+ if ((ix|j0|j1) == 0)
+ return x; /* x == +- 0 */
+ if (ix<0x3fc8) /* |x|<2**-55 */
+ {
+ math_check_force_underflow (x);
+ return x*(one+tiny); /* tanh(small) = small */
+ }
+ if (ix>=0x3fff) { /* |x|>=1 */
+ t = __expm1l(two*fabsl(x));
+ z = one - two/(t+two);
+ } else {
+ t = __expm1l(-two*fabsl(x));
+ z= -t/(t+two);
+ }
+ /* |x| > 23, return +-1 */
+ } else {
+ z = one - tiny; /* raised inexact flag */
+ }
+ return (se&0x8000)? -z: z;
+}
+weak_alias (__tanhl, tanhl)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-96/s_tanl.c b/REORG.TODO/sysdeps/ieee754/ldbl-96/s_tanl.c
new file mode 100644
index 0000000000..3fbe4a8f6b
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-96/s_tanl.c
@@ -0,0 +1,81 @@
+/* s_tanl.c -- long double version of s_tan.c.
+ * Conversion to long double by Ulrich Drepper,
+ * Cygnus Support, drepper@cygnus.com.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: $";
+#endif
+
+/* tanl(x)
+ * Return tangent function of x.
+ *
+ * kernel function:
+ * __kernel_tanl ... tangent function on [-pi/4,pi/4]
+ * __ieee754_rem_pio2l ... argument reduction routine
+ *
+ * Method.
+ * Let S,C and T denote the sin, cos and tan respectively on
+ * [-PI/4, +PI/4]. Reduce the argument x to y1+y2 = x-k*pi/2
+ * in [-pi/4 , +pi/4], and let n = k mod 4.
+ * We have
+ *
+ * n sin(x) cos(x) tan(x)
+ * ----------------------------------------------------------
+ * 0 S C T
+ * 1 C -S -1/T
+ * 2 -S -C T
+ * 3 -C S -1/T
+ * ----------------------------------------------------------
+ *
+ * Special cases:
+ * Let trig be any of sin, cos, or tan.
+ * trig(+-INF) is NaN, with signals;
+ * trig(NaN) is that NaN;
+ *
+ * Accuracy:
+ * TRIG(x) returns trig(x) nearly rounded
+ */
+
+#include <errno.h>
+#include <math.h>
+#include <math_private.h>
+
+long double __tanl(long double x)
+{
+ long double y[2],z=0.0;
+ int32_t n, se, i0, i1;
+
+ /* High word of x. */
+ GET_LDOUBLE_WORDS(se,i0,i1,x);
+
+ /* |x| ~< pi/4 */
+ se &= 0x7fff;
+ if(se <= 0x3ffe) return __kernel_tanl(x,z,1);
+
+ /* tan(Inf or NaN) is NaN */
+ else if (se==0x7fff) {
+ if (i1 == 0 && i0 == 0x80000000)
+ __set_errno (EDOM);
+ return x-x;
+ }
+
+ /* argument reduction needed */
+ else {
+ n = __ieee754_rem_pio2l(x,y);
+ return __kernel_tanl(y[0],y[1],1-((n&1)<<1)); /* 1 -- n even
+ -1 -- n odd */
+ }
+}
+weak_alias (__tanl, tanl)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-96/s_totalorderl.c b/REORG.TODO/sysdeps/ieee754/ldbl-96/s_totalorderl.c
new file mode 100644
index 0000000000..16accad1ff
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-96/s_totalorderl.c
@@ -0,0 +1,57 @@
+/* Total order operation. ldbl-96 version.
+ Copyright (C) 2016-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <float.h>
+#include <math.h>
+#include <math_private.h>
+#include <nan-high-order-bit.h>
+#include <stdint.h>
+
+int
+totalorderl (long double x, long double y)
+{
+ int16_t expx, expy;
+ uint32_t hx, hy;
+ uint32_t lx, ly;
+ GET_LDOUBLE_WORDS (expx, hx, lx, x);
+ GET_LDOUBLE_WORDS (expy, hy, ly, y);
+ if (LDBL_MIN_EXP == -16382)
+ {
+ /* M68K variant: for the greatest exponent, the high mantissa
+ bit is not significant and both values of it are valid, so
+ set it before comparing. For the Intel variant, only one
+ value of the high mantissa bit is valid for each exponent, so
+ this is not necessary. */
+ if ((expx & 0x7fff) == 0x7fff)
+ hx |= 0x80000000;
+ if ((expy & 0x7fff) == 0x7fff)
+ hy |= 0x80000000;
+ }
+#if HIGH_ORDER_BIT_IS_SET_FOR_SNAN
+# error not implemented
+#endif
+ uint32_t x_sign = expx >> 15;
+ uint32_t y_sign = expy >> 15;
+ expx ^= x_sign >> 17;
+ hx ^= x_sign;
+ lx ^= x_sign;
+ expy ^= y_sign >> 17;
+ hy ^= y_sign;
+ ly ^= y_sign;
+ return expx < expy || (expx == expy && (hx < hy || (hx == hy && lx <= ly)));
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-96/s_totalordermagl.c b/REORG.TODO/sysdeps/ieee754/ldbl-96/s_totalordermagl.c
new file mode 100644
index 0000000000..6b370b2ade
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-96/s_totalordermagl.c
@@ -0,0 +1,51 @@
+/* Total order operation on absolute values. ldbl-96 version.
+ Copyright (C) 2016-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <float.h>
+#include <math.h>
+#include <math_private.h>
+#include <nan-high-order-bit.h>
+#include <stdint.h>
+
+int
+totalordermagl (long double x, long double y)
+{
+ uint16_t expx, expy;
+ uint32_t hx, hy;
+ uint32_t lx, ly;
+ GET_LDOUBLE_WORDS (expx, hx, lx, x);
+ GET_LDOUBLE_WORDS (expy, hy, ly, y);
+ expx &= 0x7fff;
+ expy &= 0x7fff;
+ if (LDBL_MIN_EXP == -16382)
+ {
+ /* M68K variant: for the greatest exponent, the high mantissa
+ bit is not significant and both values of it are valid, so
+ set it before comparing. For the Intel variant, only one
+ value of the high mantissa bit is valid for each exponent, so
+ this is not necessary. */
+ if (expx == 0x7fff)
+ hx |= 0x80000000;
+ if (expy == 0x7fff)
+ hy |= 0x80000000;
+ }
+#if HIGH_ORDER_BIT_IS_SET_FOR_SNAN
+# error not implemented
+#endif
+ return expx < expy || (expx == expy && (hx < hy || (hx == hy && lx <= ly)));
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-96/s_ufromfpl.c b/REORG.TODO/sysdeps/ieee754/ldbl-96/s_ufromfpl.c
new file mode 100644
index 0000000000..c686daa4a7
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-96/s_ufromfpl.c
@@ -0,0 +1,4 @@
+#define UNSIGNED 1
+#define INEXACT 0
+#define FUNC ufromfpl
+#include <s_fromfpl_main.c>
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-96/s_ufromfpxl.c b/REORG.TODO/sysdeps/ieee754/ldbl-96/s_ufromfpxl.c
new file mode 100644
index 0000000000..906066c83c
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-96/s_ufromfpxl.c
@@ -0,0 +1,4 @@
+#define UNSIGNED 1
+#define INEXACT 1
+#define FUNC ufromfpxl
+#include <s_fromfpl_main.c>
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-96/strtod_nan_ldouble.h b/REORG.TODO/sysdeps/ieee754/ldbl-96/strtod_nan_ldouble.h
new file mode 100644
index 0000000000..e847b13b40
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-96/strtod_nan_ldouble.h
@@ -0,0 +1,30 @@
+/* Convert string for NaN payload to corresponding NaN. For ldbl-96.
+ Copyright (C) 1997-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#define FLOAT long double
+#define SET_MANTISSA(flt, mant) \
+ do \
+ { \
+ union ieee854_long_double u; \
+ u.d = (flt); \
+ u.ieee_nan.mantissa0 = (mant) >> 32; \
+ u.ieee_nan.mantissa1 = (mant); \
+ if ((u.ieee.mantissa0 | u.ieee.mantissa1) != 0) \
+ (flt) = u.d; \
+ } \
+ while (0)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-96/strtold_l.c b/REORG.TODO/sysdeps/ieee754/ldbl-96/strtold_l.c
new file mode 100644
index 0000000000..251f91ba9d
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-96/strtold_l.c
@@ -0,0 +1,37 @@
+/* Copyright (C) 1999-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+
+/* The actual implementation for all floating point sizes is in strtod.c.
+ These macros tell it to produce the `long double' version, `strtold'. */
+
+#define FLOAT long double
+#define FLT LDBL
+#ifdef USE_WIDE_CHAR
+# define STRTOF wcstold_l
+# define __STRTOF __wcstold_l
+# define STRTOF_NAN __wcstold_nan
+#else
+# define STRTOF strtold_l
+# define __STRTOF __strtold_l
+# define STRTOF_NAN __strtold_nan
+#endif
+#define MPN2FLOAT __mpn_construct_long_double
+#define FLOAT_HUGE_VAL HUGE_VALL
+
+#include <stdlib/strtod_l.c>
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-96/t_sincosl.c b/REORG.TODO/sysdeps/ieee754/ldbl-96/t_sincosl.c
new file mode 100644
index 0000000000..77bf9cfdba
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-96/t_sincosl.c
@@ -0,0 +1,483 @@
+/* Extended-precision floating point sine and cosine tables.
+ Copyright (C) 1999-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Based on quad-precision tables by Jakub Jelinek <jj@ultra.linux.cz>
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+/* For 0.1484375 + n/128.0, n=0..82 this table contains
+ first 64 bits of cosine, then at least 64 additional
+ bits and the same for sine.
+ 0.1484375+82.0/128.0 is the smallest number among above defined numbers
+ larger than pi/4.
+ Computed using MPFR:
+
+ #include <stdio.h>
+ #include <mpfr.h>
+
+ int
+ main (void)
+ {
+ int j;
+ mpfr_t t, b, i, rs, rc, ts, tc, tsl, tcl;
+ mpfr_init2 (b, 64);
+ mpfr_init2 (i, 64);
+ mpfr_init2 (t, 64);
+ mpfr_set_str (b, "0.1484375", 0, MPFR_RNDN);
+ mpfr_set_str (i, "0x1p-7", 0, MPFR_RNDN);
+ mpfr_init2 (rs, 300);
+ mpfr_init2 (rc, 300);
+ mpfr_init2 (ts, 64);
+ mpfr_init2 (tc, 64);
+ mpfr_init2 (tsl, 64);
+ mpfr_init2 (tcl, 64);
+ for (j = 0; j <= 82; j++)
+ {
+ mpfr_mul_ui (t, i, j, MPFR_RNDN);
+ mpfr_add (t, t, b, MPFR_RNDN);
+ printf (" /" "* x = 0.1484375 + %d/128. *" "/\n", j);
+ mpfr_cos (rc, t, MPFR_RNDN);
+ mpfr_sin (rs, t, MPFR_RNDN);
+ mpfr_set (tc, rc, MPFR_RNDN);
+ mpfr_set (ts, rs, MPFR_RNDN);
+ mpfr_sub (tcl, rc, tc, MPFR_RNDN);
+ mpfr_sub (tsl, rs, ts, MPFR_RNDN);
+ mpfr_printf (" %.17RaL,\n", tc);
+ mpfr_printf (" %.17RaL,\n", tcl);
+ mpfr_printf (" %.17RaL,\n", ts);
+ mpfr_printf (" %.17RaL,\n", tsl);
+ }
+ return 0;
+ }
+
+*/
+
+const long double __sincosl_table[] = {
+ /* x = 0.1484375 + 0/128. */
+ 0xf.d2f5320e1b7902100p-4L,
+ -0x6.4b225d06708635580p-68L,
+ 0x2.5dc50bc95711d0d80p-4L,
+ 0x1.787d108fd438cf5a0p-68L,
+ /* x = 0.1484375 + 1/128. */
+ 0xf.ce1a053e621438b00p-4L,
+ 0x6.d60c76e8c45bf0a80p-68L,
+ 0x2.7d66258bacd96a400p-4L,
+ -0x1.4cca4c9a3782a6bc0p-68L,
+ /* x = 0.1484375 + 2/128. */
+ 0xf.c8ffa01ba68074100p-4L,
+ 0x7.e05962b0d9fdf2000p-68L,
+ 0x2.9cfd49b8be4f66540p-4L,
+ -0x1.89354fe340fbd96c0p-68L,
+ /* x = 0.1484375 + 3/128. */
+ 0xf.c3a6170f767ac7300p-4L,
+ 0x5.d63d99a9d439e1d80p-68L,
+ 0x2.bc89f9f424de54840p-4L,
+ 0x1.de7ce03b2514952c0p-68L,
+ /* x = 0.1484375 + 4/128. */
+ 0xf.be0d7f7fef11e7100p-4L,
+ -0x5.5bc47540b095ba800p-68L,
+ 0x2.dc0bb80b49a97ffc0p-4L,
+ -0xc.b1722e07246208500p-72L,
+ /* x = 0.1484375 + 5/128. */
+ 0xf.b835efcf670dd2d00p-4L,
+ -0x1.90186db968115ec20p-68L,
+ 0x2.fb8205f75e56a2b40p-4L,
+ 0x1.6a1c4792f85625880p-68L,
+ /* x = 0.1484375 + 6/128. */
+ 0xf.b21f7f5c156696b00p-4L,
+ 0xa.c1fe28ac5fd766700p-76L,
+ 0x3.1aec65df552876f80p-4L,
+ 0x2.ece9a235671324700p-72L,
+ /* x = 0.1484375 + 7/128. */
+ 0xf.abca467fb3cb8f200p-4L,
+ -0x2.f960fe2715cc521c0p-68L,
+ 0x3.3a4a5a19d86246700p-4L,
+ 0x1.0f602c44df4fa5140p-68L,
+ /* x = 0.1484375 + 8/128. */
+ 0xf.a5365e8f1d3ca2800p-4L,
+ -0x4.1e24a289519b26800p-68L,
+ 0x3.599b652f40ec999c0p-4L,
+ 0x1.f12a0a4c8561de160p-68L,
+ /* x = 0.1484375 + 9/128. */
+ 0xf.9e63e1d9e8b6f6f00p-4L,
+ 0x2.e296bae5b5ed9c100p-68L,
+ 0x3.78df09db8c332ce00p-4L,
+ 0xd.2b53d865582e45200p-72L,
+ /* x = 0.1484375 + 10/128. */
+ 0xf.9752eba9fff6b9900p-4L,
+ -0x7.bd415254fab56cd00p-68L,
+ 0x3.9814cb10513453cc0p-4L,
+ -0x6.84de43e3595cc8500p-72L,
+ /* x = 0.1484375 + 11/128. */
+ 0xf.90039843324f9b900p-4L,
+ 0x4.0416c1984b6cbed00p-68L,
+ 0x3.b73c2bf6b4b9f6680p-4L,
+ 0xe.f9499c81f0d965100p-72L,
+ /* x = 0.1484375 + 12/128. */
+ 0xf.887604e2c39dbb200p-4L,
+ 0xe.4ec5825059a78a000p-72L,
+ 0x3.d654aff15cb457a00p-4L,
+ 0xf.ca854698aba330400p-72L,
+ /* x = 0.1484375 + 13/128. */
+ 0xf.80aa4fbef750ba800p-4L,
+ -0x7.c2cc346a06b075c00p-68L,
+ 0x3.f55dda9e62aed7500p-4L,
+ 0x1.3bd7b8e6a3d1635e0p-68L,
+ /* x = 0.1484375 + 14/128. */
+ 0xf.78a098069792dab00p-4L,
+ -0x4.3611bda6e483a5980p-68L,
+ 0x4.14572fd94556e6480p-4L,
+ -0xc.29dfd8ec7722b8400p-72L,
+ /* x = 0.1484375 + 15/128. */
+ 0xf.7058fde0788dfc800p-4L,
+ 0x5.b8fe88789e4f42500p-72L,
+ 0x4.334033bcd90d66080p-4L,
+ -0x3.0a0c93e2b47bbae40p-68L,
+ /* x = 0.1484375 + 16/128. */
+ 0xf.67d3a26af7d07aa00p-4L,
+ 0x4.bd6d42af8c0068000p-68L,
+ 0x4.52186aa5377ab2080p-4L,
+ 0x3.bf2524f52e3a06a80p-68L,
+ /* x = 0.1484375 + 17/128. */
+ 0xf.5f10a7bb77d3dfa00p-4L,
+ 0xc.1da8b578427832800p-72L,
+ 0x4.70df5931ae1d94600p-4L,
+ 0x7.6fe0dcff47fe31b80p-72L,
+ /* x = 0.1484375 + 18/128. */
+ 0xf.561030ddd7a789600p-4L,
+ 0xe.a9f4a32c652155500p-72L,
+ 0x4.8f948446abcd6b100p-4L,
+ -0x8.0334eff185e4d9100p-72L,
+ /* x = 0.1484375 + 19/128. */
+ 0xf.4cd261d3e6c15bb00p-4L,
+ 0x3.69c8758630d2ac000p-68L,
+ 0x4.ae37710fad27c8a80p-4L,
+ 0x2.9c4cf96c03519b9c0p-68L,
+ /* x = 0.1484375 + 20/128. */
+ 0xf.43575f94d4f6b2700p-4L,
+ 0x2.f5fb76b14d2a64ac0p-68L,
+ 0x4.ccc7a50127e1de100p-4L,
+ -0x3.494bf3cfd39ae0840p-68L,
+ /* x = 0.1484375 + 21/128. */
+ 0xf.399f500c9e9fd3800p-4L,
+ -0x5.166a8d9c254778900p-68L,
+ 0x4.eb44a5da74f600200p-4L,
+ 0x7.aaa090f0734e28880p-72L,
+ /* x = 0.1484375 + 22/128. */
+ 0xf.2faa5a1b74e82fd00p-4L,
+ 0x6.1fa05f9177380e900p-68L,
+ 0x5.09adf9a7b9a5a0f80p-4L,
+ -0x1.c75705c59f5e66be0p-68L,
+ /* x = 0.1484375 + 23/128. */
+ 0xf.2578a595224dd2e00p-4L,
+ 0x6.bfa2eb2f99cc67500p-68L,
+ 0x5.280326c3cf4818200p-4L,
+ 0x3.ba6bb08eac82c2080p-68L,
+ /* x = 0.1484375 + 24/128. */
+ 0xf.1b0a5b406b526d900p-4L,
+ -0x7.93aa0152372f23380p-68L,
+ 0x5.4643b3da29de9b380p-4L,
+ -0x2.8eaa110f0ccd04c00p-68L,
+ /* x = 0.1484375 + 25/128. */
+ 0xf.105fa4d66b607a600p-4L,
+ 0x7.d44e0427252044380p-68L,
+ 0x5.646f27e8bd65cbe00p-4L,
+ 0x3.a5d61ff0657229100p-68L,
+ /* x = 0.1484375 + 26/128. */
+ 0xf.0578ad01ede708000p-4L,
+ -0x5.c63f6239467b50100p-68L,
+ 0x5.82850a41e1dd46c80p-4L,
+ -0x9.fd15dbb3244403200p-76L,
+ /* x = 0.1484375 + 27/128. */
+ 0xe.fa559f5ec3aec3a00p-4L,
+ 0x4.eb03319278a2d4200p-68L,
+ 0x5.a084e28e35fda2780p-4L,
+ -0x9.202444aace28b3100p-72L,
+ /* x = 0.1484375 + 28/128. */
+ 0xe.eef6a879146af0c00p-4L,
+ -0x6.46a15d15f53f2c200p-72L,
+ 0x5.be6e38ce809554280p-4L,
+ 0x3.c14ee9da0d3648400p-68L,
+ /* x = 0.1484375 + 29/128. */
+ 0xe.e35bf5ccac8905300p-4L,
+ -0x3.26e2248cb2c5b81c0p-68L,
+ 0x5.dc40955d9084f4880p-4L,
+ 0x2.94675a2498de5d840p-68L,
+ /* x = 0.1484375 + 30/128. */
+ 0xe.d785b5c44741b4500p-4L,
+ -0x6.c3a943462cc75eb00p-68L,
+ 0x5.f9fb80f21b5364a00p-4L,
+ -0x3.bcdabf5af1dd3ad00p-68L,
+ /* x = 0.1484375 + 31/128. */
+ 0xe.cb7417b8d4ee3ff00p-4L,
+ -0x3.c8545bf8c55b70e00p-68L,
+ 0x6.179e84a09a5258a80p-4L,
+ -0x3.f164a0531fc1ada00p-68L,
+ /* x = 0.1484375 + 32/128. */
+ 0xe.bf274bf0bda4f6200p-4L,
+ 0x4.47e56a09362679900p-68L,
+ 0x6.352929dd264bd4480p-4L,
+ 0x2.02ea766325d8aa8c0p-68L,
+ /* x = 0.1484375 + 33/128. */
+ 0xe.b29f839f201fd1400p-4L,
+ -0x4.6c8697d86e9587100p-68L,
+ 0x6.529afa7d51b129600p-4L,
+ 0x3.1ec197c0a840a11c0p-68L,
+ /* x = 0.1484375 + 34/128. */
+ 0xe.a5dcf0e30cf03e700p-4L,
+ -0x6.8910f4e13d9aea080p-68L,
+ 0x6.6ff380ba014410a00p-4L,
+ -0x1.c65cdf4f5c05a02a0p-68L,
+ /* x = 0.1484375 + 35/128. */
+ 0xe.98dfc6c6be031e600p-4L,
+ 0xd.d3089cbdd18a75b00p-72L,
+ 0x6.8d324731433279700p-4L,
+ 0x3.bc712bcc4ccddc480p-68L,
+ /* x = 0.1484375 + 36/128. */
+ 0xe.8ba8393eca7821b00p-4L,
+ -0x5.a9c27cb6e49efee80p-68L,
+ 0x6.aa56d8e8249db4e80p-4L,
+ 0x3.60a761fe3f9e559c0p-68L,
+ /* x = 0.1484375 + 37/128. */
+ 0xe.7e367d2956cfb1700p-4L,
+ -0x4.955ee1abe632ffa80p-68L,
+ 0x6.c760c14c8585a5200p-4L,
+ -0x2.42cb99f5193ad5380p-68L,
+ /* x = 0.1484375 + 38/128. */
+ 0xe.708ac84d4172a3e00p-4L,
+ 0x2.737662213429e1400p-68L,
+ 0x6.e44f8c36eb10a1c80p-4L,
+ -0xa.d2f6c3ff0b2b84600p-72L,
+ /* x = 0.1484375 + 39/128. */
+ 0xe.62a551594b970a700p-4L,
+ 0x7.0b15d41d4c0e48400p-68L,
+ 0x7.0122c5ec5028c8d00p-4L,
+ -0xc.c540b02cbf333c800p-76L,
+ /* x = 0.1484375 + 40/128. */
+ 0xe.54864fe33e8575d00p-4L,
+ -0x5.40a42f1a30e4e5780p-68L,
+ 0x7.1dd9fb1ff46778500p-4L,
+ 0x3.acb970a9f6729c700p-68L,
+ /* x = 0.1484375 + 41/128. */
+ 0xe.462dfc670d421ab00p-4L,
+ 0x3.d1a15901228f146c0p-68L,
+ 0x7.3a74b8f52947b6800p-4L,
+ 0x1.baf6928eb3fb02180p-68L,
+ /* x = 0.1484375 + 42/128. */
+ 0xe.379c9045f29d51800p-4L,
+ -0x3.b7f755b683dfa84c0p-68L,
+ 0x7.56f28d011d9852880p-4L,
+ 0x2.44a75fc29c779bd80p-68L,
+ /* x = 0.1484375 + 43/128. */
+ 0xe.28d245c58baef7200p-4L,
+ 0x2.25e232abc003c4380p-68L,
+ 0x7.7353054ca72690d80p-4L,
+ -0x3.391e8e0266194c600p-68L,
+ /* x = 0.1484375 + 44/128. */
+ 0xe.19cf580eeec046b00p-4L,
+ -0x5.ebdd058b7f8131080p-68L,
+ 0x7.8f95b0560a9a3bd80p-4L,
+ -0x1.2084267e23c739ee0p-68L,
+ /* x = 0.1484375 + 45/128. */
+ 0xe.0a94032dbea7cee00p-4L,
+ -0x4.222625d0505267a80p-68L,
+ 0x7.abba1d12c17bfa200p-4L,
+ -0x2.6d0f26c09f2126680p-68L,
+ /* x = 0.1484375 + 46/128. */
+ 0xd.fb20840f3a9b36f00p-4L,
+ 0x7.ae2c515342890b600p-68L,
+ 0x7.c7bfdaf13e5ed1700p-4L,
+ 0x2.12f8a7525bfb113c0p-68L,
+ /* x = 0.1484375 + 47/128. */
+ 0xd.eb7518814a7a93200p-4L,
+ -0x4.433773ef632be3b00p-68L,
+ 0x7.e3a679daaf25c6780p-4L,
+ -0x1.abd434bfd72f69be0p-68L,
+ /* x = 0.1484375 + 48/128. */
+ 0xd.db91ff31879917300p-4L,
+ -0x4.2dbad2f5c7760ae80p-68L,
+ 0x7.ff6d8a34bd5e8fa80p-4L,
+ -0x2.b368b7d24aea62100p-68L,
+ /* x = 0.1484375 + 49/128. */
+ 0xd.cb7777ac420705100p-4L,
+ 0x6.8f31e3eb780ce9c80p-68L,
+ 0x8.1b149ce34caa5a500p-4L,
+ -0x1.9af072f602b295580p-68L,
+ /* x = 0.1484375 + 50/128. */
+ 0xd.bb25c25b8260c1500p-4L,
+ -0x9.1843671366e48f400p-72L,
+ 0x8.369b434a372da7f00p-4L,
+ -0x4.a3758e01c931e1f80p-68L,
+ /* x = 0.1484375 + 51/128. */
+ 0xd.aa9d2086082706400p-4L,
+ -0x2.1ae3f617aa166cd00p-72L,
+ 0x8.52010f4f080052100p-4L,
+ 0x3.78bd8dd614753d080p-68L,
+ /* x = 0.1484375 + 52/128. */
+ 0xd.99ddd44e44a43d500p-4L,
+ -0x2.b5c5c126adfbef900p-68L,
+ 0x8.6d45935ab396cb500p-4L,
+ -0x1.bde17dd211ab0caa0p-68L,
+ /* x = 0.1484375 + 53/128. */
+ 0xd.88e820b1526311e00p-4L,
+ -0x2.a9e1043f3e565ac80p-68L,
+ 0x8.8868625b4e1dbb200p-4L,
+ 0x3.13310133022527200p-68L,
+ /* x = 0.1484375 + 54/128. */
+ 0xd.77bc4985e93a60800p-4L,
+ -0x3.6279746f944394400p-68L,
+ 0x8.a3690fc5bfc11c000p-4L,
+ -0x6.aca1d8c657aed0b80p-68L,
+ /* x = 0.1484375 + 55/128. */
+ 0xd.665a937b4ef2b1f00p-4L,
+ 0x6.d51bad6d988a44180p-68L,
+ 0x8.be472f9776d809b00p-4L,
+ -0xd.477e8edbc29c29900p-72L,
+ /* x = 0.1484375 + 56/128. */
+ 0xd.54c3441844897fd00p-4L,
+ -0x7.07ac0f9aa0e459680p-68L,
+ 0x8.d902565817ee78400p-4L,
+ -0x6.431c32ed7f9fee680p-68L,
+ /* x = 0.1484375 + 57/128. */
+ 0xd.42f6a1b9f0168ce00p-4L,
+ -0xf.ce3d09c3726cfb200p-72L,
+ 0x8.f39a191b2ba612300p-4L,
+ -0x5.c05b0be2a5c002c00p-68L,
+ /* x = 0.1484375 + 58/128. */
+ 0xd.30f4f392c357ab000p-4L,
+ 0x6.61c5fa8a7d9b26600p-68L,
+ 0x9.0e0e0d81ca6787900p-4L,
+ 0x6.cc92c8ea8c2815c00p-68L,
+ /* x = 0.1484375 + 59/128. */
+ 0xd.1ebe81a95ee752e00p-4L,
+ 0x4.8a26bcd32d6e92300p-68L,
+ 0x9.285dc9bc45dd9ea00p-4L,
+ 0x3.d02457bcce59c4180p-68L,
+ /* x = 0.1484375 + 60/128. */
+ 0xd.0c5394d7722281900p-4L,
+ 0x5.e25736c0357470800p-68L,
+ 0x9.4288e48bd0335fc00p-4L,
+ 0x4.1c4cbd2920497a900p-68L,
+ /* x = 0.1484375 + 61/128. */
+ 0xc.f9b476c897c25c600p-4L,
+ -0x4.018af22c0cf715080p-68L,
+ 0x9.5c8ef544210ec0c00p-4L,
+ -0x6.e3b642d55f617ae80p-68L,
+ /* x = 0.1484375 + 62/128. */
+ 0xc.e6e171f92f2e27f00p-4L,
+ 0x3.2225327ec440ddb00p-68L,
+ 0x9.766f93cd18413a700p-4L,
+ -0x5.503e303903d754480p-68L,
+ /* x = 0.1484375 + 63/128. */
+ 0xc.d3dad1b5328a2e400p-4L,
+ 0x5.9f993f4f510881a00p-68L,
+ 0x9.902a58a45e27bed00p-4L,
+ 0x6.8412b426b675ed500p-68L,
+ /* x = 0.1484375 + 64/128. */
+ 0xc.c0a0e21709883a400p-4L,
+ -0xf.f6ee1ee5f811c4300p-76L,
+ 0x9.a9bedcdf01b38da00p-4L,
+ -0x6.c0c287df87e21d700p-68L,
+ /* x = 0.1484375 + 65/128. */
+ 0xc.ad33f00658fe5e800p-4L,
+ 0x2.04bbc0f3a66a0e6c0p-68L,
+ 0x9.c32cba2b14156ef00p-4L,
+ 0x5.256c4f857991ca680p-72L,
+ /* x = 0.1484375 + 66/128. */
+ 0xc.99944936cf48c8900p-4L,
+ 0x1.1ff93fe64b3ddb7a0p-68L,
+ 0x9.dc738ad14204e6900p-4L,
+ -0x6.53a7d2f07a7d9a700p-68L,
+ /* x = 0.1484375 + 67/128. */
+ 0xc.85c23c26ed7b6f000p-4L,
+ 0x1.4ef546c4792968220p-68L,
+ 0x9.f592e9b66a9cf9000p-4L,
+ 0x6.a3c7aa3c101998480p-68L,
+ /* x = 0.1484375 + 68/128. */
+ 0xc.71be181ecd6875d00p-4L,
+ -0x1.d25a9ea5fc335df80p-68L,
+ 0xa.0e8a725d33c828c00p-4L,
+ 0x1.1fa50fd9e9a15ffe0p-68L,
+ /* x = 0.1484375 + 69/128. */
+ 0xc.5d882d2ee48030c00p-4L,
+ 0x7.c07d28e981e348080p-68L,
+ 0xa.2759c0e79c3558200p-4L,
+ 0x5.27c32b55f5405c180p-68L,
+ /* x = 0.1484375 + 70/128. */
+ 0xc.4920cc2ec38fb8900p-4L,
+ 0x1.b38827db08884fc60p-68L,
+ 0xa.400072188acf49d00p-4L,
+ -0x2.94e8c7da1fc7cb900p-68L,
+ /* x = 0.1484375 + 71/128. */
+ 0xc.348846bbd36313400p-4L,
+ -0x7.001d401622ec7e600p-68L,
+ 0xa.587e23555bb080800p-4L,
+ 0x6.d02b9c662cdd29300p-68L,
+ /* x = 0.1484375 + 72/128. */
+ 0xc.1fbeef380e4ffdd00p-4L,
+ 0x5.a613ec8722f644000p-68L,
+ 0xa.70d272a76a8d4b700p-4L,
+ -0x2.5f136f8ed448b7480p-68L,
+ /* x = 0.1484375 + 73/128. */
+ 0xc.0ac518c8b6ae71100p-4L,
+ -0x4.5c85c1146f34ea500p-68L,
+ 0xa.88fcfebd9a8dd4800p-4L,
+ -0x1.d0c3891061dbc66e0p-68L,
+ /* x = 0.1484375 + 74/128. */
+ 0xb.f59b17550a4406800p-4L,
+ 0x7.5969296567cf3e380p-68L,
+ 0xa.a0fd66eddb9212300p-4L,
+ 0x2.c28520d3911b8a040p-68L,
+ /* x = 0.1484375 + 75/128. */
+ 0xb.e0413f84f2a771c00p-4L,
+ 0x6.14946a88cbf4da200p-68L,
+ 0xa.b8d34b36acd987200p-4L,
+ 0x1.0ed343ec65d7e3ae0p-68L,
+ /* x = 0.1484375 + 76/128. */
+ 0xb.cab7e6bfb2a14aa00p-4L,
+ -0x4.edd3a8b5c89413680p-68L,
+ 0xa.d07e4c409d08c5000p-4L,
+ -0x5.c56fa844f53db4780p-68L,
+ /* x = 0.1484375 + 77/128. */
+ 0xb.b4ff632a908f73f00p-4L,
+ -0x3.eae7c6346266c4b00p-68L,
+ 0xa.e7fe0b5fc786b2e00p-4L,
+ -0x6.991e2950ebf5b7780p-68L,
+ /* x = 0.1484375 + 78/128. */
+ 0xb.9f180ba77dd075100p-4L,
+ 0x6.28e135a9508299000p-68L,
+ 0xa.ff522a954f2ba1700p-4L,
+ -0x2.621023be91cc0a180p-68L,
+ /* x = 0.1484375 + 79/128. */
+ 0xb.890237d3bb3c28500p-4L,
+ -0x4.9eb5fac6fe9405f00p-68L,
+ 0xb.167a4c90d63c42400p-4L,
+ 0x4.cf5493b7cc23bd400p-68L,
+ /* x = 0.1484375 + 80/128. */
+ 0xb.72be40067aaf2c000p-4L,
+ 0x5.0dbdb7a14c3d7d500p-68L,
+ 0xb.2d7614b1f3aaa2500p-4L,
+ -0x2.0d291df5881e35c00p-68L,
+ /* x = 0.1484375 + 81/128. */
+ 0xb.5c4c7d4f7dae91600p-4L,
+ -0x5.3879330b4e5b67300p-68L,
+ 0xb.44452709a59752900p-4L,
+ 0x5.913765434a59d1100p-72L,
+ /* x = 0.1484375 + 82/128. */
+ 0xb.45ad4975b1294cb00p-4L,
+ -0x2.35b30bf1370dd5980p-68L,
+ 0xb.5ae7285bc10cf5100p-4L,
+ 0x5.753847e8f8b7a3100p-68L,
+};
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-96/test-canonical-ldbl-96.c b/REORG.TODO/sysdeps/ieee754/ldbl-96/test-canonical-ldbl-96.c
new file mode 100644
index 0000000000..3254097754
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-96/test-canonical-ldbl-96.c
@@ -0,0 +1,141 @@
+/* Test iscanonical and canonicalizel for ldbl-96.
+ Copyright (C) 2016-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <float.h>
+#include <math.h>
+#include <math_ldbl.h>
+#include <stdbool.h>
+#include <stdint.h>
+#include <stdio.h>
+
+struct test
+{
+ bool sign;
+ uint16_t exponent;
+ bool high;
+ uint64_t mantissa;
+ bool canonical;
+};
+
+#define M68K_VARIANT (LDBL_MIN_EXP == -16382)
+
+static const struct test tests[] =
+ {
+ { false, 0, true, 0, M68K_VARIANT },
+ { true, 0, true, 0, M68K_VARIANT },
+ { false, 0, true, 1, M68K_VARIANT },
+ { true, 0, true, 1, M68K_VARIANT },
+ { false, 0, true, 0x100000000ULL, M68K_VARIANT },
+ { true, 0, true, 0x100000000ULL, M68K_VARIANT },
+ { false, 0, false, 0, true },
+ { true, 0, false, 0, true },
+ { false, 0, false, 1, true },
+ { true, 0, false, 1, true },
+ { false, 0, false, 0x100000000ULL, true },
+ { true, 0, false, 0x100000000ULL, true },
+ { false, 1, true, 0, true },
+ { true, 1, true, 0, true },
+ { false, 1, true, 1, true },
+ { true, 1, true, 1, true },
+ { false, 1, true, 0x100000000ULL, true },
+ { true, 1, true, 0x100000000ULL, true },
+ { false, 1, false, 0, false },
+ { true, 1, false, 0, false },
+ { false, 1, false, 1, false },
+ { true, 1, false, 1, false },
+ { false, 1, false, 0x100000000ULL, false },
+ { true, 1, false, 0x100000000ULL, false },
+ { false, 0x7ffe, true, 0, true },
+ { true, 0x7ffe, true, 0, true },
+ { false, 0x7ffe, true, 1, true },
+ { true, 0x7ffe, true, 1, true },
+ { false, 0x7ffe, true, 0x100000000ULL, true },
+ { true, 0x7ffe, true, 0x100000000ULL, true },
+ { false, 0x7ffe, false, 0, false },
+ { true, 0x7ffe, false, 0, false },
+ { false, 0x7ffe, false, 1, false },
+ { true, 0x7ffe, false, 1, false },
+ { false, 0x7ffe, false, 0x100000000ULL, false },
+ { true, 0x7ffe, false, 0x100000000ULL, false },
+ { false, 0x7fff, true, 0, true },
+ { true, 0x7fff, true, 0, true },
+ { false, 0x7fff, true, 1, true },
+ { true, 0x7fff, true, 1, true },
+ { false, 0x7fff, true, 0x100000000ULL, true },
+ { true, 0x7fff, true, 0x100000000ULL, true },
+ { false, 0x7fff, false, 0, M68K_VARIANT },
+ { true, 0x7fff, false, 0, M68K_VARIANT },
+ { false, 0x7fff, false, 1, M68K_VARIANT },
+ { true, 0x7fff, false, 1, M68K_VARIANT },
+ { false, 0x7fff, false, 0x100000000ULL, M68K_VARIANT },
+ { true, 0x7fff, false, 0x100000000ULL, M68K_VARIANT },
+ };
+
+static int
+do_test (void)
+{
+ int result = 0;
+
+ for (size_t i = 0; i < sizeof (tests) / sizeof (tests[0]); i++)
+ {
+ long double ld;
+ SET_LDOUBLE_WORDS (ld, tests[i].exponent | (tests[i].sign << 15),
+ (tests[i].mantissa >> 32) | (tests[i].high << 31),
+ tests[i].mantissa & 0xffffffffULL);
+ bool canonical = iscanonical (ld);
+ if (canonical == tests[i].canonical)
+ {
+ printf ("PASS: iscanonical test %zu\n", i);
+ long double ldc = 12345.0L;
+ bool canonicalize_ret = canonicalizel (&ldc, &ld);
+ if (canonicalize_ret == !canonical)
+ {
+ printf ("PASS: canonicalizel test %zu\n", i);
+ bool canon_ok;
+ if (!canonical)
+ canon_ok = ldc == 12345.0L;
+ else if (isnan (ld))
+ canon_ok = isnan (ldc) && !issignaling (ldc);
+ else
+ canon_ok = ldc == ld;
+ if (canon_ok)
+ printf ("PASS: canonicalized value test %zu\n", i);
+ else
+ {
+ printf ("FAIL: canonicalized value test %zu\n", i);
+ result = 1;
+ }
+ }
+ else
+ {
+ printf ("FAIL: canonicalizel test %zu\n", i);
+ result = 1;
+ }
+ }
+ else
+ {
+ printf ("FAIL: iscanonical test %zu\n", i);
+ result = 1;
+ }
+ }
+
+ return result;
+}
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-96/test-totalorderl-ldbl-96.c b/REORG.TODO/sysdeps/ieee754/ldbl-96/test-totalorderl-ldbl-96.c
new file mode 100644
index 0000000000..4e01f15aa9
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-96/test-totalorderl-ldbl-96.c
@@ -0,0 +1,82 @@
+/* Test totalorderl and totalordermagl for ldbl-96.
+ Copyright (C) 2016-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <float.h>
+#include <math.h>
+#include <math_ldbl.h>
+#include <stdbool.h>
+#include <stdint.h>
+#include <stdio.h>
+
+static const uint64_t tests[] =
+ {
+ 0, 1, 0x4000000000000000ULL, 0x4000000000000001ULL,
+ 0x7fffffffffffffffULL
+ };
+
+static int
+do_test (void)
+{
+ int result = 0;
+
+ if (LDBL_MIN_EXP == -16382)
+ for (size_t i = 0; i < sizeof (tests) / sizeof (tests[0]); i++)
+ {
+ long double ldx, ldy, ldnx, ldny;
+ /* Verify that the high bit of the mantissa is ignored for
+ infinities and NaNs for the M68K variant of this
+ format. */
+ SET_LDOUBLE_WORDS (ldx, 0x7fff,
+ tests[i] >> 32, tests[i] & 0xffffffffULL);
+ SET_LDOUBLE_WORDS (ldy, 0x7fff,
+ (tests[i] >> 32) | 0x80000000,
+ tests[i] & 0xffffffffULL);
+ SET_LDOUBLE_WORDS (ldnx, 0xffff,
+ tests[i] >> 32, tests[i] & 0xffffffffULL);
+ SET_LDOUBLE_WORDS (ldny, 0xffff,
+ (tests[i] >> 32) | 0x80000000,
+ tests[i] & 0xffffffffULL);
+ bool to1 = totalorderl (ldx, ldy);
+ bool to2 = totalorderl (ldy, ldx);
+ bool to3 = totalorderl (ldnx, ldny);
+ bool to4 = totalorderl (ldny, ldnx);
+ if (to1 && to2 && to3 && to4)
+ printf ("PASS: test %zu\n", i);
+ else
+ {
+ printf ("FAIL: test %zu\n", i);
+ result = 1;
+ }
+ to1 = totalordermagl (ldx, ldy);
+ to2 = totalordermagl (ldy, ldx);
+ to3 = totalordermagl (ldnx, ldny);
+ to4 = totalordermagl (ldny, ldnx);
+ if (to1 && to2 && to3 && to4)
+ printf ("PASS: test %zu (totalordermagl)\n", i);
+ else
+ {
+ printf ("FAIL: test %zu (totalordermagl)\n", i);
+ result = 1;
+ }
+ }
+
+ return result;
+}
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-96/w_expl_compat.c b/REORG.TODO/sysdeps/ieee754/ldbl-96/w_expl_compat.c
new file mode 100644
index 0000000000..a0b852a3e2
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-96/w_expl_compat.c
@@ -0,0 +1,34 @@
+/* Copyright (C) 2011-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@gmail.com>, 2011.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+#include <math_private.h>
+
+/* wrapper expl */
+long double
+__expl (long double x)
+{
+ long double z = __ieee754_expl (x);
+ if (__builtin_expect (!isfinite (z) || z == 0, 0)
+ && isfinite (x) && _LIB_VERSION != _IEEE_)
+ return __kernel_standard_l (x, x, 206 + !!signbit (x));
+
+ return z;
+}
+hidden_def (__expl)
+weak_alias (__expl, expl)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-96/x2y2m1.c b/REORG.TODO/sysdeps/ieee754/ldbl-96/x2y2m1.c
new file mode 100644
index 0000000000..a20e89309e
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-96/x2y2m1.c
@@ -0,0 +1,39 @@
+/* Compute x^2 + y^2 - 1, without large cancellation error.
+ Copyright (C) 2012-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+#include <math_private.h>
+#include <float.h>
+
+#if FLT_EVAL_METHOD == 0
+
+# include <sysdeps/ieee754/dbl-64/x2y2m1.c>
+
+#else
+
+/* Return X^2 + Y^2 - 1, computed without large cancellation error.
+ It is given that 1 > X >= Y >= epsilon / 2, and that X^2 + Y^2 >=
+ 0.5. */
+
+double
+__x2y2m1 (double x, double y)
+{
+ return (double) __x2y2m1l (x, y);
+}
+
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-96/x2y2m1l.c b/REORG.TODO/sysdeps/ieee754/ldbl-96/x2y2m1l.c
new file mode 100644
index 0000000000..a301fb3589
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-96/x2y2m1l.c
@@ -0,0 +1,75 @@
+/* Compute x^2 + y^2 - 1, without large cancellation error.
+ Copyright (C) 2012-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+#include <math_private.h>
+#include <mul_splitl.h>
+#include <stdlib.h>
+
+/* Calculate X + Y exactly and store the result in *HI + *LO. It is
+ given that |X| >= |Y| and the values are small enough that no
+ overflow occurs. */
+
+static inline void
+add_split (long double *hi, long double *lo, long double x, long double y)
+{
+ /* Apply Dekker's algorithm. */
+ *hi = x + y;
+ *lo = (x - *hi) + y;
+}
+
+/* Compare absolute values of floating-point values pointed to by P
+ and Q for qsort. */
+
+static int
+compare (const void *p, const void *q)
+{
+ long double pld = fabsl (*(const long double *) p);
+ long double qld = fabsl (*(const long double *) q);
+ if (pld < qld)
+ return -1;
+ else if (pld == qld)
+ return 0;
+ else
+ return 1;
+}
+
+/* Return X^2 + Y^2 - 1, computed without large cancellation error.
+ It is given that 1 > X >= Y >= epsilon / 2, and that X^2 + Y^2 >=
+ 0.5. */
+
+long double
+__x2y2m1l (long double x, long double y)
+{
+ long double vals[5];
+ SET_RESTORE_ROUNDL (FE_TONEAREST);
+ mul_splitl (&vals[1], &vals[0], x, x);
+ mul_splitl (&vals[3], &vals[2], y, y);
+ vals[4] = -1.0L;
+ qsort (vals, 5, sizeof (long double), compare);
+ /* Add up the values so that each element of VALS has absolute value
+ at most equal to the last set bit of the next nonzero
+ element. */
+ for (size_t i = 0; i <= 3; i++)
+ {
+ add_split (&vals[i + 1], &vals[i], vals[i + 1], vals[i]);
+ qsort (vals + i + 1, 4 - i, sizeof (long double), compare);
+ }
+ /* Now any error from this addition will be small. */
+ return vals[4] + vals[3] + vals[2] + vals[1] + vals[0];
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/Makefile b/REORG.TODO/sysdeps/ieee754/ldbl-opt/Makefile
new file mode 100644
index 0000000000..81429d0ddd
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/Makefile
@@ -0,0 +1,167 @@
+# The`long double' type is a distinct type we support if
+# -mlong-double-128 option is used (or when it becomes a default
+# when -mlong-double-64 is not used).
+long-double-fcts = yes
+ifeq (,$(filter -mlong-double-128,$(sysdep-CFLAGS)))
+sysdep-CFLAGS += -mlong-double-128
+endif
+
+ifeq ($(subdir),math)
+libm-routines += s_nexttowardfd
+routines += math_ldbl_opt nldbl-compat
+
+extra-libs += libnldbl
+libnldbl-calls = asprintf dprintf fprintf fscanf fwprintf fwscanf iovfscanf \
+ obstack_printf obstack_vprintf printf scanf snprintf \
+ sprintf sscanf swprintf swscanf vasprintf vdprintf vfprintf \
+ vfscanf vfwprintf vfwscanf vprintf vscanf vsnprintf \
+ vsprintf vsscanf vswprintf vswscanf vwprintf vwscanf \
+ wprintf wscanf printf_fp printf_size \
+ fprintf_chk fwprintf_chk printf_chk snprintf_chk sprintf_chk \
+ swprintf_chk vfprintf_chk vfwprintf_chk vprintf_chk \
+ vsnprintf_chk vsprintf_chk vswprintf_chk vwprintf_chk \
+ wprintf_chk asprintf_chk vasprintf_chk dprintf_chk \
+ vdprintf_chk obstack_printf_chk obstack_vprintf_chk \
+ syslog syslog_chk vsyslog vsyslog_chk \
+ strfmon strfmon_l \
+ strfroml \
+ strtold strtold_l strtoldint wcstold wcstold_l wcstoldint \
+ qecvt qfcvt qgcvt qecvt_r qfcvt_r \
+ isinf isnan finite signbit scalb log2 lgamma_r ceil \
+ significand acos asin atan atan2 cos sin tan cosh sinh \
+ tanh acosh asinh atanh exp log log10 exp10 pow10 expm1 \
+ log1p logb exp2 sqrt cbrt fabs floor j0 j1 y0 y1 erf erfc \
+ lgamma tgamma gamma rint nearbyint round trunc \
+ copysign fdim fmax fmin nextafter pow hypot fmod \
+ remainder ldexp scalbn frexp modf scalbln fma nan sincos \
+ jn yn ilogb remquo lrint lround llrint llround nexttowardf \
+ nexttoward conj cacos cacosh casin catan catanh ccos ccosh \
+ casinh cexp clog cproj csin csinh csqrt ctan ctanh cpow \
+ cabs carg cimag creal clog10 \
+ isoc99_scanf isoc99_fscanf isoc99_sscanf \
+ isoc99_vscanf isoc99_vfscanf isoc99_vsscanf \
+ isoc99_wscanf isoc99_fwscanf isoc99_swscanf \
+ isoc99_vwscanf isoc99_vfwscanf isoc99_vswscanf \
+ nextup nextdown totalorder totalordermag getpayload \
+ canonicalize setpayload setpayloadsig llogb fmaxmag fminmag \
+ roundeven fromfp ufromfp fromfpx ufromfpx
+libnldbl-routines = $(libnldbl-calls:%=nldbl-%)
+libnldbl-inhibit-o = $(object-suffixes)
+libnldbl-static-only-routines = $(libnldbl-routines)
+extra-objs += $(addsuffix .oS, $(libnldbl-routines))
+
+CFLAGS-nldbl-acos.c = -fno-builtin-acosl
+CFLAGS-nldbl-acosh.c = -fno-builtin-acoshl
+CFLAGS-nldbl-asin.c = -fno-builtin-asinl
+CFLAGS-nldbl-asinh.c = -fno-builtin-asinhl
+CFLAGS-nldbl-atan.c = -fno-builtin-atanl
+CFLAGS-nldbl-atan2.c = -fno-builtin-atan2l
+CFLAGS-nldbl-atanh.c = -fno-builtin-atanhl
+CFLAGS-nldbl-cabs.c = -fno-builtin-cabsl
+CFLAGS-nldbl-cacos.c = -fno-builtin-cacosl
+CFLAGS-nldbl-cacosh.c = -fno-builtin-cacoshl
+CFLAGS-nldbl-canonicalize.c = -fno-builtin-canonicalizel
+CFLAGS-nldbl-carg.c = -fno-builtin-cargl
+CFLAGS-nldbl-casin.c = -fno-builtin-casinl
+CFLAGS-nldbl-casinh.c = -fno-builtin-casinhl
+CFLAGS-nldbl-catan.c = -fno-builtin-catanl
+CFLAGS-nldbl-catanh.c = -fno-builtin-catanhl
+CFLAGS-nldbl-cbrt.c = -fno-builtin-cbrtl
+CFLAGS-nldbl-ccos.c = -fno-builtin-ccosl
+CFLAGS-nldbl-ccosh.c = -fno-builtin-ccoshl
+CFLAGS-nldbl-ceil.c = -fno-builtin-ceill
+CFLAGS-nldbl-cexp.c = -fno-builtin-cexpl
+CFLAGS-nldbl-cimag.c = -fno-builtin-cimagl
+CFLAGS-nldbl-clog.c = -fno-builtin-clogl
+CFLAGS-nldbl-clog10.c = -fno-builtin-clog10l
+CFLAGS-nldbl-conj.c = -fno-builtin-conjl
+CFLAGS-nldbl-copysign.c = -fno-builtin-copysignl
+CFLAGS-nldbl-cos.c = -fno-builtin-cosl
+CFLAGS-nldbl-cosh.c = -fno-builtin-coshl
+CFLAGS-nldbl-cpow.c = -fno-builtin-cpowl
+CFLAGS-nldbl-cproj.c = -fno-builtin-cprojl
+CFLAGS-nldbl-creal.c = -fno-builtin-creall
+CFLAGS-nldbl-csin.c = -fno-builtin-csinl
+CFLAGS-nldbl-csinh.c = -fno-builtin-csinhl
+CFLAGS-nldbl-csqrt.c = -fno-builtin-csqrtl
+CFLAGS-nldbl-ctan.c = -fno-builtin-ctanl
+CFLAGS-nldbl-ctanh.c = -fno-builtin-ctanhl
+CFLAGS-nldbl-erf.c = -fno-builtin-erfl
+CFLAGS-nldbl-erfc.c = -fno-builtin-erfcl
+CFLAGS-nldbl-exp.c = -fno-builtin-expl
+CFLAGS-nldbl-exp10.c = -fno-builtin-exp10l
+CFLAGS-nldbl-exp2.c = -fno-builtin-exp2l
+CFLAGS-nldbl-expm1.c = -fno-builtin-expm1l
+CFLAGS-nldbl-fabs.c = -fno-builtin-fabsl
+CFLAGS-nldbl-fdim.c = -fno-builtin-fdiml
+CFLAGS-nldbl-finite.c = -fno-builtin-finitel
+CFLAGS-nldbl-floor.c = -fno-builtin-floorl
+CFLAGS-nldbl-fma.c = -fno-builtin-fmal
+CFLAGS-nldbl-fmax.c = -fno-builtin-fmaxl
+CFLAGS-nldbl-fmaxmag.c = -fno-builtin-fmaxmagl
+CFLAGS-nldbl-fmin.c = -fno-builtin-fminl
+CFLAGS-nldbl-fminmag.c = -fno-builtin-fminmagl
+CFLAGS-nldbl-fmod.c = -fno-builtin-fmodl
+CFLAGS-nldbl-frexp.c = -fno-builtin-frexpl
+CFLAGS-nldbl-fromfp.c = -fno-builtin-fromfpl
+CFLAGS-nldbl-fromfpx.c = -fno-builtin-fromfpxl
+CFLAGS-nldbl-gamma.c = -fno-builtin-gammal
+CFLAGS-nldbl-getpayload.c = -fno-builtin-getpayloadl
+CFLAGS-nldbl-hypot.c = -fno-builtin-hypotl
+CFLAGS-nldbl-ilogb.c = -fno-builtin-ilogbl
+CFLAGS-nldbl-isinf.c = -fno-builtin-isinfl
+CFLAGS-nldbl-isnan.c = -fno-builtin-isnanl
+CFLAGS-nldbl-j0.c = -fno-builtin-j0l
+CFLAGS-nldbl-j1.c = -fno-builtin-j1l
+CFLAGS-nldbl-jn.c = -fno-builtin-jnl
+CFLAGS-nldbl-ldexp.c = -fno-builtin-ldexpl
+CFLAGS-nldbl-lgamma.c = -fno-builtin-lgammal
+CFLAGS-nldbl-lgamma_r.c = -fno-builtin-lgammal_r
+CFLAGS-nldbl-llogb.c = -fno-builtin-llogbl
+CFLAGS-nldbl-llrint.c = -fno-builtin-llrintl
+CFLAGS-nldbl-llround.c = -fno-builtin-llroundl
+CFLAGS-nldbl-log.c = -fno-builtin-logl
+CFLAGS-nldbl-log10.c = -fno-builtin-log10l
+CFLAGS-nldbl-log1p.c = -fno-builtin-log1pl
+CFLAGS-nldbl-log2.c = -fno-builtin-log2l
+CFLAGS-nldbl-logb.c = -fno-builtin-logbl
+CFLAGS-nldbl-lrint.c = -fno-builtin-lrintl
+CFLAGS-nldbl-lround.c = -fno-builtin-lroundl
+CFLAGS-nldbl-modf.c = -fno-builtin-modfl
+CFLAGS-nldbl-nan.c = -fno-builtin-nanl
+CFLAGS-nldbl-nearbyint.c = -fno-builtin-nearbyintl
+CFLAGS-nldbl-nextafter.c = -fno-builtin-nextafterl
+CFLAGS-nldbl-nextdown.c = -fno-builtin-nextdownl
+CFLAGS-nldbl-nexttoward.c = -fno-builtin-nexttoward -fno-builtin-nexttowardl
+CFLAGS-nldbl-nexttowardf.c = -fno-builtin-nexttowardf
+CFLAGS-nldbl-nextup.c = -fno-builtin-nextupl
+CFLAGS-nldbl-pow.c = -fno-builtin-powl
+CFLAGS-nldbl-pow10.c = -fno-builtin-pow10l
+CFLAGS-nldbl-remainder.c = -fno-builtin-remainderl -fno-builtin-dreml
+CFLAGS-nldbl-remquo.c = -fno-builtin-remquol
+CFLAGS-nldbl-rint.c = -fno-builtin-rintl
+CFLAGS-nldbl-round.c = -fno-builtin-roundl
+CFLAGS-nldbl-roundeven.c = -fno-builtin-roundevenl
+CFLAGS-nldbl-scalb.c = -fno-builtin-scalbl
+CFLAGS-nldbl-scalbln.c = -fno-builtin-scalblnl
+CFLAGS-nldbl-scalbn.c = -fno-builtin-scalbnl
+CFLAGS-nldbl-setpayload.c = -fno-builtin-setpayloadl
+CFLAGS-nldbl-setpayloadsig.c = -fno-builtin-setpayloadsigl
+CFLAGS-nldbl-significand.c = -fno-builtin-significandl
+CFLAGS-nldbl-sin.c = -fno-builtin-sinl
+CFLAGS-nldbl-sincos.c = -fno-builtin-sincosl
+CFLAGS-nldbl-sinh.c = -fno-builtin-sinhl
+CFLAGS-nldbl-sqrt.c = -fno-builtin-sqrtl
+CFLAGS-nldbl-tan.c = -fno-builtin-tanl
+CFLAGS-nldbl-tanh.c = -fno-builtin-tanhl
+CFLAGS-nldbl-tgamma.c = -fno-builtin-tgammal
+CFLAGS-nldbl-totalorder.c = -fno-builtin-totalorderl
+CFLAGS-nldbl-totalordermag.c = -fno-builtin-totalordermagl
+CFLAGS-nldbl-trunc.c = -fno-builtin-truncl
+CFLAGS-nldbl-ufromfp.c = -fno-builtin-ufromfpl
+CFLAGS-nldbl-ufromfpx.c = -fno-builtin-ufromfpxl
+CFLAGS-nldbl-y0.c = -fno-builtin-y0l
+CFLAGS-nldbl-y1.c = -fno-builtin-y1l
+CFLAGS-nldbl-yn.c = -fno-builtin-ynl
+
+endif
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/Versions b/REORG.TODO/sysdeps/ieee754/ldbl-opt/Versions
new file mode 100644
index 0000000000..d3f0beaef2
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/Versions
@@ -0,0 +1,100 @@
+%include <nldbl-abi.h>
+%ifndef NLDBL_VERSION
+% error "nldbl-abi.h must define NLDBL_VERSION"
+%endif
+
+libc {
+ NLDBL_VERSION {
+ # IEEE quad long double functions (older symver is for
+ # IEEE double long double).
+ ldexpl; copysignl; finitel; frexpl; isinfl; isnanl; modfl;
+ __isinfl; __isnanl; __finitel; __signbitl;
+ scalbnl;
+ qecvt; qfcvt; qgcvt; qecvt_r; qfcvt_r;
+
+ strtold; __strtold_internal; wcstold; __wcstold_internal;
+ __strtold_l; strtold_l; __wcstold_l; wcstold_l;
+
+ strfmon; __strfmon_l; strfmon_l;
+ __nldbl_strfmon; __nldbl___strfmon_l; __nldbl_strfmon_l;
+ __nldbl___vstrfmon; __nldbl___vstrfmon_l;
+
+ syslog; vsyslog;
+ __nldbl_syslog; __nldbl_vsyslog;
+ __nldbl___syslog_chk; __nldbl___vsyslog_chk;
+
+ # *printf* family, using IEEE quad long double
+ __asprintf; asprintf; dprintf; fprintf; fwprintf; _IO_fprintf;
+ _IO_printf; _IO_sprintf; _IO_vfprintf; _IO_vsprintf; obstack_printf;
+ obstack_vprintf; printf; __printf_fp; printf_size; snprintf; sprintf;
+ swprintf; vasprintf; vdprintf; vfprintf; vfwprintf; vprintf; vsnprintf;
+ __vsnprintf; vsprintf; vswprintf; vwprintf; wprintf;
+
+ # *printf* family, using IEEE double as long double
+ # The standard functions are __REDIRECTed to these if -mlong-double-64
+ __nldbl___asprintf; __nldbl_asprintf; __nldbl_dprintf; __nldbl_fprintf;
+ __nldbl_fwprintf; __nldbl__IO_fprintf; __nldbl__IO_printf;
+ __nldbl__IO_sprintf; __nldbl__IO_vfprintf; __nldbl__IO_vsprintf;
+ __nldbl_obstack_printf; __nldbl_obstack_vprintf; __nldbl_printf;
+ __nldbl___printf_fp; __nldbl_printf_size; __nldbl_snprintf;
+ __nldbl_sprintf; __nldbl_swprintf; __nldbl_vasprintf; __nldbl_vdprintf;
+ __nldbl_vfprintf; __nldbl_vfwprintf; __nldbl_vprintf; __nldbl_vsnprintf;
+ __nldbl___vsnprintf; __nldbl_vsprintf; __nldbl_vswprintf;
+ __nldbl_vwprintf; __nldbl_wprintf;
+
+ # *scanf family, using IEEE quad long double
+ _IO_sscanf; _IO_vfscanf; __vfscanf; __vsscanf; fscanf; fwscanf; scanf;
+ sscanf; swscanf; vfscanf; vfwscanf; vscanf; vsscanf; vswscanf; vwscanf;
+ wscanf;
+
+ # *scanf family, using IEEE double as long double
+ __nldbl__IO_sscanf; __nldbl__IO_vfscanf; __nldbl___vfscanf;
+ __nldbl___vsscanf; __nldbl_fscanf; __nldbl_fwscanf; __nldbl_scanf;
+ __nldbl_sscanf; __nldbl_swscanf; __nldbl_vfscanf; __nldbl_vfwscanf;
+ __nldbl_vscanf; __nldbl_vsscanf; __nldbl_vswscanf; __nldbl_vwscanf;
+ __nldbl_wscanf;
+
+ # checking versions, using IEEE quad long double
+ __sprintf_chk; __vsprintf_chk; __snprintf_chk; __vsnprintf_chk;
+ __printf_chk; __fprintf_chk; __vprintf_chk; __vfprintf_chk;
+
+ # checking versions, using IEEE double as long double
+ __nldbl___sprintf_chk; __nldbl___vsprintf_chk; __nldbl___snprintf_chk;
+ __nldbl___vsnprintf_chk; __nldbl___printf_chk; __nldbl___fprintf_chk;
+ __nldbl___vprintf_chk; __nldbl___vfprintf_chk;
+ __nldbl___swprintf_chk; __nldbl___vswprintf_chk; __nldbl___fwprintf_chk;
+ __nldbl___wprintf_chk; __nldbl___vfwprintf_chk; __nldbl___vwprintf_chk;
+ }
+ GLIBC_2.7 {
+ __nldbl___isoc99_scanf; __nldbl___isoc99_fscanf;
+ __nldbl___isoc99_sscanf; __nldbl___isoc99_vscanf;
+ __nldbl___isoc99_vfscanf; __nldbl___isoc99_vsscanf;
+ __nldbl___isoc99_wscanf; __nldbl___isoc99_fwscanf;
+ __nldbl___isoc99_swscanf; __nldbl___isoc99_vwscanf;
+ __nldbl___isoc99_vfwscanf; __nldbl___isoc99_vswscanf;
+ }
+ GLIBC_2.8 {
+ __nldbl___asprintf_chk; __nldbl___vasprintf_chk;
+ __nldbl___dprintf_chk; __nldbl___vdprintf_chk;
+ __nldbl___obstack_printf_chk; __nldbl___obstack_vprintf_chk;
+ }
+}
+libm {
+ NLDBL_VERSION {
+ # IEEE quad long double functions (older symver is for
+ # IEEE double as long double).
+ cabsl; cargl; cimagl; conjl; creall; cacosl; cacoshl; casinl;
+ catanl; catanhl; ccosl; ccoshl; casinhl; cexpl; clogl; __clog10l;
+ clog10l; cpowl; cprojl; csinl; csinhl; csqrtl; ctanl; ctanhl;
+ fdiml; fmal; fmaxl; fminl; ldexpl; nanl; nextafterl; nexttowardl;
+ significandl; acosl; acoshl; asinl; atan2l; atanhl; coshl; dreml;
+ exp10l; pow10l; exp2l; fmodl; hypotl; j0l; y0l; j1l; y1l; jnl; ynl;
+ lgammal; gammal; lgammal_r; logl; log10l; log2l; powl; remainderl;
+ scalbl; sinhl; sqrtl; tgammal; asinhl; atanl; cbrtl; ceill; copysignl;
+ erfl; erfcl; expm1l; fabsl; finitel; floorl; frexpl; ilogbl;
+ llrintl; llroundl; log1pl; logbl; lrintl; lroundl; modfl;
+ nearbyintl; remquol; rintl; roundl; scalblnl; scalbnl; sinl; cosl;
+ sincosl; tanl; tanhl; truncl; expl; __finitel; __signbitl;
+ __fpclassifyl; nexttowardf; nexttoward; __nldbl_nexttowardf;
+ }
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/bits/long-double.h b/REORG.TODO/sysdeps/ieee754/ldbl-opt/bits/long-double.h
new file mode 100644
index 0000000000..67db5b9d0c
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/bits/long-double.h
@@ -0,0 +1,24 @@
+/* Properties of long double type. ldbl-opt version.
+ Copyright (C) 2016-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#ifndef __NO_LONG_DOUBLE_MATH
+# define __LONG_DOUBLE_MATH_OPTIONAL 1
+# ifndef __LONG_DOUBLE_128__
+# define __NO_LONG_DOUBLE_MATH 1
+# endif
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/configure b/REORG.TODO/sysdeps/ieee754/ldbl-opt/configure
new file mode 100644
index 0000000000..ad9d77b88c
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/configure
@@ -0,0 +1,39 @@
+# This file is generated from configure.ac by Autoconf. DO NOT EDIT!
+ # Local configure fragment for sysdeps/ieee754/ldbl-opt/.
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC $CFLAGS supports -mlong-double-128" >&5
+$as_echo_n "checking whether $CC $CFLAGS supports -mlong-double-128... " >&6; }
+if ${libc_cv_mlong_double_128+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ save_CFLAGS="$CFLAGS"
+CFLAGS="$CFLAGS -mlong-double-128"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+#ifndef __LONG_DOUBLE_128__
+# error "compiler did not predefine __LONG_DOUBLE_128__ as expected"
+#endif
+long double foobar (long double x) { return x; }
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ libc_cv_mlong_double_128=yes
+else
+ libc_cv_mlong_double_128=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+CFLAGS="$save_CFLAGS"
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_mlong_double_128" >&5
+$as_echo "$libc_cv_mlong_double_128" >&6; }
+if test "$libc_cv_mlong_double_128" = no; then
+ as_fn_error $? "this configuration requires -mlong-double-128 support" "$LINENO" 5
+fi
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/configure.ac b/REORG.TODO/sysdeps/ieee754/ldbl-opt/configure.ac
new file mode 100644
index 0000000000..a77fadd1c4
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/configure.ac
@@ -0,0 +1,19 @@
+sinclude(./aclocal.m4)dnl Autoconf lossage
+GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory.
+# Local configure fragment for sysdeps/ieee754/ldbl-opt/.
+
+AC_CACHE_CHECK(whether $CC $CFLAGS supports -mlong-double-128,
+ libc_cv_mlong_double_128, [dnl
+save_CFLAGS="$CFLAGS"
+CFLAGS="$CFLAGS -mlong-double-128"
+AC_TRY_COMPILE(, [
+#ifndef __LONG_DOUBLE_128__
+# error "compiler did not predefine __LONG_DOUBLE_128__ as expected"
+#endif
+long double foobar (long double x) { return x; }],
+ libc_cv_mlong_double_128=yes,
+ libc_cv_mlong_double_128=no)
+CFLAGS="$save_CFLAGS"])
+if test "$libc_cv_mlong_double_128" = no; then
+ AC_MSG_ERROR([this configuration requires -mlong-double-128 support])
+fi
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/math-type-macros-double.h b/REORG.TODO/sysdeps/ieee754/ldbl-opt/math-type-macros-double.h
new file mode 100644
index 0000000000..67b5268dc4
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/math-type-macros-double.h
@@ -0,0 +1,38 @@
+/* Overrides for ldbl-opt versioning for double types.
+ Copyright (C) 2016-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#ifndef _MATH_TYPE_MACROS_DOUBLE
+
+#include <math_ldbl_opt.h>
+#include <first-versions.h>
+
+/* Define compat symbols for long double on platforms
+ where it was not always a distinct type. */
+#if !defined M_LIBM_NEED_COMPAT
+# define M_LIBM_NEED_COMPAT(f) \
+ LONG_DOUBLE_COMPAT (libm, FIRST_VERSION_libm_ ## f ## l)
+#endif
+
+#if !defined declare_mgen_libm_compat
+# define declare_mgen_libm_compat(from, to) \
+ compat_symbol (libm, from, to ## l, \
+ FIRST_VERSION_libm_ ## to ## l);
+#endif
+
+#include_next <math-type-macros-double.h>
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/math-type-macros-ldouble.h b/REORG.TODO/sysdeps/ieee754/ldbl-opt/math-type-macros-ldouble.h
new file mode 100644
index 0000000000..20873ae6b5
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/math-type-macros-ldouble.h
@@ -0,0 +1,38 @@
+/* Overrides for ldbl-opt versioning for long double types.
+ Copyright (C) 2016-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#ifndef _MATH_TYPE_MACROS_LDOUBLE
+
+#include <math_ldbl_opt.h>
+#include <ldbl-compat-choose.h>
+
+#define maybe_long_double_symbol(lib, from, to) \
+ LONG_DOUBLE_COMPAT_CHOOSE_ ## lib ## _ ## to (long_double_symbol (lib, \
+ from, \
+ to), \
+ weak_alias (from, to))
+
+/* Use properly versioned symbols for long double on platforms where
+ it was not always a distinct type. */
+#if !defined declare_mgen_alias
+# define declare_mgen_alias(from, to) \
+ maybe_long_double_symbol (libm, from ## l, to ## l);
+#endif
+
+#include_next <math-type-macros-ldouble.h>
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/math_ldbl_opt.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/math_ldbl_opt.c
new file mode 100644
index 0000000000..49c5c1249b
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/math_ldbl_opt.c
@@ -0,0 +1,3 @@
+/* Set temporarily to non-zero if long double should be considered
+ the same as double. */
+__thread int __no_long_double attribute_tls_model_ie attribute_hidden;
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/math_ldbl_opt.h b/REORG.TODO/sysdeps/ieee754/ldbl-opt/math_ldbl_opt.h
new file mode 100644
index 0000000000..af861c11ea
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/math_ldbl_opt.h
@@ -0,0 +1,46 @@
+/* -mlong-double-64 compatibility mode macros. */
+
+#include <nldbl-abi.h>
+#ifndef LONG_DOUBLE_COMPAT_VERSION
+# error "nldbl-abi.h must define LONG_DOUBLE_COMPAT_VERSION"
+#endif
+
+#include <shlib-compat.h>
+#define LONG_DOUBLE_COMPAT(lib, introduced) \
+ SHLIB_COMPAT(lib, introduced, LONG_DOUBLE_COMPAT_VERSION)
+#define long_double_symbol(lib, local, symbol) \
+ long_double_symbol_1 (lib, local, symbol, LONG_DOUBLE_COMPAT_VERSION)
+#ifdef SHARED
+# define ldbl_hidden_def(local, name) libc_hidden_ver (local, name)
+# define ldbl_strong_alias(name, aliasname) \
+ strong_alias (name, __GL_##name##_##aliasname) \
+ long_double_symbol (libc, __GL_##name##_##aliasname, aliasname);
+# define ldbl_weak_alias(name, aliasname) \
+ weak_alias (name, __GL_##name##_##aliasname) \
+ long_double_symbol (libc, __GL_##name##_##aliasname, aliasname);
+# define long_double_symbol_1(lib, local, symbol, version) \
+ versioned_symbol (lib, local, symbol, version)
+#else
+# define ldbl_hidden_def(local, name) libc_hidden_def (name)
+# define ldbl_strong_alias(name, aliasname) strong_alias (name, aliasname)
+# define ldbl_weak_alias(name, aliasname) weak_alias (name, aliasname)
+# ifndef __ASSEMBLER__
+/* Note that weak_alias cannot be used - it is defined to nothing
+ in most of the C files. */
+# define long_double_symbol_1(lib, local, symbol, version) \
+ _weak_alias (local, symbol)
+# else
+# define long_double_symbol_1(lib, local, symbol, version) \
+ weak_alias (local, symbol)
+# endif
+#endif
+
+#ifndef __ASSEMBLER__
+# include <math.h>
+# include <math_private.h>
+
+/* Set temporarily to non-zero if long double should be considered
+ the same as double. */
+extern __thread int __no_long_double attribute_tls_model_ie attribute_hidden;
+# define __ldbl_is_dbl __builtin_expect (__no_long_double, 0)
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-acos.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-acos.c
new file mode 100644
index 0000000000..813a17e9d6
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-acos.c
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+acosl (double x)
+{
+ return acos (x);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-acosh.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-acosh.c
new file mode 100644
index 0000000000..75508e30d7
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-acosh.c
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+acoshl (double x)
+{
+ return acosh (x);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-asin.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-asin.c
new file mode 100644
index 0000000000..5bbe6cd992
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-asin.c
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+asinl (double x)
+{
+ return asin (x);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-asinh.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-asinh.c
new file mode 100644
index 0000000000..512f68519b
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-asinh.c
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+asinhl (double x)
+{
+ return asinh (x);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-asprintf.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-asprintf.c
new file mode 100644
index 0000000000..4be216d610
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-asprintf.c
@@ -0,0 +1,17 @@
+#include "nldbl-compat.h"
+
+attribute_hidden
+int
+__asprintf (char **string_ptr, const char *fmt, ...)
+{
+ va_list arg;
+ int done;
+
+ va_start (arg, fmt);
+ done = __nldbl_vasprintf (string_ptr, fmt, arg);
+ va_end (arg);
+
+ return done;
+}
+extern __typeof (__asprintf) asprintf attribute_hidden;
+weak_alias (__asprintf, asprintf)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-asprintf_chk.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-asprintf_chk.c
new file mode 100644
index 0000000000..b520181db7
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-asprintf_chk.c
@@ -0,0 +1,15 @@
+#include "nldbl-compat.h"
+
+attribute_hidden
+int
+__asprintf_chk (char **string_ptr, int flag, const char *fmt, ...)
+{
+ va_list arg;
+ int done;
+
+ va_start (arg, fmt);
+ done = __nldbl___vasprintf_chk (string_ptr, flag, fmt, arg);
+ va_end (arg);
+
+ return done;
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-atan.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-atan.c
new file mode 100644
index 0000000000..2849e48d03
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-atan.c
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+atanl (double x)
+{
+ return atan (x);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-atan2.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-atan2.c
new file mode 100644
index 0000000000..d4e5a91702
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-atan2.c
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+atan2l (double x, double y)
+{
+ return atan2 (x, y);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-atanh.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-atanh.c
new file mode 100644
index 0000000000..82b54ca6d4
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-atanh.c
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+atanhl (double x)
+{
+ return atanh (x);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-cabs.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-cabs.c
new file mode 100644
index 0000000000..837822d2d6
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-cabs.c
@@ -0,0 +1,9 @@
+#include "nldbl-compat.h"
+#include <complex.h>
+
+double
+attribute_hidden
+cabsl (double _Complex x)
+{
+ return cabs (x);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-cacos.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-cacos.c
new file mode 100644
index 0000000000..d935b511b4
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-cacos.c
@@ -0,0 +1,9 @@
+#include "nldbl-compat.h"
+#include <complex.h>
+
+double _Complex
+attribute_hidden
+cacosl (double _Complex x)
+{
+ return cacos (x);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-cacosh.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-cacosh.c
new file mode 100644
index 0000000000..67f994b849
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-cacosh.c
@@ -0,0 +1,9 @@
+#include "nldbl-compat.h"
+#include <complex.h>
+
+double _Complex
+attribute_hidden
+cacoshl (double _Complex x)
+{
+ return cacosh (x);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-canonicalize.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-canonicalize.c
new file mode 100644
index 0000000000..9d46163208
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-canonicalize.c
@@ -0,0 +1,26 @@
+/* Compatibility routine for IEEE double as long double for canonicalize.
+ Copyright (C) 2016-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+canonicalizel (double *cx, double *x)
+{
+ return canonicalize (cx, x);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-carg.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-carg.c
new file mode 100644
index 0000000000..bfff141c11
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-carg.c
@@ -0,0 +1,9 @@
+#include "nldbl-compat.h"
+#include <complex.h>
+
+double
+attribute_hidden
+cargl (double _Complex x)
+{
+ return carg (x);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-casin.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-casin.c
new file mode 100644
index 0000000000..310aa0ac21
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-casin.c
@@ -0,0 +1,9 @@
+#include "nldbl-compat.h"
+#include <complex.h>
+
+double _Complex
+attribute_hidden
+casinl (double _Complex x)
+{
+ return casin (x);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-casinh.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-casinh.c
new file mode 100644
index 0000000000..71b466ea22
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-casinh.c
@@ -0,0 +1,9 @@
+#include "nldbl-compat.h"
+#include <complex.h>
+
+double _Complex
+attribute_hidden
+casinhl (double _Complex x)
+{
+ return casinh (x);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-catan.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-catan.c
new file mode 100644
index 0000000000..ea5f528ee5
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-catan.c
@@ -0,0 +1,9 @@
+#include "nldbl-compat.h"
+#include <complex.h>
+
+double _Complex
+attribute_hidden
+catanl (double _Complex x)
+{
+ return catan (x);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-catanh.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-catanh.c
new file mode 100644
index 0000000000..e6f58aa048
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-catanh.c
@@ -0,0 +1,9 @@
+#include "nldbl-compat.h"
+#include <complex.h>
+
+double _Complex
+attribute_hidden
+catanhl (double _Complex x)
+{
+ return catanh (x);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-cbrt.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-cbrt.c
new file mode 100644
index 0000000000..1c353a6e6b
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-cbrt.c
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+cbrtl (double x)
+{
+ return cbrt (x);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-ccos.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-ccos.c
new file mode 100644
index 0000000000..0e1c2e70f3
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-ccos.c
@@ -0,0 +1,9 @@
+#include "nldbl-compat.h"
+#include <complex.h>
+
+double _Complex
+attribute_hidden
+ccosl (double _Complex x)
+{
+ return ccos (x);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-ccosh.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-ccosh.c
new file mode 100644
index 0000000000..da2bf580af
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-ccosh.c
@@ -0,0 +1,9 @@
+#include "nldbl-compat.h"
+#include <complex.h>
+
+double _Complex
+attribute_hidden
+ccoshl (double _Complex x)
+{
+ return ccosh (x);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-ceil.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-ceil.c
new file mode 100644
index 0000000000..a8fc3d548a
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-ceil.c
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+ceill (double x)
+{
+ return ceil (x);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-cexp.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-cexp.c
new file mode 100644
index 0000000000..f1837afc28
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-cexp.c
@@ -0,0 +1,9 @@
+#include "nldbl-compat.h"
+#include <complex.h>
+
+double _Complex
+attribute_hidden
+cexpl (double _Complex x)
+{
+ return cexp (x);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-cimag.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-cimag.c
new file mode 100644
index 0000000000..fffbdd58ec
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-cimag.c
@@ -0,0 +1,9 @@
+#include "nldbl-compat.h"
+#include <complex.h>
+
+double
+attribute_hidden
+cimagl (double _Complex x)
+{
+ return cimag (x);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-clog.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-clog.c
new file mode 100644
index 0000000000..ecbae7ba91
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-clog.c
@@ -0,0 +1,9 @@
+#include "nldbl-compat.h"
+#include <complex.h>
+
+double _Complex
+attribute_hidden
+clogl (double _Complex x)
+{
+ return clog (x);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-clog10.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-clog10.c
new file mode 100644
index 0000000000..193f40104a
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-clog10.c
@@ -0,0 +1,11 @@
+#include "nldbl-compat.h"
+#include <complex.h>
+
+double _Complex
+attribute_hidden
+clog10l (double _Complex x)
+{
+ return clog10 (x);
+}
+extern __typeof (clog10l) __clog10l attribute_hidden;
+weak_alias (clog10l, __clog10l)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-compat.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-compat.c
new file mode 100644
index 0000000000..84c4aeeed9
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-compat.c
@@ -0,0 +1,1085 @@
+/* *printf* family compatibility routines for IEEE double as long double
+ Copyright (C) 2006-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Jakub Jelinek <jakub@cygnus.com>, 2006.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <stdarg.h>
+#include <stdio.h>
+#include <libioP.h>
+#include <wchar.h>
+#include <printf.h>
+#include <monetary.h>
+#include <locale/localeinfo.h>
+#include <sys/syslog.h>
+#include <libc-lock.h>
+
+#include "nldbl-compat.h"
+
+libc_hidden_proto (__nldbl_vfprintf)
+libc_hidden_proto (__nldbl_vsscanf)
+libc_hidden_proto (__nldbl_vsprintf)
+libc_hidden_proto (__nldbl_vfscanf)
+libc_hidden_proto (__nldbl_vfwscanf)
+libc_hidden_proto (__nldbl_vdprintf)
+libc_hidden_proto (__nldbl_vswscanf)
+libc_hidden_proto (__nldbl_vfwprintf)
+libc_hidden_proto (__nldbl_vswprintf)
+libc_hidden_proto (__nldbl_vsnprintf)
+libc_hidden_proto (__nldbl_vasprintf)
+libc_hidden_proto (__nldbl_obstack_vprintf)
+libc_hidden_proto (__nldbl___vfwprintf_chk)
+libc_hidden_proto (__nldbl___vsnprintf_chk)
+libc_hidden_proto (__nldbl___vfprintf_chk)
+libc_hidden_proto (__nldbl___vsyslog_chk)
+libc_hidden_proto (__nldbl___vsprintf_chk)
+libc_hidden_proto (__nldbl___vswprintf_chk)
+libc_hidden_proto (__nldbl___vasprintf_chk)
+libc_hidden_proto (__nldbl___vdprintf_chk)
+libc_hidden_proto (__nldbl___obstack_vprintf_chk)
+libc_hidden_proto (__nldbl___vstrfmon)
+libc_hidden_proto (__nldbl___vstrfmon_l)
+libc_hidden_proto (__nldbl___isoc99_vsscanf)
+libc_hidden_proto (__nldbl___isoc99_vfscanf)
+libc_hidden_proto (__nldbl___isoc99_vswscanf)
+libc_hidden_proto (__nldbl___isoc99_vfwscanf)
+
+static void
+__nldbl_cleanup (void *arg)
+{
+ __no_long_double = 0;
+}
+
+#define set_no_long_double() \
+ __libc_cleanup_push (__nldbl_cleanup, NULL); __no_long_double = 1
+#define clear_no_long_double() \
+ __no_long_double = 0; __libc_cleanup_pop (0)
+
+/* Compatibility with IEEE double as long double.
+ IEEE quad long double is used by default for most programs, so
+ we don't need to split this into one file per function for the
+ sake of statically linked programs. */
+
+int
+attribute_compat_text_section
+__nldbl___asprintf (char **string_ptr, const char *fmt, ...)
+{
+ va_list arg;
+ int done;
+
+ va_start (arg, fmt);
+ done = __nldbl_vasprintf (string_ptr, fmt, arg);
+ va_end (arg);
+
+ return done;
+}
+weak_alias (__nldbl___asprintf, __nldbl_asprintf)
+
+int
+attribute_compat_text_section
+__nldbl_dprintf (int d, const char *fmt, ...)
+{
+ va_list arg;
+ int done;
+
+ va_start (arg, fmt);
+ done = __nldbl_vdprintf (d, fmt, arg);
+ va_end (arg);
+
+ return done;
+}
+
+int
+attribute_compat_text_section
+__nldbl_fprintf (FILE *stream, const char *fmt, ...)
+{
+ va_list arg;
+ int done;
+
+ va_start (arg, fmt);
+ done = __nldbl_vfprintf (stream, fmt, arg);
+ va_end (arg);
+
+ return done;
+}
+weak_alias (__nldbl_fprintf, __nldbl__IO_fprintf)
+
+int
+attribute_compat_text_section weak_function
+__nldbl_fwprintf (FILE *stream, const wchar_t *fmt, ...)
+{
+ va_list arg;
+ int done;
+
+ va_start (arg, fmt);
+ done = __nldbl_vfwprintf (stream, fmt, arg);
+ va_end (arg);
+
+ return done;
+}
+
+int
+attribute_compat_text_section
+__nldbl_printf (const char *fmt, ...)
+{
+ va_list arg;
+ int done;
+
+ va_start (arg, fmt);
+ done = __nldbl_vfprintf (stdout, fmt, arg);
+ va_end (arg);
+
+ return done;
+}
+strong_alias (__nldbl_printf, __nldbl__IO_printf)
+
+int
+attribute_compat_text_section
+__nldbl_sprintf (char *s, const char *fmt, ...)
+{
+ va_list arg;
+ int done;
+
+ va_start (arg, fmt);
+ done = __nldbl_vsprintf (s, fmt, arg);
+ va_end (arg);
+
+ return done;
+}
+strong_alias (__nldbl_sprintf, __nldbl__IO_sprintf)
+
+int
+attribute_compat_text_section
+__nldbl_vfprintf (FILE *s, const char *fmt, va_list ap)
+{
+ int done;
+ set_no_long_double ();
+ done = _IO_vfprintf (s, fmt, ap);
+ clear_no_long_double ();
+ return done;
+}
+libc_hidden_def (__nldbl_vfprintf)
+strong_alias (__nldbl_vfprintf, __nldbl__IO_vfprintf)
+
+int
+attribute_compat_text_section
+__nldbl__IO_vsprintf (char *string, const char *fmt, va_list ap)
+{
+ int done;
+ __no_long_double = 1;
+ done = _IO_vsprintf (string, fmt, ap);
+ __no_long_double = 0;
+ return done;
+}
+weak_alias (__nldbl__IO_vsprintf, __nldbl_vsprintf)
+libc_hidden_def (__nldbl_vsprintf)
+
+int
+attribute_compat_text_section
+__nldbl_obstack_vprintf (struct obstack *obstack, const char *fmt,
+ va_list ap)
+{
+ int done;
+ __no_long_double = 1;
+ done = _IO_obstack_vprintf (obstack, fmt, ap);
+ __no_long_double = 0;
+ return done;
+}
+libc_hidden_def (__nldbl_obstack_vprintf)
+
+int
+attribute_compat_text_section
+__nldbl_obstack_printf (struct obstack *obstack, const char *fmt, ...)
+{
+ int result;
+ va_list ap;
+ va_start (ap, fmt);
+ result = __nldbl_obstack_vprintf (obstack, fmt, ap);
+ va_end (ap);
+ return result;
+}
+
+int
+attribute_compat_text_section weak_function
+__nldbl_snprintf (char *s, size_t maxlen, const char *fmt, ...)
+{
+ va_list arg;
+ int done;
+
+ va_start (arg, fmt);
+ done = __nldbl_vsnprintf (s, maxlen, fmt, arg);
+ va_end (arg);
+
+ return done;
+}
+
+int
+attribute_compat_text_section
+__nldbl_swprintf (wchar_t *s, size_t n, const wchar_t *fmt, ...)
+{
+ va_list arg;
+ int done;
+
+ va_start (arg, fmt);
+ done = __nldbl_vswprintf (s, n, fmt, arg);
+ va_end (arg);
+
+ return done;
+}
+
+int
+attribute_compat_text_section weak_function
+__nldbl_vasprintf (char **result_ptr, const char *fmt, va_list ap)
+{
+ int res;
+ __no_long_double = 1;
+ res = _IO_vasprintf (result_ptr, fmt, ap);
+ __no_long_double = 0;
+ return res;
+}
+libc_hidden_def (__nldbl_vasprintf)
+
+int
+attribute_compat_text_section
+__nldbl_vdprintf (int d, const char *fmt, va_list arg)
+{
+ int res;
+ set_no_long_double ();
+ res = _IO_vdprintf (d, fmt, arg);
+ clear_no_long_double ();
+ return res;
+}
+libc_hidden_def (__nldbl_vdprintf)
+
+int
+attribute_compat_text_section weak_function
+__nldbl_vfwprintf (FILE *s, const wchar_t *fmt, va_list ap)
+{
+ int res;
+ set_no_long_double ();
+ res = _IO_vfwprintf (s, fmt, ap);
+ clear_no_long_double ();
+ return res;
+}
+libc_hidden_def (__nldbl_vfwprintf)
+
+int
+attribute_compat_text_section
+__nldbl_vprintf (const char *fmt, va_list ap)
+{
+ return __nldbl_vfprintf (stdout, fmt, ap);
+}
+
+int
+attribute_compat_text_section
+__nldbl_vsnprintf (char *string, size_t maxlen, const char *fmt,
+ va_list ap)
+{
+ int res;
+ __no_long_double = 1;
+ res = _IO_vsnprintf (string, maxlen, fmt, ap);
+ __no_long_double = 0;
+ return res;
+}
+libc_hidden_def (__nldbl_vsnprintf)
+weak_alias (__nldbl_vsnprintf, __nldbl___vsnprintf)
+
+int
+attribute_compat_text_section weak_function
+__nldbl_vswprintf (wchar_t *string, size_t maxlen, const wchar_t *fmt,
+ va_list ap)
+{
+ int res;
+ __no_long_double = 1;
+ res = _IO_vswprintf (string, maxlen, fmt, ap);
+ __no_long_double = 0;
+ return res;
+}
+libc_hidden_def (__nldbl_vswprintf)
+
+int
+attribute_compat_text_section
+__nldbl_vwprintf (const wchar_t *fmt, va_list ap)
+{
+ return __nldbl_vfwprintf (stdout, fmt, ap);
+}
+
+int
+attribute_compat_text_section
+__nldbl_wprintf (const wchar_t *fmt, ...)
+{
+ va_list arg;
+ int done;
+
+ va_start (arg, fmt);
+ done = __nldbl_vfwprintf (stdout, fmt, arg);
+ va_end (arg);
+
+ return done;
+}
+
+int
+attribute_compat_text_section
+__nldbl__IO_vfscanf (FILE *s, const char *fmt, _IO_va_list ap,
+ int *errp)
+{
+ int res;
+ set_no_long_double ();
+ res = _IO_vfscanf (s, fmt, ap, errp);
+ clear_no_long_double ();
+ return res;
+}
+
+int
+attribute_compat_text_section
+__nldbl___vfscanf (FILE *s, const char *fmt, va_list ap)
+{
+ int res;
+ set_no_long_double ();
+ res = _IO_vfscanf (s, fmt, ap, NULL);
+ clear_no_long_double ();
+ return res;
+}
+weak_alias (__nldbl___vfscanf, __nldbl_vfscanf)
+libc_hidden_def (__nldbl_vfscanf)
+
+int
+attribute_compat_text_section
+__nldbl_sscanf (const char *s, const char *fmt, ...)
+{
+ va_list arg;
+ int done;
+
+ va_start (arg, fmt);
+ done = __nldbl_vsscanf (s, fmt, arg);
+ va_end (arg);
+
+ return done;
+}
+strong_alias (__nldbl_sscanf, __nldbl__IO_sscanf)
+
+int
+attribute_compat_text_section
+__nldbl___vsscanf (const char *string, const char *fmt, va_list ap)
+{
+ int res;
+ __no_long_double = 1;
+ res = _IO_vsscanf (string, fmt, ap);
+ __no_long_double = 0;
+ return res;
+}
+weak_alias (__nldbl___vsscanf, __nldbl_vsscanf)
+libc_hidden_def (__nldbl_vsscanf)
+
+int
+attribute_compat_text_section weak_function
+__nldbl_vscanf (const char *fmt, va_list ap)
+{
+ return __nldbl_vfscanf (stdin, fmt, ap);
+}
+
+int
+attribute_compat_text_section
+__nldbl_fscanf (FILE *stream, const char *fmt, ...)
+{
+ va_list arg;
+ int done;
+
+ va_start (arg, fmt);
+ done = __nldbl_vfscanf (stream, fmt, arg);
+ va_end (arg);
+
+ return done;
+}
+
+int
+attribute_compat_text_section
+__nldbl_scanf (const char *fmt, ...)
+{
+ va_list arg;
+ int done;
+
+ va_start (arg, fmt);
+ done = __nldbl_vfscanf (stdin, fmt, arg);
+ va_end (arg);
+
+ return done;
+}
+
+int
+attribute_compat_text_section
+__nldbl_vfwscanf (FILE *s, const wchar_t *fmt, va_list ap)
+{
+ int res;
+ set_no_long_double ();
+ res = _IO_vfwscanf (s, fmt, ap, NULL);
+ clear_no_long_double ();
+ return res;
+}
+libc_hidden_def (__nldbl_vfwscanf)
+
+int
+attribute_compat_text_section
+__nldbl_swscanf (const wchar_t *s, const wchar_t *fmt, ...)
+{
+ va_list arg;
+ int done;
+
+ va_start (arg, fmt);
+ done = __nldbl_vswscanf (s, fmt, arg);
+ va_end (arg);
+
+ return done;
+}
+
+int
+attribute_compat_text_section
+__nldbl_vswscanf (const wchar_t *string, const wchar_t *fmt, va_list ap)
+{
+ int res;
+ __no_long_double = 1;
+ res = vswscanf (string, fmt, ap);
+ __no_long_double = 0;
+ return res;
+}
+libc_hidden_def (__nldbl_vswscanf)
+
+int
+attribute_compat_text_section weak_function
+__nldbl_vwscanf (const wchar_t *fmt, va_list ap)
+{
+ return __nldbl_vfwscanf (stdin, fmt, ap);
+}
+
+int
+attribute_compat_text_section
+__nldbl_fwscanf (FILE *stream, const wchar_t *fmt, ...)
+{
+ va_list arg;
+ int done;
+
+ va_start (arg, fmt);
+ done = __nldbl_vfwscanf (stream, fmt, arg);
+ va_end (arg);
+
+ return done;
+}
+
+int
+attribute_compat_text_section
+__nldbl_wscanf (const wchar_t *fmt, ...)
+{
+ va_list arg;
+ int done;
+
+ va_start (arg, fmt);
+ done = __nldbl_vfwscanf (stdin, fmt, arg);
+ va_end (arg);
+
+ return done;
+}
+
+int
+attribute_compat_text_section
+__nldbl___fprintf_chk (FILE *stream, int flag, const char *fmt, ...)
+{
+ va_list arg;
+ int done;
+
+ va_start (arg, fmt);
+ done = __nldbl___vfprintf_chk (stream, flag, fmt, arg);
+ va_end (arg);
+
+ return done;
+}
+
+int
+attribute_compat_text_section
+__nldbl___fwprintf_chk (FILE *stream, int flag, const wchar_t *fmt, ...)
+{
+ va_list arg;
+ int done;
+
+ va_start (arg, fmt);
+ done = __nldbl___vfwprintf_chk (stream, flag, fmt, arg);
+ va_end (arg);
+
+ return done;
+}
+
+int
+attribute_compat_text_section
+__nldbl___printf_chk (int flag, const char *fmt, ...)
+{
+ va_list arg;
+ int done;
+
+ va_start (arg, fmt);
+ done = __nldbl___vfprintf_chk (stdout, flag, fmt, arg);
+ va_end (arg);
+
+ return done;
+}
+
+int
+attribute_compat_text_section
+__nldbl___snprintf_chk (char *s, size_t maxlen, int flag, size_t slen,
+ const char *fmt, ...)
+{
+ va_list arg;
+ int done;
+
+ va_start (arg, fmt);
+ done = __nldbl___vsnprintf_chk (s, maxlen, flag, slen, fmt, arg);
+ va_end (arg);
+
+ return done;
+}
+
+int
+attribute_compat_text_section
+__nldbl___sprintf_chk (char *s, int flag, size_t slen, const char *fmt, ...)
+{
+ va_list arg;
+ int done;
+
+ va_start (arg, fmt);
+ done = __nldbl___vsprintf_chk (s, flag, slen, fmt, arg);
+ va_end (arg);
+
+ return done;
+}
+
+int
+attribute_compat_text_section
+__nldbl___swprintf_chk (wchar_t *s, size_t n, int flag, size_t slen,
+ const wchar_t *fmt, ...)
+{
+ va_list arg;
+ int done;
+
+ va_start (arg, fmt);
+ done = __nldbl___vswprintf_chk (s, n, flag, slen, fmt, arg);
+ va_end (arg);
+
+ return done;
+}
+
+int
+attribute_compat_text_section
+__nldbl___vfprintf_chk (FILE *s, int flag, const char *fmt, va_list ap)
+{
+ int res;
+ set_no_long_double ();
+ res = __vfprintf_chk (s, flag, fmt, ap);
+ clear_no_long_double ();
+ return res;
+}
+libc_hidden_def (__nldbl___vfprintf_chk)
+
+int
+attribute_compat_text_section
+__nldbl___vfwprintf_chk (FILE *s, int flag, const wchar_t *fmt, va_list ap)
+{
+ int res;
+ set_no_long_double ();
+ res = __vfwprintf_chk (s, flag, fmt, ap);
+ clear_no_long_double ();
+ return res;
+}
+libc_hidden_def (__nldbl___vfwprintf_chk)
+
+int
+attribute_compat_text_section
+__nldbl___vprintf_chk (int flag, const char *fmt, va_list ap)
+{
+ return __nldbl___vfprintf_chk (stdout, flag, fmt, ap);
+}
+
+int
+attribute_compat_text_section
+__nldbl___vsnprintf_chk (char *string, size_t maxlen, int flag, size_t slen,
+ const char *fmt, va_list ap)
+{
+ int res;
+ __no_long_double = 1;
+ res = __vsnprintf_chk (string, maxlen, flag, slen, fmt, ap);
+ __no_long_double = 0;
+ return res;
+}
+libc_hidden_def (__nldbl___vsnprintf_chk)
+
+int
+attribute_compat_text_section
+__nldbl___vsprintf_chk (char *string, int flag, size_t slen, const char *fmt,
+ va_list ap)
+{
+ int res;
+ __no_long_double = 1;
+ res = __vsprintf_chk (string, flag, slen, fmt, ap);
+ __no_long_double = 0;
+ return res;
+}
+libc_hidden_def (__nldbl___vsprintf_chk)
+
+int
+attribute_compat_text_section
+__nldbl___vswprintf_chk (wchar_t *string, size_t maxlen, int flag, size_t slen,
+ const wchar_t *fmt, va_list ap)
+{
+ int res;
+ __no_long_double = 1;
+ res = __vswprintf_chk (string, maxlen, flag, slen, fmt, ap);
+ __no_long_double = 0;
+ return res;
+}
+libc_hidden_def (__nldbl___vswprintf_chk)
+
+int
+attribute_compat_text_section
+__nldbl___vwprintf_chk (int flag, const wchar_t *fmt, va_list ap)
+{
+ return __nldbl___vfwprintf_chk (stdout, flag, fmt, ap);
+}
+
+int
+attribute_compat_text_section
+__nldbl___wprintf_chk (int flag, const wchar_t *fmt, ...)
+{
+ va_list arg;
+ int done;
+
+ va_start (arg, fmt);
+ done = __nldbl___vfwprintf_chk (stdout, flag, fmt, arg);
+ va_end (arg);
+
+ return done;
+}
+
+int
+attribute_compat_text_section
+__nldbl___vasprintf_chk (char **ptr, int flag, const char *fmt, va_list arg)
+{
+ int res;
+ __no_long_double = 1;
+ res = __vasprintf_chk (ptr, flag, fmt, arg);
+ __no_long_double = 0;
+ return res;
+}
+libc_hidden_def (__nldbl___vasprintf_chk)
+
+int
+attribute_compat_text_section
+__nldbl___asprintf_chk (char **ptr, int flag, const char *fmt, ...)
+{
+ va_list arg;
+ int done;
+
+ va_start (arg, fmt);
+ done = __nldbl___vasprintf_chk (ptr, flag, fmt, arg);
+ va_end (arg);
+
+ return done;
+}
+
+int
+attribute_compat_text_section
+__nldbl___vdprintf_chk (int d, int flag, const char *fmt, va_list arg)
+{
+ int res;
+ set_no_long_double ();
+ res = __vdprintf_chk (d, flag, fmt, arg);
+ clear_no_long_double ();
+ return res;
+}
+libc_hidden_def (__nldbl___vdprintf_chk)
+
+int
+attribute_compat_text_section
+__nldbl___dprintf_chk (int d, int flag, const char *fmt, ...)
+{
+ va_list arg;
+ int done;
+
+ va_start (arg, fmt);
+ done = __nldbl___vdprintf_chk (d, flag, fmt, arg);
+ va_end (arg);
+
+ return done;
+}
+
+int
+attribute_compat_text_section
+__nldbl___obstack_vprintf_chk (struct obstack *obstack, int flag,
+ const char *fmt, va_list arg)
+{
+ int res;
+ __no_long_double = 1;
+ res = __obstack_vprintf_chk (obstack, flag, fmt, arg);
+ __no_long_double = 0;
+ return res;
+}
+libc_hidden_def (__nldbl___obstack_vprintf_chk)
+
+int
+attribute_compat_text_section
+__nldbl___obstack_printf_chk (struct obstack *obstack, int flag,
+ const char *fmt, ...)
+{
+ va_list arg;
+ int done;
+
+ va_start (arg, fmt);
+ done = __nldbl___obstack_vprintf_chk (obstack, flag, fmt, arg);
+ va_end (arg);
+
+ return done;
+}
+
+extern __typeof (printf_size) __printf_size;
+
+int
+attribute_compat_text_section
+__nldbl_printf_size (FILE *fp, const struct printf_info *info,
+ const void *const *args)
+{
+ struct printf_info info_no_ldbl = *info;
+
+ info_no_ldbl.is_long_double = 0;
+ return __printf_size (fp, &info_no_ldbl, args);
+}
+
+extern __typeof (__printf_fp) ___printf_fp;
+
+int
+attribute_compat_text_section
+__nldbl___printf_fp (FILE *fp, const struct printf_info *info,
+ const void *const *args)
+{
+ struct printf_info info_no_ldbl = *info;
+
+ info_no_ldbl.is_long_double = 0;
+ return ___printf_fp (fp, &info_no_ldbl, args);
+}
+
+ssize_t
+attribute_compat_text_section
+__nldbl_strfmon (char *s, size_t maxsize, const char *format, ...)
+{
+ va_list ap;
+ ssize_t res;
+
+ va_start (ap, format);
+ res = __nldbl___vstrfmon (s, maxsize, format, ap);
+ va_end (ap);
+ return res;
+}
+
+ssize_t
+attribute_compat_text_section
+__nldbl___strfmon_l (char *s, size_t maxsize, __locale_t loc,
+ const char *format, ...)
+{
+ va_list ap;
+ ssize_t res;
+
+ va_start (ap, format);
+ res = __nldbl___vstrfmon_l (s, maxsize, loc, format, ap);
+ va_end (ap);
+ return res;
+}
+weak_alias (__nldbl___strfmon_l, __nldbl_strfmon_l)
+
+ssize_t
+attribute_compat_text_section
+__nldbl___vstrfmon (char *s, size_t maxsize, const char *format, va_list ap)
+{
+ ssize_t res;
+ __no_long_double = 1;
+ res = __vstrfmon_l (s, maxsize, _NL_CURRENT_LOCALE, format, ap);
+ __no_long_double = 0;
+ va_end (ap);
+ return res;
+}
+libc_hidden_def (__nldbl___vstrfmon)
+
+ssize_t
+attribute_compat_text_section
+__nldbl___vstrfmon_l (char *s, size_t maxsize, __locale_t loc,
+ const char *format, va_list ap)
+{
+ ssize_t res;
+ __no_long_double = 1;
+ res = __vstrfmon_l (s, maxsize, loc, format, ap);
+ __no_long_double = 0;
+ va_end (ap);
+ return res;
+}
+libc_hidden_def (__nldbl___vstrfmon_l)
+
+void
+attribute_compat_text_section
+__nldbl_syslog (int pri, const char *fmt, ...)
+{
+ va_list ap;
+ va_start (ap, fmt);
+ __nldbl___vsyslog_chk (pri, -1, fmt, ap);
+ va_end (ap);
+}
+
+void
+attribute_compat_text_section
+__nldbl___syslog_chk (int pri, int flag, const char *fmt, ...)
+{
+ va_list ap;
+
+ va_start (ap, fmt);
+ __nldbl___vsyslog_chk (pri, flag, fmt, ap);
+ va_end(ap);
+}
+
+void
+attribute_compat_text_section
+__nldbl___vsyslog_chk (int pri, int flag, const char *fmt, va_list ap)
+{
+ set_no_long_double ();
+ __vsyslog_chk (pri, flag, fmt, ap);
+ clear_no_long_double ();
+}
+libc_hidden_def (__nldbl___vsyslog_chk)
+
+void
+attribute_compat_text_section
+__nldbl_vsyslog (int pri, const char *fmt, va_list ap)
+{
+ __nldbl___vsyslog_chk (pri, -1, fmt, ap);
+}
+
+int
+attribute_compat_text_section
+__nldbl___isoc99_vfscanf (FILE *s, const char *fmt, va_list ap)
+{
+ int res;
+ set_no_long_double ();
+ res = __isoc99_vfscanf (s, fmt, ap);
+ clear_no_long_double ();
+ return res;
+}
+libc_hidden_def (__nldbl___isoc99_vfscanf)
+
+int
+attribute_compat_text_section
+__nldbl___isoc99_sscanf (const char *s, const char *fmt, ...)
+{
+ va_list arg;
+ int done;
+
+ va_start (arg, fmt);
+ done = __nldbl___isoc99_vsscanf (s, fmt, arg);
+ va_end (arg);
+
+ return done;
+}
+
+int
+attribute_compat_text_section
+__nldbl___isoc99_vsscanf (const char *string, const char *fmt, va_list ap)
+{
+ int res;
+ __no_long_double = 1;
+ res = __isoc99_vsscanf (string, fmt, ap);
+ __no_long_double = 0;
+ return res;
+}
+libc_hidden_def (__nldbl___isoc99_vsscanf)
+
+int
+attribute_compat_text_section
+__nldbl___isoc99_vscanf (const char *fmt, va_list ap)
+{
+ return __nldbl___isoc99_vfscanf (stdin, fmt, ap);
+}
+
+int
+attribute_compat_text_section
+__nldbl___isoc99_fscanf (FILE *stream, const char *fmt, ...)
+{
+ va_list arg;
+ int done;
+
+ va_start (arg, fmt);
+ done = __nldbl___isoc99_vfscanf (stream, fmt, arg);
+ va_end (arg);
+
+ return done;
+}
+
+int
+attribute_compat_text_section
+__nldbl___isoc99_scanf (const char *fmt, ...)
+{
+ va_list arg;
+ int done;
+
+ va_start (arg, fmt);
+ done = __nldbl___isoc99_vfscanf (stdin, fmt, arg);
+ va_end (arg);
+
+ return done;
+}
+
+int
+attribute_compat_text_section
+__nldbl___isoc99_vfwscanf (FILE *s, const wchar_t *fmt, va_list ap)
+{
+ int res;
+ set_no_long_double ();
+ res = __isoc99_vfwscanf (s, fmt, ap);
+ clear_no_long_double ();
+ return res;
+}
+libc_hidden_def (__nldbl___isoc99_vfwscanf)
+
+int
+attribute_compat_text_section
+__nldbl___isoc99_swscanf (const wchar_t *s, const wchar_t *fmt, ...)
+{
+ va_list arg;
+ int done;
+
+ va_start (arg, fmt);
+ done = __nldbl___isoc99_vswscanf (s, fmt, arg);
+ va_end (arg);
+
+ return done;
+}
+
+int
+attribute_compat_text_section
+__nldbl___isoc99_vswscanf (const wchar_t *string, const wchar_t *fmt,
+ va_list ap)
+{
+ int res;
+ __no_long_double = 1;
+ res = __isoc99_vswscanf (string, fmt, ap);
+ __no_long_double = 0;
+ return res;
+}
+libc_hidden_def (__nldbl___isoc99_vswscanf)
+
+int
+attribute_compat_text_section
+__nldbl___isoc99_vwscanf (const wchar_t *fmt, va_list ap)
+{
+ return __nldbl___isoc99_vfwscanf (stdin, fmt, ap);
+}
+
+int
+attribute_compat_text_section
+__nldbl___isoc99_fwscanf (FILE *stream, const wchar_t *fmt, ...)
+{
+ va_list arg;
+ int done;
+
+ va_start (arg, fmt);
+ done = __nldbl___isoc99_vfwscanf (stream, fmt, arg);
+ va_end (arg);
+
+ return done;
+}
+
+int
+attribute_compat_text_section
+__nldbl___isoc99_wscanf (const wchar_t *fmt, ...)
+{
+ va_list arg;
+ int done;
+
+ va_start (arg, fmt);
+ done = __nldbl___isoc99_vfwscanf (stdin, fmt, arg);
+ va_end (arg);
+
+ return done;
+}
+
+#if LONG_DOUBLE_COMPAT(libc, GLIBC_2_0)
+compat_symbol (libc, __nldbl__IO_printf, _IO_printf, GLIBC_2_0);
+compat_symbol (libc, __nldbl__IO_sprintf, _IO_sprintf, GLIBC_2_0);
+compat_symbol (libc, __nldbl__IO_vfprintf, _IO_vfprintf, GLIBC_2_0);
+compat_symbol (libc, __nldbl__IO_vsprintf, _IO_vsprintf, GLIBC_2_0);
+compat_symbol (libc, __nldbl_dprintf, dprintf, GLIBC_2_0);
+compat_symbol (libc, __nldbl_fprintf, fprintf, GLIBC_2_0);
+compat_symbol (libc, __nldbl_printf, printf, GLIBC_2_0);
+compat_symbol (libc, __nldbl_sprintf, sprintf, GLIBC_2_0);
+compat_symbol (libc, __nldbl_vfprintf, vfprintf, GLIBC_2_0);
+compat_symbol (libc, __nldbl_vprintf, vprintf, GLIBC_2_0);
+compat_symbol (libc, __nldbl__IO_fprintf, _IO_fprintf, GLIBC_2_0);
+compat_symbol (libc, __nldbl___vsnprintf, __vsnprintf, GLIBC_2_0);
+compat_symbol (libc, __nldbl_asprintf, asprintf, GLIBC_2_0);
+compat_symbol (libc, __nldbl_obstack_printf, obstack_printf, GLIBC_2_0);
+compat_symbol (libc, __nldbl_obstack_vprintf, obstack_vprintf, GLIBC_2_0);
+compat_symbol (libc, __nldbl_snprintf, snprintf, GLIBC_2_0);
+compat_symbol (libc, __nldbl_vasprintf, vasprintf, GLIBC_2_0);
+compat_symbol (libc, __nldbl_vdprintf, vdprintf, GLIBC_2_0);
+compat_symbol (libc, __nldbl_vsnprintf, vsnprintf, GLIBC_2_0);
+compat_symbol (libc, __nldbl_vsprintf, vsprintf, GLIBC_2_0);
+compat_symbol (libc, __nldbl__IO_sscanf, _IO_sscanf, GLIBC_2_0);
+compat_symbol (libc, __nldbl__IO_vfscanf, _IO_vfscanf, GLIBC_2_0);
+compat_symbol (libc, __nldbl___vfscanf, __vfscanf, GLIBC_2_0);
+compat_symbol (libc, __nldbl___vsscanf, __vsscanf, GLIBC_2_0);
+compat_symbol (libc, __nldbl_fscanf, fscanf, GLIBC_2_0);
+compat_symbol (libc, __nldbl_scanf, scanf, GLIBC_2_0);
+compat_symbol (libc, __nldbl_sscanf, sscanf, GLIBC_2_0);
+compat_symbol (libc, __nldbl_vfscanf, vfscanf, GLIBC_2_0);
+compat_symbol (libc, __nldbl_vscanf, vscanf, GLIBC_2_0);
+compat_symbol (libc, __nldbl_vsscanf, vsscanf, GLIBC_2_0);
+compat_symbol (libc, __nldbl___printf_fp, __printf_fp, GLIBC_2_0);
+compat_symbol (libc, __nldbl_strfmon, strfmon, GLIBC_2_0);
+compat_symbol (libc, __nldbl_syslog, syslog, GLIBC_2_0);
+compat_symbol (libc, __nldbl_vsyslog, vsyslog, GLIBC_2_0);
+#endif
+#if LONG_DOUBLE_COMPAT(libc, GLIBC_2_1)
+compat_symbol (libc, __nldbl___asprintf, __asprintf, GLIBC_2_1);
+compat_symbol (libc, __nldbl_printf_size, printf_size, GLIBC_2_1);
+compat_symbol (libc, __nldbl___strfmon_l, __strfmon_l, GLIBC_2_1);
+#endif
+#if LONG_DOUBLE_COMPAT(libc, GLIBC_2_2)
+compat_symbol (libc, __nldbl_swprintf, swprintf, GLIBC_2_2);
+compat_symbol (libc, __nldbl_vwprintf, vwprintf, GLIBC_2_2);
+compat_symbol (libc, __nldbl_wprintf, wprintf, GLIBC_2_2);
+compat_symbol (libc, __nldbl_fwprintf, fwprintf, GLIBC_2_2);
+compat_symbol (libc, __nldbl_vfwprintf, vfwprintf, GLIBC_2_2);
+compat_symbol (libc, __nldbl_vswprintf, vswprintf, GLIBC_2_2);
+compat_symbol (libc, __nldbl_fwscanf, fwscanf, GLIBC_2_2);
+compat_symbol (libc, __nldbl_swscanf, swscanf, GLIBC_2_2);
+compat_symbol (libc, __nldbl_vfwscanf, vfwscanf, GLIBC_2_2);
+compat_symbol (libc, __nldbl_vswscanf, vswscanf, GLIBC_2_2);
+compat_symbol (libc, __nldbl_vwscanf, vwscanf, GLIBC_2_2);
+compat_symbol (libc, __nldbl_wscanf, wscanf, GLIBC_2_2);
+#endif
+#if LONG_DOUBLE_COMPAT(libc, GLIBC_2_3)
+compat_symbol (libc, __nldbl_strfmon_l, strfmon_l, GLIBC_2_3);
+#endif
+#if LONG_DOUBLE_COMPAT(libc, GLIBC_2_3_4)
+compat_symbol (libc, __nldbl___sprintf_chk, __sprintf_chk, GLIBC_2_3_4);
+compat_symbol (libc, __nldbl___vsprintf_chk, __vsprintf_chk, GLIBC_2_3_4);
+compat_symbol (libc, __nldbl___snprintf_chk, __snprintf_chk, GLIBC_2_3_4);
+compat_symbol (libc, __nldbl___vsnprintf_chk, __vsnprintf_chk, GLIBC_2_3_4);
+compat_symbol (libc, __nldbl___printf_chk, __printf_chk, GLIBC_2_3_4);
+compat_symbol (libc, __nldbl___fprintf_chk, __fprintf_chk, GLIBC_2_3_4);
+compat_symbol (libc, __nldbl___vprintf_chk, __vprintf_chk, GLIBC_2_3_4);
+compat_symbol (libc, __nldbl___vfprintf_chk, __vfprintf_chk, GLIBC_2_3_4);
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-compat.h b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-compat.h
new file mode 100644
index 0000000000..72ec0db390
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-compat.h
@@ -0,0 +1,104 @@
+/* Prototypes for compatibility double == long double entry points.
+ Copyright (C) 2006-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Jakub Jelinek <jakub@cygnus.com>, 2006.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#ifndef __NLDBL_COMPAT_H
+#define __NLDBL_COMPAT_H 1
+
+/* Avoid long double prototypes. */
+#define __NO_LONG_DOUBLE_MATH 1
+#include <stdarg.h>
+#include <stdlib.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <printf.h>
+#include <wchar.h>
+#include <math.h>
+#include <monetary.h>
+#include <sys/syslog.h>
+
+
+/* Declare the __nldbl_NAME function the wrappers call that's in libc.so. */
+#define NLDBL_DECL(name) extern __typeof (name) __nldbl_##name
+
+NLDBL_DECL (_IO_vfscanf);
+NLDBL_DECL (vfscanf);
+NLDBL_DECL (vfwscanf);
+NLDBL_DECL (obstack_vprintf);
+NLDBL_DECL (vasprintf);
+NLDBL_DECL (dprintf);
+NLDBL_DECL (vdprintf);
+NLDBL_DECL (fprintf);
+NLDBL_DECL (vfprintf);
+NLDBL_DECL (vfwprintf);
+NLDBL_DECL (vsnprintf);
+NLDBL_DECL (vsprintf);
+NLDBL_DECL (vsscanf);
+NLDBL_DECL (vswprintf);
+NLDBL_DECL (vswscanf);
+NLDBL_DECL (__asprintf);
+NLDBL_DECL (asprintf);
+NLDBL_DECL (__printf_fp);
+NLDBL_DECL (printf_size);
+NLDBL_DECL (syslog);
+NLDBL_DECL (vsyslog);
+NLDBL_DECL (qecvt);
+NLDBL_DECL (qfcvt);
+NLDBL_DECL (qgcvt);
+NLDBL_DECL (__vstrfmon_l);
+NLDBL_DECL (__isoc99_scanf);
+NLDBL_DECL (__isoc99_fscanf);
+NLDBL_DECL (__isoc99_sscanf);
+NLDBL_DECL (__isoc99_vscanf);
+NLDBL_DECL (__isoc99_vfscanf);
+NLDBL_DECL (__isoc99_vsscanf);
+NLDBL_DECL (__isoc99_wscanf);
+NLDBL_DECL (__isoc99_fwscanf);
+NLDBL_DECL (__isoc99_swscanf);
+NLDBL_DECL (__isoc99_vwscanf);
+NLDBL_DECL (__isoc99_vfwscanf);
+NLDBL_DECL (__isoc99_vswscanf);
+
+/* This one does not exist in the normal interface, only
+ __nldbl___vstrfmon really exists. */
+extern ssize_t __nldbl___vstrfmon (char *, size_t, const char *, va_list)
+ __THROW;
+
+/* These don't use __typeof because they were not declared by the headers,
+ since we don't compile with _FORTIFY_SOURCE. */
+extern int __nldbl___vfprintf_chk (FILE *__restrict, int,
+ const char *__restrict, _G_va_list);
+extern int __nldbl___vfwprintf_chk (FILE *__restrict, int,
+ const wchar_t *__restrict, __gnuc_va_list);
+extern int __nldbl___vsprintf_chk (char *__restrict, int, size_t,
+ const char *__restrict, _G_va_list) __THROW;
+extern int __nldbl___vsnprintf_chk (char *__restrict, size_t, int, size_t,
+ const char *__restrict, _G_va_list)
+ __THROW;
+extern int __nldbl___vswprintf_chk (wchar_t *__restrict, size_t, int, size_t,
+ const wchar_t *__restrict, __gnuc_va_list)
+ __THROW;
+extern int __nldbl___vasprintf_chk (char **, int, const char *, _G_va_list)
+ __THROW;
+extern int __nldbl___vdprintf_chk (int, int, const char *, _G_va_list);
+extern int __nldbl___obstack_vprintf_chk (struct obstack *, int, const char *,
+ _G_va_list) __THROW;
+extern void __nldbl___vsyslog_chk (int, int, const char *, va_list);
+
+
+#endif /* __NLDBL_COMPAT_H */
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-conj.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-conj.c
new file mode 100644
index 0000000000..8927ea9968
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-conj.c
@@ -0,0 +1,9 @@
+#include "nldbl-compat.h"
+#include <complex.h>
+
+double _Complex
+attribute_hidden
+conjl (double _Complex x)
+{
+ return conj (x);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-copysign.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-copysign.c
new file mode 100644
index 0000000000..045f00dda8
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-copysign.c
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+copysignl (double x, double y)
+{
+ return __copysign (x, y);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-cos.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-cos.c
new file mode 100644
index 0000000000..08738af048
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-cos.c
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+cosl (double x)
+{
+ return cos (x);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-cosh.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-cosh.c
new file mode 100644
index 0000000000..0ab834ffd9
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-cosh.c
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+coshl (double x)
+{
+ return cosh (x);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-cpow.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-cpow.c
new file mode 100644
index 0000000000..709e7d73b1
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-cpow.c
@@ -0,0 +1,9 @@
+#include "nldbl-compat.h"
+#include <complex.h>
+
+double _Complex
+attribute_hidden
+cpowl (double _Complex x, double _Complex y)
+{
+ return cpow (x, y);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-cproj.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-cproj.c
new file mode 100644
index 0000000000..6f88b88bf2
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-cproj.c
@@ -0,0 +1,9 @@
+#include "nldbl-compat.h"
+#include <complex.h>
+
+double _Complex
+attribute_hidden
+cprojl (double _Complex x)
+{
+ return cproj (x);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-creal.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-creal.c
new file mode 100644
index 0000000000..b02ce6e5e4
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-creal.c
@@ -0,0 +1,9 @@
+#include "nldbl-compat.h"
+#include <complex.h>
+
+double
+attribute_hidden
+creall (double _Complex x)
+{
+ return creal (x);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-csin.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-csin.c
new file mode 100644
index 0000000000..b2e2c9c8ef
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-csin.c
@@ -0,0 +1,9 @@
+#include "nldbl-compat.h"
+#include <complex.h>
+
+double _Complex
+attribute_hidden
+csinl (double _Complex x)
+{
+ return csin (x);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-csinh.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-csinh.c
new file mode 100644
index 0000000000..2bcba920e3
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-csinh.c
@@ -0,0 +1,9 @@
+#include "nldbl-compat.h"
+#include <complex.h>
+
+double _Complex
+attribute_hidden
+csinhl (double _Complex x)
+{
+ return csinh (x);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-csqrt.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-csqrt.c
new file mode 100644
index 0000000000..ae00a29885
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-csqrt.c
@@ -0,0 +1,9 @@
+#include "nldbl-compat.h"
+#include <complex.h>
+
+double _Complex
+attribute_hidden
+csqrtl (double _Complex x)
+{
+ return csqrt (x);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-ctan.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-ctan.c
new file mode 100644
index 0000000000..422c5cce94
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-ctan.c
@@ -0,0 +1,9 @@
+#include "nldbl-compat.h"
+#include <complex.h>
+
+double _Complex
+attribute_hidden
+ctanl (double _Complex x)
+{
+ return ctan (x);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-ctanh.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-ctanh.c
new file mode 100644
index 0000000000..f3842ed26f
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-ctanh.c
@@ -0,0 +1,9 @@
+#include "nldbl-compat.h"
+#include <complex.h>
+
+double _Complex
+attribute_hidden
+ctanhl (double _Complex x)
+{
+ return ctanh (x);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-dprintf.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-dprintf.c
new file mode 100644
index 0000000000..6e26db2a24
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-dprintf.c
@@ -0,0 +1,15 @@
+#include "nldbl-compat.h"
+
+attribute_hidden
+int
+dprintf (int d, const char *fmt, ...)
+{
+ va_list arg;
+ int done;
+
+ va_start (arg, fmt);
+ done = __nldbl_vdprintf (d, fmt, arg);
+ va_end (arg);
+
+ return done;
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-dprintf_chk.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-dprintf_chk.c
new file mode 100644
index 0000000000..b3e2359128
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-dprintf_chk.c
@@ -0,0 +1,15 @@
+#include "nldbl-compat.h"
+
+attribute_hidden
+int
+__dprintf_chk (int d, int flag, const char *fmt, ...)
+{
+ va_list arg;
+ int done;
+
+ va_start (arg, fmt);
+ done = __nldbl___vdprintf_chk (d, flag, fmt, arg);
+ va_end (arg);
+
+ return done;
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-erf.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-erf.c
new file mode 100644
index 0000000000..0032c1febc
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-erf.c
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+erfl (double x)
+{
+ return erf (x);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-erfc.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-erfc.c
new file mode 100644
index 0000000000..21d09680aa
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-erfc.c
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+erfcl (double x)
+{
+ return erfc (x);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-exp.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-exp.c
new file mode 100644
index 0000000000..ad2c89b6d5
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-exp.c
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+expl (double x)
+{
+ return exp (x);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-exp10.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-exp10.c
new file mode 100644
index 0000000000..2d0ead686b
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-exp10.c
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+exp10l (double x)
+{
+ return exp10 (x);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-exp2.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-exp2.c
new file mode 100644
index 0000000000..d5fce3970d
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-exp2.c
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+exp2l (double x)
+{
+ return exp2 (x);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-expm1.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-expm1.c
new file mode 100644
index 0000000000..be5c6e51c4
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-expm1.c
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+expm1l (double x)
+{
+ return expm1 (x);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-fabs.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-fabs.c
new file mode 100644
index 0000000000..10729a6ec0
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-fabs.c
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+fabsl (double x)
+{
+ return fabs (x);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-fdim.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-fdim.c
new file mode 100644
index 0000000000..72896b63ed
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-fdim.c
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+fdiml (double x, double y)
+{
+ return fdim (x, y);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-finite.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-finite.c
new file mode 100644
index 0000000000..fc51508f16
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-finite.c
@@ -0,0 +1,10 @@
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+__finitel (double x)
+{
+ return isfinite (x);
+}
+extern __typeof (__finitel) finitel attribute_hidden;
+weak_alias (__finitel, finitel)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-floor.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-floor.c
new file mode 100644
index 0000000000..c7e9f834b6
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-floor.c
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+floorl (double x)
+{
+ return floor (x);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-fma.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-fma.c
new file mode 100644
index 0000000000..9474483673
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-fma.c
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+fmal (double x, double y, double z)
+{
+ return fma (x, y, z);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-fmax.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-fmax.c
new file mode 100644
index 0000000000..f5a84776ed
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-fmax.c
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+fmaxl (double x, double y)
+{
+ return fmax (x, y);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-fmaxmag.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-fmaxmag.c
new file mode 100644
index 0000000000..28aab5791a
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-fmaxmag.c
@@ -0,0 +1,26 @@
+/* Compatibility routine for IEEE double as long double for fmaxmag.
+ Copyright (C) 2016-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+fmaxmagl (double x, double y)
+{
+ return fmaxmag (x, y);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-fmin.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-fmin.c
new file mode 100644
index 0000000000..a353cf9484
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-fmin.c
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+fminl (double x, double y)
+{
+ return fmin (x, y);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-fminmag.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-fminmag.c
new file mode 100644
index 0000000000..f1743acd4d
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-fminmag.c
@@ -0,0 +1,26 @@
+/* Compatibility routine for IEEE double as long double for fminmag.
+ Copyright (C) 2016-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+fminmagl (double x, double y)
+{
+ return fminmag (x, y);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-fmod.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-fmod.c
new file mode 100644
index 0000000000..aa692b9f36
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-fmod.c
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+fmodl (double x, double y)
+{
+ return fmod (x, y);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-fprintf.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-fprintf.c
new file mode 100644
index 0000000000..9df4c4bc34
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-fprintf.c
@@ -0,0 +1,17 @@
+#include "nldbl-compat.h"
+
+attribute_hidden
+int
+fprintf (FILE *stream, const char *fmt, ...)
+{
+ va_list arg;
+ int done;
+
+ va_start (arg, fmt);
+ done = __nldbl_vfprintf (stream, fmt, arg);
+ va_end (arg);
+
+ return done;
+}
+extern __typeof (fprintf) _IO_fprintf attribute_hidden;
+weak_alias (fprintf, _IO_fprintf)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-fprintf_chk.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-fprintf_chk.c
new file mode 100644
index 0000000000..43a7618183
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-fprintf_chk.c
@@ -0,0 +1,15 @@
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+__fprintf_chk (FILE *stream, int flag, const char *fmt, ...)
+{
+ va_list arg;
+ int done;
+
+ va_start (arg, fmt);
+ done = __nldbl___vfprintf_chk (stream, flag, fmt, arg);
+ va_end (arg);
+
+ return done;
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-frexp.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-frexp.c
new file mode 100644
index 0000000000..0ec97e10e3
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-frexp.c
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+frexpl (double x, int *exponent)
+{
+ return frexp (x, exponent);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-fromfp.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-fromfp.c
new file mode 100644
index 0000000000..6ef95f4ab4
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-fromfp.c
@@ -0,0 +1,26 @@
+/* Compatibility routine for IEEE double as long double for fromfp.
+ Copyright (C) 2016-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include "nldbl-compat.h"
+
+intmax_t
+attribute_hidden
+fromfpl (double x, int round, unsigned int width)
+{
+ return fromfp (x, round, width);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-fromfpx.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-fromfpx.c
new file mode 100644
index 0000000000..193d9b6ce1
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-fromfpx.c
@@ -0,0 +1,26 @@
+/* Compatibility routine for IEEE double as long double for fromfpx.
+ Copyright (C) 2016-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include "nldbl-compat.h"
+
+intmax_t
+attribute_hidden
+fromfpxl (double x, int round, unsigned int width)
+{
+ return fromfpx (x, round, width);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-fscanf.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-fscanf.c
new file mode 100644
index 0000000000..1b768e306f
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-fscanf.c
@@ -0,0 +1,15 @@
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+fscanf (FILE *stream, const char *fmt, ...)
+{
+ va_list arg;
+ int done;
+
+ va_start (arg, fmt);
+ done = __nldbl__IO_vfscanf (stream, fmt, arg, NULL);
+ va_end (arg);
+
+ return done;
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-fwprintf.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-fwprintf.c
new file mode 100644
index 0000000000..18362af013
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-fwprintf.c
@@ -0,0 +1,16 @@
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+weak_function
+fwprintf (FILE *stream, const wchar_t *fmt, ...)
+{
+ va_list arg;
+ int done;
+
+ va_start (arg, fmt);
+ done = __nldbl_vfwprintf (stream, fmt, arg);
+ va_end (arg);
+
+ return done;
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-fwprintf_chk.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-fwprintf_chk.c
new file mode 100644
index 0000000000..09731cf29d
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-fwprintf_chk.c
@@ -0,0 +1,15 @@
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+__fwprintf_chk (FILE *stream, int flag, const wchar_t *fmt, ...)
+{
+ va_list arg;
+ int done;
+
+ va_start (arg, fmt);
+ done = __nldbl___vfwprintf_chk (stream, flag, fmt, arg);
+ va_end (arg);
+
+ return done;
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-fwscanf.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-fwscanf.c
new file mode 100644
index 0000000000..27fc1a7271
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-fwscanf.c
@@ -0,0 +1,15 @@
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+fwscanf (FILE *stream, const wchar_t *fmt, ...)
+{
+ va_list arg;
+ int done;
+
+ va_start (arg, fmt);
+ done = __nldbl_vfwscanf (stream, fmt, arg);
+ va_end (arg);
+
+ return done;
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-gamma.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-gamma.c
new file mode 100644
index 0000000000..10dc640b92
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-gamma.c
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+gammal (double x)
+{
+ return gamma (x);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-getpayload.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-getpayload.c
new file mode 100644
index 0000000000..f15f9231ec
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-getpayload.c
@@ -0,0 +1,26 @@
+/* Compatibility routine for IEEE double as long double for getpayload.
+ Copyright (C) 2016-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+getpayloadl (const double *x)
+{
+ return getpayload (x);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-hypot.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-hypot.c
new file mode 100644
index 0000000000..2105f3eba8
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-hypot.c
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+hypotl (double x, double y)
+{
+ return hypot (x, y);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-ilogb.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-ilogb.c
new file mode 100644
index 0000000000..e840b2a447
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-ilogb.c
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+ilogbl (double x)
+{
+ return ilogb (x);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-iovfscanf.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-iovfscanf.c
new file mode 100644
index 0000000000..05581c0354
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-iovfscanf.c
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+_IO_vfscanf (FILE *s, const char *fmt, _IO_va_list ap, int *errp)
+{
+ return __nldbl__IO_vfscanf (s, fmt, ap, errp);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-isinf.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-isinf.c
new file mode 100644
index 0000000000..577ab2db28
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-isinf.c
@@ -0,0 +1,10 @@
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+__isinfl (double x)
+{
+ return isinf (x);
+}
+extern __typeof (__isinfl) isinfl attribute_hidden;
+weak_alias (__isinfl, isinfl)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-isnan.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-isnan.c
new file mode 100644
index 0000000000..2d87bf85fb
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-isnan.c
@@ -0,0 +1,10 @@
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+__isnanl (double x)
+{
+ return isnan (x);
+}
+extern __typeof (__isnanl) isnanl attribute_hidden;
+weak_alias (__isnanl, isnanl)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-isoc99_fscanf.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-isoc99_fscanf.c
new file mode 100644
index 0000000000..1d736668a4
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-isoc99_fscanf.c
@@ -0,0 +1,15 @@
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+__isoc99_fscanf (FILE *stream, const char *fmt, ...)
+{
+ va_list arg;
+ int done;
+
+ va_start (arg, fmt);
+ done = __nldbl___isoc99_vfscanf (stream, fmt, arg);
+ va_end (arg);
+
+ return done;
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-isoc99_fwscanf.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-isoc99_fwscanf.c
new file mode 100644
index 0000000000..dbea1512cf
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-isoc99_fwscanf.c
@@ -0,0 +1,15 @@
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+__isoc99_fwscanf (FILE *stream, const wchar_t *fmt, ...)
+{
+ va_list arg;
+ int done;
+
+ va_start (arg, fmt);
+ done = __nldbl___isoc99_vfwscanf (stream, fmt, arg);
+ va_end (arg);
+
+ return done;
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-isoc99_scanf.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-isoc99_scanf.c
new file mode 100644
index 0000000000..ec2ec53291
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-isoc99_scanf.c
@@ -0,0 +1,15 @@
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+__isoc99_scanf (const char *fmt, ...)
+{
+ va_list arg;
+ int done;
+
+ va_start (arg, fmt);
+ done = __nldbl___isoc99_vfscanf (stdin, fmt, arg);
+ va_end (arg);
+
+ return done;
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-isoc99_sscanf.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-isoc99_sscanf.c
new file mode 100644
index 0000000000..52e1bd5d2a
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-isoc99_sscanf.c
@@ -0,0 +1,15 @@
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+__isoc99_sscanf (const char *s, const char *fmt, ...)
+{
+ va_list arg;
+ int done;
+
+ va_start (arg, fmt);
+ done = __nldbl___isoc99_vsscanf (s, fmt, arg);
+ va_end (arg);
+
+ return done;
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-isoc99_swscanf.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-isoc99_swscanf.c
new file mode 100644
index 0000000000..927d024923
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-isoc99_swscanf.c
@@ -0,0 +1,15 @@
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+__isoc99_swscanf (const wchar_t *s, const wchar_t *fmt, ...)
+{
+ va_list arg;
+ int done;
+
+ va_start (arg, fmt);
+ done = __nldbl___isoc99_vswscanf (s, fmt, arg);
+ va_end (arg);
+
+ return done;
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-isoc99_vfscanf.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-isoc99_vfscanf.c
new file mode 100644
index 0000000000..55556c375c
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-isoc99_vfscanf.c
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+__isoc99_vfscanf (FILE *s, const char *fmt, va_list ap)
+{
+ return __nldbl___isoc99_vfscanf (s, fmt, ap);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-isoc99_vfwscanf.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-isoc99_vfwscanf.c
new file mode 100644
index 0000000000..4fd54cb176
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-isoc99_vfwscanf.c
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+__isoc99_vfwscanf (FILE *s, const wchar_t *fmt, va_list ap)
+{
+ return __nldbl___isoc99_vfwscanf (s, fmt, ap);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-isoc99_vscanf.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-isoc99_vscanf.c
new file mode 100644
index 0000000000..6284c9339b
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-isoc99_vscanf.c
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+__isoc99_vscanf (const char *fmt, va_list ap)
+{
+ return __nldbl___isoc99_vfscanf (stdin, fmt, ap);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-isoc99_vsscanf.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-isoc99_vsscanf.c
new file mode 100644
index 0000000000..0c19032b15
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-isoc99_vsscanf.c
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+__isoc99_vsscanf (const char *string, const char *fmt, va_list ap)
+{
+ return __nldbl___isoc99_vsscanf (string, fmt, ap);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-isoc99_vswscanf.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-isoc99_vswscanf.c
new file mode 100644
index 0000000000..5f34221b62
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-isoc99_vswscanf.c
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+__isoc99_vswscanf (const wchar_t *string, const wchar_t *fmt, va_list ap)
+{
+ return __nldbl___isoc99_vswscanf (string, fmt, ap);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-isoc99_vwscanf.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-isoc99_vwscanf.c
new file mode 100644
index 0000000000..a8a76ff54b
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-isoc99_vwscanf.c
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+__isoc99_vwscanf (const wchar_t *fmt, va_list ap)
+{
+ return __nldbl___isoc99_vfwscanf (stdin, fmt, ap);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-isoc99_wscanf.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-isoc99_wscanf.c
new file mode 100644
index 0000000000..fc2f6f8598
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-isoc99_wscanf.c
@@ -0,0 +1,15 @@
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+__isoc99_wscanf (const wchar_t *fmt, ...)
+{
+ va_list arg;
+ int done;
+
+ va_start (arg, fmt);
+ done = __nldbl___isoc99_vfwscanf (stdin, fmt, arg);
+ va_end (arg);
+
+ return done;
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-j0.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-j0.c
new file mode 100644
index 0000000000..9d59f0a015
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-j0.c
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+j0l (double x)
+{
+ return j0 (x);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-j1.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-j1.c
new file mode 100644
index 0000000000..dba7366861
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-j1.c
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+j1l (double x)
+{
+ return j1 (x);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-jn.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-jn.c
new file mode 100644
index 0000000000..3f19bbb1a8
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-jn.c
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+jnl (int n, double x)
+{
+ return jn (n, x);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-ldexp.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-ldexp.c
new file mode 100644
index 0000000000..360f8f0f6b
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-ldexp.c
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+ldexpl (double x, int exponent)
+{
+ return ldexp (x, exponent);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-lgamma.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-lgamma.c
new file mode 100644
index 0000000000..0055212628
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-lgamma.c
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+lgammal (double x)
+{
+ return lgamma (x);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-lgamma_r.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-lgamma_r.c
new file mode 100644
index 0000000000..e1ab9a1d0a
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-lgamma_r.c
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+lgammal_r (double x, int *signgamp)
+{
+ return lgamma_r (x, signgamp);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-llogb.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-llogb.c
new file mode 100644
index 0000000000..76042b2f48
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-llogb.c
@@ -0,0 +1,26 @@
+/* Compatibility routine for IEEE double as long double for llogb.
+ Copyright (C) 2016-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include "nldbl-compat.h"
+
+long int
+attribute_hidden
+llogbl (double x)
+{
+ return llogb (x);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-llrint.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-llrint.c
new file mode 100644
index 0000000000..6dfce89d0d
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-llrint.c
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+long long int
+attribute_hidden
+llrintl (double x)
+{
+ return llrint (x);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-llround.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-llround.c
new file mode 100644
index 0000000000..0157a079f4
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-llround.c
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+long long int
+attribute_hidden
+llroundl (double x)
+{
+ return llround (x);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-log.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-log.c
new file mode 100644
index 0000000000..a5a1ae7cd7
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-log.c
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+logl (double x)
+{
+ return log (x);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-log10.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-log10.c
new file mode 100644
index 0000000000..1477866dc6
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-log10.c
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+log10l (double x)
+{
+ return log10 (x);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-log1p.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-log1p.c
new file mode 100644
index 0000000000..455b25a9f4
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-log1p.c
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+log1pl (double x)
+{
+ return log1p (x);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-log2.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-log2.c
new file mode 100644
index 0000000000..8c1ae344e5
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-log2.c
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+log2l (double x)
+{
+ return log2 (x);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-logb.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-logb.c
new file mode 100644
index 0000000000..d9ce8de075
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-logb.c
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+logbl (double x)
+{
+ return logb (x);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-lrint.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-lrint.c
new file mode 100644
index 0000000000..0acd3d4ae6
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-lrint.c
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+long int
+attribute_hidden
+lrintl (double x)
+{
+ return lrint (x);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-lround.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-lround.c
new file mode 100644
index 0000000000..aadb111f88
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-lround.c
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+long int
+attribute_hidden
+lroundl (double x)
+{
+ return lround (x);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-modf.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-modf.c
new file mode 100644
index 0000000000..bcbe6bb435
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-modf.c
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+modfl (double x, double *iptr)
+{
+ return modf (x, iptr);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-nan.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-nan.c
new file mode 100644
index 0000000000..8db157a0ea
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-nan.c
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+nanl (const char *tag)
+{
+ return nan (tag);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-nearbyint.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-nearbyint.c
new file mode 100644
index 0000000000..fd4a24684d
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-nearbyint.c
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+nearbyintl (double x)
+{
+ return nearbyint (x);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-nextafter.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-nextafter.c
new file mode 100644
index 0000000000..b0bae43f49
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-nextafter.c
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+nextafterl (double x, double y)
+{
+ return nextafter (x, y);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-nextdown.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-nextdown.c
new file mode 100644
index 0000000000..b20c788401
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-nextdown.c
@@ -0,0 +1,27 @@
+/* Compatibility routine for IEEE double as long double for nextdown.
+ Copyright (C) 2016-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include "nldbl-compat.h"
+
+/* Return the greatest floating-point number less than X. */
+double
+attribute_hidden
+nextdownl (double x)
+{
+ return nextdown (x);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-nexttoward.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-nexttoward.c
new file mode 100644
index 0000000000..acbd01a0cf
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-nexttoward.c
@@ -0,0 +1,14 @@
+#define nexttoward nexttoward_XXX
+#define nexttowardl nexttowardl_XXX
+#include "nldbl-compat.h"
+#undef nexttoward
+#undef nexttowardl
+
+double
+attribute_hidden
+nexttoward (double x, double y)
+{
+ return nextafter (x, y);
+}
+extern __typeof (nexttoward) nexttowardl attribute_hidden;
+strong_alias (nexttoward, nexttowardl)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-nexttowardf.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-nexttowardf.c
new file mode 100644
index 0000000000..350b08d39e
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-nexttowardf.c
@@ -0,0 +1,12 @@
+#define nexttowardf nexttowardf_XXX
+#include "nldbl-compat.h"
+#undef nexttowardf
+
+extern float __nldbl_nexttowardf (float x, double y);
+
+float
+attribute_hidden
+nexttowardf (float x, double y)
+{
+ return __nldbl_nexttowardf (x, y);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-nextup.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-nextup.c
new file mode 100644
index 0000000000..71dc8d4816
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-nextup.c
@@ -0,0 +1,27 @@
+/* Compatibility routine for IEEE double as long double for nextup.
+ Copyright (C) 2016-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include "nldbl-compat.h"
+
+/* Return the least floating-point number greater than X. */
+double
+attribute_hidden
+nextupl (double x)
+{
+ return nextup (x);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-obstack_printf.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-obstack_printf.c
new file mode 100644
index 0000000000..4abff2dc0d
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-obstack_printf.c
@@ -0,0 +1,13 @@
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+obstack_printf (struct obstack *obstack, const char *fmt, ...)
+{
+ int result;
+ va_list ap;
+ va_start (ap, fmt);
+ result = __nldbl_obstack_vprintf (obstack, fmt, ap);
+ va_end (ap);
+ return result;
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-obstack_printf_chk.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-obstack_printf_chk.c
new file mode 100644
index 0000000000..8e7d8eb4ad
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-obstack_printf_chk.c
@@ -0,0 +1,13 @@
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+__obstack_printf_chk (struct obstack *obstack, int flag, const char *fmt, ...)
+{
+ int result;
+ va_list ap;
+ va_start (ap, fmt);
+ result = __nldbl___obstack_vprintf_chk (obstack, flag, fmt, ap);
+ va_end (ap);
+ return result;
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-obstack_vprintf.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-obstack_vprintf.c
new file mode 100644
index 0000000000..228a50726b
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-obstack_vprintf.c
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+obstack_vprintf (struct obstack *obstack, const char *fmt, va_list ap)
+{
+ return __nldbl_obstack_vprintf (obstack, fmt, ap);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-obstack_vprintf_chk.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-obstack_vprintf_chk.c
new file mode 100644
index 0000000000..a06f6bf9b4
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-obstack_vprintf_chk.c
@@ -0,0 +1,9 @@
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+__obstack_vprintf_chk (struct obstack *obstack, int flag, const char *fmt,
+ va_list ap)
+{
+ return __nldbl___obstack_vprintf_chk (obstack, flag, fmt, ap);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-pow.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-pow.c
new file mode 100644
index 0000000000..a5cc446555
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-pow.c
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+powl (double x, double y)
+{
+ return pow (x, y);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-pow10.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-pow10.c
new file mode 100644
index 0000000000..20ebf8d1bb
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-pow10.c
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+pow10l (double x)
+{
+ return pow10 (x);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-printf.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-printf.c
new file mode 100644
index 0000000000..e4b0fbae0c
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-printf.c
@@ -0,0 +1,17 @@
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+printf (const char *fmt, ...)
+{
+ va_list arg;
+ int done;
+
+ va_start (arg, fmt);
+ done = __nldbl_vfprintf (stdout, fmt, arg);
+ va_end (arg);
+
+ return done;
+}
+extern __typeof (printf) _IO_printf attribute_hidden;
+strong_alias (printf, _IO_printf)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-printf_chk.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-printf_chk.c
new file mode 100644
index 0000000000..926db412f9
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-printf_chk.c
@@ -0,0 +1,15 @@
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+__printf_chk (int flag, const char *fmt, ...)
+{
+ va_list arg;
+ int done;
+
+ va_start (arg, fmt);
+ done = __nldbl___vfprintf_chk (stdout, flag, fmt, arg);
+ va_end (arg);
+
+ return done;
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-printf_fp.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-printf_fp.c
new file mode 100644
index 0000000000..057dfe0b8a
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-printf_fp.c
@@ -0,0 +1,9 @@
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+__printf_fp (FILE *fp, const struct printf_info *info,
+ const void *const *args)
+{
+ return __nldbl___printf_fp (fp, info, args);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-printf_size.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-printf_size.c
new file mode 100644
index 0000000000..d8b1fc9995
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-printf_size.c
@@ -0,0 +1,9 @@
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+printf_size (FILE *__restrict fp, const struct printf_info *info,
+ const void *const *__restrict args)
+{
+ return __nldbl_printf_size (fp, info, args);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-qecvt.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-qecvt.c
new file mode 100644
index 0000000000..9f0b0a66a9
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-qecvt.c
@@ -0,0 +1,10 @@
+#define qecvt qecvt_XXX
+#include "nldbl-compat.h"
+#undef qecvt
+
+attribute_hidden
+char *
+qecvt (double val, int ndigit, int *__restrict decpt, int *__restrict sign)
+{
+ return ecvt (val, ndigit, decpt, sign);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-qecvt_r.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-qecvt_r.c
new file mode 100644
index 0000000000..06f99146cc
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-qecvt_r.c
@@ -0,0 +1,11 @@
+#define qecvt_r qecvt_r_XXX
+#include "nldbl-compat.h"
+#undef qecvt_r
+
+int
+attribute_hidden
+qecvt_r (double val, int ndigit, int *__restrict decpt, int *__restrict sign,
+ char *__restrict buf, size_t len)
+{
+ return ecvt_r (val, ndigit, decpt, sign, buf, len);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-qfcvt.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-qfcvt.c
new file mode 100644
index 0000000000..37fa7f0467
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-qfcvt.c
@@ -0,0 +1,10 @@
+#define qfcvt qfcvt_XXX
+#include "nldbl-compat.h"
+#undef qfcvt
+
+attribute_hidden
+char *
+qfcvt (double val, int ndigit, int *__restrict decpt, int *__restrict sign)
+{
+ return fcvt (val, ndigit, decpt, sign);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-qfcvt_r.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-qfcvt_r.c
new file mode 100644
index 0000000000..03224fefa9
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-qfcvt_r.c
@@ -0,0 +1,11 @@
+#define qfcvt_r qfcvt_r_XXX
+#include "nldbl-compat.h"
+#undef qfcvt_r
+
+int
+attribute_hidden
+qfcvt_r (double val, int ndigit, int *__restrict decpt, int *__restrict sign,
+ char *__restrict buf, size_t len)
+{
+ return fcvt_r (val, ndigit, decpt, sign, buf, len);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-qgcvt.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-qgcvt.c
new file mode 100644
index 0000000000..b935d0962e
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-qgcvt.c
@@ -0,0 +1,10 @@
+#define qgcvt qgcvt_XXX
+#include "nldbl-compat.h"
+#undef qgcvt
+
+attribute_hidden
+char *
+qgcvt (double val, int ndigit, char *buf)
+{
+ return gcvt (val, ndigit, buf);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-remainder.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-remainder.c
new file mode 100644
index 0000000000..581dc78a4d
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-remainder.c
@@ -0,0 +1,10 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+remainderl (double x, double y)
+{
+ return remainder (x, y);
+}
+extern __typeof (remainderl) dreml attribute_hidden;
+weak_alias (remainderl, dreml)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-remquo.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-remquo.c
new file mode 100644
index 0000000000..592dadae8d
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-remquo.c
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+remquol (double x, double y, int *quo)
+{
+ return remquo (x, y, quo);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-rint.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-rint.c
new file mode 100644
index 0000000000..00f942f1a7
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-rint.c
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+rintl (double x)
+{
+ return rint (x);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-round.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-round.c
new file mode 100644
index 0000000000..be9bd5112e
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-round.c
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+roundl (double x)
+{
+ return round (x);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-roundeven.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-roundeven.c
new file mode 100644
index 0000000000..1a46fa50d2
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-roundeven.c
@@ -0,0 +1,26 @@
+/* Compatibility routine for IEEE double as long double for roundeven.
+ Copyright (C) 2016-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+roundevenl (double x)
+{
+ return roundeven (x);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-scalb.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-scalb.c
new file mode 100644
index 0000000000..00d3e2e714
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-scalb.c
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+scalbl (double x, double n)
+{
+ return scalb (x, n);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-scalbln.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-scalbln.c
new file mode 100644
index 0000000000..b5bd501250
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-scalbln.c
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+scalblnl (double x, long int n)
+{
+ return scalbln (x, n);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-scalbn.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-scalbn.c
new file mode 100644
index 0000000000..b1914ebf49
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-scalbn.c
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+scalbnl (double x, int n)
+{
+ return scalbn (x, n);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-scanf.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-scanf.c
new file mode 100644
index 0000000000..bbab371cbe
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-scanf.c
@@ -0,0 +1,15 @@
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+scanf (const char *fmt, ...)
+{
+ va_list arg;
+ int done;
+
+ va_start (arg, fmt);
+ done = __nldbl__IO_vfscanf (stdin, fmt, arg, NULL);
+ va_end (arg);
+
+ return done;
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-setpayload.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-setpayload.c
new file mode 100644
index 0000000000..df902cad99
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-setpayload.c
@@ -0,0 +1,26 @@
+/* Compatibility routine for IEEE double as long double for setpayload.
+ Copyright (C) 2016-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+setpayloadl (double *x, double payload)
+{
+ return setpayload (x, payload);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-setpayloadsig.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-setpayloadsig.c
new file mode 100644
index 0000000000..1ca497502c
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-setpayloadsig.c
@@ -0,0 +1,26 @@
+/* Compatibility routine for IEEE double as long double for setpayloadsig.
+ Copyright (C) 2016-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+setpayloadsigl (double *x, double payload)
+{
+ return setpayloadsig (x, payload);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-signbit.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-signbit.c
new file mode 100644
index 0000000000..2e98c07396
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-signbit.c
@@ -0,0 +1,10 @@
+#define __signbitl __signbitl_XXX
+#include "nldbl-compat.h"
+#undef __signbitl
+
+int
+attribute_hidden
+__signbitl (double x)
+{
+ return signbit (x);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-significand.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-significand.c
new file mode 100644
index 0000000000..624381dde7
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-significand.c
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+significandl (double x)
+{
+ return significand (x);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-sin.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-sin.c
new file mode 100644
index 0000000000..0e76e05e6b
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-sin.c
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+sinl (double x)
+{
+ return sin (x);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-sincos.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-sincos.c
new file mode 100644
index 0000000000..9f2ab2b9fc
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-sincos.c
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+void
+attribute_hidden
+sincosl (double x, double *sinx, double *cosx)
+{
+ sincos (x, sinx, cosx);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-sinh.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-sinh.c
new file mode 100644
index 0000000000..99ea62e8dc
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-sinh.c
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+sinhl (double x)
+{
+ return sinh (x);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-snprintf.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-snprintf.c
new file mode 100644
index 0000000000..ef6fb96a2c
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-snprintf.c
@@ -0,0 +1,16 @@
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+weak_function
+snprintf (char *s, size_t maxlen, const char *fmt, ...)
+{
+ va_list arg;
+ int done;
+
+ va_start (arg, fmt);
+ done = __nldbl_vsnprintf (s, maxlen, fmt, arg);
+ va_end (arg);
+
+ return done;
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-snprintf_chk.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-snprintf_chk.c
new file mode 100644
index 0000000000..944d3de9db
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-snprintf_chk.c
@@ -0,0 +1,16 @@
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+__snprintf_chk (char *s, size_t maxlen, int flag, size_t slen,
+ const char *fmt, ...)
+{
+ va_list arg;
+ int done;
+
+ va_start (arg, fmt);
+ done = __nldbl___vsnprintf_chk (s, maxlen, flag, slen, fmt, arg);
+ va_end (arg);
+
+ return done;
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-sprintf.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-sprintf.c
new file mode 100644
index 0000000000..5d37a7e7f0
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-sprintf.c
@@ -0,0 +1,17 @@
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+sprintf (char *s, const char *fmt, ...)
+{
+ va_list arg;
+ int done;
+
+ va_start (arg, fmt);
+ done = __nldbl_vsprintf (s, fmt, arg);
+ va_end (arg);
+
+ return done;
+}
+extern __typeof (sprintf) _IO_sprintf attribute_hidden;
+strong_alias (sprintf, _IO_sprintf)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-sprintf_chk.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-sprintf_chk.c
new file mode 100644
index 0000000000..349b7c5c22
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-sprintf_chk.c
@@ -0,0 +1,15 @@
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+__sprintf_chk (char *s, int flag, size_t slen, const char *fmt, ...)
+{
+ va_list arg;
+ int done;
+
+ va_start (arg, fmt);
+ done = __nldbl___vsprintf_chk (s, flag, slen, fmt, arg);
+ va_end (arg);
+
+ return done;
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-sqrt.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-sqrt.c
new file mode 100644
index 0000000000..4ae65665de
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-sqrt.c
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+sqrtl (double x)
+{
+ return sqrt (x);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-sscanf.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-sscanf.c
new file mode 100644
index 0000000000..a771d49996
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-sscanf.c
@@ -0,0 +1,17 @@
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+sscanf (const char *s, const char *fmt, ...)
+{
+ va_list arg;
+ int done;
+
+ va_start (arg, fmt);
+ done = __nldbl_vsscanf (s, fmt, arg);
+ va_end (arg);
+
+ return done;
+}
+extern __typeof (sscanf) _IO_sscanf attribute_hidden;
+strong_alias (sscanf, _IO_sscanf)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-strfmon.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-strfmon.c
new file mode 100644
index 0000000000..38f4071278
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-strfmon.c
@@ -0,0 +1,14 @@
+#include "nldbl-compat.h"
+
+ssize_t
+attribute_hidden
+strfmon (char *s, size_t maxsize, const char *format, ...)
+{
+ va_list ap;
+ ssize_t res;
+
+ va_start (ap, format);
+ res = __nldbl___vstrfmon (s, maxsize, format, ap);
+ va_end (ap);
+ return res;
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-strfmon_l.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-strfmon_l.c
new file mode 100644
index 0000000000..0db0e8c42f
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-strfmon_l.c
@@ -0,0 +1,16 @@
+#include "nldbl-compat.h"
+
+ssize_t
+attribute_hidden
+__strfmon_l (char *s, size_t maxsize, __locale_t loc, const char *format, ...)
+{
+ va_list ap;
+ ssize_t res;
+
+ va_start (ap, format);
+ res = __nldbl___vstrfmon_l (s, maxsize, loc, format, ap);
+ va_end (ap);
+ return res;
+}
+extern __typeof (__strfmon_l) strfmon_l attribute_hidden;
+weak_alias (__strfmon_l, strfmon_l)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-strfroml.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-strfroml.c
new file mode 100644
index 0000000000..d6df69e418
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-strfroml.c
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+strfroml (char *dest, size_t size, const char *format, long double f)
+{
+ return strfromd (dest, size, format, f);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-strtold.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-strtold.c
new file mode 100644
index 0000000000..99b907947b
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-strtold.c
@@ -0,0 +1,10 @@
+#define strtold strtold_XXX
+#include "nldbl-compat.h"
+#undef strtold
+
+double
+attribute_hidden
+strtold (const char *nptr, char **endptr)
+{
+ return strtod (nptr, endptr);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-strtold_l.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-strtold_l.c
new file mode 100644
index 0000000000..33ff1ca5b5
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-strtold_l.c
@@ -0,0 +1,20 @@
+#define strtold_l strtold_l_XXX
+#define __strtold_l __strtold_l_XXX
+#define __strtod_l __strtod_l_XXX
+#include "nldbl-compat.h"
+#undef strtold_l
+#undef __strtold_l
+#undef __strtod_l
+
+extern double
+__strtod_l (const char *__restrict __nptr, char **__restrict __endptr,
+ __locale_t __loc);
+
+double
+attribute_hidden
+__strtold_l (const char *nptr, char **endptr, __locale_t loc)
+{
+ return __strtod_l (nptr, endptr, loc);
+}
+extern __typeof (__strtold_l) strtold_l attribute_hidden;
+weak_alias (__strtold_l, strtold_l)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-strtoldint.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-strtoldint.c
new file mode 100644
index 0000000000..0bafabc6e4
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-strtoldint.c
@@ -0,0 +1,10 @@
+#define __strtold_internal __strtold_internal_XXX
+#include "nldbl-compat.h"
+#undef __strtold_internal
+
+double
+attribute_hidden
+__strtold_internal (const char *nptr, char **endptr, int group)
+{
+ return __strtod_internal (nptr, endptr, group);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-swprintf.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-swprintf.c
new file mode 100644
index 0000000000..7f4f7b04d3
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-swprintf.c
@@ -0,0 +1,15 @@
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+swprintf (wchar_t *s, size_t n, const wchar_t *fmt, ...)
+{
+ va_list arg;
+ int done;
+
+ va_start (arg, fmt);
+ done = __nldbl_vswprintf (s, n, fmt, arg);
+ va_end (arg);
+
+ return done;
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-swprintf_chk.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-swprintf_chk.c
new file mode 100644
index 0000000000..0373f6ebc2
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-swprintf_chk.c
@@ -0,0 +1,16 @@
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+__swprintf_chk (wchar_t *s, size_t n, int flag, size_t slen,
+ const wchar_t *fmt, ...)
+{
+ va_list arg;
+ int done;
+
+ va_start (arg, fmt);
+ done = __nldbl___vswprintf_chk (s, n, flag, slen, fmt, arg);
+ va_end (arg);
+
+ return done;
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-swscanf.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-swscanf.c
new file mode 100644
index 0000000000..dd058f47ab
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-swscanf.c
@@ -0,0 +1,15 @@
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+swscanf (const wchar_t *s, const wchar_t *fmt, ...)
+{
+ va_list arg;
+ int done;
+
+ va_start (arg, fmt);
+ done = __nldbl_vswscanf (s, fmt, arg);
+ va_end (arg);
+
+ return done;
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-syslog.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-syslog.c
new file mode 100644
index 0000000000..8687e9f540
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-syslog.c
@@ -0,0 +1,11 @@
+#include "nldbl-compat.h"
+
+void
+attribute_hidden
+syslog (int pri, const char *fmt, ...)
+{
+ va_list ap;
+ va_start (ap, fmt);
+ __nldbl_vsyslog (pri, fmt, ap);
+ va_end (ap);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-syslog_chk.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-syslog_chk.c
new file mode 100644
index 0000000000..31ea6a8b9d
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-syslog_chk.c
@@ -0,0 +1,12 @@
+#include "nldbl-compat.h"
+
+void
+attribute_hidden
+__syslog_chk (int pri, int flag, const char *fmt, ...)
+{
+ va_list ap;
+
+ va_start (ap, fmt);
+ __nldbl___vsyslog_chk (pri, flag, fmt, ap);
+ va_end(ap);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-tan.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-tan.c
new file mode 100644
index 0000000000..1a27b6fbdd
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-tan.c
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+tanl (double x)
+{
+ return tan (x);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-tanh.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-tanh.c
new file mode 100644
index 0000000000..fc2fd32eb8
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-tanh.c
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+tanhl (double x)
+{
+ return tanh (x);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-tgamma.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-tgamma.c
new file mode 100644
index 0000000000..bbf613abe1
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-tgamma.c
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+tgammal (double x)
+{
+ return tgamma (x);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-totalorder.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-totalorder.c
new file mode 100644
index 0000000000..c528d53555
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-totalorder.c
@@ -0,0 +1,26 @@
+/* Compatibility routine for IEEE double as long double for totalorder.
+ Copyright (C) 2016-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+totalorderl (double x, double y)
+{
+ return totalorder (x, y);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-totalordermag.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-totalordermag.c
new file mode 100644
index 0000000000..4bc78588ea
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-totalordermag.c
@@ -0,0 +1,26 @@
+/* Compatibility routine for IEEE double as long double for totalordermag.
+ Copyright (C) 2016-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+totalordermagl (double x, double y)
+{
+ return totalordermag (x, y);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-trunc.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-trunc.c
new file mode 100644
index 0000000000..d0131e80a3
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-trunc.c
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+truncl (double x)
+{
+ return trunc (x);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-ufromfp.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-ufromfp.c
new file mode 100644
index 0000000000..127225734c
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-ufromfp.c
@@ -0,0 +1,26 @@
+/* Compatibility routine for IEEE double as long double for ufromfp.
+ Copyright (C) 2016-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include "nldbl-compat.h"
+
+uintmax_t
+attribute_hidden
+ufromfpl (double x, int round, unsigned int width)
+{
+ return ufromfp (x, round, width);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-ufromfpx.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-ufromfpx.c
new file mode 100644
index 0000000000..3294f00609
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-ufromfpx.c
@@ -0,0 +1,26 @@
+/* Compatibility routine for IEEE double as long double for ufromfpx.
+ Copyright (C) 2016-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include "nldbl-compat.h"
+
+uintmax_t
+attribute_hidden
+ufromfpxl (double x, int round, unsigned int width)
+{
+ return ufromfpx (x, round, width);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-vasprintf.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-vasprintf.c
new file mode 100644
index 0000000000..52fa18ccee
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-vasprintf.c
@@ -0,0 +1,9 @@
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+weak_function
+vasprintf (char **result_ptr, const char *fmt, va_list ap)
+{
+ return __nldbl_vasprintf (result_ptr, fmt, ap);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-vasprintf_chk.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-vasprintf_chk.c
new file mode 100644
index 0000000000..4f5391a9d7
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-vasprintf_chk.c
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+__vasprintf_chk (char **result_ptr, int flag, const char *fmt, va_list ap)
+{
+ return __nldbl___vasprintf_chk (result_ptr, flag, fmt, ap);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-vdprintf.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-vdprintf.c
new file mode 100644
index 0000000000..1acbd40625
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-vdprintf.c
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+vdprintf (int d, const char *fmt, va_list arg)
+{
+ return __nldbl_vdprintf (d, fmt, arg);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-vdprintf_chk.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-vdprintf_chk.c
new file mode 100644
index 0000000000..ca1ce01878
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-vdprintf_chk.c
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+__vdprintf_chk (int d, int flag, const char *fmt, va_list arg)
+{
+ return __nldbl___vdprintf_chk (d, flag, fmt, arg);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-vfprintf.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-vfprintf.c
new file mode 100644
index 0000000000..6ca8437b28
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-vfprintf.c
@@ -0,0 +1,10 @@
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+vfprintf (FILE *s, const char *fmt, va_list ap)
+{
+ return __nldbl_vfprintf (s, fmt, ap);
+}
+extern __typeof (vfprintf) _IO_vfprintf attribute_hidden;
+strong_alias (vfprintf, _IO_vfprintf)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-vfprintf_chk.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-vfprintf_chk.c
new file mode 100644
index 0000000000..0f6820af63
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-vfprintf_chk.c
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+__vfprintf_chk (FILE *s, int flag, const char *fmt, va_list ap)
+{
+ return __nldbl___vfprintf_chk (s, flag, fmt, ap);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-vfscanf.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-vfscanf.c
new file mode 100644
index 0000000000..f23465ee95
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-vfscanf.c
@@ -0,0 +1,10 @@
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+__vfscanf (FILE *s, const char *fmt, va_list ap)
+{
+ return __nldbl__IO_vfscanf (s, fmt, ap, NULL);
+}
+extern __typeof (__vfscanf) vfscanf attribute_hidden;
+weak_alias (__vfscanf, vfscanf)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-vfwprintf.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-vfwprintf.c
new file mode 100644
index 0000000000..c3fe76a971
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-vfwprintf.c
@@ -0,0 +1,9 @@
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+weak_function
+vfwprintf (FILE *s, const wchar_t *fmt, va_list ap)
+{
+ return __nldbl_vfwprintf (s, fmt, ap);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-vfwprintf_chk.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-vfwprintf_chk.c
new file mode 100644
index 0000000000..b3b69f0571
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-vfwprintf_chk.c
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+__vfwprintf_chk (FILE *s, int flag, const wchar_t *fmt, va_list ap)
+{
+ return __nldbl___vfwprintf_chk (s, flag, fmt, ap);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-vfwscanf.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-vfwscanf.c
new file mode 100644
index 0000000000..be9febc9a0
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-vfwscanf.c
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+vfwscanf (FILE *s, const wchar_t *fmt, va_list ap)
+{
+ return __nldbl_vfwscanf (s, fmt, ap);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-vprintf.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-vprintf.c
new file mode 100644
index 0000000000..ed0d27d9a0
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-vprintf.c
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+vprintf (const char *fmt, va_list ap)
+{
+ return __nldbl_vfprintf (stdout, fmt, ap);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-vprintf_chk.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-vprintf_chk.c
new file mode 100644
index 0000000000..63b3e8f965
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-vprintf_chk.c
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+__vprintf_chk (int flag, const char *fmt, va_list ap)
+{
+ return __nldbl___vfprintf_chk (stdout, flag, fmt, ap);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-vscanf.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-vscanf.c
new file mode 100644
index 0000000000..e75907b905
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-vscanf.c
@@ -0,0 +1,9 @@
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+weak_function
+vscanf (const char *fmt, va_list ap)
+{
+ return __nldbl__IO_vfscanf (stdin, fmt, ap, NULL);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-vsnprintf.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-vsnprintf.c
new file mode 100644
index 0000000000..5a9bcbcaee
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-vsnprintf.c
@@ -0,0 +1,10 @@
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+vsnprintf (char *string, size_t maxlen, const char *fmt, va_list ap)
+{
+ return __nldbl_vsnprintf (string, maxlen, fmt, ap);
+}
+extern __typeof (vsnprintf) __vsnprintf attribute_hidden;
+weak_alias (vsnprintf, __vsnprintf)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-vsnprintf_chk.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-vsnprintf_chk.c
new file mode 100644
index 0000000000..19380291a3
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-vsnprintf_chk.c
@@ -0,0 +1,9 @@
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+__vsnprintf_chk (char *string, size_t maxlen, int flag, size_t slen,
+ const char *fmt, va_list ap)
+{
+ return __nldbl___vsnprintf_chk (string, maxlen, flag, slen, fmt, ap);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-vsprintf.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-vsprintf.c
new file mode 100644
index 0000000000..04406d0f6e
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-vsprintf.c
@@ -0,0 +1,10 @@
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+_IO_vsprintf (char *string, const char *fmt, va_list ap)
+{
+ return __nldbl_vsprintf (string, fmt, ap);
+}
+extern __typeof (_IO_vsprintf) vsprintf attribute_hidden;
+weak_alias (_IO_vsprintf, vsprintf)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-vsprintf_chk.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-vsprintf_chk.c
new file mode 100644
index 0000000000..9df143fcef
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-vsprintf_chk.c
@@ -0,0 +1,9 @@
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+__vsprintf_chk (char *string, int flag, size_t slen, const char *fmt,
+ va_list ap)
+{
+ return __nldbl___vsprintf_chk (string, flag, slen, fmt, ap);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-vsscanf.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-vsscanf.c
new file mode 100644
index 0000000000..f5594c122c
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-vsscanf.c
@@ -0,0 +1,10 @@
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+__vsscanf (const char *string, const char *fmt, va_list ap)
+{
+ return __nldbl_vsscanf (string, fmt, ap);
+}
+extern __typeof (__vsscanf) vsscanf attribute_hidden;
+weak_alias (__vsscanf, vsscanf)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-vswprintf.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-vswprintf.c
new file mode 100644
index 0000000000..ff3415a072
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-vswprintf.c
@@ -0,0 +1,9 @@
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+weak_function
+vswprintf (wchar_t *string, size_t maxlen, const wchar_t *fmt, va_list ap)
+{
+ return __nldbl_vswprintf (string, maxlen, fmt, ap);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-vswprintf_chk.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-vswprintf_chk.c
new file mode 100644
index 0000000000..0cd1f96bfe
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-vswprintf_chk.c
@@ -0,0 +1,9 @@
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+__vswprintf_chk (wchar_t *string, size_t maxlen, int flag, size_t slen,
+ const wchar_t *fmt, va_list ap)
+{
+ return __nldbl___vswprintf_chk (string, maxlen, flag, slen, fmt, ap);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-vswscanf.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-vswscanf.c
new file mode 100644
index 0000000000..bd4bb5131b
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-vswscanf.c
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+vswscanf (const wchar_t *string, const wchar_t *fmt, va_list ap)
+{
+ return __nldbl_vswscanf (string, fmt, ap);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-vsyslog.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-vsyslog.c
new file mode 100644
index 0000000000..eed1010eea
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-vsyslog.c
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+attribute_hidden
+void
+vsyslog (int pri, const char *fmt, va_list ap)
+{
+ __nldbl_vsyslog (pri, fmt, ap);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-vsyslog_chk.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-vsyslog_chk.c
new file mode 100644
index 0000000000..2221474f97
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-vsyslog_chk.c
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+void
+attribute_hidden
+__vsyslog_chk (int pri, int flag, const char *fmt, va_list ap)
+{
+ __nldbl___vsyslog_chk (pri, flag, fmt, ap);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-vwprintf.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-vwprintf.c
new file mode 100644
index 0000000000..f46bdb3137
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-vwprintf.c
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+vwprintf (const wchar_t *fmt, va_list ap)
+{
+ return __nldbl_vfwprintf (stdout, fmt, ap);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-vwprintf_chk.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-vwprintf_chk.c
new file mode 100644
index 0000000000..f7e7185977
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-vwprintf_chk.c
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+__vwprintf_chk (int flag, const wchar_t *fmt, va_list ap)
+{
+ return __nldbl___vfwprintf_chk (stdout, flag, fmt, ap);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-vwscanf.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-vwscanf.c
new file mode 100644
index 0000000000..d39578ca4e
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-vwscanf.c
@@ -0,0 +1,9 @@
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+weak_function
+vwscanf (const wchar_t *fmt, va_list ap)
+{
+ return __nldbl_vfwscanf (stdin, fmt, ap);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-wcstold.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-wcstold.c
new file mode 100644
index 0000000000..dbaffaa486
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-wcstold.c
@@ -0,0 +1,10 @@
+#define wcstold wcstold_XXX
+#include "nldbl-compat.h"
+#undef wcstold
+
+double
+attribute_hidden
+wcstold (const wchar_t *nptr, wchar_t **endptr)
+{
+ return wcstod (nptr, endptr);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-wcstold_l.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-wcstold_l.c
new file mode 100644
index 0000000000..e32d13a94b
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-wcstold_l.c
@@ -0,0 +1,14 @@
+#define wcstold_l wcstold_l_XXX
+#define __wcstold_l __wcstold_l_XXX
+#include "nldbl-compat.h"
+#undef wcstold_l
+#undef __wcstold_l
+
+double
+attribute_hidden
+__wcstold_l (const wchar_t *nptr, wchar_t **endptr, __locale_t loc)
+{
+ return __wcstod_l (nptr, endptr, loc);
+}
+extern __typeof (__wcstold_l) wcstold_l attribute_hidden;
+weak_alias (__wcstold_l, wcstold_l)
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-wcstoldint.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-wcstoldint.c
new file mode 100644
index 0000000000..b638a399ad
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-wcstoldint.c
@@ -0,0 +1,10 @@
+#define __wcstold_internal __wcstold_internal_XXX
+#include "nldbl-compat.h"
+#undef __wcstold_internal
+
+double
+attribute_hidden
+__wcstold_internal (const wchar_t *nptr, wchar_t **endptr, int group)
+{
+ return __wcstod_internal (nptr, endptr, group);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-wprintf.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-wprintf.c
new file mode 100644
index 0000000000..2aa1a7475a
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-wprintf.c
@@ -0,0 +1,15 @@
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+wprintf (const wchar_t *fmt, ...)
+{
+ va_list arg;
+ int done;
+
+ va_start (arg, fmt);
+ done = __nldbl_vfwprintf (stdout, fmt, arg);
+ va_end (arg);
+
+ return done;
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-wprintf_chk.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-wprintf_chk.c
new file mode 100644
index 0000000000..39191e123b
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-wprintf_chk.c
@@ -0,0 +1,15 @@
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+__wprintf_chk (int flag, const wchar_t *fmt, ...)
+{
+ va_list arg;
+ int done;
+
+ va_start (arg, fmt);
+ done = __nldbl___vfwprintf_chk (stdout, flag, fmt, arg);
+ va_end (arg);
+
+ return done;
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-wscanf.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-wscanf.c
new file mode 100644
index 0000000000..4ee3fdc15f
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-wscanf.c
@@ -0,0 +1,15 @@
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+wscanf (const wchar_t *fmt, ...)
+{
+ va_list arg;
+ int done;
+
+ va_start (arg, fmt);
+ done = __nldbl_vfwscanf (stdin, fmt, arg);
+ va_end (arg);
+
+ return done;
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-y0.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-y0.c
new file mode 100644
index 0000000000..e35621f60f
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-y0.c
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+y0l (double x)
+{
+ return y0 (x);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-y1.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-y1.c
new file mode 100644
index 0000000000..c47abcd3c5
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-y1.c
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+y1l (double x)
+{
+ return y1 (x);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-yn.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-yn.c
new file mode 100644
index 0000000000..7623d4513b
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/nldbl-yn.c
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+ynl (int n, double x)
+{
+ return yn (n, x);
+}
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_asinh.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_asinh.c
new file mode 100644
index 0000000000..e9bcfaea62
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_asinh.c
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#include <sysdeps/ieee754/dbl-64/s_asinh.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
+compat_symbol (libm, __asinh, asinhl, GLIBC_2_0);
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_atan.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_atan.c
new file mode 100644
index 0000000000..5fbd5e62d6
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_atan.c
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#include <sysdeps/ieee754/dbl-64/s_atan.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
+compat_symbol (libm, atan, atanl, GLIBC_2_0);
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_cbrt.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_cbrt.c
new file mode 100644
index 0000000000..cdc635771e
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_cbrt.c
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#include <sysdeps/ieee754/dbl-64/s_cbrt.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
+compat_symbol (libm, __cbrt, cbrtl, GLIBC_2_0);
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_ceil.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_ceil.c
new file mode 100644
index 0000000000..6e4b70795d
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_ceil.c
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#include <sysdeps/ieee754/dbl-64/s_ceil.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
+compat_symbol (libm, __ceil, ceill, GLIBC_2_0);
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_clog10l.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_clog10l.c
new file mode 100644
index 0000000000..15dc3ed891
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_clog10l.c
@@ -0,0 +1,31 @@
+/* clog10l alias overrides for platforms where long double
+ was previously not unique.
+ Copyright (C) 2016-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#define M_DECL_FUNC(x) __clog10l_internal
+#include <math-type-macros-ldouble.h>
+
+#undef declare_mgen_alias
+#define declare_mgen_alias(from, to)
+
+#include <s_clog10_template.c>
+
+/* __clog10l is also a public symbol. */
+strong_alias (__clog10l_internal, __clog10l__internal)
+long_double_symbol (libm, __clog10l_internal, __clog10l);
+long_double_symbol (libm, __clog10l__internal, clog10l);
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_copysign.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_copysign.c
new file mode 100644
index 0000000000..f4303f5768
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_copysign.c
@@ -0,0 +1,9 @@
+#include <math_ldbl_opt.h>
+#include <sysdeps/ieee754/dbl-64/s_copysign.c>
+#if IS_IN (libm)
+# if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
+compat_symbol (libm, __copysign, copysignl, GLIBC_2_0);
+# endif
+#elif LONG_DOUBLE_COMPAT(libc, GLIBC_2_0)
+compat_symbol (libc, __copysign, copysignl, GLIBC_2_0);
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_erf.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_erf.c
new file mode 100644
index 0000000000..76f1baa5ca
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_erf.c
@@ -0,0 +1,6 @@
+#include <math_ldbl_opt.h>
+#include <sysdeps/ieee754/dbl-64/s_erf.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
+compat_symbol (libm, __erf, erfl, GLIBC_2_0);
+compat_symbol (libm, __erfc, erfcl, GLIBC_2_0);
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_expm1.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_expm1.c
new file mode 100644
index 0000000000..ef9b5956db
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_expm1.c
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#include <sysdeps/ieee754/dbl-64/s_expm1.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
+compat_symbol (libm, __expm1, expm1l, GLIBC_2_0);
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_fabs.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_fabs.c
new file mode 100644
index 0000000000..e7c92187e9
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_fabs.c
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#include <sysdeps/ieee754/dbl-64/s_fabs.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
+compat_symbol (libm, __fabs, fabsl, GLIBC_2_0);
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_finite.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_finite.c
new file mode 100644
index 0000000000..7d3ab0068d
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_finite.c
@@ -0,0 +1,18 @@
+#include <math_ldbl_opt.h>
+#include <sysdeps/ieee754/dbl-64/s_finite.c>
+weak_alias (__finite, ___finite)
+#if IS_IN (libm)
+# if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
+compat_symbol (libm, __finite, __finitel, GLIBC_2_1);
+# endif
+# if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
+compat_symbol (libm, ___finite, finitel, GLIBC_2_0);
+# endif
+#else
+# if LONG_DOUBLE_COMPAT(libc, GLIBC_2_0)
+compat_symbol (libm, __finite, __finitel, GLIBC_2_0);
+# endif
+# if LONG_DOUBLE_COMPAT(libc, GLIBC_2_0)
+compat_symbol (libc, ___finite, finitel, GLIBC_2_0);
+# endif
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_floor.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_floor.c
new file mode 100644
index 0000000000..7797944e9e
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_floor.c
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#include <sysdeps/ieee754/dbl-64/s_floor.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
+compat_symbol (libm, __floor, floorl, GLIBC_2_0);
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_fma.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_fma.c
new file mode 100644
index 0000000000..1723c5c306
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_fma.c
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#include <sysdeps/ieee754/dbl-64/s_fma.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
+compat_symbol (libm, __fma, fmal, GLIBC_2_1);
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_fmal.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_fmal.c
new file mode 100644
index 0000000000..bd12dabcbe
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_fmal.c
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <math/s_fmal.c>
+long_double_symbol (libm, __fmal, fmal);
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_frexp.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_frexp.c
new file mode 100644
index 0000000000..0e3a5e0830
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_frexp.c
@@ -0,0 +1,9 @@
+#include <math_ldbl_opt.h>
+#include <sysdeps/ieee754/dbl-64/s_frexp.c>
+#if IS_IN (libm)
+# if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
+compat_symbol (libm, __frexp, frexpl, GLIBC_2_0);
+# endif
+#elif LONG_DOUBLE_COMPAT(libc, GLIBC_2_0)
+compat_symbol (libc, __frexp, frexpl, GLIBC_2_0);
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_isinf.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_isinf.c
new file mode 100644
index 0000000000..1f760a0320
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_isinf.c
@@ -0,0 +1,8 @@
+#include <math_ldbl_opt.h>
+#include <sysdeps/ieee754/dbl-64/s_isinf.c>
+#if !IS_IN (libm)
+# if LONG_DOUBLE_COMPAT(libc, GLIBC_2_0)
+compat_symbol (libc, __isinf, __isinfl, GLIBC_2_0);
+compat_symbol (libc, isinf, isinfl, GLIBC_2_0);
+# endif
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_isnan.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_isnan.c
new file mode 100644
index 0000000000..33f57f1955
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_isnan.c
@@ -0,0 +1,8 @@
+#include <math_ldbl_opt.h>
+#include <sysdeps/ieee754/dbl-64/s_isnan.c>
+#if !IS_IN (libm)
+# if LONG_DOUBLE_COMPAT(libc, GLIBC_2_0)
+compat_symbol (libc, __isnan, __isnanl, GLIBC_2_0);
+compat_symbol (libc, isnan, isnanl, GLIBC_2_0);
+# endif
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_ldexp.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_ldexp.c
new file mode 100644
index 0000000000..809080a149
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_ldexp.c
@@ -0,0 +1,30 @@
+/* ldexp alias overrides for platforms where long double
+ was previously not unique.
+ Copyright (C) 2016-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#define M_LIBM_NEED_COMPAT(f) 0
+#include <math-type-macros-double.h>
+#include <s_ldexp_template.c>
+
+#if IS_IN (libm)
+# if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
+compat_symbol (libm, __ldexp, ldexpl, GLIBC_2_0);
+# endif
+#elif LONG_DOUBLE_COMPAT(libc, GLIBC_2_0)
+compat_symbol (libc, __ldexp, ldexpl, GLIBC_2_0);
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_ldexpl.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_ldexpl.c
new file mode 100644
index 0000000000..85f34fa2c4
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_ldexpl.c
@@ -0,0 +1,31 @@
+/* ldexpl alias overrides for platforms where long double
+ was previously not unique.
+ Copyright (C) 2016-2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#define declare_mgen_alias(f,t)
+#include <math-type-macros-ldouble.h>
+#include <s_ldexp_template.c>
+
+strong_alias (__ldexpl, __ldexpl_2)
+#if IS_IN (libm)
+long_double_symbol (libm, __ldexpl, ldexpl);
+long_double_symbol (libm, __ldexpl_2, scalbnl);
+#else
+long_double_symbol (libc, __ldexpl, ldexpl);
+long_double_symbol (libc, __ldexpl_2, scalbnl);
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_llrint.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_llrint.c
new file mode 100644
index 0000000000..e6311972e1
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_llrint.c
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#include <sysdeps/ieee754/dbl-64/s_llrint.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
+compat_symbol (libm, __llrint, llrintl, GLIBC_2_1);
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_llround.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_llround.c
new file mode 100644
index 0000000000..36c7e6edac
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_llround.c
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#include <sysdeps/ieee754/dbl-64/s_llround.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
+compat_symbol (libm, __llround, llroundl, GLIBC_2_1);
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_log1p.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_log1p.c
new file mode 100644
index 0000000000..495fa32e35
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_log1p.c
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#include <sysdeps/ieee754/dbl-64/s_log1p.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
+compat_symbol (libm, __log1p, log1pl, GLIBC_2_0);
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_logb.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_logb.c
new file mode 100644
index 0000000000..4d7a6db275
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_logb.c
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#include <sysdeps/ieee754/dbl-64/s_logb.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
+compat_symbol (libm, __logb, logbl, GLIBC_2_0);
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_lrint.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_lrint.c
new file mode 100644
index 0000000000..b7af812846
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_lrint.c
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#include <sysdeps/ieee754/dbl-64/s_lrint.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
+compat_symbol (libm, __lrint, lrintl, GLIBC_2_1);
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_lround.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_lround.c
new file mode 100644
index 0000000000..f3a27fa9c9
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_lround.c
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#include <sysdeps/ieee754/dbl-64/s_lround.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
+compat_symbol (libm, __lround, lroundl, GLIBC_2_1);
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_modf.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_modf.c
new file mode 100644
index 0000000000..93acb43ae6
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_modf.c
@@ -0,0 +1,9 @@
+#include <math_ldbl_opt.h>
+#include <sysdeps/ieee754/dbl-64/s_modf.c>
+#if IS_IN (libm)
+# if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
+compat_symbol (libm, __modf, modfl, GLIBC_2_0);
+# endif
+#elif LONG_DOUBLE_COMPAT(libc, GLIBC_2_0)
+compat_symbol (libc, __modf, modfl, GLIBC_2_0);
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_nearbyint.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_nearbyint.c
new file mode 100644
index 0000000000..a8b7973acd
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_nearbyint.c
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#include <sysdeps/ieee754/dbl-64/s_nearbyint.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
+compat_symbol (libm, __nearbyint, nearbyintl, GLIBC_2_1);
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_nextafter.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_nextafter.c
new file mode 100644
index 0000000000..78e2c0ff37
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_nextafter.c
@@ -0,0 +1,12 @@
+#include <math_ldbl_opt.h>
+#include <math/s_nextafter.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
+compat_symbol (libm, __nextafter, nextafterl, GLIBC_2_0);
+#endif
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
+strong_alias (__nextafter, __nexttowardd)
+strong_alias (__nextafter, __nexttowardld)
+#undef nexttoward
+compat_symbol (libm, __nexttowardd, nexttoward, GLIBC_2_1);
+compat_symbol (libm, __nexttowardld, nexttowardl, GLIBC_2_1);
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_nexttowardfd.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_nexttowardfd.c
new file mode 100644
index 0000000000..07e9375b78
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_nexttowardfd.c
@@ -0,0 +1,81 @@
+/* Single precision version of nexttoward.c.
+ Conversion to IEEE single float by Jakub Jelinek, jj@ultra.linux.cz. */
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+/* IEEE functions
+ * __nexttowardfd(x,y)
+ * return the next machine floating-point number of x in the
+ * direction toward y.
+ * This is for machines which use different binary type for double and
+ * long double conditionally, y is long double equal to double.
+ * Special cases:
+ */
+
+#include <errno.h>
+#include <math.h>
+#include <math_private.h>
+#include <math_ldbl_opt.h>
+#include <float.h>
+
+float __nldbl_nexttowardf(float x, double y);
+
+float __nldbl_nexttowardf(float x, double y)
+{
+ int32_t hx,hy,ix,iy;
+ u_int32_t ly;
+
+ GET_FLOAT_WORD(hx,x);
+ EXTRACT_WORDS(hy,ly,y);
+ ix = hx&0x7fffffff; /* |x| */
+ iy = hy&0x7fffffff; /* |y| */
+
+ if((ix>0x7f800000) || /* x is nan */
+ ((iy>=0x7ff00000)&&((iy-0x7ff00000)|ly)!=0)) /* y is nan */
+ return x+y;
+ if((double) x==y) return y; /* x=y, return y */
+ if(ix==0) { /* x == 0 */
+ float u;
+ SET_FLOAT_WORD(x,(u_int32_t)(hy&0x80000000)|1);/* return +-minsub*/
+ u = math_opt_barrier (x);
+ u = u * u;
+ math_force_eval (u); /* raise underflow flag */
+ return x;
+ }
+ if(hx>=0) { /* x > 0 */
+ if(x > y) /* x -= ulp */
+ hx -= 1;
+ else /* x < y, x += ulp */
+ hx += 1;
+ } else { /* x < 0 */
+ if(x < y) /* x -= ulp */
+ hx -= 1;
+ else /* x > y, x += ulp */
+ hx += 1;
+ }
+ hy = hx&0x7f800000;
+ if(hy>=0x7f800000) {
+ float u = x+x; /* overflow */
+ math_force_eval (u);
+ __set_errno (ERANGE);
+ }
+ if(hy<0x00800000) {
+ float u = x*x; /* underflow */
+ math_force_eval (u); /* raise underflow flag */
+ __set_errno (ERANGE);
+ }
+ SET_FLOAT_WORD(x,hx);
+ return x;
+}
+
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
+compat_symbol (libm, __nldbl_nexttowardf, nexttowardf, GLIBC_2_1);
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_remquo.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_remquo.c
new file mode 100644
index 0000000000..9f3d7ba368
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_remquo.c
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#include <sysdeps/ieee754/dbl-64/s_remquo.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
+compat_symbol (libm, __remquo, remquol, GLIBC_2_1);
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_rint.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_rint.c
new file mode 100644
index 0000000000..d9b156ea27
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_rint.c
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#include <sysdeps/ieee754/dbl-64/s_rint.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
+compat_symbol (libm, __rint, rintl, GLIBC_2_0);
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_round.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_round.c
new file mode 100644
index 0000000000..edff2f017b
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_round.c
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#include <sysdeps/ieee754/dbl-64/s_round.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
+compat_symbol (libm, __round, roundl, GLIBC_2_1);
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_scalbln.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_scalbln.c
new file mode 100644
index 0000000000..391142b769
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_scalbln.c
@@ -0,0 +1,9 @@
+#include <math_ldbl_opt.h>
+#include <sysdeps/ieee754/dbl-64/s_scalbln.c>
+#if IS_IN (libm)
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
+compat_symbol (libm, __scalbln, scalblnl, GLIBC_2_1);
+#endif
+#elif LONG_DOUBLE_COMPAT(libc, GLIBC_2_1)
+compat_symbol (libc, __scalbln, scalblnl, GLIBC_2_1);
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_scalbn.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_scalbn.c
new file mode 100644
index 0000000000..1ad81b199e
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_scalbn.c
@@ -0,0 +1,9 @@
+#include <math_ldbl_opt.h>
+#include <sysdeps/ieee754/dbl-64/s_scalbn.c>
+#if IS_IN (libm)
+# if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
+compat_symbol (libm, __scalbn, scalbnl, GLIBC_2_0);
+# endif
+#elif LONG_DOUBLE_COMPAT(libc, GLIBC_2_0)
+compat_symbol (libc, __scalbn, scalbnl, GLIBC_2_0);
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_significand.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_significand.c
new file mode 100644
index 0000000000..5287c09066
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_significand.c
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#include <math/s_significand.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
+compat_symbol (libm, __significand, significandl, GLIBC_2_0);
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_significandl.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_significandl.c
new file mode 100644
index 0000000000..9339b4780d
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_significandl.c
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <math/s_significandl.c>
+long_double_symbol (libm, __significandl, significandl);
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_sin.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_sin.c
new file mode 100644
index 0000000000..6932ccc080
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_sin.c
@@ -0,0 +1,15 @@
+/* dbl-64/s_sin.c uses NAN and sincos identifiers internally. */
+#define sincos sincos_disable
+/* These definitions needed for proper unfolding of __MATHDECL_VEC. */
+#define __DECL_SIMD_sincos_disable
+#define __DECL_SIMD_sincos_disablef
+#define __DECL_SIMD_sincos_disablel
+#define __DECL_SIMD_sincos_disablef128
+#include <math_ldbl_opt.h>
+#undef NAN
+#undef sincos
+#include <sysdeps/ieee754/dbl-64/s_sin.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
+compat_symbol (libm, __sin, sinl, GLIBC_2_0);
+compat_symbol (libm, __cos, cosl, GLIBC_2_0);
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_sincos.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_sincos.c
new file mode 100644
index 0000000000..6d2a48f25b
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_sincos.c
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#include <sysdeps/ieee754/dbl-64/s_sincos.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
+compat_symbol (libm, __sincos, sincosl, GLIBC_2_1);
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_tan.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_tan.c
new file mode 100644
index 0000000000..6b0fec0063
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_tan.c
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#include <sysdeps/ieee754/dbl-64/s_tan.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
+compat_symbol (libm, tan, tanl, GLIBC_2_0);
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_tanh.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_tanh.c
new file mode 100644
index 0000000000..e763bbde77
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_tanh.c
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#include <sysdeps/ieee754/dbl-64/s_tanh.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
+compat_symbol (libm, __tanh, tanhl, GLIBC_2_0);
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_trunc.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_trunc.c
new file mode 100644
index 0000000000..9d90a2bd73
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/s_trunc.c
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#include <sysdeps/ieee754/dbl-64/s_trunc.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
+compat_symbol (libm, __trunc, truncl, GLIBC_2_1);
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_acos_compat.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_acos_compat.c
new file mode 100644
index 0000000000..1e6d1b37ec
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_acos_compat.c
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#include <math/w_acos_compat.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
+compat_symbol (libm, __acos, acosl, GLIBC_2_0);
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_acosh_compat.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_acosh_compat.c
new file mode 100644
index 0000000000..40da339a7a
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_acosh_compat.c
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#include <math/w_acosh_compat.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
+compat_symbol (libm, __acosh, acoshl, GLIBC_2_0);
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_acoshl_compat.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_acoshl_compat.c
new file mode 100644
index 0000000000..df4338d9fa
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_acoshl_compat.c
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <math/w_acoshl_compat.c>
+long_double_symbol (libm, __acoshl, acoshl);
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_acosl_compat.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_acosl_compat.c
new file mode 100644
index 0000000000..5efc99024c
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_acosl_compat.c
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <math/w_acosl_compat.c>
+long_double_symbol (libm, __acosl, acosl);
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_asin_compat.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_asin_compat.c
new file mode 100644
index 0000000000..1c52cc22ad
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_asin_compat.c
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#include <math/w_asin_compat.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
+compat_symbol (libm, __asin, asinl, GLIBC_2_0);
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_asinl_compat.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_asinl_compat.c
new file mode 100644
index 0000000000..087fab25bb
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_asinl_compat.c
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <math/w_asinl_compat.c>
+long_double_symbol (libm, __asinl, asinl);
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_atan2_compat.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_atan2_compat.c
new file mode 100644
index 0000000000..d3f7964d7c
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_atan2_compat.c
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#include <math/w_atan2_compat.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
+compat_symbol (libm, __atan2, atan2l, GLIBC_2_0);
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_atan2l_compat.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_atan2l_compat.c
new file mode 100644
index 0000000000..6b12209625
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_atan2l_compat.c
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <math/w_atan2l_compat.c>
+long_double_symbol (libm, __atan2l, atan2l);
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_atanh_compat.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_atanh_compat.c
new file mode 100644
index 0000000000..e15ef1f93d
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_atanh_compat.c
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#include <math/w_atanh_compat.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
+compat_symbol (libm, __atanh, atanhl, GLIBC_2_0);
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_atanhl_compat.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_atanhl_compat.c
new file mode 100644
index 0000000000..49bae1ee8f
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_atanhl_compat.c
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <math/w_atanhl_compat.c>
+long_double_symbol (libm, __atanhl, atanhl);
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_cosh_compat.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_cosh_compat.c
new file mode 100644
index 0000000000..af29735e10
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_cosh_compat.c
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#include <math/w_cosh_compat.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
+compat_symbol (libm, __cosh, coshl, GLIBC_2_0);
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_coshl_compat.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_coshl_compat.c
new file mode 100644
index 0000000000..a8808778ba
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_coshl_compat.c
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <math/w_coshl_compat.c>
+long_double_symbol (libm, __coshl, coshl);
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_exp10_compat.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_exp10_compat.c
new file mode 100644
index 0000000000..142a70bcd6
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_exp10_compat.c
@@ -0,0 +1,6 @@
+#include <math_ldbl_opt.h>
+#include <math/w_exp10_compat.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
+compat_symbol (libm, __exp10, exp10l, GLIBC_2_1);
+compat_symbol (libm, __pow10, pow10l, GLIBC_2_1);
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_exp10l_compat.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_exp10l_compat.c
new file mode 100644
index 0000000000..8f2ccd3441
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_exp10l_compat.c
@@ -0,0 +1,6 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <math/w_exp10l_compat.c>
+long_double_symbol (libm, __exp10l, exp10l);
+long_double_symbol (libm, __pow10l, pow10l);
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_exp_compat.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_exp_compat.c
new file mode 100644
index 0000000000..686c9c26d0
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_exp_compat.c
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#include <sysdeps/ieee754/dbl-64/w_exp_compat.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
+compat_symbol (libm, __exp, expl, GLIBC_2_0);
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_fmod_compat.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_fmod_compat.c
new file mode 100644
index 0000000000..9280d39d70
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_fmod_compat.c
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#include <math/w_fmod_compat.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
+compat_symbol (libm, __fmod, fmodl, GLIBC_2_0);
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_fmodl_compat.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_fmodl_compat.c
new file mode 100644
index 0000000000..88fe0ac4d2
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_fmodl_compat.c
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <math/w_fmodl_compat.c>
+long_double_symbol (libm, __fmodl, fmodl);
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_hypot_compat.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_hypot_compat.c
new file mode 100644
index 0000000000..b3979ff0f4
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_hypot_compat.c
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#include <math/w_hypot_compat.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
+compat_symbol (libm, __hypot, hypotl, GLIBC_2_0);
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_hypotl_compat.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_hypotl_compat.c
new file mode 100644
index 0000000000..68e3997489
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_hypotl_compat.c
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <math/w_hypotl_compat.c>
+long_double_symbol (libm, __hypotl, hypotl);
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_j0_compat.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_j0_compat.c
new file mode 100644
index 0000000000..45b4d14764
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_j0_compat.c
@@ -0,0 +1,6 @@
+#include <math_ldbl_opt.h>
+#include <math/w_j0_compat.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
+compat_symbol (libm, j0, j0l, GLIBC_2_0);
+compat_symbol (libm, y0, y0l, GLIBC_2_0);
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_j0l_compat.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_j0l_compat.c
new file mode 100644
index 0000000000..9050657e03
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_j0l_compat.c
@@ -0,0 +1,6 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <math/w_j0l_compat.c>
+long_double_symbol (libm, __j0l, j0l);
+long_double_symbol (libm, __y0l, y0l);
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_j1_compat.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_j1_compat.c
new file mode 100644
index 0000000000..1071c8fd6a
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_j1_compat.c
@@ -0,0 +1,6 @@
+#include <math_ldbl_opt.h>
+#include <math/w_j1_compat.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
+compat_symbol (libm, j1, j1l, GLIBC_2_0);
+compat_symbol (libm, y1, y1l, GLIBC_2_0);
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_j1l_compat.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_j1l_compat.c
new file mode 100644
index 0000000000..4ed9e2dd12
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_j1l_compat.c
@@ -0,0 +1,6 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <math/w_j1l_compat.c>
+long_double_symbol (libm, __j1l, j1l);
+long_double_symbol (libm, __y1l, y1l);
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_jn_compat.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_jn_compat.c
new file mode 100644
index 0000000000..be29a36041
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_jn_compat.c
@@ -0,0 +1,6 @@
+#include <math_ldbl_opt.h>
+#include <math/w_jn_compat.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
+compat_symbol (libm, jn, jnl, GLIBC_2_0);
+compat_symbol (libm, yn, ynl, GLIBC_2_0);
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_jnl_compat.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_jnl_compat.c
new file mode 100644
index 0000000000..d22ee54997
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_jnl_compat.c
@@ -0,0 +1,6 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <math/w_jnl_compat.c>
+long_double_symbol (libm, __jnl, jnl);
+long_double_symbol (libm, __ynl, ynl);
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_lgamma_compat.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_lgamma_compat.c
new file mode 100644
index 0000000000..f268e65a88
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_lgamma_compat.c
@@ -0,0 +1,7 @@
+#include <math_ldbl_opt.h>
+#include <math/w_lgamma_compat.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
+strong_alias (__lgamma_compat, __lgammal_dbl_compat)
+compat_symbol (libm, __lgammal_dbl_compat, lgammal, GLIBC_2_0);
+compat_symbol (libm, __gamma, gammal, GLIBC_2_0);
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_lgamma_compatl.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_lgamma_compatl.c
new file mode 100644
index 0000000000..f60b3d7bcf
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_lgamma_compatl.c
@@ -0,0 +1,11 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#define USE_AS_COMPAT 1
+#include <math/lgamma-compat.h>
+#undef LGAMMA_OLD_VER
+#define LGAMMA_OLD_VER LONG_DOUBLE_COMPAT_VERSION
+#include <math/w_lgamma_compatl.c>
+#if GAMMA_ALIAS
+long_double_symbol (libm, __gammal, gammal);
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_lgamma_r_compat.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_lgamma_r_compat.c
new file mode 100644
index 0000000000..673954cd1a
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_lgamma_r_compat.c
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#include <math/w_lgamma_r_compat.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
+compat_symbol (libm, __lgamma_r, lgammal_r, GLIBC_2_0);
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_lgammal_r_compat.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_lgammal_r_compat.c
new file mode 100644
index 0000000000..6fdf2bba87
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_lgammal_r_compat.c
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <math/w_lgammal_r_compat.c>
+long_double_symbol (libm, __lgammal_r, lgammal_r);
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_log10_compat.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_log10_compat.c
new file mode 100644
index 0000000000..5ec6a2b2b6
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_log10_compat.c
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#include <math/w_log10_compat.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
+compat_symbol (libm, __log10, log10l, GLIBC_2_0);
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_log10l_compat.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_log10l_compat.c
new file mode 100644
index 0000000000..17de3e7856
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_log10l_compat.c
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <math/w_log10l_compat.c>
+long_double_symbol (libm, __log10l, log10l);
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_log2_compat.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_log2_compat.c
new file mode 100644
index 0000000000..dffd2c183e
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_log2_compat.c
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#include <math/w_log2_compat.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
+compat_symbol (libm, __log2, log2l, GLIBC_2_1);
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_log2l_compat.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_log2l_compat.c
new file mode 100644
index 0000000000..3c5e734573
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_log2l_compat.c
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <math/w_log2l_compat.c>
+long_double_symbol (libm, __log2l, log2l);
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_log_compat.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_log_compat.c
new file mode 100644
index 0000000000..d2a2bcadde
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_log_compat.c
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#include <math/w_log_compat.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
+compat_symbol (libm, __log, logl, GLIBC_2_0);
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_logl_compat.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_logl_compat.c
new file mode 100644
index 0000000000..2b55842139
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_logl_compat.c
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <math/w_logl_compat.c>
+long_double_symbol (libm, __logl, logl);
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_pow_compat.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_pow_compat.c
new file mode 100644
index 0000000000..c2a7942019
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_pow_compat.c
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#include <math/w_pow_compat.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
+compat_symbol (libm, __pow, powl, GLIBC_2_0);
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_powl_compat.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_powl_compat.c
new file mode 100644
index 0000000000..1897cf1c63
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_powl_compat.c
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <math/w_powl_compat.c>
+long_double_symbol (libm, __powl, powl);
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_remainder_compat.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_remainder_compat.c
new file mode 100644
index 0000000000..c823dcb8e7
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_remainder_compat.c
@@ -0,0 +1,7 @@
+#include <math_ldbl_opt.h>
+#include <math/w_remainder_compat.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
+compat_symbol (libm, __remainder, remainderl, GLIBC_2_0);
+strong_alias (__remainder, __drem)
+compat_symbol (libm, __drem, dreml, GLIBC_2_0);
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_remainderl_compat.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_remainderl_compat.c
new file mode 100644
index 0000000000..b2ce5c9563
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_remainderl_compat.c
@@ -0,0 +1,7 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <math/w_remainderl_compat.c>
+long_double_symbol (libm, __remainderl, remainderl);
+strong_alias (__remainderl, __dreml)
+long_double_symbol (libm, __dreml, dreml);
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_scalb_compat.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_scalb_compat.c
new file mode 100644
index 0000000000..f6d53a5ba5
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_scalb_compat.c
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#include <math/w_scalb_compat.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
+compat_symbol (libm, __scalb, scalbl, GLIBC_2_0);
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_scalbl_compat.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_scalbl_compat.c
new file mode 100644
index 0000000000..c8feb654a2
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_scalbl_compat.c
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <math/w_scalbl_compat.c>
+long_double_symbol (libm, __scalbl, scalbl);
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_sinh_compat.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_sinh_compat.c
new file mode 100644
index 0000000000..b47182c017
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_sinh_compat.c
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#include <math/w_sinh_compat.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
+compat_symbol (libm, __sinh, sinhl, GLIBC_2_0);
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_sinhl_compat.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_sinhl_compat.c
new file mode 100644
index 0000000000..305ed82357
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_sinhl_compat.c
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <math/w_sinhl_compat.c>
+long_double_symbol (libm, __sinhl, sinhl);
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_sqrt_compat.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_sqrt_compat.c
new file mode 100644
index 0000000000..355d1c20db
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_sqrt_compat.c
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#include <math/w_sqrt_compat.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
+compat_symbol (libm, __sqrt, sqrtl, GLIBC_2_0);
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_sqrtl_compat.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_sqrtl_compat.c
new file mode 100644
index 0000000000..1e4526f2c6
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_sqrtl_compat.c
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <math/w_sqrtl_compat.c>
+long_double_symbol (libm, __sqrtl, sqrtl);
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_tgamma_compat.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_tgamma_compat.c
new file mode 100644
index 0000000000..082ce8aaff
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_tgamma_compat.c
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#include <math/w_tgamma_compat.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
+compat_symbol (libm, __tgamma, tgammal, GLIBC_2_1);
+#endif
diff --git a/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_tgammal_compat.c b/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_tgammal_compat.c
new file mode 100644
index 0000000000..aaf5403522
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/ldbl-opt/w_tgammal_compat.c
@@ -0,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <math/w_tgammal_compat.c>
+long_double_symbol (libm, __tgammal, tgammal);
diff --git a/REORG.TODO/sysdeps/ieee754/s_lib_version.c b/REORG.TODO/sysdeps/ieee754/s_lib_version.c
new file mode 100644
index 0000000000..bb59300953
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/s_lib_version.c
@@ -0,0 +1,41 @@
+/* @(#)s_lib_ver.c 5.1 93/09/24 */
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: s_lib_version.c,v 1.6 1995/05/10 20:47:44 jtc Exp $";
+#endif
+
+/*
+ * MACRO for standards
+ */
+
+#include <math.h>
+#include <math_private.h>
+
+/*
+ * define and initialize _LIB_VERSION
+ */
+#ifdef _POSIX_MODE
+_LIB_VERSION_TYPE _LIB_VERSION_INTERNAL = _POSIX_;
+#else
+#ifdef _XOPEN_MODE
+_LIB_VERSION_TYPE _LIB_VERSION_INTERNAL = _XOPEN_;
+#else
+#ifdef _SVID3_MODE
+_LIB_VERSION_TYPE _LIB_VERSION_INTERNAL = _SVID_;
+#else /* default _IEEE_MODE */
+_LIB_VERSION_TYPE _LIB_VERSION_INTERNAL = _IEEE_;
+#endif
+#endif
+#endif
+
+weak_alias (_LIB_VERSION_INTERNAL, _LIB_VERSION)
diff --git a/REORG.TODO/sysdeps/ieee754/s_matherr.c b/REORG.TODO/sysdeps/ieee754/s_matherr.c
new file mode 100644
index 0000000000..d5dc6f122d
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/s_matherr.c
@@ -0,0 +1,28 @@
+/* @(#)s_matherr.c 5.1 93/09/24 */
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: s_matherr.c,v 1.6 1995/05/10 20:47:53 jtc Exp $";
+#endif
+
+#include <math.h>
+#include <math_private.h>
+
+int
+weak_function
+__matherr(struct exception *x)
+{
+ int n=0;
+ if(x->arg1!=x->arg1) return 0;
+ return n;
+}
+weak_alias (__matherr, matherr)
diff --git a/REORG.TODO/sysdeps/ieee754/s_signgam.c b/REORG.TODO/sysdeps/ieee754/s_signgam.c
new file mode 100644
index 0000000000..9af3a75f1e
--- /dev/null
+++ b/REORG.TODO/sysdeps/ieee754/s_signgam.c
@@ -0,0 +1,4 @@
+#include <math.h>
+#include <math_private.h>
+int __signgam = 0;
+weak_alias (__signgam, signgam)