CLHEP 2.4.7.1
C++ Class Library for High Energy Physics
Bessel.icc
Go to the documentation of this file.
1// -*- C++ -*-
2// $Id:
3#include "gsl/gsl_sf_bessel.h"
4#include <cmath>
5#include <signal.h>
6#include <assert.h>
7
8
9#define GF_DBL_EPSILON 2.2204460492503131e-16
10
11
12namespace Genfun {
13namespace IntegralOrder {
14
16
17inline
18Bessel::Bessel(Type type, unsigned int order):
19 _type(type),_order(order)
20{
21}
22
23inline
26
27inline
28Bessel::Bessel(const Bessel & right):
29 _type(right._type),
30 _order(right._order)
31{
32}
33
34inline
35double Bessel::operator() (double x) const {
36 gsl_sf_result result;
37 if (_type==J) {
38 int status = gsl_sf_bessel_Jn_e(_order, x, &result);
39 if (status!=0) {
40 std::cerr << "Warning, GSL function gsl_sf_bessel_Jn_impl"
41 << " return code" << status << std::endl;
42 raise(SIGFPE);
43 }
44 return result.val;
45 }
46 else if (_type==Y) {
47 int status = gsl_sf_bessel_Yn_e(_order, x, &result);
48 if (status!=0) {
49 std::cerr << "Warning, GSL function gsl_sf_bessel_Yn_impl"
50 << " return code" << status << std::endl;
51 raise(SIGFPE);
52 }
53 return result.val;
54 }
55 else {
56 return 0;
57 }
58}
59
60} // end namespace IntegralOrder
61
62namespace FractionalOrder {
63
65
66inline
68 _type(type),
69 _order("Order", 0.0,-10,10)
70{
71}
72
73inline
76
77inline
78Bessel::Bessel(const Bessel & right):
79 _type(right._type),
80 _order(right._order)
81{
82}
83
84
85inline
87 return _order;
88}
89
90inline
91const Parameter & Bessel::order() const {
92 return _order;
93}
94
95
96inline
97double Bessel::operator() (double x) const {
98 gsl_sf_result result;
99 if (_type==J) {
100 int status = gsl_sf_bessel_Jnu_e(_order.getValue(), x, &result);
101 if (status!=0) {
102 std::cerr << "Warning, GSL function gsl_sf_bessel_Jnu_impl"
103 << " return code" << status << std::endl;
104 raise(SIGFPE);
105 }
106 return result.val;
107 }
108 else if (_type==Y) {
109 int status = gsl_sf_bessel_Ynu_e(_order.getValue(), x, &result);
110 if (status!=0) {
111 std::cerr << "Warning, GSL function gsl_sf_bessel_Ynu_impl"
112 << " return code" << status << std::endl;
113 raise(SIGFPE);
114 }
115 return result.val;
116 }
117 return result.val;
118}
119
120
121} // end namespace FractionalOrder
122
123} // end namespace Genfun
#define FUNCTION_OBJECT_IMP(classname)
virtual double operator()(double argument) const override
Definition Bessel.icc:97
virtual double operator()(double argument) const override
Definition Bessel.icc:35
Bessel(Type type, unsigned int order)
Definition Bessel.icc:18
Definition Abs.hh:14