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

function truncate(struct ExponentialNoError.Exp exp) internal pure
returns(uint256)

Arguments

mul_ScalarTruncate

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

function mul_ScalarTruncate(struct ExponentialNoError.Exp a, uint256 scalar) internal pure
returns(uint256)

Arguments

mul_ScalarTruncateAddUInt

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

function mul_ScalarTruncateAddUInt(struct ExponentialNoError.Exp a, uint256 scalar, uint256 addend) internal pure
returns(uint256)

Arguments

lessThanExp

Checks if first Exp is less than second Exp.

function lessThanExp(struct ExponentialNoError.Exp left, struct ExponentialNoError.Exp right) internal pure
returns(bool)

Arguments

lessThanOrEqualExp

Checks if left Exp <= right Exp.

function lessThanOrEqualExp(struct ExponentialNoError.Exp left, struct ExponentialNoError.Exp right) internal pure
returns(bool)

Arguments

greaterThanExp

Checks if left Exp > right Exp.

function greaterThanExp(struct ExponentialNoError.Exp left, struct ExponentialNoError.Exp right) internal pure
returns(bool)

Arguments

isZeroExp

returns true if Exp is exactly zero

function isZeroExp(struct ExponentialNoError.Exp value) internal pure
returns(bool)

Arguments

safe224

function safe224(uint256 n, string errorMessage) internal pure
returns(uint224)

Arguments

safe32

function safe32(uint256 n, string errorMessage) internal pure
returns(uint32)

Arguments

add_

function add_(struct ExponentialNoError.Exp a, struct ExponentialNoError.Exp b) internal pure
returns(struct ExponentialNoError.Exp)

Arguments

add_

function add_(struct ExponentialNoError.Double a, struct ExponentialNoError.Double b) internal pure
returns(struct ExponentialNoError.Double)

Arguments

add_

function add_(uint256 a, uint256 b) internal pure
returns(uint256)

Arguments

add_

function add_(uint256 a, uint256 b, string errorMessage) internal pure
returns(uint256)

Arguments

sub_

function sub_(struct ExponentialNoError.Exp a, struct ExponentialNoError.Exp b) internal pure
returns(struct ExponentialNoError.Exp)

Arguments

sub_

function sub_(struct ExponentialNoError.Double a, struct ExponentialNoError.Double b) internal pure
returns(struct ExponentialNoError.Double)

Arguments

sub_

function sub_(uint256 a, uint256 b) internal pure
returns(uint256)

Arguments

sub_

function sub_(uint256 a, uint256 b, string errorMessage) internal pure
returns(uint256)

Arguments

mul_

function mul_(struct ExponentialNoError.Exp a, struct ExponentialNoError.Exp b) internal pure
returns(struct ExponentialNoError.Exp)

Arguments

mul_

function mul_(struct ExponentialNoError.Exp a, uint256 b) internal pure
returns(struct ExponentialNoError.Exp)

Arguments

mul_

function mul_(uint256 a, struct ExponentialNoError.Exp b) internal pure
returns(uint256)

Arguments

mul_

function mul_(struct ExponentialNoError.Double a, struct ExponentialNoError.Double b) internal pure
returns(struct ExponentialNoError.Double)

Arguments

mul_

function mul_(struct ExponentialNoError.Double a, uint256 b) internal pure
returns(struct ExponentialNoError.Double)

Arguments

mul_

function mul_(uint256 a, struct ExponentialNoError.Double b) internal pure
returns(uint256)

Arguments

mul_

function mul_(uint256 a, uint256 b) internal pure
returns(uint256)

Arguments

mul_

function mul_(uint256 a, uint256 b, string errorMessage) internal pure
returns(uint256)

Arguments

div_

function div_(struct ExponentialNoError.Exp a, struct ExponentialNoError.Exp b) internal pure
returns(struct ExponentialNoError.Exp)

Arguments

div_

function div_(struct ExponentialNoError.Exp a, uint256 b) internal pure
returns(struct ExponentialNoError.Exp)

Arguments

div_

function div_(uint256 a, struct ExponentialNoError.Exp b) internal pure
returns(uint256)

Arguments

div_

function div_(struct ExponentialNoError.Double a, struct ExponentialNoError.Double b) internal pure
returns(struct ExponentialNoError.Double)

Arguments

div_

function div_(struct ExponentialNoError.Double a, uint256 b) internal pure
returns(struct ExponentialNoError.Double)

Arguments

div_

function div_(uint256 a, struct ExponentialNoError.Double b) internal pure
returns(uint256)

Arguments

div_

function div_(uint256 a, uint256 b) internal pure
returns(uint256)

Arguments

div_

function div_(uint256 a, uint256 b, string errorMessage) internal pure
returns(uint256)

Arguments

fraction

function fraction(uint256 a, uint256 b) internal pure
returns(struct ExponentialNoError.Double)

Arguments

Last updated