Unterschied zwischen sqrt (x) und pow (x, 0.5) [geschlossen]

7

Ich habe mich gefragt, warum es in C / c ++ die Funktion sqrt () gibt, da wir dasselbe mit

erreichen können %Vor%

Wie ist sqrt(x) für pow(x,0.5) unterschiedlich? Gibt es einen bestimmten Grund für die Funktion sqrt?

    
Alex 02.07.2013, 04:37
quelle

3 Antworten

10

Ich habe einen Test für Sie ausgeführt, um die Leistung von sqrt(x) und pow(x,0.5)

zu überprüfen

1.

%Vor%

2.

%Vor%

Das erste dauerte ungefähr 20 Sekunden, während das zweite ungefähr zwei Sekunden auf meinem Computer dauerte. Leistung ist also viel besser. Wie andere bereits erwähnt haben, ist die Lesbarkeit ein anderer Grund.

    
banarun 02.07.2013, 04:56
quelle
5

Sicher, wenn du nur an die mathematische Äquivalenz denkst ...

Aber in Bezug auf Algorithmen zur Berechnung des Ergebnisses ist sqrt spezifisch für eine Sache, während pow generisch ist.

Man könnte also (zu Recht) annehmen, dass es möglich ist, eine schnellere Funktion für sqrt zu schreiben, als die generische Funktion pow zu schreiben.

    
paddy 02.07.2013 04:43
quelle
5

Ich erinnere mich, irgendwo gelesen zu haben, dass sqrt () ein Sonderfall ist, der durch die IEEE-Spezifikation garantiert wird, um richtig gerundet zu werden. Ich werde das nachsehen, um eine Quelle zu finden. Es sollte auch ein wenig schneller sein, weil es nur einen Fall behandeln muss.

Selbst wenn sie gleich sind, ist es schön, einen eingebauten Alias ​​für eine häufig verwendete Funktion zu haben!

Edit: Gemäß der IEEE-754 sollen sowohl die pow () - Funktion als auch sqrt () so implementiert werden, dass der gerundete Wert die am nächsten liegende Gleitkommadarstellung zum realen Wert darstellt. Allerdings sollte sqrt () immer noch schneller sein.

    
vroomfondel 02.07.2013 04:44
quelle

Tags und Links