(Un)Genauigkeit des sse-Befehls rcpps
-
Hallo,
dass man mit sse vier single precision Fließkommazahlen auf einmal verarbeiten kann, ist schön und gut, aber die Genauigkeit lässt etwas zu wünschen übrig. Habe die Zahlen 1.0, 2.0, 3.0, 4.0 nach xmm geladen und Kehrwerte mit rcpps ausgerechnet, Ergebnis: sogar der Kehrwert von 1.0 ist gleich 0.99xx (aus dem Kopf), und bei den anderen Zahlen sind auch Abweichungen auch ab der etwa dritten Nachkommastelle festzustellen.
Ist das vielleicht auf die printf-Funktion zurückzuführen, die das ungenau ausgibt? Ich hatte nämlich die Zahlen vor der Ausgabe nach double konvertiert mit flds single_zahl, fstpl double_zahl... irgendwie schaffe ich nicht, mit der printf-Funktion single precision-Zahlen auszugeben (versucht mit "%f", aber ohne Erfolg)...
Ist der Einsatz des Befehls rcpps nicht zu empfehlen?
-
rcpss/ps arbeitet genauso wie rsqrtss/ps nur mit etwa 12bit genauigkeit. dafür werden diese befehle erheblich schneller ausgeführt als ein normale div bzw. sqrt. damit sind sie nützlich in fällen, in denen es auf große genauigkeit nicht ankommt, man insbesondere also nicht zwischenergebnisse berechnet.
-
12 Bit Genauigkeit... ist das in etwa mit der Hälfte der Genauigkeit der Single Precision Zahlen zu vergleichen?
-
Gab es da nicht einen zweiten Befehl, der eine weitere Iteration durchführt und das Ergebnis genauer macht?
-
Gab es da nicht einen zweiten Befehl, der das Ergebnis genauer macht?
in sse leider nicht.
manueller newton-raphson praezisiert das ergebnis.