From 283b007e5fbc577cb859b43454a8225877370675 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Wo=C5=9B?= Date: Tue, 12 Oct 2021 12:11:39 +0200 Subject: [PATCH] Reformat code base and update decimal copy docs (#249) --- decimal.go | 26 ++++++++++++-------------- decimal_test.go | 36 +++++++++++++++++------------------- 2 files changed, 29 insertions(+), 33 deletions(-) diff --git a/decimal.go b/decimal.go index 0287e3fc..7686af12 100644 --- a/decimal.go +++ b/decimal.go @@ -414,6 +414,15 @@ func NewFromFloatWithExponent(value float64, exp int32) Decimal { } } +// Copy returns a copy of decimal with the same value and exponent, but a different pointer to value. +func (d Decimal) Copy() Decimal { + d.ensureInitialized() + return Decimal{ + value: &(*d.value), + exp: d.exp, + } +} + // rescale returns a rescaled version of the decimal. Returned // decimal may be less precise if the given exponent is bigger // than the initial exponent of the Decimal. @@ -1762,7 +1771,7 @@ func (d Decimal) Sin() Decimal { sign = !sign j -= 4 } - z := d.Sub(y.Mul(PI4A)).Sub(y.Mul(PI4B)).Sub(y.Mul(PI4C)) // Extended precision modular arithmetic + z := d.Sub(y.Mul(PI4A)).Sub(y.Mul(PI4B)).Sub(y.Mul(PI4C)) // Extended precision modular arithmetic zz := z.Mul(z) if j == 1 || j == 2 { @@ -1849,12 +1858,12 @@ var _tanQ = [...]Decimal{ // Tan returns the tangent of the radian argument x. func (d Decimal) Tan() Decimal { - + PI4A := NewFromFloat(7.85398125648498535156e-1) // 0x3fe921fb40000000, Pi/4 split into three parts PI4B := NewFromFloat(3.77489470793079817668e-8) // 0x3e64442d00000000, PI4C := NewFromFloat(2.69515142907905952645e-15) // 0x3ce8469898cc5170, M4PI := NewFromFloat(1.273239544735162542821171882678754627704620361328125) // 4/pi - + if d.Equal(NewFromFloat(0.0)) { return d } @@ -1893,14 +1902,3 @@ func (d Decimal) Tan() Decimal { } return y } - -// Copy makes instance of d with same value and different pointer. -func (d Decimal) Copy() Decimal { - d.ensureInitialized() - return Decimal{ - value: &(*d.value), - exp: d.exp, - } -} - - diff --git a/decimal_test.go b/decimal_test.go index 53d59a43..b53b68b9 100644 --- a/decimal_test.go +++ b/decimal_test.go @@ -556,6 +556,22 @@ func TestNewFromBigIntWithExponent(t *testing.T) { } } +func TestCopy(t *testing.T) { + origin := New(1, 0) + cpy := origin.Copy() + + if cpy.Cmp(origin) != 0 { + t.Error("expecting copy and origin to be equals, but they are not") + } + + //change value + cpy = cpy.Add(New(1, 0)) + + if cpy.Cmp(origin) == 0 { + t.Error("expecting copy and origin to have different values, but they are equal") + } +} + func TestJSON(t *testing.T) { for _, x := range testTable { s := x.short @@ -2803,7 +2819,7 @@ func TestDecimal_Coefficient(t *testing.T) { func TestDecimal_CoefficientInt64(t *testing.T) { type Inp struct { - Dec string + Dec string Coefficient int64 } @@ -3300,21 +3316,3 @@ func ExampleNewFromFloat() { //0.123123123123123 //-10000000000000 } - -//For Copy -func TestCopy(t *testing.T) { - origin := New(1, 0) - cpy := origin.Copy() - - if cpy.Cmp(origin) != 0 { - t.Error("copy and origin not equal") - } - - //change value - cpy = cpy.Add(New(1, 0)) - - if cpy.Cmp(origin) == 0 { - t.Error("copy and origin are equal but expected not") - } - -}