| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
patricia Invitado
|
Publicado: Jue 15 Ago, 2002 8:59 pm Asunto: overflow con la funcion exp |
|
|
estoy implementando una rutina que necesita calcular exp(x) pero tengo errores de overflow, no se como salir de eso. |
|
| Volver arriba |
|
 |
R. Porcar Site Admin

Registrado: 08 Ago 2002Mensajes: 113Ubicación: Castellón (España)
|
Publicado: Vie 16 Ago, 2002 10:27 am Asunto: |
|
|
exp(x) = 1 + x + x^2/2! + x^3/3! + x^4/4! + ...
| Código: | #include <math.h>
#include <float.h>
//...
double my_exp (double x) {
if (x == 0.0) return 1.0;
unsigned int nterm=1U;
double result, next_term;
int exp_result, exp_next_term;
result = next_term = 1.0;
do {next_term *= x / double(nterm);
result += next_term;
++nterm;
frexp(result,&exp_result); frexp(next_term,&exp_next_term);
} while (abs(exp_result-exp_next_term) < DBL_MANT_DIG);
return result;
} |
|
|
| Volver arriba |
|
 |
tecno Invitado
|
Publicado: Vie 16 Ago, 2002 10:34 am Asunto: |
|
|
¡Hola Patricia!
¿Cómo has declarado la variable en cuestión? supongo que double. A lo mejor, si antepones un "long" se arregla el problema. He mirado el ejemplo que aparece en la ayuda y para visualizar el resultado (con un printf) utiliza el formato "%lf" (long float).
Si esto no te ayuda, pega aquí el código que te da problemas para ver si así se saca el problema.
Salu2.  |
|
| Volver arriba |
|
 |
|