Crate num_modular
source · [−]Expand description
This crate provides efficient Modular arithmetic operations for various integer types,
including primitive integers and num-bigint
. The latter option is enabled optionally.
To achieve fast modular arithmetics, convert integers to any ModularInteger implementation
use static new()
or associated ModularInteger::convert() functions. Some builtin implementations
of ModularInteger includes MontgomeryInt and MersenneInt.
Example code:
use num_modular::{ModularCoreOps, ModularInteger, MontgomeryInt};
// directly using methods in ModularCoreOps
let (x, y, m) = (12u8, 13u8, 5u8);
assert_eq!(x.mulm(y, &m), x * y % m);
// convert integers into ModularInteger
let mx = MontgomeryInt::new(x, m);
let my = mx.convert(y); // faster than static MontgomeryInt::new(y, m)
assert_eq!((mx * my).residue(), x * y % m);
Structs
An unsigned integer modulo (pseudo) Mersenne primes 2^P - K
, it supports P up to 127 and K < 2^(P-1)
An integer represented in Montgomery form.
Traits
Provides a utility function to convert signed integers into unsigned modular form
Core modular arithmetic operations.
Represents an number defined in a modulo ring ℤ/nℤ
Collection of common modular arithmetic operations
Modular power functions
Math symbols related to modular arithmetics
Core unary modular arithmetics
Operations of a integer represented in Montgomery form. This data type can be used in place of a normal integer with regard to modular arithmetics.