4 // Test real operations
9 * Test adding and subtracting values in a range
10 * This is an identity; the result should be zero.
13 T AddSub(const T & start, const T & end, const T & delta = T(1))
16 for (T a = start; a < end; a += delta)
19 for (T b = start; b < end; b += delta)
23 for (T b = start; b < end; b += delta)
28 for (T a = start; a < end; a += delta)
31 for (T b = start; b < end; b += delta)
35 for (T b = start; b < end; b += delta)
44 T MulDiv(const T & start, const T & end, const T & delta = T(1))
47 for (T a = start; a < end; a += delta)
50 for (T b = start; b < end; b += delta)
54 for (T b = start; b < end; b += delta)
59 for (T a = start; a < end; a += delta)
62 for (T b = start; b < end; b += delta)
66 for (T b = start; b < end; b += delta)
77 void RandomOp(T & a, int recurses=0, const T & max = 1e-6, const T & min = 1e-15)
81 b = (min + (rand() % (int64_t)(max)));
83 b = RandomOps(recurses-1, max, min);
102 * Test replying repeated operations randomly
105 T RandomOps(int ops, int recurses=0, const T & min = 1e-15 ,const T & max = 1e-6)
107 T a = (min + (rand() % (int64_t)(max)));
111 for (int i = 0; i < ops; ++i)
113 RandomOp(a, recurses, min, max);
120 * Test multiplying and dividing values in a range
121 * Such that the result is one
124 T RandomOp(const T & start, const T & end, const T & delta = T(1))
127 for (T a = start; a < end; a += delta)
130 for (T b = start; b < end; b += delta)
134 for (T b = start; b < end; b += delta)
139 for (T a = start; a < end; a += a)
142 for (T b = start; b < end; b += delta)
146 for (T b = start; b < end; b += delta)