pub struct FixedTrinomialSolinas32<const P1: u8, const P2: u8, const K: i32>();Expand description
A modular reducer for trinomial Solinas numbers 2^P1 - 2^P2 + K as modulus with 32-bit operands.
Supports P1 up to 31, P2 < P1, and odd signed K with |K| < 2^P2. All inputs and outputs are u32.
The modulus 2^P1 - 2^P2 + K must be prime for modular inverse and Fermat-based operations to be valid.
§Example
use num_modular::{FixedTrinomialSolinas32, Reducer};
const P1: u8 = 4;
const P2: u8 = 2;
const K: i32 = 1;
let modulus = (1u32 << P1) - (1u32 << P2) + (K as u32); // 2^4 - 2^2 + 1 = 13
let reducer = FixedTrinomialSolinas32::<P1, P2, K>::new(&modulus);
let a = reducer.transform(3);
let b = reducer.transform(5);
assert_eq!(reducer.residue(reducer.add(&a, &b)), 8);Implementations§
Trait Implementations§
Source§impl<const P1: u8, const P2: u8, const K: i32> Clone for FixedTrinomialSolinas32<P1, P2, K>
impl<const P1: u8, const P2: u8, const K: i32> Clone for FixedTrinomialSolinas32<P1, P2, K>
Source§fn clone(&self) -> FixedTrinomialSolinas32<P1, P2, K>
fn clone(&self) -> FixedTrinomialSolinas32<P1, P2, K>
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreimpl<const P1: u8, const P2: u8, const K: i32> Copy for FixedTrinomialSolinas32<P1, P2, K>
Source§impl<const P1: u8, const P2: u8, const K: i32> Reducer<u32> for FixedTrinomialSolinas32<P1, P2, K>
impl<const P1: u8, const P2: u8, const K: i32> Reducer<u32> for FixedTrinomialSolinas32<P1, P2, K>
Auto Trait Implementations§
impl<const P1: u8, const P2: u8, const K: i32> Freeze for FixedTrinomialSolinas32<P1, P2, K>
impl<const P1: u8, const P2: u8, const K: i32> RefUnwindSafe for FixedTrinomialSolinas32<P1, P2, K>
impl<const P1: u8, const P2: u8, const K: i32> Send for FixedTrinomialSolinas32<P1, P2, K>
impl<const P1: u8, const P2: u8, const K: i32> Sync for FixedTrinomialSolinas32<P1, P2, K>
impl<const P1: u8, const P2: u8, const K: i32> Unpin for FixedTrinomialSolinas32<P1, P2, K>
impl<const P1: u8, const P2: u8, const K: i32> UnsafeUnpin for FixedTrinomialSolinas32<P1, P2, K>
impl<const P1: u8, const P2: u8, const K: i32> UnwindSafe for FixedTrinomialSolinas32<P1, P2, K>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more