bigdecimal 1.2.3 → 1.2.4
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 +4 -4
- data/bigdecimal.c +73 -32
- data/bigdecimal.gemspec +3 -1
- data/bigdecimal.h +0 -1
- data/depend +1 -1
- data/lib/bigdecimal/jacobian.rb +1 -1
- data/lib/bigdecimal/math.rb +7 -7
- data/sample/linear.rb +10 -10
- data/sample/nlsolve.rb +11 -10
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4c41d73d519030d6a97115486ade3119700dc79e
|
4
|
+
data.tar.gz: c4a3ca819835bb6db328a3d855afdd0a31860479
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 46e465effb34908c3954dd120bca6693ae3dde3d666c7419e0a2d6729b111f1cbe120f4c1f97dec26e4085166cd578a72207191410b420a5f044d76ffb638277
|
7
|
+
data.tar.gz: eca4ce9b2faf70b4c6c7f12a51f8e6bc5e2d37a5a5c170a2a0e6a32f15e893e1f2814583cfc586e7daca28161eeeab6a44a80ff835085a15614a8d71e33b2541
|
data/bigdecimal.c
CHANGED
@@ -18,6 +18,7 @@
|
|
18
18
|
# define BIGDECIMAL_ENABLE_VPRINT 1
|
19
19
|
#endif
|
20
20
|
#include "bigdecimal.h"
|
21
|
+
#include "ruby/util.h"
|
21
22
|
|
22
23
|
#ifndef BIGDECIMAL_DEBUG
|
23
24
|
# define NDEBUG
|
@@ -126,6 +127,10 @@ static void VpInternalRound(Real *c, size_t ixDigit, BDIGIT vPrev, BDIGIT v);
|
|
126
127
|
static int VpLimitRound(Real *c, size_t ixDigit);
|
127
128
|
static Real *VpCopy(Real *pv, Real const* const x);
|
128
129
|
|
130
|
+
#ifdef BIGDECIMAL_ENABLE_VPRINT
|
131
|
+
static int VPrint(FILE *fp,const char *cntl_chr,Real *a);
|
132
|
+
#endif
|
133
|
+
|
129
134
|
/*
|
130
135
|
* **** BigDecimal part ****
|
131
136
|
*/
|
@@ -199,14 +204,23 @@ GetVpValueWithPrec(VALUE v, long prec, int must)
|
|
199
204
|
VALUE num, bg;
|
200
205
|
char szD[128];
|
201
206
|
VALUE orig = Qundef;
|
207
|
+
double d;
|
202
208
|
|
203
209
|
again:
|
204
210
|
switch(TYPE(v)) {
|
205
211
|
case T_FLOAT:
|
206
212
|
if (prec < 0) goto unable_to_coerce_without_prec;
|
207
213
|
if (prec > DBL_DIG+1) goto SomeOneMayDoIt;
|
208
|
-
|
209
|
-
|
214
|
+
d = RFLOAT_VALUE(v);
|
215
|
+
if (d != 0.0) {
|
216
|
+
v = rb_funcall(v, id_to_r, 0);
|
217
|
+
goto again;
|
218
|
+
}
|
219
|
+
if (1/d < 0.0) {
|
220
|
+
return VpCreateRbObject(prec, "-0");
|
221
|
+
}
|
222
|
+
return VpCreateRbObject(prec, "0");
|
223
|
+
|
210
224
|
case T_RATIONAL:
|
211
225
|
if (prec < 0) goto unable_to_coerce_without_prec;
|
212
226
|
|
@@ -788,7 +802,8 @@ BigDecimal_coerce(VALUE self, VALUE other)
|
|
788
802
|
Real *b;
|
789
803
|
|
790
804
|
if (RB_TYPE_P(other, T_FLOAT)) {
|
791
|
-
|
805
|
+
GUARD_OBJ(b, GetVpValueWithPrec(other, DBL_DIG+1, 1));
|
806
|
+
obj = rb_assoc_new(ToValue(b), self);
|
792
807
|
}
|
793
808
|
else {
|
794
809
|
if (RB_TYPE_P(other, T_RATIONAL)) {
|
@@ -1207,8 +1222,10 @@ BigDecimal_divide(Real **c, Real **res, Real **div, VALUE self, VALUE r)
|
|
1207
1222
|
|
1208
1223
|
*div = b;
|
1209
1224
|
mx = a->Prec + vabs(a->exponent);
|
1210
|
-
if (mx<b->Prec + vabs(b->exponent)) mx = b->Prec + vabs(b->exponent);
|
1211
|
-
mx
|
1225
|
+
if (mx < b->Prec + vabs(b->exponent)) mx = b->Prec + vabs(b->exponent);
|
1226
|
+
mx++; /* NOTE: An additional digit is needed for the compatibility to
|
1227
|
+
the version 1.2.1 and the former. */
|
1228
|
+
mx = (mx + 1) * VpBaseFig();
|
1212
1229
|
GUARD_OBJ((*c), VpCreateRbObject(mx, "#0"));
|
1213
1230
|
GUARD_OBJ((*res), VpCreateRbObject((mx+1) * 2 +(VpBaseFig() + 1), "#0"));
|
1214
1231
|
VpDivd(*c, *res, a, b);
|
@@ -2503,8 +2520,8 @@ BigDecimal_new(int argc, VALUE *argv)
|
|
2503
2520
|
case T_RATIONAL:
|
2504
2521
|
if (NIL_P(nFig)) {
|
2505
2522
|
rb_raise(rb_eArgError,
|
2506
|
-
"can't omit precision for a %
|
2507
|
-
|
2523
|
+
"can't omit precision for a %"PRIsVALUE".",
|
2524
|
+
rb_obj_class(iniValue));
|
2508
2525
|
}
|
2509
2526
|
return GetVpValueWithPrec(iniValue, mf, 1);
|
2510
2527
|
|
@@ -2517,7 +2534,7 @@ BigDecimal_new(int argc, VALUE *argv)
|
|
2517
2534
|
return VpAlloc(mf, RSTRING_PTR(iniValue));
|
2518
2535
|
}
|
2519
2536
|
|
2520
|
-
/* See also BigDecimal
|
2537
|
+
/* See also BigDecimal.new */
|
2521
2538
|
static VALUE
|
2522
2539
|
BigDecimal_global_new(int argc, VALUE *argv, VALUE self)
|
2523
2540
|
{
|
@@ -2905,8 +2922,8 @@ get_vp_value:
|
|
2905
2922
|
RB_GC_GUARD(vn) = SSIZET2NUM(n);
|
2906
2923
|
expo = VpExponent10(vx);
|
2907
2924
|
if (expo < 0 || expo >= 3) {
|
2908
|
-
char buf[
|
2909
|
-
snprintf(buf,
|
2925
|
+
char buf[DECIMAL_SIZE_OF_BITS(SIZEOF_VALUE * CHAR_BIT) + 4];
|
2926
|
+
snprintf(buf, sizeof(buf), "1E%"PRIdVALUE, -expo);
|
2910
2927
|
x = BigDecimal_mult2(x, ToValue(VpCreateRbObject(1, buf)), vn);
|
2911
2928
|
}
|
2912
2929
|
else {
|
@@ -4175,6 +4192,7 @@ VpAddAbs(Real *a, Real *b, Real *c)
|
|
4175
4192
|
a_pos = ap;
|
4176
4193
|
b_pos = bp;
|
4177
4194
|
c_pos = cp;
|
4195
|
+
|
4178
4196
|
if (word_shift == (size_t)-1L) return 0; /* Overflow */
|
4179
4197
|
if (b_pos == (size_t)-1L) goto Assign_a;
|
4180
4198
|
|
@@ -4182,14 +4200,14 @@ VpAddAbs(Real *a, Real *b, Real *c)
|
|
4182
4200
|
|
4183
4201
|
/* Just assign the last few digits of b to c because a has no */
|
4184
4202
|
/* corresponding digits to be added. */
|
4185
|
-
|
4186
|
-
|
4187
|
-
|
4188
|
-
c->frac[c_pos] = b->frac[--b_pos];
|
4203
|
+
if (b_pos > 0) {
|
4204
|
+
while (b_pos > 0 && b_pos + word_shift > a_pos) {
|
4205
|
+
c->frac[--c_pos] = b->frac[--b_pos];
|
4189
4206
|
}
|
4190
|
-
|
4191
|
-
|
4192
|
-
|
4207
|
+
}
|
4208
|
+
if (b_pos == 0 && word_shift > a_pos) {
|
4209
|
+
while (word_shift-- > a_pos) {
|
4210
|
+
c->frac[--c_pos] = 0;
|
4193
4211
|
}
|
4194
4212
|
}
|
4195
4213
|
|
@@ -4285,16 +4303,16 @@ VpSubAbs(Real *a, Real *b, Real *c)
|
|
4285
4303
|
/* each of the last few digits of the b because the a has no */
|
4286
4304
|
/* corresponding digits to be subtracted. */
|
4287
4305
|
if (b_pos + word_shift > a_pos) {
|
4288
|
-
while (b_pos + word_shift > a_pos) {
|
4289
|
-
--c_pos;
|
4290
|
-
|
4291
|
-
|
4292
|
-
|
4293
|
-
|
4306
|
+
while (b_pos > 0 && b_pos + word_shift > a_pos) {
|
4307
|
+
c->frac[--c_pos] = BASE - b->frac[--b_pos] - borrow;
|
4308
|
+
borrow = 1;
|
4309
|
+
}
|
4310
|
+
if (b_pos == 0) {
|
4311
|
+
while (word_shift > a_pos) {
|
4294
4312
|
--word_shift;
|
4295
|
-
c->frac[c_pos] = BASE - borrow;
|
4313
|
+
c->frac[--c_pos] = BASE - borrow;
|
4314
|
+
borrow = 1;
|
4296
4315
|
}
|
4297
|
-
borrow = 1;
|
4298
4316
|
}
|
4299
4317
|
}
|
4300
4318
|
/* Just assign the last few digits of a to c because b has no */
|
@@ -4366,12 +4384,19 @@ static size_t
|
|
4366
4384
|
VpSetPTR(Real *a, Real *b, Real *c, size_t *a_pos, size_t *b_pos, size_t *c_pos, BDIGIT *av, BDIGIT *bv)
|
4367
4385
|
{
|
4368
4386
|
size_t left_word, right_word, word_shift;
|
4387
|
+
|
4388
|
+
size_t const round_limit = (VpGetPrecLimit() + BASE_FIG - 1) / BASE_FIG;
|
4389
|
+
|
4390
|
+
assert(a->exponent >= b->expoennt);
|
4391
|
+
|
4369
4392
|
c->frac[0] = 0;
|
4370
4393
|
*av = *bv = 0;
|
4394
|
+
|
4371
4395
|
word_shift = (a->exponent - b->exponent);
|
4372
4396
|
left_word = b->Prec + word_shift;
|
4373
4397
|
right_word = Max(a->Prec, left_word);
|
4374
4398
|
left_word = c->MaxPrec - 1; /* -1 ... prepare for round up */
|
4399
|
+
|
4375
4400
|
/*
|
4376
4401
|
* check if 'round' is needed.
|
4377
4402
|
*/
|
@@ -4394,7 +4419,9 @@ VpSetPTR(Real *a, Real *b, Real *c, size_t *a_pos, size_t *b_pos, size_t *c_pos,
|
|
4394
4419
|
* a_pos = |
|
4395
4420
|
*/
|
4396
4421
|
*a_pos = left_word;
|
4397
|
-
|
4422
|
+
if (*a_pos <= round_limit) {
|
4423
|
+
*av = a->frac[*a_pos]; /* av is 'A' shown in above. */
|
4424
|
+
}
|
4398
4425
|
}
|
4399
4426
|
else {
|
4400
4427
|
/*
|
@@ -4413,7 +4440,9 @@ VpSetPTR(Real *a, Real *b, Real *c, size_t *a_pos, size_t *b_pos, size_t *c_pos,
|
|
4413
4440
|
*/
|
4414
4441
|
if (c->MaxPrec >= word_shift + 1) {
|
4415
4442
|
*b_pos = c->MaxPrec - word_shift - 1;
|
4416
|
-
*
|
4443
|
+
if (*b_pos + word_shift <= round_limit) {
|
4444
|
+
*bv = b->frac[*b_pos];
|
4445
|
+
}
|
4417
4446
|
}
|
4418
4447
|
else {
|
4419
4448
|
*b_pos = -1L;
|
@@ -4930,7 +4959,6 @@ Exit:
|
|
4930
4959
|
return (int)val;
|
4931
4960
|
}
|
4932
4961
|
|
4933
|
-
#ifdef BIGDECIMAL_ENABLE_VPRINT
|
4934
4962
|
/*
|
4935
4963
|
* cntl_chr ... ASCIIZ Character, print control characters
|
4936
4964
|
* Available control codes:
|
@@ -4941,10 +4969,11 @@ Exit:
|
|
4941
4969
|
* Note: % must must not appear more than once
|
4942
4970
|
* a ... VP variable to be printed
|
4943
4971
|
*/
|
4944
|
-
|
4972
|
+
#ifdef BIGDECIMAL_ENABLE_VPRINT
|
4973
|
+
static int
|
4945
4974
|
VPrint(FILE *fp, const char *cntl_chr, Real *a)
|
4946
4975
|
{
|
4947
|
-
size_t i, j, nc, nd, ZeroSup;
|
4976
|
+
size_t i, j, nc, nd, ZeroSup, sep = 10;
|
4948
4977
|
BDIGIT m, e, nn;
|
4949
4978
|
|
4950
4979
|
/* Check if NaN & Inf. */
|
@@ -4979,6 +5008,16 @@ VPrint(FILE *fp, const char *cntl_chr, Real *a)
|
|
4979
5008
|
++nc;
|
4980
5009
|
}
|
4981
5010
|
nc += fprintf(fp, "0.");
|
5011
|
+
switch (*(cntl_chr + j + 1)) {
|
5012
|
+
default:
|
5013
|
+
break;
|
5014
|
+
|
5015
|
+
case '0': case 'z':
|
5016
|
+
ZeroSup = 0;
|
5017
|
+
++j;
|
5018
|
+
sep = cntl_chr[j] == 'z' ? RMPD_COMPONENT_FIGURES : 10;
|
5019
|
+
break;
|
5020
|
+
}
|
4982
5021
|
for (i = 0; i < a->Prec; ++i) {
|
4983
5022
|
m = BASE1;
|
4984
5023
|
e = a->frac[i];
|
@@ -4991,7 +5030,7 @@ VPrint(FILE *fp, const char *cntl_chr, Real *a)
|
|
4991
5030
|
++nd;
|
4992
5031
|
ZeroSup = 0; /* Set to print succeeding zeros */
|
4993
5032
|
}
|
4994
|
-
if (nd >=
|
5033
|
+
if (nd >= sep) { /* print ' ' after every 10 digits */
|
4995
5034
|
nd = 0;
|
4996
5035
|
nc += fprintf(fp, " ");
|
4997
5036
|
}
|
@@ -5000,6 +5039,7 @@ VPrint(FILE *fp, const char *cntl_chr, Real *a)
|
|
5000
5039
|
}
|
5001
5040
|
}
|
5002
5041
|
nc += fprintf(fp, "E%"PRIdSIZE, VpExponent10(a));
|
5042
|
+
nc += fprintf(fp, " (%"PRIdVALUE", %lu, %lu)", a->exponent, a->Prec, a->MaxPrec);
|
5003
5043
|
}
|
5004
5044
|
else {
|
5005
5045
|
nc += fprintf(fp, "0.0");
|
@@ -5033,9 +5073,10 @@ VPrint(FILE *fp, const char *cntl_chr, Real *a)
|
|
5033
5073
|
}
|
5034
5074
|
j++;
|
5035
5075
|
}
|
5076
|
+
|
5036
5077
|
return (int)nc;
|
5037
5078
|
}
|
5038
|
-
#endif
|
5079
|
+
#endif
|
5039
5080
|
|
5040
5081
|
static void
|
5041
5082
|
VpFormatSt(char *psz, size_t fFmt)
|
data/bigdecimal.gemspec
CHANGED
@@ -1,9 +1,11 @@
|
|
1
1
|
# -*- ruby -*-
|
2
|
-
_VERSION = "1.2.
|
2
|
+
_VERSION = "1.2.4"
|
3
|
+
date = %w$Date:: $[1]
|
3
4
|
|
4
5
|
Gem::Specification.new do |s|
|
5
6
|
s.name = "bigdecimal"
|
6
7
|
s.version = _VERSION
|
8
|
+
s.date = date
|
7
9
|
s.summary = "Arbitrary-precision decimal floating-point number library."
|
8
10
|
s.homepage = "http://www.ruby-lang.org"
|
9
11
|
s.email = "mrkn@mrkn.jp"
|
data/bigdecimal.h
CHANGED
@@ -310,7 +310,6 @@ VP_EXPORT Real *VpOne(void);
|
|
310
310
|
#define VpExponent(a) (a->exponent)
|
311
311
|
#ifdef BIGDECIMAL_DEBUG
|
312
312
|
int VpVarCheck(Real * v);
|
313
|
-
VP_EXPORT int VPrint(FILE *fp,const char *cntl_chr,Real *a);
|
314
313
|
#endif /* BIGDECIMAL_DEBUG */
|
315
314
|
|
316
315
|
#if defined(__cplusplus)
|
data/depend
CHANGED
@@ -1 +1 @@
|
|
1
|
-
bigdecimal.o: bigdecimal.c bigdecimal.h $(HDRS) $(ruby_headers)
|
1
|
+
bigdecimal.o: bigdecimal.c bigdecimal.h $(HDRS) $(ruby_headers) $(hdrdir)/ruby/util.h
|
data/lib/bigdecimal/jacobian.rb
CHANGED
data/lib/bigdecimal/math.rb
CHANGED
@@ -36,8 +36,8 @@ module BigMath
|
|
36
36
|
# Computes the square root of +decimal+ to the specified number of digits of
|
37
37
|
# precision, +numeric+.
|
38
38
|
#
|
39
|
-
# BigMath
|
40
|
-
# #=> "0.
|
39
|
+
# BigMath.sqrt(BigDecimal.new('2'), 16).to_s
|
40
|
+
# #=> "0.1414213562373095048801688724E1"
|
41
41
|
#
|
42
42
|
def sqrt(x, prec)
|
43
43
|
x.sqrt(prec)
|
@@ -51,7 +51,7 @@ module BigMath
|
|
51
51
|
#
|
52
52
|
# If +decimal+ is Infinity or NaN, returns NaN.
|
53
53
|
#
|
54
|
-
# BigMath
|
54
|
+
# BigMath.sin(BigMath.PI(5)/4, 5).to_s
|
55
55
|
# #=> "0.70710678118654752440082036563292800375E0"
|
56
56
|
#
|
57
57
|
def sin(x, prec)
|
@@ -95,7 +95,7 @@ module BigMath
|
|
95
95
|
#
|
96
96
|
# If +decimal+ is Infinity or NaN, returns NaN.
|
97
97
|
#
|
98
|
-
# BigMath
|
98
|
+
# BigMath.cos(BigMath.PI(4), 16).to_s
|
99
99
|
# #=> "-0.999999999999999999999999999999856613163740061349E0"
|
100
100
|
#
|
101
101
|
def cos(x, prec)
|
@@ -139,7 +139,7 @@ module BigMath
|
|
139
139
|
#
|
140
140
|
# If +decimal+ is NaN, returns NaN.
|
141
141
|
#
|
142
|
-
# BigMath
|
142
|
+
# BigMath.atan(BigDecimal.new('-1'), 16).to_s
|
143
143
|
# #=> "-0.785398163397448309615660845819878471907514682065E0"
|
144
144
|
#
|
145
145
|
def atan(x, prec)
|
@@ -176,7 +176,7 @@ module BigMath
|
|
176
176
|
# Computes the value of pi to the specified number of digits of precision,
|
177
177
|
# +numeric+.
|
178
178
|
#
|
179
|
-
# BigMath
|
179
|
+
# BigMath.PI(10).to_s
|
180
180
|
# #=> "0.3141592653589793238462643388813853786957412E1"
|
181
181
|
#
|
182
182
|
def PI(prec)
|
@@ -221,7 +221,7 @@ module BigMath
|
|
221
221
|
# Computes e (the base of natural logarithms) to the specified number of
|
222
222
|
# digits of precision, +numeric+.
|
223
223
|
#
|
224
|
-
# BigMath
|
224
|
+
# BigMath.E(10).to_s
|
225
225
|
# #=> "0.271828182845904523536028752390026306410273E1"
|
226
226
|
#
|
227
227
|
def E(prec)
|
data/sample/linear.rb
CHANGED
@@ -16,8 +16,8 @@ require "bigdecimal/ludcmp"
|
|
16
16
|
|
17
17
|
#
|
18
18
|
# NOTE:
|
19
|
-
# Change following BigDecimal
|
20
|
-
BigDecimal
|
19
|
+
# Change following BigDecimal.limit() if needed.
|
20
|
+
BigDecimal.limit(100)
|
21
21
|
#
|
22
22
|
|
23
23
|
include LUSolve
|
@@ -27,8 +27,8 @@ def rd_order(na)
|
|
27
27
|
end
|
28
28
|
|
29
29
|
na = ARGV.size
|
30
|
-
zero = BigDecimal
|
31
|
-
one = BigDecimal
|
30
|
+
zero = BigDecimal.new("0.0")
|
31
|
+
one = BigDecimal.new("1.0")
|
32
32
|
|
33
33
|
while (n=rd_order(na))>0
|
34
34
|
a = []
|
@@ -40,10 +40,10 @@ while (n=rd_order(na))>0
|
|
40
40
|
for i in 0...n do
|
41
41
|
for j in 0...n do
|
42
42
|
printf("A[%d,%d]? ",i,j); s = ARGF.gets
|
43
|
-
a << BigDecimal
|
44
|
-
as << BigDecimal
|
43
|
+
a << BigDecimal.new(s);
|
44
|
+
as << BigDecimal.new(s);
|
45
45
|
end
|
46
|
-
printf("Contatant vector element b[%d] ? ",i); b << BigDecimal
|
46
|
+
printf("Contatant vector element b[%d] ? ",i); b << BigDecimal.new(ARGF.gets);
|
47
47
|
end
|
48
48
|
else
|
49
49
|
# Read data from specified file.
|
@@ -53,10 +53,10 @@ while (n=rd_order(na))>0
|
|
53
53
|
printf("%d) %s",i,s)
|
54
54
|
s = s.split
|
55
55
|
for j in 0...n do
|
56
|
-
a << BigDecimal
|
57
|
-
as << BigDecimal
|
56
|
+
a << BigDecimal.new(s[j]);
|
57
|
+
as << BigDecimal.new(s[j]);
|
58
58
|
end
|
59
|
-
b << BigDecimal
|
59
|
+
b << BigDecimal.new(s[n]);
|
60
60
|
end
|
61
61
|
end
|
62
62
|
x = lusolve(a,b,ludecomp(a,n,zero,one),zero)
|
data/sample/nlsolve.rb
CHANGED
@@ -11,11 +11,11 @@ include Newton
|
|
11
11
|
|
12
12
|
class Function # :nodoc: all
|
13
13
|
def initialize()
|
14
|
-
@zero = BigDecimal
|
15
|
-
@one = BigDecimal
|
16
|
-
@two = BigDecimal
|
17
|
-
@ten = BigDecimal
|
18
|
-
@eps = BigDecimal
|
14
|
+
@zero = BigDecimal.new("0.0")
|
15
|
+
@one = BigDecimal.new("1.0")
|
16
|
+
@two = BigDecimal.new("2.0")
|
17
|
+
@ten = BigDecimal.new("10.0")
|
18
|
+
@eps = BigDecimal.new("1.0e-16")
|
19
19
|
end
|
20
20
|
def zero;@zero;end
|
21
21
|
def one ;@one ;end
|
@@ -31,8 +31,9 @@ class Function # :nodoc: all
|
|
31
31
|
f
|
32
32
|
end
|
33
33
|
end
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
34
|
+
|
35
|
+
f = BigDecimal.limit(100)
|
36
|
+
f = Function.new
|
37
|
+
x = [f.zero,f.zero] # Initial values
|
38
|
+
n = nlsolve(f,x)
|
39
|
+
p x
|
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.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kenta Murata
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date:
|
13
|
+
date: 2014-01-13 00:00:00.000000000 Z
|
14
14
|
dependencies: []
|
15
15
|
description: This library provides arbitrary-precision decimal floating-point number
|
16
16
|
class.
|
@@ -53,7 +53,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
53
53
|
version: '0'
|
54
54
|
requirements: []
|
55
55
|
rubyforge_project:
|
56
|
-
rubygems_version: 2.2.
|
56
|
+
rubygems_version: 2.2.1
|
57
57
|
signing_key:
|
58
58
|
specification_version: 4
|
59
59
|
summary: Arbitrary-precision decimal floating-point number library.
|