From 901f399036a25e35a7931af6209a327c21dd4dcf Mon Sep 17 00:00:00 2001 From: Ingo Weinhold Date: Sat, 10 Dec 2005 20:39:04 +0000 Subject: [PATCH] * Removed libroot/posix/math completely and added the respective functions from glibc 2.3.2. Adding those one by one is extremely boring and time-consuming work. We should probably just remove the math stuff again, add a verbatim copy of the glibc directories, and shuffle things around afterwards. * Note that for x86 holds sizeof(long double) == 96. I removed the generic 128 bit long double functions that were in use before and added respective 96 bit versions to arch/x86 (or left them out, if they weren't used). For PPC the System V ABI spec supplement specifies sizeof(long double) == 128, but I had trouble configuring gcc to actually use that setting (looks like there simply is no support for TI mode for PPC 32). So we have to live with sizeof(long double) == sizeof(double) == 64 for the time being. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15477 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/system/libroot/Jamfile | 2 - src/system/libroot/posix/Jamfile | 1 - .../posix/glibc/arch/generic/asincos.tbl | 5169 ++++++++ .../posix/glibc/arch/generic/branred.c | 144 + .../posix/glibc/arch/generic/branred.h | 80 + .../libroot/posix/glibc/arch/generic/doasin.c | 76 + .../libroot/posix/glibc/arch/generic/doasin.h | 64 + .../posix/glibc/arch/generic/dosincos.c | 189 + .../posix/glibc/arch/generic/dosincos.h | 81 + .../posix/glibc/arch/generic/e_acosh.c | 69 + .../posix/glibc/arch/generic/e_acoshf.c | 57 + .../libroot/posix/glibc/arch/generic/e_asin.c | 637 + .../posix/glibc/arch/generic/e_asinf.c | 110 + .../posix/glibc/arch/generic/e_atanh.c | 74 + .../posix/glibc/arch/generic/e_atanhf.c | 58 + .../libroot/posix/glibc/arch/generic/e_cosh.c | 92 + .../posix/glibc/arch/generic/e_coshf.c | 72 + .../libroot/posix/glibc/arch/generic/e_exp.c | 252 + .../libroot/posix/glibc/arch/generic/e_expf.c | 140 + .../posix/glibc/arch/generic/e_gamma_r.c | 57 + .../posix/glibc/arch/generic/e_gammaf_r.c | 56 + .../posix/glibc/arch/generic/e_hypot.c | 128 + .../posix/glibc/arch/generic/e_hypotf.c | 87 + .../libroot/posix/glibc/arch/generic/e_j0.c | 529 + .../libroot/posix/glibc/arch/generic/e_j0f.c | 442 + .../libroot/posix/glibc/arch/generic/e_j1.c | 530 + .../libroot/posix/glibc/arch/generic/e_j1f.c | 442 + .../libroot/posix/glibc/arch/generic/e_jn.c | 287 + .../libroot/posix/glibc/arch/generic/e_jnf.c | 212 + .../posix/glibc/arch/generic/e_lgamma_r.c | 312 + .../posix/glibc/arch/generic/e_lgammaf_r.c | 248 + .../libroot/posix/glibc/arch/generic/e_log.c | 203 + .../posix/glibc/arch/generic/e_log10.c | 98 + .../posix/glibc/arch/generic/e_log10f.c | 67 + .../libroot/posix/glibc/arch/generic/e_logf.c | 99 + .../libroot/posix/glibc/arch/generic/e_pow.c | 388 + .../libroot/posix/glibc/arch/generic/e_powf.c | 257 + .../posix/glibc/arch/generic/e_rem_pio2f.c | 196 + .../posix/glibc/arch/generic/e_remainder.c | 130 + .../posix/glibc/arch/generic/e_remainderf.c | 73 + .../posix/glibc/arch/generic/e_scalb.c | 71 + .../posix/glibc/arch/generic/e_scalbf.c | 68 + .../libroot/posix/glibc/arch/generic/e_sinh.c | 86 + .../posix/glibc/arch/generic/e_sinhf.c | 68 + .../posix/glibc/arch/generic/halfulp.c | 123 + .../libroot/posix/glibc/arch/generic/k_cos.c | 1 + .../libroot/posix/glibc/arch/generic/k_cosf.c | 64 + .../posix/glibc/arch/generic/k_rem_pio2.c | 320 + .../posix/glibc/arch/generic/k_rem_pio2f.c | 213 + .../libroot/posix/glibc/arch/generic/k_sin.c | 1 + .../libroot/posix/glibc/arch/generic/k_sinf.c | 54 + .../libroot/posix/glibc/arch/generic/k_tan.c | 145 + .../libroot/posix/glibc/arch/generic/k_tanf.c | 101 + .../libroot/posix/glibc/arch/generic/mpexp.c | 105 + .../libroot/posix/glibc/arch/generic/mpexp.h | 158 + .../libroot/posix/glibc/arch/generic/mplog.c | 72 + .../libroot/posix/glibc/arch/generic/mplog.h | 45 + .../libroot/posix/glibc/arch/generic/mptan.c | 60 + .../libroot/posix/glibc/arch/generic/mydefs.h | 38 + .../posix/glibc/arch/generic/powtwo.tbl | 32 + .../libroot/posix/glibc/arch/generic/root.tbl | 58 + .../posix/glibc/arch/generic/s_asinh.c | 70 + .../posix/glibc/arch/generic/s_asinhf.c | 58 + .../libroot/posix/glibc/arch/generic/s_cbrt.c | 76 + .../posix/glibc/arch/generic/s_cbrtf.c | 64 + .../libroot/posix/glibc/arch/generic/s_cos.c | 1 + .../libroot/posix/glibc/arch/generic/s_cosf.c | 60 + .../libroot/posix/glibc/arch/generic/s_erf.c | 431 + .../libroot/posix/glibc/arch/generic/s_erff.c | 225 + .../posix/glibc/arch/generic/s_expm1.c | 243 + .../posix/glibc/arch/generic/s_expm1f.c | 135 + .../posix/glibc/arch/generic/s_frexp.c | 64 + .../posix/glibc/arch/generic/s_frexpf.c | 53 + .../posix/glibc/arch/generic/s_isinf.c | 33 + .../posix/glibc/arch/generic/s_isinff.c | 29 + .../posix/glibc/arch/generic/s_isnan.c | 44 + .../posix/glibc/arch/generic/s_isnanf.c | 42 + .../posix/glibc/arch/generic/s_ldexp.c | 37 + .../posix/glibc/arch/generic/s_ldexpf.c | 37 + .../posix/glibc/arch/generic/s_log1p.c | 191 + .../posix/glibc/arch/generic/s_log1pf.c | 115 + .../posix/glibc/arch/generic/s_modfl.c | 88 - .../libroot/posix/glibc/arch/generic/s_nan.c | 44 + .../libroot/posix/glibc/arch/generic/s_nanf.c | 40 + .../posix/glibc/arch/generic/s_round.c | 97 + .../posix/glibc/arch/generic/s_roundf.c | 73 + .../generic/{s_fpclassifyl.c => s_signbit.c} | 27 +- .../posix/glibc/arch/generic/s_signbitf.c | 32 + .../posix/glibc/arch/generic/s_signgam.c | 3 + .../libroot/posix/glibc/arch/generic/s_sin.c | 1129 ++ .../posix/glibc/arch/generic/s_sincos.c | 51 + .../posix/glibc/arch/generic/s_sincosf.c | 74 + .../libroot/posix/glibc/arch/generic/s_sinf.c | 54 + .../libroot/posix/glibc/arch/generic/s_tan.c | 486 + .../libroot/posix/glibc/arch/generic/s_tanf.c | 49 + .../libroot/posix/glibc/arch/generic/s_tanh.c | 93 + .../posix/glibc/arch/generic/s_tanhf.c | 67 + .../posix/glibc/arch/generic/sincos.tbl | 912 ++ .../posix/glibc/arch/generic/sincos32.c | 352 + .../posix/glibc/arch/generic/sincos32.h | 82 + .../posix/glibc/arch/generic/slowexp.c | 66 + .../posix/glibc/arch/generic/slowpow.c | 74 + .../libroot/posix/glibc/arch/generic/t_exp.c | 436 + .../libroot/posix/glibc/arch/generic/uasncs.h | 70 + .../libroot/posix/glibc/arch/generic/uexp.h | 70 + .../libroot/posix/glibc/arch/generic/uexp.tbl | 1787 +++ .../libroot/posix/glibc/arch/generic/ulog.h | 200 + .../libroot/posix/glibc/arch/generic/ulog.tbl | 3327 +++++ .../libroot/posix/glibc/arch/generic/upow.h | 81 + .../libroot/posix/glibc/arch/generic/upow.tbl | 10189 ++++++++++++++++ .../libroot/posix/glibc/arch/generic/urem.h | 51 + .../libroot/posix/glibc/arch/generic/usncs.h | 80 + .../libroot/posix/glibc/arch/generic/utan.h | 280 + .../libroot/posix/glibc/arch/generic/utan.tbl | 1526 +++ .../libroot/posix/glibc/arch/generic/w_acos.c | 48 + .../posix/glibc/arch/generic/w_acosf.c | 48 + .../posix/glibc/arch/generic/w_acosh.c | 47 + .../posix/glibc/arch/generic/w_acoshf.c | 48 + .../posix/glibc/arch/generic/w_atanh.c | 52 + .../posix/glibc/arch/generic/w_atanhf.c | 53 + .../libroot/posix/glibc/arch/generic/w_cosh.c | 47 + .../posix/glibc/arch/generic/w_coshf.c | 47 + .../libroot/posix/glibc/arch/generic/w_drem.c | 20 + .../posix/glibc/arch/generic/w_dremf.c | 17 + .../libroot/posix/glibc/arch/generic/w_exp.c | 58 + .../libroot/posix/glibc/arch/generic/w_expf.c | 59 + .../posix/glibc/arch/generic/w_fmodl.c | 48 - .../libroot/posix/glibc/arch/generic/w_j0.c | 76 + .../libroot/posix/glibc/arch/generic/w_j0f.c | 74 + .../libroot/posix/glibc/arch/generic/w_j1.c | 77 + .../libroot/posix/glibc/arch/generic/w_j1f.c | 75 + .../libroot/posix/glibc/arch/generic/w_jn.c | 99 + .../libroot/posix/glibc/arch/generic/w_jnf.c | 71 + .../posix/glibc/arch/generic/w_lgamma.c | 60 + .../posix/glibc/arch/generic/w_lgamma_r.c | 51 + .../posix/glibc/arch/generic/w_lgammaf.c | 53 + .../posix/glibc/arch/generic/w_lgammaf_r.c | 52 + .../libroot/posix/glibc/arch/generic/w_log.c | 48 + .../posix/glibc/arch/generic/w_log10.c | 51 + .../posix/glibc/arch/generic/w_log10f.c | 52 + .../libroot/posix/glibc/arch/generic/w_logf.c | 49 + .../libroot/posix/glibc/arch/generic/w_pow.c | 70 + .../libroot/posix/glibc/arch/generic/w_powf.c | 77 + .../posix/glibc/arch/generic/w_remainder.c | 47 + .../posix/glibc/arch/generic/w_remainderf.c | 47 + .../posix/glibc/arch/generic/w_scalb.c | 65 + .../posix/glibc/arch/generic/w_scalbf.c | 66 + .../libroot/posix/glibc/arch/generic/w_sinh.c | 47 + .../posix/glibc/arch/generic/w_sinhf.c | 47 + .../libroot/posix/glibc/arch/generic/w_sqrt.c | 47 + .../posix/glibc/arch/generic/w_sqrtf.c | 47 + .../libroot/posix/glibc/arch/ppc/Jamfile | 121 +- .../libroot/posix/glibc/arch/ppc/e_sqrt.c | 1 + .../posix/glibc/arch/ppc/feholdexcpt.c | 38 + .../libroot/posix/glibc/arch/ppc/fesetenv.c | 39 + .../libroot/posix/glibc/arch/ppc/fesetround.c | 41 + .../libroot/posix/glibc/arch/ppc/s_isnan.c | 63 + .../libroot/posix/glibc/arch/ppc/s_isnanf.S | 1 + .../libroot/posix/glibc/arch/x86/Jamfile | 136 +- .../libroot/posix/glibc/arch/x86/e_acosf.S | 22 + .../libroot/posix/glibc/arch/x86/e_acosh.S | 105 + .../libroot/posix/glibc/arch/x86/e_acoshf.S | 105 + .../libroot/posix/glibc/arch/x86/e_acoshl.S | 112 + .../libroot/posix/glibc/arch/x86/e_acosl.c | 25 + .../libroot/posix/glibc/arch/x86/e_asin.S | 20 + .../libroot/posix/glibc/arch/x86/e_asinf.S | 21 + .../libroot/posix/glibc/arch/x86/e_atan2.S | 2 - .../libroot/posix/glibc/arch/x86/e_atanh.S | 114 + .../libroot/posix/glibc/arch/x86/e_atanhf.S | 111 + .../libroot/posix/glibc/arch/x86/e_atanhl.S | 122 + .../libroot/posix/glibc/arch/x86/e_exp.S | 41 + .../libroot/posix/glibc/arch/x86/e_expf.S | 42 + .../libroot/posix/glibc/arch/x86/e_expl.c | 77 + .../libroot/posix/glibc/arch/x86/e_hypot.S | 62 + .../libroot/posix/glibc/arch/x86/e_hypotf.S | 62 + .../libroot/posix/glibc/arch/x86/e_log.S | 59 + .../libroot/posix/glibc/arch/x86/e_log10.S | 68 + .../libroot/posix/glibc/arch/x86/e_log10f.S | 69 + .../libroot/posix/glibc/arch/x86/e_log10l.S | 70 + .../libroot/posix/glibc/arch/x86/e_logf.S | 60 + .../libroot/posix/glibc/arch/x86/e_logl.S | 60 + .../libroot/posix/glibc/arch/x86/e_pow.S | 328 + .../libroot/posix/glibc/arch/x86/e_powf.S | 320 + .../libroot/posix/glibc/arch/x86/e_powl.S | 315 + .../posix/glibc/arch/x86/e_remainder.S | 19 + .../posix/glibc/arch/x86/e_remainderf.S | 19 + .../posix/glibc/arch/x86/e_remainderl.S | 21 + .../libroot/posix/glibc/arch/x86/e_scalb.S | 106 + .../libroot/posix/glibc/arch/x86/e_scalbf.S | 108 + .../libroot/posix/glibc/arch/x86/e_scalbl.S | 108 + .../libroot/posix/glibc/arch/x86/e_sqrt.S | 14 + .../libroot/posix/glibc/arch/x86/e_sqrtf.S | 14 + .../libroot/posix/glibc/arch/x86/e_sqrtl.c | 18 + src/system/libroot/posix/glibc/arch/x86/mpa.c | 1 + .../libroot/posix/glibc/arch/x86/mpatan.c | 1 + .../libroot/posix/glibc/arch/x86/mpatan2.c | 1 + .../libroot/posix/glibc/arch/x86/mplog.c | 1 + .../libroot/posix/glibc/arch/x86/mptan.c | 1 + .../libroot/posix/glibc/arch/x86/s_asinh.S | 139 + .../libroot/posix/glibc/arch/x86/s_asinhf.S | 139 + .../libroot/posix/glibc/arch/x86/s_asinhl.S | 147 + .../libroot/posix/glibc/arch/x86/s_atan.S | 16 + .../libroot/posix/glibc/arch/x86/s_atanf.S | 16 + .../libroot/posix/glibc/arch/x86/s_atanl.c | 22 + .../libroot/posix/glibc/arch/x86/s_cbrt.S | 201 + .../libroot/posix/glibc/arch/x86/s_cbrtf.S | 178 + .../libroot/posix/glibc/arch/x86/s_cbrtl.S | 229 + .../libroot/posix/glibc/arch/x86/s_cos.S | 29 + .../libroot/posix/glibc/arch/x86/s_cosf.S | 29 + .../libroot/posix/glibc/arch/x86/s_cosl.S | 31 + .../libroot/posix/glibc/arch/x86/s_expm1.S | 88 + .../libroot/posix/glibc/arch/x86/s_expm1f.S | 88 + .../libroot/posix/glibc/arch/x86/s_expm1l.S | 89 + .../libroot/posix/glibc/arch/x86/s_frexp.S | 95 + .../libroot/posix/glibc/arch/x86/s_frexpf.S | 92 + .../libroot/posix/glibc/arch/x86/s_frexpl.S | 97 + .../libroot/posix/glibc/arch/x86/s_isinfl.c | 37 + .../{generic/w_atan2l.c => x86/s_isnanl.c} | 35 +- .../libroot/posix/glibc/arch/x86/s_log1p.S | 71 + .../libroot/posix/glibc/arch/x86/s_log1pf.S | 71 + .../libroot/posix/glibc/arch/x86/s_log1pl.S | 78 + .../libroot/posix/glibc/arch/x86/s_sin.S | 29 + .../libroot/posix/glibc/arch/x86/s_sincos.S | 65 + .../libroot/posix/glibc/arch/x86/s_sincosf.S | 65 + .../libroot/posix/glibc/arch/x86/s_sincosl.S | 65 + .../libroot/posix/glibc/arch/x86/s_sinf.S | 29 + .../libroot/posix/glibc/arch/x86/s_sinl.S | 31 + .../libroot/posix/glibc/arch/x86/s_tan.S | 30 + .../libroot/posix/glibc/arch/x86/s_tanf.S | 30 + .../libroot/posix/glibc/arch/x86/s_tanl.S | 32 + .../posix/glibc/include/arch/ppc/config.h | 8 + .../posix/glibc/include/arch/ppc/math_ldbl.h | 0 .../posix/glibc/include/arch/x86/math_ldbl.h | 98 + .../libroot/posix/glibc/include/math_ldbl.h | 90 - src/system/libroot/posix/math/Jamfile | 42 - src/system/libroot/posix/math/acosh.c | 98 - .../libroot/posix/math/arch/ppc/Jamfile | 8 - src/system/libroot/posix/math/arch/ppc/fabs.c | 18 - .../libroot/posix/math/arch/ppc/frexp.c | 60 - .../libroot/posix/math/arch/ppc/isinf.c | 105 - .../libroot/posix/math/arch/ppc/ldexp.c | 19 - .../libroot/posix/math/arch/sh4/Jamfile | 3 - src/system/libroot/posix/math/arch/sh4/fabs.S | 10 - .../libroot/posix/math/arch/sh4/frexp.c | 66 - .../libroot/posix/math/arch/sh4/isinf.c | 69 - .../libroot/posix/math/arch/sh4/ldexp.c | 12 - .../libroot/posix/math/arch/x86/Jamfile | 11 - src/system/libroot/posix/math/arch/x86/cos.S | 30 - .../libroot/posix/math/arch/x86/frexp.c | 66 - .../libroot/posix/math/arch/x86/isinf.c | 105 - .../libroot/posix/math/arch/x86/ldexp.c | 76 - src/system/libroot/posix/math/arch/x86/sin.S | 30 - src/system/libroot/posix/math/arch/x86/sqrt.S | 16 - .../libroot/posix/math/arch/x86/sqrtf.S | 16 - src/system/libroot/posix/math/asincos.c | 167 - src/system/libroot/posix/math/asinh.c | 100 - src/system/libroot/posix/math/atan.c | 85 - src/system/libroot/posix/math/atan2.c | 290 - src/system/libroot/posix/math/atanh.c | 80 - src/system/libroot/posix/math/cabs.c | 240 - src/system/libroot/posix/math/cbrt.c | 122 - src/system/libroot/posix/math/cosh.c | 131 - src/system/libroot/posix/math/erf.c | 408 - src/system/libroot/posix/math/exp.c | 200 - src/system/libroot/posix/math/exp__E.c | 141 - src/system/libroot/posix/math/expm1.c | 167 - src/system/libroot/posix/math/floatmath.c | 69 - src/system/libroot/posix/math/fmod.c | 86 - src/system/libroot/posix/math/gamma.c | 347 - src/system/libroot/posix/math/ieee.c | 537 - src/system/libroot/posix/math/j0.c | 461 - src/system/libroot/posix/math/j1.c | 469 - src/system/libroot/posix/math/jn.c | 318 - src/system/libroot/posix/math/lgamma.c | 306 - src/system/libroot/posix/math/log.c | 491 - src/system/libroot/posix/math/log10.c | 91 - src/system/libroot/posix/math/log1p.c | 172 - src/system/libroot/posix/math/log__L.c | 106 - src/system/libroot/posix/math/math_globals.c | 11 - src/system/libroot/posix/math/pow.c | 215 - src/system/libroot/posix/math/round.c | 42 - src/system/libroot/posix/math/sincos.c | 93 - src/system/libroot/posix/math/sinh.c | 117 - src/system/libroot/posix/math/tan.c | 75 - src/system/libroot/posix/math/tanh.c | 100 - 285 files changed, 45649 insertions(+), 7430 deletions(-) create mode 100644 src/system/libroot/posix/glibc/arch/generic/asincos.tbl create mode 100644 src/system/libroot/posix/glibc/arch/generic/branred.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/branred.h create mode 100644 src/system/libroot/posix/glibc/arch/generic/doasin.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/doasin.h create mode 100644 src/system/libroot/posix/glibc/arch/generic/dosincos.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/dosincos.h create mode 100644 src/system/libroot/posix/glibc/arch/generic/e_acosh.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/e_acoshf.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/e_asin.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/e_asinf.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/e_atanh.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/e_atanhf.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/e_cosh.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/e_coshf.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/e_exp.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/e_expf.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/e_gamma_r.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/e_gammaf_r.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/e_hypot.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/e_hypotf.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/e_j0.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/e_j0f.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/e_j1.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/e_j1f.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/e_jn.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/e_jnf.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/e_lgamma_r.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/e_lgammaf_r.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/e_log.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/e_log10.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/e_log10f.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/e_logf.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/e_pow.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/e_powf.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/e_rem_pio2f.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/e_remainder.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/e_remainderf.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/e_scalb.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/e_scalbf.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/e_sinh.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/e_sinhf.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/halfulp.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/k_cos.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/k_cosf.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/k_rem_pio2.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/k_rem_pio2f.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/k_sin.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/k_sinf.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/k_tan.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/k_tanf.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/mpexp.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/mpexp.h create mode 100644 src/system/libroot/posix/glibc/arch/generic/mplog.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/mplog.h create mode 100644 src/system/libroot/posix/glibc/arch/generic/mptan.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/mydefs.h create mode 100644 src/system/libroot/posix/glibc/arch/generic/powtwo.tbl create mode 100644 src/system/libroot/posix/glibc/arch/generic/root.tbl create mode 100644 src/system/libroot/posix/glibc/arch/generic/s_asinh.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/s_asinhf.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/s_cbrt.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/s_cbrtf.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/s_cos.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/s_cosf.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/s_erf.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/s_erff.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/s_expm1.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/s_expm1f.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/s_frexp.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/s_frexpf.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/s_isinf.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/s_isinff.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/s_isnan.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/s_isnanf.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/s_ldexp.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/s_ldexpf.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/s_log1p.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/s_log1pf.c delete mode 100644 src/system/libroot/posix/glibc/arch/generic/s_modfl.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/s_nan.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/s_nanf.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/s_round.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/s_roundf.c rename src/system/libroot/posix/glibc/arch/generic/{s_fpclassifyl.c => s_signbit.c} (57%) create mode 100644 src/system/libroot/posix/glibc/arch/generic/s_signbitf.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/s_signgam.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/s_sin.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/s_sincos.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/s_sincosf.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/s_sinf.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/s_tan.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/s_tanf.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/s_tanh.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/s_tanhf.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/sincos.tbl create mode 100644 src/system/libroot/posix/glibc/arch/generic/sincos32.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/sincos32.h create mode 100644 src/system/libroot/posix/glibc/arch/generic/slowexp.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/slowpow.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/t_exp.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/uasncs.h create mode 100644 src/system/libroot/posix/glibc/arch/generic/uexp.h create mode 100644 src/system/libroot/posix/glibc/arch/generic/uexp.tbl create mode 100644 src/system/libroot/posix/glibc/arch/generic/ulog.h create mode 100644 src/system/libroot/posix/glibc/arch/generic/ulog.tbl create mode 100644 src/system/libroot/posix/glibc/arch/generic/upow.h create mode 100644 src/system/libroot/posix/glibc/arch/generic/upow.tbl create mode 100644 src/system/libroot/posix/glibc/arch/generic/urem.h create mode 100644 src/system/libroot/posix/glibc/arch/generic/usncs.h create mode 100644 src/system/libroot/posix/glibc/arch/generic/utan.h create mode 100644 src/system/libroot/posix/glibc/arch/generic/utan.tbl create mode 100644 src/system/libroot/posix/glibc/arch/generic/w_acos.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/w_acosf.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/w_acosh.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/w_acoshf.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/w_atanh.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/w_atanhf.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/w_cosh.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/w_coshf.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/w_drem.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/w_dremf.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/w_exp.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/w_expf.c delete mode 100644 src/system/libroot/posix/glibc/arch/generic/w_fmodl.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/w_j0.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/w_j0f.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/w_j1.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/w_j1f.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/w_jn.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/w_jnf.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/w_lgamma.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/w_lgamma_r.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/w_lgammaf.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/w_lgammaf_r.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/w_log.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/w_log10.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/w_log10f.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/w_logf.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/w_pow.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/w_powf.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/w_remainder.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/w_remainderf.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/w_scalb.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/w_scalbf.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/w_sinh.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/w_sinhf.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/w_sqrt.c create mode 100644 src/system/libroot/posix/glibc/arch/generic/w_sqrtf.c create mode 100644 src/system/libroot/posix/glibc/arch/ppc/e_sqrt.c create mode 100644 src/system/libroot/posix/glibc/arch/ppc/feholdexcpt.c create mode 100644 src/system/libroot/posix/glibc/arch/ppc/fesetenv.c create mode 100644 src/system/libroot/posix/glibc/arch/ppc/fesetround.c create mode 100644 src/system/libroot/posix/glibc/arch/ppc/s_isnan.c create mode 100644 src/system/libroot/posix/glibc/arch/ppc/s_isnanf.S create mode 100644 src/system/libroot/posix/glibc/arch/x86/e_acosf.S create mode 100644 src/system/libroot/posix/glibc/arch/x86/e_acosh.S create mode 100644 src/system/libroot/posix/glibc/arch/x86/e_acoshf.S create mode 100644 src/system/libroot/posix/glibc/arch/x86/e_acoshl.S create mode 100644 src/system/libroot/posix/glibc/arch/x86/e_acosl.c create mode 100644 src/system/libroot/posix/glibc/arch/x86/e_asin.S create mode 100644 src/system/libroot/posix/glibc/arch/x86/e_asinf.S create mode 100644 src/system/libroot/posix/glibc/arch/x86/e_atanh.S create mode 100644 src/system/libroot/posix/glibc/arch/x86/e_atanhf.S create mode 100644 src/system/libroot/posix/glibc/arch/x86/e_atanhl.S create mode 100644 src/system/libroot/posix/glibc/arch/x86/e_exp.S create mode 100644 src/system/libroot/posix/glibc/arch/x86/e_expf.S create mode 100644 src/system/libroot/posix/glibc/arch/x86/e_expl.c create mode 100644 src/system/libroot/posix/glibc/arch/x86/e_hypot.S create mode 100644 src/system/libroot/posix/glibc/arch/x86/e_hypotf.S create mode 100644 src/system/libroot/posix/glibc/arch/x86/e_log.S create mode 100644 src/system/libroot/posix/glibc/arch/x86/e_log10.S create mode 100644 src/system/libroot/posix/glibc/arch/x86/e_log10f.S create mode 100644 src/system/libroot/posix/glibc/arch/x86/e_log10l.S create mode 100644 src/system/libroot/posix/glibc/arch/x86/e_logf.S create mode 100644 src/system/libroot/posix/glibc/arch/x86/e_logl.S create mode 100644 src/system/libroot/posix/glibc/arch/x86/e_pow.S create mode 100644 src/system/libroot/posix/glibc/arch/x86/e_powf.S create mode 100644 src/system/libroot/posix/glibc/arch/x86/e_powl.S create mode 100644 src/system/libroot/posix/glibc/arch/x86/e_remainder.S create mode 100644 src/system/libroot/posix/glibc/arch/x86/e_remainderf.S create mode 100644 src/system/libroot/posix/glibc/arch/x86/e_remainderl.S create mode 100644 src/system/libroot/posix/glibc/arch/x86/e_scalb.S create mode 100644 src/system/libroot/posix/glibc/arch/x86/e_scalbf.S create mode 100644 src/system/libroot/posix/glibc/arch/x86/e_scalbl.S create mode 100644 src/system/libroot/posix/glibc/arch/x86/e_sqrt.S create mode 100644 src/system/libroot/posix/glibc/arch/x86/e_sqrtf.S create mode 100644 src/system/libroot/posix/glibc/arch/x86/e_sqrtl.c create mode 100644 src/system/libroot/posix/glibc/arch/x86/mpa.c create mode 100644 src/system/libroot/posix/glibc/arch/x86/mpatan.c create mode 100644 src/system/libroot/posix/glibc/arch/x86/mpatan2.c create mode 100644 src/system/libroot/posix/glibc/arch/x86/mplog.c create mode 100644 src/system/libroot/posix/glibc/arch/x86/mptan.c create mode 100644 src/system/libroot/posix/glibc/arch/x86/s_asinh.S create mode 100644 src/system/libroot/posix/glibc/arch/x86/s_asinhf.S create mode 100644 src/system/libroot/posix/glibc/arch/x86/s_asinhl.S create mode 100644 src/system/libroot/posix/glibc/arch/x86/s_atan.S create mode 100644 src/system/libroot/posix/glibc/arch/x86/s_atanf.S create mode 100644 src/system/libroot/posix/glibc/arch/x86/s_atanl.c create mode 100644 src/system/libroot/posix/glibc/arch/x86/s_cbrt.S create mode 100644 src/system/libroot/posix/glibc/arch/x86/s_cbrtf.S create mode 100644 src/system/libroot/posix/glibc/arch/x86/s_cbrtl.S create mode 100644 src/system/libroot/posix/glibc/arch/x86/s_cos.S create mode 100644 src/system/libroot/posix/glibc/arch/x86/s_cosf.S create mode 100644 src/system/libroot/posix/glibc/arch/x86/s_cosl.S create mode 100644 src/system/libroot/posix/glibc/arch/x86/s_expm1.S create mode 100644 src/system/libroot/posix/glibc/arch/x86/s_expm1f.S create mode 100644 src/system/libroot/posix/glibc/arch/x86/s_expm1l.S create mode 100644 src/system/libroot/posix/glibc/arch/x86/s_frexp.S create mode 100644 src/system/libroot/posix/glibc/arch/x86/s_frexpf.S create mode 100644 src/system/libroot/posix/glibc/arch/x86/s_frexpl.S create mode 100644 src/system/libroot/posix/glibc/arch/x86/s_isinfl.c rename src/system/libroot/posix/glibc/arch/{generic/w_atan2l.c => x86/s_isnanl.c} (53%) create mode 100644 src/system/libroot/posix/glibc/arch/x86/s_log1p.S create mode 100644 src/system/libroot/posix/glibc/arch/x86/s_log1pf.S create mode 100644 src/system/libroot/posix/glibc/arch/x86/s_log1pl.S create mode 100644 src/system/libroot/posix/glibc/arch/x86/s_sin.S create mode 100644 src/system/libroot/posix/glibc/arch/x86/s_sincos.S create mode 100644 src/system/libroot/posix/glibc/arch/x86/s_sincosf.S create mode 100644 src/system/libroot/posix/glibc/arch/x86/s_sincosl.S create mode 100644 src/system/libroot/posix/glibc/arch/x86/s_sinf.S create mode 100644 src/system/libroot/posix/glibc/arch/x86/s_sinl.S create mode 100644 src/system/libroot/posix/glibc/arch/x86/s_tan.S create mode 100644 src/system/libroot/posix/glibc/arch/x86/s_tanf.S create mode 100644 src/system/libroot/posix/glibc/arch/x86/s_tanl.S create mode 100644 src/system/libroot/posix/glibc/include/arch/ppc/math_ldbl.h create mode 100644 src/system/libroot/posix/glibc/include/arch/x86/math_ldbl.h delete mode 100644 src/system/libroot/posix/glibc/include/math_ldbl.h delete mode 100644 src/system/libroot/posix/math/Jamfile delete mode 100644 src/system/libroot/posix/math/acosh.c delete mode 100644 src/system/libroot/posix/math/arch/ppc/Jamfile delete mode 100644 src/system/libroot/posix/math/arch/ppc/fabs.c delete mode 100644 src/system/libroot/posix/math/arch/ppc/frexp.c delete mode 100644 src/system/libroot/posix/math/arch/ppc/isinf.c delete mode 100644 src/system/libroot/posix/math/arch/ppc/ldexp.c delete mode 100644 src/system/libroot/posix/math/arch/sh4/Jamfile delete mode 100644 src/system/libroot/posix/math/arch/sh4/fabs.S delete mode 100644 src/system/libroot/posix/math/arch/sh4/frexp.c delete mode 100644 src/system/libroot/posix/math/arch/sh4/isinf.c delete mode 100644 src/system/libroot/posix/math/arch/sh4/ldexp.c delete mode 100644 src/system/libroot/posix/math/arch/x86/Jamfile delete mode 100644 src/system/libroot/posix/math/arch/x86/cos.S delete mode 100644 src/system/libroot/posix/math/arch/x86/frexp.c delete mode 100644 src/system/libroot/posix/math/arch/x86/isinf.c delete mode 100644 src/system/libroot/posix/math/arch/x86/ldexp.c delete mode 100644 src/system/libroot/posix/math/arch/x86/sin.S delete mode 100644 src/system/libroot/posix/math/arch/x86/sqrt.S delete mode 100644 src/system/libroot/posix/math/arch/x86/sqrtf.S delete mode 100644 src/system/libroot/posix/math/asincos.c delete mode 100644 src/system/libroot/posix/math/asinh.c delete mode 100644 src/system/libroot/posix/math/atan.c delete mode 100644 src/system/libroot/posix/math/atan2.c delete mode 100644 src/system/libroot/posix/math/atanh.c delete mode 100644 src/system/libroot/posix/math/cabs.c delete mode 100644 src/system/libroot/posix/math/cbrt.c delete mode 100644 src/system/libroot/posix/math/cosh.c delete mode 100644 src/system/libroot/posix/math/erf.c delete mode 100644 src/system/libroot/posix/math/exp.c delete mode 100644 src/system/libroot/posix/math/exp__E.c delete mode 100644 src/system/libroot/posix/math/expm1.c delete mode 100644 src/system/libroot/posix/math/floatmath.c delete mode 100644 src/system/libroot/posix/math/fmod.c delete mode 100644 src/system/libroot/posix/math/gamma.c delete mode 100644 src/system/libroot/posix/math/ieee.c delete mode 100644 src/system/libroot/posix/math/j0.c delete mode 100644 src/system/libroot/posix/math/j1.c delete mode 100644 src/system/libroot/posix/math/jn.c delete mode 100644 src/system/libroot/posix/math/lgamma.c delete mode 100644 src/system/libroot/posix/math/log.c delete mode 100644 src/system/libroot/posix/math/log10.c delete mode 100644 src/system/libroot/posix/math/log1p.c delete mode 100644 src/system/libroot/posix/math/log__L.c delete mode 100644 src/system/libroot/posix/math/math_globals.c delete mode 100644 src/system/libroot/posix/math/pow.c delete mode 100644 src/system/libroot/posix/math/round.c delete mode 100644 src/system/libroot/posix/math/sincos.c delete mode 100644 src/system/libroot/posix/math/sinh.c delete mode 100644 src/system/libroot/posix/math/tan.c delete mode 100644 src/system/libroot/posix/math/tanh.c diff --git a/src/system/libroot/Jamfile b/src/system/libroot/Jamfile index d7e97b072f..2a1a98c1cc 100644 --- a/src/system/libroot/Jamfile +++ b/src/system/libroot/Jamfile @@ -16,8 +16,6 @@ local librootObjects = posix_locale.o posix_main.o posix_malloc.o - posix_math.o - posix_math_arch_$(TARGET_ARCH).o posix_pthread.o posix_signal.o posix_stdio.o diff --git a/src/system/libroot/posix/Jamfile b/src/system/libroot/posix/Jamfile index eb76ba1c7a..878f28a183 100644 --- a/src/system/libroot/posix/Jamfile +++ b/src/system/libroot/posix/Jamfile @@ -24,7 +24,6 @@ SubInclude HAIKU_TOP src system libroot posix arch $(TARGET_ARCH) ; SubInclude HAIKU_TOP src system libroot posix crypt ; SubInclude HAIKU_TOP src system libroot posix locale ; SubInclude HAIKU_TOP src system libroot posix malloc ; -SubInclude HAIKU_TOP src system libroot posix math ; SubInclude HAIKU_TOP src system libroot posix pthread ; SubInclude HAIKU_TOP src system libroot posix signal ; SubInclude HAIKU_TOP src system libroot posix stdio ; diff --git a/src/system/libroot/posix/glibc/arch/generic/asincos.tbl b/src/system/libroot/posix/glibc/arch/generic/asincos.tbl new file mode 100644 index 0000000000..ff67957253 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/asincos.tbl @@ -0,0 +1,5169 @@ +/* + * IBM Accurate Mathematical Library + * Written by International Business Machines Corp. + * Copyright (C) 2001 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, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +/***************************************************************************/ +/* 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/src/system/libroot/posix/glibc/arch/generic/branred.c b/src/system/libroot/posix/glibc/arch/generic/branred.c new file mode 100644 index 0000000000..76015f0c5c --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/branred.c @@ -0,0 +1,144 @@ +/* + * IBM Accurate Mathematical Library + * Written by International Business Machines Corp. + * Copyright (C) 2001 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, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ +/*******************************************************************/ +/* */ +/* 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)>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 = (ABS(b1)>ABS(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/src/system/libroot/posix/glibc/arch/generic/branred.h b/src/system/libroot/posix/glibc/arch/generic/branred.h new file mode 100644 index 0000000000..48f8976640 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/branred.h @@ -0,0 +1,80 @@ +/* + * IBM Accurate Mathematical Library + * Written by International Business Machines Corp. + * Copyright (C) 2001 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, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ +/************************************************************************/ +/* MODULE_NAME: branred.h */ +/* */ +/* */ +/* common data and variables definition for BIG or LITTLE ENDIAN */ +/************************************************************************/ + +#ifndef BRANRED_H +#define BRANRED_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 = 134217729.0; + +#endif diff --git a/src/system/libroot/posix/glibc/arch/generic/doasin.c b/src/system/libroot/posix/glibc/arch/generic/doasin.c new file mode 100644 index 0000000000..79f344af2d --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/doasin.c @@ -0,0 +1,76 @@ +/* + * IBM Accurate Mathematical Library + * written by International Business Machines Corp. + * Copyright (C) 2001 Free Software Foundation + * + * 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, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ +/**********************************************************************/ +/* 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" + +/********************************************************************/ +/* 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 __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 hx,tx,hy,ty,tp,tq,tc,tcc; + + +/* 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/src/system/libroot/posix/glibc/arch/generic/doasin.h b/src/system/libroot/posix/glibc/arch/generic/doasin.h new file mode 100644 index 0000000000..0625e51852 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/doasin.h @@ -0,0 +1,64 @@ + +/* + * IBM Accurate Mathematical Library + * Written by International Business Machines Corp. + * Copyright (C) 2001 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, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +/************************************************************************/ +/* 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/src/system/libroot/posix/glibc/arch/generic/dosincos.c b/src/system/libroot/posix/glibc/arch/generic/dosincos.c new file mode 100644 index 0000000000..1d347a4bc7 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/dosincos.c @@ -0,0 +1,189 @@ +/* + * IBM Accurate Mathematical Library + * written by International Business Machines Corp. + * Copyright (C) 2001 Free Software Foundation + * + * 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, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ +/********************************************************************/ +/* */ +/* 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 "sincos.tbl" +#include "dla.h" +#include "dosincos.h" +#include "math_private.h" + +/***********************************************************************/ +/* 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 __dubsin(double x, double dx, double v[]) { + double r,s,p,hx,tx,hy,ty,q,c,cc,d,dd,d2,dd2,e,ee, + sn,ssn,cs,ccs,ds,dss,dc,dcc; +#if 0 + double xx,y,yy,z,zz; +#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=sincos.x[k]; /* */ + ssn=sincos.x[k+1]; /* sin(Xi) and cos(Xi) */ + cs=sincos.x[k+2]; /* */ + ccs=sincos.x[k+3]; /* */ + MUL2(d2,dd2,s7.x,ss7.x,ds,dss,p,hx,tx,hy,ty,q,c,cc); /* Taylor */ + 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); /* series */ + 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); /* for sin */ + MUL2(d,dd,ds,dss,ds,dss,p,hx,tx,hy,ty,q,c,cc); + ADD2(ds,dss,d,dd,ds,dss,r,s); /* ds=sin(t) */ + + MUL2(d2,dd2,c8.x,cc8.x,dc,dcc,p,hx,tx,hy,ty,q,c,cc); ;/* Taylor */ + 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); /* series */ + 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); /* for cos */ + 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); /* dc=cos(t) */ + + 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 __dubcos(double x, double dx, double v[]) { + double r,s,p,hx,tx,hy,ty,q,c,cc,d,dd,d2,dd2,e,ee, + sn,ssn,cs,ccs,ds,dss,dc,dcc; +#if 0 + double xx,y,yy,z,zz; +#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=sincos.x[k]; /* */ + ssn=sincos.x[k+1]; /* sin(Xi) and cos(Xi) */ + cs=sincos.x[k+2]; /* */ + ccs=sincos.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 __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/src/system/libroot/posix/glibc/arch/generic/dosincos.h b/src/system/libroot/posix/glibc/arch/generic/dosincos.h new file mode 100644 index 0000000000..49d61cd917 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/dosincos.h @@ -0,0 +1,81 @@ + +/* + * IBM Accurate Mathematical Library + * Written by International Business Machines Corp. + * Copyright (C) 2001 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, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +/************************************************************************/ +/* 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/src/system/libroot/posix/glibc/arch/generic/e_acosh.c b/src/system/libroot/posix/glibc/arch/generic/e_acosh.c new file mode 100644 index 0000000000..27c29cd8c9 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/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. + * ==================================================== + */ + +#if defined(LIBM_SCCS) && !defined(lint) +static char rcsid[] = "$NetBSD: e_acosh.c,v 1.9 1995/05/12 04:57:18 jtc Exp $"; +#endif + +/* __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" + +#ifdef __STDC__ +static const double +#else +static double +#endif +one = 1.0, +ln2 = 6.93147180559945286227e-01; /* 0x3FE62E42, 0xFEFA39EF */ + +#ifdef __STDC__ + double __ieee754_acosh(double x) +#else + double __ieee754_acosh(x) + double x; +#endif +{ + 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=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 { /* 10 => 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=ABS(x); + res=ABS(w[0]); + res1=ABS(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]-ABS(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=ABS(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]-ABS(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=ABS(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]-ABS(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=ABS(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]-ABS(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=ABS(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]-ABS(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=ABS(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=ABS(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; + 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 */ + } +} + +/*******************************************************************/ +/* */ +/* End of arcsine, below is arccosine */ +/* */ +/*******************************************************************/ + +double __ieee754_acos(double x) +{ + double x1,x2,xx,s1,s2,res1,p,t,res,r,cor,cc,y,c,z,w[2],eps; +#if 0 + double fc; +#endif + mynumber u,v; + int4 k,m,n; +#if 0 + int4 nn; +#endif + 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; + 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; + } +} diff --git a/src/system/libroot/posix/glibc/arch/generic/e_asinf.c b/src/system/libroot/posix/glibc/arch/generic/e_asinf.c new file mode 100644 index 0000000000..b0c835c83c --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/e_asinf.c @@ -0,0 +1,110 @@ +/* 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 + 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, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ + +#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 "math.h" +#include "math_private.h" + +#ifdef __STDC__ +static const float +#else +static float +#endif +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; + +#ifdef __STDC__ + float __ieee754_asinf(float x) +#else + float __ieee754_asinf(x) + float x; +#endif +{ + 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 */ + 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; +} diff --git a/src/system/libroot/posix/glibc/arch/generic/e_atanh.c b/src/system/libroot/posix/glibc/arch/generic/e_atanh.c new file mode 100644 index 0000000000..fa4fe675c9 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/e_atanh.c @@ -0,0 +1,74 @@ +/* @(#)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. + * ==================================================== + */ + +#if defined(LIBM_SCCS) && !defined(lint) +static char rcsid[] = "$NetBSD: e_atanh.c,v 1.8 1995/05/10 20:44:55 jtc Exp $"; +#endif + +/* __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 "math.h" +#include "math_private.h" + +#ifdef __STDC__ +static const double one = 1.0, huge = 1e300; +#else +static double one = 1.0, huge = 1e300; +#endif + +#ifdef __STDC__ +static const double zero = 0.0; +#else +static double zero = 0.0; +#endif + +#ifdef __STDC__ + double __ieee754_atanh(double x) +#else + double __ieee754_atanh(x) + double x; +#endif +{ + double t; + int32_t hx,ix; + u_int32_t lx; + EXTRACT_WORDS(hx,lx,x); + ix = hx&0x7fffffff; + if ((ix|((lx|(-lx))>>31))>0x3ff00000) /* |x|>1 */ + return (x-x)/(x-x); + if(ix==0x3ff00000) + return x/zero; + if(ix<0x3e300000&&(huge+x)>zero) return x; /* x<2**-28 */ + SET_HIGH_WORD(x,ix); + if(ix<0x3fe00000) { /* x < 0.5 */ + t = x+x; + t = 0.5*__log1p(t+t*x/(one-x)); + } else + t = 0.5*__log1p((x+x)/(one-x)); + if(hx>=0) return t; else return -t; +} diff --git a/src/system/libroot/posix/glibc/arch/generic/e_atanhf.c b/src/system/libroot/posix/glibc/arch/generic/e_atanhf.c new file mode 100644 index 0000000000..f26a15bbc1 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/e_atanhf.c @@ -0,0 +1,58 @@ +/* e_atanhf.c -- float version of e_atanh.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_atanhf.c,v 1.4 1995/05/10 20:44:56 jtc Exp $"; +#endif + +#include "math.h" +#include "math_private.h" + +#ifdef __STDC__ +static const float one = 1.0, huge = 1e30; +#else +static float one = 1.0, huge = 1e30; +#endif + +#ifdef __STDC__ +static const float zero = 0.0; +#else +static float zero = 0.0; +#endif + +#ifdef __STDC__ + float __ieee754_atanhf(float x) +#else + float __ieee754_atanhf(x) + float x; +#endif +{ + float t; + int32_t hx,ix; + GET_FLOAT_WORD(hx,x); + ix = hx&0x7fffffff; + if (ix>0x3f800000) /* |x|>1 */ + return (x-x)/(x-x); + if(ix==0x3f800000) + return x/zero; + if(ix<0x31800000&&(huge+x)>zero) return x; /* x<2**-28 */ + SET_FLOAT_WORD(x,ix); + if(ix<0x3f000000) { /* x < 0.5 */ + t = x+x; + t = (float)0.5*__log1pf(t+t*x/(one-x)); + } else + t = (float)0.5*__log1pf((x+x)/(one-x)); + if(hx>=0) return t; else return -t; +} diff --git a/src/system/libroot/posix/glibc/arch/generic/e_cosh.c b/src/system/libroot/posix/glibc/arch/generic/e_cosh.c new file mode 100644 index 0000000000..65106b9989 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/e_cosh.c @@ -0,0 +1,92 @@ +/* @(#)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. + * ==================================================== + */ + +#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_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" + +#ifdef __STDC__ +static const double one = 1.0, half=0.5, huge = 1.0e300; +#else +static double one = 1.0, half=0.5, huge = 1.0e300; +#endif + +#ifdef __STDC__ + double __ieee754_cosh(double x) +#else + double __ieee754_cosh(x) + double x; +#endif +{ + double t,w; + int32_t ix; + u_int32_t lx; + + /* High word of |x|. */ + GET_HIGH_WORD(ix,x); + ix &= 0x7fffffff; + + /* x is INF or NaN */ + if(ix>=0x7ff00000) return x*x; + + /* |x| in [0,0.5*ln2], return 1+expm1(|x|)^2/(2*exp(|x|)) */ + if(ix<0x3fd62e43) { + t = __expm1(fabs(x)); + w = one+t; + if (ix<0x3c800000) return w; /* cosh(tiny) = 1 */ + return one+(t*t)/(w+w); + } + + /* |x| in [0.5*ln2,22], return (exp(|x|)+1/exp(|x|)/2; */ + if (ix < 0x40360000) { + 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| > overflowthresold, cosh(x) overflow */ + return huge*huge; +} diff --git a/src/system/libroot/posix/glibc/arch/generic/e_coshf.c b/src/system/libroot/posix/glibc/arch/generic/e_coshf.c new file mode 100644 index 0000000000..223fbeea20 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/e_coshf.c @@ -0,0 +1,72 @@ +/* e_coshf.c -- float version of e_cosh.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_coshf.c,v 1.6 1996/04/08 15:43:41 phil Exp $"; +#endif + +#include "math.h" +#include "math_private.h" + +#ifdef __STDC__ +static const float huge = 1.0e30; +static const float one = 1.0, half=0.5; +#else +static float one = 1.0, half=0.5, huge = 1.0e30; +#endif + +#ifdef __STDC__ + float __ieee754_coshf(float x) +#else + float __ieee754_coshf(x) + float x; +#endif +{ + float t,w; + int32_t ix; + + GET_FLOAT_WORD(ix,x); + ix &= 0x7fffffff; + + /* x is INF or NaN */ + if(ix>=0x7f800000) return x*x; + + /* |x| in [0,0.5*ln2], return 1+expm1(|x|)^2/(2*exp(|x|)) */ + if(ix<0x3eb17218) { + t = __expm1f(fabsf(x)); + w = one+t; + if (ix<0x24000000) return w; /* cosh(tiny) = 1 */ + return one+(t*t)/(w+w); + } + + /* |x| in [0.5*ln2,22], return (exp(|x|)+1/exp(|x|)/2; */ + if (ix < 0x41b00000) { + 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| > overflowthresold, cosh(x) overflow */ + return huge*huge; +} diff --git a/src/system/libroot/posix/glibc/arch/generic/e_exp.c b/src/system/libroot/posix/glibc/arch/generic/e_exp.c new file mode 100644 index 0000000000..a6463e5874 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/e_exp.c @@ -0,0 +1,252 @@ +/* + * IBM Accurate Mathematical Library + * written by International Business Machines Corp. + * Copyright (C) 2001 Free Software Foundation + * + * 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, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ +/***************************************************************************/ +/* 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 "endian.h" +#include "uexp.h" +#include "mydefs.h" +#include "MathLib.h" +#include "uexp.tbl" +#include "math_private.h" + +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 __ieee754_exp(double x) { + double bexp, t, eps, del, base, y, al, bet, res, rem, cor; + mynumber junk1, junk2, binexp = {{0,0}}; +#if 0 + int4 k; +#endif + int4 i,j,m,n,ex; + + 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)) return res*binexp.x; + else return __slowexp(x); /*if error is over bound */ + } + + if (n <= smallint) return 1.0; + + 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) - 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)) return res*binexp.x; + else return __slowexp(x); /*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; + return (res-1.0)*binexp.x; + } + else return __slowexp(x); /* if error is over bound */ + } + else { + binexp.i[HIGH_HALF] =(junk1.i[LOW_HALF]+767)<<20; + if (res == (res+cor*err_0)) return res*binexp.x*t256.x; + else return __slowexp(x); + } +} + +/************************************************************************/ +/* Compute e^(x+xx)(Double-Length number) .The routine also receive */ +/* bound of error of previous calculation .If after computing exp */ +/* error bigger than allows routine return non positive number */ +/*else return e^(x + xx) (always positive ) */ +/************************************************************************/ + +double __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}}; +#if 0 + int4 k; +#endif + 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/src/system/libroot/posix/glibc/arch/generic/e_expf.c b/src/system/libroot/posix/glibc/arch/generic/e_expf.c new file mode 100644 index 0000000000..62448a9554 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/e_expf.c @@ -0,0 +1,140 @@ +/* Single-precision floating point e^x. + Copyright (C) 1997, 1998 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Geoffrey Keating + + 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, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +/* 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). + */ +#ifndef _GNU_SOURCE +#define _GNU_SOURCE +#endif +#include +#include +#include +#include +#include +#include + +extern const float __exp_deltatable[178]; +extern const double __exp_atable[355] /* __attribute__((mode(DF))) */; + +static const volatile float TWOM100 = 7.88860905e-31; +static const volatile 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; + fenv_t oldenv; + + feholdexcept (&oldenv); +#ifdef FE_TONEAREST + fesetround (FE_TONEAREST); +#endif + + /* 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. */ + fesetenv (&oldenv); + + result = x22 * ex2_u.d + ex2_u.d; + return (float) result; + } + /* Exceptional cases: */ + else if (isless (x, himark)) + { + if (__isinff (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; +} diff --git a/src/system/libroot/posix/glibc/arch/generic/e_gamma_r.c b/src/system/libroot/posix/glibc/arch/generic/e_gamma_r.c new file mode 100644 index 0000000000..4614bcf46e --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/e_gamma_r.c @@ -0,0 +1,57 @@ +/* Implementation of gamma function according to ISO C. + Copyright (C) 1997, 1999, 2001 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper , 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, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +#include +#include + + +double +__ieee754_gamma_r (double x, int *signgamp) +{ + /* We don't have a real gamma implementation now. We'll use lgamma + and the exp function. But due to the required boundary + conditions we must check some values separately. */ + int32_t hx; + u_int32_t lx; + + EXTRACT_WORDS (hx, lx, x); + + if (((hx & 0x7fffffff) | lx) == 0) + { + /* Return value for x == 0 is NaN with invalid exception. */ + *signgamp = 0; + return x / x; + } + if (hx < 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 ((unsigned int) hx == 0xfff00000 && lx==0) + { + /* x == -Inf. According to ISO this is NaN. */ + *signgamp = 0; + return x - x; + } + + /* XXX FIXME. */ + return __ieee754_exp (__ieee754_lgamma_r (x, signgamp)); +} diff --git a/src/system/libroot/posix/glibc/arch/generic/e_gammaf_r.c b/src/system/libroot/posix/glibc/arch/generic/e_gammaf_r.c new file mode 100644 index 0000000000..d484e0c288 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/e_gammaf_r.c @@ -0,0 +1,56 @@ +/* Implementation of gamma function according to ISO C. + Copyright (C) 1997, 1999, 2001 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper , 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, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +#include +#include + + +float +__ieee754_gammaf_r (float x, int *signgamp) +{ + /* We don't have a real gamma implementation now. We'll use lgamma + and the exp function. But due to the required boundary + conditions we must check some values separately. */ + int32_t hx; + + GET_FLOAT_WORD (hx, x); + + if ((hx & 0x7fffffff) == 0) + { + /* Return value for x == 0 is NaN with invalid exception. */ + *signgamp = 0; + return x / x; + } + if (hx < 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 (hx == 0xff800000) + { + /* x == -Inf. According to ISO this is NaN. */ + *signgamp = 0; + return x - x; + } + + /* XXX FIXME. */ + return __ieee754_expf (__ieee754_lgammaf_r (x, signgamp)); +} diff --git a/src/system/libroot/posix/glibc/arch/generic/e_hypot.c b/src/system/libroot/posix/glibc/arch/generic/e_hypot.c new file mode 100644 index 0000000000..76a77ec33a --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/e_hypot.c @@ -0,0 +1,128 @@ +/* @(#)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. + * ==================================================== + */ + +#if defined(LIBM_SCCS) && !defined(lint) +static char rcsid[] = "$NetBSD: e_hypot.c,v 1.9 1995/05/12 04:57:27 jtc Exp $"; +#endif + +/* __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" + +#ifdef __STDC__ + double __ieee754_hypot(double x, double y) +#else + double __ieee754_hypot(x,y) + double x, y; +#endif +{ + 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(ha > 0x5f300000) { /* a>2**500 */ + if(ha >= 0x7ff00000) { /* Inf or NaN */ + u_int32_t low; + w = a+b; /* for sNaN */ + 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(hb < 0x20b00000) { /* b < 2**-500 */ + 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; + } 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)); + return t1*w; + } else return w; +} diff --git a/src/system/libroot/posix/glibc/arch/generic/e_hypotf.c b/src/system/libroot/posix/glibc/arch/generic/e_hypotf.c new file mode 100644 index 0000000000..d6b1520cb8 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/e_hypotf.c @@ -0,0 +1,87 @@ +/* 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. + * ==================================================== + */ + +#if defined(LIBM_SCCS) && !defined(lint) +static char rcsid[] = "$NetBSD: e_hypotf.c,v 1.5 1995/05/12 04:57:30 jtc Exp $"; +#endif + +#include "math.h" +#include "math_private.h" + +#ifdef __STDC__ + float __ieee754_hypotf(float x, float y) +#else + float __ieee754_hypot(x,y) + float x, y; +#endif +{ + float a,b,t1,t2,y1,y2,w; + int32_t j,k,ha,hb; + + GET_FLOAT_WORD(ha,x); + ha &= 0x7fffffff; + GET_FLOAT_WORD(hb,y); + hb &= 0x7fffffff; + if(hb > ha) {a=y;b=x;j=ha; ha=hb;hb=j;} else {a=x;b=y;} + SET_FLOAT_WORD(a,ha); /* a <- |a| */ + SET_FLOAT_WORD(b,hb); /* b <- |b| */ + if((ha-hb)>0xf000000) {return a+b;} /* x/y > 2**30 */ + k=0; + if(ha > 0x58800000) { /* a>2**50 */ + if(ha >= 0x7f800000) { /* Inf or NaN */ + w = a+b; /* for sNaN */ + if(ha == 0x7f800000) w = a; + if(hb == 0x7f800000) w = b; + return w; + } + /* scale a and b by 2**-60 */ + ha -= 0x5d800000; hb -= 0x5d800000; k += 60; + SET_FLOAT_WORD(a,ha); + SET_FLOAT_WORD(b,hb); + } + if(hb < 0x26800000) { /* b < 2**-50 */ + if(hb <= 0x007fffff) { /* subnormal b or 0 */ + if(hb==0) return a; + SET_FLOAT_WORD(t1,0x3f000000); /* t1=2^126 */ + b *= t1; + a *= t1; + k -= 126; + } else { /* scale a and b by 2^60 */ + ha += 0x5d800000; /* a *= 2^60 */ + hb += 0x5d800000; /* b *= 2^60 */ + k -= 60; + SET_FLOAT_WORD(a,ha); + SET_FLOAT_WORD(b,hb); + } + } + /* medium size a and b */ + w = a-b; + if (w>b) { + SET_FLOAT_WORD(t1,ha&0xfffff000); + t2 = a-t1; + w = __ieee754_sqrtf(t1*t1-(b*(-b)-t2*(a+t1))); + } else { + a = a+a; + SET_FLOAT_WORD(y1,hb&0xfffff000); + y2 = b - y1; + SET_FLOAT_WORD(t1,ha+0x00800000); + t2 = a - t1; + w = __ieee754_sqrtf(t1*y1-(w*(-w)-(t1*y2+t2*b))); + } + if(k!=0) { + SET_FLOAT_WORD(t1,0x3f800000+(k<<23)); + return t1*w; + } else return w; +} diff --git a/src/system/libroot/posix/glibc/arch/generic/e_j0.c b/src/system/libroot/posix/glibc/arch/generic/e_j0.c new file mode 100644 index 0000000000..77af5fd18c --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/e_j0.c @@ -0,0 +1,529 @@ +/* @(#)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. +*/ + +#if defined(LIBM_SCCS) && !defined(lint) +static char rcsid[] = "$NetBSD: e_j0.c,v 1.8 1995/05/10 20:45:23 jtc Exp $"; +#endif + +/* __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" + +#ifdef __STDC__ +static double pzero(double), qzero(double); +#else +static double pzero(), qzero(); +#endif + +#ifdef __STDC__ +static const double +#else +static double +#endif +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 */ + +#ifdef __STDC__ +static const double zero = 0.0; +#else +static double zero = 0.0; +#endif + +#ifdef __STDC__ + double __ieee754_j0(double x) +#else + double __ieee754_j0(x) + double x; +#endif +{ + 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)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 */ + if(huge+x>one) { /* raise inexact if x != 0 */ + if(ix<0x3e400000) return one; /* |x|<2**-27 */ + else return one - 0.25*x*x; + } + } + z = x*x; +#ifdef DO_NOT_USE_THIS + r = z*(R02+z*(R03+z*(R04+z*R05))); + s = one+z*(S01+z*(S02+z*(S03+z*S04))); +#else + 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]; +#endif + 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)); + } +} + +#ifdef __STDC__ +static const double +#else +static double +#endif +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 */ + +#ifdef __STDC__ + double __ieee754_y0(double x) +#else + double __ieee754_y0(x) + double x; +#endif +{ + 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 */ + if(ix>=0x7ff00000) return one/(x+x*x); + if((ix|lx)==0) return -one/zero; + if(hx<0) return zero/zero; + 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)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; +#ifdef DO_NOT_USE_THIS + u = u00+z*(u01+z*(u02+z*(u03+z*(u04+z*(u05+z*u06))))); + v = one+z*(v01+z*(v02+z*(v03+z*v04))); +#else + 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]; +#endif + return(u/v + tpi*(__ieee754_j0(x)*__ieee754_log(x))); +} + +/* 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) + */ +#ifdef __STDC__ +static const double pR8[6] = { /* for x in [inf, 8]=1/[0,0.125] */ +#else +static double pR8[6] = { /* for x in [inf, 8]=1/[0,0.125] */ +#endif + 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 */ +}; +#ifdef __STDC__ +static const double pS8[5] = { +#else +static double pS8[5] = { +#endif + 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 */ +}; + +#ifdef __STDC__ +static const double pR5[6] = { /* for x in [8,4.5454]=1/[0.125,0.22001] */ +#else +static double pR5[6] = { /* for x in [8,4.5454]=1/[0.125,0.22001] */ +#endif + -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 */ +}; +#ifdef __STDC__ +static const double pS5[5] = { +#else +static double pS5[5] = { +#endif + 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 */ +}; + +#ifdef __STDC__ +static const double pR3[6] = {/* for x in [4.547,2.8571]=1/[0.2199,0.35001] */ +#else +static double pR3[6] = {/* for x in [4.547,2.8571]=1/[0.2199,0.35001] */ +#endif + -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 */ +}; +#ifdef __STDC__ +static const double pS3[5] = { +#else +static double pS3[5] = { +#endif + 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 */ +}; + +#ifdef __STDC__ +static const double pR2[6] = {/* for x in [2.8570,2]=1/[0.3499,0.5] */ +#else +static double pR2[6] = {/* for x in [2.8570,2]=1/[0.3499,0.5] */ +#endif + -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 */ +}; +#ifdef __STDC__ +static const double pS2[5] = { +#else +static double pS2[5] = { +#endif + 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 */ +}; + +#ifdef __STDC__ + static double pzero(double x) +#else + static double pzero(x) + double x; +#endif +{ +#ifdef __STDC__ + const double *p,*q; +#else + double *p,*q; +#endif + double z,r,s,z2,z4,r1,r2,r3,s1,s2,s3; + int32_t ix; + GET_HIGH_WORD(ix,x); + ix &= 0x7fffffff; + if(ix>=0x40200000) {p = pR8; q= pS8;} + else if(ix>=0x40122E8B){p = pR5; q= pS5;} + else if(ix>=0x4006DB6D){p = pR3; q= pS3;} + else if(ix>=0x40000000){p = pR2; q= pS2;} + z = one/(x*x); +#ifdef DO_NOT_USE_THIS + 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])))); +#else + 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; +#endif + 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) + */ +#ifdef __STDC__ +static const double qR8[6] = { /* for x in [inf, 8]=1/[0,0.125] */ +#else +static double qR8[6] = { /* for x in [inf, 8]=1/[0,0.125] */ +#endif + 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 */ +}; +#ifdef __STDC__ +static const double qS8[6] = { +#else +static double qS8[6] = { +#endif + 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 */ +}; + +#ifdef __STDC__ +static const double qR5[6] = { /* for x in [8,4.5454]=1/[0.125,0.22001] */ +#else +static double qR5[6] = { /* for x in [8,4.5454]=1/[0.125,0.22001] */ +#endif + 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 */ +}; +#ifdef __STDC__ +static const double qS5[6] = { +#else +static double qS5[6] = { +#endif + 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 */ +}; + +#ifdef __STDC__ +static const double qR3[6] = {/* for x in [4.547,2.8571]=1/[0.2199,0.35001] */ +#else +static double qR3[6] = {/* for x in [4.547,2.8571]=1/[0.2199,0.35001] */ +#endif + 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 */ +}; +#ifdef __STDC__ +static const double qS3[6] = { +#else +static double qS3[6] = { +#endif + 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 */ +}; + +#ifdef __STDC__ +static const double qR2[6] = {/* for x in [2.8570,2]=1/[0.3499,0.5] */ +#else +static double qR2[6] = {/* for x in [2.8570,2]=1/[0.3499,0.5] */ +#endif + 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 */ +}; +#ifdef __STDC__ +static const double qS2[6] = { +#else +static double qS2[6] = { +#endif + 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 */ +}; + +#ifdef __STDC__ + static double qzero(double x) +#else + static double qzero(x) + double x; +#endif +{ +#ifdef __STDC__ + const double *p,*q; +#else + double *p,*q; +#endif + double s,r,z,z2,z4,z6,r1,r2,r3,s1,s2,s3; + int32_t ix; + GET_HIGH_WORD(ix,x); + ix &= 0x7fffffff; + if(ix>=0x40200000) {p = qR8; q= qS8;} + else if(ix>=0x40122E8B){p = qR5; q= qS5;} + else if(ix>=0x4006DB6D){p = qR3; q= qS3;} + else if(ix>=0x40000000){p = qR2; q= qS2;} + z = one/(x*x); +#ifdef DO_NOT_USE_THIS + 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]))))); +#else + 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]; +#endif + return (-.125 + r/s)/x; +} diff --git a/src/system/libroot/posix/glibc/arch/generic/e_j0f.c b/src/system/libroot/posix/glibc/arch/generic/e_j0f.c new file mode 100644 index 0000000000..b3b20524f9 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/e_j0f.c @@ -0,0 +1,442 @@ +/* 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. + * ==================================================== + */ + +#if defined(LIBM_SCCS) && !defined(lint) +static char rcsid[] = "$NetBSD: e_j0f.c,v 1.4 1995/05/10 20:45:25 jtc Exp $"; +#endif + +#include "math.h" +#include "math_private.h" + +#ifdef __STDC__ +static float pzerof(float), qzerof(float); +#else +static float pzerof(), qzerof(); +#endif + +#ifdef __STDC__ +static const float +#else +static float +#endif +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 */ + +#ifdef __STDC__ +static const float zero = 0.0; +#else +static float zero = 0.0; +#endif + +#ifdef __STDC__ + float __ieee754_j0f(float x) +#else + float __ieee754_j0f(x) + float x; +#endif +{ + 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)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 */ + if(huge+x>one) { /* 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)); + } +} + +#ifdef __STDC__ +static const float +#else +static float +#endif +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 */ + +#ifdef __STDC__ + float __ieee754_y0f(float x) +#else + float __ieee754_y0f(x) + float x; +#endif +{ + 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 */ + if(ix>=0x7f800000) return one/(x+x*x); + if(ix==0) return -one/zero; + if(hx<0) return zero/zero; + 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)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<=0x32000000) { /* x < 2**-27 */ + 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))); +} + +/* 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) + */ +#ifdef __STDC__ +static const float pR8[6] = { /* for x in [inf, 8]=1/[0,0.125] */ +#else +static float pR8[6] = { /* for x in [inf, 8]=1/[0,0.125] */ +#endif + 0.0000000000e+00, /* 0x00000000 */ + -7.0312500000e-02, /* 0xbd900000 */ + -8.0816707611e+00, /* 0xc1014e86 */ + -2.5706311035e+02, /* 0xc3808814 */ + -2.4852163086e+03, /* 0xc51b5376 */ + -5.2530439453e+03, /* 0xc5a4285a */ +}; +#ifdef __STDC__ +static const float pS8[5] = { +#else +static float pS8[5] = { +#endif + 1.1653436279e+02, /* 0x42e91198 */ + 3.8337448730e+03, /* 0x456f9beb */ + 4.0597855469e+04, /* 0x471e95db */ + 1.1675296875e+05, /* 0x47e4087c */ + 4.7627726562e+04, /* 0x473a0bba */ +}; +#ifdef __STDC__ +static const float pR5[6] = { /* for x in [8,4.5454]=1/[0.125,0.22001] */ +#else +static float pR5[6] = { /* for x in [8,4.5454]=1/[0.125,0.22001] */ +#endif + -1.1412546255e-11, /* 0xad48c58a */ + -7.0312492549e-02, /* 0xbd8fffff */ + -4.1596107483e+00, /* 0xc0851b88 */ + -6.7674766541e+01, /* 0xc287597b */ + -3.3123129272e+02, /* 0xc3a59d9b */ + -3.4643338013e+02, /* 0xc3ad3779 */ +}; +#ifdef __STDC__ +static const float pS5[5] = { +#else +static float pS5[5] = { +#endif + 6.0753936768e+01, /* 0x42730408 */ + 1.0512523193e+03, /* 0x44836813 */ + 5.9789707031e+03, /* 0x45bad7c4 */ + 9.6254453125e+03, /* 0x461665c8 */ + 2.4060581055e+03, /* 0x451660ee */ +}; + +#ifdef __STDC__ +static const float pR3[6] = {/* for x in [4.547,2.8571]=1/[0.2199,0.35001] */ +#else +static float pR3[6] = {/* for x in [4.547,2.8571]=1/[0.2199,0.35001] */ +#endif + -2.5470459075e-09, /* 0xb12f081b */ + -7.0311963558e-02, /* 0xbd8fffb8 */ + -2.4090321064e+00, /* 0xc01a2d95 */ + -2.1965976715e+01, /* 0xc1afba52 */ + -5.8079170227e+01, /* 0xc2685112 */ + -3.1447946548e+01, /* 0xc1fb9565 */ +}; +#ifdef __STDC__ +static const float pS3[5] = { +#else +static float pS3[5] = { +#endif + 3.5856033325e+01, /* 0x420f6c94 */ + 3.6151397705e+02, /* 0x43b4c1ca */ + 1.1936077881e+03, /* 0x44953373 */ + 1.1279968262e+03, /* 0x448cffe6 */ + 1.7358093262e+02, /* 0x432d94b8 */ +}; + +#ifdef __STDC__ +static const float pR2[6] = {/* for x in [2.8570,2]=1/[0.3499,0.5] */ +#else +static float pR2[6] = {/* for x in [2.8570,2]=1/[0.3499,0.5] */ +#endif + -8.8753431271e-08, /* 0xb3be98b7 */ + -7.0303097367e-02, /* 0xbd8ffb12 */ + -1.4507384300e+00, /* 0xbfb9b1cc */ + -7.6356959343e+00, /* 0xc0f4579f */ + -1.1193166733e+01, /* 0xc1331736 */ + -3.2336456776e+00, /* 0xc04ef40d */ +}; +#ifdef __STDC__ +static const float pS2[5] = { +#else +static float pS2[5] = { +#endif + 2.2220300674e+01, /* 0x41b1c32d */ + 1.3620678711e+02, /* 0x430834f0 */ + 2.7047027588e+02, /* 0x43873c32 */ + 1.5387539673e+02, /* 0x4319e01a */ + 1.4657617569e+01, /* 0x416a859a */ +}; + +#ifdef __STDC__ + static float pzerof(float x) +#else + static float pzerof(x) + float x; +#endif +{ +#ifdef __STDC__ + const float *p,*q; +#else + float *p,*q; +#endif + float z,r,s; + int32_t ix; + GET_FLOAT_WORD(ix,x); + ix &= 0x7fffffff; + if(ix>=0x41000000) {p = pR8; q= pS8;} + else if(ix>=0x40f71c58){p = pR5; q= pS5;} + else if(ix>=0x4036db68){p = pR3; q= pS3;} + else if(ix>=0x40000000){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) + */ +#ifdef __STDC__ +static const float qR8[6] = { /* for x in [inf, 8]=1/[0,0.125] */ +#else +static float qR8[6] = { /* for x in [inf, 8]=1/[0,0.125] */ +#endif + 0.0000000000e+00, /* 0x00000000 */ + 7.3242187500e-02, /* 0x3d960000 */ + 1.1768206596e+01, /* 0x413c4a93 */ + 5.5767340088e+02, /* 0x440b6b19 */ + 8.8591972656e+03, /* 0x460a6cca */ + 3.7014625000e+04, /* 0x471096a0 */ +}; +#ifdef __STDC__ +static const float qS8[6] = { +#else +static float qS8[6] = { +#endif + 1.6377603149e+02, /* 0x4323c6aa */ + 8.0983447266e+03, /* 0x45fd12c2 */ + 1.4253829688e+05, /* 0x480b3293 */ + 8.0330925000e+05, /* 0x49441ed4 */ + 8.4050156250e+05, /* 0x494d3359 */ + -3.4389928125e+05, /* 0xc8a7eb69 */ +}; + +#ifdef __STDC__ +static const float qR5[6] = { /* for x in [8,4.5454]=1/[0.125,0.22001] */ +#else +static float qR5[6] = { /* for x in [8,4.5454]=1/[0.125,0.22001] */ +#endif + 1.8408595828e-11, /* 0x2da1ec79 */ + 7.3242180049e-02, /* 0x3d95ffff */ + 5.8356351852e+00, /* 0x40babd86 */ + 1.3511157227e+02, /* 0x43071c90 */ + 1.0272437744e+03, /* 0x448067cd */ + 1.9899779053e+03, /* 0x44f8bf4b */ +}; +#ifdef __STDC__ +static const float qS5[6] = { +#else +static float qS5[6] = { +#endif + 8.2776611328e+01, /* 0x42a58da0 */ + 2.0778142090e+03, /* 0x4501dd07 */ + 1.8847289062e+04, /* 0x46933e94 */ + 5.6751113281e+04, /* 0x475daf1d */ + 3.5976753906e+04, /* 0x470c88c1 */ + -5.3543427734e+03, /* 0xc5a752be */ +}; + +#ifdef __STDC__ +static const float qR3[6] = {/* for x in [4.547,2.8571]=1/[0.2199,0.35001] */ +#else +static float qR3[6] = {/* for x in [4.547,2.8571]=1/[0.2199,0.35001] */ +#endif + 4.3774099900e-09, /* 0x3196681b */ + 7.3241114616e-02, /* 0x3d95ff70 */ + 3.3442313671e+00, /* 0x405607e3 */ + 4.2621845245e+01, /* 0x422a7cc5 */ + 1.7080809021e+02, /* 0x432acedf */ + 1.6673394775e+02, /* 0x4326bbe4 */ +}; +#ifdef __STDC__ +static const float qS3[6] = { +#else +static float qS3[6] = { +#endif + 4.8758872986e+01, /* 0x42430916 */ + 7.0968920898e+02, /* 0x44316c1c */ + 3.7041481934e+03, /* 0x4567825f */ + 6.4604252930e+03, /* 0x45c9e367 */ + 2.5163337402e+03, /* 0x451d4557 */ + -1.4924745178e+02, /* 0xc3153f59 */ +}; + +#ifdef __STDC__ +static const float qR2[6] = {/* for x in [2.8570,2]=1/[0.3499,0.5] */ +#else +static float qR2[6] = {/* for x in [2.8570,2]=1/[0.3499,0.5] */ +#endif + 1.5044444979e-07, /* 0x342189db */ + 7.3223426938e-02, /* 0x3d95f62a */ + 1.9981917143e+00, /* 0x3fffc4bf */ + 1.4495602608e+01, /* 0x4167edfd */ + 3.1666231155e+01, /* 0x41fd5471 */ + 1.6252708435e+01, /* 0x4182058c */ +}; +#ifdef __STDC__ +static const float qS2[6] = { +#else +static float qS2[6] = { +#endif + 3.0365585327e+01, /* 0x41f2ecb8 */ + 2.6934811401e+02, /* 0x4386ac8f */ + 8.4478375244e+02, /* 0x44533229 */ + 8.8293585205e+02, /* 0x445cbbe5 */ + 2.1266638184e+02, /* 0x4354aa98 */ + -5.3109550476e+00, /* 0xc0a9f358 */ +}; + +#ifdef __STDC__ + static float qzerof(float x) +#else + static float qzerof(x) + float x; +#endif +{ +#ifdef __STDC__ + const float *p,*q; +#else + float *p,*q; +#endif + float s,r,z; + int32_t ix; + GET_FLOAT_WORD(ix,x); + ix &= 0x7fffffff; + if(ix>=0x41000000) {p = qR8; q= qS8;} + else if(ix>=0x40f71c58){p = qR5; q= qS5;} + else if(ix>=0x4036db68){p = qR3; q= qS3;} + else if(ix>=0x40000000){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/src/system/libroot/posix/glibc/arch/generic/e_j1.c b/src/system/libroot/posix/glibc/arch/generic/e_j1.c new file mode 100644 index 0000000000..260492ae67 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/e_j1.c @@ -0,0 +1,530 @@ +/* @(#)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. +*/ + +#if defined(LIBM_SCCS) && !defined(lint) +static char rcsid[] = "$NetBSD: e_j1.c,v 1.8 1995/05/10 20:45:27 jtc Exp $"; +#endif + +/* __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 "math.h" +#include "math_private.h" + +#ifdef __STDC__ +static double pone(double), qone(double); +#else +static double pone(), qone(); +#endif + +#ifdef __STDC__ +static const double +#else +static double +#endif +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 */ + +#ifdef __STDC__ +static const double zero = 0.0; +#else +static double zero = 0.0; +#endif + +#ifdef __STDC__ + double __ieee754_j1(double x) +#else + double __ieee754_j1(x) + double x; +#endif +{ + 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(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(ix<0x3e400000) { /* |x|<2**-27 */ + if(huge+x>one) return 0.5*x;/* inexact if x!=0 necessary */ + } + z = x*x; +#ifdef DO_NOT_USE_THIS + r = z*(r00+z*(r01+z*(r02+z*r03))); + s = one+z*(s01+z*(s02+z*(s03+z*(s04+z*s05)))); + r *= x; +#else + 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; +#endif + return(x*0.5+r/s); +} + +#ifdef __STDC__ +static const double U0[5] = { +#else +static double U0[5] = { +#endif + -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 */ +}; +#ifdef __STDC__ +static const double V0[5] = { +#else +static double V0[5] = { +#endif + 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 */ +}; + +#ifdef __STDC__ + double __ieee754_y1(double x) +#else + double __ieee754_y1(x) + double x; +#endif +{ + 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(ix>=0x7ff00000) return one/(x+x*x); + if((ix|lx)==0) return -one/zero; + if(hx<0) return zero/zero; + 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(ix<=0x3c900000) { /* x < 2**-54 */ + return(-tpi/x); + } + z = x*x; +#ifdef DO_NOT_USE_THIS + 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])))); +#else + 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; +#endif + return(x*(u/v) + tpi*(__ieee754_j1(x)*__ieee754_log(x)-one/x)); +} + +/* 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) + */ + +#ifdef __STDC__ +static const double pr8[6] = { /* for x in [inf, 8]=1/[0,0.125] */ +#else +static double pr8[6] = { /* for x in [inf, 8]=1/[0,0.125] */ +#endif + 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 */ +}; +#ifdef __STDC__ +static const double ps8[5] = { +#else +static double ps8[5] = { +#endif + 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 */ +}; + +#ifdef __STDC__ +static const double pr5[6] = { /* for x in [8,4.5454]=1/[0.125,0.22001] */ +#else +static double pr5[6] = { /* for x in [8,4.5454]=1/[0.125,0.22001] */ +#endif + 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 */ +}; +#ifdef __STDC__ +static const double ps5[5] = { +#else +static double ps5[5] = { +#endif + 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 */ +}; + +#ifdef __STDC__ +static const double pr3[6] = { +#else +static double pr3[6] = {/* for x in [4.547,2.8571]=1/[0.2199,0.35001] */ +#endif + 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 */ +}; +#ifdef __STDC__ +static const double ps3[5] = { +#else +static double ps3[5] = { +#endif + 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 */ +}; + +#ifdef __STDC__ +static const double pr2[6] = {/* for x in [2.8570,2]=1/[0.3499,0.5] */ +#else +static double pr2[6] = {/* for x in [2.8570,2]=1/[0.3499,0.5] */ +#endif + 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 */ +}; +#ifdef __STDC__ +static const double ps2[5] = { +#else +static double ps2[5] = { +#endif + 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 */ +}; + +#ifdef __STDC__ + static double pone(double x) +#else + static double pone(x) + double x; +#endif +{ +#ifdef __STDC__ + const double *p,*q; +#else + double *p,*q; +#endif + double z,r,s,r1,r2,r3,s1,s2,s3,z2,z4; + int32_t ix; + GET_HIGH_WORD(ix,x); + ix &= 0x7fffffff; + if(ix>=0x40200000) {p = pr8; q= ps8;} + else if(ix>=0x40122E8B){p = pr5; q= ps5;} + else if(ix>=0x4006DB6D){p = pr3; q= ps3;} + else if(ix>=0x40000000){p = pr2; q= ps2;} + z = one/(x*x); +#ifdef DO_NOT_USE_THIS + 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])))); +#else + 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; +#endif + 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) + */ + +#ifdef __STDC__ +static const double qr8[6] = { /* for x in [inf, 8]=1/[0,0.125] */ +#else +static double qr8[6] = { /* for x in [inf, 8]=1/[0,0.125] */ +#endif + 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 */ +}; +#ifdef __STDC__ +static const double qs8[6] = { +#else +static double qs8[6] = { +#endif + 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 */ +}; + +#ifdef __STDC__ +static const double qr5[6] = { /* for x in [8,4.5454]=1/[0.125,0.22001] */ +#else +static double qr5[6] = { /* for x in [8,4.5454]=1/[0.125,0.22001] */ +#endif + -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 */ +}; +#ifdef __STDC__ +static const double qs5[6] = { +#else +static double qs5[6] = { +#endif + 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 */ +}; + +#ifdef __STDC__ +static const double qr3[6] = { +#else +static double qr3[6] = {/* for x in [4.547,2.8571]=1/[0.2199,0.35001] */ +#endif + -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 */ +}; +#ifdef __STDC__ +static const double qs3[6] = { +#else +static double qs3[6] = { +#endif + 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 */ +}; + +#ifdef __STDC__ +static const double qr2[6] = {/* for x in [2.8570,2]=1/[0.3499,0.5] */ +#else +static double qr2[6] = {/* for x in [2.8570,2]=1/[0.3499,0.5] */ +#endif + -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 */ +}; +#ifdef __STDC__ +static const double qs2[6] = { +#else +static double qs2[6] = { +#endif + 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 */ +}; + +#ifdef __STDC__ + static double qone(double x) +#else + static double qone(x) + double x; +#endif +{ +#ifdef __STDC__ + const double *p,*q; +#else + double *p,*q; +#endif + double s,r,z,r1,r2,r3,s1,s2,s3,z2,z4,z6; + int32_t ix; + GET_HIGH_WORD(ix,x); + ix &= 0x7fffffff; + if(ix>=0x40200000) {p = qr8; q= qs8;} + else if(ix>=0x40122E8B){p = qr5; q= qs5;} + else if(ix>=0x4006DB6D){p = qr3; q= qs3;} + else if(ix>=0x40000000){p = qr2; q= qs2;} + z = one/(x*x); +#ifdef DO_NOT_USE_THIS + 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]))))); +#else + 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]; +#endif + return (.375 + r/s)/x; +} diff --git a/src/system/libroot/posix/glibc/arch/generic/e_j1f.c b/src/system/libroot/posix/glibc/arch/generic/e_j1f.c new file mode 100644 index 0000000000..26f606a08a --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/e_j1f.c @@ -0,0 +1,442 @@ +/* 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. + * ==================================================== + */ + +#if defined(LIBM_SCCS) && !defined(lint) +static char rcsid[] = "$NetBSD: e_j1f.c,v 1.4 1995/05/10 20:45:31 jtc Exp $"; +#endif + +#include "math.h" +#include "math_private.h" + +#ifdef __STDC__ +static float ponef(float), qonef(float); +#else +static float ponef(), qonef(); +#endif + +#ifdef __STDC__ +static const float +#else +static float +#endif +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 */ + +#ifdef __STDC__ +static const float zero = 0.0; +#else +static float zero = 0.0; +#endif + +#ifdef __STDC__ + float __ieee754_j1f(float x) +#else + float __ieee754_j1f(x) + float x; +#endif +{ + float z, s,c,ss,cc,r,u,v,y; + int32_t hx,ix; + + GET_FLOAT_WORD(hx,x); + ix = hx&0x7fffffff; + if(ix>=0x7f800000) 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(ix<0x32000000) { /* |x|<2**-27 */ + if(huge+x>one) return (float)0.5*x;/* inexact if x!=0 necessary */ + } + 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); +} + +#ifdef __STDC__ +static const float U0[5] = { +#else +static float U0[5] = { +#endif + -1.9605709612e-01, /* 0xbe48c331 */ + 5.0443872809e-02, /* 0x3d4e9e3c */ + -1.9125689287e-03, /* 0xbafaaf2a */ + 2.3525259166e-05, /* 0x37c5581c */ + -9.1909917899e-08, /* 0xb3c56003 */ +}; +#ifdef __STDC__ +static const float V0[5] = { +#else +static float V0[5] = { +#endif + 1.9916731864e-02, /* 0x3ca3286a */ + 2.0255257550e-04, /* 0x3954644b */ + 1.3560879779e-06, /* 0x35b602d4 */ + 6.2274145840e-09, /* 0x31d5f8eb */ + 1.6655924903e-11, /* 0x2d9281cf */ +}; + +#ifdef __STDC__ + float __ieee754_y1f(float x) +#else + float __ieee754_y1f(x) + float x; +#endif +{ + 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(ix>=0x7f800000) return one/(x+x*x); + if(ix==0) return -one/zero; + if(hx<0) return zero/zero; + 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; + } + /* 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(ix<=0x24800000) { /* x < 2**-54 */ + return(-tpi/x); + } + 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)); +} + +/* 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) + */ + +#ifdef __STDC__ +static const float pr8[6] = { /* for x in [inf, 8]=1/[0,0.125] */ +#else +static float pr8[6] = { /* for x in [inf, 8]=1/[0,0.125] */ +#endif + 0.0000000000e+00, /* 0x00000000 */ + 1.1718750000e-01, /* 0x3df00000 */ + 1.3239480972e+01, /* 0x4153d4ea */ + 4.1205184937e+02, /* 0x43ce06a3 */ + 3.8747453613e+03, /* 0x45722bed */ + 7.9144794922e+03, /* 0x45f753d6 */ +}; +#ifdef __STDC__ +static const float ps8[5] = { +#else +static float ps8[5] = { +#endif + 1.1420736694e+02, /* 0x42e46a2c */ + 3.6509309082e+03, /* 0x45642ee5 */ + 3.6956207031e+04, /* 0x47105c35 */ + 9.7602796875e+04, /* 0x47bea166 */ + 3.0804271484e+04, /* 0x46f0a88b */ +}; + +#ifdef __STDC__ +static const float pr5[6] = { /* for x in [8,4.5454]=1/[0.125,0.22001] */ +#else +static float pr5[6] = { /* for x in [8,4.5454]=1/[0.125,0.22001] */ +#endif + 1.3199052094e-11, /* 0x2d68333f */ + 1.1718749255e-01, /* 0x3defffff */ + 6.8027510643e+00, /* 0x40d9b023 */ + 1.0830818176e+02, /* 0x42d89dca */ + 5.1763616943e+02, /* 0x440168b7 */ + 5.2871520996e+02, /* 0x44042dc6 */ +}; +#ifdef __STDC__ +static const float ps5[5] = { +#else +static float ps5[5] = { +#endif + 5.9280597687e+01, /* 0x426d1f55 */ + 9.9140142822e+02, /* 0x4477d9b1 */ + 5.3532670898e+03, /* 0x45a74a23 */ + 7.8446904297e+03, /* 0x45f52586 */ + 1.5040468750e+03, /* 0x44bc0180 */ +}; + +#ifdef __STDC__ +static const float pr3[6] = { +#else +static float pr3[6] = {/* for x in [4.547,2.8571]=1/[0.2199,0.35001] */ +#endif + 3.0250391081e-09, /* 0x314fe10d */ + 1.1718686670e-01, /* 0x3defffab */ + 3.9329774380e+00, /* 0x407bb5e7 */ + 3.5119403839e+01, /* 0x420c7a45 */ + 9.1055007935e+01, /* 0x42b61c2a */ + 4.8559066772e+01, /* 0x42423c7c */ +}; +#ifdef __STDC__ +static const float ps3[5] = { +#else +static float ps3[5] = { +#endif + 3.4791309357e+01, /* 0x420b2a4d */ + 3.3676245117e+02, /* 0x43a86198 */ + 1.0468714600e+03, /* 0x4482dbe3 */ + 8.9081134033e+02, /* 0x445eb3ed */ + 1.0378793335e+02, /* 0x42cf936c */ +}; + +#ifdef __STDC__ +static const float pr2[6] = {/* for x in [2.8570,2]=1/[0.3499,0.5] */ +#else +static float pr2[6] = {/* for x in [2.8570,2]=1/[0.3499,0.5] */ +#endif + 1.0771083225e-07, /* 0x33e74ea8 */ + 1.1717621982e-01, /* 0x3deffa16 */ + 2.3685150146e+00, /* 0x401795c0 */ + 1.2242610931e+01, /* 0x4143e1bc */ + 1.7693971634e+01, /* 0x418d8d41 */ + 5.0735230446e+00, /* 0x40a25a4d */ +}; +#ifdef __STDC__ +static const float ps2[5] = { +#else +static float ps2[5] = { +#endif + 2.1436485291e+01, /* 0x41ab7dec */ + 1.2529022980e+02, /* 0x42fa9499 */ + 2.3227647400e+02, /* 0x436846c7 */ + 1.1767937469e+02, /* 0x42eb5bd7 */ + 8.3646392822e+00, /* 0x4105d590 */ +}; + +#ifdef __STDC__ + static float ponef(float x) +#else + static float ponef(x) + float x; +#endif +{ +#ifdef __STDC__ + const float *p,*q; +#else + float *p,*q; +#endif + float z,r,s; + int32_t ix; + GET_FLOAT_WORD(ix,x); + ix &= 0x7fffffff; + if(ix>=0x41000000) {p = pr8; q= ps8;} + else if(ix>=0x40f71c58){p = pr5; q= ps5;} + else if(ix>=0x4036db68){p = pr3; q= ps3;} + else if(ix>=0x40000000){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) + */ + +#ifdef __STDC__ +static const float qr8[6] = { /* for x in [inf, 8]=1/[0,0.125] */ +#else +static float qr8[6] = { /* for x in [inf, 8]=1/[0,0.125] */ +#endif + 0.0000000000e+00, /* 0x00000000 */ + -1.0253906250e-01, /* 0xbdd20000 */ + -1.6271753311e+01, /* 0xc1822c8d */ + -7.5960174561e+02, /* 0xc43de683 */ + -1.1849806641e+04, /* 0xc639273a */ + -4.8438511719e+04, /* 0xc73d3683 */ +}; +#ifdef __STDC__ +static const float qs8[6] = { +#else +static float qs8[6] = { +#endif + 1.6139537048e+02, /* 0x43216537 */ + 7.8253862305e+03, /* 0x45f48b17 */ + 1.3387534375e+05, /* 0x4802bcd6 */ + 7.1965775000e+05, /* 0x492fb29c */ + 6.6660125000e+05, /* 0x4922be94 */ + -2.9449025000e+05, /* 0xc88fcb48 */ +}; + +#ifdef __STDC__ +static const float qr5[6] = { /* for x in [8,4.5454]=1/[0.125,0.22001] */ +#else +static float qr5[6] = { /* for x in [8,4.5454]=1/[0.125,0.22001] */ +#endif + -2.0897993405e-11, /* 0xadb7d219 */ + -1.0253904760e-01, /* 0xbdd1fffe */ + -8.0564479828e+00, /* 0xc100e736 */ + -1.8366960144e+02, /* 0xc337ab6b */ + -1.3731937256e+03, /* 0xc4aba633 */ + -2.6124443359e+03, /* 0xc523471c */ +}; +#ifdef __STDC__ +static const float qs5[6] = { +#else +static float qs5[6] = { +#endif + 8.1276550293e+01, /* 0x42a28d98 */ + 1.9917987061e+03, /* 0x44f8f98f */ + 1.7468484375e+04, /* 0x468878f8 */ + 4.9851425781e+04, /* 0x4742bb6d */ + 2.7948074219e+04, /* 0x46da5826 */ + -4.7191835938e+03, /* 0xc5937978 */ +}; + +#ifdef __STDC__ +static const float qr3[6] = { +#else +static float qr3[6] = {/* for x in [4.547,2.8571]=1/[0.2199,0.35001] */ +#endif + -5.0783124372e-09, /* 0xb1ae7d4f */ + -1.0253783315e-01, /* 0xbdd1ff5b */ + -4.6101160049e+00, /* 0xc0938612 */ + -5.7847221375e+01, /* 0xc267638e */ + -2.2824453735e+02, /* 0xc3643e9a */ + -2.1921012878e+02, /* 0xc35b35cb */ +}; +#ifdef __STDC__ +static const float qs3[6] = { +#else +static float qs3[6] = { +#endif + 4.7665153503e+01, /* 0x423ea91e */ + 6.7386511230e+02, /* 0x4428775e */ + 3.3801528320e+03, /* 0x45534272 */ + 5.5477290039e+03, /* 0x45ad5dd5 */ + 1.9031191406e+03, /* 0x44ede3d0 */ + -1.3520118713e+02, /* 0xc3073381 */ +}; + +#ifdef __STDC__ +static const float qr2[6] = {/* for x in [2.8570,2]=1/[0.3499,0.5] */ +#else +static float qr2[6] = {/* for x in [2.8570,2]=1/[0.3499,0.5] */ +#endif + -1.7838172539e-07, /* 0xb43f8932 */ + -1.0251704603e-01, /* 0xbdd1f475 */ + -2.7522056103e+00, /* 0xc0302423 */ + -1.9663616180e+01, /* 0xc19d4f16 */ + -4.2325313568e+01, /* 0xc2294d1f */ + -2.1371921539e+01, /* 0xc1aaf9b2 */ +}; +#ifdef __STDC__ +static const float qs2[6] = { +#else +static float qs2[6] = { +#endif + 2.9533363342e+01, /* 0x41ec4454 */ + 2.5298155212e+02, /* 0x437cfb47 */ + 7.5750280762e+02, /* 0x443d602e */ + 7.3939318848e+02, /* 0x4438d92a */ + 1.5594900513e+02, /* 0x431bf2f2 */ + -4.9594988823e+00, /* 0xc09eb437 */ +}; + +#ifdef __STDC__ + static float qonef(float x) +#else + static float qonef(x) + float x; +#endif +{ +#ifdef __STDC__ + const float *p,*q; +#else + float *p,*q; +#endif + float s,r,z; + int32_t ix; + GET_FLOAT_WORD(ix,x); + ix &= 0x7fffffff; + if(ix>=0x40200000) {p = qr8; q= qs8;} + else if(ix>=0x40f71c58){p = qr5; q= qs5;} + else if(ix>=0x4036db68){p = qr3; q= qs3;} + else if(ix>=0x40000000){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/src/system/libroot/posix/glibc/arch/generic/e_jn.c b/src/system/libroot/posix/glibc/arch/generic/e_jn.c new file mode 100644 index 0000000000..64ba79929d --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/e_jn.c @@ -0,0 +1,287 @@ +/* @(#)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. + * ==================================================== + */ + +#if defined(LIBM_SCCS) && !defined(lint) +static char rcsid[] = "$NetBSD: e_jn.c,v 1.9 1995/05/10 20:45:34 jtc Exp $"; +#endif + +/* + * __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 nx, 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 "math.h" +#include "math_private.h" + +#ifdef __STDC__ +static const double +#else +static double +#endif +invsqrtpi= 5.64189583547756279280e-01, /* 0x3FE20DD7, 0x50429B6D */ +two = 2.00000000000000000000e+00, /* 0x40000000, 0x00000000 */ +one = 1.00000000000000000000e+00; /* 0x3FF00000, 0x00000000 */ + +#ifdef __STDC__ +static const double zero = 0.00000000000000000000e+00; +#else +static double zero = 0.00000000000000000000e+00; +#endif + +#ifdef __STDC__ + double __ieee754_jn(int n, double x) +#else + double __ieee754_jn(n,x) + int n; double x; +#endif +{ + int32_t i,hx,ix,lx, sgn; + double a, b, temp, di; + 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((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); + if((ix|lx)==0||ix>=0x7ff00000) /* if x is 0 or inf */ + b = 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;i33) /* 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; + } + } + } + b = (t*__ieee754_j0(x)/b); + } + } + if(sgn==1) return -b; else return b; +} + +#ifdef __STDC__ + double __ieee754_yn(int n, double x) +#else + double __ieee754_yn(n,x) + int n; double x; +#endif +{ + int32_t i,hx,ix,lx; + int32_t sign; + double a, b, temp; + + EXTRACT_WORDS(hx,lx,x); + ix = 0x7fffffff&hx; + /* if Y(n,NaN) is NaN */ + if((ix|((u_int32_t)(lx|-lx))>>31)>0x7ff00000) return x+x; + if((ix|lx)==0) return -one/zero; + if(hx<0) return zero/zero; + sign = 1; + if(n<0){ + n = -n; + sign = 1 - ((n&1)<<1); + } + if(n==0) return(__ieee754_y0(x)); + if(n==1) return(sign*__ieee754_y1(x)); + if(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;i0) return b; else return -b; +} diff --git a/src/system/libroot/posix/glibc/arch/generic/e_jnf.c b/src/system/libroot/posix/glibc/arch/generic/e_jnf.c new file mode 100644 index 0000000000..34c4d95a32 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/e_jnf.c @@ -0,0 +1,212 @@ +/* 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. + * ==================================================== + */ + +#if defined(LIBM_SCCS) && !defined(lint) +static char rcsid[] = "$NetBSD: e_jnf.c,v 1.5 1995/05/10 20:45:37 jtc Exp $"; +#endif + +#include "math.h" +#include "math_private.h" + +#ifdef __STDC__ +static const float +#else +static float +#endif +two = 2.0000000000e+00, /* 0x40000000 */ +one = 1.0000000000e+00; /* 0x3F800000 */ + +#ifdef __STDC__ +static const float zero = 0.0000000000e+00; +#else +static float zero = 0.0000000000e+00; +#endif + +#ifdef __STDC__ + float __ieee754_jnf(int n, float x) +#else + float __ieee754_jnf(n,x) + int n; float x; +#endif +{ + 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(ix>0x7f800000) 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); + if(ix==0||ix>=0x7f800000) /* if x is 0 or inf */ + b = 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;i33) /* 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; + } + } + } + b = (t*__ieee754_j0f(x)/b); + } + } + if(sgn==1) return -b; else return b; +} + +#ifdef __STDC__ + float __ieee754_ynf(int n, float x) +#else + float __ieee754_ynf(n,x) + int n; float x; +#endif +{ + 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(ix>0x7f800000) return x+x; + if(ix==0) return -one/zero; + if(hx<0) return zero/zero; + sign = 1; + if(n<0){ + n = -n; + sign = 1 - ((n&1)<<1); + } + if(n==0) return(__ieee754_y0f(x)); + if(n==1) return(sign*__ieee754_y1f(x)); + if(ix==0x7f800000) return zero; + + a = __ieee754_y0f(x); + b = __ieee754_y1f(x); + /* quit if b is -inf */ + GET_FLOAT_WORD(ib,b); + for(i=1;i0) return b; else return -b; +} diff --git a/src/system/libroot/posix/glibc/arch/generic/e_lgamma_r.c b/src/system/libroot/posix/glibc/arch/generic/e_lgamma_r.c new file mode 100644 index 0000000000..cc44b048f4 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/e_lgamma_r.c @@ -0,0 +1,312 @@ +/* @(#)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. + * ==================================================== + */ + +#if defined(LIBM_SCCS) && !defined(lint) +static char rcsid[] = "$NetBSD: e_lgamma_r.c,v 1.7 1995/05/10 20:45:42 jtc Exp $"; +#endif + +/* __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" + +#ifdef __STDC__ +static const double +#else +static double +#endif +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 */ + +#ifdef __STDC__ +static const double zero= 0.00000000000000000000e+00; +#else +static double zero= 0.00000000000000000000e+00; +#endif + +#ifdef __STDC__ + static double sin_pi(double x) +#else + static double sin_pi(x) + double x; +#endif +{ + 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; +} + + +#ifdef __STDC__ + double __ieee754_lgamma_r(double x, int *signgamp) +#else + double __ieee754_lgamma_r(x,signgamp) + double x; int *signgamp; +#endif +{ + 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(ix>=0x7ff00000) return x*x; + if((ix|lx)==0) return one/fabs(x); + if(ix<0x3b900000) { /* |x|<2**-70, return -log(|x|) */ + if(hx<0) { + *signgamp = -1; + return -__ieee754_log(-x); + } else return -__ieee754_log(x); + } + if(hx<0) { + if(ix>=0x43300000) /* |x|>=2**52, must be -integer */ + return x/zero; + t = sin_pi(x); + if(t==zero) return one/fabsf(t); /* -integer */ + nadj = __ieee754_log(pi/fabs(t*x)); + if(t=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 = x*(__ieee754_log(x)-one); + if(hx<0) r = nadj - r; + return r; +} diff --git a/src/system/libroot/posix/glibc/arch/generic/e_lgammaf_r.c b/src/system/libroot/posix/glibc/arch/generic/e_lgammaf_r.c new file mode 100644 index 0000000000..5ebebb77af --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/e_lgammaf_r.c @@ -0,0 +1,248 @@ +/* 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. + * ==================================================== + */ + +#if defined(LIBM_SCCS) && !defined(lint) +static char rcsid[] = "$NetBSD: e_lgammaf_r.c,v 1.3 1995/05/10 20:45:47 jtc Exp $"; +#endif + +#include "math.h" +#include "math_private.h" + +#ifdef __STDC__ +static const float +#else +static float +#endif +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 */ + +#ifdef __STDC__ +static const float zero= 0.0000000000e+00; +#else +static float zero= 0.0000000000e+00; +#endif + +#ifdef __STDC__ + static float sin_pif(float x) +#else + static float sin_pif(x) + float x; +#endif +{ + 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; +} + + +#ifdef __STDC__ + float __ieee754_lgammaf_r(float x, int *signgamp) +#else + float __ieee754_lgammaf_r(x,signgamp) + float x; int *signgamp; +#endif +{ + 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(ix>=0x7f800000) return x*x; + if(ix==0) return one/fabsf(x); + if(ix<0x1c800000) { /* |x|<2**-70, 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 x/zero; + t = sin_pif(x); + if(t==zero) return one/fabsf(t); /* -integer */ + nadj = __ieee754_logf(pi/fabsf(t*x)); + if(t=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**58 */ + } else if (ix < 0x5c800000) { + 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**58 <= x <= inf */ + r = x*(__ieee754_logf(x)-one); + if(hx<0) r = nadj - r; + return r; +} diff --git a/src/system/libroot/posix/glibc/arch/generic/e_log.c b/src/system/libroot/posix/glibc/arch/generic/e_log.c new file mode 100644 index 0000000000..1a9967b546 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/e_log.c @@ -0,0 +1,203 @@ +/* + * IBM Accurate Mathematical Library + * written by International Business Machines Corp. + * Copyright (C) 2001 Free Software Foundation + * + * 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, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ +/*********************************************************************/ +/* */ +/* 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_private.h" + +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 __ieee754_log(double x) { +#define M 4 + static const int pr[M]={8,10,18,32}; + int i,j,n,ux,dx,p; +#if 0 + int k; +#endif + 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,t3,t4,t5,t6,t7,t8,t,ra,rb,ww, + a0,aa0,s1,s2,ss2,s3,ss3,a1,aa1,a,aa,b,bb,c; + 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 (ux < 0x00100000) { + if (((ux & 0x7fffffff) | dx) == 0) return MHALF/ZERO; /* return -INF */ + if (ux < 0) return (x-x)/ZERO; /* return NaN */ + n -= 54; x *= two54.d; /* scale x */ + num.d = x; + } + if (ux >= 0x7ff00000) return x+x; /* INF or NaN */ + + /* Regular values of x */ + + w = x-ONE; + if (ABS(w) > U03) { goto case_03; } + + + /*--- 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 = (b0.d+w*(b1.d+w*(b2.d+w*(b3.d+w*(b4.d+ + w*(b5.d+w*(b6.d+w*(b7.d+w*b8.d))))))))*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 = d11.d+w*(d12.d+w*(d13.d+w*(d14.d+w*(d15.d+w*(d16.d+ + w*(d17.d+w*(d18.d+w*(d19.d+w*d20.d)))))))); + EMULV(w,a,s2,ss2,t1,t2,t3,t4,t5) + ADD2(d10.d,dd10.d,s2,ss2,s3,ss3,t1,t2) + MUL2(w,ZERO,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,ZERO,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,ZERO,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,ZERO,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,ZERO,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,ZERO,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,ZERO,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,ZERO,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,ZERO,s3,ss3,s2,ss2,t1,t2,t3,t4,t5,t6,t7,t8) + MUL2(w,ZERO,s2,ss2,s3,ss3,t1,t2,t3,t4,t5,t6,t7,t8) + ADD2(w,ZERO, 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=(ONE+(i-75)*DEL_U)*(ONE+(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*((ONE-sa)-sb); + EADD(r0,t,ra,rb) + + /* Compute w */ + MUL2(q,ZERO,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= 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); + SET_HIGH_WORD(x,hx); + z = y*log10_2lo + ivln10*__ieee754_log(x); + return z+y*log10_2hi; +} diff --git a/src/system/libroot/posix/glibc/arch/generic/e_log10f.c b/src/system/libroot/posix/glibc/arch/generic/e_log10f.c new file mode 100644 index 0000000000..cea3d9156b --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/e_log10f.c @@ -0,0 +1,67 @@ +/* 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. + * ==================================================== + */ + +#if defined(LIBM_SCCS) && !defined(lint) +static char rcsid[] = "$NetBSD: e_log10f.c,v 1.5 1995/05/10 20:45:53 jtc Exp $"; +#endif + +#include "math.h" +#include "math_private.h" + +#ifdef __STDC__ +static const float +#else +static float +#endif +two25 = 3.3554432000e+07, /* 0x4c000000 */ +ivln10 = 4.3429449201e-01, /* 0x3ede5bd9 */ +log10_2hi = 3.0102920532e-01, /* 0x3e9a2080 */ +log10_2lo = 7.9034151668e-07; /* 0x355427db */ + +#ifdef __STDC__ +static const float zero = 0.0; +#else +static float zero = 0.0; +#endif + +#ifdef __STDC__ + float __ieee754_log10f(float x) +#else + float __ieee754_log10f(x) + float x; +#endif +{ + float y,z; + int32_t i,k,hx; + + GET_FLOAT_WORD(hx,x); + + k=0; + if (hx < 0x00800000) { /* x < 2**-126 */ + if ((hx&0x7fffffff)==0) + return -two25/(x-x); /* log(+-0)=-inf */ + if (hx<0) return (x-x)/(x-x); /* log(-#) = NaN */ + k -= 25; x *= two25; /* subnormal number, scale up x */ + GET_FLOAT_WORD(hx,x); + } + if (hx >= 0x7f800000) return x+x; + k += (hx>>23)-127; + i = ((u_int32_t)k&0x80000000)>>31; + hx = (hx&0x007fffff)|((0x7f-i)<<23); + y = (float)(k+i); + SET_FLOAT_WORD(x,hx); + z = y*log10_2lo + ivln10*__ieee754_logf(x); + return z+y*log10_2hi; +} diff --git a/src/system/libroot/posix/glibc/arch/generic/e_logf.c b/src/system/libroot/posix/glibc/arch/generic/e_logf.c new file mode 100644 index 0000000000..de8f869df4 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/e_logf.c @@ -0,0 +1,99 @@ +/* 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. + * ==================================================== + */ + +#if defined(LIBM_SCCS) && !defined(lint) +static char rcsid[] = "$NetBSD: e_logf.c,v 1.4 1995/05/10 20:45:54 jtc Exp $"; +#endif + +#include "math.h" +#include "math_private.h" + +#ifdef __STDC__ +static const float +#else +static float +#endif +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 */ + +#ifdef __STDC__ +static const float zero = 0.0; +#else +static float zero = 0.0; +#endif + +#ifdef __STDC__ + float __ieee754_logf(float x) +#else + float __ieee754_logf(x) + float x; +#endif +{ + 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 ((ix&0x7fffffff)==0) + return -two25/(x-x); /* log(+-0)=-inf */ + if (ix<0) return (x-x)/(x-x); /* log(-#) = NaN */ + k -= 25; x *= two25; /* subnormal number, scale up x */ + GET_FLOAT_WORD(ix,x); + } + if (ix >= 0x7f800000) 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); + } +} diff --git a/src/system/libroot/posix/glibc/arch/generic/e_pow.c b/src/system/libroot/posix/glibc/arch/generic/e_pow.c new file mode 100644 index 0000000000..e4be5c6ebf --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/e_pow.c @@ -0,0 +1,388 @@ +/* + * IBM Accurate Mathematical Library + * written by International Business Machines Corp. + * Copyright (C) 2001, 2002 Free Software Foundation + * + * 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, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ +/***************************************************************************/ +/* MODULE_NAME: upow.c */ +/* */ +/* FUNCTIONS: upow */ +/* power1 */ +/* 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 "endian.h" +#include "upow.h" +#include "dla.h" +#include "mydefs.h" +#include "MathLib.h" +#include "upow.tbl" +#include "math_private.h" + + +double __exp1(double x, double xx, double error); +static double log1(double x, double *delta, double *error); +static double 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 __ieee754_pow(double x, double y) { + double z,a,aa,error, t,a1,a2,y1,y2; +#if 0 + double gor=1.0; +#endif + 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; + /* Checking if x is not too small to compute */ + if (((qx==0x7ff00000)&&(u.i[LOW_HALF]!=0))||(qx>0x7ff00000)) return NaNQ.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 */ + z = log1(x,&aa,&error); /* x^y =e^(y log (X)) */ + t = y*134217729.0; + y1 = t - (t-y); + y2 = y - y1; + t = z*134217729.0; + 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*ABS(y); + t = __exp1(a1,a2,1.9e16*error); /* return -10 or 0 if wasn't computed exactly */ + return (t>0)?t:power1(x,y); + } + + if (x == 0) { + if (((v.i[HIGH_HALF] & 0x7fffffff) == 0x7ff00000 && v.i[LOW_HALF] != 0) + || (v.i[HIGH_HALF] & 0x7fffffff) > 0x7ff00000) + return y; + if (ABS(y) > 1.0e20) return (y>0)?0:INF.x; + k = checkint(y); + if (k == -1) + return y < 0 ? 1.0/x : x; + else + return y < 0 ? 1.0/ABS(x) : 0.0; /* return 0 */ + } + /* if x<0 */ + if (u.i[HIGH_HALF] < 0) { + k = checkint(y); + if (k==0) { + if ((v.i[HIGH_HALF] & 0x7fffffff) == 0x7ff00000 && v.i[LOW_HALF] == 0) { + 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 (u.i[HIGH_HALF] == 0xfff00000 && u.i[LOW_HALF] == 0) + return y < 0 ? 0.0 : INF.x; + return NaNQ.x; /* y not integer and x<0 */ + } + else if (u.i[HIGH_HALF] == 0xfff00000 && u.i[LOW_HALF] == 0) + { + if (k < 0) + return y < 0 ? nZERO.x : nINF.x; + else + return y < 0 ? 0.0 : INF.x; + } + return (k==1)?__ieee754_pow(-x,y):-__ieee754_pow(-x,y); /* if y even or odd */ + } + /* x>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)) return NaNQ.x; + /* if 0 0x7ff00000 || (qy == 0x7ff00000 && v.i[LOW_HALF] != 0)) + return x == 1.0 ? 1.0 : NaNQ.x; + /* if y<2^-0x7fe */ + + if (qx == 0x7ff00000) /* x= 2^-0x3ff */ + {if (y == 0) return NaNQ.x; + return (y>0)?x:0; } + + if (qy > 0x45f00000 && qy < 0x7ff00000) { + 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; + } + + 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 */ +} + +/**************************************************************************/ +/* Computing x^y using more accurate but more slow log routine */ +/**************************************************************************/ +static double power1(double x, double y) { + double z,a,aa,error, t,a1,a2,y1,y2; + z = log2(x,&aa,&error); + t = y*134217729.0; + y1 = t - (t-y); + y2 = y - y1; + t = z*134217729.0; + 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*ABS(y); + t = __exp1(a1,a2,1.9e16*error); + return (t >= 0)?t:__slowpow(x,y,z); +} + +/****************************************************************************/ +/* Computing log(x) (x is left argument). The result is the returned double */ +/* + the parameter delta. */ +/* The result is bounded by error (rightmost argument) */ +/****************************************************************************/ +static double log1(double x, double *delta, double *error) { + int i,j,m; +#if 0 + int n; +#endif + double uu,vv,eps,nx,e,e1,e2,t,t1,t2,res,add=0; +#if 0 + double cor; +#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; + if (m < 0x00100000) /* 1>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*ABS(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 */ +} + +/****************************************************************************/ +/* More slow but more accurate routine of log */ +/* Computing log(x)(x is left argument).The result is return double + delta.*/ +/* The result is bounded by error (right argument) */ +/****************************************************************************/ +static double log2(double x, double *delta, double *error) { + int i,j,m; +#if 0 + int n; +#endif + double uu,vv,eps,nx,e,e1,e2,t,t1,t2,res,add=0; +#if 0 + double cor; +#endif + double ou1,ou2,lu1,lu2,ov,lv1,lv2,a,a1,a2; + double y,yy,z,zz,j1,j2,j3,j4,j5,j6,j7,j8; + 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*ABS(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; + } +} + +/**********************************************************************/ +/* Routine 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 checkint(double x) { + union {int4 i[2]; double x;} u; + int k,m,n; +#if 0 + int l; +#endif + 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)) return 0; /* if not integer */ + return (n<<(k-21))?-1:1; + } + if (n) return 0; /*if not integer*/ + if (k == 20) return (m&1)? -1:1; + if (m<<(k+12)) return 0; + return (m<<(k+11))?-1:1; +} diff --git a/src/system/libroot/posix/glibc/arch/generic/e_powf.c b/src/system/libroot/posix/glibc/arch/generic/e_powf.c new file mode 100644 index 0000000000..9f520804a4 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/e_powf.c @@ -0,0 +1,257 @@ +/* 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. + * ==================================================== + */ + +#if defined(LIBM_SCCS) && !defined(lint) +static char rcsid[] = "$NetBSD: e_powf.c,v 1.7 1996/04/08 15:43:44 phil Exp $"; +#endif + +#include "math.h" +#include "math_private.h" + +static const float huge = 1.0e+30, tiny = 1.0e-30; + +#ifdef __STDC__ +static const float +#else +static float +#endif +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 = 9.6179199219e-01, /* 0x3f763800 =head of cp */ +cp_l = 4.7017383622e-06, /* 0x369dc3a0 =tail of 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*/ + +#ifdef __STDC__ + float __ieee754_powf(float x, float y) +#else + float __ieee754_powf(x,y) + float x, y; +#endif +{ + 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) return one; + + /* x==+-1 */ + if(x == 1.0) return one; + if(x == -1.0 && isinf(y)) return one; + + /* +-NaN return x+y */ + if(ix > 0x7f800000 || + iy > 0x7f800000) + 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 (iy==0x7f800000) { /* 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(hx>=0) /* x >= +0 */ + return __ieee754_sqrtf(x); + } + + ax = fabsf(x); + /* special value of x */ + if(ix==0x7f800000||ix==0||ix==0x3f800000){ + 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(((((u_int32_t)hx>>31)-1)|yisint)==0) return (x-x)/(x-x); + + /* |y| is huge */ + if(iy>0x4d000000) { /* 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 = x-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; + 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|>1)|0x20000000)+0x0040000+(k<<21)); + 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 (j>0x43000000) /* if z > 128 */ + return s*huge*huge; /* overflow */ + else if (j==0x43000000) { /* if z == 128 */ + if(p_l+ovt>z-p_h) return s*huge*huge; /* overflow */ + } + else if ((j&0x7fffffff)>0x43160000) /* z <= -150 */ + return s*tiny*tiny; /* underflow */ + else if ((u_int32_t) j==0xc3160000){ /* 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) z = __scalbnf(z,n); /* subnormal output */ + else SET_FLOAT_WORD(z,j); + return s*z; +} diff --git a/src/system/libroot/posix/glibc/arch/generic/e_rem_pio2f.c b/src/system/libroot/posix/glibc/arch/generic/e_rem_pio2f.c new file mode 100644 index 0000000000..4b8c4466bd --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/e_rem_pio2f.c @@ -0,0 +1,196 @@ +/* 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 + */ +#ifdef __STDC__ +static const int32_t two_over_pi[] = { +#else +static int32_t two_over_pi[] = { +#endif +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. */ +#ifdef __STDC__ +static const int32_t npio2_hw[] = { +#else +static int32_t npio2_hw[] = { +#endif +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) + */ + +#ifdef __STDC__ +static const float +#else +static float +#endif +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 */ + +#ifdef __STDC__ + int32_t __ieee754_rem_pio2f(float x, float *y) +#else + int32_t __ieee754_rem_pio2f(x,y) + float x,y[]; +#endif +{ + 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&0xfffffff0)!=0x3fc90fd0) { /* 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&0xfffffff0)!=0x3fc90fd0) { /* 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/src/system/libroot/posix/glibc/arch/generic/e_remainder.c b/src/system/libroot/posix/glibc/arch/generic/e_remainder.c new file mode 100644 index 0000000000..cc06e18ce8 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/e_remainder.c @@ -0,0 +1,130 @@ +/* + * IBM Accurate Mathematical Library + * written by International Business Machines Corp. + * Copyright (C) 2001 Free Software Foundation + * + * 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, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ +/**************************************************************************/ +/* 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_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; +#if 0 + double yy; +#endif + int4 kx,ky,n,nn,n1,m1,l; +#if 0 + int4 m; +#endif + 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) { + if (kx+0x001000000)?ZERO.x:nZERO.x); + else { + if (ABS(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 (ABS(u.x)<0.5*t.x) return (u.x!=0)?u.x:((x>0)?ZERO.x:nZERO.x); + else + if (ABS(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=ABS(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=ABS(y); + z=2.0*__ieee754_remainder(0.5*x,y); + d = ABS(z); + if (d <= ABS(d-y)) return z; + else return (z>0)?z-y:z+y; + } + else { /* if x is too big */ + if (kx == 0x7ff00000 && u.i[LOW_HALF] == 0 && y == 1.0) + return x / x; + if (kx>=0x7ff00000||(ky==0&&t.i[LOW_HALF]==0)||ky>0x7ff00000|| + (ky==0x7ff00000&&t.i[LOW_HALF]!=0)) + return (u.i[HIGH_HALF]&0x80000000)?nNAN.x:NAN.x; + else return x; + } + } + } +} diff --git a/src/system/libroot/posix/glibc/arch/generic/e_remainderf.c b/src/system/libroot/posix/glibc/arch/generic/e_remainderf.c new file mode 100644 index 0000000000..90d0d366d4 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/e_remainderf.c @@ -0,0 +1,73 @@ +/* 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. + * ==================================================== + */ + +#if defined(LIBM_SCCS) && !defined(lint) +static char rcsid[] = "$NetBSD: e_remainderf.c,v 1.4 1995/05/10 20:46:08 jtc Exp $"; +#endif + +#include "math.h" +#include "math_private.h" + +#ifdef __STDC__ +static const float zero = 0.0; +#else +static float zero = 0.0; +#endif + + +#ifdef __STDC__ + float __ieee754_remainderf(float x, float p) +#else + float __ieee754_remainderf(x,p) + float x,p; +#endif +{ + 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; +} diff --git a/src/system/libroot/posix/glibc/arch/generic/e_scalb.c b/src/system/libroot/posix/glibc/arch/generic/e_scalb.c new file mode 100644 index 0000000000..a7664db546 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/e_scalb.c @@ -0,0 +1,71 @@ +/* @(#)e_scalb.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_scalb.c,v 1.6 1995/05/10 20:46:09 jtc Exp $"; +#endif + +/* + * __ieee754_scalb(x, fn) is provide for + * passing various standard test suite. One + * should use scalbn() instead. + */ + +#include +#include "math.h" +#include "math_private.h" + +#ifdef _SCALB_INT +#ifdef __STDC__ + double __ieee754_scalb(double x, int fn) +#else + double __ieee754_scalb(x,fn) + double x; int fn; +#endif +#else +#ifdef __STDC__ + double __ieee754_scalb(double x, double fn) +#else + double __ieee754_scalb(x,fn) + double x, fn; +#endif +#endif +{ +#ifdef _SCALB_INT + return __scalbn(x,fn); +#else + if (__isnan(x)||__isnan(fn)) return x*fn; + if (!__finite(fn)) { + if(fn>0.0) return x*fn; + else if (x == 0) + return x; + else if (!__finite (x)) + { +# ifdef FE_INVALID + feraiseexcept (FE_INVALID); +# endif + return __nan (""); + } + else return x/(-fn); + } + if (__rint(fn)!=fn) + { +# ifdef FE_INVALID + feraiseexcept (FE_INVALID); +# endif + return __nan (""); + } + if ( fn > 65000.0) return __scalbn(x, 65000); + if (-fn > 65000.0) return __scalbn(x,-65000); + return __scalbn(x,(int)fn); +#endif +} diff --git a/src/system/libroot/posix/glibc/arch/generic/e_scalbf.c b/src/system/libroot/posix/glibc/arch/generic/e_scalbf.c new file mode 100644 index 0000000000..5c6326bc16 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/e_scalbf.c @@ -0,0 +1,68 @@ +/* e_scalbf.c -- float version of e_scalb.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_scalbf.c,v 1.3 1995/05/10 20:46:12 jtc Exp $"; +#endif + +#include +#include "math.h" +#include "math_private.h" + +#ifdef _SCALB_INT +#ifdef __STDC__ + float __ieee754_scalbf(float x, int fn) +#else + float __ieee754_scalbf(x,fn) + float x; int fn; +#endif +#else +#ifdef __STDC__ + float __ieee754_scalbf(float x, float fn) +#else + float __ieee754_scalbf(x,fn) + float x, fn; +#endif +#endif +{ +#ifdef _SCALB_INT + return __scalbnf(x,fn); +#else + if (__isnanf(x)||__isnanf(fn)) return x*fn; + if (!__finitef(fn)) { + if(fn>(float)0.0) return x*fn; + else if (x == 0) + return x; + else if (!__finitef (x)) + { +# ifdef FE_INVALID + feraiseexcept (FE_INVALID); +# endif + return __nanf (""); + } + else return x/(-fn); + } + if (__rintf(fn)!=fn) + { +# ifdef FE_INVALID + feraiseexcept (FE_INVALID); +# endif + return __nanf (""); + } + if ( fn > (float)65000.0) return __scalbnf(x, 65000); + if (-fn > (float)65000.0) return __scalbnf(x,-65000); + return __scalbnf(x,(int)fn); +#endif +} diff --git a/src/system/libroot/posix/glibc/arch/generic/e_sinh.c b/src/system/libroot/posix/glibc/arch/generic/e_sinh.c new file mode 100644 index 0000000000..1701b9bb67 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/e_sinh.c @@ -0,0 +1,86 @@ +/* @(#)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 "math.h" +#include "math_private.h" + +#ifdef __STDC__ +static const double one = 1.0, shuge = 1.0e307; +#else +static double one = 1.0, shuge = 1.0e307; +#endif + +#ifdef __STDC__ + double __ieee754_sinh(double x) +#else + double __ieee754_sinh(x) + double x; +#endif +{ + 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(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 (ix<0x3e300000) /* |x|<2**-28 */ + 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 x*shuge; +} diff --git a/src/system/libroot/posix/glibc/arch/generic/e_sinhf.c b/src/system/libroot/posix/glibc/arch/generic/e_sinhf.c new file mode 100644 index 0000000000..045f6f121e --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/e_sinhf.c @@ -0,0 +1,68 @@ +/* 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. + * ==================================================== + */ + +#if defined(LIBM_SCCS) && !defined(lint) +static char rcsid[] = "$NetBSD: e_sinhf.c,v 1.4 1995/05/10 20:46:15 jtc Exp $"; +#endif + +#include "math.h" +#include "math_private.h" + +#ifdef __STDC__ +static const float one = 1.0, shuge = 1.0e37; +#else +static float one = 1.0, shuge = 1.0e37; +#endif + +#ifdef __STDC__ + float __ieee754_sinhf(float x) +#else + float __ieee754_sinhf(x) + float x; +#endif +{ + float t,w,h; + int32_t ix,jx; + + GET_FLOAT_WORD(jx,x); + ix = jx&0x7fffffff; + + /* x is INF or NaN */ + if(ix>=0x7f800000) 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 (ix<0x31800000) /* |x|<2**-28 */ + 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 x*shuge; +} diff --git a/src/system/libroot/posix/glibc/arch/generic/halfulp.c b/src/system/libroot/posix/glibc/arch/generic/halfulp.c new file mode 100644 index 0000000000..9e1111b8db --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/halfulp.c @@ -0,0 +1,123 @@ +/* + * IBM Accurate Mathematical Library + * written by International Business Machines Corp. + * Copyright (C) 2001 Free Software Foundation + * + * 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, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ +/************************************************************************/ +/* */ +/* 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" + +double __ieee754_sqrt(double x); + +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 __halfulp(double x, double y) +{ + mynumber v; + double z,u,uu,j1,j2,j3,j4,j5; + 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 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/src/system/libroot/posix/glibc/arch/generic/k_rem_pio2.c b/src/system/libroot/posix/glibc/arch/generic/k_rem_pio2.c new file mode 100644 index 0000000000..ccf1633bd4 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/k_rem_pio2.c @@ -0,0 +1,320 @@ +/* @(#)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" + +#ifdef __STDC__ +static const int init_jk[] = {2,3,4,6}; /* initial value for jk */ +#else +static int init_jk[] = {2,3,4,6}; +#endif + +#ifdef __STDC__ +static const double PIo2[] = { +#else +static double PIo2[] = { +#endif + 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 */ +}; + +#ifdef __STDC__ +static const double +#else +static double +#endif +zero = 0.0, +one = 1.0, +two24 = 1.67772160000000000000e+07, /* 0x41700000, 0x00000000 */ +twon24 = 5.96046447753906250000e-08; /* 0x3E700000, 0x00000000 */ + +#ifdef __STDC__ + int __kernel_rem_pio2(double *x, double *y, int e0, int nx, int prec, const int32_t *ipio2) +#else + int __kernel_rem_pio2(x,y,e0,nx,prec,ipio2) + double x[], y[]; int e0,nx,prec; int32_t ipio2[]; +#endif +{ + 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;i0) { /* 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 */ + for(k=1;iq[jk-k]==0;k++); /* k = no. of terms needed */ + + 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: + fw = 0.0; + for (i=jz;i>=0;i--) fw += fq[i]; + y[0] = (ih==0)? fw: -fw; + fw = fq[0]-fw; + for (i=1;i<=jz;i++) fw += fq[i]; + y[1] = (ih==0)? fw: -fw; + break; + case 3: /* painful */ + for (i=jz;i>0;i--) { + fw = fq[i-1]+fq[i]; + fq[i] += fq[i-1]-fw; + fq[i-1] = fw; + } + for (i=jz;i>1;i--) { + fw = fq[i-1]+fq[i]; + fq[i] += fq[i-1]-fw; + fq[i-1] = fw; + } + 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/src/system/libroot/posix/glibc/arch/generic/k_rem_pio2f.c b/src/system/libroot/posix/glibc/arch/generic/k_rem_pio2f.c new file mode 100644 index 0000000000..2783480fcb --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/k_rem_pio2f.c @@ -0,0 +1,213 @@ +/* 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" + +/* In the float version, the input parameter x contains 8 bit + integers, not 24 bit integers. 113 bit precision is not supported. */ + +#ifdef __STDC__ +static const int init_jk[] = {4,7,9}; /* initial value for jk */ +#else +static int init_jk[] = {4,7,9}; +#endif + +#ifdef __STDC__ +static const float PIo2[] = { +#else +static float PIo2[] = { +#endif + 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 */ +}; + +#ifdef __STDC__ +static const float +#else +static float +#endif +zero = 0.0, +one = 1.0, +two8 = 2.5600000000e+02, /* 0x43800000 */ +twon8 = 3.9062500000e-03; /* 0x3b800000 */ + +#ifdef __STDC__ + int __kernel_rem_pio2f(float *x, float *y, int e0, int nx, int prec, const int32_t *ipio2) +#else + int __kernel_rem_pio2f(x,y,e0,nx,prec,ipio2) + float x[], y[]; int e0,nx,prec; int32_t ipio2[]; +#endif +{ + 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]>>8; + else if(z>=(float)0.5) ih=2; + + if(ih>0) { /* q > 0.5 */ + n += 1; carry = 0; + for(i=0;i0) { /* 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 */ + for(k=1;iq[jk-k]==0;k++); /* k = no. of terms needed */ + + 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: + fw = 0.0; + for (i=jz;i>=0;i--) fw += fq[i]; + y[0] = (ih==0)? fw: -fw; + fw = fq[0]-fw; + for (i=1;i<=jz;i++) fw += fq[i]; + y[1] = (ih==0)? fw: -fw; + break; + case 3: /* painful */ + for (i=jz;i>0;i--) { + fw = fq[i-1]+fq[i]; + fq[i] += fq[i-1]-fw; + fq[i-1] = fw; + } + for (i=jz;i>1;i--) { + fw = fq[i-1]+fq[i]; + fq[i] += fq[i-1]-fw; + fq[i-1] = fw; + } + 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/src/system/libroot/posix/glibc/arch/generic/k_sin.c b/src/system/libroot/posix/glibc/arch/generic/k_sin.c new file mode 100644 index 0000000000..cc5c205a5f --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/k_sin.c @@ -0,0 +1 @@ +/* Not needed anymore. */ diff --git a/src/system/libroot/posix/glibc/arch/generic/k_sinf.c b/src/system/libroot/posix/glibc/arch/generic/k_sinf.c new file mode 100644 index 0000000000..4fec15e830 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/k_sinf.c @@ -0,0 +1,54 @@ +/* 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 "math.h" +#include "math_private.h" + +#ifdef __STDC__ +static const float +#else +static float +#endif +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 */ + +#ifdef __STDC__ + float __kernel_sinf(float x, float y, int iy) +#else + float __kernel_sinf(x, y, iy) + float x,y; int iy; /* iy=0 if y is zero */ +#endif +{ + float z,r,v; + int32_t ix; + GET_FLOAT_WORD(ix,x); + ix &= 0x7fffffff; /* high word of x */ + if(ix<0x32000000) /* |x| < 2**-27 */ + {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/src/system/libroot/posix/glibc/arch/generic/k_tan.c b/src/system/libroot/posix/glibc/arch/generic/k_tan.c new file mode 100644 index 0000000000..55dafb8ebc --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/k_tan.c @@ -0,0 +1,145 @@ +/* @(#)k_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. + * ==================================================== + */ +/* 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: k_tan.c,v 1.8 1995/05/10 20:46:37 jtc Exp $"; +#endif + +/* __kernel_tan( 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^-28 (hx<0x3e300000 0), return x with inexact if x!=0. + * 3. tan(x) is approximated by a odd polynomial of degree 27 on + * [0,0.67434] + * 3 27 + * tan(x) ~ x + T1*x + ... + T13*x + * where + * + * |tan(x) 2 4 26 | -59.2 + * |----- - (1+T1*x +T2*x +.... +T13*x )| <= 2 + * | x | + * + * 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 + * 3 2 2 2 2 + * r = x *(T2+x *(T3+x *(...+x *(T12+x *T13)))) + * then + * 3 2 + * tan(x+y) = x + (T1*x + (x *(r+y)+y)) + * + * 4. For x in [0.67434,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 "math.h" +#include "math_private.h" +#ifdef __STDC__ +static const double +#else +static double +#endif +one = 1.00000000000000000000e+00, /* 0x3FF00000, 0x00000000 */ +pio4 = 7.85398163397448278999e-01, /* 0x3FE921FB, 0x54442D18 */ +pio4lo= 3.06161699786838301793e-17, /* 0x3C81A626, 0x33145C07 */ +T[] = { + 3.33333333333334091986e-01, /* 0x3FD55555, 0x55555563 */ + 1.33333333333201242699e-01, /* 0x3FC11111, 0x1110FE7A */ + 5.39682539762260521377e-02, /* 0x3FABA1BA, 0x1BB341FE */ + 2.18694882948595424599e-02, /* 0x3F9664F4, 0x8406D637 */ + 8.86323982359930005737e-03, /* 0x3F8226E3, 0xE96E8493 */ + 3.59207910759131235356e-03, /* 0x3F6D6D22, 0xC9560328 */ + 1.45620945432529025516e-03, /* 0x3F57DBC8, 0xFEE08315 */ + 5.88041240820264096874e-04, /* 0x3F4344D8, 0xF2F26501 */ + 2.46463134818469906812e-04, /* 0x3F3026F7, 0x1A8D1068 */ + 7.81794442939557092300e-05, /* 0x3F147E88, 0xA03792A6 */ + 7.14072491382608190305e-05, /* 0x3F12B80F, 0x32F0A7E9 */ + -1.85586374855275456654e-05, /* 0xBEF375CB, 0xDB605373 */ + 2.59073051863633712884e-05, /* 0x3EFB2A70, 0x74BF7AD4 */ +}; + +#ifdef __STDC__ + double __kernel_tan(double x, double y, int iy) +#else + double __kernel_tan(x, y, iy) + double x,y; int iy; +#endif +{ + double z,r,v,w,s,r1,r2,r3,v1,v2,v3,w2,w4; + int32_t ix,hx; + GET_HIGH_WORD(hx,x); + ix = hx&0x7fffffff; /* high word of |x| */ + if(ix<0x3e300000) /* x < 2**-28 */ + {if((int)x==0) { /* generate inexact */ + u_int32_t low; + GET_LOW_WORD(low,x); + if(((ix|low)|(iy+1))==0) return one/fabs(x); + else return (iy==1)? x: -one/x; + } + } + if(ix>=0x3FE59428) { /* |x|>=0.6744 */ + if(hx<0) {x = -x; y = -y;} + z = pio4-x; + w = pio4lo-y; + x = z+w; y = 0.0; + } + 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])) + */ +#ifdef DO_NOT_USE_THIS + 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]))))); +#else + v1 = T[10]+w*T[12]; w2=w*w; + v2 = T[6]+w*T[8]; w4=w2*w2; + v3 = T[2]+w*T[4]; v1=z*v1; + r1 = T[9]+w*T[11]; v2=z*v2; + r2 = T[5]+w*T[7]; v3=z*v3; + r3 = T[1]+w*T[3]; + v = v3 + w2*v2 + w4*v1; + r = r3 + w2*r2 + w4*r1; +#endif + s = z*x; + r = y + z*(s*(r+v)+y); + r += T[0]*s; + w = x+r; + if(ix>=0x3FE59428) { + v = (double)iy; + return (double)(1-((hx>>30)&2))*(v-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 */ + double a,t; + z = w; + SET_LOW_WORD(z,0); + v = r-(z - x); /* z+v = r+x */ + t = a = -1.0/w; /* a = -1.0/w */ + SET_LOW_WORD(t,0); + s = 1.0+t*z; + return t+a*(s+t*v); + } +} diff --git a/src/system/libroot/posix/glibc/arch/generic/k_tanf.c b/src/system/libroot/posix/glibc/arch/generic/k_tanf.c new file mode 100644 index 0000000000..eb1a670939 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/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 "math.h" +#include "math_private.h" +#ifdef __STDC__ +static const float +#else +static float +#endif +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 */ +}; + +#ifdef __STDC__ + float __kernel_tanf(float x, float y, int iy) +#else + float __kernel_tanf(x, y, iy) + float x,y; int iy; +#endif +{ + float z,r,v,w,s; + int32_t ix,hx; + GET_FLOAT_WORD(hx,x); + ix = hx&0x7fffffff; /* high word of |x| */ + if(ix<0x31800000) /* x < 2**-28 */ + {if((int)x==0) { /* generate inexact */ + if((ix|(iy+1))==0) return one/fabsf(x); + else return (iy==1)? x: -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; + } + 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/src/system/libroot/posix/glibc/arch/generic/mpexp.c b/src/system/libroot/posix/glibc/arch/generic/mpexp.c new file mode 100644 index 0000000000..e2ab71b2cc --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/mpexp.c @@ -0,0 +1,105 @@ + +/* + * IBM Accurate Mathematical Library + * written by International Business Machines Corp. + * Copyright (C) 2001 Free Software Foundation + * + * 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, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ +/*************************************************************************/ +/* 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 "mpexp.h" + +/* Multi-Precision exponential function subroutine (for p >= 4, */ +/* 2**(-55) <= abs(x) <= 1024). */ +void __mpexp(mp_no *x, mp_no *y, int p) { + + int i,j,k,m,m1,m2,n; + double a,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 mpone = {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 mpk = {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,mpak,mpt1,mpt2; + + /* Choose m,n and compute a=2**(-m) */ + n = np[p]; m1 = m1p[p]; a = twomm1[p].d; + for (i=0; iEX; i--) a *= RADIX; + b = X[1]*RADIXI; m2 = 24*EX; + for (; b0; i--,n--) { if (m1np[i][p]+m2>0) break; } + } + + /* Compute s=x*2**(-m). Put result in mps */ + __dbl_mp(a,&mpt1,p); + __mul(x,&mpt1,&mps,p); + + /* Evaluate the polynomial. Put result in mpt2 */ + mpone.e=1; mpone.d[0]=ONE; mpone.d[1]=ONE; + mpk.e = 1; mpk.d[0] = ONE; mpk.d[1]=nn[n].d; + __dvd(&mps,&mpk,&mpt1,p); + __add(&mpone,&mpt1,&mpak,p); + for (k=n-1; k>1; k--) { + __mul(&mps,&mpak,&mpt1,p); + mpk.d[1]=nn[k].d; + __dvd(&mpt1,&mpk,&mpt2,p); + __add(&mpone,&mpt2,&mpak,p); + } + __mul(&mps,&mpak,&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= 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 __mpexp(mp_no *, mp_no *, int); + +void __mplog(mp_no *x, mp_no *y, int p) { +#include "mplog.h" + int i,m; +#if 0 + int j,k,m1,m2,n; + double a,b; +#endif + 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 mpone = {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 mpt1,mpt2; + + /* Choose m and initiate mpone */ + m = mp[p]; mpone.e = 1; mpone.d[0]=mpone.d[1]=ONE; + + /* 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; id[0] *= MONE; + } /* tan is negative in this area */ + else __dvd(&mps,&mpc,mpy,p); + + return; +} diff --git a/src/system/libroot/posix/glibc/arch/generic/mydefs.h b/src/system/libroot/posix/glibc/arch/generic/mydefs.h new file mode 100644 index 0000000000..a47f2b506a --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/mydefs.h @@ -0,0 +1,38 @@ +/* + * IBM Accurate Mathematical Library + * Written by International Business Machines Corp. + * Copyright (C) 2001 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, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +/******************************************************************/ +/* */ +/* 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 ABS(x) (((x)>0)?(x):-(x)) +#define max(x,y) (((y)>(x))?(y):(x)) +#define min(x,y) (((y)<(x))?(y):(x)) + +#endif diff --git a/src/system/libroot/posix/glibc/arch/generic/powtwo.tbl b/src/system/libroot/posix/glibc/arch/generic/powtwo.tbl new file mode 100644 index 0000000000..53c49c10f7 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/powtwo.tbl @@ -0,0 +1,32 @@ +/* + * IBM Accurate Mathematical Library + * Written by International Business Machines Corp. + * Copyright (C) 2001 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, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +/****************************************************************/ +/* 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/src/system/libroot/posix/glibc/arch/generic/root.tbl b/src/system/libroot/posix/glibc/arch/generic/root.tbl new file mode 100644 index 0000000000..066e588ce7 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/root.tbl @@ -0,0 +1,58 @@ +/* + * IBM Accurate Mathematical Library + * Written by International Business Machines Corp. + * Copyright (C) 2001 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, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +/****************************************************************/ +/* 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/src/system/libroot/posix/glibc/arch/generic/s_asinh.c b/src/system/libroot/posix/glibc/arch/generic/s_asinh.c new file mode 100644 index 0000000000..985cfe32e1 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/s_asinh.c @@ -0,0 +1,70 @@ +/* @(#)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 "math.h" +#include "math_private.h" + +#ifdef __STDC__ +static const double +#else +static double +#endif +one = 1.00000000000000000000e+00, /* 0x3FF00000, 0x00000000 */ +ln2 = 6.93147180559945286227e-01, /* 0x3FE62E42, 0xFEFA39EF */ +huge= 1.00000000000000000000e+300; + +#ifdef __STDC__ + double __asinh(double x) +#else + double __asinh(x) + double x; +#endif +{ + double t,w; + int32_t hx,ix; + GET_HIGH_WORD(hx,x); + ix = hx&0x7fffffff; + if(ix>=0x7ff00000) return x+x; /* x is inf or NaN */ + if(ix< 0x3e300000) { /* |x|<2**-28 */ + if(huge+x>one) return x; /* return x inexact except 0 */ + } + if(ix>0x41b00000) { /* |x| > 2**28 */ + w = __ieee754_log(fabs(x))+ln2; + } else if (ix>0x40000000) { /* 2**28 > |x| > 2.0 */ + t = fabs(x); + w = __ieee754_log(2.0*t+one/(__ieee754_sqrt(x*x+one)+t)); + } else { /* 2.0 > |x| > 2**-28 */ + t = x*x; + w =__log1p(fabs(x)+t/(one+__ieee754_sqrt(one+t))); + } + if(hx>0) return w; else return -w; +} +weak_alias (__asinh, asinh) +#ifdef NO_LONG_DOUBLE +strong_alias (__asinh, __asinhl) +weak_alias (__asinh, asinhl) +#endif diff --git a/src/system/libroot/posix/glibc/arch/generic/s_asinhf.c b/src/system/libroot/posix/glibc/arch/generic/s_asinhf.c new file mode 100644 index 0000000000..fac256d37a --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/s_asinhf.c @@ -0,0 +1,58 @@ +/* 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. + * ==================================================== + */ + +#if defined(LIBM_SCCS) && !defined(lint) +static char rcsid[] = "$NetBSD: s_asinhf.c,v 1.5 1995/05/12 04:57:39 jtc Exp $"; +#endif + +#include "math.h" +#include "math_private.h" + +#ifdef __STDC__ +static const float +#else +static float +#endif +one = 1.0000000000e+00, /* 0x3F800000 */ +ln2 = 6.9314718246e-01, /* 0x3f317218 */ +huge= 1.0000000000e+30; + +#ifdef __STDC__ + float __asinhf(float x) +#else + float __asinhf(x) + float x; +#endif +{ + float t,w; + int32_t hx,ix; + GET_FLOAT_WORD(hx,x); + ix = hx&0x7fffffff; + if(ix>=0x7f800000) return x+x; /* x is inf or NaN */ + if(ix< 0x38000000) { /* |x|<2**-14 */ + if(huge+x>one) return x; /* return x inexact except 0 */ + } + if(ix>0x47000000) { /* |x| > 2**14 */ + w = __ieee754_logf(fabsf(x))+ln2; + } else if (ix>0x40000000) { /* 2**14 > |x| > 2.0 */ + t = fabsf(x); + w = __ieee754_logf((float)2.0*t+one/(__ieee754_sqrtf(x*x+one)+t)); + } else { /* 2.0 > |x| > 2**-14 */ + t = x*x; + w =__log1pf(fabsf(x)+t/(one+__ieee754_sqrtf(one+t))); + } + if(hx>0) return w; else return -w; +} +weak_alias (__asinhf, asinhf) diff --git a/src/system/libroot/posix/glibc/arch/generic/s_cbrt.c b/src/system/libroot/posix/glibc/arch/generic/s_cbrt.c new file mode 100644 index 0000000000..22a1984e27 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/s_cbrt.c @@ -0,0 +1,76 @@ +/* Compute cubic root of double value. + Copyright (C) 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Dirk Alboth and + Ulrich Drepper , 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, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +#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/src/system/libroot/posix/glibc/arch/generic/s_cbrtf.c b/src/system/libroot/posix/glibc/arch/generic/s_cbrtf.c new file mode 100644 index 0000000000..4220de14c4 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/s_cbrtf.c @@ -0,0 +1,64 @@ +/* Compute cubic root of float value. + Copyright (C) 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Dirk Alboth and + Ulrich Drepper , 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, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +#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/src/system/libroot/posix/glibc/arch/generic/s_cos.c b/src/system/libroot/posix/glibc/arch/generic/s_cos.c new file mode 100644 index 0000000000..4be1276ccb --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/s_cos.c @@ -0,0 +1 @@ +/* In s_sin.c. */ diff --git a/src/system/libroot/posix/glibc/arch/generic/s_cosf.c b/src/system/libroot/posix/glibc/arch/generic/s_cosf.c new file mode 100644 index 0000000000..86c59d440c --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/s_cosf.c @@ -0,0 +1,60 @@ +/* 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 "math.h" +#include "math_private.h" + +#ifdef __STDC__ +static const float one=1.0; +#else +static float one=1.0; +#endif + +#ifdef __STDC__ + float __cosf(float x) +#else + float __cosf(x) + float x; +#endif +{ + 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) 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); + } + } +} +weak_alias (__cosf, cosf) diff --git a/src/system/libroot/posix/glibc/arch/generic/s_erf.c b/src/system/libroot/posix/glibc/arch/generic/s_erf.c new file mode 100644 index 0000000000..94fb5c964f --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/s_erf.c @@ -0,0 +1,431 @@ +/* @(#)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 >= 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 "math.h" +#include "math_private.h" + +#ifdef __STDC__ +static const double +#else +static double +#endif +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 */ +efx8= 1.02703333676410069053e+00, /* 0x3FF06EBA, 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 */ + +#ifdef __STDC__ + double __erf(double x) +#else + double __erf(x) + double x; +#endif +{ + 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) + return 0.125*(8.0*x+efx8*x); /*avoid underflow */ + return x + efx*x; + } + z = x*x; +#ifdef DO_NOT_USE_THIS + r = pp0+z*(pp1+z*(pp2+z*(pp3+z*pp4))); + s = one+z*(qq1+z*(qq2+z*(qq3+z*(qq4+z*qq5)))); +#else + 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; +#endif + 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; +#ifdef DO_NOT_USE_THIS + 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))))); +#else + 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; +#endif + 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 */ +#ifdef DO_NOT_USE_THIS + 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 + 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]; +#endif + } else { /* |x| >= 1/0.35 */ +#ifdef DO_NOT_USE_THIS + 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)))))); +#else + 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; +#endif + } + 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 + +#ifdef __STDC__ + double __erfc(double x) +#else + double __erfc(x) + double x; +#endif +{ + 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 */ + return (double)(((u_int32_t)hx>>31)<<1)+one/x; + } + + 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; +#ifdef DO_NOT_USE_THIS + r = pp0+z*(pp1+z*(pp2+z*(pp3+z*pp4))); + s = one+z*(qq1+z*(qq2+z*(qq3+z*(qq4+z*qq5)))); +#else + 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; +#endif + 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; +#ifdef DO_NOT_USE_THIS + 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))))); +#else + 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; +#endif + 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*/ +#ifdef DO_NOT_USE_THIS + 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 + 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]; +#endif + } 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 */ +#ifdef DO_NOT_USE_THIS + 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)))))); +#else + 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; +#endif + } + 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 r/x; else return two-r/x; + } else { + if(hx>0) 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/src/system/libroot/posix/glibc/arch/generic/s_erff.c b/src/system/libroot/posix/glibc/arch/generic/s_erff.c new file mode 100644 index 0000000000..774714cfd1 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/s_erff.c @@ -0,0 +1,225 @@ +/* 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 "math.h" +#include "math_private.h" + +#ifdef __STDC__ +static const float +#else +static float +#endif +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 */ +efx8= 1.0270333290e+00, /* 0x3f8375d4 */ +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 */ + +#ifdef __STDC__ + float __erff(float x) +#else + float __erff(x) + float x; +#endif +{ + 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 underflow */ + return (float)0.125*((float)8.0*x+efx8*x); + 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) + +#ifdef __STDC__ + float __erfcf(float x) +#else + float __erfcf(x) + float x; +#endif +{ + 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 */ + return (float)(((u_int32_t)hx>>31)<<1)+one/x; + } + + if(ix < 0x3f580000) { /* |x|<0.84375 */ + if(ix < 0x23800000) /* |x|<2**-56 */ + 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&0xfffff000); + r = __ieee754_expf(-z*z-(float)0.5625)* + __ieee754_expf((z-x)*(z+x)+R/S); + if(hx>0) return r/x; else return two-r/x; + } else { + if(hx>0) return tiny*tiny; else return two-tiny; + } +} +weak_alias (__erfcf, erfcf) diff --git a/src/system/libroot/posix/glibc/arch/generic/s_expm1.c b/src/system/libroot/posix/glibc/arch/generic/s_expm1.c new file mode 100644 index 0000000000..bfd15b2e31 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/s_expm1.c @@ -0,0 +1,243 @@ +/* @(#)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. +*/ + +#if defined(LIBM_SCCS) && !defined(lint) +static char rcsid[] = "$NetBSD: s_expm1.c,v 1.8 1995/05/10 20:47:09 jtc Exp $"; +#endif + +/* 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 "math.h" +#include "math_private.h" +#define one Q[0] +#ifdef __STDC__ +static const double +#else +static double +#endif +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 */ + +#ifdef __STDC__ + double __expm1(double x) +#else + double __expm1(x) + double x; +#endif +{ + 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) return huge*huge; /* overflow */ + } + if(xsb!=0) { /* x < -56*ln2, return -1.0 with inexact */ + if(x+tiny<0.0) /* 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 */ + 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; +#ifdef DO_NOT_USE_THIS + r1 = one+hxs*(Q1+hxs*(Q2+hxs*(Q3+hxs*(Q4+hxs*Q5)))); +#else + 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; +#endif + 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/src/system/libroot/posix/glibc/arch/generic/s_expm1f.c b/src/system/libroot/posix/glibc/arch/generic/s_expm1f.c new file mode 100644 index 0000000000..375e334c38 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/s_expm1f.c @@ -0,0 +1,135 @@ +/* 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. + * ==================================================== + */ + +#if defined(LIBM_SCCS) && !defined(lint) +static char rcsid[] = "$NetBSD: s_expm1f.c,v 1.5 1995/05/10 20:47:11 jtc Exp $"; +#endif + +#include "math.h" +#include "math_private.h" + +static const volatile float huge = 1.0e+30, tiny = 1.0e-30; + +#ifdef __STDC__ +static const float +#else +static float +#endif +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 */ + +#ifdef __STDC__ + float __expm1f(float x) +#else + float __expm1f(x) + float x; +#endif +{ + 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) return huge*huge; /* overflow */ + } + if(xsb!=0) { /* x < -27*ln2, return -1.0 with inexact */ + if(x+tiny<(float)0.0) /* 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 */ + 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/src/system/libroot/posix/glibc/arch/generic/s_frexp.c b/src/system/libroot/posix/glibc/arch/generic/s_frexp.c new file mode 100644 index 0000000000..7dbddfde06 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/s_frexp.c @@ -0,0 +1,64 @@ +/* @(#)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" + +#ifdef __STDC__ +static const double +#else +static double +#endif +two54 = 1.80143985094819840000e+16; /* 0x43500000, 0x00000000 */ + +#ifdef __STDC__ + double __frexp(double x, int *eptr) +#else + double __frexp(x, eptr) + double x; int *eptr; +#endif +{ + int32_t hx, ix, lx; + EXTRACT_WORDS(hx,lx,x); + ix = 0x7fffffff&hx; + *eptr = 0; + if(ix>=0x7ff00000||((ix|lx)==0)) return 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/src/system/libroot/posix/glibc/arch/generic/s_frexpf.c b/src/system/libroot/posix/glibc/arch/generic/s_frexpf.c new file mode 100644 index 0000000000..7a4eb4cca4 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/s_frexpf.c @@ -0,0 +1,53 @@ +/* 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" + +#ifdef __STDC__ +static const float +#else +static float +#endif +two25 = 3.3554432000e+07; /* 0x4c000000 */ + +#ifdef __STDC__ + float __frexpf(float x, int *eptr) +#else + float __frexpf(x, eptr) + float x; int *eptr; +#endif +{ + int32_t hx,ix; + GET_FLOAT_WORD(hx,x); + ix = 0x7fffffff&hx; + *eptr = 0; + if(ix>=0x7f800000||(ix==0)) return 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/src/system/libroot/posix/glibc/arch/generic/s_isinf.c b/src/system/libroot/posix/glibc/arch/generic/s_isinf.c new file mode 100644 index 0000000000..24b29ae013 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/s_isinf.c @@ -0,0 +1,33 @@ +/* + * Written by J.T. Conklin . + * Changed to return -1 for -Inf by Ulrich Drepper . + * 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" + +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 +strong_alias (__isinf, __isinfl) +weak_alias (__isinf, isinfl) +#endif diff --git a/src/system/libroot/posix/glibc/arch/generic/s_isinff.c b/src/system/libroot/posix/glibc/arch/generic/s_isinff.c new file mode 100644 index 0000000000..03a95fcc0f --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/s_isinff.c @@ -0,0 +1,29 @@ +/* + * Written by J.T. Conklin . + * 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/src/system/libroot/posix/glibc/arch/generic/s_isnan.c b/src/system/libroot/posix/glibc/arch/generic/s_isnan.c new file mode 100644 index 0000000000..3a089e99a8 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/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" + +#ifdef __STDC__ + int __isnan(double x) +#else + int __isnan(x) + double x; +#endif +{ + 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 +strong_alias (__isnan, __isnanl) +weak_alias (__isnan, isnanl) +#endif diff --git a/src/system/libroot/posix/glibc/arch/generic/s_isnanf.c b/src/system/libroot/posix/glibc/arch/generic/s_isnanf.c new file mode 100644 index 0000000000..4ac16c2b5f --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/s_isnanf.c @@ -0,0 +1,42 @@ +/* s_isnanf.c -- float version of s_isnan.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_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" + +#ifdef __STDC__ + int __isnanf(float x) +#else + int __isnanf(x) + float x; +#endif +{ + 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/src/system/libroot/posix/glibc/arch/generic/s_ldexp.c b/src/system/libroot/posix/glibc/arch/generic/s_ldexp.c new file mode 100644 index 0000000000..12c336fad4 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/s_ldexp.c @@ -0,0 +1,37 @@ +/* @(#)s_ldexp.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_ldexp.c,v 1.6 1995/05/10 20:47:40 jtc Exp $"; +#endif + +#include "math.h" +#include "math_private.h" +#include + +#ifdef __STDC__ + double __ldexp(double value, int exp) +#else + double __ldexp(value, exp) + double value; int exp; +#endif +{ + if(!__finite(value)||value==0.0) return value; + value = __scalbn(value,exp); + if(!__finite(value)||value==0.0) __set_errno (ERANGE); + return value; +} +weak_alias (__ldexp, ldexp) +#ifdef NO_LONG_DOUBLE +strong_alias (__ldexp, __ldexpl) +weak_alias (__ldexp, ldexpl) +#endif diff --git a/src/system/libroot/posix/glibc/arch/generic/s_ldexpf.c b/src/system/libroot/posix/glibc/arch/generic/s_ldexpf.c new file mode 100644 index 0000000000..631db422a3 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/s_ldexpf.c @@ -0,0 +1,37 @@ +/* s_ldexpf.c -- float version of s_ldexp.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_ldexpf.c,v 1.3 1995/05/10 20:47:42 jtc Exp $"; +#endif + +#include "math.h" +#include "math_private.h" +#include + +#ifdef __STDC__ + float __ldexpf(float value, int exp) +#else + float __ldexpf(value, exp) + float value; int exp; +#endif +{ + if(!__finitef(value)||value==(float)0.0) return value; + value = __scalbnf(value,exp); + if(!__finitef(value)||value==(float)0.0) __set_errno (ERANGE); + return value; +} +INTDEF(__ldexpf) +weak_alias (__ldexpf, ldexpf) diff --git a/src/system/libroot/posix/glibc/arch/generic/s_log1p.c b/src/system/libroot/posix/glibc/arch/generic/s_log1p.c new file mode 100644 index 0000000000..0a9801a931 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/s_log1p.c @@ -0,0 +1,191 @@ +/* @(#)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. +*/ + +#if defined(LIBM_SCCS) && !defined(lint) +static char rcsid[] = "$NetBSD: s_log1p.c,v 1.8 1995/05/10 20:47:46 jtc Exp $"; +#endif + +/* 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 "math.h" +#include "math_private.h" + +#ifdef __STDC__ +static const double +#else +static double +#endif +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 */ + +#ifdef __STDC__ +static const double zero = 0.0; +#else +static double zero = 0.0; +#endif + +#ifdef __STDC__ + double __log1p(double x) +#else + double __log1p(x) + double x; +#endif +{ + 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(ax>=0x3ff00000) { /* x <= -1.0 */ + if(x==-1.0) return -two54/(x-x);/* log1p(-1)=+inf */ + else return (x-x)/(x-x); /* log1p(x<-1)=NaN */ + } + if(ax<0x3e200000) { /* |x| < 2**-29 */ + if(two54+x>zero /* raise inexact */ + &&ax<0x3c900000) /* |x| < 2**-54 */ + return x; + else + return x - x*x*0.5; + } + if(hx>0||hx<=((int32_t)0xbfd2bec3)) { + k=0;f=x;hu=1;} /* -0.2929= 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; +#ifdef DO_NOT_USE_THIS + R = z*(Lp1+z*(Lp2+z*(Lp3+z*(Lp4+z*(Lp5+z*(Lp6+z*Lp7)))))); +#else + 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; +#endif + if(k==0) return f-(hfsq-s*(hfsq+R)); else + return k*ln2_hi-((hfsq-(s*(hfsq+R)+(k*ln2_lo+c)))-f); +} +weak_alias (__log1p, log1p) +#ifdef NO_LONG_DOUBLE +strong_alias (__log1p, __log1pl) +weak_alias (__log1p, log1pl) +#endif diff --git a/src/system/libroot/posix/glibc/arch/generic/s_log1pf.c b/src/system/libroot/posix/glibc/arch/generic/s_log1pf.c new file mode 100644 index 0000000000..bd3d57635c --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/s_log1pf.c @@ -0,0 +1,115 @@ +/* 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. + * ==================================================== + */ + +#if defined(LIBM_SCCS) && !defined(lint) +static char rcsid[] = "$NetBSD: s_log1pf.c,v 1.4 1995/05/10 20:47:48 jtc Exp $"; +#endif + +#include "math.h" +#include "math_private.h" + +#ifdef __STDC__ +static const float +#else +static float +#endif +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 */ + +#ifdef __STDC__ +static const float zero = 0.0; +#else +static float zero = 0.0; +#endif + +#ifdef __STDC__ + float __log1pf(float x) +#else + float __log1pf(x) + float x; +#endif +{ + 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/(x-x); /* log1p(-1)=+inf */ + else return (x-x)/(x-x); /* log1p(x<-1)=NaN */ + } + if(ax<0x31000000) { /* |x| < 2**-29 */ + if(two25+x>zero /* raise inexact */ + &&ax<0x24800000) /* |x| < 2**-54 */ + 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= 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); +} +weak_alias (__log1pf, log1pf) diff --git a/src/system/libroot/posix/glibc/arch/generic/s_modfl.c b/src/system/libroot/posix/glibc/arch/generic/s_modfl.c deleted file mode 100644 index 63d66e7114..0000000000 --- a/src/system/libroot/posix/glibc/arch/generic/s_modfl.c +++ /dev/null @@ -1,88 +0,0 @@ -/* 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" - -#ifdef __STDC__ -static const long double one = 1.0; -#else -static long double one = 1.0; -#endif - -#ifdef __STDC__ - long double __modfl(long double x, long double *iptr) -#else - long double __modfl(x, iptr) - long double x,*iptr; -#endif -{ - 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/src/system/libroot/posix/glibc/arch/generic/s_nan.c b/src/system/libroot/posix/glibc/arch/generic/s_nan.c new file mode 100644 index 0000000000..9b2c50558b --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/s_nan.c @@ -0,0 +1,44 @@ +/* Return quiet nan. + Copyright (C) 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper , 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, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +#include +#include +#include +#include +#include + + +double +__nan (const char *tagp) +{ + if (tagp[0] != '\0') + { + char buf[6 + strlen (tagp)]; + sprintf (buf, "NAN(%s)", tagp); + return strtod (buf, NULL); + } + + return NAN; +} +weak_alias (__nan, nan) +#ifdef NO_LONG_DOUBLE +strong_alias (__nan, __nanl) +weak_alias (__nan, nanl) +#endif diff --git a/src/system/libroot/posix/glibc/arch/generic/s_nanf.c b/src/system/libroot/posix/glibc/arch/generic/s_nanf.c new file mode 100644 index 0000000000..2e1b1eb911 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/s_nanf.c @@ -0,0 +1,40 @@ +/* Return quiet nan. + Copyright (C) 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper , 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, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +#include +#include +#include +#include +#include + + +float +__nanf (const char *tagp) +{ + if (tagp[0] != '\0') + { + char buf[6 + strlen (tagp)]; + sprintf (buf, "NAN(%s)", tagp); + return strtof (buf, NULL); + } + + return NAN; +} +weak_alias (__nanf, nanf) diff --git a/src/system/libroot/posix/glibc/arch/generic/s_round.c b/src/system/libroot/posix/glibc/arch/generic/s_round.c new file mode 100644 index 0000000000..94fcde0e4c --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/s_round.c @@ -0,0 +1,97 @@ +/* Round double to integer away from zero. + Copyright (C) 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper , 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, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +#include + +#include "math_private.h" + + +static const double huge = 1.0e300; + + +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) + { + if (huge + x > 0.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; + if (huge + x > 0.0) + { + /* Raise inexact if x != 0. */ + 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; + + if (huge + x > 0.0) + { + /* Raise inexact if x != 0. */ + 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/src/system/libroot/posix/glibc/arch/generic/s_roundf.c b/src/system/libroot/posix/glibc/arch/generic/s_roundf.c new file mode 100644 index 0000000000..0b24987792 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/s_roundf.c @@ -0,0 +1,73 @@ +/* Round float to integer away from zero. + Copyright (C) 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper , 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, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +#include + +#include "math_private.h" + + +static const float huge = 1.0e30; + + +float +__roundf (float x) +{ + int32_t i0, j0; + + GET_FLOAT_WORD (i0, x); + j0 = ((i0 >> 23) & 0xff) - 0x7f; + if (j0 < 23) + { + if (j0 < 0) + { + if (huge + x > 0.0F) + { + i0 &= 0x80000000; + if (j0 == -1) + i0 |= 0x3f800000; + } + } + else + { + u_int32_t i = 0x007fffff >> j0; + if ((i0 & i) == 0) + /* X is integral. */ + return x; + if (huge + x > 0.0F) + { + /* Raise inexact if x != 0. */ + 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/src/system/libroot/posix/glibc/arch/generic/s_fpclassifyl.c b/src/system/libroot/posix/glibc/arch/generic/s_signbit.c similarity index 57% rename from src/system/libroot/posix/glibc/arch/generic/s_fpclassifyl.c rename to src/system/libroot/posix/glibc/arch/generic/s_signbit.c index c66a2cb02b..c69f5287dd 100644 --- a/src/system/libroot/posix/glibc/arch/generic/s_fpclassifyl.c +++ b/src/system/libroot/posix/glibc/arch/generic/s_signbit.c @@ -1,8 +1,7 @@ -/* Return classification value corresponding to argument. - Copyright (C) 1997, 1999, 2002 Free Software Foundation, Inc. +/* Return nonzero value if number is negative. + Copyright (C) 1997 Free Software Foundation, Inc. This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 1997 and - Jakub Jelinek , 1999. + Contributed by Ulrich Drepper , 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 @@ -23,23 +22,11 @@ #include "math_private.h" - int -__fpclassifyl (long double x) +__signbit (double x) { - u_int64_t hx, lx; - int retval = FP_NORMAL; + int32_t hx; - 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; + GET_HIGH_WORD (hx, x); + return hx & 0x80000000; } -libm_hidden_def (__fpclassifyl) diff --git a/src/system/libroot/posix/glibc/arch/generic/s_signbitf.c b/src/system/libroot/posix/glibc/arch/generic/s_signbitf.c new file mode 100644 index 0000000000..5bf984dc54 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/s_signbitf.c @@ -0,0 +1,32 @@ +/* Return nonzero value if number is negative. + Copyright (C) 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper , 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, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +#include + +#include "math_private.h" + +int +__signbitf (float x) +{ + int32_t hx; + + GET_FLOAT_WORD (hx, x); + return hx & 0x80000000; +} diff --git a/src/system/libroot/posix/glibc/arch/generic/s_signgam.c b/src/system/libroot/posix/glibc/arch/generic/s_signgam.c new file mode 100644 index 0000000000..021b0ffca1 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/s_signgam.c @@ -0,0 +1,3 @@ +#include "math.h" +#include "math_private.h" +int signgam; diff --git a/src/system/libroot/posix/glibc/arch/generic/s_sin.c b/src/system/libroot/posix/glibc/arch/generic/s_sin.c new file mode 100644 index 0000000000..86e1a6d121 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/s_sin.c @@ -0,0 +1,1129 @@ +/* + * IBM Accurate Mathematical Library + * written by International Business Machines Corp. + * Copyright (C) 2001 Free Software Foundation + * + * 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, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ +/****************************************************************************/ +/* */ +/* MODULE_NAME:usncs.c */ +/* */ +/* FUNCTIONS: usin */ +/* ucos */ +/* slow */ +/* slow1 */ +/* slow2 */ +/* sloww */ +/* sloww1 */ +/* sloww2 */ +/* bsloww */ +/* bsloww1 */ +/* bsloww2 */ +/* cslow2 */ +/* csloww */ +/* csloww1 */ +/* csloww2 */ +/* 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 "endian.h" +#include "mydefs.h" +#include "usncs.h" +#include "MathLib.h" +#include "sincos.tbl" +#include "math_private.h" + +static const double + sn3 = -1.66666666666664880952546298448555E-01, + sn5 = 8.33333214285722277379541354343671E-03, + cs2 = 4.99999999999999999999950396842453E-01, + cs4 = -4.16666666666664434524222570944589E-02, + cs6 = 1.38888874007937613028114285595617E-03; + +void __dubsin(double x, double dx, double w[]); +void __docos(double x, double dx, double w[]); +double __mpsin(double x, double dx); +double __mpcos(double x, double dx); +double __mpsin1(double x); +double __mpcos1(double x); +static double slow(double x); +static double slow1(double x); +static double slow2(double x); +static double sloww(double x, double dx, double orig); +static double sloww1(double x, double dx, double orig); +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); +static double csloww(double x, double dx, double orig); +static double csloww1(double x, double dx, double orig); +static double csloww2(double x, double dx, double orig, int n); +/*******************************************************************/ +/* An ultimate sin routine. Given an IEEE double machine number x */ +/* it computes the correctly rounded (to nearest) value of sin(x) */ +/*******************************************************************/ +double __sin(double x){ + double xx,res,t,cor,y,s,c,sn,ssn,cs,ccs,xn,a,da,db,eps,xn1,xn2; +#if 0 + double w[2]; +#endif + mynumber u,v; + int4 k,m,n; +#if 0 + int4 nn; +#endif + + u.x = x; + m = u.i[HIGH_HALF]; + k = 0x7fffffff&m; /* no sign */ + if (k < 0x3e500000) /* if x->0 =>sin(x)=x */ + return x; + /*---------------------------- 2^-26 < |x|< 0.25 ----------------------*/ + else if (k < 0x3fd00000){ + xx = x*x; + /*Taylor series */ + t = ((((s5.x*xx + s4.x)*xx + s3.x)*xx + s2.x)*xx + s1.x)*(xx*x); + res = x+t; + cor = (x-res)+t; + return (res == res + 1.07*cor)? res : slow(x); + } /* else if (k < 0x3fd00000) */ +/*---------------------------- 0.25<|x|< 0.855469---------------------- */ + else if (k < 0x3feb6000) { + u.x=(m>0)?big.x+x:big.x-x; + y=(m>0)?x-(u.x-big.x):x+(u.x-big.x); + xx=y*y; + s = y + y*xx*(sn3 +xx*sn5); + c = xx*(cs2 +xx*(cs4 + xx*cs6)); + k=u.i[LOW_HALF]<<2; + sn=(m>0)?sincos.x[k]:-sincos.x[k]; + ssn=(m>0)?sincos.x[k+1]:-sincos.x[k+1]; + cs=sincos.x[k+2]; + ccs=sincos.x[k+3]; + cor=(ssn+s*ccs-sn*c)+cs*s; + res=sn+cor; + cor=(sn-res)+cor; + return (res==res+1.025*cor)? res : slow1(x); + } /* else if (k < 0x3feb6000) */ + +/*----------------------- 0.855469 <|x|<2.426265 ----------------------*/ + else if (k < 0x400368fd ) { + + y = (m>0)? hp0.x-x:hp0.x+x; + if (y>=0) { + u.x = big.x+y; + y = (y-(u.x-big.x))+hp1.x; + } + else { + u.x = big.x-y; + y = (-hp1.x) - (y+(u.x-big.x)); + } + xx=y*y; + s = y + y*xx*(sn3 +xx*sn5); + c = xx*(cs2 +xx*(cs4 + xx*cs6)); + k=u.i[LOW_HALF]<<2; + sn=sincos.x[k]; + ssn=sincos.x[k+1]; + cs=sincos.x[k+2]; + ccs=sincos.x[k+3]; + cor=(ccs-s*ssn-cs*c)-sn*s; + res=cs+cor; + cor=(cs-res)+cor; + return (res==res+1.020*cor)? ((m>0)?res:-res) : slow2(x); + } /* else if (k < 0x400368fd) */ + +/*-------------------------- 2.426265<|x|< 105414350 ----------------------*/ + else if (k < 0x419921FB ) { + t = (x*hpinv.x + toint.x); + xn = t - toint.x; + v.x = t; + y = (x - xn*mp1.x) - xn*mp2.x; + n =v.i[LOW_HALF]&3; + da = xn*mp3.x; + a=y-da; + da = (y-a)-da; + eps = ABS(x)*1.2e-30; + + switch (n) { /* quarter of unit circle */ + case 0: + case 2: + xx = a*a; + if (n) {a=-a;da=-da;} + if (xx < 0.01588) { + /*Taylor series */ + t = (((((s5.x*xx + s4.x)*xx + s3.x)*xx + s2.x)*xx + s1.x)*a - 0.5*da)*xx+da; + res = a+t; + cor = (a-res)+t; + cor = (cor>0)? 1.02*cor+eps : 1.02*cor -eps; + return (res == res + cor)? res : sloww(a,da,x); + } + else { + if (a>0) + {m=1;t=a;db=da;} + else + {m=0;t=-a;db=-da;} + u.x=big.x+t; + y=t-(u.x-big.x); + xx=y*y; + s = y + (db+y*xx*(sn3 +xx*sn5)); + c = y*db+xx*(cs2 +xx*(cs4 + xx*cs6)); + k=u.i[LOW_HALF]<<2; + sn=sincos.x[k]; + ssn=sincos.x[k+1]; + cs=sincos.x[k+2]; + ccs=sincos.x[k+3]; + cor=(ssn+s*ccs-sn*c)+cs*s; + res=sn+cor; + cor=(sn-res)+cor; + cor = (cor>0)? 1.035*cor+eps : 1.035*cor-eps; + return (res==res+cor)? ((m)?res:-res) : sloww1(a,da,x); + } + break; + + case 1: + case 3: + if (a<0) + {a=-a;da=-da;} + u.x=big.x+a; + y=a-(u.x-big.x)+da; + xx=y*y; + k=u.i[LOW_HALF]<<2; + sn=sincos.x[k]; + ssn=sincos.x[k+1]; + cs=sincos.x[k+2]; + ccs=sincos.x[k+3]; + s = y + y*xx*(sn3 +xx*sn5); + c = xx*(cs2 +xx*(cs4 + xx*cs6)); + cor=(ccs-s*ssn-cs*c)-sn*s; + res=cs+cor; + cor=(cs-res)+cor; + cor = (cor>0)? 1.025*cor+eps : 1.025*cor-eps; + return (res==res+cor)? ((n&2)?-res:res) : sloww2(a,da,x,n); + + break; + + } + + } /* else if (k < 0x419921FB ) */ + +/*---------------------105414350 <|x|< 281474976710656 --------------------*/ + else if (k < 0x42F00000 ) { + t = (x*hpinv.x + toint.x); + xn = t - toint.x; + v.x = t; + xn1 = (xn+8.0e22)-8.0e22; + xn2 = xn - xn1; + y = ((((x - xn1*mp1.x) - xn1*mp2.x)-xn2*mp1.x)-xn2*mp2.x); + n =v.i[LOW_HALF]&3; + da = xn1*pp3.x; + t=y-da; + da = (y-t)-da; + da = (da - xn2*pp3.x) -xn*pp4.x; + a = t+da; + da = (t-a)+da; + eps = 1.0e-24; + + switch (n) { + case 0: + case 2: + xx = a*a; + if (n) {a=-a;da=-da;} + if (xx < 0.01588) { + /* Taylor series */ + t = (((((s5.x*xx + s4.x)*xx + s3.x)*xx + s2.x)*xx + s1.x)*a - 0.5*da)*xx+da; + res = a+t; + cor = (a-res)+t; + cor = (cor>0)? 1.02*cor+eps : 1.02*cor -eps; + return (res == res + cor)? res : bsloww(a,da,x,n); + } + else { + if (a>0) {m=1;t=a;db=da;} + else {m=0;t=-a;db=-da;} + u.x=big.x+t; + y=t-(u.x-big.x); + xx=y*y; + s = y + (db+y*xx*(sn3 +xx*sn5)); + c = y*db+xx*(cs2 +xx*(cs4 + xx*cs6)); + k=u.i[LOW_HALF]<<2; + sn=sincos.x[k]; + ssn=sincos.x[k+1]; + cs=sincos.x[k+2]; + ccs=sincos.x[k+3]; + cor=(ssn+s*ccs-sn*c)+cs*s; + res=sn+cor; + cor=(sn-res)+cor; + cor = (cor>0)? 1.035*cor+eps : 1.035*cor-eps; + return (res==res+cor)? ((m)?res:-res) : bsloww1(a,da,x,n); + } + break; + + case 1: + case 3: + if (a<0) + {a=-a;da=-da;} + u.x=big.x+a; + y=a-(u.x-big.x)+da; + xx=y*y; + k=u.i[LOW_HALF]<<2; + sn=sincos.x[k]; + ssn=sincos.x[k+1]; + cs=sincos.x[k+2]; + ccs=sincos.x[k+3]; + s = y + y*xx*(sn3 +xx*sn5); + c = xx*(cs2 +xx*(cs4 + xx*cs6)); + cor=(ccs-s*ssn-cs*c)-sn*s; + res=cs+cor; + cor=(cs-res)+cor; + cor = (cor>0)? 1.025*cor+eps : 1.025*cor-eps; + return (res==res+cor)? ((n&2)?-res:res) : bsloww2(a,da,x,n); + + break; + + } + + } /* else if (k < 0x42F00000 ) */ + +/* -----------------281474976710656 <|x| <2^1024----------------------------*/ + else if (k < 0x7ff00000) { + + n = __branred(x,&a,&da); + switch (n) { + case 0: + if (a*a < 0.01588) return bsloww(a,da,x,n); + else return bsloww1(a,da,x,n); + break; + case 2: + if (a*a < 0.01588) return bsloww(-a,-da,x,n); + else return bsloww1(-a,-da,x,n); + break; + + case 1: + case 3: + return bsloww2(a,da,x,n); + break; + } + + } /* else if (k < 0x7ff00000 ) */ + +/*--------------------- |x| > 2^1024 ----------------------------------*/ + else return x / x; + return 0; /* unreachable */ +} + + +/*******************************************************************/ +/* An ultimate cos routine. Given an IEEE double machine number x */ +/* it computes the correctly rounded (to nearest) value of cos(x) */ +/*******************************************************************/ + +double __cos(double x) +{ + double y,xx,res,t,cor,s,c,sn,ssn,cs,ccs,xn,a,da,db,eps,xn1,xn2; + mynumber u,v; + int4 k,m,n; + + u.x = x; + m = u.i[HIGH_HALF]; + k = 0x7fffffff&m; + + if (k < 0x3e400000 ) return 1.0; /* |x|<2^-27 => cos(x)=1 */ + + else if (k < 0x3feb6000 ) {/* 2^-27 < |x| < 0.855469 */ + y=ABS(x); + u.x = big.x+y; + y = y-(u.x-big.x); + xx=y*y; + s = y + y*xx*(sn3 +xx*sn5); + c = xx*(cs2 +xx*(cs4 + xx*cs6)); + k=u.i[LOW_HALF]<<2; + sn=sincos.x[k]; + ssn=sincos.x[k+1]; + cs=sincos.x[k+2]; + ccs=sincos.x[k+3]; + cor=(ccs-s*ssn-cs*c)-sn*s; + res=cs+cor; + cor=(cs-res)+cor; + return (res==res+1.020*cor)? res : cslow2(x); + +} /* else if (k < 0x3feb6000) */ + + else if (k < 0x400368fd ) {/* 0.855469 <|x|<2.426265 */; + y=hp0.x-ABS(x); + a=y+hp1.x; + da=(y-a)+hp1.x; + xx=a*a; + if (xx < 0.01588) { + t = (((((s5.x*xx + s4.x)*xx + s3.x)*xx + s2.x)*xx + s1.x)*a - 0.5*da)*xx+da; + res = a+t; + cor = (a-res)+t; + cor = (cor>0)? 1.02*cor+1.0e-31 : 1.02*cor -1.0e-31; + return (res == res + cor)? res : csloww(a,da,x); + } + else { + if (a>0) {m=1;t=a;db=da;} + else {m=0;t=-a;db=-da;} + u.x=big.x+t; + y=t-(u.x-big.x); + xx=y*y; + s = y + (db+y*xx*(sn3 +xx*sn5)); + c = y*db+xx*(cs2 +xx*(cs4 + xx*cs6)); + k=u.i[LOW_HALF]<<2; + sn=sincos.x[k]; + ssn=sincos.x[k+1]; + cs=sincos.x[k+2]; + ccs=sincos.x[k+3]; + cor=(ssn+s*ccs-sn*c)+cs*s; + res=sn+cor; + cor=(sn-res)+cor; + cor = (cor>0)? 1.035*cor+1.0e-31 : 1.035*cor-1.0e-31; + return (res==res+cor)? ((m)?res:-res) : csloww1(a,da,x); +} + +} /* else if (k < 0x400368fd) */ + + + else if (k < 0x419921FB ) {/* 2.426265<|x|< 105414350 */ + t = (x*hpinv.x + toint.x); + xn = t - toint.x; + v.x = t; + y = (x - xn*mp1.x) - xn*mp2.x; + n =v.i[LOW_HALF]&3; + da = xn*mp3.x; + a=y-da; + da = (y-a)-da; + eps = ABS(x)*1.2e-30; + + switch (n) { + case 1: + case 3: + xx = a*a; + if (n == 1) {a=-a;da=-da;} + if (xx < 0.01588) { + t = (((((s5.x*xx + s4.x)*xx + s3.x)*xx + s2.x)*xx + s1.x)*a - 0.5*da)*xx+da; + res = a+t; + cor = (a-res)+t; + cor = (cor>0)? 1.02*cor+eps : 1.02*cor -eps; + return (res == res + cor)? res : csloww(a,da,x); + } + else { + if (a>0) {m=1;t=a;db=da;} + else {m=0;t=-a;db=-da;} + u.x=big.x+t; + y=t-(u.x-big.x); + xx=y*y; + s = y + (db+y*xx*(sn3 +xx*sn5)); + c = y*db+xx*(cs2 +xx*(cs4 + xx*cs6)); + k=u.i[LOW_HALF]<<2; + sn=sincos.x[k]; + ssn=sincos.x[k+1]; + cs=sincos.x[k+2]; + ccs=sincos.x[k+3]; + cor=(ssn+s*ccs-sn*c)+cs*s; + res=sn+cor; + cor=(sn-res)+cor; + cor = (cor>0)? 1.035*cor+eps : 1.035*cor-eps; + return (res==res+cor)? ((m)?res:-res) : csloww1(a,da,x); + } + break; + + case 0: + case 2: + if (a<0) {a=-a;da=-da;} + u.x=big.x+a; + y=a-(u.x-big.x)+da; + xx=y*y; + k=u.i[LOW_HALF]<<2; + sn=sincos.x[k]; + ssn=sincos.x[k+1]; + cs=sincos.x[k+2]; + ccs=sincos.x[k+3]; + s = y + y*xx*(sn3 +xx*sn5); + c = xx*(cs2 +xx*(cs4 + xx*cs6)); + cor=(ccs-s*ssn-cs*c)-sn*s; + res=cs+cor; + cor=(cs-res)+cor; + cor = (cor>0)? 1.025*cor+eps : 1.025*cor-eps; + return (res==res+cor)? ((n)?-res:res) : csloww2(a,da,x,n); + + break; + + } + + } /* else if (k < 0x419921FB ) */ + + + else if (k < 0x42F00000 ) { + t = (x*hpinv.x + toint.x); + xn = t - toint.x; + v.x = t; + xn1 = (xn+8.0e22)-8.0e22; + xn2 = xn - xn1; + y = ((((x - xn1*mp1.x) - xn1*mp2.x)-xn2*mp1.x)-xn2*mp2.x); + n =v.i[LOW_HALF]&3; + da = xn1*pp3.x; + t=y-da; + da = (y-t)-da; + da = (da - xn2*pp3.x) -xn*pp4.x; + a = t+da; + da = (t-a)+da; + eps = 1.0e-24; + + switch (n) { + case 1: + case 3: + xx = a*a; + if (n==1) {a=-a;da=-da;} + if (xx < 0.01588) { + t = (((((s5.x*xx + s4.x)*xx + s3.x)*xx + s2.x)*xx + s1.x)*a - 0.5*da)*xx+da; + res = a+t; + cor = (a-res)+t; + cor = (cor>0)? 1.02*cor+eps : 1.02*cor -eps; + return (res == res + cor)? res : bsloww(a,da,x,n); + } + else { + if (a>0) {m=1;t=a;db=da;} + else {m=0;t=-a;db=-da;} + u.x=big.x+t; + y=t-(u.x-big.x); + xx=y*y; + s = y + (db+y*xx*(sn3 +xx*sn5)); + c = y*db+xx*(cs2 +xx*(cs4 + xx*cs6)); + k=u.i[LOW_HALF]<<2; + sn=sincos.x[k]; + ssn=sincos.x[k+1]; + cs=sincos.x[k+2]; + ccs=sincos.x[k+3]; + cor=(ssn+s*ccs-sn*c)+cs*s; + res=sn+cor; + cor=(sn-res)+cor; + cor = (cor>0)? 1.035*cor+eps : 1.035*cor-eps; + return (res==res+cor)? ((m)?res:-res) : bsloww1(a,da,x,n); + } + break; + + case 0: + case 2: + if (a<0) {a=-a;da=-da;} + u.x=big.x+a; + y=a-(u.x-big.x)+da; + xx=y*y; + k=u.i[LOW_HALF]<<2; + sn=sincos.x[k]; + ssn=sincos.x[k+1]; + cs=sincos.x[k+2]; + ccs=sincos.x[k+3]; + s = y + y*xx*(sn3 +xx*sn5); + c = xx*(cs2 +xx*(cs4 + xx*cs6)); + cor=(ccs-s*ssn-cs*c)-sn*s; + res=cs+cor; + cor=(cs-res)+cor; + cor = (cor>0)? 1.025*cor+eps : 1.025*cor-eps; + return (res==res+cor)? ((n)?-res:res) : bsloww2(a,da,x,n); + break; + + } + + } /* else if (k < 0x42F00000 ) */ + + else if (k < 0x7ff00000) {/* 281474976710656 <|x| <2^1024 */ + + n = __branred(x,&a,&da); + switch (n) { + case 1: + if (a*a < 0.01588) return bsloww(-a,-da,x,n); + else return bsloww1(-a,-da,x,n); + break; + case 3: + if (a*a < 0.01588) return bsloww(a,da,x,n); + else return bsloww1(a,da,x,n); + break; + + case 0: + case 2: + return bsloww2(a,da,x,n); + break; + } + + } /* else if (k < 0x7ff00000 ) */ + + + + + else return x / x; /* |x| > 2^1024 */ + return 0; + +} + +/************************************************************************/ +/* 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 double slow(double x) { +static const double th2_36 = 206158430208.0; /* 1.5*2**37 */ + double y,x1,x2,xx,r,t,res,cor,w[2]; + x1=(x+th2_36)-th2_36; + y = aa.x*x1*x1*x1; + r=x+y; + x2=x-x1; + xx=x*x; + t = (((((s5.x*xx + s4.x)*xx + s3.x)*xx + s2.x)*xx + bb.x)*xx + 3.0*aa.x*x1*x2)*x +aa.x*x2*x2*x2; + t=((x-r)+y)+t; + res=r+t; + cor = (r-res)+t; + if (res == res + 1.0007*cor) return res; + else { + __dubsin(ABS(x),0,w); + if (w[0] == w[0]+1.000000001*w[1]) return (x>0)?w[0]:-w[0]; + else return (x>0)?__mpsin(x,0):-__mpsin(-x,0); + } +} +/*******************************************************************************/ +/* Routine compute sin(x) for 0.25<|x|< 0.855469 by sincos.tbl and Taylor */ +/* and if result still doesn't accurate enough by mpsin or dubsin */ +/*******************************************************************************/ + +static double slow1(double x) { + mynumber u; + double sn,ssn,cs,ccs,s,c,w[2],y,y1,y2,c1,c2,xx,cor,res; + static const double t22 = 6291456.0; + int4 k; + y=ABS(x); + u.x=big.x+y; + y=y-(u.x-big.x); + xx=y*y; + s = y*xx*(sn3 +xx*sn5); + c = xx*(cs2 +xx*(cs4 + xx*cs6)); + k=u.i[LOW_HALF]<<2; + sn=sincos.x[k]; /* Data */ + ssn=sincos.x[k+1]; /* from */ + cs=sincos.x[k+2]; /* tables */ + ccs=sincos.x[k+3]; /* sincos.tbl */ + y1 = (y+t22)-t22; + y2 = y - y1; + c1 = (cs+t22)-t22; + c2=(cs-c1)+ccs; + cor=(ssn+s*ccs+cs*s+c2*y+c1*y2)-sn*c; + y=sn+c1*y1; + cor = cor+((sn-y)+c1*y1); + res=y+cor; + cor=(y-res)+cor; + if (res == res+1.0005*cor) return (x>0)?res:-res; + else { + __dubsin(ABS(x),0,w); + if (w[0] == w[0]+1.000000005*w[1]) return (x>0)?w[0]:-w[0]; + else return (x>0)?__mpsin(x,0):-__mpsin(-x,0); + } +} +/**************************************************************************/ +/* Routine compute sin(x) for 0.855469 <|x|<2.426265 by sincos.tbl */ +/* and if result still doesn't accurate enough by mpsin or dubsin */ +/**************************************************************************/ +static double slow2(double x) { + mynumber u; + double sn,ssn,cs,ccs,s,c,w[2],y,y1,y2,e1,e2,xx,cor,res,del; + static const double t22 = 6291456.0; + int4 k; + y=ABS(x); + y = hp0.x-y; + if (y>=0) { + u.x = big.x+y; + y = y-(u.x-big.x); + del = hp1.x; + } + else { + u.x = big.x-y; + y = -(y+(u.x-big.x)); + del = -hp1.x; + } + xx=y*y; + s = y*xx*(sn3 +xx*sn5); + c = y*del+xx*(cs2 +xx*(cs4 + xx*cs6)); + k=u.i[LOW_HALF]<<2; + sn=sincos.x[k]; + ssn=sincos.x[k+1]; + cs=sincos.x[k+2]; + ccs=sincos.x[k+3]; + y1 = (y+t22)-t22; + y2 = (y - y1)+del; + e1 = (sn+t22)-t22; + e2=(sn-e1)+ssn; + cor=(ccs-cs*c-e1*y2-e2*y)-sn*s; + y=cs-e1*y1; + cor = cor+((cs-y)-e1*y1); + res=y+cor; + cor=(y-res)+cor; + if (res == res+1.0005*cor) return (x>0)?res:-res; + else { + y=ABS(x)-hp0.x; + y1=y-hp1.x; + y2=(y-y1)-hp1.x; + __docos(y1,y2,w); + if (w[0] == w[0]+1.000000005*w[1]) return (x>0)?w[0]:-w[0]; + else return (x>0)?__mpsin(x,0):-__mpsin(-x,0); + } +} +/***************************************************************************/ +/* Routine compute sin(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 mpsin1 or dubsin */ +/***************************************************************************/ + +static double sloww(double x,double dx, double orig) { + static const double th2_36 = 206158430208.0; /* 1.5*2**37 */ + double y,x1,x2,xx,r,t,res,cor,w[2],a,da,xn; + union {int4 i[2]; double x;} v; + int4 n; + x1=(x+th2_36)-th2_36; + y = aa.x*x1*x1*x1; + r=x+y; + x2=(x-x1)+dx; + xx=x*x; + t = (((((s5.x*xx + s4.x)*xx + s3.x)*xx + s2.x)*xx + bb.x)*xx + 3.0*aa.x*x1*x2)*x +aa.x*x2*x2*x2+dx; + t=((x-r)+y)+t; + res=r+t; + cor = (r-res)+t; + cor = (cor>0)? 1.0005*cor+ABS(orig)*3.1e-30 : 1.0005*cor-ABS(orig)*3.1e-30; + if (res == res + cor) return res; + else { + (x>0)? __dubsin(x,dx,w) : __dubsin(-x,-dx,w); + cor = (w[1]>0)? 1.000000001*w[1] + ABS(orig)*1.1e-30 : 1.000000001*w[1] - ABS(orig)*1.1e-30; + if (w[0] == w[0]+cor) return (x>0)?w[0]:-w[0]; + else { + t = (orig*hpinv.x + toint.x); + xn = t - toint.x; + v.x = t; + y = (orig - xn*mp1.x) - xn*mp2.x; + n =v.i[LOW_HALF]&3; + da = xn*pp3.x; + t=y-da; + da = (y-t)-da; + y = xn*pp4.x; + a = t - y; + da = ((t-a)-y)+da; + if (n&2) {a=-a; da=-da;} + (a>0)? __dubsin(a,da,w) : __dubsin(-a,-da,w); + cor = (w[1]>0)? 1.000000001*w[1] + ABS(orig)*1.1e-40 : 1.000000001*w[1] - ABS(orig)*1.1e-40; + if (w[0] == w[0]+cor) return (a>0)?w[0]:-w[0]; + else return __mpsin1(orig); + } + } +} +/***************************************************************************/ +/* Routine compute sin(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 mpsin1 or dubsin */ +/***************************************************************************/ + +static double sloww1(double x, double dx, double orig) { + mynumber u; + double sn,ssn,cs,ccs,s,c,w[2],y,y1,y2,c1,c2,xx,cor,res; + static const double t22 = 6291456.0; + int4 k; + y=ABS(x); + u.x=big.x+y; + y=y-(u.x-big.x); + dx=(x>0)?dx:-dx; + xx=y*y; + s = y*xx*(sn3 +xx*sn5); + c = xx*(cs2 +xx*(cs4 + xx*cs6)); + k=u.i[LOW_HALF]<<2; + sn=sincos.x[k]; + ssn=sincos.x[k+1]; + cs=sincos.x[k+2]; + ccs=sincos.x[k+3]; + y1 = (y+t22)-t22; + y2 = (y - y1)+dx; + c1 = (cs+t22)-t22; + c2=(cs-c1)+ccs; + cor=(ssn+s*ccs+cs*s+c2*y+c1*y2-sn*y*dx)-sn*c; + y=sn+c1*y1; + cor = cor+((sn-y)+c1*y1); + res=y+cor; + cor=(y-res)+cor; + cor = (cor>0)? 1.0005*cor+3.1e-30*ABS(orig) : 1.0005*cor-3.1e-30*ABS(orig); + if (res == res + cor) return (x>0)?res:-res; + else { + __dubsin(ABS(x),dx,w); + cor = (w[1]>0)? 1.000000005*w[1]+1.1e-30*ABS(orig) : 1.000000005*w[1]-1.1e-30*ABS(orig); + if (w[0] == w[0]+cor) return (x>0)?w[0]:-w[0]; + else return __mpsin1(orig); + } +} +/***************************************************************************/ +/* 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 double sloww2(double x, double dx, double orig, int n) { + mynumber u; + double sn,ssn,cs,ccs,s,c,w[2],y,y1,y2,e1,e2,xx,cor,res; + static const double t22 = 6291456.0; + int4 k; + y=ABS(x); + u.x=big.x+y; + y=y-(u.x-big.x); + dx=(x>0)?dx:-dx; + xx=y*y; + s = y*xx*(sn3 +xx*sn5); + c = y*dx+xx*(cs2 +xx*(cs4 + xx*cs6)); + k=u.i[LOW_HALF]<<2; + sn=sincos.x[k]; + ssn=sincos.x[k+1]; + cs=sincos.x[k+2]; + ccs=sincos.x[k+3]; + + y1 = (y+t22)-t22; + y2 = (y - y1)+dx; + e1 = (sn+t22)-t22; + e2=(sn-e1)+ssn; + cor=(ccs-cs*c-e1*y2-e2*y)-sn*s; + y=cs-e1*y1; + cor = cor+((cs-y)-e1*y1); + res=y+cor; + cor=(y-res)+cor; + cor = (cor>0)? 1.0005*cor+3.1e-30*ABS(orig) : 1.0005*cor-3.1e-30*ABS(orig); + if (res == res + cor) return (n&2)?-res:res; + else { + __docos(ABS(x),dx,w); + cor = (w[1]>0)? 1.000000005*w[1]+1.1e-30*ABS(orig) : 1.000000005*w[1]-1.1e-30*ABS(orig); + if (w[0] == w[0]+cor) return (n&2)?-w[0]:w[0]; + else return __mpsin1(orig); + } +} +/***************************************************************************/ +/* 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 double bsloww(double x,double dx, double orig,int n) { + static const double th2_36 = 206158430208.0; /* 1.5*2**37 */ + double y,x1,x2,xx,r,t,res,cor,w[2]; +#if 0 + double a,da,xn; + union {int4 i[2]; double x;} v; +#endif + x1=(x+th2_36)-th2_36; + y = aa.x*x1*x1*x1; + r=x+y; + x2=(x-x1)+dx; + xx=x*x; + t = (((((s5.x*xx + s4.x)*xx + s3.x)*xx + s2.x)*xx + bb.x)*xx + 3.0*aa.x*x1*x2)*x +aa.x*x2*x2*x2+dx; + t=((x-r)+y)+t; + res=r+t; + cor = (r-res)+t; + cor = (cor>0)? 1.0005*cor+1.1e-24 : 1.0005*cor-1.1e-24; + if (res == res + cor) return res; + else { + (x>0)? __dubsin(x,dx,w) : __dubsin(-x,-dx,w); + cor = (w[1]>0)? 1.000000001*w[1] + 1.1e-24 : 1.000000001*w[1] - 1.1e-24; + if (w[0] == w[0]+cor) return (x>0)?w[0]:-w[0]; + else return (n&1)?__mpcos1(orig):__mpsin1(orig); + } +} + +/***************************************************************************/ +/* 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 double bsloww1(double x, double dx, double orig,int n) { +mynumber u; + double sn,ssn,cs,ccs,s,c,w[2],y,y1,y2,c1,c2,xx,cor,res; + static const double t22 = 6291456.0; + int4 k; + y=ABS(x); + u.x=big.x+y; + y=y-(u.x-big.x); + dx=(x>0)?dx:-dx; + xx=y*y; + s = y*xx*(sn3 +xx*sn5); + c = xx*(cs2 +xx*(cs4 + xx*cs6)); + k=u.i[LOW_HALF]<<2; + sn=sincos.x[k]; + ssn=sincos.x[k+1]; + cs=sincos.x[k+2]; + ccs=sincos.x[k+3]; + y1 = (y+t22)-t22; + y2 = (y - y1)+dx; + c1 = (cs+t22)-t22; + c2=(cs-c1)+ccs; + cor=(ssn+s*ccs+cs*s+c2*y+c1*y2-sn*y*dx)-sn*c; + y=sn+c1*y1; + cor = cor+((sn-y)+c1*y1); + res=y+cor; + cor=(y-res)+cor; + cor = (cor>0)? 1.0005*cor+1.1e-24 : 1.0005*cor-1.1e-24; + if (res == res + cor) return (x>0)?res:-res; + else { + __dubsin(ABS(x),dx,w); + cor = (w[1]>0)? 1.000000005*w[1]+1.1e-24: 1.000000005*w[1]-1.1e-24; + if (w[0] == w[0]+cor) return (x>0)?w[0]:-w[0]; + else return (n&1)?__mpcos1(orig):__mpsin1(orig); + } +} + +/***************************************************************************/ +/* 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 double bsloww2(double x, double dx, double orig, int n) { +mynumber u; + double sn,ssn,cs,ccs,s,c,w[2],y,y1,y2,e1,e2,xx,cor,res; + static const double t22 = 6291456.0; + int4 k; + y=ABS(x); + u.x=big.x+y; + y=y-(u.x-big.x); + dx=(x>0)?dx:-dx; + xx=y*y; + s = y*xx*(sn3 +xx*sn5); + c = y*dx+xx*(cs2 +xx*(cs4 + xx*cs6)); + k=u.i[LOW_HALF]<<2; + sn=sincos.x[k]; + ssn=sincos.x[k+1]; + cs=sincos.x[k+2]; + ccs=sincos.x[k+3]; + + y1 = (y+t22)-t22; + y2 = (y - y1)+dx; + e1 = (sn+t22)-t22; + e2=(sn-e1)+ssn; + cor=(ccs-cs*c-e1*y2-e2*y)-sn*s; + y=cs-e1*y1; + cor = cor+((cs-y)-e1*y1); + res=y+cor; + cor=(y-res)+cor; + cor = (cor>0)? 1.0005*cor+1.1e-24 : 1.0005*cor-1.1e-24; + if (res == res + cor) return (n&2)?-res:res; + else { + __docos(ABS(x),dx,w); + cor = (w[1]>0)? 1.000000005*w[1]+1.1e-24 : 1.000000005*w[1]-1.1e-24; + if (w[0] == w[0]+cor) return (n&2)?-w[0]:w[0]; + else return (n&1)?__mpsin1(orig):__mpcos1(orig); + } +} + +/************************************************************************/ +/* 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 double cslow2(double x) { + mynumber u; + double sn,ssn,cs,ccs,s,c,w[2],y,y1,y2,e1,e2,xx,cor,res; + static const double t22 = 6291456.0; + int4 k; + y=ABS(x); + u.x = big.x+y; + y = y-(u.x-big.x); + xx=y*y; + s = y*xx*(sn3 +xx*sn5); + c = xx*(cs2 +xx*(cs4 + xx*cs6)); + k=u.i[LOW_HALF]<<2; + sn=sincos.x[k]; + ssn=sincos.x[k+1]; + cs=sincos.x[k+2]; + ccs=sincos.x[k+3]; + y1 = (y+t22)-t22; + y2 = y - y1; + e1 = (sn+t22)-t22; + e2=(sn-e1)+ssn; + cor=(ccs-cs*c-e1*y2-e2*y)-sn*s; + y=cs-e1*y1; + cor = cor+((cs-y)-e1*y1); + res=y+cor; + cor=(y-res)+cor; + if (res == res+1.0005*cor) + return res; + else { + y=ABS(x); + __docos(y,0,w); + if (w[0] == w[0]+1.000000005*w[1]) return w[0]; + else return __mpcos(x,0); + } +} + +/***************************************************************************/ +/* Routine compute cos(x+dx) (Double-Length number) where x is small enough*/ +/* to use Taylor series around zero and (x+dx) .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 double csloww(double x,double dx, double orig) { + static const double th2_36 = 206158430208.0; /* 1.5*2**37 */ + double y,x1,x2,xx,r,t,res,cor,w[2],a,da,xn; + union {int4 i[2]; double x;} v; + int4 n; + x1=(x+th2_36)-th2_36; + y = aa.x*x1*x1*x1; + r=x+y; + x2=(x-x1)+dx; + xx=x*x; + /* Taylor series */ + t = (((((s5.x*xx + s4.x)*xx + s3.x)*xx + s2.x)*xx + bb.x)*xx + 3.0*aa.x*x1*x2)*x +aa.x*x2*x2*x2+dx; + t=((x-r)+y)+t; + res=r+t; + cor = (r-res)+t; + cor = (cor>0)? 1.0005*cor+ABS(orig)*3.1e-30 : 1.0005*cor-ABS(orig)*3.1e-30; + if (res == res + cor) return res; + else { + (x>0)? __dubsin(x,dx,w) : __dubsin(-x,-dx,w); + cor = (w[1]>0)? 1.000000001*w[1] + ABS(orig)*1.1e-30 : 1.000000001*w[1] - ABS(orig)*1.1e-30; + if (w[0] == w[0]+cor) return (x>0)?w[0]:-w[0]; + else { + t = (orig*hpinv.x + toint.x); + xn = t - toint.x; + v.x = t; + y = (orig - xn*mp1.x) - xn*mp2.x; + n =v.i[LOW_HALF]&3; + da = xn*pp3.x; + t=y-da; + da = (y-t)-da; + y = xn*pp4.x; + a = t - y; + da = ((t-a)-y)+da; + if (n==1) {a=-a; da=-da;} + (a>0)? __dubsin(a,da,w) : __dubsin(-a,-da,w); + cor = (w[1]>0)? 1.000000001*w[1] + ABS(orig)*1.1e-40 : 1.000000001*w[1] - ABS(orig)*1.1e-40; + if (w[0] == w[0]+cor) return (a>0)?w[0]:-w[0]; + else return __mpcos1(orig); + } + } +} + +/***************************************************************************/ +/* Routine compute sin(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 double csloww1(double x, double dx, double orig) { + mynumber u; + double sn,ssn,cs,ccs,s,c,w[2],y,y1,y2,c1,c2,xx,cor,res; + static const double t22 = 6291456.0; + int4 k; + y=ABS(x); + u.x=big.x+y; + y=y-(u.x-big.x); + dx=(x>0)?dx:-dx; + xx=y*y; + s = y*xx*(sn3 +xx*sn5); + c = xx*(cs2 +xx*(cs4 + xx*cs6)); + k=u.i[LOW_HALF]<<2; + sn=sincos.x[k]; + ssn=sincos.x[k+1]; + cs=sincos.x[k+2]; + ccs=sincos.x[k+3]; + y1 = (y+t22)-t22; + y2 = (y - y1)+dx; + c1 = (cs+t22)-t22; + c2=(cs-c1)+ccs; + cor=(ssn+s*ccs+cs*s+c2*y+c1*y2-sn*y*dx)-sn*c; + y=sn+c1*y1; + cor = cor+((sn-y)+c1*y1); + res=y+cor; + cor=(y-res)+cor; + cor = (cor>0)? 1.0005*cor+3.1e-30*ABS(orig) : 1.0005*cor-3.1e-30*ABS(orig); + if (res == res + cor) return (x>0)?res:-res; + else { + __dubsin(ABS(x),dx,w); + cor = (w[1]>0)? 1.000000005*w[1]+1.1e-30*ABS(orig) : 1.000000005*w[1]-1.1e-30*ABS(orig); + if (w[0] == w[0]+cor) return (x>0)?w[0]:-w[0]; + else return __mpcos1(orig); + } +} + + +/***************************************************************************/ +/* 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 other routines */ +/***************************************************************************/ + +static double csloww2(double x, double dx, double orig, int n) { + mynumber u; + double sn,ssn,cs,ccs,s,c,w[2],y,y1,y2,e1,e2,xx,cor,res; + static const double t22 = 6291456.0; + int4 k; + y=ABS(x); + u.x=big.x+y; + y=y-(u.x-big.x); + dx=(x>0)?dx:-dx; + xx=y*y; + s = y*xx*(sn3 +xx*sn5); + c = y*dx+xx*(cs2 +xx*(cs4 + xx*cs6)); + k=u.i[LOW_HALF]<<2; + sn=sincos.x[k]; + ssn=sincos.x[k+1]; + cs=sincos.x[k+2]; + ccs=sincos.x[k+3]; + + y1 = (y+t22)-t22; + y2 = (y - y1)+dx; + e1 = (sn+t22)-t22; + e2=(sn-e1)+ssn; + cor=(ccs-cs*c-e1*y2-e2*y)-sn*s; + y=cs-e1*y1; + cor = cor+((cs-y)-e1*y1); + res=y+cor; + cor=(y-res)+cor; + cor = (cor>0)? 1.0005*cor+3.1e-30*ABS(orig) : 1.0005*cor-3.1e-30*ABS(orig); + if (res == res + cor) return (n)?-res:res; + else { + __docos(ABS(x),dx,w); + cor = (w[1]>0)? 1.000000005*w[1]+1.1e-30*ABS(orig) : 1.000000005*w[1]-1.1e-30*ABS(orig); + if (w[0] == w[0]+cor) return (n)?-w[0]:w[0]; + else return __mpcos1(orig); + } +} + +weak_alias (__cos, cos) +weak_alias (__sin, sin) + +#ifdef NO_LONG_DOUBLE +strong_alias (__sin, __sinl) +weak_alias (__sin, sinl) +strong_alias (__cos, __cosl) +weak_alias (__cos, cosl) +#endif diff --git a/src/system/libroot/posix/glibc/arch/generic/s_sincos.c b/src/system/libroot/posix/glibc/arch/generic/s_sincos.c new file mode 100644 index 0000000000..f0542c500c --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/s_sincos.c @@ -0,0 +1,51 @@ +/* Compute sine and cosine of argument. + Copyright (C) 1997, 2001 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper , 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, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +#include + +#include "math_private.h" + + +void +__sincos (double x, double *sinx, double *cosx) +{ + int32_t ix; + + /* High word of x. */ + GET_HIGH_WORD (ix, x); + + /* |x| ~< pi/4 */ + ix &= 0x7fffffff; + if (ix>=0x7ff00000) + { + /* sin(Inf or NaN) is NaN */ + *sinx = *cosx = x - x; + } + else + { + *sinx = sin (x); + *cosx = cos (x); + } +} +weak_alias (__sincos, sincos) +#ifdef NO_LONG_DOUBLE +strong_alias (__sincos, __sincosl) +weak_alias (__sincos, sincosl) +#endif diff --git a/src/system/libroot/posix/glibc/arch/generic/s_sincosf.c b/src/system/libroot/posix/glibc/arch/generic/s_sincosf.c new file mode 100644 index 0000000000..0311473b7d --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/s_sincosf.c @@ -0,0 +1,74 @@ +/* Compute sine and cosine of argument. + Copyright (C) 1997, 2000 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper , 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, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +#include + +#include "math_private.h" + + +void +__sincosf (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; + } + 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; + } + } +} +weak_alias (__sincosf, sincosf) diff --git a/src/system/libroot/posix/glibc/arch/generic/s_sinf.c b/src/system/libroot/posix/glibc/arch/generic/s_sinf.c new file mode 100644 index 0000000000..76a7c21fcb --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/s_sinf.c @@ -0,0 +1,54 @@ +/* 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 "math.h" +#include "math_private.h" + +#ifdef __STDC__ + float __sinf(float x) +#else + float __sinf(x) + float x; +#endif +{ + 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) 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]); + } + } +} +weak_alias (__sinf, sinf) diff --git a/src/system/libroot/posix/glibc/arch/generic/s_tan.c b/src/system/libroot/posix/glibc/arch/generic/s_tan.c new file mode 100644 index 0000000000..cf8d4d0267 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/s_tan.c @@ -0,0 +1,486 @@ +/* + * IBM Accurate Mathematical Library + * written by International Business Machines Corp. + * Copyright (C) 2001 Free Software Foundation + * + * 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, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ +/*********************************************************************/ +/* 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 "endian.h" +#include "dla.h" +#include "mpa.h" +#include "MathLib.h" +#include "math.h" + +static double tanMp(double); +void __mptan(double, mp_no *, int); + +double 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,t5,t6,t7,t8,t9,t10,w,x2,xn,xx2,y,ya,yya,z0,z,zz,z2,zz2; + int p; + number num,v; + mp_no mpa,mpt1,mpt2; +#if 0 + mp_no mpy; +#endif + + int __branred(double, double *, double *); + int __mpranred(double, mp_no *, int); + + /* x=+-INF, x=NaN */ + num.d = x; ux = num.i[HIGH_HALF]; + if ((ux&0x7ff00000)==0x7ff00000) return x-x; + + w=(x=0x7f800000) 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/src/system/libroot/posix/glibc/arch/generic/s_tanh.c b/src/system/libroot/posix/glibc/arch/generic/s_tanh.c new file mode 100644 index 0000000000..944f96386f --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/s_tanh.c @@ -0,0 +1,93 @@ +/* @(#)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 "math.h" +#include "math_private.h" + +#ifdef __STDC__ +static const double one=1.0, two=2.0, tiny = 1.0e-300; +#else +static double one=1.0, two=2.0, tiny = 1.0e-300; +#endif + +#ifdef __STDC__ + double __tanh(double x) +#else + double __tanh(x) + double x; +#endif +{ + 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 */ + 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/src/system/libroot/posix/glibc/arch/generic/s_tanhf.c b/src/system/libroot/posix/glibc/arch/generic/s_tanhf.c new file mode 100644 index 0000000000..2a0ca9f3df --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/s_tanhf.c @@ -0,0 +1,67 @@ +/* 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 "math.h" +#include "math_private.h" + +#ifdef __STDC__ +static const float one=1.0, two=2.0, tiny = 1.0e-30; +#else +static float one=1.0, two=2.0, tiny = 1.0e-30; +#endif + +#ifdef __STDC__ + float __tanhf(float x) +#else + float __tanhf(x) + float x; +#endif +{ + 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 */ + 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/src/system/libroot/posix/glibc/arch/generic/sincos.tbl b/src/system/libroot/posix/glibc/arch/generic/sincos.tbl new file mode 100644 index 0000000000..9dd5502841 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/sincos.tbl @@ -0,0 +1,912 @@ +/* + * IBM Accurate Mathematical Library + * Written by International Business Machines Corp. + * Copyright (C) 2001 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, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +/****************************************************************/ +/* TABLES FOR THE usin() and ucos() FUNCTION */ +/****************************************************************/ + + +#ifdef BIG_ENDI +static const union {int4 i[880]; double x[40];}sincos = { .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 +static const union {int4 i[880]; double x[440];} sincos = { .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/src/system/libroot/posix/glibc/arch/generic/sincos32.c b/src/system/libroot/posix/glibc/arch/generic/sincos32.c new file mode 100644 index 0000000000..a4f896a465 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/sincos32.c @@ -0,0 +1,352 @@ +/* + * IBM Accurate Mathematical Library + * written by International Business Machines Corp. + * Copyright (C) 2001 Free Software Foundation + * + * 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, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ +/****************************************************************/ +/* 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)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 cc32(mp_no *x, mp_no *y, int p) { + int i; + double a; +#if 0 + double b; + static const mp_no mpone = {1,{1.0,1.0}}; +#endif + mp_no mpt1,x2,gor,sum ,mpk={1,{1.0}}; +#if 0 + mp_no mpt2; +#endif + for (i=1;i<=p;i++) mpk.d[i]=0; + + __mul(x,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); +} + +/***************************************************************************/ +/* c32() computes both sin(x), cos(x) as Multi precision numbers */ +/***************************************************************************/ +void __c32(mp_no *x, mp_no *y, mp_no *z, int p) { + static const mp_no mpt={1,{1.0,2.0}}, one={1,{1.0,1.0}}; + 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(&mpt,&c,&t1,p); + __mul(&t1,&c,&t2,p); + __add(&t2,&t2,&c,p); + } + __sub(&one,&c,y,p); + __cpy(&s,z,p); +} + +/************************************************************************/ +/*Routine 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 __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) return (resres1)?res:res1; +} + +/************************************************************************/ +/*Routine 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 __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) return (res>res1)?res:res1; + else return (res0.8) { __sub(&hp,&c,&a,p); __c32(&a,&b,&c,p); } + else __c32(&c,&a,&b,p); /* b = sin(x+dx) */ + __mp_dbl(&b,&y,p); + return y; +} + +/*******************************************************************/ +/* Compute cos()of double-length number (x+dx) as Multi Precision */ +/* number and return result as double */ +/*******************************************************************/ +double __mpcos(double x, double dx) { + int p; + double y; + mp_no a,b,c; + p=32; + __dbl_mp(x,&a,p); + __dbl_mp(dx,&b,p); + __add(&a,&b,&c,p); + if (x>0.8) + { __sub(&hp,&c,&b,p); + __c32(&b,&c,&a,p); + } + else __c32(&c,&a,&b,p); /* a = cos(x+dx) */ + __mp_dbl(&a,&y,p); + return y; +} + +/******************************************************************/ +/* mpranred() performs range reduction of a double number x into */ +/* multi precision number y, such that y=x-n*pi/2, abs(y)= 8388608.0) + { t +=1.0; + __sub(&c,&one,&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); + } +} + +/*******************************************************************/ +/* Multi-Precision sin() function subroutine, for p=32. It is */ +/* based on the routines mpranred() and c32(). */ +/*******************************************************************/ +double __mpsin1(double x) +{ + int p; + int n; + mp_no u,s,c; + double y; + p=32; + n=__mpranred(x,&u,p); /* n is 0, 1, 2 or 3 */ + __c32(&u,&c,&s,p); + switch (n) { /* in which quarter of unit circle y is*/ + case 0: + __mp_dbl(&s,&y,p); + return y; + break; + + case 2: + __mp_dbl(&s,&y,p); + return -y; + break; + + case 1: + __mp_dbl(&c,&y,p); + return y; + break; + + case 3: + __mp_dbl(&c,&y,p); + return -y; + break; + + } + return 0; /* unreachable, to make the compiler happy */ +} + +/*****************************************************************/ +/* Multi-Precision cos() function subroutine, for p=32. It is */ +/* based on the routines mpranred() and c32(). */ +/*****************************************************************/ + +double __mpcos1(double x) +{ + int p; + int n; + mp_no u,s,c; + double y; + + p=32; + n=__mpranred(x,&u,p); /* n is 0, 1, 2 or 3 */ + __c32(&u,&c,&s,p); + switch (n) { /* in what quarter of unit circle y is*/ + + case 0: + __mp_dbl(&c,&y,p); + return y; + break; + + case 2: + __mp_dbl(&c,&y,p); + return -y; + break; + + case 1: + __mp_dbl(&s,&y,p); + return -y; + break; + + case 3: + __mp_dbl(&s,&y,p); + return y; + break; + + } + return 0; /* unreachable, to make the compiler happy */ +} +/******************************************************************/ diff --git a/src/system/libroot/posix/glibc/arch/generic/sincos32.h b/src/system/libroot/posix/glibc/arch/generic/sincos32.h new file mode 100644 index 0000000000..ee9d5a4ccf --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/sincos32.h @@ -0,0 +1,82 @@ +/* + * IBM Accurate Mathematical Library + * Written by International Business Machines Corp. + * Copyright (C) 2001 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, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +/******************************************************************/ +/* */ +/* 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/src/system/libroot/posix/glibc/arch/generic/slowexp.c b/src/system/libroot/posix/glibc/arch/generic/slowexp.c new file mode 100644 index 0000000000..78c107f709 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/slowexp.c @@ -0,0 +1,66 @@ +/* + * IBM Accurate Mathematical Library + * written by International Business Machines Corp. + * Copyright (C) 2001 Free Software Foundation + * + * 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, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ +/**************************************************************************/ +/* 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 "mpa.h" +#include "math_private.h" + +void __mpexp(mp_no *x, mp_no *y, int p); + +/*Converting from double precision to Multi-precision and calculating e^x */ +double __slowexp(double x) { + double w,z,res,eps=3.0e-26; +#if 0 + double y; +#endif + int p; +#if 0 + int orig,i; +#endif + mp_no mpx, mpy, mpz,mpw,mpeps,mpcor; + + p=6; + __dbl_mp(x,&mpx,p); /* Convert a double precision number x */ + /* into a multiple precision number mpx with prec. p. */ + __mpexp(&mpx, &mpy, p); /* Multi-Precision exponential function */ + __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) return w; + else { /* if calculating is not exactly */ + p = 32; + __dbl_mp(x,&mpx,p); + __mpexp(&mpx, &mpy, p); + __mp_dbl(&mpy, &res, p); + return res; + } +} diff --git a/src/system/libroot/posix/glibc/arch/generic/slowpow.c b/src/system/libroot/posix/glibc/arch/generic/slowpow.c new file mode 100644 index 0000000000..e11a532bf8 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/slowpow.c @@ -0,0 +1,74 @@ +/* + * IBM Accurate Mathematical Library + * written by International Business Machines Corp. + * Copyright (C) 2001 Free Software Foundation + * + * 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, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ +/*************************************************************************/ +/* 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" + +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 __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; + + res = __halfulp(x,y); /* halfulp() returns -10 or x^y */ + if (res >= 0) return res; /* if result was really computed by halfulp */ + /* else, if result was not really computed by halfulp */ + p = 10; /* p=precision */ + __dbl_mp(x,&mpx,p); + __dbl_mp(y,&mpy,p); + __dbl_mp(z,&mpz,p); + __mplog(&mpx, &mpz, p); /* log(x) = z */ + __mul(&mpy,&mpz,&mpw,p); /* y * z =w */ + __mpexp(&mpw, &mpp, p); /* e^w =pp */ + __add(&mpp,&eps,&mpr,p); /* pp+eps =r */ + __mp_dbl(&mpr, &res, p); + __sub(&mpp,&eps,&mpr1,p); /* pp -eps =r1 */ + __mp_dbl(&mpr1, &res1, p); /* converting into double precision */ + if (res == res1) return res; + + p = 32; /* if we get here result wasn't calculated exactly, continue */ + __dbl_mp(x,&mpx,p); /* for more exact calculation */ + __dbl_mp(y,&mpy,p); + __dbl_mp(z,&mpz,p); + __mplog(&mpx, &mpz, p); /* log(c)=z */ + __mul(&mpy,&mpz,&mpw,p); /* y*z =w */ + __mpexp(&mpw, &mpp, p); /* e^w=pp */ + __mp_dbl(&mpp, &res, p); /* converting into double precision */ + return res; +} diff --git a/src/system/libroot/posix/glibc/arch/generic/t_exp.c b/src/system/libroot/posix/glibc/arch/generic/t_exp.c new file mode 100644 index 0000000000..7a33a9080c --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/t_exp.c @@ -0,0 +1,436 @@ +/* Accurate tables for exp(). + Copyright (C) 1998 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Geoffrey Keating + + 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, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +/* 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/src/system/libroot/posix/glibc/arch/generic/uasncs.h b/src/system/libroot/posix/glibc/arch/generic/uasncs.h new file mode 100644 index 0000000000..69fbb58a50 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/uasncs.h @@ -0,0 +1,70 @@ +/* + * IBM Accurate Mathematical Library + * Written by International Business Machines Corp. + * Copyright (C) 2001 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, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +/******************************************************************/ +/* */ +/* 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/src/system/libroot/posix/glibc/arch/generic/uexp.h b/src/system/libroot/posix/glibc/arch/generic/uexp.h new file mode 100644 index 0000000000..de6f4f8cee --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/uexp.h @@ -0,0 +1,70 @@ +/* + * IBM Accurate Mathematical Library + * Written by International Business Machines Corp. + * Copyright (C) 2001 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, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +/******************************************************************/ +/* */ +/* MODULE_NAME:uexp.h */ +/* */ +/* common data and variables prototype and definition */ +/******************************************************************/ + +#ifndef UEXP_H +#define UEXP_H + +#include "mydefs.h" + +const static double one = 1.0, 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/src/system/libroot/posix/glibc/arch/generic/uexp.tbl b/src/system/libroot/posix/glibc/arch/generic/uexp.tbl new file mode 100644 index 0000000000..f2e8e8f559 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/uexp.tbl @@ -0,0 +1,1787 @@ +/* + * IBM Accurate Mathematical Library + * Written by International Business Machines Corp. + * Copyright (C) 2001 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, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +/****************************************************************/ +/* 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/src/system/libroot/posix/glibc/arch/generic/ulog.h b/src/system/libroot/posix/glibc/arch/generic/ulog.h new file mode 100644 index 0000000000..0ba6b7bb53 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/ulog.h @@ -0,0 +1,200 @@ +/* + * IBM Accurate Mathematical Library + * Written by International Business Machines Corp. + * Copyright (C) 2001 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, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +/******************************************************************/ +/* */ +/* 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 */ +/**/ zero = {{0x00000000, 0x00000000} }, /* 0 */ +/**/ one = {{0x3ff00000, 0x00000000} }, /* 1 */ +/**/ half = {{0x3fe00000, 0x00000000} }, /* 1/2 */ +/**/ mhalf = {{0xbfe00000, 0x00000000} }, /* -1/2 */ +/**/ 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 */ +/**/ zero = {{0x00000000, 0x00000000} }, /* 0 */ +/**/ one = {{0x00000000, 0x3ff00000} }, /* 1 */ +/**/ half = {{0x00000000, 0x3fe00000} }, /* 1/2 */ +/**/ mhalf = {{0x00000000, 0xbfe00000} }, /* -1/2 */ +/**/ 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 ZERO zero.d +#define ONE one.d +#define HALF half.d +#define MHALF mhalf.d +#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/src/system/libroot/posix/glibc/arch/generic/ulog.tbl b/src/system/libroot/posix/glibc/arch/generic/ulog.tbl new file mode 100644 index 0000000000..41aed931fb --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/ulog.tbl @@ -0,0 +1,3327 @@ +/* + * IBM Accurate Mathematical Library + * Written by International Business Machines Corp. + * Copyright (C) 2001 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, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +/****************************************************************/ +/* 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/src/system/libroot/posix/glibc/arch/generic/upow.h b/src/system/libroot/posix/glibc/arch/generic/upow.h new file mode 100644 index 0000000000..1db748319d --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/upow.h @@ -0,0 +1,81 @@ +/* + * IBM Accurate Mathematical Library + * Written by International Business Machines Corp. + * Copyright (C) 2001, 2002 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, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +/******************************************************************/ +/* */ +/* 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 */ +/**/ NaNQ = {{0x7ff80000, 0x00000000}}, /* NaNQ */ +/**/ sqrt_2 = {{0x3ff6a09e, 0x667f3bcc}}, /* sqrt(2) */ +/**/ 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 */ +/**/ NaNQ = {{0x00000000, 0x7ff80000}}, /* NaNQ */ +/**/ sqrt_2 = {{0x667f3bcc, 0x3ff6a09e}}, /* sqrt(2) */ +/**/ 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/src/system/libroot/posix/glibc/arch/generic/upow.tbl b/src/system/libroot/posix/glibc/arch/generic/upow.tbl new file mode 100644 index 0000000000..acad6bcc89 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/upow.tbl @@ -0,0 +1,10189 @@ +/* + * IBM Accurate Mathematical Library + * Written by International Business Machines Corp. + * Copyright (C) 2001 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, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +/****************************************************************/ +/* 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/src/system/libroot/posix/glibc/arch/generic/urem.h b/src/system/libroot/posix/glibc/arch/generic/urem.h new file mode 100644 index 0000000000..3713dd90d8 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/urem.h @@ -0,0 +1,51 @@ +/* + * IBM Accurate Mathematical Library + * Written by International Business Machines Corp. + * Copyright (C) 2001 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, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +/************************************************************************/ +/* 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 */ + NAN = {{0x7ff80000, 0}}, /* NaN */ + nNAN = {{0xfff80000, 0}}; /* -NaN */ +#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 */ + NAN = {{0, 0x7ff80000}}, /* NaN */ + nNAN = {{0, 0xfff80000}}; /* -NaN */ +#endif +#endif + +#endif diff --git a/src/system/libroot/posix/glibc/arch/generic/usncs.h b/src/system/libroot/posix/glibc/arch/generic/usncs.h new file mode 100644 index 0000000000..6c80f0cf95 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/usncs.h @@ -0,0 +1,80 @@ +/* + * IBM Accurate Mathematical Library + * Written by International Business Machines Corp. + * Copyright (C) 2001 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, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +/************************************************************************/ +/* MODULE_NAME: dosincos.h */ +/* */ +/* */ +/* common data and variables definition for BIG or LITTLE ENDIAN */ +/************************************************************************/ + +#ifndef USNCS_H +#define USNCS_H + +#ifdef BIG_ENDI +static const mynumber + +/**/ NAN = {{0x7ff80000, 0x00000000 }}, /* NaN */ +/**/ s1 = {{0xBFC55555, 0x55555555 }}, /* -0.16666666666666666 */ +/**/ s2 = {{0x3F811111, 0x11110ECE }}, /* 0.0083333333333323288 */ +/**/ s3 = {{0xBF2A01A0, 0x19DB08B8 }}, /* -0.00019841269834414642 */ +/**/ s4 = {{0x3EC71DE2, 0x7B9A7ED9 }}, /* 2.755729806860771e-06 */ +/**/ s5 = {{0xBE5ADDFF, 0xC2FCDF59 }}, /* -2.5022014848318398e-08 */ +/**/ aa = {{0xBFC55580, 0x00000000 }}, /* -0.1666717529296875 */ +/**/ bb = {{0x3ED55555, 0x55556E24 }}, /* 5.0862630208387126e-06 */ +/**/ big = {{0x42c80000, 0x00000000 }}, /* 52776558133248 */ +/**/ hp0 = {{0x3FF921FB, 0x54442D18 }}, /* 1.5707963267948966 */ +/**/ hp1 = {{0x3C91A626, 0x33145C07 }}, /* 6.123233995736766e-17 */ +/**/ mp1 = {{0x3FF921FB, 0x58000000 }}, /* 1.5707963407039642 */ +/**/ mp2 = {{0xBE4DDE97, 0x3C000000 }}, /* -1.3909067564377153e-08 */ +/**/ mp3 = {{0xBC8CB3B3, 0x99D747F2 }}, /* -4.9789962505147994e-17 */ +/**/ pp3 = {{0xBC8CB3B3, 0x98000000 }}, /* -4.9789962314799099e-17 */ +/**/ pp4 = {{0xbacd747f, 0x23e32ed7 }}, /* -1.9034889620193266e-25 */ +/**/ hpinv = {{0x3FE45F30, 0x6DC9C883 }}, /* 0.63661977236758138 */ +/**/ toint = {{0x43380000, 0x00000000 }}; /* 6755399441055744 */ + +#else +#ifdef LITTLE_ENDI +static const mynumber + +/**/ NAN = {{0x00000000, 0x7ff80000 }},/* NaN */ +/**/ s1 = {{0x55555555, 0xBFC55555 }},/* -0.16666666666666666 */ +/**/ s2 = {{0x11110ECE, 0x3F811111 }},/* 0.0083333333333323288 */ +/**/ s3 = {{0x19DB08B8, 0xBF2A01A0 }},/* -0.00019841269834414642 */ +/**/ s4 = {{0x7B9A7ED9, 0x3EC71DE2 }},/* 2.755729806860771e-06 */ +/**/ s5 = {{0xC2FCDF59, 0xBE5ADDFF }},/* -2.5022014848318398e-08 */ +/**/ aa = {{0x00000000, 0xBFC55580 }},/* -0.1666717529296875 */ +/**/ bb = {{0x55556E24, 0x3ED55555 }},/* 5.0862630208387126e-06 */ +/**/ big = {{0x00000000, 0x42c80000 }},/* 52776558133248 */ +/**/ hp0 = {{0x54442D18, 0x3FF921FB }},/* 1.5707963267948966 */ +/**/ hp1 = {{0x33145C07, 0x3C91A626 }},/* 6.123233995736766e-17 */ +/**/ mp1 = {{0x58000000, 0x3FF921FB }},/* 1.5707963407039642 */ +/**/ mp2 = {{0x3C000000, 0xBE4DDE97 }},/* -1.3909067564377153e-08 */ +/**/ mp3 = {{0x99D747F2, 0xBC8CB3B3 }},/* -4.9789962505147994e-17 */ +/**/ pp3 = {{0x98000000, 0xBC8CB3B3 }},/* -4.9789962314799099e-17 */ +/**/ pp4 = {{0x23e32ed7, 0xbacd747f }},/* -1.9034889620193266e-25 */ +/**/ hpinv = {{0x6DC9C883, 0x3FE45F30 }},/* 0.63661977236758138 */ +/**/ toint = {{0x00000000, 0x43380000 }};/* 6755399441055744 */ + + +#endif +#endif + +#endif diff --git a/src/system/libroot/posix/glibc/arch/generic/utan.h b/src/system/libroot/posix/glibc/arch/generic/utan.h new file mode 100644 index 0000000000..c866e88edc --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/utan.h @@ -0,0 +1,280 @@ +/* + * IBM Accurate Mathematical Library + * Written by International Business Machines Corp. + * Copyright (C) 2001 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, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +/******************************************************************/ +/* */ +/* 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 */ +/**/ zero = {{0x00000000, 0x00000000} }, /* 0 */ +/**/ one = {{0x3ff00000, 0x00000000} }, /* 1 */ +/**/ mone = {{0xbff00000, 0x00000000} }, /*-1 */ +/**/ mfftnhf = {{0xc02f0000, 0x00000000} }, /*-15.5 */ +/**/ two8 = {{0x40700000, 0x00000000} }, /* 256 */ + +/**/ 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 */ +/**/ zero = {{0x00000000, 0x00000000} }, /* 0 */ +/**/ one = {{0x00000000, 0x3ff00000} }, /* 1 */ +/**/ mone = {{0x00000000, 0xbff00000} }, /*-1 */ +/**/ mfftnhf = {{0x00000000, 0xc02f0000} }, /*-15.5 */ +/**/ two8 = {{0x00000000, 0x40700000} }, /* 256 */ + +/**/ 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 + + +#define ZERO zero.d +#define ONE one.d +#define MONE mone.d +#define TWO8 two8.d + +#endif diff --git a/src/system/libroot/posix/glibc/arch/generic/utan.tbl b/src/system/libroot/posix/glibc/arch/generic/utan.tbl new file mode 100644 index 0000000000..eb248bada9 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/utan.tbl @@ -0,0 +1,1526 @@ +/* + * IBM Accurate Mathematical Library + * Written by International Business Machines Corp. + * Copyright (C) 2001 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, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +/****************************************************************/ +/* 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/src/system/libroot/posix/glibc/arch/generic/w_acos.c b/src/system/libroot/posix/glibc/arch/generic/w_acos.c new file mode 100644 index 0000000000..5a1158ea7a --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/w_acos.c @@ -0,0 +1,48 @@ +/* @(#)w_acos.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: w_acos.c,v 1.6 1995/05/10 20:48:26 jtc Exp $"; +#endif + +/* + * wrap_acos(x) + */ + +#include "math.h" +#include "math_private.h" + + +#ifdef __STDC__ + double __acos(double x) /* wrapper acos */ +#else + double __acos(x) /* wrapper acos */ + double x; +#endif +{ +#ifdef _IEEE_LIBM + return __ieee754_acos(x); +#else + double z; + z = __ieee754_acos(x); + if(_LIB_VERSION == _IEEE_ || __isnan(x)) return z; + if(fabs(x)>1.0) { + return __kernel_standard(x,x,1); /* acos(|x|>1) */ + } else + return z; +#endif +} +weak_alias (__acos, acos) +#ifdef NO_LONG_DOUBLE +strong_alias (__acos, __acosl) +weak_alias (__acos, acosl) +#endif diff --git a/src/system/libroot/posix/glibc/arch/generic/w_acosf.c b/src/system/libroot/posix/glibc/arch/generic/w_acosf.c new file mode 100644 index 0000000000..28260ddd3e --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/w_acosf.c @@ -0,0 +1,48 @@ +/* w_acosf.c -- float version of w_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. + * ==================================================== + */ + +#if defined(LIBM_SCCS) && !defined(lint) +static char rcsid[] = "$NetBSD: w_acosf.c,v 1.3 1995/05/10 20:48:29 jtc Exp $"; +#endif + +/* + * wrap_acosf(x) + */ + +#include "math.h" +#include "math_private.h" + + +#ifdef __STDC__ + float __acosf(float x) /* wrapper acosf */ +#else + float __acosf(x) /* wrapper acosf */ + float x; +#endif +{ +#ifdef _IEEE_LIBM + return __ieee754_acosf(x); +#else + float z; + z = __ieee754_acosf(x); + if(_LIB_VERSION == _IEEE_ || __isnanf(x)) return z; + if(fabsf(x)>(float)1.0) { + /* acosf(|x|>1) */ + return (float)__kernel_standard((double)x,(double)x,101); + } else + return z; +#endif +} +weak_alias (__acosf, acosf) diff --git a/src/system/libroot/posix/glibc/arch/generic/w_acosh.c b/src/system/libroot/posix/glibc/arch/generic/w_acosh.c new file mode 100644 index 0000000000..2b5d60f7ea --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/w_acosh.c @@ -0,0 +1,47 @@ +/* @(#)w_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. + * ==================================================== + */ + +#if defined(LIBM_SCCS) && !defined(lint) +static char rcsid[] = "$NetBSD: w_acosh.c,v 1.6 1995/05/10 20:48:31 jtc Exp $"; +#endif + +/* + * wrapper acosh(x) + */ + +#include "math.h" +#include "math_private.h" + +#ifdef __STDC__ + double __acosh(double x) /* wrapper acosh */ +#else + double __acosh(x) /* wrapper acosh */ + double x; +#endif +{ +#ifdef _IEEE_LIBM + return __ieee754_acosh(x); +#else + double z; + z = __ieee754_acosh(x); + if(_LIB_VERSION == _IEEE_ || __isnan(x)) return z; + if(x<1.0) { + return __kernel_standard(x,x,29); /* acosh(x<1) */ + } else + return z; +#endif +} +weak_alias (__acosh, acosh) +#ifdef NO_LONG_DOUBLE +strong_alias (__acosh, __acoshl) +weak_alias (__acosh, acoshl) +#endif diff --git a/src/system/libroot/posix/glibc/arch/generic/w_acoshf.c b/src/system/libroot/posix/glibc/arch/generic/w_acoshf.c new file mode 100644 index 0000000000..f701983dc2 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/w_acoshf.c @@ -0,0 +1,48 @@ +/* w_acoshf.c -- float version of w_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: w_acoshf.c,v 1.3 1995/05/10 20:48:33 jtc Exp $"; +#endif + +/* + * wrapper acoshf(x) + */ + +#include "math.h" +#include "math_private.h" + +#ifdef __STDC__ + float __acoshf(float x) /* wrapper acoshf */ +#else + float __acoshf(x) /* wrapper acoshf */ + float x; +#endif +{ +#ifdef _IEEE_LIBM + return __ieee754_acoshf(x); +#else + float z; + z = __ieee754_acoshf(x); + if(_LIB_VERSION == _IEEE_ || __isnanf(x)) return z; + if(x<(float)1.0) { + /* acosh(x<1) */ + return (float)__kernel_standard((double)x,(double)x,129); + } else + return z; +#endif +} +weak_alias (__acoshf, acoshf) diff --git a/src/system/libroot/posix/glibc/arch/generic/w_atanh.c b/src/system/libroot/posix/glibc/arch/generic/w_atanh.c new file mode 100644 index 0000000000..e7995b1830 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/w_atanh.c @@ -0,0 +1,52 @@ +/* @(#)w_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. + * ==================================================== + */ + +#if defined(LIBM_SCCS) && !defined(lint) +static char rcsid[] = "$NetBSD: w_atanh.c,v 1.6 1995/05/10 20:48:43 jtc Exp $"; +#endif + +/* + * wrapper atanh(x) + */ + +#include "math.h" +#include "math_private.h" + + +#ifdef __STDC__ + double __atanh(double x) /* wrapper atanh */ +#else + double __atanh(x) /* wrapper atanh */ + double x; +#endif +{ +#ifdef _IEEE_LIBM + return __ieee754_atanh(x); +#else + double z,y; + z = __ieee754_atanh(x); + if(_LIB_VERSION == _IEEE_ || __isnan(x)) return z; + y = fabs(x); + if(y>=1.0) { + if(y>1.0) + return __kernel_standard(x,x,30); /* atanh(|x|>1) */ + else + return __kernel_standard(x,x,31); /* atanh(|x|==1) */ + } else + return z; +#endif +} +weak_alias (__atanh, atanh) +#ifdef NO_LONG_DOUBLE +strong_alias (__atanh, __atanhl) +weak_alias (__atanh, atanhl) +#endif diff --git a/src/system/libroot/posix/glibc/arch/generic/w_atanhf.c b/src/system/libroot/posix/glibc/arch/generic/w_atanhf.c new file mode 100644 index 0000000000..0b24f2c71a --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/w_atanhf.c @@ -0,0 +1,53 @@ +/* w_atanhf.c -- float version of w_atanh.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: w_atanhf.c,v 1.3 1995/05/10 20:48:45 jtc Exp $"; +#endif + +/* + * wrapper atanhf(x) + */ + +#include "math.h" +#include "math_private.h" + + +#ifdef __STDC__ + float __atanhf(float x) /* wrapper atanhf */ +#else + float __atanhf(x) /* wrapper atanhf */ + float x; +#endif +{ +#ifdef _IEEE_LIBM + return __ieee754_atanhf(x); +#else + float z,y; + z = __ieee754_atanhf(x); + if(_LIB_VERSION == _IEEE_ || __isnanf(x)) return z; + y = fabsf(x); + if(y>=(float)1.0) { + if(y>(float)1.0) + /* atanhf(|x|>1) */ + return (float)__kernel_standard((double)x,(double)x,130); + else + /* atanhf(|x|==1) */ + return (float)__kernel_standard((double)x,(double)x,131); + } else + return z; +#endif +} +weak_alias (__atanhf, atanhf) diff --git a/src/system/libroot/posix/glibc/arch/generic/w_cosh.c b/src/system/libroot/posix/glibc/arch/generic/w_cosh.c new file mode 100644 index 0000000000..709f485c6d --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/w_cosh.c @@ -0,0 +1,47 @@ +/* @(#)w_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. + * ==================================================== + */ + +#if defined(LIBM_SCCS) && !defined(lint) +static char rcsid[] = "$NetBSD: w_cosh.c,v 1.6 1995/05/10 20:48:47 jtc Exp $"; +#endif + +/* + * wrapper cosh(x) + */ + +#include "math.h" +#include "math_private.h" + +#ifdef __STDC__ + double __cosh(double x) /* wrapper cosh */ +#else + double __cosh(x) /* wrapper cosh */ + double x; +#endif +{ +#ifdef _IEEE_LIBM + return __ieee754_cosh(x); +#else + double z; + z = __ieee754_cosh(x); + if(_LIB_VERSION == _IEEE_ || __isnan(x)) return z; + if(!__finite(z) && __finite(x)) { + return __kernel_standard(x,x,5); /* cosh overflow */ + } else + return z; +#endif +} +weak_alias (__cosh, cosh) +#ifdef NO_LONG_DOUBLE +strong_alias (__cosh, __coshl) +weak_alias (__cosh, coshl) +#endif diff --git a/src/system/libroot/posix/glibc/arch/generic/w_coshf.c b/src/system/libroot/posix/glibc/arch/generic/w_coshf.c new file mode 100644 index 0000000000..c38fd1d93f --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/w_coshf.c @@ -0,0 +1,47 @@ +/* w_coshf.c -- float version of w_cosh.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: w_coshf.c,v 1.3 1995/05/10 20:48:49 jtc Exp $"; +#endif + +/* + * wrapper coshf(x) + */ + +#include "math.h" +#include "math_private.h" + +#ifdef __STDC__ + float __coshf(float x) /* wrapper coshf */ +#else + float __coshf(x) /* wrapper coshf */ + float x; +#endif +{ +#ifdef _IEEE_LIBM + return __ieee754_coshf(x); +#else + float z; + z = __ieee754_coshf(x); + if(_LIB_VERSION == _IEEE_ || __isnanf(x)) return z; + if(!__finite(z) && __finite(x)) { + /* cosh overflow */ + return (float)__kernel_standard((double)x,(double)x,105); + } else + return z; +#endif +} +weak_alias (__coshf, coshf) diff --git a/src/system/libroot/posix/glibc/arch/generic/w_drem.c b/src/system/libroot/posix/glibc/arch/generic/w_drem.c new file mode 100644 index 0000000000..9e2b1e7472 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/w_drem.c @@ -0,0 +1,20 @@ +/* + * drem() wrapper for remainder(). + * + * Written by J.T. Conklin, + * Placed into the Public Domain, 1994. + */ + +#include + +double +__drem(x, y) + double x, y; +{ + return __remainder(x, y); +} +weak_alias (__drem, drem) +#ifdef NO_LONG_DOUBLE +strong_alias (__drem, __dreml) +weak_alias (__drem, dreml) +#endif diff --git a/src/system/libroot/posix/glibc/arch/generic/w_dremf.c b/src/system/libroot/posix/glibc/arch/generic/w_dremf.c new file mode 100644 index 0000000000..b740ea304c --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/w_dremf.c @@ -0,0 +1,17 @@ +/* + * dremf() wrapper for remainderf(). + * + * Written by J.T. Conklin, + * Placed into the Public Domain, 1994. + */ + +#include "math.h" +#include "math_private.h" + +float +__dremf(x, y) + float x, y; +{ + return __remainderf(x, y); +} +weak_alias (__dremf, dremf) diff --git a/src/system/libroot/posix/glibc/arch/generic/w_exp.c b/src/system/libroot/posix/glibc/arch/generic/w_exp.c new file mode 100644 index 0000000000..445c5788d2 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/w_exp.c @@ -0,0 +1,58 @@ +/* @(#)w_exp.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: w_exp.c,v 1.6 1995/05/10 20:48:51 jtc Exp $"; +#endif + +/* + * wrapper exp(x) + */ + +#include "math.h" +#include "math_private.h" + +#ifdef __STDC__ +static const double +#else +static double +#endif +o_threshold= 7.09782712893383973096e+02, /* 0x40862E42, 0xFEFA39EF */ +u_threshold= -7.45133219101941108420e+02; /* 0xc0874910, 0xD52D3051 */ + +#ifdef __STDC__ + double __exp(double x) /* wrapper exp */ +#else + double __exp(x) /* wrapper exp */ + double x; +#endif +{ +#ifdef _IEEE_LIBM + return __ieee754_exp(x); +#else + double z; + z = __ieee754_exp(x); + if(_LIB_VERSION == _IEEE_) return z; + if(__finite(x)) { + if(x>o_threshold) + return __kernel_standard(x,x,6); /* exp overflow */ + else if(xo_threshold) + /* exp overflow */ + return (float)__kernel_standard((double)x,(double)x,106); + else if(xX_TLOSS) { + return __kernel_standard(x,x,34); /* j0(|x|>X_TLOSS) */ + } else + return z; +#endif +} +#ifdef NO_LONG_DOUBLE +strong_alias (j0, j0l) +#endif + + +#ifdef __STDC__ + double y0(double x) /* wrapper y0 */ +#else + double y0(x) /* wrapper y0 */ + double x; +#endif +{ +#ifdef _IEEE_LIBM + return __ieee754_y0(x); +#else + double z; + z = __ieee754_y0(x); + if(_LIB_VERSION == _IEEE_ || __isnan(x) ) return z; + if(x <= 0.0){ + if(x==0.0) + /* d= -one/(x-x); */ + return __kernel_standard(x,x,8); + else + /* d = zero/(x-x); */ + return __kernel_standard(x,x,9); + } + if(x>X_TLOSS) { + return __kernel_standard(x,x,35); /* y0(x>X_TLOSS) */ + } else + return z; +#endif +} +#ifdef NO_LONG_DOUBLE +strong_alias (y0, y0l) +#endif diff --git a/src/system/libroot/posix/glibc/arch/generic/w_j0f.c b/src/system/libroot/posix/glibc/arch/generic/w_j0f.c new file mode 100644 index 0000000000..32e2eebb56 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/w_j0f.c @@ -0,0 +1,74 @@ +/* w_j0f.c -- float version of w_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. + * ==================================================== + */ + +#if defined(LIBM_SCCS) && !defined(lint) +static char rcsid[] = "$NetBSD: w_j0f.c,v 1.3 1995/05/10 20:49:13 jtc Exp $"; +#endif + +/* + * wrapper j0f(float x), y0f(float x) + */ + +#include "math.h" +#include "math_private.h" + +#ifdef __STDC__ + float j0f(float x) /* wrapper j0f */ +#else + float j0f(x) /* wrapper j0f */ + float x; +#endif +{ +#ifdef _IEEE_LIBM + return __ieee754_j0f(x); +#else + float z = __ieee754_j0f(x); + if(_LIB_VERSION == _IEEE_ || __isnanf(x)) return z; + if(fabsf(x)>(float)X_TLOSS) { + /* j0f(|x|>X_TLOSS) */ + return (float)__kernel_standard((double)x,(double)x,134); + } else + return z; +#endif +} + +#ifdef __STDC__ + float y0f(float x) /* wrapper y0f */ +#else + float y0f(x) /* wrapper y0f */ + float x; +#endif +{ +#ifdef _IEEE_LIBM + return __ieee754_y0f(x); +#else + float z; + z = __ieee754_y0f(x); + if(_LIB_VERSION == _IEEE_ || __isnanf(x) ) return z; + if(x <= (float)0.0){ + if(x==(float)0.0) + /* d= -one/(x-x); */ + return (float)__kernel_standard((double)x,(double)x,108); + else + /* d = zero/(x-x); */ + return (float)__kernel_standard((double)x,(double)x,109); + } + if(x>(float)X_TLOSS) { + /* y0(x>X_TLOSS) */ + return (float)__kernel_standard((double)x,(double)x,135); + } else + return z; +#endif +} diff --git a/src/system/libroot/posix/glibc/arch/generic/w_j1.c b/src/system/libroot/posix/glibc/arch/generic/w_j1.c new file mode 100644 index 0000000000..39fe8543b1 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/w_j1.c @@ -0,0 +1,77 @@ +/* @(#)w_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. + * ==================================================== + */ + +#if defined(LIBM_SCCS) && !defined(lint) +static char rcsid[] = "$NetBSD: w_j1.c,v 1.6 1995/05/10 20:49:15 jtc Exp $"; +#endif + +/* + * wrapper of j1,y1 + */ + +#include "math.h" +#include "math_private.h" + +#ifdef __STDC__ + double j1(double x) /* wrapper j1 */ +#else + double j1(x) /* wrapper j1 */ + double x; +#endif +{ +#ifdef _IEEE_LIBM + return __ieee754_j1(x); +#else + double z; + z = __ieee754_j1(x); + if(_LIB_VERSION == _IEEE_ || __isnan(x) ) return z; + if(fabs(x)>X_TLOSS) { + return __kernel_standard(x,x,36); /* j1(|x|>X_TLOSS) */ + } else + return z; +#endif +} +#ifdef NO_LONG_DOUBLE +strong_alias (j1, j1l) +#endif + + +#ifdef __STDC__ + double y1(double x) /* wrapper y1 */ +#else + double y1(x) /* wrapper y1 */ + double x; +#endif +{ +#ifdef _IEEE_LIBM + return __ieee754_y1(x); +#else + double z; + z = __ieee754_y1(x); + if(_LIB_VERSION == _IEEE_ || __isnan(x) ) return z; + if(x <= 0.0){ + if(x==0.0) + /* d= -one/(x-x); */ + return __kernel_standard(x,x,10); + else + /* d = zero/(x-x); */ + return __kernel_standard(x,x,11); + } + if(x>X_TLOSS) { + return __kernel_standard(x,x,37); /* y1(x>X_TLOSS) */ + } else + return z; +#endif +} +#ifdef NO_LONG_DOUBLE +strong_alias (y1, y1l) +#endif diff --git a/src/system/libroot/posix/glibc/arch/generic/w_j1f.c b/src/system/libroot/posix/glibc/arch/generic/w_j1f.c new file mode 100644 index 0000000000..2a7c8db819 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/w_j1f.c @@ -0,0 +1,75 @@ +/* w_j1f.c -- float version of w_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. + * ==================================================== + */ + +#if defined(LIBM_SCCS) && !defined(lint) +static char rcsid[] = "$NetBSD: w_j1f.c,v 1.3 1995/05/10 20:49:17 jtc Exp $"; +#endif + +/* + * wrapper of j1f,y1f + */ + +#include "math.h" +#include "math_private.h" + +#ifdef __STDC__ + float j1f(float x) /* wrapper j1f */ +#else + float j1f(x) /* wrapper j1f */ + float x; +#endif +{ +#ifdef _IEEE_LIBM + return __ieee754_j1f(x); +#else + float z; + z = __ieee754_j1f(x); + if(_LIB_VERSION == _IEEE_ || __isnanf(x) ) return z; + if(fabsf(x)>(float)X_TLOSS) { + /* j1(|x|>X_TLOSS) */ + return (float)__kernel_standard((double)x,(double)x,136); + } else + return z; +#endif +} + +#ifdef __STDC__ + float y1f(float x) /* wrapper y1f */ +#else + float y1f(x) /* wrapper y1f */ + float x; +#endif +{ +#ifdef _IEEE_LIBM + return __ieee754_y1f(x); +#else + float z; + z = __ieee754_y1f(x); + if(_LIB_VERSION == _IEEE_ || __isnanf(x) ) return z; + if(x <= (float)0.0){ + if(x==(float)0.0) + /* d= -one/(x-x); */ + return (float)__kernel_standard((double)x,(double)x,110); + else + /* d = zero/(x-x); */ + return (float)__kernel_standard((double)x,(double)x,111); + } + if(x>(float)X_TLOSS) { + /* y1(x>X_TLOSS) */ + return (float)__kernel_standard((double)x,(double)x,137); + } else + return z; +#endif +} diff --git a/src/system/libroot/posix/glibc/arch/generic/w_jn.c b/src/system/libroot/posix/glibc/arch/generic/w_jn.c new file mode 100644 index 0000000000..85fc383fb7 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/w_jn.c @@ -0,0 +1,99 @@ +/* @(#)w_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. + * ==================================================== + */ + +#if defined(LIBM_SCCS) && !defined(lint) +static char rcsid[] = "$NetBSD: w_jn.c,v 1.6 1995/05/10 20:49:19 jtc Exp $"; +#endif + +/* + * wrapper jn(int n, double x), yn(int n, double 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 nx, 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 "math.h" +#include "math_private.h" + +#ifdef __STDC__ + double jn(int n, double x) /* wrapper jn */ +#else + double jn(n,x) /* wrapper jn */ + double x; int n; +#endif +{ +#ifdef _IEEE_LIBM + return __ieee754_jn(n,x); +#else + double z; + z = __ieee754_jn(n,x); + if(_LIB_VERSION == _IEEE_ || __isnan(x) ) return z; + if(fabs(x)>X_TLOSS) { + return __kernel_standard((double)n,x,38); /* jn(|x|>X_TLOSS,n) */ + } else + return z; +#endif +} +#ifdef NO_LONG_DOUBLE +strong_alias (jn, jnl) +#endif + + +#ifdef __STDC__ + double yn(int n, double x) /* wrapper yn */ +#else + double yn(n,x) /* wrapper yn */ + double x; int n; +#endif +{ +#ifdef _IEEE_LIBM + return __ieee754_yn(n,x); +#else + double z; + z = __ieee754_yn(n,x); + if(_LIB_VERSION == _IEEE_ || __isnan(x) ) return z; + if(x <= 0.0){ + if(x==0.0) + /* d= -one/(x-x); */ + return __kernel_standard((double)n,x,12); + else + /* d = zero/(x-x); */ + return __kernel_standard((double)n,x,13); + } + if(x>X_TLOSS) { + return __kernel_standard((double)n,x,39); /* yn(x>X_TLOSS,n) */ + } else + return z; +#endif +} +#ifdef NO_LONG_DOUBLE +strong_alias (yn, ynl) +#endif diff --git a/src/system/libroot/posix/glibc/arch/generic/w_jnf.c b/src/system/libroot/posix/glibc/arch/generic/w_jnf.c new file mode 100644 index 0000000000..63ad335573 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/w_jnf.c @@ -0,0 +1,71 @@ +/* w_jnf.c -- float version of w_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. + * ==================================================== + */ + +#if defined(LIBM_SCCS) && !defined(lint) +static char rcsid[] = "$NetBSD: w_jnf.c,v 1.3 1995/05/10 20:49:21 jtc Exp $"; +#endif + +#include "math.h" +#include "math_private.h" + +#ifdef __STDC__ + float jnf(int n, float x) /* wrapper jnf */ +#else + float jnf(n,x) /* wrapper jnf */ + float x; int n; +#endif +{ +#ifdef _IEEE_LIBM + return __ieee754_jnf(n,x); +#else + float z; + z = __ieee754_jnf(n,x); + if(_LIB_VERSION == _IEEE_ || __isnanf(x) ) return z; + if(fabsf(x)>(float)X_TLOSS) { + /* jn(|x|>X_TLOSS,n) */ + return (float)__kernel_standard((double)n,(double)x,138); + } else + return z; +#endif +} + +#ifdef __STDC__ + float ynf(int n, float x) /* wrapper ynf */ +#else + float ynf(n,x) /* wrapper ynf */ + float x; int n; +#endif +{ +#ifdef _IEEE_LIBM + return __ieee754_ynf(n,x); +#else + float z; + z = __ieee754_ynf(n,x); + if(_LIB_VERSION == _IEEE_ || __isnanf(x) ) return z; + if(x <= (float)0.0){ + if(x==(float)0.0) + /* d= -one/(x-x); */ + return (float)__kernel_standard((double)n,(double)x,112); + else + /* d = zero/(x-x); */ + return (float)__kernel_standard((double)n,(double)x,113); + } + if(x>(float)X_TLOSS) { + /* yn(x>X_TLOSS,n) */ + return (float)__kernel_standard((double)n,(double)x,139); + } else + return z; +#endif +} diff --git a/src/system/libroot/posix/glibc/arch/generic/w_lgamma.c b/src/system/libroot/posix/glibc/arch/generic/w_lgamma.c new file mode 100644 index 0000000000..7c7f34ff39 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/w_lgamma.c @@ -0,0 +1,60 @@ +/* @(#)w_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. + * ==================================================== + */ + +#if defined(LIBM_SCCS) && !defined(lint) +static char rcsid[] = "$NetBSD: w_lgamma.c,v 1.6 1995/05/10 20:49:24 jtc Exp $"; +#endif + +/* double lgamma(double x) + * Return the logarithm of the Gamma function of x. + * + * Method: call __ieee754_lgamma_r + */ + +#include "math.h" +#include "math_private.h" + +#ifdef __STDC__ + double __lgamma(double x) +#else + double __lgamma(x) + double x; +#endif +{ +#ifdef _IEEE_LIBM + return __ieee754_lgamma_r(x,&signgam); +#else + double y; + int local_signgam = 0; + y = __ieee754_lgamma_r(x,&local_signgam); + if (_LIB_VERSION != _ISOC_) + /* ISO C99 does not define the global variable. */ + signgam = local_signgam; + if(_LIB_VERSION == _IEEE_) return y; + if(!__finite(y)&&__finite(x)) { + if(__floor(x)==x&&x<=0.0) + return __kernel_standard(x,x,15); /* lgamma pole */ + else + return __kernel_standard(x,x,14); /* lgamma overflow */ + } else + return y; +#endif +} +weak_alias (__lgamma, lgamma) +strong_alias (__lgamma, __gamma) +weak_alias (__gamma, gamma) +#ifdef NO_LONG_DOUBLE +strong_alias (__lgamma, __lgammal) +weak_alias (__lgamma, lgammal) +strong_alias (__gamma, __gammal) +weak_alias (__gamma, gammal) +#endif diff --git a/src/system/libroot/posix/glibc/arch/generic/w_lgamma_r.c b/src/system/libroot/posix/glibc/arch/generic/w_lgamma_r.c new file mode 100644 index 0000000000..f3e7d821e2 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/w_lgamma_r.c @@ -0,0 +1,51 @@ +/* @(#)wr_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. + * ==================================================== + */ + +#if defined(LIBM_SCCS) && !defined(lint) +static char rcsid[] = "$NetBSD: w_lgamma_r.c,v 1.6 1995/05/10 20:49:27 jtc Exp $"; +#endif + +/* + * wrapper double lgamma_r(double x, int *signgamp) + */ + +#include "math.h" +#include "math_private.h" + + +#ifdef __STDC__ + double __lgamma_r(double x, int *signgamp) /* wrapper lgamma_r */ +#else + double __lgamma_r(x,signgamp) /* wrapper lgamma_r */ + double x; int *signgamp; +#endif +{ +#ifdef _IEEE_LIBM + return __ieee754_lgamma_r(x,signgamp); +#else + double y; + y = __ieee754_lgamma_r(x,signgamp); + if(_LIB_VERSION == _IEEE_) return y; + if(!__finite(y)&&__finite(x)) { + if(__floor(x)==x&&x<=0.0) + return __kernel_standard(x,x,15); /* lgamma pole */ + else + return __kernel_standard(x,x,14); /* lgamma overflow */ + } else + return y; +#endif +} +weak_alias (__lgamma_r, lgamma_r) +#ifdef NO_LONG_DOUBLE +strong_alias (__lgamma_r, __lgammal_r) +weak_alias (__lgamma_r, lgammal_r) +#endif diff --git a/src/system/libroot/posix/glibc/arch/generic/w_lgammaf.c b/src/system/libroot/posix/glibc/arch/generic/w_lgammaf.c new file mode 100644 index 0000000000..d0f6d0d17c --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/w_lgammaf.c @@ -0,0 +1,53 @@ +/* w_lgammaf.c -- float version of w_lgamma.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: w_lgammaf.c,v 1.3 1995/05/10 20:49:30 jtc Exp $"; +#endif + +#include "math.h" +#include "math_private.h" + +#ifdef __STDC__ + float __lgammaf(float x) +#else + float __lgammaf(x) + float x; +#endif +{ +#ifdef _IEEE_LIBM + return __ieee754_lgammaf_r(x,&signgam); +#else + float y; + int local_signgam = 0; + y = __ieee754_lgammaf_r(x,&local_signgam); + if (_LIB_VERSION != _ISOC_) + /* ISO C99 does not define the global variable. */ + signgam = local_signgam; + if(_LIB_VERSION == _IEEE_) return y; + if(!__finitef(y)&&__finitef(x)) { + if(__floorf(x)==x&&x<=(float)0.0) + /* lgamma pole */ + return (float)__kernel_standard((double)x,(double)x,115); + else + /* lgamma overflow */ + return (float)__kernel_standard((double)x,(double)x,114); + } else + return y; +#endif +} +weak_alias (__lgammaf, lgammaf) +strong_alias (__lgammaf, __gammaf) +weak_alias (__gammaf, gammaf) diff --git a/src/system/libroot/posix/glibc/arch/generic/w_lgammaf_r.c b/src/system/libroot/posix/glibc/arch/generic/w_lgammaf_r.c new file mode 100644 index 0000000000..66962acc7e --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/w_lgammaf_r.c @@ -0,0 +1,52 @@ +/* w_lgammaf_r.c -- float version of w_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. + * ==================================================== + */ + +#if defined(LIBM_SCCS) && !defined(lint) +static char rcsid[] = "$NetBSD: w_lgammaf_r.c,v 1.3 1995/05/10 20:49:32 jtc Exp $"; +#endif + +/* + * wrapper float lgammaf_r(float x, int *signgamp) + */ + +#include "math.h" +#include "math_private.h" + + +#ifdef __STDC__ + float __lgammaf_r(float x, int *signgamp) /* wrapper lgammaf_r */ +#else + float __lgammaf_r(x,signgamp) /* wrapper lgammaf_r */ + float x; int *signgamp; +#endif +{ +#ifdef _IEEE_LIBM + return __ieee754_lgammaf_r(x,signgamp); +#else + float y; + y = __ieee754_lgammaf_r(x,signgamp); + if(_LIB_VERSION == _IEEE_) return y; + if(!__finitef(y)&&__finitef(x)) { + if(__floorf(x)==x&&x<=(float)0.0) + /* lgamma pole */ + return (float)__kernel_standard((double)x,(double)x,115); + else + /* lgamma overflow */ + return (float)__kernel_standard((double)x,(double)x,114); + } else + return y; +#endif +} +weak_alias (__lgammaf_r, lgammaf_r) diff --git a/src/system/libroot/posix/glibc/arch/generic/w_log.c b/src/system/libroot/posix/glibc/arch/generic/w_log.c new file mode 100644 index 0000000000..5f0af79731 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/w_log.c @@ -0,0 +1,48 @@ +/* @(#)w_log.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: w_log.c,v 1.6 1995/05/10 20:49:33 jtc Exp $"; +#endif + +/* + * wrapper log(x) + */ + +#include "math.h" +#include "math_private.h" + + +#ifdef __STDC__ + double __log(double x) /* wrapper log */ +#else + double __log(x) /* wrapper log */ + double x; +#endif +{ +#ifdef _IEEE_LIBM + return __ieee754_log(x); +#else + double z; + z = __ieee754_log(x); + if(_LIB_VERSION == _IEEE_ || __isnan(x) || x > 0.0) return z; + if(x==0.0) + return __kernel_standard(x,x,16); /* log(0) */ + else + return __kernel_standard(x,x,17); /* log(x<0) */ +#endif +} +weak_alias (__log, log) +#ifdef NO_LONG_DOUBLE +strong_alias (__log, __logl) +weak_alias (__log, logl) +#endif diff --git a/src/system/libroot/posix/glibc/arch/generic/w_log10.c b/src/system/libroot/posix/glibc/arch/generic/w_log10.c new file mode 100644 index 0000000000..8a0a70bdf7 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/w_log10.c @@ -0,0 +1,51 @@ +/* @(#)w_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. + * ==================================================== + */ + +#if defined(LIBM_SCCS) && !defined(lint) +static char rcsid[] = "$NetBSD: w_log10.c,v 1.6 1995/05/10 20:49:35 jtc Exp $"; +#endif + +/* + * wrapper log10(X) + */ + +#include "math.h" +#include "math_private.h" + + +#ifdef __STDC__ + double __log10(double x) /* wrapper log10 */ +#else + double __log10(x) /* wrapper log10 */ + double x; +#endif +{ +#ifdef _IEEE_LIBM + return __ieee754_log10(x); +#else + double z; + z = __ieee754_log10(x); + if(_LIB_VERSION == _IEEE_ || __isnan(x)) return z; + if(x<=0.0) { + if(x==0.0) + return __kernel_standard(x,x,18); /* log10(0) */ + else + return __kernel_standard(x,x,19); /* log10(x<0) */ + } else + return z; +#endif +} +weak_alias (__log10, log10) +#ifdef NO_LONG_DOUBLE +strong_alias (__log10, __log10l) +weak_alias (__log10, log10l) +#endif diff --git a/src/system/libroot/posix/glibc/arch/generic/w_log10f.c b/src/system/libroot/posix/glibc/arch/generic/w_log10f.c new file mode 100644 index 0000000000..f90cb0cabc --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/w_log10f.c @@ -0,0 +1,52 @@ +/* w_log10f.c -- float version of w_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. + * ==================================================== + */ + +#if defined(LIBM_SCCS) && !defined(lint) +static char rcsid[] = "$NetBSD: w_log10f.c,v 1.3 1995/05/10 20:49:37 jtc Exp $"; +#endif + +/* + * wrapper log10f(X) + */ + +#include "math.h" +#include "math_private.h" + + +#ifdef __STDC__ + float __log10f(float x) /* wrapper log10f */ +#else + float __log10f(x) /* wrapper log10f */ + float x; +#endif +{ +#ifdef _IEEE_LIBM + return __ieee754_log10f(x); +#else + float z; + z = __ieee754_log10f(x); + if(_LIB_VERSION == _IEEE_ || __isnanf(x)) return z; + if(x<=(float)0.0) { + if(x==(float)0.0) + /* log10(0) */ + return (float)__kernel_standard((double)x,(double)x,118); + else + /* log10(x<0) */ + return (float)__kernel_standard((double)x,(double)x,119); + } else + return z; +#endif +} +weak_alias (__log10f, log10f) diff --git a/src/system/libroot/posix/glibc/arch/generic/w_logf.c b/src/system/libroot/posix/glibc/arch/generic/w_logf.c new file mode 100644 index 0000000000..9eabe4b34c --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/w_logf.c @@ -0,0 +1,49 @@ +/* w_logf.c -- float version of w_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. + * ==================================================== + */ + +#if defined(LIBM_SCCS) && !defined(lint) +static char rcsid[] = "$NetBSD: w_logf.c,v 1.3 1995/05/10 20:49:40 jtc Exp $"; +#endif + +/* + * wrapper logf(x) + */ + +#include "math.h" +#include "math_private.h" + + +#ifdef __STDC__ + float __logf(float x) /* wrapper logf */ +#else + float __logf(x) /* wrapper logf */ + float x; +#endif +{ +#ifdef _IEEE_LIBM + return __ieee754_logf(x); +#else + float z; + z = __ieee754_logf(x); + if(_LIB_VERSION == _IEEE_ || __isnanf(x) || x > (float)0.0) return z; + if(x==(float)0.0) + /* logf(0) */ + return (float)__kernel_standard((double)x,(double)x,116); + else + /* logf(x<0) */ + return (float)__kernel_standard((double)x,(double)x,117); +#endif +} +weak_alias (__logf, logf) diff --git a/src/system/libroot/posix/glibc/arch/generic/w_pow.c b/src/system/libroot/posix/glibc/arch/generic/w_pow.c new file mode 100644 index 0000000000..5850651a1a --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/w_pow.c @@ -0,0 +1,70 @@ + + +/* @(#)w_pow.c 5.2 93/10/01 */ +/* + * ==================================================== + * 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. + * ==================================================== + */ + +/* + * wrapper pow(x,y) return x**y + */ + +#include "math.h" +#include "math_private.h" + + +#ifdef __STDC__ + double __pow(double x, double y) /* wrapper pow */ +#else + double __pow(x,y) /* wrapper pow */ + double x,y; +#endif +{ +#ifdef _IEEE_LIBM + return __ieee754_pow(x,y); +#else + double z; + z=__ieee754_pow(x,y); + if(_LIB_VERSION == _IEEE_|| __isnan(y)) return z; + if(__isnan(x)) { + if(y==0.0) + return __kernel_standard(x,y,42); /* pow(NaN,0.0) */ + else + return z; + } + if(x==0.0) { + if(y==0.0) + return __kernel_standard(x,y,20); /* pow(0.0,0.0) */ + if(__finite(y)&&y<0.0) { + if (signbit (x) && signbit (z)) + return __kernel_standard(x,y,23); /* pow(-0.0,negative) */ + else + return __kernel_standard(x,y,43); /* pow(+0.0,negative) */ + } + return z; + } + if(!__finite(z)) { + if(__finite(x)&&__finite(y)) { + if(__isnan(z)) + return __kernel_standard(x,y,24); /* pow neg**non-int */ + else + return __kernel_standard(x,y,21); /* pow overflow */ + } + } + if(z==0.0&&__finite(x)&&__finite(y)) + return __kernel_standard(x,y,22); /* pow underflow */ + return z; +#endif +} +weak_alias (__pow, pow) +#ifdef NO_LONG_DOUBLE +strong_alias (__pow, __powl) +weak_alias (__pow, powl) +#endif diff --git a/src/system/libroot/posix/glibc/arch/generic/w_powf.c b/src/system/libroot/posix/glibc/arch/generic/w_powf.c new file mode 100644 index 0000000000..32196fd89f --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/w_powf.c @@ -0,0 +1,77 @@ +/* w_powf.c -- float version of w_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. + * ==================================================== + */ + +#if defined(LIBM_SCCS) && !defined(lint) +static char rcsid[] = "$NetBSD: w_powf.c,v 1.3 1995/05/10 20:49:41 jtc Exp $"; +#endif + +/* + * wrapper powf(x,y) return x**y + */ + +#include "math.h" +#include "math_private.h" + + +#ifdef __STDC__ + float __powf(float x, float y) /* wrapper powf */ +#else + float __powf(x,y) /* wrapper powf */ + float x,y; +#endif +{ +#ifdef _IEEE_LIBM + return __ieee754_powf(x,y); +#else + float z; + z=__ieee754_powf(x,y); + if(_LIB_VERSION == _IEEE_|| __isnanf(y)) return z; + if(__isnanf(x)) { + if(y==(float)0.0) + /* powf(NaN,0.0) */ + return (float)__kernel_standard((double)x,(double)y,142); + else + return z; + } + if(x==(float)0.0) { + if(y==(float)0.0) + /* powf(0.0,0.0) */ + return (float)__kernel_standard((double)x,(double)y,120); + if(__finitef(y)&&y<(float)0.0) { + if (signbit (x) && signbit (z)) + /* powf(0.0,negative) */ + return (float)__kernel_standard((double)x,(double)y,123); + else + return (float)__kernel_standard((double)x,(double)y,143); + } + return z; + } + if(!__finitef(z)) { + if(__finitef(x)&&__finitef(y)) { + if(__isnanf(z)) + /* powf neg**non-int */ + return (float)__kernel_standard((double)x,(double)y,124); + else + /* powf overflow */ + return (float)__kernel_standard((double)x,(double)y,121); + } + } + if(z==(float)0.0&&__finitef(x)&&__finitef(y)) + /* powf underflow */ + return (float)__kernel_standard((double)x,(double)y,122); + return z; +#endif +} +weak_alias (__powf, powf) diff --git a/src/system/libroot/posix/glibc/arch/generic/w_remainder.c b/src/system/libroot/posix/glibc/arch/generic/w_remainder.c new file mode 100644 index 0000000000..d85a3febce --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/w_remainder.c @@ -0,0 +1,47 @@ +/* @(#)w_remainder.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: w_remainder.c,v 1.6 1995/05/10 20:49:44 jtc Exp $"; +#endif + +/* + * wrapper remainder(x,p) + */ + +#include "math.h" +#include "math_private.h" + +#ifdef __STDC__ + double __remainder(double x, double y) /* wrapper remainder */ +#else + double __remainder(x,y) /* wrapper remainder */ + double x,y; +#endif +{ +#ifdef _IEEE_LIBM + return __ieee754_remainder(x,y); +#else + double z; + z = __ieee754_remainder(x,y); + if(_LIB_VERSION == _IEEE_ || __isnan(y)) return z; + if(y==0.0) + return __kernel_standard(x,y,28); /* remainder(x,0) */ + else + return z; +#endif +} +weak_alias (__remainder, remainder) +#ifdef NO_LONG_DOUBLE +strong_alias (__remainder, __remainderl) +weak_alias (__remainder, remainderl) +#endif diff --git a/src/system/libroot/posix/glibc/arch/generic/w_remainderf.c b/src/system/libroot/posix/glibc/arch/generic/w_remainderf.c new file mode 100644 index 0000000000..58255f5be5 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/w_remainderf.c @@ -0,0 +1,47 @@ +/* w_remainderf.c -- float version of w_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. + * ==================================================== + */ + +#if defined(LIBM_SCCS) && !defined(lint) +static char rcsid[] = "$NetBSD: w_remainderf.c,v 1.3 1995/05/10 20:49:46 jtc Exp $"; +#endif + +/* + * wrapper remainderf(x,p) + */ + +#include "math.h" +#include "math_private.h" + +#ifdef __STDC__ + float __remainderf(float x, float y) /* wrapper remainder */ +#else + float __remainderf(x,y) /* wrapper remainder */ + float x,y; +#endif +{ +#ifdef _IEEE_LIBM + return __ieee754_remainderf(x,y); +#else + float z; + z = __ieee754_remainderf(x,y); + if(_LIB_VERSION == _IEEE_ || __isnanf(y)) return z; + if(y==(float)0.0) + /* remainder(x,0) */ + return (float)__kernel_standard((double)x,(double)y,128); + else + return z; +#endif +} +weak_alias (__remainderf, remainderf) diff --git a/src/system/libroot/posix/glibc/arch/generic/w_scalb.c b/src/system/libroot/posix/glibc/arch/generic/w_scalb.c new file mode 100644 index 0000000000..c981b858a9 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/w_scalb.c @@ -0,0 +1,65 @@ +/* @(#)w_scalb.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: w_scalb.c,v 1.6 1995/05/10 20:49:48 jtc Exp $"; +#endif + +/* + * wrapper scalb(double x, double fn) is provide for + * passing various standard test suite. One + * should use scalbn() instead. + */ + +#include "math.h" +#include "math_private.h" + +#include + +#ifdef __STDC__ +#ifdef _SCALB_INT + double __scalb(double x, int fn) /* wrapper scalb */ +#else + double __scalb(double x, double fn) /* wrapper scalb */ +#endif +#else + double __scalb(x,fn) /* wrapper scalb */ +#ifdef _SCALB_INT + double x; int fn; +#else + double x,fn; +#endif +#endif +{ +#ifdef _IEEE_LIBM + return __ieee754_scalb(x,fn); +#else + double z; + z = __ieee754_scalb(x,fn); + if(_LIB_VERSION != _SVID_) return z; + if(!(__finite(z)||__isnan(z))&&__finite(x)) { + return __kernel_standard(x,(double)fn,32); /* scalb overflow */ + } + if(z==0.0&&z!=x) { + return __kernel_standard(x,(double)fn,33); /* scalb underflow */ + } +#ifndef _SCALB_INT + if(!__finite(fn)) __set_errno (ERANGE); +#endif + return z; +#endif +} +weak_alias (__scalb, scalb) +#ifdef NO_LONG_DOUBLE +strong_alias (__scalb, __scalbl) +weak_alias (__scalb, scalbl) +#endif diff --git a/src/system/libroot/posix/glibc/arch/generic/w_scalbf.c b/src/system/libroot/posix/glibc/arch/generic/w_scalbf.c new file mode 100644 index 0000000000..51056083e8 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/w_scalbf.c @@ -0,0 +1,66 @@ +/* w_scalbf.c -- float version of w_scalb.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: w_scalbf.c,v 1.3 1995/05/10 20:49:50 jtc Exp $"; +#endif + +/* + * wrapper scalbf(float x, float fn) is provide for + * passing various standard test suite. One + * should use scalbn() instead. + */ + +#include "math.h" +#include "math_private.h" + +#include + +#ifdef __STDC__ +#ifdef _SCALB_INT + float __scalbf(float x, int fn) /* wrapper scalbf */ +#else + float __scalbf(float x, float fn) /* wrapper scalbf */ +#endif +#else + float __scalbf(x,fn) /* wrapper scalbf */ +#ifdef _SCALB_INT + float x; int fn; +#else + float x,fn; +#endif +#endif +{ +#ifdef _IEEE_LIBM + return __ieee754_scalbf(x,fn); +#else + float z; + z = __ieee754_scalbf(x,fn); + if(_LIB_VERSION != _SVID_) return z; + if(!(__finitef(z)||__isnanf(z))&&__finitef(x)) { + /* scalbf overflow */ + return (float)__kernel_standard((double)x,(double)fn,132); + } + if(z==(float)0.0&&z!=x) { + /* scalbf underflow */ + return (float)__kernel_standard((double)x,(double)fn,133); + } +#ifndef _SCALB_INT + if(!__finitef(fn)) __set_errno (ERANGE); +#endif + return z; +#endif +} +weak_alias (__scalbf, scalbf) diff --git a/src/system/libroot/posix/glibc/arch/generic/w_sinh.c b/src/system/libroot/posix/glibc/arch/generic/w_sinh.c new file mode 100644 index 0000000000..9b34cd1873 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/w_sinh.c @@ -0,0 +1,47 @@ +/* @(#)w_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: w_sinh.c,v 1.6 1995/05/10 20:49:51 jtc Exp $"; +#endif + +/* + * wrapper sinh(x) + */ + +#include "math.h" +#include "math_private.h" + +#ifdef __STDC__ + double __sinh(double x) /* wrapper sinh */ +#else + double __sinh(x) /* wrapper sinh */ + double x; +#endif +{ +#ifdef _IEEE_LIBM + return __ieee754_sinh(x); +#else + double z; + z = __ieee754_sinh(x); + if(_LIB_VERSION == _IEEE_) return z; + if(!__finite(z)&&__finite(x)) { + return __kernel_standard(x,x,25); /* sinh overflow */ + } else + return z; +#endif +} +weak_alias (__sinh, sinh) +#ifdef NO_LONG_DOUBLE +strong_alias (__sinh, __sinhl) +weak_alias (__sinh, sinhl) +#endif diff --git a/src/system/libroot/posix/glibc/arch/generic/w_sinhf.c b/src/system/libroot/posix/glibc/arch/generic/w_sinhf.c new file mode 100644 index 0000000000..a69cf3072d --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/w_sinhf.c @@ -0,0 +1,47 @@ +/* w_sinhf.c -- float version of w_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. + * ==================================================== + */ + +#if defined(LIBM_SCCS) && !defined(lint) +static char rcsid[] = "$NetBSD: w_sinhf.c,v 1.3 1995/05/10 20:49:54 jtc Exp $"; +#endif + +/* + * wrapper sinhf(x) + */ + +#include "math.h" +#include "math_private.h" + +#ifdef __STDC__ + float __sinhf(float x) /* wrapper sinhf */ +#else + float __sinhf(x) /* wrapper sinhf */ + float x; +#endif +{ +#ifdef _IEEE_LIBM + return __ieee754_sinhf(x); +#else + float z; + z = __ieee754_sinhf(x); + if(_LIB_VERSION == _IEEE_) return z; + if(!__finitef(z)&&__finitef(x)) { + /* sinhf overflow */ + return (float)__kernel_standard((double)x,(double)x,125); + } else + return z; +#endif +} +weak_alias (__sinhf, sinhf) diff --git a/src/system/libroot/posix/glibc/arch/generic/w_sqrt.c b/src/system/libroot/posix/glibc/arch/generic/w_sqrt.c new file mode 100644 index 0000000000..be15d959ea --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/w_sqrt.c @@ -0,0 +1,47 @@ +/* @(#)w_sqrt.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: w_sqrt.c,v 1.6 1995/05/10 20:49:55 jtc Exp $"; +#endif + +/* + * wrapper sqrt(x) + */ + +#include "math.h" +#include "math_private.h" + +#ifdef __STDC__ + double __sqrt(double x) /* wrapper sqrt */ +#else + double __sqrt(x) /* wrapper sqrt */ + double x; +#endif +{ +#ifdef _IEEE_LIBM + return __ieee754_sqrt(x); +#else + double z; + z = __ieee754_sqrt(x); + if(_LIB_VERSION == _IEEE_ || __isnan(x)) return z; + if(x<0.0) { + return __kernel_standard(x,x,26); /* sqrt(negative) */ + } else + return z; +#endif +} +weak_alias (__sqrt, sqrt) +#ifdef NO_LONG_DOUBLE +strong_alias (__sqrt, __sqrtl) +weak_alias (__sqrt, sqrtl) +#endif diff --git a/src/system/libroot/posix/glibc/arch/generic/w_sqrtf.c b/src/system/libroot/posix/glibc/arch/generic/w_sqrtf.c new file mode 100644 index 0000000000..f5ccc73868 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/generic/w_sqrtf.c @@ -0,0 +1,47 @@ +/* w_sqrtf.c -- float version of w_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. + * ==================================================== + */ + +#if defined(LIBM_SCCS) && !defined(lint) +static char rcsid[] = "$NetBSD: w_sqrtf.c,v 1.3 1995/05/10 20:49:59 jtc Exp $"; +#endif + +/* + * wrapper sqrtf(x) + */ + +#include "math.h" +#include "math_private.h" + +#ifdef __STDC__ + float __sqrtf(float x) /* wrapper sqrtf */ +#else + float sqrt(x) /* wrapper sqrtf */ + float x; +#endif +{ +#ifdef _IEEE_LIBM + return __ieee754_sqrtf(x); +#else + float z; + z = __ieee754_sqrtf(x); + if(_LIB_VERSION == _IEEE_ || __isnanf(x)) return z; + if(x<(float)0.0) { + /* sqrtf(negative) */ + return (float)__kernel_standard((double)x,(double)x,126); + } else + return z; +#endif +} +weak_alias (__sqrtf, sqrtf) diff --git a/src/system/libroot/posix/glibc/arch/ppc/Jamfile b/src/system/libroot/posix/glibc/arch/ppc/Jamfile index a20d50bf5d..cdb4527d12 100644 --- a/src/system/libroot/posix/glibc/arch/ppc/Jamfile +++ b/src/system/libroot/posix/glibc/arch/ppc/Jamfile @@ -1,12 +1,17 @@ SubDir HAIKU_TOP src system libroot posix glibc arch ppc ; -SubDirSysHdrs $(HAIKU_TOP) src system libroot posix glibc include arch $(TARGET_ARCH) ; +SubDirSysHdrs $(HAIKU_TOP) src system libroot posix glibc include arch + $(TARGET_ARCH) ; SubDirSysHdrs $(HAIKU_TOP) src system libroot posix glibc include arch generic ; SubDirSysHdrs $(HAIKU_TOP) src system libroot posix glibc include ; SubDirSysHdrs $(HAIKU_TOP) src system libroot posix glibc stdlib ; SubDirSysHdrs $(HAIKU_TOP) src system libroot posix glibc math ; +SubDirSysHdrs $(HAIKU_TOP) src system libroot posix glibc libio ; SubDirSysHdrs $(HAIKU_TOP) src system libroot posix glibc ; +SubDirHdrs $(HAIKU_TOP) src system libroot posix glibc arch generic ; + + if $(OPTIM) = -O0 { OPTIM = -O ; } @@ -19,51 +24,115 @@ SubDirCcFlags -D_GNU_SOURCE -D_IEEE_LIBM ; # Note: There is no *l() support yet. Our compiler says sizeof(long double) = 8, # while there are only 96 and 128 bit implementation in glibc. local genericSources = - cmp.c dbl2mpn.c divrem.c mpa.c mpatan.c mpatan2.c mpn2dbl.c mpsqrt.c + branred.c + cmp.c dbl2mpn.c divrem.c + doasin.c dosincos.c + halfulp.c + mpa.c mpatan.c mpatan2.c mpexp.c mplog.c mpn2dbl.c mpsqrt.c mptan.c mul.c mul_n.c + sincos32.c + slowexp.c + slowpow.c + e_acos.c e_acosf.c # e_acosl.c + e_acosh.c e_acoshf.c # e_acoshl.c + e_asin.c e_asinf.c # e_asinl.c e_atan2.c e_atan2f.c # e_atan2l.c + e_atanh.c e_atanhf.c # e_atanhl.c + e_cosh.c e_coshf.c # e_coshl.c + e_exp.c e_expf.c e_fmod.c e_fmodf.c # e_fmodl.c + e_gamma_r.c e_gammaf_r.c + e_hypot.c e_hypotf.c # e_hypotl.c + e_j0.c e_j0f.c + e_j1.c e_j1f.c + e_jn.c e_jnf.c + e_lgamma_r.c e_lgammaf_r.c + e_log.c e_logf.c + e_log10.c e_log10f.c + e_pow.c e_powf.c # e_powl.c + e_rem_pio2f.c + e_remainder.c e_remainderf.c # e_remainderl.c + e_scalb.c e_scalbf.c # e_scalbl.c + e_sinh.c e_sinhf.c # e_sinhl.c + k_cos.c k_cosf.c + k_sin.c k_sinf.c + k_rem_pio2.c k_rem_pio2f.c # k_rem_pio2l.c + k_tan.c k_tanf.c + s_asinh.c s_asinhf.c # s_asinhl.c s_atan.c s_atanf.c # s_atanl.c + s_cbrt.c s_cbrtf.c # s_cbrtl.c s_ceil.c s_ceilf.c # s_ceill.c + s_cos.c s_cosf.c + s_erf.c s_erff.c # s_erfl.c + s_expm1f.c s_expm1.c s_finite.c s_finitef.c # s_finitel.c s_floor.c s_floorf.c # s_floorl.c - s_fpclassify.c s_fpclassifyf.c s_fpclassifyl.c + s_fpclassify.c s_fpclassifyf.c # s_fpclassifyl.c + s_frexp.c s_frexpf.c # s_frexpl.c + s_isinf.c s_isinff.c # s_isinfl.c + s_ldexp.c s_ldexpf.c # s_ldexpl.c + s_log1p.c s_log1pf.c s_logb.c s_logbf.c # s_logbl.c - s_modf.c s_modff.c s_modfl.c + s_modf.c s_modff.c # s_modfl.c + s_nan.c s_nanf.c # s_nanl.c + s_round.c s_roundf.c # s_roundl.c s_scalbn.c s_scalbnf.c # s_scalbnl.c + s_signbit.c s_signbitf.c # s_signbitl.c + s_signgam.c + s_sin.c s_sinf.c # s_sinl.c + s_sincos.c s_sincosf.c + s_tan.c s_tanf.c + s_tanh.c s_tanhf.c + t_exp.c + w_acos.c w_acosf.c # w_acosl.c + w_acosh.c w_acoshf.c # w_acoshl.c w_atan2.c w_atan2f.c # w_atan2l.c + w_atanh.c w_atanhf.c # w_atanhl.c + w_cosh.c w_coshf.c # w_coshl.c + w_drem.c w_dremf.c # w_dreml.c + w_exp.c w_expf.c # w_expl.c w_fmod.c w_fmodf.c # w_fmodl.c + w_j0.c w_j0f.c + w_j1.c w_j1f.c + w_jn.c w_jnf.c + w_lgamma.c w_lgammaf.c + w_lgamma_r.c w_lgammaf_r.c + w_log.c w_logf.c # w_logl.c + w_log10.c w_log10f.c # w_log10l.c + w_pow.c w_powf.c # w_powl.c + w_remainder.c w_remainderf.c # w_remainderl.c + w_scalb.c w_scalbf.c # w_scalbl.c + w_sinh.c w_sinhf.c # w_sinhl.c ; -MergeObject posix_gnu_arch_$(TARGET_ARCH).o : + +MergeObject posix_gnu_arch_$(TARGET_ARCH)_generic.o : + $(genericSources) +; + +MergeObject posix_gnu_arch_$(TARGET_ARCH)_other.o : add_n.S addmul_1.S - e_sqrtf.c - fraiseexcpt.c - ftestexcept.c + feholdexcpt.c fraiseexcpt.c fesetenv.c fesetround.c ftestexcept.c ldbl2mpn.c + lshift.S rshift.S mul_1.S - lshift.S - rshift.S - s_copysign.S - s_copysignf.S -# s_copysignl.S - s_fdim.c - s_fdimf.c -# s_fdiml.S - s_fabs.S - s_fabsf.S -# s_fabsl.S - s_rint.c - s_rintf.c -# s_rintl.c sub_n.S submul_1.S - t_sqrt.c - w_sqrt.c - w_sqrtf.c - $(genericSources) + e_sqrt.c e_sqrtf.c # e_sqrtl.c + s_copysign.S s_copysignf.S # s_copysignl.S + s_fdim.c s_fdimf.c # s_fdiml.S + s_fabs.S s_fabsf.S # s_fabsl.S + s_isnan.c s_isnanf.S + s_rint.c s_rintf.c # s_rintl.c + t_sqrt.c + w_sqrt.c w_sqrtf.c # w_sqrtl.c +; + +MergeObjectFromObjects posix_gnu_arch_$(TARGET_ARCH).o : : + posix_gnu_arch_$(TARGET_ARCH)_generic.o + posix_gnu_arch_$(TARGET_ARCH)_other.o ; SEARCH on [ FGristFiles $(genericSources) ] diff --git a/src/system/libroot/posix/glibc/arch/ppc/e_sqrt.c b/src/system/libroot/posix/glibc/arch/ppc/e_sqrt.c new file mode 100644 index 0000000000..9416ea60c8 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/ppc/e_sqrt.c @@ -0,0 +1 @@ +/* __ieee754_sqrt is in w_sqrt.c */ diff --git a/src/system/libroot/posix/glibc/arch/ppc/feholdexcpt.c b/src/system/libroot/posix/glibc/arch/ppc/feholdexcpt.c new file mode 100644 index 0000000000..8ac875cc72 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/ppc/feholdexcpt.c @@ -0,0 +1,38 @@ +/* Store current floating-point environment and clear exceptions. + Copyright (C) 1997 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, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +#include + +int +feholdexcept (fenv_t *envp) +{ + fenv_union_t u; + + /* Get the current state. */ + u.fenv = *envp = fegetenv_register (); + + /* Clear everything except for the rounding mode and non-IEEE arithmetic + flag. */ + u.l[1] = u.l[1] & 7; + + /* Put the new state in effect. */ + fesetenv_register (u.fenv); + + return 0; +} diff --git a/src/system/libroot/posix/glibc/arch/ppc/fesetenv.c b/src/system/libroot/posix/glibc/arch/ppc/fesetenv.c new file mode 100644 index 0000000000..ff82dfd176 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/ppc/fesetenv.c @@ -0,0 +1,39 @@ +/* Install given floating-point environment. + Copyright (C) 1997,99,2000,01,02 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, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +#include +#include + +int +__fesetenv (const fenv_t *envp) +{ + fesetenv_register (*envp); + + /* Success. */ + return 0; +} + +#include +#if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_2) +strong_alias (__fesetenv, __old_fesetenv) +compat_symbol (libm, BP_SYM (__old_fesetenv), BP_SYM (fesetenv), GLIBC_2_1); +#endif + +libm_hidden_ver (__fesetenv, fesetenv) +versioned_symbol (libm, BP_SYM (__fesetenv), BP_SYM (fesetenv), GLIBC_2_2); diff --git a/src/system/libroot/posix/glibc/arch/ppc/fesetround.c b/src/system/libroot/posix/glibc/arch/ppc/fesetround.c new file mode 100644 index 0000000000..f7cd6af135 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/ppc/fesetround.c @@ -0,0 +1,41 @@ +/* Set current rounding direction. + Copyright (C) 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper , 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, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +#include + +int +fesetround (int round) +{ + fenv_union_t u; + + if ((unsigned int) round > 3) + return 1; + + /* Get the current state. */ + u.fenv = fegetenv_register (); + + /* Set the relevant bits. */ + u.l[1] = (u.l[1] & ~3) | (round & 3); + + /* Put the new state in effect. */ + fesetenv_register (u.fenv); + + return 0; +} diff --git a/src/system/libroot/posix/glibc/arch/ppc/s_isnan.c b/src/system/libroot/posix/glibc/arch/ppc/s_isnan.c new file mode 100644 index 0000000000..38ec821cc3 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/ppc/s_isnan.c @@ -0,0 +1,63 @@ +/* Return 1 if argument is a NaN, else 0. + Copyright (C) 1997, 2000, 2002 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, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +/* Ugly kludge to avoid declarations. */ +#define __isnanf __Xisnanf +#define isnanf Xisnanf +#define __GI___isnanf __GI___Xisnanf + +#include "math.h" +#include + +#undef __isnanf +#undef isnanf +#undef __GI___isnanf + + +/* The hidden_proto in include/math.h was obscured by the macro hackery. */ +__typeof (__isnan) __isnanf; +hidden_proto (__isnanf) + + +int +__isnan (x) + double x; +{ + fenv_t savedstate; + int result; + savedstate = fegetenv_register (); + reset_fpscr_bit (FPSCR_VE); + result = !(x == x); + fesetenv_register (savedstate); + return result; +} +hidden_def (__isnan) +weak_alias (__isnan, isnan) + + +/* It turns out that the 'double' version will also always work for + single-precision. */ +strong_alias (__isnan, __isnanf) +hidden_def (__isnanf) +weak_alias (__isnanf, isnanf) + +#ifdef NO_LONG_DOUBLE +strong_alias (__isnan, __isnanl) +weak_alias (__isnan, isnanl) +#endif diff --git a/src/system/libroot/posix/glibc/arch/ppc/s_isnanf.S b/src/system/libroot/posix/glibc/arch/ppc/s_isnanf.S new file mode 100644 index 0000000000..fc22f678a1 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/ppc/s_isnanf.S @@ -0,0 +1 @@ +/* __isnanf is in s_isnan.c */ diff --git a/src/system/libroot/posix/glibc/arch/x86/Jamfile b/src/system/libroot/posix/glibc/arch/x86/Jamfile index 6074b79be8..9ce07f4024 100644 --- a/src/system/libroot/posix/glibc/arch/x86/Jamfile +++ b/src/system/libroot/posix/glibc/arch/x86/Jamfile @@ -7,6 +7,8 @@ SubDirSysHdrs $(HAIKU_TOP) src system libroot posix glibc stdlib ; SubDirSysHdrs $(HAIKU_TOP) src system libroot posix glibc math ; SubDirSysHdrs $(HAIKU_TOP) src system libroot posix glibc ; +SubDirHdrs $(HAIKU_TOP) src system libroot posix glibc arch generic ; + if $(OPTIM) = -O0 { OPTIM = -O ; } @@ -18,56 +20,112 @@ SubDirCcFlags -D_GNU_SOURCE -D_IEEE_LIBM ; local genericSources = cmp.c dbl2mpn.c divrem.c mpn2dbl.c mul.c mul_n.c - s_fpclassify.c s_fpclassifyf.c s_fpclassifyl.c s_modf.c s_modff.c s_modfl.c - w_atan2.c w_atan2f.c w_atan2l.c w_fmod.c w_fmodl.c w_fmodf.c + e_cosh.c e_coshf.c # e_coshl.c + e_sinh.c e_sinhf.c # e_sinhl.c + e_gamma_r.c e_gammaf_r.c + e_j0.c e_j0f.c + e_j1.c e_j1f.c + e_jn.c e_jnf.c + e_lgamma_r.c e_lgammaf_r.c + k_cos.c k_cosf.c + k_sin.c k_sinf.c + k_tan.c k_tanf.c + s_erf.c s_erff.c # s_erfl.c + s_fpclassify.c s_fpclassifyf.c # s_fpclassifyl.c + s_isinf.c s_isinff.c + s_isnan.c s_isnanf.c + s_ldexp.c s_ldexpf.c #s_ldexpl.c + s_modf.c s_modff.c # s_modfl.c + s_round.c s_roundf.c # s_roundl.c + s_signgam.c + s_tanh.c s_tanhf.c + + w_acos.c w_acosf.c # w_acosl.c + w_acosh.c w_acoshf.c # w_acoshl.c + w_atan2.c w_atan2f.c # w_atan2l.c + w_atanh.c w_atanhf.c # w_atanhl.c + w_cosh.c w_coshf.c # w_coshl.c + w_drem.c w_dremf.c # w_dreml.c + w_exp.c w_expf.c # w_expl.c + w_fmod.c w_fmodf.c # w_fmodl.c + w_j0.c w_j0f.c + w_j1.c w_j1f.c + w_jn.c w_jnf.c + w_lgamma.c w_lgammaf.c + w_lgamma_r.c w_lgammaf_r.c + w_log.c w_logf.c # w_logl.c + w_log10.c w_log10f.c # w_log10l.c + w_pow.c w_powf.c # w_powl.c + w_remainder.c w_remainderf.c # w_remainderl.c + w_sinh.c w_sinhf.c # w_sinhl.c + w_sqrt.c w_sqrtf.c # w_sqrtl.c ; -MergeObject posix_gnu_arch_$(TARGET_ARCH).o : +MergeObject posix_gnu_arch_$(TARGET_ARCH)_other.o : add_n.S addmul_1.S - e_acos.S - e_atan2.S - e_atan2f.S - e_atan2l.c - e_fmod.S - e_fmodf.S - e_fmodl.c ldbl2mpn.c + mpa.c mpatan.c mpatan2.c mptan.c + + mplog.c mul_1.S - lshift.S - rshift.S - s_ceil.S - s_ceilf.S - s_ceill.S - s_copysign.S - s_copysignf.S - s_copysignl.S - s_fdim.S - s_fdimf.S - s_fdiml.S - s_fabs.S - s_fabsf.S - s_fabsl.S - s_finite.S - s_finitef.S - s_finitel.S - s_floor.S - s_floorf.S - s_floorl.S - s_logb.S - s_logbf.S - s_logbl.c - s_rint.S - s_rintf.S - s_rintl.c - s_scalbn.S - s_scalbnf.S - s_scalbnl.S + lshift.S rshift.S sub_n.S submul_1.S +; + +MergeObject posix_gnu_arch_$(TARGET_ARCH)_e.o : + e_acos.S e_acosf.S e_acosl.c + e_acosh.S e_acoshf.S e_acoshl.S + e_asin.S e_asinf.S + e_atan2.S e_atan2f.S e_atan2l.c + e_atanh.S e_atanhf.S e_atanhl.S + e_exp.S e_expf.S e_expl.c + e_fmod.S e_fmodf.S e_fmodl.c + e_hypot.S e_hypotf.S + e_log.S e_logf.S e_logl.S + e_log10.S e_log10f.S e_log10l.S + e_pow.S e_powf.S e_powl.S + e_remainder.S e_remainderf.S e_remainderl.S + e_scalb.S e_scalbf.S e_scalbl.S + e_sqrt.S e_sqrtf.S e_sqrtl.c +; + +MergeObject posix_gnu_arch_$(TARGET_ARCH)_s.o : + s_asinh.S s_asinhf.S s_asinhl.S + s_atan.S s_atanf.S s_atanl.c + s_cbrt.S s_cbrtf.S s_cbrtl.S + s_ceil.S s_ceilf.S s_ceill.S + s_copysign.S s_copysignf.S s_copysignl.S + s_cos.S s_cosf.S s_cosl.S + s_expm1.S s_expm1f.S s_expm1l.S + s_fdim.S s_fdimf.S s_fdiml.S + s_fabs.S s_fabsf.S s_fabsl.S + s_finite.S s_finitef.S s_finitel.S + s_floor.S s_floorf.S s_floorl.S + s_frexp.S s_frexpf.S s_frexpl.S + s_isinfl.c + s_isnanl.c + s_log1p.S s_log1pf.S s_log1pl.S + s_logb.S s_logbf.S s_logbl.c + s_rint.S s_rintf.S s_rintl.c + s_scalbn.S s_scalbnf.S s_scalbnl.S + s_sin.S s_sinf.S s_sinl.S + s_sincos.S s_sincosf.S s_sincosl.S + s_tan.S s_tanf.S s_tanl.S +; + +MergeObject posix_gnu_arch_$(TARGET_ARCH)_generic.o : $(genericSources) ; +MergeObjectFromObjects posix_gnu_arch_$(TARGET_ARCH).o : : + posix_gnu_arch_$(TARGET_ARCH)_e.o + posix_gnu_arch_$(TARGET_ARCH)_generic.o + posix_gnu_arch_$(TARGET_ARCH)_other.o + posix_gnu_arch_$(TARGET_ARCH)_s.o +; + SEARCH on [ FGristFiles $(genericSources) ] = [ FDirName $(HAIKU_TOP) src system libroot posix glibc arch generic ] ; diff --git a/src/system/libroot/posix/glibc/arch/x86/e_acosf.S b/src/system/libroot/posix/glibc/arch/x86/e_acosf.S new file mode 100644 index 0000000000..50b13fd1bd --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/x86/e_acosf.S @@ -0,0 +1,22 @@ +/* + * Written by J.T. Conklin . + * Public domain. + * Adapted for float type by Ulrich Drepper . + */ + +#include + +RCSID("$NetBSD: $") + +/* acos = atan (sqrt(1 - x^2) / x) */ +ENTRY(__ieee754_acosf) + flds 4(%esp) /* x */ + fld %st + fmul %st(0) /* x^2 */ + fld1 + fsubp /* 1 - x^2 */ + fsqrt /* sqrt (1 - x^2) */ + fxch %st(1) + fpatan + ret +END (__ieee754_acosf) diff --git a/src/system/libroot/posix/glibc/arch/x86/e_acosh.S b/src/system/libroot/posix/glibc/arch/x86/e_acosh.S new file mode 100644 index 0000000000..981425ec7a --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/x86/e_acosh.S @@ -0,0 +1,105 @@ +/* ix87 specific implementation of arcsinh. + Copyright (C) 1996 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper , 1996. + + 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, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +#include + +#ifdef __ELF__ + .section .rodata +#else + .text +#endif + + .align ALIGNARG(4) + ASM_TYPE_DIRECTIVE(one,@object) +one: .double 1.0 + ASM_SIZE_DIRECTIVE(one) + ASM_TYPE_DIRECTIVE(limit,@object) +limit: .double 0.29 + ASM_SIZE_DIRECTIVE(limit) + +#ifdef PIC +#define MO(op) op##@GOTOFF(%edx) +#else +#define MO(op) op +#endif + + .text +ENTRY(__ieee754_acosh) + movl 8(%esp), %ecx + cmpl $0x3ff00000, %ecx + jl 5f // < 1 => invalid + fldln2 // log(2) + fldl 4(%esp) // x : log(2) + cmpl $0x41b00000, %ecx + ja 3f // x > 2^28 +#ifdef PIC + call 1f +1: popl %edx + addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %edx +#endif + cmpl $0x40000000, %ecx + ja 4f // x > 2 + + // 1 <= x <= 2 => y = log1p(x-1+sqrt(2*(x-1)+(x-1)^2)) + fsubl MO(one) // x-1 : log(2) + fld %st // x-1 : x-1 : log(2) + fmul %st(1) // (x-1)^2 : x-1 : log(2) + fadd %st(1) // x-1+(x-1)^2 : x-1 : log(2) + fadd %st(1) // 2*(x-1)+(x-1)^2 : x-1 : log(2) + fsqrt // sqrt(2*(x-1)+(x-1)^2) : x-1 : log(2) + faddp // x-1+sqrt(2*(x-1)+(x-1)^2) : log(2) + fcoml MO(limit) + fnstsw + sahf + ja 2f + fyl2xp1 // log1p(x-1+sqrt(2*(x-1)+(x-1)^2)) + ret + +2: faddl MO(one) // x+sqrt(2*(x-1)+(x-1)^2) : log(2) + fyl2x // log(x+sqrt(2*(x-1)+(x-1)^2)) + ret + + // x > 2^28 => y = log(x) + log(2) + .align ALIGNARG(4) +3: fyl2x // log(x) + fldln2 // log(2) : log(x) + faddp // log(x)+log(2) + ret + + // 2^28 > x > 2 => y = log(2*x - 1/(x+sqrt(x*x-1))) + .align ALIGNARG(4) +4: fld %st // x : x : log(2) + fadd %st, %st(1) // x : 2*x : log(2) + fld %st // x : x : 2*x : log(2) + fmul %st(1) // x^2 : x : 2*x : log(2) + fsubl MO(one) // x^2-1 : x : 2*x : log(2) + fsqrt // sqrt(x^2-1) : x : 2*x : log(2) + faddp // x+sqrt(x^2-1) : 2*x : log(2) + fdivrl MO(one) // 1/(x+sqrt(x^2-1)) : 2*x : log(2) + fsubrp // 2*x+1/(x+sqrt(x^2)-1) : log(2) + fyl2x // log(2*x+1/(x+sqrt(x^2-1))) + ret + + // x < 1 => NaN + .align ALIGNARG(4) +5: fldz + fdiv %st, %st(0) + ret +END(__ieee754_acosh) diff --git a/src/system/libroot/posix/glibc/arch/x86/e_acoshf.S b/src/system/libroot/posix/glibc/arch/x86/e_acoshf.S new file mode 100644 index 0000000000..17be69d575 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/x86/e_acoshf.S @@ -0,0 +1,105 @@ +/* ix87 specific implementation of arcsinh. + Copyright (C) 1996, 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper , 1996. + + 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, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +#include + +#ifdef __ELF__ + .section .rodata +#else + .text +#endif + + .align ALIGNARG(4) + ASM_TYPE_DIRECTIVE(one,@object) +one: .double 1.0 + ASM_SIZE_DIRECTIVE(one) + ASM_TYPE_DIRECTIVE(limit,@object) +limit: .double 0.29 + ASM_SIZE_DIRECTIVE(limit) + +#ifdef PIC +#define MO(op) op##@GOTOFF(%edx) +#else +#define MO(op) op +#endif + + .text +ENTRY(__ieee754_acoshf) + movl 4(%esp), %ecx + cmpl $0x3f800000, %ecx + jl 5f // < 1 => invalid + fldln2 // log(2) + flds 4(%esp) // x : log(2) + cmpl $0x47000000, %ecx + ja 3f // x > 2^14 +#ifdef PIC + call 1f +1: popl %edx + addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %edx +#endif + cmpl $0x40000000, %ecx + ja 4f // x > 2 + + // 1 <= x <= 2 => y = log1p(x-1+sqrt(2*(x-1)+(x-1)^2)) + fsubl MO(one) // x-1 : log(2) + fld %st // x-1 : x-1 : log(2) + fmul %st(1) // (x-1)^2 : x-1 : log(2) + fadd %st(1) // x-1+(x-1)^2 : x-1 : log(2) + fadd %st(1) // 2*(x-1)+(x-1)^2 : x-1 : log(2) + fsqrt // sqrt(2*(x-1)+(x-1)^2) : x-1 : log(2) + faddp // x-1+sqrt(2*(x-1)+(x-1)^2) : log(2) + fcoml MO(limit) + fnstsw + sahf + ja 2f + fyl2xp1 // log1p(x-1+sqrt(2*(x-1)+(x-1)^2)) + ret + +2: faddl MO(one) // x+sqrt(2*(x-1)+(x-1)^2) : log(2) + fyl2x // log(x+sqrt(2*(x-1)+(x-1)^2)) + ret + + // x > 2^14 => y = log(x) + log(2) + .align ALIGNARG(4) +3: fyl2x // log(x) + fldln2 // log(2) : log(x) + faddp // log(x)+log(2) + ret + + // 2^28 > x > 2 => y = log(2*x - 1/(x+sqrt(x*x-1))) + .align ALIGNARG(4) +4: fld %st // x : x : log(2) + fadd %st, %st(1) // x : 2*x : log(2) + fld %st // x : x : 2*x : log(2) + fmul %st(1) // x^2 : x : 2*x : log(2) + fsubl MO(one) // x^2-1 : x : 2*x : log(2) + fsqrt // sqrt(x^2-1) : x : 2*x : log(2) + faddp // x+sqrt(x^2-1) : 2*x : log(2) + fdivrl MO(one) // 1/(x+sqrt(x^2-1)) : 2*x : log(2) + fsubrp // 2*x+1/(x+sqrt(x^2)-1) : log(2) + fyl2x // log(2*x+1/(x+sqrt(x^2-1))) + ret + + // x < 1 => NaN + .align ALIGNARG(4) +5: fldz + fdiv %st, %st(0) + ret +END(__ieee754_acoshf) diff --git a/src/system/libroot/posix/glibc/arch/x86/e_acoshl.S b/src/system/libroot/posix/glibc/arch/x86/e_acoshl.S new file mode 100644 index 0000000000..7b6885da18 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/x86/e_acoshl.S @@ -0,0 +1,112 @@ +/* ix87 specific implementation of arcsinh. + Copyright (C) 1996, 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper , 1996. + + 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, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +#include + +#ifdef __ELF__ + .section .rodata +#else + .text +#endif + + .align ALIGNARG(4) + /* Please note that we use double value for 1.0. This number + has an exact representation and so we don't get accuracy + problems. The advantage is that the code is simpler. */ + ASM_TYPE_DIRECTIVE(one,@object) +one: .double 1.0 + ASM_SIZE_DIRECTIVE(one) + /* It is not important that this constant is precise. It is only + a value which is known to be on the safe side for using the + fyl2xp1 instruction. */ + ASM_TYPE_DIRECTIVE(limit,@object) +limit: .double 0.29 + ASM_SIZE_DIRECTIVE(limit) + +#ifdef PIC +#define MO(op) op##@GOTOFF(%edx) +#else +#define MO(op) op +#endif + + .text +ENTRY(__ieee754_acoshl) + movl 12(%esp), %ecx + andl $0xffff, %ecx + cmpl $0x3fff, %ecx + jl 5f // < 1 => invalid + fldln2 // log(2) + fldt 4(%esp) // x : log(2) + cmpl $0x4020, %ecx + ja 3f // x > 2^34 +#ifdef PIC + call 1f +1: popl %edx + addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %edx +#endif + cmpl $0x4000, %ecx + ja 4f // x > 2 + + // 1 <= x <= 2 => y = log1p(x-1+sqrt(2*(x-1)+(x-1)^2)) + fsubl MO(one) // x-1 : log(2) + fld %st // x-1 : x-1 : log(2) + fmul %st(1) // (x-1)^2 : x-1 : log(2) + fadd %st(1) // x-1+(x-1)^2 : x-1 : log(2) + fadd %st(1) // 2*(x-1)+(x-1)^2 : x-1 : log(2) + fsqrt // sqrt(2*(x-1)+(x-1)^2) : x-1 : log(2) + faddp // x-1+sqrt(2*(x-1)+(x-1)^2) : log(2) + fcoml MO(limit) + fnstsw + sahf + ja 2f + fyl2xp1 // log1p(x-1+sqrt(2*(x-1)+(x-1)^2)) + ret + +2: faddl MO(one) // x+sqrt(2*(x-1)+(x-1)^2) : log(2) + fyl2x // log(x+sqrt(2*(x-1)+(x-1)^2)) + ret + + // x > 2^34 => y = log(x) + log(2) + .align ALIGNARG(4) +3: fyl2x // log(x) + fldln2 // log(2) : log(x) + faddp // log(x)+log(2) + ret + + // 2^34 > x > 2 => y = log(2*x - 1/(x+sqrt(x*x-1))) + .align ALIGNARG(4) +4: fld %st // x : x : log(2) + fadd %st, %st(1) // x : 2*x : log(2) + fld %st // x : x : 2*x : log(2) + fmul %st(1) // x^2 : x : 2*x : log(2) + fsubl MO(one) // x^2-1 : x : 2*x : log(2) + fsqrt // sqrt(x^2-1) : x : 2*x : log(2) + faddp // x+sqrt(x^2-1) : 2*x : log(2) + fdivrl MO(one) // 1/(x+sqrt(x^2-1)) : 2*x : log(2) + fsubrp // 2*x+1/(x+sqrt(x^2)-1) : log(2) + fyl2x // log(2*x+1/(x+sqrt(x^2-1))) + ret + + // x < 1 => NaN + .align ALIGNARG(4) +5: fldz + fdiv %st, %st(0) + ret +END(__ieee754_acoshl) diff --git a/src/system/libroot/posix/glibc/arch/x86/e_acosl.c b/src/system/libroot/posix/glibc/arch/x86/e_acosl.c new file mode 100644 index 0000000000..0c3e03945a --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/x86/e_acosl.c @@ -0,0 +1,25 @@ +/* + * Written by J.T. Conklin . + * Public domain. + * + * Adapted for `long double' by Ulrich Drepper . + */ + +#include + +long double +__ieee754_acosl (long double x) +{ + long double res; + + /* acosl = atanl (sqrtl(1 - x^2) / x) */ + asm ( "fld %%st\n" + "fmul %%st(0)\n" /* x^2 */ + "fld1\n" + "fsubp\n" /* 1 - x^2 */ + "fsqrt\n" /* sqrtl (1 - x^2) */ + "fxch %%st(1)\n" + "fpatan" + : "=t" (res) : "0" (x) : "st(1)"); + return res; +} diff --git a/src/system/libroot/posix/glibc/arch/x86/e_asin.S b/src/system/libroot/posix/glibc/arch/x86/e_asin.S new file mode 100644 index 0000000000..945e308245 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/x86/e_asin.S @@ -0,0 +1,20 @@ +/* + * Written by J.T. Conklin . + * Public domain. + */ + +#include + +RCSID("$NetBSD: e_asin.S,v 1.4 1995/05/08 23:45:40 jtc Exp $") + +/* asin = atan (x / sqrt(1 - x^2)) */ +ENTRY(__ieee754_asin) + fldl 4(%esp) /* x */ + fld %st + fmul %st(0) /* x^2 */ + fld1 + fsubp /* 1 - x^2 */ + fsqrt /* sqrt (1 - x^2) */ + fpatan + ret +END (__ieee754_asin) diff --git a/src/system/libroot/posix/glibc/arch/x86/e_asinf.S b/src/system/libroot/posix/glibc/arch/x86/e_asinf.S new file mode 100644 index 0000000000..d450e9a740 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/x86/e_asinf.S @@ -0,0 +1,21 @@ +/* + * Written by J.T. Conklin . + * Public domain. + * Adapted for float type by Ulrich Drepper . + */ + +#include + +RCSID("$NetBSD: $") + +/* asin = atan (x / sqrt(1 - x^2)) */ +ENTRY(__ieee754_asinf) + flds 4(%esp) /* x */ + fld %st + fmul %st(0) /* x^2 */ + fld1 + fsubp /* 1 - x^2 */ + fsqrt /* sqrt (1 - x^2) */ + fpatan + ret +END (__ieee754_asinf) diff --git a/src/system/libroot/posix/glibc/arch/x86/e_atan2.S b/src/system/libroot/posix/glibc/arch/x86/e_atan2.S index f5d2468eb2..8df04e485e 100644 --- a/src/system/libroot/posix/glibc/arch/x86/e_atan2.S +++ b/src/system/libroot/posix/glibc/arch/x86/e_atan2.S @@ -13,5 +13,3 @@ ENTRY(__ieee754_atan2) fpatan ret END (__ieee754_atan2) - -weak_alias (__ieee754_atan2, atan2) diff --git a/src/system/libroot/posix/glibc/arch/x86/e_atanh.S b/src/system/libroot/posix/glibc/arch/x86/e_atanh.S new file mode 100644 index 0000000000..6fb53a4acc --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/x86/e_atanh.S @@ -0,0 +1,114 @@ +/* ix87 specific implementation of arctanh function. + Copyright (C) 1996, 1999 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper , 1996. + + 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, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +#include + +#ifdef __ELF__ + .section .rodata +#else + .text +#endif + + .align ALIGNARG(4) + ASM_TYPE_DIRECTIVE(half,@object) +half: .double 0.5 + ASM_SIZE_DIRECTIVE(half) + ASM_TYPE_DIRECTIVE(one,@object) +one: .double 1.0 + ASM_SIZE_DIRECTIVE(one) + ASM_TYPE_DIRECTIVE(limit,@object) +limit: .double 0.29 + ASM_SIZE_DIRECTIVE(limit) + ASM_TYPE_DIRECTIVE(ln2_2,@object) +ln2_2: .tfloat 0.3465735902799726547086160 + ASM_SIZE_DIRECTIVE(ln2_2) + +#ifdef PIC +#define MO(op) op##@GOTOFF(%edx) +#else +#define MO(op) op +#endif + + .text +ENTRY(__ieee754_atanh) + movl 8(%esp), %ecx + + movl %ecx, %eax + andl $0x7fffffff, %eax + cmpl $0x7ff00000, %eax + jae 5f +7: + +#ifdef PIC + call 1f +1: popl %edx + addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %edx +#endif + + andl $0x80000000, %ecx // ECX == 0 iff X >= 0 + + fldt MO(ln2_2) // 0.5*ln2 + xorl %ecx, 8(%esp) + fldl 4(%esp) // |x| : 0.5*ln2 + fcoml MO(half) // |x| : 0.5*ln2 + fld %st // |x| : |x| : 0.5*ln2 + fnstsw // |x| : |x| : 0.5*ln2 + sahf + jae 2f + fadd %st, %st(1) // |x| : 2*|x| : 0.5*ln2 + fld %st // |x| : |x| : 2*|x| : 0.5*ln2 + fsubrl MO(one) // 1-|x| : |x| : 2*|x| : 0.5*ln2 + fxch // |x| : 1-|x| : 2*|x| : 0.5*ln2 + fmul %st(2) // 2*|x|^2 : 1-|x| : 2*|x| : 0.5*ln2 + fdivp // (2*|x|^2)/(1-|x|) : 2*|x| : 0.5*ln2 + faddp // 2*|x|+(2*|x|^2)/(1-|x|) : 0.5*ln2 + fcoml MO(limit) // 2*|x|+(2*|x|^2)/(1-|x|) : 0.5*ln2 + fnstsw // 2*|x|+(2*|x|^2)/(1-|x|) : 0.5*ln2 + sahf + jae 4f + fyl2xp1 // 0.5*ln2*ld(1+2*|x|+(2*|x|^2)/(1-|x|)) + jecxz 3f + fchs // 0.5*ln2*ld(1+2*x+(2*x^2)/(1-x)) +3: ret + + .align ALIGNARG(4) +4: faddl MO(one) // 1+2*|x|+(2*|x|^2)/(1-|x|) : 0.5*ln2 + fyl2x // 0.5*ln2*ld(1+2*|x|+(2*|x|^2)/(1-|x|)) + jecxz 3f + fchs // 0.5*ln2*ld(1+2*x+(2*x^2)/(1-x)) +3: ret + + .align ALIGNARG(4) +2: faddl MO(one) // 1+|x| : |x| : 0.5*ln2 + fxch // |x| : 1+|x| : 0.5*ln2 + fsubrl MO(one) // 1-|x| : 1+|x| : 0.5*ln2 + fdivrp // (1+|x|)/(1-|x|) : 0.5*ln2 + fyl2x // 0.5*ln2*ld((1+|x|)/(1-|x|)) + jecxz 3f + fchs // 0.5*ln2*ld((1+x)/(1-x)) +3: ret + + // x == NaN or ±Inf +5: ja 6f + cmpl $0, 4(%esp) + je 7b +6: fldl 4(%esp) + ret +END(__ieee754_atanh) diff --git a/src/system/libroot/posix/glibc/arch/x86/e_atanhf.S b/src/system/libroot/posix/glibc/arch/x86/e_atanhf.S new file mode 100644 index 0000000000..a517929f2a --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/x86/e_atanhf.S @@ -0,0 +1,111 @@ +/* ix87 specific implementation of arctanh function. + Copyright (C) 1996, 1999 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper , 1996. + + 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, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +#include + +#ifdef __ELF__ + .section .rodata +#else + .text +#endif + + .align ALIGNARG(4) + ASM_TYPE_DIRECTIVE(half,@object) +half: .double 0.5 + ASM_SIZE_DIRECTIVE(half) + ASM_TYPE_DIRECTIVE(one,@object) +one: .double 1.0 + ASM_SIZE_DIRECTIVE(one) + ASM_TYPE_DIRECTIVE(limit,@object) +limit: .double 0.29 + ASM_SIZE_DIRECTIVE(limit) + .align ALIGNARG(4) + ASM_TYPE_DIRECTIVE(ln2_2,@object) +ln2_2: .tfloat 0.3465735902799726547086160 + ASM_SIZE_DIRECTIVE(ln2_2) + +#ifdef PIC +#define MO(op) op##@GOTOFF(%edx) +#else +#define MO(op) op +#endif + + .text +ENTRY(__ieee754_atanhf) + movl 4(%esp), %ecx + + movl %ecx, %eax + andl $0x7fffffff, %eax + cmpl $0x7f800000, %eax + ja 5f + +#ifdef PIC + call 1f +1: popl %edx + addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %edx +#endif + + andl $0x80000000, %ecx // ECX == 0 iff X >= 0 + + fldt MO(ln2_2) // 0.5*ln2 + xorl %ecx, 4(%esp) + flds 4(%esp) // |x| : 0.5*ln2 + fcoml MO(half) // |x| : 0.5*ln2 + fld %st(0) // |x| : |x| : 0.5*ln2 + fnstsw // |x| : |x| : 0.5*ln2 + sahf + jae 2f + fadd %st, %st(1) // |x| : 2*|x| : 0.5*ln2 + fld %st // |x| : |x| : 2*|x| : 0.5*ln2 + fsubrl MO(one) // 1-|x| : |x| : 2*|x| : 0.5*ln2 + fxch // |x| : 1-|x| : 2*|x| : 0.5*ln2 + fmul %st(2) // 2*|x|^2 : 1-|x| : 2*|x| : 0.5*ln2 + fdivp // (2*|x|^2)/(1-|x|) : 2*|x| : 0.5*ln2 + faddp // 2*|x|+(2*|x|^2)/(1-|x|) : 0.5*ln2 + fcoml MO(limit) // 2*|x|+(2*|x|^2)/(1-|x|) : 0.5*ln2 + fnstsw // 2*|x|+(2*|x|^2)/(1-|x|) : 0.5*ln2 + sahf + jae 4f + fyl2xp1 // 0.5*ln2*ld(1+2*|x|+(2*|x|^2)/(1-|x|)) + jecxz 3f + fchs // 0.5*ln2*ld(1+2*x+(2*x^2)/(1-x)) +3: ret + + .align ALIGNARG(4) +4: faddl MO(one) // 1+2*|x|+(2*|x|^2)/(1-|x|) : 0.5*ln2 + fyl2x // 0.5*ln2*ld(1+2*|x|+(2*|x|^2)/(1-|x|)) + jecxz 3f + fchs // 0.5*ln2*ld(1+2*x+(2*x^2)/(1-x)) +3: ret + + .align ALIGNARG(4) +2: faddl MO(one) // 1+|x| : |x| : 0.5*ln2 + fxch // |x| : 1+|x| : 0.5*ln2 + fsubrl MO(one) // 1-|x| : 1+|x| : 0.5*ln2 + fdivrp // (1+|x|)/(1-|x|) : 0.5*ln2 + fyl2x // 0.5*ln2*ld((1+|x|)/(1-|x|)) + jecxz 3f + fchs // 0.5*ln2*ld((1+x)/(1-x)) +3: ret + + // x == NaN +5: flds 4(%esp) + ret +END(__ieee754_atanhf) diff --git a/src/system/libroot/posix/glibc/arch/x86/e_atanhl.S b/src/system/libroot/posix/glibc/arch/x86/e_atanhl.S new file mode 100644 index 0000000000..6fda9bef89 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/x86/e_atanhl.S @@ -0,0 +1,122 @@ +/* ix87 specific implementation of arctanh function. + Copyright (C) 1996, 1999 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper , 1996. + + 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, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +#include + +#ifdef __ELF__ + .section .rodata +#else + .text +#endif + + .align ALIGNARG(4) + /* Please note that we use double values for 0.5 and 1.0. These + numbers have exact representations and so we don't get accuracy + problems. The advantage is that the code is simpler. */ + ASM_TYPE_DIRECTIVE(half,@object) +half: .double 0.5 + ASM_SIZE_DIRECTIVE(half) + ASM_TYPE_DIRECTIVE(one,@object) +one: .double 1.0 + ASM_SIZE_DIRECTIVE(one) + /* It is not important that this constant is precise. It is only + a value which is known to be on the safe side for using the + fyl2xp1 instruction. */ + ASM_TYPE_DIRECTIVE(limit,@object) +limit: .double 0.29 + ASM_SIZE_DIRECTIVE(limit) + .align ALIGNARG(4) + ASM_TYPE_DIRECTIVE(ln2_2,@object) +ln2_2: .tfloat 0.3465735902799726547086160 + ASM_SIZE_DIRECTIVE(ln2_2) + +#ifdef PIC +#define MO(op) op##@GOTOFF(%edx) +#else +#define MO(op) op +#endif + + .text +ENTRY(__ieee754_atanhl) + movl 12(%esp), %ecx + + movl %ecx, %eax + andl $0x7fff, %eax + cmpl $0x7fff, %eax + je 5f +7: + +#ifdef PIC + call 1f +1: popl %edx + addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %edx +#endif + + andl $0x8000, %ecx // ECX == 0 iff X >= 0 + + fldt MO(ln2_2) // 0.5*ln2 + xorl %ecx, 12(%esp) + fldt 4(%esp) // |x| : 0.5*ln2 + fcoml MO(half) // |x| : 0.5*ln2 + fld %st(0) // |x| : |x| : 0.5*ln2 + fnstsw // |x| : |x| : 0.5*ln2 + sahf + jae 2f + fadd %st, %st(1) // |x| : 2*|x| : 0.5*ln2 + fld %st // |x| : |x| : 2*|x| : 0.5*ln2 + fsubrl MO(one) // 1-|x| : |x| : 2*|x| : 0.5*ln2 + fxch // |x| : 1-|x| : 2*|x| : 0.5*ln2 + fmul %st(2) // 2*|x|^2 : 1-|x| : 2*|x| : 0.5*ln2 + fdivp // (2*|x|^2)/(1-|x|) : 2*|x| : 0.5*ln2 + faddp // 2*|x|+(2*|x|^2)/(1-|x|) : 0.5*ln2 + fcoml MO(limit) // 2*|x|+(2*|x|^2)/(1-|x|) : 0.5*ln2 + fnstsw // 2*|x|+(2*|x|^2)/(1-|x|) : 0.5*ln2 + sahf + jae 4f + fyl2xp1 // 0.5*ln2*ld(1+2*|x|+(2*|x|^2)/(1-|x|)) + jecxz 3f + fchs // 0.5*ln2*ld(1+2*x+(2*x^2)/(1-x)) +3: ret + + .align ALIGNARG(4) +4: faddl MO(one) // 1+2*|x|+(2*|x|^2)/(1-|x|) : 0.5*ln2 + fyl2x // 0.5*ln2*ld(1+2*|x|+(2*|x|^2)/(1-|x|)) + jecxz 3f + fchs // 0.5*ln2*ld(1+2*x+(2*x^2)/(1-x)) +3: ret + + .align ALIGNARG(4) +2: faddl MO(one) // 1+|x| : |x| : 0.5*ln2 + fxch // |x| : 1+|x| : 0.5*ln2 + fsubrl MO(one) // 1-|x| : 1+|x| : 0.5*ln2 + fdivrp // (1+|x|)/(1-|x|) : 0.5*ln2 + fyl2x // 0.5*ln2*ld((1+|x|)/(1-|x|)) + jecxz 3f + fchs // 0.5*ln2*ld((1+x)/(1-x)) +3: ret + + // x == NaN or ±Inf +5: cmpl $0x80000000, 8(%esp) + ja 6f + cmpl $0, 4(%esp) + je 7b +6: fldt 4(%esp) + ret +END(__ieee754_atanhl) diff --git a/src/system/libroot/posix/glibc/arch/x86/e_exp.S b/src/system/libroot/posix/glibc/arch/x86/e_exp.S new file mode 100644 index 0000000000..4a75fa1d1c --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/x86/e_exp.S @@ -0,0 +1,41 @@ +/* + * Written by J.T. Conklin . + * Public domain. + */ + +#include + +RCSID("$NetBSD: e_exp.S,v 1.7 1996/07/03 17:31:28 jtc Exp $") + +/* e^x = 2^(x * log2(e)) */ +ENTRY(__ieee754_exp) + fldl 4(%esp) +/* I added the following ugly construct because exp(+-Inf) resulted + in NaN. The ugliness results from the bright minds at Intel. + For the i686 the code can be written better. + -- drepper@cygnus.com. */ + fxam /* Is NaN or +-Inf? */ + fstsw %ax + movb $0x45, %dh + andb %ah, %dh + cmpb $0x05, %dh + je 1f /* Is +-Inf, jump. */ + fldl2e + fmulp /* x * log2(e) */ + fld %st + frndint /* int(x * log2(e)) */ + fsubr %st,%st(1) /* fract(x * log2(e)) */ + fxch + f2xm1 /* 2^(fract(x * log2(e))) - 1 */ + fld1 + faddp /* 2^(fract(x * log2(e))) */ + fscale /* e^x */ + fstp %st(1) + ret + +1: testl $0x200, %eax /* Test sign. */ + jz 2f /* If positive, jump. */ + fstp %st + fldz /* Set result to 0. */ +2: ret +END (__ieee754_exp) diff --git a/src/system/libroot/posix/glibc/arch/x86/e_expf.S b/src/system/libroot/posix/glibc/arch/x86/e_expf.S new file mode 100644 index 0000000000..5fd49b89fd --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/x86/e_expf.S @@ -0,0 +1,42 @@ +/* + * Written by J.T. Conklin . + * Public domain. + * Adapted for float type by Ulrich Drepper . + */ + +#include + +RCSID("$NetBSD: $") + +/* e^x = 2^(x * log2(e)) */ +ENTRY(__ieee754_expf) + flds 4(%esp) +/* I added the following ugly construct because exp(+-Inf) resulted + in NaN. The ugliness results from the bright minds at Intel. + For the i686 the code can be written better. + -- drepper@cygnus.com. */ + fxam /* Is NaN or +-Inf? */ + fstsw %ax + movb $0x45, %dh + andb %ah, %dh + cmpb $0x05, %dh + je 1f /* Is +-Inf, jump. */ + fldl2e + fmulp /* x * log2(e) */ + fld %st + frndint /* int(x * log2(e)) */ + fsubr %st,%st(1) /* fract(x * log2(e)) */ + fxch + f2xm1 /* 2^(fract(x * log2(e))) - 1 */ + fld1 + faddp /* 2^(fract(x * log2(e))) */ + fscale /* e^x */ + fstp %st(1) + ret + +1: testl $0x200, %eax /* Test sign. */ + jz 2f /* If positive, jump. */ + fstp %st + fldz /* Set result to 0. */ +2: ret +END (__ieee754_expf) diff --git a/src/system/libroot/posix/glibc/arch/x86/e_expl.c b/src/system/libroot/posix/glibc/arch/x86/e_expl.c new file mode 100644 index 0000000000..a090d0dabc --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/x86/e_expl.c @@ -0,0 +1,77 @@ +/* + * Written by J.T. Conklin . + * Public domain. + * + * Adapted for `long double' by Ulrich Drepper . + */ + +/* + * The 8087 method for the exponential function is to calculate + * exp(x) = 2^(x log2(e)) + * after separating integer and fractional parts + * x log2(e) = i + f, |f| <= .5 + * 2^i is immediate but f needs to be precise for long double accuracy. + * Suppress range reduction error in computing f by the following. + * Separate x into integer and fractional parts + * x = xi + xf, |xf| <= .5 + * Separate log2(e) into the sum of an exact number c0 and small part c1. + * c0 + c1 = log2(e) to extra precision + * Then + * f = (c0 xi - i) + c0 xf + c1 x + * where c0 xi is exact and so also is (c0 xi - i). + * -- moshier@na-net.ornl.gov + */ + +#include + +static long double c0 = 1.44268798828125L; +static long double c1 = 7.05260771340735992468e-6L; + +long double +__ieee754_expl (long double x) +{ + long double res; + +/* I added the following ugly construct because expl(+-Inf) resulted + in NaN. The ugliness results from the bright minds at Intel. + For the i686 the code can be written better. + -- drepper@cygnus.com. */ + asm ("fxam\n\t" /* Is NaN or +-Inf? */ + "fstsw %%ax\n\t" + "movb $0x45, %%dh\n\t" + "andb %%ah, %%dh\n\t" + "cmpb $0x05, %%dh\n\t" + "je 1f\n\t" /* Is +-Inf, jump. */ + "fldl2e\n\t" /* 1 log2(e) */ + "fmul %%st(1),%%st\n\t" /* 1 x log2(e) */ + "frndint\n\t" /* 1 i */ + "fld %%st(1)\n\t" /* 2 x */ + "frndint\n\t" /* 2 xi */ + "fld %%st(1)\n\t" /* 3 i */ + "fldt %2\n\t" /* 4 c0 */ + "fld %%st(2)\n\t" /* 5 xi */ + "fmul %%st(1),%%st\n\t" /* 5 c0 xi */ + "fsubp %%st,%%st(2)\n\t" /* 4 f = c0 xi - i */ + "fld %%st(4)\n\t" /* 5 x */ + "fsub %%st(3),%%st\n\t" /* 5 xf = x - xi */ + "fmulp %%st,%%st(1)\n\t" /* 4 c0 xf */ + "faddp %%st,%%st(1)\n\t" /* 3 f = f + c0 xf */ + "fldt %3\n\t" /* 4 */ + "fmul %%st(4),%%st\n\t" /* 4 c1 * x */ + "faddp %%st,%%st(1)\n\t" /* 3 f = f + c1 * x */ + "f2xm1\n\t" /* 3 2^(fract(x * log2(e))) - 1 */ + "fld1\n\t" /* 4 1.0 */ + "faddp\n\t" /* 3 2^(fract(x * log2(e))) */ + "fstp %%st(1)\n\t" /* 2 */ + "fscale\n\t" /* 2 scale factor is st(1); e^x */ + "fstp %%st(1)\n\t" /* 1 */ + "fstp %%st(1)\n\t" /* 0 */ + "jmp 2f\n\t" + "1:\ttestl $0x200, %%eax\n\t" /* Test sign. */ + "jz 2f\n\t" /* If positive, jump. */ + "fstp %%st\n\t" + "fldz\n\t" /* Set result to 0. */ + "2:\t\n" + : "=t" (res) : "0" (x), "m" (c0), "m" (c1) : "ax", "dx"); + return res; +} diff --git a/src/system/libroot/posix/glibc/arch/x86/e_hypot.S b/src/system/libroot/posix/glibc/arch/x86/e_hypot.S new file mode 100644 index 0000000000..0435857309 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/x86/e_hypot.S @@ -0,0 +1,62 @@ +/* Compute the hypothenuse of X and Y. + Copyright (C) 1998 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper , 1998. + + 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, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +#include + + .text +ENTRY(__ieee754_hypot) + fldl 4(%esp) // x + fxam + fnstsw + fldl 12(%esp) // y : x + movb %ah, %ch + fxam + fnstsw + movb %ah, %al + orb %ch, %ah + sahf + jc 1f + fmul %st(0) // y * y : x + fxch // x : y * y + fmul %st(0) // x * x : y * y + faddp // x * x + y * y + fsqrt +2: ret + + // We have to test whether any of the parameters is Inf. + // In this case the result is infinity. +1: andb $0x45, %al + cmpb $5, %al + je 3f // jump if y is Inf + andb $0x45, %ch + cmpb $5, %ch + jne 4f // jump if x is not Inf + fxch +3: fstp %st(1) + fabs + jmp 2b + +4: testb $1, %al + jnz 5f // y is NaN + fxch +5: fstp %st(1) + jmp 2b + +END(__ieee754_hypot) diff --git a/src/system/libroot/posix/glibc/arch/x86/e_hypotf.S b/src/system/libroot/posix/glibc/arch/x86/e_hypotf.S new file mode 100644 index 0000000000..5967dae215 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/x86/e_hypotf.S @@ -0,0 +1,62 @@ +/* Compute the hypothenuse of X and Y. + Copyright (C) 1998 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper , 1998. + + 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, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +#include + + .text +ENTRY(__ieee754_hypotf) + flds 4(%esp) // x + fxam + fnstsw + flds 8(%esp) // y : x + movb %ah, %ch + fxam + fnstsw + movb %ah, %al + orb %ch, %ah + sahf + jc 1f + fmul %st(0) // y * y : x + fxch // x : y * y + fmul %st(0) // x * x : y * y + faddp // x * x + y * y + fsqrt +2: ret + + // We have to test whether any of the parameters is Inf. + // In this case the result is infinity. +1: andb $0x45, %al + cmpb $5, %al + je 3f // jump if y is Inf + andb $0x45, %ch + cmpb $5, %ch + jne 4f // jump if x is not Inf + fxch +3: fstp %st(1) + fabs + jmp 2b + +4: testb $1, %al + jnz 5f // y is NaN + fxch +5: fstp %st(1) + jmp 2b + +END(__ieee754_hypotf) diff --git a/src/system/libroot/posix/glibc/arch/x86/e_log.S b/src/system/libroot/posix/glibc/arch/x86/e_log.S new file mode 100644 index 0000000000..c7cacdfb0a --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/x86/e_log.S @@ -0,0 +1,59 @@ +/* + * Written by J.T. Conklin . + * Public domain. + * + * Changed to use fyl2xp1 for values near 1, . + */ + +#include + +RCSID("$NetBSD: e_log.S,v 1.4 1995/05/08 23:48:39 jtc Exp $") + +#ifdef __ELF__ + .section .rodata +#else + .text +#endif + .align ALIGNARG(4) + ASM_TYPE_DIRECTIVE(one,@object) +one: .double 1.0 + ASM_SIZE_DIRECTIVE(one) + /* It is not important that this constant is precise. It is only + a value which is known to be on the safe side for using the + fyl2xp1 instruction. */ + ASM_TYPE_DIRECTIVE(limit,@object) +limit: .double 0.29 + ASM_SIZE_DIRECTIVE(limit) + + +#ifdef PIC +#define MO(op) op##@GOTOFF(%edx) +#else +#define MO(op) op +#endif + + .text +ENTRY(__ieee754_log) + fldln2 // log(2) + fldl 4(%esp) // x : log(2) +#ifdef PIC + call 1f +1: popl %edx + addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %edx +#endif + fld %st // x : x : log(2) + fsubl MO(one) // x-1 : x : log(2) + fld %st // x-1 : x-1 : x : log(2) + fabs // |x-1| : x-1 : x : log(2) + fcompl MO(limit) // x-1 : x : log(2) + fnstsw // x-1 : x : log(2) + andb $0x45, %ah + jz 2f + fstp %st(1) // x-1 : log(2) + fyl2xp1 // log(x) + ret + +2: fstp %st(0) // x : log(2) + fyl2x // log(x) + ret +END (__ieee754_log) diff --git a/src/system/libroot/posix/glibc/arch/x86/e_log10.S b/src/system/libroot/posix/glibc/arch/x86/e_log10.S new file mode 100644 index 0000000000..e93184c219 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/x86/e_log10.S @@ -0,0 +1,68 @@ +/* + * Written by J.T. Conklin . + * Public domain. + * + * Changed to use fyl2xp1 for values near 1, . + */ + +#include + +RCSID("$NetBSD: e_log10.S,v 1.4 1995/05/08 23:49:24 jtc Exp $") + +#ifdef __ELF__ + .section .rodata +#else + .text +#endif + .align ALIGNARG(4) + ASM_TYPE_DIRECTIVE(one,@object) +one: .double 1.0 + ASM_SIZE_DIRECTIVE(one) + /* It is not important that this constant is precise. It is only + a value which is known to be on the safe side for using the + fyl2xp1 instruction. */ + ASM_TYPE_DIRECTIVE(limit,@object) +limit: .double 0.29 + ASM_SIZE_DIRECTIVE(limit) + + +#ifdef PIC +#define MO(op) op##@GOTOFF(%edx) +#else +#define MO(op) op +#endif + + .text +ENTRY(__ieee754_log10) + fldlg2 // log10(2) + fldl 4(%esp) // x : log10(2) +#ifdef PIC + call 1f +1: popl %edx + addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %edx +#endif + fxam + fnstsw + fld %st // x : x : log10(2) + sahf + jc 3f // in case x is NaN or ±Inf +4: fsubl MO(one) // x-1 : x : log10(2) + fld %st // x-1 : x-1 : x : log10(2) + fabs // |x-1| : x-1 : x : log10(2) + fcompl MO(limit) // x-1 : x : log10(2) + fnstsw // x-1 : x : log10(2) + andb $0x45, %ah + jz 2f + fstp %st(1) // x-1 : log10(2) + fyl2xp1 // log10(x) + ret + +2: fstp %st(0) // x : log10(2) + fyl2x // log10(x) + ret + +3: jp 4b // in case x is ±Inf + fstp %st(1) + fstp %st(1) + ret +END (__ieee754_log10) diff --git a/src/system/libroot/posix/glibc/arch/x86/e_log10f.S b/src/system/libroot/posix/glibc/arch/x86/e_log10f.S new file mode 100644 index 0000000000..0a89f54784 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/x86/e_log10f.S @@ -0,0 +1,69 @@ +/* + * Written by J.T. Conklin . + * Public domain. + * Adapted for float type by Ulrich Drepper . + * + * Changed to use fyl2xp1 for values near 1, . + */ + +#include + +RCSID("$NetBSD: $") + +#ifdef __ELF__ + .section .rodata +#else + .text +#endif + .align ALIGNARG(4) + ASM_TYPE_DIRECTIVE(one,@object) +one: .double 1.0 + ASM_SIZE_DIRECTIVE(one) + /* It is not important that this constant is precise. It is only + a value which is known to be on the safe side for using the + fyl2xp1 instruction. */ + ASM_TYPE_DIRECTIVE(limit,@object) +limit: .double 0.29 + ASM_SIZE_DIRECTIVE(limit) + + +#ifdef PIC +#define MO(op) op##@GOTOFF(%edx) +#else +#define MO(op) op +#endif + + .text +ENTRY(__ieee754_log10f) + fldlg2 // log10(2) + flds 4(%esp) // x : log10(2) +#ifdef PIC + call 1f +1: popl %edx + addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %edx +#endif + fxam + fnstsw + fld %st // x : x : log10(2) + sahf + jc 3f // in case x is NaN or ±Inf +4: fsubl MO(one) // x-1 : x : log10(2) + fld %st // x-1 : x-1 : x : log10(2) + fabs // |x-1| : x-1 : x : log10(2) + fcompl MO(limit) // x-1 : x : log10(2) + fnstsw // x-1 : x : log10(2) + andb $0x45, %ah + jz 2f + fstp %st(1) // x-1 : log10(2) + fyl2xp1 // log10(x) + ret + +2: fstp %st(0) // x : log10(2) + fyl2x // log10(x) + ret + +3: jp 4b // in case x is ±Inf + fstp %st(1) + fstp %st(1) + ret +END (__ieee754_log10f) diff --git a/src/system/libroot/posix/glibc/arch/x86/e_log10l.S b/src/system/libroot/posix/glibc/arch/x86/e_log10l.S new file mode 100644 index 0000000000..25d3501663 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/x86/e_log10l.S @@ -0,0 +1,70 @@ +/* + * Written by J.T. Conklin . + * Public domain. + * + * Adapted for `long double' by Ulrich Drepper . + * + * Changed to use fyl2xp1 for values near 1, . + */ + +#include + +RCSID("$NetBSD: $") + +#ifdef __ELF__ + .section .rodata +#else + .text +#endif + .align ALIGNARG(4) + ASM_TYPE_DIRECTIVE(one,@object) +one: .double 1.0 + ASM_SIZE_DIRECTIVE(one) + /* It is not important that this constant is precise. It is only + a value which is known to be on the safe side for using the + fyl2xp1 instruction. */ + ASM_TYPE_DIRECTIVE(limit,@object) +limit: .double 0.29 + ASM_SIZE_DIRECTIVE(limit) + + +#ifdef PIC +#define MO(op) op##@GOTOFF(%edx) +#else +#define MO(op) op +#endif + + .text +ENTRY(__ieee754_log10l) + fldlg2 // log10(2) + fldt 4(%esp) // x : log10(2) +#ifdef PIC + call 1f +1: popl %edx + addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %edx +#endif + fxam + fnstsw + fld %st // x : x : log10(2) + sahf + jc 3f // in case x is NaN or ±Inf +4: fsubl MO(one) // x-1 : x : log10(2) + fld %st // x-1 : x-1 : x : log10(2) + fabs // |x-1| : x-1 : x : log10(2) + fcompl MO(limit) // x-1 : x : log10(2) + fnstsw // x-1 : x : log10(2) + andb $0x45, %ah + jz 2f + fstp %st(1) // x-1 : log10(2) + fyl2xp1 // log10(x) + ret + +2: fstp %st(0) // x : log10(2) + fyl2x // log10(x) + ret + +3: jp 4b // in case x is ±Inf + fstp %st(1) + fstp %st(1) + ret +END(__ieee754_log10l) diff --git a/src/system/libroot/posix/glibc/arch/x86/e_logf.S b/src/system/libroot/posix/glibc/arch/x86/e_logf.S new file mode 100644 index 0000000000..bdba1d3225 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/x86/e_logf.S @@ -0,0 +1,60 @@ +/* + * Written by J.T. Conklin . + * Public domain. + * Adapted for float by Ulrich Drepper . + * + * Changed to use fyl2xp1 for values near 1, . + */ + +#include + +RCSID("$NetBSD: e_log.S,v 1.4 1995/05/08 23:48:39 jtc Exp $") + +#ifdef __ELF__ + .section .rodata +#else + .text +#endif + .align ALIGNARG(4) + ASM_TYPE_DIRECTIVE(one,@object) +one: .double 1.0 + ASM_SIZE_DIRECTIVE(one) + /* It is not important that this constant is precise. It is only + a value which is known to be on the safe side for using the + fyl2xp1 instruction. */ + ASM_TYPE_DIRECTIVE(limit,@object) +limit: .double 0.29 + ASM_SIZE_DIRECTIVE(limit) + + +#ifdef PIC +#define MO(op) op##@GOTOFF(%edx) +#else +#define MO(op) op +#endif + + .text +ENTRY(__ieee754_logf) + fldln2 // log(2) + flds 4(%esp) // x : log(2) +#ifdef PIC + call 1f +1: popl %edx + addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %edx +#endif + fld %st // x : x : log(2) + fsubl MO(one) // x-1 : x : log(2) + fld %st // x-1 : x-1 : x : log(2) + fabs // |x-1| : x-1 : x : log(2) + fcompl MO(limit) // x-1 : x : log(2) + fnstsw // x-1 : x : log(2) + andb $0x45, %ah + jz 2f + fstp %st(1) // x-1 : log(2) + fyl2xp1 // log(x) + ret + +2: fstp %st(0) // x : log(2) + fyl2x // log(x) + ret +END (__ieee754_logf) diff --git a/src/system/libroot/posix/glibc/arch/x86/e_logl.S b/src/system/libroot/posix/glibc/arch/x86/e_logl.S new file mode 100644 index 0000000000..bda3ea508e --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/x86/e_logl.S @@ -0,0 +1,60 @@ +/* + * Written by J.T. Conklin . + * Public domain. + * + * Adapted for `long double' by Ulrich Drepper . + */ + +#include + +RCSID("$NetBSD: $") + + +#ifdef __ELF__ + .section .rodata +#else + .text +#endif + .align ALIGNARG(4) + ASM_TYPE_DIRECTIVE(one,@object) +one: .double 1.0 + ASM_SIZE_DIRECTIVE(one) + /* It is not important that this constant is precise. It is only + a value which is known to be on the safe side for using the + fyl2xp1 instruction. */ + ASM_TYPE_DIRECTIVE(limit,@object) +limit: .double 0.29 + ASM_SIZE_DIRECTIVE(limit) + + +#ifdef PIC +#define MO(op) op##@GOTOFF(%edx) +#else +#define MO(op) op +#endif + + .text +ENTRY(__ieee754_logl) + fldln2 // log(2) + fldt 4(%esp) // x : log(2) +#ifdef PIC + call 1f +1: popl %edx + addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %edx +#endif + fld %st // x : x : log(2) + fsubl MO(one) // x-1 : x : log(2) + fld %st // x-1 : x-1 : x : log(2) + fabs // |x-1| : x-1 : x : log(2) + fcompl MO(limit) // x-1 : x : log(2) + fnstsw // x-1 : x : log(2) + andb $0x45, %ah + jz 2f + fstp %st(1) // x-1 : log(2) + fyl2xp1 // log(x) + ret + +2: fstp %st(0) // x : log(2) + fyl2x // log(x) + ret +END (__ieee754_logl) diff --git a/src/system/libroot/posix/glibc/arch/x86/e_pow.S b/src/system/libroot/posix/glibc/arch/x86/e_pow.S new file mode 100644 index 0000000000..997dd30e9d --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/x86/e_pow.S @@ -0,0 +1,328 @@ +/* ix87 specific implementation of pow function. + Copyright (C) 1996, 1997, 1998, 1999, 2001 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper , 1996. + + 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, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +#include + +#ifdef __ELF__ + .section .rodata +#else + .text +#endif + + .align ALIGNARG(4) + ASM_TYPE_DIRECTIVE(infinity,@object) +inf_zero: +infinity: + .byte 0, 0, 0, 0, 0, 0, 0xf0, 0x7f + ASM_SIZE_DIRECTIVE(infinity) + ASM_TYPE_DIRECTIVE(zero,@object) +zero: .double 0.0 + ASM_SIZE_DIRECTIVE(zero) + ASM_TYPE_DIRECTIVE(minf_mzero,@object) +minf_mzero: +minfinity: + .byte 0, 0, 0, 0, 0, 0, 0xf0, 0xff +mzero: + .byte 0, 0, 0, 0, 0, 0, 0, 0x80 + ASM_SIZE_DIRECTIVE(minf_mzero) + ASM_TYPE_DIRECTIVE(one,@object) +one: .double 1.0 + ASM_SIZE_DIRECTIVE(one) + ASM_TYPE_DIRECTIVE(limit,@object) +limit: .double 0.29 + ASM_SIZE_DIRECTIVE(limit) + +#ifdef PIC +#define MO(op) op##@GOTOFF(%ecx) +#define MOX(op,x,f) op##@GOTOFF(%ecx,x,f) +#else +#define MO(op) op +#define MOX(op,x,f) op(,x,f) +#endif + + .text +ENTRY(__ieee754_pow) + fldl 12(%esp) // y + fxam + +#ifdef PIC + call 1f +1: popl %ecx + addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %ecx +#endif + + fnstsw + movb %ah, %dl + andb $0x45, %ah + cmpb $0x40, %ah // is y == 0 ? + je 11f + + cmpb $0x05, %ah // is y == ±inf ? + je 12f + + cmpb $0x01, %ah // is y == NaN ? + je 30f + + fldl 4(%esp) // x : y + + subl $8,%esp + + fxam + fnstsw + movb %ah, %dh + andb $0x45, %ah + cmpb $0x40, %ah + je 20f // x is ±0 + + cmpb $0x05, %ah + je 15f // x is ±inf + + fxch // y : x + + /* First see whether `y' is a natural number. In this case we + can use a more precise algorithm. */ + fld %st // y : y : x + fistpll (%esp) // y : x + fildll (%esp) // int(y) : y : x + fucomp %st(1) // y : x + fnstsw + sahf + jne 2f + + /* OK, we have an integer value for y. */ + popl %eax + popl %edx + orl $0, %edx + fstp %st(0) // x + jns 4f // y >= 0, jump + fdivrl MO(one) // 1/x (now referred to as x) + negl %eax + adcl $0, %edx + negl %edx +4: fldl MO(one) // 1 : x + fxch + +6: shrdl $1, %edx, %eax + jnc 5f + fxch + fmul %st(1) // x : ST*x + fxch +5: fmul %st(0), %st // x*x : ST*x + shrl $1, %edx + movl %eax, %ecx + orl %edx, %ecx + jnz 6b + fstp %st(0) // ST*x + ret + + /* y is ±NAN */ +30: fldl 4(%esp) // x : y + fldl MO(one) // 1.0 : x : y + fucomp %st(1) // x : y + fnstsw + sahf + je 31f + fxch // y : x +31: fstp %st(1) + ret + + .align ALIGNARG(4) +2: /* y is a real number. */ + fxch // x : y + fldl MO(one) // 1.0 : x : y + fld %st(1) // x : 1.0 : x : y + fsub %st(1) // x-1 : 1.0 : x : y + fabs // |x-1| : 1.0 : x : y + fcompl MO(limit) // 1.0 : x : y + fnstsw + fxch // x : 1.0 : y + sahf + ja 7f + fsub %st(1) // x-1 : 1.0 : y + fyl2xp1 // log2(x) : y + jmp 8f + +7: fyl2x // log2(x) : y +8: fmul %st(1) // y*log2(x) : y + fst %st(1) // y*log2(x) : y*log2(x) + frndint // int(y*log2(x)) : y*log2(x) + fsubr %st, %st(1) // int(y*log2(x)) : fract(y*log2(x)) + fxch // fract(y*log2(x)) : int(y*log2(x)) + f2xm1 // 2^fract(y*log2(x))-1 : int(y*log2(x)) + faddl MO(one) // 2^fract(y*log2(x)) : int(y*log2(x)) + fscale // 2^fract(y*log2(x))*2^int(y*log2(x)) : int(y*log2(x)) + addl $8, %esp + fstp %st(1) // 2^fract(y*log2(x))*2^int(y*log2(x)) + ret + + + // pow(x,±0) = 1 + .align ALIGNARG(4) +11: fstp %st(0) // pop y + fldl MO(one) + ret + + // y == ±inf + .align ALIGNARG(4) +12: fstp %st(0) // pop y + fldl 4(%esp) // x + fabs + fcompl MO(one) // < 1, == 1, or > 1 + fnstsw + andb $0x45, %ah + cmpb $0x45, %ah + je 13f // jump if x is NaN + + cmpb $0x40, %ah + je 14f // jump if |x| == 1 + + shlb $1, %ah + xorb %ah, %dl + andl $2, %edx + fldl MOX(inf_zero, %edx, 4) + ret + + .align ALIGNARG(4) +14: fldl MO(one) + ret + + .align ALIGNARG(4) +13: fldl 4(%esp) // load x == NaN + ret + + .align ALIGNARG(4) + // x is ±inf +15: fstp %st(0) // y + testb $2, %dh + jz 16f // jump if x == +inf + + // We must find out whether y is an odd integer. + fld %st // y : y + fistpll (%esp) // y + fildll (%esp) // int(y) : y + fucompp // + fnstsw + sahf + jne 17f + + // OK, the value is an integer, but is the number of bits small + // enough so that all are coming from the mantissa? + popl %eax + popl %edx + andb $1, %al + jz 18f // jump if not odd + movl %edx, %eax + orl %edx, %edx + jns 155f + negl %eax +155: cmpl $0x00200000, %eax + ja 18f // does not fit in mantissa bits + // It's an odd integer. + shrl $31, %edx + fldl MOX(minf_mzero, %edx, 8) + ret + + .align ALIGNARG(4) +16: fcompl MO(zero) + addl $8, %esp + fnstsw + shrl $5, %eax + andl $8, %eax + fldl MOX(inf_zero, %eax, 1) + ret + + .align ALIGNARG(4) +17: shll $30, %edx // sign bit for y in right position + addl $8, %esp +18: shrl $31, %edx + fldl MOX(inf_zero, %edx, 8) + ret + + .align ALIGNARG(4) + // x is ±0 +20: fstp %st(0) // y + testb $2, %dl + jz 21f // y > 0 + + // x is ±0 and y is < 0. We must find out whether y is an odd integer. + testb $2, %dh + jz 25f + + fld %st // y : y + fistpll (%esp) // y + fildll (%esp) // int(y) : y + fucompp // + fnstsw + sahf + jne 26f + + // OK, the value is an integer, but is the number of bits small + // enough so that all are coming from the mantissa? + popl %eax + popl %edx + andb $1, %al + jz 27f // jump if not odd + cmpl $0xffe00000, %edx + jbe 27f // does not fit in mantissa bits + // It's an odd integer. + // Raise divide-by-zero exception and get minus infinity value. + fldl MO(one) + fdivl MO(zero) + fchs + ret + +25: fstp %st(0) +26: addl $8, %esp +27: // Raise divide-by-zero exception and get infinity value. + fldl MO(one) + fdivl MO(zero) + ret + + .align ALIGNARG(4) + // x is ±0 and y is > 0. We must find out whether y is an odd integer. +21: testb $2, %dh + jz 22f + + fld %st // y : y + fistpll (%esp) // y + fildll (%esp) // int(y) : y + fucompp // + fnstsw + sahf + jne 23f + + // OK, the value is an integer, but is the number of bits small + // enough so that all are coming from the mantissa? + popl %eax + popl %edx + andb $1, %al + jz 24f // jump if not odd + cmpl $0xffe00000, %edx + jae 24f // does not fit in mantissa bits + // It's an odd integer. + fldl MO(mzero) + ret + +22: fstp %st(0) +23: addl $8, %esp // Don't use 2 x pop +24: fldl MO(zero) + ret + +END(__ieee754_pow) diff --git a/src/system/libroot/posix/glibc/arch/x86/e_powf.S b/src/system/libroot/posix/glibc/arch/x86/e_powf.S new file mode 100644 index 0000000000..dce81697db --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/x86/e_powf.S @@ -0,0 +1,320 @@ +/* ix87 specific implementation of pow function. + Copyright (C) 1996, 1997, 1999, 2001 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper , 1996. + + 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, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +#include + +#ifdef __ELF__ + .section .rodata +#else + .text +#endif + + .align ALIGNARG(4) + ASM_TYPE_DIRECTIVE(infinity,@object) +inf_zero: +infinity: + .byte 0, 0, 0, 0, 0, 0, 0xf0, 0x7f + ASM_SIZE_DIRECTIVE(infinity) + ASM_TYPE_DIRECTIVE(zero,@object) +zero: .double 0.0 + ASM_SIZE_DIRECTIVE(zero) + ASM_TYPE_DIRECTIVE(minf_mzero,@object) +minf_mzero: +minfinity: + .byte 0, 0, 0, 0, 0, 0, 0xf0, 0xff +mzero: + .byte 0, 0, 0, 0, 0, 0, 0, 0x80 + ASM_SIZE_DIRECTIVE(minf_mzero) + ASM_TYPE_DIRECTIVE(one,@object) +one: .double 1.0 + ASM_SIZE_DIRECTIVE(one) + ASM_TYPE_DIRECTIVE(limit,@object) +limit: .double 0.29 + ASM_SIZE_DIRECTIVE(limit) + +#ifdef PIC +#define MO(op) op##@GOTOFF(%ecx) +#define MOX(op,x,f) op##@GOTOFF(%ecx,x,f) +#else +#define MO(op) op +#define MOX(op,x,f) op(,x,f) +#endif + + .text +ENTRY(__ieee754_powf) + flds 8(%esp) // y + fxam + +#ifdef PIC + call 1f +1: popl %ecx + addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %ecx +#endif + + fnstsw + movb %ah, %dl + andb $0x45, %ah + cmpb $0x40, %ah // is y == 0 ? + je 11f + + cmpb $0x05, %ah // is y == ±inf ? + je 12f + + cmpb $0x01, %ah // is y == NaN ? + je 30f + + flds 4(%esp) // x : y + + subl $4, %esp + + fxam + fnstsw + movb %ah, %dh + andb $0x45, %ah + cmpb $0x40, %ah + je 20f // x is ±0 + + cmpb $0x05, %ah + je 15f // x is ±inf + + fxch // y : x + + /* First see whether `y' is a natural number. In this case we + can use a more precise algorithm. */ + fld %st // y : y : x + fistpl (%esp) // y : x + fildl (%esp) // int(y) : y : x + fucomp %st(1) // y : x + fnstsw + sahf + jne 2f + + /* OK, we have an integer value for y. */ + popl %edx + orl $0, %edx + fstp %st(0) // x + jns 4f // y >= 0, jump + fdivrl MO(one) // 1/x (now referred to as x) + negl %edx +4: fldl MO(one) // 1 : x + fxch + +6: shrl $1, %edx + jnc 5f + fxch + fmul %st(1) // x : ST*x + fxch +5: fmul %st(0), %st // x*x : ST*x + testl %edx, %edx + jnz 6b + fstp %st(0) // ST*x + ret + + /* y is ±NAN */ +30: flds 4(%esp) // x : y + fldl MO(one) // 1.0 : x : y + fucomp %st(1) // x : y + fnstsw + sahf + je 31f + fxch // y : x +31: fstp %st(1) + ret + + .align ALIGNARG(4) +2: /* y is a real number. */ + fxch // x : y + fldl MO(one) // 1.0 : x : y + fld %st(1) // x : 1.0 : x : y + fsub %st(1) // x-1 : 1.0 : x : y + fabs // |x-1| : 1.0 : x : y + fcompl MO(limit) // 1.0 : x : y + fnstsw + fxch // x : 1.0 : y + sahf + ja 7f + fsub %st(1) // x-1 : 1.0 : y + fyl2xp1 // log2(x) : y + jmp 8f + +7: fyl2x // log2(x) : y +8: fmul %st(1) // y*log2(x) : y + fst %st(1) // y*log2(x) : y*log2(x) + frndint // int(y*log2(x)) : y*log2(x) + fsubr %st, %st(1) // int(y*log2(x)) : fract(y*log2(x)) + fxch // fract(y*log2(x)) : int(y*log2(x)) + f2xm1 // 2^fract(y*log2(x))-1 : int(y*log2(x)) + faddl MO(one) // 2^fract(y*log2(x)) : int(y*log2(x)) + fscale // 2^fract(y*log2(x))*2^int(y*log2(x)) : int(y*log2(x)) + addl $4, %esp + fstp %st(1) // 2^fract(y*log2(x))*2^int(y*log2(x)) + ret + + + // pow(x,±0) = 1 + .align ALIGNARG(4) +11: fstp %st(0) // pop y + fldl MO(one) + ret + + // y == ±inf + .align ALIGNARG(4) +12: fstp %st(0) // pop y + flds 4(%esp) // x + fabs + fcompl MO(one) // < 1, == 1, or > 1 + fnstsw + andb $0x45, %ah + cmpb $0x45, %ah + je 13f // jump if x is NaN + + cmpb $0x40, %ah + je 14f // jump if |x| == 1 + + shlb $1, %ah + xorb %ah, %dl + andl $2, %edx + fldl MOX(inf_zero, %edx, 4) + ret + + .align ALIGNARG(4) +14: fldl MO(one) + ret + + .align ALIGNARG(4) +13: flds 4(%esp) // load x == NaN + ret + + .align ALIGNARG(4) + // x is ±inf +15: fstp %st(0) // y + testb $2, %dh + jz 16f // jump if x == +inf + + // We must find out whether y is an odd integer. + fld %st // y : y + fistpl (%esp) // y + fildl (%esp) // int(y) : y + fucompp // + fnstsw + sahf + jne 17f + + // OK, the value is an integer, but is the number of bits small + // enough so that all are coming from the mantissa? + popl %edx + testb $1, %dl + jz 18f // jump if not odd + movl %edx, %eax + orl %edx, %edx + jns 155f + negl %eax +155: cmpl $0x01000000, %eax + ja 18f // does not fit in mantissa bits + // It's an odd integer. + shrl $31, %edx + fldl MOX(minf_mzero, %edx, 8) + ret + + .align ALIGNARG(4) +16: fcompl MO(zero) + addl $4, %esp + fnstsw + shrl $5, %eax + andl $8, %eax + fldl MOX(inf_zero, %eax, 1) + ret + + .align ALIGNARG(4) +17: shll $30, %edx // sign bit for y in right position + addl $4, %esp +18: shrl $31, %edx + fldl MOX(inf_zero, %edx, 8) + ret + + .align ALIGNARG(4) + // x is ±0 +20: fstp %st(0) // y + testb $2, %dl + jz 21f // y > 0 + + // x is ±0 and y is < 0. We must find out whether y is an odd integer. + testb $2, %dh + jz 25f + + fld %st // y : y + fistpl (%esp) // y + fildl (%esp) // int(y) : y + fucompp // + fnstsw + sahf + jne 26f + + // OK, the value is an integer, but is the number of bits small + // enough so that all are coming from the mantissa? + popl %edx + testb $1, %dl + jz 27f // jump if not odd + cmpl $0xff000000, %edx + jbe 27f // does not fit in mantissa bits + // It's an odd integer. + // Raise divide-by-zero exception and get minus infinity value. + fldl MO(one) + fdivl MO(zero) + fchs + ret + +25: fstp %st(0) +26: addl $4, %esp +27: // Raise divide-by-zero exception and get infinity value. + fldl MO(one) + fdivl MO(zero) + ret + + .align ALIGNARG(4) + // x is ±0 and y is > 0. We must find out whether y is an odd integer. +21: testb $2, %dh + jz 22f + + fld %st // y : y + fistpl (%esp) // y + fildl (%esp) // int(y) : y + fucompp // + fnstsw + sahf + jne 23f + + // OK, the value is an integer, but is the number of bits small + // enough so that all are coming from the mantissa? + popl %edx + testb $1, %dl + jz 24f // jump if not odd + cmpl $0xff000000, %edx + jae 24f // does not fit in mantissa bits + // It's an odd integer. + fldl MO(mzero) + ret + +22: fstp %st(0) +23: addl $4, %esp // Don't use pop. +24: fldl MO(zero) + ret + +END(__ieee754_powf) diff --git a/src/system/libroot/posix/glibc/arch/x86/e_powl.S b/src/system/libroot/posix/glibc/arch/x86/e_powl.S new file mode 100644 index 0000000000..5d82571128 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/x86/e_powl.S @@ -0,0 +1,315 @@ +/* ix87 specific implementation of pow function. + Copyright (C) 1996, 1997, 1998, 1999, 2001 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper , 1996. + + 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, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +#include + +#ifdef __ELF__ + .section .rodata +#else + .text +#endif + + .align ALIGNARG(4) + ASM_TYPE_DIRECTIVE(infinity,@object) +inf_zero: +infinity: + .byte 0, 0, 0, 0, 0, 0, 0xf0, 0x7f + ASM_SIZE_DIRECTIVE(infinity) + ASM_TYPE_DIRECTIVE(zero,@object) +zero: .double 0.0 + ASM_SIZE_DIRECTIVE(zero) + ASM_TYPE_DIRECTIVE(minf_mzero,@object) +minf_mzero: +minfinity: + .byte 0, 0, 0, 0, 0, 0, 0xf0, 0xff +mzero: + .byte 0, 0, 0, 0, 0, 0, 0, 0x80 + ASM_SIZE_DIRECTIVE(minf_mzero) + ASM_TYPE_DIRECTIVE(one,@object) +one: .double 1.0 + ASM_SIZE_DIRECTIVE(one) + ASM_TYPE_DIRECTIVE(limit,@object) +limit: .double 0.29 + ASM_SIZE_DIRECTIVE(limit) + +#ifdef PIC +#define MO(op) op##@GOTOFF(%ecx) +#define MOX(op,x,f) op##@GOTOFF(%ecx,x,f) +#else +#define MO(op) op +#define MOX(op,x,f) op(,x,f) +#endif + + .text +ENTRY(__ieee754_powl) + fldt 16(%esp) // y + fxam + +#ifdef PIC + call 1f +1: popl %ecx + addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %ecx +#endif + + fnstsw + movb %ah, %dl + andb $0x45, %ah + cmpb $0x40, %ah // is y == 0 ? + je 11f + + cmpb $0x05, %ah // is y == ±inf ? + je 12f + + cmpb $0x01, %ah // is y == NaN ? + je 30f + + fldt 4(%esp) // x : y + + subl $8,%esp + + fxam + fnstsw + movb %ah, %dh + andb $0x45, %ah + cmpb $0x40, %ah + je 20f // x is ±0 + + cmpb $0x05, %ah + je 15f // x is ±inf + + fxch // y : x + + /* First see whether `y' is a natural number. In this case we + can use a more precise algorithm. */ + fld %st // y : y : x + fistpll (%esp) // y : x + fildll (%esp) // int(y) : y : x + fucomp %st(1) // y : x + fnstsw + sahf + jne 2f + + /* OK, we have an integer value for y. */ + popl %eax + popl %edx + orl $0, %edx + fstp %st(0) // x + jns 4f // y >= 0, jump + fdivrl MO(one) // 1/x (now referred to as x) + negl %eax + adcl $0, %edx + negl %edx +4: fldl MO(one) // 1 : x + fxch + +6: shrdl $1, %edx, %eax + jnc 5f + fxch + fmul %st(1) // x : ST*x + fxch +5: fmul %st(0), %st // x*x : ST*x + shrl $1, %edx + movl %eax, %ecx + orl %edx, %ecx + jnz 6b + fstp %st(0) // ST*x + ret + + /* y is ±NAN */ +30: fldt 4(%esp) // x : y + fldl MO(one) // 1.0 : x : y + fucomp %st(1) // x : y + fnstsw + sahf + je 31f + fxch // y : x +31: fstp %st(1) + ret + + .align ALIGNARG(4) +2: /* y is a real number. */ + fxch // x : y + fldl MO(one) // 1.0 : x : y + fld %st(1) // x : 1.0 : x : y + fsub %st(1) // x-1 : 1.0 : x : y + fabs // |x-1| : 1.0 : x : y + fcompl MO(limit) // 1.0 : x : y + fnstsw + fxch // x : 1.0 : y + sahf + ja 7f + fsub %st(1) // x-1 : 1.0 : y + fyl2xp1 // log2(x) : y + jmp 8f + +7: fyl2x // log2(x) : y +8: fmul %st(1) // y*log2(x) : y + fst %st(1) // y*log2(x) : y*log2(x) + frndint // int(y*log2(x)) : y*log2(x) + fsubr %st, %st(1) // int(y*log2(x)) : fract(y*log2(x)) + fxch // fract(y*log2(x)) : int(y*log2(x)) + f2xm1 // 2^fract(y*log2(x))-1 : int(y*log2(x)) + faddl MO(one) // 2^fract(y*log2(x)) : int(y*log2(x)) + fscale // 2^fract(y*log2(x))*2^int(y*log2(x)) : int(y*log2(x)) + addl $8, %esp + fstp %st(1) // 2^fract(y*log2(x))*2^int(y*log2(x)) + ret + + + // pow(x,±0) = 1 + .align ALIGNARG(4) +11: fstp %st(0) // pop y + fldl MO(one) + ret + + // y == ±inf + .align ALIGNARG(4) +12: fstp %st(0) // pop y + fldt 4(%esp) // x + fabs + fcompl MO(one) // < 1, == 1, or > 1 + fnstsw + andb $0x45, %ah + cmpb $0x45, %ah + je 13f // jump if x is NaN + + cmpb $0x40, %ah + je 14f // jump if |x| == 1 + + shlb $1, %ah + xorb %ah, %dl + andl $2, %edx + fldl MOX(inf_zero, %edx, 4) + ret + + .align ALIGNARG(4) +14: fldl MO(one) + ret + + .align ALIGNARG(4) +13: fldt 4(%esp) // load x == NaN + ret + + .align ALIGNARG(4) + // x is ±inf +15: fstp %st(0) // y + testb $2, %dh + jz 16f // jump if x == +inf + + // We must find out whether y is an odd integer. + fld %st // y : y + fistpll (%esp) // y + fildll (%esp) // int(y) : y + fucompp // + fnstsw + sahf + jne 17f + + // OK, the value is an integer, but is it odd? + popl %eax + popl %edx + andb $1, %al + jz 18f // jump if not odd + // It's an odd integer. + shrl $31, %edx + fldl MOX(minf_mzero, %edx, 8) + ret + + .align ALIGNARG(4) +16: fcompl MO(zero) + addl $8, %esp + fnstsw + shrl $5, %eax + andl $8, %eax + fldl MOX(inf_zero, %eax, 1) + ret + + .align ALIGNARG(4) +17: shll $30, %edx // sign bit for y in right position + addl $8, %esp +18: shrl $31, %edx + fldl MOX(inf_zero, %edx, 8) + ret + + .align ALIGNARG(4) + // x is ±0 +20: fstp %st(0) // y + testb $2, %dl + jz 21f // y > 0 + + // x is ±0 and y is < 0. We must find out whether y is an odd integer. + testb $2, %dh + jz 25f + + fld %st // y : y + fistpll (%esp) // y + fildll (%esp) // int(y) : y + fucompp // + fnstsw + sahf + jne 26f + + // OK, the value is an integer, but is it odd? + popl %eax + popl %edx + andb $1, %al + jz 27f // jump if not odd + // It's an odd integer. + // Raise divide-by-zero exception and get minus infinity value. + fldl MO(one) + fdivl MO(zero) + fchs + ret + +25: fstp %st(0) +26: addl $8, %esp +27: // Raise divide-by-zero exception and get infinity value. + fldl MO(one) + fdivl MO(zero) + ret + + .align ALIGNARG(4) + // x is ±0 and y is > 0. We must find out whether y is an odd integer. +21: testb $2, %dh + jz 22f + + fld %st // y : y + fistpll (%esp) // y + fildll (%esp) // int(y) : y + fucompp // + fnstsw + sahf + jne 23f + + // OK, the value is an integer, but is it odd? + popl %eax + popl %edx + andb $1, %al + jz 24f // jump if not odd + // It's an odd integer. + fldl MO(mzero) + ret + +22: fstp %st(0) +23: addl $8, %esp // Don't use 2 x pop +24: fldl MO(zero) + ret + +END(__ieee754_powl) diff --git a/src/system/libroot/posix/glibc/arch/x86/e_remainder.S b/src/system/libroot/posix/glibc/arch/x86/e_remainder.S new file mode 100644 index 0000000000..2f43cb894c --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/x86/e_remainder.S @@ -0,0 +1,19 @@ +/* + * Written by J.T. Conklin . + * Public domain. + */ + +#include + +RCSID("$NetBSD: e_remainder.S,v 1.4 1995/05/08 23:49:37 jtc Exp $") + +ENTRY(__ieee754_remainder) + fldl 12(%esp) + fldl 4(%esp) +1: fprem1 + fstsw %ax + sahf + jp 1b + fstp %st(1) + ret +END (__ieee754_remainder) diff --git a/src/system/libroot/posix/glibc/arch/x86/e_remainderf.S b/src/system/libroot/posix/glibc/arch/x86/e_remainderf.S new file mode 100644 index 0000000000..79f821993b --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/x86/e_remainderf.S @@ -0,0 +1,19 @@ +/* + * Written by J.T. Conklin . + * Public domain. + */ + +#include + +RCSID("$NetBSD: e_remainderf.S,v 1.2 1995/05/08 23:49:47 jtc Exp $") + +ENTRY(__ieee754_remainderf) + flds 8(%esp) + flds 4(%esp) +1: fprem1 + fstsw %ax + sahf + jp 1b + fstp %st(1) + ret +END (__ieee754_remainderf) diff --git a/src/system/libroot/posix/glibc/arch/x86/e_remainderl.S b/src/system/libroot/posix/glibc/arch/x86/e_remainderl.S new file mode 100644 index 0000000000..5f50b626a2 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/x86/e_remainderl.S @@ -0,0 +1,21 @@ +/* + * Written by J.T. Conklin . + * Public domain. + * + * Adapted for `long double' by Ulrich Drepper . + */ + +#include + +RCSID("$NetBSD: $") + +ENTRY(__ieee754_remainderl) + fldt 16(%esp) + fldt 4(%esp) +1: fprem1 + fstsw %ax + sahf + jp 1b + fstp %st(1) + ret +END (__ieee754_remainderl) diff --git a/src/system/libroot/posix/glibc/arch/x86/e_scalb.S b/src/system/libroot/posix/glibc/arch/x86/e_scalb.S new file mode 100644 index 0000000000..1596f6a700 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/x86/e_scalb.S @@ -0,0 +1,106 @@ +/* + * Written by J.T. Conklin . + * Public domain. + * + * Correct handling of y==-inf + */ + +#include + +RCSID("$NetBSD: e_scalb.S,v 1.4 1995/05/08 23:49:52 jtc Exp $") + +#ifdef __ELF__ + .section .rodata +#else + .text +#endif + + .align ALIGNARG(4) + ASM_TYPE_DIRECTIVE(zero_nan,@object) +zero_nan: + .double 0.0 +nan: .byte 0, 0, 0, 0, 0, 0, 0xff, 0x7f +minus_zero: + .byte 0, 0, 0, 0, 0, 0, 0, 0x80 + .byte 0, 0, 0, 0, 0, 0, 0xff, 0x7f + ASM_SIZE_DIRECTIVE(zero_nan) + + +#ifdef PIC +#define MO(op) op##@GOTOFF(%ecx) +#define MOX(op,x,f) op##@GOTOFF(%ecx,x,f) +#else +#define MO(op) op +#define MOX(op,x,f) op(,x,f) +#endif + + .text +ENTRY(__ieee754_scalb) + fldl 12(%esp) + fxam + fnstsw + fldl 4(%esp) + andl $0x4700, %eax + cmpl $0x0700, %eax + je 1f + andl $0x4500, %eax + cmpl $0x0100, %eax + je 2f + fxam + fnstsw + andl $0x4500, %eax + cmpl $0x0100, %eax + je 3f + fld %st(1) + frndint + fcomp %st(2) + fnstsw + sahf + jne 4f + fscale + fstp %st(1) + ret + + /* y is -inf */ +1: fxam +#ifdef PIC + call 1f +1: popl %ecx + addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %ecx +#endif + fnstsw + movl 8(%esp), %edx + shrl $5, %eax + fstp %st + fstp %st + andl $0x80000000, %edx + andl $8, %eax + jnz 4f + shrl $27, %edx + addl %edx, %eax + fldl MOX(zero_nan, %eax, 1) + ret + + /* The result is NaN, but we must not raise an exception. + So use a variable. */ +2: fstp %st + fstp %st +#ifdef PIC + call 1f +1: popl %ecx + addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %ecx +#endif + fldl MO(nan) + ret + + /* The first parameter is a NaN. Return it. */ +3: fstp %st(1) + ret + + /* Return NaN and raise the invalid exception. */ +4: fstp %st + fstp %st + fldz + fdiv %st + ret +END(__ieee754_scalb) diff --git a/src/system/libroot/posix/glibc/arch/x86/e_scalbf.S b/src/system/libroot/posix/glibc/arch/x86/e_scalbf.S new file mode 100644 index 0000000000..d41c29327d --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/x86/e_scalbf.S @@ -0,0 +1,108 @@ +/* + * Written by J.T. Conklin . + * Public domain. + * Adapted for float type by Ulrich Drepper . + * + * Correct handling of y==-inf + */ + +#include + +RCSID("$NetBSD: $") + +#ifdef __ELF__ + .section .rodata +#else + .text +#endif + + .align ALIGNARG(4) + ASM_TYPE_DIRECTIVE(zero_nan,@object) +zero_nan: + .double 0.0 +nan: .byte 0, 0, 0, 0, 0, 0, 0xff, 0x7f +minus_zero: + .byte 0, 0, 0, 0, 0, 0, 0, 0x80 + .byte 0, 0, 0, 0, 0, 0, 0xff, 0x7f + ASM_SIZE_DIRECTIVE(zero_nan) + + +#ifdef PIC +#define MO(op) op##@GOTOFF(%ecx) +#define MOX(op,x,f) op##@GOTOFF(%ecx,x,f) +#else +#define MO(op) op +#define MOX(op,x,f) op(,x,f) +#endif + + + .text +ENTRY(__ieee754_scalbf) + flds 8(%esp) + fxam + fnstsw + flds 4(%esp) + andl $0x4700, %eax + cmpl $0x0700, %eax + je 1f + andl $0x4500, %eax + cmpl $0x0100, %eax + je 2f + fxam + fnstsw + andl $0x4500, %eax + cmpl $0x0100, %eax + je 3f + fld %st(1) + frndint + fcomp %st(2) + fnstsw + sahf + jne 4f + fscale + fstp %st(1) + ret + + /* y is -inf */ +1: fxam +#ifdef PIC + call 1f +1: popl %ecx + addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %ecx +#endif + fnstsw + movl 4(%esp), %edx + shrl $5, %eax + fstp %st + fstp %st + andl $0x80000000, %edx + andl $8, %eax + jnz 4f + shrl $27, %edx + addl %edx, %eax + fldl MOX(zero_nan, %eax, 1) + ret + + /* The result is NaN, but we must not raise an exception. + So use a variable. */ +2: fstp %st + fstp %st +#ifdef PIC + call 1f +1: popl %ecx + addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %ecx +#endif + fldl MO(nan) + ret + + /* The first parameter is a NaN. Return it. */ +3: fstp %st(1) + ret + + /* Return NaN and raise the invalid exception. */ +4: fstp %st + fstp %st + fldz + fdiv %st + ret +END(__ieee754_scalbf) diff --git a/src/system/libroot/posix/glibc/arch/x86/e_scalbl.S b/src/system/libroot/posix/glibc/arch/x86/e_scalbl.S new file mode 100644 index 0000000000..65644f8f0e --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/x86/e_scalbl.S @@ -0,0 +1,108 @@ +/* + * Written by J.T. Conklin . + * Public domain. + * + * Adapted for `long double' by Ulrich Drepper . + * + * Correct handling of y==-inf + */ + +#include + +RCSID("$NetBSD: $") + +#ifdef __ELF__ + .section .rodata +#else + .text +#endif + + .align ALIGNARG(4) + ASM_TYPE_DIRECTIVE(zero_nan,@object) +zero_nan: + .double 0.0 +nan: .byte 0, 0, 0, 0, 0, 0, 0xff, 0x7f +minus_zero: + .byte 0, 0, 0, 0, 0, 0, 0, 0x80 + .byte 0, 0, 0, 0, 0, 0, 0xff, 0x7f + ASM_SIZE_DIRECTIVE(zero_nan) + + +#ifdef PIC +#define MO(op) op##@GOTOFF(%ecx) +#define MOX(op,x,f) op##@GOTOFF(%ecx,x,f) +#else +#define MO(op) op +#define MOX(op,x,f) op(,x,f) +#endif + + .text +ENTRY(__ieee754_scalbl) + fldt 16(%esp) + fxam + fnstsw + fldt 4(%esp) + andl $0x4700, %eax + cmpl $0x0700, %eax + je 1f + andl $0x4500, %eax + cmpl $0x0100, %eax + je 2f + fxam + fnstsw + andl $0x4500, %eax + cmpl $0x0100, %eax + je 3f + fld %st(1) + frndint + fcomp %st(2) + fnstsw + sahf + jne 4f + fscale + fstp %st(1) + ret + + /* y is -inf */ +1: fxam +#ifdef PIC + call 1f +1: popl %ecx + addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %ecx +#endif + fnstsw + movl 12(%esp), %edx + shrl $5, %eax + fstp %st + fstp %st + andl $0x8000, %edx + andl $8, %eax + jnz 4f + shrl $11, %edx + addl %edx, %eax + fldl MOX(zero_nan, %eax, 1) + ret + + /* The result is NaN, but we must not raise an exception. + So use a variable. */ +2: fstp %st + fstp %st +#ifdef PIC + call 1f +1: popl %ecx + addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %ecx +#endif + fldl MO(nan) + ret + + /* The first parameter is a NaN. Return it. */ +3: fstp %st(1) + ret + + /* Return NaN and raise the invalid exception. */ +4: fstp %st + fstp %st + fldz + fdiv %st + ret +END(__ieee754_scalbl) diff --git a/src/system/libroot/posix/glibc/arch/x86/e_sqrt.S b/src/system/libroot/posix/glibc/arch/x86/e_sqrt.S new file mode 100644 index 0000000000..6f253d51aa --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/x86/e_sqrt.S @@ -0,0 +1,14 @@ +/* + * Written by J.T. Conklin . + * Public domain. + */ + +#include + +RCSID("$NetBSD: e_sqrt.S,v 1.4 1995/05/08 23:49:57 jtc Exp $") + +ENTRY(__ieee754_sqrt) + fldl 4(%esp) + fsqrt + ret +END (__ieee754_sqrt) diff --git a/src/system/libroot/posix/glibc/arch/x86/e_sqrtf.S b/src/system/libroot/posix/glibc/arch/x86/e_sqrtf.S new file mode 100644 index 0000000000..5ce1ad0544 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/x86/e_sqrtf.S @@ -0,0 +1,14 @@ +/* + * Written by J.T. Conklin . + * Public domain. + */ + +#include + +RCSID("$NetBSD: e_sqrtf.S,v 1.2 1995/05/08 23:50:14 jtc Exp $") + +ENTRY(__ieee754_sqrtf) + flds 4(%esp) + fsqrt + ret +END (__ieee754_sqrtf) diff --git a/src/system/libroot/posix/glibc/arch/x86/e_sqrtl.c b/src/system/libroot/posix/glibc/arch/x86/e_sqrtl.c new file mode 100644 index 0000000000..85f61bb385 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/x86/e_sqrtl.c @@ -0,0 +1,18 @@ +/* + * Written by J.T. Conklin . + * Public domain. + * + * Adapted for `long double' by Ulrich Drepper . + */ + +#include + +long double +__ieee754_sqrtl (long double x) +{ + long double res; + + asm ("fsqrt" : "=t" (res) : "0" (x)); + + return res; +} diff --git a/src/system/libroot/posix/glibc/arch/x86/mpa.c b/src/system/libroot/posix/glibc/arch/x86/mpa.c new file mode 100644 index 0000000000..1cc8931700 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/x86/mpa.c @@ -0,0 +1 @@ +/* Not needed. */ diff --git a/src/system/libroot/posix/glibc/arch/x86/mpatan.c b/src/system/libroot/posix/glibc/arch/x86/mpatan.c new file mode 100644 index 0000000000..1cc8931700 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/x86/mpatan.c @@ -0,0 +1 @@ +/* Not needed. */ diff --git a/src/system/libroot/posix/glibc/arch/x86/mpatan2.c b/src/system/libroot/posix/glibc/arch/x86/mpatan2.c new file mode 100644 index 0000000000..1cc8931700 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/x86/mpatan2.c @@ -0,0 +1 @@ +/* Not needed. */ diff --git a/src/system/libroot/posix/glibc/arch/x86/mplog.c b/src/system/libroot/posix/glibc/arch/x86/mplog.c new file mode 100644 index 0000000000..1cc8931700 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/x86/mplog.c @@ -0,0 +1 @@ +/* Not needed. */ diff --git a/src/system/libroot/posix/glibc/arch/x86/mptan.c b/src/system/libroot/posix/glibc/arch/x86/mptan.c new file mode 100644 index 0000000000..1cc8931700 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/x86/mptan.c @@ -0,0 +1 @@ +/* Not needed. */ diff --git a/src/system/libroot/posix/glibc/arch/x86/s_asinh.S b/src/system/libroot/posix/glibc/arch/x86/s_asinh.S new file mode 100644 index 0000000000..6c99d3b6f6 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/x86/s_asinh.S @@ -0,0 +1,139 @@ +/* ix87 specific implementation of arcsinh. + Copyright (C) 1996, 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper , 1996. + + 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, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +#include + +#ifdef __ELF__ + .section .rodata +#else + .text +#endif + + .align ALIGNARG(4) + ASM_TYPE_DIRECTIVE(huge,@object) +huge: .double 1e+300 + ASM_SIZE_DIRECTIVE(huge) + ASM_TYPE_DIRECTIVE(one,@object) +one: .double 1.0 + ASM_SIZE_DIRECTIVE(one) + ASM_TYPE_DIRECTIVE(limit,@object) +limit: .double 0.29 + ASM_SIZE_DIRECTIVE(limit) + +#ifdef PIC +#define MO(op) op##@GOTOFF(%edx) +#else +#define MO(op) op +#endif + + .text +ENTRY(__asinh) + movl 8(%esp), %ecx + movl $0x7fffffff, %eax + andl %ecx, %eax + andl $0x80000000, %ecx + movl %eax, %edx + orl $0x800fffff, %edx + incl %edx + jz 7f // x in ±Inf or NaN + xorl %ecx, 8(%esp) + fldl 4(%esp) // |x| + cmpl $0x3e300000, %eax + jb 2f // |x| < 2^-28 + fldln2 // log(2) : |x| + cmpl $0x41b00000, %eax + fxch // |x| : log(2) + ja 3f // |x| > 2^28 +#ifdef PIC + call 1f +1: popl %edx + addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %edx +#endif + cmpl $0x40000000, %eax + ja 5f // |x| > 2 + + // 2^-28 <= |x| <= 2 => y = sign(x)*log1p(|x|+|x|^2/(1+sqrt(1+|x|^2))) + fld %st // |x| : |x| : log(2) + fmul %st(1) // |x|^2 : |x| : log(2) + fld %st // |x|^2 : |x|^2 : |x| : log(2) + faddl MO(one) // 1+|x|^2 : |x|^2 : |x| : log(2) + fsqrt // sqrt(1+|x|^2) : |x|^2 : |x| : log(2) + faddl MO(one) // 1+sqrt(1+|x|^2) : |x|^2 : |x| : log(2) + fdivrp // |x|^2/(1+sqrt(1+|x|^2)) : |x| : log(2) + faddp // |x|+|x|^2/(1+sqrt(1+|x|^2)) : log(2) + fcoml MO(limit) + fnstsw + sahf + ja 6f + fyl2xp1 + jecxz 4f + fchs +4: ret + +7: fldl 4(%esp) + ret + +6: faddl MO(one) + fyl2x + jecxz 4f + fchs +4: ret + + // |x| < 2^-28 => y = x (inexact iff |x| != 0.0) + .align ALIGNARG(4) +2: +#ifdef PIC + call 1f +1: popl %edx + addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %edx +#endif + jecxz 4f + fchs // x +4: fld %st // x : x + faddl MO(huge) // huge+x : x + fstp %st(0) // x + ret + + // |x| > 2^28 => y = sign(x) * (log(|x|) + log(2)) + .align ALIGNARG(4) +3: fyl2x // log(|x|) + fldln2 // log(2) : log(|x|) + faddp // log(|x|)+log(2) + jecxz 4f + fchs +4: ret + + // |x| > 2 => y = sign(x) * log(2*|x| + 1/(|x|+sqrt(x*x+1))) + .align ALIGNARG(4) +5: fld %st // |x| : |x| : log(2) + fadd %st, %st(1) // |x| : 2*|x| : log(2) + fld %st // |x| : |x| : 2*|x| : log(2) + fmul %st(1) // |x|^2 : |x| : 2*|x| : log(2) + faddl MO(one) // 1+|x|^2 : |x| : 2*|x| : log(2) + fsqrt // sqrt(1+|x|^2) : |x| : 2*|x| : log(2) + faddp // |x|+sqrt(1+|x|^2) : 2*|x| : log(2) + fdivrl MO(one) // 1/(|x|+sqrt(1+|x|^2)) : 2*|x| : log(2) + faddp // 2*|x|+1/(|x|+sqrt(1+|x|^2)) : log(2) + fyl2x // log(2*|x|+1/(|x|+sqrt(1+|x|^2))) + jecxz 4f + fchs +4: ret +END(__asinh) +weak_alias (__asinh, asinh) diff --git a/src/system/libroot/posix/glibc/arch/x86/s_asinhf.S b/src/system/libroot/posix/glibc/arch/x86/s_asinhf.S new file mode 100644 index 0000000000..32e6fd6071 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/x86/s_asinhf.S @@ -0,0 +1,139 @@ +/* ix87 specific implementation of arcsinh. + Copyright (C) 1996, 1997, 1999 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper , 1996. + + 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, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +#include + +#ifdef __ELF__ + .section .rodata +#else + .text +#endif + + .align ALIGNARG(4) + ASM_TYPE_DIRECTIVE(huge,@object) +huge: .double 1e+36 + ASM_SIZE_DIRECTIVE(huge) + ASM_TYPE_DIRECTIVE(one,@object) +one: .double 1.0 + ASM_SIZE_DIRECTIVE(one) + ASM_TYPE_DIRECTIVE(limit,@object) +limit: .double 0.29 + ASM_SIZE_DIRECTIVE(limit) + +#ifdef PIC +#define MO(op) op##@GOTOFF(%edx) +#else +#define MO(op) op +#endif + + .text +ENTRY(__asinhf) + movl 4(%esp), %ecx + movl $0x7fffffff, %eax + andl %ecx, %eax + andl $0x80000000, %ecx + movl %eax, %edx + orl $0x807fffff, %edx + incl %edx + jz 7f // x in ±Inf or NaN + xorl %ecx, 4(%esp) + flds 4(%esp) // |x| + cmpl $0x38000000, %eax + jb 2f // |x| < 2^-14 + fldln2 // log(2) : |x| + cmpl $0x47000000, %eax + fxch // |x| : log(2) + ja 3f // |x| > 2^14 +#ifdef PIC + call 1f +1: popl %edx + addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %edx +#endif + cmpl $0x40000000, %eax + ja 5f // |x| > 2 + + // 2^-14 <= |x| <= 2 => y = sign(x)*log1p(|x|+|x|^2/(1+sqrt(1+|x|^2))) + fld %st // |x| : |x| : log(2) + fmul %st(1) // |x|^2 : |x| : log(2) + fld %st // |x|^2 : |x|^2 : |x| : log(2) + faddl MO(one) // 1+|x|^2 : |x|^2 : |x| : log(2) + fsqrt // sqrt(1+|x|^2) : |x|^2 : |x| : log(2) + faddl MO(one) // 1+sqrt(1+|x|^2) : |x|^2 : |x| : log(2) + fdivrp // |x|^2/(1+sqrt(1+|x|^2)) : |x| : log(2) + faddp // |x|+|x|^2/(1+sqrt(1+|x|^2)) : log(2) + fcoml MO(limit) + fnstsw + sahf + ja 6f + fyl2xp1 + jecxz 4f + fchs +4: ret + +7: flds 4(%esp) + ret + +6: faddl MO(one) + fyl2x + jecxz 4f + fchs +4: ret + + // |x| < 2^-14 => y = x (inexact iff |x| != 0.0) + .align ALIGNARG(4) +2: +#ifdef PIC + call 1f +1: popl %edx + addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %edx +#endif + jecxz 4f + fchs // x +4: fld %st // x : x + faddl MO(huge) // huge+x : x + fstp %st(0) // x + ret + + // |x| > 2^14 => y = sign(x) * (log(|x|) + log(2)) + .align ALIGNARG(4) +3: fyl2x // log(|x|) + fldln2 // log(2) : log(|x|) + faddp // log(|x|)+log(2) + jecxz 4f + fchs +4: ret + + // |x| > 2 => y = sign(x) * log(2*|x| + 1/(|x|+sqrt(x*x+1))) + .align ALIGNARG(4) +5: fld %st // |x| : |x| : log(2) + fadd %st, %st(1) // |x| : 2*|x| : log(2) + fld %st // |x| : |x| : 2*|x| : log(2) + fmul %st(1) // |x|^2 : |x| : 2*|x| : log(2) + faddl MO(one) // 1+|x|^2 : |x| : 2*|x| : log(2) + fsqrt // sqrt(1+|x|^2) : |x| : 2*|x| : log(2) + faddp // |x|+sqrt(1+|x|^2) : 2*|x| : log(2) + fdivrl MO(one) // 1/(|x|+sqrt(1+|x|^2)) : 2*|x| : log(2) + faddp // 2*|x|+1/(|x|+sqrt(1+|x|^2)) : log(2) + fyl2x // log(2*|x|+1/(|x|+sqrt(1+|x|^2))) + jecxz 4f + fchs +4: ret +END(__asinhf) +weak_alias (__asinhf, asinhf) diff --git a/src/system/libroot/posix/glibc/arch/x86/s_asinhl.S b/src/system/libroot/posix/glibc/arch/x86/s_asinhl.S new file mode 100644 index 0000000000..5933460f64 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/x86/s_asinhl.S @@ -0,0 +1,147 @@ +/* ix87 specific implementation of arcsinh. + Copyright (C) 1996, 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper , 1996. + + 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, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +#include + +#ifdef __ELF__ + .section .rodata +#else + .text +#endif + + .align ALIGNARG(4) + ASM_TYPE_DIRECTIVE(huge,@object) +huge: .tfloat 1e+4930 + ASM_SIZE_DIRECTIVE(huge) + .align ALIGNARG(4) + /* Please note that we use double value for 1.0. This number + has an exact representation and so we don't get accuracy + problems. The advantage is that the code is simpler. */ + ASM_TYPE_DIRECTIVE(one,@object) +one: .double 1.0 + ASM_SIZE_DIRECTIVE(one) + /* It is not important that this constant is precise. It is only + a value which is known to be on the safe side for using the + fyl2xp1 instruction. */ + ASM_TYPE_DIRECTIVE(limit,@object) +limit: .double 0.29 + ASM_SIZE_DIRECTIVE(limit) + +#ifdef PIC +#define MO(op) op##@GOTOFF(%edx) +#else +#define MO(op) op +#endif + + .text +ENTRY(__asinhl) + movl 12(%esp), %ecx + movl $0x7fff, %eax + andl %ecx, %eax + andl $0x8000, %ecx + movl %eax, %edx + orl $0xffff8000, %edx + incl %edx + jz 7f // x in ±Inf or NaN + xorl %ecx, 12(%esp) + fldt 4(%esp) // |x| + cmpl $0x3fde, %eax + jb 2f // |x| < 2^-34 + fldln2 // log(2) : |x| + cmpl $0x4020, %eax + fxch // |x| : log(2) + ja 3f // |x| > 2^34 +#ifdef PIC + call 1f +1: popl %edx + addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %edx +#endif + cmpl $0x4000, %eax + ja 5f // |x| > 2 + + // 2^-34 <= |x| <= 2 => y = sign(x)*log1p(|x|+|x|^2/(1+sqrt(1+|x|^2))) + fld %st // |x| : |x| : log(2) + fmul %st(1) // |x|^2 : |x| : log(2) + fld %st // |x|^2 : |x|^2 : |x| : log(2) + faddl MO(one) // 1+|x|^2 : |x|^2 : |x| : log(2) + fsqrt // sqrt(1+|x|^2) : |x|^2 : |x| : log(2) + faddl MO(one) // 1+sqrt(1+|x|^2) : |x|^2 : |x| : log(2) + fdivrp // |x|^2/(1+sqrt(1+|x|^2)) : |x| : log(2) + faddp // |x|+|x|^2/(1+sqrt(1+|x|^2)) : log(2) + fcoml MO(limit) + fnstsw + sahf + ja 6f + fyl2xp1 + jecxz 4f + fchs +4: ret + +7: fldt 4(%esp) + ret + +6: faddl MO(one) + fyl2x + jecxz 4f + fchs +4: ret + + // |x| < 2^-34 => y = x (inexact iff |x| != 0.0) + .align ALIGNARG(4) +2: +#ifdef PIC + call 1f +1: popl %edx + addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %edx +#endif + jecxz 4f + fchs // x +4: fld %st // x : x + fldt MO(huge) // huge : x : x + faddp // huge+x : x + fstp %st(0) // x + ret + + // |x| > 2^34 => y = sign(x) * (log(|x|) + log(2)) + .align ALIGNARG(4) +3: fyl2x // log(|x|) + fldln2 // log(2) : log(|x|) + faddp // log(|x|)+log(2) + jecxz 4f + fchs +4: ret + + // |x| > 2 => y = sign(x) * log(2*|x| + 1/(|x|+sqrt(x*x+1))) + .align ALIGNARG(4) +5: fld %st // |x| : |x| : log(2) + fadd %st, %st(1) // |x| : 2*|x| : log(2) + fld %st // |x| : |x| : 2*|x| : log(2) + fmul %st(1) // |x|^2 : |x| : 2*|x| : log(2) + faddl MO(one) // 1+|x|^2 : |x| : 2*|x| : log(2) + fsqrt // sqrt(1+|x|^2) : |x| : 2*|x| : log(2) + faddp // |x|+sqrt(1+|x|^2) : 2*|x| : log(2) + fdivrl MO(one) // 1/(|x|+sqrt(1+|x|^2)) : 2*|x| : log(2) + faddp // 2*|x|+1/(|x|+sqrt(1+|x|^2)) : log(2) + fyl2x // log(2*|x|+1/(|x|+sqrt(1+|x|^2))) + jecxz 4f + fchs +4: ret +END(__asinhl) +weak_alias (__asinhl, asinhl) diff --git a/src/system/libroot/posix/glibc/arch/x86/s_atan.S b/src/system/libroot/posix/glibc/arch/x86/s_atan.S new file mode 100644 index 0000000000..7502f6d828 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/x86/s_atan.S @@ -0,0 +1,16 @@ +/* + * Written by J.T. Conklin . + * Public domain. + */ + +#include + +RCSID("$NetBSD: s_atan.S,v 1.4 1995/05/08 23:50:41 jtc Exp $") + +ENTRY(__atan) + fldl 4(%esp) + fld1 + fpatan + ret +END (__atan) +weak_alias (__atan, atan) diff --git a/src/system/libroot/posix/glibc/arch/x86/s_atanf.S b/src/system/libroot/posix/glibc/arch/x86/s_atanf.S new file mode 100644 index 0000000000..70232c8240 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/x86/s_atanf.S @@ -0,0 +1,16 @@ +/* + * Written by J.T. Conklin . + * Public domain. + */ + +#include + +RCSID("$NetBSD: s_atanf.S,v 1.3 1995/05/08 23:51:33 jtc Exp $") + +ENTRY(__atanf) + flds 4(%esp) + fld1 + fpatan + ret +END (__atanf) +weak_alias (__atanf, atanf) diff --git a/src/system/libroot/posix/glibc/arch/x86/s_atanl.c b/src/system/libroot/posix/glibc/arch/x86/s_atanl.c new file mode 100644 index 0000000000..b7dba88aad --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/x86/s_atanl.c @@ -0,0 +1,22 @@ +/* + * Written by J.T. Conklin . + * Public domain. + * + * Adapted for `long double' by Ulrich Drepper . + */ + +#include + +long double +__atanl (long double x) +{ + long double res; + + asm ("fld1\n" + "fpatan" + : "=t" (res) : "0" (x)); + + return res; +} + +weak_alias (__atanl, atanl) diff --git a/src/system/libroot/posix/glibc/arch/x86/s_cbrt.S b/src/system/libroot/posix/glibc/arch/x86/s_cbrt.S new file mode 100644 index 0000000000..c69958bb57 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/x86/s_cbrt.S @@ -0,0 +1,201 @@ +/* Compute cubic root of double value. + Copyright (C) 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Dirk Alboth and + Ulrich Drepper , 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, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +#include + +#ifdef __ELF__ + .section .rodata +#else + .text +#endif + + .align ALIGNARG(4) + ASM_TYPE_DIRECTIVE(f7,@object) +f7: .double -0.145263899385486377 + ASM_SIZE_DIRECTIVE(f7) + ASM_TYPE_DIRECTIVE(f6,@object) +f6: .double 0.784932344976639262 + ASM_SIZE_DIRECTIVE(f6) + ASM_TYPE_DIRECTIVE(f5,@object) +f5: .double -1.83469277483613086 + ASM_SIZE_DIRECTIVE(f5) + ASM_TYPE_DIRECTIVE(f4,@object) +f4: .double 2.44693122563534430 + ASM_SIZE_DIRECTIVE(f4) + ASM_TYPE_DIRECTIVE(f3,@object) +f3: .double -2.11499494167371287 + ASM_SIZE_DIRECTIVE(f3) + ASM_TYPE_DIRECTIVE(f2,@object) +f2: .double 1.50819193781584896 + ASM_SIZE_DIRECTIVE(f2) + ASM_TYPE_DIRECTIVE(f1,@object) +f1: .double 0.354895765043919860 + ASM_SIZE_DIRECTIVE(f1) + +#define CBRT2 1.2599210498948731648 +#define ONE_CBRT2 0.793700525984099737355196796584 +#define SQR_CBRT2 1.5874010519681994748 +#define ONE_SQR_CBRT2 0.629960524947436582364439673883 + + ASM_TYPE_DIRECTIVE(factor,@object) +factor: .double ONE_SQR_CBRT2 + .double ONE_CBRT2 + .double 1.0 + .double CBRT2 + .double SQR_CBRT2 + ASM_SIZE_DIRECTIVE(factor) + + ASM_TYPE_DIRECTIVE(two54,@object) +two54: .byte 0, 0, 0, 0, 0, 0, 0x50, 0x43 + ASM_SIZE_DIRECTIVE(two54) + +#ifdef PIC +#define MO(op) op##@GOTOFF(%ebx) +#define MOX(op,x) op##@GOTOFF(%ebx,x,1) +#else +#define MO(op) op +#define MOX(op,x) op(x) +#endif + + .text +ENTRY(__cbrt) + movl 4(%esp), %ecx + movl 8(%esp), %eax + movl %eax, %edx + andl $0x7fffffff, %eax + orl %eax, %ecx + jz 1f + xorl %ecx, %ecx + cmpl $0x7ff00000, %eax + jae 1f + +#ifdef PIC + pushl %ebx + call 3f +3: popl %ebx + addl $_GLOBAL_OFFSET_TABLE_+[.-3b], %ebx +#endif + + cmpl $0x00100000, %eax + jae 2f + +#ifdef PIC + fldl 8(%esp) +#else + fldl 4(%esp) +#endif + fmull MO(two54) + movl $-54, %ecx +#ifdef PIC + fstpl 8(%esp) + movl 12(%esp), %eax +#else + fstpl 4(%esp) + movl 8(%esp), %eax +#endif + movl %eax, %edx + andl $0x7fffffff, %eax + +2: shrl $20, %eax + andl $0x800fffff, %edx + subl $1022, %eax + orl $0x3fe00000, %edx + addl %eax, %ecx +#ifdef PIC + movl %edx, 12(%esp) + + fldl 8(%esp) /* xm */ +#else + movl %edx, 8(%esp) + + fldl 4(%esp) /* xm */ +#endif + fabs + + /* The following code has two tracks: + a) compute the normalized cbrt value + b) compute xe/3 and xe%3 + The right track computes the value for b) and this is done + in an optimized way by avoiding division. + + But why two tracks at all? Very easy: efficiency. Some FP + instruction can overlap with a certain amount of integer (and + FP) instructions. So we get (except for the imull) all + instructions for free. */ + + fld %st(0) /* xm : xm */ + + fmull MO(f7) /* f7*xm : xm */ + movl $1431655766, %eax + faddl MO(f6) /* f6+f7*xm : xm */ + imull %ecx + fmul %st(1) /* (f6+f7*xm)*xm : xm */ + movl %ecx, %eax + faddl MO(f5) /* f5+(f6+f7*xm)*xm : xm */ + sarl $31, %eax + fmul %st(1) /* (f5+(f6+f7*xm)*xm)*xm : xm */ + subl %eax, %edx + faddl MO(f4) /* f4+(f5+(f6+f7*xm)*xm)*xm : xm */ + fmul %st(1) /* (f4+(f5+(f6+f7*xm)*xm)*xm)*xm : xm */ + faddl MO(f3) /* f3+(f4+(f5+(f6+f7*xm)*xm)*xm)*xm : xm */ + fmul %st(1) /* (f3+(f4+(f5+(f6+f7*xm)*xm)*xm)*xm)*xm : xm */ + faddl MO(f2) /* f2+(f3+(f4+(f5+(f6+f7*xm)*xm)*xm)*xm)*xm : xm */ + fmul %st(1) /* (f2+(f3+(f4+(f5+(f6+f7*xm)*xm)*xm)*xm)*xm)*xm : xm */ + faddl MO(f1) /* u:=f1+(f2+(f3+(f4+(f5+(f6+f7*xm)*xm)*xm)*xm)*xm)*xm : xm */ + + fld %st /* u : u : xm */ + fmul %st(1) /* u*u : u : xm */ + fld %st(2) /* xm : u*u : u : xm */ + fadd %st /* 2*xm : u*u : u : xm */ + fxch %st(1) /* u*u : 2*xm : u : xm */ + fmul %st(2) /* t2:=u*u*u : 2*xm : u : xm */ + movl %edx, %eax + fadd %st, %st(1) /* t2 : t2+2*xm : u : xm */ + leal (%edx,%edx,2),%edx + fadd %st(0) /* 2*t2 : t2+2*xm : u : xm */ + subl %edx, %ecx + faddp %st, %st(3) /* t2+2*xm : u : 2*t2+xm */ + shll $3, %ecx + fmulp /* u*(t2+2*xm) : 2*t2+xm */ + fdivp %st, %st(1) /* u*(t2+2*xm)/(2*t2+xm) */ + fmull MOX(16+factor,%ecx) /* u*(t2+2*xm)/(2*t2+xm)*FACT */ + pushl %eax + fildl (%esp) /* xe/3 : u*(t2+2*xm)/(2*t2+xm)*FACT */ + fxch /* u*(t2+2*xm)/(2*t2+xm)*FACT : xe/3 */ + fscale /* u*(t2+2*xm)/(2*t2+xm)*FACT*2^xe/3 */ + popl %edx +#ifdef PIC + movl 12(%esp), %eax + popl %ebx +#else + movl 8(%esp), %eax +#endif + testl %eax, %eax + fstp %st(1) + jns 4f + fchs +4: ret + + /* Return the argument. */ +1: fldl 4(%esp) + ret +END(__cbrt) +weak_alias (__cbrt, cbrt) diff --git a/src/system/libroot/posix/glibc/arch/x86/s_cbrtf.S b/src/system/libroot/posix/glibc/arch/x86/s_cbrtf.S new file mode 100644 index 0000000000..03d5770efa --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/x86/s_cbrtf.S @@ -0,0 +1,178 @@ +/* Compute cubic root of float value. + Copyright (C) 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Dirk Alboth and + Ulrich Drepper , 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, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +#include + +#ifdef __ELF__ + .section .rodata +#else + .text +#endif + + .align ALIGNARG(4) + ASM_TYPE_DIRECTIVE(f3,@object) +f3: .double 0.191502161678719066 + ASM_SIZE_DIRECTIVE(f3) + ASM_TYPE_DIRECTIVE(f2,@object) +f2: .double 0.697570460207922770 + ASM_SIZE_DIRECTIVE(f2) + ASM_TYPE_DIRECTIVE(f1,@object) +f1: .double 0.492659620528969547 + ASM_SIZE_DIRECTIVE(f1) + +#define CBRT2 1.2599210498948731648 +#define ONE_CBRT2 0.793700525984099737355196796584 +#define SQR_CBRT2 1.5874010519681994748 +#define ONE_SQR_CBRT2 0.629960524947436582364439673883 + + ASM_TYPE_DIRECTIVE(factor,@object) + .align ALIGNARG(4) +factor: .double ONE_SQR_CBRT2 + .double ONE_CBRT2 + .double 1.0 + .double CBRT2 + .double SQR_CBRT2 + ASM_SIZE_DIRECTIVE(factor) + + ASM_TYPE_DIRECTIVE(two25,@object) +two25: .byte 0, 0, 0, 0x4c + ASM_SIZE_DIRECTIVE(two25) + +#ifdef PIC +#define MO(op) op##@GOTOFF(%ebx) +#define MOX(op,x) op##@GOTOFF(%ebx,x,1) +#else +#define MO(op) op +#define MOX(op,x) op(x) +#endif + + .text +ENTRY(__cbrtf) + movl 4(%esp), %eax + xorl %ecx, %ecx + movl %eax, %edx + andl $0x7fffffff, %eax + jz 1f + cmpl $0x7f800000, %eax + jae 1f + +#ifdef PIC + pushl %ebx + call 3f +3: popl %ebx + addl $_GLOBAL_OFFSET_TABLE_+[.-3b], %ebx +#endif + + cmpl $0x00800000, %eax + jae 2f + +#ifdef PIC + flds 8(%esp) +#else + flds 4(%esp) +#endif + fmuls MO(two25) + movl $-25, %ecx +#ifdef PIC + fstps 8(%esp) + movl 8(%esp), %eax +#else + fstps 4(%esp) + movl 4(%esp), %eax +#endif + movl %eax, %edx + andl $0x7fffffff, %eax + +2: shrl $23, %eax + andl $0x807fffff, %edx + subl $126, %eax + orl $0x3f000000, %edx + addl %eax, %ecx +#ifdef PIC + movl %edx, 8(%esp) + + flds 8(%esp) /* xm */ +#else + movl %edx, 4(%esp) + + flds 4(%esp) /* xm */ +#endif + fabs + + /* The following code has two tracks: + a) compute the normalized cbrt value + b) compute xe/3 and xe%3 + The right track computes the value for b) and this is done + in an optimized way by avoiding division. + + But why two tracks at all? Very easy: efficiency. Some FP + instruction can overlap with a certain amount of integer (and + FP) instructions. So we get (except for the imull) all + instructions for free. */ + + fld %st(0) /* xm : xm */ + fmull MO(f3) /* f3*xm : xm */ + movl $1431655766, %eax + fsubrl MO(f2) /* f2-f3*xm : xm */ + imull %ecx + fmul %st(1) /* (f2-f3*xm)*xm : xm */ + movl %ecx, %eax + faddl MO(f1) /* u:=f1+(f2-f3*xm)*xm : xm */ + sarl $31, %eax + fld %st /* u : u : xm */ + subl %eax, %edx + fmul %st(1) /* u*u : u : xm */ + fld %st(2) /* xm : u*u : u : xm */ + fadd %st /* 2*xm : u*u : u : xm */ + fxch %st(1) /* u*u : 2*xm : u : xm */ + fmul %st(2) /* t2:=u*u*u : 2*xm : u : xm */ + movl %edx, %eax + fadd %st, %st(1) /* t2 : t2+2*xm : u : xm */ + leal (%edx,%edx,2),%edx + fadd %st(0) /* 2*t2 : t2+2*xm : u : xm */ + subl %edx, %ecx + faddp %st, %st(3) /* t2+2*xm : u : 2*t2+xm */ + shll $3, %ecx + fmulp /* u*(t2+2*xm) : 2*t2+xm */ + fdivp %st, %st(1) /* u*(t2+2*xm)/(2*t2+xm) */ + fmull MOX(16+factor,%ecx) /* u*(t2+2*xm)/(2*t2+xm)*FACT */ + pushl %eax + fildl (%esp) /* xe/3 : u*(t2+2*xm)/(2*t2+xm)*FACT */ + fxch /* u*(t2+2*xm)/(2*t2+xm)*FACT : xe/3 */ + fscale /* u*(t2+2*xm)/(2*t2+xm)*FACT*2^xe/3 */ + popl %edx +#ifdef PIC + movl 8(%esp), %eax + popl %ebx +#else + movl 4(%esp), %eax +#endif + testl %eax, %eax + fstp %st(1) + jns 4f + fchs +4: ret + + /* Return the argument. */ +1: flds 4(%esp) + ret +END(__cbrtf) +weak_alias (__cbrtf, cbrtf) diff --git a/src/system/libroot/posix/glibc/arch/x86/s_cbrtl.S b/src/system/libroot/posix/glibc/arch/x86/s_cbrtl.S new file mode 100644 index 0000000000..f9dac170e0 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/x86/s_cbrtl.S @@ -0,0 +1,229 @@ +/* Compute cubic root of long double value. + Copyright (C) 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Dirk Alboth and + Ulrich Drepper , 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, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +#include + +#ifdef __ELF__ + .section .rodata +#else + .text +#endif + + .align ALIGNARG(4) + ASM_TYPE_DIRECTIVE(f8,@object) +f8: .tfloat 0.161617097923756032 + ASM_SIZE_DIRECTIVE(f8) + .align ALIGNARG(4) + ASM_TYPE_DIRECTIVE(f7,@object) +f7: .tfloat -0.988553671195413709 + ASM_SIZE_DIRECTIVE(f7) + .align ALIGNARG(4) + ASM_TYPE_DIRECTIVE(f6,@object) +f6: .tfloat 2.65298938441952296 + ASM_SIZE_DIRECTIVE(f6) + .align ALIGNARG(4) + ASM_TYPE_DIRECTIVE(f5,@object) +f5: .tfloat -4.11151425200350531 + ASM_SIZE_DIRECTIVE(f5) + .align ALIGNARG(4) + ASM_TYPE_DIRECTIVE(f4,@object) +f4: .tfloat 4.09559907378707839 + ASM_SIZE_DIRECTIVE(f4) + .align ALIGNARG(4) + ASM_TYPE_DIRECTIVE(f3,@object) +f3: .tfloat -2.82414939754975962 + ASM_SIZE_DIRECTIVE(f3) + .align ALIGNARG(4) + ASM_TYPE_DIRECTIVE(f2,@object) +f2: .tfloat 1.67595307700780102 + ASM_SIZE_DIRECTIVE(f2) + .align ALIGNARG(4) + ASM_TYPE_DIRECTIVE(f1,@object) +f1: .tfloat 0.338058687610520237 + ASM_SIZE_DIRECTIVE(f1) + +#define CBRT2 1.2599210498948731648 +#define ONE_CBRT2 0.793700525984099737355196796584 +#define SQR_CBRT2 1.5874010519681994748 +#define ONE_SQR_CBRT2 0.629960524947436582364439673883 + + /* We make the entries in the following table all 16 bytes + wide to avoid having to implement a multiplication by 10. */ + ASM_TYPE_DIRECTIVE(factor,@object) + .align ALIGNARG(4) +factor: .tfloat ONE_SQR_CBRT2 + .byte 0, 0, 0, 0, 0, 0 + .tfloat ONE_CBRT2 + .byte 0, 0, 0, 0, 0, 0 + .tfloat 1.0 + .byte 0, 0, 0, 0, 0, 0 + .tfloat CBRT2 + .byte 0, 0, 0, 0, 0, 0 + .tfloat SQR_CBRT2 + ASM_SIZE_DIRECTIVE(factor) + + ASM_TYPE_DIRECTIVE(two64,@object) + .align ALIGNARG(4) +two64: .byte 0, 0, 0, 0, 0, 0, 0xf0, 0x43 + ASM_SIZE_DIRECTIVE(two64) + +#ifdef PIC +#define MO(op) op##@GOTOFF(%ebx) +#define MOX(op,x) op##@GOTOFF(%ebx,x,1) +#else +#define MO(op) op +#define MOX(op,x) op(x) +#endif + + .text +ENTRY(__cbrtl) + movl 4(%esp), %ecx + movl 12(%esp), %eax + orl 8(%esp), %ecx + movl %eax, %edx + andl $0x7fff, %eax + orl %eax, %ecx + jz 1f + xorl %ecx, %ecx + cmpl $0x7fff, %eax + je 1f + +#ifdef PIC + pushl %ebx + call 3f +3: popl %ebx + addl $_GLOBAL_OFFSET_TABLE_+[.-3b], %ebx +#endif + + cmpl $0, %eax + jne 2f + +#ifdef PIC + fldt 8(%esp) +#else + fldt 4(%esp) +#endif + fmull MO(two64) + movl $-64, %ecx +#ifdef PIC + fstpt 8(%esp) + movl 16(%esp), %eax +#else + fstpt 4(%esp) + movl 12(%esp), %eax +#endif + movl %eax, %edx + andl $0x7fff, %eax + +2: andl $0x8000, %edx + subl $16382, %eax + orl $0x3ffe, %edx + addl %eax, %ecx +#ifdef PIC + movl %edx, 16(%esp) + + fldt 8(%esp) /* xm */ +#else + movl %edx, 12(%esp) + + fldt 4(%esp) /* xm */ +#endif + fabs + + /* The following code has two tracks: + a) compute the normalized cbrt value + b) compute xe/3 and xe%3 + The right track computes the value for b) and this is done + in an optimized way by avoiding division. + + But why two tracks at all? Very easy: efficiency. Some FP + instruction can overlap with a certain amount of integer (and + FP) instructions. So we get (except for the imull) all + instructions for free. */ + + fldt MO(f8) /* f8 : xm */ + fmul %st(1) /* f8*xm : xm */ + + fldt MO(f7) + faddp /* f7+f8*xm : xm */ + fmul %st(1) /* (f7+f8*xm)*xm : xm */ + movl $1431655766, %eax + fldt MO(f6) + faddp /* f6+(f7+f8*xm)*xm : xm */ + imull %ecx + fmul %st(1) /* (f6+(f7+f8*xm)*xm)*xm : xm */ + movl %ecx, %eax + fldt MO(f5) + faddp /* f5+(f6+(f7+f8*xm)*xm)*xm : xm */ + sarl $31, %eax + fmul %st(1) /* (f5+(f6+(f7+f8*xm)*xm)*xm)*xm : xm */ + subl %eax, %edx + fldt MO(f4) + faddp /* f4+(f5+(f6+(f7+f8*xm)*xm)*xm)*xm : xm */ + fmul %st(1) /* (f4+(f5+(f6+(f7+f8*xm)*xm)*xm)*xm)*xm : xm */ + fldt MO(f3) + faddp /* f3+(f4+(f5+(f6+(f7+f8*xm)*xm)*xm)*xm)*xm : xm */ + fmul %st(1) /* (f3+(f4+(f5+(f6+(f7+f8*xm)*xm)*xm)*xm)*xm)*xm : xm */ + fldt MO(f2) + faddp /* f2+(f3+(f4+(f5+(f6+(f7+f8*xm)*xm)*xm)*xm)*xm)*xm : xm */ + fmul %st(1) /* (f2+(f3+(f4+(f5+(f6+(f7+f8*xm)*xm)*xm)*xm)*xm)*xm)*xm : xm */ + fldt MO(f1) + faddp /* u:=f1+(f2+(f3+(f4+(f5+(f6+(f7+f8*xm)*xm)*xm)*xm)*xm)*xm)*xm : xm */ + + fld %st /* u : u : xm */ + fmul %st(1) /* u*u : u : xm */ + fld %st(2) /* xm : u*u : u : xm */ + fadd %st /* 2*xm : u*u : u : xm */ + fxch %st(1) /* u*u : 2*xm : u : xm */ + fmul %st(2) /* t2:=u*u*u : 2*xm : u : xm */ + movl %edx, %eax + fadd %st, %st(1) /* t2 : t2+2*xm : u : xm */ + leal (%edx,%edx,2),%edx + fadd %st(0) /* 2*t2 : t2+2*xm : u : xm */ + subl %edx, %ecx + faddp %st, %st(3) /* t2+2*xm : u : 2*t2+xm */ + shll $4, %ecx + fmulp /* u*(t2+2*xm) : 2*t2+xm */ + fdivp %st, %st(1) /* u*(t2+2*xm)/(2*t2+xm) */ + fldt MOX(32+factor,%ecx) + fmulp /* u*(t2+2*xm)/(2*t2+xm)*FACT */ + pushl %eax + fildl (%esp) /* xe/3 : u*(t2+2*xm)/(2*t2+xm)*FACT */ + fxch /* u*(t2+2*xm)/(2*t2+xm)*FACT : xe/3 */ + fscale /* u*(t2+2*xm)/(2*t2+xm)*FACT*2^xe/3 */ + popl %edx +#ifdef PIC + movl 16(%esp), %eax + popl %ebx +#else + movl 12(%esp), %eax +#endif + testl $0x8000, %eax + fstp %st(1) + jz 4f + fchs +4: ret + + /* Return the argument. */ +1: fldt 4(%esp) + ret +END(__cbrtl) +weak_alias (__cbrtl, cbrtl) diff --git a/src/system/libroot/posix/glibc/arch/x86/s_cos.S b/src/system/libroot/posix/glibc/arch/x86/s_cos.S new file mode 100644 index 0000000000..ac8b1459d9 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/x86/s_cos.S @@ -0,0 +1,29 @@ +/* + * Written by J.T. Conklin . + * Public domain. + */ + +#include + +RCSID("$NetBSD: s_cos.S,v 1.5 1995/05/08 23:54:00 jtc Exp $") + +ENTRY(__cos) + fldl 4(%esp) + fcos + fnstsw %ax + testl $0x400,%eax + jnz 1f + ret + .align ALIGNARG(4) +1: fldpi + fadd %st(0) + fxch %st(1) +2: fprem1 + fnstsw %ax + testl $0x400,%eax + jnz 2b + fstp %st(1) + fcos + ret +END (__cos) +weak_alias (__cos, cos) diff --git a/src/system/libroot/posix/glibc/arch/x86/s_cosf.S b/src/system/libroot/posix/glibc/arch/x86/s_cosf.S new file mode 100644 index 0000000000..21f87aa874 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/x86/s_cosf.S @@ -0,0 +1,29 @@ +/* + * Written by J.T. Conklin . + * Public domain. + */ + +#include + +RCSID("$NetBSD: s_cosf.S,v 1.3 1995/05/08 23:55:16 jtc Exp $") + +ENTRY(__cosf) + flds 4(%esp) + fcos + fnstsw %ax + testl $0x400,%eax + jnz 1f + ret + .align ALIGNARG(4) +1: fldpi + fadd %st(0) + fxch %st(1) +2: fprem1 + fnstsw %ax + testl $0x400,%eax + jnz 2b + fstp %st(1) + fcos + ret +END (__cosf) +weak_alias (__cosf, cosf) diff --git a/src/system/libroot/posix/glibc/arch/x86/s_cosl.S b/src/system/libroot/posix/glibc/arch/x86/s_cosl.S new file mode 100644 index 0000000000..61c9010c99 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/x86/s_cosl.S @@ -0,0 +1,31 @@ +/* + * Written by J.T. Conklin . + * Public domain. + * + * Adapted for `long double' by Ulrich Drepper . + */ + +#include + +RCSID("$NetBSD: $") + +ENTRY(__cosl) + fldt 4(%esp) + fcos + fnstsw %ax + testl $0x400,%eax + jnz 1f + ret + .align ALIGNARG(4) +1: fldpi + fadd %st(0) + fxch %st(1) +2: fprem1 + fnstsw %ax + testl $0x400,%eax + jnz 2b + fstp %st(1) + fcos + ret +END (__cosl) +weak_alias (__cosl, cosl) diff --git a/src/system/libroot/posix/glibc/arch/x86/s_expm1.S b/src/system/libroot/posix/glibc/arch/x86/s_expm1.S new file mode 100644 index 0000000000..35e1ff6693 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/x86/s_expm1.S @@ -0,0 +1,88 @@ +/* ix87 specific implementation of exp(x)-1. + Copyright (C) 1996, 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper , 1996. + Based on code by John C. Bowman . + Corrections by H.J. Lu (hjl@gnu.ai.mit.edu), 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, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + + /* Using: e^x - 1 = 2^(x * log2(e)) - 1 */ + +#include + +#ifdef __ELF__ + .section .rodata +#else + .text +#endif + .align ALIGNARG(4) + ASM_TYPE_DIRECTIVE(minus1,@object) +minus1: .double -1.0 + ASM_SIZE_DIRECTIVE(minus1) + ASM_TYPE_DIRECTIVE(one,@object) +one: .double 1.0 + ASM_SIZE_DIRECTIVE(one) + ASM_TYPE_DIRECTIVE(l2e,@object) +l2e: .tfloat 1.442695040888963407359924681002 + ASM_SIZE_DIRECTIVE(l2e) + +#ifdef PIC +#define MO(op) op##@GOTOFF(%edx) +#else +#define MO(op) op +#endif + + .text +ENTRY(__expm1) + fldl 4(%esp) // x + fxam // Is NaN or +-Inf? + fstsw %ax + movb $0x45, %ch + andb %ah, %ch + cmpb $0x40, %ch + je 3f // If +-0, jump. +#ifdef PIC + call 1f +1: popl %edx + addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %edx +#endif + cmpb $0x05, %ch + je 2f // If +-Inf, jump. + + fldt MO(l2e) // log2(e) : x + fmulp // log2(e)*x + fld %st // log2(e)*x : log2(e)*x + frndint // int(log2(e)*x) : log2(e)*x + fsubr %st, %st(1) // int(log2(e)*x) : fract(log2(e)*x) + fxch // fract(log2(e)*x) : int(log2(e)*x) + f2xm1 // 2^fract(log2(e)*x)-1 : int(log2(e)*x) + fscale // 2^(log2(e)*x)-2^int(log2(e)*x) : int(log2(e)*x) + fxch // int(log2(e)*x) : 2^(log2(e)*x)-2^int(log2(e)*x) + fldl MO(one) // 1 : int(log2(e)*x) : 2^(log2(e)*x)-2^int(log2(e)*x) + fscale // 2^int(log2(e)*x) : int(log2(e)*x) : 2^(log2(e)*x)-2^int(log2(e)*x) + fsubrl MO(one) // 1-2^int(log2(e)*x) : int(log2(e)*x) : 2^(log2(e)*x)-2^int(log2(e)*x) + fstp %st(1) // 1-2^int(log2(e)*x) : 2^(log2(e)*x)-2^int(log2(e)*x) + fsubrp %st, %st(1) // 2^(log2(e)*x) + ret + +2: testl $0x200, %eax // Test sign. + jz 3f // If positive, jump. + fstp %st + fldl MO(minus1) // Set result to -1.0. +3: ret +END(__expm1) +weak_alias (__expm1, expm1) diff --git a/src/system/libroot/posix/glibc/arch/x86/s_expm1f.S b/src/system/libroot/posix/glibc/arch/x86/s_expm1f.S new file mode 100644 index 0000000000..c2c64f0748 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/x86/s_expm1f.S @@ -0,0 +1,88 @@ +/* ix87 specific implementation of exp(x)-1. + Copyright (C) 1996, 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper , 1996. + Based on code by John C. Bowman . + Corrections by H.J. Lu (hjl@gnu.ai.mit.edu), 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, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + + /* Using: e^x - 1 = 2^(x * log2(e)) - 1 */ + +#include + +#ifdef __ELF__ + .section .rodata +#else + .text +#endif + .align ALIGNARG(4) + ASM_TYPE_DIRECTIVE(minus1,@object) +minus1: .double -1.0 + ASM_SIZE_DIRECTIVE(minus1) + ASM_TYPE_DIRECTIVE(one,@object) +one: .double 1.0 + ASM_SIZE_DIRECTIVE(one) + ASM_TYPE_DIRECTIVE(l2e,@object) +l2e: .tfloat 1.442695040888963407359924681002 + ASM_SIZE_DIRECTIVE(l2e) + +#ifdef PIC +#define MO(op) op##@GOTOFF(%edx) +#else +#define MO(op) op +#endif + + .text +ENTRY(__expm1f) + flds 4(%esp) // x + fxam // Is NaN or +-Inf? + fstsw %ax + movb $0x45, %ch + andb %ah, %ch + cmpb $0x40, %ch + je 3f // If +-0, jump. +#ifdef PIC + call 1f +1: popl %edx + addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %edx +#endif + cmpb $0x05, %ch + je 2f // If +-Inf, jump. + + fldt MO(l2e) // log2(e) : x + fmulp // log2(e)*x + fld %st // log2(e)*x : log2(e)*x + frndint // int(log2(e)*x) : log2(e)*x + fsubr %st, %st(1) // int(log2(e)*x) : fract(log2(e)*x) + fxch // fract(log2(e)*x) : int(log2(e)*x) + f2xm1 // 2^fract(log2(e)*x)-1 : int(log2(e)*x) + fscale // 2^(log2(e)*x)-2^int(log2(e)*x) : int(log2(e)*x) + fxch // int(log2(e)*x) : 2^(log2(e)*x)-2^int(log2(e)*x) + fldl MO(one) // 1 : int(log2(e)*x) : 2^(log2(e)*x)-2^int(log2(e)*x) + fscale // 2^int(log2(e)*x) : int(log2(e)*x) : 2^(log2(e)*x)-2^int(log2(e)*x) + fsubrl MO(one) // 1-2^int(log2(e)*x) : int(log2(e)*x) : 2^(log2(e)*x)-2^int(log2(e)*x) + fstp %st(1) // 1-2^int(log2(e)*x) : 2^(log2(e)*x)-2^int(log2(e)*x) + fsubrp %st, %st(1) // 2^(log2(e)*x) + ret + +2: testl $0x200, %eax // Test sign. + jz 3f // If positive, jump. + fstp %st + fldl MO(minus1) // Set result to -1.0. +3: ret +END(__expm1f) +weak_alias (__expm1f, expm1f) diff --git a/src/system/libroot/posix/glibc/arch/x86/s_expm1l.S b/src/system/libroot/posix/glibc/arch/x86/s_expm1l.S new file mode 100644 index 0000000000..4d491c02f8 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/x86/s_expm1l.S @@ -0,0 +1,89 @@ +/* ix87 specific implementation of exp(x)-1. + Copyright (C) 1996, 1997, 2002 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper , 1996. + Based on code by John C. Bowman . + Corrections by H.J. Lu (hjl@gnu.ai.mit.edu), 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, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + + /* Using: e^x - 1 = 2^(x * log2(e)) - 1 */ + +#include + +#ifdef __ELF__ + .section .rodata +#else + .text +#endif + .align ALIGNARG(4) + ASM_TYPE_DIRECTIVE(minus1,@object) +minus1: .double -1.0 + ASM_SIZE_DIRECTIVE(minus1) + ASM_TYPE_DIRECTIVE(one,@object) +one: .double 1.0 + ASM_SIZE_DIRECTIVE(one) + ASM_TYPE_DIRECTIVE(l2e,@object) +l2e: .tfloat 1.442695040888963407359924681002 + ASM_SIZE_DIRECTIVE(l2e) + +#ifdef PIC +#define MO(op) op##@GOTOFF(%edx) +#else +#define MO(op) op +#endif + + .text +ENTRY(__expm1l) + fldt 4(%esp) // x + fxam // Is NaN or +-Inf? + fstsw %ax + movb $0x45, %ch + andb %ah, %ch + cmpb $0x40, %ch + je 3f // If +-0, jump. +#ifdef PIC + call 1f +1: popl %edx + addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %edx +#endif + cmpb $0x05, %ch + je 2f // If +-Inf, jump. + + fldt MO(l2e) // log2(e) : x + fmulp // log2(e)*x + fld %st // log2(e)*x : log2(e)*x + frndint // int(log2(e)*x) : log2(e)*x + fsubr %st, %st(1) // int(log2(e)*x) : fract(log2(e)*x) + fxch // fract(log2(e)*x) : int(log2(e)*x) + f2xm1 // 2^fract(log2(e)*x)-1 : int(log2(e)*x) + fscale // 2^(log2(e)*x)-2^int(log2(e)*x) : int(log2(e)*x) + fxch // int(log2(e)*x) : 2^(log2(e)*x)-2^int(log2(e)*x) + fldl MO(one) // 1 : int(log2(e)*x) : 2^(log2(e)*x)-2^int(log2(e)*x) + fscale // 2^int(log2(e)*x) : int(log2(e)*x) : 2^(log2(e)*x)-2^int(log2(e)*x) + fsubrl MO(one) // 1-2^int(log2(e)*x) : int(log2(e)*x) : 2^(log2(e)*x)-2^int(log2(e)*x) + fstp %st(1) // 1-2^int(log2(e)*x) : 2^(log2(e)*x)-2^int(log2(e)*x) + fsubrp %st, %st(1) // 2^(log2(e)*x) + ret + +2: testl $0x200, %eax // Test sign. + jz 3f // If positive, jump. + fstp %st + fldl MO(minus1) // Set result to -1.0. +3: ret +END(__expm1l) +libm_hidden_def (__expm1l) +weak_alias (__expm1l, expm1l) diff --git a/src/system/libroot/posix/glibc/arch/x86/s_frexp.S b/src/system/libroot/posix/glibc/arch/x86/s_frexp.S new file mode 100644 index 0000000000..563105a917 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/x86/s_frexp.S @@ -0,0 +1,95 @@ +/* ix87 specific frexp implementation for double. + Copyright (C) 1997, 2000 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper , 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, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +#include +#include "bp-sym.h" +#include "bp-asm.h" + +#ifdef __ELF__ + .section .rodata +#else + .text +#endif + + .align ALIGNARG(4) + ASM_TYPE_DIRECTIVE(two54,@object) +two54: .byte 0, 0, 0, 0, 0, 0, 0x50, 0x43 + ASM_SIZE_DIRECTIVE(two54) + +#ifdef PIC +#define MO(op) op##@GOTOFF(%edx) +#else +#define MO(op) op +#endif + +#define PARMS LINKAGE /* no space for saved regs */ +#define VAL0 PARMS +#define VAL1 VAL0+4 +#define EXPP VAL1+4 + + .text +ENTRY (BP_SYM (__frexp)) + ENTER + + movl VAL0(%esp), %ecx + movl VAL1(%esp), %eax + movl %eax, %edx + andl $0x7fffffff, %eax + orl %eax, %ecx + jz 1f + xorl %ecx, %ecx + cmpl $0x7ff00000, %eax + jae 1f + + cmpl $0x00100000, %eax + jae 2f + + fldl VAL0(%esp) +#ifdef PIC + call 3f +3: popl %edx + addl $_GLOBAL_OFFSET_TABLE_+[.-3b], %edx +#endif + fmull MO(two54) + movl $-54, %ecx + fstpl VAL0(%esp) + fwait + movl VAL1(%esp), %eax + movl %eax, %edx + andl $0x7fffffff, %eax + +2: shrl $20, %eax + andl $0x800fffff, %edx + subl $1022, %eax + orl $0x3fe00000, %edx + addl %eax, %ecx + movl %edx, VAL1(%esp) + + /* Store %ecx in the variable pointed to by the second argument, + get the factor from the stack and return. */ +1: movl EXPP(%esp), %eax + CHECK_BOUNDS_BOTH_WIDE (%eax, EXPP(%esp), $4) + fldl VAL0(%esp) + movl %ecx, (%eax) + + LEAVE + ret +END (BP_SYM (__frexp)) +weak_alias (BP_SYM (__frexp), BP_SYM (frexp)) diff --git a/src/system/libroot/posix/glibc/arch/x86/s_frexpf.S b/src/system/libroot/posix/glibc/arch/x86/s_frexpf.S new file mode 100644 index 0000000000..00c4ab5b8e --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/x86/s_frexpf.S @@ -0,0 +1,92 @@ +/* ix87 specific frexp implementation for float. + Copyright (C) 1997, 2000 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper , 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, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +#include +#include "bp-sym.h" +#include "bp-asm.h" + +#ifdef __ELF__ + .section .rodata +#else + .text +#endif + + .align ALIGNARG(4) + ASM_TYPE_DIRECTIVE(two25,@object) +two25: .byte 0, 0, 0, 0x4c + ASM_SIZE_DIRECTIVE(two25) + +#ifdef PIC +#define MO(op) op##@GOTOFF(%edx) +#else +#define MO(op) op +#endif + +#define PARMS LINKAGE /* no space for saved regs */ +#define VAL PARMS +#define EXPP VAL+4 + + .text +ENTRY (BP_SYM (__frexpf)) + ENTER + + movl VAL(%esp), %eax + xorl %ecx, %ecx + movl %eax, %edx + andl $0x7fffffff, %eax + jz 1f + cmpl $0x7f800000, %eax + jae 1f + + cmpl $0x00800000, %eax + jae 2f + + flds VAL(%esp) +#ifdef PIC + call 3f +3: popl %edx + addl $_GLOBAL_OFFSET_TABLE_+[.-3b], %edx +#endif + fmuls MO(two25) + movl $-25, %ecx + fstps VAL(%esp) + fwait + movl VAL(%esp), %eax + movl %eax, %edx + andl $0x7fffffff, %eax + +2: shrl $23, %eax + andl $0x807fffff, %edx + subl $126, %eax + orl $0x3f000000, %edx + addl %eax, %ecx + movl %edx, VAL(%esp) + + /* Store %ecx in the variable pointed to by the second argument, + get the factor from the stack and return. */ +1: movl EXPP(%esp), %eax + CHECK_BOUNDS_BOTH_WIDE (%eax, EXPP(%esp), $4) + flds VAL(%esp) + movl %ecx, (%eax) + + LEAVE + ret +END (BP_SYM (__frexpf)) +weak_alias (BP_SYM (__frexpf), BP_SYM (frexpf)) diff --git a/src/system/libroot/posix/glibc/arch/x86/s_frexpl.S b/src/system/libroot/posix/glibc/arch/x86/s_frexpl.S new file mode 100644 index 0000000000..1417507ded --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/x86/s_frexpl.S @@ -0,0 +1,97 @@ +/* ix87 specific frexp implementation for long double. + Copyright (C) 1997, 2000, 2001 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper , 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, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +#include +#include "bp-sym.h" +#include "bp-asm.h" + +#ifdef __ELF__ + .section .rodata +#else + .text +#endif + + .align ALIGNARG(4) + ASM_TYPE_DIRECTIVE(two64,@object) +two64: .byte 0, 0, 0, 0, 0, 0, 0xf0, 0x43 + ASM_SIZE_DIRECTIVE(two64) + +#ifdef PIC +#define MO(op) op##@GOTOFF(%edx) +#else +#define MO(op) op +#endif + +#define PARMS LINKAGE /* no space for saved regs */ +#define VAL0 PARMS +#define VAL1 VAL0+4 +#define VAL2 VAL1+4 +#define EXPP VAL2+4 + + .text +ENTRY (BP_SYM (__frexpl)) + ENTER + + movl VAL0(%esp), %ecx + movl VAL2(%esp), %eax + orl VAL1(%esp), %ecx + movl %eax, %edx + andl $0x7fff, %eax + orl %eax, %ecx + jz 1f + xorl %ecx, %ecx + cmpl $0x7fff, %eax + je 1f + + cmpl $0, %eax + jne 2f + + fldt VAL0(%esp) +#ifdef PIC + call 3f +3: popl %edx + addl $_GLOBAL_OFFSET_TABLE_+[.-3b], %edx +#endif + + fmull MO(two64) /* It's not necessary to use a 80bit factor */ + movl $-64, %ecx + fstpt VAL0(%esp) + fwait + movl VAL2(%esp), %eax + movl %eax, %edx + andl $0x7fff, %eax + +2: andl $0x8000, %edx + subl $16382, %eax + orl $0x3ffe, %edx + addl %eax, %ecx + movl %edx, VAL2(%esp) + + /* Store %ecx in the variable pointed to by the second argument, + get the factor from the stack and return. */ +1: movl EXPP(%esp), %eax + CHECK_BOUNDS_BOTH_WIDE (%eax, EXPP(%esp), $4) + fldt VAL0(%esp) + movl %ecx, (%eax) + + LEAVE + ret +END (BP_SYM (__frexpl)) +weak_alias (BP_SYM (__frexpl), BP_SYM (frexpl)) diff --git a/src/system/libroot/posix/glibc/arch/x86/s_isinfl.c b/src/system/libroot/posix/glibc/arch/x86/s_isinfl.c new file mode 100644 index 0000000000..72e4ae8138 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/x86/s_isinfl.c @@ -0,0 +1,37 @@ +/* + * Written by J.T. Conklin . + * Change for long double by Ulrich Drepper . + * Intel i387 specific version. + * 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" + +#ifdef __STDC__ + int __isinfl(long double x) +#else + int __isinfl(x) + long double x; +#endif +{ + int32_t se,hx,lx; + GET_LDOUBLE_WORDS(se,hx,lx,x); + /* This additional ^ 0x80000000 is necessary because in Intel's + internal representation of the implicit one is explicit. */ + lx |= (hx ^ 0x80000000) | ((se & 0x7fff) ^ 0x7fff); + lx |= -lx; + se &= 0x8000; + return ~(lx >> 31) & (1 - (se >> 14)); +} +hidden_def (__isinfl) +weak_alias (__isinfl, isinfl) diff --git a/src/system/libroot/posix/glibc/arch/generic/w_atan2l.c b/src/system/libroot/posix/glibc/arch/x86/s_isnanl.c similarity index 53% rename from src/system/libroot/posix/glibc/arch/generic/w_atan2l.c rename to src/system/libroot/posix/glibc/arch/x86/s_isnanl.c index 2897c8c5f9..aa459956e9 100644 --- a/src/system/libroot/posix/glibc/arch/generic/w_atan2l.c +++ b/src/system/libroot/posix/glibc/arch/x86/s_isnanl.c @@ -1,4 +1,4 @@ -/* w_atan2l.c -- long double version of w_atan2.c. +/* s_isnanl.c -- long double version for i387 of s_isnan.c. * Conversion to long double by Ulrich Drepper, * Cygnus Support, drepper@cygnus.com. */ @@ -19,29 +19,30 @@ static char rcsid[] = "$NetBSD: $"; #endif /* - * wrapper atan2l(y,x) + * isnanl(x) returns 1 is x is nan, else 0; + * no branching! */ #include "math.h" #include "math_private.h" - #ifdef __STDC__ - long double __atan2l(long double y, long double x) /* wrapper atan2l */ + int __isnanl(long double x) #else - long double __atan2l(y,x) /* wrapper atan2l */ - long double y,x; + int __isnanl(x) + long double x; #endif { -#ifdef _IEEE_LIBM - return __ieee754_atan2l(y,x); -#else - long double z; - z = __ieee754_atan2l(y,x); - if(_LIB_VERSION != _SVID_||__isnanl(x)||__isnanl(y)) return z; - if(x==0.0&&y==0.0) - return __kernel_standard(y,x,203); /* atan2(+-0,+-0) */ - return z; -#endif + int32_t se,hx,lx; + GET_LDOUBLE_WORDS(se,hx,lx,x); + se = (se & 0x7fff) << 1; + /* The additional & 0x7fffffff is required because Intel's + extended format has the normally implicit 1 explicit + present. Sigh! */ + lx |= hx & 0x7fffffff; + se |= (u_int32_t)(lx|(-lx))>>31; + se = 0xfffe - se; + return (int)((u_int32_t)(se))>>16; } -weak_alias (__atan2l, atan2l) +hidden_def (__isnanl) +weak_alias (__isnanl, isnanl) diff --git a/src/system/libroot/posix/glibc/arch/x86/s_log1p.S b/src/system/libroot/posix/glibc/arch/x86/s_log1p.S new file mode 100644 index 0000000000..d3bc3d7251 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/x86/s_log1p.S @@ -0,0 +1,71 @@ +/* + * Written by J.T. Conklin . + * Public domain. + */ + +#include + +RCSID("$NetBSD: s_log1p.S,v 1.7 1995/05/09 00:10:58 jtc Exp $") + +#ifdef __ELF__ + .section .rodata +#else + .text +#endif + .align ALIGNARG(4) + /* The fyl2xp1 can only be used for values in + -1 + sqrt(2) / 2 <= x <= 1 - sqrt(2) / 2 + 0.29 is a safe value. + */ +limit: .double 0.29 +one: .double 1.0 + +/* + * Use the fyl2xp1 function when the argument is in the range -0.29 to 0.29, + * otherwise fyl2x with the needed extra computation. + */ + .text +ENTRY(__log1p) + fldln2 + + fldl 4(%esp) + +#ifdef PIC + call 1f +1: popl %edx + addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %edx +#endif + + fxam + fnstsw + fld %st + sahf + jc 3f // in case x is NaN or ±Inf +4: fabs +#ifdef PIC + fcompl limit@GOTOFF(%edx) +#else + fcompl limit +#endif + fnstsw + sahf + jc 2f + +#ifdef PIC + faddl one@GOTOFF(%edx) +#else + faddl one +#endif + fyl2x + ret + +2: fyl2xp1 + ret + +3: jp 4b // in case x is ±Inf + fstp %st(1) + fstp %st(1) + ret + +END (__log1p) +weak_alias (__log1p, log1p) diff --git a/src/system/libroot/posix/glibc/arch/x86/s_log1pf.S b/src/system/libroot/posix/glibc/arch/x86/s_log1pf.S new file mode 100644 index 0000000000..d5283fcfee --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/x86/s_log1pf.S @@ -0,0 +1,71 @@ +/* + * Written by J.T. Conklin . + * Public domain. + */ + +#include + +RCSID("$NetBSD: s_log1pf.S,v 1.4 1995/05/09 00:13:05 jtc Exp $") + +#ifdef __ELF__ + .section .rodata +#else + .text +#endif + .align ALIGNARG(4) + /* The fyl2xp1 can only be used for values in + -1 + sqrt(2) / 2 <= x <= 1 - sqrt(2) / 2 + 0.29 is a safe value. + */ +limit: .float 0.29 +one: .float 1.0 + +/* + * Use the fyl2xp1 function when the argument is in the range -0.29 to 0.29, + * otherwise fyl2x with the needed extra computation. + */ + .text +ENTRY(__log1pf) + fldln2 + + flds 4(%esp) + +#ifdef PIC + call 1f +1: popl %edx + addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %edx +#endif + + fxam + fnstsw + fld %st + sahf + jc 3f // in case x is NaN or ±Inf +4: fabs +#ifdef PIC + fcomps limit@GOTOFF(%edx) +#else + fcomps limit +#endif + fnstsw + sahf + jc 2f + +#ifdef PIC + fadds one@GOTOFF(%edx) +#else + fadds one +#endif + fyl2x + ret + +2: fyl2xp1 + ret + +3: jp 4b // in case x is ±Inf + fstp %st(1) + fstp %st(1) + ret + +END (__log1pf) +weak_alias (__log1pf, log1pf) diff --git a/src/system/libroot/posix/glibc/arch/x86/s_log1pl.S b/src/system/libroot/posix/glibc/arch/x86/s_log1pl.S new file mode 100644 index 0000000000..26c407b606 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/x86/s_log1pl.S @@ -0,0 +1,78 @@ +/* + * Written by J.T. Conklin . + * Public domain. + * + * Adapted for `long double' by Ulrich Drepper . + */ + +#include + +RCSID("$NetBSD: s_log1p.S,v 1.7 1995/05/09 00:10:58 jtc Exp $") + +#ifdef __ELF__ + .section .rodata +#else + .text +#endif + .align ALIGNARG(4) + /* The fyl2xp1 can only be used for values in + -1 + sqrt(2) / 2 <= x <= 1 - sqrt(2) / 2 + 0.29 is a safe value. + */ +limit: .tfloat 0.29 + /* Please note: we use a double value here. Since 1.0 has + an exact representation this does not effect the accuracy + but it helps to optimize the code. */ +one: .double 1.0 + +/* + * Use the fyl2xp1 function when the argument is in the range -0.29 to 0.29, + * otherwise fyl2x with the needed extra computation. + */ + .text +ENTRY(__log1pl) + fldln2 + + fldt 4(%esp) + +#ifdef PIC + call 1f +1: popl %edx + addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %edx +#endif + + fxam + fnstsw + fld %st + sahf + jc 3f // in case x is NaN or ±Inf +4: + fabs +#ifdef PIC + fldt limit@GOTOFF(%edx) +#else + fldt limit +#endif + fcompp + fnstsw + sahf + jnc 2f + +#ifdef PIC + faddl one@GOTOFF(%edx) +#else + faddl one +#endif + fyl2x + ret + +2: fyl2xp1 + ret + +3: jp 4b // in case x is ±Inf + fstp %st(1) + fstp %st(1) + ret + +END (__log1pl) +weak_alias (__log1pl, log1pl) diff --git a/src/system/libroot/posix/glibc/arch/x86/s_sin.S b/src/system/libroot/posix/glibc/arch/x86/s_sin.S new file mode 100644 index 0000000000..eb22d7e98b --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/x86/s_sin.S @@ -0,0 +1,29 @@ +/* + * Written by J.T. Conklin . + * Public domain. + */ + +#include + +RCSID("$NetBSD: s_sin.S,v 1.5 1995/05/09 00:25:54 jtc Exp $") + +ENTRY(__sin) + fldl 4(%esp) + fsin + fnstsw %ax + testl $0x400,%eax + jnz 1f + ret + .align ALIGNARG(4) +1: fldpi + fadd %st(0) + fxch %st(1) +2: fprem1 + fnstsw %ax + testl $0x400,%eax + jnz 2b + fstp %st(1) + fsin + ret +END (__sin) +weak_alias (__sin, sin) diff --git a/src/system/libroot/posix/glibc/arch/x86/s_sincos.S b/src/system/libroot/posix/glibc/arch/x86/s_sincos.S new file mode 100644 index 0000000000..087a24cdb7 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/x86/s_sincos.S @@ -0,0 +1,65 @@ +/* Compute sine and cosine of argument. + Copyright (C) 1997, 2000 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper , 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, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +#include +#include "bp-sym.h" +#include "bp-asm.h" + +#define PARMS LINKAGE /* no space for saved regs */ +#define ANGLE PARMS +#define SINP ANGLE+8 +#define COSP SINP+PTR_SIZE + + .text +ENTRY (BP_SYM (__sincos)) + ENTER + + fldl ANGLE(%esp) + fsincos + movl SINP(%esp), %ecx + CHECK_BOUNDS_BOTH_WIDE (%ecx, SINP(%esp), $8) + movl COSP(%esp), %edx + CHECK_BOUNDS_BOTH_WIDE (%edx, COSP(%esp), $8) + fnstsw %ax + testl $0x400,%eax + jnz 1f + fstpl (%edx) + fstpl (%ecx) + + LEAVE + ret + + .align ALIGNARG(4) +1: fldpi + fadd %st(0) + fxch %st(1) +2: fprem1 + fnstsw %ax + testl $0x400,%eax + jnz 2b + fstp %st(1) + fsincos + fstpl (%edx) + fstpl (%ecx) + + LEAVE + ret +END (BP_SYM (__sincos)) +weak_alias (BP_SYM (__sincos), BP_SYM (sincos)) diff --git a/src/system/libroot/posix/glibc/arch/x86/s_sincosf.S b/src/system/libroot/posix/glibc/arch/x86/s_sincosf.S new file mode 100644 index 0000000000..b8120dc500 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/x86/s_sincosf.S @@ -0,0 +1,65 @@ +/* Compute sine and cosine of argument. + Copyright (C) 1997, 2000 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper , 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, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +#include +#include "bp-sym.h" +#include "bp-asm.h" + +#define PARMS LINKAGE /* no space for saved regs */ +#define ANGLE PARMS +#define SINP ANGLE+4 +#define COSP SINP+PTR_SIZE + + .text +ENTRY (BP_SYM (__sincosf)) + ENTER + + flds ANGLE(%esp) + fsincos + movl SINP(%esp), %ecx + CHECK_BOUNDS_BOTH_WIDE (%ecx, SINP(%esp), $4) + movl COSP(%esp), %edx + CHECK_BOUNDS_BOTH_WIDE (%edx, COSP(%esp), $4) + fnstsw %ax + testl $0x400,%eax + jnz 1f + fstps (%edx) + fstps (%ecx) + + LEAVE + ret + + .align ALIGNARG(4) +1: fldpi + fadd %st(0) + fxch %st(1) +2: fprem1 + fnstsw %ax + testl $0x400,%eax + jnz 2b + fstp %st(1) + fsincos + fstps (%edx) + fstps (%ecx) + + LEAVE + ret +END (BP_SYM (__sincosf)) +weak_alias (BP_SYM (__sincosf), BP_SYM (sincosf)) diff --git a/src/system/libroot/posix/glibc/arch/x86/s_sincosl.S b/src/system/libroot/posix/glibc/arch/x86/s_sincosl.S new file mode 100644 index 0000000000..f9b58c2f37 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/x86/s_sincosl.S @@ -0,0 +1,65 @@ +/* Compute sine and cosine of argument. + Copyright (C) 1997, 2000 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper , 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, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +#include +#include "bp-sym.h" +#include "bp-asm.h" + +#define PARMS LINKAGE /* no space for saved regs */ +#define ANGLE PARMS +#define SINP ANGLE+12 +#define COSP SINP+PTR_SIZE + + .text +ENTRY (BP_SYM (__sincosl)) + ENTER + + fldt ANGLE(%esp) + fsincos + movl SINP(%esp), %ecx + CHECK_BOUNDS_BOTH_WIDE (%ecx, SINP(%esp), $12) + movl COSP(%esp), %edx + CHECK_BOUNDS_BOTH_WIDE (%edx, COSP(%esp), $12) + fnstsw %ax + testl $0x400,%eax + jnz 1f + fstpt (%edx) + fstpt (%ecx) + + LEAVE + ret + + .align ALIGNARG(4) +1: fldpi + fadd %st(0) + fxch %st(1) +2: fprem1 + fnstsw %ax + testl $0x400,%eax + jnz 2b + fstp %st(1) + fsincos + fstpt (%edx) + fstpt (%ecx) + + LEAVE + ret +END (BP_SYM (__sincosl)) +weak_alias (BP_SYM (__sincosl), BP_SYM (sincosl)) diff --git a/src/system/libroot/posix/glibc/arch/x86/s_sinf.S b/src/system/libroot/posix/glibc/arch/x86/s_sinf.S new file mode 100644 index 0000000000..5ca45f52e2 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/x86/s_sinf.S @@ -0,0 +1,29 @@ +/* + * Written by J.T. Conklin . + * Public domain. + */ + +#include + +RCSID("$NetBSD: s_sinf.S,v 1.3 1995/05/09 00:27:53 jtc Exp $") + +ENTRY(__sinf) + flds 4(%esp) + fsin + fnstsw %ax + testl $0x400,%eax + jnz 1f + ret + .align ALIGNARG(4) +1: fldpi + fadd %st(0) + fxch %st(1) +2: fprem1 + fnstsw %ax + testl $0x400,%eax + jnz 2b + fstp %st(1) + fsin + ret +END (__sinf) +weak_alias (__sinf, sinf) diff --git a/src/system/libroot/posix/glibc/arch/x86/s_sinl.S b/src/system/libroot/posix/glibc/arch/x86/s_sinl.S new file mode 100644 index 0000000000..3e215de5e1 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/x86/s_sinl.S @@ -0,0 +1,31 @@ +/* + * Written by J.T. Conklin . + * Public domain. + * + * Adapted for `long double' by Ulrich Drepper . + */ + +#include + +RCSID("$NetBSD: $") + +ENTRY(__sinl) + fldt 4(%esp) + fsin + fnstsw %ax + testl $0x400,%eax + jnz 1f + ret + .align ALIGNARG(4) +1: fldpi + fadd %st(0) + fxch %st(1) +2: fprem1 + fnstsw %ax + testl $0x400,%eax + jnz 2b + fstp %st(1) + fsin + ret +END (__sinl) +weak_alias (__sinl, sinl) diff --git a/src/system/libroot/posix/glibc/arch/x86/s_tan.S b/src/system/libroot/posix/glibc/arch/x86/s_tan.S new file mode 100644 index 0000000000..7b3547af4c --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/x86/s_tan.S @@ -0,0 +1,30 @@ +/* + * Written by J.T. Conklin . + * Public domain. + */ + +#include + +RCSID("$NetBSD: s_tan.S,v 1.5 1995/05/09 00:30:00 jtc Exp $") + +ENTRY(__tan) + fldl 4(%esp) + fptan + fnstsw %ax + testl $0x400,%eax + jnz 1f + fstp %st(0) + ret +1: fldpi + fadd %st(0) + fxch %st(1) +2: fprem1 + fstsw %ax + testl $0x400,%eax + jnz 2b + fstp %st(1) + fptan + fstp %st(0) + ret +END (__tan) +weak_alias (__tan, tan) diff --git a/src/system/libroot/posix/glibc/arch/x86/s_tanf.S b/src/system/libroot/posix/glibc/arch/x86/s_tanf.S new file mode 100644 index 0000000000..355dff9c8d --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/x86/s_tanf.S @@ -0,0 +1,30 @@ +/* + * Written by J.T. Conklin . + * Public domain. + */ + +#include + +RCSID("$NetBSD: s_tanf.S,v 1.3 1995/05/09 00:31:09 jtc Exp $") + +ENTRY(__tanf) + flds 4(%esp) + fptan + fnstsw %ax + testl $0x400,%eax + jnz 1f + fstp %st(0) + ret +1: fldpi + fadd %st(0) + fxch %st(1) +2: fprem1 + fstsw %ax + testl $0x400,%eax + jnz 2b + fstp %st(1) + fptan + fstp %st(0) + ret +END (__tanf) +weak_alias (__tanf, tanf) diff --git a/src/system/libroot/posix/glibc/arch/x86/s_tanl.S b/src/system/libroot/posix/glibc/arch/x86/s_tanl.S new file mode 100644 index 0000000000..f2bdd6a605 --- /dev/null +++ b/src/system/libroot/posix/glibc/arch/x86/s_tanl.S @@ -0,0 +1,32 @@ +/* + * Written by J.T. Conklin . + * Public domain. + * + * Adapted for `long double' by Ulrich Drepper . + */ + +#include + +RCSID("$NetBSD: $") + +ENTRY(__tanl) + fldt 4(%esp) + fptan + fnstsw %ax + testl $0x400,%eax + jnz 1f + fstp %st(0) + ret +1: fldpi + fadd %st(0) + fxch %st(1) +2: fprem1 + fstsw %ax + testl $0x400,%eax + jnz 2b + fstp %st(1) + fptan + fstp %st(0) + ret +END (__tanl) +weak_alias (__tanl, tanl) diff --git a/src/system/libroot/posix/glibc/include/arch/ppc/config.h b/src/system/libroot/posix/glibc/include/arch/ppc/config.h index ae97717cff..3582e06a88 100644 --- a/src/system/libroot/posix/glibc/include/arch/ppc/config.h +++ b/src/system/libroot/posix/glibc/include/arch/ppc/config.h @@ -194,6 +194,14 @@ /* Mach/i386 specific: define if the `i386_set_gdt' RPC is available. */ #undef HAVE_I386_SET_GDT +/* bonefish: Currently our PPC gcc doesn't support 128 bit long double. + It's 64 bit instead. I tried to change that, but apparently there's no + support for TI mode emulation for PPC. So we define NO_LONG_DOUBLE for + the time being, which creates aliases of the double math functions to + the respective long double functions. */ +#define NO_LONG_DOUBLE 1 +#define __NO_LONG_DOUBLE_MATH 1 + /* */ diff --git a/src/system/libroot/posix/glibc/include/arch/ppc/math_ldbl.h b/src/system/libroot/posix/glibc/include/arch/ppc/math_ldbl.h new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/system/libroot/posix/glibc/include/arch/x86/math_ldbl.h b/src/system/libroot/posix/glibc/include/arch/x86/math_ldbl.h new file mode 100644 index 0000000000..cca30657ce --- /dev/null +++ b/src/system/libroot/posix/glibc/include/arch/x86/math_ldbl.h @@ -0,0 +1,98 @@ +#ifndef _MATH_PRIVATE_H_ +#error "Never use directly; include instead." +#endif + +/* 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; + u_int32_t msw; + u_int32_t lsw; + } parts; +} ieee_long_double_shape_type; + +#endif + +#if __FLOAT_WORD_ORDER == LITTLE_ENDIAN + +typedef union +{ + long double value; + struct + { + u_int32_t lsw; + u_int32_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) diff --git a/src/system/libroot/posix/glibc/include/math_ldbl.h b/src/system/libroot/posix/glibc/include/math_ldbl.h deleted file mode 100644 index b3faa04846..0000000000 --- a/src/system/libroot/posix/glibc/include/math_ldbl.h +++ /dev/null @@ -1,90 +0,0 @@ -#ifndef _MATH_PRIVATE_H_ -#error "Never use directly; include instead." -#endif - -/* 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 - { - u_int64_t msw; - u_int64_t lsw; - } parts64; - struct - { - u_int32_t w0, w1, w2, w3; - } parts32; -} ieee854_long_double_shape_type; - -#endif - -#if __FLOAT_WORD_ORDER == LITTLE_ENDIAN - -typedef union -{ - long double value; - struct - { - u_int64_t lsw; - u_int64_t msw; - } parts64; - struct - { - u_int32_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) diff --git a/src/system/libroot/posix/math/Jamfile b/src/system/libroot/posix/math/Jamfile deleted file mode 100644 index af51d59ad0..0000000000 --- a/src/system/libroot/posix/math/Jamfile +++ /dev/null @@ -1,42 +0,0 @@ -SubDir HAIKU_TOP src system libroot posix math ; - -UseHeaders $(TARGET_PRIVATE_KERNEL_HEADERS) : true ; -SubDirCcFlags -Dnational ; - -# TODO: We should probably drop this completely and use the glibc math support, -# instead of the current mix. - -MergeObject posix_math.o : - acosh.c - asincos.c - asinh.c - atan.c - atanh.c - cabs.c - cbrt.c - cosh.c - erf.c - exp.c - exp__E.c - expm1.c - floatmath.c - gamma.c - ieee.c - j0.c - j1.c - jn.c - lgamma.c - log.c - log10.c - log1p.c - log__L.c - math_globals.c - pow.c - round.c - sincos.c - sinh.c - tan.c - tanh.c -; - -SubInclude HAIKU_TOP src system libroot posix math arch $(TARGET_ARCH) ; diff --git a/src/system/libroot/posix/math/acosh.c b/src/system/libroot/posix/math/acosh.c deleted file mode 100644 index 8747f264f7..0000000000 --- a/src/system/libroot/posix/math/acosh.c +++ /dev/null @@ -1,98 +0,0 @@ -/* - * Copyright (c) 1985, 1993 - * The Regents of the University of California. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -/* ACOSH(X) - * RETURN THE INVERSE HYPERBOLIC COSINE OF X - * DOUBLE PRECISION (VAX D FORMAT 56 BITS, IEEE DOUBLE 53 BITS) - * CODED IN C BY K.C. NG, 2/16/85; - * REVISED BY K.C. NG on 3/6/85, 3/24/85, 4/16/85, 8/17/85. - * - * Required system supported functions : - * sqrt(x) - * - * Required kernel function: - * log1p(x) ...return log(1+x) - * - * Method : - * Based on - * acosh(x) = log [ x + sqrt(x*x-1) ] - * we have - * acosh(x) := log1p(x)+ln2, if (x > 1.0E20); else - * acosh(x) := log1p( sqrt(x-1) * (sqrt(x-1) + sqrt(x+1)) ) . - * These formulae avoid the over/underflow complication. - * - * Special cases: - * acosh(x) is NaN with signal if x<1. - * acosh(NaN) is NaN without signal. - * - * Accuracy: - * acosh(x) returns the exact inverse hyperbolic cosine of x nearly - * rounded. In a test run with 512,000 random arguments on a VAX, the - * maximum observed error was 3.30 ulps (units of the last place) at - * x=1.0070493753568216 . - * - * 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 - -vc(ln2hi, 6.9314718055829871446E-1 ,7217,4031,0000,f7d0, 0, .B17217F7D00000) -vc(ln2lo, 1.6465949582897081279E-12 ,bcd5,2ce7,d9cc,e4f1, -39, .E7BCD5E4F1D9CC) - -ic(ln2hi, 6.9314718036912381649E-1, -1, 1.62E42FEE00000) -ic(ln2lo, 1.9082149292705877000E-10,-33, 1.A39EF35793C76) - -#ifdef vccast -#define ln2hi vccast(ln2hi) -#define ln2lo vccast(ln2lo) -#endif - -double acosh(x) -double x; -{ - double t,big=1.E20; /* big+1==big */ - -#if !defined(vax)&&!defined(tahoe) - if(x!=x) return(x); /* x is NaN */ -#endif /* !defined(vax)&&!defined(tahoe) */ - - /* return log1p(x) + log(2) if x is large */ - if(x>big) {t=log1p(x)+ln2lo; return(t+ln2hi);} - - t=sqrt(x-1.0); - return(log1p(t*(t+sqrt(x+1.0)))); -} diff --git a/src/system/libroot/posix/math/arch/ppc/Jamfile b/src/system/libroot/posix/math/arch/ppc/Jamfile deleted file mode 100644 index 0a5c482185..0000000000 --- a/src/system/libroot/posix/math/arch/ppc/Jamfile +++ /dev/null @@ -1,8 +0,0 @@ -SubDir HAIKU_TOP src system libroot posix math arch ppc ; - -MergeObject posix_math_arch_$(TARGET_ARCH).o : - fabs.c - frexp.c - isinf.c - ldexp.c -; diff --git a/src/system/libroot/posix/math/arch/ppc/fabs.c b/src/system/libroot/posix/math/arch/ppc/fabs.c deleted file mode 100644 index 2257840453..0000000000 --- a/src/system/libroot/posix/math/arch/ppc/fabs.c +++ /dev/null @@ -1,18 +0,0 @@ -/* -** Copyright 2003, Axel Dörfler, axeld@pinc-software.de. All rights reserved. -** Distributed under the terms of the OpenBeOS License. -*/ - - -#include - - -double -fabs(double value) -{ - // ToDo: that's a slow, generic implementation - if (value > 0) - return value; - - return -value; -} diff --git a/src/system/libroot/posix/math/arch/ppc/frexp.c b/src/system/libroot/posix/math/arch/ppc/frexp.c deleted file mode 100644 index e5417f1057..0000000000 --- a/src/system/libroot/posix/math/arch/ppc/frexp.c +++ /dev/null @@ -1,60 +0,0 @@ -/* Copyright (c) 1991, 1993 - * The Regents of the University of California. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - - -#include - -double -frexp(value, eptr) - double value; - int *eptr; -{ - union { - double v; - struct { - unsigned u_mant2 : 32; - unsigned u_mant1 : 20; - unsigned u_exp : 11; - unsigned u_sign : 1; - } s; - } u; - - if (value) { - u.v = value; - *eptr = u.s.u_exp - 1022; - u.s.u_exp = 1022; - return(u.v); - } else { - *eptr = 0; - return((double)0); - } -} diff --git a/src/system/libroot/posix/math/arch/ppc/isinf.c b/src/system/libroot/posix/math/arch/ppc/isinf.c deleted file mode 100644 index e11232cf3b..0000000000 --- a/src/system/libroot/posix/math/arch/ppc/isinf.c +++ /dev/null @@ -1,105 +0,0 @@ -/*- - * Copyright (c) 1991, 1993 - * The Regents of the University of California. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * $FreeBSD: src/lib/libc/i386/gen/isinf.c,v 1.6 1999/08/27 23:59:21 peter Exp $ - */ - - -#include - - -// double - - -int -__isnan(double d) -{ - register struct IEEEdp { - unsigned manl : 32; - unsigned manh : 20; - unsigned exp : 11; - unsigned sign : 1; - } *p = (struct IEEEdp *)&d; - - return p->exp == 2047 && (p->manh || p->manl); -} - - -int -__isinf(double d) -{ - register struct IEEEdp { - unsigned manl : 32; - unsigned manh : 20; - unsigned exp : 11; - unsigned sign : 1; - } *p = (struct IEEEdp *)&d; - - return p->exp == 2047 && !p->manh && !p->manl; -} - - -// #pragma mark - -// float - - -int -__isnanf(float f) -{ - // ToDo: fix implementation! - return __isnan((double)f); -} - - -int -__isinff(float f) -{ - return __isinf((double)f); -} - - -// #pragma mark - -// long double - - -int -__isnanl(long double d) -{ - return __isnan((double)d); -} - - -int -__isinfl(long double d) -{ - return __isinf((double)d); -} diff --git a/src/system/libroot/posix/math/arch/ppc/ldexp.c b/src/system/libroot/posix/math/arch/ppc/ldexp.c deleted file mode 100644 index b454cd80b0..0000000000 --- a/src/system/libroot/posix/math/arch/ppc/ldexp.c +++ /dev/null @@ -1,19 +0,0 @@ -/* -** Copyright 2003, Axel Dörfler, axeld@pinc-software.de. All rights reserved. -** Distributed under the terms of the OpenBeOS License. -*/ - - -#include - - -double -ldexp(double value, int exp) -{ - // ToDo: that's a slow, generic implementation - double power = 1.; - while (exp-- > 0) - power *= 2.; - - return value * power; -} diff --git a/src/system/libroot/posix/math/arch/sh4/Jamfile b/src/system/libroot/posix/math/arch/sh4/Jamfile deleted file mode 100644 index 10c2da89e5..0000000000 --- a/src/system/libroot/posix/math/arch/sh4/Jamfile +++ /dev/null @@ -1,3 +0,0 @@ -SubDir HAIKU_TOP src system libroot posix math arch sh4 ; - -KernelStaticLibrary libmsh4 : fabs.S frexp.c isinf.c ldexp.c ; diff --git a/src/system/libroot/posix/math/arch/sh4/fabs.S b/src/system/libroot/posix/math/arch/sh4/fabs.S deleted file mode 100644 index 7cac138f31..0000000000 --- a/src/system/libroot/posix/math/arch/sh4/fabs.S +++ /dev/null @@ -1,10 +0,0 @@ -/* -** Copyright 2002, Travis Geiselbrecht. All rights reserved. -** Distributed under the terms of the NewOS License. -*/ -#define FUNCTION(name) .align 2 ; .globl _##name ; .type _##name,@function ; _##name - -FUNCTION(fabs): - fabs dr4 - rts - fmov dr4,dr0 diff --git a/src/system/libroot/posix/math/arch/sh4/frexp.c b/src/system/libroot/posix/math/arch/sh4/frexp.c deleted file mode 100644 index a75ed58b09..0000000000 --- a/src/system/libroot/posix/math/arch/sh4/frexp.c +++ /dev/null @@ -1,66 +0,0 @@ -/*- - * Copyright (c) 1991, 1993 - * The Regents of the University of California. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * $FreeBSD: src/lib/libc/i386/gen/frexp.c,v 1.5 1999/08/27 23:59:21 peter Exp $ - */ - -#if defined(LIBC_RCS) && !defined(lint) -static const char rcsid[] = "$FreeBSD: src/lib/libc/i386/gen/frexp.c,v 1.5 1999/08/27 23:59:21 peter Exp $"; -#endif /* LIBC_RCS and not lint */ - -#include - -double -frexp(value, eptr) - double value; - int *eptr; -{ - union { - double v; - struct { - unsigned u_mant2 : 32; - unsigned u_mant1 : 20; - unsigned u_exp : 11; - unsigned u_sign : 1; - } s; - } u; - - if (value) { - u.v = value; - *eptr = u.s.u_exp - 1022; - u.s.u_exp = 1022; - return(u.v); - } else { - *eptr = 0; - return((double)0); - } -} diff --git a/src/system/libroot/posix/math/arch/sh4/isinf.c b/src/system/libroot/posix/math/arch/sh4/isinf.c deleted file mode 100644 index 9419bff773..0000000000 --- a/src/system/libroot/posix/math/arch/sh4/isinf.c +++ /dev/null @@ -1,69 +0,0 @@ -/*- - * Copyright (c) 1991, 1993 - * The Regents of the University of California. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * $FreeBSD: src/lib/libc/i386/gen/isinf.c,v 1.6 1999/08/27 23:59:21 peter Exp $ - */ - -#if defined(LIBC_RCS) && !defined(lint) -static const char rcsid[] = "$FreeBSD: src/lib/libc/i386/gen/isinf.c,v 1.6 1999/08/27 23:59:21 peter Exp $"; -#endif /* LIBC_RCS and not lint */ - -#include -#include - -int -isnan(d) - double d; -{ - register struct IEEEdp { - unsigned manl : 32; - unsigned manh : 20; - unsigned exp : 11; - unsigned sign : 1; - } *p = (struct IEEEdp *)&d; - - return(p->exp == 2047 && (p->manh || p->manl)); -} - -int -isinf(d) - double d; -{ - register struct IEEEdp { - u_int manl : 32; - u_int manh : 20; - u_int exp : 11; - u_int sign : 1; - } *p = (struct IEEEdp *)&d; - - return(p->exp == 2047 && !p->manh && !p->manl); -} diff --git a/src/system/libroot/posix/math/arch/sh4/ldexp.c b/src/system/libroot/posix/math/arch/sh4/ldexp.c deleted file mode 100644 index b5ee3499ee..0000000000 --- a/src/system/libroot/posix/math/arch/sh4/ldexp.c +++ /dev/null @@ -1,12 +0,0 @@ -#include - -/* - * ldexp(value, exp): return value * (2 ** exp). - */ - -double -ldexp (double value, int exp) -{ - /* XXX Bad */ - return value; -} diff --git a/src/system/libroot/posix/math/arch/x86/Jamfile b/src/system/libroot/posix/math/arch/x86/Jamfile deleted file mode 100644 index 945a45dd1d..0000000000 --- a/src/system/libroot/posix/math/arch/x86/Jamfile +++ /dev/null @@ -1,11 +0,0 @@ -SubDir HAIKU_TOP src system libroot posix math arch x86 ; - -MergeObject posix_math_arch_$(TARGET_ARCH).o : - cos.S - frexp.c - isinf.c - ldexp.c - sin.S - sqrt.S - sqrtf.S -; diff --git a/src/system/libroot/posix/math/arch/x86/cos.S b/src/system/libroot/posix/math/arch/x86/cos.S deleted file mode 100644 index 6681d35d83..0000000000 --- a/src/system/libroot/posix/math/arch/x86/cos.S +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Written by J.T. Conklin . - * Public domain. - */ - -#define FUNCTION(x) .global x; .type x,@function; x -#define FUNCTION_END(x) -#define WEAK_ALIAS(original, alias) .weak original; original = alias - -FUNCTION(__cos): - fldl 4(%esp) - fcos - fnstsw %ax - testl $0x400,%eax - jnz 1f - ret - .align 4 -1: fldpi - fadd %st(0) - fxch %st(1) -2: fprem1 - fnstsw %ax - testl $0x400,%eax - jnz 2b - fstp %st(1) - fcos - ret -FUNCTION_END(__cos) - -WEAK_ALIAS(__cos, cos) diff --git a/src/system/libroot/posix/math/arch/x86/frexp.c b/src/system/libroot/posix/math/arch/x86/frexp.c deleted file mode 100644 index a75ed58b09..0000000000 --- a/src/system/libroot/posix/math/arch/x86/frexp.c +++ /dev/null @@ -1,66 +0,0 @@ -/*- - * Copyright (c) 1991, 1993 - * The Regents of the University of California. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * $FreeBSD: src/lib/libc/i386/gen/frexp.c,v 1.5 1999/08/27 23:59:21 peter Exp $ - */ - -#if defined(LIBC_RCS) && !defined(lint) -static const char rcsid[] = "$FreeBSD: src/lib/libc/i386/gen/frexp.c,v 1.5 1999/08/27 23:59:21 peter Exp $"; -#endif /* LIBC_RCS and not lint */ - -#include - -double -frexp(value, eptr) - double value; - int *eptr; -{ - union { - double v; - struct { - unsigned u_mant2 : 32; - unsigned u_mant1 : 20; - unsigned u_exp : 11; - unsigned u_sign : 1; - } s; - } u; - - if (value) { - u.v = value; - *eptr = u.s.u_exp - 1022; - u.s.u_exp = 1022; - return(u.v); - } else { - *eptr = 0; - return((double)0); - } -} diff --git a/src/system/libroot/posix/math/arch/x86/isinf.c b/src/system/libroot/posix/math/arch/x86/isinf.c deleted file mode 100644 index e11232cf3b..0000000000 --- a/src/system/libroot/posix/math/arch/x86/isinf.c +++ /dev/null @@ -1,105 +0,0 @@ -/*- - * Copyright (c) 1991, 1993 - * The Regents of the University of California. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * $FreeBSD: src/lib/libc/i386/gen/isinf.c,v 1.6 1999/08/27 23:59:21 peter Exp $ - */ - - -#include - - -// double - - -int -__isnan(double d) -{ - register struct IEEEdp { - unsigned manl : 32; - unsigned manh : 20; - unsigned exp : 11; - unsigned sign : 1; - } *p = (struct IEEEdp *)&d; - - return p->exp == 2047 && (p->manh || p->manl); -} - - -int -__isinf(double d) -{ - register struct IEEEdp { - unsigned manl : 32; - unsigned manh : 20; - unsigned exp : 11; - unsigned sign : 1; - } *p = (struct IEEEdp *)&d; - - return p->exp == 2047 && !p->manh && !p->manl; -} - - -// #pragma mark - -// float - - -int -__isnanf(float f) -{ - // ToDo: fix implementation! - return __isnan((double)f); -} - - -int -__isinff(float f) -{ - return __isinf((double)f); -} - - -// #pragma mark - -// long double - - -int -__isnanl(long double d) -{ - return __isnan((double)d); -} - - -int -__isinfl(long double d) -{ - return __isinf((double)d); -} diff --git a/src/system/libroot/posix/math/arch/x86/ldexp.c b/src/system/libroot/posix/math/arch/x86/ldexp.c deleted file mode 100644 index 68544e58fa..0000000000 --- a/src/system/libroot/posix/math/arch/x86/ldexp.c +++ /dev/null @@ -1,76 +0,0 @@ -/*- - * Copyright (c) 1990, 1993 - * The Regents of the University of California. All rights reserved. - * - * This code is derived from software contributed to Berkeley by - * Sean Eric Fagan. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * $FreeBSD: src/lib/libc/i386/gen/ldexp.c,v 1.6 1999/08/27 23:59:21 peter Exp $ - */ - -#include - -#if defined(LIBC_RCS) && !defined(lint) -static const char rcsid[] = "$FreeBSD: src/lib/libc/i386/gen/ldexp.c,v 1.6 1999/08/27 23:59:21 peter Exp $"; -#endif /* LIBC_RCS and not lint */ - -/* - * ldexp(value, exp): return value * (2 ** exp). - * - * Written by Sean Eric Fagan (sef@kithrup.COM) - * Sun Mar 11 20:27:09 PST 1990 - */ - -/* - * We do the conversion in C to let gcc optimize it away, if possible. - * The "fxch ; fstp" stuff is because value is still on the stack - * (stupid 8087!). - */ -double -ldexp (double value, int exp) -{ - double temp, texp, temp2; - texp = exp; -#ifdef __GNUC__ -#if __GNUC__ >= 2 - asm ("fscale " - : "=u" (temp2), "=t" (temp) - : "0" (texp), "1" (value)); -#else - asm ("fscale ; fxch %%st(1) ; fstp%L1 %1 " - : "=f" (temp), "=0" (temp2) - : "0" (texp), "f" (value)); -#endif -#else -error unknown asm -#endif - return (temp); -} diff --git a/src/system/libroot/posix/math/arch/x86/sin.S b/src/system/libroot/posix/math/arch/x86/sin.S deleted file mode 100644 index f9340245a6..0000000000 --- a/src/system/libroot/posix/math/arch/x86/sin.S +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Written by J.T. Conklin . - * Public domain. - */ - -#define FUNCTION(x) .global x; .type x,@function; x -#define FUNCTION_END(x) -#define WEAK_ALIAS(original, alias) .weak original; original = alias - -FUNCTION(__sin): - fldl 4(%esp) - fsin - fnstsw %ax - testl $0x400,%eax - jnz 1f - ret - .align 4 -1: fldpi - fadd %st(0) - fxch %st(1) -2: fprem1 - fnstsw %ax - testl $0x400,%eax - jnz 2b - fstp %st(1) - fsin - ret -FUNCTION_END(__sin) - -WEAK_ALIAS(__sin, sin) diff --git a/src/system/libroot/posix/math/arch/x86/sqrt.S b/src/system/libroot/posix/math/arch/x86/sqrt.S deleted file mode 100644 index c4a043be47..0000000000 --- a/src/system/libroot/posix/math/arch/x86/sqrt.S +++ /dev/null @@ -1,16 +0,0 @@ -/* - * Written by J.T. Conklin . - * Public domain. - */ - -#define FUNCTION(x) .global x; .type x,@function; x -#define FUNCTION_END(x) -#define WEAK_ALIAS(original, alias) .weak original; original = alias - -FUNCTION(__sqrt): - fldl 4(%esp) - fsqrt - ret -FUNCTION_END(__sqrt) - -WEAK_ALIAS(__sqrt, sqrt) diff --git a/src/system/libroot/posix/math/arch/x86/sqrtf.S b/src/system/libroot/posix/math/arch/x86/sqrtf.S deleted file mode 100644 index 2af5d4edd8..0000000000 --- a/src/system/libroot/posix/math/arch/x86/sqrtf.S +++ /dev/null @@ -1,16 +0,0 @@ -/* - * Written by J.T. Conklin . - * Public domain. - */ - -#define FUNCTION(x) .global x; .type x,@function; x -#define FUNCTION_END(x) -#define WEAK_ALIAS(original, alias) .weak original; original = alias - -FUNCTION(__sqrtf): - flds 4(%esp) - fsqrt - ret -FUNCTION_END(__sqrtf) - -WEAK_ALIAS(__sqrtf, sqrtf) diff --git a/src/system/libroot/posix/math/asincos.c b/src/system/libroot/posix/math/asincos.c deleted file mode 100644 index 82664a7525..0000000000 --- a/src/system/libroot/posix/math/asincos.c +++ /dev/null @@ -1,167 +0,0 @@ -/* - * Copyright (c) 1985, 1993 - * The Regents of the University of California. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#include - -/* ASIN(X) - * RETURNS ARC SINE OF X - * DOUBLE PRECISION (IEEE DOUBLE 53 bits, VAX D FORMAT 56 bits) - * CODED IN C BY K.C. NG, 4/16/85, REVISED ON 6/10/85. - * - * Required system supported functions: - * copysign(x,y) - * sqrt(x) - * - * Required kernel function: - * atan2(y,x) - * - * Method : - * asin(x) = atan2(x,sqrt(1-x*x)); for better accuracy, 1-x*x is - * computed as follows - * 1-x*x if x < 0.5, - * 2*(1-|x|)-(1-|x|)*(1-|x|) if x >= 0.5. - * - * Special cases: - * if x is NaN, return x itself; - * if |x|>1, return NaN. - * - * Accuracy: - * 1) If atan2() uses machine PI, then - * - * asin(x) returns (PI/pi) * (the exact arc sine of x) nearly rounded; - * and PI is the exact pi rounded to machine precision (see atan2 for - * details): - * - * in decimal: - * pi = 3.141592653589793 23846264338327 ..... - * 53 bits PI = 3.141592653589793 115997963 ..... , - * 56 bits PI = 3.141592653589793 227020265 ..... , - * - * in hexadecimal: - * pi = 3.243F6A8885A308D313198A2E.... - * 53 bits PI = 3.243F6A8885A30 = 2 * 1.921FB54442D18 error=.276ulps - * 56 bits PI = 3.243F6A8885A308 = 4 * .C90FDAA22168C2 error=.206ulps - * - * In a test run with more than 200,000 random arguments on a VAX, the - * maximum observed error in ulps (units in the last place) was - * 2.06 ulps. (comparing against (PI/pi)*(exact asin(x))); - * - * 2) If atan2() uses true pi, then - * - * asin(x) returns the exact asin(x) with error below about 2 ulps. - * - * In a test run with more than 1,024,000 random arguments on a VAX, the - * maximum observed error in ulps (units in the last place) was - * 1.99 ulps. - */ - -double asin(x) -double x; -{ - double s,t,copysign(),atan2(),sqrt(),one=1.0; -#if !defined(vax)&&!defined(tahoe) - if(x!=x) return(x); /* x is NaN */ -#endif /* !defined(vax)&&!defined(tahoe) */ - s=copysign(x,one); - if(s <= 0.5) - return(atan2(x,sqrt(one-x*x))); - else - { t=one-s; s=t+t; return(atan2(x,sqrt(s-t*t))); } - -} - -/* ACOS(X) - * RETURNS ARC COS OF X - * DOUBLE PRECISION (IEEE DOUBLE 53 bits, VAX D FORMAT 56 bits) - * CODED IN C BY K.C. NG, 4/16/85, REVISED ON 6/10/85. - * - * Required system supported functions: - * copysign(x,y) - * sqrt(x) - * - * Required kernel function: - * atan2(y,x) - * - * Method : - * ________ - * / 1 - x - * acos(x) = 2*atan2( / -------- , 1 ) . - * \/ 1 + x - * - * Special cases: - * if x is NaN, return x itself; - * if |x|>1, return NaN. - * - * Accuracy: - * 1) If atan2() uses machine PI, then - * - * acos(x) returns (PI/pi) * (the exact arc cosine of x) nearly rounded; - * and PI is the exact pi rounded to machine precision (see atan2 for - * details): - * - * in decimal: - * pi = 3.141592653589793 23846264338327 ..... - * 53 bits PI = 3.141592653589793 115997963 ..... , - * 56 bits PI = 3.141592653589793 227020265 ..... , - * - * in hexadecimal: - * pi = 3.243F6A8885A308D313198A2E.... - * 53 bits PI = 3.243F6A8885A30 = 2 * 1.921FB54442D18 error=.276ulps - * 56 bits PI = 3.243F6A8885A308 = 4 * .C90FDAA22168C2 error=.206ulps - * - * In a test run with more than 200,000 random arguments on a VAX, the - * maximum observed error in ulps (units in the last place) was - * 2.07 ulps. (comparing against (PI/pi)*(exact acos(x))); - * - * 2) If atan2() uses true pi, then - * - * acos(x) returns the exact acos(x) with error below about 2 ulps. - * - * In a test run with more than 1,024,000 random arguments on a VAX, the - * maximum observed error in ulps (units in the last place) was - * 2.15 ulps. - */ - -double acos(x) -double x; -{ - double t,copysign(),atan2(),sqrt(),one=1.0; -#if !defined(vax)&&!defined(tahoe) - if(x!=x) return(x); -#endif /* !defined(vax)&&!defined(tahoe) */ - if( x != -1.0) - t=atan2(sqrt((one-x)/(one+x)),one); - else - t=atan2(one,0.0); /* t = PI/2 */ - return(t+t); -} diff --git a/src/system/libroot/posix/math/asinh.c b/src/system/libroot/posix/math/asinh.c deleted file mode 100644 index 4199f8d478..0000000000 --- a/src/system/libroot/posix/math/asinh.c +++ /dev/null @@ -1,100 +0,0 @@ -/* - * Copyright (c) 1985, 1993 - * The Regents of the University of California. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -/* ASINH(X) - * RETURN THE INVERSE HYPERBOLIC SINE OF X - * DOUBLE PRECISION (VAX D format 56 bits, IEEE DOUBLE 53 BITS) - * CODED IN C BY K.C. NG, 2/16/85; - * REVISED BY K.C. NG on 3/7/85, 3/24/85, 4/16/85. - * - * Required system supported functions : - * copysign(x,y) - * sqrt(x) - * - * Required kernel function: - * log1p(x) ...return log(1+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)*(log1p(x)+ln2)) if sqrt(1+x*x)=x, else - * := sign(x)*log1p(|x| + |x|/(1/|x| + sqrt(1+(1/|x|)^2)) ) - * - * Accuracy: - * asinh(x) returns the exact inverse hyperbolic sine of x nearly rounded. - * In a test run with 52,000 random arguments on a VAX, the maximum - * observed error was 1.58 ulps (units 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. - */ - -#include - -vc(ln2hi, 6.9314718055829871446E-1 ,7217,4031,0000,f7d0, 0, .B17217F7D00000) -vc(ln2lo, 1.6465949582897081279E-12 ,bcd5,2ce7,d9cc,e4f1, -39, .E7BCD5E4F1D9CC) - -ic(ln2hi, 6.9314718036912381649E-1, -1, 1.62E42FEE00000) -ic(ln2lo, 1.9082149292705877000E-10, -33, 1.A39EF35793C76) - -#ifdef vccast -#define ln2hi vccast(ln2hi) -#define ln2lo vccast(ln2lo) -#endif - -double -asinh(double x) -{ - double t; - double s; - static double const small = 1.0E-10; /* fl(1+small*small) == 1 */ - static double const big =1.0E20; /* fl(1+big) == big */ - static double const one =1.0; - -#if !defined(vax)&&!defined(tahoe) - if(x!=x) return(x); /* x is NaN */ -#endif /* !defined(vax)&&!defined(tahoe) */ - if((t=copysign(x,one))>small) { - if(t big */ - {s=log1p(t)+ln2lo; return(copysign(s+ln2hi,x));} - } else { /* if |x| < small */ - return(x); - } -} diff --git a/src/system/libroot/posix/math/atan.c b/src/system/libroot/posix/math/atan.c deleted file mode 100644 index 4962c0b425..0000000000 --- a/src/system/libroot/posix/math/atan.c +++ /dev/null @@ -1,85 +0,0 @@ -/* - * Copyright (c) 1985, 1993 - * The Regents of the University of California. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#include - -/* ATAN(X) - * RETURNS ARC TANGENT OF X - * DOUBLE PRECISION (IEEE DOUBLE 53 bits, VAX D FORMAT 56 bits) - * CODED IN C BY K.C. NG, 4/16/85, REVISED ON 6/10/85. - * - * Required kernel function: - * atan2(y,x) - * - * Method: - * atan(x) = atan2(x,1.0). - * - * Special case: - * if x is NaN, return x itself. - * - * Accuracy: - * 1) If atan2() uses machine PI, then - * - * atan(x) returns (PI/pi) * (the exact arc tangent of x) nearly rounded; - * and PI is the exact pi rounded to machine precision (see atan2 for - * details): - * - * in decimal: - * pi = 3.141592653589793 23846264338327 ..... - * 53 bits PI = 3.141592653589793 115997963 ..... , - * 56 bits PI = 3.141592653589793 227020265 ..... , - * - * in hexadecimal: - * pi = 3.243F6A8885A308D313198A2E.... - * 53 bits PI = 3.243F6A8885A30 = 2 * 1.921FB54442D18 error=.276ulps - * 56 bits PI = 3.243F6A8885A308 = 4 * .C90FDAA22168C2 error=.206ulps - * - * In a test run with more than 200,000 random arguments on a VAX, the - * maximum observed error in ulps (units in the last place) was - * 0.86 ulps. (comparing against (PI/pi)*(exact atan(x))). - * - * 2) If atan2() uses true pi, then - * - * atan(x) returns the exact atan(x) with error below about 2 ulps. - * - * In a test run with more than 1,024,000 random arguments on a VAX, the - * maximum observed error in ulps (units in the last place) was - * 0.85 ulps. - */ - -double atan(x) -double x; -{ - double atan2(),one=1.0; - return(atan2(x,one)); -} diff --git a/src/system/libroot/posix/math/atan2.c b/src/system/libroot/posix/math/atan2.c deleted file mode 100644 index 9c1045f9fc..0000000000 --- a/src/system/libroot/posix/math/atan2.c +++ /dev/null @@ -1,290 +0,0 @@ -/* - * Copyright (c) 1985, 1993 - * The Regents of the University of California. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -/* ATAN2(Y,X) - * RETURN ARG (X+iY) - * DOUBLE PRECISION (VAX D format 56 bits, IEEE DOUBLE 53 BITS) - * CODED IN C BY K.C. NG, 1/8/85; - * REVISED BY K.C. NG on 2/7/85, 2/13/85, 3/7/85, 3/30/85, 6/29/85. - * - * Required system supported functions : - * copysign(x,y) - * scalb(x,y) - * logb(x) - * - * Method : - * 1. Reduce y to positive by atan2(y,x)=-atan2(-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, - * 3. According to the integer k=4t+0.25 truncated , t=y/x, the argument - * is further reduced to one of the following intervals and the - * arctangent of y/x is evaluated by the corresponding formula: - * - * [0,7/16] atan(y/x) = t - t^3*(a1+t^2*(a2+...(a10+t^2*a11)...) - * [7/16,11/16] atan(y/x) = atan(1/2) + atan( (y-x/2)/(x+y/2) ) - * [11/16.19/16] atan(y/x) = atan( 1 ) + atan( (y-x)/(x+y) ) - * [19/16,39/16] atan(y/x) = atan(3/2) + atan( (y-1.5x)/(x+1.5y) ) - * [39/16,INF] atan(y/x) = atan(INF) + atan( -x/y ) - * - * Special cases: - * Notations: atan2(y,x) == ARG (x+iy) == ARG(x,y). - * - * ARG( NAN , (anything) ) is NaN; - * ARG( (anything), NaN ) is NaN; - * ARG(+(anything but NaN), +-0) is +-0 ; - * ARG(-(anything but NaN), +-0) is +-PI ; - * ARG( 0, +-(anything but 0 and NaN) ) is +-PI/2; - * ARG( +INF,+-(anything but INF and NaN) ) is +-0 ; - * ARG( -INF,+-(anything but INF and NaN) ) is +-PI; - * ARG( +INF,+-INF ) is +-PI/4 ; - * ARG( -INF,+-INF ) is +-3PI/4; - * ARG( (anything but,0,NaN, and INF),+-INF ) is +-PI/2; - * - * Accuracy: - * atan2(y,x) returns (PI/pi) * the exact ARG (x+iy) nearly rounded, - * where - * - * in decimal: - * pi = 3.141592653589793 23846264338327 ..... - * 53 bits PI = 3.141592653589793 115997963 ..... , - * 56 bits PI = 3.141592653589793 227020265 ..... , - * - * in hexadecimal: - * pi = 3.243F6A8885A308D313198A2E.... - * 53 bits PI = 3.243F6A8885A30 = 2 * 1.921FB54442D18 error=.276ulps - * 56 bits PI = 3.243F6A8885A308 = 4 * .C90FDAA22168C2 error=.206ulps - * - * In a test run with 356,000 random argument on [-1,1] * [-1,1] on a - * VAX, the maximum observed error was 1.41 ulps (units of the last place) - * compared with (PI/pi)*(the exact ARG(x+iy)). - * - * Note: - * We use machine PI (the true pi rounded) in place of the actual - * value of pi for all the trig and inverse trig functions. In general, - * if trig is one of sin, cos, tan, then computed trig(y) returns the - * exact trig(y*pi/PI) nearly rounded; correspondingly, computed arctrig - * returns the exact arctrig(y)*PI/pi nearly rounded. These guarantee the - * trig functions have period PI, and trig(arctrig(x)) returns x for - * all critical values x. - * - * 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 -#include - -vc(athfhi, 4.6364760900080611433E-1 ,6338,3fed,da7b,2b0d, -1, .ED63382B0DDA7B) -vc(athflo, 1.9338828231967579916E-19 ,5005,2164,92c0,9cfe, -62, .E450059CFE92C0) -vc(PIo4, 7.8539816339744830676E-1 ,0fda,4049,68c2,a221, 0, .C90FDAA22168C2) -vc(at1fhi, 9.8279372324732906796E-1 ,985e,407b,b4d9,940f, 0, .FB985E940FB4D9) -vc(at1flo,-3.5540295636764633916E-18 ,1edc,a383,eaea,34d6, -57,-.831EDC34D6EAEA) -vc(PIo2, 1.5707963267948966135E0 ,0fda,40c9,68c2,a221, 1, .C90FDAA22168C2) - -// no, we declare PI as a macro in -//vc(PI, 3.1415926535897932270E0 ,0fda,4149,68c2,a221, 2, .C90FDAA22168C2) - -vc(a1, 3.3333333333333473730E-1 ,aaaa,3faa,ab75,aaaa, -1, .AAAAAAAAAAAB75) -vc(a2, -2.0000000000017730678E-1 ,cccc,bf4c,946e,cccd, -2,-.CCCCCCCCCD946E) -vc(a3, 1.4285714286694640301E-1 ,4924,3f12,4262,9274, -2, .92492492744262) -vc(a4, -1.1111111135032672795E-1 ,8e38,bee3,6292,ebc6, -3,-.E38E38EBC66292) -vc(a5, 9.0909091380563043783E-2 ,2e8b,3eba,d70c,b31b, -3, .BA2E8BB31BD70C) -vc(a6, -7.6922954286089459397E-2 ,89c8,be9d,7f18,27c3, -3,-.9D89C827C37F18) -vc(a7, 6.6663180891693915586E-2 ,86b4,3e88,9e58,ae37, -3, .8886B4AE379E58) -vc(a8, -5.8772703698290408927E-2 ,bba5,be70,a942,8481, -4,-.F0BBA58481A942) -vc(a9, 5.2170707402812969804E-2 ,b0f3,3e55,13ab,a1ab, -4, .D5B0F3A1AB13AB) -vc(a10, -4.4895863157820361210E-2 ,e4b9,be37,048f,7fd1, -4,-.B7E4B97FD1048F) -vc(a11, 3.3006147437343875094E-2 ,3174,3e07,2d87,3cf7, -4, .8731743CF72D87) -vc(a12, -1.4614844866464185439E-2 ,731a,bd6f,76d9,2f34, -6,-.EF731A2F3476D9) - -ic(athfhi, 4.6364760900080609352E-1 , -2, 1.DAC670561BB4F) -ic(athflo, 4.6249969567426939759E-18 , -58, 1.5543B8F253271) -ic(PIo4, 7.8539816339744827900E-1 , -1, 1.921FB54442D18) -ic(at1fhi, 9.8279372324732905408E-1 , -1, 1.F730BD281F69B) -ic(at1flo,-2.4407677060164810007E-17 , -56, -1.C23DFEFEAE6B5) -ic(PIo2, 1.5707963267948965580E0 , 0, 1.921FB54442D18) - -// no, we declare PI as a macro in -//ic(PI, 3.1415926535897931160E0 , 1, 1.921FB54442D18) - -ic(a1, 3.3333333333333942106E-1 , -2, 1.55555555555C3) -ic(a2, -1.9999999999979536924E-1 , -3, -1.9999999997CCD) -ic(a3, 1.4285714278004377209E-1 , -3, 1.24924921EC1D7) -ic(a4, -1.1111110579344973814E-1 , -4, -1.C71C7059AF280) -ic(a5, 9.0908906105474668324E-2 , -4, 1.745CE5AA35DB2) -ic(a6, -7.6919217767468239799E-2 , -4, -1.3B0FA54BEC400) -ic(a7, 6.6614695906082474486E-2 , -4, 1.10DA924597FFF) -ic(a8, -5.8358371008508623523E-2 , -5, -1.DE125FDDBD793) -ic(a9, 4.9850617156082015213E-2 , -5, 1.9860524BDD807) -ic(a10, -3.6700606902093604877E-2 , -5, -1.2CA6C04C6937A) -ic(a11, 1.6438029044759730479E-2 , -6, 1.0D52174A1BB54) - -#ifdef vccast -#define athfhi vccast(athfhi) -#define athflo vccast(athflo) -#define PIo4 vccast(PIo4) -#define at1fhi vccast(at1fhi) -#define at1flo vccast(at1flo) -#define PIo2 vccast(PIo2) - -// no, we declare PI as a macro in -//#define PI vccast(PI) - -#define a1 vccast(a1) -#define a2 vccast(a2) -#define a3 vccast(a3) -#define a4 vccast(a4) -#define a5 vccast(a5) -#define a6 vccast(a6) -#define a7 vccast(a7) -#define a8 vccast(a8) -#define a9 vccast(a9) -#define a10 vccast(a10) -#define a11 vccast(a11) -#define a12 vccast(a12) -#endif - -double -atan2(double y, double x) -{ - static const double zero=0, one=1, small=1.0E-9, big=1.0E18; - double t,z,signy,signx,hi,lo; - int k,m; - -#if !defined(vax)&&!defined(tahoe) - /* if x or y is NAN */ - if(x!=x) return(x); if(y!=y) return(y); -#endif /* !defined(vax)&&!defined(tahoe) */ - - /* copy down the sign of y and x */ - signy = copysign(one,y) ; - signx = copysign(one,x) ; - - /* if x is 1.0, goto begin */ - if(x==1) { y=copysign(y,one); t=y; if(finite(t)) goto begin;} - - /* when y = 0 */ - if(y==zero) return((signx==one)?y:copysign(PI,signy)); - - /* when x = 0 */ - if(x==zero) return(copysign(PIo2,signy)); - - /* when x is INF */ - if(!finite(x)) { - if(!finite(y)) - return(copysign((signx==one)?PIo4:3*PIo4,signy)); - else - return(copysign((signx==one)?zero:PI,signy)); - } - - /* when y is INF */ - if(!finite(y)) return(copysign(PIo2,signy)); - - /* compute y/x */ - x=copysign(x,one); - y=copysign(y,one); - if((m=(k=logb(y))-logb(x)) > 60) t=big+big; - else if(m < -80 ) t=y/x; - else { t = y/x ; y = scalb(y,-k); x=scalb(x,-k); } - - /* begin argument reduction */ -begin: - if (t < 2.4375) { - - /* truncate 4(t+1/16) to integer for branching */ - k = 4 * (t+0.0625); - switch (k) { - - /* t is in [0,7/16] */ - case 0: - case 1: - if (t < small) { - (void volatile)(big + small) ; /* raise inexact flag */ - return (copysign((signx>zero)?t:PI-t,signy)); - } - - hi = zero; lo = zero; break; - - /* t is in [7/16,11/16] */ - case 2: - hi = athfhi; lo = athflo; - z = x+x; - t = ( (y+y) - x ) / ( z + y ); break; - - /* t is in [11/16,19/16] */ - case 3: - case 4: - hi = PIo4; lo = zero; - t = ( y - x ) / ( x + y ); break; - - /* t is in [19/16,39/16] */ - default: - hi = at1fhi; lo = at1flo; - z = y-x; y=y+y+y; t = x+x; - t = ( (z+z)-x ) / ( t + y ); break; - } - } - /* end of if (t < 2.4375) */ - - else - { - hi = PIo2; lo = zero; - - /* t is in [2.4375, big] */ - if (t <= big) { - t = - x / y; - } else { - /* t is in [big, INF] */ - (void volatile)(big+small); /* raise inexact flag */ - t = zero; - } - } - /* end of argument reduction */ - - /* compute atan(t) for t in [-.4375, .4375] */ - z = t*t; -#if defined(vax)||defined(tahoe) - z = t*(z*(a1+z*(a2+z*(a3+z*(a4+z*(a5+z*(a6+z*(a7+z*(a8+ - z*(a9+z*(a10+z*(a11+z*a12)))))))))))); -#else /* defined(vax)||defined(tahoe) */ - z = t*(z*(a1+z*(a2+z*(a3+z*(a4+z*(a5+z*(a6+z*(a7+z*(a8+ - z*(a9+z*(a10+z*a11))))))))))); -#endif /* defined(vax)||defined(tahoe) */ - z = lo - z; z += t; z += hi; - - return(copysign((signx>zero)?z:PI-z,signy)); -} diff --git a/src/system/libroot/posix/math/atanh.c b/src/system/libroot/posix/math/atanh.c deleted file mode 100644 index 4749a89776..0000000000 --- a/src/system/libroot/posix/math/atanh.c +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Copyright (c) 1985, 1993 - * The Regents of the University of California. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -/* ATANH(X) - * RETURN THE HYPERBOLIC ARC TANGENT OF X - * DOUBLE PRECISION (VAX D format 56 bits, IEEE DOUBLE 53 BITS) - * CODED IN C BY K.C. NG, 1/8/85; - * REVISED BY K.C. NG on 2/7/85, 3/7/85, 8/18/85. - * - * Required kernel function: - * log1p(x) ...return log(1+x) - * - * Method : - * Return - * 1 2x x - * atanh(x) = --- * log(1 + -------) = 0.5 * log1p(2 * --------) - * 2 1 - 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. - * - * Accuracy: - * atanh(x) returns the exact hyperbolic arc tangent of x nearly rounded. - * In a test run with 512,000 random arguments on a VAX, the maximum - * observed error was 1.87 ulps (units in the last place) at - * x= -3.8962076028810414000e-03. - */ - -#include - -#if defined(vax)||defined(tahoe) -#include -#endif /* defined(vax)||defined(tahoe) */ - -double atanh(x) -double x; -{ - double z; - z = copysign(0.5,x); - x = copysign(x,1.0); -#if defined(vax)||defined(tahoe) - if (x == 1.0) { - return(copysign(1.0,z)*infnan(ERANGE)); /* sign(x)*INF */ - } -#endif /* defined(vax)||defined(tahoe) */ - x = x/(1.0-x); - return( z*log1p(x+x) ); -} diff --git a/src/system/libroot/posix/math/cabs.c b/src/system/libroot/posix/math/cabs.c deleted file mode 100644 index a9fd2dc80e..0000000000 --- a/src/system/libroot/posix/math/cabs.c +++ /dev/null @@ -1,240 +0,0 @@ -/* - * Copyright (c) 1985, 1993 - * The Regents of the University of California. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -/* HYPOT(X,Y) - * RETURN THE SQUARE ROOT OF X^2 + Y^2 WHERE Z=X+iY - * DOUBLE PRECISION (VAX D format 56 bits, IEEE DOUBLE 53 BITS) - * CODED IN C BY K.C. NG, 11/28/84; - * REVISED BY K.C. NG, 7/12/85. - * - * Required system supported functions : - * copysign(x,y) - * finite(x) - * scalb(x,N) - * sqrt(x) - * - * Method : - * 1. replace x by |x| and y by |y|, and swap x and - * y if y > x (hence x is never smaller than y). - * 2. Hypot(x,y) is computed by: - * Case I, x/y > 2 - * - * y - * hypot = x + ----------------------------- - * 2 - * sqrt ( 1 + [x/y] ) + x/y - * - * Case II, x/y <= 2 - * y - * hypot = x + -------------------------------------------------- - * 2 - * [x/y] - 2 - * (sqrt(2)+1) + (x-y)/y + ----------------------------- - * 2 - * sqrt ( 1 + [x/y] ) + sqrt(2) - * - * - * - * 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 the sqrt(x^2+y^2) with error less than 1 ulps (units - * in the last place). See Kahan's "Interval Arithmetic Options in the - * Proposed IEEE Floating Point Arithmetic Standard", Interval Mathematics - * 1980, Edited by Karl L.E. Nickel, pp 99-128. (A faster but less accurate - * code follows in comments.) In a test run with 500,000 random arguments - * on a VAX, the maximum observed error was .959 ulps. - * - * 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 -#include - -vc(r2p1hi, 2.4142135623730950345E0 ,8279,411a,ef32,99fc, 2, .9A827999FCEF32) -vc(r2p1lo, 1.4349369327986523769E-17 ,597d,2484,754b,89b3, -55, .84597D89B3754B) -vc(sqrt2, 1.4142135623730950622E0 ,04f3,40b5,de65,33f9, 1, .B504F333F9DE65) - -ic(r2p1hi, 2.4142135623730949234E0 , 1, 1.3504F333F9DE6) -ic(r2p1lo, 1.2537167179050217666E-16 , -53, 1.21165F626CDD5) -ic(sqrt2, 1.4142135623730951455E0 , 0, 1.6A09E667F3BCD) - -#ifdef vccast -# define r2p1hi vccast(r2p1hi) -# define r2p1lo vccast(r2p1lo) -# define sqrt2 vccast(sqrt2) -#endif - - -double -hypot(double x, double y) -{ - static double const zero = 0; - static double const one = 1; - static double const small = 1.0E-18; /* fl(1+small)==1 */ - static int const ibig = 30; /* fl(1+2**(2*ibig))==1 */ - - if (finite(x)) { - if (finite(y)) { - double t; - double r; - int e; - - x = copysign(x, one); - y = copysign(y, one); - if (y > x) { - t = x; x = y; y = t; - } - - if (x == zero) - return zero; - if (y == zero) - return x; - - e = logb(x); - if (e - (int)logb(y) > ibig ) { - /* raise inexact flag and return |x| */ - (void volatile)(one + small); - return x; - } - - /* start computing sqrt(x^2 + y^2) */ - r = x - y; - if (r > y) { /* x/y > 2 */ - r = x / y; - r = r + sqrt(one + r*r); - } else { /* 1 <= x/y <= 2 */ - r /= y; - t = r * (r + 2.0); - r += t / (sqrt2 + sqrt(2.0 + t)); - r += r2p1lo; - r += r2p1hi; - } - - r = y / r; - return x + r; - } else if (y == y) { /* y is +-INF */ - return copysign(y, one); - } else - return y; /* y is NaN and x is finite */ - } else if (x == x) { - return copysign(x, one); /* x is +-INF */ - } else if (finite(y)) { - return x; /* x is NaN, y is finite */ - } else if (y != y) { - return y; /* x and y is NaN */ - } else - return copysign(y, one); /* y is INF */ -} - - -/* CABS(Z) - * RETURN THE ABSOLUTE VALUE OF THE COMPLEX NUMBER Z = X + iY - * DOUBLE PRECISION (VAX D format 56 bits, IEEE DOUBLE 53 BITS) - * CODED IN C BY K.C. NG, 11/28/84. - * REVISED BY K.C. NG, 7/12/85. - * - * Required kernel function : - * hypot(x,y) - * - * Method : - * cabs(z) = hypot(x,y) . - */ - -// ToDo: complex functions are currently missing - BeOS doesn't have -// a header for them, but libroot.so seems to define all functions - -#if 0 -double -cabs(struct complex z) -{ - return hypot(z.x, z.y); -} - - -double -z_abs(struct complex const *z) -{ - return hypot(z->x, z->y); -} -#endif - -/* A faster but less accurate version of cabs(x,y) */ -#if 0 -double hypot(x,y) -double x, y; -{ - static const double zero=0, one=1; - small=1.0E-18; /* fl(1+small)==1 */ - static const ibig=30; /* fl(1+2**(2*ibig))==1 */ - double temp; - int exp; - - if(finite(x)) - if(finite(y)) - { - x=copysign(x,one); - y=copysign(y,one); - if(y > x) - { temp=x; x=y; y=temp; } - if(x == zero) return(zero); - if(y == zero) return(x); - exp= logb(x); - x=scalb(x,-exp); - if(exp-(int)logb(y) > ibig ) - /* raise inexact flag and return |x| */ - { one+small; return(scalb(x,exp)); } - else y=scalb(y,-exp); - return(scalb(sqrt(x*x+y*y),exp)); - } - - else if(y==y) /* y is +-INF */ - return(copysign(y,one)); - else - return(y); /* y is NaN and x is finite */ - - else if(x==x) /* x is +-INF */ - return (copysign(x,one)); - else if(finite(y)) - return(x); /* x is NaN, y is finite */ - else if(y!=y) return(y); /* x and y is NaN */ - else return(copysign(y,one)); /* y is INF */ -} -#endif diff --git a/src/system/libroot/posix/math/cbrt.c b/src/system/libroot/posix/math/cbrt.c deleted file mode 100644 index 52ce7d02f3..0000000000 --- a/src/system/libroot/posix/math/cbrt.c +++ /dev/null @@ -1,122 +0,0 @@ -/* - * Copyright (c) 1985, 1993 - * The Regents of the University of California. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#include - -/* kahan's cube root (53 bits IEEE double precision) - * for IEEE machines only - * coded in C by K.C. Ng, 4/30/85 - * - * Accuracy: - * better than 0.667 ulps according to an error analysis. Maximum - * error observed was 0.666 ulps in an 1,000,000 random arguments test. - * - * Warning: this code is semi machine dependent; the ordering of words in - * a floating point number must be known in advance. I assume that the - * long interger at the address of a floating point number will be the - * leading 32 bits of that floating point number (i.e., sign, exponent, - * and the 20 most significant bits). - * On a National machine, it has different ordering; therefore, this code - * must be compiled with flag -DNATIONAL. - */ -#if !defined(vax)&&!defined(tahoe) - -static unsigned long const B1 = 715094163; /* B1 = (682-0.03306235651)*2**20 */ -static unsigned long const B2 = 696219795; /* B2 = (664-0.03306235651)*2**20 */ -static double const C= 19./35.; -static double const D= -864./1225.; -static double const E= 99./70.; -static double const F= 45./28.; -static double const G= 5./14.; - -double -cbrt(double x) -{ - double r; - double s; - double t=0.0; - double w; - unsigned long *px = (unsigned long *) &x; - unsigned long *pt = (unsigned long *) &t; - unsigned long mexp; - unsigned long sign; - -#ifdef national /* ordering of words in a floating points number */ - const int n0=1; - const int n1=0; -#else /* national */ - const int n0=0; - const int n1=1; -#endif /* national */ - - mexp=px[n0]&0x7ff00000; - if(mexp==0x7ff00000) return(x); /* cbrt(NaN,INF) is itself */ - if(x==0.0) return(x); /* cbrt(0) is itself */ - - sign=px[n0]&0x80000000; /* sign= sign(x) */ - px[n0] ^= sign; /* x=|x| */ - - - /* rough cbrt to 5 bits */ - if(mexp==0) { - /* subnormal number */ - pt[n0]=0x43500000; /* set t= 2**54 */ - t*=x; - pt[n0]=pt[n0]/3+B2; - } else { - pt[n0]=px[n0]/3+B1; - } - - - /* new cbrt to 23 bits, may be implemented in single precision */ - r=t*t/x; - s=C+r*t; - t*=G+F/(s+E+D/s); - - /* chopped to 20 bits and make it larger than cbrt(x) */ - pt[n1]=0; pt[n0]+=0x00000001; - - - /* one step newton iteration to 53 bits with error less than 0.667 ulps */ - s=t*t; /* t*t is exact */ - r=x/s; - w=t+t; - r=(r-t)/(w+r); /* r-t is exact */ - t=t+t*r; - - - /* retore the sign bit */ - pt[n0] |= sign; - return(t); -} -#endif diff --git a/src/system/libroot/posix/math/cosh.c b/src/system/libroot/posix/math/cosh.c deleted file mode 100644 index b63606a2dd..0000000000 --- a/src/system/libroot/posix/math/cosh.c +++ /dev/null @@ -1,131 +0,0 @@ -/* - * Copyright (c) 1985, 1993 - * The Regents of the University of California. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -/* COSH(X) - * RETURN THE HYPERBOLIC COSINE OF X - * DOUBLE PRECISION (VAX D format 56 bits, IEEE DOUBLE 53 BITS) - * CODED IN C BY K.C. NG, 1/8/85; - * REVISED BY K.C. NG on 2/8/85, 2/23/85, 3/7/85, 3/29/85, 4/16/85. - * - * Required system supported functions : - * copysign(x,y) - * scalb(x,N) - * - * Required kernel function: - * exp(x) - * exp__E(x,c) ...return exp(x+c)-1-x for |x|<0.3465 - * - * Method : - * 1. Replace x by |x|. - * 2. - * [ exp(x) - 1 ]^2 - * 0 <= x <= 0.3465 : cosh(x) := 1 + ------------------- - * 2*exp(x) - * - * exp(x) + 1/exp(x) - * 0.3465 <= x <= 22 : cosh(x) := ------------------- - * 2 - * 22 <= x <= lnovfl : cosh(x) := exp(x)/2 - * lnovfl <= x <= lnovfl+log(2) - * : cosh(x) := exp(x)/2 (avoid overflow) - * log(2)+lnovfl < x < INF: overflow to INF - * - * Note: .3465 is a number near one half of ln2. - * - * Special cases: - * cosh(x) is x if x is +INF, -INF, or NaN. - * only cosh(0)=1 is exact for finite x. - * - * Accuracy: - * cosh(x) returns the exact hyperbolic cosine of x nearly rounded. - * In a test run with 768,000 random arguments on a VAX, the maximum - * observed error was 1.23 ulps (units 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. - */ - -#include - -vc(mln2hi, 8.8029691931113054792E1 ,0f33,43b0,2bdb,c7e2, 7, .B00F33C7E22BDB) -vc(mln2lo,-4.9650192275318476525E-16 ,1b60,a70f,582a,279e, -50,-.8F1B60279E582A) -vc(lnovfl, 8.8029691931113053016E1 ,0f33,43b0,2bda,c7e2, 7, .B00F33C7E22BDA) - -ic(mln2hi, 7.0978271289338397310E2, 10, 1.62E42FEFA39EF) -ic(mln2lo, 2.3747039373786107478E-14, -45, 1.ABC9E3B39803F) -ic(lnovfl, 7.0978271289338397310E2, 9, 1.62E42FEFA39EF) - -#ifdef vccast -#define mln2hi vccast(mln2hi) -#define mln2lo vccast(mln2lo) -#define lnovfl vccast(lnovfl) -#endif - -#if defined(vax)||defined(tahoe) -static int const max = 126 ; -#else /* defined(vax)||defined(tahoe) */ -static int const max = 1023 ; -#endif /* defined(vax)||defined(tahoe) */ - -double -cosh(double x) -{ - static double const half=1.0/2.0; - static double const one=1.0; - static double const small=1.0E-18; /* fl(1+small)==1 */ - double t; - -#if !defined(vax)&&!defined(tahoe) - if(x!=x) return(x); /* x is NaN */ -#endif /* !defined(vax)&&!defined(tahoe) */ - if((x=copysign(x,one)) <= 22) { - if(x<0.3465) - if(x= 1.25 (error 1.7ulp vs ~6ulp) - * Replaced even+odd with direct calculation for x < .84375, - * to avoid destructive cancellation. - * - * Performance of erfc(x): - * In 300000 trials in the range [.83, .84375] the - * maximum observed error was 3.6ulp. - * - * In [.84735,1.25] the maximum observed error was <2.5ulp in - * 100000 runs in the range [1.2, 1.25]. - * - * In [1.25,26] (Not including subnormal results) - * the error is < 1.7ulp. - */ - -/* double erf(double x) - * double erfc(double x) - * x - * 2 |\ - * erf(x) = --------- | exp(-t*t)dt - * sqrt(pi) \| - * 0 - * - * erfc(x) = 1-erf(x) - * - * Method: - * 1. Reduce x to |x| by erf(-x) = -erf(x) - * 2. For x in [0, 0.84375] - * erf(x) = x + x*P(x^2) - * erfc(x) = 1 - erf(x) if x<=0.25 - * = 0.5 + ((0.5-x)-x*P) if x in [0.25,0.84375] - * where - * 2 2 4 20 - * P = P(x ) = (p0 + p1 * x + p2 * x + ... + p10 * x ) - * is an approximation to (erf(x)-x)/x with precision - * - * -56.45 - * | P - (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 fixed - * 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. - * - * 3. For x in [0.84375,1.25], let s = x - 1, and - * c = 0.84506291151 rounded to single (24 bits) - * erf(x) = c + P1(s)/Q1(s) - * erfc(x) = (1-c) - P1(s)/Q1(s) - * |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 - * - * 4. For x in [1.25, 2]; [2, 4] - * erf(x) = 1.0 - tiny - * erfc(x) = (1/x)exp(-x*x-(.5*log(pi) -.5z + R(z)/S(z)) - * - * Where z = 1/(x*x), R is degree 9, and S is degree 3; - * - * 5. For x in [4,28] - * erf(x) = 1.0 - tiny - * erfc(x) = (1/x)exp(-x*x-(.5*log(pi)+eps + zP(z)) - * - * Where P is degree 14 polynomial in 1/(x*x). - * - * Notes: - * Here 4 and 5 make use of the asymptotic series - * exp(-x*x) - * erfc(x) ~ ---------- * ( 1 + Poly(1/x^2) ); - * x*sqrt(pi) - * - * where for z = 1/(x*x) - * P(z) ~ z/2*(-1 + z*3/2*(1 + z*5/2*(-1 + z*7/2*(1 +...)))) - * - * Thus we use rational approximation to approximate - * erfc*x*exp(x*x) ~ 1/sqrt(pi); - * - * The error bound for the target function, G(z) for - * the interval - * [4, 28]: - * |eps + 1/(z)P(z) - G(z)| < 2**(-56.61) - * for [2, 4]: - * |R(z)/S(z) - G(z)| < 2**(-58.24) - * for [1.25, 2]: - * |R(z)/S(z) - G(z)| < 2**(-58.12) - * - * 6. For inf > x >= 28 - * erf(x) = 1 - tiny (raise inexact) - * erfc(x) = tiny*tiny (raise underflow) - * - * 7. Special cases: - * erf(0) = 0, erf(inf) = 1, erf(-inf) = -1, - * erfc(0) = 1, erfc(inf) = 0, erfc(-inf) = 2, - * erfc/erf(NaN) is NaN - */ - -#include -#include - -#if defined(vax) || defined(tahoe) -#define _IEEE 0 -#define TRUNC(x) (double) (float) (x) -#else -#define _IEEE 1 -#define TRUNC(x) *(((int *) &x) + 1) &= 0xf8000000 -#define infnan(x) 0.0 -#endif - -#ifdef _IEEE_LIBM -/* - * redefining "___function" to "function" in _IEEE_LIBM mode - */ -#include "ieee_libm.h" -#endif - -static double const tiny = 1e-300; -static double const half = 0.5; -static double const one = 1.0; -static double const two = 2.0; -static double const c = 8.45062911510467529297e-01; /* (float)0.84506291151 */ -/* - * Coefficients for approximation to erf in [0,0.84375] - */ -static double const p0t8 = 1.02703333676410051049867154944018394163280; -static double const p0 = 1.283791670955125638123339436800229927041e-0001; -static double const p1 = -3.761263890318340796574473028946097022260e-0001; -static double const p2 = 1.128379167093567004871858633779992337238e-0001; -static double const p3 = -2.686617064084433642889526516177508374437e-0002; -static double const p4 = 5.223977576966219409445780927846432273191e-0003; -static double const p5 = -8.548323822001639515038738961618255438422e-0004; -static double const p6 = 1.205520092530505090384383082516403772317e-0004; -static double const p7 = -1.492214100762529635365672665955239554276e-0005; -static double const p8 = 1.640186161764254363152286358441771740838e-0006; -static double const p9 = -1.571599331700515057841960987689515895479e-0007; -static double const p10= 1.073087585213621540635426191486561494058e-0008; -/* - * Coefficients for approximation to erf in [0.84375,1.25] - */ -static double const pa0 = -2.362118560752659485957248365514511540287e-0003; -static double const pa1 = 4.148561186837483359654781492060070469522e-0001; -static double const pa2 = -3.722078760357013107593507594535478633044e-0001; -static double const pa3 = 3.183466199011617316853636418691420262160e-0001; -static double const pa4 = -1.108946942823966771253985510891237782544e-0001; -static double const pa5 = 3.547830432561823343969797140537411825179e-0002; -static double const pa6 = -2.166375594868790886906539848893221184820e-0003; -static double const qa1 = 1.064208804008442270765369280952419863524e-0001; -static double const qa2 = 5.403979177021710663441167681878575087235e-0001; -static double const qa3 = 7.182865441419627066207655332170665812023e-0002; -static double const qa4 = 1.261712198087616469108438860983447773726e-0001; -static double const qa5 = 1.363708391202905087876983523620537833157e-0002; -static double const qa6 = 1.198449984679910764099772682882189711364e-0002; -/* - * log(sqrt(pi)) for large x expansions. - * The tail (lsqrtPI_lo) is included in the rational - * approximations. -*/ -static double const lsqrtPI_hi = .5723649429247000819387380943226; -/* - * lsqrtPI_lo = .000000000000000005132975581353913; - * - * Coefficients for approximation to erfc in [2, 4] -*/ -static double const rb0 = -1.5306508387410807582e-010; /* includes lsqrtPI_lo */ -static double const rb1 = 2.15592846101742183841910806188e-008; -static double const rb2 = 6.24998557732436510470108714799e-001; -static double const rb3 = 8.24849222231141787631258921465e+000; -static double const rb4 = 2.63974967372233173534823436057e+001; -static double const rb5 = 9.86383092541570505318304640241e+000; -static double const rb6 = -7.28024154841991322228977878694e+000; -static double const rb7 = 5.96303287280680116566600190708e+000; -static double const rb8 = -4.40070358507372993983608466806e+000; -static double const rb9 = 2.39923700182518073731330332521e+000; -static double const rb10 = -6.89257464785841156285073338950e-001; -static double const sb1 = 1.56641558965626774835300238919e+001; -static double const sb2 = 7.20522741000949622502957936376e+001; -static double const sb3 = 9.60121069770492994166488642804e+001; -/* - * Coefficients for approximation to erfc in [1.25, 2] -*/ -static double const rc0 = -2.47925334685189288817e-007; /* includes lsqrtPI_lo */ -static double const rc1 = 1.28735722546372485255126993930e-005; -static double const rc2 = 6.24664954087883916855616917019e-001; -static double const rc3 = 4.69798884785807402408863708843e+000; -static double const rc4 = 7.61618295853929705430118701770e+000; -static double const rc5 = 9.15640208659364240872946538730e-001; -static double const rc6 = -3.59753040425048631334448145935e-001; -static double const rc7 = 1.42862267989304403403849619281e-001; -static double const rc8 = -4.74392758811439801958087514322e-002; -static double const rc9 = 1.09964787987580810135757047874e-002; -static double const rc10 = -1.28856240494889325194638463046e-003; -static double const sc1 = 9.97395106984001955652274773456e+000; -static double const sc2 = 2.80952153365721279953959310660e+001; -static double const sc3 = 2.19826478142545234106819407316e+001; -/* - * Coefficients for approximation to erfc in [4,28] - */ -static double const rd0 = -2.1491361969012978677e-016; /* includes lsqrtPI_lo */ -static double const rd1 = -4.99999999999640086151350330820e-001; -static double const rd2 = 6.24999999772906433825880867516e-001; -static double const rd3 = -1.54166659428052432723177389562e+000; -static double const rd4 = 5.51561147405411844601985649206e+000; -static double const rd5 = -2.55046307982949826964613748714e+001; -static double const rd6 = 1.43631424382843846387913799845e+002; -static double const rd7 = -9.45789244999420134263345971704e+002; -static double const rd8 = 6.94834146607051206956384703517e+003; -static double const rd9 = -5.27176414235983393155038356781e+004; -static double const rd10 = 3.68530281128672766499221324921e+005; -static double const rd11 = -2.06466642800404317677021026611e+006; -static double const rd12 = 7.78293889471135381609201431274e+006; -static double const rd13 = -1.42821001129434127360582351685e+007; - -double -erf(double x) -{ - double R; - double S; - double P; - double Q; - double ax; - double s; - double y; - double z; - double r; - - if(!finite(x)) { /* erf(nan)=nan */ - if (isnan(x)) - return(x); - return (x > 0 ? one : -one); /* erf(+/-inf)= +/-1 */ - } - if ((ax = x) < 0) - ax = - ax; - if (ax < .84375) { - if (ax < 3.7e-09) { - if (ax < 1.0e-308) - return 0.125*(8.0*x+p0t8*x); /*avoid underflow */ - return x + p0*x; - } - y = x*x; - r = y*(p1+y*(p2+y*(p3+y*(p4+y*(p5+ - y*(p6+y*(p7+y*(p8+y*(p9+y*p10))))))))); - return x + x*(p0+r); - } - if (ax < 1.25) { /* 0.84375 <= |x| < 1.25 */ - s = fabs(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 (x>=0) - return (c + P/Q); - else - return (-c - P/Q); - } - if (ax >= 6.0) { /* inf>|x|>=6 */ - if (x >= 0.0) - return (one-tiny); - else - return (tiny-one); - } - /* 1.25 <= |x| < 6 */ - z = -ax*ax; - s = -one/z; - if (ax < 2.0) { - R = rc0+s*(rc1+s*(rc2+s*(rc3+s*(rc4+s*(rc5+ - s*(rc6+s*(rc7+s*(rc8+s*(rc9+s*rc10))))))))); - S = one+s*(sc1+s*(sc2+s*sc3)); - } else { - R = rb0+s*(rb1+s*(rb2+s*(rb3+s*(rb4+s*(rb5+ - s*(rb6+s*(rb7+s*(rb8+s*(rb9+s*rb10))))))))); - S = one+s*(sb1+s*(sb2+s*sb3)); - } - y = (R/S -.5*s) - lsqrtPI_hi; - z += y; - z = exp(z)/ax; - if (x >= 0) - return (one-z); - else - return (z-one); -} - -double -erfc(double x) -{ - double R; - double S; - double P; - double Q; - double s; - double ax; - double y; - double z; - double r; - - if (!finite(x)) { - if (isnan(x)) /* erfc(NaN) = NaN */ - return(x); - else if (x > 0) /* erfc(+-inf)=0,2 */ - return 0.0; - else - return 2.0; - } - if ((ax = x) < 0) - ax = -ax; - if (ax < .84375) { /* |x|<0.84375 */ - if (ax < 1.38777878078144568e-17) /* |x|<2**-56 */ - return one-x; - y = x*x; - r = y*(p1+y*(p2+y*(p3+y*(p4+y*(p5+ - y*(p6+y*(p7+y*(p8+y*(p9+y*p10))))))))); - if (ax < .0625) { /* |x|<2**-4 */ - return (one-(x+x*(p0+r))); - } else { - r = x*(p0+r); - r += (x-half); - return (half - r); - } - } - if (ax < 1.25) { /* 0.84375 <= |x| < 1.25 */ - s = ax-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 (x>=0) { - z = one-c; return z - P/Q; - } else { - z = c+P/Q; return one+z; - } - } - if (ax >= 28) { /* Out of range */ - if (x>0) - return (tiny*tiny); - else - return (two-tiny); - } - z = ax; - TRUNC(z); - y = z - ax; y *= (ax+z); - z *= -z; /* Here z + y = -x^2 */ - s = one/(-z-y); /* 1/(x*x) */ - if (ax >= 4) { /* 6 <= ax */ - R = s*(rd1+s*(rd2+s*(rd3+s*(rd4+s*(rd5+ - s*(rd6+s*(rd7+s*(rd8+s*(rd9+s*(rd10 - +s*(rd11+s*(rd12+s*rd13)))))))))))); - y += rd0; - } else if (ax >= 2) { - R = rb0+s*(rb1+s*(rb2+s*(rb3+s*(rb4+s*(rb5+ - s*(rb6+s*(rb7+s*(rb8+s*(rb9+s*rb10))))))))); - S = one+s*(sb1+s*(sb2+s*sb3)); - y += R/S; - R = -.5*s; - } else { - R = rc0+s*(rc1+s*(rc2+s*(rc3+s*(rc4+s*(rc5+ - s*(rc6+s*(rc7+s*(rc8+s*(rc9+s*rc10))))))))); - S = one+s*(sc1+s*(sc2+s*sc3)); - y += R/S; - R = -.5*s; - } - /* return exp(-x^2 - lsqrtPI_hi + R + y)/x; */ - s = ((R + y) - lsqrtPI_hi) + z; - y = (((z-s) - lsqrtPI_hi) + R) + y; - r = __exp__D(s, y)/x; - if (x>0) - return r; - else - return two-r; -} diff --git a/src/system/libroot/posix/math/exp.c b/src/system/libroot/posix/math/exp.c deleted file mode 100644 index 0f3105a042..0000000000 --- a/src/system/libroot/posix/math/exp.c +++ /dev/null @@ -1,200 +0,0 @@ -/* - * Copyright (c) 1985, 1993 - * The Regents of the University of California. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -/* EXP(X) - * RETURN THE EXPONENTIAL OF X - * DOUBLE PRECISION (IEEE 53 bits, VAX D FORMAT 56 BITS) - * CODED IN C BY K.C. NG, 1/19/85; - * REVISED BY K.C. NG on 2/6/85, 2/15/85, 3/7/85, 3/24/85, 4/16/85, 6/14/86. - * - * Required system supported functions: - * scalb(x,n) - * copysign(x,y) - * finite(x) - * - * Method: - * 1. Argument Reduction: given the input x, find r and integer k such - * that - * x = k*ln2 + r, |r| <= 0.5*ln2 . - * r will be represented as r := z+c for better accuracy. - * - * 2. Compute exp(r) by - * - * exp(r) = 1 + r + r*R1/(2-R1), - * where - * R1 = x - x^2*(p1+x^2*(p2+x^2*(p3+x^2*(p4+p5*x^2)))). - * - * 3. exp(x) = 2^k * exp(r) . - * - * Special cases: - * exp(INF) is INF, exp(NaN) is NaN; - * exp(-INF)= 0; - * for finite argument, only exp(0)=1 is exact. - * - * Accuracy: - * exp(x) returns the exponential of x nearly rounded. In a test run - * with 1,156,000 random arguments on a VAX, the maximum observed - * error was 0.869 ulps (units 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. - */ - -#include - - -vc(ln2hi, 6.9314718055829871446E-1 ,7217,4031,0000,f7d0, 0, .B17217F7D00000) -vc(ln2lo, 1.6465949582897081279E-12 ,bcd5,2ce7,d9cc,e4f1, -39, .E7BCD5E4F1D9CC) -vc(lnhuge, 9.4961163736712506989E1 ,ec1d,43bd,9010,a73e, 7, .BDEC1DA73E9010) -vc(lntiny,-9.5654310917272452386E1 ,4f01,c3bf,33af,d72e, 7,-.BF4F01D72E33AF) -vc(invln2, 1.4426950408889634148E0 ,aa3b,40b8,17f1,295c, 1, .B8AA3B295C17F1) -vc(p1, 1.6666666666666602251E-1 ,aaaa,3f2a,a9f1,aaaa, -2, .AAAAAAAAAAA9F1) -vc(p2, -2.7777777777015591216E-3 ,0b60,bc36,ec94,b5f5, -8,-.B60B60B5F5EC94) -vc(p3, 6.6137563214379341918E-5 ,b355,398a,f15f,792e, -13, .8AB355792EF15F) -vc(p4, -1.6533902205465250480E-6 ,ea0e,b6dd,5f84,2e93, -19,-.DDEA0E2E935F84) -vc(p5, 4.1381367970572387085E-8 ,bb4b,3431,2683,95f5, -24, .B1BB4B95F52683) - -#ifdef vccast -#define ln2hi vccast(ln2hi) -#define ln2lo vccast(ln2lo) -#define lnhuge vccast(lnhuge) -#define lntiny vccast(lntiny) -#define invln2 vccast(invln2) -#define p1 vccast(p1) -#define p2 vccast(p2) -#define p3 vccast(p3) -#define p4 vccast(p4) -#define p5 vccast(p5) -#endif - -ic(p1, 1.6666666666666601904E-1, -3, 1.555555555553E) -ic(p2, -2.7777777777015593384E-3, -9, -1.6C16C16BEBD93) -ic(p3, 6.6137563214379343612E-5, -14, 1.1566AAF25DE2C) -ic(p4, -1.6533902205465251539E-6, -20, -1.BBD41C5D26BF1) -ic(p5, 4.1381367970572384604E-8, -25, 1.6376972BEA4D0) -ic(ln2hi, 6.9314718036912381649E-1, -1, 1.62E42FEE00000) -ic(ln2lo, 1.9082149292705877000E-10,-33, 1.A39EF35793C76) -ic(lnhuge, 7.1602103751842355450E2, 9, 1.6602B15B7ECF2) -ic(lntiny,-7.5137154372698068983E2, 9, -1.77AF8EBEAE354) -ic(invln2, 1.4426950408889633870E0, 0, 1.71547652B82FE) - -double exp(x) -double x; -{ - double z,hi,lo,c; - int k; - -#if !defined(vax)&&!defined(tahoe) - if(x!=x) return(x); /* x is NaN */ -#endif /* !defined(vax)&&!defined(tahoe) */ - if( x <= lnhuge ) { - if( x >= lntiny ) { - - /* argument reduction : x --> x - k*ln2 */ - - k=invln2*x+copysign(0.5,x); /* k=NINT(x/ln2) */ - - /* express x-k*ln2 as hi-lo and let x=hi-lo rounded */ - - hi=x-k*ln2hi; - x=hi-(lo=k*ln2lo); - - /* return 2^k*[1+x+x*c/(2+c)] */ - z=x*x; - c= x - z*(p1+z*(p2+z*(p3+z*(p4+z*p5)))); - return scalb(1.0+(hi-(lo-(x*c)/(2.0-c))),k); - - } - /* end of x > lntiny */ - - else - /* exp(-big#) underflows to zero */ - if(finite(x)) return(scalb(1.0,-5000)); - - /* exp(-INF) is zero */ - else return(0.0); - } - /* end of x < lnhuge */ - - else - /* exp(INF) is INF, exp(+big#) overflows to INF */ - return( finite(x) ? scalb(1.0,5000) : x); -} - -/* returns exp(r = x + c) for |c| < |x| with no overlap. */ - -double __exp__D(x, c) -double x, c; -{ - double z,hi,lo; - int k; - -#if !defined(vax)&&!defined(tahoe) - if (x!=x) return(x); /* x is NaN */ -#endif /* !defined(vax)&&!defined(tahoe) */ - if ( x <= lnhuge ) { - if ( x >= lntiny ) { - - /* argument reduction : x --> x - k*ln2 */ - z = invln2*x; - k = z + copysign(.5, x); - - /* express (x+c)-k*ln2 as hi-lo and let x=hi-lo rounded */ - - hi=(x-k*ln2hi); /* Exact. */ - x= hi - (lo = k*ln2lo-c); - /* return 2^k*[1+x+x*c/(2+c)] */ - z=x*x; - c= x - z*(p1+z*(p2+z*(p3+z*(p4+z*p5)))); - c = (x*c)/(2.0-c); - - return scalb(1.+(hi-(lo - c)), k); - } - /* end of x > lntiny */ - - else - /* exp(-big#) underflows to zero */ - if(finite(x)) return(scalb(1.0,-5000)); - - /* exp(-INF) is zero */ - else return(0.0); - } - /* end of x < lnhuge */ - - else - /* exp(INF) is INF, exp(+big#) overflows to INF */ - return( finite(x) ? scalb(1.0,5000) : x); -} diff --git a/src/system/libroot/posix/math/exp__E.c b/src/system/libroot/posix/math/exp__E.c deleted file mode 100644 index 67d72d4237..0000000000 --- a/src/system/libroot/posix/math/exp__E.c +++ /dev/null @@ -1,141 +0,0 @@ -/* - * Copyright (c) 1985, 1993 - * The Regents of the University of California. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -/* exp__E(x,c) - * ASSUMPTION: c << x SO THAT fl(x+c)=x. - * (c is the correction term for x) - * exp__E RETURNS - * - * / exp(x+c) - 1 - x , 1E-19 < |x| < .3465736 - * exp__E(x,c) = | - * \ 0 , |x| < 1E-19. - * - * DOUBLE PRECISION (IEEE 53 bits, VAX D FORMAT 56 BITS) - * KERNEL FUNCTION OF EXP, EXPM1, POW FUNCTIONS - * CODED IN C BY K.C. NG, 1/31/85; - * REVISED BY K.C. NG on 3/16/85, 4/16/85. - * - * Required system supported function: - * copysign(x,y) - * - * Method: - * 1. Rational approximation. Let r=x+c. - * Based on - * 2 * sinh(r/2) - * exp(r) - 1 = ---------------------- , - * cosh(r/2) - sinh(r/2) - * exp__E(r) is computed using - * x*x (x/2)*W - ( Q - ( 2*P + x*P ) ) - * --- + (c + x*[---------------------------------- + c ]) - * 2 1 - W - * where P := p1*x^2 + p2*x^4, - * Q := q1*x^2 + q2*x^4 (for 56 bits precision, add q3*x^6) - * W := x/2-(Q-x*P), - * - * (See the listing below for the values of p1,p2,q1,q2,q3. The poly- - * nomials P and Q may be regarded as the approximations to sinh - * and cosh : - * sinh(r/2) = r/2 + r * P , cosh(r/2) = 1 + Q . ) - * - * The coefficients were obtained by a special Remez algorithm. - * - * Approximation error: - * - * | exp(x) - 1 | 2**(-57), (IEEE double) - * | ------------ - (exp__E(x,0)+x)/x | <= - * | x | 2**(-69). (VAX D) - * - * 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 - -vc(p1, 1.5150724356786683059E-2 ,3abe,3d78,066a,67e1, -6, .F83ABE67E1066A) -vc(p2, 6.3112487873718332688E-5 ,5b42,3984,0173,48cd, -13, .845B4248CD0173) -vc(q1, 1.1363478204690669916E-1 ,b95a,3ee8,ec45,44a2, -3, .E8B95A44A2EC45) -vc(q2, 1.2624568129896839182E-3 ,7905,3ba5,f5e7,72e4, -9, .A5790572E4F5E7) -vc(q3, 1.5021856115869022674E-6 ,9eb4,36c9,c395,604a, -19, .C99EB4604AC395) - -ic(p1, 1.3887401997267371720E-2, -7, 1.C70FF8B3CC2CF) -ic(p2, 3.3044019718331897649E-5, -15, 1.15317DF4526C4) -ic(q1, 1.1110813732786649355E-1, -4, 1.C719538248597) -ic(q2, 9.9176615021572857300E-4, -10, 1.03FC4CB8C98E8) - -#ifdef vccast -#define p1 vccast(p1) -#define p2 vccast(p2) -#define q1 vccast(q1) -#define q2 vccast(q2) -#define q3 vccast(q3) -#endif - -double -__exp__E(double x, double c) -{ - static double const zero=0.0; - static double const one=1.0; - static double const half=1.0/2.0; - static double const small=1.0E-19; - double z; - double p; - double q; - double xp; - double xh; - double w; - - if(copysign(x,one)>small) { - z = x*x ; - p = z*( p1 +z* p2 ); -#if defined(vax)||defined(tahoe) - q = z*( q1 +z*( q2 +z* q3 )); -#else /* defined(vax)||defined(tahoe) */ - q = z*( q1 +z* q2 ); -#endif /* defined(vax)||defined(tahoe) */ - xp= x*p ; - xh= x*half ; - w = xh-(q-xp) ; - p = p+p; - c += x*((xh*w-(q-(p+xp)))/(one-w)+c); - return(z*half+c); - } - /* end of |x| > small */ - - else { - if(x!=zero) (void volatile)(one+small); /* raise the inexact flag */ - return(copysign(zero,x)); - } -} diff --git a/src/system/libroot/posix/math/expm1.c b/src/system/libroot/posix/math/expm1.c deleted file mode 100644 index e6aa4705ba..0000000000 --- a/src/system/libroot/posix/math/expm1.c +++ /dev/null @@ -1,167 +0,0 @@ -/* - * Copyright (c) 1985, 1993 - * The Regents of the University of California. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -/* EXPM1(X) - * RETURN THE EXPONENTIAL OF X MINUS ONE - * DOUBLE PRECISION (IEEE 53 BITS, VAX D FORMAT 56 BITS) - * CODED IN C BY K.C. NG, 1/19/85; - * REVISED BY K.C. NG on 2/6/85, 3/7/85, 3/21/85, 4/16/85. - * - * Required system supported functions: - * scalb(x,n) - * copysign(x,y) - * finite(x) - * - * Kernel function: - * exp__E(x,c) - * - * Method: - * 1. Argument Reduction: given the input x, find r and integer k such - * that - * x = k*ln2 + r, |r| <= 0.5*ln2 . - * r will be represented as r := z+c for better accuracy. - * - * 2. Compute EXPM1(r)=exp(r)-1 by - * - * EXPM1(r=z+c) := z + exp__E(z,c) - * - * 3. EXPM1(x) = 2^k * ( EXPM1(r) + 1-2^-k ). - * - * Remarks: - * 1. When k=1 and z < -0.25, we use the following formula for - * better accuracy: - * EXPM1(x) = 2 * ( (z+0.5) + exp__E(z,c) ) - * 2. To avoid rounding error in 1-2^-k where k is large, we use - * EXPM1(x) = 2^k * { [z+(exp__E(z,c)-2^-k )] + 1 } - * when k>56. - * - * Special cases: - * EXPM1(INF) is INF, EXPM1(NaN) is NaN; - * EXPM1(-INF)= -1; - * for finite argument, only EXPM1(0)=0 is exact. - * - * Accuracy: - * EXPM1(x) returns the exact (exp(x)-1) nearly rounded. In a test run with - * 1,166,000 random arguments on a VAX, the maximum observed error was - * .872 ulps (units of 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. - */ - -#include - -vc(ln2hi, 6.9314718055829871446E-1 ,7217,4031,0000,f7d0, 0, .B17217F7D00000) -vc(ln2lo, 1.6465949582897081279E-12 ,bcd5,2ce7,d9cc,e4f1, -39, .E7BCD5E4F1D9CC) -vc(lnhuge, 9.4961163736712506989E1 ,ec1d,43bd,9010,a73e, 7, .BDEC1DA73E9010) -vc(invln2, 1.4426950408889634148E0 ,aa3b,40b8,17f1,295c, 1, .B8AA3B295C17F1) - -ic(ln2hi, 6.9314718036912381649E-1, -1, 1.62E42FEE00000) -ic(ln2lo, 1.9082149292705877000E-10, -33, 1.A39EF35793C76) -ic(lnhuge, 7.1602103751842355450E2, 9, 1.6602B15B7ECF2) -ic(invln2, 1.4426950408889633870E0, 0, 1.71547652B82FE) - -#ifdef vccast -#define ln2hi vccast(ln2hi) -#define ln2lo vccast(ln2lo) -#define lnhuge vccast(lnhuge) -#define invln2 vccast(invln2) -#endif - -double -expm1(double x) -{ - static double const one=1.0; - static double const half=1.0/2.0; - double z; - double hi; - double lo; - double c; - int k; -#if defined(vax)||defined(tahoe) - static int prec=56; -#else /* defined(vax)||defined(tahoe) */ - static int prec=53; -#endif /* defined(vax)||defined(tahoe) */ - -#if !defined(vax)&&!defined(tahoe) - if(x!=x) return(x); /* x is NaN */ -#endif /* !defined(vax)&&!defined(tahoe) */ - - if( x <= lnhuge ) { - if( x >= -40.0 ) { - - /* argument reduction : x - k*ln2 */ - k= invln2 *x+copysign(0.5,x); /* k=NINT(x/ln2) */ - hi=x-k*ln2hi ; - z=hi-(lo=k*ln2lo); - c=(hi-z)-lo; - - if(k==0) return(z+__exp__E(z,c)); - if(k==1) - if(z< -0.25) - {x=z+half;x +=__exp__E(z,c); return(x+x);} - else - {z+=__exp__E(z,c); x=half+z; return(x+x);} - /* end of k=1 */ - - else { - if(k<=prec) - { x=one-scalb(one,-k); z += __exp__E(z,c);} - else if(k<100) - { x = __exp__E(z,c)-scalb(one,-k); x+=z; z=one;} - else - { x = __exp__E(z,c)+z; z=one;} - - return (scalb(x+z,k)); - } - } - /* end of x > lnunfl */ - - else - /* expm1(-big#) rounded to -1 (inexact) */ - if(finite(x)) - { (void volatile)(ln2hi+ln2lo); return(-one);} - - /* expm1(-INF) is -1 */ - else return(-one); - } - /* end of x < lnhuge */ - - else - /* expm1(INF) is INF, expm1(+big#) overflows to INF */ - return( finite(x) ? scalb(one,5000) : x); -} diff --git a/src/system/libroot/posix/math/floatmath.c b/src/system/libroot/posix/math/floatmath.c deleted file mode 100644 index 3e44d12f72..0000000000 --- a/src/system/libroot/posix/math/floatmath.c +++ /dev/null @@ -1,69 +0,0 @@ -/* -This is a temporary file that adds the float versions of the math functions -to our libroot.so. They are required for binary compatibility. -These are generated from the inline versions on PPC in . - -TODO: Remove this file when we have all the functions replaced -*/ - -#include - -float acosf(float x) {return (float)acos((double)x);}; -float asinf(float x) {return (float)asin((double)x);}; -float atanf(float x) {return (float)atan((double)x);}; -float atan2f(float y, float x) {return (float)atan2((double)y, (double)x);}; -float cosf(float x) {return (float)cos((double)x);}; -float sinf(float x) {return (float)sin((double)x);}; -float tanf(float x) {return (float)tan((double)x);}; -float coshf(float x) {return (float)cosh((double)x);}; -float sinhf(float x) {return (float)sinh((double)x);}; -float tanhf(float x) {return (float)tanh((double)x);}; -float acoshf(float x) {return (float)acosh((double)x);}; -float asinhf(float x) {return (float)asinh((double)x);}; -float atanhf(float x) {return (float)atanh((double)x);}; -float expf(float x) {return (float)exp((double)x);}; -float frexpf(float x, int *exp) {return (float)frexp((double)x, exp);}; -float ldexpf(float x, int exp) {return (float)ldexp((double)x, exp);}; -float logf(float x) {return (float)log((double)x);}; -float log10f(float x) {return (float)log10((double)x);}; -float expm1f(float x) {return (float)expm1((double)x);}; -float log1pf(float x) {return (float)log1p((double)x);}; -float logbf(float x) {return (float)logb((double)x);}; -float powf(float x, float y) {return (float)pow((double)x, (double)y);}; -float sqrtf(float x) {return (float)sqrt((double)x);}; -float hypotf(float x, float y) {return (float)hypot((double)x, (double)y);}; -float erff(float x) {return (float)erf((double)x);}; -float erfcf(float x) {return (float)erfc((double)x);}; -float gammaf(float x) {return (float)gamma((double)x);}; -float lgammaf(float x) {return (float)lgamma((double)x);}; -float scalbf(float x, float n) {return (float)scalb((double)x, (double)n);}; - - -int -__signbitf(float value) -{ - // TODO: this is broken on most non x86 machines - // this should be implemented arch dependent! - union { float v; int i; } u = { v: value }; - return u.i < 0; -} - -int -__signbit(double value) -{ - // TODO: this is broken on most non x86 machines - // this should be implemented arch dependent! - union { double v; int i[2]; } u = { v: value }; - return u.i[1] < 0; -} - - -int -__signbitl(long double value) -{ - // TODO: this is broken on most non x86 machines - // this should be implemented arch dependent! - union { long double v; int i[2]; } u = { v: value }; - return (u.i[2] & 0x8000) != 0; -} - diff --git a/src/system/libroot/posix/math/fmod.c b/src/system/libroot/posix/math/fmod.c deleted file mode 100644 index 02f3b29082..0000000000 --- a/src/system/libroot/posix/math/fmod.c +++ /dev/null @@ -1,86 +0,0 @@ -/* - * Copyright (c) 1989, 1993 - * The Regents of the University of California. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#include - -/* fmod.c - * - * SYNOPSIS - * - * #include - * double fmod(double x, double y) - * - * DESCRIPTION - * - * The fmod function computes the floating-point remainder of x/y. - * - * RETURNS - * - * The fmod function returns the value x-i*y, for some integer i - * such that, if y is nonzero, the result has the same sign as x and - * magnitude less than the magnitude of y. - * - * On a VAX or CCI, - * - * fmod(x,0) traps/faults on floating-point divided-by-zero. - * - * On IEEE-754 conforming machines with "isnan()" primitive, - * - * fmod(x,0), fmod(INF,y) are invalid operations and NaN is returned. - * - */ - - -double -fmod(double x, double y) -{ - int ir,iy; - double r,w; - - if (y == (double)0 -#if !defined(vax) && !defined(tahoe) /* per "fmod" manual entry, SunOS 4.0 */ - || isnan(y) || !finite(x) -#endif /* !defined(vax) && !defined(tahoe) */ - ) - return (x*y)/(x*y); - - r = fabs(x); - y = fabs(y); - (void)frexp(y,&iy); - while (r >= y) { - (void)frexp(r,&ir); - w = ldexp(y,ir-iy); - r -= w <= r ? w : w*(double)0.5; - } - return x >= (double)0 ? r : -r; -} diff --git a/src/system/libroot/posix/math/gamma.c b/src/system/libroot/posix/math/gamma.c deleted file mode 100644 index fc9f538949..0000000000 --- a/src/system/libroot/posix/math/gamma.c +++ /dev/null @@ -1,347 +0,0 @@ -/*- - * Copyright (c) 1992, 1993 - * The Regents of the University of California. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -/* - * This code by P. McIlroy, Oct 1992; - * - * The financial support of UUNET Communications Services is greatfully - * acknowledged. - */ - -#include -#include -#include - -/* METHOD: - * x < 0: Use reflection formula, G(x) = pi/(sin(pi*x)*x*G(x)) - * At negative integers, return +Inf, and set errno. - * - * x < 6.5: - * Use argument reduction G(x+1) = xG(x) to reach the - * range [1.066124,2.066124]. Use a rational - * approximation centered at the minimum (x0+1) to - * ensure monotonicity. - * - * x >= 6.5: Use the asymptotic approximation (Stirling's formula) - * adjusted for equal-ripples: - * - * log(G(x)) ~= (x-.5)*(log(x)-1) + .5(log(2*pi)-1) + 1/x*P(1/(x*x)) - * - * Keep extra precision in multiplying (x-.5)(log(x)-1), to - * avoid premature round-off. - * - * Special values: - * non-positive integer: Set overflow trap; return +Inf; - * x > 171.63: Set overflow trap; return +Inf; - * NaN: Set invalid trap; return NaN - * - * Accuracy: Gamma(x) is accurate to within - * x > 0: error provably < 0.9ulp. - * Maximum observed in 1,000,000 trials was .87ulp. - * x < 0: - * Maximum observed error < 4ulp in 1,000,000 trials. - */ - -static double neg_gam(double); -static double small_gam(double); -static double smaller_gam(double); -static struct Double large_gam(double); -static struct Double ratfun_gam(double, double); - -/* - * Rational approximation, A0 + x*x*P(x)/Q(x), on the interval - * [1.066.., 2.066..] accurate to 4.25e-19. - */ -#define LEFT -.3955078125 /* left boundary for rat. approx */ -#define x0 .461632144968362356785 /* xmin - 1 */ - -#define a0_hi 0.88560319441088874992 -#define a0_lo -.00000000000000004996427036469019695 -#define P0 6.21389571821820863029017800727e-01 -#define P1 2.65757198651533466104979197553e-01 -#define P2 5.53859446429917461063308081748e-03 -#define P3 1.38456698304096573887145282811e-03 -#define P4 2.40659950032711365819348969808e-03 -#define Q0 1.45019531250000000000000000000e+00 -#define Q1 1.06258521948016171343454061571e+00 -#define Q2 -2.07474561943859936441469926649e-01 -#define Q3 -1.46734131782005422506287573015e-01 -#define Q4 3.07878176156175520361557573779e-02 -#define Q5 5.12449347980666221336054633184e-03 -#define Q6 -1.76012741431666995019222898833e-03 -#define Q7 9.35021023573788935372153030556e-05 -#define Q8 6.13275507472443958924745652239e-06 -/* - * Constants for large x approximation (x in [6, Inf]) - * (Accurate to 2.8*10^-19 absolute) - */ -#define lns2pi_hi 0.418945312500000 -#define lns2pi_lo -.000006779295327258219670263595 -#define Pa0 8.33333333333333148296162562474e-02 -#define Pa1 -2.77777777774548123579378966497e-03 -#define Pa2 7.93650778754435631476282786423e-04 -#define Pa3 -5.95235082566672847950717262222e-04 -#define Pa4 8.41428560346653702135821806252e-04 -#define Pa5 -1.89773526463879200348872089421e-03 -#define Pa6 5.69394463439411649408050664078e-03 -#define Pa7 -1.44705562421428915453880392761e-02 - -static const double zero = 0., one = 1.0, tiny = 1e-300; -static int endian; -/* - * TRUNC sets trailing bits in a floating-point number to zero. - * is a temporary variable. - */ -#if defined(vax) || defined(tahoe) -#define _IEEE 0 -#define TRUNC(x) x = (double) (float) (x) -#else -#define _IEEE 1 -#define TRUNC(x) *(((int *) &x) + endian) &= 0xf8000000 -#define infnan(x) 0.0 -#endif - -double -gamma(x) - double x; -{ - struct Double u; - endian = (*(int *) &one) ? 1 : 0; - - if (x >= 6) { - if(x > 171.63) - return(one/zero); - u = large_gam(x); - return(__exp__D(u.a, u.b)); - } else if (x >= 1.0 + LEFT + x0) { - return (small_gam(x)); - } else if (x > 1.e-17) { - return (smaller_gam(x)); - } else if (x > -1.e-17) { - if (x == 0.0) { - if (!_IEEE) return (infnan(ERANGE)); - else return (one/x); - } - (void volatile)(one+1e-20); /* Raise inexact flag. */ - return (one/x); - } else if (!finite(x)) { - if (_IEEE) /* x = NaN, -Inf */ - return (x*x); - else - return (infnan(EDOM)); - } else { - return (neg_gam(x)); - } -} -/* - * Accurate to max(ulp(1/128) absolute, 2^-66 relative) error. - */ -static -struct Double -large_gam(double x) -{ - double z; - double p; - struct Double t; - struct Double u; - struct Double v; - - z = one/(x*x); - p = Pa0+z*(Pa1+z*(Pa2+z*(Pa3+z*(Pa4+z*(Pa5+z*(Pa6+z*Pa7)))))); - p = p/x; - - u = __log__D(x); - u.a -= one; - v.a = (x -= .5); - TRUNC(v.a); - v.b = x - v.a; - t.a = v.a*u.a; /* t = (x-.5)*(log(x)-1) */ - t.b = v.b*u.a + x*u.b; - /* return t.a + t.b + lns2pi_hi + lns2pi_lo + p */ - t.b += lns2pi_lo; t.b += p; - u.a = lns2pi_hi + t.b; u.a += t.a; - u.b = t.a - u.a; - u.b += lns2pi_hi; u.b += t.b; - return (u); -} -/* - * Good to < 1 ulp. (provably .90 ulp; .87 ulp on 1,000,000 runs.) - * It also has correct monotonicity. - */ -static -double -small_gam(double x) -{ - double y; - double ym1; - double t; - struct Double yy; - struct Double r; - - y = x - one; - ym1 = y - one; - if (y <= 1.0 + (LEFT + x0)) { - yy = ratfun_gam(y - x0, 0); - return (yy.a + yy.b); - } - r.a = y; - TRUNC(r.a); - yy.a = r.a - one; - y = ym1; - yy.b = r.b = y - yy.a; - /* Argument reduction: G(x+1) = x*G(x) */ - for (ym1 = y-one; ym1 > LEFT + x0; y = ym1--, yy.a--) { - t = r.a*yy.a; - r.b = r.a*yy.b + y*r.b; - r.a = t; - TRUNC(r.a); - r.b += (t - r.a); - } - /* Return r*gamma(y). */ - yy = ratfun_gam(y - x0, 0); - y = r.b*(yy.a + yy.b) + r.a*yy.b; - y += yy.a*r.a; - return (y); -} -/* - * Good on (0, 1+x0+LEFT]. Accurate to 1ulp. - */ -static -double -smaller_gam(double x) -{ - double t; - double d; - struct Double r; - struct Double xx; - - if (x < x0 + LEFT) { - t = x, TRUNC(t); - d = (t+x)*(x-t); - t *= t; - xx.a = (t + x), TRUNC(xx.a); - xx.b = x - xx.a; xx.b += t; xx.b += d; - t = (one-x0); t += x; - d = (one-x0); d -= t; d += x; - x = xx.a + xx.b; - } else { - xx.a = x, TRUNC(xx.a); - xx.b = x - xx.a; - t = x - x0; - d = (-x0 -t); d += x; - } - r = ratfun_gam(t, d); - d = r.a/x, TRUNC(d); - r.a -= d*xx.a; r.a -= d*xx.b; r.a += r.b; - return (d + r.a/x); -} -/* - * returns (z+c)^2 * P(z)/Q(z) + a0 - */ -static -struct Double -ratfun_gam(double z, double c) -{ - double p; - double q; - struct Double r; - struct Double t; - - q = Q0 +z*(Q1+z*(Q2+z*(Q3+z*(Q4+z*(Q5+z*(Q6+z*(Q7+z*Q8))))))); - p = P0 + z*(P1 + z*(P2 + z*(P3 + z*P4))); - - /* return r.a + r.b = a0 + (z+c)^2*p/q, with r.a truncated to 26 bits. */ - p = p/q; - t.a = z, TRUNC(t.a); /* t ~= z + c */ - t.b = (z - t.a) + c; - t.b *= (t.a + z); - q = (t.a *= t.a); /* t = (z+c)^2 */ - TRUNC(t.a); - t.b += (q - t.a); - r.a = p, TRUNC(r.a); /* r = P/Q */ - r.b = p - r.a; - t.b = t.b*p + t.a*r.b + a0_lo; - t.a *= r.a; /* t = (z+c)^2*(P/Q) */ - r.a = t.a + a0_hi, TRUNC(r.a); - r.b = ((a0_hi-r.a) + t.a) + t.b; - return (r); /* r = a0 + t */ -} - -static -double -neg_gam(double x) -{ - int sgn = 1; - struct Double lg; - struct Double lsine; - double y; - double z; - - y = floor(x + .5); - if (y == x) { /* Negative integer. */ - if(!_IEEE) - return (infnan(ERANGE)); - else - return (one/zero); - } - z = fabs(x - y); - y = .5*ceil(x); - if (y == ceil(y)) - sgn = -1; - if (z < .25) - z = sin(M_PI*z); - else - z = cos(M_PI*(0.5-z)); - /* Special case: G(1-x) = Inf; G(x) may be nonzero. */ - if (x < -170) { - if (x < -190) - return ((double)sgn*tiny*tiny); - y = one - x; /* exact: 128 < |x| < 255 */ - lg = large_gam(y); - lsine = __log__D(M_PI/z); /* = TRUNC(log(u)) + small */ - lg.a -= lsine.a; /* exact (opposite signs) */ - lg.b -= lsine.b; - y = -(lg.a + lg.b); - z = (y + lg.a) + lg.b; - y = __exp__D(y, z); - if (sgn < 0) y = -y; - return (y); - } - y = one-x; - if (one-y == x) - y = gamma(y); - else /* 1-x is inexact */ - y = -x*gamma(-x); - if (sgn < 0) y = -y; - return (M_PI / (y*z)); -} diff --git a/src/system/libroot/posix/math/ieee.c b/src/system/libroot/posix/math/ieee.c deleted file mode 100644 index 6dfc50a264..0000000000 --- a/src/system/libroot/posix/math/ieee.c +++ /dev/null @@ -1,537 +0,0 @@ -/* - * Copyright (c) 1985, 1993 - * The Regents of the University of California. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -/* - * Some IEEE standard 754 recommended functions and remainder and sqrt for - * supporting the C elementary functions. - ****************************************************************************** - * WARNING: - * These codes are developed (in double) to support the C elementary - * functions temporarily. They are not universal, and some of them are very - * slow (in particular, drem and sqrt is extremely inefficient). Each - * computer system should have its implementation of these functions using - * its own assembler. - ****************************************************************************** - * - * IEEE 754 required operations: - * drem(x,p) - * returns x REM y = x - [x/y]*y , where [x/y] is the integer - * nearest x/y; in half way case, choose the even one. - * sqrt(x) - * returns the square root of x correctly rounded according to - * the rounding mod. - * - * IEEE 754 recommended functions: - * (a) copysign(x,y) - * returns x with the sign of y. - * (b) scalb(x,N) - * returns x * (2**N), for integer values N. - * (c) logb(x) - * returns the unbiased exponent of x, a signed integer in - * double precision, except that logb(0) is -INF, logb(INF) - * is +INF, and logb(NAN) is that NAN. - * (d) finite(x) - * returns the value TRUE if -INF < x < +INF and returns - * FALSE otherwise. - * - * - * CODED IN C BY K.C. NG, 11/25/84; - * REVISED BY K.C. NG on 1/22/85, 2/13/85, 3/24/85. - */ - -#include - -#if defined(vax)||defined(tahoe) /* VAX D format */ -#include - static const unsigned short msign=0x7fff , mexp =0x7f80 ; - static const short prep1=57, gap=7, bias=129 ; - static const double novf=1.7E38, nunf=3.0E-39, zero=0.0 ; -#else /* defined(vax)||defined(tahoe) */ - static const unsigned short msign=0x7fff, mexp =0x7ff0 ; - static const short prep1=54, gap=4, bias=1023 ; - static const double novf=1.7E308, nunf=3.0E-308,zero=0.0; -#endif /* defined(vax)||defined(tahoe) */ - - -double -scalb(double x, double N) -{ - int k; - -#ifdef national - unsigned short *px=(unsigned short *) &x + 3; -#else /* national */ - unsigned short *px=(unsigned short *) &x; -#endif /* national */ - - if( x == zero ) return(x); - -#if defined(vax)||defined(tahoe) - if( (k= *px & mexp ) != ~msign ) { - if (N < -260) - return(nunf*nunf); - else if (N > 260) { - return(copysign(infnan(ERANGE),x)); - } -#else /* defined(vax)||defined(tahoe) */ - if( (k= *px & mexp ) != mexp ) { - if( N<-2100) return(nunf*nunf); else if(N>2100) return(novf+novf); - if( k == 0 ) { - x *= scalb(1.0,(int)prep1); - N -= prep1; - return(scalb(x,N)); - } -#endif /* defined(vax)||defined(tahoe) */ - - if((k = (k>>gap)+ N) > 0 ) { - if( k < (mexp>>gap) ) *px = (*px&~mexp) | (k< -prep1 ) { - /* gradual underflow */ - *px=(*px&~mexp)|(short)(1<>gap)-bias); -#else /* defined(vax)||defined(tahoe) */ - if( (k= *px & mexp ) != mexp ) - if ( k != 0 ) - return ( (k>>gap) - bias ); - else if( x != zero) - return ( -1022.0 ); - else - return(-(1.0/zero)); - else if(x != x) - return(x); - else - {*px &= msign; return(x);} -#endif /* defined(vax)||defined(tahoe) */ -} - -int -finite(double x) -{ -#if defined(vax)||defined(tahoe) - return(1); -#else /* defined(vax)||defined(tahoe) */ -#ifdef national - return( (*((short *) &x+3 ) & mexp ) != mexp ); -#else /* national */ - return( (*((short *) &x ) & mexp ) != mexp ); -#endif /* national */ -#endif /* defined(vax)||defined(tahoe) */ -} -#endif - -double -drem(double x, double p) -{ - short sign; - double hp; - double dp; - double tmp; - unsigned short k; -#ifdef national - unsigned short *px=(unsigned short *) &x +3; - unsigned short *pp=(unsigned short *) &p +3; - unsigned short *pd=(unsigned short *) &dp +3; - unsigned short *pt=(unsigned short *) &tmp+3; -#else /* national */ - unsigned short *px=(unsigned short *) &x; - unsigned short *pp=(unsigned short *) &p; - unsigned short *pd=(unsigned short *) &dp; - unsigned short *pt=(unsigned short *) &tmp; -#endif /* national */ - - *pp &= msign ; - -#if defined(vax)||defined(tahoe) - if( ( *px & mexp ) == ~msign ) /* is x a reserved operand? */ -#else /* defined(vax)||defined(tahoe) */ - if( ( *px & mexp ) == mexp ) -#endif /* defined(vax)||defined(tahoe) */ - return (x-p)-(x-p); /* create nan if x is inf */ - if (p == zero) { -#if defined(vax)||defined(tahoe) - return(infnan(EDOM)); -#else /* defined(vax)||defined(tahoe) */ - return zero/zero; -#endif /* defined(vax)||defined(tahoe) */ - } - -#if defined(vax)||defined(tahoe) - if( ( *pp & mexp ) == ~msign ) /* is p a reserved operand? */ -#else /* defined(vax)||defined(tahoe) */ - if( ( *pp & mexp ) == mexp ) -#endif /* defined(vax)||defined(tahoe) */ - { if (p != p) return p; else return x;} - - else if ( ((*pp & mexp)>>gap) <= 1 ) - /* subnormal p, or almost subnormal p */ - { double b; b=scalb(1.0,(int)prep1); - p *= b; x = drem(x,p); x *= b; return(drem(x,p)/b);} - else if ( p >= novf/2) - { p /= 2 ; x /= 2; return(drem(x,p)*2);} - else - { - dp=p+p; hp=p/2; - sign= *px & ~msign ; - *px &= msign ; - while ( x > dp ) - { - k=(*px & mexp) - (*pd & mexp) ; - tmp = dp ; - *pt += k ; - -#if defined(vax)||defined(tahoe) - if( x < tmp ) *pt -= 128 ; -#else /* defined(vax)||defined(tahoe) */ - if( x < tmp ) *pt -= 16 ; -#endif /* defined(vax)||defined(tahoe) */ - - x -= tmp ; - } - if ( x > hp ) - { x -= p ; if ( x >= hp ) x -= p ; } - -#if defined(vax)||defined(tahoe) - if (x) -#endif /* defined(vax)||defined(tahoe) */ - *px ^= sign; - return( x); - - } -} - - -double -sqrt(double x) -{ - double q; - double s; - double b; - double r; - double t; - double const zero=0.0; - int m; - int n; - int i; -#if defined(vax)||defined(tahoe) - int k=54; -#else /* defined(vax)||defined(tahoe) */ - int k=51; -#endif /* defined(vax)||defined(tahoe) */ - - /* sqrt(NaN) is NaN, sqrt(+-0) = +-0 */ - if(x!=x||x==zero) return(x); - - /* sqrt(negative) is invalid */ - if(x1.0) t=1; /* b>1 : Round-to-(+INF) */ - if(t>=0) q+=r; } /* else: Round-to-nearest */ - else { - s *= 2; x *= 4; - t = (x-s)-1; - b=1.0+3*r/4; if(b==1.0) goto end; - b=1.0+r/4; if(b>1.0) t=1; - if(t>=0) q+=r; } - -end: return(scalb(q,n)); -} - -#if 0 -/* DREM(X,Y) - * RETURN X REM Y =X-N*Y, N=[X/Y] ROUNDED (ROUNDED TO EVEN IN THE HALF WAY CASE) - * DOUBLE PRECISION (VAX D format 56 bits, IEEE DOUBLE 53 BITS) - * INTENDED FOR ASSEMBLY LANGUAGE - * CODED IN C BY K.C. NG, 3/23/85, 4/8/85. - * - * Warning: this code should not get compiled in unless ALL of - * the following machine-dependent routines are supplied. - * - * Required machine dependent functions (not on a VAX): - * swapINX(i): save inexact flag and reset it to "i" - * swapENI(e): save inexact enable and reset it to "e" - */ - -double drem(x,y) -double x,y; -{ - -#ifdef national /* order of words in floating point number */ - static const n0=3,n1=2,n2=1,n3=0; -#else /* VAX, SUN, ZILOG, TAHOE */ - static const n0=0,n1=1,n2=2,n3=3; -#endif - - static const unsigned short mexp =0x7ff0, m25 =0x0190, m57 =0x0390; - static const double zero=0.0; - double hy,y1,t,t1; - short k; - long n; - int i,e; - unsigned short xexp,yexp, *px =(unsigned short *) &x , - nx,nf, *py =(unsigned short *) &y , - sign, *pt =(unsigned short *) &t , - *pt1 =(unsigned short *) &t1 ; - - xexp = px[n0] & mexp ; /* exponent of x */ - yexp = py[n0] & mexp ; /* exponent of y */ - sign = px[n0] &0x8000; /* sign of x */ - -/* return NaN if x is NaN, or y is NaN, or x is INF, or y is zero */ - if(x!=x) return(x); if(y!=y) return(y); /* x or y is NaN */ - if( xexp == mexp ) return(zero/zero); /* x is INF */ - if(y==zero) return(y/y); - -/* save the inexact flag and inexact enable in i and e respectively - * and reset them to zero - */ - i=swapINX(0); e=swapENI(0); - -/* subnormal number */ - nx=0; - if(yexp==0) {t=1.0,pt[n0]+=m57; y*=t; nx=m57;} - -/* if y is tiny (biased exponent <= 57), scale up y to y*2**57 */ - if( yexp <= m57 ) {py[n0]+=m57; nx+=m57; yexp+=m57;} - - nf=nx; - py[n0] &= 0x7fff; - px[n0] &= 0x7fff; - -/* mask off the least significant 27 bits of y */ - t=y; pt[n3]=0; pt[n2]&=0xf800; y1=t; - -/* LOOP: argument reduction on x whenever x > y */ -loop: - while ( x > y ) - { - t=y; - t1=y1; - xexp=px[n0]&mexp; /* exponent of x */ - k=xexp-yexp-m25; - if(k>0) /* if x/y >= 2**26, scale up y so that x/y < 2**26 */ - {pt[n0]+=k;pt1[n0]+=k;} - n=x/t; x=(x-n*t1)-n*(t-t1); - } - /* end while (x > y) */ - - if(nx!=0) {t=1.0; pt[n0]+=nx; x*=t; nx=0; goto loop;} - -/* final adjustment */ - - hy=y/2.0; - if(x>hy||((x==hy)&&n%2==1)) x-=y; - px[n0] ^= sign; - if(nf!=0) { t=1.0; pt[n0]-=nf; x*=t;} - -/* restore inexact flag and inexact enable */ - swapINX(i); swapENI(e); - - return(x); -} -#endif - -#if 0 -/* SQRT - * RETURN CORRECTLY ROUNDED (ACCORDING TO THE ROUNDING MODE) SQRT - * FOR IEEE DOUBLE PRECISION ONLY, INTENDED FOR ASSEMBLY LANGUAGE - * CODED IN C BY K.C. NG, 3/22/85. - * - * Warning: this code should not get compiled in unless ALL of - * the following machine-dependent routines are supplied. - * - * Required machine dependent functions: - * swapINX(i) ...return the status of INEXACT flag and reset it to "i" - * swapRM(r) ...return the current Rounding Mode and reset it to "r" - * swapENI(e) ...return the status of inexact enable and reset it to "e" - * addc(t) ...perform t=t+1 regarding t as a 64 bit unsigned integer - * subc(t) ...perform t=t-1 regarding t as a 64 bit unsigned integer - */ - -static const unsigned long table[] = { -0, 1204, 3062, 5746, 9193, 13348, 18162, 23592, 29598, 36145, 43202, 50740, -58733, 67158, 75992, 85215, 83599, 71378, 60428, 50647, 41945, 34246, 27478, -21581, 16499, 12183, 8588, 5674, 3403, 1742, 661, 130, }; - -double newsqrt(x) -double x; -{ - double y,z,t,addc(),subc() - double const b54=134217728.*134217728.; /* b54=2**54 */ - long mx,scalx; - long const mexp=0x7ff00000; - int i,j,r,e,swapINX(),swapRM(),swapENI(); - unsigned long *py=(unsigned long *) &y , - *pt=(unsigned long *) &t , - *px=(unsigned long *) &x ; -#ifdef national /* ordering of word in a floating point number */ - const int n0=1, n1=0; -#else - const int n0=0, n1=1; -#endif -/* Rounding Mode: RN ...round-to-nearest - * RZ ...round-towards 0 - * RP ...round-towards +INF - * RM ...round-towards -INF - */ - const int RN=0,RZ=1,RP=2,RM=3; - /* machine dependent: work on a Zilog Z8070 - * and a National 32081 & 16081 - */ - -/* exceptions */ - if(x!=x||x==0.0) return(x); /* sqrt(NaN) is NaN, sqrt(+-0) = +-0 */ - if(x<0) return((x-x)/(x-x)); /* sqrt(negative) is invalid */ - if((mx=px[n0]&mexp)==mexp) return(x); /* sqrt(+INF) is +INF */ - -/* save, reset, initialize */ - e=swapENI(0); /* ...save and reset the inexact enable */ - i=swapINX(0); /* ...save INEXACT flag */ - r=swapRM(RN); /* ...save and reset the Rounding Mode to RN */ - scalx=0; - -/* subnormal number, scale up x to x*2**54 */ - if(mx==0) {x *= b54 ; scalx-=0x01b00000;} - -/* scale x to avoid intermediate over/underflow: - * if (x > 2**512) x=x/2**512; if (x < 2**-512) x=x*2**512 */ - if(mx>0x5ff00000) {px[n0] -= 0x20000000; scalx+= 0x10000000;} - if(mx<0x1ff00000) {px[n0] += 0x20000000; scalx-= 0x10000000;} - -/* magic initial approximation to almost 8 sig. bits */ - py[n0]=(px[n0]>>1)+0x1ff80000; - py[n0]=py[n0]-table[(py[n0]>>15)&31]; - -/* Heron's rule once with correction to improve y to almost 18 sig. bits */ - t=x/y; y=y+t; py[n0]=py[n0]-0x00100006; py[n1]=0; - -/* triple to almost 56 sig. bits; now y approx. sqrt(x) to within 1 ulp */ - t=y*y; z=t; pt[n0]+=0x00100000; t+=z; z=(x-z)*y; - t=z/(t+x) ; pt[n0]+=0x00100000; y+=t; - -/* twiddle last bit to force y correctly rounded */ - swapRM(RZ); /* ...set Rounding Mode to round-toward-zero */ - swapINX(0); /* ...clear INEXACT flag */ - swapENI(e); /* ...restore inexact enable status */ - t=x/y; /* ...chopped quotient, possibly inexact */ - j=swapINX(i); /* ...read and restore inexact flag */ - if(j==0) { if(t==y) goto end; else t=subc(t); } /* ...t=t-ulp */ - b54+0.1; /* ..trigger inexact flag, sqrt(x) is inexact */ - if(r==RN) t=addc(t); /* ...t=t+ulp */ - else if(r==RP) { t=addc(t);y=addc(y);}/* ...t=t+ulp;y=y+ulp; */ - y=y+t; /* ...chopped sum */ - py[n0]=py[n0]-0x00100000; /* ...correctly rounded sqrt(x) */ -end: py[n0]=py[n0]+scalx; /* ...scale back y */ - swapRM(r); /* ...restore Rounding Mode */ - return(y); -} -#endif diff --git a/src/system/libroot/posix/math/j0.c b/src/system/libroot/posix/math/j0.c deleted file mode 100644 index 73040e8085..0000000000 --- a/src/system/libroot/posix/math/j0.c +++ /dev/null @@ -1,461 +0,0 @@ -/*- - * Copyright (c) 1992, 1993 - * The Regents of the University of California. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -/* - * 16 December 1992 - * Minor modifications by Peter McIlroy to adapt non-IEEE architecture. - */ - -/* - * ==================================================== - * Copyright (C) 1992 by Sun Microsystems, Inc. - * - * 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. - * ==================================================== - * - * ******************* WARNING ******************** - * This is an alpha version of SunPro's FDLIBM (Freely - * Distributable Math Library) for IEEE double precision - * arithmetic. FDLIBM is a basic math library written - * in C that runs on machines that conform to IEEE - * Standard 754/854. This alpha version is distributed - * for testing purpose. Those who use this software - * should report any bugs to - * - * fdlibm-comments@sunpro.eng.sun.com - * - * -- K.C. Ng, Oct 12, 1992 - * ************************************************ - */ - -/* double j0(double x), y0(double 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) = u0 + u1*z + ... + u6*z^6 - * V(z) = 1 + v1*z + ... + v4*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 -#include -#if defined(vax) || defined(tahoe) -#define _IEEE 0 -#else -#define _IEEE 1 -#define infnan(x) (0.0) -#endif - -static double pzero(double); -static double qzero(double); - -static double const huge = 1e300; -static double const zero = 0.0; -static double const one = 1.0; -static double const invsqrtpi= 5.641895835477562869480794515607725858441e-0001; -static double const tpi = 0.636619772367581343075535053490057448; - /* R0/S0 on [0, 2.00] */ -static double const r02 = 1.562499999999999408594634421055018003102e-0002; -static double const r03 = -1.899792942388547334476601771991800712355e-0004; -static double const r04 = 1.829540495327006565964161150603950916854e-0006; -static double const r05 = -4.618326885321032060803075217804816988758e-0009; -static double const s01 = 1.561910294648900170180789369288114642057e-0002; -static double const s02 = 1.169267846633374484918570613449245536323e-0004; -static double const s03 = 5.135465502073181376284426245689510134134e-0007; -static double const s04 = 1.166140033337900097836930825478674320464e-0009; - -double -j0(double x) -{ - double z; - double s; - double c; - double ss; - double cc; - double r; - double u; - double v; - - if (!finite(x)) { - if (_IEEE) return one/(x*x); - else return (0); - } - x = fabs(x); - if (x >= 2.0) { /* |x| >= 2.0 */ - s = sin(x); - c = cos(x); - ss = s-c; - cc = s+c; - if (x < .5 * DBL_MAX) { /* make sure x+x not overflow */ - z = -cos(x+x); - if ((s*c) 6.80564733841876927e+38) /* 2^129 */ - z = (invsqrtpi*cc)/sqrt(x); - else { - u = pzero(x); v = qzero(x); - z = invsqrtpi*(u*cc-v*ss)/sqrt(x); - } - return z; - } - if (x < 1.220703125e-004) { /* |x| < 2**-13 */ - if (huge+x > one) { /* raise inexact if x != 0 */ - if (x < 7.450580596923828125e-009) /* |x|<2**-27 */ - return one; - else return (one - 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 (x < one) { /* |x| < 1.00 */ - return (one + z*(-0.25+(r/s))); - } else { - u = 0.5*x; - return ((one+u)*(one-u)+z*(r/s)); - } -} - -static double const u00 = -7.380429510868722527422411862872999615628e-0002; -static double const u01 = 1.766664525091811069896442906220827182707e-0001; -static double const u02 = -1.381856719455968955440002438182885835344e-0002; -static double const u03 = 3.474534320936836562092566861515617053954e-0004; -static double const u04 = -3.814070537243641752631729276103284491172e-0006; -static double const u05 = 1.955901370350229170025509706510038090009e-0008; -static double const u06 = -3.982051941321034108350630097330144576337e-0011; -static double const v01 = 1.273048348341237002944554656529224780561e-0002; -static double const v02 = 7.600686273503532807462101309675806839635e-0005; -static double const v03 = 2.591508518404578033173189144579208685163e-0007; -static double const v04 = 4.411103113326754838596529339004302243157e-0010; - -double -y0(double x) -{ - double z; - double s; - double c; - double ss; - double cc; - double u; - double v; - /* Y0(NaN) is NaN, y0(-inf) is Nan, y0(inf) is 0 */ - if (!finite(x)) { - if (_IEEE) - return (one/(x+x*x)); - else - return (0); - } - if (x == 0) { - if (_IEEE) return (-one/zero); - else return(infnan(-ERANGE)); - } - if (x<0) { - if (_IEEE) return (zero/zero); - else return (infnan(EDOM)); - } - if (x >= 2.00) { /* |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. - */ - s = sin(x); - c = cos(x); - 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 (x < .5 * DBL_MAX) { /* make sure x+x not overflow */ - z = -cos(x+x); - if ((s*c) 6.80564733841876927e+38) /* > 2^129 */ - z = (invsqrtpi*ss)/sqrt(x); - else { - u = pzero(x); v = qzero(x); - z = invsqrtpi*(u*ss+v*cc)/sqrt(x); - } - return z; - } - if (x <= 7.450580596923828125e-009) { /* x < 2**-27 */ - return (u00 + tpi*log(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*(j0(x)*log(x))); -} - -/* 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 double const pr8[6] = { /* for x in [inf, 8]=1/[0,0.125] */ - 0.0, - -7.031249999999003994151563066182798210142e-0002, - -8.081670412753498508883963849859423939871e+0000, - -2.570631056797048755890526455854482662510e+0002, - -2.485216410094288379417154382189125598962e+0003, - -5.253043804907295692946647153614119665649e+0003, -}; -static double const ps8[5] = { - 1.165343646196681758075176077627332052048e+0002, - 3.833744753641218451213253490882686307027e+0003, - 4.059785726484725470626341023967186966531e+0004, - 1.167529725643759169416844015694440325519e+0005, - 4.762772841467309430100106254805711722972e+0004, -}; - -static double const pr5[6] = { /* for x in [8,4.5454]=1/[0.125,0.22001] */ - -1.141254646918944974922813501362824060117e-0011, - -7.031249408735992804117367183001996028304e-0002, - -4.159610644705877925119684455252125760478e+0000, - -6.767476522651671942610538094335912346253e+0001, - -3.312312996491729755731871867397057689078e+0002, - -3.464333883656048910814187305901796723256e+0002, -}; -static double const ps5[5] = { - 6.075393826923003305967637195319271932944e+0001, - 1.051252305957045869801410979087427910437e+0003, - 5.978970943338558182743915287887408780344e+0003, - 9.625445143577745335793221135208591603029e+0003, - 2.406058159229391070820491174867406875471e+0003, -}; - -static double const pr3[6] = {/* for x in [4.547,2.8571]=1/[0.2199,0.35001] */ - -2.547046017719519317420607587742992297519e-0009, - -7.031196163814817199050629727406231152464e-0002, - -2.409032215495295917537157371488126555072e+0000, - -2.196597747348830936268718293366935843223e+0001, - -5.807917047017375458527187341817239891940e+0001, - -3.144794705948885090518775074177485744176e+0001, -}; -static double const ps3[5] = { - 3.585603380552097167919946472266854507059e+0001, - 3.615139830503038919981567245265266294189e+0002, - 1.193607837921115243628631691509851364715e+0003, - 1.127996798569074250675414186814529958010e+0003, - 1.735809308133357510239737333055228118910e+0002, -}; - -static double const pr2[6] = {/* for x in [2.8570,2]=1/[0.3499,0.5] */ - -8.875343330325263874525704514800809730145e-0008, - -7.030309954836247756556445443331044338352e-0002, - -1.450738467809529910662233622603401167409e+0000, - -7.635696138235277739186371273434739292491e+0000, - -1.119316688603567398846655082201614524650e+0001, - -3.233645793513353260006821113608134669030e+0000, -}; -static double const ps2[5] = { - 2.222029975320888079364901247548798910952e+0001, - 1.362067942182152109590340823043813120940e+0002, - 2.704702786580835044524562897256790293238e+0002, - 1.538753942083203315263554770476850028583e+0002, - 1.465761769482561965099880599279699314477e+0001, -}; - -static -double -pzero(double x) -{ - double const *p; - double const *q; - double z; - double r; - double s; - if (x >= 8.00) {p = pr8; q= ps8;} - else if (x >= 4.54545211791992188) {p = pr5; q= ps5;} - else if (x >= 2.85714149475097656) {p = pr3; q= ps3;} - else if (x >= 2.00) {p = pr2; q= ps2;} - else {p = 0; q= 0; } /* should never happen */ - 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 double const qr8[6] = { /* for x in [inf, 8]=1/[0,0.125] */ - 0.0, - 7.324218749999350414479738504551775297096e-0002, - 1.176820646822526933903301695932765232456e+0001, - 5.576733802564018422407734683549251364365e+0002, - 8.859197207564685717547076568608235802317e+0003, - 3.701462677768878501173055581933725704809e+0004, -}; -static double const qs8[6] = { - 1.637760268956898345680262381842235272369e+0002, - 8.098344946564498460163123708054674227492e+0003, - 1.425382914191204905277585267143216379136e+0005, - 8.033092571195144136565231198526081387047e+0005, - 8.405015798190605130722042369969184811488e+0005, - -3.438992935378666373204500729736454421006e+0005, -}; - -static double const qr5[6] = { /* for x in [8,4.5454]=1/[0.125,0.22001] */ - 1.840859635945155400568380711372759921179e-0011, - 7.324217666126847411304688081129741939255e-0002, - 5.835635089620569401157245917610984757296e+0000, - 1.351115772864498375785526599119895942361e+0002, - 1.027243765961641042977177679021711341529e+0003, - 1.989977858646053872589042328678602481924e+0003, -}; -static double const qs5[6] = { - 8.277661022365377058749454444343415524509e+0001, - 2.077814164213929827140178285401017305309e+0003, - 1.884728877857180787101956800212453218179e+0004, - 5.675111228949473657576693406600265778689e+0004, - 3.597675384251145011342454247417399490174e+0004, - -5.354342756019447546671440667961399442388e+0003, -}; - -static double const qr3[6] = {/* for x in [4.547,2.8571]=1/[0.2199,0.35001] */ - 4.377410140897386263955149197672576223054e-0009, - 7.324111800429115152536250525131924283018e-0002, - 3.344231375161707158666412987337679317358e+0000, - 4.262184407454126175974453269277100206290e+0001, - 1.708080913405656078640701512007621675724e+0002, - 1.667339486966511691019925923456050558293e+0002, -}; -static double const qs3[6] = { - 4.875887297245871932865584382810260676713e+0001, - 7.096892210566060535416958362640184894280e+0002, - 3.704148226201113687434290319905207398682e+0003, - 6.460425167525689088321109036469797462086e+0003, - 2.516333689203689683999196167394889715078e+0003, - -1.492474518361563818275130131510339371048e+0002, -}; - -static double const qr2[6] = {/* for x in [2.8570,2]=1/[0.3499,0.5] */ - 1.504444448869832780257436041633206366087e-0007, - 7.322342659630792930894554535717104926902e-0002, - 1.998191740938159956838594407540292600331e+0000, - 1.449560293478857407645853071687125850962e+0001, - 3.166623175047815297062638132537957315395e+0001, - 1.625270757109292688799540258329430963726e+0001, -}; -static double const qs2[6] = { - 3.036558483552191922522729838478169383969e+0001, - 2.693481186080498724211751445725708524507e+0002, - 8.447837575953201460013136756723746023736e+0002, - 8.829358451124885811233995083187666981299e+0002, - 2.126663885117988324180482985363624996652e+0002, - -5.310954938826669402431816125780738924463e+0000, -}; - -static -double -qzero(double x) -{ - double const *p; - double const *q; - double s; - double r; - double z; - if (x >= 8.00) {p = qr8; q= qs8;} - else if (x >= 4.54545211791992188) {p = qr5; q= qs5;} - else if (x >= 2.85714149475097656) {p = qr3; q= qs3;} - else if (x >= 2.00) {p = qr2; q= qs2;} - else {p = 0; q= 0; } /* should never happen */ - 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 (-.125 + r/s)/x; -} diff --git a/src/system/libroot/posix/math/j1.c b/src/system/libroot/posix/math/j1.c deleted file mode 100644 index a633020cc0..0000000000 --- a/src/system/libroot/posix/math/j1.c +++ /dev/null @@ -1,469 +0,0 @@ -/*- - * Copyright (c) 1992, 1993 - * The Regents of the University of California. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -/* - * 16 December 1992 - * Minor modifications by Peter McIlroy to adapt non-IEEE architecture. - */ - -/* - * ==================================================== - * Copyright (C) 1992 by Sun Microsystems, Inc. - * - * 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. - * ==================================================== - * - * ******************* WARNING ******************** - * This is an alpha version of SunPro's FDLIBM (Freely - * Distributable Math Library) for IEEE double precision - * arithmetic. FDLIBM is a basic math library written - * in C that runs on machines that conform to IEEE - * Standard 754/854. This alpha version is distributed - * for testing purpose. Those who use this software - * should report any bugs to - * - * fdlibm-comments@sunpro.eng.sun.com - * - * -- K.C. Ng, Oct 12, 1992 - * ************************************************ - */ - -/* double j1(double x), y1(double 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 follows: - * 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 + u1*z + ... + u4*z^4 - * V(z) = 1 + v1*z + ... + v5*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 -#include - -#if defined(vax) || defined(tahoe) -#define _IEEE 0 -#else -#define _IEEE 1 -#define infnan(x) (0.0) -#endif - -static double pone(double); -static double qone(double); - -static double const huge = 1e300; -static double const zero = 0.0; -static double const one = 1.0; -static double const invsqrtpi= 5.641895835477562869480794515607725858441e-0001; -static double const tpi = 0.636619772367581343075535053490057448; - - /* R0/S0 on [0,2] */ -static double const r00 = -6.250000000000000020842322918309200910191e-0002; -static double const r01 = 1.407056669551897148204830386691427791200e-0003; -static double const r02 = -1.599556310840356073980727783817809847071e-0005; -static double const r03 = 4.967279996095844750387702652791615403527e-0008; -static double const s01 = 1.915375995383634614394860200531091839635e-0002; -static double const s02 = 1.859467855886309024045655476348872850396e-0004; -static double const s03 = 1.177184640426236767593432585906758230822e-0006; -static double const s04 = 5.046362570762170559046714468225101016915e-0009; -static double const s05 = 1.235422744261379203512624973117299248281e-0011; - -#define two_129 6.80564733841876926e+038 /* 2^129 */ -#define two_m54 5.55111512312578270e-017 /* 2^-54 */ -double -j1(double x) -{ - double z; - double s; - double c; - double ss; - double cc; - double r; - double u; - double v; - double y; - - y = fabs(x); - if (!finite(x)) { /* Inf or NaN */ - if (_IEEE && x != x) - return(x); - else - return (copysign(x, zero)); - } - y = fabs(x); - if (y >= 2) { /* |x| >= 2.0 */ - s = sin(y); - c = cos(y); - ss = -s-c; - cc = s-c; - if (y < .5*DBL_MAX) { /* make sure y+y not overflow */ - z = cos(y+y); - if ((s*c) two_129) /* x > 2^129 */ - z = (invsqrtpi*cc)/sqrt(y); - else -#endif /* defined(vax) || defined(tahoe) */ - { - u = pone(y); v = qone(y); - z = invsqrtpi*(u*cc-v*ss)/sqrt(y); - } - if (x < 0) return -z; - else return z; - } - if (y < 7.450580596923828125e-009) { /* |x|<2**-27 */ - if(huge+x>one) return 0.5*x;/* inexact if x!=0 necessary */ - } - 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*0.5+r/s); -} - -static double const u0[5] = { - -1.960570906462389484206891092512047539632e-0001, - 5.044387166398112572026169863174882070274e-0002, - -1.912568958757635383926261729464141209569e-0003, - 2.352526005616105109577368905595045204577e-0005, - -9.190991580398788465315411784276789663849e-0008, -}; -static double const v0[5] = { - 1.991673182366499064031901734535479833387e-0002, - 2.025525810251351806268483867032781294682e-0004, - 1.356088010975162198085369545564475416398e-0006, - 6.227414523646214811803898435084697863445e-0009, - 1.665592462079920695971450872592458916421e-0011, -}; - -double -y1(double x) -{ - double z; - double s; - double c; - double ss; - double cc; - double u; - double v; - - /* if Y1(NaN) is NaN, Y1(-inf) is NaN, Y1(inf) is 0 */ - if (!finite(x)) { - if (!_IEEE) return (infnan(EDOM)); - else if (x < 0) - return(zero/zero); - else if (x > 0) - return (0); - else - return(x); - } - if (x <= 0) { - if (_IEEE && x == 0) return -one/zero; - else if(x == 0) return(infnan(-ERANGE)); - else if(_IEEE) return (zero/zero); - else return(infnan(EDOM)); - } - if (x >= 2) { /* |x| >= 2.0 */ - s = sin(x); - c = cos(x); - ss = -s-c; - cc = s-c; - if (x < .5 * DBL_MAX) /* 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 (_IEEE && x>two_129) - z = (invsqrtpi*ss)/sqrt(x); - else { - u = pone(x); v = qone(x); - z = invsqrtpi*(u*ss+v*cc)/sqrt(x); - } - return z; - } - if (x <= two_m54) { /* x < 2**-54 */ - return (-tpi/x); - } - 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*(j1(x)*log(x)-one/x)); -} - -/* 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 double const pr8[6] = { /* for x in [inf, 8]=1/[0,0.125] */ - 0.0, - 1.171874999999886486643746274751925399540e-0001, - 1.323948065930735690925827997575471527252e+0001, - 4.120518543073785433325860184116512799375e+0002, - 3.874745389139605254931106878336700275601e+0003, - 7.914479540318917214253998253147871806507e+0003, -}; -static double const ps8[5] = { - 1.142073703756784104235066368252692471887e+0002, - 3.650930834208534511135396060708677099382e+0003, - 3.695620602690334708579444954937638371808e+0004, - 9.760279359349508334916300080109196824151e+0004, - 3.080427206278887984185421142572315054499e+0004, -}; - -static double const pr5[6] = { /* for x in [8,4.5454]=1/[0.125,0.22001] */ - 1.319905195562435287967533851581013807103e-0011, - 1.171874931906140985709584817065144884218e-0001, - 6.802751278684328781830052995333841452280e+0000, - 1.083081829901891089952869437126160568246e+0002, - 5.176361395331997166796512844100442096318e+0002, - 5.287152013633375676874794230748055786553e+0002, -}; -static double const ps5[5] = { - 5.928059872211313557747989128353699746120e+0001, - 9.914014187336144114070148769222018425781e+0002, - 5.353266952914879348427003712029704477451e+0003, - 7.844690317495512717451367787640014588422e+0003, - 1.504046888103610723953792002716816255382e+0003, -}; - -static double const pr3[6] = {/* for x in [4.547,2.8571]=1/[0.2199,0.35001] */ - 3.025039161373736032825049903408701962756e-0009, - 1.171868655672535980750284752227495879921e-0001, - 3.932977500333156527232725812363183251138e+0000, - 3.511940355916369600741054592597098912682e+0001, - 9.105501107507812029367749771053045219094e+0001, - 4.855906851973649494139275085628195457113e+0001, -}; -static double const ps3[5] = { - 3.479130950012515114598605916318694946754e+0001, - 3.367624587478257581844639171605788622549e+0002, - 1.046871399757751279180649307467612538415e+0003, - 8.908113463982564638443204408234739237639e+0002, - 1.037879324396392739952487012284401031859e+0002, -}; - -static double const pr2[6] = {/* for x in [2.8570,2]=1/[0.3499,0.5] */ - 1.077108301068737449490056513753865482831e-0007, - 1.171762194626833490512746348050035171545e-0001, - 2.368514966676087902251125130227221462134e+0000, - 1.224261091482612280835153832574115951447e+0001, - 1.769397112716877301904532320376586509782e+0001, - 5.073523125888185399030700509321145995160e+0000, -}; -static double const ps2[5] = { - 2.143648593638214170243114358933327983793e+0001, - 1.252902271684027493309211410842525120355e+0002, - 2.322764690571628159027850677565128301361e+0002, - 1.176793732871470939654351793502076106651e+0002, - 8.364638933716182492500902115164881195742e+0000, -}; - -static -double -pone(double x) -{ - double const *p; - double const *q; - double z; - double r; - double s; - - if (x >= 8.0) {p = pr8; q= ps8;} - else if (x >= 4.54545211791992188) {p = pr5; q= ps5;} - else if (x >= 2.85714149475097656) {p = pr3; q= ps3;} - else /* if (x >= 2.0) */ {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 double const qr8[6] = { /* for x in [inf, 8]=1/[0,0.125] */ - 0.0, - -1.025390624999927207385863635575804210817e-0001, - -1.627175345445899724355852152103771510209e+0001, - -7.596017225139501519843072766973047217159e+0002, - -1.184980667024295901645301570813228628541e+0004, - -4.843851242857503225866761992518949647041e+0004, -}; -static double const qs8[6] = { - 1.613953697007229231029079421446916397904e+0002, - 7.825385999233484705298782500926834217525e+0003, - 1.338753362872495800748094112937868089032e+0005, - 7.196577236832409151461363171617204036929e+0005, - 6.666012326177764020898162762642290294625e+0005, - -2.944902643038346618211973470809456636830e+0005, -}; - -static double const qr5[6] = { /* for x in [8,4.5454]=1/[0.125,0.22001] */ - -2.089799311417640889742251585097264715678e-0011, - -1.025390502413754195402736294609692303708e-0001, - -8.056448281239359746193011295417408828404e+0000, - -1.836696074748883785606784430098756513222e+0002, - -1.373193760655081612991329358017247355921e+0003, - -2.612444404532156676659706427295870995743e+0003, -}; -static double const qs5[6] = { - 8.127655013843357670881559763225310973118e+0001, - 1.991798734604859732508048816860471197220e+0003, - 1.746848519249089131627491835267411777366e+0004, - 4.985142709103522808438758919150738000353e+0004, - 2.794807516389181249227113445299675335543e+0004, - -4.719183547951285076111596613593553911065e+0003, -}; - -static double const qr3[6] = {/* for x in [4.547,2.8571]=1/[0.2199,0.35001] */ - -5.078312264617665927595954813341838734288e-0009, - -1.025378298208370901410560259001035577681e-0001, - -4.610115811394734131557983832055607679242e+0000, - -5.784722165627836421815348508816936196402e+0001, - -2.282445407376317023842545937526967035712e+0002, - -2.192101284789093123936441805496580237676e+0002, -}; -static double const qs3[6] = { - 4.766515503237295155392317984171640809318e+0001, - 6.738651126766996691330687210949984203167e+0002, - 3.380152866795263466426219644231687474174e+0003, - 5.547729097207227642358288160210745890345e+0003, - 1.903119193388108072238947732674639066045e+0003, - -1.352011914443073322978097159157678748982e+0002, -}; - -static double const qr2[6] = {/* for x in [2.8570,2]=1/[0.3499,0.5] */ - -1.783817275109588656126772316921194887979e-0007, - -1.025170426079855506812435356168903694433e-0001, - -2.752205682781874520495702498875020485552e+0000, - -1.966361626437037351076756351268110418862e+0001, - -4.232531333728305108194363846333841480336e+0001, - -2.137192117037040574661406572497288723430e+0001, -}; -static double const qs2[6] = { - 2.953336290605238495019307530224241335502e+0001, - 2.529815499821905343698811319455305266409e+0002, - 7.575028348686454070022561120722815892346e+0002, - 7.393932053204672479746835719678434981599e+0002, - 1.559490033366661142496448853793707126179e+0002, - -4.959498988226281813825263003231704397158e+0000, -}; - -static -double -qone(double x) -{ - double const *p; - double const *q; - double s; - double r; - double z; - if (x >= 8.0) {p = qr8; q= qs8;} - else if (x >= 4.54545211791992188) {p = qr5; q= qs5;} - else if (x >= 2.85714149475097656) {p = qr3; q= qs3;} - else /* if (x >= 2.0) */ {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 (.375 + r/s)/x; -} diff --git a/src/system/libroot/posix/math/jn.c b/src/system/libroot/posix/math/jn.c deleted file mode 100644 index f8e17cb517..0000000000 --- a/src/system/libroot/posix/math/jn.c +++ /dev/null @@ -1,318 +0,0 @@ -/*- - * Copyright (c) 1992, 1993 - * The Regents of the University of California. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -/* - * 16 December 1992 - * Minor modifications by Peter McIlroy to adapt non-IEEE architecture. - */ - -/* - * ==================================================== - * Copyright (C) 1992 by Sun Microsystems, Inc. - * - * 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. - * ==================================================== - * - * ******************* WARNING ******************** - * This is an alpha version of SunPro's FDLIBM (Freely - * Distributable Math Library) for IEEE double precision - * arithmetic. FDLIBM is a basic math library written - * in C that runs on machines that conform to IEEE - * Standard 754/854. This alpha version is distributed - * for testing purpose. Those who use this software - * should report any bugs to - * - * fdlibm-comments@sunpro.eng.sun.com - * - * -- K.C. Ng, Oct 12, 1992 - * ************************************************ - */ - -/* - * jn(int n, double x), yn(int n, double 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 nx, 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 -#include -#include - -#if defined(vax) || defined(tahoe) -#define _IEEE 0 -#else -#define _IEEE 1 -#define infnan(x) (0.0) -#endif - -static double const invsqrtpi= 5.641895835477562869480794515607725858441e-0001; -static double const two = 2.0; -static double const zero = 0.0; -static double const one = 1.0; - -double -jn(int n, double x) -{ - int i; - int sgn; - double a; - double b; - double temp; - double z; - double w; - - /* J(-n,x) = (-1)^n * J(n, x), J(n, -x) = (-1)^n * J(n, x) - * Thus, J(-n,x) = J(n,-x) - */ - /* if J(n,NaN) is NaN */ - if (_IEEE && isnan(x)) return x+x; - if (n<0){ - n = -n; - x = -x; - } - if (n==0) return(j0(x)); - if (n==1) return(j1(x)); - sgn = (n&1)&(x < zero); /* even n -- 0, odd n -- sign(x) */ - x = fabs(x); - if (x == 0 || !finite (x)) { /* if x is 0 or inf */ - b = zero; - } else if ((double) n <= x) { - /* Safe to use J(n+1,x)=2n/x *J(n,x)-J(n-1,x) */ - if (_IEEE && x >= 8.148143905337944345e+090) { - /* 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 - */ - switch(n&3) { - case 0: temp = cos(x)+sin(x); break; - case 1: temp = -cos(x)+sin(x); break; - case 2: temp = -cos(x)-sin(x); break; - case 3: temp = cos(x)-sin(x); break; - default: temp = 0; /* keep the stupid compiler silent */ - } - b = invsqrtpi*temp/sqrt(x); - } else { - a = j0(x); - b = j1(x); - for(i=1;i 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; int 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 will - * likely underflow to zero - */ - tmp = n; - v = two/x; - tmp = tmp*log(fabs(v*tmp)); - for (i=n-1;i>0;i--){ - temp = b; - b = ((i+i)/x)*b - a; - a = temp; - /* scale b to avoid spurious overflow */ -# if defined(vax) || defined(tahoe) -# define BMAX 1e13 -# else -# define BMAX 1e100 -# endif /* defined(vax) || defined(tahoe) */ - if (b > BMAX) { - a /= b; - t /= b; - b = one; - } - } - b = (t*j0(x)/b); - } - } - return ((sgn == 1) ? -b : b); -} - -double -yn(int n, double x) -{ - int i; - int sign; - double a; - double b; - double temp; - - /* Y(n,NaN), Y(n, x < 0) is NaN */ - if (x <= 0 || (_IEEE && x != x)) { - if (_IEEE && x < 0) return zero/zero; - else if (x < 0) return (infnan(EDOM)); - else if (_IEEE) return -one/zero; - else return(infnan(-ERANGE)); - } else if (!finite(x)) { - return(0); - } - sign = 1; - if (n<0){ - n = -n; - sign = 1 - ((n&1)<<2); - } - if (n == 0) return(y0(x)); - if (n == 1) return(sign*y1(x)); - if(_IEEE && x >= 8.148143905337944345e+090) { /* 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 - */ - switch (n&3) { - case 0: temp = sin(x)-cos(x); break; - case 1: temp = -sin(x)-cos(x); break; - case 2: temp = -sin(x)+cos(x); break; - case 3: temp = sin(x)+cos(x); break; - default: temp = 0; /* keep the stupid compiler silent */ - } - b = invsqrtpi*temp/sqrt(x); - } else { - a = y0(x); - b = y1(x); - /* quit if b is -inf */ - for (i = 1; i < n && !finite(b); i++){ - temp = b; - b = ((double)(i+i)/x)*b - a; - a = temp; - } - } - if (!_IEEE && !finite(b)) - return (infnan(-sign * ERANGE)); - return ((sign > 0) ? b : -b); -} diff --git a/src/system/libroot/posix/math/lgamma.c b/src/system/libroot/posix/math/lgamma.c deleted file mode 100644 index c1ca74b479..0000000000 --- a/src/system/libroot/posix/math/lgamma.c +++ /dev/null @@ -1,306 +0,0 @@ -/*- - * Copyright (c) 1992, 1993 - * The Regents of the University of California. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -/* - * Coded by Peter McIlroy, Nov 1992; - * - * The financial support of UUNET Communications Services is greatfully - * acknowledged. - */ - -#include -#include -#include - - -/* Log gamma function. - * Error: x > 0 error < 1.3ulp. - * x > 4, error < 1ulp. - * x > 9, error < .6ulp. - * x < 0, all bets are off. (When G(x) ~ 1, log(G(x)) ~ 0) - * Method: - * x > 6: - * Use the asymptotic expansion (Stirling's Formula) - * 0 < x < 6: - * Use gamma(x+1) = x*gamma(x) for argument reduction. - * Use rational approximation in - * the range 1.2, 2.5 - * Two approximations are used, one centered at the - * minimum to ensure monotonicity; one centered at 2 - * to maintain small relative error. - * x < 0: - * Use the reflection formula, - * G(1-x)G(x) = PI/sin(PI*x) - * Special values: - * non-positive integer returns +Inf. - * NaN returns NaN -*/ -static int endian; -#if defined(vax) || defined(tahoe) -#define _IEEE 0 -/* double and float have same size exponent field */ -#define TRUNC(x) x = (double) (float) (x) -#else -#define _IEEE 1 -#define TRUNC(x) *(((int *) &x) + endian) &= 0xf8000000 -#define infnan(x) 0.0 -#endif - -static double small_lgam(double); -static double large_lgam(double); -static double neg_lgam(double); -static /*double zero = 0.0,*/ double one = 1.0; -int signgam; - -#define UNDERFL (1e-1020 * 1e-1020) - -#define LEFT (1.0 - (x0 + .25)) -#define RIGHT (x0 - .218) -/* - * Constants for approximation in [1.244,1.712] -*/ -#define x0 0.461632144968362356785 -#define x0_lo -.000000000000000015522348162858676890521 -#define a0_hi -0.12148629128932952880859 -#define a0_lo .0000000007534799204229502 -#define r0 -2.771227512955130520e-002 -#define r1 -2.980729795228150847e-001 -#define r2 -3.257411333183093394e-001 -#define r3 -1.126814387531706041e-001 -#define r4 -1.129130057170225562e-002 -#define r5 -2.259650588213369095e-005 -#define s0 1.714457160001714442e+000 -#define s1 2.786469504618194648e+000 -#define s2 1.564546365519179805e+000 -#define s3 3.485846389981109850e-001 -#define s4 2.467759345363656348e-002 -/* - * Constants for approximation in [1.71, 2.5] -*/ -#define a1_hi 4.227843350984671344505727574870e-01 -#define a1_lo 4.670126436531227189e-18 -#define p0 3.224670334241133695662995251041e-01 -#define p1 3.569659696950364669021382724168e-01 -#define p2 1.342918716072560025853732668111e-01 -#define p3 1.950702176409779831089963408886e-02 -#define p4 8.546740251667538090796227834289e-04 -#define q0 1.000000000000000444089209850062e+00 -#define q1 1.315850076960161985084596381057e+00 -#define q2 6.274644311862156431658377186977e-01 -#define q3 1.304706631926259297049597307705e-01 -#define q4 1.102815279606722369265536798366e-02 -#define q5 2.512690594856678929537585620579e-04 -#define q6 -1.003597548112371003358107325598e-06 -/* - * Stirling's Formula, adjusted for equal-ripple. x in [6,Inf]. -*/ -#define lns2pi .418938533204672741780329736405 -#define pb0 8.33333333333333148296162562474e-02 -#define pb1 -2.77777777774548123579378966497e-03 -#define pb2 7.93650778754435631476282786423e-04 -#define pb3 -5.95235082566672847950717262222e-04 -#define pb4 8.41428560346653702135821806252e-04 -#define pb5 -1.89773526463879200348872089421e-03 -#define pb6 5.69394463439411649408050664078e-03 -#define pb7 -1.44705562421428915453880392761e-02 - -/* __pure double */ -double -lgamma(double x) -{ - double r; - - signgam = 1; - endian = ((*(int *) &one)) ? 1 : 0; - - if (!finite(x)) { - if (_IEEE) - return (x+x); - else return (infnan(EDOM)); - } - - if (x > 6 + RIGHT) { - r = large_lgam(x); - return (r); - } else if (x > 1e-16) { - return (small_lgam(x)); - } else if (x > -1e-16) { - if (x < 0) - signgam = -1, x = -x; - return (-log(x)); - } else { - return (neg_lgam(x)); - } -} - -static double -large_lgam(double x) -{ - double z, p, x1; - struct Double t, u, v; - u = __log__D(x); - u.a -= 1.0; - if (x > 1e15) { - v.a = x - 0.5; - TRUNC(v.a); - v.b = (x - v.a) - 0.5; - t.a = u.a*v.a; - t.b = x*u.b + v.b*u.a; - if (_IEEE == 0 && !finite(t.a)) - return(infnan(ERANGE)); - return(t.a + t.b); - } - x1 = 1./x; - z = x1*x1; - p = pb0+z*(pb1+z*(pb2+z*(pb3+z*(pb4+z*(pb5+z*(pb6+z*pb7)))))); - /* error in approximation = 2.8e-19 */ - - p = p*x1; /* error < 2.3e-18 absolute */ - /* 0 < p < 1/64 (at x = 5.5) */ - v.a = x = x - 0.5; - TRUNC(v.a); /* truncate v.a to 26 bits. */ - v.b = x - v.a; - t.a = v.a*u.a; /* t = (x-.5)*(log(x)-1) */ - t.b = v.b*u.a + x*u.b; - t.b += p; t.b += lns2pi; /* return t + lns2pi + p */ - return (t.a + t.b); -} - -static double -small_lgam(double x) -{ - int x_int; - double y, z, t, r = 0, p, q, hi, lo; - struct Double rr; - x_int = (x + .5); - y = x - x_int; - if (x_int <= 2 && y > RIGHT) { - t = y - x0; - y--; x_int++; - goto CONTINUE; - } else if (y < -LEFT) { - t = y +(1.0-x0); -CONTINUE: - z = t - x0_lo; - p = r0+z*(r1+z*(r2+z*(r3+z*(r4+z*r5)))); - q = s0+z*(s1+z*(s2+z*(s3+z*s4))); - r = t*(z*(p/q) - x0_lo); - t = .5*t*t; - z = 1.0; - switch (x_int) { - case 6: z = (y + 5); - case 5: z *= (y + 4); - case 4: z *= (y + 3); - case 3: z *= (y + 2); - rr = __log__D(z); - rr.b += a0_lo; rr.a += a0_hi; - return(((r+rr.b)+t+rr.a)); - case 2: return(((r+a0_lo)+t)+a0_hi); - case 0: r -= log1p(x); - default: rr = __log__D(x); - rr.a -= a0_hi; rr.b -= a0_lo; - return(((r - rr.b) + t) - rr.a); - } - } else { - p = p0+y*(p1+y*(p2+y*(p3+y*p4))); - q = q0+y*(q1+y*(q2+y*(q3+y*(q4+y*(q5+y*q6))))); - p = p*(y/q); - t = (double)(float) y; - z = y-t; - hi = (double)(float) (p+a1_hi); - lo = a1_hi - hi; lo += p; lo += a1_lo; - r = lo*y + z*hi; /* q + r = y*(a0+p/q) */ - q = hi*t; - z = 1.0; - switch (x_int) { - case 6: z = (y + 5); - case 5: z *= (y + 4); - case 4: z *= (y + 3); - case 3: z *= (y + 2); - rr = __log__D(z); - r += rr.b; r += q; - return(rr.a + r); - case 2: return (q+ r); - case 0: rr = __log__D(x); - r -= rr.b; r -= log1p(x); - r += q; r-= rr.a; - return(r); - default: rr = __log__D(x); - r -= rr.b; - q -= rr.a; - return (r+q); - } - } -} - -static double -neg_lgam(double x) -{ - int xi; - double y, z, one = 1.0, zero = 0.0; - extern double gamma(); - - /* avoid destructive cancellation as much as possible */ - if (x > -170) { - xi = x; - if (xi == x) { - if (_IEEE) - return(one/zero); - else - return(infnan(ERANGE)); - } - y = gamma(x); - if (y < 0) - y = -y, signgam = -1; - return (log(y)); - } - z = floor(x + .5); - if (z == x) { /* convention: G(-(integer)) -> +Inf */ - if (_IEEE) - return (one/zero); - else - return (infnan(ERANGE)); - } - y = .5*ceil(x); - if (y == ceil(y)) - signgam = -1; - x = -x; - z = fabs(x + z); /* 0 < z <= .5 */ - if (z < .25) - z = sin(M_PI*z); - else - z = cos(M_PI*(0.5-z)); - z = log(M_PI/(z*x)); - y = large_lgam(x); - return (z - y); -} diff --git a/src/system/libroot/posix/math/log.c b/src/system/libroot/posix/math/log.c deleted file mode 100644 index c45def28a9..0000000000 --- a/src/system/libroot/posix/math/log.c +++ /dev/null @@ -1,491 +0,0 @@ -/* - * Copyright (c) 1992, 1993 - * The Regents of the University of California. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#include -#include -#include - - -/* Table-driven natural logarithm. - * - * This code was derived, with minor modifications, from: - * Peter Tang, "Table-Driven Implementation of the - * Logarithm in IEEE Floating-Point arithmetic." ACM Trans. - * Math Software, vol 16. no 4, pp 378-400, Dec 1990). - * - * Calculates log(2^m*F*(1+f/F)), |f/j| <= 1/256, - * where F = j/128 for j an integer in [0, 128]. - * - * log(2^m) = log2_hi*m + log2_tail*m - * since m is an integer, the dominant term is exact. - * m has at most 10 digits (for subnormal numbers), - * and log2_hi has 11 trailing zero bits. - * - * log(F) = logF_hi[j] + logF_lo[j] is in tabular form in log_table.h - * logF_hi[] + 512 is exact. - * - * log(1+f/F) = 2*f/(2*F + f) + 1/12 * (2*f/(2*F + f))**3 + ... - * the leading term is calculated to extra precision in two - * parts, the larger of which adds exactly to the dominant - * m and F terms. - * There are two cases: - * 1. when m, j are non-zero (m | j), use absolute - * precision for the leading term. - * 2. when m = j = 0, |1-x| < 1/256, and log(x) ~= (x-1). - * In this case, use a relative precision of 24 bits. - * (This is done differently in the original paper) - * - * Special cases: - * 0 return signalling -Inf - * neg return signalling NaN - * +Inf return +Inf -*/ - -#if defined(vax) || defined(tahoe) -#define _IEEE 0 -#define TRUNC(x) x = (double) (float) (x) -#else -#define _IEEE 1 -#define endian (((*(int *) &one)) ? 1 : 0) -#define TRUNC(x) *(((int *) &x) + endian) &= 0xf8000000 -#define infnan(x) 0.0 -#endif - -#define N 128 - -/* Table of log(Fj) = logF_head[j] + logF_tail[j], for Fj = 1+j/128. - * Used for generation of extend precision logarithms. - * The constant 35184372088832 is 2^45, so the divide is exact. - * It ensures correct reading of logF_head, even for inaccurate - * decimal-to-binary conversion routines. (Everybody gets the - * right answer for integers less than 2^53.) - * Values for log(F) were generated using error < 10^-57 absolute - * with the bc -l package. -*/ -static double const A1 = .08333333333333178827; -static double const A2 = .01250000000377174923; -static double const A3 = .002232139987919447809; -static double const A4 = .0004348877777076145742; - -static double const logF_head[N+1] = { - 0., - .007782140442060381246, - .015504186535963526694, - .023167059281547608406, - .030771658666765233647, - .038318864302141264488, - .045809536031242714670, - .053244514518837604555, - .060624621816486978786, - .067950661908525944454, - .075223421237524235039, - .082443669210988446138, - .089612158689760690322, - .096729626458454731618, - .103796793681567578460, - .110814366340264314203, - .117783035656430001836, - .124703478501032805070, - .131576357788617315236, - .138402322859292326029, - .145182009844575077295, - .151916042025732167530, - .158605030176659056451, - .165249572895390883786, - .171850256926518341060, - .178407657472689606947, - .184922338493834104156, - .191394852999565046047, - .197825743329758552135, - .204215541428766300668, - .210564769107350002741, - .216873938300523150246, - .223143551314024080056, - .229374101064877322642, - .235566071312860003672, - .241719936886966024758, - .247836163904594286577, - .253915209980732470285, - .259957524436686071567, - .265963548496984003577, - .271933715484010463114, - .277868451003087102435, - .283768173130738432519, - .289633292582948342896, - .295464212893421063199, - .301261330578199704177, - .307025035294827830512, - .312755710004239517729, - .318453731118097493890, - .324119468654316733591, - .329753286372579168528, - .335355541920762334484, - .340926586970454081892, - .346466767346100823488, - .351976423156884266063, - .357455888922231679316, - .362905493689140712376, - .368325561158599157352, - .373716409793814818840, - .379078352934811846353, - .384411698910298582632, - .389716751140440464951, - .394993808240542421117, - .400243164127459749579, - .405465108107819105498, - .410659924985338875558, - .415827895143593195825, - .420969294644237379543, - .426084395310681429691, - .431173464818130014464, - .436236766774527495726, - .441274560805140936281, - .446287102628048160113, - .451274644139630254358, - .456237433481874177232, - .461175715122408291790, - .466089729924533457960, - .470979715219073113985, - .475845904869856894947, - .480688529345570714212, - .485507815781602403149, - .490303988045525329653, - .495077266798034543171, - .499827869556611403822, - .504556010751912253908, - .509261901790523552335, - .513945751101346104405, - .518607764208354637958, - .523248143765158602036, - .527867089620485785417, - .532464798869114019908, - .537041465897345915436, - .541597282432121573947, - .546132437597407260909, - .550647117952394182793, - .555141507540611200965, - .559615787935399566777, - .564070138285387656651, - .568504735352689749561, - .572919753562018740922, - .577315365035246941260, - .581691739635061821900, - .586049045003164792433, - .590387446602107957005, - .594707107746216934174, - .599008189645246602594, - .603290851438941899687, - .607555250224322662688, - .611801541106615331955, - .616029877215623855590, - .620240409751204424537, - .624433288012369303032, - .628608659422752680256, - .632766669570628437213, - .636907462236194987781, - .641031179420679109171, - .645137961373620782978, - .649227946625615004450, - .653301272011958644725, - .657358072709030238911, - .661398482245203922502, - .665422632544505177065, - .669430653942981734871, - .673422675212350441142, - .677398823590920073911, - .681359224807238206267, - .685304003098281100392, - .689233281238557538017, - .693147180560117703862 -}; - -static double const logF_tail[N+1] = { - 0., - -.00000000000000543229938420049, - .00000000000000172745674997061, - -.00000000000001323017818229233, - -.00000000000001154527628289872, - -.00000000000000466529469958300, - .00000000000005148849572685810, - -.00000000000002532168943117445, - -.00000000000005213620639136504, - -.00000000000001819506003016881, - .00000000000006329065958724544, - .00000000000008614512936087814, - -.00000000000007355770219435028, - .00000000000009638067658552277, - .00000000000007598636597194141, - .00000000000002579999128306990, - -.00000000000004654729747598444, - -.00000000000007556920687451336, - .00000000000010195735223708472, - -.00000000000017319034406422306, - -.00000000000007718001336828098, - .00000000000010980754099855238, - -.00000000000002047235780046195, - -.00000000000008372091099235912, - .00000000000014088127937111135, - .00000000000012869017157588257, - .00000000000017788850778198106, - .00000000000006440856150696891, - .00000000000016132822667240822, - -.00000000000007540916511956188, - -.00000000000000036507188831790, - .00000000000009120937249914984, - .00000000000018567570959796010, - -.00000000000003149265065191483, - -.00000000000009309459495196889, - .00000000000017914338601329117, - -.00000000000001302979717330866, - .00000000000023097385217586939, - .00000000000023999540484211737, - .00000000000015393776174455408, - -.00000000000036870428315837678, - .00000000000036920375082080089, - -.00000000000009383417223663699, - .00000000000009433398189512690, - .00000000000041481318704258568, - -.00000000000003792316480209314, - .00000000000008403156304792424, - -.00000000000034262934348285429, - .00000000000043712191957429145, - -.00000000000010475750058776541, - -.00000000000011118671389559323, - .00000000000037549577257259853, - .00000000000013912841212197565, - .00000000000010775743037572640, - .00000000000029391859187648000, - -.00000000000042790509060060774, - .00000000000022774076114039555, - .00000000000010849569622967912, - -.00000000000023073801945705758, - .00000000000015761203773969435, - .00000000000003345710269544082, - -.00000000000041525158063436123, - .00000000000032655698896907146, - -.00000000000044704265010452446, - .00000000000034527647952039772, - -.00000000000007048962392109746, - .00000000000011776978751369214, - -.00000000000010774341461609578, - .00000000000021863343293215910, - .00000000000024132639491333131, - .00000000000039057462209830700, - -.00000000000026570679203560751, - .00000000000037135141919592021, - -.00000000000017166921336082431, - -.00000000000028658285157914353, - -.00000000000023812542263446809, - .00000000000006576659768580062, - -.00000000000028210143846181267, - .00000000000010701931762114254, - .00000000000018119346366441110, - .00000000000009840465278232627, - -.00000000000033149150282752542, - -.00000000000018302857356041668, - -.00000000000016207400156744949, - .00000000000048303314949553201, - -.00000000000071560553172382115, - .00000000000088821239518571855, - -.00000000000030900580513238244, - -.00000000000061076551972851496, - .00000000000035659969663347830, - .00000000000035782396591276383, - -.00000000000046226087001544578, - .00000000000062279762917225156, - .00000000000072838947272065741, - .00000000000026809646615211673, - -.00000000000010960825046059278, - .00000000000002311949383800537, - -.00000000000058469058005299247, - -.00000000000002103748251144494, - -.00000000000023323182945587408, - -.00000000000042333694288141916, - -.00000000000043933937969737844, - .00000000000041341647073835565, - .00000000000006841763641591466, - .00000000000047585534004430641, - .00000000000083679678674757695, - -.00000000000085763734646658640, - .00000000000021913281229340092, - -.00000000000062242842536431148, - -.00000000000010983594325438430, - .00000000000065310431377633651, - -.00000000000047580199021710769, - -.00000000000037854251265457040, - .00000000000040939233218678664, - .00000000000087424383914858291, - .00000000000025218188456842882, - -.00000000000003608131360422557, - -.00000000000050518555924280902, - .00000000000078699403323355317, - -.00000000000067020876961949060, - .00000000000016108575753932458, - .00000000000058527188436251509, - -.00000000000035246757297904791, - -.00000000000018372084495629058, - .00000000000088606689813494916, - .00000000000066486268071468700, - .00000000000063831615170646519, - .00000000000025144230728376072, - -.00000000000017239444525614834 -}; - -double -log(double x) -{ - int m, j; - double F; - double f; - double g; - double q; - double u; - double u2; - double v; - static double const zero = 0.0; - static double const one = 1.0; - volatile double u1; - - /* Catch special cases */ - if (x <= 0) { - if (_IEEE && x == zero) /* log(0) = -Inf */ - return (-one/zero); - else if (_IEEE) /* log(neg) = NaN */ - return (zero/zero); - else if (x == zero) /* NOT REACHED IF _IEEE */ - return (infnan(-ERANGE)); - else - return (infnan(EDOM)); - } else if (!finite(x)) { - if (_IEEE) /* x = NaN, Inf */ - return (x+x); - else - return (infnan(ERANGE)); - } - - /* Argument reduction: 1 <= g < 2; x/2^m = g; */ - /* y = F*(1 + f/F) for |f| <= 2^-8 */ - - m = logb(x); - g = ldexp(x, -m); - if (_IEEE && m == -1022) { - j = logb(g), m += j; - g = ldexp(g, -j); - } - j = N*(g-1) + .5; - F = (1.0/N) * j + 1; /* F*128 is an integer in [128, 512] */ - f = g - F; - - /* Approximate expansion for log(1+f/F) ~= u + q */ - g = 1/(2*F+f); - u = 2*f*g; - v = u*u; - q = u*v*(A1 + v*(A2 + v*(A3 + v*A4))); - - /* case 1: u1 = u rounded to 2^-43 absolute. Since u < 2^-8, - * u1 has at most 35 bits, and F*u1 is exact, as F has < 8 bits. - * It also adds exactly to |m*log2_hi + log_F_head[j] | < 750 - */ - if (m | j) - u1 = u + 513, u1 -= 513; - - /* case 2: |1-x| < 1/256. The m- and j- dependent terms are zero; - * u1 = u to 24 bits. - */ - else - u1 = u, TRUNC(u1); - u2 = (2.0*(f - F*u1) - u1*f) * g; - /* u1 + u2 = 2f/(2F+f) to extra precision. */ - - /* log(x) = log(2^m*F*(1+f/F)) = */ - /* (m*log2_hi+logF_head[j]+u1) + (m*log2_lo+logF_tail[j]+q); */ - /* (exact) + (tiny) */ - - u1 += m*logF_head[N] + logF_head[j]; /* exact */ - u2 = (u2 + logF_tail[j]) + q; /* tiny */ - u2 += logF_tail[N]*m; - return (u1 + u2); -} - -/* - * Extra precision variant, returning struct {double a, b;}; - * log(x) = a+b to 63 bits, with a is rounded to 26 bits. - */ -struct Double -__log__D(double x) -{ - int m; - int j; - double F; - double f; - double g; - double q; - double u; - double v; - double u2; - static double const one = 1.0; - volatile double u1; - struct Double r; - - /* Argument reduction: 1 <= g < 2; x/2^m = g; */ - /* y = F*(1 + f/F) for |f| <= 2^-8 */ - - m = logb(x); - g = ldexp(x, -m); - if (_IEEE && m == -1022) { - j = logb(g), m += j; - g = ldexp(g, -j); - } - j = N*(g-1) + .5; - F = (1.0/N) * j + 1; - f = g - F; - - g = 1/(2*F+f); - u = 2*f*g; - v = u*u; - q = u*v*(A1 + v*(A2 + v*(A3 + v*A4))); - if (m | j) - u1 = u + 513, u1 -= 513; - else - u1 = u, TRUNC(u1); - u2 = (2.0*(f - F*u1) - u1*f) * g; - - u1 += m*logF_head[N] + logF_head[j]; - - u2 += logF_tail[j]; u2 += q; - u2 += logF_tail[N]*m; - r.a = u1 + u2; /* Only difference is here */ - TRUNC(r.a); - r.b = (u1 - r.a) + u2; - return (r); -} diff --git a/src/system/libroot/posix/math/log10.c b/src/system/libroot/posix/math/log10.c deleted file mode 100644 index ac29ad1d76..0000000000 --- a/src/system/libroot/posix/math/log10.c +++ /dev/null @@ -1,91 +0,0 @@ -/* - * Copyright (c) 1985, 1993 - * The Regents of the University of California. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -/* LOG10(X) - * RETURN THE BASE 10 LOGARITHM OF x - * DOUBLE PRECISION (VAX D format 56 bits, IEEE DOUBLE 53 BITS) - * CODED IN C BY K.C. NG, 1/20/85; - * REVISED BY K.C. NG on 1/23/85, 3/7/85, 4/16/85. - * - * Required kernel function: - * log(x) - * - * Method : - * log(x) - * log10(x) = --------- or [1/log(10)]*log(x) - * log(10) - * - * Note: - * [log(10)] rounded to 56 bits has error .0895 ulps, - * [1/log(10)] rounded to 53 bits has error .198 ulps; - * therefore, for better accuracy, in VAX D format, we divide - * log(x) by log(10), but in IEEE Double format, we multiply - * log(x) by [1/log(10)]. - * - * 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. - * - * Accuracy: - * log10(X) returns the exact log10(x) nearly rounded. In a test run - * with 1,536,000 random arguments on a VAX, the maximum observed - * error was 1.74 ulps (units 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. - */ - -#include - -vc(ln10hi, 2.3025850929940456790E0 ,5d8d,4113,a8ac,ddaa, 2, .935D8DDDAAA8AC) - -ic(ivln10, 4.3429448190325181667E-1, -2, 1.BCB7B1526E50E) - -#ifdef vccast -#define ln10hi vccast(ln10hi) -#endif - - -double log10(x) -double x; -{ -#if defined(vax)||defined(tahoe) - return(log(x)/ln10hi); -#else /* defined(vax)||defined(tahoe) */ - return(ivln10*log(x)); -#endif /* defined(vax)||defined(tahoe) */ -} diff --git a/src/system/libroot/posix/math/log1p.c b/src/system/libroot/posix/math/log1p.c deleted file mode 100644 index b18b3bbc36..0000000000 --- a/src/system/libroot/posix/math/log1p.c +++ /dev/null @@ -1,172 +0,0 @@ -/* - * Copyright (c) 1985, 1993 - * The Regents of the University of California. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -/* LOG1P(x) - * RETURN THE LOGARITHM OF 1+x - * DOUBLE PRECISION (VAX D FORMAT 56 bits, IEEE DOUBLE 53 BITS) - * CODED IN C BY K.C. NG, 1/19/85; - * REVISED BY K.C. NG on 2/6/85, 3/7/85, 3/24/85, 4/16/85. - * - * Required system supported functions: - * scalb(x,n) - * copysign(x,y) - * logb(x) - * finite(x) - * - * Required kernel function: - * log__L(z) - * - * Method : - * 1. Argument Reduction: find k and f such that - * 1+x = 2^k * (1+f), - * where sqrt(2)/2 < 1+f < sqrt(2) . - * - * 2. 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 + ....., - * log(1+f) is computed by - * - * log(1+f) = 2s + s*log__L(s*s) - * where - * log__L(z) = z*(L1 + z*(L2 + z*(... (L6 + z*L7)...))) - * - * See log__L() for the values of the coefficients. - * - * 3. Finally, log(1+x) = k*ln2 + log(1+f). - * - * Remarks 1. In step 3 n*ln2 will be stored in two floating point numbers - * n*ln2hi + n*ln2lo, where ln2hi is chosen such that the last - * 20 bits (for VAX D format), or the last 21 bits ( for IEEE - * double) is 0. This ensures n*ln2hi is exactly representable. - * 2. In step 1, f may not be representable. A correction term c - * for f is computed. It follows that the correction term for - * f - t (the leading term of log(1+f) in step 2) is c-c*x. We - * add this correction term to n*ln2lo to attenuate the error. - * - * - * Special cases: - * log1p(x) is NaN with signal if x < -1; log1p(NaN) is NaN with no signal; - * log1p(INF) is +INF; log1p(-1) is -INF with signal; - * only log1p(0)=0 is exact for finite argument. - * - * Accuracy: - * log1p(x) returns the exact log(1+x) nearly rounded. In a test run - * with 1,536,000 random arguments on a VAX, the maximum observed - * error was .846 ulps (units 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. - */ - -#include -#include - -vc(ln2hi, 6.9314718055829871446E-1 ,7217,4031,0000,f7d0, 0, .B17217F7D00000) -vc(ln2lo, 1.6465949582897081279E-12 ,bcd5,2ce7,d9cc,e4f1, -39, .E7BCD5E4F1D9CC) -vc(sqrt2, 1.4142135623730950622E0 ,04f3,40b5,de65,33f9, 1, .B504F333F9DE65) - -ic(ln2hi, 6.9314718036912381649E-1, -1, 1.62E42FEE00000) -ic(ln2lo, 1.9082149292705877000E-10, -33, 1.A39EF35793C76) -ic(sqrt2, 1.4142135623730951455E0, 0, 1.6A09E667F3BCD) - -#ifdef vccast -#define ln2hi vccast(ln2hi) -#define ln2lo vccast(ln2lo) -#define sqrt2 vccast(sqrt2) -#endif - -double log1p(x) -double x; -{ - static double const zero=0.0; - static double const negone= -1.0; - static double const one=1.0; - static double const half=1.0/2.0; - static double const small=1.0E-20; /* 1+small == 1 */ - double z; - double s; - double t; - double c; - int k; - -#if !defined(vax)&&!defined(tahoe) - if(x!=x) return(x); /* x is NaN */ -#endif /* !defined(vax)&&!defined(tahoe) */ - - if(finite(x)) { - if( x > negone ) { - - /* argument reduction */ - if(copysign(x,one)= sqrt2 ) - { k += 1 ; z *= half; t *= half; } - t += negone; x = z + t; - c = (t-x)+z ; /* correction term for x */ - - /* compute log(1+x) */ - s = x/(2+x); t = x*x*half; - c += (k*ln2lo-c*x); - z = c+s*(t+__log__L(s*s)); - x += (z - t) ; - - return(k*ln2hi+x); - } - /* end of if (x > negone) */ - - else { -#if defined(vax)||defined(tahoe) - if ( x == negone ) - return (infnan(-ERANGE)); /* -INF */ - else - return (infnan(EDOM)); /* NaN */ -#else /* defined(vax)||defined(tahoe) */ - /* x = -1, return -INF with signal */ - if ( x == negone ) return( negone/zero ); - - /* negative argument for log, return NaN with signal */ - else return ( zero / zero ); -#endif /* defined(vax)||defined(tahoe) */ - } - } - /* end of if (finite(x)) */ - - /* log(-INF) is NaN */ - else if(x<0) - return(zero/zero); - - /* log(+INF) is INF */ - else return(x); -} diff --git a/src/system/libroot/posix/math/log__L.c b/src/system/libroot/posix/math/log__L.c deleted file mode 100644 index 0d5c9191dd..0000000000 --- a/src/system/libroot/posix/math/log__L.c +++ /dev/null @@ -1,106 +0,0 @@ -/* - * Copyright (c) 1985, 1993 - * The Regents of the University of California. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -/* log__L(Z) - * LOG(1+X) - 2S X - * RETURN --------------- WHERE Z = S*S, S = ------- , 0 <= Z <= .0294... - * S 2 + X - * - * DOUBLE PRECISION (VAX D FORMAT 56 bits or IEEE DOUBLE 53 BITS) - * KERNEL FUNCTION FOR LOG; TO BE USED IN LOG1P, LOG, AND POW FUNCTIONS - * CODED IN C BY K.C. NG, 1/19/85; - * REVISED BY K.C. Ng, 2/3/85, 4/16/85. - * - * Method : - * 1. Polynomial approximation: let s = x/(2+x). - * Based on log(1+x) = log(1+s) - log(1-s) - * = 2s + 2/3 s**3 + 2/5 s**5 + ....., - * - * (log(1+x) - 2s)/s is computed by - * - * z*(L1 + z*(L2 + z*(... (L7 + z*L8)...))) - * - * where z=s*s. (See the listing below for Lk's values.) The - * coefficients are obtained by a special Remez algorithm. - * - * Accuracy: - * Assuming no rounding error, the maximum magnitude of the approximation - * error (absolute) is 2**(-58.49) for IEEE double, and 2**(-63.63) - * for VAX D format. - * - * 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 - -vc(L1, 6.6666666666666703212E-1 ,aaaa,402a,aac5,aaaa, 0, .AAAAAAAAAAAAC5) -vc(L2, 3.9999999999970461961E-1 ,cccc,3fcc,2684,cccc, -1, .CCCCCCCCCC2684) -vc(L3, 2.8571428579395698188E-1 ,4924,3f92,5782,92f8, -1, .92492492F85782) -vc(L4, 2.2222221233634724402E-1 ,8e38,3f63,af2c,39b7, -2, .E38E3839B7AF2C) -vc(L5, 1.8181879517064680057E-1 ,2eb4,3f3a,655e,cc39, -2, .BA2EB4CC39655E) -vc(L6, 1.5382888777946145467E-1 ,8551,3f1d,781d,e8c5, -2, .9D8551E8C5781D) -vc(L7, 1.3338356561139403517E-1 ,95b3,3f08,cd92,907f, -2, .8895B3907FCD92) -vc(L8, 1.2500000000000000000E-1 ,0000,3f00,0000,0000, -2, .80000000000000) - -ic(L1, 6.6666666666667340202E-1, -1, 1.5555555555592) -ic(L2, 3.9999999999416702146E-1, -2, 1.999999997FF24) -ic(L3, 2.8571428742008753154E-1, -2, 1.24924941E07B4) -ic(L4, 2.2222198607186277597E-1, -3, 1.C71C52150BEA6) -ic(L5, 1.8183562745289935658E-1, -3, 1.74663CC94342F) -ic(L6, 1.5314087275331442206E-1, -3, 1.39A1EC014045B) -ic(L7, 1.4795612545334174692E-1, -3, 1.2F039F0085122) - -#ifdef vccast -#define L1 vccast(L1) -#define L2 vccast(L2) -#define L3 vccast(L3) -#define L4 vccast(L4) -#define L5 vccast(L5) -#define L6 vccast(L6) -#define L7 vccast(L7) -#define L8 vccast(L8) -#endif - -double __log__L(z) -double z; -{ -#if defined(vax)||defined(tahoe) - return(z*(L1+z*(L2+z*(L3+z*(L4+z*(L5+z*(L6+z*(L7+z*L8)))))))); -#else /* defined(vax)||defined(tahoe) */ - return(z*(L1+z*(L2+z*(L3+z*(L4+z*(L5+z*(L6+z*L7))))))); -#endif /* defined(vax)||defined(tahoe) */ -} diff --git a/src/system/libroot/posix/math/math_globals.c b/src/system/libroot/posix/math/math_globals.c deleted file mode 100644 index ee274f3122..0000000000 --- a/src/system/libroot/posix/math/math_globals.c +++ /dev/null @@ -1,11 +0,0 @@ -/* - * Global variable(s) used in the math library - */ - - -// this declaration is just a guess... -// it "seems" to be what is required, but I would need to run some tests -// to see if code that links to this variable actually works as expected. -// -- Daniel Reinhold, 26 Oct 2002 - -char __infinity[sizeof(double)]; diff --git a/src/system/libroot/posix/math/pow.c b/src/system/libroot/posix/math/pow.c deleted file mode 100644 index 7d873d312a..0000000000 --- a/src/system/libroot/posix/math/pow.c +++ /dev/null @@ -1,215 +0,0 @@ -/* - * Copyright (c) 1985, 1993 - * The Regents of the University of California. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -/* POW(X,Y) - * RETURN X**Y - * DOUBLE PRECISION (VAX D format 56 bits, IEEE DOUBLE 53 BITS) - * CODED IN C BY K.C. NG, 1/8/85; - * REVISED BY K.C. NG on 7/10/85. - * KERNEL pow_P() REPLACED BY P. McILROY 7/22/92. - * Required system supported functions: - * scalb(x,n) - * logb(x) - * copysign(x,y) - * finite(x) - * drem(x,y) - * - * Required kernel functions: - * exp__D(a,c) exp(a + c) for |a| << |c| - * struct d_double dlog(x) r.a + r.b, |r.b| < |r.a| - * - * Method - * 1. Compute and return log(x) in three pieces: - * log(x) = n*ln2 + hi + lo, - * where n is an integer. - * 2. Perform y*log(x) by simulating muti-precision arithmetic and - * return the answer in three pieces: - * y*log(x) = m*ln2 + hi + lo, - * where m is an integer. - * 3. Return x**y = exp(y*log(x)) - * = 2^m * ( exp(hi+lo) ). - * - * Special cases: - * (anything) ** 0 is 1 ; - * (anything) ** 1 is itself; - * (anything) ** NaN is NaN; - * NaN ** (anything except 0) is NaN; - * +(anything > 1) ** +INF is +INF; - * -(anything > 1) ** +INF is NaN; - * +-(anything > 1) ** -INF is +0; - * +-(anything < 1) ** +INF is +0; - * +(anything < 1) ** -INF is +INF; - * -(anything < 1) ** -INF is NaN; - * +-1 ** +-INF is NaN and signal INVALID; - * +0 ** +(anything except 0, NaN) is +0; - * -0 ** +(anything except 0, NaN, odd integer) is +0; - * +0 ** -(anything except 0, NaN) is +INF and signal DIV-BY-ZERO; - * -0 ** -(anything except 0, NaN, odd integer) is +INF with signal; - * -0 ** (odd integer) = -( +0 ** (odd integer) ); - * +INF ** +(anything except 0,NaN) is +INF; - * +INF ** -(anything except 0,NaN) is +0; - * -INF ** (odd integer) = -( +INF ** (odd integer) ); - * -INF ** (even integer) = ( +INF ** (even integer) ); - * -INF ** -(anything except integer,NaN) is NaN with signal; - * -(x=anything) ** (k=integer) is (-1)**k * (x ** k); - * -(anything except 0) ** (non-integer) is NaN with signal; - * - * Accuracy: - * pow(x,y) returns x**y nearly rounded. In particular, on a SUN, a VAX, - * and a Zilog Z8000, - * pow(integer,integer) - * always returns the correct integer provided it is representable. - * In a test run with 100,000 random arguments with 0 < x, y < 20.0 - * on a VAX, the maximum observed error was 1.79 ulps (units 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. - */ - -#include -#include -#include - - -#if (defined(vax) || defined(tahoe)) -#define TRUNC(x) x = (double) (float) x -#define _IEEE 0 -#else -#define _IEEE 1 -#define endian (((*(int *) &one)) ? 1 : 0) -#define TRUNC(x) *(((int *) &x)+endian) &= 0xf8000000 -#define infnan(x) 0.0 -#endif /* vax or tahoe */ - -static double const zero=0.0; -static double const one=1.0; -static double const two=2.0; -static double const negone= -1.0; - -static double pow_P(double, double); - -double -pow(double x, double y) -{ - double t; - if (y==zero) - return (one); - else if (y==one || (_IEEE && x != x)) - return (x); /* if x is NaN or y=1 */ - else if (_IEEE && y!=y) /* if y is NaN */ - return (y); - else if (!finite(y)) /* if y is INF */ - if ((t=fabs(x))==one) /* +-1 ** +-INF is NaN */ - return (y - y); - else if (t>one) - return ((y<0)? zero : ((x0)? zero : ((x<0)? y-y : -y)); - else if (y==two) - return (x*x); - else if (y==negone) - return (one/x); - /* x > 0, x == +0 */ - else if (copysign(one, x) == one) - return (pow_P(x, y)); - - /* sign(x)= -1 */ - /* if y is an even integer */ - else if ( (t=drem(y,two)) == zero) - return (pow_P(-x, y)); - - /* if y is an odd integer */ - else if (copysign(t,one) == one) - return (-pow_P(-x, y)); - - /* Henceforth y is not an integer */ - else if (x==zero) /* x is -0 */ - return ((y>zero)? -x : one/(-x)); - else if (_IEEE) - return (zero/zero); - else - return (infnan(EDOM)); -} -/* kernel function for x >= 0 */ -static -double -pow_P(double x, double y) -{ - struct Double s, t, __log__D(); - double __exp__D(); - volatile double huge = 1e300, tiny = 1e-300; - - if (x == zero) { - if (y > zero) - return (zero); - else if (_IEEE) - return (huge*huge); - else - return (infnan(ERANGE)); - } - if (x == one) - return (one); - if (!finite(x)) { - if (y < zero) - return (zero); - else if (_IEEE) - return (huge*huge); - else - return (infnan(ERANGE)); - } - if (y >= 7e18) { /* infinity */ - if (x < 1) - return(tiny*tiny); - else if (_IEEE) - return (huge*huge); - else - return (infnan(ERANGE)); - } - - /* Return exp(y*log(x)), using simulated extended */ - /* precision for the log and the multiply. */ - - s = __log__D(x); - t.a = y; - TRUNC(t.a); - t.b = y - t.a; - t.b = s.b*y + t.b*s.a; - t.a *= s.a; - s.a = t.a + t.b; - s.b = (t.a - s.a) + t.b; - return (__exp__D(s.a, s.b)); -} diff --git a/src/system/libroot/posix/math/round.c b/src/system/libroot/posix/math/round.c deleted file mode 100644 index d86c9409b3..0000000000 --- a/src/system/libroot/posix/math/round.c +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright 2005, Axel Dörfler, axeld@pinc-software.de. All rights reserved. - * Distributed under the terms of the MIT License. - */ - - -#include - - -float -roundf(float value) -{ - if (value >= 0.0f) - return floorf(value + 0.5f); - - return ceilf(value + 0.5f); -} - - -double -round(double value) -{ - if (value >= 0.0) - return floor(value + 0.5); - - return ceil(value + 0.5); -} - - -long double -roundl(long double value) -{ - // TODO: fix me! - return (long double)round((double)value); -#if 0 - if (value >= 0.0) - return floorl(value + 0.5); - - return ceill(value + 0.5); -#endif -} - diff --git a/src/system/libroot/posix/math/sincos.c b/src/system/libroot/posix/math/sincos.c deleted file mode 100644 index 5d472835dd..0000000000 --- a/src/system/libroot/posix/math/sincos.c +++ /dev/null @@ -1,93 +0,0 @@ -/* - * Copyright (c) 1987, 1993 - * The Regents of the University of California. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#include - -double -sin(double x) -{ - double a,c,z; - - if(!finite(x)) /* sin(NaN) and sin(INF) must be NaN */ - return x-x; - x=drem(x,PI2); /* reduce x into [-PI,PI] */ - a=copysign(x,one); - if (a >= PIo4) { - if(a >= PI3o4) /* ... in [3PI/4,PI] */ - x = copysign((a = PI-a),x); - else { /* ... in [PI/4,3PI/4] */ - a = PIo2-a; /* rtn. sign(x)*C(PI/2-|x|) */ - z = a*a; - c = cos__C(z); - z *= half; - a = (z >= thresh ? half-((z-half)-c) : one-(z-c)); - return copysign(a,x); - } - } - - if (a < small) { /* rtn. S(x) */ - (void volatile)(big+a); - return x; - } - return x+x*sin__S(x*x); -} - -double -cos(double x) -{ - double a,c,z,s = 1.0; - - if(!finite(x)) /* cos(NaN) and cos(INF) must be NaN */ - return x-x; - x=drem(x,PI2); /* reduce x into [-PI,PI] */ - a=copysign(x,one); - if (a >= PIo4) { - if (a >= PI3o4) { /* ... in [3PI/4,PI] */ - a = PI-a; - s = negone; - } - else { /* ... in [PI/4,3PI/4] */ - a = PIo2-a; - return a+a*sin__S(a*a); /* rtn. S(PI/2-|x|) */ - } - } - if (a < small) { - (void volatile)(big+a); - return s; /* rtn. s*C(a) */ - } - z = a*a; - c = cos__C(z); - z *= half; - a = (z >= thresh ? half-((z-half)-c) : one-(z-c)); - return copysign(a,s); -} diff --git a/src/system/libroot/posix/math/sinh.c b/src/system/libroot/posix/math/sinh.c deleted file mode 100644 index dafc8bc1af..0000000000 --- a/src/system/libroot/posix/math/sinh.c +++ /dev/null @@ -1,117 +0,0 @@ -/* - * Copyright (c) 1985, 1993 - * The Regents of the University of California. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -/* SINH(X) - * RETURN THE HYPERBOLIC SINE OF X - * DOUBLE PRECISION (VAX D format 56 bits, IEEE DOUBLE 53 BITS) - * CODED IN C BY K.C. NG, 1/8/85; - * REVISED BY K.C. NG on 2/8/85, 3/7/85, 3/24/85, 4/16/85. - * - * Required system supported functions : - * copysign(x,y) - * scalb(x,N) - * - * Required kernel functions: - * expm1(x) ...return exp(x)-1 - * - * Method : - * 1. reduce x to non-negative by sinh(-x) = - sinh(x). - * 2. - * - * expm1(x) + expm1(x)/(expm1(x)+1) - * 0 <= x <= lnovfl : sinh(x) := -------------------------------- - * 2 - * lnovfl <= x <= lnovfl+ln2 : sinh(x) := expm1(x)/2 (avoid overflow) - * lnovfl+ln2 < x < INF : overflow to INF - * - * - * Special cases: - * sinh(x) is x if x is +INF, -INF, or NaN. - * only sinh(0)=0 is exact for finite argument. - * - * Accuracy: - * sinh(x) returns the exact hyperbolic sine of x nearly rounded. In - * a test run with 1,024,000 random arguments on a VAX, the maximum - * observed error was 1.93 ulps (units 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. - */ - -#include - -vc(mln2hi, 8.8029691931113054792E1 ,0f33,43b0,2bdb,c7e2, 7, .B00F33C7E22BDB) -vc(mln2lo,-4.9650192275318476525E-16 ,1b60,a70f,582a,279e, -50,-.8F1B60279E582A) -vc(lnovfl, 8.8029691931113053016E1 ,0f33,43b0,2bda,c7e2, 7, .B00F33C7E22BDA) - -ic(mln2hi, 7.0978271289338397310E2, 10, 1.62E42FEFA39EF) -ic(mln2lo, 2.3747039373786107478E-14, -45, 1.ABC9E3B39803F) -ic(lnovfl, 7.0978271289338397310E2, 9, 1.62E42FEFA39EF) - -#ifdef vccast -#define mln2hi vccast(mln2hi) -#define mln2lo vccast(mln2lo) -#define lnovfl vccast(lnovfl) -#endif - -#if defined(vax)||defined(tahoe) -static int max = 126 ; -#else /* defined(vax)||defined(tahoe) */ -static int max = 1023 ; -#endif /* defined(vax)||defined(tahoe) */ - - -double sinh(x) -double x; -{ - static const double one=1.0, half=1.0/2.0 ; - double t, sign; -#if !defined(vax)&&!defined(tahoe) - if(x!=x) return(x); /* x is NaN */ -#endif /* !defined(vax)&&!defined(tahoe) */ - sign=copysign(one,x); - x=copysign(x,one); - if(x - -double -tan(double x) -{ - double a; - double z; - double ss; - double cc; - double c; - int k; - - if(!finite(x)) /* tan(NaN) and tan(INF) must be NaN */ - return x-x; - x = drem(x,PI); /* reduce x into [-PI/2, PI/2] */ - a = copysign(x,one); /* ... = abs(x) */ - if (a >= PIo4) { - k = 1; - x = copysign(PIo2-a,x); - } - else { - k = 0; - if (a < small) { - (void volatile)(big+a); - return x; - } - } - z = x*x; - cc = cos__C(z); - ss = sin__S(z); - z *= half; /* Next get c = cos(x) accurately */ - c = (z >= thresh ? half-((z-half)-cc) : one-(z-cc)); - if (k == 0) { - return x+(x*(z-(cc-ss)))/c; /* ... sin/cos */ -#ifdef national - } else if (x == zero) { - return copysign(fmax,x); /* no inf on 32k */ -#endif /* national */ - } else { - return c/(x+x*ss); /* ... cos/sin */ - } -} diff --git a/src/system/libroot/posix/math/tanh.c b/src/system/libroot/posix/math/tanh.c deleted file mode 100644 index 95d7c4dc82..0000000000 --- a/src/system/libroot/posix/math/tanh.c +++ /dev/null @@ -1,100 +0,0 @@ -/* - * Copyright (c) 1985, 1993 - * The Regents of the University of California. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -/* TANH(X) - * RETURN THE HYPERBOLIC TANGENT OF X - * DOUBLE PRECISION (VAX D FORMAT 56 BITS, IEEE DOUBLE 53 BITS) - * CODED IN C BY K.C. NG, 1/8/85; - * REVISED BY K.C. NG on 2/8/85, 2/11/85, 3/7/85, 3/24/85. - * - * Required system supported functions : - * copysign(x,y) - * finite(x) - * - * Required kernel function: - * expm1(x) ...exp(x)-1 - * - * Method : - * 1. reduce x to non-negative by tanh(-x) = - tanh(x). - * 2. - * 0 < x <= 1.e-10 : tanh(x) := x - * -expm1(-2x) - * 1.e-10 < x <= 1 : tanh(x) := -------------- - * expm1(-2x) + 2 - * 2 - * 1 <= x <= 22.0 : tanh(x) := 1 - --------------- - * expm1(2x) + 2 - * 22.0 < x <= INF : tanh(x) := 1. - * - * Note: 22 was chosen so that fl(1.0+2/(expm1(2*22)+2)) == 1. - * - * Special cases: - * tanh(NaN) is NaN; - * only tanh(0)=0 is exact for finite argument. - * - * Accuracy: - * tanh(x) returns the exact hyperbolic tangent of x nealy rounded. - * In a test run with 1,024,000 random arguments on a VAX, the maximum - * observed error was 2.22 ulps (units in the last place). - */ -#include -#include - -double -tanh(double x) -{ - static double const one=1.0; - static double const two=2.0; - static double const small = 1.0e-10; - static double const big = 1.0e10; - double t; - double sign; - -#if !defined(vax)&&!defined(tahoe) - if(x!=x) return(x); /* x is NaN */ -#endif /* !defined(vax)&&!defined(tahoe) */ - - sign=copysign(one,x); - x=copysign(x,one); - if(x < 22.0) - if( x > one ) - return(copysign(one-two/(expm1(x+x)+two),sign)); - else if ( x > small ) - {t= -expm1(-(x+x)); return(copysign(t/(two-t),sign));} - else /* raise the INEXACT flag for non-zero x */ - {(void volatile)(big+x); return(copysign(x,sign));} - else if(finite(x)) - return (sign+1.0E-37); /* raise the INEXACT flag */ - else - return(sign); /* x is +- INF */ -}