def testG0(self): "basic equalities" f1 = F(1) f2 = F(2) f3 = F(3) f7 = F(7) g1 = G(1) g2 = G(2) g3 = G(3) g7 = G(7) self.assertEqual(str(f1), str(g1)) self.assertEqual(str(f1/f3), str(g1/g3)) self.assertEqual(str(f2/f3), str(g2/g3)) self.assertEqual(F.mul(f2, f3, round='down'), G.mul(g2, g3, round='down')) self.assertEqual(F.mul(f2, f3, round='up'), G.mul(g2, g3, round='up')) self.assertEqual(F.div(f2, f3, round='down'), G.div(g2, g3, round='down')) self.assertEqual(F.div(f2, f3, round='up'), G.div(g2, g3, round='up')) self.assertEqual(F.muldiv(f2, f3, f7, round='down'), G.muldiv(g2, g3, g7, round='down')) self.assertEqual(F.muldiv(f2, f3, f7, round='up'), G.muldiv(g2, g3, g7, round='up'))
def testRoundUpExact(self): "up is bigger by an epsilon but not if exact result" self.assertEqual(F.div(F(2), F(4), round='up')._value, 500)
def testRoundDownExact(self): "no rounding if exact result" self.assertEqual(F.div(F(2), F(4), round='down')._value, 500)
def testRoundUp(self): "up is bigger by an epsilon" self.assertEqual(F.div(F(1), F(3), round='up')._value, 334)
def testRoundDown(self): "down is same as default" self.assertEqual(F.div(F(1), F(3), round='down')._value, 333)