exp2, exp2f, exp2l
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Определено в заголовочном файле
<math.h>
|
||
|
float
exp2f
(
float
n
)
;
|
(1) | (начиная с C99) |
|
double
exp2
(
double
n
)
;
|
(2) | (начиная с C99) |
|
long
double
exp2l
(
long
double
n
)
;
|
(3) | (начиная с C99) |
|
Определено в заголовочном файле
<tgmath.h>
|
||
|
#define exp2( n )
|
(4) | (начиная с C99) |
n
.
n
имеет тип
long
double
,
exp2l
вызывается. В противном случае, если
n
имеет целочисленный тип или тип
double
,
exp2
вызывается. В противном случае,
exp2f
вызывается.
Содержание |
Параметры
| n | - | значение с плавающей точкой |
Возвращаемое значение
Если ошибок не возникает, возвращается экспонента по основанию
2
от
n
(
2
n
).
Если происходит ошибка диапазона из-за переполнения,
+HUGE_VAL
,
+HUGE_VALF
, или
+HUGE_VALL
возвращается.
Если происходит ошибка диапазона из-за потери значимости (underflow), возвращается корректный результат (после округления).
Обработка ошибок
Ошибки сообщаются, как указано в
math_errhandling
.
Если реализация поддерживает арифметику с плавающей запятой IEEE (IEC 60559),
- Если аргумент равен ±0, возвращается 1
- Если аргумент равен -∞, возвращается +0
- Если аргумент равен +∞, возвращается +∞
- Если аргумент равен NaN, возвращается NaN
Пример
#include <errno.h> #include <fenv.h> #include <float.h> #include <math.h> #include <stdio.h> // #pragma STDC FENV_ACCESS ON int main(void) { printf("exp2(5) = %f\n", exp2(5)); printf("exp2(0.5) = %f\n", exp2(0.5)); printf("exp2(-4) = %f\n", exp2(-4)); // special values printf("exp2(-0.9) = %f\n", exp2(-0.9)); printf("exp2(-Inf) = %f\n", exp2(-INFINITY)); //error handling errno = 0; feclearexcept(FE_ALL_EXCEPT); printf("exp2(1024) = %f\n", exp2(1024)); if (errno == ERANGE) perror(" errno == ERANGE"); if (fetestexcept(FE_OVERFLOW)) puts(" FE_OVERFLOW raised"); }
Возможный вывод:
exp2(5) = 32.000000
exp2(0.5) = 1.414214
exp2(-4) = 0.062500
exp2(-0.9) = 0.535887
exp2(-Inf) = 0.000000
exp2(1024) = Inf
errno == ERANGE: Result too large
FE_OVERFLOW raised
Ссылки
- Стандарт C23 (ISO/IEC 9899:2024):
-
- 7.12.6.2 Функции exp2 (стр.: TBD)
-
- 7.25 Обобщённая математика <tgmath.h> (стр.: TBD)
-
- F.10.3.2 Функции exp2 (стр.: TBD)
- Стандарт C17 (ISO/IEC 9899:2018):
-
- 7.12.6.2 Функции exp2 (стр. 177)
-
- 7.25 Обобщенная математика <tgmath.h> (стр. 272-273)
-
- F.10.3.2 Функции exp2 (стр. 379)
- Стандарт C11 (ISO/IEC 9899:2011):
-
- 7.12.6.2 Функции exp2 (стр. 242-243)
-
- 7.25 Обобщенная математика <tgmath.h> (стр. 373-375)
-
- F.10.3.2 Функции exp2 (стр. 521)
- Стандарт C99 (ISO/IEC 9899:1999):
-
- 7.12.6.2 Функции exp2 (стр. 223)
-
- 7.22 Обобщённая математика <tgmath.h> (стр. 335-337)
-
- F.9.3.2 Функции exp2 (стр. 458)
Смотрите также
|
(C99)
(C99)
|
вычисляет
e
в заданной степени (
\({\small e^x}\)
e
x
)
(функция) |
|
(C99)
(C99)
(C99)
|
вычисляет
e
в заданной степени, минус один (
\({\small e^x-1}\)
e
x
-1
)
(функция) |
|
(C99)
(C99)
(C99)
|
вычисляет логарифм по основанию 2 (
\({\small \log_{2}{x} }\)
log
2
(x)
)
(функция) |
|
C++ документация
для
exp2
|
|