Ruby
2.0.0p247(2013-06-27revision41674)
|
Go to the source code of this file.
Data Structures | |
struct | Real |
Defines | |
#define | vabs abs |
#define | RMPD_COMPONENT_FIGURES 2 |
#define | RMPD_BASE ((BDIGIT)100U) |
#define | SZ_NaN "NaN" |
#define | SZ_INF "Infinity" |
#define | SZ_PINF "+Infinity" |
#define | SZ_NINF "-Infinity" |
#define | VP_EXPORT static |
#define | VP_EXCEPTION_ALL ((unsigned short)0x00FF) |
#define | VP_EXCEPTION_INFINITY ((unsigned short)0x0001) |
#define | VP_EXCEPTION_NaN ((unsigned short)0x0002) |
#define | VP_EXCEPTION_UNDERFLOW ((unsigned short)0x0004) |
#define | VP_EXCEPTION_OVERFLOW ((unsigned short)0x0001) /* 0x0008) */ |
#define | VP_EXCEPTION_ZERODIVIDE ((unsigned short)0x0010) |
#define | VP_EXCEPTION_OP ((unsigned short)0x0020) |
#define | VP_EXCEPTION_MEMORY ((unsigned short)0x0040) |
#define | RMPD_EXCEPTION_MODE_DEFAULT 0U |
#define | VP_ROUND_MODE ((unsigned short)0x0100) |
#define | VP_ROUND_UP 1 |
#define | VP_ROUND_DOWN 2 |
#define | VP_ROUND_HALF_UP 3 |
#define | VP_ROUND_HALF_DOWN 4 |
#define | VP_ROUND_CEIL 5 |
#define | VP_ROUND_FLOOR 6 |
#define | VP_ROUND_HALF_EVEN 7 |
#define | RMPD_ROUNDING_MODE_DEFAULT VP_ROUND_HALF_UP |
#define | VP_SIGN_NaN 0 /* NaN */ |
#define | VP_SIGN_POSITIVE_ZERO 1 /* Positive zero */ |
#define | VP_SIGN_NEGATIVE_ZERO -1 /* Negative zero */ |
#define | VP_SIGN_POSITIVE_FINITE 2 /* Positive finite number */ |
#define | VP_SIGN_NEGATIVE_FINITE -2 /* Negative finite number */ |
#define | VP_SIGN_POSITIVE_INFINITE 3 /* Positive infinite number */ |
#define | VP_SIGN_NEGATIVE_INFINITE -3 /* Negative infinite number */ |
#define | FLEXIBLE_ARRAY_SIZE 1 |
#define | VpBaseFig() rmpd_component_figures() |
#define | VpDblFig() rmpd_double_figures() |
#define | VpBaseVal() rmpd_base_value() |
#define | Abs(a) (((a)>= 0)?(a):(-(a))) |
#define | Max(a, b) (((a)>(b))?(a):(b)) |
#define | Min(a, b) (((a)>(b))?(b):(a)) |
#define | VpMaxPrec(a) ((a)->MaxPrec) |
#define | VpPrec(a) ((a)->Prec) |
#define | VpGetFlag(a) ((a)->flag) |
#define | VpGetSign(a) (((a)->sign>0)?1:(-1)) |
#define | VpChangeSign(a, s) {if((s)>0) (a)->sign=(short)Abs((ssize_t)(a)->sign);else (a)->sign=-(short)Abs((ssize_t)(a)->sign);} |
#define | VpSetSign(a, s) {if((s)>0) (a)->sign=(short)VP_SIGN_POSITIVE_FINITE;else (a)->sign=(short)VP_SIGN_NEGATIVE_FINITE;} |
#define | VpSetOne(a) {(a)->Prec=(a)->exponent=(a)->frac[0]=1;(a)->sign=VP_SIGN_POSITIVE_FINITE;} |
#define | VpIsPosZero(a) ((a)->sign==VP_SIGN_POSITIVE_ZERO) |
#define | VpIsNegZero(a) ((a)->sign==VP_SIGN_NEGATIVE_ZERO) |
#define | VpIsZero(a) (VpIsPosZero(a) || VpIsNegZero(a)) |
#define | VpSetPosZero(a) ((a)->frac[0]=0,(a)->Prec=1,(a)->sign=VP_SIGN_POSITIVE_ZERO) |
#define | VpSetNegZero(a) ((a)->frac[0]=0,(a)->Prec=1,(a)->sign=VP_SIGN_NEGATIVE_ZERO) |
#define | VpSetZero(a, s) ( ((s)>0)?VpSetPosZero(a):VpSetNegZero(a) ) |
#define | VpIsNaN(a) ((a)->sign==VP_SIGN_NaN) |
#define | VpSetNaN(a) ((a)->frac[0]=0,(a)->Prec=1,(a)->sign=VP_SIGN_NaN) |
#define | VpIsPosInf(a) ((a)->sign==VP_SIGN_POSITIVE_INFINITE) |
#define | VpIsNegInf(a) ((a)->sign==VP_SIGN_NEGATIVE_INFINITE) |
#define | VpIsInf(a) (VpIsPosInf(a) || VpIsNegInf(a)) |
#define | VpIsDef(a) ( !(VpIsNaN(a)||VpIsInf(a)) ) |
#define | VpSetPosInf(a) ((a)->frac[0]=0,(a)->Prec=1,(a)->sign=VP_SIGN_POSITIVE_INFINITE) |
#define | VpSetNegInf(a) ((a)->frac[0]=0,(a)->Prec=1,(a)->sign=VP_SIGN_NEGATIVE_INFINITE) |
#define | VpSetInf(a, s) ( ((s)>0)?VpSetPosInf(a):VpSetNegInf(a) ) |
#define | VpHasVal(a) (a->frac[0]) |
#define | VpIsOne(a) ((a->Prec==1)&&(a->frac[0]==1)&&(a->exponent==1)) |
#define | VpExponent(a) (a->exponent) |
Functions | |
static long | labs (long const x) |
static LONG_LONG | llabs (LONG_LONG const x) |
VP_EXPORT Real * | VpNewRbClass (size_t mx, char const *str, VALUE klass) |
VP_EXPORT Real * | VpCreateRbObject (size_t mx, const char *str) |
static BDIGIT | rmpd_base_value (void) |
static size_t | rmpd_component_figures (void) |
static size_t | rmpd_double_figures (void) |
VP_EXPORT double | VpGetDoubleNaN (void) |
VP_EXPORT double | VpGetDoublePosInf (void) |
VP_EXPORT double | VpGetDoubleNegInf (void) |
VP_EXPORT double | VpGetDoubleNegZero (void) |
VP_EXPORT size_t | VpGetPrecLimit (void) |
VP_EXPORT size_t | VpSetPrecLimit (size_t n) |
VP_EXPORT int | VpIsRoundMode (unsigned short n) |
VP_EXPORT unsigned short | VpGetRoundMode (void) |
VP_EXPORT unsigned short | VpSetRoundMode (unsigned short n) |
VP_EXPORT int | VpException (unsigned short f, const char *str, int always) |
VP_EXPORT size_t | VpNumOfChars (Real *vp, const char *pszFmt) |
VP_EXPORT size_t | VpInit (BDIGIT BaseVal) |
VP_EXPORT void * | VpMemAlloc (size_t mb) |
VP_EXPORT void * | VpMemRealloc (void *ptr, size_t mb) |
VP_EXPORT void | VpFree (Real *pv) |
VP_EXPORT Real * | VpAlloc (size_t mx, const char *szVal) |
VP_EXPORT size_t | VpAsgn (Real *c, Real *a, int isw) |
VP_EXPORT size_t | VpAddSub (Real *c, Real *a, Real *b, int operation) |
VP_EXPORT size_t | VpMult (Real *c, Real *a, Real *b) |
VP_EXPORT size_t | VpDivd (Real *c, Real *r, Real *a, Real *b) |
VP_EXPORT int | VpComp (Real *a, Real *b) |
VP_EXPORT ssize_t | VpExponent10 (Real *a) |
VP_EXPORT void | VpSzMantissa (Real *a, char *psz) |
VP_EXPORT int | VpToSpecialString (Real *a, char *psz, int fPlus) |
VP_EXPORT void | VpToString (Real *a, char *psz, size_t fFmt, int fPlus) |
VP_EXPORT void | VpToFString (Real *a, char *psz, size_t fFmt, int fPlus) |
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) |
VP_EXPORT int | VpVtoD (double *d, SIGNED_VALUE *e, Real *m) |
VP_EXPORT void | VpDtoV (Real *m, double d) |
VP_EXPORT int | VpSqrt (Real *y, Real *x) |
VP_EXPORT int | VpActiveRound (Real *y, Real *x, unsigned short f, ssize_t il) |
VP_EXPORT int | VpMidRound (Real *y, unsigned short f, ssize_t nf) |
VP_EXPORT int | VpLeftRound (Real *y, unsigned short f, ssize_t nf) |
VP_EXPORT void | VpFrac (Real *y, Real *x) |
VP_EXPORT int | VpPower (Real *y, Real *x, SIGNED_VALUE n) |
VP_EXPORT Real * | VpOne (void) |
Variables | |
VALUE | rb_cBigDecimal |
#define Abs | ( | a | ) | (((a)>= 0)?(a):(-(a))) |
Definition at line 237 of file bigdecimal.h.
#define FLEXIBLE_ARRAY_SIZE 1 |
Definition at line 129 of file bigdecimal.h.
#define Max | ( | a, | |
b | |||
) | (((a)>(b))?(a):(b)) |
Definition at line 238 of file bigdecimal.h.
Referenced by VpAlloc(), and VpSetPTR().
#define Min | ( | a, | |
b | |||
) | (((a)>(b))?(b):(a)) |
Definition at line 239 of file bigdecimal.h.
Referenced by VpAddSub(), VpDivd(), VpFrac(), VpSqrt(), and VpVtoD().
Definition at line 74 of file bigdecimal.h.
Referenced by rmpd_base_value().
#define RMPD_COMPONENT_FIGURES 2 |
Definition at line 73 of file bigdecimal.h.
Referenced by rmpd_component_figures().
#define RMPD_EXCEPTION_MODE_DEFAULT 0U |
Definition at line 104 of file bigdecimal.h.
Referenced by VpGetException().
Definition at line 116 of file bigdecimal.h.
Referenced by VpGetRoundMode().
#define SZ_INF "Infinity" |
Definition at line 82 of file bigdecimal.h.
Referenced by VpAlloc(), VpSzMantissa(), and VpToSpecialString().
#define SZ_NaN "NaN" |
Definition at line 81 of file bigdecimal.h.
Referenced by VpAlloc(), VpSzMantissa(), and VpToSpecialString().
#define SZ_NINF "-Infinity" |
Definition at line 84 of file bigdecimal.h.
Referenced by VpAlloc(), VpSzMantissa(), and VpToSpecialString().
#define SZ_PINF "+Infinity" |
Definition at line 83 of file bigdecimal.h.
Referenced by VpAlloc().
#define vabs abs |
Definition at line 51 of file bigdecimal.h.
Referenced by BigDecimal_divide(), BigDecimal_DoDivmod(), BigMath_s_exp(), and BigMath_s_log().
#define VP_EXCEPTION_ALL ((unsigned short)0x00FF) |
Definition at line 93 of file bigdecimal.h.
Referenced by BigDecimal_mode(), and Init_bigdecimal().
#define VP_EXCEPTION_INFINITY ((unsigned short)0x0001) |
Definition at line 94 of file bigdecimal.h.
Referenced by BigDecimal_check_num(), BigDecimal_mode(), GetAddSubPrec(), Init_bigdecimal(), ToValue(), VpCtoV(), VpException(), and VpIsDefOP().
#define VP_EXCEPTION_MEMORY ((unsigned short)0x0040) |
Definition at line 102 of file bigdecimal.h.
Referenced by VpException(), VpMemAlloc(), and VpMemRealloc().
#define VP_EXCEPTION_NaN ((unsigned short)0x0002) |
Definition at line 95 of file bigdecimal.h.
Referenced by BigDecimal_check_num(), BigDecimal_mode(), Init_bigdecimal(), ToValue(), VpDivd(), VpException(), and VpIsDefOP().
#define VP_EXCEPTION_OP ((unsigned short)0x0020) |
Definition at line 101 of file bigdecimal.h.
Referenced by VpException(), and VpSqrt().
#define VP_EXCEPTION_OVERFLOW ((unsigned short)0x0001) /* 0x0008) */ |
Definition at line 97 of file bigdecimal.h.
Referenced by AddExponent(), BigDecimal_to_f(), and Init_bigdecimal().
#define VP_EXCEPTION_UNDERFLOW ((unsigned short)0x0004) |
Definition at line 96 of file bigdecimal.h.
Referenced by AddExponent(), BigDecimal_mode(), BigDecimal_to_f(), Init_bigdecimal(), and VpException().
#define VP_EXCEPTION_ZERODIVIDE ((unsigned short)0x0010) |
Definition at line 98 of file bigdecimal.h.
Referenced by BigDecimal_mode(), Init_bigdecimal(), VpDivd(), and VpException().
#define VP_EXPORT static |
Definition at line 90 of file bigdecimal.h.
#define VP_ROUND_CEIL 5 |
Definition at line 112 of file bigdecimal.h.
Referenced by BigDecimal_ceil(), check_rounding_mode(), Init_bigdecimal(), VpInternalRound(), VpIsRoundMode(), and VpMidRound().
#define VP_ROUND_DOWN 2 |
Definition at line 109 of file bigdecimal.h.
Referenced by BigDecimal_divremain(), BigDecimal_DoDivmod(), BigDecimal_fix(), BigDecimal_truncate(), check_rounding_mode(), Init_bigdecimal(), VpInternalRound(), VpIsRoundMode(), and VpMidRound().
#define VP_ROUND_FLOOR 6 |
Definition at line 113 of file bigdecimal.h.
Referenced by BigDecimal_floor(), check_rounding_mode(), Init_bigdecimal(), VpInternalRound(), VpIsRoundMode(), and VpMidRound().
#define VP_ROUND_HALF_DOWN 4 |
Definition at line 111 of file bigdecimal.h.
Referenced by check_rounding_mode(), Init_bigdecimal(), VpInternalRound(), VpIsRoundMode(), and VpMidRound().
#define VP_ROUND_HALF_EVEN 7 |
Definition at line 114 of file bigdecimal.h.
Referenced by check_rounding_mode(), Init_bigdecimal(), VpInternalRound(), VpIsRoundMode(), and VpMidRound().
#define VP_ROUND_HALF_UP 3 |
Definition at line 110 of file bigdecimal.h.
Referenced by check_rounding_mode(), Init_bigdecimal(), VpInternalRound(), VpIsRoundMode(), and VpMidRound().
#define VP_ROUND_MODE ((unsigned short)0x0100) |
Definition at line 107 of file bigdecimal.h.
Referenced by BigDecimal_mode(), and Init_bigdecimal().
#define VP_ROUND_UP 1 |
Definition at line 108 of file bigdecimal.h.
Referenced by check_rounding_mode(), Init_bigdecimal(), VpInternalRound(), VpIsRoundMode(), and VpMidRound().
#define VP_SIGN_NaN 0 /* NaN */ |
Definition at line 118 of file bigdecimal.h.
Referenced by Init_bigdecimal().
#define VP_SIGN_NEGATIVE_FINITE -2 /* Negative finite number */ |
Definition at line 122 of file bigdecimal.h.
Referenced by Init_bigdecimal().
#define VP_SIGN_NEGATIVE_INFINITE -3 /* Negative infinite number */ |
Definition at line 124 of file bigdecimal.h.
Referenced by Init_bigdecimal().
#define VP_SIGN_NEGATIVE_ZERO -1 /* Negative zero */ |
Definition at line 120 of file bigdecimal.h.
Referenced by Init_bigdecimal().
#define VP_SIGN_POSITIVE_FINITE 2 /* Positive finite number */ |
Definition at line 121 of file bigdecimal.h.
Referenced by Init_bigdecimal().
#define VP_SIGN_POSITIVE_INFINITE 3 /* Positive infinite number */ |
Definition at line 123 of file bigdecimal.h.
Referenced by BigMath_s_exp(), BigMath_s_log(), and Init_bigdecimal().
#define VP_SIGN_POSITIVE_ZERO 1 /* Positive zero */ |
Definition at line 119 of file bigdecimal.h.
Referenced by Init_bigdecimal().
#define VpBaseFig | ( | ) | rmpd_component_figures() |
Definition at line 177 of file bigdecimal.h.
Referenced by BigDecimal_abs(), BigDecimal_add(), BigDecimal_ceil(), BigDecimal_coerce(), BigDecimal_div2(), BigDecimal_divide(), BigDecimal_divremain(), BigDecimal_DoDivmod(), BigDecimal_dump(), BigDecimal_fix(), BigDecimal_floor(), BigDecimal_frac(), BigDecimal_inspect(), BigDecimal_load(), BigDecimal_mult(), BigDecimal_neg(), BigDecimal_power(), BigDecimal_prec(), BigDecimal_round(), BigDecimal_sqrt(), BigDecimal_sub(), BigDecimal_to_i(), BigDecimal_truncate(), BigDecimalCmp(), and GetVpValueWithPrec().
#define VpBaseVal | ( | ) | rmpd_base_value() |
Definition at line 179 of file bigdecimal.h.
Referenced by BigDecimal_div(), and Init_bigdecimal().
#define VpChangeSign | ( | a, | |
s | |||
) | {if((s)>0) (a)->sign=(short)Abs((ssize_t)(a)->sign);else (a)->sign=-(short)Abs((ssize_t)(a)->sign);} |
Definition at line 250 of file bigdecimal.h.
Referenced by BigDecimal_abs(), and VpSqrt().
#define VpDblFig | ( | ) | rmpd_double_figures() |
Definition at line 178 of file bigdecimal.h.
Referenced by BigDecimal_double_fig(), and BigDecimal_sqrt().
#define VpExponent | ( | a | ) | (a->exponent) |
Definition at line 279 of file bigdecimal.h.
Referenced by VpLeftRound().
#define VpGetFlag | ( | a | ) | ((a)->flag) |
Definition at line 243 of file bigdecimal.h.
#define VpGetSign | ( | a | ) | (((a)->sign>0)?1:(-1)) |
Definition at line 248 of file bigdecimal.h.
Referenced by AddExponent(), BigDecimal_add(), BigDecimal_DoDivmod(), BigDecimal_power(), BigDecimal_sub(), BigDecimal_to_i(), BigDecimal_to_r(), BigMath_s_exp(), BigMath_s_log(), VpAddSub(), VpAsgn(), VpComp(), VpDivd(), VpFrac(), VpInternalRound(), VpIsDefOP(), VpMidRound(), VpMult(), VpNmlz(), VpPower(), VpSqrt(), VpSzMantissa(), VpToFString(), VpToString(), and VpVtoD().
#define VpHasVal | ( | a | ) | (a->frac[0]) |
Definition at line 277 of file bigdecimal.h.
Referenced by BigDecimal_div(), VpExponent10(), VpFrac(), VpLeftRound(), and VpSqrt().
Definition at line 273 of file bigdecimal.h.
Referenced by BigDecimal_power(), GetAddSubPrec(), VpComp(), VpNmlz(), and VpNumOfChars().
#define VpIsInf | ( | a | ) | (VpIsPosInf(a) || VpIsNegInf(a)) |
Definition at line 272 of file bigdecimal.h.
Referenced by BigDecimal_DoDivmod(), BigDecimal_IsFinite(), BigDecimal_power(), VpAsgn(), VpIsDefOP(), and VpPower().
#define VpIsNaN | ( | a | ) | ((a)->sign==VP_SIGN_NaN) |
Definition at line 266 of file bigdecimal.h.
Referenced by BigDecimal_add(), BigDecimal_check_num(), BigDecimal_DoDivmod(), BigDecimal_IsFinite(), BigDecimal_IsNaN(), BigDecimal_power(), BigDecimal_sub(), BigMath_s_exp(), BigMath_s_log(), ToValue(), VpAsgn(), VpComp(), VpIsDefOP(), VpPower(), VpSzMantissa(), VpToSpecialString(), and VpVtoD().
#define VpIsNegInf | ( | a | ) | ((a)->sign==VP_SIGN_NEGATIVE_INFINITE) |
Definition at line 271 of file bigdecimal.h.
Referenced by BigDecimal_check_num(), BigDecimal_IsInfinite(), BigMath_s_exp(), BigMath_s_log(), ToValue(), VpSzMantissa(), VpToSpecialString(), and VpVtoD().
#define VpIsNegZero | ( | a | ) | ((a)->sign==VP_SIGN_NEGATIVE_ZERO) |
Definition at line 259 of file bigdecimal.h.
Referenced by VpVtoD().
#define VpIsOne | ( | a | ) | ((a->Prec==1)&&(a->frac[0]==1)&&(a->exponent==1)) |
Definition at line 278 of file bigdecimal.h.
#define VpIsPosInf | ( | a | ) | ((a)->sign==VP_SIGN_POSITIVE_INFINITE) |
Definition at line 270 of file bigdecimal.h.
Referenced by BigDecimal_check_num(), BigDecimal_IsInfinite(), BigMath_s_exp(), BigMath_s_log(), ToValue(), VpPower(), VpSzMantissa(), VpToSpecialString(), and VpVtoD().
#define VpIsPosZero | ( | a | ) | ((a)->sign==VP_SIGN_POSITIVE_ZERO) |
Definition at line 258 of file bigdecimal.h.
Referenced by VpSzMantissa(), VpToSpecialString(), and VpVtoD().
#define VpIsZero | ( | a | ) | (VpIsPosZero(a) || VpIsNegZero(a)) |
Definition at line 260 of file bigdecimal.h.
Referenced by BigDecimal_DoDivmod(), BigDecimal_nonzero(), BigDecimal_power(), BigDecimal_zero(), BigMath_s_exp(), BigMath_s_log(), rmpd_power_by_big_decimal(), VpAddSub(), VpAsgn(), VpComp(), VpDivd(), VpIsDefOP(), VpMult(), VpNmlz(), VpPower(), VpSqrt(), VpSzMantissa(), and VpToSpecialString().
#define VpMaxPrec | ( | a | ) | ((a)->MaxPrec) |
Definition at line 241 of file bigdecimal.h.
Referenced by BigDecimal_dump(), and BigDecimal_inspect().
#define VpPrec | ( | a | ) | ((a)->Prec) |
Definition at line 242 of file bigdecimal.h.
Referenced by BigDecimal_inspect().
#define VpSetInf | ( | a, | |
s | |||
) | ( ((s)>0)?VpSetPosInf(a):VpSetNegInf(a) ) |
Definition at line 276 of file bigdecimal.h.
Referenced by AddExponent(), BigDecimal_add(), BigDecimal_DoDivmod(), BigDecimal_power(), BigDecimal_sub(), BigMath_s_exp(), BigMath_s_log(), VpAsgn(), VpCtoV(), VpDivd(), VpIsDefOP(), and VpPower().
#define VpSetNaN | ( | a | ) | ((a)->frac[0]=0,(a)->Prec=1,(a)->sign=VP_SIGN_NaN) |
Definition at line 267 of file bigdecimal.h.
Referenced by BigDecimal_power(), BigMath_s_exp(), BigMath_s_log(), VpAlloc(), VpAsgn(), VpDivd(), VpDtoV(), VpIsDefOP(), VpPower(), and VpSqrt().
#define VpSetNegInf | ( | a | ) | ((a)->frac[0]=0,(a)->Prec=1,(a)->sign=VP_SIGN_NEGATIVE_INFINITE) |
Definition at line 275 of file bigdecimal.h.
Referenced by BigDecimal_power(), VpAlloc(), and VpDtoV().
#define VpSetNegZero | ( | a | ) | ((a)->frac[0]=0,(a)->Prec=1,(a)->sign=VP_SIGN_NEGATIVE_ZERO) |
Definition at line 262 of file bigdecimal.h.
#define VpSetOne | ( | a | ) | {(a)->Prec=(a)->exponent=(a)->frac[0]=1;(a)->sign=VP_SIGN_POSITIVE_FINITE;} |
Definition at line 255 of file bigdecimal.h.
Referenced by VpMidRound(), VpPower(), and VpSqrt().
#define VpSetPosInf | ( | a | ) | ((a)->frac[0]=0,(a)->Prec=1,(a)->sign=VP_SIGN_POSITIVE_INFINITE) |
Definition at line 274 of file bigdecimal.h.
Referenced by BigDecimal_power(), VpAlloc(), and VpDtoV().
#define VpSetPosZero | ( | a | ) | ((a)->frac[0]=0,(a)->Prec=1,(a)->sign=VP_SIGN_POSITIVE_ZERO) |
Definition at line 261 of file bigdecimal.h.
#define VpSetSign | ( | a, | |
s | |||
) | {if((s)>0) (a)->sign=(short)VP_SIGN_POSITIVE_FINITE;else (a)->sign=(short)VP_SIGN_NEGATIVE_FINITE;} |
Definition at line 252 of file bigdecimal.h.
Referenced by BigMath_s_exp(), VpAddSub(), VpAsgn(), VpCtoV(), VpDivd(), VpDtoV(), VpFrac(), VpMidRound(), VpMult(), and VpPower().
#define VpSetZero | ( | a, | |
s | |||
) | ( ((s)>0)?VpSetPosZero(a):VpSetNegZero(a) ) |
Definition at line 263 of file bigdecimal.h.
Referenced by AddExponent(), VpAddSub(), VpAlloc(), VpAsgn(), VpCtoV(), VpDivd(), VpDtoV(), VpFrac(), VpIsDefOP(), VpMidRound(), VpMult(), VpNmlz(), and VpPower().
Definition at line 31 of file bigdecimal.h.
Definition at line 40 of file bigdecimal.h.
static BDIGIT rmpd_base_value | ( | void | ) | [inline, static] |
Definition at line 171 of file bigdecimal.h.
References RMPD_BASE.
static size_t rmpd_component_figures | ( | void | ) | [inline, static] |
Definition at line 173 of file bigdecimal.h.
References RMPD_COMPONENT_FIGURES.
static size_t rmpd_double_figures | ( | void | ) | [inline, static] |
Definition at line 175 of file bigdecimal.h.
References DBL_DIG.
Referenced by BigMath_s_exp(), BigMath_s_log(), and VpInit().
VP_EXPORT int VpActiveRound | ( | Real * | y, |
Real * | x, | ||
unsigned short | f, | ||
ssize_t | il | ||
) |
Definition at line 5819 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 3971 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 3776 of file bigdecimal.c.
References BASE_FIG, 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, VpAllocReal, VpCtoV(), VpGetPrecLimit(), VpSetNaN, VpSetNegInf, VpSetPosInf, and VpSetZero.
Referenced by BigDecimal_new(), VpCreateRbObject(), VpInit(), VpMult(), VpNewRbClass(), VpPower(), and VpSqrt().
Definition at line 3929 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 4771 of file bigdecimal.c.
References Real::exponent, Real::frac, Real::Prec, Real::sign, val, VpGetSign, VpIsDef, VpIsNaN, and VpIsZero.
Referenced by BigDecimalCmp().
VP_EXPORT Real* VpCreateRbObject | ( | size_t | mx, |
const char * | str | ||
) |
Definition at line 567 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 5192 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 4522 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 5405 of file bigdecimal.c.
References BASE, BDIGIT, Real::exponent, Real::frac, isinf(), isnan, Real::MaxPrec, ne, Real::Prec, SIGNED_VALUE, val, VpInternalRound(), VpSetNaN, VpSetNegInf, VpSetPosInf, VpSetSign, and VpSetZero.
Referenced by VpSqrt().
VP_EXPORT int VpException | ( | unsigned short | f, |
const char * | str, | ||
int | always | ||
) |
Definition at line 3514 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(), VpMemRealloc(), and VpSqrt().
VP_EXPORT ssize_t VpExponent10 | ( | Real * | a | ) |
Definition at line 4985 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().
Definition at line 5913 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 3292 of file bigdecimal.c.
References getchar, NULL, and xfree().
Referenced by BigDecimal_delete(), BigDecimal_initialize(), VpMult(), VpPower(), and VpSqrt().
VP_EXPORT double VpGetDoubleNaN | ( | void | ) |
Definition at line 3473 of file bigdecimal.c.
References Zero().
VP_EXPORT double VpGetDoubleNegInf | ( | void | ) |
Definition at line 3489 of file bigdecimal.c.
Referenced by BigDecimal_to_f(), VpGetDoubleNegZero(), VpInit(), and VpVtoD().
VP_EXPORT double VpGetDoubleNegZero | ( | void | ) |
Definition at line 3497 of file bigdecimal.c.
References One(), and VpGetDoubleNegInf().
VP_EXPORT double VpGetDoublePosInf | ( | void | ) |
Definition at line 3481 of file bigdecimal.c.
Referenced by BigDecimal_to_f(), VpInit(), and VpVtoD().
VP_EXPORT size_t VpGetPrecLimit | ( | void | ) |
Definition at line 3357 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 3392 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 3695 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().
VP_EXPORT int VpIsRoundMode | ( | unsigned short | n | ) |
Definition at line 3408 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 5804 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().
VP_EXPORT void* VpMemAlloc | ( | size_t | mb | ) |
Definition at line 3268 of file bigdecimal.c.
References VP_EXCEPTION_MEMORY, VpException(), and xmalloc.
VP_EXPORT void* VpMemRealloc | ( | void * | ptr, |
size_t | mb | ||
) |
Definition at line 3282 of file bigdecimal.c.
References VP_EXCEPTION_MEMORY, VpException(), and xrealloc.
VP_EXPORT int VpMidRound | ( | Real * | y, |
unsigned short | f, | ||
ssize_t | nf | ||
) |
Definition at line 5644 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 4397 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, |
char const * | str, | ||
VALUE | klass | ||
) |
Definition at line 559 of file bigdecimal.c.
References Real::obj, TypedData_Wrap_Struct, and VpAlloc().
Referenced by BigDecimal_load(), and BigDecimal_s_allocate().
VP_EXPORT size_t VpNumOfChars | ( | Real * | vp, |
const char * | pszFmt | ||
) |
Definition at line 3651 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 3726 of file bigdecimal.c.
References VpConstOne.
Referenced by BigDecimal_DoDivmod().
VP_EXPORT int VpPower | ( | Real * | y, |
Real * | x, | ||
SIGNED_VALUE | n | ||
) |
Definition at line 5961 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().
VP_EXPORT size_t VpSetPrecLimit | ( | size_t | n | ) |
Definition at line 3373 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().
VP_EXPORT unsigned short VpSetRoundMode | ( | unsigned short | n | ) |
Definition at line 3426 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 5535 of file bigdecimal.c.
References BASE, BASE_FIG, DBLE_FIG, Real::exponent, f, 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().
VP_EXPORT void VpSzMantissa | ( | Real * | a, |
char * | psz | ||
) |
Definition at line 5002 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 5127 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 5048 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 5081 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 5341 of file bigdecimal.c.
References BASE, BASE_FIG, DBLE_FIG, div, Real::exponent, f, 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().
Definition at line 41 of file bigdecimal.c.
Referenced by BigDecimal_global_new(), Init_bigdecimal(), and VpCreateRbObject().