It's a bug. The code in trigonometric.py should be using (self.args[0] + 1).is_nonnegative and (self.args[0] - 1).is_nonpositive.
Aaron Meurer On Fri, Mar 7, 2014 at 1:43 PM, Manuel Schleiffelder <[email protected]> wrote: > hello everyone, > > i am working on plots in the complex-plane and got stuck trying to > sutbstitue values to the symbols of a certain class of equations. the wired > thing is, that i only get the "TypeError" the first time i substitute(In > [3]:). second try it works(In [4]:) like a charm until i alter the equation > or start over again. > > i was able to track the error down to a simpler form of nested functions > (mathematically senseless, just for demonstration purposes): > >>>> re(acos(re(x))).subs(x,5) > > where i can exchange the complex functions arbitrary by another one (re(), > im(), Abs(), arg()) and the trigonometric function "acos()" can also be a > "asin()" still producing the same error. this also occurs in python 2.7. > > any idea anybody? is this a bug? > > great thanks, > manuel > > > Python 3.2.3 (default, Sep 25 2013, 19:36:10) > Type "copyright", "credits" or "license" for more information. > > IPython 0.13.1.rc2 -- 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]: x = symbols('x') > > In [3]: re(acos(re(x))).subs(x,5) > --------------------------------------------------------------------------- > TypeError Traceback (most recent call last) > <ipython-input-3-515558ca2309> in <module>() > ----> 1 re(acos(re(x))).subs(x,5) > > /usr/local/lib/python3.2/dist-packages/sympy/core/cache.py in wrapper(*args, > **kw_args) > 91 except (KeyError, TypeError): > 92 pass > ---> 93 r = func(*args, **kw_args) > 94 try: > 95 func_cache_it_cache[k] = r > > /usr/local/lib/python3.2/dist-packages/sympy/core/function.py in > __new__(cls, *args, **options) > 366 > 367 evaluate = options.get('evaluate', True) > --> 368 result = super(Function, cls).__new__(cls, *args, **options) > 369 if not evaluate or not isinstance(result, cls): > 370 return result > > /usr/local/lib/python3.2/dist-packages/sympy/core/cache.py in wrapper(*args, > **kw_args) > 91 except (KeyError, TypeError): > 92 pass > ---> 93 r = func(*args, **kw_args) > 94 try: > 95 func_cache_it_cache[k] = r > > /usr/local/lib/python3.2/dist-packages/sympy/core/function.py in > __new__(cls, *args, **options) > 196 > 197 if evaluate: > --> 198 evaluated = cls.eval(*args) > 199 if evaluated is not None: > 200 return evaluated > > /usr/local/lib/python3.2/dist-packages/sympy/functions/elementary/complexes.py > in eval(cls, arg) > 50 if arg is S.NaN: > 51 return S.NaN > ---> 52 elif arg.is_real: > 53 return arg > 54 elif arg.is_imaginary: > > /usr/local/lib/python3.2/dist-packages/sympy/core/assumptions.py in > getit(self) > 142 if self._assumptions is self.default_assumptions: > 143 self._assumptions = self.default_assumptions.copy() > --> 144 return _ask(fact, self) > 145 > 146 getit.func_name = as_property(fact) > > /usr/local/lib/python3.2/dist-packages/sympy/core/assumptions.py in > _ask(fact, obj) > 185 pass > 186 else: > --> 187 a = evaluate(obj) > 188 if a is not None: > 189 assumptions.deduce_all_facts(((fact, a),)) > > /usr/local/lib/python3.2/dist-packages/sympy/functions/elementary/trigonometric.py > in _eval_is_real(self) > 1546 > 1547 def _eval_is_real(self): > -> 1548 return self.args[0].is_real and (self.args[0] >= -1 and > self.args[0] <= 1) > 1549 > 1550 def _eval_rewrite_as_log(self, x): > > /usr/local/lib/python3.2/dist-packages/sympy/core/relational.py in > __nonzero__(self) > 109 > 110 def __nonzero__(self): > --> 111 raise TypeError("symbolic boolean expression has no truth > value.") > 112 > 113 __bool__ = __nonzero__ > > TypeError: symbolic boolean expression has no truth value. > > In [4]: re(acos(re(x))).subs(x,5) > Out[4]: re(acos(5)) > > In [5]: > > > > -- > 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 [email protected]. > To post to this group, send email to [email protected]. > Visit this group at http://groups.google.com/group/sympy. > To view this discussion on the web visit > https://groups.google.com/d/msgid/sympy/2c570431-8d88-4db0-8a59-b954dba91c90%40googlegroups.com. > For more options, visit https://groups.google.com/d/optout. -- 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 [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/sympy. To view this discussion on the web visit https://groups.google.com/d/msgid/sympy/CAKgW%3D6%2B-WdhuwV1MxOG2uCUfqvwGiwjs5_YtNb%3Dp_XfWrXg0nw%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
