Ticket #4498: trac_4498-arg_evalf.patch

File trac_4498-arg_evalf.patch, 2.3 KB (added by burcin, 4 years ago)
  • sage/functions/other.py

    # HG changeset patch
    # User Burcin Erocal <burcin@erocal.org>
    # Date 1328629949 -3600
    # Node ID 515e51ea641eb7727753887b6cc35885b5441fd5
    # Parent  72fbabe2d206dee8c6d87a7382b92e3856e61888
    trac 4498: keep precision in numeric evaluation of symbolic arg
    
    diff --git a/sage/functions/other.py b/sage/functions/other.py
    a b  
    13441344            sage: arg(0)
    13451345            0
    13461346            sage: latex(arg(x))
    1347             \text{arg}\left(x\right)
     1347            {\rm arg}\left(x\right)
    13481348            sage: maxima(arg(x))
    13491349            atan2(0,x)
    13501350            sage: maxima(arg(2+i))
     
    14091409            # or x involves an expression such as sqrt(2)
    14101410            return None
    14111411
    1412     def _evalf_(self, x, parent=None):
     1412    def _evalf_(self, x, parent_d=None):
    14131413        """
    14141414        EXAMPLES::
    14151415
     
    14171417            0.000000000000000
    14181418            sage: arg(3.0)
    14191419            0.000000000000000
     1420            sage: arg(3.00000000000000000000000000)
     1421            0.00000000000000000000000000
     1422            sage: arg(3.00000000000000000000000000).prec()
     1423            90
     1424            sage: arg(ComplexIntervalField(90)(3)).prec()
     1425            90
     1426            sage: arg(ComplexIntervalField(90)(3)).parent()
     1427            Real Interval Field with 90 bits of precision
     1428            sage: arg(3.0r)
     1429            0.000000000000000
     1430            sage: arg(RDF(3))
     1431            0.0
     1432            sage: arg(RDF(3)).parent()
     1433            Real Double Field
    14201434            sage: arg(-2.5)
    14211435            3.14159265358979
    14221436            sage: arg(2.0+3*i)
     
    14251439        try:
    14261440            return x.arg()
    14271441        except AttributeError:
    1428             from sage.rings.complex_field import CC
    1429             x = CC(x)
    1430             return x.arg()
     1442            pass
     1443        # try to find a parent that support .arg()
     1444        if parent_d is None:
     1445            parent_d = parent(x)
     1446        try:
     1447            parent_d = parent_d.complex_field()
     1448        except AttributeError:
     1449            from sage.rings.complex_field import ComplexField
     1450            try:
     1451                parent_d = ComplexField(x.prec())
     1452            except AttributeError:
     1453                parent_d = ComplexField()
     1454
     1455        return parent_d(x).arg()
    14311456
    14321457arg=Function_arg()
    14331458