Spec-Zone.ru › C++

Заголовок стандартной библиотеки <cmath>

Изначально этот заголовок входил в стандартную библиотеку C в виде <math.h>.

Этот заголовок является частью библиотеки числовых средств.

Типы

float_t
(C++11)
наиболее эффективный тип с плавающей точкой, не менее широкий, чем float
(определение типа)
double_t
(C++11)
наиболее эффективный тип с плавающей точкой, не менее широкий, чем double
(определение типа)

Макросы

HUGE_VALFHUGE_VALHUGE_VALL
(C++11)(C++11)
обозначает значение переполнения соответственно для float, double и longdouble
(макроконстанта)
INFINITY
(C++11)
вычисляется в положительную бесконечность (если она существует)
(макроконстанта)
NAN
(C++11)
вычисляется в тихое значение NaN типа float (если оно существует)
(макроконстанта)
math_errhandlingMATH_ERRNOMATH_ERREXCEPT
(C++11)(C++11)(C++11)
определяет механизм обработки ошибок, используемый стандартными математическими функциями
(макроконстанта)
Классификация
FP_NORMALFP_SUBNORMALFP_ZEROFP_INFINITEFP_NAN
(C++11)(C++11)(C++11)(C++11)(C++11)
обозначает категорию числа с плавающей точкой
(макроконстанта)

Функции

Основные операции
abs(float)fabsfabsffabsl
(C++11)(C++11)
абсолютное значение числа с плавающей точкой (\(\small{|x|}\)|x|)
(функция)
fmodfmodffmodl
(C++11)(C++11)
остаток от деления чисел с плавающей точкой
(функция)
remainderremainderfremainderl
(C++11)(C++11)(C++11)
знаковый остаток от операции деления
(функция)
remquoremquofremquol
(C++11)(C++11)(C++11)
знаковый остаток, а также три младших бита результата операции деления
(функция)
fmafmaffmal
(C++11)(C++11)(C++11)
операция объединённого умножения и сложения
(функция)
fmaxfmaxffmaxl
(C++11)(C++11)(C++11)
большее из двух чисел с плавающей точкой
(функция)
fminfminffminl
(C++11)(C++11)(C++11)
меньшее из двух чисел с плавающей точкой
(функция)
fdimfdimffdiml
(C++11)(C++11)(C++11)
положительная разность двух чисел с плавающей точкой (\({\small\max{(0, x-y)}}\)max(0, x-y))
(функция)
nannanfnanl
(C++11)(C++11)(C++11)
нечисловое значение (NaN)
(функция)
Линейная интерполяция
lerp
(C++20)
функция линейной интерполяции
(функция)
Экспоненциальные функции
expexpfexpl
(C++11)(C++11)
возвращает e в заданной степени (\({\small e^x}\)ex)
(функция)
exp2exp2fexp2l
(C++11)(C++11)(C++11)
возвращает 2 в заданной степени (\({\small 2^x}\)2x)
(функция)
expm1expm1fexpm1l
(C++11)(C++11)(C++11)
возвращает e в заданной степени минус 1 (\({\small e^x-1}\)ex-1)
(функция)
loglogflogl
(C++11)(C++11)
вычисляет натуральный логарифм (по основанию e) (\({\small\ln{x}}\)ln(x))
(функция)
log10log10flog10l
(C++11)(C++11)
вычисляет десятичный логарифм (по основанию 10) (\({\small\log_{10}{x}}\)log10(x))
(функция)
log2log2flog2l
(C++11)(C++11)(C++11)
логарифм заданного числа по основанию 2 (\({\small\log_{2}{x}}\)log2(x))
(функция)
log1plog1pflog1pl
(C++11)(C++11)(C++11)
натуральный логарифм (по основанию e) числа, равного 1 плюс заданное число (\({\small\ln{(1+x)}}\)ln(1+x))
(функция)
Степенные функции
powpowfpowl
(C++11)(C++11)
возводит число в заданную степень (\(\small{x^y}\)xy)
(функция)
sqrtsqrtfsqrtl
(C++11)(C++11)
вычисляет квадратный корень (\(\small{\sqrt{x}}\)√x)
(функция)
cbrtcbrtfcbrtl
(C++11)(C++11)(C++11)
вычисляет кубический корень (\(\small{\sqrt[3]{x}}\)3√x)
(функция)
hypothypotfhypotl
(C++11)(C++11)(C++11)
вычисляет гипотенузу \(\scriptsize{\sqrt{x^2+y^2}}\)√x2+y2 и \(\scriptsize{\sqrt{x^2+y^2+z^2}}\)√x2+y2+z2(начиная с C++17)
(функция)
Тригонометрические функции
sinsinfsinl
(C++11)(C++11)
вычисляет синус (\({\small\sin{x}}\)sin(x))
(функция)
coscosfcosl
(C++11)(C++11)
вычисляет косинус (\({\small\cos{x}}\)cos(x))
(функция)
tantanftanl
(C++11)(C++11)
вычисляет тангенс (\({\small\tan{x}}\)tan(x))
(функция)
asinasinfasinl
(C++11)(C++11)
вычисляет арксинус (\({\small\arcsin{x}}\)arcsin(x))
(функция)
acosacosfacosl
(C++11)(C++11)
вычисляет арккосинус (\({\small\arccos{x}}\)arccos(x))
(функция)
atanatanfatanl
(C++11)(C++11)
вычисляет арктангенс (\({\small\arctan{x}}\)arctan(x))
(функция)
atan2atan2fatan2l
(C++11)(C++11)
арктангенс; знаки аргументов используются для определения квадранта
(функция)
Гиперболические функции
sinhsinhfsinhl
(C++11)(C++11)
вычисляет гиперболический синус (\({\small\sinh{x}}\)sinh(x))
(функция)
coshcoshfcoshl
(C++11)(C++11)
вычисляет гиперболический косинус (\({\small\cosh{x}}\)cosh(x))
(функция)
tanhtanhftanhl
(C++11)(C++11)
вычисляет гиперболический тангенс (\({\small\tanh{x}}\)tanh(x))
(функция)
asinhasinhfasinhl
(C++11)(C++11)(C++11)
вычисляет обратный гиперболический синус (\({\small\operatorname{arsinh}{x}}\)arsinh(x))
(функция)
acoshacoshfacoshl
(C++11)(C++11)(C++11)
вычисляет обратный гиперболический косинус (\({\small\operatorname{arcosh}{x}}\)arcosh(x))
(функция)
atanhatanhfatanhl
(C++11)(C++11)(C++11)
вычисляет обратный гиперболический тангенс (\({\small\operatorname{artanh}{x}}\)artanh(x))
(функция)
Функции ошибок и гамма-функции
erferfferfl
(C++11)(C++11)(C++11)
функция ошибок
(функция)
erfcerfcferfcl
(C++11)(C++11)(C++11)
дополнительная функция ошибок
(функция)
tgammatgammaftgammal
(C++11)(C++11)(C++11)
гамма-функция
(функция)
lgammalgammaflgammal
(C++11)(C++11)(C++11)
натуральный логарифм гамма-функции
(функция)
Операции с числами с плавающей точкой, возвращающие ближайшее целое
ceilceilfceill
(C++11)(C++11)
ближайшее целое, не меньшее заданного значения
(функция)
floorfloorffloorl
(C++11)(C++11)
ближайшее целое, не большее заданного значения
(функция)
trunctruncftruncl
(C++11)(C++11)(C++11)
ближайшее целое, модуль которого не больше модуля заданного значения
(функция)
roundroundfroundllroundlroundflroundlllroundllroundfllroundl
(C++11)(C++11)(C++11)(C++11)(C++11)(C++11)(C++11)(C++11)(C++11)
ближайшее целое; в случаях, когда значение находится ровно посередине, округление выполняется от нуля
(функция)
nearbyintnearbyintfnearbyintl
(C++11)(C++11)(C++11)
ближайшее целое с использованием текущего режима округления
(функция)
rintrintfrintllrintlrintflrintlllrintllrintfllrintl
(C++11)(C++11)(C++11)(C++11)(C++11)(C++11)(C++11)(C++11)(C++11)
ближайшее целое с использованием текущего режима округления; вызывает
исключение, если результат отличается
(функция)
Функции обработки чисел с плавающей точкой
frexpfrexpffrexpl
(C++11)(C++11)
разбивает число на мантиссу и показатель степени по основанию 2
(функция)
ldexpldexpfldexpl
(C++11)(C++11)
умножает число на 2 в целой степени
(функция)
modfmodffmodfl
(C++11)(C++11)
разбивает число на целую и дробную части
(функция)
scalbnscalbnfscalbnlscalblnscalblnfscalblnl
(C++11)(C++11)(C++11)(C++11)(C++11)(C++11)
умножает число на FLT_RADIX в заданной степени
(функция)
ilogbilogbfilogbl
(C++11)(C++11)(C++11)
извлекает показатель степени числа
(функция)
logblogbflogbl
(C++11)(C++11)(C++11)
извлекает показатель степени числа
(функция)
nextafternextafterfnextafterlnexttowardnexttowardfnexttowardl
(C++11)(C++11)(C++11)(C++11)(C++11)(C++11)
следующее представимое значение с плавающей точкой в направлении заданного значения
(функция)
nextupnextupfnextuplnextdownnextdownfnextdownl
(C++26)(C++26)(C++26)(C++26)(C++26)(C++26)
определяет следующее представимое значение с плавающей точкой, большее или меньшее заданного значения
(функция)
copysigncopysignfcopysignl
(C++11)(C++11)(C++11)
копирует знак значения с плавающей точкой
(функция)
Классификация и сравнение
fpclassify
(C++11)
классифицирует заданное значение с плавающей точкой
(функция)
isfinite
(C++11)
проверяет, является ли заданное число конечным
(функция)
isinf
(C++11)
проверяет, является ли заданное число бесконечным
(функция)
isnan
(C++11)
проверяет, является ли заданное число значением NaN
(функция)
isnormal
(C++11)
проверяет, является ли заданное число нормальным
(функция)
signbit
(C++11)
проверяет, является ли заданное число отрицательным
(функция)
isgreater
(C++11)
проверяет, больше ли первый аргумент с плавающей точкой второго
(функция)
isgreaterequal
(C++11)
проверяет, больше ли первый аргумент с плавающей точкой второго или равен ему
(функция)
isless
(C++11)
проверяет, меньше ли первый аргумент с плавающей точкой второго
(функция)
islessequal
(C++11)
проверяет, меньше ли первый аргумент с плавающей точкой второго или равен ему
(функция)
islessgreater
(C++11)
проверяет, меньше или больше ли первый аргумент с плавающей точкой второго
(функция)
isunordered
(C++11)
проверяет, являются ли два значения с плавающей точкой неупорядоченными
(функция)
Специальные математические функции
assoc_laguerreassoc_laguerrefassoc_laguerrel
(C++17)(C++17)(C++17)
присоединённые многочлены Лагерра
(функция)
assoc_legendreassoc_legendrefassoc_legendrel
(C++17)(C++17)(C++17)
присоединённые многочлены Лежандра
(функция)
betabetafbetal
(C++17)(C++17)(C++17)
бета-функция
(функция)
comp_ellint_1comp_ellint_1fcomp_ellint_1l
(C++17)(C++17)(C++17)
(полный) эллиптический интеграл первого рода
(функция)
comp_ellint_2comp_ellint_2fcomp_ellint_2l
(C++17)(C++17)(C++17)
(полный) эллиптический интеграл второго рода
(функция)
comp_ellint_3comp_ellint_3fcomp_ellint_3l
(C++17)(C++17)(C++17)
(полный) эллиптический интеграл третьего рода
(функция)
cyl_bessel_icyl_bessel_ifcyl_bessel_il
(C++17)(C++17)(C++17)
правильные модифицированные цилиндрические функции Бесселя
(функция)
cyl_bessel_jcyl_bessel_jfcyl_bessel_jl
(C++17)(C++17)(C++17)
цилиндрические функции Бесселя (первого рода)
(функция)
cyl_bessel_kcyl_bessel_kfcyl_bessel_kl
(C++17)(C++17)(C++17)
неправильные модифицированные цилиндрические функции Бесселя
(функция)
cyl_neumanncyl_neumannfcyl_neumannl
(C++17)(C++17)(C++17)
цилиндрические функции Неймана
(функция)
ellint_1ellint_1fellint_1l
(C++17)(C++17)(C++17)
(неполный) эллиптический интеграл первого рода
(функция)
ellint_2ellint_2fellint_2l
(C++17)(C++17)(C++17)
(неполный) эллиптический интеграл второго рода
(функция)
ellint_3ellint_3fellint_3l
(C++17)(C++17)(C++17)
(неполный) эллиптический интеграл третьего рода
(функция)
expintexpintfexpintl
(C++17)(C++17)(C++17)
интегральная показательная функция
(функция)
hermitehermitefhermitel
(C++17)(C++17)(C++17)
многочлены Эрмита
(функция)
legendrelegendreflegendrel
(C++17)(C++17)(C++17)
многочлены Лежандра
(функция)
laguerrelaguerreflaguerrel
(C++17)(C++17)(C++17)
многочлены Лагерра
(функция)
riemann_zetariemann_zetafriemann_zetal
(C++17)(C++17)(C++17)
дзета-функция Римана
(функция)
sph_besselsph_besselfsph_bessell
(C++17)(C++17)(C++17)
сферические функции Бесселя (первого рода)
(функция)
sph_legendresph_legendrefsph_legendrel
(C++17)(C++17)(C++17)
сферические присоединённые функции Лежандра
(функция)
sph_neumannsph_neumannfsph_neumannl
(C++17)(C++17)(C++17)
сферические функции Неймана
(функция)

Обзор

Для каждой функции хотя бы с одним параметром типа /* floating-point-type */ предоставляется перегрузка для каждого типа с плавающей точкой без квалификаторов cv, в которой все вхождения /* floating-point-type */ в сигнатуре функции заменены этим типом с плавающей точкой.

Для каждой функции хотя бы с одним параметром типа /* floating-point-type */, отличного от std::abs, предоставляются дополнительные перегрузки, гарантирующие, что если каждый аргумент, соответствующий параметру типа /* floating-point-type */, имеет арифметический тип, то каждый такой аргумент фактически приводится к типу с плавающей точкой, имеющему наибольшие ранг преобразования с плавающей точкой и наибольший подранг преобразования с плавающей точкой среди типов всех таких аргументов; при этом считается, что аргументы целочисленного типа имеют тот же ранг преобразования с плавающей точкой, что и double. Если такого типа с плавающей точкой с наибольшими рангом и подрангом не существует, разрешение перегрузки не приводит к выбору пригодного кандидата из предоставленных перегрузок.

namespace std {
  using float_t = /* see description */;
  using double_t = /* see description */;
}

#define HUGE_VAL /* see description */
#define HUGE_VALF /* see description */
#define HUGE_VALL /* see description */
#define INFINITY /* see description */
#define NAN /* see description */
#define FP_INFINITE /* see description */
#define FP_NAN /* see description */
#define FP_NORMAL /* see description */
#define FP_SUBNORMAL /* see description */
#define FP_ZERO /* see description */
#define FP_FAST_FMA /* see description */
#define FP_FAST_FMAF /* see description */
#define FP_FAST_FMAL /* see description */
#define FP_ILOGB0 /* see description */
#define FP_ILOGBNAN /* see description */
#define MATH_ERRNO /* see description */
#define MATH_ERREXCEPT /* see description */

#define math_errhandling /* see description */

namespace std {
  /* floating-point-type */ acos(/* floating-point-type */ x);
  float acosf(float x);
  long double acosl(long double x);

  /* floating-point-type */ asin(/* floating-point-type */ x);
  float asinf(float x);
  long double asinl(long double x);

  /* floating-point-type */ atan(/* floating-point-type */ x);
  float atanf(float x);
  long double atanl(long double x);

  /* floating-point-type */ atan2(/* floating-point-type */ y,
                                  /* floating-point-type */ x);
  float atan2f(float y, float x);
  long double atan2l(long double y, long double x);

  /* floating-point-type */ cos(/* floating-point-type */e x);
  float cosf(float x);
  long double cosl(long double x);

  /* floating-point-type */ sin(/* floating-point-type */ x);
  float sinf(float x);
  long double sinl(long double x);

  /* floating-point-type */ tan(/* floating-point-type */ x);
  float tanf(float x);
  long double tanl(long double x);

  /* floating-point-type */ acosh(/* floating-point-type */ x);
  float acoshf(float x);
  long double acoshl(long double x);

  /* floating-point-type */ asinh(/* floating-point-type */ x);
  float asinhf(float x);
  long double asinhl(long double x);

  /* floating-point-type */ atanh(/* floating-point-type */ x);
  float atanhf(float x);
  long double atanhl(long double x);

  /* floating-point-type */ cosh(/* floating-point-type */ x);
  float coshf(float x);
  long double coshl(long double x);

  /* floating-point-type */ sinh(/* floating-point-type */ x);
  float sinhf(float x);
  long double sinhl(long double x);

  /* floating-point-type */ tanh(/* floating-point-type */ x);
  float tanhf(float x);
  long double tanhl(long double x);

  /* floating-point-type */ exp(/* floating-point-type */ x);
  float expf(float x);
  long double expl(long double x);

  /* floating-point-type */ exp2(/* floating-point-type */ x);
  float exp2f(float x);
  long double exp2l(long double x);

  /* floating-point-type */ expm1(/* floating-point-type */ x);
  float expm1f(float x);
  long double expm1l(long double x);

  constexpr /* floating-point-type */ frexp(/* floating-point-type */ value, int* exp);
  constexpr float frexpf(float value, int* exp);
  constexpr long double frexpl(long double value, int* exp);

  constexpr int ilogb(/* floating-point-type */ x);
  constexpr int ilogbf(float x);
  constexpr int ilogbl(long double x);

  constexpr /* floating-point-type */ ldexp(/* floating-point-type */ x, int exp);
  constexpr float ldexpf(float x, int exp);
  constexpr long double ldexpl(long double x, int exp);

  /* floating-point-type */ log(/* floating-point-type */ x);
  float logf(float x);
  long double logl(long double x);

  /* floating-point-type */ log10(/* floating-point-type */ x);
  float log10f(float x);
  long double log10l(long double x);

  /* floating-point-type */ log1p(/* floating-point-type */ x);
  float log1pf(float x);
  long double log1pl(long double x);

  /* floating-point-type */ log2(/* floating-point-type */ x);
  float log2f(float x);
  long double log2l(long double x);

  constexpr /* floating-point-type */ logb(/* floating-point-type */ x);
  constexpr float logbf(float x);
  constexpr long double logbl(long double x);

  constexpr /* floating-point-type */ modf(/* floating-point-type */ value,
                                           /* floating-point-type */* iptr);
  constexpr float modff(float value, float* iptr);
  constexpr long double modfl(long double value, long double* iptr);

  constexpr /* floating-point-type */ scalbn(/* floating-point-type */ x, int n);
  constexpr float scalbnf(float x, int n);
  constexpr long double scalbnl(long double x, int n);

  constexpr /* floating-point-type */ scalbln(/* floating-point-type */ x, long int n);
  constexpr float scalblnf(float x, long int n);
  constexpr long double scalblnl(long double x, long int n);

  /* floating-point-type */ cbrt(/* floating-point-type */ x);
  float cbrtf(float x);
  long double cbrtl(long double x);

  // absolute values
  constexpr int abs(int j);                     // freestanding
  constexpr long int abs(long int j);           // freestanding
  constexpr long long int abs(long long int j); // freestanding
  constexpr /* floating-point-type */
    abs(/* floating-point-type */ j);           // freestanding-deleted

  constexpr /* floating-point-type */ fabs(/* floating-point-type */ x);
  constexpr float fabsf(float x);
  constexpr long double fabsl(long double x);

  /* floating-point-type */ hypot(/* floating-point-type */ x,
                                  /* floating-point-type */ y);
  float hypotf(float x, float y);
  long double hypotl(long double x, long double y);

  // three-dimensional hypotenuse
  float hypot(/* floating-point-type */ x,
              /* floating-point-type */ y,
              /* floating-point-type */ z);

  /* floating-point-type */ pow(/* floating-point-type */ x,
                                /* floating-point-type */ y);
  float powf(float x, float y);
  long double powl(long double x, long double y);

  /* floating-point-type */ sqrt(/* floating-point-type */ x);
  float sqrtf(float x);
  long double sqrtl(long double x);

  /* floating-point-type */ erf(/* floating-point-type */ x);
  float erff(float x);
  long double erfl(long double x);

  /* floating-point-type */ erfc(/* floating-point-type */ x);
  float erfcf(float x);
  long double erfcl(long double x);

  /* floating-point-type */ lgamma(/* floating-point-type */ x);
  float lgammaf(float x);
  long double lgammal(long double x);

  /* floating-point-type */ tgamma(/* floating-point-type */ x);
  float tgammaf(float x);
  long double tgammal(long double x);

  constexpr /* floating-point-type */ ceil(/* floating-point-type */ x);
  constexpr float ceilf(float x);
  constexpr long double ceill(long double x);

  constexpr /* floating-point-type */ floor(/* floating-point-type */ x);
  constexpr float floorf(float x);
  constexpr long double floorl(long double x);

  /* floating-point-type */ nearbyint(/* floating-point-type */ x);
  float nearbyintf(float x);
  long double nearbyintl(long double x);

  /* floating-point-type */ rint(/* floating-point-type */ x);
  float rintf(float x);
  long double rintl(long double x);

  long int lrint(/* floating-point-type */ x);
  long int lrintf(float x);
  long int lrintl(long double x);

  long long int llrint(/* floating-point-type */ x);
  long long int llrintf(float x);
  long long int llrintl(long double x);

  constexpr /* floating-point-type */ round(/* floating-point-type */ x);
  constexpr float roundf(float x);
  constexpr long double roundl(long double x);

  constexpr long int lround(/* floating-point-type */ x);
  constexpr long int lroundf(float x);
  constexpr long int lroundl(long double x);

  constexpr long long int llround(/* floating-point-type */ x);
  constexpr long long int llroundf(float x);
  constexpr long long int llroundl(long double x);

  constexpr /* floating-point-type */ trunc(/* floating-point-type */ x);
  constexpr float truncf(float x);
  constexpr long double truncl(long double x);

  constexpr /* floating-point-type */ fmod(/* floating-point-type */ x,
                                           /* floating-point-type */ y);
  constexpr float fmodf(float x, float y);
  constexpr long double fmodl(long double x, long double y);

  constexpr /* floating-point-type */ remainder(/* floating-point-type */ x,
                                                /* floating-point-type */ y);
  constexpr float remainderf(float x, float y);
  constexpr long double remainderl(long double x, long double y);

  constexpr /* floating-point-type */ remquo(/* floating-point-type */ x,
                                             /* floating-point-type */ y, int* quo);
  constexpr float remquof(float x, float y, int* quo);
  constexpr long double remquol(long double x, long double y, int* quo);

  constexpr /* floating-point-type */ copysign(/* floating-point-type */ x,
                                               /* floating-point-type */ y);
  constexpr float copysignf(float x, float y);
  constexpr long double copysignl(long double x, long double y);

  double nan(const char* tagp);
  float nanf(const char* tagp);
  long double nanl(const char* tagp);

  constexpr /* floating-point-type */ nextafter(/* floating-point-type */ x,
                                                /* floating-point-type */ y);
  constexpr float nextafterf(float x, float y);
  constexpr long double nextafterl(long double x, long double y);

  constexpr /* floating-point-type */ nexttoward(/* floating-point-type */ x,
                                                 long double y);
  constexpr float nexttowardf(float x, long double y);
  constexpr long double nexttowardl(long double x, long double y);

  constexpr /* floating-point-type */ nextup(/* floating-point-type */ x,
                                             /* floating-point-type */ y);
  constexpr float nextupf(float x, float y);
  constexpr long double nextupl(long double x, long double y);

  constexpr /* floating-point-type */ nextdown(/* floating-point-type */ x,
                                               /* floating-point-type */ y);
  constexpr float nextdownf(float x, float y);
  constexpr long double nextdownl(long double x, long double y);

  constexpr /* floating-point-type */ fdim(/* floating-point-type */ x,
                                           /* floating-point-type */ y);
  constexpr float fdimf(float x, float y);
  constexpr long double fdiml(long double x, long double y);

  constexpr /* floating-point-type */ fmax(/* floating-point-type */ x,
                                           /* floating-point-type */ y);
  constexpr float fmaxf(float x, float y);
  constexpr long double fmaxl(long double x, long double y);

  constexpr /* floating-point-type */ fmin(/* floating-point-type */ x,
                                           /* floating-point-type */ y);
  constexpr float fminf(float x, float y);
  constexpr long double fminl(long double x, long double y);

  constexpr /* floating-point-type */ fma(/* floating-point-type */ x,
                                          /* floating-point-type */ y,
                                          /* floating-point-type */ z);
  constexpr float fmaf(float x, float y, float z);
  constexpr long double fmal(long double x, long double y, long double z);

  // linear interpolation
  constexpr /* floating-point-type */ lerp(/* floating-point-type */ a,
                                           /* floating-point-type */ b,
                                           /* floating-point-type */ t) noexcept;

  // classification / comparison functions
  constexpr int fpclassify(/* floating-point-type */ x);

  constexpr bool isfinite(/* floating-point-type */ x);

  constexpr bool isinf(/* floating-point-type */ x);

  constexpr bool isnan(/* floating-point-type */ x);

  constexpr bool isnormal(/* floating-point-type */ x);

  constexpr bool signbit(/* floating-point-type */ x);

  constexpr bool isgreater(/* floating-point-type */ x,
                           /* floating-point-type */ y);

  constexpr bool isgreaterequal(/* floating-point-type */ x,
                                /* floating-point-type */ y);

  constexpr bool isless(/* floating-point-type */ x,
                        /* floating-point-type */ y);

  constexpr bool islessequal(/* floating-point-type */ x,
                             /* floating-point-type */ y);

  constexpr bool islessgreater(/* floating-point-type */ x,
                               /* floating-point-type */ y);

  constexpr bool isunordered(/* floating-point-type */ x,
                             /* floating-point-type */ y);

  // mathematical special functions

  // associated Laguerre polynomials
  /* floating-point-type */ assoc_laguerre(unsigned n, unsigned m,
                                           /* floating-point-type */ x);
  float assoc_laguerref(unsigned n, unsigned m, float x);
  long double assoc_laguerrel(unsigned n, unsigned m, long double x);

  // associated Legendre functions
  /* floating-point-type */ assoc_legendre(unsigned l, unsigned m,
                                           /* floating-point-type */ x);
  float assoc_legendref(unsigned l, unsigned m, float x);
  long double assoc_legendrel(unsigned l, unsigned m, long double x);

  // beta function
  /* floating-point-type */ beta(/* floating-point-type */ x,
                                 /* floating-point-type */ y);
  float betaf(float x, float y);
  long double betal(long double x, long double y);

  // complete elliptic integral of the first kind
  /* floating-point-type */ comp_ellint_1(/* floating-point-type */ k);
  float comp_ellint_1f(float k);
  long double comp_ellint_1l(long double k);

  // complete elliptic integral of the second kind
  /* floating-point-type */ comp_ellint_2(/* floating-point-type */ k);
  float comp_ellint_2f(float k);
  long double comp_ellint_2l(long double k);

  // complete elliptic integral of the third kind
  /* floating-point-type */ comp_ellint_3(/* floating-point-type */ k,
                                          /* floating-point-type */ nu);
  float comp_ellint_3f(float k, float nu);
  long double comp_ellint_3l(long double k, long double nu);

  // regular modified cylindrical Bessel functions
  /* floating-point-type */ cyl_bessel_i(/* floating-point-type */ nu,
                                         /* floating-point-type */ x);
  float cyl_bessel_if(float nu, float x);
  long double cyl_bessel_il(long double nu, long double x);

  // cylindrical Bessel functions of the first kind
  /* floating-point-type */ cyl_bessel_j(/* floating-point-type */ nu,
                                         /* floating-point-type */ x);
  float cyl_bessel_jf(float nu, float x);
  long double cyl_bessel_jl(long double nu, long double x);

  // irregular modified cylindrical Bessel functions
  /* floating-point-type */ cyl_bessel_k(/* floating-point-type */ nu,
                                         /* floating-point-type */ x);
  float cyl_bessel_kf(float nu, float x);
  long double cyl_bessel_kl(long double nu, long double x);

  // cylindrical Neumann functions;
  // cylindrical Bessel functions of the second kind
  /* floating-point-type */ cyl_neumann(/* floating-point-type */ nu,
                                        /* floating-point-type */ x);
  float cyl_neumannf(float nu, float x);
  long double cyl_neumannl(long double nu, long double x);

  // incomplete elliptic integral of the first kind
  /* floating-point-type */ ellint_1(/* floating-point-type */ k,
                                     /* floating-point-type */ phi);
  float ellint_1f(float k, float phi);
  long double ellint_1l(long double k, long double phi);

  // incomplete elliptic integral of the second kind
  /* floating-point-type */ ellint_2(/* floating-point-type */ k,
                                     /* floating-point-type */ phi);
  float ellint_2f(float k, float phi);
  long double ellint_2l(long double k, long double phi);

  // incomplete elliptic integral of the third kind
  /* floating-point-type */ ellint_3(/* floating-point-type */ k,
                                     /* floating-point-type */ nu,
                                     /* floating-point-type */ phi);
  float ellint_3f(float k, float nu, float phi);
  long double ellint_3l(long double k, long double nu, long double phi);

  // exponential integral
  /* floating-point-type */ expint(/* floating-point-type */ x);
  float expintf(float x);
  long double expintl(long double x);

  // Hermite polynomials
  /* floating-point-type */ hermite(unsigned n, /* floating-point-type */ x);
  float hermitef(unsigned n, float x);
  long double hermitel(unsigned n, long double x);

  // Laguerre polynomials
  /* floating-point-type */ laguerre(unsigned n, /* floating-point-type */ x);
  float laguerref(unsigned n, float x);
  long double laguerrel(unsigned n, long double x);

  // Legendre polynomials
  /* floating-point-type */ legendre(unsigned l, /* floating-point-type */ x);
  float legendref(unsigned l, float x);
  long double legendrel(unsigned l, long double x);

  // Riemann zeta function
  /* floating-point-type */ riemann_zeta(/* floating-point-type */ x);
  float riemann_zetaf(float x);
  long double riemann_zetal(long double x);

  // spherical Bessel functions of the first kind
  /* floating-point-type */ sph_bessel(unsigned n, /* floating-point-type */ x);
  float sph_besself(unsigned n, float x);
  long double sph_bessell(unsigned n, long double x);

  // spherical associated Legendre functions
  /* floating-point-type */ sph_legendre(unsigned l, unsigned m,
                                         /* floating-point-type */ theta);
  float sph_legendref(unsigned l, unsigned m, float theta);
  long double  sph_legendrel(unsigned l, unsigned m, long double theta);

  // spherical Neumann functions;
  // spherical Bessel functions of the second kind
  /* floating-point-type */ sph_neumann(unsigned n, /* floating-point-type */ x);
  float sph_neumannf(unsigned n, float x);
  long double sph_neumannl(unsigned n, long double x);
}

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/header/cmath

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API