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