bigdecimal 3.1.1 → 3.1.2
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.gemspec +1 -1
- data/ext/bigdecimal/bigdecimal.c +8 -9
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e9f1adb536b8ac302d4fbf06879d28687d3007aa2f0e3bf886af0ef4f8224c97
|
4
|
+
data.tar.gz: 5d4b4c5a4f7251d582ac518cafb381fefaebc20f10b6247a065d68365e4a025f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b675d99a66877492caa8da094dfab99e4af68c4f53db1a4b796d896a5e2623be476594c149fe8a5a1b7f9290aee1b8499eb06202ee64e9f487c7221ef603693f
|
7
|
+
data.tar.gz: 754b623ee17b5ba432c39a19250bf838531f81a2cce8ceb3f1fb2d8469da31a8f94ed2e02e4d2fad24e451c2ee25529e95519f00dc9db3c935535b7ff4eaf016
|
data/bigdecimal.gemspec
CHANGED
data/ext/bigdecimal/bigdecimal.c
CHANGED
@@ -1618,7 +1618,7 @@ BigDecimal_divide(VALUE self, VALUE r, Real **c, Real **res, Real **div)
|
|
1618
1618
|
/* For c = self.div(r): with round operation */
|
1619
1619
|
{
|
1620
1620
|
ENTER(5);
|
1621
|
-
Real *a, *b
|
1621
|
+
Real *a, *b;
|
1622
1622
|
ssize_t a_prec, b_prec;
|
1623
1623
|
size_t mx;
|
1624
1624
|
|
@@ -1647,18 +1647,16 @@ BigDecimal_divide(VALUE self, VALUE r, Real **c, Real **res, Real **div)
|
|
1647
1647
|
SAVE(b);
|
1648
1648
|
*div = b;
|
1649
1649
|
|
1650
|
-
mx = (a->Prec > b->Prec) ? a->Prec : b->Prec;
|
1651
|
-
mx *= BASE_FIG;
|
1652
|
-
|
1653
1650
|
BigDecimal_count_precision_and_scale(self, &a_prec, NULL);
|
1654
1651
|
BigDecimal_count_precision_and_scale(rr, &b_prec, NULL);
|
1655
1652
|
mx = (a_prec > b_prec) ? a_prec : b_prec;
|
1653
|
+
mx *= 2;
|
1656
1654
|
|
1657
1655
|
if (2*BIGDECIMAL_DOUBLE_FIGURES > mx)
|
1658
1656
|
mx = 2*BIGDECIMAL_DOUBLE_FIGURES;
|
1659
1657
|
|
1660
1658
|
GUARD_OBJ((*c), VpCreateRbObject(mx + 2*BASE_FIG, "#0", true));
|
1661
|
-
GUARD_OBJ((*res), VpCreateRbObject(mx*2 + 2*BASE_FIG, "#0", true));
|
1659
|
+
GUARD_OBJ((*res), VpCreateRbObject((mx + 1)*2 + 2*BASE_FIG, "#0", true));
|
1662
1660
|
VpDivd(*c, *res, a, b);
|
1663
1661
|
|
1664
1662
|
return Qnil;
|
@@ -1808,6 +1806,8 @@ BigDecimal_DoDivmod(VALUE self, VALUE r, Real **div, Real **mod)
|
|
1808
1806
|
BigDecimal_count_precision_and_scale(rr, &b_prec, NULL);
|
1809
1807
|
|
1810
1808
|
mx = (a_prec > b_prec) ? a_prec : b_prec;
|
1809
|
+
mx *= 2;
|
1810
|
+
|
1811
1811
|
if (2*BIGDECIMAL_DOUBLE_FIGURES > mx)
|
1812
1812
|
mx = 2*BIGDECIMAL_DOUBLE_FIGURES;
|
1813
1813
|
|
@@ -5931,18 +5931,17 @@ VpDivd(Real *c, Real *r, Real *a, Real *b)
|
|
5931
5931
|
word_c = c->MaxPrec;
|
5932
5932
|
word_r = r->MaxPrec;
|
5933
5933
|
|
5934
|
-
ind_c = 0;
|
5935
|
-
ind_r = 1;
|
5936
|
-
|
5937
5934
|
if (word_a >= word_r) goto space_error;
|
5938
5935
|
|
5936
|
+
ind_r = 1;
|
5939
5937
|
r->frac[0] = 0;
|
5940
5938
|
while (ind_r <= word_a) {
|
5941
5939
|
r->frac[ind_r] = a->frac[ind_r - 1];
|
5942
5940
|
++ind_r;
|
5943
5941
|
}
|
5944
|
-
|
5945
5942
|
while (ind_r < word_r) r->frac[ind_r++] = 0;
|
5943
|
+
|
5944
|
+
ind_c = 0;
|
5946
5945
|
while (ind_c < word_c) c->frac[ind_c++] = 0;
|
5947
5946
|
|
5948
5947
|
/* initial procedure */
|
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: 3.1.
|
4
|
+
version: 3.1.2
|
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: 2022-01-19 00:00:00.000000000 Z
|
14
14
|
dependencies: []
|
15
15
|
description: This library provides arbitrary-precision decimal floating-point number
|
16
16
|
class.
|