mirror of
				https://github.com/saitohirga/WSJT-X.git
				synced 2025-11-03 21:40:52 -05:00 
			
		
		
		
	
		
			
				
	
	
		
			80 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			80 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
[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).
 | 
						|
]
 | 
						|
 |