clippy+fmt

This commit is contained in:
rickwebiii
2023-03-06 13:14:27 -08:00
parent 5e73a29ca7
commit 8e7e858603
6 changed files with 17 additions and 136 deletions

View File

@@ -26,7 +26,6 @@ criterion = "0.4.0"
default = []
metal = ["sunscreen_math/metal"]
pina = ["sunscreen_math/pina"]
nightly-features = []
[[bench]]
name = "linear_relation"

View File

@@ -3,7 +3,12 @@ use std::time::Instant;
use ark_ff::Field;
use ark_poly::univariate::DensePolynomial;
use criterion::{criterion_group, criterion_main, Criterion};
use logproof::{fields::FqSeal128_4096, math::make_poly, LogProofGenerators, linear_algebra::{Matrix, ScalarRem}, LogProofProverKnowledge, InnerProductVerifierKnowledge, LogProof};
use logproof::{
fields::FqSeal128_4096,
linear_algebra::{Matrix, ScalarRem},
math::make_poly,
InnerProductVerifierKnowledge, LogProof, LogProofGenerators, LogProofProverKnowledge,
};
use merlin::Transcript;
type MatrixPoly<Q> = Matrix<DensePolynomial<Q>>;
@@ -35,10 +40,7 @@ fn bfv_3ct_benchmark(_: &mut Criterion) {
println!("Generating data...");
let coeffs = (0..POLY_DEGREE)
.map(|x| x % 2)
.into_iter()
.collect::<Vec<u64>>();
let coeffs = (0..POLY_DEGREE).map(|x| x % 2).collect::<Vec<u64>>();
let delta = make_poly::<Q>(&[1234]);
let p_0 = make_poly::<Q>(&coeffs);
@@ -52,8 +54,8 @@ fn bfv_3ct_benchmark(_: &mut Criterion) {
[zero.clone(), p_1.clone(), zero.clone(), one.clone()],
[delta.clone(), p_0.clone(), one.clone(), zero.clone()],
[zero.clone(), p_1.clone(), zero.clone(), one.clone()],
[delta.clone(), p_0.clone(), one.clone(), zero.clone()],
[zero.clone(), p_1.clone(), zero.clone(), one.clone()],
[delta, p_0.clone(), one.clone(), zero.clone()],
[zero.clone(), p_1, zero, one],
]);
// Secret key
@@ -65,7 +67,7 @@ fn bfv_3ct_benchmark(_: &mut Criterion) {
let m = p_0.clone();
let u = p_0.clone();
let e_1 = p_0.clone();
let e_2 = p_0.clone();
let e_2 = p_0;
let s = MatrixPoly::from([[m], [u], [e_1], [e_2]]);
@@ -117,4 +119,4 @@ fn bfv_3ct_benchmark(_: &mut Criterion) {
criterion_group!(benches, bfv_3ct_benchmark);
criterion_main!(benches);
criterion_main!(benches);

View File

@@ -1,4 +1,3 @@
#![cfg_attr(feature = "nightly-features", feature(test))]
#![deny(missing_docs)]
//! This crate contains proofs for demonstrating facts about lattice

View File

@@ -14,9 +14,9 @@ use crate::math::{ModSwitch, One, Rem, SmartMul, Tensor, Zero};
#[derive(Debug, Clone, PartialEq)]
/**
* An `m x n` matrix of elements.
*
*
* # Remarks
* Matrix elements can be any type that implements [`Add`], [`Mul`],
* Matrix elements can be any type that implements [`Add`], [`Mul`],
* [`Clone`], [`Zero`].
*/
pub struct Matrix<T>
@@ -789,7 +789,7 @@ pub trait HadamardProduct<Rhs> {
/**
* Compute the Hadamard product between `self` and `rhs`.
*
*
* # Remarks
* The Hadamard product is element-wise multiplication.
*/

View File

@@ -1127,122 +1127,3 @@ mod test {
assert_eq!(l, r);
}
}
#[cfg(all(test, feature = "nightly-features"))]
mod benches {
use crate::{fields::FqSeal128_4096, math::make_poly, LogProofGenerators};
use super::*;
use std::time::Instant;
extern crate test;
use test::Bencher;
fn f<F: Field>(degree: usize) -> DensePolynomial<F> {
let mut coeffs = Vec::with_capacity(degree + 1);
coeffs.push(F::ONE);
for _ in 0..degree - 1 {
coeffs.push(F::ZERO);
}
coeffs.push(F::ONE);
DensePolynomial { coeffs }
}
#[bench]
fn bfv_benchmark(_: &mut Bencher) {
// Secret key
// a = random in q
// e_1 = q / 2p
// c_1 = s * a + e_1 + del * m
// c_2 = a
type Q = FqSeal128_4096;
const POLY_DEGREE: u64 = 4096u64;
const BIT_SIZE: u64 = 2 << 8;
println!("Generating data...");
let coeffs = (0..POLY_DEGREE)
.map(|x| x % 2)
.into_iter()
.collect::<Vec<u64>>();
let delta = make_poly::<Q>(&[1234]);
let p_0 = make_poly::<Q>(&coeffs);
let p_1 = p_0.clone();
let one = make_poly(&[1]);
let zero = make_poly(&[0]);
let a = MatrixPoly::from([
[delta.clone(), p_0.clone(), one.clone(), zero.clone()],
[zero.clone(), p_1.clone(), zero.clone(), one.clone()],
[delta.clone(), p_0.clone(), one.clone(), zero.clone()],
[zero.clone(), p_1.clone(), zero.clone(), one.clone()],
[delta.clone(), p_0.clone(), one.clone(), zero.clone()],
[zero.clone(), p_1.clone(), zero.clone(), one.clone()],
]);
// Secret key
// a = random in q
// e_1 = q / 2p
// c_1 = s * a + e_1 + del * m
// c_2 = a
let m = p_0.clone();
let u = p_0.clone();
let e_1 = p_0.clone();
let e_2 = p_0.clone();
let s = MatrixPoly::from([[m], [u], [e_1], [e_2]]);
let f = f::<FqSeal128_4096>(POLY_DEGREE as usize);
let t = &a * &s;
let t = t.scalar_rem(&f);
let mut transcript = Transcript::new(b"test");
println!("Generating prover knowlege");
let now = Instant::now();
let pk = ProverKnowledge::new(&a, &s, &t, BIT_SIZE, &f);
println!("Generate PK {}s", now.elapsed().as_secs_f64());
println!("b={}", pk.vk.b());
println!("b_1={}", pk.vk.b_1());
println!("b_2={}", pk.vk.b_2());
println!("mkdb={}", pk.vk.mkdb());
println!("nk(2d-1)b_1={}", pk.vk.nk_2d_min_1_b_1());
println!("nk(d-1)b_2={}", pk.vk.nk_d_min_1_b_2());
println!("l={}", pk.vk.l());
println!("Starting proof...");
let gens = LogProofGenerators::new(pk.vk.l() as usize);
let u = inner_product::VerifierKnowledge::get_u();
let now = Instant::now();
let proof = LogProof::create(&mut transcript, &pk, &gens.g, &gens.h, &u);
println!("Prover time {}s", now.elapsed().as_secs_f64());
println!("Proof size {}B", bincode::serialize(&proof).unwrap().len());
let mut transcript = Transcript::new(b"test");
let now = Instant::now();
proof
.verify(&mut transcript, &pk.vk, &gens.g, &gens.h, &u)
.unwrap();
println!("Verifier time {}s", now.elapsed().as_secs_f64());
}
}

View File

@@ -324,7 +324,7 @@ impl<const N: usize> Log2 for BigInt<N> {
/**
* A custom [`std::ops::Rem`] trait so we can implement
* modulus on foreign crate types.
*
*
* # Remarks
* see [`std::ops::Rem`].
*/
@@ -336,7 +336,7 @@ pub trait Rem<Rhs = Self> {
/**
* Compute `self % rhs`.
*
*
* # Remarks
* see [`std::ops::Rem::rem`].
*/
@@ -534,7 +534,7 @@ where
{
/**
* Decompose the coefficients into binary 2's complement values.
*
*
*/
fn twos_complement_coeffs(b: usize) -> Vec<Self>;
}