Opened 11 years ago

Last modified 11 years ago

#12237 closed defect

erf of complex arguments — at Initial Version

Reported by: Volker Braun Owned by: jason, jkantor
Priority: major Milestone: sage-duplicate/invalid/wontfix
Component: numerical Keywords:
Cc: Merged in:
Authors: Volker Braun Reviewers:
Report Upstream: N/A Work issues:
Branch: Commit:
Dependencies: Stopgaps:

Status badges


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/ 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/ 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())
     83     def _derivative_(self, x, diff_param=None):

/home/vbraun/opt/sage-4.8.alpha4/local/lib/python2.6/site-packages/sage/rings/ 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

Change History (1)

Changed 11 years ago by Volker Braun

Initial patch

Note: See TracTickets for help on using tickets.