Die IEEE-Gleitpunkt-Arithmetik wird auf folgende Weise unterstützt:
Es gibt eine Compiler-Option des C/C++-Compilers, mit der Gleitpunkzahlen im IEEE-Format erzeugt werden können (siehe "Erzeugen von IEEE-Gleitpunktzahlen via Compiler-Option").
Zu jeder Bibliotheksfunktion im C-Laufzeitsystem, die mit Gleitpunktzahlen arbeitet oder Gleitpunktzahlen zurückliefert, gibt es eine Variante für die Bearbeitung von IEEE-Gleitpunktzahlen sowie ein Makro-Define, das die Standard-Variante (/390-Variante) der Funktion auf die zugehörige IEEE-Variante abbildet (siehe "C-Bibliotheksfunktionen, die IEEE-Gleitpunktzahlen unterstützen").
Per Compiler-Option können Sie die komplette IEEE-Funktionalität aktivieren: Der C/C++-Compiler erzeugt dann in allen Modulen Gleitpunktzahlen im IEEE-Format und stellt automatisch die passenden IEEE-Funktionen zur Bearbeitung der IEEE-Gleitpunktzahlen bereit.
Daneben haben Sie die Möglichkeit, die zur Verfügung gestellte IEEE-Funktionalität modifiziert zu nutzen:
Mithilfe des Präprozessor-Defines
_IEEE_SOURCE
können Sie festlegen, ob die Bibliotheksfunktionen für /390-Gleitpunkt-Arithmetik auf die zugehörige IEEE-Varianten abgebildet werden (siehe "Steuerung von Originalfunktionen auf die zugehörigen IEEE-Varianten").Mithilfe von Konvertierungsfunktionen können Sie Gleitpunktzahlen explizit vom /390-Format in das IEEE-Format konvertieren (siehe "Explizite Konvertierung von Gleitpunktzahlen").
Hinweise zur Nutzung der IEEE-Gleitpunkt-Arithmetik
Bei Nutzung der IEEE-Gleitpunkt-Arithmetik ist Folgendes zu beachten:
IEEE-Gleitpunkt-Operationen unterscheiden sich semantisch von den entsprechenden /390-Gleitpunkt-Operationen, z.B. beim Runden. So wird im IEEE-Format standardmäßig "Round to Nearest" angewendet anstatt "Round to Zero" wie im /390-Format.
In Fehler- und Ausnahmefällen (z.B. Argument nicht im zulässigen Wertebereich) unterscheiden sich die Reaktionen der IEEE-Funktionen von denen der /390-Funktionen, z.B. liefern einige Funktionen den Wert
NaN
zurück.Inkludieren Sie für jede in Ihrem Programm verwendete C-Bibliotheksfunktion, die mit Gleitpunkzahlen arbeitet, die zugehörige Include-Datei. Andernfalls können diese Funktionen die Gleitpunktzahlen nicht korrekt verarbeiten.
Insbesondere müssen Sie für die Funktionprintf
die Include-Datei<stdio.h>
mit#include <stdio.h>
inkludieren.