.\" -*- coding: UTF-8 -*- '\" t .\" Copyright, the authors of the Linux man-pages project .\" .\" SPDX-License-Identifier: GPL-2.0-or-later .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH fenv 3 "17. Mai 2025" "Linux man\-pages 6.15" .SH BEZEICHNUNG feclearexcept, fegetexceptflag, feraiseexcept, fesetexceptflag, fetestexcept, fegetenv, fegetround, feholdexcept, fesetround, fesetenv, feupdateenv, feenableexcept, fedisableexcept, fegetexcept \- Umgang mit Fließkomma\-Runden und \-Ausnahmen .SH BIBLIOTHEK Mathematik\-Bibliothek (\fIlibm\fP,\ \fI\-lm\fP) .SH ÜBERSICHT .nf \fB#include \fP .P \fBint feclearexcept(int \fP\fIAusnahmen\fP\fB);\fP \fBint fegetexceptflag(fexcept_t *\fP\fISchalterz\fP\fB, int \fP\fIAusnahmen\fP\fB);\fP \fBint feraiseexcept(int \fP\fIAusnahmen\fP\fB);\fP \fBint fesetexceptflag(const fexcept_t *\fP\fISchalterz\fP\fB, int \fP\fIAusnahmen\fP\fB);\fP \fBint fetestexcept(int \fP\fIAusnahmen\fP\fB);\fP .P \fBint fegetround(void);\fP \fBint fesetround(int \fP\fIRundungsmodus\fP\fB);\fP .P \fBint fegetenv(fenv_t *\fP\fIUmgz\fP\fB);\fP \fBint feholdexcept(fenv_t *\fP\fIUmgz\fP\fB);\fP \fBint fesetenv(const fenv_t *\fP\fIUmgz\fP\fB);\fP \fBint feupdateenv(const fenv_t *\fP\fIUmgz\fP\fB);\fP .fi .SH BESCHREIBUNG Diese elf Funktionen wurden in C99 definiert und beschreiben die Handhabung beim Runden von Fließkommazahlen und Ausnahmen (Überlauf, Teilen durch Null, usw.). .SS Ausnahmen Die Ausnahme \fIdivide\-by\-zero\fP (Teilen durch Null) tritt auf, wenn eine Operation auf einer endlichen Zahl als Ergebnis genau unendlich produziert. .P Die Ausnahme \fIoverflow\fP (Überlauf) tritt auf, wenn ein Ergebnis als Fließkommazahl dargestellt werden muss, aber einen (viel) größeren absoluten Wert als die größte (endliche) Fließkommazahl hat, die darstellbar ist. .P Die Ausnahme \fIunderflow\fP (Unterlauf) tritt auf, wenn ein Ergebnis als Fließkommazahl dargestellt werden muss, aber einen kleineren absoluten Wert als die kleinste positive normalisierte Fließkommazahl hat (und sehr viel Genauigkeit verlieren würde, wenn sie als denormalisierte Zahl dargestellt würde). .P Die Ausnahme \fIinexact\fP (ungenau) tritt auf, wenn das gerundete Ergebnis einer Operation nicht identisch zu dem Ergebnis mit unendlicher Genauigkeit ist. Sie kann immer auftreten, wenn \fIoverflow\fP oder \fIunderflow\fP auftritt. .P Die Ausnahme \fIinvalid\fP (ungültig) tritt auf, wenn es kein gut definiertes Ergebnis für eine Operation gibt, wie bei 0/0 oder unendlich \- unendlich oder sqrt(\-1). .SS Ausnahmebehandlung Ausnahmen werden auf zwei Arten dargestellt: als einzelnes Bit (Ausnahme vorhanden/abwesend) und diese Bits entsprechen auf eine implementierungsabhängige Art den Bit\-Positionen in einer Ganzzahl und als undurchsichtige Struktur, die weitere Informationen über die Ausnahme enthalten könnte (möglicherweise Code\-Adresse, wo sie auftrat). .P Jedes der Makros \fBFE_DIVBYZERO\fP, \fBFE_INEXACT\fP, \fBFE_INVALID\fP, \fBFE_OVERFLOW\fP, \fBFE_UNDERFLOW\fP ist definiert, wenn die Implementierung die Handhabung der entsprechenden Ausnahme erlaubt und falls dies so ist, definiert es die entsprechenden Bit(s), so dass die Ausnahmebehandlungsfunktionen aufgerufen werden können, beispielsweise mit dem Ganzzahlargument \fBFE_OVERFLOW\fP|\fBFE_UNDERFLOW\fP. Andere Ausnahmen könnten auch unterstützt werden. Das Makro \fBFE_ALL_EXCEPT\fP ist entsprechend das bitweise ODER aller unterstützten Ausnahmen. .P Die Funktion \fBfeclearexcept\fP() setzt die unterstützten Ausnahmen, die durch die Bits in ihrem Argument dargestellt werden, zurück. .P Die Funktion \fBfegetexceptflag\fP() speichert eine Darstellung des Zustands der Ausnahmeschalter, die durch das Argument \fIAusnahmen\fP in dem undurchsichtigen Objekt \fI*Schalterz\fP dargestellt werden. .P Die Funktion \fBferaiseexcept\fP() löst die unterstützten Ausnahmen aus, die durch die Bits in \fIAusnahmen\fP dargestellt werden. .P Die Funktion \fBfesetexceptflag\fP() setzt den kompletten Status für die Ausnahmen, die durch \fIAusnahmen\fP dargestellt werden, auf den Wert von \fI*Schalterz\fP. Dieser Wert muss durch einen früheren Aufruf von \fBfegetexceptflag\fP() erlangt worden sein, wobei dessen letztes Argument alle Bits aus \fIAusnahmen\fP enthalten muss. .P Die Funktion \fBfetestexcept\fP() liefert ein Wort zurück, dessen Bits gesetzt sind, die im Argument \fIAusnahmen\fP gesetzt sind und für die eine entsprechende Ausnahme derzeit gesetzt ist. .SS Rundungsmodus Der Rundungsmodus bestimmt, wie das Ergebnis von Fließkommazahloperationen behandelt wird, wenn das Ergebnis nicht exakt durch die Mantisse dargestellt werden kann. Verschiedene Rundungsmodi können bereitgestellt werden: runden auf die nächste (die Vorgabe), aufrunden (Richtung positiv unendlich), abrunden (Richtung negativ unendlich) und runden Richtung Null. .P Jedes der Makros \fBFE_TONEAREST\fP, \fBFE_UPWARD\fP, \fBFE_DOWNWARD\fP und \fBFE_TOWARDZERO\fP ist definiert, wenn die Implementierung das Ermitteln und Setzen der entsprechenden Rundungsrichtung unterstützt. .P Die Funktion \fBfegetround\fP() liefert das Makro zurück, das dem aktuellen Rundungsmodus entspricht. .P Die Funktion \fBfesetround\fP() setzt den Rundungsmodus, wie er durch ihr Argument angegeben wurde und liefert Null zurück, wenn sie erfolgreich ist. .P C99 und POSIX.1\-2008 spezifizieren einen in \fI\fP definierten Kennzeichner \fBFLT_ROUNDS\fP, der das implementierungsabhängige Rundungsverhalten für Fließkomma\-Addition anzeigt. Dieser Kennzeichner hat einen der folgenden Werte: .TP \fB\-1\fP Der Rundungsmodus ist nicht bestimmbar. .TP \fB0\fP Runden in Richtung 0. .TP \fB1\fP Runden in Richtung der nächsten Zahl. .TP \fB2\fP Runden in Richtung positiv unendlich. .TP \fB3\fP Runden in Richtung negativ unendlich. .P Andere Werte stellen maschinenabhängige, nicht standardisierte Rundungsmodi dar. .P Der Wert von \fBFLT_ROUNDS\fP sollte den aktuellen Rundungsmodus wiedergeben, wie er von \fBfesetround\fP() gesetzt wurde (siehe aber auch FEHLER). .SS Fließkommaumgebung Die gesamte Fließkommaumgebung, einschließlich Steuermodi und Statusschalter kann als undurchsichtiges Objekt vom Typ \fIfenv_t\fP gehandhabt werden. Die Standardumgebung wird als \fBFE_DFL_ENV\fP (vom Typ \fIconst fenv_t\ *\fP) bezeichnet. Dies ist die Umgebung, die beim Programmstart eingerichtet wird. ISO C definiert, dass das Runden auf die nächste Zahl erfolgt, alle Ausnahmen zurückgesetzt sind und ein unterbrechungsfreier Modus (Fortführen bei Ausnahmen) vorliegt. .P Die Funktion \fBfegetenv\fP() speichert die aktuelle Fließkommazahlumgebung in dem Objekt \fI*Umgz\fP. .P Die Funktion \fBfeholdexcept\fP() macht das gleiche, setzt dann alle Ausnahmeschalter zurück und setzt den unterbrechungsfreien Modus (Fortführen bei Ausnahmen), falls verfügbar. Sie liefert Null zurück, wenn sie erfolgreich war. .P Die Funktion \fBfesetenv\fP() stellt die Fließkommazahlenumgebung aus dem Objekt \fI*Umgz\fP wieder her. Dieses Objekt muss bekanntermaßen gültig, beispielsweise ein Ergebnis des Aufrufs \fBfegetenv\fP() oder \fBfeholdexcept\fP(), oder \fBFE_DFL_ENV\fP sein. Dieser Aufruf löst keine Ausnahmen aus. .P Die Funktion \fBfeupdateenv\fP() installiert die Flißekommazahlumgebung, die durch das Objekt \fI*Umgz\fP dargestellt wird, allerdings werden ausgelöste Ausnahmen nicht zurückgesetzt. Nach dem Aufruf dieser Funktion werden die ausgelösten Ausnahmen ein bitweises ODER der zuvor festgelegten Ausnahmen mit denen in \fI*Umgz\fP sein. Wie vorher muss das Objekt bekanntermaßen gültig sein. .SH RÜCKGABEWERT .\" Earlier seven of these functions were listed as returning void. .\" This was corrected in Corrigendum 1 (ISO/IEC 9899:1999/Cor.1:2001(E)) .\" of the C99 Standard. Diese Funktionen liefern im Erfolgsfall Null zurück und einen von Null verschiedenen Wert, wenn ein Fehler auftrat. .SH ATTRIBUTE Siehe \fBattributes\fP(7) für eine Erläuterung der in diesem Abschnitt verwandten Ausdrücke. .nh .TS allbox; lbx lb lb l l l. Schnittstelle Attribut Wert T{ .na .nh \fBfeclearexcept\fP(), \fBfegetexceptflag\fP(), \fBferaiseexcept\fP(), \fBfesetexceptflag\fP(), \fBfetestexcept\fP(), \fBfegetround\fP(), \fBfesetround\fP(), \fBfegetenv\fP(), \fBfeholdexcept\fP(), \fBfesetenv\fP(), \fBfeupdateenv\fP(), \fBfeenableexcept\fP(), \fBfedisableexcept\fP(), \fBfegetexcept\fP() T} Multithread\-Fähigkeit T{ .na .nh MT\-Sicher T} .TE .hy .SH STANDARDS C11, POSIX.1\-2008, IEC 60559 (IEC 559:1989), ANSI/IEEE 854. .SH GESCHICHTE C99, POSIX.1\-2001. Glibc 2.1. .SH ANMERKUNGEN .SS "Anmerkungen zur Glibc" Falls möglich definiert die GNU C\-Bibliothek ein Makro \fBFE_NOMASK_ENV\fP, das eine Umgebung darstellt, bei der jede ausgelöste Ausnahme zum Auftreten einer Abfangaktion führt. Sie können mittels \fB#ifdef\fP auf dieses Makro testen. Es ist nur definiert, wenn \fB_GNU_SOURCE\fP definiert ist. Der C99\-Standard definiert keine Art, um einzelne Bits in der Fließkommamaske zu setzen, beispielsweise um bei bestimmten Schaltern abzufangen. Glibc unterstützt seit Version 2.2 die Funktionen \fBfeenableexcept\fP() und \fBfedisableexcept\fP(), um individuelle Fliekommazahl\-Abfangaktionen zu setzen und \fBfegetexcept\fP(), um den Zustand abzufragen. .P .nf \fB#define _GNU_SOURCE\fP /* Siehe feature_test_macros(7) */ \fB#include \fP .P \fBint feenableexcept(int \fP\fIAusnahmen\fP\fB);\fP \fBint fedisableexcept(int \fP\fIAusnahmen\fP\fB);\fP \fBint fegetexcept(void);\fP .fi .P Die Funktionen \fBfeenableexcept\fP() und \fBfedisableexcept\fP() aktivieren (deaktivieren) Abfangaktionen für jede der durch \fIAusnahmen\fP dargestellten Ausnahmen und lieferen im Erfolgsfall die vorherige Menge der aktivierten Ausnahmen zuürck und \-1 andernfalls. Die Funktion \fBfegetexcept\fP() liefert die Menge aller derzeit aktivierten Ausnahmen zurück. .SH FEHLER .\" Aug 08, glibc 2.8 .\" See http://gcc.gnu.org/ml/gcc/2002-02/msg01535.html C99 spezifiziert, dass der Wert von \fBFLT_ROUNDS\fP die Änderungen am aktuellen Rundungsmodus wiedergeben soll, wie sie durch \fBfesetround\fP() gesetzt wurden. Derzeit passiert dies nicht: \fBFLT_ROUNDS\fP hat immer den Wert 1. .SH "SIEHE AUCH" \fBmath_error\fP(7) .PP .SH ÜBERSETZUNG Die deutsche Übersetzung dieser Handbuchseite wurde von Helge Kreutzmann erstellt. .PP Diese Übersetzung ist Freie Dokumentation; lesen Sie die .UR https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License Version 3 .UE oder neuer bezüglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen. .PP Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an die Mailingliste der Übersetzer: .MT debian-l10n-german@lists.debian.org .ME .