[section:trigamma Trigamma]

[h4 Synopsis]

``
#include <boost/math/special_functions/trigamma.hpp>
``

  namespace boost{ namespace math{
  
  template <class T>
  ``__sf_result`` trigamma(T z);
  
  template <class T, class ``__Policy``>
  ``__sf_result`` trigamma(T z, const ``__Policy``&);
  
  }} // namespaces
  
[h4 Description]

Returns the trigamma function of /x/. Trigamma is defined as the 
derivative of the digamma function:

[equation trigamma1]

[graph trigamma]

[optional_policy]

The return type of this function is computed using the __arg_promotion_rules:
the result is of type `double` when T is an integer type, and type T otherwise.

[h4 Accuracy]

The following table shows the peak errors (in units of epsilon) 
found on various platforms with various floating point types.
Unless otherwise specified any floating point type that is narrower
than the one shown will have __zero_error.

[table_trigamma]

As shown above, error rates are generally very low for built in types.
For multiprecision types, error rates are typically in the order of a
few epsilon.

[h4 Testing]

Testing is against Mathematica generated spot values to 35 digit precision.

[h4 Implementation]

The arbitrary precision version of this function simply calls __polygamma.

For built in fixed precision types, negative arguments are first made positive via:

[equation trigamma2]

Then arguments in the range \[0, 1) are shifted to >= 1 via:

[equation trigamma3]

Then evaluation is via one of a number of rational approximations, for small x these are
of the form:

[equation trigamma4]

and for large x of the form:

[equation trigamma5]

[endsect][/section:digamma The Trigamma Function]

[/ 
  Copyright 2014 John Maddock and Paul A. Bristow.
  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).
]

