浮動小数点プリミティブ

標準 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 で定義されている次のいずれかの定数として返されます。

Value 説明
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);

パラメーター

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

解説

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

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

これらのプリミティブは、CRT に isgreaterisgreaterequalislessislessequalislessgreaterisunordered のマクロと関数を実装します。

_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 で定義されている次のいずれかの定数として分類が返されます。

Value 説明
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へのポインターを受け取り、可能な場合は、指定された指数より下の浮動小数点値の小数部を削除します。 返される値は、pxの入力値が NaN または無限大の場合は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へのポインターを受け取り、可能な場合は値を 2 exp ずつpxにスケーリングします。 返される値は、pxの入力値が NaN または無限大の場合はfpclassify、それ以外の場合は出力値px結果です。 移植性を高める場合は、 ldexpldexpfldexpl 関数を使用します。

_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が指す位置に格納されます。 返される値は、pxの入力値が NaN または無限大の場合は入力値に対するfpclassifyの結果であり、それ以外の場合は出力値の結果です。 移植性を高める場合は、 frexpfrexpffrexpl 関数を使用します。

_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
整数型の指数。

解説

これらの浮動小数点プリミティブは、y * 2exp と等しいpxが指す位置に浮動小数点値を構築します。 返される値は、yの入力値が NaN または無限大の場合はfpclassify、それ以外の場合は出力値px結果です。 移植性を高める場合は、 ldexpldexpfldexpl 関数を使用します。

_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
浮動小数点関数の引数。

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

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

解説

これらの浮動小数点プリミティブは、係数がtableの対応する定数値によって表される順序nの多項式でxの評価を返します。 たとえば、 table[0] = 3.0、 table[1] = 4.0、 table[2] = 5.0、 n = 2 の場合、多項式 5.0x2 + 4.0x + 3.0 を表します。 この多項式が 2.0 の x で評価された場合、結果は 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) が返されます。 これらの関数は内部的には使用されません。 移植性を高める場合は、関数の loglogflogllog10log10f、および 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 の象限のオフセット。

解説

これらの浮動小数点プリミティブは、quadrant剰余 4 によってxオフセットのサインを返します。 実質的には、剰余 4 が 0、1、2、または 3 の場合、 x のサイン、コサイン、-コサイン、-コサイン quadrant 返されます。 これらの関数は内部的には使用されません。 移植性を高める場合は、 sinsinfsinlcoscosfcosl 関数を使用します。

要件

ヘッダー: <math.h>

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

関連項目

数値演算と浮動小数点のサポート
fpclassify
_fpclass, _fpclassf
isfinite_finite_finitef
isinf
isnan_isnan_isnanf
isnormal
coscosfcosl
frexpfrexpffrexpl
ldexpldexpfldexpl
loglogflogllog10log10flog10l
sinsinfsinl