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.

Reply via email to