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.
I just profiled
expintx(1,z::Complex)and found the majority of the time is spent checking the convergence usingabs(stuff) < ϵ. Would there be a problem with simply squaring all of these and usingabs2(stuff) < ϵ^2? This is much much faster, especially whenstuff::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.