exp, expf, expl
Определено в заголовке <math.h> |
||
|---|---|---|
float expf( float arg ); |
(1) | (с C99) |
double exp( double arg ); |
(2) | |
long double expl( long double arg ); |
(3) | (с C99) |
Определено в заголовке <tgmath.h> |
||
#define exp( arg ) |
(4) | (с C99) |
4) Универсальное макрос: Если
arg имеет тип long double, то вызывается expl. В противном случае, если arg имеет целочисленный тип или тип double, вызывается exp. В противном случае, вызывается expf. Если arg комплексное или мнимое, то макрос вызывает соответствующую комплексную функцию (cexpf, cexp, cexpl).Параметры
| arg | - | значение с плавающей точкой |
Возвращаемое значение
Если ошибки не произошло, возвращается показательная функция с основанием e от arg (earg).
Если произошла ошибка переполнения, возвращается +HUGE_VAL, +HUGE_VALF, или +HUGE_VALL.
Если произошла ошибка подпорогового значения, возвращается правильный результат (после округления).
Обработка ошибок
Ошибки сообщаются в соответствии со спецификацией в math_errhandling.
Если реализация поддерживает арифметику с плавающей точкой IEEE (IEC 60559),
- Если аргумент равен ±0, возвращается 1
- Если аргумент равен -∞, возвращается +0
- Если аргумент равен +∞, возвращается +∞
- Если аргумент равен NaN, возвращается NaN
Примечания
Для IEEE-совместимого типа double, переполнение гарантируется, если 709.8 < arg, и подпороговое значение гарантируется, если arg < -708.4.
Пример
#include <errno.h>
#include <fenv.h>
#include <float.h>
#include <math.h>
#include <stdio.h>
// #pragma STDC FENV_ACCESS ON
int main(void)
{
printf("exp(1) = %f\n", exp(1));
printf("FV of $100, continuously compounded at 3%% for 1 year = %f\n",
100*exp(0.03));
// special values
printf("exp(-0) = %f\n", exp(-0.0));
printf("exp(-Inf) = %f\n", exp(-INFINITY));
//error handling
errno = 0; feclearexcept(FE_ALL_EXCEPT);
printf("exp(710) = %f\n", exp(710));
if (errno == ERANGE)
perror(" errno == ERANGE");
if (fetestexcept(FE_OVERFLOW))
puts(" FE_OVERFLOW raised");
}Возможный вывод:
exp(1) = 2.718282
FV of $100, continuously compounded at 3% for 1 year = 103.045453
exp(-0) = 1.000000
exp(-Inf) = 0.000000
exp(710) = inf
errno == ERANGE: Numerical result out of range
FE_OVERFLOW raisedСсылки
- Стандарт C23 (ISO/IEC 9899:2023):
- 7.12.6.1 Функции exp (p: TBD)
- 7.25 Универсальная математика <tgmath.h> (p: TBD)
- F.10.3.1 Функции exp (p: TBD)
- Стандарт C17 (ISO/IEC 9899:2018):
- 7.12.6.1 Функции exp (p: 175)
- 7.25 Универсальная математика <tgmath.h> (p: 272-273)
- F.10.3.1 Функции exp (p: 379)
- Стандарт C11 (ISO/IEC 9899:2011):
- 7.12.6.1 Функции exp (p: 242)
- 7.25 Универсальная математика <tgmath.h> (p: 373-375)
- F.10.3.1 Функции exp (p: 520)
- Стандарт C99 (ISO/IEC 9899:1999):
- 7.12.6.1 Функции exp (p: 223)
- 7.22 Универсальная математика <tgmath.h> (p: 335-337)
- F.9.3.1 Функции exp (p: 458)
- Стандарт C89/C90 (ISO/IEC 9899:1990):
- 4.5.4.1 Функция exp
См. также
|
(C99)(C99)(C99) |
вычисляет 2 в заданной степени (\({\small 2^x}\)2x) (функция) |
|
(C99)(C99)(C99) |
вычисляет e в заданной степени минус один (\({\small e^x-1}\)ex-1) (функция) |
|
(C99)(C99) |
вычисляет натуральный (с основанием e) логарифм (\({\small \ln{x} }\)ln(x)) (функция) |
|
(C99)(C99)(C99) |
вычисляет комплексную показательную функцию с основанием e (функция) |
Документация C++ для exp |
|
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/c/numeric/math/exp