Рассмотрим этот сокращенный пример:
Код: Выделить всё
#include
#include
#include
int main() {
// 0 0.14189707 3e114d77 with GCC on Linux
// 0 0.14189705 3e114d76 with MSVC (and compile-time evaluation in GCC)
std::print( "{} {} {:x}", std::fegetround(), std::atan2( 1.f, 7.f ),
std::bit_cast( std::atan2( 1.f, 7.f ) ) );
}
Допускаются ли реализации таким образом, чтобы они расходились при одинаковом режиме округления? Существуют ли флаги компилятора для устранения или минимизации расхождений?
Подробнее здесь: https://stackoverflow.com/questions/798 ... -precision
Мобильная версия