1 // (C) Copyright John Maddock 2007.
2 // Use, modification and distribution are subject to the
3 // Boost Software License, Version 1.0. (See accompanying file
4 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
5
6 #ifndef BOOST_MATH_TEST_ERF_OTHER_HOOKS_HPP
7 #define BOOST_MATH_TEST_ERF_OTHER_HOOKS_HPP
8
9 #ifdef TEST_CEPHES
10 namespace other{
11 extern "C" {
12 double jv(double, double);
13 float jvf(float, float);
14 long double jvl(long double, long double);
15 double yv(double, double);
16 float yvf(float, float);
17 long double yvl(long double, long double);
18 }
cyl_bessel_j(float a,float x)19 inline float cyl_bessel_j(float a, float x)
20 { return jvf(a, x); }
cyl_bessel_j(double a,double x)21 inline double cyl_bessel_j(double a, double x)
22 { return jv(a, x); }
cyl_bessel_j(long double a,long double x)23 inline long double cyl_bessel_j(long double a, long double x)
24 {
25 #ifdef BOOST_MSVC
26 return jv((double)a, x);
27 #else
28 return jvl(a, x);
29 #endif
30 }
cyl_neumann(float a,float x)31 inline float cyl_neumann(float a, float x)
32 { return yvf(a, x); }
cyl_neumann(double a,double x)33 inline double cyl_neumann(double a, double x)
34 { return yv(a, x); }
cyl_neumann(long double a,long double x)35 inline long double cyl_neumann(long double a, long double x)
36 {
37 #ifdef BOOST_MSVC
38 return yv((double)a, x);
39 #else
40 return yvl(a, x);
41 #endif
42 }
43 }
44 #define TEST_OTHER
45 #endif
46
47 #ifdef TEST_GSL
48 #include <gsl/gsl_sf_bessel.h>
49 #include <gsl/gsl_errno.h>
50 #include <gsl/gsl_message.h>
51
52 namespace other{
cyl_bessel_j(float a,float x)53 inline float cyl_bessel_j(float a, float x)
54 { return (float)gsl_sf_bessel_Jnu(a, x); }
cyl_bessel_j(double a,double x)55 inline double cyl_bessel_j(double a, double x)
56 { return gsl_sf_bessel_Jnu(a, x); }
cyl_bessel_j(long double a,long double x)57 inline long double cyl_bessel_j(long double a, long double x)
58 { return gsl_sf_bessel_Jnu(a, x); }
59
cyl_bessel_i(float a,float x)60 inline float cyl_bessel_i(float a, float x)
61 { return (float)gsl_sf_bessel_Inu(a, x); }
cyl_bessel_i(double a,double x)62 inline double cyl_bessel_i(double a, double x)
63 { return gsl_sf_bessel_Inu(a, x); }
cyl_bessel_i(long double a,long double x)64 inline long double cyl_bessel_i(long double a, long double x)
65 { return gsl_sf_bessel_Inu(a, x); }
66
cyl_bessel_k(float a,float x)67 inline float cyl_bessel_k(float a, float x)
68 { return (float)gsl_sf_bessel_Knu(a, x); }
cyl_bessel_k(double a,double x)69 inline double cyl_bessel_k(double a, double x)
70 { return gsl_sf_bessel_Knu(a, x); }
cyl_bessel_k(long double a,long double x)71 inline long double cyl_bessel_k(long double a, long double x)
72 { return gsl_sf_bessel_Knu(a, x); }
73
cyl_neumann(float a,float x)74 inline float cyl_neumann(float a, float x)
75 { return (float)gsl_sf_bessel_Ynu(a, x); }
cyl_neumann(double a,double x)76 inline double cyl_neumann(double a, double x)
77 { return gsl_sf_bessel_Ynu(a, x); }
cyl_neumann(long double a,long double x)78 inline long double cyl_neumann(long double a, long double x)
79 { return gsl_sf_bessel_Ynu(a, x); }
80 }
81 #define TEST_OTHER
82 #endif
83
84 #ifdef TEST_OTHER
85 namespace other{
cyl_bessel_j(boost::math::concepts::real_concept,boost::math::concepts::real_concept)86 boost::math::concepts::real_concept cyl_bessel_j(boost::math::concepts::real_concept, boost::math::concepts::real_concept){ return 0; }
cyl_bessel_i(boost::math::concepts::real_concept,boost::math::concepts::real_concept)87 boost::math::concepts::real_concept cyl_bessel_i(boost::math::concepts::real_concept, boost::math::concepts::real_concept){ return 0; }
cyl_bessel_k(boost::math::concepts::real_concept,boost::math::concepts::real_concept)88 boost::math::concepts::real_concept cyl_bessel_k(boost::math::concepts::real_concept, boost::math::concepts::real_concept){ return 0; }
cyl_neumann(boost::math::concepts::real_concept,boost::math::concepts::real_concept)89 boost::math::concepts::real_concept cyl_neumann(boost::math::concepts::real_concept, boost::math::concepts::real_concept){ return 0; }
90 }
91 #endif
92
93
94 #endif
95
96
97
98