Да, я использовал контейнерное сопоставление Pointwise
, которое вы можете задать для сопоставителя и ожидаемого контейнера (любой контейнер STL и совместим с нединамически размещаемыми массивами в стиле c).
EXPECT_THAT(float_vec1, Pointwise(matcher, float_vec2))
Для сопоставителя Вы можете использовать FloatEq()
, который использует сравнения с плавающей точкой на основе ULP.
EXPECT_THAT(float_vec1, Pointwise(FloatEq(), float_vec2))
Однако я обнаружил, что это прощеиспользовать FloatNear(float max_abs_error)
просто для определения моей собственной ошибки с плавающей запятой, как вы хотите.
float ferr = 1e-5;
EXPECT_THAT(float_vec1,
Pointwise(FloatNear(ferr), float_vec2));