@@ -332,21 +332,22 @@ void check_solution(const size_t num_times, T const* a, T const* b, T const* c,
332
332
size_t failed = 0 ;
333
333
T max_rel = std::numeric_limits<T>::epsilon () * T (100.0 );
334
334
T max_rel_dot = std::numeric_limits<T>::epsilon () * T (10000000.0 );
335
- auto check = [&](const char * name, T is, T should, T max_rel , size_t i = size_t (-1 )) {
335
+ auto check = [&](const char * name, T is, T should, T mrel , size_t i = size_t (-1 )) {
336
336
// Relative difference:
337
337
T diff = std::abs (is - should);
338
338
T abs_is = std::abs (is);
339
339
T abs_sh = std::abs (should);
340
340
T largest = std::max (abs_is, abs_sh);
341
- T same = diff <= largest * max_rel ;
341
+ T same = diff <= largest * mrel ;
342
342
if (!same || std::isnan (is)) {
343
343
++failed;
344
344
if (failed > 10 ) return ;
345
345
std::cerr << " FAILED validation of " << name;
346
346
if (i != size_t (-1 )) std::cerr << " [" << i << " ]" ;
347
347
std::cerr << " : " << is << " (is) != " << should
348
348
<< " (should)" << " , diff=" << diff << " > "
349
- << largest * max_rel << std::endl;
349
+ << largest * mrel << " (largest=" << largest
350
+ << " , max_rel=" << mrel << " )" << std::endl;
350
351
}
351
352
};
352
353
@@ -360,9 +361,9 @@ void check_solution(const size_t num_times, T const* a, T const* b, T const* c,
360
361
361
362
// Calculate the L^infty-norm relative error
362
363
for (size_t i = 0 ; i < array_size; ++i) {
363
- check (" a" , a[i], goldA, i, max_rel );
364
- check (" b" , b[i], goldB, i, max_rel );
365
- check (" c" , c[i], goldC, i, max_rel );
364
+ check (" a" , a[i], goldA, max_rel, i );
365
+ check (" b" , b[i], goldB, max_rel, i );
366
+ check (" c" , c[i], goldC, max_rel, i );
366
367
}
367
368
368
369
if (failed > 0 && !silence_errors)
0 commit comments