diff --git a/scripts/cov.py b/scripts/cov.py index 1df42ce7..a69e33c0 100755 --- a/scripts/cov.py +++ b/scripts/cov.py @@ -169,7 +169,12 @@ class RFrac(co.namedtuple('RFrac', 'a,b')): return '%11s' % (self,) def notes(self): - t = self.a.x/self.b.x if self.b.x else 1.0 + if self.b.x == 0 and self.a.x == 0: + t = 1.0 + elif self.b.x == 0: + t = mt.copysign(mt.inf, self.a.x) + else: + t = self.a.x / self.b.x return ['∞%' if t == +mt.inf else '-∞%' if t == -mt.inf else '%.1f%%' % (100*t)] diff --git a/scripts/csv.py b/scripts/csv.py index ac81e57d..c6d52e13 100755 --- a/scripts/csv.py +++ b/scripts/csv.py @@ -261,7 +261,12 @@ class RFrac(co.namedtuple('RFrac', 'a,b')): return '%11s' % (self,) def notes(self): - t = self.a.x/self.b.x if self.b.x else 1.0 + if self.b.x == 0 and self.a.x == 0: + t = 1.0 + elif self.b.x == 0: + t = mt.copysign(mt.inf, self.a.x) + else: + t = self.a.x / self.b.x return ['∞%' if t == +mt.inf else '-∞%' if t == -mt.inf else '%.1f%%' % (100*t)] @@ -735,8 +740,10 @@ class RExpr: def eval(self, fields={}): v = RFrac(self.a.eval(fields)) - if not float(v.b): + if not float(v.b) and not float(v.a): return RFloat(1) + elif not float(v.b): + return RFloat(mt.copysign(mt.inf, float(v.a))) else: return RFloat(float(v.a) / float(v.b))