В языке программирования C функция exp() является встроенной функцией библиотеки , которая используется для вычисления значения e (число Эйлера = 2,71828), возведенного в степень x, где x — любое действительное число.
Синтаксис:
double exp(double x);
- Аргументы: эта функция принимает только один аргумент типа
- Тип возвращаемого значения: эта функция возвращает значение типа
Пример:
С
// C program to demonstrate the
// use of exp() function
#include <math.h>
#include <stdio.h>
int
main()
{
// variable a which can
// be any real number
double
num = 4.0;
// variable to store result
double
res;
// usage of exp() function
res =
exp
(num);
// printing result
printf
(
"e raised to the power %.2lf = %.2lf"
, num, res);
return
0;
}
Выход
e raised to the power 4.00 = 54.60
Временная сложность: O(logN)
Космическая сложность: O(1)
Примечание. Мы должны включить библиотеку , чтобы использовать эту функцию, иначе exp() будет рассматриваться как неопределенная функция, и компилятор покажет ошибку.
Реакция функции на различные параметры
Случай 1: использование другого типа в качестве аргумента
С
// C program to check the
// return value of exp()
// for different input
// types
#include <math.h>
#include <stdbool.h>
#include <stdio.h>
int
main()
{
// integer type
int
integer = 65;
// character type
// ASCII value of '^E' is 5
// for boolean type
char
character =
'A'
;
bool
boolean =
true
;
// true = 1
// double type
long
double
longDouble = 65.0;
// printing result for integer argument
printf
(
"For integer %d = %-35.3lf\n"
, integer,
exp
(integer));
// printing result for character argument
printf
(
"For character %c = %-35.3lf\n"
, character,
exp
(character));
// printing result for long double argument
printf
(
"For long double %llf = %-15.3lf\n"
, longDouble,
exp
(longDouble));
// printing result for boolean argument
printf
(
"For boolean %d = %-15.3lf\n"
, boolean,
exp
(boolean));
return
0;
}
Выход
For integer 65 = 16948892444103337803358666752.000 For character A = 16948892444103337803358666752.000 For long double 65.000000 = 16948892444103337803358666752.000 For boolean 1 = 2.718
Как мы видим, независимо от того, вводим ли мы целое, символьное или даже логическое значение, мы получаем правильный результат. Это связано с тем, что компилятор неявно преобразует любой другой тип в double при выполнении вычислений.
Примечание. Несмотря на то, что этот метод работает для функций math.h, рекомендуется передавать этим функциям только аргументы типа double. Этот метод не работает для строковых литералов, поскольку они не могут быть преобразованы компилятором в какое-либо числовое значение.
Случай 2: когда возвращаемое значение очень мало
С
// C program to show the
// behaviour of exp() for
// very small return value
#include <math.h>
#include <stdio.h>
int
main()
{
// returning very small return value
printf
(
"Very Small Value: %lf\n"
,
exp
(-700));
return
0;
}
Выход
Very Small Value: 0.000000
Возвращаемое значение округляется до нуля, если возвращаемое значение очень мало.
Случай 3: возвращаемое значение больше двойного типа
С
// C program to show the behaviour of exp() for very large
// return value
#include <math.h>
#include <stdio.h>
int
main()
{
// returning very large value
printf
(
"Very Large Value: %lf"
,
exp
(1000));
return
0;
}
Выход
Very Large value: inf
Для очень больших значений inf (очень большое число, которое не может быть представлено с плавающей запятой или двойным числом) или ошибка отображается в зависимости от компилятора. Мы можем использовать функцию expl(), которая возвращает тип long double.
Функция expl() в C
Функция expl() также является предопределенной функцией библиотеки языка программирования C. Эта функция используется вместо функции exp, если нам нужно вернуть значение, превышающее тип double.
Пример:
С
// C program to show the usage of expl() function
#include <math.h>
#include <stdio.h>
int
main()
{
// returning very large value
printf
(
"Very Large Value: %Lf"
, expl(100));
return
0;
}
Выход
Very Large Value: 26881171418161354483964208709276842846060544.000000
Использование функции pow() для имитации функции exp()
Мы можем использовать функцию pow() библиотеки , чтобы воспроизвести задачу exp( ) в C.
Пример:
С
// using pow() funtion to get exponential
#include <math.h>
#include <stdio.h>
// defining Euler's Number
#define e 2.71828
int
main()
{
// defining any real number
double
x = 5.0;
printf
(
"e raised to the power %.2lf = %.2lf"
, x,
pow
(e, x));
return
0;
}
Выход
e raised to the power 5.00 = 148.41