浮動小数点プリミティブ
標準 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);
パラメーター
x
, y
浮動小数点関数の引数。
解説
これらの浮動小数点プリミティブは、 x
と y
の 2 つの引数を受け取り、math.h で定義されたビットごとの定数またはこれらの定数の順序関係を示す値を返します。
値 | 説明 |
---|---|
_FP_LT |
x より小さいと見なすことができます y |
_FP_EQ |
x と等しいと見なすことができます y |
_FP_GT |
x より大きいと見なすことができます y |
これらのプリミティブは、CRT に isgreater
、 isgreaterequal
、 isless
、 islessequal
、 islessgreater
、 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
へのポインターを受け取り、可能な場合は、指定された指数より下の浮動小数点値の小数部を削除します。 返される値は、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
結果です。 移植性を高める場合は、 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
が指す位置に格納されます。 返される値は、px
の入力値が NaN または無限大の場合は入力値に対する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
整数型の指数。
解説
これらの浮動小数点プリミティブは、y
* 2exp と等しいpx
が指す位置に浮動小数点値を構築します。 返される値は、y
の入力値が NaN または無限大の場合は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
浮動小数点関数の引数。
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) が返されます。 これらの関数は内部的には使用されません。 移植性を高める場合は、関数の 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
sin
、cos
、-sin
、-cos
の結果を生成するために使用する 0、1、2、または 3 の象限のオフセット。
解説
これらの浮動小数点プリミティブは、quadrant
剰余 4 によってx
オフセットのサインを返します。 実質的には、剰余 4 が 0、1、2、または 3 の場合、 x
のサイン、コサイン、-コサイン、-コサイン quadrant
返されます。 これらの関数は内部的には使用されません。 移植性を高める場合は、 sin
、 sinf
、 sinl
、 cos
、 cosf
、 cosl
関数を使用します。
要件
ヘッダー: <math.h>
互換性の詳細については、「 Compatibility」を参照してください。
関連項目
数値演算と浮動小数点のサポート
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