But the original *does* evaluate at positive PI.

print(f(pi))
# 0

This is a bug.

On Wednesday, April 3, 2019 at 2:47:31 PM UTC-4, brando...@gmail.com wrote:
>
> The simplest example:
>
> f = piecewise([[[-pi-1, -pi/2], 0], [(-pi/2,pi/2), 1], [[pi/2, pi+1], 0]])
> print(f(-pi))
>
> which gives the traceback:
>
> TypeError                                 Traceback (most recent call last)
> <ipython-input-49-655f6ae30ee7> in <module>()
> ----> 1 f(-pi)
>
> /Applications/SageMath-8.7.app/Contents/Resources/sage/local/lib/python2.7/site-packages/sage/symbolic/expression.pyx
>  in sage.symbolic.expression._eval_on_operands.new_f 
> (build/cythonized/sage/symbolic/expression.cpp:66491)()
>   12677         new_args = list(ex._unpack_operands())
>   12678         new_args.extend(args)
> > 12679         return f(ex, *new_args, **kwds)
>   12680     return new_f
>   12681
>
> /Applications/SageMath-8.7.app/Contents/Resources/sage/local/lib/python2.7/site-packages/sage/functions/piecewise.py
>  in __call__(self, parameters, variable, value, **kwds)
>     472             if value is not None:
>     473                 substitution[variable] = value
> --> 474             return self.subs(substitution)
>     475
>     476         def _fast_float_(self, *args):
>
> /Applications/SageMath-8.7.app/Contents/Resources/sage/local/lib/python2.7/site-packages/sage/symbolic/expression.pyx
>  in sage.symbolic.expression.Expression.substitute 
> (build/cythonized/sage/symbolic/expression.cpp:30025)()
>    5289             
> smap.insert(make_pair((<Expression>self.coerce_in(k))._gobj,
>    5290                                   
> (<Expression>self.coerce_in(v))._gobj))
> -> 5291         res = self._gobj.subs_map(smap, 0)
>    5292         return new_Expression_from_GEx(self._parent, res)
>    5293
>
> /Applications/SageMath-8.7.app/Contents/Resources/sage/local/lib/python2.7/site-packages/sage/functions/piecewise.py
>  in _subs_(self, subs_map, options, parameters, x)
>     226             if hasattr(point, 'pyobject'):
>     227                 # unwrap any numeric values
> --> 228                 point = point.pyobject()
>     229         else:
>     230             raise ValueError('substituting the piecewise variable 
> must result in real number')
>
> /Applications/SageMath-8.7.app/Contents/Resources/sage/local/lib/python2.7/site-packages/sage/symbolic/expression.pyx
>  in sage.symbolic.expression.Expression.pyobject 
> (build/cythonized/sage/symbolic/expression.cpp:6083)()
>     372
>     373 cdef class Expression(CommutativeRingElement):
> --> 374     cpdef object pyobject(self):
>     375         """
>     376         Get the underlying Python object.
>
> /Applications/SageMath-8.7.app/Contents/Resources/sage/local/lib/python2.7/site-packages/sage/symbolic/expression.pyx
>  in sage.symbolic.expression.Expression.pyobject 
> (build/cythonized/sage/symbolic/expression.cpp:6009)()
>     428
>     429         if not is_a_numeric(self._gobj):
> --> 430             raise TypeError("self must be a numeric expression")
>     431         return py_object_from_numeric(self._gobj)
>     432
>
> TypeError: self must be a numeric expression
> sage: f(-pi)
> ---------------------------------------------------------------------------
> TypeError                                 Traceback (most recent call last)
> <ipython-input-50-655f6ae30ee7> in <module>()
> ----> 1 f(-pi)
>
> /Applications/SageMath-8.7.app/Contents/Resources/sage/local/lib/python2.7/site-packages/sage/symbolic/expression.pyx
>  in sage.symbolic.expression._eval_on_operands.new_f 
> (build/cythonized/sage/symbolic/expression.cpp:66491)()
>   12677         new_args = list(ex._unpack_operands())
>   12678         new_args.extend(args)
> > 12679         return f(ex, *new_args, **kwds)
>   12680     return new_f
>   12681
>
> /Applications/SageMath-8.7.app/Contents/Resources/sage/local/lib/python2.7/site-packages/sage/functions/piecewise.py
>  in __call__(self, parameters, variable, value, **kwds)
>     472             if value is not None:
>     473                 substitution[variable] = value
> --> 474             return self.subs(substitution)
>     475
>     476         def _fast_float_(self, *args):
>
> /Applications/SageMath-8.7.app/Contents/Resources/sage/local/lib/python2.7/site-packages/sage/symbolic/expression.pyx
>  in sage.symbolic.expression.Expression.substitute 
> (build/cythonized/sage/symbolic/expression.cpp:30025)()
>    5289             
> smap.insert(make_pair((<Expression>self.coerce_in(k))._gobj,
>    5290                                   
> (<Expression>self.coerce_in(v))._gobj))
> -> 5291         res = self._gobj.subs_map(smap, 0)
>    5292         return new_Expression_from_GEx(self._parent, res)
>    5293
>
> /Applications/SageMath-8.7.app/Contents/Resources/sage/local/lib/python2.7/site-packages/sage/functions/piecewise.py
>  in _subs_(self, subs_map, options, parameters, x)
>     226             if hasattr(point, 'pyobject'):
>     227                 # unwrap any numeric values
> --> 228                 point = point.pyobject()
>     229         else:
>     230             raise ValueError('substituting the piecewise variable 
> must result in real number')
>
> /Applications/SageMath-8.7.app/Contents/Resources/sage/local/lib/python2.7/site-packages/sage/symbolic/expression.pyx
>  in sage.symbolic.expression.Expression.pyobject 
> (build/cythonized/sage/symbolic/expression.cpp:6083)()
>     372
>     373 cdef class Expression(CommutativeRingElement):
> --> 374     cpdef object pyobject(self):
>     375         """
>     376         Get the underlying Python object.
>
> /Applications/SageMath-8.7.app/Contents/Resources/sage/local/lib/python2.7/site-packages/sage/symbolic/expression.pyx
>  in sage.symbolic.expression.Expression.pyobject 
> (build/cythonized/sage/symbolic/expression.cpp:6009)()
>     428
>     429         if not is_a_numeric(self._gobj):
> --> 430             raise TypeError("self must be a numeric expression")
>     431         return py_object_from_numeric(self._gobj)
>     432
>
> TypeError: self must be a numeric expression
>
>
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"sage-support" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-support+unsubscr...@googlegroups.com.
To post to this group, send email to sage-support@googlegroups.com.
Visit this group at https://groups.google.com/group/sage-support.
For more options, visit https://groups.google.com/d/optout.

Reply via email to