bigint: Add modulus bit length to Modulus
.
This commit is contained in:
parent
5ed0a45c65
commit
cbcac26d00
@ -45,7 +45,7 @@ use super::n0::N0;
|
||||
pub(crate) use super::nonnegative::Nonnegative;
|
||||
use crate::{
|
||||
arithmetic::montgomery::*,
|
||||
bits, c, cpu, error,
|
||||
c, cpu, error,
|
||||
limb::{self, Limb, LimbMask, LIMB_BITS},
|
||||
polyfill::u64_from_usize,
|
||||
};
|
||||
@ -305,8 +305,8 @@ impl<M> One<M, RR> {
|
||||
// values, using `LIMB_BITS` here, rather than `N0::LIMBS_USED * LIMB_BITS`,
|
||||
// is correct because R**2 will still be a multiple of the latter as
|
||||
// `N0::LIMBS_USED` is either one or two.
|
||||
fn newRR(m: &Modulus<M>, m_bits: bits::BitLength) -> Self {
|
||||
let m_bits = m_bits.as_usize_bits();
|
||||
fn newRR(m: &Modulus<M>) -> Self {
|
||||
let m_bits = m.len_bits().as_usize_bits();
|
||||
let r = (m_bits + (LIMB_BITS - 1)) / LIMB_BITS * LIMB_BITS;
|
||||
|
||||
// base = 2**(lg m - 1).
|
||||
|
@ -179,11 +179,12 @@ impl<M> OwnedModulusWithOne<M> {
|
||||
let partial = Modulus {
|
||||
limbs: &n,
|
||||
n0: n0.clone(),
|
||||
len_bits,
|
||||
m: PhantomData,
|
||||
cpu_features,
|
||||
};
|
||||
|
||||
One::newRR(&partial, len_bits)
|
||||
One::newRR(&partial)
|
||||
};
|
||||
|
||||
Ok(Self {
|
||||
@ -214,6 +215,7 @@ impl<M> OwnedModulusWithOne<M> {
|
||||
Modulus {
|
||||
limbs: &self.limbs,
|
||||
n0: self.n0.clone(),
|
||||
len_bits: self.len_bits,
|
||||
m: PhantomData,
|
||||
cpu_features: self.cpu_features,
|
||||
}
|
||||
@ -233,6 +235,7 @@ impl<M: PublicModulus> OwnedModulusWithOne<M> {
|
||||
pub struct Modulus<'a, M> {
|
||||
limbs: &'a [Limb],
|
||||
n0: N0,
|
||||
len_bits: BitLength,
|
||||
m: PhantomData<M>,
|
||||
cpu_features: cpu::Features,
|
||||
}
|
||||
@ -263,6 +266,10 @@ impl<M> Modulus<'_, M> {
|
||||
&self.n0
|
||||
}
|
||||
|
||||
pub fn len_bits(&self) -> BitLength {
|
||||
self.len_bits
|
||||
}
|
||||
|
||||
#[inline]
|
||||
pub(crate) fn cpu_features(&self) -> cpu::Features {
|
||||
self.cpu_features
|
||||
|
Loading…
x
Reference in New Issue
Block a user