Module polkadot_sdk_frame::arithmetic
source · Expand description
The arithmetic types used for safe math.
Modules§
- Infinite precision unsigned integer for substrate runtime.
- 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: - 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.
- 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: - Primitive traits for the runtime arithmetic.
Macros§
- Copied from
sp-runtime
and documented there.
Structs§
- A fixed point number representation in the range. Fixed Point 64 bits signed, range = [-9223372036.854775808, 9223372036.854775807]
- A fixed point number representation in the range. Fixed Point 128 bits signed, range = [-170141183460469231731.687303715884105728, 170141183460469231731.687303715884105727]
- A fixed point number representation in the range. Fixed Point 64 bits unsigned, range = [0.000000000, 18446744073.709551615]
- A fixed point number representation in the range. Fixed Point 128 bits unsigned, range = [0.000000000000000000, 340282366920938463463.374607431768211455]
- A fixed point representation of a number in the range [0, 1].
- A fixed point representation of a number in the range [0, 1].
- A fixed point representation of a number in the range [0, 1].
- A fixed point representation of a number in the range [0, 1].
- A fixed point representation of a number in the range [0, 1].
- A wrapper for any rational number with a 128 bit numerator and denominator.
- A wrapper for any rational number with infinitely large numerator and denominator.
Enums§
- Arithmetic errors.
- The rounding method to use for unsigned quantities.
- The rounding method to use.
Traits§
- A meta trait for arithmetic.
- A meta trait for arithmetic. Same as
AtLeast8Bit
, but also bounded to be unsigned. - A meta trait for arithmetic.
- A meta trait for arithmetic. Same as
AtLeast16Bit
, but also bounded to be unsigned. - A meta trait for arithmetic.
- A meta trait for arithmetic. Same as
AtLeast32Bit
, but also bounded to be unsigned. - A meta trait for arithmetic type operations, regardless of any limitation on size.
- Numbers which have upper and lower bounds
- Performs addition that returns
None
instead of wrapping around on overflow. - Performs division that returns
None
instead of panicking on division by zero and instead of wrapping around on underflow and overflow. - Performs multiplication that returns
None
instead of wrapping around on underflow or overflow. - Performs negation that returns
None
if the result can’t be represented. - Performs an integral remainder that returns
None
instead of panicking on division by zero and instead of wrapping around on underflow and overflow. - Performs a left shift that returns
None
on shifts larger than or equal to the type width. - Performs a right shift that returns
None
on shifts larger than or equal to the type width. - Performs subtraction that returns
None
instead of wrapping around on underflow. - Performs addition that returns
ArithmeticError
instead of wrapping around on overflow. - Performs self addition that returns
ArithmeticError
instead of wrapping around on overflow. - Performs division that returns
ArithmeticError
instead of wrapping around on overflow. - Performs self division that returns
ArithmeticError
instead of wrapping around on overflow. - Extends
FixedPointNumber
with the Ensure family functions. - Similar to
TryFrom
but returning anArithmeticError
error. - Similar to
TryInto
but returning anArithmeticError
error. - Performs multiplication that returns
ArithmeticError
instead of wrapping around on overflow. - Performs self multiplication that returns
ArithmeticError
instead of wrapping around on overflow. - Meta trait that supports all immutable arithmetic
Ensure*
operations - Meta trait that supports all assigned arithmetic
Ensure*
operations - Performs subtraction that returns
ArithmeticError
instead of wrapping around on underflow. - Performs self subtraction that returns
ArithmeticError
instead of wrapping around on underflow. - Something that implements a decimal fixed point number.
- Integer types that can be used to interact with
FixedPointNumber
implementations. - A trait implementing integer square root.
- A collection-like object that is made of values of type
T
and can normalize its individual values around a centric point. - Defines a multiplicative identity element for
Self
. - Something that implements a fixed point ration with an arbitrary granularity
X
, as parts perX
. - Convenience type to work around the highly unergonomic syntax needed to invoke the functions of overloaded generic traits, in this case
SaturatedFrom
andSaturatedInto
. - Saturating arithmetic operations, returning maximum or minimum values instead of overflowing.
- Useful functions for signed numbers (i.e. numbers that can be negative).
- Trait for comparing two numbers with an threshold.
- Just like
From
except that if the source value is too big to fit into the destination type then it’ll saturate the destination. - Just like
Into
except that if the source value is too big to fit into the destination type then it’ll saturate the destination. - A trait for values which cannot be negative
- Defines an additive identity element for
Self
.
Functions§
- Raises a value to the power of exp, returning
None
if an overflow occurred. - Raises a value to the power of exp, returning
ArithmeticError
if an overflow occurred. - Normalize
input
so that the sum of all elements reachestargeted_sum
.
Type Aliases§
- Get the inner type of a
PerThing
. - Get the upper type of a
PerThing
.