atanh() function in C++ STL
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> |
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; } |
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].
Contact Us