[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