[Kst] branches/work/kst/portto4/kst/src/libkstmath

Mike Fenton mike at staikos.net
Tue Nov 4 19:24:55 CET 2008


SVN commit 880090 by fenton:

Convert double comparison to templates.


 A             doublecompare.h   [License: UNKNOWN]
 M  +7 -13     enodes.cpp  


--- branches/work/kst/portto4/kst/src/libkstmath/enodes.cpp #880089:880090
@@ -36,14 +36,8 @@
 #include "debug.h"
 #include "math_kst.h"
 #include "objectstore.h"
+#include "doublecompare.h"
 
-#define SMALL_NON_ZERO 0.00000000001
-#define DOUBLE_EQUAL(X,Y) ( (fabs( (X) - (Y) ) < SMALL_NON_ZERO) || (X == Y) ) /* X == Y */
-#define DOUBLE_LESSTHAN(X,Y) ( (Y) - (X) > SMALL_NON_ZERO ) /* X > Y */
-#define DOUBLE_LESSTHAN_EQUAL(X,Y) ( DOUBLE_LESSTHAN(X, Y) || DOUBLE_EQUAL(X, Y) ) /* X >= Y */
-#define DOUBLE_GREATERTHAN(X,Y) ( (X) - (Y) > SMALL_NON_ZERO ) /* Y > X */
-#define DOUBLE_GREATERTHAN_EQUAL(X,Y) ( DOUBLE_GREATERTHAN(X, Y) || DOUBLE_EQUAL(X, Y) ) /* X >= Y */
-
 extern /*"C"*/ int yyparse(Kst::ObjectStore *store);
 extern /*"C"*/ void *ParsedEquation;
 extern /*"C"*/ struct yy_buffer_state *yy_scan_string(const char*);
@@ -1038,7 +1032,7 @@
 
 
 double LessThan::value(Context *ctx) {
-  return DOUBLE_LESSTHAN(_left->value(ctx), _right->value(ctx)) ? EQ_TRUE : EQ_FALSE;
+  return doubleLessThan(_left->value(ctx), _right->value(ctx)) ? EQ_TRUE : EQ_FALSE;
 }
 
 
@@ -1068,7 +1062,7 @@
 
 
 double LessThanEqual::value(Context *ctx) {
-  return DOUBLE_LESSTHAN_EQUAL(_left->value(ctx), _right->value(ctx)) ? EQ_TRUE : EQ_FALSE;
+  return doubleLessThanEqual(_left->value(ctx), _right->value(ctx)) ? EQ_TRUE : EQ_FALSE;
 }
 
 
@@ -1098,7 +1092,7 @@
 
 
 double GreaterThan::value(Context *ctx) {
-  return DOUBLE_GREATERTHAN(_left->value(ctx), _right->value(ctx)) ? EQ_TRUE : EQ_FALSE;
+  return doubleGreaterThan(_left->value(ctx), _right->value(ctx)) ? EQ_TRUE : EQ_FALSE;
 }
 
 
@@ -1128,7 +1122,7 @@
 
 
 double GreaterThanEqual::value(Context *ctx) {
-  return DOUBLE_GREATERTHAN_EQUAL(_left->value(ctx), _right->value(ctx)) ? EQ_TRUE : EQ_FALSE;
+  return doubleGreaterThanEqual(_left->value(ctx), _right->value(ctx)) ? EQ_TRUE : EQ_FALSE;
 }
 
 
@@ -1158,7 +1152,7 @@
 
 
 double EqualTo::value(Context *ctx) {
-  return DOUBLE_EQUAL(_left->value(ctx), _right->value(ctx)) ? EQ_TRUE : EQ_FALSE;
+  return doubleEqual(_left->value(ctx), _right->value(ctx)) ? EQ_TRUE : EQ_FALSE;
 }
 
 
@@ -1188,7 +1182,7 @@
 
 
 double NotEqualTo::value(Context *ctx) {
-  return _left->value(ctx) != _right->value(ctx) ? EQ_TRUE : EQ_FALSE;
+  return (!doubleEqual(_left->value(ctx), _right->value(ctx))) ? EQ_TRUE : EQ_FALSE;
 }
 
 


More information about the Kst mailing list