|
3 | 3 | // XFAIL: valgrind |
4 | 4 |
|
5 | 5 | #include "clad/Differentiator/Differentiator.h" |
| 6 | +#include "../TestUtils.h" |
6 | 7 |
|
7 | 8 | #include <cmath> |
8 | 9 |
|
@@ -155,32 +156,29 @@ double divSum(float* a, float* b, int n) { |
155 | 156 | //CHECK-NEXT: } |
156 | 157 |
|
157 | 158 | int main() { |
158 | | - auto df = clad::estimate_error(runningSum); |
159 | 159 | float arrf[3] = {0.456, 0.77, 0.95}; |
160 | | - double finalError = 0; |
161 | 160 | float darr[3] = {0, 0, 0}; |
162 | 161 | int dn = 0; |
163 | | - df.execute(arrf, 3, darr, &dn, finalError); |
164 | | - printf("Result (RS) = {%.2f, %.2f, %.2f} error = %.5f\n", darr[0], darr[1], |
165 | | - darr[2], finalError); // CHECK-EXEC: Result (RS) = {1.00, 2.00, 1.00} error = 0.00000 |
| 162 | + INIT_ERROR_ESTIMATION(runningSum); |
| 163 | + TEST_ERROR_ESTIMATION(runningSum, /*PrecissionType*/float, arrf, 3, darr, &dn); // CHECK-EXEC: {7.12} |
| 164 | + printf("Result (RS) = {%.2f, %.2f, %.2f}\n", darr[0], darr[1], darr[2]); |
| 165 | + // CHECK-EXEC: Result (RS) = {1.00, 2.00, 1.00} |
166 | 166 |
|
167 | | - finalError = 0; |
168 | 167 | darr[0] = darr[1] = darr[2] = 0; |
169 | 168 | dn = 0; |
170 | 169 | float darr2[3] = {0, 0, 0}; |
171 | | - auto df2 = clad::estimate_error(mulSum); |
172 | | - df2.execute(arrf, arrf, 3, darr, darr2, &dn, finalError); |
173 | | - printf("Result (MS) = {%.2f, %.2f, %.2f}, {%.2f, %.2f, %.2f} error = %.5f\n", |
174 | | - darr[0], darr[1], darr[2], darr2[0], darr2[1], darr2[2], |
175 | | - finalError); // CHECK-EXEC: Result (MS) = {2.18, 2.18, 2.18}, {2.18, 2.18, 2.18} error = 0.00000 |
| 170 | + INIT_ERROR_ESTIMATION(mulSum); |
| 171 | + TEST_ERROR_ESTIMATION(mulSum, /*PrecissionType*/float, arrf, arrf, 3, darr, darr2, &dn); // CHECK-EXEC: {28.85} |
| 172 | + printf("Result (MS) = {%.2f, %.2f, %.2f}, {%.2f, %.2f, %.2f}\n", |
| 173 | + darr[0], darr[1], darr[2], darr2[0], darr2[1], darr2[2]); |
| 174 | + // CHECK-EXEC: Result (MS) = {2.18, 2.18, 2.18}, {2.18, 2.18, 2.18} |
176 | 175 |
|
177 | | - finalError = 0; |
178 | 176 | darr[0] = darr[1] = darr[2] = 0; |
179 | 177 | darr2[0] = darr2[1] = darr2[2] = 0; |
180 | 178 | dn = 0; |
181 | | - auto df3 = clad::estimate_error(divSum); |
182 | | - df3.execute(arrf, arrf, 3, darr, darr2, &dn, finalError); |
183 | | - printf("Result (DS) = {%.2f, %.2f, %.2f}, {%.2f, %.2f, %.2f} error = %.5f\n", |
184 | | - darr[0], darr[1], darr[2], darr2[0], darr2[1], darr2[2], |
185 | | - finalError); // CHECK-EXEC: Result (DS) = {2.19, 1.30, 1.05}, {-2.19, -1.30, -1.05} error = 0.00000 |
| 179 | + INIT_ERROR_ESTIMATION(divSum); |
| 180 | + TEST_ERROR_ESTIMATION(divSum, /*PrecissionType*/float, arrf, arrf, 3, darr, darr2, &dn); // CHECK-EXEC: {12.00} |
| 181 | + printf("Result (DS) = {%.2f, %.2f, %.2f}, {%.2f, %.2f, %.2f}\n", |
| 182 | + darr[0], darr[1], darr[2], darr2[0], darr2[1], darr2[2]); |
| 183 | + // CHECK-EXEC: Result (DS) = {2.19, 1.30, 1.05}, {-2.19, -1.30, -1.05} |
186 | 184 | } |
0 commit comments