Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

osmomath: AddMut and QuoMut #3779

Merged
merged 13 commits into from
Dec 22, 2022
Merged

osmomath: AddMut and QuoMut #3779

merged 13 commits into from
Dec 22, 2022

Conversation

pysel
Copy link
Member

@pysel pysel commented Dec 17, 2022

  • mut add
  • test add mut
  • quo mut
  • test quo mut/ remove want from test struct

Closes: #3773

What is the purpose of the change

mutative add and quo + tests

@ValarDragon
Copy link
Member

This isn't getting the speedup benefit of mutative arithmetic. Can you look at how we do it in our SDK fork for Decimal, and adapt it here in a similar style?

@pysel
Copy link
Member Author

pysel commented Dec 17, 2022

@ValarDragon I pushed changes, not sure I understood what you mean tho, hope fixed correctly

osmomath/exp2.go Show resolved Hide resolved
// mutative quotient
func (d BigDec) QuoMut(d2 BigDec) BigDec {
// multiply precision twice
mul := new(big.Int).Mul(d.i, precisionReuse)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We should not allocate new int. One of the goals of the mutative versions is to gain speed up by avoiding reallocations and copying.

Please see:
https://github.com/osmosis-labs/cosmos-sdk/blob/48fe175f983925ff6202d492a363d2b2e3a62497/types/decimal.go#L343-L352

548207900.mdttt Outdated
@@ -0,0 +1,16 @@
- mut add
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's remove this

osmomath/exp2.go Show resolved Hide resolved
} else {
save := tc.testing

require.Panics(t, func() { tc.testing.QuoMut(tc.quo) })
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We have a helper for this here:

func ConditionalPanic(t *testing.T, expectPanic bool, sut func()) {

osmomath/decimal.go Show resolved Hide resolved
osmomath/decimal.go Show resolved Hide resolved
@@ -38,6 +38,59 @@ func (s *decimalTestSuite) assertMutResult(expectedResult, startValue, mutativeR
s.Require().Equal(nonMutativeStartValue, startValue)
}

func TestAddMut(t *testing.T) {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Since Add is supposed to call AddMut, can you please do a short test like this instead of duplicating test cases?

}
}

func TestQuoMut(t *testing.T) {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same for this test case

@pysel pysel requested a review from p0mvn December 21, 2022 16:17
@ValarDragon ValarDragon added V:state/compatible/no_backport State machine compatible PR, depends on prior breaks V:state/compatible/backport State machine compatible PR, should be backported A:backport/v13.x backport patches to v13.x branch and removed V:state/compatible/no_backport State machine compatible PR, depends on prior breaks labels Dec 21, 2022
Copy link
Member

@p0mvn p0mvn left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

Copy link
Member

@ValarDragon ValarDragon left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Awesome!

@ValarDragon ValarDragon merged commit ca6ccbd into main Dec 22, 2022
@ValarDragon ValarDragon deleted the ruslan/mutative_bdec branch December 22, 2022 04:16
mergify bot pushed a commit that referenced this pull request Dec 22, 2022
* mut add

* test add mut

* quo  mut

* test quo mut/ remove want from test struct

* refactor exp

* change mutatives code

* change

* not allocaing

* exp change to quomut

* remove file

* refactor quo

* refactor ad

* refactor tests

(cherry picked from commit ca6ccbd)

# Conflicts:
#	osmomath/exp2.go
ValarDragon added a commit that referenced this pull request Dec 22, 2022
* osmomath: `AddMut` and `QuoMut` (#3779)

* mut add

* test add mut

* quo  mut

* test quo mut/ remove want from test struct

* refactor exp

* change mutatives code

* change

* not allocaing

* exp change to quomut

* remove file

* refactor quo

* refactor ad

* refactor tests

(cherry picked from commit ca6ccbd)

# Conflicts:
#	osmomath/exp2.go

* Delete exp2.go

Co-authored-by: Ruslan Akhtariev <46343690+RusAkh@users.noreply.github.com>
Co-authored-by: Dev Ojha <ValarDragon@users.noreply.github.com>
czarcas7ic pushed a commit that referenced this pull request Jan 5, 2023
* mut add

* test add mut

* quo  mut

* test quo mut/ remove want from test struct

* refactor exp

* change mutatives code

* change

* not allocaing

* exp change to quomut

* remove file

* refactor quo

* refactor ad

* refactor tests
czarcas7ic added a commit that referenced this pull request Jan 5, 2023
…14 (#3925)

* Upgrade IBC to v4.2.0 (#3838)

* initial changes to migrate to ibc v4

* added checksum to proposal

* begin and end block are now being called inside nextBlock

* added changelog

* linked pr on changelog

* remove local replace

* using error acks from osmoutils

* osmoutils tagged

* go sum

* added checksum

* feat(x/twap): modify cli to add geometric option (#3812)

* feat(x/twap): geometric twap code gen query boilerplate

* revert cli change

* query gen

* wire up API

* test

* fix

* fixes

* cli

* lint

* refactor via flag

* refactor

* refactor

* fixes

* lint

* add arithmetic twap alias

* Make wasm hooks importable (#3850)

* moved ibc-hooks to its own go.mod

* updated ibc hooks version

* go sum

* add ics23 patch into x/ibc-hooks

* Fix wasm import version conflict

* Update x/ibc-hooks to osmoutils v0.0.2

* Update versions

Co-authored-by: Dev Ojha <dojha@berkeley.edu>

* refactor(x/twap): handle spot price error case in the context of geometric twap (#3845)

* refactor(x/twap): handle spot price error case

* supporting test cases

* table-driven log tests

* test(x/twap): add randomized geometric twap test on a balancer pool (#3844)

* test(x/twap): add randomized test with a balancer pool

* comments

* multiplicative tolerance, fewer retries and larger initial supply range

* Basic geometric twap e2e test (#3835)

* feat(x/twap): geometric twap code gen query boilerplate

* revert cli change

* query gen

* wire up API

* test

* fix

* fixes

* add geometric queries

* create pool.json

* add test

* resolve conflict

* fix: swap uosmo in

* fix problem with wallet creation

* updates

* simplify and add comments

* Update tests/e2e/e2e_test.go

* Update tests/e2e/e2e_test.go

* Update tests/e2e/configurer/chain/queries.go

Co-authored-by: Adam Tucker <adam@osmosis.team>

* Update tests/e2e/configurer/chain/queries.go

Co-authored-by: Adam Tucker <adam@osmosis.team>

* Update tests/e2e/e2e_test.go

Co-authored-by: Adam Tucker <adam@osmosis.team>

* Update tests/e2e/e2e_test.go

Co-authored-by: Adam Tucker <adam@osmosis.team>

* Update tests/e2e/e2e_test.go

Co-authored-by: Adam Tucker <adam@osmosis.team>

* Update tests/e2e/e2e_test.go

Co-authored-by: Adam Tucker <adam@osmosis.team>

Co-authored-by: Roman <ackhtariev@gmail.com>
Co-authored-by: Roman <roman@osmosis.team>
Co-authored-by: Adam Tucker <adam@osmosis.team>

* feat(x/twap): whitelist GeometricTwap and GeometricTwapToNow (#3852)

* feat(x/twap): GeometricTwap and GeometricTwapToNow queries added to Stargate whitelist

* update docs

* fix(scripts): proto gen for osmoutils (#3854)

* fix(scripts): proto gen for osmoutils

* Update scripts/protocgen.sh

* fix(scripts): proto gen osmoutils path (#3859)

* added packet timeouts to wasm hooks (#3862)

* add negative to cli (#3888)

* Making osmoutils compile on chains that don't use our SDK fork (#3899)

* making osmoutils compile on chains that don't use osmosis' fork of the cosmos sdk

* updated imports for e2e tests

* go fumpt

* updated version everywhere

* added changelog entry

* remove deprecation from arithmetic & geometric twap to now query (#3917)

* Add types & boilerplate for the Downtime detector module (#3609)

Sub-component of #3603

Adds types for the thin module intended for downtime detection

- Add downtime detection module types

No tests added

  - Does this pull request introduce a new feature or user-facing behavior changes? somewhat
  - Is a relevant changelog entry added to the `Unreleased` section in `CHANGELOG.md`? yes
  - How is the feature or change documented? In its spec

* Add downtime detector module (#3688)

* WIP

* Switch to enum

* Remove params query

* Add query

* Add wiring, add import/export test

* Start begin block test

* Finish keeper tests

* Add CLI

* Wire downtime detector CLI + queries

* more module wiring

* add types test

* Fix state alteration test

* Fix superfluid test

* Add stargate whitelist support

* Apply code comment

* Rename folder

* Add requested godoc

* Update x/downtime-detector/genesis.go

Co-authored-by: Adam Tucker <adam@osmosis.team>

* Apply adam suggestion for having a `-`

* move genesis test to own file

Co-authored-by: Adam Tucker <adam@osmosis.team>

* Initial by hand fixes

* feat(osmomath): Exp2 function (#3708)

* feat(osmomath): exp2 function

* export exp2

* changelog

* refactor ErrTolerance to use Dec instead of Int for additive tolerance

* Update osmomath/exp2.go

* Update osmomath/exp2.go

* Update osmomath/exp2.go

* Update osmomath/exp2_test.go

* Update osmomath/exp2_test.go

* do bit shift instead of multiplication

* godoc about error bounds

* comment about bit shift equivalency

* merge conflict

* improve godoc

* typo

* remove TODOs - confirmed obsolete

* Runge's phenomenon comment

* [x/TWAP] Expose a geometric TWAP API  (#3529)

* refactored twap api.go for geometric TWAP

* added barebon docs

* romans feedback

* new

* fix

* nichola feedback

* final roman comments

* fix twap by hand

* change to gamm

* fix balancer test

* bump to v14 upgrade

* e2e fix

* add remaining diff from main to ibc-rate-limit

* update contracts test

* osmomath: `AddMut` and `QuoMut` (#3779)

* mut add

* test add mut

* quo  mut

* test quo mut/ remove want from test struct

* refactor exp

* change mutatives code

* change

* not allocaing

* exp change to quomut

* remove file

* refactor quo

* refactor ad

* refactor tests

* Modify CHANGELOG

* Whitelist EstimateSwapExactAmountOut (#3693)

* whitelist EstimateSwapExactAmountOut

* doc: changelog

* updated rate limit contract

* Fix rust checks (#3576)

* added cargo.lock

* added Cargo.lock as an artifact

* added new bytecode with lock file

Co-authored-by: Nicolas Lara <nicolaslara@gmail.com>
Co-authored-by: Roman <roman@osmosis.team>
Co-authored-by: Dev Ojha <dojha@berkeley.edu>
Co-authored-by: Hieu Vu <72878483+hieuvubk@users.noreply.github.com>
Co-authored-by: Roman <ackhtariev@gmail.com>
Co-authored-by: Supanat <supanat.ptk@gmail.com>
Co-authored-by: Dev Ojha <ValarDragon@users.noreply.github.com>
Co-authored-by: Sishir Giri <sis1001@berkeley.edu>
Co-authored-by: Ruslan Akhtariev <46343690+RusAkh@users.noreply.github.com>
Co-authored-by: mattverse <mattpark1028@gmail.com>
Co-authored-by: ByeongSu Hong <frostornge@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A:backport/v13.x backport patches to v13.x branch F: geometric-twap V:state/compatible/backport State machine compatible PR, should be backported
Projects
Archived in project
Development

Successfully merging this pull request may close these issues.

feat(osmomath): make mutative Add and Quo
3 participants