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).
							 | 
						||
| 
								 | 
							
								]
							 | 
						||
| 
								 | 
							
								
							 |