Skip to content

Commit

Permalink
Use a larger poly size in the unit tests (#235)
Browse files Browse the repository at this point in the history
* change small polysize to 16

* change small polysize from 8 to a larger value

* remove temporary file

* fmt

---------

Co-authored-by: juhou.lwj <[email protected]>
  • Loading branch information
fionser and juhou.lwj authored Jan 15, 2024
1 parent aef039d commit 2e2c3c2
Show file tree
Hide file tree
Showing 25 changed files with 213 additions and 204 deletions.
6 changes: 3 additions & 3 deletions crates/fhe-math/src/ntt/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ mod tests {

#[test]
fn constructor() {
for size in [8, 1024] {
for size in [32, 1024] {
for p in [1153, 4611686018326724609] {
let q = Modulus::new(p).unwrap();
let supports_ntt = supports_ntt(p, size);
Expand All @@ -45,7 +45,7 @@ mod tests {
let ntests = 100;
let mut rng = thread_rng();

for size in [8, 1024] {
for size in [32, 1024] {
for p in [1153, 4611686018326724609] {
let q = Modulus::new(p).unwrap();

Expand Down Expand Up @@ -79,7 +79,7 @@ mod tests {
let ntests = 100;
let mut rng = thread_rng();

for size in [8, 1024] {
for size in [32, 1024] {
for p in [1153, 4611686018326724609] {
let q = Modulus::new(p).unwrap();

Expand Down
14 changes: 7 additions & 7 deletions crates/fhe-math/src/rq/context.rs
Original file line number Diff line number Diff line change
Expand Up @@ -172,7 +172,7 @@ mod tests {
fn context_constructor() {
for modulus in MODULI {
// modulus is = 1 modulo 2 * 8
assert!(Context::new(&[*modulus], 8).is_ok());
assert!(Context::new(&[*modulus], 16).is_ok());

if supports_ntt(*modulus, 128) {
assert!(Context::new(&[*modulus], 128).is_ok());
Expand All @@ -182,7 +182,7 @@ mod tests {
}

// All moduli in MODULI are = 1 modulo 2 * 8
assert!(Context::new(MODULI, 8).is_ok());
assert!(Context::new(MODULI, 16).is_ok());

// This should fail since 1153 != 1 moduli 2 * 128
assert!(Context::new(MODULI, 128).is_err());
Expand All @@ -191,10 +191,10 @@ mod tests {
#[test]
fn next_context() -> Result<(), Box<dyn Error>> {
// A context should have a children pointing to a context with one less modulus.
let context = Arc::new(Context::new(MODULI, 8)?);
let context = Arc::new(Context::new(MODULI, 16)?);
assert_eq!(
context.next_context,
Some(Arc::new(Context::new(&MODULI[..MODULI.len() - 1], 8)?))
Some(Arc::new(Context::new(&MODULI[..MODULI.len() - 1], 16)?))
);

// We can go down the chain of the MODULI.len() - 1 context's.
Expand All @@ -212,21 +212,21 @@ mod tests {
#[test]
fn niterations_to() -> Result<(), Box<dyn Error>> {
// A context should have a children pointing to a context with one less modulus.
let context = Arc::new(Context::new(MODULI, 8)?);
let context = Arc::new(Context::new(MODULI, 16)?);

assert_eq!(context.niterations_to(&context).ok(), Some(0));

assert_eq!(
context
.niterations_to(&Arc::new(Context::new(&MODULI[1..], 8)?))
.niterations_to(&Arc::new(Context::new(&MODULI[1..], 16)?))
.err(),
Some(crate::Error::InvalidContext)
);

for i in 1..MODULI.len() {
assert_eq!(
context
.niterations_to(&Arc::new(Context::new(&MODULI[..MODULI.len() - i], 8)?))
.niterations_to(&Arc::new(Context::new(&MODULI[..MODULI.len() - i], 16)?))
.ok(),
Some(i)
);
Expand Down
62 changes: 31 additions & 31 deletions crates/fhe-math/src/rq/convert.rs
Original file line number Diff line number Diff line change
Expand Up @@ -439,7 +439,7 @@ mod tests {
fn proto() -> Result<(), Box<dyn Error>> {
let mut rng = thread_rng();
for modulus in MODULI {
let ctx = Arc::new(Context::new(&[*modulus], 8)?);
let ctx = Arc::new(Context::new(&[*modulus], 16)?);
let p = Poly::random(&ctx, Representation::PowerBasis, &mut rng);
let proto = Rq::from(&p);
assert_eq!(Poly::try_convert_from(&proto, &ctx, false, None)?, p);
Expand All @@ -459,7 +459,7 @@ mod tests {
);
}

let ctx = Arc::new(Context::new(MODULI, 8)?);
let ctx = Arc::new(Context::new(MODULI, 16)?);
let p = Poly::random(&ctx, Representation::PowerBasis, &mut rng);
let proto = Rq::from(&p);
assert_eq!(Poly::try_convert_from(&proto, &ctx, false, None)?, p);
Expand All @@ -478,7 +478,7 @@ mod tests {
CrateError::Default("The representation asked for does not match the representation in the serialization".to_string())
);

let ctx = Arc::new(Context::new(&MODULI[0..1], 8)?);
let ctx = Arc::new(Context::new(&MODULI[0..1], 16)?);
assert_eq!(
Poly::try_convert_from(&proto, &ctx, false, None)
.expect_err("Should fail because of incorrect context"),
Expand All @@ -491,7 +491,7 @@ mod tests {
#[test]
fn try_convert_from_slice_zero() -> Result<(), Box<dyn Error>> {
for modulus in MODULI {
let ctx = Arc::new(Context::new(&[*modulus], 8)?);
let ctx = Arc::new(Context::new(&[*modulus], 16)?);

// Power Basis
assert_eq!(
Expand All @@ -503,15 +503,15 @@ mod tests {
Poly::zero(&ctx, Representation::PowerBasis)
);
assert_eq!(
Poly::try_convert_from(&[0u64; 8], &ctx, false, Representation::PowerBasis)?,
Poly::try_convert_from(&[0u64; 16], &ctx, false, Representation::PowerBasis)?,
Poly::zero(&ctx, Representation::PowerBasis)
);
assert_eq!(
Poly::try_convert_from(&[0i64; 8], &ctx, false, Representation::PowerBasis)?,
Poly::try_convert_from(&[0i64; 16], &ctx, false, Representation::PowerBasis)?,
Poly::zero(&ctx, Representation::PowerBasis)
);
assert!(Poly::try_convert_from(
&[0u64; 9], // One too many
&[0u64; 17], // One too many
&ctx,
false,
Representation::PowerBasis,
Expand All @@ -522,20 +522,20 @@ mod tests {
assert!(Poly::try_convert_from(&[0u64], &ctx, false, Representation::Ntt).is_err());
assert!(Poly::try_convert_from(&[0i64], &ctx, false, Representation::Ntt).is_err());
assert_eq!(
Poly::try_convert_from(&[0u64; 8], &ctx, false, Representation::Ntt)?,
Poly::try_convert_from(&[0u64; 16], &ctx, false, Representation::Ntt)?,
Poly::zero(&ctx, Representation::Ntt)
);
assert!(Poly::try_convert_from(&[0i64; 8], &ctx, false, Representation::Ntt).is_err());
assert!(Poly::try_convert_from(&[0i64; 16], &ctx, false, Representation::Ntt).is_err());
assert!(Poly::try_convert_from(
&[0u64; 9], // One too many
&[0u64; 17], // One too many
&ctx,
false,
Representation::Ntt,
)
.is_err());
}

let ctx = Arc::new(Context::new(MODULI, 8)?);
let ctx = Arc::new(Context::new(MODULI, 16)?);
assert_eq!(
Poly::try_convert_from(
Vec::<u64>::default(),
Expand All @@ -557,22 +557,22 @@ mod tests {
assert!(Poly::try_convert_from(&[0u64], &ctx, false, Representation::Ntt).is_err());

assert_eq!(
Poly::try_convert_from(&[0u64; 8], &ctx, false, Representation::PowerBasis)?,
Poly::try_convert_from(&[0u64; 16], &ctx, false, Representation::PowerBasis)?,
Poly::zero(&ctx, Representation::PowerBasis)
);
assert!(Poly::try_convert_from(&[0u64; 8], &ctx, false, Representation::Ntt).is_err());
assert!(Poly::try_convert_from(&[0u64; 16], &ctx, false, Representation::Ntt).is_err());

assert!(
Poly::try_convert_from(&[0u64; 9], &ctx, false, Representation::PowerBasis).is_err()
Poly::try_convert_from(&[0u64; 17], &ctx, false, Representation::PowerBasis).is_err()
);
assert!(Poly::try_convert_from(&[0u64; 9], &ctx, false, Representation::Ntt).is_err());
assert!(Poly::try_convert_from(&[0u64; 17], &ctx, false, Representation::Ntt).is_err());

assert_eq!(
Poly::try_convert_from(&[0u64; 24], &ctx, false, Representation::PowerBasis)?,
Poly::try_convert_from(&[0u64; 16], &ctx, false, Representation::PowerBasis)?,
Poly::zero(&ctx, Representation::PowerBasis)
);
assert_eq!(
Poly::try_convert_from(&[0u64; 24], &ctx, false, Representation::Ntt)?,
Poly::try_convert_from(&[0u64; 48], &ctx, false, Representation::Ntt)?,
Poly::zero(&ctx, Representation::Ntt)
);

Expand All @@ -582,7 +582,7 @@ mod tests {
#[test]
fn try_convert_from_vec_zero() -> Result<(), Box<dyn Error>> {
for modulus in MODULI {
let ctx = Arc::new(Context::new(&[*modulus], 8)?);
let ctx = Arc::new(Context::new(&[*modulus], 16)?);
assert_eq!(
Poly::try_convert_from(vec![], &ctx, false, Representation::PowerBasis)?,
Poly::zero(&ctx, Representation::PowerBasis)
Expand All @@ -596,22 +596,22 @@ mod tests {
assert!(Poly::try_convert_from(vec![0], &ctx, false, Representation::Ntt).is_err());

assert_eq!(
Poly::try_convert_from(vec![0; 8], &ctx, false, Representation::PowerBasis)?,
Poly::try_convert_from(vec![0; 16], &ctx, false, Representation::PowerBasis)?,
Poly::zero(&ctx, Representation::PowerBasis)
);
assert_eq!(
Poly::try_convert_from(vec![0; 8], &ctx, false, Representation::Ntt)?,
Poly::try_convert_from(vec![0; 16], &ctx, false, Representation::Ntt)?,
Poly::zero(&ctx, Representation::Ntt)
);

assert!(
Poly::try_convert_from(vec![0; 9], &ctx, false, Representation::PowerBasis)
Poly::try_convert_from(vec![0; 17], &ctx, false, Representation::PowerBasis)
.is_err()
);
assert!(Poly::try_convert_from(vec![0; 9], &ctx, false, Representation::Ntt).is_err());
assert!(Poly::try_convert_from(vec![0; 17], &ctx, false, Representation::Ntt).is_err());
}

let ctx = Arc::new(Context::new(MODULI, 8)?);
let ctx = Arc::new(Context::new(MODULI, 16)?);
assert_eq!(
Poly::try_convert_from(vec![], &ctx, false, Representation::PowerBasis)?,
Poly::zero(&ctx, Representation::PowerBasis)
Expand All @@ -625,22 +625,22 @@ mod tests {
assert!(Poly::try_convert_from(vec![0], &ctx, false, Representation::Ntt).is_err());

assert_eq!(
Poly::try_convert_from(vec![0; 8], &ctx, false, Representation::PowerBasis)?,
Poly::try_convert_from(vec![0; 16], &ctx, false, Representation::PowerBasis)?,
Poly::zero(&ctx, Representation::PowerBasis)
);
assert!(Poly::try_convert_from(vec![0; 8], &ctx, false, Representation::Ntt).is_err());
assert!(Poly::try_convert_from(vec![0; 16], &ctx, false, Representation::Ntt).is_err());

assert!(
Poly::try_convert_from(vec![0; 9], &ctx, false, Representation::PowerBasis).is_err()
Poly::try_convert_from(vec![0; 17], &ctx, false, Representation::PowerBasis).is_err()
);
assert!(Poly::try_convert_from(vec![0; 9], &ctx, false, Representation::Ntt).is_err());
assert!(Poly::try_convert_from(vec![0; 17], &ctx, false, Representation::Ntt).is_err());

assert_eq!(
Poly::try_convert_from(vec![0; 24], &ctx, false, Representation::PowerBasis)?,
Poly::try_convert_from(vec![0; 48], &ctx, false, Representation::PowerBasis)?,
Poly::zero(&ctx, Representation::PowerBasis)
);
assert_eq!(
Poly::try_convert_from(vec![0; 24], &ctx, false, Representation::Ntt)?,
Poly::try_convert_from(vec![0; 48], &ctx, false, Representation::Ntt)?,
Poly::zero(&ctx, Representation::Ntt)
);

Expand All @@ -652,7 +652,7 @@ mod tests {
let mut rng = thread_rng();
for _ in 0..100 {
for modulus in MODULI {
let ctx = Arc::new(Context::new(&[*modulus], 8)?);
let ctx = Arc::new(Context::new(&[*modulus], 16)?);
let p = Poly::random(&ctx, Representation::PowerBasis, &mut rng);
let p_coeffs = Vec::<BigUint>::from(&p);
let q = Poly::try_convert_from(
Expand All @@ -664,7 +664,7 @@ mod tests {
assert_eq!(p, q);
}

let ctx = Arc::new(Context::new(MODULI, 8)?);
let ctx = Arc::new(Context::new(MODULI, 16)?);
let p = Poly::random(&ctx, Representation::PowerBasis, &mut rng);
let p_coeffs = Vec::<BigUint>::from(&p);
assert_eq!(p_coeffs.len(), ctx.degree);
Expand Down
Loading

0 comments on commit 2e2c3c2

Please sign in to comment.