Precisión diferente en C ++ y Fortran
Para un proyecto en el que estoy trabajando, he codificado en C ++ una función muy simple:
Fne(x) = 0.124*x*x
, el problema es cuando calculo el valor de la función
parax = 3.8938458092314270
Con los lenguajes Fortran 77 y C ++, obtuve una precisión diferente.
Para Fortran tengoFne(x) = 1.8800923323458316
y para C ++ tengoFne(x) = 1.8800923630725743
. Para ambos idiomas, la función Fne está codificada para valores de doble precisión y también devuelve valores de doble precisión.
Código C ++:
double FNe(double X) {
double FNe_out;
FNe_out = 0.124*pow(X,2.0);
return FNe_out;
}
Código Fortran:
real*8 function FNe(X)
implicit real*8 (a-h,o-z)
FNe = 0.124*X*X
return
end
¿Pueden ayudarme a encontrar de dónde proviene esta diferencia?