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