_fpclass, _fpclassl

Aus Appmethod Topics
Wechseln zu: Navigation, Suche

Nach oben zu Float.h - Index


Header-Datei

float.h

Kategorie

Mathematische Routinen

Prototyp

int _fpclass(double d);

int _fpclassl(long double ld);

Beschreibung

Gibt einen Integerwert zurück, der den Typ (die Klasse) eines IEEE-Real für double-Werte repräsentiert. Dieser Wert enthält Informationen zur Gleitkommaklasse des Arguments.

_fpclassl ist die long double-Version. Sie benötigt ein long double-Argument und gibt den Typ (die Klasse) eines IEEE-Real für Werte vom Typ long double zurück.

Rückgabewert

Gibt einen Integerwert zurück, der die Gleitkommaklasse des Arguments angibt. Die in der folgenden Tabelle aufgeführten möglichen Werte sind in FLOAT.H definiert.

_FPCLASS_UNSUP

Nicht unterstütztes IEEE-Format

_FPCLASS_SNAN

Zeichen NaN

_FPCLASS_QNAN

Quiet NaN

_FPCLASS_NINF

Negativ unendlich

_FPCLASS_NN

Negative normalisierte Nicht-Null

_FPCLASS_ND

Negativ denormalisiert

_FPCLASS_NZ

Negative Null (-0,0)

_FPCLASS_PZ

Positive Null (+0,0)

_FPCLASS_PD

Positiv denormalisiert

_FPCLASS_PN

Positive normalisierte Nicht-Null

_FPCLASS_PINF

Positiv unendlich

Beispiel

#include <float.h>
#include <stdio.h>

/* a und b vergleichen */
int compare(double a, double b)
{
  /* Nur wenn beide endlich sind. */
  if (_finite(a) && _finite(b)) {
    if (a < b) return -1;
    else if (a > b) return 1;
    else return 0;
  } else { 
    /* Bei unendlichen Werten die Klasse der Zahlen überprüfen */
    int class_a = _fpclass(a);
    int class_b = _fpclass(b);

    /* Unendliche überprüfen und vergleichen */
    if (class_a == _FPCLASS_NINF) {
      if (class_b == _FPCLASS_NINF) 
        return 0;
      else
        return -1;
    } else if (class_a == _FPCLASS_PINF) {
      if (class_b == _FPCLASS_PINF)
        return 0; 
      else 
        return 1; 
    }
  }
  
  /* Keine Beziehung gefunden! */
  return -1;
}

Portabilität

POSIX Win32 ANSI C ANSI C++

_fpclass

+

_fpclassl

+