ArithUtils

Trait ArithUtils 

Source
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§

Source

fn new_modulus(a: u64) -> T

Construct a new “modulus”, which is a u64 plus information needed for fast modular reduction.

Source

fn modulus(a: &T, q: &T) -> T

Source

fn double(a: &T) -> T

Source

fn sample_blw(bound: &T) -> T

Source

fn sample_below_from_rng(bound: &T, rng: &mut dyn Rng) -> T

Source

fn add_mod(a: &T, b: &T, q: &T) -> T

Source

fn sub_mod(a: &T, b: &T, q: &T) -> T

Source

fn mul_mod(a: &T, b: &T, q: &T) -> T

Source

fn inv_mod(a: &T, q: &T) -> T

Source

fn from_u32(a: u32, q: &T) -> T

Source

fn pow_mod(a: &T, b: &T, c: &T) -> T

Source

fn add(a: &T, b: &T) -> T

Source

fn sub(a: &T, b: &T) -> T

Source

fn div(a: &T, b: &T) -> T

Source

fn mul(a: &T, b: &T) -> T

Source

fn from_u32_raw(a: u32) -> T

Source

fn from_u64_raw(a: u64) -> T

Source

fn to_u64(a: &T) -> u64

Provided Methods§

Source

fn one() -> T

Source

fn zero() -> T

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.

Implementors§