#12237: erf of complex arguments
--------------------------+-------------------------------------------------
    Reporter:  vbraun     |         Owner:  jason, jkantor                
        Type:  defect     |        Status:  closed                        
    Priority:  major      |     Milestone:  sage-duplicate/invalid/wontfix
   Component:  numerical  |    Resolution:  duplicate                     
    Keywords:             |   Work_issues:                                
    Upstream:  N/A        |      Reviewer:  Jeroen Demeyer                
      Author:             |        Merged:                                
Dependencies:             |  
--------------------------+-------------------------------------------------
Changes (by jdemeyer):

  * status:  positive_review => closed
  * author:  Volker Braun =>
  * milestone:  sage-4.8 => sage-duplicate/invalid/wontfix
  * reviewer:  => Jeroen Demeyer
  * resolution:  => duplicate


Old description:

> The erf function doesn't work for complex arguments, even though we use
> Pari and Pari does support it. This is also annoying because maxima
> sometimes returns `erf(complex argument)` in integrations:
> {{{
> sage: integrate(sin(x)*(x^(1/2)),x,0,1)
> -1/8*((I + 1)*sqrt(2)*erf((1/2*I - 1/2)*sqrt(2)) + (I -
> 1)*sqrt(2)*erf((1/2*I + 1/2)*sqrt(2)))*sqrt(pi) - cos(1)
> sage: _.n()
> ERROR: An unexpected error occurred while tokenizing input
> The following traceback may be corrupted or invalid
> The error message is: ('EOF in multi-line statement', (1111, 0))
>
> ---------------------------------------------------------------------------
> TypeError                                 Traceback (most recent call
> last)
>
> /home/vbraun/opt/sage-weak/sage-4.8.alpha5/<ipython console> in
> <module>()
>
> /home/vbraun/opt/sage-4.8.alpha4/local/lib/python2.6/site-
> packages/sage/symbolic/expression.so in
> sage.symbolic.expression.Expression._numerical_approx
> (sage/symbolic/expression.cpp:18004)()
>
> /home/vbraun/opt/sage-4.8.alpha4/local/lib/python2.6/site-
> packages/sage/symbolic/expression.so in
> sage.symbolic.expression.Expression._convert
> (sage/symbolic/expression.cpp:5089)()
>
> /home/vbraun/opt/sage-4.8.alpha4/local/lib/python2.6/site-
> packages/sage/functions/other.pyc in _evalf_(self, x, parent)
>      79         if prec > 53:
>      80             raise NotImplementedError, "erf not implemented for
> precision higher than 53"
> ---> 81         return parent(1 - pari(float(x)).erfc())
>      82
>      83     def _derivative_(self, x, diff_param=None):
>
> /home/vbraun/opt/sage-4.8.alpha4/local/lib/python2.6/site-
> packages/sage/rings/complex_number.so in
> sage.rings.complex_number.ComplexNumber.__float__
> (sage/rings/complex_number.c:7501)()
>
> TypeError: Unable to convert -0.707106781186547 + 0.707106781186547*I to
> float; use abs() or real_part() as desired
> }}}
>
> Apply trac_12237_complex_erfc.patch

New description:

 The erf function doesn't work for complex arguments, even though we use
 Pari and Pari does support it. This is also annoying because maxima
 sometimes returns `erf(complex argument)` in integrations:
 {{{
 sage: integrate(sin(x)*(x^(1/2)),x,0,1)
 -1/8*((I + 1)*sqrt(2)*erf((1/2*I - 1/2)*sqrt(2)) + (I -
 1)*sqrt(2)*erf((1/2*I + 1/2)*sqrt(2)))*sqrt(pi) - cos(1)
 sage: _.n()
 ERROR: An unexpected error occurred while tokenizing input
 The following traceback may be corrupted or invalid
 The error message is: ('EOF in multi-line statement', (1111, 0))

 ---------------------------------------------------------------------------
 TypeError                                 Traceback (most recent call
 last)

 /home/vbraun/opt/sage-weak/sage-4.8.alpha5/<ipython console> in <module>()

 /home/vbraun/opt/sage-4.8.alpha4/local/lib/python2.6/site-
 packages/sage/symbolic/expression.so in
 sage.symbolic.expression.Expression._numerical_approx
 (sage/symbolic/expression.cpp:18004)()

 /home/vbraun/opt/sage-4.8.alpha4/local/lib/python2.6/site-
 packages/sage/symbolic/expression.so in
 sage.symbolic.expression.Expression._convert
 (sage/symbolic/expression.cpp:5089)()

 /home/vbraun/opt/sage-4.8.alpha4/local/lib/python2.6/site-
 packages/sage/functions/other.pyc in _evalf_(self, x, parent)
      79         if prec > 53:
      80             raise NotImplementedError, "erf not implemented for
 precision higher than 53"
 ---> 81         return parent(1 - pari(float(x)).erfc())
      82
      83     def _derivative_(self, x, diff_param=None):

 /home/vbraun/opt/sage-4.8.alpha4/local/lib/python2.6/site-
 packages/sage/rings/complex_number.so in
 sage.rings.complex_number.ComplexNumber.__float__
 (sage/rings/complex_number.c:7501)()

 TypeError: Unable to convert -0.707106781186547 + 0.707106781186547*I to
 float; use abs() or real_part() as desired
 }}}

 See #11948 for a better solution.

--

Comment:

 Already fixed by #11948, so closing as "duplicate".

-- 
Ticket URL: <http://trac.sagemath.org/sage_trac/ticket/12237#comment:3>
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 post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/sage-trac?hl=en.

Reply via email to