16 lines
474 B
Julia
16 lines
474 B
Julia
"Sum over array while minimizing catastrophic cancellation as much as possible"
|
|
function better_sum(arr::Array{Float64})
|
|
pos_arr = arr[arr .> 0]
|
|
neg_arr = arr[arr .< 0]
|
|
|
|
sort!(pos_arr)
|
|
sort!(neg_arr, rev=true)
|
|
|
|
return sum(pos_arr) + sum(neg_arr)
|
|
end
|
|
|
|
better_sum(arr::Array{ComplexF64}) = better_sum(real.(arr)) + 1im * better_sum(imag.(arr))
|
|
|
|
"The triangle inequality for angular momenta"
|
|
triangle_ineq(l1, l2, L) = abs(l1 - l2) ≤ L && L ≤ (l1 + l2)
|