CLHEP
2.4.7.1
C++ Class Library for High Energy Physics
CLHEP
GenericFunctions
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
12
namespace
Genfun
{
13
namespace
IntegralOrder {
14
15
FUNCTION_OBJECT_IMP
(Bessel)
16
17
inline
18
Bessel::Bessel
(
Type
type,
unsigned
int
order):
19
_type(type),_order(order)
20
{
21
}
22
23
inline
24
Bessel::~Bessel
() {
25
}
26
27
inline
28
Bessel::Bessel
(
const
Bessel
& right):
29
_type(right._type),
30
_order(right._order)
31
{
32
}
33
34
inline
35
double
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
62
namespace
FractionalOrder
{
63
64
FUNCTION_OBJECT_IMP
(Bessel)
65
66
inline
67
Bessel::Bessel
(
Type
type):
68
_type(type),
69
_order(
"Order"
, 0.0,-10,10)
70
{
71
}
72
73
inline
74
Bessel::~Bessel
() {
75
}
76
77
inline
78
Bessel::Bessel
(
const
Bessel
& right):
79
_type(right._type),
80
_order(right._order)
81
{
82
}
83
84
85
inline
86
Parameter
&
Bessel::order
() {
87
return
_order;
88
}
89
90
inline
91
const
Parameter
&
Bessel::order
()
const
{
92
return
_order;
93
}
94
95
96
inline
97
double
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
FUNCTION_OBJECT_IMP
#define FUNCTION_OBJECT_IMP(classname)
Definition
AbsFunction.hh:149
Genfun::FractionalOrder::Bessel::Bessel
Bessel(Type type)
Definition
Bessel.icc:67
Genfun::FractionalOrder::Bessel::operator()
virtual double operator()(double argument) const override
Definition
Bessel.icc:97
Genfun::FractionalOrder::Bessel::order
Parameter & order()
Definition
Bessel.icc:86
Genfun::FractionalOrder::Bessel::Type
Type
Definition
Bessel.hh:37
Genfun::FractionalOrder::Bessel::Y
@ Y
Definition
Bessel.hh:37
Genfun::FractionalOrder::Bessel::J
@ J
Definition
Bessel.hh:37
Genfun::FractionalOrder::Bessel::~Bessel
virtual ~Bessel()
Definition
Bessel.icc:74
Genfun::IntegralOrder::Bessel::Type
Type
Definition
Bessel.hh:82
Genfun::IntegralOrder::Bessel::J
@ J
Definition
Bessel.hh:82
Genfun::IntegralOrder::Bessel::Y
@ Y
Definition
Bessel.hh:82
Genfun::IntegralOrder::Bessel::operator()
virtual double operator()(double argument) const override
Definition
Bessel.icc:35
Genfun::IntegralOrder::Bessel::Bessel
Bessel(Type type, unsigned int order)
Definition
Bessel.icc:18
Genfun::IntegralOrder::Bessel::~Bessel
virtual ~Bessel()
Definition
Bessel.icc:24
Genfun::Parameter
Definition
Parameter.hh:35
Genfun::FractionalOrder
Definition
Bessel.hh:25
Genfun
Definition
Abs.hh:14
Generated by
1.14.0