referrerpolicy=no-referrer-when-downgrade

Module arithmetic

Source
Expand description

The arithmetic types used for safe math.

This is already part of the main prelude.

Modules§

biguint
Infinite precision unsigned integer for substrate runtime.
fixed_point
Decimal Fixed Point implementations for Substrate runtime. Similar to types that implement PerThing, these are also fixed-point types, however, they are able to represent larger fractions:
helpers_128bit
Some helper functions to work with 128bit numbers. Note that the functionality provided here is only sensible to use with 128bit numbers because for smaller sizes, you can always rely on assumptions of a bigger type (u128) being available, or simply create a per-thing and use the multiplication implementation provided there.
per_things
Types that implement PerThing can be used as a floating-point alternative for numbers that operate within the realm of [0, 1]. The primary types may you encounter in Substrate would be the following:
rational
traits
Primitive traits for the runtime arithmetic.

Macros§

assert_eq_error_rate
Copied from sp-runtime and documented there.

Structs§

FixedI64
A fixed point number representation in the range. Fixed Point 64 bits signed, range = [-9223372036.854775808, 9223372036.854775807]
FixedI128
A fixed point number representation in the range. Fixed Point 128 bits signed, range = [-170141183460469231731.687303715884105728, 170141183460469231731.687303715884105727]
FixedU64
A fixed point number representation in the range. Fixed Point 64 bits unsigned, range = [0.000000000, 18446744073.709551615]
FixedU128
A fixed point number representation in the range. Fixed Point 128 bits unsigned, range = [0.000000000000000000, 340282366920938463463.374607431768211455]
PerU16
A fixed point representation of a number in the range [0, 1].
Perbill
A fixed point representation of a number in the range [0, 1].
Percent
A fixed point representation of a number in the range [0, 1].
Permill
A fixed point representation of a number in the range [0, 1].
Perquintill
A fixed point representation of a number in the range [0, 1].
Rational128
A wrapper for any rational number with a 128 bit numerator and denominator.
RationalInfinite
A wrapper for any rational number with infinitely large numerator and denominator.

Enums§

ArithmeticError
Arithmetic errors.
Rounding
The rounding method to use for unsigned quantities.
SignedRounding
The rounding method to use.

Traits§

AtLeast8Bit
A meta trait for arithmetic.
AtLeast8BitUnsigned
A meta trait for arithmetic. Same as AtLeast8Bit, but also bounded to be unsigned.
AtLeast16Bit
A meta trait for arithmetic.
AtLeast16BitUnsigned
A meta trait for arithmetic. Same as AtLeast16Bit, but also bounded to be unsigned.
AtLeast32Bit
A meta trait for arithmetic.
AtLeast32BitUnsigned
A meta trait for arithmetic. Same as AtLeast32Bit, but also bounded to be unsigned.
BaseArithmetic
A meta trait for arithmetic type operations, regardless of any limitation on size.
Bounded
Numbers which have upper and lower bounds
CheckedAdd
Performs addition that returns None instead of wrapping around on overflow.
CheckedDiv
Performs division that returns None instead of panicking on division by zero and instead of wrapping around on underflow and overflow.
CheckedMul
Performs multiplication that returns None instead of wrapping around on underflow or overflow.
CheckedNeg
Performs negation that returns None if the result can’t be represented.
CheckedRem
Performs an integral remainder that returns None instead of panicking on division by zero and instead of wrapping around on underflow and overflow.
CheckedShl
Performs a left shift that returns None on shifts larger than or equal to the type width.
CheckedShr
Performs a right shift that returns None on shifts larger than or equal to the type width.
CheckedSub
Performs subtraction that returns None instead of wrapping around on underflow.
Ensure
EnsureAdd
Performs addition that returns ArithmeticError instead of wrapping around on overflow.
EnsureAddAssign
Performs self addition that returns ArithmeticError instead of wrapping around on overflow.
EnsureDiv
Performs division that returns ArithmeticError instead of wrapping around on overflow.
EnsureDivAssign
Performs self division that returns ArithmeticError instead of wrapping around on overflow.
EnsureFixedPointNumber
Extends FixedPointNumber with the Ensure family functions.
EnsureFrom
Similar to TryFrom but returning an ArithmeticError error.
EnsureInto
Similar to TryInto but returning an ArithmeticError error.
EnsureMul
Performs multiplication that returns ArithmeticError instead of wrapping around on overflow.
EnsureMulAssign
Performs self multiplication that returns ArithmeticError instead of wrapping around on overflow.
EnsureOp
Meta trait that supports all immutable arithmetic Ensure* operations
EnsureOpAssign
Meta trait that supports all assigned arithmetic Ensure* operations
EnsureSub
Performs subtraction that returns ArithmeticError instead of wrapping around on underflow.
EnsureSubAssign
Performs self subtraction that returns ArithmeticError instead of wrapping around on underflow.
FixedPointNumber
Something that implements a decimal fixed point number.
FixedPointOperand
Integer types that can be used to interact with FixedPointNumber implementations.
IntegerSquareRoot
A trait implementing integer square root.
MultiplyArg
MultiplyRational
Normalizable
A collection-like object that is made of values of type T and can normalize its individual values around a centric point.
One
Defines a multiplicative identity element for Self.
PerThing
Something that implements a fixed point ration with an arbitrary granularity X, as parts per X.
RationalArg
ReciprocalArg
SaturatedConversion
Convenience type to work around the highly unergonomic syntax needed to invoke the functions of overloaded generic traits, in this case SaturatedFrom and SaturatedInto.
Saturating
Saturating arithmetic operations, returning maximum or minimum values instead of overflowing.
Signed
Useful functions for signed numbers (i.e. numbers that can be negative).
ThresholdOrd
Trait for comparing two numbers with an threshold.
UniqueSaturatedFrom
Just like From except that if the source value is too big to fit into the destination type then it’ll saturate the destination.
UniqueSaturatedInto
Just like Into except that if the source value is too big to fit into the destination type then it’ll saturate the destination.
Unsigned
A trait for values which cannot be negative
Zero
Defines an additive identity element for Self.

Functions§

checked_pow
Raises a value to the power of exp, returning None if an overflow occurred.
ensure_pow
Raises a value to the power of exp, returning ArithmeticError if an overflow occurred.
normalize
Normalize input so that the sum of all elements reaches targeted_sum.

Type Aliases§

InnerOf
Get the inner type of a PerThing.
UpperOf
Get the upper type of a PerThing.