Bagikan melalui


Primitif floating-point

Fungsi primitif khusus Microsoft yang digunakan untuk mengimplementasikan beberapa fungsi floating-point pustaka runtime C (CRT) standar. Mereka didokumenkan di sini untuk kelengkapan, tetapi tidak disarankan untuk digunakan. Beberapa fungsi ini dicatat sebagai tidak digunakan, karena mereka diketahui memiliki masalah dalam presisi, penanganan pengecualian, dan kesamaan dengan perilaku IEEE-754. Mereka ada di pustaka hanya untuk kompatibilitas mundur. Untuk perilaku, portabilitas, dan kepatuhan yang benar terhadap standar, lebih memilih fungsi floating-point standar daripada fungsi-fungsi ini.

Secara default, status global fungsi ini dicakup ke aplikasi. Untuk mengubah perilaku ini, lihat Status global di CRT.

_dclass, _ldclass, _fdclass

Sintaks

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

Parameter

x
Argumen fungsi floating-point.

Keterangan

Primitif floating-point ini mengimplementasikan versi C makro CRT fpclassify untuk jenis floating-point. Klasifikasi argumen x dikembalikan sebagai salah satu konstanta ini, yang didefinisikan dalam math.h:

Nilai Deskripsi
FP_NAN NaN yang tenang, memberi sinyal, atau tidak ditentukan
FP_INFINITE Tak terbatas positif atau negatif
FP_NORMAL Nilai positif atau negatif yang dinormalisasi bukan nol
FP_SUBNORMAL Nilai subnormal positif atau negatif (denormalisasi)
FP_ZERO Nilai nol positif atau negatif

Untuk detail selengkapnya, Anda dapat menggunakan fungsi , _fpclassf khusus _fpclassMicrosoft. fpclassify Gunakan makro atau fungsi untuk portabilitas.

_dsign, _ldsign, _fdsign

Sintaks

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

Parameter

x
Argumen fungsi floating-point.

Keterangan

Primitif floating-point ini mengimplementasikan signbit makro atau fungsi dalam CRT. Mereka mengembalikan nilai bukan nol jika bit tanda diatur dalam significand (mantissa) dari argumen x. Jika tidak, mereka mengembalikan 0 jika bit tanda tidak diatur.

_dpcomp, _ldpcomp, _fdpcomp

Sintaks

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

Parameter

x, y
Argumen fungsi floating-point.

Keterangan

Primitif floating-point ini mengambil dua argumen, x dan y, dan mengembalikan nilai yang menunjukkan hubungan pengurutannya, yang dinyatakan sebagai bitwise atau dari konstanta ini, yang didefinisikan dalam math.h:

Nilai Deskripsi
_FP_LT x dapat dianggap kurang dari y
_FP_EQ x dapat dianggap sama dengan y
_FP_GT x dapat dianggap lebih besar dari y

Primitif ini mengimplementasikan isgreatermakro dan fungsi , , isgreaterequalislessequalisless, islessgreater, dan isunordered di CRT.

_dtest, _ldtest, _fdtest

Sintaks

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

Parameter

px
Penunjuk ke argumen floating-point.

Keterangan

Primitif floating-point ini mengimplementasikan versi C++ dari fungsi fpclassify CRT untuk jenis floating-point. Argumen x dievaluasi dan klasifikasi dikembalikan sebagai salah satu konstanta ini, yang didefinisikan dalam math.h:

Nilai Deskripsi
FP_NAN NaN yang tenang, memberi sinyal, atau tidak ditentukan
FP_INFINITE Tak terbatas positif atau negatif
FP_NORMAL Nilai positif atau negatif yang dinormalisasi bukan nol
FP_SUBNORMAL Nilai subnormal positif atau negatif (denormalisasi)
FP_ZERO Nilai nol positif atau negatif

Untuk detail selengkapnya, Anda dapat menggunakan fungsi , _fpclassf khusus _fpclassMicrosoft. fpclassify Gunakan fungsi untuk portabilitas.

_d_int, _ld_int, _fd_int

Sintaks

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);

Parameter

px
Penunjuk ke argumen floating-point.

exp
Eksponen sebagai jenis integral.

Keterangan

Primitif floating-point ini mengambil pointer ke nilai floating-point dan nilai pxexpeksponen , dan menghapus bagian pecahan dari nilai floating-point di bawah eksponen yang diberikan, jika memungkinkan. Nilai yang dikembalikan adalah hasil dari fpclassify nilai input jika px berupa NaN atau infinity, dan pada nilai px output sebaliknya.

_dscale, _ldscale, _fdscale

Sintaks

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

Parameter

px
Penunjuk ke argumen floating-point.

exp
Eksponen sebagai jenis integral.

Keterangan

Primitif floating-point ini mengambil pointer ke nilai floating-point dan nilai pxexpeksponen , dan menskalakan nilai dalam px 2exp, jika memungkinkan. Nilai yang dikembalikan adalah hasil dari fpclassify nilai input jika px berupa NaN atau infinity, dan pada nilai px output sebaliknya. Untuk portabilitas, lebih suka fungsi , ldexpf, ldexpl .ldexp

_dunscale, _ldunscale, _fdunscale

Sintaks

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

Parameter

pexp
Penunjuk ke eksponen sebagai jenis integral.

px
Penunjuk ke argumen floating-point.

Keterangan

Primitif floating-point ini memecah nilai floating-point yang ditunjukkan oleh px ke significand (mantissa) dan eksponen, jika memungkinkan. Significand diskalakan sehingga nilai absolut lebih besar dari atau sama dengan 0,5 dan kurang dari 1,0. Eksponen adalah nilai n, di mana nilai floating-point asli sama dengan significand yang diskalakan kali 2n. Eksponen n bilangan bulat ini disimpan di lokasi yang diarahkan oleh pexp. Nilai yang dikembalikan adalah hasil dari fpclassify nilai input jika px nilai tersebut adalah NaN atau infinity, dan pada nilai output sebaliknya. Untuk portabilitas, lebih suka fungsi , frexpf, frexpl .frexp

_dexp, _ldexp, _fdexp

Sintaks

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);

Parameter

y
Argumen fungsi floating-point.

px
Penunjuk ke argumen floating-point.

exp
Eksponen sebagai jenis integral.

Keterangan

Primitif floating-point ini membangun nilai floating-point di lokasi yang ditunjukkan sama dengan pxy * 2exp. Nilai yang dikembalikan adalah hasil dari fpclassify nilai input jika y berupa NaN atau infinity, dan pada nilai px output sebaliknya. Untuk portabilitas, lebih suka fungsi , ldexpf, ldexpl .ldexp

_dnorm, _fdnorm

Sintaks

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

Parameter

ps
Penunjuk ke representasi bitwise dari nilai floating-point yang dinyatakan sebagai array dari unsigned short.

Keterangan

Primitif floating-point ini menormalkan bagian pecahan dari nilai floating-point yang underflowed dan menyesuaikan karakteristik, atau eksponen bias, agar sesuai. Nilai diteruskan sebagai representasi bitwise dari jenis floating-point yang dikonversi ke array unsigned short melalui _double_valserikat , , _ldouble_valatau _float_val type-punning yang dideklarasikan dalam math.h. Nilai yang dikembalikan adalah hasil dari fpclassify nilai input floating-point jika berupa NaN atau infinity, dan pada nilai output sebaliknya.

_dpoly, _ldpoly, _fdpoly

Sintaks

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);

Parameter

x
Argumen fungsi floating-point.

table
Penunjuk ke tabel koefisien konstan untuk polinomial.

n
Urutan polinomial untuk dievaluasi.

Keterangan

Primitif floating-point ini mengembalikan evaluasi x dalam polinomial urutan n yang koefisiennya diwakili oleh nilai konstanta yang sesuai dalam table. Misalnya, jika table[0] = 3.0, table[1] = 4.0, table[2] = 5.0, dan n = 2, itu mewakili polinomial 5,0x2 + 4,0x + 3,0. Jika polinomial ini dievaluasi untuk x 2,0, hasilnya adalah 31,0. Fungsi-fungsi ini tidak digunakan secara internal.

_dlog, _dlog, _dlog

Sintaks

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);

Parameter

x
Argumen fungsi floating-point.

base_flag
Bendera yang mengontrol basis yang akan digunakan, 0 untuk basis e dan bukan nol untuk basis 10.

Keterangan

Primitif floating-point ini mengembalikan log x alami (ln(x) atau loge(x)), ketika base_flag adalah 0. Mereka mengembalikan basis log 10 dari x, atau log10(x), ketika base_flag bukan nol. Fungsi-fungsi ini tidak digunakan secara internal. Untuk portabilitas, lebih suka fungsi log, , logflogl, log10, log10f, dan log10l.

_dsin, _ldsin, _fdsin

Sintaks

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);

Parameter

x
Argumen fungsi floating-point.

quadrant
Offset kuadrian 0, 1, 2, atau 3 untuk digunakan untuk menghasilkan sin, , cos-sin, dan -cos hasil.

Keterangan

Primitif floating-point ini mengembalikan sinus x offset oleh quadrant modulo 4. Secara efektif, mereka mengembalikan sinus, kosinus, -sinus, dan -kosinus x ketika quadrant modulo 4 masing-masing adalah 0, 1, 2, atau 3. Fungsi-fungsi ini tidak digunakan secara internal. Untuk portabilitas, lebih suka sinfungsi , , sinfsinl,coscosf , . cosl

Persyaratan

Header: <math.h>

Untuk informasi kompatibilitas selengkapnya, lihat Kompatibilitas.

Baca juga

Dukungan matematika dan titik mengambang
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