Skip to content

Commit 38b7f27

Browse files
authored
Optimize uniform Simpson (#1171)
1 parent 7c10be6 commit 38b7f27

File tree

1 file changed

+4
-5
lines changed

1 file changed

+4
-5
lines changed

src/common/quadrature.jl

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -64,11 +64,10 @@ simpson(y::AbstractVector, x::AbstractVector) = simpson((i, xi) -> y[i], x)
6464
# Note: We used @turbo here before, but actually the allocation overhead
6565
# needed to get all the data into an array is worse than what one gains
6666
# with LoopVectorization
67-
@fastmath @simd for i = 2:2:istop
68-
I += @inline 4 / 3 * dx * integrand(i, x[i])
69-
end
70-
@fastmath @simd for i = 3:2:istop
71-
I += @inline 2 / 3 * dx * integrand(i, x[i])
67+
weven = 4 / 3 * dx
68+
wodd = 2 / 3 * dx
69+
@fastmath @simd for i = 2:istop
70+
@inline I += iseven(i) ? weven * integrand(i, x[i]) : wodd * integrand(i, x[i])
7271
end
7372

7473
if isodd(n_intervals)

0 commit comments

Comments
 (0)