[SciPy-Dev] Speeding up scipy.special.erf()?

Julian Taylor jtaylor.debian at googlemail.com
Fri Mar 20 18:02:54 EDT 2015


On 20.03.2015 22:08, Pauli Virtanen wrote:
> 20.03.2015, 20:29, Will Adler kirjoitti:
> [clip]
>> Is there anything that can be done to speed up SciPy’s erf()?
> 
> Possibly.
> 
> https://github.com/scipy/scipy/blob/master/scipy/special/cephes/ndtr.c#L483
> 
> The simplest thing would probably be just to write the Pade approximant
> in a form the C compiler can inline. erf and erfc are also in C99, so
> glibc may have a fast implementation.
> 

using glibc is unlikely to be faster, as they focus on correctness and
not speed. Though its worth a try.

The two 4 coefficient evaluations can be perfectly vectorized, just
needs rearranging the static coefficient tables, that should give a
decent speedup.
Also the isnan call could be turned into a builtin instead of the
function call gcc/glibc does.
In total with this implementation I guess 40-50% improvement should be
possible.



More information about the SciPy-Dev mailing list