bigdecimal-math_r 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.ruby-version +1 -0
- data/CODE_OF_CONDUCT.md +132 -0
- data/LICENSE +21 -0
- data/LICENSE.txt +21 -0
- data/README.md +41 -0
- data/Rakefile +13 -0
- data/changelog.md +24 -0
- data/ext/bigdecimal/math_r/algofunc.h +203 -0
- data/ext/bigdecimal/math_r/api/bigdecimal/check_precise.h +12 -0
- data/ext/bigdecimal/math_r/api/bigdecimal/infinity.h +6 -0
- data/ext/bigdecimal/math_r/api/bigdecimal/minus_infinity.h +5 -0
- data/ext/bigdecimal/math_r/api/bigdecimal/minus_one.h +6 -0
- data/ext/bigdecimal/math_r/api/bigdecimal/minus_zero.h +6 -0
- data/ext/bigdecimal/math_r/api/bigdecimal/nan.h +6 -0
- data/ext/bigdecimal/math_r/api/bigdecimal/one.h +6 -0
- data/ext/bigdecimal/math_r/api/bigdecimal/sign.h +10 -0
- data/ext/bigdecimal/math_r/api/bigdecimal/zero.h +6 -0
- data/ext/bigdecimal/math_r/api/bigmath/api_call1.h +5 -0
- data/ext/bigdecimal/math_r/api/bigmath/api_call2.h +6 -0
- data/ext/bigdecimal/math_r/api/bigmath/atan.h +7 -0
- data/ext/bigdecimal/math_r/api/bigmath/atan_adopt.h +42 -0
- data/ext/bigdecimal/math_r/api/bigmath/cabs.h +5 -0
- data/ext/bigdecimal/math_r/api/bigmath/carg.h +5 -0
- data/ext/bigdecimal/math_r/api/bigmath/cexp.h +5 -0
- data/ext/bigdecimal/math_r/api/bigmath/clog.h +5 -0
- data/ext/bigdecimal/math_r/api/bigmath/const.h +39 -0
- data/ext/bigdecimal/math_r/api/bigmath/const_e.h +5 -0
- data/ext/bigdecimal/math_r/api/bigmath/const_log10.h +5 -0
- data/ext/bigdecimal/math_r/api/bigmath/const_log2.h +5 -0
- data/ext/bigdecimal/math_r/api/bigmath/const_log_pi.h +5 -0
- data/ext/bigdecimal/math_r/api/bigmath/const_pi.h +5 -0
- data/ext/bigdecimal/math_r/api/bigmath/const_sqrt2.h +5 -0
- data/ext/bigdecimal/math_r/api/bigmath/const_sqrt3.h +5 -0
- data/ext/bigdecimal/math_r/api/bigmath/cpow.h +5 -0
- data/ext/bigdecimal/math_r/api/bigmath/csqrt.h +5 -0
- data/ext/bigdecimal/math_r/api/bigmath/degree_sparg.h +199 -0
- data/ext/bigdecimal/math_r/api/bigmath/escalb.h +5 -0
- data/ext/bigdecimal/math_r/api/bigmath/exp.h +5 -0
- data/ext/bigdecimal/math_r/api/bigmath/expxt.h +18 -0
- data/ext/bigdecimal/math_r/api/bigmath/hypot.h +10 -0
- data/ext/bigdecimal/math_r/api/bigmath/ipow.h +14 -0
- data/ext/bigdecimal/math_r/api/bigmath/l2norm.h +5 -0
- data/ext/bigdecimal/math_r/api/bigmath/log.h +7 -0
- data/ext/bigdecimal/math_r/api/bigmath/pow.h +5 -0
- data/ext/bigdecimal/math_r/api/bigmath/quadrant.h +5 -0
- data/ext/bigdecimal/math_r/api/bigmath/sincos.h +5 -0
- data/ext/bigdecimal/math_r/api/bigmath/sqrt.h +5 -0
- data/ext/bigdecimal/math_r/api/bigmath/to_rad.h +41 -0
- data/ext/bigdecimal/math_r/api/kernel/rb_BigDecimal.h +6 -0
- data/ext/bigdecimal/math_r/api/kernel/rb_BigDecimal1.h +6 -0
- data/ext/bigdecimal/math_r/api/kernel/rb_BigDecimal_flo.h +9 -0
- data/ext/bigdecimal/math_r/api/kernel/rb_ImaginaryZ.h +8 -0
- data/ext/bigdecimal/math_r/api/numanalysis/condition_p.h +26 -0
- data/ext/bigdecimal/math_r/api/numanalysis/make_n.h +9 -0
- data/ext/bigdecimal/math_r/api/numeric/abs.h +7 -0
- data/ext/bigdecimal/math_r/api/numeric/canonicalize.h +140 -0
- data/ext/bigdecimal/math_r/api/numeric/cmpeql.h +6 -0
- data/ext/bigdecimal/math_r/api/numeric/equal_p.h +6 -0
- data/ext/bigdecimal/math_r/api/numeric/finite_p.h +6 -0
- data/ext/bigdecimal/math_r/api/numeric/imag.h +6 -0
- data/ext/bigdecimal/math_r/api/numeric/infinite_p.h +7 -0
- data/ext/bigdecimal/math_r/api/numeric/nan_p.h +5 -0
- data/ext/bigdecimal/math_r/api/numeric/negative_p.h +6 -0
- data/ext/bigdecimal/math_r/api/numeric/nonzero_p.h +6 -0
- data/ext/bigdecimal/math_r/api/numeric/notequal_p.h +6 -0
- data/ext/bigdecimal/math_r/api/numeric/numeric_p.h +5 -0
- data/ext/bigdecimal/math_r/api/numeric/positive_p.h +6 -0
- data/ext/bigdecimal/math_r/api/numeric/real.h +6 -0
- data/ext/bigdecimal/math_r/api/numeric/real_p.h +6 -0
- data/ext/bigdecimal/math_r/api/numeric/round.h +56 -0
- data/ext/bigdecimal/math_r/api/numeric/uminus.h +6 -0
- data/ext/bigdecimal/math_r/api/numeric/zero_p.h +6 -0
- data/ext/bigdecimal/math_r/api.c +13 -0
- data/ext/bigdecimal/math_r/api.h +69 -0
- data/ext/bigdecimal/math_r/const.c +186 -0
- data/ext/bigdecimal/math_r/decl.h +203 -0
- data/ext/bigdecimal/math_r/edf.c +180 -0
- data/ext/bigdecimal/math_r/erf.c +80 -0
- data/ext/bigdecimal/math_r/euler_f.c +572 -0
- data/ext/bigdecimal/math_r/exp.c +72 -0
- data/ext/bigdecimal/math_r/extconf.rb +185 -0
- data/ext/bigdecimal/math_r/gamma_r.c +251 -0
- data/ext/bigdecimal/math_r/hyperb.c +172 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/E/ser.h +22 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/LOG10/ser.h +16 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/LOG2/BBP2002.h +36 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/LOG_PI/builtin.h +7 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/PI/machin.h +48 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/SQRT2/builtin.h +5 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/SQRT3/builtin.h +5 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/acos/branch.h +25 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/acos/edom.h +15 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/acos/logrep.h +19 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/acos/ser.h +34 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/acosh/branch.h +19 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/acosh/edom.h +17 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/acosh/logrep.h +14 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/acot/branch.h +16 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/acot/logrep.h +13 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/acoth/branch.h +20 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/acoth/edom.h +18 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/acoth/logrep.h +33 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/acsc/branch.h +21 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/acsc/edom.h +20 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/acsc/logrep.h +16 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/acsch/branch.h +25 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/acsch/logrep.h +25 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/asec/branch.h +22 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/asec/edom.h +16 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/asec/logrep.h +21 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/asech/branch.h +18 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/asech/edom.h +19 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/asech/logrep.h +16 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/asin/branch.h +22 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/asin/edom.h +20 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/asin/logrep.h +15 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/asin/ser.h +32 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/asinh/branch.h +26 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/asinh/logrep.h +24 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/asinh/ser.h +48 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/atan/branch.h +16 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/atan/logrep.h +14 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/atan/ser_euler.h +84 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/atan/ser_usual.h +41 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/atanh/branch.h +24 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/atanh/edom.h +16 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/atanh/logrep.h +16 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/atanh/ser.h +33 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/cabs/formula.h +8 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/cacos/branch.h +38 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/cacos/logrep.h +16 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/cacosh/branch.h +34 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/cacosh/logrep.h +17 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/cacot/branch.h +39 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/cacot/logrep.h +17 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/cacoth/branch.h +29 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/cacoth/logrep.h +11 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/cacsc/branch.h +28 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/cacsc/logrep.h +19 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/cacsch/branch.h +18 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/cacsch/logrep.h +11 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/carg/formula.h +8 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/casec/branch.h +29 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/casec/logrep.h +18 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/casech/branch.h +38 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/casech/logrep.h +9 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/casin/branch.h +35 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/casin/logrep.h +14 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/casinh/branch.h +59 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/casinh/logrep.h +13 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/catan/branch.h +46 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/catan/logrep.h +17 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/catanh/branch.h +26 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/catanh/logrep.h +10 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/ccbrt/formula.h +11 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/ccos/branch.h +41 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/ccos/eulerf.h +11 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/ccosh/branch.h +37 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/ccosh/eulerf.h +11 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/ccot/branch.h +46 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/ccot/eulerf.h +11 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/ccoth/branch.h +43 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/ccoth/eulerf.h +11 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/ccsc/branch.h +42 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/ccsc/eulerf.h +11 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/ccsch/branch.h +38 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/ccsch/eulerf.h +11 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/cexp/branch.h +42 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/cexp/eulerf.h +21 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/cexp2/branch.h +42 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/cexp2/eulerf.h +12 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/clog/branch.h +54 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/clog/formula.h +13 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/clog10/formula.h +12 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/clog1p/branch.h +34 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/clog2/formula.h +12 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/cos/branch.h +21 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/cos/eulerf.h +11 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/cos/ser.h +12 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/cosh/branch.h +22 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/cosh/eulerf.h +11 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/cosh/formula.h +30 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/cosh/ser.h +11 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/cot/branch.h +28 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/cot/eulerf.h +11 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/cot/ser.h +12 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/coth/branch.h +23 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/coth/eulerf.h +11 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/coth/formula.h +30 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/coth/ser.h +13 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/cpow/formula.h +20 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/csc/branch.h +28 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/csc/eulerf.h +11 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/csc/ser.h +11 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/csch/branch.h +23 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/csch/eulerf.h +11 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/csch/formula.h +31 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/csch/ser.h +11 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/csec/branch.h +42 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/csec/eulerf.h +11 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/csech/branch.h +38 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/csech/eulerf.h +11 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/csin/branch.h +44 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/csin/eulerf.h +11 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/csinh/branch.h +41 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/csinh/eulerf.h +11 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/csqrt/formula.h +66 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/ctan/branch.h +46 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/ctan/eulerf.h +11 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/ctanh/branch.h +43 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/ctanh/eulerf.h +11 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/cuberoot/newton.h +42 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/erf/algo911.h +41 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/erf/branch.h +18 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/erf/cf.h +51 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/erf/ser_inf.h +53 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/erf/ser_zero.h +45 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/erfc/algo911.h +27 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/erfc/branch.h +18 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/erfc/cf.h +49 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/escalb/edf.h +87 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/exp/branch.h +29 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/exp/builtin.h +6 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/exp/edf.h +23 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/exp2/branch.h +29 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/exp2/edf.h +19 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/expxt/edf.h +31 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/f_euler/formula.h +11 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/hypot/branch.h +25 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/hypot/l2norm.h +11 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/hypot/mmm.h +38 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/ipow/edf.h +33 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/l2norm/formula.h +48 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/log/branch.h +40 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/log/builtin.h +12 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/log/edf.h +10 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/log/edom.h +10 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/log/mercator.h +34 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/log/ser_okumura.h +57 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/log10/branch.h +40 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/log10/edf.h +11 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/log10/mercator.h +35 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/log1p/branch.h +34 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/log1p/p_adic.h +37 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/log1p/ser_mercator.h +35 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/log2/branch.h +40 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/log2/edf.h +11 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/log2/mercator.h +35 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/logxt/edf.h +33 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/pow/formula.h +30 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/quadrant/formula.h +352 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/rcm10/edf.h +34 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/rcm2/edf.h +34 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/sec/branch.h +27 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/sec/eulerf.h +11 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/sec/ser.h +11 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/sech/branch.h +21 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/sech/eulerf.h +11 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/sech/formula.h +25 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/sech/ser.h +11 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/sin/branch.h +23 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/sin/eulerf.h +11 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/sin/ser.h +13 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/sincos/ser.h +50 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/sinh/branch.h +23 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/sinh/eulerf.h +11 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/sinh/formula.h +26 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/sinh/ser.h +11 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/sinhcosh/ser.h +70 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/sqrt/branch.h +16 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/sqrt/builtin.h +12 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/sqrt/edom.h +9 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/sqrt/newton.h +36 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/tan/branch.h +26 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/tan/eulerf.h +11 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/tan/ser.h +18 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/tanh/branch.h +23 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/tanh/eulerf.h +11 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/tanh/formula.h +27 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/tanh/ser.h +14 -0
- data/ext/bigdecimal/math_r/internal/algo/bigmath/trig/f_euler.h +290 -0
- data/ext/bigdecimal/math_r/log.c +256 -0
- data/ext/bigdecimal/math_r/logrep.c +537 -0
- data/ext/bigdecimal/math_r/math_r/bigdecimal.h +30 -0
- data/ext/bigdecimal/math_r/math_r/bigmath.h +61 -0
- data/ext/bigdecimal/math_r/math_r/bigmath_r.h +9 -0
- data/ext/bigdecimal/math_r/math_r/ext_extern.h +18 -0
- data/ext/bigdecimal/math_r/math_r/globals.h +71 -0
- data/ext/bigdecimal/math_r/math_r/numdiff.h +18 -0
- data/ext/bigdecimal/math_r/math_r/numeric.h +63 -0
- data/ext/bigdecimal/math_r/math_r.c +130 -0
- data/ext/bigdecimal/math_r/nucomp.c +158 -0
- data/ext/bigdecimal/math_r/overrides.c +91 -0
- data/ext/bigdecimal/math_r/power.c +207 -0
- data/ext/bigdecimal/math_r/solver.c +1516 -0
- data/ext/bigdecimal/math_r/trig.c +205 -0
- data/lib/bigdecimal/math_r/const/EulerGamma_engel.rb +46 -0
- data/lib/bigdecimal/math_r/const/LOG2_bbp2007.rb +39 -0
- data/lib/bigdecimal/math_r/const/PI_chudnovsky.rb +59 -0
- data/lib/bigdecimal/math_r/const/PI_euler.rb +40 -0
- data/lib/bigdecimal/math_r/const/PI_ramanujan1.rb +45 -0
- data/lib/bigdecimal/math_r/const/PI_ramanujan2.rb +46 -0
- data/lib/bigdecimal/math_r/const/b053977/b053977.txt +306 -0
- data/lib/bigdecimal/math_r/version.rb +7 -0
- data/lib/bigdecimal/math_r.rb +12 -0
- data/lib/bigdecimal/math_r.so +0 -0
- data/sig/bigdecimal/math_r.rbs +6 -0
- metadata +393 -0
@@ -0,0 +1,180 @@
|
|
1
|
+
/*******************************************************************************
|
2
|
+
edf.c -- Exponential Decomposition Formula
|
3
|
+
|
4
|
+
Author: tribusonz
|
5
|
+
Licence: MIT
|
6
|
+
*******************************************************************************/
|
7
|
+
#include <ruby.h>
|
8
|
+
#include "math_r/globals.h"
|
9
|
+
#include "math_r/bigmath_r.h"
|
10
|
+
#include "decl.h"
|
11
|
+
|
12
|
+
|
13
|
+
/**
|
14
|
+
* Exponentially-decompose into the form of
|
15
|
+
* [a ** x.floor, x % 1].
|
16
|
+
* <br>
|
17
|
+
* Where `escalb' mean "Exponential SCALe Binary".
|
18
|
+
* <br>
|
19
|
+
* @param a [Numeric] Base of exponential decomposition
|
20
|
+
* @param x [Numeric] X-axis
|
21
|
+
* @param prec [Integer] Arbitrary precision
|
22
|
+
* @return [Array] Decomposed values as [a ** x.floor, x % 1]
|
23
|
+
* @raise [ArgumentError] Occurs when +prec+ is not a positive integer.
|
24
|
+
* @raise [TypeError] Occurs when +x+ is not a numeric class.
|
25
|
+
* @example
|
26
|
+
* BigMathR::EDF.escalb(BigMathR.E(20), 2, 20)
|
27
|
+
* #=> [0.73890560989306502274e1, 0.0]
|
28
|
+
* @since 0.1.0
|
29
|
+
*/
|
30
|
+
static VALUE
|
31
|
+
__impl_edf_escalb(VALUE unused_obj, VALUE a, VALUE x, VALUE prec)
|
32
|
+
{
|
33
|
+
VALUE exp = Qundef, fra = Qundef;
|
34
|
+
rb_bigmath_escalb(a, x, prec, &exp, &fra);
|
35
|
+
if (exp == Qundef || fra == Qundef)
|
36
|
+
rb_raise(rb_eRuntimeError, "no solution");
|
37
|
+
exp = rb_num_round(exp, prec);
|
38
|
+
fra = rb_num_round(fra, prec);
|
39
|
+
return rb_assoc_new(exp, fra);
|
40
|
+
}
|
41
|
+
|
42
|
+
|
43
|
+
/**
|
44
|
+
* Calculate the exponential function of +x+ with base +t+.
|
45
|
+
*
|
46
|
+
* @param x [Numeric] Numerical Argument. Domain as 0<=x<1.
|
47
|
+
* @param t [Numeric] Base of +x+. 1 = e, log2 = 2
|
48
|
+
* @param prec [Integer] Arbitrary precision
|
49
|
+
* @return [BigDecimal] Fraction number
|
50
|
+
* @example
|
51
|
+
* BigMathR::EDF.expxt(0.5, BigMathR.LOG2(20), 20)
|
52
|
+
* #=> 0.14142135623730950488e1
|
53
|
+
* @since 0.1.0
|
54
|
+
*/
|
55
|
+
static VALUE
|
56
|
+
__impl_edf_expxt(VALUE unused_obj, VALUE x, VALUE t, VALUE prec)
|
57
|
+
{
|
58
|
+
return rb_bigmath_expxt(x, t, prec);
|
59
|
+
}
|
60
|
+
|
61
|
+
/**
|
62
|
+
* Based on the radix complementation method, exponentially-decompose +x+ on radix 2.
|
63
|
+
* <br>
|
64
|
+
* It behaves the same as frexp() in C,
|
65
|
+
* except that the value range is 1 leq y lt 2 with its exponent.
|
66
|
+
* <br>
|
67
|
+
* If +x+ is not positive finite except 0, then it is inherently undefined.
|
68
|
+
* However, if +x+ is negative finite, it will return a value range of -2 lt +y+ leq -1.
|
69
|
+
* @param x [Numeric] Numerical argument
|
70
|
+
* @return [Array] Decomposed values as [fraction, exponent]
|
71
|
+
* @example
|
72
|
+
* fra, exp = BigMathR::EDF.rcm2(3)
|
73
|
+
* #=> [(3/2), 1]
|
74
|
+
* fra = BigMathR::EDF.logxt(fra, 2, 20)
|
75
|
+
* #=> 0.58496250072115618145e0
|
76
|
+
* log2_3 = exp + fra
|
77
|
+
* #=> 0.158496250072115618145e1
|
78
|
+
* Math.log2(3) == log2_3.to_f
|
79
|
+
* #=> true
|
80
|
+
* @since 0.1.0
|
81
|
+
*/
|
82
|
+
static VALUE
|
83
|
+
__impl_edf_rcm2(VALUE unused_obj, VALUE x)
|
84
|
+
{
|
85
|
+
VALUE exp, fra;
|
86
|
+
fra = rcm2_edf(x, &exp);
|
87
|
+
return rb_assoc_new(fra, exp);
|
88
|
+
}
|
89
|
+
|
90
|
+
|
91
|
+
/**
|
92
|
+
* Based on the radix complementation method, exponentially-decompose +x+ on radix 10.
|
93
|
+
* <br>
|
94
|
+
* It behaves the same as frexp() in C,
|
95
|
+
* except that the radix is 10 and the value range is 1 leq y lt 10.
|
96
|
+
* <br>
|
97
|
+
* If +x+ is not positive finite except 0, then it is inherently undefined.
|
98
|
+
* However, if +x+ is negative finite, it will return a value range of -10 lt +y+ leq -1.
|
99
|
+
* @param x [Numeric] Numerical argument
|
100
|
+
* @return [Array] Decomposed values as [fraction, exponent]
|
101
|
+
* @example
|
102
|
+
* fra, exp = BigMathR::EDF.rcm10(3)
|
103
|
+
* #=> [(3/1), 0]
|
104
|
+
* fra = BigMathR::EDF.logxt(fra, 10, 20)
|
105
|
+
* #=> 0.4771212547196624373e0
|
106
|
+
* log10_3 = exp + fra
|
107
|
+
* #=> 0.4771212547196624373e0
|
108
|
+
* Math.log10(3) == log10_3.to_f
|
109
|
+
* #=> true
|
110
|
+
* @since 0.1.0
|
111
|
+
*/
|
112
|
+
static VALUE
|
113
|
+
__impl_edf_rcm10(VALUE unused_obj, VALUE x)
|
114
|
+
{
|
115
|
+
VALUE exp, fra;
|
116
|
+
fra = rcm10_edf(x, &exp);
|
117
|
+
return rb_assoc_new(fra, exp);
|
118
|
+
}
|
119
|
+
|
120
|
+
|
121
|
+
/**
|
122
|
+
* Computes fraction of +x+ with its complement +t+ in the exponential decomposition.
|
123
|
+
* <br>
|
124
|
+
* Complement is equal to the base +x+, and the decomposition varies depending on the value given.
|
125
|
+
* @example
|
126
|
+
* BigMathR::EDF.logxt(2, 10, 20) #=> 0.30102999566398119521e0
|
127
|
+
* BigMathR::EDF.logxt(2, 2, 20) #=> 0.1e1
|
128
|
+
* BigMathR::EDF.logxt(2, Math::E, Float::DIG) #=> 0.693147180559945e0
|
129
|
+
* @param x [Numeric] Numerical Argument. Domain as 1<=x<=t.
|
130
|
+
* @param t [Numeric] Complement of +x+. e = ln(x), 2 = log_2(x), 10 = log_10(x)
|
131
|
+
* @param prec [Integer] Arbitrary precision
|
132
|
+
* @return [BigDecimal] Solution of log_t(x)
|
133
|
+
* @raise [FloatDomainError] Numerical arguments are out of range
|
134
|
+
* @since 0.1.0
|
135
|
+
* @see Programming in Oberon - Niklaus Wirth
|
136
|
+
*/
|
137
|
+
static VALUE
|
138
|
+
__impl_edf_logxt(VALUE unused_obj, VALUE x, VALUE t, VALUE prec)
|
139
|
+
{
|
140
|
+
rb_check_precise(prec);
|
141
|
+
x = rb_num_canonicalize(x, prec, ARG_REAL, ARG_RAWVALUE);
|
142
|
+
if (rb_num_notequal_p(x, x) ||
|
143
|
+
rb_num_negative_p(x) ||
|
144
|
+
NUM2INT(rb_num_cmpeql(INT2FIX(1), x)) == 1 ||
|
145
|
+
NUM2INT(rb_num_cmpeql(x, t)) != -1)
|
146
|
+
{
|
147
|
+
if (rb_num_equal_p(x, t))
|
148
|
+
return BIG_ONE;
|
149
|
+
rb_raise(rb_eFloatDomainError, "Numerical arguments are out of range: (1 <= x <= t)");
|
150
|
+
}
|
151
|
+
t = rb_num_canonicalize(t, prec, ARG_REAL, ARG_RAWVALUE);
|
152
|
+
x = logxt_edf(x, t, prec);
|
153
|
+
return rb_num_round(x, prec);
|
154
|
+
}
|
155
|
+
|
156
|
+
|
157
|
+
|
158
|
+
/**
|
159
|
+
* Document-module: BigMathR::EDF
|
160
|
+
*
|
161
|
+
* A module that treats the exponential decomposition formula.
|
162
|
+
* It is used internally.
|
163
|
+
* <br>
|
164
|
+
* This formula was discovered by the author shortly afterwards. It will be proven in time.
|
165
|
+
* <br>
|
166
|
+
*
|
167
|
+
* Reference::
|
168
|
+
* {https://github.com/tribusonz-2/edf Exponential Decomposition Formula}
|
169
|
+
*/
|
170
|
+
void
|
171
|
+
InitVM_EDF(void)
|
172
|
+
{
|
173
|
+
rb_define_module_function(rb_mEDF, "escalb", __impl_edf_escalb, 3);
|
174
|
+
rb_define_module_function(rb_mEDF, "expxt", __impl_edf_expxt, 3);
|
175
|
+
|
176
|
+
rb_define_module_function(rb_mEDF, "rcm2", __impl_edf_rcm2, 1);
|
177
|
+
rb_define_module_function(rb_mEDF, "rcm10", __impl_edf_rcm10, 1);
|
178
|
+
|
179
|
+
rb_define_module_function(rb_mEDF, "logxt", __impl_edf_logxt, 3);
|
180
|
+
}
|
@@ -0,0 +1,80 @@
|
|
1
|
+
/*******************************************************************************
|
2
|
+
erf.c -- Error function
|
3
|
+
|
4
|
+
Author: tribusonz
|
5
|
+
License: MIT
|
6
|
+
*******************************************************************************/
|
7
|
+
#include <ruby.h>
|
8
|
+
#include "math_r/globals.h"
|
9
|
+
#include "math_r/bigmath_r.h"
|
10
|
+
#include "decl.h"
|
11
|
+
|
12
|
+
/**
|
13
|
+
* Calculate the error function of +x+.
|
14
|
+
*
|
15
|
+
* @param x [Numeric] Numerical Argument.
|
16
|
+
* @param prec [Integer] Arbitrary precision
|
17
|
+
* @return [BigDecimal] Real solution
|
18
|
+
* @raise [FloatDomainError] Numerical arguments are out of range
|
19
|
+
* @example
|
20
|
+
* BigMathR::Erf.erf_algo911(7, 20)
|
21
|
+
* #=> 0.1e1
|
22
|
+
* BigMathR::Erf.erf_algo911(7, 40)
|
23
|
+
* #=> 0.999999999999999999999958161743922205856e0
|
24
|
+
* @since 0.2.0
|
25
|
+
*/
|
26
|
+
static VALUE
|
27
|
+
__impl_erf_erf_algo911(VALUE unused_obj, VALUE x, VALUE prec)
|
28
|
+
{
|
29
|
+
return erf_branch(x, prec, erf_algo911);
|
30
|
+
}
|
31
|
+
|
32
|
+
/**
|
33
|
+
* Calculate the complementary error function of +x+.
|
34
|
+
*
|
35
|
+
* @param x [Numeric] Numerical Argument.
|
36
|
+
* @param prec [Integer] Arbitrary precision
|
37
|
+
* @return [BigDecimal] Real solution
|
38
|
+
* @raise [FloatDomainError] Numerical arguments are out of range
|
39
|
+
* @example
|
40
|
+
* BigMathR::Erf.erfc_algo911(-7, 20)
|
41
|
+
* #=> 0.2e1
|
42
|
+
* BigMathR::Erf.erfc_algo911(-7, 40)
|
43
|
+
* #=> 0.1999999999999999999999958161743922205856e1
|
44
|
+
* BigMathR::Erf.erfc_algo911(7, 20)
|
45
|
+
* #=> 0.0
|
46
|
+
* BigMathR::Erf.erfc_algo911(7, 40)
|
47
|
+
* #=> 0.41838256077794144e-22
|
48
|
+
* @since 0.2.0
|
49
|
+
*/
|
50
|
+
static VALUE
|
51
|
+
__impl_erf_erfc_algo911(VALUE unused_obj, VALUE x, VALUE prec)
|
52
|
+
{
|
53
|
+
return erfc_branch(x, prec, erfc_algo911);
|
54
|
+
}
|
55
|
+
|
56
|
+
/**
|
57
|
+
* Document-module: BigMathR::Erf
|
58
|
+
*
|
59
|
+
* A module that provides an eror functions.
|
60
|
+
* It is used internally.
|
61
|
+
* <br>
|
62
|
+
* == Synopsis
|
63
|
+
* Some functions are common in the C/C++ standard.
|
64
|
+
* However, it is not actually defined in C/C++, and is specified in POSIX.
|
65
|
+
* <br>
|
66
|
+
* - Error function: +:erf+ <br>
|
67
|
+
* - Complementary Error function: +:erfc+ <br>
|
68
|
+
* The following are complex functions that are reserved words mainly for Linux OS.
|
69
|
+
* <br>
|
70
|
+
* - Error function: +:cerf+ <br>
|
71
|
+
* - Complementary Error function: +:cerfc+ <br>
|
72
|
+
* Reference::
|
73
|
+
* Multiple-Precision Exponential Integral and Related Functions - David M. Smith
|
74
|
+
*/
|
75
|
+
void
|
76
|
+
InitVM_Erf(void)
|
77
|
+
{
|
78
|
+
rb_define_singleton_method(rb_mErf, "erf_algo911", __impl_erf_erf_algo911, 2);
|
79
|
+
rb_define_singleton_method(rb_mErf, "erfc_algo911", __impl_erf_erfc_algo911, 2);
|
80
|
+
}
|