Поскольку вы компилируете для архитектуры x86, вполне вероятно, что один из компиляторов поддерживает промежуточные значения в регистрах с плавающей запятой, которые составляют 80 бит, в отличие от 64 бит C double
.
Для GCC вы можете указать опцию -ffloat-store
, чтобы запретить эту оптимизацию.Вам может также нужно изменить код, чтобы явно сохранять некоторые промежуточные результаты в double
переменных.Некоторые эксперименты, вероятно, в порядке.