JuliaMath / SpecialFunctions.jl

Special mathematical functions in Julia

Home Page:https://specialfunctions.juliamath.org/stable/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Extensive use of abs for complex tolerances

weymouth opened this issue · comments

I just profiled expintx(1,z::Complex) and found the majority of the time is spent checking the convergence using abs(stuff) < ϵ. Would there be a problem with simply squaring all of these and using abs2(stuff) < ϵ^2? This is much much faster, especially when stuff::Complex.

Since ϵ=10eps(T), I suppose that could lead to some issues. But I would much prefer to slightly reduce the tolerance than the current waste of compute.

I'm happy to do the PR if it's likely to get merged in.

Or we could just use fastabs. That should be harmless, right?

Yes, fastabs should be fine here. Not sure how that compares to abs2, but with abs2 you also need to be careful of over/underflow.