expm1, expm1f, expm1l Functions in C
Last Updated :
06 Feb, 2023
expm1(), expm1f(), expm1l() were introduced with C99, and are available under the <math.h> header file. These are used to calculate the Euler’s Number, e (2.7182818) raised to a power equal to the provided parameter minus 1.0, i.e ex – 1.
expm1(x), expm1f(x), exmp1l(x) = ex – 1
Example:
double expm1(double arg);
float expm1f(float arg);
long double expm1l(long double arg);
Syntax:
expm1(x);
exmp1f(x);
exmp1l(x);
Parameters:
Function |
Parameter |
expm1(x) |
x ⇒ float |
expm1f(x) |
x ⇒ double |
expm1l(x) |
x ⇒ long double |
Return Values:
1. If no error occurs:
Function |
Return Value |
expm1(x) |
ex – 1 ⇒ float |
expm1f(x) |
ex-1 ⇒ double |
expm1l(x) |
ex – 1 ⇒ long double |
2. If range error due to overflow occurs:
Function |
Return Value |
expm1(x) |
+HUGE_VAL |
expm1f(x) |
+HUGE_VALF |
expm1l(x) |
+HUGE_VALL |
3. If range error due to underflow occurs: If a range error occurs due to underflow, the rounded result is returned.
4. Exceptional cases: The errors reported are handled as specified in math_errhandling.
Parameter |
Return Value |
±0 |
±0 |
NaN |
NaN |
-∞ |
-1 |
+∞ |
+∞ |
Time Complexity: O(1)
Space Complexity: O(1)
Example 1: Below is the C program to implement exp1():
C
#include <math.h>
#include <stdio.h>
int main()
{
double arg = 2.2310233;
printf ( "%lf\n" ,
expm1(arg));
return 0;
}
|
Example 2: Below is the C program to implement exp1f():
C
#include <math.h>
#include <stdio.h>
int main()
{
float arg = 4.121;
printf ( "%f\n" ,
expm1f(arg));
return 0;
}
|
Example 3: Below is the C program to implement exp1l():
C
#include <math.h>
#include <stdio.h>
int main()
{
long double arg = 5.212323323441;
printf ( "%Lf\n" ,
expm1l(arg));
return 0;
}
|
Why use expm1, expm1f, expm1l?
- These functions are more accurate than the expression ex – 1if x → 0.
- They are very useful for financial calculations, like calculating (small) interest rates, and for calculating the inverse of hyperbolic functions.
Share your thoughts in the comments
Please Login to comment...