ExponentialNoError

Git Source

Author: Compound

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}).

State Variables

expScale

uint256 constant expScale = 1e18;

doubleScale

uint256 constant doubleScale = 1e36;

halfExpScale

uint256 constant halfExpScale = expScale / 2;

mantissaOne

uint256 constant mantissaOne = expScale;

Functions

truncate

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

function truncate(Exp memory exp) internal pure returns (uint256);

mul_ScalarTruncate

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

function mul_ScalarTruncate(Exp memory a, uint256 scalar) internal pure returns (uint256);

mul_ScalarTruncateAddUInt

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

function mul_ScalarTruncateAddUInt(Exp memory a, uint256 scalar, uint256 addend) internal pure returns (uint256);

lessThanExp

Checks if first Exp is less than second Exp.

function lessThanExp(Exp memory left, Exp memory right) internal pure returns (bool);

lessThanOrEqualExp

Checks if left Exp <= right Exp.

function lessThanOrEqualExp(Exp memory left, Exp memory right) internal pure returns (bool);

greaterThanExp

Checks if left Exp > right Exp.

function greaterThanExp(Exp memory left, Exp memory right) internal pure returns (bool);

isZeroExp

returns true if Exp is exactly zero

function isZeroExp(Exp memory value) internal pure returns (bool);

safe224

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

safe32

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

add_

function add_(Exp memory a, Exp memory b) internal pure returns (Exp memory);

add_

function add_(Double memory a, Double memory b) internal pure returns (Double memory);

add_

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

sub_

function sub_(Exp memory a, Exp memory b) internal pure returns (Exp memory);

sub_

function sub_(Double memory a, Double memory b) internal pure returns (Double memory);

sub_

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

mul_

function mul_(Exp memory a, Exp memory b) internal pure returns (Exp memory);

mul_

function mul_(Exp memory a, uint256 b) internal pure returns (Exp memory);

mul_

function mul_(uint256 a, Exp memory b) internal pure returns (uint256);

mul_

function mul_(Double memory a, Double memory b) internal pure returns (Double memory);

mul_

function mul_(Double memory a, uint256 b) internal pure returns (Double memory);

mul_

function mul_(uint256 a, Double memory b) internal pure returns (uint256);

mul_

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

div_

function div_(Exp memory a, Exp memory b) internal pure returns (Exp memory);

div_

function div_(Exp memory a, uint256 b) internal pure returns (Exp memory);

div_

function div_(uint256 a, Exp memory b) internal pure returns (uint256);

div_

function div_(Double memory a, Double memory b) internal pure returns (Double memory);

div_

function div_(Double memory a, uint256 b) internal pure returns (Double memory);

div_

function div_(uint256 a, Double memory b) internal pure returns (uint256);

div_

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

fraction

function fraction(uint256 a, uint256 b) internal pure returns (Double memory);

Structs

Exp

struct Exp {
    uint256 mantissa;
}

Double

struct Double {
    uint256 mantissa;
}