From 52d8d769678a388ef96fff34a0d92efb7c895a04 Mon Sep 17 00:00:00 2001 From: Gabriel Studer <gabriel.studer@stud.unibas.ch> Date: Wed, 30 Jan 2013 14:46:51 +0100 Subject: [PATCH] proper check, whether number is NaN using x!=x Other possibility would be to use math.isnan(x), but this has been introduced in python 2.6 and doesn't work in older versions. --- modules/base/pymod/table.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/modules/base/pymod/table.py b/modules/base/pymod/table.py index 45e4b6154..65c9eba43 100644 --- a/modules/base/pymod/table.py +++ b/modules/base/pymod/table.py @@ -821,10 +821,10 @@ Statistics for column %(col)s def _EvaluateEqualNone(self, lhs, rhs): - return (lhs==None or lhs==float('NaN')) == (rhs==None or rhs==float('NaN')) + return (lhs==None or lhs!=lhs) == (rhs==None or rhs!=rhs) def _EvaluateNonEqualNone(self, lhs, rhs): - return (lhs==None or lhs==float('NaN')) != (rhs==None or rhs==float('NaN')) + return (lhs==None or lhs!=lhs) != (rhs==None or rhs!=rhs) def _EvaluateAnd(self, lhs, rhs): return lhs and rhs @@ -851,22 +851,22 @@ Statistics for column %(col)s return lhs>=rhs def _EvaluateAdd(self, lhs, rhs): - if lhs==None or lhs==float('NaN') or rhs==None or rhs==float('NaN'): + if lhs==None or lhs!=lhs or rhs==None or rhs!=rhs: return None return lhs+rhs def _EvaluateSubtract(self, lhs, rhs): - if lhs==None or lhs==float('NaN') or rhs==None or rhs==float('NaN'): + if lhs==None or lhs!=lhs or rhs==None or rhs!=rhs: return None return lhs-rhs def _EvaluateMultiply(self, lhs, rhs): - if lhs==None or lhs==float('NaN') or rhs==None or rhs==float('NaN'): + if lhs==None or lhs!=lhs or rhs==None or rhs!=rhs: return None return lhs*rhs def _EvaluateDivide(self, lhs, rhs): - if lhs==None or lhs==float('NaN') or rhs==None or rhs==float('NaN'): + if lhs==None or lhs!=lhs or rhs==None or rhs!=rhs: return None return lhs/rhs @@ -881,7 +881,7 @@ Statistics for column %(col)s return self._EvaluateDivide(lhs, rhs) elif op=='*': return self._EvaluateMultiply(lhs, rhs) - elif lhs==None or lhs==float('NaN') or rhs==None or rhs==float('NaN'): + elif lhs==None or lhs!=lhs or rhs==None or rhs!=rhs: if op=='=': return self._EvaluateEqualNone(lhs,rhs) elif op=='!=': -- GitLab