#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.


Reply via email to