On Thursday, June 5, 2014 6:32:42 PM UTC-7, Hal Snyder wrote:
>
> IIs there a simple way to take n() of things without getting into the
> following?
>
You could automate the application, but you'll quickly see you need to be a
bit careful:
#unfortunately, the operators returned for sums and products of multiple
#arguments are callable, but don't accept multiple arguments, so we need to
#do a little surgery ourselves (borrow the functionality from elsewhere):
opdict = {
operator.mul : sage.interfaces.maxima_lib.mul_vararg,
operator.add : sage.interfaces.maxima_lib.add_vararg,
}
def recn(e):
try:
return n(e)
except TypeError:
pass
op=e.operator()
if op:
if op in opdict:
op = opdict[op]
return op(*[recn(c) for c in e.operands()])
else:
return e
--
This now works, a little bit:
sage: recn(area)
21.5161409036487*meter^2.00000000000000
As you can see, the exponent in meter^2 was also numerified. Perhaps you
didn't want that?
Nonetheless, a recursive n(..) method seems eminently reasonable and
desirable to implement.
--
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 [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sage-support.
For more options, visit https://groups.google.com/d/optout.