Различная точность в C ++ и Fortran
Для проекта, над которым я работаю, я написал в C ++ очень простую функцию:
Fne(x) = 0.124*x*x
проблема в том, когда я вычисляю значение функции
заx = 3.8938458092314270
и с Фортраном 77, и с языками C ++ я получил разное преимущество.
Для Фортрана я получилFne(x) = 1.8800923323458316
и для C ++ я получилFne(x) = 1.8800923630725743
, Для обоих языков функция Fne кодируется для значений двойной точности, а также возвращает значения двойной точности.
Код C ++:
double FNe(double X) {
double FNe_out;
FNe_out = 0.124*pow(X,2.0);
return FNe_out;
}
Код Фортрана:
real*8 function FNe(X)
implicit real*8 (a-h,o-z)
FNe = 0.124*X*X
return
end
Не могли бы вы помочь мне выяснить, откуда эта разница?