Salve a tutti. Scrivo perché volevo riuscire a scrivere da solo la funzione pow della math.h che preso un numero double lo elevi ad un altro numero double. Inizialmente avevo pensato di utilizzare una proprietà dei logaritmi a^b = e^(b*ln(a))Però il risultato non è perfetto (per esempio se faccio 2^4 ottengo 15.9999999999999982236432 invece di 16.0000000000000000000000) e per elevamenti più complessi l'errore aumenta notevolmentecodice:double Elevamento_a_Potenza(double numero, double grado){ return exp(log(numero)*grado); }
Ho cercato il codice direttamente dalla libreria ma, per mia incompetenza, non sono riuscito a trovare niente di chiaro.
Quello che vorrei sapere è :
- In termini di prestazioni è più veloce la mia funzione o pow()?
- Qualche anima generosa potrebbe spiegarmi il codice del pow della math.h o almeno su che teorema si basa ?
Grazie infinite per la pazienza![]()