Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

This is an old version of boost. Click here for the latest version's documentation home page.
PrevUpHomeNext

Complex Number Inverse Trigonometric Functions

Implementation and Accuracy
asin
acos
atan
asinh
acosh
atanh
History

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 will be part of the forthcoming Technical Report on C++ Standard Library Extensions.

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.

asin

Header:

#include <boost/math/complex/asin.hpp>

Synopsis:

template<class T> 
std::complex<T> asin(const std::complex<T>& z);

Effects: returns the inverse sine of the complex number z.

Formula: asin

acos

Header:

#include <boost/math/complex/acos.hpp>

Synopsis:

template<class T> 
std::complex<T> acos(const std::complex<T>& z);

Effects: returns the inverse cosine of the complex number z.

Formula: acos

atan

Header:

#include <boost/math/complex/atan.hpp>

Synopsis:

template<class T> 
std::complex<T> atan(const std::complex<T>& z);

Effects: returns the inverse tangent of the complex number z.

Formula: atan

asinh

Header:

#include <boost/math/complex/asinh.hpp>

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: asinh

acosh

Header:

#include <boost/math/complex/acosh.hpp>

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: acosh

atanh

Header:

#include <boost/math/complex/atanh.hpp>

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

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.
Copyright 2001 -2002 Daryle Walker, 2001-2003 Hubert Holin, 2005 John Maddock

PrevUpHomeNext