Рекомендуемые настройки для сжатия с плавающей точкой в ​​C, C ++ и Fortran - PullRequest
0 голосов
/ 18 апреля 2019

Стандарт C (и C ++: [expr.7.1.6] и Fortran ), состояния:

Значения плавающих операндов и результаты плавающих выражений могут быть представлены с большей точностью и диапазоном, чем требуется типом; типы не меняются.

Некоторые компиляторы по умолчанию используют более высокую точность для результатов выражений с плавающей точкой (GCC, MSVC), а некоторые компиляторы - нет (Clang), но большинство из них (не все) соответствуют стандарту и предоставляют способ управления поведение сжатия с плавающей точкой.

Я пишу программы, которые делают много арифметики с плавающей точкой.

Существует ли общая рекомендация о том, следует ли включать или отключать сокращение по умолчанию? Или я должен решить это в каждом конкретном случае? Если да, что я должен рассматривать в качестве аргументов за или против включения сокращения по умолчанию для всего приложения?


Этот другой ответ ( Разрешено ли сжатие выражений с плавающей точкой в ​​C ++? ) объясняет, что такое сжатие и каковы стандартные правила, но не дает совета о том, как его использовать. Я испытал как некоторые преимущества (например, более быстрая производительность), так и некоторые недостатки (например, очень трудно отлаживать ошибки) сокращения, но хотел бы знать, существует ли в сообществе консенсус относительно того, что рекомендуется делать по умолчанию, или это так из тех вещей, которые должны решаться в каждом конкретном случае (и если это так, как мне решить это заранее?).

...