# Find the ln(X) and log10X with the help of expansion

Last Updated : 09 Feb, 2023

Given a positive number x, the task is to find the natural log (ln) and log to the base 10 (log10) of this number with the help of expansion.

Example:

Input: x = 5
Output: ln 5.000 = 1.609
log10 5.000 = 0.699

Input: x = 10
Output: ln 10.000 = 2.303
log10 10.000 = 1.000

Approach:

• The expansion of natural logarithm of x (ln x) is:

$\LARGE&space;{\color{DarkGreen}&space;ln&space;(x)&space;=&space;2[(\frac{x-1}{x+1})+\frac{(\frac{x-1}{x+1})^{3}}{3}+\frac{(\frac{x-1}{x+1})^{5}}{5}+...+\frac{(\frac{x-1}{x+1})^{2n-1}}{2n-1}]&space;}$

• Therefore this series can be summed up as:

• Hence a function can be made to evaluate the nth term of the sequence for 1 ? x ? n
• Now to calculate log10 x, below formula can be used:

Below is the implementation of the above approach:

## C++

 // CPP code to Find the ln x and // log10 x with the help of expansion   #include  #include  #include    using namespace std;   // Function to calculate ln x using expansion double calculateLnx(double n) {       double num, mul, cal, sum = 0;     num = (n - 1) / (n + 1);       // terminating value of the loop     // can be increased to improve the precision     for (int i = 1; i <= 1000; i++) {         mul = (2 * i) - 1;         cal = pow(num, mul);         cal = cal / mul;         sum = sum + cal;     }     sum = 2 * sum;     return sum; }   // Function to calculate log10 x double calculateLogx(double lnx) {     return (lnx / 2.303); }   // Driver Code int main() {       double lnx, logx, n = 5;     lnx = calculateLnx(n);     logx = calculateLogx(lnx);       // setprecision(3) is used to display     // the output up to 3 decimal places       cout << fixed << setprecision(3)          << "ln " << n << " = "          << lnx << endl;     cout << fixed << setprecision(3)          << "log10 " << n << " = "          << logx << endl; }

## Java

 // Java code to Find the ln x and // log10 x with the help of expansion import java.io.*;   class GFG  {       // Function to calculate ln x using expansion static double calculateLnx(double n) {     double num, mul, cal, sum = 0;     num = (n - 1) / (n + 1);       // terminating value of the loop     // can be increased to improve the precision     for (int i = 1; i <= 1000; i++)      {         mul = (2 * i) - 1;         cal = Math.pow(num, mul);         cal = cal / mul;         sum = sum + cal;     }     sum = 2 * sum;     return sum; }   // Function to calculate log10 x static double calculateLogx(double lnx) {     return (lnx / 2.303); }   // Driver Code public static void main (String[] args)  {     double lnx, logx, n = 5;     lnx = calculateLnx(n);     logx = calculateLogx(lnx);           // setprecision(3) is used to display     // the output up to 3 decimal places           System.out.println ("ln " + n + " = " + lnx );     System.out.println ("log10 " + n + " = "+ logx ); } }   // This code is contributed by ajit

## Python3

 # Python 3 code to Find the ln x and # log10 x with the help of expansion # Function to calculate ln x using expansion from math import pow def calculateLnx(n):     sum = 0     num = (n - 1) / (n + 1)       # terminating value of the loop     # can be increased to improve the precision     for i in range(1, 1001, 1):         mul = (2 * i) - 1         cal = pow(num, mul)         cal = cal / mul         sum = sum + cal       sum = 2 * sum     return sum   # Function to calculate log10 x def calculateLogx(lnx):     return (lnx / 2.303)   # Driver Code if __name__ == '__main__':     n = 5     lnx = calculateLnx(n)     logx = calculateLogx(lnx)       # setprecision(3) is used to display     # the output up to 3 decimal places       print("ln", "{0:.3f}".format(n),             "=", "{0:.3f}".format(lnx))     print("log10", "{0:.3f}".format(n),                "=", "{0:.3f}".format(logx))       # This code is contributed by # Surendra_Gangwar

## C#

 // C# code to Find the ln x and // log10 x with the help of expansion using System;       class GFG  {       // Function to calculate ln x using expansion static double calculateLnx(double n) {     double num, mul, cal, sum = 0;     num = (n - 1) / (n + 1);       // terminating value of the loop     // can be increased to improve the precision     for (int i = 1; i <= 1000; i++)      {         mul = (2 * i) - 1;         cal = Math.Pow(num, mul);         cal = cal / mul;         sum = sum + cal;     }     sum = 2 * sum;     return sum; }   // Function to calculate log10 x static double calculateLogx(double lnx) {     return (lnx / 2.303); }   // Driver Code public static void Main (String[] args)  {     double lnx, logx, n = 5;     lnx = calculateLnx(n);     logx = calculateLogx(lnx);           // setprecision(3) is used to display     // the output up to 3 decimal places           Console.WriteLine("ln " + n + " = " + lnx );     Console.WriteLine("log10 " + n + " = "+ logx ); } }   // This code is contributed by Princi Singh

## Javascript

 

Output

ln 5.000 = 1.609
log10 5.000 = 0.699


Time complexity: O(1000), as the loop iterates 1000 times.
Auxiliary Space: O(1),

Previous
Next