7#ifndef BOOST_MATH_LAMBERT_W_SING_HPP_INCLUDED
8#define BOOST_MATH_LAMBERT_W_SING_HPP_INCLUDED
10#include <boost/array.hpp>
24 template<
class CoeffType>
27 template<
class CoeffType>
41 for(std::size_t
j = 2;
j <= (
k-1); ++
j)
43 sum+=_sing_coeffs_mu<CoeffType>(
j)*_sing_coeffs_mu<CoeffType>(
k+1-
j);
49 template<
class CoeffType>
62 return (_sing_coeffs_mu<CoeffType>(
k-2)/2
63 +_sing_coeffs_alpha<CoeffType>(
k-2)/4)*(
k-1)/(
k+1)
64 -_sing_coeffs_alpha<CoeffType>(
k)/2
65 -_sing_coeffs_mu<CoeffType>(
k-1)/(
k+1);
69 template<
class CoeffType>
72 CoeffType ans = _sing_coeffs_mu<CoeffType>(
k+1)/_sing_coeffs_mu<CoeffType>(
k);
77 template<
class CoeffType>
78 inline const boost::array<CoeffType,_sing_series_L>&
_lw_singc()
80 static const boost::array<CoeffType,_sing_series_L> ans = _coeff_array<CoeffType,_sing_series_L>(_sing_coeffs<CoeffType>);
85 template<
class ArgumentType,
class CoeffType,
class IndexType>
86 ArgumentType
_sing(
const ArgumentType &z, IndexType
k)
95 p = ((CoeffType)pow(-1.,
k%2))*sqrt((CoeffType)2.*(boost::math::constants::e<CoeffType>()*z+(CoeffType)1.));
FTensor::Index< 'j', 3 > j
FTensor::Index< 'k', 3 > k
CoeffType _sing_coeffs_mu(std::size_t k)
ArgumentType _sing(const ArgumentType &z, IndexType k)
const std::size_t _sing_series_L
CoeffType _sing_coeffs(std::size_t k)
ArgumentType _series_sum(const ArgumentType &z, const boost::array< CoeffType, L > &c)
CoeffType _sing_coeffs_alpha(std::size_t k)
const boost::array< CoeffType, _sing_series_L > & _lw_singc()