Ticket #2347: 2347-6.patch

File 2347-6.patch, 5.2 KB (added by robertwb, 14 years ago)
  • sage/calculus/calculus.py

    # HG changeset patch
    # User Robert Bradshaw <robertwb@math.washington.edu>
    # Date 1207901491 25200
    # Node ID dd1dddfd7b4f0e59db8030450a53bb88920f045e
    # Parent  cec740e603143f0ee77011ab1fee03377497ae06
    Cleanup all uses of sage_eval in calculus, all doctests pass.
    
    diff -r cec740e60314 -r dd1dddfd7b4f sage/calculus/calculus.py
    a b import sage.numerical.optimize 
    266266# separate from the default system-wide version.
    267267maxima = Maxima(init_code = ['display2d:false; domain: complex; keepfloat: true'])
    268268
    269 from sage.misc.parser import Parser, LookupNameMaker
     269from sage.misc.parser import Parser
    270270
    271271from sage.calculus.equations import SymbolicEquation
    272272from sage.rings.real_mpfr import RealNumber
    def symbolic_expression_from_maxima_stri 
    81388138    #r = maxima._eval_line('listofvars(_tmp_);')[1:-1]
    81398139   
    81408140    s = maxima._eval_line('_tmp_;')
    8141 
     8141   
    81428142    formal_functions = maxima_tick.findall(s)
    81438143    if len(formal_functions) > 0:
    81448144        for X in formal_functions:
    def symbolic_expression_from_maxima_stri 
    81778177        # evaluation of maxima code are assumed pre-simplified
    81788178        is_simplified = True
    81798179        return symbolic_expression_from_string(s, syms, accept_sequence=True)
    8180         last_msg = ''
    8181         while True:
    8182             try:
    8183                 w = sage_eval(s, syms)
    8184             except NameError, msg:
    8185                 if msg == last_msg:
    8186                     raise NameError, msg
    8187                 msg = str(msg)
    8188                 last_msg = msg
    8189                 i = msg.find("'")
    8190                 j = msg.rfind("'")
    8191                 nm = msg[i+1:j]
    8192 
    8193                 res = re.match('.*' + nm + '\s*\(.*\)', s)
    8194                 if res:
    8195                     syms[nm] = function(nm)
    8196                 else:
    8197                     syms[nm] = var(nm)                   
    8198             else:
    8199                 break
    8200         if isinstance(w, (list, tuple)):
    8201             return w
    8202         else:
    8203             x = SR(w)
    8204         return x
    82058180    except SyntaxError:
    82068181        raise TypeError, "unable to make sense of Maxima expression '%s' in SAGE"%s
    82078182    finally:
    def _find_var(name): 
    83068281        return SR(sage.all.__dict__[name])
    83078282    except KeyError:
    83088283        return var(name)
     8284       
     8285def _find_func(name):
     8286    try:
     8287        func = (_augmented_syms or _syms)[name]
     8288        if not isinstance(func, (SymbolicConstant, SymbolicVariable)):
     8289            return func
     8290    except KeyError:
     8291        pass
     8292    try:
     8293        func = SR(sage.all.__dict__[name])
     8294        if not isinstance(func, (SymbolicConstant, SymbolicVariable)):
     8295            return func
     8296    except KeyError:
     8297        return function(name)
    83098298
    83108299SR_parser = Parser(make_int      = lambda x: SymbolicConstant(Integer(x)),
    83118300                   make_float    = lambda x: SymbolicConstant(create_RealNumber(x)),
    83128301                   make_var      = _find_var,
    8313                    make_function = LookupNameMaker(_syms, function))
     8302                   make_function = _find_func)
    83148303                   
    83158304def symbolic_expression_from_string(s, syms=None, accept_sequence=False):
    83168305    parse_func = SR_parser.parse_sequence if accept_sequence else SR_parser.parse_expression
  • sage/calculus/equations.py

    diff -r cec740e60314 -r dd1dddfd7b4f sage/calculus/equations.py
    a b _assumptions = [] 
    7676
    7777from sage.structure.sage_object import SageObject
    7878from sage.structure.sequence    import Sequence
    79 from sage.misc.sage_eval        import sage_eval
    8079
    8180from calculus                   import maxima
    8281
    class SymbolicEquation(SageObject): 
    994993            if len(X) == 0:
    995994                return X, []
    996995            else:
    997                 return X, sage_eval(P.get('multiplicities'))
     996                return X, [int(e) for e in str(P.get('multiplicities'))[1:-1].split(',')]
    998997        else:
    999998            return X
    1000999       
  • sage/rings/rational.pyx

    diff -r cec740e60314 -r dd1dddfd7b4f sage/rings/rational.pyx
    a b cdef class Rational(sage.structure.eleme 
    10031003            sage: (2/3)^(x^n + y^n + z^n)
    10041004            3^(-z^n - y^n - x^n)*2^(z^n + y^n + x^n)
    10051005            sage: (-7/11)^(tan(x)+exp(x))
    1006             11^(-tan(x) - e^x)*-7^(tan(x) + e^x)
     1006            11^(-tan(x) - e^x)*(-7)^(tan(x) + e^x)
    10071007            sage: (2/3)^(3/4)
    10081008            2^(3/4)/3^(3/4)
    10091009            sage: (-1/3)^0
  • sage/rings/real_double.pyx

    diff -r cec740e60314 -r dd1dddfd7b4f sage/rings/real_double.pyx
    a b cdef class RealDoubleElement(FieldElemen 
    11721172        Symbolic examples:
    11731173            sage: x, y = var('x,y')
    11741174            sage: RDF('-2.3')^(x+y^3+sin(x))
    1175             -2.30000000000000^(y^3 + sin(x) + x)
     1175            (-2.30000000000000)^(y^3 + sin(x) + x)
    11761176            sage: RDF('-2.3')^x
    1177             -2.30000000000000^x
     1177            (-2.30000000000000)^x
    11781178        """
    11791179        cdef RealDoubleElement base, exp
    11801180        if PY_TYPE_CHECK(self, RealDoubleElement):