I don't understand this behavior:

Python 3.5.1 |Continuum Analytics, Inc.| (default, Dec  7 2015, 11:16:01)
Type "copyright", "credits" or "license" for more information.

IPython 4.1.2 -- An enhanced Interactive Python.
?         -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help      -> Python's own help system.
object?   -> Details about 'object', use 'object??' for extra details.

In [1]: from sympy import *

In [2]: phi = symbols('phi', cls=Function)

In [3]: t = symbols('t')

In [4]: phi(t).xreplace({t: 0})
Out[4]: phi(0)

In [5]: phi(t).xreplace({t: 0.0})
Out[5]: 1.61803398874989

In [6]: phi(t).xreplace({t: 5.0})
---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
/home/moorepants/miniconda3/lib/python3.5/site-packages/sympy/core/evalf.py
in evalf(x, prec, options)
   1209     try:
-> 1210         rf = evalf_table[x.func]
   1211         r = rf(x, prec, options)

KeyError: phi

During handling of the above exception, another exception occurred:

TypeError                                 Traceback (most recent call last)
<ipython-input-6-ec5c48b4cb2f> in <module>()
----> 1 phi(t).xreplace({t: 5.0})

/home/moorepants/miniconda3/lib/python3.5/site-packages/sympy/core/basic.py
in xreplace(self, rule)
   1086             args = tuple(args)
   1087             if not _aresame(args, self.args):
-> 1088                 return self.func(*args)
   1089         return self
   1090

/home/moorepants/miniconda3/lib/python3.5/site-packages/sympy/core/function.py
in __new__(cls, *args, **options)
    683     def __new__(cls, *args, **options):
    684         args = list(map(sympify, args))
--> 685         obj = super(AppliedUndef, cls).__new__(cls, *args,
**options)
    686         return obj
    687

/home/moorepants/miniconda3/lib/python3.5/site-packages/sympy/core/function.py
in __new__(cls, *args, **options)
    380         pr2 = min(cls._should_evalf(a) for a in result.args)
    381         if pr2 > 0:
--> 382             return result.evalf(mlib.libmpf.prec_to_dps(pr))
    383         return result
    384

/home/moorepants/miniconda3/lib/python3.5/site-packages/sympy/core/evalf.py
in evalf(self, n, subs, maxn, chop, strict, quad, verbose)
   1315             options['quad'] = quad
   1316         try:
-> 1317             result = evalf(self, prec + 4, options)
   1318         except NotImplementedError:
   1319             # Fall back to the ordinary evalf

/home/moorepants/miniconda3/lib/python3.5/site-packages/sympy/core/evalf.py
in evalf(x, prec, options)
   1215             if 'subs' in options:
   1216                 x = x.subs(evalf_subs(prec, options['subs']))
-> 1217             re, im = x._eval_evalf(prec).as_real_imag()
   1218             if re.has(re_) or im.has(im_):
   1219                 raise NotImplementedError

/home/moorepants/miniconda3/lib/python3.5/site-packages/sympy/core/function.py
in _eval_evalf(self, prec)
    484
    485         with mpmath.workprec(prec):
--> 486             v = func(*args)
    487
    488         return Expr._from_mpmath(v, prec)

/home/moorepants/miniconda3/lib/python3.5/site-packages/sympy/mpmath/ctx_mp_python.py
in __call__(self, prec, dps, rounding)
    344         if not rounding: rounding = rounding2
    345         if dps: prec = dps_to_prec(dps)
--> 346         return self.context.make_mpf(self.func(prec, rounding))
    347
    348     @property

/home/moorepants/miniconda3/lib/python3.5/site-packages/sympy/mpmath/libmp/libelefun.py
in f(prec, rnd)
    114     def f(prec, rnd=round_fast):
    115         wp = prec + 20
--> 116         v = fixed(wp)
    117         if rnd in (round_up, round_ceiling):
    118             v += 1

/home/moorepants/miniconda3/lib/python3.5/site-packages/sympy/mpmath/libmp/libelefun.py
in g(prec, **kwargs)
     95         memo_prec = f.memo_prec
     96         if prec <= memo_prec:
---> 97             return f.memo_val >> (memo_prec-prec)
     98         newprec = int(prec*1.05+10)
     99         f.memo_val = f(newprec, **kwargs)

TypeError: unsupported operand type(s) for >>: 'int' and 'mpf'

Can someone explain to me what is going on? I would expect "t" to be simply
replaced with the number.

Jason
moorepants.info
+01 530-601-9791

-- 
You received this message because you are subscribed to the Google Groups 
"sympy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sympy+unsubscr...@googlegroups.com.
To post to this group, send email to sympy@googlegroups.com.
Visit this group at https://groups.google.com/group/sympy.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/sympy/CAP7f1Ahs4RpJnziUaR0FUS-K_tGSw-0Bzuwg8cXwvNQvVd0qYQ%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to