Trusted answers to developer questions
Trusted Answers to Developer Questions

Related Tags

c
c++

What is log1p in C++?

Samia Ishaque

Grokking Modern System Design Interview for Engineers & Managers

Ace your System Design Interview and take your career to the next level. Learn to handle the design of applications like Netflix, Quora, Facebook, Uber, and many more in a 45-min interview. Learn the RESHADED framework for architecting web-scale applications by determining requirements, constraints, and assumptions before diving into a step-by-step design process.

Overview

The log1p() function in C++ is defined in the <cmath> header file. log1p() takes an argument x of type double as input and returns the natural logarithm of 1+x.The returned value is equivalent to the following in mathematical notation:

logelog_{e}(x+1)

The function is defined in the C++ <cmath> header file as:

double log1p (double x);

Below is an example of how to use the log1p() function:

#include <iostream>
#include <cmath>
using namespace std;
int main() {
// your code goes here
double x = 0.2;
cout<<"The natural logarithm for "<<1+x<<" is ";
cout<<log1p(x)<<endl;
return 0;
}

Now, let’s perform the same calculations using the log(x+1) function to compare the return values of the two functions. The following code demonstrates that both methods give us similar results:

#include <iostream>
#include <cmath>
using namespace std;
int main() {
// your code goes here
double x = 0.2;
cout<<"The natural logarithm for "<<1+x<<" is ";
cout<<log(x+1)<<endl;
return 0;
}

Examples

It is important to note the following pointers on what kinds of input parameters the log1p() function allows:

  1. If we pass the parameter 0, the return value will also be 0.

  2. If we pass parameter -1, the return value will be \infty.

  3. When passing a parameter below -1, the return value is NaN ( Not a Number)

  4. Only values greater than -1 produce a legitimate result.

The following code demonstrates these input values and their return values:

#include <iostream>
#include <cmath>
using namespace std;
int main() {
// your code goes here
cout<<"The natural logarithm for x=0 is: ";
cout<<log1p(0)<<endl;
cout<<"The natural logarithm for x>0 is: ";
cout<<log1p(1)<<endl;
cout<<"The natural logarithm for x=-1 is: ";
cout<<log1p(-1)<<endl;
cout<<"The natural logarithm for 0<x<-1 is: ";
cout<<log1p(-0.2)<<endl;
return 0;
}

RELATED TAGS

c
c++

CONTRIBUTOR

Samia Ishaque
Copyright ©2022 Educative, Inc. All rights reserved

Grokking Modern System Design Interview for Engineers & Managers

Ace your System Design Interview and take your career to the next level. Learn to handle the design of applications like Netflix, Quora, Facebook, Uber, and many more in a 45-min interview. Learn the RESHADED framework for architecting web-scale applications by determining requirements, constraints, and assumptions before diving into a step-by-step design process.

Keep Exploring