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 _fpclass
Microsoft. 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 isgreater
makro dan fungsi , , isgreaterequal
islessequal
isless
, 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 _fpclass
Microsoft. 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 px
exp
eksponen , 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 px
exp
eksponen , 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 px
y
* 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_val
serikat , , _ldouble_val
atau _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
, , logf
logl
, 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 sin
fungsi , , sinf
sinl
,cos
cosf
, . 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
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk