Salve, devo fare una funzione che calcola il valore di e^x, con x numero naturale. L'algoritmo che ho fatto funziona bene fino a che la funzione potenza non mi restituisce valori incoerenti e la funzione parte, si fa per dire, per la tangente fino a che mi restituisce Inf.... Ho pensato che centri qualche overflow o problemi con il sistema in virgola mobile... Riuscireste ad aiutarmi a capire cosa non funziona e cosa succede di preciso?
Eccovi il codice:
double exp(int x);
double power(double x, int y) {
if (y == 0)
return 1;
double power = x;
while (y > 1) {
--y;
power *= x;
}
return power;
}
int main(void) {
double z = 8.2;
int f = 3;
double k;
k = exp (f);
}
int factorial(int x) {
if (x == 0)
return 1;
int factorial = x;
for(int i = x-1; i > 1; --i) {
factorial *= i;
}
return factorial;
}
double exp (int x) {
double tmp = 1;
double exponential = 0;
for (int i = 0; exponential != tmp; ++i) {
tmp = exponential;
exponential += (power(x, i) / factorial(i));
}
return exponential;
}