Для проекта, над которым я работаю, я написал на С++ очень простую функцию:
Fne(x) = 0.124*x*x
, проблема в том, что я вычисляю значение функции
для x = 3.8938458092314270
с языками Fortran 77 и C++ я получил другую точность.
Для Fortran я получил Fne(x) = 1.8800923323458316
, а для C++ я получил Fne(x) = 1.8800923630725743
. Для обоих языков функция Fne закодирована для значений двойной точности и также возвращает значения двойной точности.
Код С++:
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
Не могли бы вы помочь мне найти, откуда эта разница?