| 192 | } // namespace mgb |
| 193 | |
| 194 | ::testing::AssertionResult mgb::__assert_float_equal( |
| 195 | const char* expr0, const char* expr1, const char* /*expr_maxerr*/, float v0, |
| 196 | float v1, float maxerr) { |
| 197 | float err = fabs(v0 - v1) / std::max<float>(1, std::min(fabs(v0), fabs(v1))); |
| 198 | if (std::isfinite(v0) && std::isfinite(v1) && err < maxerr) { |
| 199 | return ::testing::AssertionSuccess(); |
| 200 | } |
| 201 | return ::testing::AssertionFailure() << ssprintf( |
| 202 | "Value of: %s\n" |
| 203 | " Actual: %.6g\n" |
| 204 | "Expected: %s\n" |
| 205 | "Which is: %.6g\n" |
| 206 | " Error: %.4e", |
| 207 | expr1, v1, expr0, v0, err); |
| 208 | } |
| 209 | |
| 210 | ::testing::AssertionResult mgb::__assert_tensor_equal( |
| 211 | const char* expr0, const char* expr1, const char* /*expr_maxerr*/, |