Skip to content

Commit d2aab57

Browse files
committed
feat: cache for bit_reverse
1 parent d3920d3 commit d2aab57

File tree

1 file changed

+13
-10
lines changed

1 file changed

+13
-10
lines changed

starky/src/fft_p.rs

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -96,9 +96,8 @@ pub fn bit_reverse<F: FieldExtension>(
9696
let n = 1 << nbits;
9797
let ris = BRs(0, n, nbits); // move it outside the loop. obtain it from cache.
9898

99-
// todo parallel. Does the buffdst
10099
let len = n * n_pols;
101-
assert_eq!(len, buffdst.len()); // is ok?
100+
assert_eq!(len, buffdst.len());
102101
for j in 0..len {
103102
let i = j / n_pols;
104103
let k = j % n_pols;
@@ -113,9 +112,10 @@ pub fn interpolate_bit_reverse<F: FieldExtension>(
113112
nbits: usize,
114113
) {
115114
let n = 1 << nbits;
115+
let ris = BRs(0, n, nbits); // move it outside the loop. obtain it from cache.
116+
116117
for i in 0..n {
117-
let ri = BR(i, nbits);
118-
let rii = (n - ri) % n;
118+
let rii = (n - ris[i]) % n;
119119
for k in 0..n_pols {
120120
buffdst[i * n_pols + k] = buffsrc[rii * n_pols + k];
121121
}
@@ -130,12 +130,15 @@ pub fn inv_bit_reverse<F: FieldExtension>(
130130
) {
131131
let n = 1 << nbits;
132132
let n_inv = F::inv(&F::from(n));
133-
for i in 0..n {
134-
let ri = BR(i, nbits);
135-
let rii = (n - ri) % n;
136-
for p in 0..n_pols {
137-
buffdst[i * n_pols + p] = buffsrc[rii * n_pols + p] * n_inv;
138-
}
133+
let ris = BRs(0, n, nbits); // move it outside the loop. obtain it from cache.
134+
135+
let len = n * n_pols;
136+
assert_eq!(len, buffdst.len());
137+
for j in 0..len {
138+
let i = j / n_pols;
139+
let k = j % n_pols;
140+
let rii = (n - ris[i]) % n;
141+
buffdst[j] = buffsrc[rii * n_pols + k] * n_inv;
139142
}
140143
}
141144

0 commit comments

Comments
 (0)