Skip to content

Commit 8feff4e

Browse files
committed
chore: Slight variable change
1 parent 25141ee commit 8feff4e

File tree

2 files changed

+22
-24
lines changed

2 files changed

+22
-24
lines changed

math/poly/asm_fft_test.go

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ func fftInPlaceRef(coeffs, tw []complex128) {
1313
N := len(coeffs)
1414

1515
t := N
16-
for m := 1; m < N; m <<= 1 {
16+
for m := 1; m <= N/2; m <<= 1 {
1717
t >>= 1
1818
for i := 0; i < m; i++ {
1919
j1 := i * t << 1
@@ -30,16 +30,14 @@ func invFFTInPlaceRef(coeffs, twInv []complex128) {
3030
N := len(coeffs)
3131

3232
t := 1
33-
for m := N; m > 1; m >>= 1 {
34-
j1 := 0
35-
h := m >> 1
36-
for i := 0; i < h; i++ {
33+
for m := N / 2; m >= 1; m >>= 1 {
34+
for i := 0; i < m; i++ {
35+
j1 := i * t << 1
3736
j2 := j1 + t
3837
for j := j1; j < j2; j++ {
3938
U, V := coeffs[j], coeffs[j+t]
4039
coeffs[j], coeffs[j+t] = U+V, (U-V)*twInv[i]
4140
}
42-
j1 += t << 1
4341
}
4442
t <<= 1
4543
}
@@ -58,20 +56,20 @@ func TestFFTAssembly(t *testing.T) {
5856

5957
twRef := make([]complex128, N/2)
6058
twInvRef := make([]complex128, N/2)
61-
for j := 0; j < N/2; j++ {
62-
e := -2 * math.Pi * float64(j) / float64(N)
63-
twRef[j] = cmplx.Exp(complex(0, e))
64-
twInvRef[j] = cmplx.Exp(-complex(0, e))
59+
for i := 0; i < N/2; i++ {
60+
e := -2 * math.Pi * float64(i) / float64(N)
61+
twRef[i] = cmplx.Exp(complex(0, e))
62+
twInvRef[i] = cmplx.Exp(-complex(0, e))
6563
}
6664
vec.BitReverseInPlace(twRef)
6765
vec.BitReverseInPlace(twInvRef)
6866

6967
twist := make([]complex128, N)
7068
twistInv := make([]complex128, N)
71-
for j := 0; j < N; j++ {
72-
e := 2 * math.Pi * float64(j) / float64(4*N)
73-
twist[j] = cmplx.Exp(complex(0, e))
74-
twistInv[j] = cmplx.Exp(-complex(0, e)) / complex(float64(N), 0)
69+
for i := 0; i < N; i++ {
70+
e := 2 * math.Pi * float64(i) / float64(4*N)
71+
twist[i] = cmplx.Exp(complex(0, e))
72+
twistInv[i] = cmplx.Exp(-complex(0, e)) / complex(float64(N), 0)
7573
}
7674

7775
tw, twInv := genTwiddleFactors(N)

math/poly/poly_evaluator.go

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -96,9 +96,9 @@ func NewEvaluator[T num.Integer](N int) *Evaluator[T] {
9696
tw, twInv := genTwiddleFactors(N / 2)
9797

9898
twMono := make([]complex128, 2*N)
99-
for j := 0; j < 2*N; j++ {
100-
e := -math.Pi * float64(j) / float64(N)
101-
twMono[j] = cmplx.Exp(complex(0, e))
99+
for i := 0; i < 2*N; i++ {
100+
e := -math.Pi * float64(i) / float64(N)
101+
twMono[i] = cmplx.Exp(complex(0, e))
102102
}
103103

104104
twMonoIdx := make([]int, N/2)
@@ -125,27 +125,27 @@ func NewEvaluator[T num.Integer](N int) *Evaluator[T] {
125125
func genTwiddleFactors(N int) (tw, twInv []complex128) {
126126
twFFT := make([]complex128, N/2)
127127
twInvFFT := make([]complex128, N/2)
128-
for j := 0; j < N/2; j++ {
129-
e := -2 * math.Pi * float64(j) / float64(N)
130-
twFFT[j] = cmplx.Exp(complex(0, e))
131-
twInvFFT[j] = cmplx.Exp(-complex(0, e))
128+
for i := 0; i < N/2; i++ {
129+
e := -2 * math.Pi * float64(i) / float64(N)
130+
twFFT[i] = cmplx.Exp(complex(0, e))
131+
twInvFFT[i] = cmplx.Exp(-complex(0, e))
132132
}
133133
vec.BitReverseInPlace(twFFT)
134134
vec.BitReverseInPlace(twInvFFT)
135135

136136
tw = make([]complex128, 0, N-1)
137137
twInv = make([]complex128, 0, N-1)
138138

139-
for m, t := 1, N/2; m < N; m, t = m<<1, t>>1 {
139+
for m, t := 1, N/2; m <= N/2; m, t = m<<1, t>>1 {
140140
twFold := cmplx.Exp(complex(0, 2*math.Pi*float64(t)/float64(4*N)))
141141
for i := 0; i < m; i++ {
142142
tw = append(tw, twFFT[i]*twFold)
143143
}
144144
}
145145

146-
for m, t := N, 1; m > 1; m, t = m>>1, t<<1 {
146+
for m, t := N/2, 1; m >= 1; m, t = m>>1, t<<1 {
147147
twInvFold := cmplx.Exp(complex(0, -2*math.Pi*float64(t)/float64(4*N)))
148-
for i := 0; i < m/2; i++ {
148+
for i := 0; i < m; i++ {
149149
twInv = append(twInv, twInvFFT[i]*twInvFold)
150150
}
151151
}

0 commit comments

Comments
 (0)