Namensräume
Varianten
Aktionen

fpclassify

Von cppreference.com
< c‎ | numerik‎ | math
 
 
 
Allgemeine mathematische Funktionen
Funktionen
Grundlegende Operationen
(C99)
(C99)
(C99)
(C99)(C99)(C99)(C23)
Maximum/Minimum-Operationen
(C99)
(C99)
Exponentialfunktionen
(C23)
(C99)
(C99)
(C23)
(C23)

(C99)
(C99)(C23)
(C23)
(C23)
Potenzfunktionen
(C99)
(C23)
(C23)

(C99)
(C23)
(C23)
Trigonometrische und hyperbolische Funktionen
(C23)
(C23)
(C23)
(C23)
(C99)
(C99)
(C99)
Nächste ganze Gleitkommazahlen
(C99)(C99)(C99)
(C99)

(C99)(C99)(C99)
(C23)(C23)(C23)(C23)
Gleitkomma-Manipulation
(C99)(C99)
(C99)(C23)
(C99)
Verengende Operationen
(C23)
(C23)
(C23)
(C23)
(C23)
(C23)
Quanten- und Quantenexponent-Funktionen
Dezimal-Neu-Kodierungsfunktionen
Gesamtordnung und Payload-Funktionen
Klassifizierung
fpclassify
(C99)
(C99)
(C99)
(C99)
(C23)
Fehler- und Gammafunktionen
(C99)
(C99)
(C99)
(C99)
Typen
Makrokonstanten
Spezielle Gleitkommawerte
(C99)(C23)
Argumente und Rückgabewerte
Fehlerbehandlung
Schnelle Operationsanzeigen
 
Definiert in Header <math.h>
#define fpclassify(arg) /* implementierungsabhängig */
(seit C99)

Kategorisiert den Gleitkommawert arg in die folgenden Kategorien: Null, Subnormal, Normal, Unendlich, NAN oder eine implementierungsabhängige Kategorie. Das Makro gibt einen ganzzahligen Wert zurück.

FLT_EVAL_METHOD wird ignoriert: Selbst wenn das Argument mit mehr Wertebereich und Präzision als sein Typ ausgewertet wird, wird es zuerst in seinen semantischen Typ konvertiert und die Klassifizierung basiert darauf: Ein normaler long-double-Wert kann subnormal werden, wenn er in double konvertiert wird, und null, wenn er in float konvertiert wird.

Inhalt

[bearbeiten] Parameter

arg - Gleitkommawert

[bearbeiten] Rückgabewert

Einer von FP_INFINITE, FP_NAN, FP_NORMAL, FP_SUBNORMAL, FP_ZERO oder einem implementierungsabhängigen Typ, der die Kategorie von arg angibt.

[bearbeiten] Beispiel

#include <float.h>
#include <math.h>
#include <stdio.h>
 
const char* show_classification(double x)
{
    switch(fpclassify(x))
    {
        case FP_INFINITE:  return "Inf";
        case FP_NAN:       return "NaN";
        case FP_NORMAL:    return "normal";
        case FP_SUBNORMAL: return "subnormal";
        case FP_ZERO:      return "zero";
        default:           return "unknown";
    }
}
 
int main(void)
{
    printf("1.0/0.0 is %s\n", show_classification(1 / 0.0));
    printf("0.0/0.0 is %s\n", show_classification(0.0 / 0.0));
    printf("DBL_MIN/2 is %s\n", show_classification(DBL_MIN / 2));
    printf("-0.0 is %s\n", show_classification(-0.0));
    printf("1.0 is %s\n", show_classification(1.0));
}

Ausgabe

1.0/0.0 is Inf
0.0/0.0 is NaN
DBL_MIN/2 is subnormal
-0.0 is zero
1.0 is normal

[bearbeiten] Referenzen

  • C23-Standard (ISO/IEC 9899:2024)
  • 7.12.3.1 Das fpclassify-Makro (S. TBD)
  • C17-Standard (ISO/IEC 9899:2018)
  • 7.12.3.1 Das fpclassify-Makro (S. TBD)
  • C11-Standard (ISO/IEC 9899:2011)
  • 7.12.3.1 Das fpclassify-Makro (S. 235)
  • C99-Standard (ISO/IEC 9899:1999)
  • 7.12.3.1 Das fpclassify-Makro (S. 216)

[bearbeiten] Siehe auch

prüft, ob die gegebene Zahl endlich ist
(Funktionsmakro) [bearbeiten]
(C99)
prüft, ob die gegebene Zahl unendlich ist
(Funktionsmakro) [bearbeiten]
(C99)
prüft, ob die gegebene Zahl NaN ist
(Funktionsmakro) [bearbeiten]
prüft, ob die gegebene Zahl normal ist
(Funktionsmakro) [bearbeiten]
C++ Dokumentation für fpclassify