mirror of
				https://github.com/saitohirga/WSJT-X.git
				synced 2025-10-30 12:30:23 -04:00 
			
		
		
		
	
		
			
				
	
	
		
			95 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			95 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| //  (C) Copyright John Maddock 2006.
 | |
| //  Use, modification and distribution are subject to 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)
 | |
| 
 | |
| #ifndef BOOST_MATH_TEST_ZETA_OTHER_HOOKS_HPP
 | |
| #define BOOST_MATH_TEST_ZETA_OTHER_HOOKS_HPP
 | |
| 
 | |
| 
 | |
| #ifdef TEST_CEPHES
 | |
| namespace other{
 | |
| extern "C" {
 | |
|    double expn(int, double);
 | |
|    float expnf(int, float);
 | |
|    long double expnl(int, long double);
 | |
| }
 | |
| inline float expint(unsigned n, float a)
 | |
| { return expnf(n, a); }
 | |
| inline double expint(unsigned n, double a)
 | |
| { return expn(n, a); }
 | |
| inline long double expint(unsigned n, long double a)
 | |
| {
 | |
| #ifdef BOOST_MSVC
 | |
|    return expn(n, (double)a); 
 | |
| #else
 | |
|    return expnl(n, a); 
 | |
| #endif
 | |
| }
 | |
| // Ei is not supported:
 | |
| template <class T>
 | |
| inline T expint(T){ return 0; }
 | |
| }
 | |
| #define TEST_OTHER
 | |
| #endif
 | |
| 
 | |
| #ifdef TEST_GSL
 | |
| #include <gsl/gsl_sf_expint.h>
 | |
| 
 | |
| namespace other{
 | |
| inline float expint(float a)
 | |
| { return (float)gsl_sf_expint_Ei(a); }
 | |
| inline double expint(double a)
 | |
| { return gsl_sf_expint_Ei(a); }
 | |
| inline long double expint(long double a)
 | |
| { return gsl_sf_expint_Ei(a); }
 | |
| // En is not supported:
 | |
| template <class T>
 | |
| inline T expint(unsigned, T){ return 0; }
 | |
| }
 | |
| #define TEST_OTHER
 | |
| #endif
 | |
| 
 | |
| #ifdef TEST_SPECFUN
 | |
| namespace other{
 | |
| extern "C" int calcei_(double *arg, double *result, int*);
 | |
| inline float expint(float a)
 | |
| { 
 | |
|    double r, a_(a);
 | |
|    int v = 1;
 | |
|    calcei_(&a_, &r, &v); 
 | |
|    return (float)r;
 | |
| }
 | |
| inline double expint(double a)
 | |
| { 
 | |
|    double r, a_(a);
 | |
|    int v = 1;
 | |
|    calcei_(&a_, &r, &v); 
 | |
|    return r;
 | |
| }
 | |
| inline long double expint(long double a)
 | |
| { 
 | |
|    double r, a_(a);
 | |
|    int v = 1;
 | |
|    calcei_(&a_, &r, &v); 
 | |
|    return r;
 | |
| }
 | |
| // En is not supported:
 | |
| template <class T>
 | |
| inline T expint(unsigned, T){ return 0; }
 | |
| }
 | |
| #define TEST_OTHER
 | |
| #endif
 | |
| 
 | |
| #ifdef TEST_OTHER
 | |
| namespace other{
 | |
|    boost::math::concepts::real_concept expint(unsigned, boost::math::concepts::real_concept){ return 0; }
 | |
|    boost::math::concepts::real_concept expint(boost::math::concepts::real_concept){ return 0; }
 | |
| }
 | |
| #endif
 | |
| 
 | |
| 
 | |
| #endif
 | |
| 
 | |
| 
 |