@@ -17,7 +17,7 @@ T cem_cva(T m, T q) {
17
17
int int_m, kd = 1 ;
18
18
19
19
if ((m < 0 ) || (m != floor (m))) {
20
- set_error (" cem_cva " , SF_ERROR_DOMAIN, NULL );
20
+ set_error (" mathieu_a " , SF_ERROR_DOMAIN, NULL );
21
21
return std::numeric_limits<T>::quiet_NaN ();
22
22
}
23
23
int_m = (int ) m;
@@ -41,7 +41,7 @@ T sem_cva(T m, T q) {
41
41
int int_m, kd = 4 ;
42
42
43
43
if ((m <= 0 ) || (m != floor (m))) {
44
- set_error (" cem_cva " , SF_ERROR_DOMAIN, NULL );
44
+ set_error (" mathieu_b " , SF_ERROR_DOMAIN, NULL );
45
45
return std::numeric_limits<T>::quiet_NaN ();
46
46
}
47
47
int_m = (int ) m;
@@ -67,7 +67,7 @@ void cem(T m, T q, T x, T &csf, T &csd) {
67
67
if ((m < 0 ) || (m != floor (m))) {
68
68
csf = std::numeric_limits<T>::quiet_NaN ();
69
69
csd = std::numeric_limits<T>::quiet_NaN ();
70
- set_error (" cem " , SF_ERROR_DOMAIN, NULL );
70
+ set_error (" mathieu_cem " , SF_ERROR_DOMAIN, NULL );
71
71
} else {
72
72
int_m = (int ) m;
73
73
if (q < 0 ) {
@@ -85,7 +85,15 @@ void cem(T m, T q, T x, T &csf, T &csd) {
85
85
csd = -sgn * d;
86
86
}
87
87
} else {
88
- specfun::mtu0 (kf, int_m, q, x, &csf, &csd);
88
+ using specfun::Status;
89
+ Status status = specfun::mtu0 (kf, int_m, q, x, &csf, &csd);
90
+ if (status != Status::OK) {
91
+ csf = std::numeric_limits<T>::quiet_NaN ();
92
+ csd = std::numeric_limits<T>::quiet_NaN ();
93
+ sf_error_t sf_error = status == Status::NoMemory ? SF_ERROR_MEMORY
94
+ : SF_ERROR_OTHER;
95
+ set_error (" mathieu_cem" , sf_error, NULL );
96
+ }
89
97
}
90
98
}
91
99
}
@@ -97,7 +105,7 @@ void sem(T m, T q, T x, T &csf, T &csd) {
97
105
if ((m < 0 ) || (m != floor (m))) {
98
106
csf = std::numeric_limits<T>::quiet_NaN ();
99
107
csd = std::numeric_limits<T>::quiet_NaN ();
100
- set_error (" sem " , SF_ERROR_DOMAIN, NULL );
108
+ set_error (" mathieu_sem " , SF_ERROR_DOMAIN, NULL );
101
109
} else {
102
110
int_m = (int ) m;
103
111
if (int_m == 0 ) {
@@ -117,7 +125,15 @@ void sem(T m, T q, T x, T &csf, T &csd) {
117
125
csd = -sgn * d;
118
126
}
119
127
} else {
120
- specfun::mtu0 (kf, int_m, q, x, &csf, &csd);
128
+ using specfun::Status;
129
+ Status status = specfun::mtu0 (kf, int_m, q, x, &csf, &csd);
130
+ if (status != Status::OK) {
131
+ csf = std::numeric_limits<T>::quiet_NaN ();
132
+ csd = std::numeric_limits<T>::quiet_NaN ();
133
+ sf_error_t sf_error = status == Status::NoMemory ? SF_ERROR_MEMORY
134
+ : SF_ERROR_OTHER;
135
+ set_error (" mathieu_sem" , sf_error, NULL );
136
+ }
121
137
}
122
138
}
123
139
}
@@ -130,10 +146,18 @@ void mcm1(T m, T q, T x, T &f1r, T &d1r) {
130
146
if ((m < 0 ) || (m != floor (m)) || (q < 0 )) {
131
147
f1r = std::numeric_limits<T>::quiet_NaN ();
132
148
d1r = std::numeric_limits<T>::quiet_NaN ();
133
- set_error (" mcm1 " , SF_ERROR_DOMAIN, NULL );
149
+ set_error (" mathieu_modcem1 " , SF_ERROR_DOMAIN, NULL );
134
150
} else {
151
+ using specfun::Status;
135
152
int_m = (int ) m;
136
- specfun::mtu12 (kf, kc, int_m, q, x, &f1r, &d1r, &f2r, &d2r);
153
+ Status status = specfun::mtu12 (kf, kc, int_m, q, x, &f1r, &d1r, &f2r, &d2r);
154
+ if (status != Status::OK) {
155
+ f1r = std::numeric_limits<T>::quiet_NaN ();
156
+ d1r = std::numeric_limits<T>::quiet_NaN ();
157
+ sf_error_t sf_error = status == Status::NoMemory ? SF_ERROR_MEMORY
158
+ : SF_ERROR_OTHER;
159
+ set_error (" mathieu_modcem1" , sf_error, NULL );
160
+ }
137
161
}
138
162
}
139
163
@@ -145,10 +169,18 @@ void msm1(T m, T q, T x, T &f1r, T &d1r) {
145
169
if ((m < 1 ) || (m != floor (m)) || (q < 0 )) {
146
170
f1r = std::numeric_limits<T>::quiet_NaN ();
147
171
d1r = std::numeric_limits<T>::quiet_NaN ();
148
- set_error (" msm1 " , SF_ERROR_DOMAIN, NULL );
172
+ set_error (" mathieu_modsem1 " , SF_ERROR_DOMAIN, NULL );
149
173
} else {
174
+ using specfun::Status;
150
175
int_m = (int ) m;
151
- specfun::mtu12 (kf, kc, int_m, q, x, &f1r, &d1r, &f2r, &d2r);
176
+ Status status = specfun::mtu12 (kf, kc, int_m, q, x, &f1r, &d1r, &f2r, &d2r);
177
+ if (status != Status::OK) {
178
+ f1r = std::numeric_limits<T>::quiet_NaN ();
179
+ d1r = std::numeric_limits<T>::quiet_NaN ();
180
+ sf_error_t sf_error = status == Status::NoMemory ? SF_ERROR_MEMORY
181
+ : SF_ERROR_OTHER;
182
+ set_error (" mathieu_modsem1" , sf_error, NULL );
183
+ }
152
184
}
153
185
}
154
186
@@ -160,10 +192,18 @@ void mcm2(T m, T q, T x, T &f2r, T &d2r) {
160
192
if ((m < 0 ) || (m != floor (m)) || (q < 0 )) {
161
193
f2r = std::numeric_limits<T>::quiet_NaN ();
162
194
d2r = std::numeric_limits<T>::quiet_NaN ();
163
- set_error (" mcm2 " , SF_ERROR_DOMAIN, NULL );
195
+ set_error (" mathieu_modcem2 " , SF_ERROR_DOMAIN, NULL );
164
196
} else {
197
+ using specfun::Status;
165
198
int_m = (int ) m;
166
- specfun::mtu12 (kf, kc, int_m, q, x, &f1r, &d1r, &f2r, &d2r);
199
+ Status status = specfun::mtu12 (kf, kc, int_m, q, x, &f1r, &d1r, &f2r, &d2r);
200
+ if (status != Status::OK) {
201
+ f2r = std::numeric_limits<T>::quiet_NaN ();
202
+ d2r = std::numeric_limits<T>::quiet_NaN ();
203
+ sf_error_t sf_error = status == Status::NoMemory ? SF_ERROR_MEMORY
204
+ : SF_ERROR_OTHER;
205
+ set_error (" mathieu_modcem2" , sf_error, NULL );
206
+ }
167
207
}
168
208
}
169
209
@@ -175,10 +215,18 @@ void msm2(T m, T q, T x, T &f2r, T &d2r) {
175
215
if ((m < 1 ) || (m != floor (m)) || (q < 0 )) {
176
216
f2r = std::numeric_limits<T>::quiet_NaN ();
177
217
d2r = std::numeric_limits<T>::quiet_NaN ();
178
- set_error (" msm2 " , SF_ERROR_DOMAIN, NULL );
218
+ set_error (" mathieu_modsem2 " , SF_ERROR_DOMAIN, NULL );
179
219
} else {
220
+ using specfun::Status;
180
221
int_m = (int ) m;
181
- specfun::mtu12 (kf, kc, int_m, q, x, &f1r, &d1r, &f2r, &d2r);
222
+ Status status = specfun::mtu12 (kf, kc, int_m, q, x, &f1r, &d1r, &f2r, &d2r);
223
+ if (status != Status::OK) {
224
+ f2r = std::numeric_limits<T>::quiet_NaN ();
225
+ d2r = std::numeric_limits<T>::quiet_NaN ();
226
+ sf_error_t sf_error = status == Status::NoMemory ? SF_ERROR_MEMORY
227
+ : SF_ERROR_OTHER;
228
+ set_error (" mathieu_modsem2" , sf_error, NULL );
229
+ }
182
230
}
183
231
}
184
232
0 commit comments