PDA

Visualizza la versione completa : [C] Come funziona il pow?


Gardo
16-07-2017, 19:24
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))
double Elevamento_a_Potenza(double numero, double grado){
return exp(log(numero)*grado);
}
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 notevolmente:bhò:
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:D

AmedeoFalco
20-07-2017, 22:59
La funzione pow ha la seguente sintassi:

pow(x,y)...cioè eleva la variabile x alla y-esima potenza! Esempio x=4 e y=2 allora pow(x,2)=16.00 (trattandosi di un double) ! A livello di prestazione la pow é molto meglio della tua funzione! :)

Loading