pub fn new(size: usize, max_msm_buffer_log: usize) -> Self {
        let num_bits = <G::ScalarField as PrimeField>::MODULUS_BIT_SIZE as usize;
        let c = bounded_ln_without_floats(size, max_msm_buffer_log);
        // split `num_bits` into steps of `c`, but skip window 0.
        let windows = (0..num_bits).step_by(c);
        let buckets_num = 1 << c;

        let mut window_buckets = Vec::with_capacity(windows.len());
        for window in windows {
            window_buckets.push((window, vec![G::Projective::zero(); buckets_num]));
        }
        Self { c, window_buckets }
    }
/// Prepare a multi-scalar multiplication.
Prepare a multi-scalar multiplication.
Prepare a multi - scalar multiplication .
pub fn new(size: usize, max_msm_buffer_log: usize) -> Self {
        let num_bits = <G::ScalarField as PrimeField>::MODULUS_BIT_SIZE as usize;
        let c = bounded_ln_without_floats(size, max_msm_buffer_log);
        // split `num_bits` into steps of `c`, but skip window 0.
        let windows = (0..num_bits).step_by(c);
        let buckets_num = 1 << c;
        let mut window_buckets = Vec::with_capacity(windows.len());
        for window in windows {
            window_buckets.push((window, vec![G::Projective::zero(); buckets_num]));
        }
        Self { c, window_buckets }
    }
pub fn new ( size : usize , max_msm_buffer_log : usize ) -> Self { let num_bits = < G :: ScalarField as PrimeField > :: MODULUS_BIT_SIZE as usize ; let c = bounded_ln_without_floats ( size , max_msm_buffer_log ) ; // split `num_bits` into steps of `c`, but skip window 0. let windows = ( 0 .. num_bits ) . step_by ( c ) ; let buckets_num = 1 << c ; let mut window_buckets = Vec :: with_capacity ( windows . len ( ) ) ; for window in windows { window_buckets . push ( ( window , vec ! [ G Projective zero ( ) buckets_num ] ) ) ; } Self { c , window_buckets } }
Prepare a multi-scalar multiplication.
Prepare a multi - scalar multiplication .
size
usize
max_msm_buffer_log
usize