|
Ruby
1.9.3p448(2013-06-27revision41675)
|
#include "bigdecimal.h"#include <assert.h>#include <ctype.h>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <errno.h>#include <math.h>Go to the source code of this file.
Definition at line 69 of file bigdecimal.c.
Referenced by VpAddAbs(), VpDivd(), VpDtoV(), VpInit(), VpMidRound(), VpMult(), VpRdup(), VpSqrt(), VpSubAbs(), VpToFString(), and VpVtoD().
Definition at line 72 of file bigdecimal.c.
Referenced by VpExponent10(), VpInit(), VpInternalRound(), VpSzMantissa(), VpToFString(), and VpToString().
| #define BASE_FIG RMPD_COMPONENT_FIGURES |
Definition at line 68 of file bigdecimal.c.
Referenced by AddExponent(), BigDecimal_to_f(), VpAddSub(), VpAlloc(), VpAsgn(), VpCtoV(), VpDivd(), VpExponent10(), VpInit(), VpLeftRound(), VpLimitRound(), VpMidRound(), VpMult(), VpNumOfChars(), VpPower(), VpSqrt(), VpToFString(), VpToString(), and VpVtoD().
| #define BigMath_exp | ( | x, | |
| n | |||
| ) | BigMath_s_exp(rb_mBigMath, (x), (n)) |
Definition at line 1958 of file bigdecimal.c.
Referenced by rmpd_power_by_big_decimal().
| #define BigMath_log | ( | x, | |
| n | |||
| ) | BigMath_s_log(rb_mBigMath, (x), (n)) |
Definition at line 1959 of file bigdecimal.c.
Referenced by rmpd_power_by_big_decimal().
Definition at line 75 of file bigdecimal.c.
| #define DoSomeOne | ( | x, | |
| y, | |||
| f | |||
| ) | rb_num_coerce_bin(x,y,f) |
Definition at line 108 of file bigdecimal.c.
Referenced by BigDecimal_add(), BigDecimal_div2(), BigDecimal_divide(), BigDecimal_divmod(), BigDecimal_divremain(), BigDecimal_mod(), BigDecimal_mult(), and BigDecimal_sub().
Definition at line 63 of file bigdecimal.c.
Referenced by BigDecimal_abs(), BigDecimal_add(), BigDecimal_add2(), BigDecimal_ceil(), BigDecimal_coerce(), BigDecimal_div(), BigDecimal_div2(), BigDecimal_divide(), BigDecimal_divmod(), BigDecimal_divremain(), BigDecimal_DoDivmod(), BigDecimal_dump(), BigDecimal_fix(), BigDecimal_floor(), BigDecimal_frac(), BigDecimal_hash(), BigDecimal_inspect(), BigDecimal_load(), BigDecimal_mod(), BigDecimal_mult(), BigDecimal_mult2(), BigDecimal_neg(), BigDecimal_new(), BigDecimal_power(), BigDecimal_prec(), BigDecimal_round(), BigDecimal_split(), BigDecimal_sqrt(), BigDecimal_sub(), BigDecimal_sub2(), BigDecimal_to_f(), BigDecimal_to_i(), BigDecimal_to_s(), BigDecimal_truncate(), and BigDecimalCmp().
Definition at line 66 of file bigdecimal.c.
Referenced by BigDecimal_abs(), BigDecimal_add(), BigDecimal_add2(), BigDecimal_ceil(), BigDecimal_coerce(), BigDecimal_div2(), BigDecimal_divide(), BigDecimal_divremain(), BigDecimal_DoDivmod(), BigDecimal_dump(), BigDecimal_fix(), BigDecimal_floor(), BigDecimal_frac(), BigDecimal_hash(), BigDecimal_inspect(), BigDecimal_load(), BigDecimal_mult(), BigDecimal_mult2(), BigDecimal_neg(), BigDecimal_new(), BigDecimal_power(), BigDecimal_prec(), BigDecimal_round(), BigDecimal_split(), BigDecimal_sqrt(), BigDecimal_sub(), BigDecimal_sub2(), BigDecimal_to_f(), BigDecimal_to_i(), BigDecimal_to_s(), BigDecimal_truncate(), and BigDecimalCmp().
Definition at line 71 of file bigdecimal.c.
Referenced by VpInit().
| #define is_positive | ( | x | ) | (!is_negative(x)) |
Definition at line 1982 of file bigdecimal.c.
Referenced by BigDecimal_power().
| #define maxnr 100UL /* Maximum iterations for calcurating sqrt. */ |
Definition at line 3104 of file bigdecimal.c.
Referenced by VpSqrt().
Definition at line 3108 of file bigdecimal.c.
| #define NDEBUG |
Definition at line 23 of file bigdecimal.c.
Definition at line 64 of file bigdecimal.c.
| #define RBIGNUM_ZERO_P | ( | x | ) |
(RBIGNUM_LEN(x) == 0 || \ (RBIGNUM_DIGITS(x)[0] == 0 && \ (RBIGNUM_LEN(x) == 1 || bigzero_p(x))))
Definition at line 79 of file bigdecimal.c.
Referenced by BigMath_s_log().
| #define RMPD_PRECISION_LIMIT_DEFAULT ((size_t)0) |
Definition at line 3200 of file bigdecimal.c.
Referenced by VpGetPrecLimit().
| #define rmpd_set_thread_local_exception_mode | ( | mode | ) |
rb_thread_local_aset( \ rb_thread_current(), \ id_BigDecimal_exception_mode, \ INT2FIX((int)(mode)) \ )
Definition at line 3161 of file bigdecimal.c.
Referenced by VpGetException(), and VpSetException().
| #define rmpd_set_thread_local_precision_limit | ( | limit | ) |
rb_thread_local_aset( \ rb_thread_current(), \ id_BigDecimal_precision_limit, \ SIZET2NUM(limit) \ )
Definition at line 3194 of file bigdecimal.c.
Referenced by VpGetPrecLimit(), and VpSetPrecLimit().
| #define rmpd_set_thread_local_rounding_mode | ( | mode | ) |
rb_thread_local_aset( \ rb_thread_current(), \ id_BigDecimal_rounding_mode, \ INT2FIX((int)(mode)) \ )
Definition at line 3231 of file bigdecimal.c.
Referenced by VpGetRoundMode(), and VpSetRoundMode().
| #define RRATIONAL_NEGATIVE_P | ( | x | ) | RTEST(rb_funcall((x), '<', 1, INT2FIX(0))) |
Definition at line 102 of file bigdecimal.c.
Referenced by BigMath_s_log().
| #define RRATIONAL_ZERO_P | ( | x | ) |
Definition at line 97 of file bigdecimal.c.
Referenced by BigMath_s_log().
Definition at line 65 of file bigdecimal.c.
Referenced by BigDecimal_add(), BigDecimal_div(), BigDecimal_divide(), BigDecimal_divmod(), BigDecimal_divremain(), BigDecimal_DoDivmod(), BigDecimal_mod(), BigDecimal_mult(), BigDecimal_sub(), and BigDecimalCmp().
| #define StrCmp | ( | x, | |
| y | |||
| ) | strcmp(x,y) |
Definition at line 3109 of file bigdecimal.c.
Referenced by VpAlloc().
| static int AddExponent | ( | Real * | a, |
| SIGNED_VALUE | n | ||
| ) | [static] |
Definition at line 3580 of file bigdecimal.c.
References BASE_FIG, Real::exponent, SIGNED_VALUE, VP_EXCEPTION_OVERFLOW, VP_EXCEPTION_UNDERFLOW, VpException(), VpGetSign, VpSetInf, and VpSetZero.
Referenced by VpDivd(), VpMult(), VpNmlz(), VpRdup(), and VpSetPTR().
| static VALUE BigDecimal_abs | ( | VALUE | self | ) | [static] |
Definition at line 1484 of file bigdecimal.c.
References ENTER, GetVpValue(), GUARD_OBJ, Real::Prec, ToValue(), VpAsgn(), VpBaseFig, VpChangeSign, and VpCreateRbObject().
Referenced by BigDecimal_power(), and Init_bigdecimal().
| static VALUE BigDecimal_add | ( | VALUE | self, |
| VALUE | r | ||
| ) | [static] |
Definition at line 806 of file bigdecimal.c.
References DBL_DIG, DoSomeOne, ENTER, GetAddSubPrec(), GetVpValue(), GetVpValueWithPrec(), GUARD_OBJ, Real::obj, Real::Prec, RB_TYPE_P, SAVE, T_FLOAT, T_RATIONAL, ToValue(), VpAddSub(), VpBaseFig, VpCreateRbObject(), VpGetSign, VpIsNaN, and VpSetInf.
Referenced by BigDecimal_add2(), BigMath_s_exp(), BigMath_s_log(), and Init_bigdecimal().
| static VALUE BigDecimal_add2 | ( | VALUE | self, |
| VALUE | b, | ||
| VALUE | n | ||
| ) | [static] |
Definition at line 1427 of file bigdecimal.c.
References BigDecimal_add(), cv, ENTER, GetPositiveInt(), GetVpValue(), GUARD_OBJ, SIGNED_VALUE, ToValue(), VpGetRoundMode(), VpLeftRound(), and VpSetPrecLimit().
Referenced by Init_bigdecimal().
| static VALUE BigDecimal_ceil | ( | int | argc, |
| VALUE * | argv, | ||
| VALUE | self | ||
| ) | [static] |
Definition at line 1730 of file bigdecimal.c.
References BigDecimal_to_i(), Check_Type, ENTER, FIX2INT, GetVpValue(), GUARD_OBJ, Real::Prec, rb_scan_args(), T_FIXNUM, ToValue(), VP_ROUND_CEIL, VpActiveRound(), VpBaseFig, VpCreateRbObject(), and VpSetPrecLimit().
Referenced by Init_bigdecimal().
| static void BigDecimal_check_num | ( | Real * | p | ) | [static] |
Definition at line 611 of file bigdecimal.c.
References VP_EXCEPTION_INFINITY, VP_EXCEPTION_NaN, VpException(), VpIsNaN, VpIsNegInf, and VpIsPosInf.
Referenced by BigDecimal_to_i(), and BigDecimal_to_r().
| static VALUE BigDecimal_coerce | ( | VALUE | self, |
| VALUE | other | ||
| ) | [static] |
Definition at line 765 of file bigdecimal.c.
References BigDecimal_to_f(), DATA_PTR, ENTER, GetVpValue(), GetVpValueWithPrec(), GUARD_OBJ, Real::obj, Real::Prec, rb_assoc_new(), RB_TYPE_P, T_FLOAT, T_RATIONAL, and VpBaseFig.
Referenced by Init_bigdecimal().
| static VALUE BigDecimal_comp | ( | VALUE | self, |
| VALUE | r | ||
| ) | [static] |
Definition at line 1008 of file bigdecimal.c.
References BigDecimalCmp().
Referenced by Init_bigdecimal().
| static void BigDecimal_delete | ( | void * | pv | ) | [static] |
Definition at line 141 of file bigdecimal.c.
References VpFree().
| static VALUE BigDecimal_div | ( | VALUE | self, |
| VALUE | r | ||
| ) | [static] |
Definition at line 1176 of file bigdecimal.c.
References BDIGIT, BDIGIT_DBL, BigDecimal_divide(), div, ENTER, Real::frac, NULL, Real::Prec, SAVE, ToValue(), VpBaseVal, VpHasVal, and VpInternalRound().
Referenced by BigDecimal_div2(), and Init_bigdecimal().
| static VALUE BigDecimal_div2 | ( | int | argc, |
| VALUE * | argv, | ||
| VALUE | self | ||
| ) | [static] |
Definition at line 1391 of file bigdecimal.c.
References BigDecimal_div(), BigDecimal_DoDivmod(), BigDecimal_to_i(), cv, div, DoSomeOne, ENTER, GetPositiveInt(), GetVpValue(), GUARD_OBJ, mod, NULL, Real::Prec, rb_intern, rb_scan_args(), SIGNED_VALUE, ToValue(), VpBaseFig, VpCreateRbObject(), VpDivd(), VpGetRoundMode(), VpLeftRound(), and VpSetPrecLimit().
Referenced by BigMath_s_exp(), BigMath_s_log(), GetVpValueWithPrec(), and Init_bigdecimal().
| static VALUE BigDecimal_divide | ( | Real ** | c, |
| Real ** | res, | ||
| Real ** | div, | ||
| VALUE | self, | ||
| VALUE | r | ||
| ) | [static] |
Definition at line 1127 of file bigdecimal.c.
References DBL_DIG, DoSomeOne, ENTER, Real::exponent, GetVpValue(), GetVpValueWithPrec(), GUARD_OBJ, Real::Prec, RB_TYPE_P, SAVE, T_FLOAT, T_RATIONAL, vabs, VpBaseFig, VpCreateRbObject(), and VpDivd().
Referenced by BigDecimal_div().
| static VALUE BigDecimal_divmod | ( | VALUE | self, |
| VALUE | r | ||
| ) | [static] |
Definition at line 1378 of file bigdecimal.c.
References BigDecimal_DoDivmod(), div, DoSomeOne, ENTER, mod, NULL, rb_assoc_new(), rb_intern, SAVE, and ToValue().
Referenced by Init_bigdecimal().
Definition at line 1299 of file bigdecimal.c.
References DBL_DIG, DoSomeOne, ENTER, GetVpValue(), GetVpValueWithPrec(), GUARD_OBJ, Real::MaxPrec, NULL, Real::Prec, rb_intern, RB_TYPE_P, SAVE, T_FLOAT, T_RATIONAL, VP_ROUND_DOWN, VpActiveRound(), VpAddSub(), VpBaseFig, VpCreateRbObject(), VpDivd(), VpFrac(), and VpMult().
Referenced by BigDecimal_remainder().
Definition at line 1200 of file bigdecimal.c.
References DBL_DIG, ENTER, Real::exponent, GetAddSubPrec(), GetVpValue(), GetVpValueWithPrec(), GUARD_OBJ, NULL, Real::Prec, Qfalse, Qtrue, rb_eZeroDivError, rb_raise(), RB_TYPE_P, SAVE, SIGNED_VALUE, T_FLOAT, T_RATIONAL, vabs, VP_ROUND_DOWN, VpActiveRound(), VpAddSub(), VpBaseFig, VpCreateRbObject(), VpDivd(), VpGetSign, VpIsInf, VpIsNaN, VpIsZero, VpMult(), VpOne(), and VpSetInf.
Referenced by BigDecimal_div2(), BigDecimal_divmod(), and BigDecimal_mod().
| static VALUE BigDecimal_double_fig | ( | VALUE | self | ) | [static] |
Definition at line 289 of file bigdecimal.c.
References INT2FIX, and VpDblFig.
Referenced by Init_bigdecimal().
| static VALUE BigDecimal_dump | ( | int | argc, |
| VALUE * | argv, | ||
| VALUE | self | ||
| ) | [static] |
Definition at line 334 of file bigdecimal.c.
References ENTER, GetVpValue(), GUARD_OBJ, PRIuSIZE, rb_scan_args(), rb_str_new(), rb_str_resize(), RSTRING_PTR, strlen(), VpBaseFig, VpMaxPrec, VpNumOfChars(), and VpToString().
Referenced by Init_bigdecimal().
| static VALUE BigDecimal_eq | ( | VALUE | self, |
| VALUE | r | ||
| ) | [static] |
Definition at line 1024 of file bigdecimal.c.
References BigDecimalCmp().
Referenced by BigDecimal_power(), and Init_bigdecimal().
| static VALUE BigDecimal_exponent | ( | VALUE | self | ) | [static] |
Definition at line 1915 of file bigdecimal.c.
References GetVpValue(), INT2NUM(), and VpExponent10().
Referenced by Init_bigdecimal().
| static VALUE BigDecimal_fix | ( | VALUE | self | ) | [static] |
Definition at line 1525 of file bigdecimal.c.
References ENTER, GetVpValue(), GUARD_OBJ, Real::Prec, ToValue(), VP_ROUND_DOWN, VpActiveRound(), VpBaseFig, and VpCreateRbObject().
Referenced by Init_bigdecimal().
| static VALUE BigDecimal_floor | ( | int | argc, |
| VALUE * | argv, | ||
| VALUE | self | ||
| ) | [static] |
Definition at line 1681 of file bigdecimal.c.
References BigDecimal_to_i(), Check_Type, ENTER, FIX2INT, GetVpValue(), GUARD_OBJ, Real::Prec, rb_scan_args(), T_FIXNUM, ToValue(), VP_ROUND_FLOOR, VpActiveRound(), VpBaseFig, VpCreateRbObject(), and VpSetPrecLimit().
Referenced by Init_bigdecimal().
| static VALUE BigDecimal_frac | ( | VALUE | self | ) | [static] |
Definition at line 1648 of file bigdecimal.c.
References ENTER, GetVpValue(), GUARD_OBJ, Real::Prec, ToValue(), VpBaseFig, VpCreateRbObject(), and VpFrac().
Referenced by Init_bigdecimal().
| static VALUE BigDecimal_ge | ( | VALUE | self, |
| VALUE | r | ||
| ) | [static] |
Definition at line 1072 of file bigdecimal.c.
References BigDecimalCmp().
Referenced by Init_bigdecimal().
| static VALUE BigDecimal_global_new | ( | int | argc, |
| VALUE * | argv, | ||
| VALUE | self | ||
| ) | [static] |
Definition at line 2374 of file bigdecimal.c.
References BigDecimal_new(), and rb_cBigDecimal.
Referenced by Init_bigdecimal().
| static VALUE BigDecimal_gt | ( | VALUE | self, |
| VALUE | r | ||
| ) | [static] |
Definition at line 1060 of file bigdecimal.c.
References BigDecimalCmp().
Referenced by Init_bigdecimal().
| static VALUE BigDecimal_hash | ( | VALUE | self | ) | [static] |
Definition at line 317 of file bigdecimal.c.
References BDIGIT, ENTER, Real::exponent, Real::frac, GetVpValue(), GUARD_OBJ, hash(), INT2FIX, Real::Prec, rb_memhash(), and Real::sign.
Referenced by Init_bigdecimal().
| static VALUE BigDecimal_inspect | ( | VALUE | self | ) | [static] |
Definition at line 1932 of file bigdecimal.c.
References ENTER, GetVpValue(), GUARD_OBJ, PRIuSIZE, PRIxVALUE, rb_str_new(), rb_str_resize(), RSTRING_PTR, strlen(), VpBaseFig, VpMaxPrec, VpNumOfChars(), VpPrec, and VpToString().
Referenced by Init_bigdecimal().
| static VALUE BigDecimal_IsFinite | ( | VALUE | self | ) | [static] |
Definition at line 602 of file bigdecimal.c.
References GetVpValue(), Qfalse, Qtrue, VpIsInf, and VpIsNaN.
Referenced by Init_bigdecimal().
| static VALUE BigDecimal_IsInfinite | ( | VALUE | self | ) | [static] |
Definition at line 592 of file bigdecimal.c.
References GetVpValue(), INT2FIX, Qnil, VpIsNegInf, and VpIsPosInf.
Referenced by Init_bigdecimal().
| static VALUE BigDecimal_IsNaN | ( | VALUE | self | ) | [static] |
Definition at line 581 of file bigdecimal.c.
References GetVpValue(), Qfalse, Qtrue, and VpIsNaN.
Referenced by Init_bigdecimal().
| static VALUE BigDecimal_le | ( | VALUE | self, |
| VALUE | r | ||
| ) | [static] |
Definition at line 1048 of file bigdecimal.c.
References BigDecimalCmp().
Referenced by Init_bigdecimal().
| static VALUE BigDecimal_limit | ( | int | argc, |
| VALUE * | argv, | ||
| VALUE | self | ||
| ) | [static] |
Definition at line 2392 of file bigdecimal.c.
References Check_Type, FIX2INT, INT2NUM(), Qnil, rb_eArgError, rb_raise(), rb_scan_args(), T_FIXNUM, VpGetPrecLimit(), and VpSetPrecLimit().
Referenced by Init_bigdecimal().
| static VALUE BigDecimal_load | ( | VALUE | self, |
| VALUE | str | ||
| ) | [static] |
Definition at line 356 of file bigdecimal.c.
References ENTER, GUARD_OBJ, ISDIGIT, long, Real::MaxPrec, rb_eTypeError, rb_raise(), RSTRING_PTR, SafeStringValue, ToValue(), VpBaseFig, and VpNewRbClass().
Referenced by Init_bigdecimal().
| static VALUE BigDecimal_lt | ( | VALUE | self, |
| VALUE | r | ||
| ) | [static] |
Definition at line 1036 of file bigdecimal.c.
References BigDecimalCmp().
Referenced by Init_bigdecimal().
| static size_t BigDecimal_memsize | ( | const void * | ptr | ) | [static] |
Definition at line 147 of file bigdecimal.c.
References BDIGIT, and Real::MaxPrec.
| static VALUE BigDecimal_mod | ( | VALUE | self, |
| VALUE | r | ||
| ) | [static] |
Definition at line 1286 of file bigdecimal.c.
References BigDecimal_DoDivmod(), div, DoSomeOne, ENTER, mod, NULL, SAVE, and ToValue().
Referenced by Init_bigdecimal().
| static VALUE BigDecimal_mode | ( | int | argc, |
| VALUE * | argv, | ||
| VALUE | self | ||
| ) | [static] |
Definition at line 455 of file bigdecimal.c.
References check_rounding_mode(), Check_Type, FIX2INT, INT2FIX, long, NIL_P, Qfalse, Qnil, Qtrue, rb_eArgError, rb_eTypeError, rb_raise(), rb_scan_args(), T_FIXNUM, VP_EXCEPTION_ALL, VP_EXCEPTION_INFINITY, VP_EXCEPTION_NaN, VP_EXCEPTION_UNDERFLOW, VP_EXCEPTION_ZERODIVIDE, VP_ROUND_MODE, VpGetException(), VpGetRoundMode(), VpSetException(), and VpSetRoundMode().
Referenced by Init_bigdecimal().
| static VALUE BigDecimal_mult | ( | VALUE | self, |
| VALUE | r | ||
| ) | [static] |
Definition at line 1100 of file bigdecimal.c.
References DBL_DIG, DoSomeOne, ENTER, GetVpValue(), GetVpValueWithPrec(), GUARD_OBJ, Real::Prec, RB_TYPE_P, SAVE, T_FLOAT, T_RATIONAL, ToValue(), VpBaseFig, VpCreateRbObject(), and VpMult().
Referenced by BigDecimal_mult2(), BigMath_s_exp(), BigMath_s_log(), and Init_bigdecimal().
| static VALUE BigDecimal_mult2 | ( | VALUE | self, |
| VALUE | b, | ||
| VALUE | n | ||
| ) | [static] |
Definition at line 1461 of file bigdecimal.c.
References BigDecimal_mult(), cv, ENTER, GetPositiveInt(), GetVpValue(), GUARD_OBJ, SIGNED_VALUE, ToValue(), VpGetRoundMode(), VpLeftRound(), and VpSetPrecLimit().
Referenced by BigMath_s_exp(), BigMath_s_log(), Init_bigdecimal(), and rmpd_power_by_big_decimal().
| static VALUE BigDecimal_neg | ( | VALUE | self | ) | [static] |
Definition at line 1078 of file bigdecimal.c.
References ENTER, GetVpValue(), GUARD_OBJ, Real::Prec, ToValue(), VpAsgn(), VpBaseFig, and VpCreateRbObject().
Referenced by Init_bigdecimal().
| static VALUE BigDecimal_new | ( | int | argc, |
| VALUE * | argv, | ||
| VALUE | self | ||
| ) | [static] |
Definition at line 2323 of file bigdecimal.c.
References DATA_PTR, DBL_DIG, ENTER, GetPositiveInt(), GetVpValue(), GetVpValueWithPrec(), GUARD_OBJ, is_kind_of_BigDecimal(), NIL_P, rb_eArgError, rb_raise(), rb_scan_args(), RSTRING_PTR, SafeStringValue, T_BIGNUM, T_DATA, T_FIXNUM, T_FLOAT, T_RATIONAL, T_STRING, ToValue(), TYPE, VpDup(), and VpNewRbClass().
Referenced by BigDecimal_global_new(), and Init_bigdecimal().
| static VALUE BigDecimal_nonzero | ( | VALUE | self | ) | [static] |
Definition at line 998 of file bigdecimal.c.
References GetVpValue(), Qnil, and VpIsZero.
Referenced by Init_bigdecimal().
| static VALUE BigDecimal_power | ( | int | argc, |
| VALUE * | argv, | ||
| VALUE | self | ||
| ) | [static] |
Definition at line 2074 of file bigdecimal.c.
References BigDecimal_abs(), BigDecimal_eq(), BigDecimal_round(), BigDecimal_to_i(), DATA_PTR, DBL_DIG, ENTER, FIX2INT, GetVpValue(), GetVpValueWithPrec(), GUARD_OBJ, INT2FIX, is_even(), is_integer(), is_kind_of_BigDecimal(), is_negative(), is_one(), is_positive, is_zero(), NIL_P, NULL, NUM2SSIZET, Real::obj, Real::Prec, rb_eMathDomainError, rb_eTypeError, rb_funcall(), RB_GC_GUARD, rb_obj_classname(), rb_raise(), rb_scan_args(), RB_TYPE_P, RFLOAT_VALUE, rmpd_power_by_big_decimal(), round(), RRATIONAL, RTEST, SIGNED_VALUE, T_BIGNUM, T_DATA, T_FIXNUM, T_FLOAT, T_RATIONAL, ToValue(), TYPE, VpBaseFig, VpCreateRbObject(), VpGetSign, VpIsDef, VpIsInf, VpIsNaN, VpIsZero, VpPower(), VpSetInf, VpSetNaN, VpSetNegInf, VpSetPosInf, and zero().
Referenced by BigDecimal_power_op(), and Init_bigdecimal().
| static VALUE BigDecimal_power_op | ( | VALUE | self, |
| VALUE | exp | ||
| ) | [static] |
Definition at line 2300 of file bigdecimal.c.
References BigDecimal_power().
Referenced by Init_bigdecimal().
| static VALUE BigDecimal_prec | ( | VALUE | self | ) | [static] |
Definition at line 304 of file bigdecimal.c.
References ENTER, GetVpValue(), GUARD_OBJ, INT2NUM(), Real::MaxPrec, Real::Prec, rb_assoc_new(), and VpBaseFig.
Referenced by Init_bigdecimal().
| static VALUE BigDecimal_remainder | ( | VALUE | self, |
| VALUE | r | ||
| ) | [static] |
Definition at line 1349 of file bigdecimal.c.
References BigDecimal_divremain(), and ToValue().
Referenced by Init_bigdecimal().
| static VALUE BigDecimal_round | ( | int | argc, |
| VALUE * | argv, | ||
| VALUE | self | ||
| ) | [static] |
Definition at line 1561 of file bigdecimal.c.
References BigDecimal_to_i(), check_rounding_mode(), Check_Type, ENTER, FIX2INT, GetVpValue(), GUARD_OBJ, Real::Prec, rb_scan_args(), T_FIXNUM, ToValue(), VpActiveRound(), VpBaseFig, VpCreateRbObject(), VpGetRoundMode(), and VpSetPrecLimit().
Referenced by BigDecimal_power(), BigMath_s_exp(), and Init_bigdecimal().
| static VALUE BigDecimal_save_exception_mode | ( | VALUE | self | ) | [static] |
Definition at line 2437 of file bigdecimal.c.
References Qnil, rb_jump_tag(), rb_protect(), rb_yield(), VpGetException(), and VpSetException().
Referenced by Init_bigdecimal().
| static VALUE BigDecimal_save_limit | ( | VALUE | self | ) | [static] |
Definition at line 2465 of file bigdecimal.c.
References Qnil, rb_jump_tag(), rb_protect(), rb_yield(), VpGetPrecLimit(), and VpSetPrecLimit().
Referenced by Init_bigdecimal().
| static VALUE BigDecimal_save_rounding_mode | ( | VALUE | self | ) | [static] |
Definition at line 2451 of file bigdecimal.c.
References Qnil, rb_jump_tag(), rb_protect(), rb_yield(), VpGetRoundMode(), and VpSetRoundMode().
Referenced by Init_bigdecimal().
| static VALUE BigDecimal_sign | ( | VALUE | self | ) | [static] |
Definition at line 2427 of file bigdecimal.c.
References GetVpValue(), INT2FIX, and Real::sign.
Referenced by Init_bigdecimal().
| static VALUE BigDecimal_split | ( | VALUE | self | ) | [static] |
Definition at line 1878 of file bigdecimal.c.
References ENTER, GetVpValue(), GUARD_OBJ, INT2FIX, INT2NUM(), len, memmove(), rb_ary_new2(), rb_ary_push(), rb_str_new(), rb_str_resize(), RSTRING_PTR, strlen(), VpExponent10(), VpNumOfChars(), and VpSzMantissa().
Referenced by BigDecimal_to_i(), BigDecimal_to_r(), and Init_bigdecimal().
| static VALUE BigDecimal_sqrt | ( | VALUE | self, |
| VALUE | nFig | ||
| ) | [static] |
Definition at line 1506 of file bigdecimal.c.
References ENTER, GetPositiveInt(), GetVpValue(), GUARD_OBJ, Real::Prec, ToValue(), VpBaseFig, VpCreateRbObject(), VpDblFig, and VpSqrt().
Referenced by Init_bigdecimal().
| static VALUE BigDecimal_sub | ( | VALUE | self, |
| VALUE | r | ||
| ) | [static] |
Definition at line 858 of file bigdecimal.c.
References DBL_DIG, DoSomeOne, ENTER, GetAddSubPrec(), GetVpValue(), GetVpValueWithPrec(), GUARD_OBJ, Real::obj, Real::Prec, RB_TYPE_P, SAVE, T_FLOAT, T_RATIONAL, ToValue(), VpAddSub(), VpBaseFig, VpCreateRbObject(), VpGetSign, VpIsNaN, and VpSetInf.
Referenced by BigDecimal_sub2(), BigMath_s_log(), and Init_bigdecimal().
| static VALUE BigDecimal_sub2 | ( | VALUE | self, |
| VALUE | b, | ||
| VALUE | n | ||
| ) | [static] |
Definition at line 1444 of file bigdecimal.c.
References BigDecimal_sub(), cv, ENTER, GetPositiveInt(), GetVpValue(), GUARD_OBJ, SIGNED_VALUE, ToValue(), VpGetRoundMode(), VpLeftRound(), and VpSetPrecLimit().
Referenced by Init_bigdecimal().
| static VALUE BigDecimal_to_f | ( | VALUE | self | ) | [static] |
Definition at line 674 of file bigdecimal.c.
References BASE_FIG, buf, DBL_MAX_10_EXP, DBL_MIN_10_EXP, ENTER, errno, GetVpValue(), GUARD_OBJ, rb_float_new(), rb_str_new(), RSTRING_PTR, SIGNED_VALUE, strtod, VP_EXCEPTION_OVERFLOW, VP_EXCEPTION_UNDERFLOW, VpException(), VpGetDoubleNegInf(), VpGetDoublePosInf(), VpNumOfChars(), VpToString(), and VpVtoD().
Referenced by BigDecimal_coerce(), and Init_bigdecimal().
| static VALUE BigDecimal_to_i | ( | VALUE | self | ) | [static] |
Definition at line 629 of file bigdecimal.c.
References BDIGIT_DBL_SIGNED, BigDecimal_check_num(), BigDecimal_split(), ENTER, Real::frac, GetVpValue(), GUARD_OBJ, INT2FIX, LONG2NUM, RARRAY_PTR, rb_eFloatDomainError, rb_funcall(), rb_intern, rb_raise(), RB_TYPE_P, RSTRING_LEN, T_FLOAT, VpBaseFig, VpExponent10(), and VpGetSign.
Referenced by BigDecimal_ceil(), BigDecimal_div2(), BigDecimal_floor(), BigDecimal_power(), BigDecimal_round(), BigDecimal_truncate(), and Init_bigdecimal().
| static VALUE BigDecimal_to_r | ( | VALUE | self | ) | [static] |
Definition at line 719 of file bigdecimal.c.
References BigDecimal_check_num(), BigDecimal_split(), GetVpValue(), INT2FIX, RARRAY_PTR, rb_funcall(), rb_intern, rb_Rational(), rb_Rational1, RSTRING_LEN, VpExponent10(), and VpGetSign.
Referenced by Init_bigdecimal().
| static VALUE BigDecimal_to_s | ( | int | argc, |
| VALUE * | argv, | ||
| VALUE | self | ||
| ) | [static] |
Definition at line 1787 of file bigdecimal.c.
References ENTER, GetPositiveInt(), GetVpValue(), GUARD_OBJ, ISDIGIT, ISSPACE, rb_scan_args(), rb_str_new(), rb_str_resize(), RB_TYPE_P, RSTRING_PTR, SafeStringValue, strlen(), T_STRING, VpNumOfChars(), VpToFString(), and VpToString().
Referenced by Init_bigdecimal().
| static VALUE BigDecimal_truncate | ( | int | argc, |
| VALUE * | argv, | ||
| VALUE | self | ||
| ) | [static] |
Definition at line 1619 of file bigdecimal.c.
References BigDecimal_to_i(), Check_Type, ENTER, FIX2INT, GetVpValue(), GUARD_OBJ, Real::Prec, rb_scan_args(), T_FIXNUM, ToValue(), VP_ROUND_DOWN, VpActiveRound(), VpBaseFig, VpCreateRbObject(), and VpSetPrecLimit().
Referenced by Init_bigdecimal().
| static VALUE BigDecimal_uplus | ( | VALUE | self | ) | [static] |
Definition at line 789 of file bigdecimal.c.
Referenced by Init_bigdecimal().
| static VALUE BigDecimal_version | ( | VALUE | self | ) | [static] |
Definition at line 117 of file bigdecimal.c.
References rb_str_new2().
Referenced by Init_bigdecimal().
| static VALUE BigDecimal_zero | ( | VALUE | self | ) | [static] |
Definition at line 990 of file bigdecimal.c.
References GetVpValue(), Qfalse, Qtrue, and VpIsZero.
Referenced by Init_bigdecimal().
| static VALUE BigDecimalCmp | ( | VALUE | self, |
| VALUE | r, | ||
| char | op | ||
| ) | [static] |
Definition at line 897 of file bigdecimal.c.
References DBL_DIG, ENTER, GetVpValue(), GetVpValueWithPrec(), GUARD_OBJ, INT2FIX, is_kind_of_BigDecimal(), NULL, Real::Prec, Qfalse, Qnil, Qtrue, rb_bug(), rb_intern, rb_num_coerce_cmp(), rb_num_coerce_relop(), RTEST, SAVE, SIGNED_VALUE, T_BIGNUM, T_DATA, T_FIXNUM, T_FLOAT, T_RATIONAL, TYPE, VpBaseFig, and VpComp().
Referenced by BigDecimal_comp(), BigDecimal_eq(), BigDecimal_ge(), BigDecimal_gt(), BigDecimal_le(), and BigDecimal_lt().
| static VALUE BigMath_s_exp | ( | VALUE | klass, |
| VALUE | x, | ||
| VALUE | vprec | ||
| ) | [static] |
Definition at line 2486 of file bigdecimal.c.
References argv, BigDecimal_add(), BigDecimal_div2(), BigDecimal_mult(), BigDecimal_mult2(), BigDecimal_round(), cannot_be_coerced_into_BigDecimal(), DATA_PTR, DBL_DIG, GetVpValue(), GetVpValueWithPrec(), INT2NUM(), is_kind_of_BigDecimal(), isinf(), isnan, NULL, NUM2SSIZET, Real::obj, one(), rb_eArgError, RB_GC_GUARD, rb_raise(), RFLOAT_VALUE, rmpd_double_figures(), SIGNED_VALUE, SSIZET2NUM, T_BIGNUM, T_DATA, T_FIXNUM, T_FLOAT, T_RATIONAL, ToValue(), TYPE, vabs, VP_SIGN_POSITIVE_INFINITE, VpCreateRbObject(), VpExponent10(), VpGetSign, VpIsNaN, VpIsNegInf, VpIsPosInf, VpIsZero, VpSetInf, VpSetNaN, and VpSetSign.
Referenced by Init_bigdecimal().
| static VALUE BigMath_s_log | ( | VALUE | klass, |
| VALUE | x, | ||
| VALUE | vprec | ||
| ) | [static] |
Definition at line 2618 of file bigdecimal.c.
References argv, BigDecimal_add(), BigDecimal_div2(), BigDecimal_mult(), BigDecimal_mult2(), BigDecimal_sub(), buf, cannot_be_coerced_into_BigDecimal(), DATA_PTR, DBL_DIG, FIX2LONG, GetVpValue(), GetVpValueWithPrec(), INT2FIX, is_integer(), is_kind_of_BigDecimal(), isinf(), isnan, NULL, NUM2SSIZET, Real::obj, one(), rb_eArgError, rb_eMathDomainError, RB_GC_GUARD, rb_raise(), RBIGNUM_NEGATIVE_P, RBIGNUM_ZERO_P, RFLOAT_VALUE, rmpd_double_figures(), RRATIONAL_NEGATIVE_P, RRATIONAL_ZERO_P, SIGNED_VALUE, snprintf, SSIZET2NUM, T_BIGNUM, T_COMPLEX, T_DATA, T_FIXNUM, T_FLOAT, T_RATIONAL, ToValue(), TYPE, vabs, VP_SIGN_POSITIVE_INFINITE, VpCreateRbObject(), VpExponent10(), VpGetSign, VpIsNaN, VpIsNegInf, VpIsPosInf, VpIsZero, VpSetInf, VpSetNaN, and zero().
Referenced by Init_bigdecimal().
Definition at line 85 of file bigdecimal.c.
References BDIGIT, RBIGNUM_DIGITS, and RBIGNUM_LEN.
| static void cannot_be_coerced_into_BigDecimal | ( | VALUE | exc_class, |
| VALUE | v | ||
| ) | [static] |
Definition at line 180 of file bigdecimal.c.
References rb_class_name(), rb_exc_new3(), rb_exc_raise(), rb_inspect(), rb_obj_class(), rb_special_const_p(), rb_str_cat2(), and rb_str_dup().
Referenced by BigMath_s_exp(), BigMath_s_log(), and GetVpValueWithPrec().
| static unsigned short check_rounding_mode | ( | VALUE const | v | ) | [static] |
Definition at line 381 of file bigdecimal.c.
References Check_Type, FIX2UINT, id, id_banker, id_ceil, id_ceiling, id_default, id_down, id_floor, id_half_down, id_half_even, id_half_up, id_truncate, id_up, rb_eArgError, rb_raise(), SYM2ID, T_FIXNUM, T_SYMBOL, TYPE, VP_ROUND_CEIL, VP_ROUND_DOWN, VP_ROUND_FLOOR, VP_ROUND_HALF_DOWN, VP_ROUND_HALF_EVEN, VP_ROUND_HALF_UP, VP_ROUND_UP, and VpIsRoundMode().
Referenced by BigDecimal_mode(), and BigDecimal_round().
| static size_t GetAddSubPrec | ( | Real * | a, |
| Real * | b | ||
| ) | [static] |
Definition at line 510 of file bigdecimal.c.
References Real::exponent, Real::Prec, SIGNED_VALUE, VP_EXCEPTION_INFINITY, VpException(), and VpIsDef.
Referenced by BigDecimal_add(), BigDecimal_DoDivmod(), and BigDecimal_sub().
| static SIGNED_VALUE GetPositiveInt | ( | VALUE | v | ) | [static] |
Definition at line 531 of file bigdecimal.c.
References Check_Type, FIX2INT, rb_eArgError, rb_raise(), SIGNED_VALUE, and T_FIXNUM.
Referenced by BigDecimal_add2(), BigDecimal_div2(), BigDecimal_mult2(), BigDecimal_new(), BigDecimal_sqrt(), BigDecimal_sub2(), and BigDecimal_to_s().
| static Real* GetVpValue | ( | VALUE | v, |
| int | must | ||
| ) | [static] |
Definition at line 276 of file bigdecimal.c.
References GetVpValueWithPrec().
Referenced by BigDecimal_abs(), BigDecimal_add(), BigDecimal_add2(), BigDecimal_ceil(), BigDecimal_coerce(), BigDecimal_div2(), BigDecimal_divide(), BigDecimal_divremain(), BigDecimal_DoDivmod(), BigDecimal_dump(), BigDecimal_exponent(), BigDecimal_fix(), BigDecimal_floor(), BigDecimal_frac(), BigDecimal_hash(), BigDecimal_inspect(), BigDecimal_IsFinite(), BigDecimal_IsInfinite(), BigDecimal_IsNaN(), BigDecimal_mult(), BigDecimal_mult2(), BigDecimal_neg(), BigDecimal_new(), BigDecimal_nonzero(), BigDecimal_power(), BigDecimal_prec(), BigDecimal_round(), BigDecimal_sign(), BigDecimal_split(), BigDecimal_sqrt(), BigDecimal_sub(), BigDecimal_sub2(), BigDecimal_to_f(), BigDecimal_to_i(), BigDecimal_to_r(), BigDecimal_to_s(), BigDecimal_truncate(), BigDecimal_zero(), BigDecimalCmp(), BigMath_s_exp(), and BigMath_s_log().
| static Real* GetVpValueWithPrec | ( | VALUE | v, |
| long | prec, | ||
| int | must | ||
| ) | [static] |
Definition at line 199 of file bigdecimal.c.
References args, BigDecimal_div2(), cannot_be_coerced_into_BigDecimal(), DATA_PTR, DBL_DIG, FIX2LONG, id_to_r, is_kind_of_BigDecimal(), LONG2NUM, NULL, Qundef, rb_big2str(), rb_eArgError, rb_eTypeError, rb_funcall(), rb_obj_classname(), rb_raise(), RRATIONAL, RSTRING_PTR, SafeStringValue, strlen(), T_BIGNUM, T_DATA, T_FIXNUM, T_FLOAT, T_RATIONAL, T_STRING, ToValue(), TYPE, VpBaseFig, and VpCreateRbObject().
Referenced by BigDecimal_add(), BigDecimal_coerce(), BigDecimal_divide(), BigDecimal_divremain(), BigDecimal_DoDivmod(), BigDecimal_mult(), BigDecimal_new(), BigDecimal_power(), BigDecimal_sub(), BigDecimalCmp(), BigMath_s_exp(), BigMath_s_log(), and GetVpValue().
| void Init_bigdecimal | ( | void | ) |
Definition at line 2872 of file bigdecimal.c.
References BigDecimal_abs(), BigDecimal_add(), BigDecimal_add2(), BigDecimal_ceil(), BigDecimal_coerce(), BigDecimal_comp(), BigDecimal_div(), BigDecimal_div2(), BigDecimal_divmod(), BigDecimal_double_fig(), BigDecimal_dump(), BigDecimal_eq(), BigDecimal_exponent(), BigDecimal_fix(), BigDecimal_floor(), BigDecimal_frac(), BigDecimal_ge(), BigDecimal_global_new(), BigDecimal_gt(), BigDecimal_hash(), BigDecimal_inspect(), BigDecimal_IsFinite(), BigDecimal_IsInfinite(), BigDecimal_IsNaN(), BigDecimal_le(), BigDecimal_limit(), BigDecimal_load(), BigDecimal_lt(), BigDecimal_mod(), BigDecimal_mode(), BigDecimal_mult(), BigDecimal_mult2(), BigDecimal_neg(), BigDecimal_new(), BigDecimal_nonzero(), BigDecimal_power(), BigDecimal_power_op(), BigDecimal_prec(), BigDecimal_remainder(), BigDecimal_round(), BigDecimal_save_exception_mode(), BigDecimal_save_limit(), BigDecimal_save_rounding_mode(), BigDecimal_sign(), BigDecimal_split(), BigDecimal_sqrt(), BigDecimal_sub(), BigDecimal_sub2(), BigDecimal_to_f(), BigDecimal_to_i(), BigDecimal_to_r(), BigDecimal_to_s(), BigDecimal_truncate(), BigDecimal_uplus(), BigDecimal_version(), BigDecimal_zero(), BigMath_s_exp(), BigMath_s_log(), id_banker, id_BigDecimal_exception_mode, id_BigDecimal_precision_limit, id_BigDecimal_rounding_mode, id_ceil, id_ceiling, id_default, id_down, id_eq, id_floor, id_half_down, id_half_even, id_half_up, id_to_r, id_truncate, id_up, INT2FIX, rb_cBigDecimal, rb_cNumeric, rb_define_class(), rb_define_const(), rb_define_global_function(), rb_define_method(), rb_define_module(), rb_define_singleton_method(), rb_intern_const, rb_mBigMath, rb_str_new2(), SIGNED_VALUE, VP_EXCEPTION_ALL, VP_EXCEPTION_INFINITY, VP_EXCEPTION_NaN, VP_EXCEPTION_OVERFLOW, VP_EXCEPTION_UNDERFLOW, VP_EXCEPTION_ZERODIVIDE, VP_ROUND_CEIL, VP_ROUND_DOWN, VP_ROUND_FLOOR, VP_ROUND_HALF_DOWN, VP_ROUND_HALF_EVEN, VP_ROUND_HALF_UP, VP_ROUND_MODE, VP_ROUND_UP, VP_SIGN_NaN, VP_SIGN_NEGATIVE_FINITE, VP_SIGN_NEGATIVE_INFINITE, VP_SIGN_NEGATIVE_ZERO, VP_SIGN_POSITIVE_FINITE, VP_SIGN_POSITIVE_INFINITE, VP_SIGN_POSITIVE_ZERO, VpBaseVal, and VpInit().
Definition at line 2033 of file bigdecimal.c.
References FIX2LONG, RBIGNUM_DIGITS, T_BIGNUM, T_FIXNUM, and TYPE.
Referenced by BigDecimal_power().
| static int is_integer | ( | VALUE | x | ) | [inline, static] |
Definition at line 1962 of file bigdecimal.c.
References RB_TYPE_P, T_BIGNUM, and T_FIXNUM.
Referenced by BigDecimal_power(), and BigMath_s_log().
| static int is_kind_of_BigDecimal | ( | VALUE const | v | ) | [inline, static] |
Definition at line 159 of file bigdecimal.c.
References rb_typeddata_is_kind_of().
Referenced by BigDecimal_new(), BigDecimal_power(), BigDecimalCmp(), BigMath_s_exp(), BigMath_s_log(), and GetVpValueWithPrec().
| static int is_negative | ( | VALUE | x | ) | [inline, static] |
Definition at line 1968 of file bigdecimal.c.
References FIX2LONG, FIXNUM_P, INT2FIX, rb_funcall(), RB_TYPE_P, RBIGNUM_NEGATIVE_P, RFLOAT_VALUE, RTEST, T_BIGNUM, and T_FLOAT.
Referenced by BigDecimal_power().
Definition at line 2008 of file bigdecimal.c.
References FIX2LONG, FIXNUM_P, id_eq, INT2FIX, Qfalse, rb_funcall(), RRATIONAL, RTEST, T_BIGNUM, T_FIXNUM, T_RATIONAL, and TYPE.
Referenced by BigDecimal_power().
Definition at line 1985 of file bigdecimal.c.
References FIX2LONG, FIXNUM_P, id_eq, INT2FIX, Qfalse, rb_funcall(), RRATIONAL, RTEST, T_BIGNUM, T_FIXNUM, T_RATIONAL, and TYPE.
Referenced by BigDecimal_power().
| NORETURN | ( | static void | cannot_be_coerced_into_BigDecimalVALUE, VALUE | ) |
| static double One | ( | void | ) | [static] |
Definition at line 3300 of file bigdecimal.c.
References gOne_ABCED9B4_CE73__00400511F31D.
Referenced by VpGetDoubleNegInf(), VpGetDoubleNegZero(), and VpGetDoublePosInf().
| static VALUE rmpd_power_by_big_decimal | ( | Real const * | x, |
| Real const * | exp, | ||
| ssize_t const | n | ||
| ) | [static] |
Definition at line 2050 of file bigdecimal.c.
References BigDecimal_mult2(), BigMath_exp, BigMath_log, Real::obj, SSIZET2NUM, ToValue(), VpCreateRbObject(), and VpIsZero.
Referenced by BigDecimal_power().
Definition at line 165 of file bigdecimal.c.
References Real::obj, VP_EXCEPTION_INFINITY, VP_EXCEPTION_NaN, VpException(), VpIsNaN, VpIsNegInf, and VpIsPosInf.
Referenced by BigDecimal_abs(), BigDecimal_add(), BigDecimal_add2(), BigDecimal_ceil(), BigDecimal_div(), BigDecimal_div2(), BigDecimal_divmod(), BigDecimal_fix(), BigDecimal_floor(), BigDecimal_frac(), BigDecimal_load(), BigDecimal_mod(), BigDecimal_mult(), BigDecimal_mult2(), BigDecimal_neg(), BigDecimal_new(), BigDecimal_power(), BigDecimal_remainder(), BigDecimal_round(), BigDecimal_sqrt(), BigDecimal_sub(), BigDecimal_sub2(), BigDecimal_truncate(), BigMath_s_exp(), BigMath_s_log(), GetVpValueWithPrec(), and rmpd_power_by_big_decimal().
| VP_EXPORT int VpActiveRound | ( | Real * | y, |
| Real * | x, | ||
| unsigned short | f, | ||
| ssize_t | nf | ||
| ) |
Definition at line 5672 of file bigdecimal.c.
References VpAsgn(), and VpMidRound().
Referenced by BigDecimal_ceil(), BigDecimal_divremain(), BigDecimal_DoDivmod(), BigDecimal_fix(), BigDecimal_floor(), BigDecimal_round(), and BigDecimal_truncate().
Definition at line 3946 of file bigdecimal.c.
References BASE, BDIGIT, bp, Real::frac, VpAsgn(), and VpSetPTR().
Referenced by VpAddSub().
Definition at line 3818 of file bigdecimal.c.
References BASE_FIG, BDIGIT, Real::exponent, Real::frac, Min, Real::Prec, VpAddAbs(), VpAsgn(), VpGetSign, VpInternalRound(), VpIsDefOP(), VpIsZero, VpSetSign, VpSetZero, and VpSubAbs().
Referenced by BigDecimal_add(), BigDecimal_divremain(), BigDecimal_DoDivmod(), BigDecimal_sub(), and VpSqrt().
Definition at line 3623 of file bigdecimal.c.
References BASE_FIG, BDIGIT, buf, ISDIGIT, ISSPACE, Max, Real::MaxPrec, ne, NULL, rb_str_resize(), rb_str_tmp_new(), RSTRING_PTR, StrCmp, strlen(), SZ_INF, SZ_NaN, SZ_NINF, SZ_PINF, VpCtoV(), VpGetPrecLimit(), VpMemAlloc(), VpSetNaN, VpSetNegInf, VpSetPosInf, and VpSetZero.
Referenced by VpCreateRbObject(), VpInit(), VpMult(), VpNewRbClass(), VpPower(), and VpSqrt().
Definition at line 3776 of file bigdecimal.c.
References BASE_FIG, BDIGIT, Real::exponent, Real::frac, Real::MaxPrec, Real::Prec, VpGetSign, VpInternalRound(), VpIsInf, VpIsNaN, VpIsZero, VpLimitRound(), VpSetInf, VpSetNaN, VpSetSign, and VpSetZero.
Referenced by BigDecimal_abs(), BigDecimal_neg(), VpActiveRound(), VpAddAbs(), VpAddSub(), VpDivd(), VpFrac(), VpMult(), VpPower(), VpSqrt(), and VpSubAbs().
Definition at line 4621 of file bigdecimal.c.
References Real::exponent, Real::frac, Real::Prec, Real::sign, VpGetSign, VpIsDef, VpIsNaN, and VpIsZero.
Referenced by BigDecimalCmp().
| VP_EXPORT Real* VpCreateRbObject | ( | size_t | mx, |
| const char * | str | ||
| ) |
Definition at line 551 of file bigdecimal.c.
References Real::obj, rb_cBigDecimal, TypedData_Wrap_Struct, and VpAlloc().
Referenced by BigDecimal_abs(), BigDecimal_add(), BigDecimal_ceil(), BigDecimal_div2(), BigDecimal_divide(), BigDecimal_divremain(), BigDecimal_DoDivmod(), BigDecimal_fix(), BigDecimal_floor(), BigDecimal_frac(), BigDecimal_mult(), BigDecimal_neg(), BigDecimal_power(), BigDecimal_round(), BigDecimal_sqrt(), BigDecimal_sub(), BigDecimal_truncate(), BigMath_s_exp(), BigMath_s_log(), GetVpValueWithPrec(), and rmpd_power_by_big_decimal().
| VP_EXPORT int VpCtoV | ( | Real * | a, |
| const char * | int_chr, | ||
| size_t | ni, | ||
| const char * | frac, | ||
| size_t | nf, | ||
| const char * | exp_chr, | ||
| size_t | ne | ||
| ) |
Definition at line 5042 of file bigdecimal.c.
References BASE_FIG, BDIGIT, Real::exponent, Real::frac, Real::MaxPrec, ne, Real::Prec, rb_warn(), SIGNED_VALUE, VP_EXCEPTION_INFINITY, VpException(), VpNmlz(), VpSetInf, VpSetSign, VpSetZero, and zero().
Referenced by VpAlloc().
Definition at line 4372 of file bigdecimal.c.
References AddExponent(), BASE, BASE_FIG, BDIGIT, BDIGIT_DBL, Real::exponent, Real::frac, Real::MaxPrec, Min, Real::Prec, rb_bug(), VP_EXCEPTION_NaN, VP_EXCEPTION_ZERODIVIDE, VpAsgn(), VpException(), VpGetSign, VpIsDefOP(), VpIsOne, VpIsZero, VpNmlz(), VpSetInf, VpSetNaN, VpSetSign, and VpSetZero.
Referenced by BigDecimal_div2(), BigDecimal_divide(), BigDecimal_divremain(), BigDecimal_DoDivmod(), VpPower(), and VpSqrt().
Definition at line 5257 of file bigdecimal.c.
References BASE, BDIGIT, Real::exponent, Real::frac, isinf(), isnan, Real::MaxPrec, ne, Real::Prec, SIGNED_VALUE, VpInternalRound(), VpSetNaN, VpSetNegInf, VpSetPosInf, VpSetSign, and VpSetZero.
Referenced by VpSqrt().
Definition at line 559 of file bigdecimal.c.
References assert, BDIGIT, Real::exponent, Real::flag, Real::frac, Real::MaxPrec, MEMCPY, NULL, Real::obj, Real::Prec, rb_obj_class(), Real::sign, TypedData_Wrap_Struct, and VpMemAlloc().
Referenced by BigDecimal_new().
| VP_EXPORT int VpException | ( | unsigned short | f, |
| const char * | str, | ||
| int | always | ||
| ) |
Definition at line 3361 of file bigdecimal.c.
References rb_eFloatDomainError, rb_fatal(), rb_raise(), VP_EXCEPTION_INFINITY, VP_EXCEPTION_MEMORY, VP_EXCEPTION_NaN, VP_EXCEPTION_OP, VP_EXCEPTION_UNDERFLOW, VP_EXCEPTION_ZERODIVIDE, and VpGetException().
Referenced by AddExponent(), BigDecimal_check_num(), BigDecimal_to_f(), GetAddSubPrec(), ToValue(), VpCtoV(), VpDivd(), VpIsDefOP(), VpMemAlloc(), and VpSqrt().
| VP_EXPORT ssize_t VpExponent10 | ( | Real * | a | ) |
Definition at line 4835 of file bigdecimal.c.
References BASE1, BASE_FIG, Real::exponent, Real::frac, and VpHasVal.
Referenced by BigDecimal_exponent(), BigDecimal_split(), BigDecimal_to_i(), BigDecimal_to_r(), BigMath_s_exp(), and BigMath_s_log().
| static void VpFormatSt | ( | char * | psz, |
| size_t | fFmt | ||
| ) | [static] |
Definition at line 4810 of file bigdecimal.c.
References ISSPACE, memmove(), and strlen().
Referenced by VpToFString(), and VpToString().
Definition at line 5766 of file bigdecimal.c.
References Real::exponent, Real::frac, Real::MaxPrec, Min, Real::Prec, VpAsgn(), VpGetSign, VpHasVal, VpNmlz(), VpSetSign, and VpSetZero.
Referenced by BigDecimal_divremain(), and BigDecimal_frac().
Definition at line 3139 of file bigdecimal.c.
References getchar, NULL, and xfree().
Referenced by BigDecimal_delete(), VpMult(), VpPower(), and VpSqrt().
| VP_EXPORT double VpGetDoubleNaN | ( | void | ) |
Definition at line 3320 of file bigdecimal.c.
References Zero().
| VP_EXPORT double VpGetDoubleNegInf | ( | void | ) |
Definition at line 3336 of file bigdecimal.c.
Referenced by BigDecimal_to_f(), VpGetDoubleNegZero(), VpInit(), and VpVtoD().
| VP_EXPORT double VpGetDoubleNegZero | ( | void | ) |
Definition at line 3344 of file bigdecimal.c.
References One(), and VpGetDoubleNegInf().
| VP_EXPORT double VpGetDoublePosInf | ( | void | ) |
Definition at line 3328 of file bigdecimal.c.
Referenced by BigDecimal_to_f(), VpInit(), and VpVtoD().
| static unsigned short VpGetException | ( | void | ) | [static] |
Definition at line 3169 of file bigdecimal.c.
References FIX2UINT, id_BigDecimal_exception_mode, NIL_P, rb_thread_current(), rb_thread_local_aref(), RMPD_EXCEPTION_MODE_DEFAULT, and rmpd_set_thread_local_exception_mode.
Referenced by BigDecimal_mode(), BigDecimal_save_exception_mode(), and VpException().
| VP_EXPORT size_t VpGetPrecLimit | ( | void | ) |
Definition at line 3204 of file bigdecimal.c.
References id_BigDecimal_precision_limit, NIL_P, NUM2SIZET, rb_thread_current(), rb_thread_local_aref(), RMPD_PRECISION_LIMIT_DEFAULT, and rmpd_set_thread_local_precision_limit.
Referenced by BigDecimal_limit(), BigDecimal_save_limit(), VpAlloc(), VpLimitRound(), and VpSetPrecLimit().
| VP_EXPORT unsigned short VpGetRoundMode | ( | void | ) |
Definition at line 3239 of file bigdecimal.c.
References FIX2INT, id_BigDecimal_rounding_mode, NIL_P, rb_thread_current(), rb_thread_local_aref(), RMPD_ROUNDING_MODE_DEFAULT, and rmpd_set_thread_local_rounding_mode.
Referenced by BigDecimal_add2(), BigDecimal_div2(), BigDecimal_mode(), BigDecimal_mult2(), BigDecimal_round(), BigDecimal_save_rounding_mode(), BigDecimal_sub2(), VpInternalRound(), VpLimitRound(), and VpSetRoundMode().
Definition at line 3542 of file bigdecimal.c.
References BASE, BASE1, BASE_FIG, DBLE_FIG, HALF_BASE, rmpd_double_figures(), VpAlloc(), VpGetDoubleNaN(), VpGetDoubleNegInf(), VpGetDoubleNegZero(), and VpGetDoublePosInf().
Referenced by Init_bigdecimal().
| static void VpInternalRound | ( | Real * | c, |
| size_t | ixDigit, | ||
| BDIGIT | vPrev, | ||
| BDIGIT | v | ||
| ) | [static] |
Definition at line 5693 of file bigdecimal.c.
References BASE1, VP_ROUND_CEIL, VP_ROUND_DOWN, VP_ROUND_FLOOR, VP_ROUND_HALF_DOWN, VP_ROUND_HALF_EVEN, VP_ROUND_HALF_UP, VP_ROUND_UP, VpGetRoundMode(), VpGetSign, VpLimitRound(), VpNmlz(), and VpRdup().
Referenced by BigDecimal_div(), VpAddSub(), VpAsgn(), and VpDtoV().
Definition at line 3401 of file bigdecimal.c.
References VP_EXCEPTION_INFINITY, VP_EXCEPTION_NaN, VpException(), VpGetSign, VpIsInf, VpIsNaN, VpIsZero, VpSetInf, VpSetNaN, and VpSetZero.
Referenced by VpAddSub(), VpDivd(), and VpMult().
| VP_EXPORT int VpIsRoundMode | ( | unsigned short | n | ) |
Definition at line 3255 of file bigdecimal.c.
References VP_ROUND_CEIL, VP_ROUND_DOWN, VP_ROUND_FLOOR, VP_ROUND_HALF_DOWN, VP_ROUND_HALF_EVEN, VP_ROUND_HALF_UP, and VP_ROUND_UP.
Referenced by check_rounding_mode(), and VpSetRoundMode().
| VP_EXPORT int VpLeftRound | ( | Real * | y, |
| unsigned short | f, | ||
| ssize_t | nf | ||
| ) |
Definition at line 5657 of file bigdecimal.c.
References BASE_FIG, BDIGIT, Real::frac, VpExponent, VpHasVal, and VpMidRound().
Referenced by BigDecimal_add2(), BigDecimal_div2(), BigDecimal_mult2(), BigDecimal_sub2(), and VpLimitRound().
| static int VpLimitRound | ( | Real * | c, |
| size_t | ixDigit | ||
| ) | [static] |
Definition at line 5680 of file bigdecimal.c.
References BASE_FIG, Real::Prec, VpGetPrecLimit(), VpGetRoundMode(), VpLeftRound(), and VpNmlz().
Referenced by VpAsgn(), VpInternalRound(), and VpMult().
| VP_EXPORT void* VpMemAlloc | ( | size_t | mb | ) |
Definition at line 3125 of file bigdecimal.c.
References VP_EXCEPTION_MEMORY, VpException(), and xmalloc.
| VP_EXPORT int VpMidRound | ( | Real * | y, |
| unsigned short | f, | ||
| ssize_t | nf | ||
| ) |
Definition at line 5497 of file bigdecimal.c.
References BASE, BASE_FIG, BDIGIT, div, Real::exponent, Real::frac, Real::Prec, SIGNED_VALUE, VP_ROUND_CEIL, VP_ROUND_DOWN, VP_ROUND_FLOOR, VP_ROUND_HALF_DOWN, VP_ROUND_HALF_EVEN, VP_ROUND_HALF_UP, VP_ROUND_UP, VpGetSign, VpNmlz(), VpRdup(), VpSetOne, VpSetSign, and VpSetZero.
Referenced by VpActiveRound(), and VpLeftRound().
Definition at line 4244 of file bigdecimal.c.
References AddExponent(), BASE, BASE_FIG, BDIGIT, BDIGIT_DBL, Real::exponent, Real::frac, Real::MaxPrec, NULL, Real::Prec, VpAlloc(), VpAsgn(), VpFree(), VpGetSign, VpIsDefOP(), VpIsOne, VpIsZero, VpLimitRound(), VpNmlz(), VpSetSign, and VpSetZero.
Referenced by BigDecimal_divremain(), BigDecimal_DoDivmod(), BigDecimal_mult(), VpPower(), and VpSqrt().
| VP_EXPORT Real* VpNewRbClass | ( | size_t | mx, |
| const char * | str, | ||
| VALUE | klass | ||
| ) |
Definition at line 543 of file bigdecimal.c.
References Real::obj, TypedData_Wrap_Struct, and VpAlloc().
Referenced by BigDecimal_load(), and BigDecimal_new().
Definition at line 4583 of file bigdecimal.c.
References AddExponent(), BDIGIT, Real::frac, memmove(), Real::Prec, SIGNED_VALUE, VpGetSign, VpIsDef, VpIsZero, and VpSetZero.
Referenced by VpCtoV(), VpDivd(), VpFrac(), VpInternalRound(), VpLimitRound(), VpMidRound(), VpMult(), and VpRdup().
| VP_EXPORT size_t VpNumOfChars | ( | Real * | vp, |
| const char * | pszFmt | ||
| ) |
Definition at line 3498 of file bigdecimal.c.
References BASE_FIG, Real::exponent, NULL, Real::Prec, SIGNED_VALUE, and VpIsDef.
Referenced by BigDecimal_dump(), BigDecimal_inspect(), BigDecimal_split(), BigDecimal_to_f(), and BigDecimal_to_s().
Definition at line 3573 of file bigdecimal.c.
References VpConstOne.
Referenced by BigDecimal_DoDivmod().
| VP_EXPORT int VpPower | ( | Real * | y, |
| Real * | x, | ||
| SIGNED_VALUE | n | ||
| ) |
Definition at line 5814 of file bigdecimal.c.
References BASE_FIG, Real::exponent, Real::frac, Real::MaxPrec, NULL, Real::Prec, SIGNED_VALUE, VpAlloc(), VpAsgn(), VpDivd(), VpFree(), VpGetSign, VpIsInf, VpIsNaN, VpIsPosInf, VpIsZero, VpMult(), VpSetInf, VpSetNaN, VpSetOne, VpSetSign, and VpSetZero.
Referenced by BigDecimal_power().
Definition at line 5741 of file bigdecimal.c.
References AddExponent(), BASE, BDIGIT, Real::frac, Real::Prec, and VpNmlz().
Referenced by VpInternalRound(), and VpMidRound().
| static void VpSetException | ( | unsigned short | f | ) | [static] |
Definition at line 3185 of file bigdecimal.c.
References rmpd_set_thread_local_exception_mode.
Referenced by BigDecimal_mode(), and BigDecimal_save_exception_mode().
| VP_EXPORT size_t VpSetPrecLimit | ( | size_t | n | ) |
Definition at line 3220 of file bigdecimal.c.
References rmpd_set_thread_local_precision_limit, and VpGetPrecLimit().
Referenced by BigDecimal_add2(), BigDecimal_ceil(), BigDecimal_div2(), BigDecimal_floor(), BigDecimal_limit(), BigDecimal_mult2(), BigDecimal_round(), BigDecimal_save_limit(), BigDecimal_sub2(), and BigDecimal_truncate().
| static size_t VpSetPTR | ( | Real * | a, |
| Real * | b, | ||
| Real * | c, | ||
| size_t * | a_pos, | ||
| size_t * | b_pos, | ||
| size_t * | c_pos, | ||
| BDIGIT * | av, | ||
| BDIGIT * | bv | ||
| ) | [static] |
Definition at line 4149 of file bigdecimal.c.
References AddExponent(), Real::exponent, Real::frac, Max, Real::MaxPrec, and Real::Prec.
Referenced by VpAddAbs(), and VpSubAbs().
| VP_EXPORT unsigned short VpSetRoundMode | ( | unsigned short | n | ) |
Definition at line 3273 of file bigdecimal.c.
References rmpd_set_thread_local_rounding_mode, VpGetRoundMode(), and VpIsRoundMode().
Referenced by BigDecimal_mode(), and BigDecimal_save_rounding_mode().
Definition at line 5387 of file bigdecimal.c.
References BASE, BASE_FIG, DBLE_FIG, Real::exponent, if(), maxnr, Real::MaxPrec, Min, NULL, PRIdSIZE, SIGNED_VALUE, VP_EXCEPTION_OP, VpAddSub(), VpAlloc(), VpAsgn(), VpChangeSign, VpDivd(), VpDtoV(), VpException(), VpFree(), VpGetSign, VpHasVal, VpIsOne, VpIsZero, VpMult(), VpSetNaN, VpSetOne, and VpVtoD().
Referenced by BigDecimal_sqrt().
Definition at line 4037 of file bigdecimal.c.
References BASE, BDIGIT, bp, Real::frac, VpAsgn(), and VpSetPTR().
Referenced by VpAddSub().
| VP_EXPORT void VpSzMantissa | ( | Real * | a, |
| char * | psz | ||
| ) |
Definition at line 4852 of file bigdecimal.c.
References BASE1, BDIGIT_DBL, Real::frac, Real::Prec, strlen(), SZ_INF, SZ_NaN, SZ_NINF, VpGetSign, VpIsNaN, VpIsNegInf, VpIsPosInf, VpIsPosZero, and VpIsZero.
Referenced by BigDecimal_split().
| VP_EXPORT void VpToFString | ( | Real * | a, |
| char * | psz, | ||
| size_t | fFmt, | ||
| int | fPlus | ||
| ) |
Definition at line 4977 of file bigdecimal.c.
References BASE, BASE1, BASE_FIG, BDIGIT, Real::exponent, Real::frac, Real::Prec, strlen(), VpFormatSt(), VpGetSign, and VpToSpecialString().
Referenced by BigDecimal_to_s().
| VP_EXPORT int VpToSpecialString | ( | Real * | a, |
| char * | psz, | ||
| int | fPlus | ||
| ) |
Definition at line 4898 of file bigdecimal.c.
References SZ_INF, SZ_NaN, SZ_NINF, VpIsNaN, VpIsNegInf, VpIsPosInf, VpIsPosZero, and VpIsZero.
Referenced by VpToFString(), and VpToString().
| VP_EXPORT void VpToString | ( | Real * | a, |
| char * | psz, | ||
| size_t | fFmt, | ||
| int | fPlus | ||
| ) |
Definition at line 4931 of file bigdecimal.c.
References BASE1, BASE_FIG, BDIGIT, Real::exponent, Real::frac, Real::Prec, PRIdSIZE, shift(), strlen(), VpFormatSt(), VpGetSign, and VpToSpecialString().
Referenced by BigDecimal_dump(), BigDecimal_inspect(), BigDecimal_to_f(), and BigDecimal_to_s().
| VP_EXPORT int VpVtoD | ( | double * | d, |
| SIGNED_VALUE * | e, | ||
| Real * | m | ||
| ) |
Definition at line 5193 of file bigdecimal.c.
References BASE, BASE_FIG, DBLE_FIG, div, Real::exponent, Real::frac, Min, Real::Prec, SIGNED_VALUE, VpGetDoubleNaN(), VpGetDoubleNegInf(), VpGetDoubleNegZero(), VpGetDoublePosInf(), VpGetSign, VpIsNaN, VpIsNegInf, VpIsNegZero, VpIsPosInf, and VpIsPosZero.
Referenced by BigDecimal_to_f(), and VpSqrt().
| static double Zero | ( | void | ) | [static] |
Definition at line 3294 of file bigdecimal.c.
References gZero_ABCED9B1_CE73__00400511F31D.
Referenced by VpGetDoubleNaN(), VpGetDoubleNegInf(), and VpGetDoublePosInf().
const rb_data_type_t BigDecimal_data_type [static] |
{
"BigDecimal",
{0, BigDecimal_delete, BigDecimal_memsize,},
}
Definition at line 153 of file bigdecimal.c.
| volatile const double gOne_ABCED9B4_CE73__00400511F31D = 1.0 |
Definition at line 3292 of file bigdecimal.c.
Referenced by One().
| volatile const double gZero_ABCED9B1_CE73__00400511F31D = 0.0 |
Definition at line 3291 of file bigdecimal.c.
Referenced by Zero().
Definition at line 55 of file bigdecimal.c.
Referenced by check_rounding_mode(), and Init_bigdecimal().
ID id_BigDecimal_exception_mode [static] |
Definition at line 44 of file bigdecimal.c.
Referenced by Init_bigdecimal(), and VpGetException().
ID id_BigDecimal_precision_limit [static] |
Definition at line 46 of file bigdecimal.c.
Referenced by Init_bigdecimal(), and VpGetPrecLimit().
ID id_BigDecimal_rounding_mode [static] |
Definition at line 45 of file bigdecimal.c.
Referenced by Init_bigdecimal(), and VpGetRoundMode().
Definition at line 57 of file bigdecimal.c.
Referenced by check_rounding_mode(), and Init_bigdecimal().
ID id_ceiling [static] |
Definition at line 56 of file bigdecimal.c.
Referenced by check_rounding_mode(), and Init_bigdecimal().
ID id_default [static] |
Definition at line 52 of file bigdecimal.c.
Referenced by check_rounding_mode(), and Init_bigdecimal().
Definition at line 49 of file bigdecimal.c.
Referenced by check_rounding_mode(), and Init_bigdecimal().
Definition at line 60 of file bigdecimal.c.
Referenced by Init_bigdecimal(), is_one(), and is_zero().
Definition at line 58 of file bigdecimal.c.
Referenced by check_rounding_mode(), and Init_bigdecimal().
ID id_half_down [static] |
Definition at line 53 of file bigdecimal.c.
Referenced by check_rounding_mode(), and Init_bigdecimal().
ID id_half_even [static] |
Definition at line 54 of file bigdecimal.c.
Referenced by check_rounding_mode(), and Init_bigdecimal().
ID id_half_up [static] |
Definition at line 51 of file bigdecimal.c.
Referenced by check_rounding_mode(), and Init_bigdecimal().
Definition at line 59 of file bigdecimal.c.
Referenced by GetVpValueWithPrec(), and Init_bigdecimal().
ID id_truncate [static] |
Definition at line 50 of file bigdecimal.c.
Referenced by check_rounding_mode(), and Init_bigdecimal().
Definition at line 48 of file bigdecimal.c.
Referenced by check_rounding_mode(), and Init_bigdecimal().
Definition at line 41 of file bigdecimal.c.
Referenced by BigDecimal_global_new(), Init_bigdecimal(), and VpCreateRbObject().
Definition at line 42 of file bigdecimal.c.
Referenced by Init_bigdecimal().
Real* VpConstOne [static] |
Definition at line 3102 of file bigdecimal.c.
Referenced by VpOne().
Definition at line 3103 of file bigdecimal.c.
1.7.6.1