Commit graph

179 commits

Author SHA1 Message Date
Philip Dubé
5b02b5b80e
Merge 6e15183b56 into d00399e161 2024-03-28 19:49:25 +00:00
Philip Dubé
6e15183b56 Optimize NumDigits
Dividing BitLen by math.Log2(10) is what math/big does underneath

Not including the Int64/Uint64 check makes this slightly slower than old method

Included 2 benchmarks, for 10 digit numbers & 100 digit numbers:

-- before
> go test -bench=NumDigit -run=NumDigit
goos: linux
goarch: amd64
pkg: github.com/shopspring/decimal
cpu: AMD Ryzen 7 7840U w/ Radeon  780M Graphics
BenchmarkDecimal_NumDigits10-16     	18317293	        63.87 ns/op
BenchmarkDecimal_NumDigits100-16    	 3645015	       329.6 ns/op

-- after
...
BenchmarkDecimal_NumDigits10-16     	143781325	         8.488 ns/op
BenchmarkDecimal_NumDigits100-16    	 5931247	       207.4 ns/op
2024-03-28 19:49:01 +00:00
Dovydas
d00399e161
Add NewFromBigRat constructor (#288) 2024-02-19 23:13:43 +01:00
Andrei Tudor Călin
57a340d853
Add Compare method which forwards calls to Cmp (#346)
Given the interface definition

	type Ordered[T any] interface {
		Compare(T) int
	}

And the type constraint T Ordered[T], make decimal.Decimal satisfy this
constraint, so that generic code written against T Ordered[T] can work
with decimal values as smoothly as it works with time.Time values today.

Fixes: #345
2024-01-24 23:48:15 +01:00
Chris Belsole
b79c571f80
Removed unnecessary min function for RescalePair method (#265)
Co-authored-by: Chris Belsole <chris.belsole@homelight.com>
2024-01-15 20:56:38 +01:00
Frank
b844c58a71
Fix overflow edge case in QuoRem method (#322) 2024-01-15 20:52:54 +01:00
Feras AlSaffar
142a0cf2f2
Use Godoc standard to mark deprecated Equals and StringScaled methods(#342) 2024-01-15 20:50:05 +01:00
zlasd
7b4ffbcd3c
Fix mod when the divisor is slightly greater than the half of dividend (#312) (#317) 2024-01-10 02:08:45 +01:00
zlasd
1df8fb3015
Ensure empty Decimal returns correct zero-value NumDigits (#301) 2023-12-31 13:11:33 +01:00
Jongmin Kim
572d78e32d
Fix examples for RoundDown, RoundFloor, RoundUp, and RoundCeil (#341) 2023-12-29 18:47:57 +01:00
mwoss
b4c250139b Update Go version in go.mod to match minimum version required from docs 2023-12-29 12:58:22 +01:00
Mateusz Woś
304c9d6794
Update Github Actions libraries to latest working version (#340)
* Update Github Actions libraries to the latest working version
* Update badge to show status from master branch only
2023-12-29 12:54:16 +01:00
Mateusz Woś
12e9241da2
Add implementation of natural logarithm (#339)
* Add initial implementation of natural logarithm
* Add constApproxmation struct to represent mathematical constants with their approximations
2023-12-29 01:59:48 +01:00
mwoss
88705b71ce Reformat documentation to current go standard 2023-12-28 21:05:09 +01:00
Vadim Kulagin
6926256b71
Allocate new(big.Int) in Copy method to deeply clone it (#278) 2023-12-27 15:53:43 +01:00
Mateusz Woś
f55dd56454
Migrate to Github Actions (#245)
* Migrate to Github Actions
* Remove architecture param
* Remove Travis config, update readme
2022-04-18 23:54:26 +02:00
Mateusz Woś
fa3b22f4d4
Fix incorrect calculation of decimal modulo (#258) 2021-10-21 11:22:23 +02:00
Mateusz Woś
683f5e1a7e
Release version 1.3.1 (#255) 2021-10-20 13:17:51 +02:00
lmittmann
bc96f543c2
Reduce memory allocation in case of initialization from big.Int (#252)
* reduced allocs in NewFromBigInt(...) from 3 -> 2
* remaining `big.NewInt(0).Set(...)` -> `new(big.Int).Set(...)`
2021-10-20 13:11:07 +02:00
Gaylor Bosson
cd57bf11a4
Fix binary marshalling of decimal zero value (#253)
* Fix binary marshalling of zero value
* Adapt the error message of BinaryUnmarshal
2021-10-20 12:49:41 +02:00
Mateusz Woś
2ae6f298b8
Release version 1.3.0 (#250) 2021-10-14 01:55:53 +02:00
Mateusz Woś
283b007e5f
Reformat code base and update decimal copy docs (#249) 2021-10-12 12:11:39 +02:00
Ruben de Vries
3259e0a2de
Add NewNullDecimal init method (#234) 2021-10-12 11:07:45 +02:00
Ilya Glukhov
013e52d4e9
Add Copy func (#123)
* Add Copy method
Co-authored-by: habuvo <Sin90is0>
2021-10-12 02:17:36 +02:00
Mateusz Woś
46544472a5
Add implementation of natural exponent function (Taylor, Hull-Abraham) (#229)
* Add implementation of natural exponent function (Taylor, Hull-Abraham)
* Update docs
* Improve docs, handle multithreading race condition in exp method
2021-10-11 18:39:38 +02:00
Mateusz Woś
9ffd602a49
Update Travis-CI configuration (#246)
* Update Travis-CI configuration
* Migrate to travis-ci.com
2021-09-12 13:37:52 +02:00
Mateusz Woś
b11a7c46d7
Add implementation of CoefficientInt64 method (#244)
* Add implementation of CoefficientInt64 method
2021-09-10 15:48:44 +02:00
Denis
483a047db9
Improve performance of Abs() and Round() (#240) 2021-09-09 13:03:13 +02:00
James Harris
cc4584f0a5
Add slice range checks to UnmarshalBinary() (#232)
* Add slice range checks to `UnmarshalBinary()`.
* Avoid use of `%w` verb with `Errorf()` for compatibility with older Go versions.
2021-06-23 00:24:56 +02:00
Felipe Neuwald
501661573f
Add InexactFloat64 method (#205)
* Add func (d Decimal) MustFloat64()
* renames MustFloat64 to InexactFloat64
2021-03-30 01:12:37 +02:00
Vu Long (Drake)
f77bb07828
Modify Rounding methods (#220)
* Change function name from RoundUp -> RoundCeil, RoundDown -> RoundFloor
* Add a new RoundUp and RoundDown methods
* Modify the docs of RoundUp and RoundDown
2021-03-14 22:09:56 +01:00
Bharath Ramesh
9328d16578
Added XML support for NullDecimal (#192)
* Added UnmarshalText and MarshalText support for NullDecimal
* Add tests for XML operations on NullDecimal
2021-02-18 23:32:50 +01:00
Vu Long (Drake)
99f4d74cf2
Fix wrong return RoundUp/RoundDown because of value after rescaled is ignore (#202) 2021-01-18 00:50:46 +01:00
Jason Biegel
2740f7f782 update changelog 2021-01-09 23:26:47 -05:00
nknordeen
0cada0bdfe
optimize NewFromString a bit (#198)
* optimize NewFromString a bit

* add benchmark for large number

Co-authored-by: Nicholas Nordeen <nnordeen@fanatics.com>
2021-01-09 23:15:12 -05:00
Mateusz Woś
8bd41ac55d
Implement RoundUp and RoundDown methods (#196)
* Implement RoundUp and RoundDown methods
2020-12-11 13:41:11 -05:00
sreekanth370
66332b32a9
Add power architecture support (ppc64le) to CI configuration (#188) 2020-12-01 11:15:53 +01:00
Jason Biegel
13425bb201 added vs code to gitignore 2020-11-19 00:23:29 -05:00
Mateusz Woś
ebbf8bbe36
Implement new initialization function - NewFromFormattedString (#184)
* Implement new initialization function - NewFromFormattedString
* Redefine docstring
2020-09-14 19:29:03 +02:00
mwoss
5a22b86679 Fix documentation in RoundBank method 2020-08-20 23:47:45 +02:00
jonson
867ed12000
fix the rounding bug in roundShortest method (#161)
* fix: fix rounding in FormatFloat fallback path
2020-07-07 09:05:46 +02:00
Mateusz Woś
6fe01c1abd
Implement IsInteger method (#179) 2020-07-01 01:20:32 +02:00
Mateusz Woś
2568a29459
Release version 1.2.0 (#175)
v1.2
2020-04-28 17:23:09 -04:00
Mateusz Woś
480f653de8
Update documentation, clean up package level documentation (#173)
* Update documentation, clean up package level documentation
2020-04-27 22:35:36 -04:00
Mateusz Woś
c939845a68
Improve go report cards score (#174)
* Improve go report cards score
2020-04-27 02:03:21 -04:00
Mateusz Woś
1884f454f8
Add new helper methods: BigInt, BigFloat (#171)
* Add new helper methods: BigInt, BigFloat
* Add few tests cases showing loss of precision after casting
2020-04-20 00:29:39 +02:00
Mateusz Woś
f1c1aead5a
Drop support for Go versions older than 1.7 (#172)
* Drop support for Go versions older than 1.7
* Update README.md
2020-04-20 00:18:35 +02:00
Mateusz Woś
feafbe1d95
CI, test build on the three latest Go version and the oldest one available (#170) 2020-04-19 19:24:39 +02:00
Jason Biegel
02e2044944
Revert remove insignificant digits (#159)
* revert original remove insignificant change (PR 46), and add the logic back as a function
2020-02-27 15:28:07 -05:00
Jason Biegel
a08b92da27 add intellij to gitignore 2020-02-25 19:50:30 -05:00