frexp(3C) frexp(3C)
NAME
frexp, ldexp, logb, ilogb, nextafter, scalb, modf, modff - Teile von
Gleitkommazahlen bearbeiten
SYNTAX
#include <math.h>
double frexp(double num, int *exp);
double ldexp(double x, int exp);
double logb(double x);
int ilogb(double x);
double nextafter(double x, double y);
double scalb(double x, double n);
double modf(double x, double *iptr);
float modff(float value, float *iptr);
BESCHREIBUNG
frexp() zerlegt eine Gleitkommazahl in einen normalen Bruch und eine
ganzzahlige Potenz von 2. Der ganzzahlige Exponent wird im Objekt int
gespeichert, auf das exp zeigt.
ldexp() gibt die Größe x * 2^exp zurück.
scalb() berechnet x * r^n, wobei r die Basis der von der Maschine ver-
wendeten Gleitkomma-Arithmetik ist. Wenn r gleich 2 ist, entspricht
scalb() der Funktion ldexp().
logb() berechnet den Exponenten von x, den ganzzahligen Teil aus
logr|x|, als einen Gleitkommawert mit Vorzeichen für x ungleich Null,
wobei r die Basis der von der Maschine verwendeten Gleitkomma-
Arithmetik ist.
ilogb() gibt den Exponentialteil von x zurück. Formal ist der Rückga-
bewert der ganzzahlige Teil aus logr|x|, angegeben als ein ganzzahli-
ger Wert mit Vorzeichen für x ungleich Null, wobei r die Basis der von
der Maschine verwendeten Gleitkomma-Arithmetik ist.
Der Aufruf ilogb(x) entspricht (int)logb(x).
modf() und modff() (Version für einfach genaue Gleitkommazahlen) geben
den Bruchteil des Wertes x zurück und speichern den ganzzahligen Teil
indirekt an der Stelle, auf die iptr zeigt. Beide Teile erhalten das
Vorzeichen von x.
Seite 1 Reliant UNIX 5.44 Gedruckt 11/98
frexp(3C) frexp(3C)
nextafter() liefert die nächste auf x folgende, darstellbare Gleitkom-
mazahl in der Richtung von y. Das bedeutet, wenn y kleiner als x ist,
wird die größte darstellbare Gleitkommazahl kleiner als x geliefert.
ERGEBNIS
Die Funktion frexp() gibt den Wert x zurück, so daß x ein double mit
der Größe im Intervall [½, 1) oder 0 ist, und num dem Wert x mal 2
erhoben zur Potenz *exp entspricht. Wenn num gleich 0 ist, sind beide
Teile des Ergebnisses 0. Wenn num gleich NaN ist, wird NaN zurückgege-
ben, errno möglicherweise auf EDOM gesetzt und der Wert von *exp ist
nicht spezifiziert. Wenn num gleich +Inf ist, wird num zurückgegeben,
errno möglicherweise auf EDOM gesetzt und der Wert von *exp ist nicht
spezifiziert.
Wenn ldexp() einen Überlauf verursacht - und wenn das Programm mit
-kansi oder -kosi kompiliert wurde -, wird HUGEVAL (in math.h defi-
niert) zurückgegeben (je nach dem Vorzeichen des Werts x), und errno
wird auf ERANGE gesetzt. [Wenn mit der Option -kcc (Standard) kompi-
liert wurde, wird HUGE anstelle von HUGEVAL zurückgegeben.] Wenn
ldexp() einen Unterlauf verursachen würde, wird Null zurückgegeben und
errno auf ERANGE gesetzt. Wenn der Eingabewert x für ldexp() NaN ist,
wird die Eingabe zurückgegeben, und errno wird auf EDOM gesetzt.
Nach erfolgreicher Ausführung gibt die Funktion scalb() x * r^n
zurück. Würde der korrekte Wert zu einem Überlauf führen, gibt scalb()
den Wert +HUGEVAL (je nach dem Vorzeichen von x) zurück und setzt
errno auf ERANGE. Würde der korrekte Wert zu einem Unterlauf führen,
gibt scalb() den Wert 0 zurück und setzt errno auf ERANGE. Die Funk-
tion scalb() gibt x zurück, wenn x gleich +Inf ist. Wenn x oder n
gleich NaN ist, gibt scalb() den Wert NaN zurück und setzt errno mög-
licherweise auf EDOM.
Nach erfolgreicher Ausführung gibt die Funktion logb() den Exponenten
von x zurück. Wenn x gleich 0.0 ist, gibt logb() den Wert -HUGEVAL
zurück und setzt errno auf EDOM. Wenn x gleich +Inf ist, gibt logb()
+Inf zurück. Wenn x gleich NaN ist, gibt logb() den Wert NaN zurück
und setzt errno möglicherweise auf EDOM.
Nach erfolgreicher Ausführung gibt ilogb() den Exponentialteil von x
zurück. Wenn x gleich 0 oder NaN ist, gibt ilogb() den Wert INTMIN
zurück. Wenn x gleich +Inf ist, gibt ilogb() den Wert INTMAX zurück.
Ist der Eingabewert x für nextafter() positiv oder negativ unendlich,
wird der Eingabewert zurückgeliefert und errno wird auf EDOM gesetzt.
Eine Überlauf- und Ungenauigkeitsausnahme wird erzeugt, wenn x endlich
ist, aber das Ergebnis von nextafter(x, y) nicht. Liegt
nextafter(x, y) genau zwischen +2^-1022, dann wird eine Unterlauf- und
Ungenauigkeitsausnahme erzeugt. In beiden Fällen wird errno auf ERANGE
gesetzt.
HINWEISE
Die Funktion modff() ist nur im ANSI-Modus zu verwenden.
Seite 2 Reliant UNIX 5.44 Gedruckt 11/98
frexp(3C) frexp(3C)
SIEHE AUCH
cc(1), math(5).
Seite 3 Reliant UNIX 5.44 Gedruckt 11/98