Skip to content

Commit 0458b2b

Browse files
committed
Turn x << 1 into x * 2 and add comments on all the other uses of <<
1 parent 6db0aec commit 0458b2b

File tree

14 files changed

+65
-65
lines changed

14 files changed

+65
-65
lines changed

benches/bench.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ fn benchmark_forward_f32(c: &mut Criterion) {
7272
group.sample_size(20);
7373

7474
for n in LENGTHS.iter() {
75-
let len = 1 << n;
75+
let len = 1 << n; // 2.pow(n)
7676
group.throughput(Throughput::ElementsAndBytes {
7777
elements: len as u64,
7878
bytes: (len * size_of::<f32>()) as u64,
@@ -136,7 +136,7 @@ fn benchmark_inverse_f32(c: &mut Criterion) {
136136
group.sample_size(20);
137137

138138
for n in LENGTHS.iter() {
139-
let len = 1 << n;
139+
let len = 1 << n; // 2.pow(n)
140140
group.throughput(Throughput::ElementsAndBytes {
141141
elements: len as u64,
142142
bytes: (len * size_of::<f32>()) as u64,
@@ -200,7 +200,7 @@ fn benchmark_forward_f64(c: &mut Criterion) {
200200
group.sample_size(20);
201201

202202
for n in LENGTHS.iter() {
203-
let len = 1 << n;
203+
let len = 1 << n; // 2.pow(n)
204204
group.throughput(Throughput::ElementsAndBytes {
205205
elements: len as u64,
206206
bytes: (len * size_of::<f64>()) as u64,
@@ -264,7 +264,7 @@ fn benchmark_inverse_f64(c: &mut Criterion) {
264264
group.sample_size(20);
265265

266266
for n in LENGTHS.iter() {
267-
let len = 1 << n;
267+
let len = 1 << n; // 2.pow(n)
268268
group.throughput(Throughput::ElementsAndBytes {
269269
elements: len as u64,
270270
bytes: (len * size_of::<f64>()) as u64,

examples/benchmark.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ use phastft::{fft_64_dit_with_planner, fft_64_with_opts_and_plan};
77
use utilities::gen_random_signal;
88

99
fn benchmark_fft_64(n: usize) {
10-
let big_n = 1 << n;
10+
let big_n = 1 << n; // 2.pow(n)
1111
let mut reals = vec![0.0; big_n];
1212
let mut imags = vec![0.0; big_n];
1313
gen_random_signal(&mut reals, &mut imags);
@@ -23,7 +23,7 @@ fn benchmark_fft_64(n: usize) {
2323
}
2424

2525
fn benchmark_fft_64_dit(n: usize) {
26-
let big_n = 1 << n;
26+
let big_n = 1 << n; // 2.pow(n)
2727
let mut reals = vec![0.0; big_n];
2828
let mut imags = vec![0.0; big_n];
2929
gen_random_signal(&mut reals, &mut imags);

examples/benchmark_dit_planner.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ use phastft::{fft_64_dit, fft_64_dit_with_planner};
66
use utilities::gen_random_signal;
77

88
fn benchmark_dit_with_planner(n: usize, iterations: usize) {
9-
let big_n = 1 << n;
9+
let big_n = 1 << n; // 2.pow(n)
1010

1111
// Create planner once
1212
let planner = PlannerDit64::new(big_n, Direction::Forward);
@@ -31,7 +31,7 @@ fn benchmark_dit_with_planner(n: usize, iterations: usize) {
3131
}
3232

3333
fn benchmark_dit_without_planner(n: usize, iterations: usize) {
34-
let big_n = 1 << n;
34+
let big_n = 1 << n; // 2.pow(n)
3535
let mut total_time = 0u128;
3636

3737
for _ in 0..iterations {
@@ -65,7 +65,7 @@ fn main() {
6565
10
6666
};
6767

68-
println!("Benchmarking DIT FFT for size 2^{} = {}", n, 1 << n);
68+
println!("Benchmarking DIT FFT for size 2^{} = {}", n, 1 << n); // 1 << n == 2.pow(n)
6969
println!("Running {} iterations each\n", iterations);
7070

7171
benchmark_dit_with_planner(n, iterations);

examples/fftwrb.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ use utilities::gen_random_signal;
99
use utilities::rustfft::num_complex::Complex;
1010

1111
fn benchmark_fftw(n: usize) {
12-
let big_n = 1 << n;
12+
let big_n = 1 << n; // 2.pow(n)
1313

1414
let mut reals = vec![0.0; big_n];
1515
let mut imags = vec![0.0; big_n];

examples/profile.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ use phastft::{fft_64_dit, fft_64_with_opts_and_plan};
77
use utilities::gen_random_signal;
88

99
fn benchmark_fft_64(n: usize) {
10-
let big_n = 1 << n;
10+
let big_n = 1 << n; // 2.pow(n)
1111
let mut reals = vec![0.0; big_n];
1212
let mut imags = vec![0.0; big_n];
1313
gen_random_signal(&mut reals, &mut imags);
@@ -19,7 +19,7 @@ fn benchmark_fft_64(n: usize) {
1919
}
2020

2121
fn benchmark_fft_64_dit(n: usize) {
22-
let big_n = 1 << n;
22+
let big_n = 1 << n; // 2.pow(n)
2323
let mut reals = vec![0.0; big_n];
2424
let mut imags = vec![0.0; big_n];
2525
gen_random_signal(&mut reals, &mut imags);

examples/rustfft.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ use utilities::rustfft::num_complex::Complex64;
66
use utilities::rustfft::FftPlanner;
77

88
fn benchmark_rustfft(n: usize) {
9-
let big_n = 1 << n;
9+
let big_n = 1 << n; // 2.pow(n)
1010

1111
let mut reals = vec![0.0f64; big_n];
1212
let mut imags = vec![0.0f64; big_n];

src/algorithms/bravo.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ macro_rules! impl_bit_rev_bravo {
2424
// as of Rust 1.93 we cannot use an associated constant for array lengths
2525
assert!(<Chunk<S>>::N == LANES);
2626

27-
let big_n = 1usize << n;
27+
let big_n = 1usize << n; // 2.pow(n)
2828
assert_eq!(data.len(), big_n, "Data length must be 2^n");
2929

3030
// For very small arrays, fall back to scalar bit-reversal
@@ -68,7 +68,7 @@ macro_rules! impl_bit_rev_bravo {
6868
for round in 0..log_w {
6969
let mut new_chunks: [Chunk<S>; LANES] =
7070
[Chunk::splat(simd, Default::default()); LANES];
71-
let stride = 1 << round;
71+
let stride = 1 << round; // 2.pow(round)
7272

7373
let mut pair_idx = 0;
7474
let mut i = 0;
@@ -110,7 +110,7 @@ macro_rules! impl_bit_rev_bravo {
110110
for round in 0..log_w {
111111
let mut new_chunks: [Chunk<S>; LANES] =
112112
[Chunk::splat(simd, Default::default()); LANES];
113-
let stride = 1 << round;
113+
let stride = 1 << round; // 2.pow(round)
114114

115115
let mut pair_idx = 0;
116116
let mut i = 0;
@@ -233,7 +233,7 @@ mod tests {
233233
#[test]
234234
fn test_bravo_bit_reversal_f64() {
235235
for n in 2..24 {
236-
let big_n = 1 << n;
236+
let big_n = 1 << n; // 2.pow(n)
237237
let mut actual_re: Vec<f64> = (0..big_n).map(f64::from).collect();
238238
let mut actual_im: Vec<f64> = (0..big_n).map(f64::from).collect();
239239
let simd_level = Level::new();
@@ -251,7 +251,7 @@ mod tests {
251251
#[test]
252252
fn test_bravo_bit_reversal_f32() {
253253
for n in 2..24 {
254-
let big_n = 1 << n;
254+
let big_n = 1 << n; // 2.pow(n)
255255
let mut actual_re: Vec<f32> = (0..big_n).map(|i| i as f32).collect();
256256
let mut actual_im: Vec<f32> = (0..big_n).map(|i| i as f32).collect();
257257
let simd_level = Level::new();

src/algorithms/dif.rs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -66,8 +66,8 @@ pub fn fft_64_with_opts_and_plan(
6666
};
6767

6868
// First stage - no twiddle filtering needed
69-
let dist = 1 << (n - 1);
70-
let chunk_size = dist << 1;
69+
let dist = 1 << (n - 1); // 2.pow(n-1)
70+
let chunk_size = dist * 2;
7171

7272
if chunk_size > 4 {
7373
if chunk_size >= 8 * 2 {
@@ -86,8 +86,8 @@ pub fn fft_64_with_opts_and_plan(
8686

8787
// Subsequent stages with filtered twiddles
8888
for t in (0..n - 1).rev() {
89-
let dist = 1 << t;
90-
let chunk_size = dist << 1;
89+
let dist = 1 << t; // 2.pow(t)
90+
let chunk_size = dist * 2;
9191

9292
if chunk_size > 4 {
9393
if chunk_size >= 8 * 2 {
@@ -170,8 +170,8 @@ pub fn fft_32_with_opts_and_plan(
170170
}
171171

172172
// First stage - no twiddle filtering needed
173-
let dist = 1 << (n - 1);
174-
let chunk_size = dist << 1;
173+
let dist = 1 << (n - 1); // 2.pow(n-1)
174+
let chunk_size = dist * 2;
175175

176176
if chunk_size > 4 {
177177
if chunk_size >= 16 * 2 {
@@ -190,8 +190,8 @@ pub fn fft_32_with_opts_and_plan(
190190

191191
// Subsequent stages with filtered twiddles
192192
for t in (0..n - 1).rev() {
193-
let dist = 1 << t;
194-
let chunk_size = dist << 1;
193+
let dist = 1 << t; // 2.pow(t)
194+
let chunk_size = dist * 2;
195195

196196
if chunk_size > 4 {
197197
if chunk_size >= 16 * 2 {

src/algorithms/dit.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -152,8 +152,8 @@ fn execute_dit_stage_f64<S: Simd>(
152152
planner: &PlannerDit64,
153153
stage_twiddle_idx: usize,
154154
) -> usize {
155-
let dist = 1 << stage;
156-
let chunk_size = dist << 1;
155+
let dist = 1 << stage; // 2.pow(stage)
156+
let chunk_size = dist * 2;
157157

158158
if chunk_size == 2 {
159159
simd.vectorize(|| fft_dit_chunk_2(simd, reals, imags));
@@ -191,8 +191,8 @@ fn execute_dit_stage_f32<S: Simd>(
191191
planner: &PlannerDit32,
192192
stage_twiddle_idx: usize,
193193
) -> usize {
194-
let dist = 1 << stage;
195-
let chunk_size = dist << 1;
194+
let dist = 1 << stage; // 2.pow(stage)
195+
let chunk_size = dist * 2;
196196

197197
if chunk_size == 2 {
198198
simd.vectorize(|| fft_dit_chunk_2(simd, reals, imags));

src/kernels/dif.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ pub fn fft_64_chunk_n_simd(
2424
dist: usize,
2525
) {
2626
const LANES: usize = 8;
27-
let chunk_size = dist << 1;
27+
let chunk_size = dist * 2;
2828
assert!(chunk_size >= LANES * 2);
2929

3030
reals
@@ -78,7 +78,7 @@ pub fn fft_32_chunk_n_simd(
7878
dist: usize,
7979
) {
8080
const LANES: usize = 16;
81-
let chunk_size = dist << 1;
81+
let chunk_size = dist * 2;
8282
assert!(chunk_size >= LANES * 2);
8383

8484
reals
@@ -131,7 +131,7 @@ pub fn fft_chunk_n<T: Float>(
131131
twiddles_im: &[T],
132132
dist: usize,
133133
) {
134-
let chunk_size = dist << 1;
134+
let chunk_size = dist * 2;
135135

136136
reals
137137
.chunks_exact_mut(chunk_size)
@@ -175,7 +175,7 @@ pub fn fft_chunk_n<T: Float>(
175175
))]
176176
pub fn fft_chunk_4<T: Float>(reals: &mut [T], imags: &mut [T]) {
177177
const DIST: usize = 2;
178-
const CHUNK_SIZE: usize = DIST << 1;
178+
const CHUNK_SIZE: usize = DIST * 2;
179179

180180
reals
181181
.chunks_exact_mut(CHUNK_SIZE)

0 commit comments

Comments
 (0)