Skip to content

Commit 0cf9d0d

Browse files
committed
fix: resolve clippy warnings and use F×E mixed arithmetic in bus offset computation
1 parent 6004a64 commit 0cf9d0d

1 file changed

Lines changed: 24 additions & 28 deletions

File tree

prover/src/lib.rs

Lines changed: 24 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -437,17 +437,18 @@ pub(crate) fn compute_commit_bus_offset(
437437
return Some(FieldElement::zero());
438438
}
439439

440-
let bus_id = FieldElement::<E>::from(BusId::Commit as u64);
441440
let alpha_sq = alpha * alpha;
442-
441+
let bus_id = FieldElement::<F>::from(BusId::Commit as u64);
442+
// Negate once: fingerprint = z - lc = -(lc - z) but we compute z - lc directly
443+
// by precomputing z_minus_bus = z - bus_id (F×E mixed subtraction)
444+
let z_minus_bus = z - bus_id * FieldElement::<E>::one();
443445
let mut fingerprints: Vec<FieldElement<E>> = public_output
444446
.iter()
445447
.enumerate()
446448
.map(|(i, &value)| {
447-
let lc = &bus_id
448-
+ &(FieldElement::<E>::from(i as u64) * alpha)
449-
+ &(FieldElement::<E>::from(value as u64) * &alpha_sq);
450-
z - &lc
449+
let idx = FieldElement::<F>::from(i as u64);
450+
let val = FieldElement::<F>::from(value as u64);
451+
z_minus_bus - idx * alpha - val * alpha_sq
451452
})
452453
.collect();
453454

@@ -486,48 +487,43 @@ pub(crate) fn compute_register_bus_offset(
486487
) -> Option<FieldElement<E>> {
487488
let bus_id = FieldElement::<E>::from(BusId::Memory as u64);
488489
let alpha2 = alpha * alpha;
489-
let alpha3 = &alpha2 * alpha;
490-
let alpha4 = &alpha3 * alpha;
491-
let alpha5 = &alpha4 * alpha;
492-
let alpha6 = &alpha5 * alpha;
490+
let alpha3 = alpha2 * alpha;
491+
let alpha4 = alpha3 * alpha;
492+
let alpha5 = alpha4 * alpha;
493+
let alpha6 = alpha5 * alpha;
493494

494-
// Precompute constants that are the same for all addresses
495-
let is_register = FieldElement::<E>::one(); // is_register = 1
496-
// addr_hi = 0, contributes nothing
497-
let base_lc = &bus_id + &(&is_register * alpha);
495+
// base_lc = BusId::Memory + 1*α (is_register=1, addr_hi=0 contributes nothing)
496+
let base_lc = bus_id + *alpha;
498497

499498
// Fini timestamp: ts = u64::MAX = 0xFFFFFFFF_FFFFFFFF
500-
let ts_lo = FieldElement::<E>::from(0xFFFF_FFFFu64);
501-
let ts_hi = FieldElement::<E>::from(0xFFFF_FFFFu64);
502-
let fini_ts_contrib = &(&ts_lo * &alpha4) + &(&ts_hi * &alpha5);
499+
let ts_max = FieldElement::<F>::from(0xFFFF_FFFFu64);
500+
let fini_ts_contrib = ts_max * (alpha4 + alpha5);
503501

504502
let addr_list = register::register_word_address_list();
505503
let n = addr_list.len();
506504

507505
// Build all 2*n fingerprints (init + fini per address), then batch-invert.
508-
// signs[i] = -1 for init (receiver), +1 for fini (sender).
509506
let mut fingerprints: Vec<FieldElement<E>> = Vec::with_capacity(2 * n);
510507
let mut signs: Vec<i8> = Vec::with_capacity(2 * n);
511508

512509
for &addr in &addr_list {
513-
let addr_contrib = FieldElement::<E>::from(addr) * &alpha2;
510+
let addr_fe = FieldElement::<F>::from(addr);
511+
let addr_contrib = addr_fe * alpha2;
514512

515513
let init_value = register::init_value_for_address(addr, entry_point);
516514
let fini_value: u32 = if addr == 510 { 1 } else { 0 };
517515

516+
let init_fe = FieldElement::<F>::from(init_value as u64);
517+
let fini_fe = FieldElement::<F>::from(fini_value as u64);
518+
518519
// REG-C1 (receiver): init token with ts=0
519-
let lc_init = &base_lc
520-
+ &addr_contrib
521-
+ &(FieldElement::<E>::from(init_value as u64) * &alpha6);
522-
fingerprints.push(z - &lc_init);
520+
let lc_init = base_lc + addr_contrib + init_fe * alpha6;
521+
fingerprints.push(z - lc_init);
523522
signs.push(-1);
524523

525524
// REG-C2 (sender): fini token with ts=MAX
526-
let lc_fini = &base_lc
527-
+ &addr_contrib
528-
+ &fini_ts_contrib
529-
+ &(FieldElement::<E>::from(fini_value as u64) * &alpha6);
530-
fingerprints.push(z - &lc_fini);
525+
let lc_fini = base_lc + addr_contrib + fini_ts_contrib + fini_fe * alpha6;
526+
fingerprints.push(z - lc_fini);
531527
signs.push(1);
532528
}
533529

0 commit comments

Comments
 (0)