Open In App

Efficient program to calculate e^x

Last Updated : 18 Jul, 2022
Improve
Improve
Like Article
Like
Save
Share
Report

The value of Exponential Function e^x can be expressed using following Taylor Series.

e^x = 1 + x/1! + x^2/2! + x^3/3! + ...... 

How to efficiently calculate the sum of above series? 
The series can be re-written as 
 

e^x = 1 + (x/1) (1 + (x/2) (1 + (x/3) (........) ) ) 

Let the sum needs to be calculated for n terms, we can calculate sum using following loop.

for (i = n - 1, sum = 1; i > 0; --i )
    sum = 1 + x * sum / i; 

Following is implementation of the above idea. 
 

C++




// C++ Efficient program to calculate
// e raise to the power x
#include <bits/stdc++.h>
using namespace std;
 
// Returns approximate value of e^x
// using sum of first n terms of Taylor Series
float exponential(int n, float x)
{
    float sum = 1.0f; // initialize sum of series
 
    for (int i = n - 1; i > 0; --i )
        sum = 1 + x * sum / i;
 
    return sum;
}
 
// Driver code
int main()
{
    int n = 10;
    float x = 1.0f;
    cout << "e^x = " << fixed << setprecision(5) << exponential(n, x);
    return 0;
}
 
// This code is contributed by rathbhupendra


C




// C Efficient program to calculate
// e raise to the power x
#include <stdio.h>
 
// Returns approximate value of e^x
// using sum of first n terms of Taylor Series
float exponential(int n, float x)
{
    float sum = 1.0f; // initialize sum of series
 
    for (int i = n - 1; i > 0; --i )
        sum = 1 + x * sum / i;
 
    return sum;
}
 
// Driver program to test above function
int main()
{
    int n = 10;
    float x = 1.0f;
    printf("e^x = %f", exponential(n, x));
    return 0;
}


Java




// Java efficient program to calculate
// e raise to the power x
import java.io.*;
 
class GFG
{
    // Function returns approximate value of e^x
    // using sum of first n terms of Taylor Series
    static float exponential(int n, float x)
    {
        // initialize sum of series
        float sum = 1;
  
        for (int i = n - 1; i > 0; --i )
            sum = 1 + x * sum / i;
  
        return sum;
    }
     
    // driver program
    public static void main (String[] args)
    {
        int n = 10;
        float x = 1;
        System.out.println("e^x = "+exponential(n,x));
    }
}
 
// Contributed by Pramod Kumar


Python3




# Python program to calculate
# e raise to the power x
 
# Function to calculate value
# using sum of first n terms of
# Taylor Series
def exponential(n, x):
 
    # initialize sum of series
    sum = 1.0
    for i in range(n, 0, -1):
        sum = 1 + x * sum / i
    print ("e^x =", sum)
 
# Driver program to test above function
n = 10
x = 1.0
exponential(n, x)
 
# This code is contributed by Danish Raza


C#




// C# efficient program to calculate
// e raise to the power x
using System;
 
class GFG
{
    // Function returns approximate value of e^x
    // using sum of first n terms of Taylor Series
    static float exponential(int n, float x)
    {
        // initialize sum of series
        float sum = 1;
 
        for (int i = n - 1; i > 0; --i )
            sum = 1 + x * sum / i;
 
        return sum;
    }
     
    // driver program
    public static void Main ()
    {
        int n = 10;
        float x = 1;
        Console.Write("e^x = " + exponential(n, x));
    }
}
 
// This code is contributed by nitin mittal.


PHP




<?php
// PHP Efficient program to calculate
// e raise to the power x
 
// Returns approximate value of e^x
// using sum of first n terms
// of Taylor Series
function exponential($n, $x)
{
    // initialize sum of series
    $sum = 1.0;
 
    for ($i = $n - 1; $i > 0; --$i )
        $sum = 1 + $x * $sum / $i;
 
    return $sum;
}
 
// Driver Code
$n = 10;
$x = 1.0;
echo("e^x = " . exponential($n, $x));
 
// This code is contributed by Ajit.
?>


Javascript




<script>
// javascript efficient program to calculate
// e raise to the power x
 
    // Function returns approximate value of e^x
    // using sum of first n terms of Taylor Series
    function exponential(n , x) {
        // initialize sum of series
        var sum = 1;
 
        for (i = n - 1; i > 0; --i)
            sum = 1 + x * sum / i;
 
        return sum;
    }
 
    // driver program
     
        var n = 10;
        var x = 1;
        document.write("e^x = " + exponential(n, x).toFixed(6));
 
// This code contributed by Rajput-Ji
 
</script>


Output: 

e^x = 2.718282

Time Complexity: O(n)

Auxiliary Space: O(1), since no extra space has been taken.

This article is compiled by Rahul and reviewed by GeeksforGeeks team.
 



Like Article
Suggest improvement
Previous
Next
Share your thoughts in the comments

Similar Reads