FPU: (3 / 10) == 0.29999999...
-
Hallo, naja der Titel sagt eigentlich schon alles.
Mein Code sieht ungefähr folgendermaßen aus:
finit mov RAX, 3 push RAX fild qword ptr [RSP] push 0Ah fidiv dword ptr [RSP] ... fst qword ptr [RSP] pop RAX movd XMM0, RAX ... ret
Naja, wie gesagt, wo eigentlich exakt 0.3 herauskommen sollte, kommt 0.2999999999...
Woran liegt das?
Gruß
-
0.3 ist als IEEE float/double nicht exakt darstellbar.
-
Naja, immerhin lag es nicht an mir
Danke!
-
wenn du schon das Ergebnis in XMM0 zurückgibst, kannst du es dort auch gleich berechnen
.const c1 REAL8 3.0 c2 REAL8 10.0 .code movsd xmm0,c1 divsd xmm0,c2
Was verwendest du den zur Ausgabe? - Mit den CRT Funktionen wie printf() sollte eigentlich auch 0.3 ausgespuckt werden.
-
Nun das ist ja nicht das einzige was ich per FPU mache, von daher...
Ausgeben tu ich das erstmal garnicht, hab mir den Wert direkt in Visual Studio angesehen.BTW:
fidiv vs. divsd
Wie sieht´s da geschwindigkeitsmäßig aus ?
-
__username schrieb:
fidiv vs. divsd
SSEx ist grundsätzlich schneller, schon allein daher, dass hier kein Register-Stack gemanagt werden muss.
-
Wunderbar, wieder was dazugelernt
Kann man sich das dann in etwa so vorstellen (von wegen Geschwindigkeit):
SSE bzw. erweiterter Befehlssatz <- "Standard" CPU Befehlssatz <- FPU
?
-
__username schrieb:
Kann man sich das dann in etwa so vorstellen (von wegen Geschwindigkeit):
SSE bzw. erweiterter Befehlssatz <- "Standard" CPU Befehlssatz <- FPU
?Du musst das Gesamtsystem betrachten:
Es gibt eine Menge von Rechenwerken die parallel arbeiten und Du erzielst den groessten Durchsatz indem alle optimal ausgelastet sind und keins auf das andere warten muss.
Selbst die Integer-Einheit besteht intern aus parallelen Addier- und Multiplizierwerken (die Verteilung nimmt Dir da aber das CPU-Frontend ab).
Auf eine Recheneinheit gaenzlich zu verzichten waere Unsinn.
-
Hab ich mir fast gedacht, aber ich kann da auf meiner CPU keine Rechenwerke erkennen, ist irgendwie zu klein
Nein Spaß bei seite, das heißt also, dass ich möglichst alles parallel nutze?
Naja, muss mir wohl mal ein Büchlein über aktuelle CPU-Architekturen im allgemeinen besorgen...
-
Studiengang Computersystem hilft da sehr gut dieses jene zu verstehen
Ich spreche aus Erfahrung muss es mir noch bis Mitte März in den Kopf prügeln damit die Prüfung gut wird.
MfG Marco
PS: Und die den Standard des IEEE kannst dir einfach mal in der Wiki anschauen, damit es einfach zu verstehen ist wieso die zahlen nicht genauer dargestellt werden können.
-
Ou...Studiengang... nene, da hab ich noch 2 Jahre Schule vor mir
Habs aber inzwischen "gelöst", danke trotzdem