Brauche dringend Hilfe bei Aufgabenstellung!



  • SeppJ schrieb:

    Sicher?

    Getestet und disassembliert auf MingW-GCC, CygWin-GCC, MSVC, PellesC, BCC32, LCC32, OpenWatcom, TCC. Reicht das?

    Das würde klar dem Sprachstandard widersprechen, der hier fordert, dass i zu float wird und eben nicht double. Unter meinem Linuxsystem läuft das Programm auch tatsächlich ewig. Weiterhin ist an deiner Erklärung einiges faul, zum Beispiel setzt eine X87-FPU (und nur die kann gemeint sein, wenn das Programm unter Win läuft) intern 80-Bit ein.

    1. Ich gehe mal davon aus, dass der Sprachstandard hier ein Mindestverhalten postuliert. Ansonsten wüsste ich gerne, wo ich nachschlagen kann.

    2. Zumindest 32-Bit-Windows geht hier einen Sonderweg, indem die FPU auf 64 Bit Präzision (bzw. 53 Bit in MS-Speak) gesetzt wird. Und zwar - zu meinem Verdruss - jedes Mal, wenn ein Programm gestartet wird. Das ist bei Microsoft nur in Nebensätzen dokumentiert, z.B: "On NT-based systems, the FPU is set to long real precision (that is, double or 53-bit), with all exceptions masked ..." (http://msdn.microsoft.com/en-us/library/windows/hardware/ff565388).

    viele grüße
    ralph


  • Mod

    rkhb schrieb:

    1. Ich gehe mal davon aus, dass der Sprachstandard hier ein Mindestverhalten postuliert.

    Das ist der Fall (s.o.):
    C90: 6.2.1.5 /2
    C99/C11: 6.3.1.8 /2 (unverändert)
    Jedes einigermaßen brauchbare Buch zum Thema erwähnt früher oder später, dass wenn IEEE-konforme Zwischenergebnisse benötigt werden, man am besten explizite Zuweisungen einfügt.


Anmelden zum Antworten