Open In App

atanh() function in C++ STL

Improve
Improve
Like Article
Like
Save
Share
Report

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




<div id="highlighter_811356" class="syntaxhighlighter nogutter  "><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td class="code"><div class="container"><div class="line number1 index0 alt2"><code class="comments">// C++ program to illustrate</code></div><div class="line number2 index1 alt1"><code class="comments">// the atanh() function</code></div><div class="line number3 index2 alt2"><code class="comments">// all return values</code></div><div class="line number4 index3 alt1"><code class="preprocessor">#include <bits/stdc++.h></code></div><div class="line number5 index4 alt2"><code class="keyword bold">using</code> <code class="keyword bold">namespace</code> <code class="plain">std;</code></div><div class="line number6 index5 alt1"> </div><div class="line number7 index6 alt2"><code class="comments">// Driver Code</code></div><div class="line number8 index7 alt1"><code class="color1 bold">int</code> <code class="plain">main()</code></div><div class="line number9 index8 alt2"><code class="plain">{</code></div><div class="line number10 index9 alt1"><code class="undefined spaces">    </code><code class="comments">// Return value when -1<x<1</code></div><div class="line number11 index10 alt2"><code class="undefined spaces">    </code><code class="color1 bold">int</code> <code class="plain">x = 0;</code></div><div class="line number12 index11 alt1"><code class="undefined spaces">    </code><code class="comments">// Function call to calculate atanh(x) value</code></div><div class="line number13 index12 alt2"><code class="undefined spaces">    </code><code class="color1 bold">double</code> <code class="plain">result = atanh(x);</code></div><div class="line number14 index13 alt1"> </div><div class="line number15 index14 alt2"><code class="undefined spaces">    </code><code class="plain">cout << </code><code class="string">"atanh(0) = "</code> <code class="plain"><< result << </code><code class="string">" radians\n"</code><code class="plain">;</code></div><div class="line number16 index15 alt1"><code class="undefined spaces">    </code><code class="plain">cout << </code><code class="string">"atanh(0) = "</code> <code class="plain"><< result * 180 / 3.141592</code></div><div class="line number17 index16 alt2"><code class="undefined spaces">         </code><code class="plain"><< </code><code class="string">" degrees\n"</code><code class="plain">;</code></div><div class="line number18 index17 alt1"> </div><div class="line number19 index18 alt2"><code class="undefined spaces">    </code><code class="comments">// Return value when x=-1</code></div><div class="line number20 index19 alt1"><code class="undefined spaces">    </code><code class="plain">x = -1;</code></div><div class="line number21 index20 alt2"><code class="undefined spaces">    </code><code class="plain">result = atanh(x);</code></div><div class="line number22 index21 alt1"> </div><div class="line number23 index22 alt2"><code class="undefined spaces">    </code><code class="plain">cout << </code><code class="string">"\natanh(-1) = "</code> <code class="plain"><< result << </code><code class="string">" radians\n"</code><code class="plain">;</code></div><div class="line number24 index23 alt1"><code class="undefined spaces">    </code><code class="plain">cout << </code><code class="string">"atanh(-1) = "</code> <code class="plain"><< result * 180 / 3.141592</code></div><div class="line number25 index24 alt2"><code class="undefined spaces">         </code><code class="plain"><< </code><code class="string">" degrees\n"</code><code class="plain">;</code></div><div class="line number26 index25 alt1"> </div><div class="line number27 index26 alt2"><code class="undefined spaces">    </code><code class="comments">// Return value when x=1</code></div><div class="line number28 index27 alt1"><code class="undefined spaces">    </code><code class="plain">x = 1;</code></div><div class="line number29 index28 alt2"><code class="undefined spaces">    </code><code class="plain">result = atanh(x);</code></div><div class="line number30 index29 alt1"> </div><div class="line number31 index30 alt2"><code class="undefined spaces">    </code><code class="plain">cout << </code><code class="string">"\natanh(1) = "</code> <code class="plain"><< result << </code><code class="string">" radians\n"</code><code class="plain">;</code></div><div class="line number32 index31 alt1"><code class="undefined spaces">    </code><code class="plain">cout << </code><code class="string">"atanh(1) = "</code> <code class="plain"><< result * 180 / 3.141592</code></div><div class="line number33 index32 alt2"><code class="undefined spaces">         </code><code class="plain"><< </code><code class="string">" degrees\n"</code><code class="plain">;</code></div><div class="line number34 index33 alt1"> </div><div class="line number35 index34 alt2"><code class="undefined spaces">    </code><code class="comments">// Return value when x<-1 or x>1</code></div><div class="line number36 index35 alt1"><code class="undefined spaces">    </code><code class="plain">x = -2;</code></div><div class="line number37 index36 alt2"><code class="undefined spaces">    </code><code class="plain">result = atanh(x);</code></div><div class="line number38 index37 alt1"> </div><div class="line number39 index38 alt2"><code class="undefined spaces">    </code><code class="plain">cout << </code><code class="string">"\natanh(-2) = "</code> <code class="plain"><< result << </code><code class="string">" radians\n"</code><code class="plain">;</code></div><div class="line number40 index39 alt1"><code class="undefined spaces">    </code><code class="plain">cout << </code><code class="string">"atanh(-2) = "</code> <code class="plain"><< result * 180 / 3.141592</code></div><div class="line number41 index40 alt2"><code class="undefined spaces">         </code><code class="plain"><< </code><code class="string">" degrees\n"</code><code class="plain">;</code></div><div class="line number42 index41 alt1"> </div><div class="line number43 index42 alt2"><code class="undefined spaces">    </code><code class="keyword bold">return</code> <code class="plain">0;</code></div><div class="line number44 index43 alt1"><code class="plain">}</code></div></div></td></tr></tbody></table></div>


Output

atanh(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





The above program generates an error if no matching function for call as a string is passed as an argument.

C++




// C++ program to demonstrate
// the atanh() function
// when input 2 is passed.
#include <iostream>
#include <cmath>
using namespace std;
int main() {
    double x = 2.0;
   // Function call to calculate atanh(x) value
    double result = atanh(x);
    cout << "result = " << result << endl;
    return 0;
}


Output

result = -nan

The above code generates nan as output which means not a number this is because the input is outside the range of [-1,1].

 



Last Updated : 06 Mar, 2023
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads