K
Size: a a a
K
AB
float(color[c] )/ divider_ + adder_при сборке тестов -54.71368408203125 при сборке с pybind11 -54.713726043701171875
A
float(color[c] )/ divider_ + adder_при сборке тестов -54.71368408203125 при сборке с pybind11 -54.713726043701171875
-54.71368408203125A
A
float(color[c] )/ divider_ + adder_при сборке тестов -54.71368408203125 при сборке с pybind11 -54.713726043701171875
PK
float(color[c] )/ divider_ + adder_при сборке тестов -54.71368408203125 при сборке с pybind11 -54.713726043701171875
auto const result = float(color[c] )/ divider_ + adder_;
auto const reference = -54.71368408203125f;
ASSERT_EQ(result, reference);
в тестах с флоатами всегда надо с эпсилоном сравнивать числа, чтобы не было таких результатовPK
AB
auto const result = float(color[c] )/ divider_ + adder_;
auto const reference = -54.71368408203125f;
ASSERT_EQ(result, reference);
в тестах с флоатами всегда надо с эпсилоном сравнивать числа, чтобы не было таких результатовPK
std::cout << std::numeric_limits<float>::digits10;6, так что про оптимистичность 8-9 знаков я был прав в этом сценарииv
std::numeric_limits::digitsAB
v
PK
std::numeric_limits<float>::epsilon() для сравнений результатов, если тестовый фреймворк не имеет чего-то вроде ALMOST_EQUAL или EXPECT_FLOAT_EQ, EXPECT_NEAR или аналогичной макросниAB
IA
m
std::numeric_limits<float>::epsilon() для сравнений результатов, если тестовый фреймворк не имеет чего-то вроде ALMOST_EQUAL или EXPECT_FLOAT_EQ, EXPECT_NEAR или аналогичной макросниepsilon() обычно нужно умножать на что-то. Честно оценивать точность результата после нетривиального преобразования довольно муторно.PK
epsilon() обычно нужно умножать на что-то. Честно оценивать точность результата после нетривиального преобразования довольно муторно.PK