+/**
+ * Test mathematical operations on the Real type and consistency with double
+ */
+
#include "main.h"
#include "real.h"
using namespace std;
using namespace IPDF;
-#define TEST_CASES 100
+#define TEST_CASES 1000
+
+static double g_totalerror = 0;
-bool NotEqual(double a, double b, double threshold=1e-2)
+bool NotEqual(double a, double b, double threshold=1e-1)
{
- return (fabs(a-b) > threshold);
+ double error = fabs(a-b);
+ g_totalerror += error;
+ return (error > threshold);
}
int main(int argc, char ** argv)
unsigned failures = 0;
for (unsigned i = 0; i < TEST_CASES; ++i)
{
- double da = (double)(rand()%100 + 1) / (double)(rand()%100 + 1);
- double db = (double)(rand()%100 + 1) / (double)(rand()%100 + 1);
+ //Debug("Test %u of %u", i, TEST_CASES);
+ double da = (double)(rand() + 1) / (double)(rand() + 1);
+ double db = (double)(rand() + 1) / (double)(rand() + 1);
if (rand() % 2 == 0)
da = -da;
}
}
Debug("Completed %u test cases with total of %u operations, %u failures", TEST_CASES, 12*TEST_CASES, failures);
+ Debug("Total accumulated difference between Real and Double operations was %f", g_totalerror);
}