(num_bits_per_elem: usize, gadget_config: &GadgetConfig)
| 43 | } |
| 44 | |
| 45 | pub fn construct(num_bits_per_elem: usize, gadget_config: &GadgetConfig) -> PackerConfig<F> { |
| 46 | let columns = &gadget_config.columns; |
| 47 | |
| 48 | let num_elem_per_packed = if NUM_BITS_PER_FIELD_ELEM / num_bits_per_elem > columns.len() - 1 { |
| 49 | columns.len() - 1 |
| 50 | } else { |
| 51 | // TODO: for many columns, pack many in a single row |
| 52 | NUM_BITS_PER_FIELD_ELEM / num_bits_per_elem |
| 53 | }; |
| 54 | println!("column len: {}", columns.len()); |
| 55 | println!("num_bits_per_elem: {}", num_bits_per_elem); |
| 56 | println!("NUM_BITS_PER_FIELD_ELEM: {}", NUM_BITS_PER_FIELD_ELEM); |
| 57 | println!("num_elem_per_packed: {}", num_elem_per_packed); |
| 58 | |
| 59 | let num_packed_per_row = max( |
| 60 | 1, |
| 61 | columns.len() / (num_elem_per_packed * (num_bits_per_elem + 1)), |
| 62 | ); |
| 63 | println!("num_packed_per_row: {}", num_packed_per_row); |
| 64 | |
| 65 | let exponents = Self::get_exponents(num_bits_per_elem, num_elem_per_packed); |
| 66 | |
| 67 | let config = PackerConfig { |
| 68 | num_bits_per_elem, |
| 69 | num_elem_per_packed, |
| 70 | num_packed_per_row, |
| 71 | exponents, |
| 72 | _marker: PhantomData, |
| 73 | }; |
| 74 | config |
| 75 | } |
| 76 | |
| 77 | pub fn configure( |
| 78 | meta: &mut ConstraintSystem<F>, |
nothing calls this directly
no outgoing calls
no test coverage detected