CLHEP
2.4.7.1
C++ Class Library for High Energy Physics
CLHEP
GenericFunctions
EllipticIntegral.icc
Go to the documentation of this file.
1
// -*- C++ -*-
2
// $Id:
3
#include "gsl/gsl_sf_ellint.h"
4
#include <cmath>
5
#include <signal.h>
6
#include <assert.h>
7
8
9
namespace
Genfun
{
10
namespace
EllipticIntegral
{
11
12
//-----------------------------------------------------------------------------//
13
// FIRST KIND //
14
//-----------------------------------------------------------------------------//
15
16
FUNCTION_OBJECT_IMP
(
FirstKind
)
17
18
inline
19
FirstKind::FirstKind
():
20
_k(
"K"
, 1.0,0.0,1.0)
21
{
22
}
23
24
inline
25
FirstKind::~FirstKind
() {
26
}
27
28
inline
29
FirstKind::FirstKind
(
const
FirstKind
& right):
30
_k(right._k)
31
{
32
}
33
34
35
inline
36
Parameter
&
FirstKind::k
() {
37
return
_k;
38
}
39
40
inline
41
const
Parameter
&
FirstKind::k
()
const
{
42
return
_k;
43
}
44
45
46
inline
47
double
FirstKind::operator()
(
double
x)
const
{
48
gsl_sf_result result;
49
int
status = gsl_sf_ellint_F_e(x,_k.getValue(), GSL_PREC_DOUBLE, &result);
50
if
(status!=0) {
51
std::cerr <<
"Warning, GSL function gsl_sf_ellint_F_impl"
52
<<
" return code"
<< status << std::endl;
53
raise(SIGFPE);
54
}
55
return
result.val;
56
}
57
//-----------------------------------------------------------------------------//
58
// SECOND KIND //
59
//-----------------------------------------------------------------------------//
60
61
FUNCTION_OBJECT_IMP
(
SecondKind
)
62
63
inline
64
SecondKind::SecondKind
():
65
_k(
"K"
, 1.0,0.0,1.0)
66
{
67
}
68
69
inline
70
SecondKind::~SecondKind
() {
71
}
72
73
inline
74
SecondKind::SecondKind
(
const
SecondKind
& right):
75
_k(right._k)
76
{
77
}
78
79
80
inline
81
Parameter
&
SecondKind::k
() {
82
return
_k;
83
}
84
85
inline
86
const
Parameter
&
SecondKind::k
()
const
{
87
return
_k;
88
}
89
90
91
inline
92
double
SecondKind::operator()
(
double
x)
const
{
93
gsl_sf_result result;
94
int
status = gsl_sf_ellint_E_e(x,_k.getValue(), GSL_PREC_DOUBLE, &result);
95
if
(status!=0) {
96
std::cerr <<
"Warning, GSL function gsl_sf_ellint_E_impl"
97
<<
" return code"
<< status << std::endl;
98
raise(SIGFPE);
99
}
100
return
result.val;
101
}
102
//-----------------------------------------------------------------------------//
103
// THIRD KIND //
104
//-----------------------------------------------------------------------------//
105
FUNCTION_OBJECT_IMP
(
ThirdKind
)
106
107
inline
108
ThirdKind::ThirdKind
():
109
_k(
"K"
, 1.0,0.0, 1.0),
110
_n(
"N"
, 1.0,0.0,10.0)
111
{
112
}
113
114
inline
115
ThirdKind::~ThirdKind
() {
116
}
117
118
inline
119
ThirdKind::ThirdKind
(
const
ThirdKind
& right):
120
_k(right._k),
121
_n(right._n)
122
{
123
}
124
125
126
inline
127
Parameter
&
ThirdKind::k
() {
128
return
_k;
129
}
130
131
inline
132
const
Parameter
&
ThirdKind::k
()
const
{
133
return
_k;
134
}
135
136
137
inline
138
Parameter
&
ThirdKind::n
() {
139
return
_n;
140
}
141
142
inline
143
const
Parameter
&
ThirdKind::n
()
const
{
144
return
_n;
145
}
146
147
148
inline
149
double
ThirdKind::operator()
(
double
x)
const
{
150
gsl_sf_result result;
151
int
status = gsl_sf_ellint_P_e(x,_k.getValue(),_n.getValue(), GSL_PREC_DOUBLE, &result);
152
if
(status!=0) {
153
std::cerr <<
"Warning, GSL function gsl_ellint_P_impl"
154
<<
" return code"
<< status << std::endl;
155
raise(SIGFPE);
156
}
157
return
result.val;
158
}
159
}
// end namespace EllipticIntegral
160
}
// end namespace Genfun
FUNCTION_OBJECT_IMP
#define FUNCTION_OBJECT_IMP(classname)
Definition
AbsFunction.hh:149
Genfun::EllipticIntegral::FirstKind
Definition
EllipticIntegral.hh:17
Genfun::EllipticIntegral::FirstKind::~FirstKind
virtual ~FirstKind()
Definition
EllipticIntegral.icc:25
Genfun::EllipticIntegral::FirstKind::k
Parameter & k()
Definition
EllipticIntegral.icc:36
Genfun::EllipticIntegral::FirstKind::operator()
virtual double operator()(double argument) const override
Definition
EllipticIntegral.icc:47
Genfun::EllipticIntegral::FirstKind::FirstKind
FirstKind()
Definition
EllipticIntegral.icc:19
Genfun::EllipticIntegral::SecondKind
Definition
EllipticIntegral.hh:49
Genfun::EllipticIntegral::SecondKind::operator()
virtual double operator()(double argument) const override
Definition
EllipticIntegral.icc:92
Genfun::EllipticIntegral::SecondKind::k
Parameter & k()
Definition
EllipticIntegral.icc:81
Genfun::EllipticIntegral::SecondKind::~SecondKind
virtual ~SecondKind()
Definition
EllipticIntegral.icc:70
Genfun::EllipticIntegral::SecondKind::SecondKind
SecondKind()
Definition
EllipticIntegral.icc:64
Genfun::EllipticIntegral::ThirdKind
Definition
EllipticIntegral.hh:81
Genfun::EllipticIntegral::ThirdKind::k
Parameter & k()
Definition
EllipticIntegral.icc:127
Genfun::EllipticIntegral::ThirdKind::n
Parameter & n()
Definition
EllipticIntegral.icc:138
Genfun::EllipticIntegral::ThirdKind::ThirdKind
ThirdKind()
Definition
EllipticIntegral.icc:108
Genfun::EllipticIntegral::ThirdKind::~ThirdKind
virtual ~ThirdKind()
Definition
EllipticIntegral.icc:115
Genfun::EllipticIntegral::ThirdKind::operator()
virtual double operator()(double argument) const override
Definition
EllipticIntegral.icc:149
Genfun::Parameter
Definition
Parameter.hh:35
Genfun::EllipticIntegral
Definition
EllipticIntegral.hh:15
Genfun
Definition
Abs.hh:14
Generated by
1.13.2