Me atrevería a decir que los valores numéricos calculados por Fortran y C++ serían mucho más similares. Sin embargo, por lo que estoy experimentando, resulta que los números calculados comienzan a divergir después de muy pocos dígitos decimales. Me he encontrado con este problema durante el proceso de transferir algún código heredado del idioma anterior a este último. El código original de Fortran 77 ...Discrepancia entre los valores calculados por Fortran y C++
INTEGER M, ROUND
DOUBLE PRECISION NUMERATOR, DENOMINATOR
M = 2
ROUND = 1
NUMERATOR=5./((M-1+(1.3**M))**1.8)
DENOMINATOR = 0.7714+0.2286*(ROUND**3.82)
WRITE (*, '(F20.15)') NUMERATOR/DENOMINATOR
STOP
... salidas ,842201471328735, mientras que su equivalente en C++ ...
int m = 2;
int round = 1;
long double numerator = 5.0/pow((m-1)+pow(1.3, m), 1.8);
long double denominator = 0.7714 + 0.2286 * pow(round, 3.82);
std::cout << std::setiosflags(std::ios::fixed) << std::setprecision(15)
<< numerator/denominator << std::endl;
exit(1);
... vuelve ,842201286195064. Es decir, los valores calculados son iguales a solo hasta el sexto decimal. Aunque no soy particularmente un defensor Fortran, me siento inclinado a considerar sus resultados como los 'correctos', dada su reputación legítima de número cruncher. Sin embargo, estoy intrigado sobre la causa de esta diferencia entre los valores calculados. ¿Alguien sabe cuál podría ser el motivo de esta discrepancia?
http://docs.sun.com/source/806-3568/ncg_goldberg.html –
C++ resultado es más correcto '0.8422012861950640318689334181' – jfs
tal vez usted podría imprimir algunos valores intermedios en los dos conjuntos de código. –