Reformat code base and update decimal copy docs (#249)

This commit is contained in:
Mateusz Woś 2021-10-12 12:11:39 +02:00 committed by GitHub
parent 3259e0a2de
commit 283b007e5f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 29 additions and 33 deletions

View file

@ -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,
}
}

View file

@ -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")
}
}