Commit Graph

45 Commits

Author SHA1 Message Date
Julien Robert
58d71c0c23
chore: prep collections v1 and api v0.8.0 (#23198) 2025-01-06 15:38:06 +00:00
Alexander Peters
abc5fd0226
feat(math): Implement custom hybrid un-/marshal model (#22529) 2024-12-05 20:28:14 +00:00
Alexander Peters
c6522a72a4
Merge commit from fork
* Fix valid decimal range

* Review feedback

* Update changelog; retract versions

---------

Co-authored-by: Julien Robert <julien@rbrt.fr>
2024-11-20 16:13:08 +01:00
Dev Ojha
90cbb022d5
perf(math): Significantly speedup Dec quo truncate and quo Roundup (#20034)
Co-authored-by: Marko <marko@baricevic.me>
Co-authored-by: marbar3778 <marbar3778@yahoo.com>
Co-authored-by: Alex Peters <alpe@users.noreply.github.com>
2024-05-30 10:44:14 +00:00
Julien Robert
25b14c3caa
chore: prepare math v1.3.0 (#19527) 2024-02-23 07:36:35 +00:00
Dev Ojha
72eae6dc50
perf(math): Use Dec Bigintmut API (#19479) 2024-02-19 16:45:59 +00:00
Dev Ojha
4db9838ae6
perf: Remove an extra heap allocation from NewLegacyDec (#19466)
Co-authored-by: Marko <marbar3778@yahoo.com>
2024-02-19 09:15:57 +00:00
Dev Ojha
0f113520f9
perf: Remove unneeded cmp in Ceil and marshalTo (#19467) 2024-02-19 08:21:47 +00:00
Dev Ojha
ac48269f98
perf: Speedup sdk.Int overflow checks (#19386) 2024-02-09 08:51:11 +00:00
Dev Ojha
0c6b6d49cb
perf: Remove duplicate overflow check from int.Mul (#18874) 2023-12-26 12:04:10 +00:00
ocnc
7d5e9f1c23
feat(math): add safe arithmetic (#18552) 2023-11-28 07:54:04 +00:00
Marko
bed952022b
fix(math): preventative ciel call (#18519) 2023-11-20 10:28:15 +00:00
Đông Liều
393eaef817
feat(math): add mutative api for LegacyDec.BigInt() (#18421) 2023-11-12 09:04:37 +00:00
Julien Robert
7e002550cc
chore: prepare math changelog (#18384) 2023-11-07 09:06:29 +00:00
Hieu Vu
e7e1c36222
feat(math): Add mutative api for NewIntFromBigInt (#18030) 2023-11-07 08:36:39 +00:00
Đông Liều
a6eea3c5ea
feat(math): add mutative api for Uint.BigInt() (#18247) 2023-11-07 08:35:17 +00:00
Đông Liều
ff3ec25873
fix(math): fix panic on Uint.BigInt() (#18228) 2023-10-24 20:29:23 +00:00
Facundo Medica
bbf2faa699
fix(math): NewUintFromBigInt argument mutation (#18214) 2023-10-23 14:12:52 +00:00
Facundo Medica
442c3c5e4b
fix: RelativePow now returns 1 when 0^0 (#18211) 2023-10-23 13:21:13 +00:00
Hieu Vu
150013ee50
feat(math): add mutative api for Int.BigInt() (#17803) 2023-09-25 12:12:23 +00:00
Roman
267cd15b07
fix(math): revert to correct version of ApproxRoot from a former state breaking change (#17725) 2023-09-18 13:55:51 +00:00
Roman
f304ebfc8f
fix(math): Revert "perf: optimize math.Int.Size for small values (#17497)" (#17736) 2023-09-14 16:55:58 +00:00
Elias Naur
952328a4ed
perf: optimize math.Int.Size for small values (#17497) 2023-08-22 21:54:34 +00:00
Julien Robert
bf249162e4
fix(math): revert #16263 and add test cases (#17489) 2023-08-21 14:07:40 +00:00
Julien Robert
1089f715fc
fix(math): fix panic in .Size() (#17480) 2023-08-21 09:20:30 +00:00
Roman
0288d423b9
feat: LegacyDec MulRoundUp (#17427)
Co-authored-by: Aleksandr Bezobchuk <alexanderbez@users.noreply.github.com>
2023-08-18 09:58:20 +00:00
Aleksandr Bezobchuk
658a88a309
fix(math): defend NewIntFromBigInt argument mutation (#17352) 2023-08-10 20:10:38 +00:00
Julien Robert
5442197d6b
chore: cherry-pick some inj changes (#17109) 2023-07-24 13:07:06 +00:00
Julien Robert
bf8053cdfc
chore: fix concurrency group sims and math changelog (#16462) 2023-06-08 20:04:22 +00:00
Emmanuel T Odeke
9b9e319d1a
perf: math: make Int.Size() faster by computation not len(MarshalledBytes) (#16263)
Co-authored-by: marbar3778 <marbar3778@yahoo.com>
2023-06-08 15:15:52 +00:00
Roman
a2e3711ce0
fix: legacy dec power mut zero exponent precision (#16266) 2023-05-24 00:05:59 +00:00
Julien Robert
90e3e69b95
chore: prepare math 1.0.1 (#16153) 2023-05-15 12:18:15 +00:00
Dev Ojha
fb8ff071ca
perf: Speedup Dec.Sqrt() (#16141) 2023-05-15 10:34:13 +00:00
gribanoid
96662df62f
fix(math): double method call (#15768)
## Description
The `init` method of the `Rand` struct was called twice: in the constructor and in the `init` function.
Closes: #XXXX



---

### Author Checklist

*All items are required. Please add a note to the item if the item is not applicable and
please add links to any relevant follow up issues.*

I have...

* [ ] included the correct [type prefix](https://github.com/commitizen/conventional-commit-types/blob/v3.0.0/index.json) in the PR title
* [ ] added `!` to the type prefix if API or client breaking change
* [ ] targeted the correct branch (see [PR Targeting](https://github.com/cosmos/cosmos-sdk/blob/main/CONTRIBUTING.md#pr-targeting))
* [ ] provided a link to the relevant issue or specification
* [ ] followed the guidelines for [building modules](https://github.com/cosmos/cosmos-sdk/blob/main/docs/docs/building-modules)
* [ ] included the necessary unit and integration [tests](https://github.com/cosmos/cosmos-sdk/blob/main/CONTRIBUTING.md#testing)
* [ ] added a changelog entry to `CHANGELOG.md`
* [ ] included comments for [documenting Go code](https://blog.golang.org/godoc)
* [ ] updated the relevant documentation or specification
* [ ] reviewed "Files changed" and left comments if necessary
* [ ] confirmed all CI checks have passed

### Reviewers Checklist

*All items are required. Please add a note if the item is not applicable and please add
your handle next to the items reviewed if you only reviewed selected items.*

I have...

* [ ] confirmed the correct [type prefix](https://github.com/commitizen/conventional-commit-types/blob/v3.0.0/index.json) in the PR title
* [ ] confirmed `!` in the type prefix if API or client breaking change
* [ ] confirmed all author checklist items have been addressed 
* [ ] reviewed state machine logic
* [ ] reviewed API design and naming
* [ ] reviewed documentation is accurate
* [ ] reviewed tests and test coverage
* [ ] manually tested (if applicable)
2023-04-10 15:34:10 +00:00
Facundo Medica
43cfdfe618
fix(math): FormatInt returns error on empty string (#15714) 2023-04-06 14:10:30 +00:00
Matt Kocubinski
ba9d4df6d0
chore(math): fix changelog link (#15531)
Fixing a changelog link.
2023-03-23 14:49:21 +00:00
Matt Kocubinski
7204a5d4dd
chore: math v1.0.0 (#15530)
Update Changelog in preparation for tagging math/v1.0.0
2023-03-23 15:44:12 +01:00
Matt Kocubinski
4db99fc1a5
fix(math): Dec marshal shouldn't have side effects (#15506)
## Description

Ref: https://github.com/cosmos/cosmos-sdk/issues/15170
Included in: #15515 

Required to resolve a discrepancy between the sign mode being implemented in #15170 and the existing legacy one.

When calling tx builder [SetMsgs](4a6a1e3cb8/x/auth/tx/builder.go (L208)) messages are coerced to an any type in [NewAnyWithValue](4a6a1e3cb8/codec/types/any.go (L61)). This marshals a message as proto bytes. If a message has cosmos.Dec typed fields, and they are set to nil, the will be set to 0 during seriazliation in the [Dec.Marshal](88909d6f2b/math/dec.go (L801)) implementation.

This side effect *changes* the output of a JSON marshal before and after the call to Dec.Marshal, as shown below.

```go
rates := &stakingtypes.CommissionRates{}
MarshalJson(rates)
// {"rate":"0","max_rate":"0","max_change_rate":"0"}

MarshalProto(rates)

MarshalJson(rates)
//{"rate":"0.000000000000000000","max_rate":"0.000000000000000000","max_change_rate":"0.000000000000000000"}
```

An integration is test is also committed asserting the (now fixed) behavior above.  Its asserts should be changed once a release of math is made and `/tests/go.mod` is updated.



---

### Author Checklist

*All items are required. Please add a note to the item if the item is not applicable and
please add links to any relevant follow up issues.*

I have...

* [ ] included the correct [type prefix](https://github.com/commitizen/conventional-commit-types/blob/v3.0.0/index.json) in the PR title
* [ ] added `!` to the type prefix if API or client breaking change
* [ ] targeted the correct branch (see [PR Targeting](https://github.com/cosmos/cosmos-sdk/blob/main/CONTRIBUTING.md#pr-targeting))
* [ ] provided a link to the relevant issue or specification
* [ ] followed the guidelines for [building modules](https://github.com/cosmos/cosmos-sdk/blob/main/docs/docs/building-modules)
* [ ] included the necessary unit and integration [tests](https://github.com/cosmos/cosmos-sdk/blob/main/CONTRIBUTING.md#testing)
* [ ] added a changelog entry to `CHANGELOG.md`
* [ ] included comments for [documenting Go code](https://blog.golang.org/godoc)
* [ ] updated the relevant documentation or specification
* [ ] reviewed "Files changed" and left comments if necessary
* [ ] confirmed all CI checks have passed

### Reviewers Checklist

*All items are required. Please add a note if the item is not applicable and please add
your handle next to the items reviewed if you only reviewed selected items.*

I have...

* [ ] confirmed the correct [type prefix](https://github.com/commitizen/conventional-commit-types/blob/v3.0.0/index.json) in the PR title
* [ ] confirmed `!` in the type prefix if API or client breaking change
* [ ] confirmed all author checklist items have been addressed 
* [ ] reviewed state machine logic
* [ ] reviewed API design and naming
* [ ] reviewed documentation is accurate
* [ ] reviewed tests and test coverage
* [ ] manually tested (if applicable)
2023-03-22 19:48:36 +00:00
Julien Robert
46169d0bff
ci: add changelog reminder (#15459) 2023-03-21 14:44:24 +01:00
Marko
2b484a241f
feat: add rand funcs to math (#15043) 2023-02-18 18:39:46 +00:00
Emmanuel T Odeke
d301d15ed7
feat: math: add generics versions of Max, Min to cater to all numeric types (#14166) 2022-12-25 07:26:59 +00:00
Emmanuel T Odeke
3e85182baa
perf: math: optimize and test FormatInt + simplify LegacyNewDecFromStr (#14010)
Optimizes and tests FormatInt by removing inefficient string
concatenation but also making it so much clearer with how one would
express adding thousand separators in natural language. It uses
a combination of strings.Builder whose values can be grown

The performance improvement is stark in every dimension:

```shell
$ benchstat before.txt after3.txt
name                          old time/op    new time/op    delta
DecimalValueRendererFormat-8    4.48µs ± 1%    2.11µs ± 2%  -52.90%  (p=0.000 n=10+10)

name                          old alloc/op   new alloc/op   delta
DecimalValueRendererFormat-8    3.62kB ± 0%    0.78kB ± 0%  -78.59%  (p=0.000 n=10+10)

name                          old allocs/op  new allocs/op  delta
DecimalValueRendererFormat-8      83.0 ± 0%      28.0 ± 0%  -66.27%  (p=0.000 n=10+10)
```

While here, also simplified zero padding for LegacyNewDecFromStr
simply by using strings.Repeat instead of a convoluted
fmt.Sprintf+strconv.Itoa.

Fixes #14008
Fixes #14003

Co-authored-by: Marko <marbar3778@yahoo.com>
2022-11-29 21:00:47 +00:00
Julien Robert
55373cb614
feat: add uint IsNil method (#13381) 2022-09-25 09:19:50 +00:00
Amaury
eee23d9531
refactor: Move sdk.Dec to math package (#12634)
## Description





---

### Author Checklist

*All items are required. Please add a note to the item if the item is not applicable and
please add links to any relevant follow up issues.*

I have...

- [ ] included the correct [type prefix](https://github.com/commitizen/conventional-commit-types/blob/v3.0.0/index.json) in the PR title
- [ ] added `!` to the type prefix if API or client breaking change
- [ ] targeted the correct branch (see [PR Targeting](https://github.com/cosmos/cosmos-sdk/blob/main/CONTRIBUTING.md#pr-targeting))
- [ ] provided a link to the relevant issue or specification
- [ ] followed the guidelines for [building modules](https://github.com/cosmos/cosmos-sdk/blob/main/docs/building-modules)
- [ ] included the necessary unit and integration [tests](https://github.com/cosmos/cosmos-sdk/blob/main/CONTRIBUTING.md#testing)
- [ ] added a changelog entry to `CHANGELOG.md`
- [ ] included comments for [documenting Go code](https://blog.golang.org/godoc)
- [ ] updated the relevant documentation or specification
- [ ] reviewed "Files changed" and left comments if necessary
- [ ] confirmed all CI checks have passed

### Reviewers Checklist

*All items are required. Please add a note if the item is not applicable and please add
your handle next to the items reviewed if you only reviewed selected items.*

I have...

- [ ] confirmed the correct [type prefix](https://github.com/commitizen/conventional-commit-types/blob/v3.0.0/index.json) in the PR title
- [ ] confirmed `!` in the type prefix if API or client breaking change
- [ ] confirmed all author checklist items have been addressed 
- [ ] reviewed state machine logic
- [ ] reviewed API design and naming
- [ ] reviewed documentation is accurate
- [ ] reviewed tests and test coverage
- [ ] manually tested (if applicable)
2022-07-20 15:13:45 +00:00
Aleksandr Bezobchuk
4f04beae34
refactor!: create math go sub module (#11788) 2022-04-28 14:05:21 -04:00