bigdecimal 1.2.0 → 1.2.1
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 +6 -14
- data/bigdecimal.c +26 -31
- data/bigdecimal.gemspec +1 -1
- data/bigdecimal.h +31 -0
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,15 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
metadata.gz: !binary |-
|
9
|
-
NGZlZDI2ZjAzMGRiYzYyMzA3OTFlNjk1M2ZmZjU2NmE5NmQyNDFlY2M2Zjk3
|
10
|
-
OWUwNTU5MWI4MDg0YWZhYTZjZWU3OGEzMjU1NzI4YzE5ZDk1MmJjNDI5ZTEy
|
11
|
-
NjVhMGY0NWU3NGE1MzFiNGRkMGMwYmI3NDZjNmYyMjY5MjgwMmY=
|
12
|
-
data.tar.gz: !binary |-
|
13
|
-
YzM3MDZmZTkwYjNlNTcxMGRiN2UwNjY1NmNjMDYxY2M1Y2ZjNzk0MjQ2ZTlj
|
14
|
-
ODhjMjVkZDAyNDMwYWZmYTMzYjk4ZmU3OWVjMTIwYzUwMDU2MWVkZmFlYWIw
|
15
|
-
ZGJmMjIzM2QyNjUzYjlkOTUyYzBiZDBkNTIxMThhNzZiYjY1ZDA=
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: ea6ac110b94c2c87c1edad365c8f07966d1f43d6
|
4
|
+
data.tar.gz: 5c3f0712afa20b5dc28dd150af767ccaebf1fe2f
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 3602737a5ef698b032a9d749791abba58ea73d77ce8b7e8b484c4b79588e2b5fe5388a084101e63b67646c81dd7e4c6bd2d1d5691d5c0db737bc6be122fb1981
|
7
|
+
data.tar.gz: 280962bae9dbe5e7bdb3edb38d53e16e9dc449fa27c3156062145d2612f4e2ffecdd91ec496e77e07da4dcd647ad4bad7c6d9b86675eebf3b71e0068d7323ed6
|
data/bigdecimal.c
CHANGED
@@ -86,23 +86,9 @@ static ID id_eq;
|
|
86
86
|
#endif
|
87
87
|
|
88
88
|
#ifndef RBIGNUM_ZERO_P
|
89
|
-
# define RBIGNUM_ZERO_P(x) (
|
90
|
-
(RBIGNUM_DIGITS(x)[0] == 0 && \
|
91
|
-
(RBIGNUM_LEN(x) == 1 || bigzero_p(x))))
|
89
|
+
# define RBIGNUM_ZERO_P(x) rb_bigzero_p(x)
|
92
90
|
#endif
|
93
91
|
|
94
|
-
static inline int
|
95
|
-
bigzero_p(VALUE x)
|
96
|
-
{
|
97
|
-
long i;
|
98
|
-
BDIGIT *ds = RBIGNUM_DIGITS(x);
|
99
|
-
|
100
|
-
for (i = RBIGNUM_LEN(x) - 1; 0 <= i; i--) {
|
101
|
-
if (ds[i]) return 0;
|
102
|
-
}
|
103
|
-
return 1;
|
104
|
-
}
|
105
|
-
|
106
92
|
#ifndef RRATIONAL_ZERO_P
|
107
93
|
# define RRATIONAL_ZERO_P(x) (FIXNUM_P(RRATIONAL(x)->num) && \
|
108
94
|
FIX2LONG(RRATIONAL(x)->num) == 0)
|
@@ -2130,7 +2116,11 @@ is_even(VALUE x)
|
|
2130
2116
|
return (FIX2LONG(x) % 2) == 0;
|
2131
2117
|
|
2132
2118
|
case T_BIGNUM:
|
2133
|
-
|
2119
|
+
{
|
2120
|
+
unsigned long l;
|
2121
|
+
rb_big_pack(x, &l, 1);
|
2122
|
+
return l % 2 == 0;
|
2123
|
+
}
|
2134
2124
|
|
2135
2125
|
default:
|
2136
2126
|
break;
|
@@ -2608,7 +2598,7 @@ BigDecimal_save_exception_mode(VALUE self)
|
|
2608
2598
|
*
|
2609
2599
|
* Execute the provided block, but preserve the rounding mode
|
2610
2600
|
*
|
2611
|
-
* BigDecimal.
|
2601
|
+
* BigDecimal.save_rounding_mode do
|
2612
2602
|
* BigDecimal.mode(BigDecimal::ROUND_MODE, :up)
|
2613
2603
|
* puts BigDecimal.mode(BigDecimal::ROUND_MODE)
|
2614
2604
|
* end
|
@@ -2735,7 +2725,7 @@ BigMath_s_exp(VALUE klass, VALUE x, VALUE vprec)
|
|
2735
2725
|
else if (vx == NULL) {
|
2736
2726
|
cannot_be_coerced_into_BigDecimal(rb_eArgError, x);
|
2737
2727
|
}
|
2738
|
-
RB_GC_GUARD(vx->obj);
|
2728
|
+
x = RB_GC_GUARD(vx->obj);
|
2739
2729
|
|
2740
2730
|
n = prec + rmpd_double_figures();
|
2741
2731
|
negative = VpGetSign(vx) < 0;
|
@@ -2948,15 +2938,7 @@ get_vp_value:
|
|
2948
2938
|
/* Document-class: BigDecimal
|
2949
2939
|
* BigDecimal provides arbitrary-precision floating point decimal arithmetic.
|
2950
2940
|
*
|
2951
|
-
*
|
2952
|
-
*
|
2953
|
-
* You may distribute under the terms of either the GNU General Public
|
2954
|
-
* License or the Artistic License, as specified in the README file
|
2955
|
-
* of the BigDecimal distribution.
|
2956
|
-
*
|
2957
|
-
* Documented by mathew <meta@pobox.com>.
|
2958
|
-
*
|
2959
|
-
* = Introduction
|
2941
|
+
* == Introduction
|
2960
2942
|
*
|
2961
2943
|
* Ruby provides built-in support for arbitrary precision integer arithmetic.
|
2962
2944
|
*
|
@@ -2996,12 +2978,12 @@ get_vp_value:
|
|
2996
2978
|
*
|
2997
2979
|
* (1.2 - 1.0) == 0.2 #=> false
|
2998
2980
|
*
|
2999
|
-
*
|
2981
|
+
* == Special features of accurate decimal arithmetic
|
3000
2982
|
*
|
3001
2983
|
* Because BigDecimal is more accurate than normal binary floating point
|
3002
2984
|
* arithmetic, it requires some special values.
|
3003
2985
|
*
|
3004
|
-
*
|
2986
|
+
* === Infinity
|
3005
2987
|
*
|
3006
2988
|
* BigDecimal sometimes needs to return infinity, for example if you divide
|
3007
2989
|
* a value by zero.
|
@@ -3013,7 +2995,7 @@ get_vp_value:
|
|
3013
2995
|
* <code>'Infinity'</code>, <code>'+Infinity'</code> and
|
3014
2996
|
* <code>'-Infinity'</code> (case-sensitive)
|
3015
2997
|
*
|
3016
|
-
*
|
2998
|
+
* === Not a Number
|
3017
2999
|
*
|
3018
3000
|
* When a computation results in an undefined value, the special value +NaN+
|
3019
3001
|
* (for 'not a number') is returned.
|
@@ -3030,7 +3012,7 @@ get_vp_value:
|
|
3030
3012
|
* n == 0.0 #=> nil
|
3031
3013
|
* n == n #=> nil
|
3032
3014
|
*
|
3033
|
-
*
|
3015
|
+
* === Positive and negative zero
|
3034
3016
|
*
|
3035
3017
|
* If a computation results in a value which is too small to be represented as
|
3036
3018
|
* a BigDecimal within the currently specified limits of precision, zero must
|
@@ -3052,6 +3034,19 @@ get_vp_value:
|
|
3052
3034
|
*
|
3053
3035
|
* Note also that in mathematics, there is no particular concept of negative
|
3054
3036
|
* or positive zero; true mathematical zero has no sign.
|
3037
|
+
*
|
3038
|
+
* == License
|
3039
|
+
*
|
3040
|
+
* Copyright (C) 2002 by Shigeo Kobayashi <shigeo@tinyforest.gr.jp>.
|
3041
|
+
*
|
3042
|
+
* You may distribute under the terms of either the GNU General Public
|
3043
|
+
* License or the Artistic License, as specified in the README file
|
3044
|
+
* of the BigDecimal distribution.
|
3045
|
+
*
|
3046
|
+
* Maintained by mrkn <mrkn@mrkn.jp> and ruby-core members.
|
3047
|
+
*
|
3048
|
+
* Documented by zzak <zachary@zacharyscott.net>, mathew <meta@pobox.com>, and
|
3049
|
+
* many other contributors.
|
3055
3050
|
*/
|
3056
3051
|
void
|
3057
3052
|
Init_bigdecimal(void)
|
data/bigdecimal.gemspec
CHANGED
data/bigdecimal.h
CHANGED
@@ -19,6 +19,37 @@
|
|
19
19
|
#include "ruby/ruby.h"
|
20
20
|
#include <float.h>
|
21
21
|
|
22
|
+
#ifndef RB_UNUSED_VAR
|
23
|
+
# ifdef __GNUC__
|
24
|
+
# define RB_UNUSED_VAR(x) x __attribute__ ((unused))
|
25
|
+
# else
|
26
|
+
# define RB_UNUSED_VAR(x) x
|
27
|
+
# endif
|
28
|
+
#endif
|
29
|
+
|
30
|
+
#ifndef UNREACHABLE
|
31
|
+
# define UNREACHABLE /* unreachable */
|
32
|
+
#endif
|
33
|
+
|
34
|
+
#undef BDIGIT
|
35
|
+
#undef SIZEOF_BDIGITS
|
36
|
+
#undef BDIGIT_DBL
|
37
|
+
#undef BDIGIT_DBL_SIGNED
|
38
|
+
#undef PRI_BDIGIT_PREFIX
|
39
|
+
#undef PRI_BDIGIT_DBL_PREFIX
|
40
|
+
|
41
|
+
#ifdef HAVE_INT64_T
|
42
|
+
# define BDIGIT uint32_t
|
43
|
+
# define BDIGIT_DBL uint64_t
|
44
|
+
# define BDIGIT_DBL_SIGNED int64_t
|
45
|
+
# define SIZEOF_BDIGITS 4
|
46
|
+
#else
|
47
|
+
# define BDIGIT uint16_t
|
48
|
+
# define BDIGIT_DBL uint32_t
|
49
|
+
# define BDIGIT_DBL_SIGNED int32_t
|
50
|
+
# define SIZEOF_BDIGITS 2
|
51
|
+
#endif
|
52
|
+
|
22
53
|
#if defined(__cplusplus)
|
23
54
|
extern "C" {
|
24
55
|
#if 0
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bigdecimal
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.
|
4
|
+
version: 1.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kenta Murata
|
@@ -43,17 +43,17 @@ require_paths:
|
|
43
43
|
- .
|
44
44
|
required_ruby_version: !ruby/object:Gem::Requirement
|
45
45
|
requirements:
|
46
|
-
- -
|
46
|
+
- - '>='
|
47
47
|
- !ruby/object:Gem::Version
|
48
48
|
version: '0'
|
49
49
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
50
50
|
requirements:
|
51
|
-
- -
|
51
|
+
- - '>='
|
52
52
|
- !ruby/object:Gem::Version
|
53
53
|
version: '0'
|
54
54
|
requirements: []
|
55
55
|
rubyforge_project:
|
56
|
-
rubygems_version: 2.0.
|
56
|
+
rubygems_version: 2.0.2
|
57
57
|
signing_key:
|
58
58
|
specification_version: 4
|
59
59
|
summary: Arbitrary-precision decimal floating-point number library.
|