The atanh() is an inbuilt function in C++ STL that returns the inverse hyperbolic tangent of an angle given in radians. The function belongs to <cmath> header file.
Syntax:
atanh(data_type x)
Parameter: This function accepts one mandatory parameter x which specifies the inverse hyperbolic angle in radian which lies in the range [-1, 1]. The parameter can be of double, float, or long double datatype.
Return Value: This function returns the inverse hyperbolic sine of the argument in radians depending on the parameter passed in the argument. The different return values are given in the table below:
Parameter Passed(x) | Return Value |
---|
-1<x<1 | Finite Value |
x>1 or x<-1 | NaN(Not a Number) |
x=-1 | -inf |
x=1 | +inf |
According to C++ 11 standard, there are various prototypes available for atanh() function,
Datatype | Prototype |
---|
For double | double atanh(double x); |
Explicit conversion is required from (int, float or long double) to double,
Datatype | Prototype |
---|
For int | int a = 0; double b = atanh(double(a)); |
For float | float a = 0; double b = atanh(double(a)); |
For long double | long double a = 0; double b = atanh(double(a)); |
Time Complexity: O(1)
Auxiliary Space: O(1)
Below programs illustrate the above method:
Example 1:
CPP
#include <bits/stdc++.h>
using namespace std;
int main()
{
int x = 0;
double result = atanh(x);
cout << "atanh(0) = " << result << " radians\n" ;
cout << "atanh(0) = " << result * 180 / 3.141592
<< " degrees\n" ;
x = -1;
result = atanh(x);
cout << "\natanh(-1) = " << result << " radians\n" ;
cout << "atanh(-1) = " << result * 180 / 3.141592
<< " degrees\n" ;
x = 1;
result = atanh(x);
cout << "\natanh(1) = " << result << " radians\n" ;
cout << "atanh(1) = " << result * 180 / 3.141592
<< " degrees\n" ;
x = -2;
result = atanh(x);
cout << "\natanh(-2) = " << result << " radians\n" ;
cout << "atanh(-2) = " << result * 180 / 3.141592
<< " degrees\n" ;
return 0;
}
|
Outputatanh(0) = 0 radians
atanh(0) = 0 degrees
atanh(-1) = -inf radians
atanh(-1) = -inf degrees
atanh(1) = inf radians
atanh(1) = inf degrees
atanh(-2) = -nan radians
atanh(-2) = -nan degrees
Errors and Exceptions: The function returns a no matching function error message when a string or any other data_type except the one which the function excepts is passed.
Example:
CPP
#include <bits/stdc++.h>
using namespace std;
int main()
{
string x = "gfg" ;
double result = atanh(x);
cout << "atanh(50.0) = " << result << " radians"
<< endl;
cout << "atanh(50.0) = " << result * 180 / 3.141592
<< " degrees" << endl;
return 0;
}
|
The above program generates an error if no matching function for call as a string is passed as an argument.
C++
#include <iostream>
#include <cmath>
using namespace std;
int main() {
double x = 2.0;
double result = atanh(x);
cout << "result = " << result << endl;
return 0;
}
|
The above code generates nan as output which means not a number this is because the input is outside the range of [-1,1].
Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.