Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/eqnparser.py
diff options
context:
space:
mode:
authorReinier Heeres <reinier@heeres.eu>2007-11-18 19:34:59 (GMT)
committer Reinier Heeres <reinier@heeres.eu>2007-11-18 19:34:59 (GMT)
commitf8a8343c92f8ab54614660c235c6e6c18e5464db (patch)
treec61d024118ce3dc7ca3da8b9e210a65601b9f6e6 /eqnparser.py
parent29e05573dd8f69fe474433dac8873fab7aeda6f0 (diff)
Included support for rational numbers
Diffstat (limited to 'eqnparser.py')
-rw-r--r--eqnparser.py13
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)