#7810: bug in fast_callable (reducing empty sequence)
--------------------------------+-------------------------------------------
Reporter: jason | Owner: AlexGhitza
Type: defect | Status: new
Priority: major | Milestone: sage-4.3.1
Component: basic arithmetic | Keywords:
Work_issues: | Author:
Upstream: N/A | Reviewer:
Merged: |
--------------------------------+-------------------------------------------
{{{
sage: var('x,y')
sage: fast_float(-1/x-1/y+1/(x*y),x,y)
---------------------------------------------------------------------------
TypeError Traceback (most recent call
last)
/home/grout/.sage/temp/tiny/2056/_home_grout__sage_init_sage_0.py in
<module>()
/home/grout/downloads/sage-4.3/local/lib/python2.6/site-
packages/sage/ext/fast_eval.so in sage.ext.fast_eval.fast_float
(sage/ext/fast_eval.c:8434)()
/home/grout/downloads/sage-4.3/local/lib/python2.6/site-
packages/sage/ext/fast_callable.so in sage.ext.fast_callable.fast_callable
(sage/ext/fast_callable.c:3134)()
/home/grout/downloads/sage-4.3/local/lib/python2.6/site-
packages/sage/symbolic/expression.so in
sage.symbolic.expression.Expression._fast_callable_
(sage/symbolic/expression.cpp:24715)()
/home/grout/downloads/sage-4.3/local/lib/python2.6/site-
packages/sage/symbolic/expression_conversions.pyc in fast_callable(ex,
etb)
1353
1354 """
-> 1355 return FastCallableConverter(ex, etb)()
1356
1357 class RingConverter(Converter):
/home/grout/downloads/sage-4.3/local/lib/python2.6/site-
packages/sage/symbolic/expression_conversions.pyc in __call__(self, ex)
212 div = self.get_fake_div(ex)
213 return self.arithmetic(div, div.operator())
--> 214 return self.arithmetic(ex, operator)
215 elif operator in relation_operators:
216 return self.relation(ex, operator)
/home/grout/downloads/sage-4.3/local/lib/python2.6/site-
packages/sage/symbolic/expression_conversions.pyc in arithmetic(self, ex,
operator)
1293 elif operator is _operator.neg:
1294 return self.etb.call(operator, operands[0])
-> 1295 return reduce(lambda x,y: self.etb.call(operator, x,y),
operands)
1296
1297 def symbol(self, ex):
/home/grout/downloads/sage-4.3/local/lib/python2.6/site-
packages/sage/symbolic/expression_conversions.pyc in <lambda>(x, y)
1293 elif operator is _operator.neg:
1294 return self.etb.call(operator, operands[0])
-> 1295 return reduce(lambda x,y: self.etb.call(operator, x,y),
operands)
1296
1297 def symbol(self, ex):
/home/grout/downloads/sage-4.3/local/lib/python2.6/site-
packages/sage/ext/fast_callable.so in
sage.ext.fast_callable.ExpressionTreeBuilder.call
(sage/ext/fast_callable.c:4986)()
/home/grout/downloads/sage-4.3/local/lib/python2.6/site-
packages/sage/ext/fast_callable.so in
sage.ext.fast_callable.ExpressionTreeBuilder.__call__
(sage/ext/fast_callable.c:4313)()
/home/grout/downloads/sage-4.3/local/lib/python2.6/site-
packages/sage/symbolic/expression.so in
sage.symbolic.expression.Expression._fast_callable_
(sage/symbolic/expression.cpp:24715)()
/home/grout/downloads/sage-4.3/local/lib/python2.6/site-
packages/sage/symbolic/expression_conversions.pyc in fast_callable(ex,
etb)
1353
1354 """
-> 1355 return FastCallableConverter(ex, etb)()
1356
1357 class RingConverter(Converter):
/home/grout/downloads/sage-4.3/local/lib/python2.6/site-
packages/sage/symbolic/expression_conversions.pyc in __call__(self, ex)
211 if getattr(self, 'use_fake_div', False) and operator
is _operator.mul:
212 div = self.get_fake_div(ex)
--> 213 return self.arithmetic(div, div.operator())
214 return self.arithmetic(ex, operator)
215 elif operator in relation_operators:
/home/grout/downloads/sage-4.3/local/lib/python2.6/site-
packages/sage/symbolic/expression_conversions.pyc in arithmetic(self, ex,
operator)
1293 elif operator is _operator.neg:
1294 return self.etb.call(operator, operands[0])
-> 1295 return reduce(lambda x,y: self.etb.call(operator, x,y),
operands)
1296
1297 def symbol(self, ex):
/home/grout/downloads/sage-4.3/local/lib/python2.6/site-
packages/sage/symbolic/expression_conversions.pyc in <lambda>(x, y)
1293 elif operator is _operator.neg:
1294 return self.etb.call(operator, operands[0])
-> 1295 return reduce(lambda x,y: self.etb.call(operator, x,y),
operands)
1296
1297 def symbol(self, ex):
/home/grout/downloads/sage-4.3/local/lib/python2.6/site-
packages/sage/ext/fast_callable.so in
sage.ext.fast_callable.ExpressionTreeBuilder.call
(sage/ext/fast_callable.c:4986)()
/home/grout/downloads/sage-4.3/local/lib/python2.6/site-
packages/sage/ext/fast_callable.so in
sage.ext.fast_callable.ExpressionTreeBuilder.__call__
(sage/ext/fast_callable.c:4313)()
/home/grout/downloads/sage-4.3/local/lib/python2.6/site-
packages/sage/symbolic/expression_conversions.pyc in _fast_callable_(self,
etb)
119 [('load_arg', 0), ('load_arg', 1), 'div', 'return']
120 """
--> 121 return fast_callable(self, etb)
122
123 def _fast_float_(self, *vars):
/home/grout/downloads/sage-4.3/local/lib/python2.6/site-
packages/sage/symbolic/expression_conversions.pyc in fast_callable(ex,
etb)
1353
1354 """
-> 1355 return FastCallableConverter(ex, etb)()
1356
1357 class RingConverter(Converter):
/home/grout/downloads/sage-4.3/local/lib/python2.6/site-
packages/sage/symbolic/expression_conversions.pyc in __call__(self, ex)
211 if getattr(self, 'use_fake_div', False) and operator
is _operator.mul:
212 div = self.get_fake_div(ex)
--> 213 return self.arithmetic(div, div.operator())
214 return self.arithmetic(ex, operator)
215 elif operator in relation_operators:
/home/grout/downloads/sage-4.3/local/lib/python2.6/site-
packages/sage/symbolic/expression_conversions.pyc in arithmetic(self, ex,
operator)
1293 elif operator is _operator.neg:
1294 return self.etb.call(operator, operands[0])
-> 1295 return reduce(lambda x,y: self.etb.call(operator, x,y),
operands)
1296
1297 def symbol(self, ex):
TypeError: reduce() of empty sequence with no initial value
sage: fast_callable(-1/x-1/y+1/(x*y),vars=[x,y])
---------------------------------------------------------------------------
TypeError Traceback (most recent call
last)
/home/grout/.sage/temp/tiny/2056/_home_grout__sage_init_sage_0.py in
<module>()
/home/grout/downloads/sage-4.3/local/lib/python2.6/site-
packages/sage/ext/fast_callable.so in sage.ext.fast_callable.fast_callable
(sage/ext/fast_callable.c:3134)()
/home/grout/downloads/sage-4.3/local/lib/python2.6/site-
packages/sage/symbolic/expression.so in
sage.symbolic.expression.Expression._fast_callable_
(sage/symbolic/expression.cpp:24715)()
/home/grout/downloads/sage-4.3/local/lib/python2.6/site-
packages/sage/symbolic/expression_conversions.pyc in fast_callable(ex,
etb)
1353
1354 """
-> 1355 return FastCallableConverter(ex, etb)()
1356
1357 class RingConverter(Converter):
/home/grout/downloads/sage-4.3/local/lib/python2.6/site-
packages/sage/symbolic/expression_conversions.pyc in __call__(self, ex)
212 div = self.get_fake_div(ex)
213 return self.arithmetic(div, div.operator())
--> 214 return self.arithmetic(ex, operator)
215 elif operator in relation_operators:
216 return self.relation(ex, operator)
/home/grout/downloads/sage-4.3/local/lib/python2.6/site-
packages/sage/symbolic/expression_conversions.pyc in arithmetic(self, ex,
operator)
1293 elif operator is _operator.neg:
1294 return self.etb.call(operator, operands[0])
-> 1295 return reduce(lambda x,y: self.etb.call(operator, x,y),
operands)
1296
1297 def symbol(self, ex):
/home/grout/downloads/sage-4.3/local/lib/python2.6/site-
packages/sage/symbolic/expression_conversions.pyc in <lambda>(x, y)
1293 elif operator is _operator.neg:
1294 return self.etb.call(operator, operands[0])
-> 1295 return reduce(lambda x,y: self.etb.call(operator, x,y),
operands)
1296
1297 def symbol(self, ex):
/home/grout/downloads/sage-4.3/local/lib/python2.6/site-
packages/sage/ext/fast_callable.so in
sage.ext.fast_callable.ExpressionTreeBuilder.call
(sage/ext/fast_callable.c:4986)()
/home/grout/downloads/sage-4.3/local/lib/python2.6/site-
packages/sage/ext/fast_callable.so in
sage.ext.fast_callable.ExpressionTreeBuilder.__call__
(sage/ext/fast_callable.c:4313)()
/home/grout/downloads/sage-4.3/local/lib/python2.6/site-
packages/sage/symbolic/expression.so in
sage.symbolic.expression.Expression._fast_callable_
(sage/symbolic/expression.cpp:24715)()
/home/grout/downloads/sage-4.3/local/lib/python2.6/site-
packages/sage/symbolic/expression_conversions.pyc in fast_callable(ex,
etb)
1353
1354 """
-> 1355 return FastCallableConverter(ex, etb)()
1356
1357 class RingConverter(Converter):
/home/grout/downloads/sage-4.3/local/lib/python2.6/site-
packages/sage/symbolic/expression_conversions.pyc in __call__(self, ex)
211 if getattr(self, 'use_fake_div', False) and operator
is _operator.mul:
212 div = self.get_fake_div(ex)
--> 213 return self.arithmetic(div, div.operator())
214 return self.arithmetic(ex, operator)
215 elif operator in relation_operators:
/home/grout/downloads/sage-4.3/local/lib/python2.6/site-
packages/sage/symbolic/expression_conversions.pyc in arithmetic(self, ex,
operator)
1293 elif operator is _operator.neg:
1294 return self.etb.call(operator, operands[0])
-> 1295 return reduce(lambda x,y: self.etb.call(operator, x,y),
operands)
1296
1297 def symbol(self, ex):
/home/grout/downloads/sage-4.3/local/lib/python2.6/site-
packages/sage/symbolic/expression_conversions.pyc in <lambda>(x, y)
1293 elif operator is _operator.neg:
1294 return self.etb.call(operator, operands[0])
-> 1295 return reduce(lambda x,y: self.etb.call(operator, x,y),
operands)
1296
1297 def symbol(self, ex):
/home/grout/downloads/sage-4.3/local/lib/python2.6/site-
packages/sage/ext/fast_callable.so in
sage.ext.fast_callable.ExpressionTreeBuilder.call
(sage/ext/fast_callable.c:4986)()
/home/grout/downloads/sage-4.3/local/lib/python2.6/site-
packages/sage/ext/fast_callable.so in
sage.ext.fast_callable.ExpressionTreeBuilder.__call__
(sage/ext/fast_callable.c:4313)()
/home/grout/downloads/sage-4.3/local/lib/python2.6/site-
packages/sage/symbolic/expression_conversions.pyc in _fast_callable_(self,
etb)
119 [('load_arg', 0), ('load_arg', 1), 'div', 'return']
120 """
--> 121 return fast_callable(self, etb)
122
123 def _fast_float_(self, *vars):
/home/grout/downloads/sage-4.3/local/lib/python2.6/site-
packages/sage/symbolic/expression_conversions.pyc in fast_callable(ex,
etb)
1353
1354 """
-> 1355 return FastCallableConverter(ex, etb)()
1356
1357 class RingConverter(Converter):
/home/grout/downloads/sage-4.3/local/lib/python2.6/site-
packages/sage/symbolic/expression_conversions.pyc in __call__(self, ex)
211 if getattr(self, 'use_fake_div', False) and operator
is _operator.mul:
212 div = self.get_fake_div(ex)
--> 213 return self.arithmetic(div, div.operator())
214 return self.arithmetic(ex, operator)
215 elif operator in relation_operators:
/home/grout/downloads/sage-4.3/local/lib/python2.6/site-
packages/sage/symbolic/expression_conversions.pyc in arithmetic(self, ex,
operator)
1293 elif operator is _operator.neg:
1294 return self.etb.call(operator, operands[0])
-> 1295 return reduce(lambda x,y: self.etb.call(operator, x,y),
operands)
1296
1297 def symbol(self, ex):
TypeError: reduce() of empty sequence with no initial value
}}}
--
Ticket URL: <http://trac.sagemath.org/sage_trac/ticket/7810>
Sage <http://www.sagemath.org>
Sage: Creating a Viable Open Source Alternative to Magma, Maple, Mathematica,
and MATLAB
--
You received this message because you are subscribed to the Google Groups
"sage-trac" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/sage-trac?hl=en.