Add #define to transform Object bounds on the fly
[ipdf/code.git] / src / tests / realops.cpp
index 83a5241..dd45aa8 100644 (file)
@@ -1,3 +1,7 @@
+/**
+ * Test mathematical operations on the Real type and consistency with double
+ */
+
 #include "main.h"
 #include "real.h"
 
@@ -8,9 +12,9 @@ using namespace IPDF;
 
 static double g_totalerror = 0;
 
-bool NotEqual(double a, double b, double threshold=1e-1)
+bool NotEqual(double a, double b, double threshold=1e-4)
 {
-       double error = (fabs(a-b) > threshold);
+       double error = fabs(a-b);
        g_totalerror += error;
        return (error > threshold);
 }
@@ -18,6 +22,7 @@ bool NotEqual(double a, double b, double threshold=1e-1)
 int main(int argc, char ** argv)
 {
        srand(time(NULL));
+       DebugRealInfo();
        
        unsigned failures = 0;
        for (unsigned i = 0; i < TEST_CASES; ++i)
@@ -111,7 +116,18 @@ int main(int argc, char ** argv)
                {
                        failures++;
                        Warn("a /= b = %f should be %f, a before op was %f", Double(a), da, Double(abeforeop));
+               }
+               if (NotEqual(Double(a*0.0 + 1.0), da*0.0 + 1.0))
+               {
+                       failures++;
+                       Warn("a * 0 = %f should be %f, a before op was %f", Double(a), da, Double(abeforeop));
                }               
+
+               if (NotEqual(Double(a=b), da=db))
+               {
+                       failures++;
+                       Warn("a = b = %f should be %f, a before op was %f", Double(a), da, Double(abeforeop));
+               }
                
                if (failures > old_failures)
                {

UCC git Repository :: git.ucc.asn.au