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