diff options
author | Reinier Heeres <reinier@heeres.eu> | 2007-11-18 19:34:59 (GMT) |
---|---|---|
committer | Reinier Heeres <reinier@heeres.eu> | 2007-11-18 19:34:59 (GMT) |
commit | f8a8343c92f8ab54614660c235c6e6c18e5464db (patch) | |
tree | c61d024118ce3dc7ca3da8b9e210a65601b9f6e6 /eqnparser.py | |
parent | 29e05573dd8f69fe474433dac8873fab7aeda6f0 (diff) |
Included support for rational numbers
Diffstat (limited to 'eqnparser.py')
-rw-r--r-- | eqnparser.py | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/eqnparser.py b/eqnparser.py index 3264da2..b53e41d 100644 --- a/eqnparser.py +++ b/eqnparser.py @@ -26,6 +26,8 @@ from mathlib import MathLib from plotlib import PlotLib from eqnparserhelp import EqnParserHelp +from rational import Rational + from gettext import gettext as _ class Equation: @@ -210,8 +212,8 @@ class EqnParser: self.register_operator('*', self.OP_DIADIC, 1, lambda x: self.ml.mul(x[0], x[1])) self.register_operator(u'⨯', self.OP_DIADIC, 1, lambda x: self.ml.mul(x[0], x[1])) self.register_operator(u'×', self.OP_DIADIC, 1, lambda x: self.ml.mul(x[0], x[1])) - self.register_operator('/', self.OP_DIADIC, 1, lambda x: self.ml.div(x[0], x[1])) - self.register_operator(u'÷', self.OP_DIADIC, 1, lambda x: self.ml.div(x[0], x[1])) + self.register_operator('/', self.OP_DIADIC, 1, lambda x: self.div_operator(x[0], x[1])) + self.register_operator(u'÷', self.OP_DIADIC, 1, lambda x: self.div_operator(x[0], x[1])) self.register_operator('^', self.OP_DIADIC, 2, lambda x: self.ml.pow(x[0], x[1])) self.register_operator('**', self.OP_DIADIC, 2, lambda x: self.ml.pow(x[0], x[1])) @@ -639,3 +641,10 @@ class EqnParser: ret += op + " " return ret + def div_operator(self, a, b): + if isinstance(a, Rational) or isinstance(b, Rational): + return a / b + elif self.ml.is_int(a) and self.ml.is_int(b): + return Rational(a, b) + else: + return self.ml.div(a, b) |