Exponential module for storing fixed-precision decimals (ExponentialNoError.sol)

View Source: contracts/ExponentialNoError.sol

↘ Derived Contracts: RewardControl

Exp is a struct which stores decimals with a fixed precision of 18 decimal places. Thus, if we wanted to store the 5.1, mantissa would store 5.1e18. That is: Exp({mantissa: 5100000000000000000}).

Structs

Exp

struct Exp {
 uint256 mantissa
}

Double

struct Double {
 uint256 mantissa
}

Contract Members

Constants & Variables

uint256 internal constant expScale;
uint256 internal constant doubleScale;
uint256 internal constant halfExpScale;
uint256 internal constant mantissaOne;

Functions

  • truncate(struct ExponentialNoError.Exp exp)

  • mul_ScalarTruncate(struct ExponentialNoError.Exp a, uint256 scalar)

  • mul_ScalarTruncateAddUInt(struct ExponentialNoError.Exp a, uint256 scalar, uint256 addend)

  • lessThanExp(struct ExponentialNoError.Exp left, struct ExponentialNoError.Exp right)

  • lessThanOrEqualExp(struct ExponentialNoError.Exp left, struct ExponentialNoError.Exp right)

  • greaterThanExp(struct ExponentialNoError.Exp left, struct ExponentialNoError.Exp right)

  • isZeroExp(struct ExponentialNoError.Exp value)

  • safe224(uint256 n, string errorMessage)

  • safe32(uint256 n, string errorMessage)

  • add_(struct ExponentialNoError.Exp a, struct ExponentialNoError.Exp b)

  • add_(struct ExponentialNoError.Double a, struct ExponentialNoError.Double b)

  • add_(uint256 a, uint256 b)

  • add_(uint256 a, uint256 b, string errorMessage)

  • sub_(struct ExponentialNoError.Exp a, struct ExponentialNoError.Exp b)

  • sub_(struct ExponentialNoError.Double a, struct ExponentialNoError.Double b)

  • sub_(uint256 a, uint256 b)

  • sub_(uint256 a, uint256 b, string errorMessage)

  • mul_(struct ExponentialNoError.Exp a, struct ExponentialNoError.Exp b)

  • mul_(struct ExponentialNoError.Exp a, uint256 b)

  • mul_(uint256 a, struct ExponentialNoError.Exp b)

  • mul_(struct ExponentialNoError.Double a, struct ExponentialNoError.Double b)

  • mul_(struct ExponentialNoError.Double a, uint256 b)

  • mul_(uint256 a, struct ExponentialNoError.Double b)

  • mul_(uint256 a, uint256 b)

  • mul_(uint256 a, uint256 b, string errorMessage)

  • div_(struct ExponentialNoError.Exp a, struct ExponentialNoError.Exp b)

  • div_(struct ExponentialNoError.Exp a, uint256 b)

  • div_(uint256 a, struct ExponentialNoError.Exp b)

  • div_(struct ExponentialNoError.Double a, struct ExponentialNoError.Double b)

  • div_(struct ExponentialNoError.Double a, uint256 b)

  • div_(uint256 a, struct ExponentialNoError.Double b)

  • div_(uint256 a, uint256 b)

  • div_(uint256 a, uint256 b, string errorMessage)

  • fraction(uint256 a, uint256 b)

truncate

Truncates the given exp to a whole number value. For example, truncate(Exp{mantissa: 15 * expScale}) = 15

Arguments

Name

Type

Description

exp

struct ExponentialNoError.Exp

mul_ScalarTruncate

Multiply an Exp by a scalar, then truncate to return an unsigned integer.

Arguments

Name

Type

Description

a

struct ExponentialNoError.Exp

scalar

uint256

mul_ScalarTruncateAddUInt

Multiply an Exp by a scalar, truncate, then add an to an unsigned integer, returning an unsigned integer.

Arguments

Name

Type

Description

a

struct ExponentialNoError.Exp

scalar

uint256

addend

uint256

lessThanExp

Checks if first Exp is less than second Exp.

Arguments

Name

Type

Description

left

struct ExponentialNoError.Exp

right

struct ExponentialNoError.Exp

lessThanOrEqualExp

Checks if left Exp <= right Exp.

Arguments

Name

Type

Description

left

struct ExponentialNoError.Exp

right

struct ExponentialNoError.Exp

greaterThanExp

Checks if left Exp > right Exp.

Arguments

Name

Type

Description

left

struct ExponentialNoError.Exp

right

struct ExponentialNoError.Exp

isZeroExp

returns true if Exp is exactly zero

Arguments

Name

Type

Description

value

struct ExponentialNoError.Exp

safe224

Arguments

Name

Type

Description

n

uint256

errorMessage

string

safe32

Arguments

Name

Type

Description

n

uint256

errorMessage

string

add_

Arguments

Name

Type

Description

a

struct ExponentialNoError.Exp

b

struct ExponentialNoError.Exp

add_

Arguments

Name

Type

Description

a

struct ExponentialNoError.Double

b

struct ExponentialNoError.Double

add_

Arguments

Name

Type

Description

a

uint256

b

uint256

add_

Arguments

Name

Type

Description

a

uint256

b

uint256

errorMessage

string

sub_

Arguments

Name

Type

Description

a

struct ExponentialNoError.Exp

b

struct ExponentialNoError.Exp

sub_

Arguments

Name

Type

Description

a

struct ExponentialNoError.Double

b

struct ExponentialNoError.Double

sub_

Arguments

Name

Type

Description

a

uint256

b

uint256

sub_

Arguments

Name

Type

Description

a

uint256

b

uint256

errorMessage

string

mul_

Arguments

Name

Type

Description

a

struct ExponentialNoError.Exp

b

struct ExponentialNoError.Exp

mul_

Arguments

Name

Type

Description

a

struct ExponentialNoError.Exp

b

uint256

mul_

Arguments

Name

Type

Description

a

uint256

b

struct ExponentialNoError.Exp

mul_

Arguments

Name

Type

Description

a

struct ExponentialNoError.Double

b

struct ExponentialNoError.Double

mul_

Arguments

Name

Type

Description

a

struct ExponentialNoError.Double

b

uint256

mul_

Arguments

Name

Type

Description

a

uint256

b

struct ExponentialNoError.Double

mul_

Arguments

Name

Type

Description

a

uint256

b

uint256

mul_

Arguments

Name

Type

Description

a

uint256

b

uint256

errorMessage

string

div_

Arguments

Name

Type

Description

a

struct ExponentialNoError.Exp

b

struct ExponentialNoError.Exp

div_

Arguments

Name

Type

Description

a

struct ExponentialNoError.Exp

b

uint256

div_

Arguments

Name

Type

Description

a

uint256

b

struct ExponentialNoError.Exp

div_

Arguments

Name

Type

Description

a

struct ExponentialNoError.Double

b

struct ExponentialNoError.Double

div_

Arguments

Name

Type

Description

a

struct ExponentialNoError.Double

b

uint256

div_

Arguments

Name

Type

Description

a

uint256

b

struct ExponentialNoError.Double

div_

Arguments

Name

Type

Description

a

uint256

b

uint256

div_

Arguments

Name

Type

Description

a

uint256

b

uint256

errorMessage

string

fraction

Arguments

Name

Type

Description

a

uint256

b

uint256

Last updated

Was this helpful?