#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.


Reply via email to