2 Copyright 2006 Hubert Holin and John Maddock.
3 Distributed under the Boost Software License, Version 1.0.
4 (See accompanying file LICENSE_1_0.txt or copy at
5 http://www.boost.org/LICENSE_1_0.txt).
8 [def __form1 [^\[0;+'''∞'''\[]]
9 [def __form2 [^\]-'''∞''';+1\[]]
10 [def __form3 [^\]-'''∞''';-1\[]]
11 [def __form4 [^\]+1;+'''∞'''\[]]
12 [def __form5 [^\[-1;-1+'''ε'''\[]]
13 [def __form6 '''ε''']
14 [def __form7 [^\]+1-'''ε''';+1\]]]
16 [def __effects [*Effects: ]]
17 [def __formula [*Formula: ]]
18 [def __exm1 '''<code>e<superscript>x</superscript> - 1</code>''']
19 [def __ex '''<code>e<superscript>x</superscript></code>''']
20 [def __te '''2ε''']
22 [section:inv_hyper Inverse Hyperbolic Functions]
24 [section:inv_hyper_over Inverse Hyperbolic Functions Overview]
26 The exponential funtion is defined, for all objects for which this makes sense,
28 [equation special_functions_blurb1]
29 with ['[^n! = 1x2x3x4x5...xn]] (and ['[^0! = 1]] by definition) being the factorial of ['[^n]].
30 In particular, the exponential function is well defined for real numbers,
31 complex number, quaternions, octonions, and matrices of complex numbers,
34 [: ['[*Graph of exp on R]] ]
36 [: [$../graphs/exp_on_r.png] ]
38 [: ['[*Real and Imaginary parts of exp on C]]]
39 [: [$../graphs/im_exp_on_c.png]]
41 The hyperbolic functions are defined as power series which
42 can be computed (for reals, complex, quaternions and octonions) as:
44 Hyperbolic cosine: [equation special_functions_blurb5]
46 Hyperbolic sine: [equation special_functions_blurb6]
48 Hyperbolic tangent: [equation special_functions_blurb7]
50 [: ['[*Trigonometric functions on R (cos: purple; sin: red; tan: blue)]]]
51 [: [$../graphs/trigonometric.png]]
53 [: ['[*Hyperbolic functions on r (cosh: purple; sinh: red; tanh: blue)]]]
54 [: [$../graphs/hyperbolic.png]]
56 The hyperbolic sine is one to one on the set of real numbers,
57 with range the full set of reals, while the hyperbolic tangent is
58 also one to one on the set of real numbers but with range __form1, and
59 therefore both have inverses.
61 The hyperbolic cosine is one to one from __form2 onto __form3 (and from __form4 onto __form3).
63 The inverse function we use here is defined on __form3 with range __form2.
65 The inverse of the hyperbolic tangent is called the Argument hyperbolic tangent,
66 and can be computed as [equation special_functions_blurb15]
68 The inverse of the hyperbolic sine is called the Argument hyperbolic sine,
69 and can be computed (for __form5) as [equation special_functions_blurb17]
71 The inverse of the hyperbolic cosine is called the Argument hyperbolic cosine,
72 and can be computed as [equation special_functions_blurb18]
74 [endsect] [/section:inv_hyper_over Inverse Hyperbolic Functions Overview]
79 #include <boost/math/special_functions/acosh.hpp>
83 ``__sf_result`` acosh(const T x);
85 template<class T, class ``__Policy``>
86 ``__sf_result`` acosh(const T x, const ``__Policy``&);
88 Computes the reciprocal of (the restriction to the range of __form1)
89 [link math_toolkit.inv_hyper.inv_hyper_over
90 the hyperbolic cosine function], at x. Values returned are positive.
92 If x is in the range __form2 then returns the result of __domain_error.
94 The return type of this function is computed using the __arg_promotion_rules:
95 the return type is `double` when T is an integer type, and T otherwise.
103 Generally accuracy is to within 1 or 2 __epsilon across all supported platforms.
107 This function is tested using a combination of random test values designed to give
108 full function coverage computed at high precision using the "naive" formula:
112 along with a selection of sanity check values
113 computed using functions.wolfram.com to at least 50 decimal digits.
117 For sufficiently large x, we can use the
118 [@http://functions.wolfram.com/ElementaryFunctions/ArcCosh/06/01/06/01/0001/
123 For x sufficiently close to 1 we can use the
124 [@http://functions.wolfram.com/ElementaryFunctions/ArcCosh/06/01/04/01/0001/
129 Otherwise for x close to 1 we can use the following rearrangement of the
130 primary definition to preserve accuracy:
135 [@http://functions.wolfram.com/ElementaryFunctions/ArcCosh/02/
136 primary definition] is used:
140 [endsect] [/section:acosh acosh]
142 [section:asinh asinh]
145 #include <boost/math/special_functions/asinh.hpp>
149 ``__sf_result`` asinh(const T x);
151 template<class T, class ``__Policy``>
152 ``__sf_result`` asinh(const T x, const ``__Policy``&);
154 Computes the reciprocal of
155 [link math_toolkit.inv_hyper.inv_hyper_over
156 the hyperbolic sine function].
158 The return type of this function is computed using the __arg_promotion_rules:
159 the return type is `double` when T is an integer type, and T otherwise.
167 Generally accuracy is to within 1 or 2 __epsilon across all supported platforms.
171 This function is tested using a combination of random test values designed to give
172 full function coverage computed at high precision using the "naive" formula:
176 along with a selection of sanity check values
177 computed using functions.wolfram.com to at least 50 decimal digits.
181 For sufficiently large x we can use the
182 [@http://functions.wolfram.com/ElementaryFunctions/ArcSinh/06/01/06/01/0001/
187 While for very small x we can use the
188 [@http://functions.wolfram.com/ElementaryFunctions/ArcSinh/06/01/03/01/0001/
193 For 0.5 > x > [epsilon] the following rearrangement of the primary definition is used:
197 Otherwise evalution is via the
198 [@http://functions.wolfram.com/ElementaryFunctions/ArcSinh/02/
203 [endsect] [/section:asinh asinh]
205 [section:atanh atanh]
208 #include <boost/math/special_functions/atanh.hpp>
212 ``__sf_result`` atanh(const T x);
214 template<class T, class ``__Policy``>
215 ``__sf_result`` atanh(const T x, const ``__Policy``&);
217 Computes the reciprocal of
218 [link math_toolkit.inv_hyper.inv_hyper_over
219 the hyperbolic tangent function], at x.
227 then returns the result of __domain_error.
231 then the result of -__overflow_error is returned, with
233 denoting `std::numeric_limits<T>::epsilon()`.
237 then the result of __overflow_error is returned, with
240 `std::numeric_limits<T>::epsilon()`.
242 The return type of this function is computed using the __arg_promotion_rules:
243 the return type is `double` when T is an integer type, and T otherwise.
249 Generally accuracy is to within 1 or 2 __epsilon across all supported platforms.
253 This function is tested using a combination of random test values designed to give
254 full function coverage computed at high precision using the "naive" formula:
258 along with a selection of sanity check values
259 computed using functions.wolfram.com to at least 50 decimal digits.
263 For sufficiently small x we can use the
264 [@http://functions.wolfram.com/ElementaryFunctions/ArcTanh/06/01/03/01/ approximation]:
269 [@http://functions.wolfram.com/ElementaryFunctions/ArcTanh/02/ primary definition]:
273 or its equivalent form:
279 [endsect] [/section:atanh atanh]
281 [endsect] [/section:inv_hyper Inverse Hyperbolic Functions]