Библиотека C — функция exp()

Front-end и back-end разработка Программирование и разработка

В языке программирования 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

Оцените статью
bestprogrammer.ru
Добавить комментарий