I made a modification so it can take 1, 3, 4, ... number of operands
nicely.
def symround(x, ndigits=0):
if hasattr(x,'operator') and x.operator():
o = map( lambda y : symround(y,ndigits=ndigits) , x.operands() )
r = o[0]
for i in xrange(1,x.nops()):
r = x.operator()(r,o[i])
return r
try:
r = round(x,ndigits=ndigits)
if r == x: return x
else: return r
except TypeError:
return x
Then extra 'if r == x' check was introduced to avoid transformation of
unrounded ints into floats (avoiding 2x to 2.0x).
I may be ugly in terms of efficiency, but where I need it, it is a
perfect workaround.
Thanks,
Cristóvão Sousa
--
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-support
URL: http://www.sagemath.org