epoc32/include/stdapis/boost/math/complex/acosh.hpp
author William Roberts <williamr@symbian.org>
Wed, 31 Mar 2010 12:33:34 +0100
branchSymbian3
changeset 4 837f303aceeb
parent 3 e1b950c65cb4
permissions -rw-r--r--
Current Symbian^3 public API header files (from PDK 3.0.h)
This is the epoc32/include tree with the "platform" subtrees removed, and
all but a selected few mbg and rsg files removed.
williamr@4
     1
//  (C) Copyright John Maddock 2005.
williamr@4
     2
//  Use, modification and distribution are subject to the
williamr@4
     3
//  Boost Software License, Version 1.0. (See accompanying file
williamr@4
     4
//  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
williamr@2
     5
williamr@4
     6
#ifndef BOOST_MATH_COMPLEX_ACOSH_INCLUDED
williamr@4
     7
#define BOOST_MATH_COMPLEX_ACOSH_INCLUDED
williamr@2
     8
williamr@4
     9
#ifndef BOOST_MATH_COMPLEX_DETAILS_INCLUDED
williamr@4
    10
#  include <boost/math/complex/details.hpp>
williamr@4
    11
#endif
williamr@4
    12
#ifndef BOOST_MATH_COMPLEX_ATANH_INCLUDED
williamr@4
    13
#  include <boost/math/complex/acos.hpp>
williamr@4
    14
#endif
williamr@2
    15
williamr@4
    16
namespace boost{ namespace math{
williamr@2
    17
williamr@4
    18
template<class T> 
williamr@4
    19
inline std::complex<T> acosh(const std::complex<T>& z)
williamr@2
    20
{
williamr@4
    21
   //
williamr@4
    22
   // We use the relation acosh(z) = +-i acos(z)
williamr@4
    23
   // Choosing the sign of multiplier to give real(acosh(z)) >= 0
williamr@4
    24
   // as well as compatibility with C99.
williamr@4
    25
   //
williamr@4
    26
   std::complex<T> result = boost::math::acos(z);
williamr@4
    27
   if(!detail::test_is_nan(result.imag()) && result.imag() <= 0)
williamr@4
    28
      return detail::mult_i(result);
williamr@4
    29
   return detail::mult_minus_i(result);
williamr@2
    30
}
williamr@2
    31
williamr@4
    32
} } // namespaces
williamr@2
    33
williamr@4
    34
#endif // BOOST_MATH_COMPLEX_ACOSH_INCLUDED