@@ -101,6 +101,9 @@ namespace QuantLib {
101
101
102
102
std::complex<Real> modifiedBesselFunction_i (Real nu,
103
103
const std::complex<Real> &z) {
104
+ if (z.imag () == 0.0 && z.real () >= 0.0 )
105
+ return std::complex<Real>(modifiedBesselFunction_i (nu, z.real ()));
106
+
104
107
return modifiedBesselFunction_i_impl<
105
108
std::complex<Real>, Unweighted>(nu, z);
106
109
}
@@ -111,6 +114,9 @@ namespace QuantLib {
111
114
112
115
std::complex<Real> modifiedBesselFunction_k (Real nu,
113
116
const std::complex<Real> &z) {
117
+ if (z.imag () == 0.0 && z.real () >= 0.0 )
118
+ return std::complex<Real>(modifiedBesselFunction_k (nu, z.real ()));
119
+
114
120
return modifiedBesselFunction_k_impl<
115
121
std::complex<Real>, Unweighted>(nu, z);
116
122
}
@@ -124,6 +130,11 @@ namespace QuantLib {
124
130
125
131
std::complex<Real> modifiedBesselFunction_i_exponentiallyWeighted (
126
132
Real nu, const std::complex<Real> &z) {
133
+
134
+ if (z.imag () == 0.0 && z.real () >= 0.0 )
135
+ return std::complex<Real>(
136
+ modifiedBesselFunction_i_exponentiallyWeighted (nu, z.real ()));
137
+
127
138
return modifiedBesselFunction_i_impl<
128
139
std::complex<Real>, ExponentiallyWeighted>(nu, z);
129
140
}
@@ -135,6 +146,11 @@ namespace QuantLib {
135
146
136
147
std::complex<Real> modifiedBesselFunction_k_exponentiallyWeighted (
137
148
Real nu, const std::complex<Real> &z) {
149
+
150
+ if (z.imag () == 0.0 && z.real () >= 0.0 )
151
+ return std::complex<Real>(
152
+ modifiedBesselFunction_k_exponentiallyWeighted (nu, z.real ()));
153
+
138
154
return modifiedBesselFunction_k_impl<
139
155
std::complex<Real>, ExponentiallyWeighted>(nu, z);
140
156
}
0 commit comments