_fpclass、_fpclassl

提供: RAD Studio
移動先: 案内検索

float.h:インデックス への移動



ヘッダー ファイル

float.h

カテゴリ

数値計算ルーチン

プロトタイプ

int _fpclass(double d);
int _fpclassl(long double ld);

説明

IEEE 倍精度実数の型(クラス)を表す整数値を返します。 この値には、引数として渡された浮動小数点クラスの情報が含まれます。

_fpclassl はその long double 版で、long double の引数を受け取り、long double 用の IEEE 実数の型(クラス)を返します。

戻り値

引数の浮動小数点クラスを示す整数値を返します。 取り得る値(次の表を参照してください)は FLOAT.H で定義されています。

_FPCLASS_UNSUP

サポートされていない IEEE 形式

_FPCLASS_SNAN

シグナリング NaN

_FPCLASS_QNAN

クワイエット NaN

_FPCLASS_NINF

負の無限大

_FPCLASS_NN

正規化された負の非ゼロ

_FPCLASS_ND

負の非正規化数

_FPCLASS_NZ

負のゼロ(-0.0)

_FPCLASS_PZ

正のゼロ(+0.0)

_FPCLASS_PD

正の非正規化数

_FPCLASS_PN

正規化された正の非ゼロ

_FPCLASS_PINF

正の無限大

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

/* Compare a and b */
int compare(double a, double b)
{
  /* Only if both are finite. */
  if (_finite(a) && _finite(b)) {
    if (a < b)
      return -1;
    else if (a > b)
      return 1;
    else
      return 0;
  }
  else
  {
    /* For infinite values check the class of the numbers */
    int class_a = _fpclass(a);
    int class_b = _fpclass(b);

    /* No check the infinities and compare them */
    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;
    }
  }
  
  /* Cannot find a relationship! */
  return -1;
}

移植性

POSIX Win32 ANSI C ANSI C++

_fpclass

+

_fpclassl

+