#13050: allow different algorithms for evaluating erf
------------------------------------------+---------------------------------
Reporter: benjaminfjones | Owner: burcin
Type: enhancement | Status: new
Priority: minor | Milestone: sage-5.11
Component: symbolics | Resolution:
Keywords: sd40.5 mpmath pari erf | Work issues:
Report Upstream: N/A | Reviewers:
Authors: Benjamin Jones | Merged in:
Dependencies: #12289 | Stopgaps:
------------------------------------------+---------------------------------
Old description:
> In #1173 an mpmath numerical evaluator for `erf` was written by Douglas
> !McNeil. This ticket proposes to save that code, incorporate it with the
> ability to pass an `algorithm` parameter to `numerical_approx` from
> #12289 and solve #13003 all in one go.
>
> The mpmath evaluator is more robust than PARI, e.g. at large inputs. This
> is a good reason to switch the default numerical evaluation of `erf` to
> use mpmath like most of the rest of the new symbolic functions in Sage.
>
> In PARIs favor, it is faster for some inputs:
> {{{
> sage: timeit('erf(2).n()')
> 625 loops, best of 3: 153 µs per loop
> sage: timeit("erf(2).n(algorithm='pari')")
> 625 loops, best of 3: 135 µs per loop
> }}}
> but not always:
> {{{
> sage: timeit('erf(10^7).n()')
> 625 loops, best of 3: 118 µs per loop
> sage: timeit('erf(10^7).n(algorithm="pari")')
> 625 loops, best of 3: 132 µs per loop
> }}}
New description:
In #1173 an mpmath numerical evaluator for `erf` was written by Douglas
!McNeil. This ticket proposes to save that code, incorporate it with the
ability to pass an `algorithm` parameter to `numerical_approx` from
#12289. We could support Pari, mpmath, and Maxima.
It would even be useful to see where Pari is faster.
--
Comment (by kcrisman):
I think that we can repurpose this ticket to adding the algorithm keyword
here. Some good examples from #1173 (most were added in #13001):
{{{
Verify we're returning the appropriate zero::
sage: erf(0)
0
sage: erf(0.0)
0.000000000000000
sage: erf(RealField(100)(0))
0.00000000000000000000000000000
}}}
{{{
set(erf(45*10**i).n() for i in range(10))
}}}
{{{
sage: CC(erf(ComplexField(1000)(2+3j)))
}}}
--
Ticket URL: <http://trac.sagemath.org/sage_trac/ticket/13050#comment:5>
Sage <http://www.sagemath.org>
Sage: Creating a Viable Open Source Alternative to Magma, Maple, Mathematica,
and MATLAB
--
You received this message because you are subscribed to the Google Groups
"sage-trac" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sage-trac.
For more options, visit https://groups.google.com/groups/opt_out.