#6478 NORM Never A: Fairly simple calculations involving pi failing
Zarro Boogs per Child
bugtracker at laptop.org
Fri Feb 15 12:35:45 EST 2008
#6478: Fairly simple calculations involving pi failing
---------------------------------+------------------------------------------
Reporter: Rmyers | Owner: rwh
Type: defect | Status: new
Priority: normal | Milestone: Never Assigned
Component: calculator-activity | Version:
Keywords: | Verified: 0
Blocking: | Blockedby:
---------------------------------+------------------------------------------
Open Calculate
(note: I'm using 'uparrow' for the key, so that trac doesn't reformat this
on me)
4 uparrow 2 = 16
x:5
x uparrow 2 = 25
pi*4 = 12.5663706
pi*x = 15.7079632
so far, so good
pi*4 uparrow 2 -- no action on enter
pi*x uparrow 2 -- no action on enter
The tracebacks follow:
<type 'exceptions.TypeError'> Traceback (most recent call
last)
/usr/share/activities/Calculate.activity/calculate.py in
keypress_cb(self=<Calculate object at 0x848cdec (SugarActivity at
0x8a18800)>, widget=<Calculate object at 0x848cdec (SugarActivity at
0x8a18800)>, event=<GdkEvent at 0x8912e88>)
702 self.button_pressed(self.TYPE_TEXT, f)
703 else:
--> 704 return f(self)
f = <function <lambda> at 0x881bed4>
self = <Calculate object at 0x848cdec (SugarActivity at
0x8a18800)>
705
706 return True
/usr/share/activities/Calculate.activity/calculate.py in
<lambda>(o=<Calculate object at 0x848cdec (SugarActivity at 0x8a18800)>)
110
111 KEYMAP = {
--> 112 'Return': lambda o: o.process(),
o = <Calculate object at 0x848cdec (SugarActivity at 0x8a18800)>
o.process = <bound method Calculate.process of <Calculate object
at 0x848cdec (SugarActivity at 0x8a18800)>>
113 'period': '.',
114 'equal': '=',
/usr/share/activities/Calculate.activity/calculate.py in
process(self=<Calculate object at 0x848cdec (SugarActivity at 0x8a18800)>)
327 label = unicode(self.label_entry.get_text())
328 _logger.debug('process(): parsing %r, label: %r', s,
label)
--> 329 res = self.parser.parse(s)
res = undefined
self.parser.parse = <bound method EqnParser.parse of
<eqnparser.EqnParser instance at 0x8548cac>>
s = u'pi*4^2'
330
331 ansvar = self.parser.get_var('Ans')
/usr/share/activities/Calculate.activity/eqnparser.py in
parse(self=<eqnparser.EqnParser instance at 0x8548cac>, eqn=u'pi*4^2',
reset=True)
615 oldps = self.ps
616 self.ps = ParserState(eqn)
--> 617 ret = self._parse(self.ps)
ret = undefined
self._parse = <bound method EqnParser._parse of
<eqnparser.EqnParser instance at 0x8548cac>>
self.ps = <eqnparser.ParserState instance at 0x884976c>
618 if oldps is not None:
619 oldps.copy_error(self.ps)
/usr/share/activities/Calculate.activity/eqnparser.py in
_parse(self=<eqnparser.EqnParser instance at 0x8548cac>,
ps=<eqnparser.ParserState instance at 0x884976c>, presedence=None)
545 return None
546
--> 547 res = of([left_val, right_val])
res = undefined
of = <function <lambda> at 0x882bcdc>
left_val = Decimal("3.1415926535")
right_val = 16.0
548 _logger.debug('OP: %s, %s ==> %s',
self.ml.format_number(left_val), self.ml.format_number(right_val),
self.ml.format_number(res))
549 left_val = res
/usr/share/activities/Calculate.activity/eqnparser.py in
<lambda>(x=[Decimal("3.1415926535"), 16.0])
208 self.register_operator('-', self.OP_DIADIC, 0, lambda x:
self.ml.sub(x[0], x[1]))
209 self.register_operator('-', self.OP_PRE, 1, lambda x:
self.ml.negate(x[0]))
--> 210 self.register_operator('*', self.OP_DIADIC, 1, lambda x:
self.ml.mul(x[0], x[1]))
global self.register_operator = undefined
global self.OP_DIADIC = undefined
x = [Decimal("3.1415926535"), 16.0]
global self.ml.mul = undefined
211 self.register_operator(u'⨯', self.OP_DIADIC, 1, lambda x:
self.ml.mul(x[0], x[1]))
212 self.register_operator(u'×', self.OP_DIADIC, 1, lambda x:
self.ml.mul(x[0], x[1]))
/usr/share/activities/Calculate.activity/mathlib.py in
mul(self=<mathlib.MathLib instance at 0x854894c>,
x=Decimal("3.1415926535"), y=16.0)
200
201 def mul(self, x, y):
--> 202 return x * y
x = Decimal("3.1415926535")
y = 16.0
203
204 def div(self, x, y):
<type 'exceptions.TypeError'>: unsupported operand type(s) for *:
'Decimal' and 'float'
---------------------------------------------------------------------------
<type 'exceptions.TypeError'> Traceback (most recent call
last)
/usr/share/activities/Calculate.activity/calculate.py in
keypress_cb(self=<Calculate object at 0x848cdec (SugarActivity at
0x8a18800)>, widget=<Calculate object at 0x848cdec (SugarActivity at
0x8a18800)>, event=<GdkEvent at 0x8912ca8>)
702 self.button_pressed(self.TYPE_TEXT, f)
703 else:
--> 704 return f(self)
f = <function <lambda> at 0x881bed4>
self = <Calculate object at 0x848cdec (SugarActivity at
0x8a18800)>
705
706 return True
/usr/share/activities/Calculate.activity/calculate.py in
<lambda>(o=<Calculate object at 0x848cdec (SugarActivity at 0x8a18800)>)
110
111 KEYMAP = {
--> 112 'Return': lambda o: o.process(),
o = <Calculate object at 0x848cdec (SugarActivity at 0x8a18800)>
o.process = <bound method Calculate.process of <Calculate object
at 0x848cdec (SugarActivity at 0x8a18800)>>
113 'period': '.',
114 'equal': '=',
/usr/share/activities/Calculate.activity/calculate.py in
process(self=<Calculate object at 0x848cdec (SugarActivity at 0x8a18800)>)
327 label = unicode(self.label_entry.get_text())
328 _logger.debug('process(): parsing %r, label: %r', s,
label)
--> 329 res = self.parser.parse(s)
res = undefined
self.parser.parse = <bound method EqnParser.parse of
<eqnparser.EqnParser instance at 0x8548cac>>
s = u'pi*x^2'
330
331 ansvar = self.parser.get_var('Ans')
/usr/share/activities/Calculate.activity/eqnparser.py in
parse(self=<eqnparser.EqnParser instance at 0x8548cac>, eqn=u'pi*x^2',
reset=True)
615 oldps = self.ps
616 self.ps = ParserState(eqn)
--> 617 ret = self._parse(self.ps)
ret = undefined
self._parse = <bound method EqnParser._parse of
<eqnparser.EqnParser instance at 0x8548cac>>
self.ps = <eqnparser.ParserState instance at 0x8753fec>
618 if oldps is not None:
619 oldps.copy_error(self.ps)
/usr/share/activities/Calculate.activity/eqnparser.py in
_parse(self=<eqnparser.EqnParser instance at 0x8548cac>,
ps=<eqnparser.ParserState instance at 0x8753fec>, presedence=None)
545 return None
546
--> 547 res = of([left_val, right_val])
res = undefined
of = <function <lambda> at 0x882bcdc>
left_val = Decimal("3.1415926535")
right_val = 25.0
548 _logger.debug('OP: %s, %s ==> %s',
self.ml.format_number(left_val), self.ml.format_number(right_val),
self.ml.format_number(res))
549 left_val = res
/usr/share/activities/Calculate.activity/eqnparser.py in
<lambda>(x=[Decimal("3.1415926535"), 25.0])
208 self.register_operator('-', self.OP_DIADIC, 0, lambda x:
self.ml.sub(x[0], x[1]))
209 self.register_operator('-', self.OP_PRE, 1, lambda x:
self.ml.negate(x[0]))
--> 210 self.register_operator('*', self.OP_DIADIC, 1, lambda x:
self.ml.mul(x[0], x[1]))
global self.register_operator = undefined
global self.OP_DIADIC = undefined
x = [Decimal("3.1415926535"), 25.0]
global self.ml.mul = undefined
211 self.register_operator(u'⨯', self.OP_DIADIC, 1, lambda x:
self.ml.mul(x[0], x[1]))
212 self.register_operator(u'×', self.OP_DIADIC, 1, lambda x:
self.ml.mul(x[0], x[1]))
/usr/share/activities/Calculate.activity/mathlib.py in
mul(self=<mathlib.MathLib instance at 0x854894c>,
x=Decimal("3.1415926535"), y=25.0)
200
201 def mul(self, x, y):
--> 202 return x * y
x = Decimal("3.1415926535")
y = 25.0
203
204 def div(self, x, y):
<type 'exceptions.TypeError'>: unsupported operand type(s) for *:
'Decimal' and 'float'
--
Ticket URL: <http://dev.laptop.org/ticket/6478>
One Laptop Per Child <http://dev.laptop.org>
OLPC bug tracking system
More information about the Bugs
mailing list