Ticket #4498: trac_4498-arg_evalf.patch

File trac_4498-arg_evalf.patch, 2.3 KB (added by burcin, 2 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