Поделиться через


Примитивы с плавающей запятой

Примитивные функции, относящиеся к Корпорации Майкрософт, которые используются для реализации некоторых стандартных функций библиотеки среды выполнения 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:

значение Description
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:

значение Description
_FP_LT x может считаться меньше, чем y
_FP_EQ x может считаться равным y
_FP_GT x может считаться больше, чем y

Эти примитивы реализуют islessislessequalisgreaterequalislessgreaterisgreaterмакросы, макросы и 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:

значение Description
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функции , ldexpfldexpl

_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функции , frexpffrexpl

_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функции , ldexpfldexpl

_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 xe(x)), если base_flag значение равно 0. Они возвращают базу журнала 10 или xжурнал 10(x), если base_flag значение неравно нулю. Эти функции не используются внутри системы. Для переносимости предпочитайте функции , , , , log10и log10flog10l. logllogflog

_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, cosfcoslcossin

Требования

Заголовок: <math.h>

Дополнительные сведения о совместимости см. в разделе Совместимость.

См. также

Поддержка математических и плавающих точек
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