浮動小数点プリミティブ

標準 C ランタイム ライブラリ (CRT) の浮動小数点関数を実装するために使用される、Microsoft 固有のプリミティブ関数。 完全を期すためにここに記載されていますが、使用はお勧めしません。 これらの関数には有効桁数、例外処理、IEEE-754 の動作への準拠に関する問題があることが認識されているため、未使用として記載されているものもあります。 下位互換性のためにのみライブラリに存在します。 正しい動作、移植性、標準への準拠のためには、これらの関数ではなく標準の浮動小数点関数を使用することをお勧めします。

既定では、この関数のグローバル状態の適用対象は、アプリケーションになります。 これを変更するには、「CRT でのグローバル状態」を参照してください。

_dclass、_ldclass、_fdclass

構文

short __cdecl _dclass(double x);
short __cdecl _ldclass(long double x);
short __cdecl _fdclass(float x);

パラメーター

x
浮動小数点関数の引数。

解説

これらの浮動小数点プリミティブでは、浮動小数点型用に CRT マクロ fpclassify の C バージョンを実装します。 引数 x の分類が、math.h に定義されている次のいずれかの定数として返されます。

説明
FP_NAN クワイエット型、シグナル型、または不確定の NaN
FP_INFINITE 正または負の無限大
FP_NORMAL 正規化された正または負の 0 以外の値
FP_SUBNORMAL 正または負の非正規の (正規化されない) 値
FP_ZERO 正または負の 0 値

詳細については、Microsoft 固有の _fpclass、_fpclassf 関数を参照してください。 移植性を確保するには、fpclassify マクロまたは関数を使用してください。

_dsign、_ldsign、_fdsign

構文

int __cdecl _dsign(double x);
int __cdecl _ldsign(long double x);
int __cdecl _fdsign(float x);

パラメーター

x
浮動小数点関数の引数。

解説

これらの浮動小数点プリミティブでは、CRT に signbit マクロまたは関数を実装します。 符号ビットが引数 x の仮数部に設定されている場合、0 以外の値を返します。符号ビットが設定されていない場合は 0 を返します。

_dpcomp、_ldpcomp、_fdpcomp

構文

int __cdecl _dpcomp(double x, double y);
int __cdecl _ldpcomp(long double x, long double y);
int __cdecl _fdpcomp(float x, float y);

パラメーター

xy
浮動小数点関数の引数。

解説

これらの浮動小数点プリミティブでは、xy の 2 つの引数を受け取り、それらの順序の関係を示す値を返します。math.h に定義されているこれらの定数のビットごとの OR として表現されます。

説明
_FP_LT xy より小さいと見なすことができます
_FP_EQ xy と等しいと見なすことができます
_FP_GT xy より大きいと見なすことができます

これらのプリミティブでは、CRT に isgreater、isgreaterequal、isless、islessequal、islessgreater、and isunordered のマクロと関数を実装します。

_dtest、_ldtest、_fdtest

構文

short __cdecl _dtest(double* px);
short __cdecl _ldtest(long double* px);
short __cdecl _fdtest(float* px);

パラメーター

px
浮動小数点引数へのポインター。

解説

これらの浮動小数点プリミティブでは、浮動小数点型用に CRT 関数 fpclassify の C++ バージョンを実装します。 引数 x が評価され、math.h に定義されている次のいずれかの定数として分類が返されます。

説明
FP_NAN クワイエット型、シグナル型、または不確定の NaN
FP_INFINITE 正または負の無限大
FP_NORMAL 正規化された正または負の 0 以外の値
FP_SUBNORMAL 正または負の非正規の (正規化されない) 値
FP_ZERO 正または負の 0 値

詳細については、Microsoft 固有の _fpclass、_fpclassf 関数を参照してください。 移植性を確保するには、fpclassify 関数を使用してください。

_d_int、_ld_int、_fd_int

構文

short __cdecl _d_int(double* px, short exp);
short __cdecl _ld_int(long double* px, short exp);
short __cdecl _fd_int(float* px, short exp);

パラメーター

px
浮動小数点引数へのポインター。

exp
整数型の指数。

解説

これらの浮動小数点プリミティブでは、浮動小数点値 px と指数値 exp へのポインターを受け取り、可能であれば、指定された指数より下の浮動小数点値の小数部を削除します。 返される値は、入力値が NaN または無限大の場合は px の入力値に対する fpclassify の結果、それ以外の場合は px の出力値に対する結果です。

_dscale、_ldscale、_fdscale

構文

short __cdecl _dscale(double* px, long exp);
short __cdecl _ldscale(long double* px, long exp);
short __cdecl _fdscale(float* px, long exp);

パラメーター

px
浮動小数点引数へのポインター。

exp
整数型の指数。

解説

これらの浮動小数点プリミティブでは、浮動小数点値 px と指数値 exp へのポインターを受け取り、可能であれば、px の値を 2exp でスケーリングします。 返される値は、入力値が NaN または無限大の場合は px の入力値に対する fpclassify の結果、それ以外の場合は px の出力値に対する結果です。 移植性を確保するには、ldexp、ldexpf、ldexpl 関数を使用してください。

_dunscale、_ldunscale、_fdunscale

構文

short __cdecl _dunscale(short* pexp, double* px);
short __cdecl _ldunscale(short* pexp, long double* px);
short __cdecl _fdunscale(short* pexp, float* px);

パラメーター

pexp
整数型の指数へのポインター。

px
浮動小数点引数へのポインター。

解説

これらの浮動小数点プリミティブでは、可能であれば、px が指している浮動小数点値を、仮数部と指数に分割します。 仮数部は、絶対値が 0.5 以上 1.0 未満となるようにスケーリングされます。 指数は値 n です。ここで、元の浮動小数点値は、スケーリングされた仮数部の 2n 倍と等しくなります。 整数の指数 n は、pexp が指している場所に格納されます。 返される値は、入力値が NaN または無限大の場合は px の入力値に対する fpclassify の結果、それ以外の場合は出力値に対する結果です。 移植性を確保するには、frexp、frexpf、frexpl 関数を使用してください。

_dexp、_ldexp、_fdexp

構文

short __cdecl _dexp(double* px, double y, long exp);
short __cdecl _ldexp(long double* px, long double y, long exp);
short __cdecl _fdexp(float* px, float y, long exp);

パラメーター

y
浮動小数点関数の引数。

px
浮動小数点引数へのポインター。

exp
整数型の指数。

解説

これらの浮動小数点プリミティブでは、px が指す場所に y * 2exp と等しい浮動小数点値を生成します。 返される値は、入力値が NaN または無限大の場合は y の入力値に対する fpclassify の結果、それ以外の場合は px の出力値に対する結果です。 移植性を確保するには、ldexp、ldexpf、ldexpl 関数を使用してください。

_dnorm、_fdnorm

構文

short __cdecl _dnorm(unsigned short* ps);
short __cdecl _fdnorm(unsigned short* ps);

パラメーター

ps
unsigned short の配列として表される浮動小数点値のビットごとの表現へのポインター。

解説

これらの浮動小数点プリミティブでは、アンダーフローした浮動小数点値の小数部を正規化し、"特性" (偏った指数) が一致するように調整します。 値は、math.h で宣言された _double_val_ldouble_val、または _float_val 型のパニングされた共用体を介して unsigned short の配列に変換された浮動小数点型のビットごとの表現として渡されます。 戻り値は、入力値が NaN または無限大の場合は入力浮動小数点値に対する fpclassify の結果、それ以外の場合は出力値に対する結果です。

_dpoly、_ldpoly、_fdpoly

構文

double __cdecl _dpoly(double x, double const* table, int n);
long double __cdecl _ldpoly(long double x, long double const* table, int n);
float __cdecl _fdpoly(float x, _float const* table, int n);

パラメーター

x
浮動小数点関数の引数。

テーブル
多項式の定数係数のテーブルへのポインター。

n
評価する多項式の次数。

解説

これらの浮動小数点プリミティブでは、次数 n の多項式での x の評価を返します。係数は table 内の対応する定数値によって表されます。 たとえば、table[0] = 3.0、table[1] = 4.0、table[2] = 5.0、n = 2 の場合は、多項式 5.0x2 + 4.0x + 3.0 を表しています。 この多項式が x を 2.0 として評価された場合、結果は 31.0 になります。 これらの関数は内部的には使用されません。

_dlog、_dlog、_dlog

構文

double __cdecl _dlog(double x, int base_flag);
long double __cdecl _ldlog(long double x, int base_flag);
float __cdecl _fdlog(float x, int base_flag);

パラメーター

x
浮動小数点関数の引数。

base_flag
使用する底を制御するフラグ。底が e の場合は 0、底が 10 の場合は 0 以外。

解説

これらの浮動小数点プリミティブでは、base_flag が 0 の場合、x の自然対数 (ln(x) または loge(x)) を返します。 base_flag が 0 以外の場合は、x の 10 を底とする対数 (log10(x)) を返します。 これらの関数は内部的には使用されません。 移植性を確保するには、関数 log、logf、logl、log10、log10f、log10l を使用してください。

_dsin、_ldsin、_fdsin

構文

double __cdecl _dsin(double x, unsigned int quadrant);
long double __cdecl _ldsin(long double x, unsigned int quadrant);
float __cdecl _fdsin(float x, unsigned int quadrant);

パラメーター

x
浮動小数点関数の引数。

quadrant
sincos-sin-cos の結果を生成するために使用する 0、1、2、または 3 の象限のオフセット。

解説

これらの浮動小数点プリミティブでは、x のサインを 4 を法とする quadrant でオフセットして返します。 4 を法とする quadrant がそれぞれ 0、1、2、または 3 の場合、実質的には x のサイン、コサイン、-サイン、-コサインが返されます。 これらの関数は内部的には使用されません。 移植性を確保するには、sin、sinf、sinlcos、cosf、cosl 関数を使用してください。

必要条件

ヘッダー: <math.h>

互換性の詳細については、「互換性」を参照してください。

関連項目

浮動小数点サポート
fpclassify
_fpclass、_fpclassf
isfinite、_finite、_finitef
isinf
isnan、_isnan、_isnanf
isnormal
cos、cosf、cosl
frexp、frexpf、frexpl
ldexp、ldexpf、ldexpl
log、logf、logl、log10、log10f、log10l
sin、sinf、sinl