Skip to main content

RnsContext

Struct RnsContext 

Source
pub struct RnsContext {
    pub moduli: Vec<u64>,
    pub ariths: Vec<Ntt64Arith>,
    pub ntt_ctxs: Vec<Ntt64Context>,
    pub poly_degree: usize,
}
Expand description

RNS context: a set of coprime moduli.

Precomputes modular arithmetic and NTT contexts for each modulus, enabling efficient component-wise polynomial operations.

Fields§

§moduli: Vec<u64>

The moduli q₁, q₂, …, q_L.

§ariths: Vec<Ntt64Arith>

Modular arithmetic contexts for each modulus (Barrett, Montgomery).

§ntt_ctxs: Vec<Ntt64Context>

NTT contexts for each modulus.

§poly_degree: usize

Polynomial degree N.

Implementations§

Source§

impl RnsContext

Source

pub fn new(poly_degree: usize, moduli: Vec<u64>) -> Self

Creates an RNS context with the given moduli.

Precomputes all modular arithmetic and NTT contexts. Each modulus must be NTT-friendly for the given polynomial degree.

§Panics
  • If poly_degree is not a power of 2
  • If moduli is empty
  • If any modulus is not NTT-friendly for the given degree
Source

pub fn num_moduli(&self) -> usize

Number of moduli (= total number of levels).

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.