| // (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 |
| |
| |