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) |
1-3) Вычисляет 2 в степени
n.
4) Обобщённый по типу макрос: если
n имеет тип long double, вызывается exp2l. В противном случае, если n имеет целочисленный тип или тип double, вызывается exp2. В противном случае вызывается exp2f.Параметры
| n | - | значение с плавающей запятой |
Возвращаемое значение
Если ошибок не возникает, возвращается экспонента по основанию 2 от n (2n).
Если возникает ошибка диапазона из-за переполнения, возвращается +HUGE_VAL, +HUGE_VALF или +HUGE_VALL.
Если возникает ошибка диапазона из-за потери значимости, возвращается правильный результат (после округления).
Обработка ошибок
Об ошибках сообщается в соответствии с указаниями в 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}\)ex) (функция) |
|
(C99)(C99)(C99) | вычисляет e в заданной степени минус один (\({\small e^x-1}\)ex-1) (функция) |
|
(C99)(C99)(C99) | вычисляет логарифм по основанию 2 (\({\small \log_{2}{x} }\)log2(x)) (функция) |
Документация C++ для exp2 |
|
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/c/numeric/math/exp2