Примитивы с плавающей запятой
Примитивные функции, относящиеся к Корпорации Майкрософт, которые используются для реализации некоторых стандартных функций библиотеки среды выполнения CRT. Они описаны здесь для полноты, но не рекомендуется использовать. Некоторые из этих функций отмечены как неиспользуемые, так как они, как известно, имеют проблемы с точностью, обработкой исключений и соответствием поведению IEEE-754. Они существуют в библиотеке только для обратной совместимости. Для правильного поведения, переносимости и соблюдения стандартов предпочитают стандартные функции с плавающей запятой по сравнению с этими функциями.
По умолчанию глобальное состояние этой функции ограничивается приложением. Чтобы изменить это поведение, см . статью "Глобальное состояние" в CRT.
_dclass
, , _ldclass
_fdclass
Синтаксис
short __cdecl _dclass(double x);
short __cdecl _ldclass(long double x);
short __cdecl _fdclass(float x);
Параметры
x
Аргумент функции с плавающей запятой.
Замечания
Эти примитивы с плавающей запятой реализуют версии макроса fpclassify
CRT для типов с плавающей запятой. Классификация аргумента x
возвращается в виде одной из этих констант, определенных в math.h:
значение | Описание |
---|---|
FP_NAN |
Сигнальное, несигнальное или неопределенное значение NaN |
FP_INFINITE |
Положительная или отрицательная бесконечность |
FP_NORMAL |
Положительное или отрицательное нормализованное ненулевое значение |
FP_SUBNORMAL |
Положительное или отрицательное поднормальное значение (денормализованное) |
FP_ZERO |
Положительное или отрицательное нулевое значение |
Для получения дополнительных сведений можно использовать функции, относящиеся к _fpclass
_fpclassf
Корпорации Майкрософт. fpclassify
Используйте макрос или функцию для переносимости.
_dsign
, , _ldsign
_fdsign
Синтаксис
int __cdecl _dsign(double x);
int __cdecl _ldsign(long double x);
int __cdecl _fdsign(float x);
Параметры
x
Аргумент функции с плавающей запятой.
Замечания
Эти примитивы с плавающей запятой signbit
реализуют макрос или функцию в CRT. Они возвращают ненулевое значение, если бит знака задан в аргументе significand (mantissa).x
В противном случае они возвращают значение 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
возвращают значение, показывающее их упорядочение, выраженное как битовое или эти константы, определенные в math.h:
значение | Описание |
---|---|
_FP_LT |
x может считаться меньше, чем y |
_FP_EQ |
x может считаться равным y |
_FP_GT |
x может считаться больше, чем y |
Эти примитивы реализуют isless
islessequal
isgreaterequal
islessgreater
isgreater
макросы, макросы и isunordered
функции в CRT.
_dtest, _ldtest, _fdtest
Синтаксис
short __cdecl _dtest(double* px);
short __cdecl _ldtest(long double* px);
short __cdecl _fdtest(float* px);
Параметры
px
Указатель на аргумент с плавающей запятой.
Замечания
Эти примитивы с плавающей запятой реализуют версии функции fpclassify
CRT для типов с плавающей запятой. Аргумент x
вычисляется, а классификация возвращается в виде одной из этих констант, определенных в math.h:
значение | Описание |
---|---|
FP_NAN |
Сигнальное, несигнальное или неопределенное значение NaN |
FP_INFINITE |
Положительная или отрицательная бесконечность |
FP_NORMAL |
Положительное или отрицательное нормализованное ненулевое значение |
FP_SUBNORMAL |
Положительное или отрицательное поднормальное значение (денормализованное) |
FP_ZERO |
Положительное или отрицательное нулевое значение |
Для получения дополнительных сведений можно использовать функции, относящиеся к _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
, а при возможности удалите дробную часть значения с плавающей запятой ниже заданного экспонента. Возвращаемое значение является результатом fpclassify
входного значения в px
том случае, если это NaN или бесконечность, а в противном случае — выходное значение 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
. Возвращаемое значение является результатом fpclassify
входного значения в px
том случае, если это NaN или бесконечность, а в противном случае — выходное значение 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
. Возвращаемое значение является результатом входного fpclassify
значения в px
том случае, если это NaN или бесконечность, а в противном случае — выходное значение. Для переносимости предпочитайте 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. Возвращаемое значение является результатом fpclassify
входного значения в y
том случае, если это NaN или бесконечность, а в противном случае — выходное значение px
. Для переносимости предпочитайте ldexp
функции , ldexpf
ldexpl
_dnorm, _fdnorm
Синтаксис
short __cdecl _dnorm(unsigned short* ps);
short __cdecl _fdnorm(unsigned short* ps);
Параметры
ps
Указатель на побитовое представление значения с плавающей запятой, выраженное в виде массива unsigned short
.
Замечания
Эти примитивы с плавающей запятой нормализуют дробную часть недополученного значения с плавающей запятой и корректируют характеристику или предвзятую экспоненту, чтобы соответствовать. Значение передается в виде побитового представления типа с плавающей запятой, преобразованного в массив unsigned short
_double_val
через объединение , _ldouble_val
или _float_val
объединение типа punning, объявленное в math.h. Возвращаемое значение является результатом входного fpclassify
значения с плавающей запятой, если это NaN или бесконечность, а в противном случае — значение выходных данных.
_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
Порядок вычисляемого полиномиала.
Замечания
Эти примитивы с плавающей запятой возвращают оценку x
в полиномиале порядка n
, коэффициенты которых представлены соответствующими значениями констант в table
. Например, если table[0]
= 3.0, table[1]
= 4.0, table[2]
= 5.0 и n
= 2, он представляет полиномиальный 5.0x 2 + 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
Флаг, который управляет используемой базой, 0 для базового e и ненуля для base 10.
Замечания
Эти примитивы с плавающей запятой возвращают естественный журнал (ln(x) или log x
e(x)), если base_flag
значение равно 0. Они возвращают базу журнала 10 или x
журнал 10(x), если base_flag
значение неравно нулю. Эти функции не используются внутри системы. Для переносимости предпочитайте функции , , , , log10
и log10f
log10l
. logl
logf
log
_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
Смещение квадранта от 0, 1, 2 или 3 для производстваsin
, cos
-sin
и -cos
результатов.
Замечания
Эти примитивы с плавающей запятой возвращают синус x
смещения quadrant
модуло 4. Фактически, они возвращают синус, косин, -sine и -cosine, x
когда quadrant
модуло 4 равно 0, 1, 2 или 3 соответственно. Эти функции не используются внутри системы. Для переносимости предпочитайте функции , sinf
, sinl
, cosf
cosl
cos
sin
Требования
Заголовок: <math.h>
Дополнительные сведения о совместимости см. в разделе Совместимость.
См. также
Поддержка математических и плавающих точек
fpclassify
_fpclass
, _fpclassf
isfinite
, , _finite
_finitef
isinf
isnan
, , _isnan
_isnanf
isnormal
cos
, , cosf
cosl
frexp
, , frexpf
frexpl
ldexp
, , ldexpf
ldexpl
log
, , logf
log10
logl
log10f
,log10l
sin
, , sinf
sinl