mirror of
https://github.com/boostorg/math.git
synced 2026-01-28 19:32:08 +00:00
163 lines
4.2 KiB
Plaintext
163 lines
4.2 KiB
Plaintext
[article Complex Number TR1 Algorithms
|
|
[quickbook 1.4]
|
|
[copyright 2005 John Maddock]
|
|
[purpose Complex number arithmetic]
|
|
[license
|
|
Distributed under the Boost Software License, Version 1.0.
|
|
(See accompanying file LICENSE_1_0.txt or copy at
|
|
[@http://www.boost.org/LICENSE_1_0.txt http://www.boost.org/LICENSE_1_0.txt])
|
|
]
|
|
[authors [Maddock, John]]
|
|
[category math]
|
|
[last-revision $Date: 2006-12-29 11:08:32 +0000 (Fri, 29 Dec 2006) $]
|
|
]
|
|
|
|
|
|
[def __effects [*Effects: ]]
|
|
[def __formula [*Formula: ]]
|
|
[def __exm1 '''<code>e<superscript>x</superscript> - 1</code>''']
|
|
[def __ex '''<code>e<superscript>x</superscript></code>''']
|
|
[def __te '''2ε''']
|
|
[template tr1[] [@http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1836.pdf Technical Report on C++ Library Extensions]]
|
|
|
|
This manual is also available in
|
|
[@http://sourceforge.net/projects/boost/files/boost-docs/
|
|
printer friendly PDF format].
|
|
|
|
[section:inverse_complex Complex Number Inverse Trigonometric Functions]
|
|
|
|
The following complex number algorithms are the inverses of trigonometric functions currently
|
|
present in the C++ standard. Equivalents to these functions are part of the C99 standard, and
|
|
are part of the [tr1].
|
|
|
|
[section:implementation Implementation and Accuracy]
|
|
|
|
Although there are deceptively simple formulae available for all of these functions, a naive
|
|
implementation that used these formulae would fail catastrophically for some input
|
|
values. The Boost versions of these functions have been implemented using the methodology
|
|
described in "Implementing the Complex Arcsine and Arccosine Functions Using Exception Handling"
|
|
by T. E. Hull Thomas F. Fairgrieve and Ping Tak Peter Tang, ACM Transactions on Mathematical Software,
|
|
Vol. 23, No. 3, September 1997. This means that the functions are well defined over the entire
|
|
complex number range, and produce accurate values even at the extremes of that range, where as a naive
|
|
formula would cause overflow or underflow to occur during the calculation, even though the result is
|
|
actually a representable value. The maximum theoretical relative error for all of these functions
|
|
is less than 9.5E for every machine-representable point in the complex plane. Please refer to
|
|
comments in the header files themselves and to the above mentioned paper for more information
|
|
on the implementation methodology.
|
|
|
|
[endsect]
|
|
[section:asin asin]
|
|
|
|
[h4 Header:]
|
|
|
|
#include <boost/math/complex/asin.hpp>
|
|
|
|
[h4 Synopsis:]
|
|
|
|
template<class T>
|
|
std::complex<T> asin(const std::complex<T>& z);
|
|
|
|
__effects returns the inverse sine of the complex number z.
|
|
|
|
__formula [$../../images/asin.png]
|
|
|
|
[endsect]
|
|
|
|
[section:acos acos]
|
|
|
|
[h4 Header:]
|
|
|
|
#include <boost/math/complex/acos.hpp>
|
|
|
|
[h4 Synopsis:]
|
|
|
|
template<class T>
|
|
std::complex<T> acos(const std::complex<T>& z);
|
|
|
|
__effects returns the inverse cosine of the complex number z.
|
|
|
|
__formula [$../../images/acos.png]
|
|
|
|
[endsect]
|
|
|
|
[section:atan atan]
|
|
|
|
[h4 Header:]
|
|
|
|
#include <boost/math/complex/atan.hpp>
|
|
|
|
[h4 Synopsis:]
|
|
|
|
template<class T>
|
|
std::complex<T> atan(const std::complex<T>& z);
|
|
|
|
__effects returns the inverse tangent of the complex number z.
|
|
|
|
__formula [$../../images/atan.png]
|
|
|
|
[endsect]
|
|
|
|
[section:asinh asinh]
|
|
|
|
[h4 Header:]
|
|
|
|
#include <boost/math/complex/asinh.hpp>
|
|
|
|
[h4 Synopsis:]
|
|
|
|
template<class T>
|
|
std::complex<T> asinh(const std::complex<T>& z);
|
|
|
|
__effects returns the inverse hyperbolic sine of the complex number z.
|
|
|
|
__formula [$../../images/asinh.png]
|
|
|
|
[endsect]
|
|
|
|
[section:acosh acosh]
|
|
|
|
[h4 Header:]
|
|
|
|
#include <boost/math/complex/acosh.hpp>
|
|
|
|
[h4 Synopsis:]
|
|
|
|
template<class T>
|
|
std::complex<T> acosh(const std::complex<T>& z);
|
|
|
|
__effects returns the inverse hyperbolic cosine of the complex number z.
|
|
|
|
__formula [$../../images/acosh.png]
|
|
|
|
[endsect]
|
|
|
|
[section:atanh atanh]
|
|
|
|
[h4 Header:]
|
|
|
|
#include <boost/math/complex/atanh.hpp>
|
|
|
|
[h4 Synopsis:]
|
|
|
|
template<class T>
|
|
std::complex<T> atanh(const std::complex<T>& z);
|
|
|
|
__effects returns the inverse hyperbolic tangent of the complex number z.
|
|
|
|
__formula [$../../images/atanh.png]
|
|
|
|
[endsect]
|
|
|
|
[section History]
|
|
|
|
* 2005/12/17: Added support for platforms with no meaningful numeric_limits<>::infinity().
|
|
* 2005/12/01: Initial version, added as part of the TR1 library.
|
|
|
|
|
|
[endsect]
|
|
|
|
[endsect]
|
|
|
|
|
|
|