Skip to content

Commit fa7727e

Browse files
committed
fix: do not call kacs_walk if dimension is a power of 2 (#258)
Signed-off-by: usamoi <usamoi@outlook.com>
1 parent 5c3b5bc commit fa7727e

1 file changed

Lines changed: 12 additions & 4 deletions

File tree

crates/rabitq/src/rotate.rs

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -51,22 +51,30 @@ pub fn rotate(vector: &[f32]) -> Vec<f32> {
5151
simd::rotate::flip(&BITS_0, &mut result);
5252
simd::fht::fht(&mut result[l]);
5353
f32::vector_mul_scalar_inplace(&mut result[l], scale);
54-
kacs_walk(&mut result);
54+
if n != (1_usize << base) {
55+
kacs_walk(&mut result);
56+
}
5557

5658
simd::rotate::flip(&BITS_1, &mut result);
5759
simd::fht::fht(&mut result[r]);
5860
f32::vector_mul_scalar_inplace(&mut result[r], scale);
59-
kacs_walk(&mut result);
61+
if n != (1_usize << base) {
62+
kacs_walk(&mut result);
63+
}
6064

6165
simd::rotate::flip(&BITS_2, &mut result);
6266
simd::fht::fht(&mut result[l]);
6367
f32::vector_mul_scalar_inplace(&mut result[l], scale);
64-
kacs_walk(&mut result);
68+
if n != (1_usize << base) {
69+
kacs_walk(&mut result);
70+
}
6571

6672
simd::rotate::flip(&BITS_3, &mut result);
6773
simd::fht::fht(&mut result[r]);
6874
f32::vector_mul_scalar_inplace(&mut result[r], scale);
69-
kacs_walk(&mut result);
75+
if n != (1_usize << base) {
76+
kacs_walk(&mut result);
77+
}
7078

7179
result
7280
}

0 commit comments

Comments
 (0)