Uniswap.Tick.Math (Uniswap v0.0.5)

View Source

Math library for computing sqrt prices from ticks and vice versa

Summary

Functions

Return the nearest bigger valid tick with respect to the tick spacing

Returns the nearest smaller valid tick with respect to the tick spacing

Calculates sqrt(1.0001^tick) * 2^96

Same as sqrt_ratio_at_tick/1 but raises on errors

Same as tick_at_sqrt_ratio/1 but raises on errors

Base for tick calculatio: 1.0001

Functions

next_valid_tick(tick, tick_spacing)

Return the nearest bigger valid tick with respect to the tick spacing

Examples

iex> Uniswap.Tick.Math.next_valid_tick(53, 10)
60

iex> Uniswap.Tick.Math.next_valid_tick(59, 10)
60

iex> Uniswap.Tick.Math.next_valid_tick(90, 10)
90

iex> Uniswap.Tick.Math.next_valid_tick(-90, 10)
-90

iex> Uniswap.Tick.Math.next_valid_tick(0, 10)
0

iex> Uniswap.Tick.Math.next_valid_tick(-54, 10)
-50

iex> Uniswap.Tick.Math.next_valid_tick(22, 8)
24

iex> Uniswap.Tick.Math.next_valid_tick(887_272, 10)
887_270

prev_valid_tick(tick, tick_spacing)

Returns the nearest smaller valid tick with respect to the tick spacing

Examples

iex> Uniswap.Tick.Math.prev_valid_tick(53, 10)
50

iex> Uniswap.Tick.Math.prev_valid_tick(59, 10)
50

iex> Uniswap.Tick.Math.prev_valid_tick(90, 10)
90

iex> Uniswap.Tick.Math.prev_valid_tick(-90, 10)
-90

iex> Uniswap.Tick.Math.prev_valid_tick(0, 10)
0

iex> Uniswap.Tick.Math.prev_valid_tick(-54, 10)
-60

iex> Uniswap.Tick.Math.prev_valid_tick(22, 8)
16

iex> Uniswap.Tick.Math.prev_valid_tick(-887_272, 10)
-887_270

iex> Uniswap.Tick.Math.prev_valid_tick(-887_270, 10)
-887_270

sqrt_ratio_at_tick(tick)

Calculates sqrt(1.0001^tick) * 2^96

sqrt_ratio_at_tick!(tick)

Same as sqrt_ratio_at_tick/1 but raises on errors

tick_at_sqrt_ratio(sqrt_ratio)

Calculates reverse of sqrt_ratio_at_tick/1.

IMPORTANT: This function is not precision safe and is using floating point calculation. Do not use in prod!

tick_at_sqrt_ratio!(tick)

Same as tick_at_sqrt_ratio/1 but raises on errors

tick_base()

Base for tick calculatio: 1.0001