Problema con argumentos de funciones en fortran 77
Publicado por Chechu (1 intervención) el 22/04/2009 02:29:51
Hola
Si alguien puede darme una solución a esto se lo agradecería muchísimo.
Veamos, tenía escrita una función, en fortran 77 (compilador g77), al hacer la gráfica detecté que en vez de que la función hace lo que debe (que vaya variando suavemente), vi que oscilando respecto al valor debería tomar, cuando el argumento varía muy poco, no sé si me explico bien, al final lo que descubrí es que en realidad dentro de la función, el argumento no es el que debiera exactamente, si no que sus ultimos decimales se modifican.
Por ejemplo
double precision funcion_ejemplo(r)
double precision r
funcion_ejemplo=r
return
end
si por ejemplo llamo a la funcion (declarando x e y ccomo double precision)
x=2.500001D0
y=funcion_ejemplo(x)
pues y en vez de valer 2.500001, a lo mejor vale 2.5000091, además este error que se comete se hace periódico, es por eso que la función va oscilando.
Alguien sabe por qué razón ocurre esto y como se puede solucionar? Yo creo que se debe a que en algún sitio hace una conversión de tipo de dato pero en principio creo que todo es double precision así que no me lo explico.
Gracias
Si alguien puede darme una solución a esto se lo agradecería muchísimo.
Veamos, tenía escrita una función, en fortran 77 (compilador g77), al hacer la gráfica detecté que en vez de que la función hace lo que debe (que vaya variando suavemente), vi que oscilando respecto al valor debería tomar, cuando el argumento varía muy poco, no sé si me explico bien, al final lo que descubrí es que en realidad dentro de la función, el argumento no es el que debiera exactamente, si no que sus ultimos decimales se modifican.
Por ejemplo
double precision funcion_ejemplo(r)
double precision r
funcion_ejemplo=r
return
end
si por ejemplo llamo a la funcion (declarando x e y ccomo double precision)
x=2.500001D0
y=funcion_ejemplo(x)
pues y en vez de valer 2.500001, a lo mejor vale 2.5000091, además este error que se comete se hace periódico, es por eso que la función va oscilando.
Alguien sabe por qué razón ocurre esto y como se puede solucionar? Yo creo que se debe a que en algún sitio hace una conversión de tipo de dato pero en principio creo que todo es double precision así que no me lo explico.
Gracias
Valora esta pregunta


0