pub trait ArithUtils<T> {
Show 20 methods
// Required methods
fn new_modulus(a: u64) -> T;
fn modulus(a: &T, q: &T) -> T;
fn double(a: &T) -> T;
fn sample_blw(bound: &T) -> T;
fn sample_below_from_rng(bound: &T, rng: &mut dyn Rng) -> T;
fn add_mod(a: &T, b: &T, q: &T) -> T;
fn sub_mod(a: &T, b: &T, q: &T) -> T;
fn mul_mod(a: &T, b: &T, q: &T) -> T;
fn inv_mod(a: &T, q: &T) -> T;
fn from_u32(a: u32, q: &T) -> T;
fn pow_mod(a: &T, b: &T, c: &T) -> T;
fn add(a: &T, b: &T) -> T;
fn sub(a: &T, b: &T) -> T;
fn div(a: &T, b: &T) -> T;
fn mul(a: &T, b: &T) -> T;
fn from_u32_raw(a: u32) -> T;
fn from_u64_raw(a: u64) -> T;
fn to_u64(a: &T) -> u64;
// Provided methods
fn one() -> T { ... }
fn zero() -> T { ... }
}Expand description
The trait for utility functions related to scalar-like types.
Required Methods§
Sourcefn new_modulus(a: u64) -> T
fn new_modulus(a: u64) -> T
Construct a new “modulus”, which is a u64 plus information needed for fast modular reduction.
fn modulus(a: &T, q: &T) -> T
fn double(a: &T) -> T
fn sample_blw(bound: &T) -> T
fn sample_below_from_rng(bound: &T, rng: &mut dyn Rng) -> T
fn add_mod(a: &T, b: &T, q: &T) -> T
fn sub_mod(a: &T, b: &T, q: &T) -> T
fn mul_mod(a: &T, b: &T, q: &T) -> T
fn inv_mod(a: &T, q: &T) -> T
fn from_u32(a: u32, q: &T) -> T
fn pow_mod(a: &T, b: &T, c: &T) -> T
fn add(a: &T, b: &T) -> T
fn sub(a: &T, b: &T) -> T
fn div(a: &T, b: &T) -> T
fn mul(a: &T, b: &T) -> T
fn from_u32_raw(a: u32) -> T
fn from_u64_raw(a: u64) -> T
fn to_u64(a: &T) -> u64
Provided Methods§
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.