21 #ifndef fiber_explicit_instantiation_hpp
22 #define fiber_explicit_instantiation_hpp
24 #include "../common/common.hpp"
26 #include "bempp/common/config_data_types.hpp"
30 #if defined(ENABLE_SINGLE_PRECISION)
31 # define FIBER_INVOKE_MACRO_DEPENDENT_ON_BASIS_SP_REAL(MACRO) \
34 # define FIBER_INVOKE_MACRO_DEPENDENT_ON_BASIS_SP_REAL(MACRO)
37 #if defined(ENABLE_SINGLE_PRECISION) && defined(ENABLE_COMPLEX_BASIS_FUNCTIONS)
38 # define FIBER_INVOKE_MACRO_DEPENDENT_ON_BASIS_SP_COMPLEX(MACRO) \
39 MACRO( std::complex<float> )
41 # define FIBER_INVOKE_MACRO_DEPENDENT_ON_BASIS_SP_COMPLEX(MACRO)
44 #if defined(ENABLE_DOUBLE_PRECISION)
45 # define FIBER_INVOKE_MACRO_DEPENDENT_ON_BASIS_DP_REAL(MACRO) \
48 # define FIBER_INVOKE_MACRO_DEPENDENT_ON_BASIS_DP_REAL(MACRO)
51 #if defined(ENABLE_DOUBLE_PRECISION) && defined(ENABLE_COMPLEX_BASIS_FUNCTIONS)
52 # define FIBER_INVOKE_MACRO_DEPENDENT_ON_BASIS_DP_COMPLEX(MACRO) \
53 MACRO( std::complex<double> )
55 # define FIBER_INVOKE_MACRO_DEPENDENT_ON_BASIS_DP_COMPLEX(MACRO)
58 #define FIBER_ITERATE_OVER_BASIS_TYPES(MACRO) \
59 FIBER_INVOKE_MACRO_DEPENDENT_ON_BASIS_SP_REAL(MACRO); \
60 FIBER_INVOKE_MACRO_DEPENDENT_ON_BASIS_SP_COMPLEX(MACRO); \
61 FIBER_INVOKE_MACRO_DEPENDENT_ON_BASIS_DP_REAL(MACRO); \
62 FIBER_INVOKE_MACRO_DEPENDENT_ON_BASIS_DP_COMPLEX(MACRO)
65 #if defined(ENABLE_SINGLE_PRECISION)
66 # define FIBER_INVOKE_MACRO_DEPENDENT_ON_KERNEL_SP_REAL(MACRO) \
69 # define FIBER_INVOKE_MACRO_DEPENDENT_ON_KERNEL_SP_REAL(MACRO)
72 #if defined(ENABLE_SINGLE_PRECISION) && defined(ENABLE_COMPLEX_KERNELS)
73 # define FIBER_INVOKE_MACRO_DEPENDENT_ON_KERNEL_SP_COMPLEX(MACRO) \
74 MACRO( std::complex<float> )
76 # define FIBER_INVOKE_MACRO_DEPENDENT_ON_KERNEL_SP_COMPLEX(MACRO)
79 #if defined(ENABLE_DOUBLE_PRECISION)
80 # define FIBER_INVOKE_MACRO_DEPENDENT_ON_KERNEL_DP_REAL(MACRO) \
83 # define FIBER_INVOKE_MACRO_DEPENDENT_ON_KERNEL_DP_REAL(MACRO)
86 #if defined(ENABLE_DOUBLE_PRECISION) && defined(ENABLE_COMPLEX_KERNELS)
87 # define FIBER_INVOKE_MACRO_DEPENDENT_ON_KERNEL_DP_COMPLEX(MACRO) \
88 MACRO( std::complex<double> )
90 # define FIBER_INVOKE_MACRO_DEPENDENT_ON_KERNEL_DP_COMPLEX(MACRO)
93 #define FIBER_ITERATE_OVER_KERNEL_TYPES(MACRO) \
94 FIBER_INVOKE_MACRO_DEPENDENT_ON_KERNEL_SP_REAL(MACRO); \
95 FIBER_INVOKE_MACRO_DEPENDENT_ON_KERNEL_SP_COMPLEX(MACRO); \
96 FIBER_INVOKE_MACRO_DEPENDENT_ON_KERNEL_DP_REAL(MACRO); \
97 FIBER_INVOKE_MACRO_DEPENDENT_ON_KERNEL_DP_COMPLEX(MACRO)
101 #if defined(ENABLE_SINGLE_PRECISION)
102 # define FIBER_INVOKE_MACRO_DEPENDENT_ON_VALUE_SP_REAL(MACRO) \
105 # define FIBER_INVOKE_MACRO_DEPENDENT_ON_VALUE_SP_REAL(MACRO)
108 #if defined(ENABLE_SINGLE_PRECISION) && \
109 (defined(ENABLE_COMPLEX_KERNELS) || defined(ENABLE_COMPLEX_BASIS_FUNCTIONS))
110 # define FIBER_INVOKE_MACRO_DEPENDENT_ON_VALUE_SP_COMPLEX(MACRO) \
111 MACRO( std::complex<float> )
113 # define FIBER_INVOKE_MACRO_DEPENDENT_ON_VALUE_SP_COMPLEX(MACRO)
116 #if defined(ENABLE_DOUBLE_PRECISION)
117 # define FIBER_INVOKE_MACRO_DEPENDENT_ON_VALUE_DP_REAL(MACRO) \
120 # define FIBER_INVOKE_MACRO_DEPENDENT_ON_VALUE_DP_REAL(MACRO)
123 #if defined(ENABLE_DOUBLE_PRECISION) && \
124 (defined(ENABLE_COMPLEX_KERNELS) || defined(ENABLE_COMPLEX_BASIS_FUNCTIONS))
125 # define FIBER_INVOKE_MACRO_DEPENDENT_ON_VALUE_DP_COMPLEX(MACRO) \
126 MACRO( std::complex<double> )
128 # define FIBER_INVOKE_MACRO_DEPENDENT_ON_VALUE_DP_COMPLEX(CLASSNAME)
131 #define FIBER_ITERATE_OVER_VALUE_TYPES(MACRO) \
132 FIBER_INVOKE_MACRO_DEPENDENT_ON_VALUE_SP_REAL(MACRO); \
133 FIBER_INVOKE_MACRO_DEPENDENT_ON_VALUE_SP_COMPLEX(MACRO); \
134 FIBER_INVOKE_MACRO_DEPENDENT_ON_VALUE_DP_REAL(MACRO); \
135 FIBER_INVOKE_MACRO_DEPENDENT_ON_VALUE_DP_COMPLEX(MACRO)
139 #if defined(ENABLE_SINGLE_PRECISION)
140 # define FIBER_INSTANTIATE_CLASS_TEMPLATED_ON_BASIS_SP_REAL(CLASSNAME) \
141 template class CLASSNAME<float>
143 # define FIBER_INSTANTIATE_CLASS_TEMPLATED_ON_BASIS_SP_REAL(CLASSNAME)
146 #if defined(ENABLE_SINGLE_PRECISION) && defined(ENABLE_COMPLEX_BASIS_FUNCTIONS)
147 # define FIBER_INSTANTIATE_CLASS_TEMPLATED_ON_BASIS_SP_COMPLEX(CLASSNAME) \
148 template class CLASSNAME<std::complex<float> >
150 # define FIBER_INSTANTIATE_CLASS_TEMPLATED_ON_BASIS_SP_COMPLEX(CLASSNAME)
153 #if defined(ENABLE_DOUBLE_PRECISION)
154 # define FIBER_INSTANTIATE_CLASS_TEMPLATED_ON_BASIS_DP_REAL(CLASSNAME) \
155 template class CLASSNAME<double>
157 # define FIBER_INSTANTIATE_CLASS_TEMPLATED_ON_BASIS_DP_REAL(CLASSNAME)
160 #if defined(ENABLE_DOUBLE_PRECISION) && defined(ENABLE_COMPLEX_BASIS_FUNCTIONS)
161 # define FIBER_INSTANTIATE_CLASS_TEMPLATED_ON_BASIS_DP_COMPLEX(CLASSNAME) \
162 template class CLASSNAME<std::complex<double> >
164 # define FIBER_INSTANTIATE_CLASS_TEMPLATED_ON_BASIS_DP_COMPLEX(CLASSNAME)
167 #define FIBER_INSTANTIATE_CLASS_TEMPLATED_ON_BASIS(CLASSNAME) \
168 FIBER_INSTANTIATE_CLASS_TEMPLATED_ON_BASIS_SP_REAL(CLASSNAME); \
169 FIBER_INSTANTIATE_CLASS_TEMPLATED_ON_BASIS_SP_COMPLEX(CLASSNAME); \
170 FIBER_INSTANTIATE_CLASS_TEMPLATED_ON_BASIS_DP_REAL(CLASSNAME); \
171 FIBER_INSTANTIATE_CLASS_TEMPLATED_ON_BASIS_DP_COMPLEX(CLASSNAME)
175 #if defined(ENABLE_SINGLE_PRECISION)
176 # define FIBER_INSTANTIATE_CLASS_TEMPLATED_ON_KERNEL_SP_REAL(CLASSNAME) \
177 template class CLASSNAME<float>
179 # define FIBER_INSTANTIATE_CLASS_TEMPLATED_ON_KERNEL_SP_REAL(CLASSNAME)
182 #if defined(ENABLE_SINGLE_PRECISION) && defined(ENABLE_COMPLEX_KERNELS)
183 # define FIBER_INSTANTIATE_CLASS_TEMPLATED_ON_KERNEL_SP_COMPLEX(CLASSNAME) \
184 template class CLASSNAME<std::complex<float> >
186 # define FIBER_INSTANTIATE_CLASS_TEMPLATED_ON_KERNEL_SP_COMPLEX(CLASSNAME)
189 #if defined(ENABLE_DOUBLE_PRECISION)
190 # define FIBER_INSTANTIATE_CLASS_TEMPLATED_ON_KERNEL_DP_REAL(CLASSNAME) \
191 template class CLASSNAME<double>
193 # define FIBER_INSTANTIATE_CLASS_TEMPLATED_ON_KERNEL_DP_REAL(CLASSNAME)
196 #if defined(ENABLE_DOUBLE_PRECISION) && defined(ENABLE_COMPLEX_KERNELS)
197 # define FIBER_INSTANTIATE_CLASS_TEMPLATED_ON_KERNEL_DP_COMPLEX(CLASSNAME) \
198 template class CLASSNAME<std::complex<double> >
200 # define FIBER_INSTANTIATE_CLASS_TEMPLATED_ON_KERNEL_DP_COMPLEX(CLASSNAME)
203 #define FIBER_INSTANTIATE_CLASS_TEMPLATED_ON_KERNEL(CLASSNAME) \
204 FIBER_INSTANTIATE_CLASS_TEMPLATED_ON_KERNEL_SP_REAL(CLASSNAME); \
205 FIBER_INSTANTIATE_CLASS_TEMPLATED_ON_KERNEL_SP_COMPLEX(CLASSNAME); \
206 FIBER_INSTANTIATE_CLASS_TEMPLATED_ON_KERNEL_DP_REAL(CLASSNAME); \
207 FIBER_INSTANTIATE_CLASS_TEMPLATED_ON_KERNEL_DP_COMPLEX(CLASSNAME)
211 #if defined(ENABLE_SINGLE_PRECISION)
212 # define FIBER_INSTANTIATE_CLASS_TEMPLATED_ON_RESULT_SP_REAL(CLASSNAME) \
213 template class CLASSNAME<float>
215 # define FIBER_INSTANTIATE_CLASS_TEMPLATED_ON_RESULT_SP_REAL(CLASSNAME)
218 #if defined(ENABLE_SINGLE_PRECISION) && \
219 (defined(ENABLE_COMPLEX_KERNELS) || defined(ENABLE_COMPLEX_BASIS_FUNCTIONS))
220 # define FIBER_INSTANTIATE_CLASS_TEMPLATED_ON_RESULT_SP_COMPLEX(CLASSNAME) \
221 template class CLASSNAME<std::complex<float> >
223 # define FIBER_INSTANTIATE_CLASS_TEMPLATED_ON_RESULT_SP_COMPLEX(CLASSNAME)
226 #if defined(ENABLE_DOUBLE_PRECISION)
227 # define FIBER_INSTANTIATE_CLASS_TEMPLATED_ON_RESULT_DP_REAL(CLASSNAME) \
228 template class CLASSNAME<double>
230 # define FIBER_INSTANTIATE_CLASS_TEMPLATED_ON_RESULT_DP_REAL(CLASSNAME)
233 #if defined(ENABLE_DOUBLE_PRECISION) && \
234 (defined(ENABLE_COMPLEX_KERNELS) || defined(ENABLE_COMPLEX_BASIS_FUNCTIONS))
235 # define FIBER_INSTANTIATE_CLASS_TEMPLATED_ON_RESULT_DP_COMPLEX(CLASSNAME) \
236 template class CLASSNAME<std::complex<double> >
238 # define FIBER_INSTANTIATE_CLASS_TEMPLATED_ON_RESULT_DP_COMPLEX(CLASSNAME)
241 #define FIBER_INSTANTIATE_CLASS_TEMPLATED_ON_RESULT(CLASSNAME) \
242 FIBER_INSTANTIATE_CLASS_TEMPLATED_ON_RESULT_SP_REAL(CLASSNAME); \
243 FIBER_INSTANTIATE_CLASS_TEMPLATED_ON_RESULT_SP_COMPLEX(CLASSNAME); \
244 FIBER_INSTANTIATE_CLASS_TEMPLATED_ON_RESULT_DP_REAL(CLASSNAME); \
245 FIBER_INSTANTIATE_CLASS_TEMPLATED_ON_RESULT_DP_COMPLEX(CLASSNAME)
247 #define FIBER_INSTANTIATE_CLASS_TEMPLATED_ON_RESULT_REAL_ONLY(CLASSNAME) \
248 FIBER_INSTANTIATE_CLASS_TEMPLATED_ON_RESULT_SP_REAL(CLASSNAME); \
249 FIBER_INSTANTIATE_CLASS_TEMPLATED_ON_RESULT_DP_REAL(CLASSNAME)
252 #if defined(ENABLE_SINGLE_PRECISION)
253 # define FIBER_INVOKE_MACRO_DEPENDENT_ON_BASIS_AND_RESULT_SP_REAL_REAL(MACRO) \
256 # define FIBER_INVOKE_MACRO_DEPENDENT_ON_BASIS_AND_RESULT_SP_REAL_REAL(MACRO)
259 #if defined(ENABLE_SINGLE_PRECISION) && (defined(ENABLE_COMPLEX_KERNELS) || defined(ENABLE_COMPLEX_BASIS_FUNCTIONS))
260 # define FIBER_INVOKE_MACRO_DEPENDENT_ON_BASIS_AND_RESULT_SP_REAL_COMPLEX(MACRO) \
261 MACRO(float, std::complex<float>);
263 # define FIBER_INVOKE_MACRO_DEPENDENT_ON_BASIS_AND_RESULT_SP_REAL_COMPLEX(MACRO)
266 #if defined(ENABLE_SINGLE_PRECISION) && defined(ENABLE_COMPLEX_BASIS_FUNCTIONS)
267 # define FIBER_INVOKE_MACRO_DEPENDENT_ON_BASIS_AND_RESULT_SP_COMPLEX_COMPLEX(MACRO) \
268 MACRO(std::complex<float>, std::complex<float> )
270 # define FIBER_INVOKE_MACRO_DEPENDENT_ON_BASIS_AND_RESULT_SP_COMPLEX_COMPLEX(MACRO)
273 #if defined(ENABLE_DOUBLE_PRECISION)
274 # define FIBER_INVOKE_MACRO_DEPENDENT_ON_BASIS_AND_RESULT_DP_REAL_REAL(MACRO) \
275 MACRO(double, double)
277 # define FIBER_INVOKE_MACRO_DEPENDENT_ON_BASIS_AND_RESULT_DP_REAL_REAL(MACRO)
280 #if defined(ENABLE_DOUBLE_PRECISION) && (defined(ENABLE_COMPLEX_KERNELS) || defined(ENABLE_COMPLEX_BASIS_FUNCTIONS))
281 # define FIBER_INVOKE_MACRO_DEPENDENT_ON_BASIS_AND_RESULT_DP_REAL_COMPLEX(MACRO) \
282 MACRO(double, std::complex<double> );
284 # define FIBER_INVOKE_MACRO_DEPENDENT_ON_BASIS_AND_RESULT_DP_REAL_COMPLEX(MACRO)
287 #if defined(ENABLE_DOUBLE_PRECISION) && defined(ENABLE_COMPLEX_BASIS_FUNCTIONS)
288 # define FIBER_INVOKE_MACRO_DEPENDENT_ON_BASIS_AND_RESULT_DP_COMPLEX_COMPLEX(MACRO) \
289 MACRO(std::complex<double>, std::complex<double> )
291 # define FIBER_INVOKE_MACRO_DEPENDENT_ON_BASIS_AND_RESULT_DP_COMPLEX_COMPLEX(MACRO)
294 #define FIBER_ITERATE_OVER_BASIS_AND_RESULT_TYPES(MACRO) \
295 FIBER_INVOKE_MACRO_DEPENDENT_ON_BASIS_AND_RESULT_SP_REAL_REAL(MACRO); \
296 FIBER_INVOKE_MACRO_DEPENDENT_ON_BASIS_AND_RESULT_SP_REAL_COMPLEX(MACRO); \
297 FIBER_INVOKE_MACRO_DEPENDENT_ON_BASIS_AND_RESULT_SP_COMPLEX_COMPLEX(MACRO); \
298 FIBER_INVOKE_MACRO_DEPENDENT_ON_BASIS_AND_RESULT_DP_REAL_REAL(MACRO); \
299 FIBER_INVOKE_MACRO_DEPENDENT_ON_BASIS_AND_RESULT_DP_REAL_COMPLEX(MACRO); \
300 FIBER_INVOKE_MACRO_DEPENDENT_ON_BASIS_AND_RESULT_DP_COMPLEX_COMPLEX(MACRO);
304 #if defined(ENABLE_SINGLE_PRECISION)
305 # define FIBER_INSTANTIATE_CLASS_TEMPLATED_ON_BASIS_AND_RESULT_SP_REAL_REAL(CLASSNAME) \
306 template class CLASSNAME<float, float>
308 # define FIBER_INSTANTIATE_CLASS_TEMPLATED_ON_BASIS_AND_RESULT_SP_REAL_REAL(CLASSNAME)
311 #if defined(ENABLE_SINGLE_PRECISION) && (defined(ENABLE_COMPLEX_KERNELS) || defined(ENABLE_COMPLEX_BASIS_FUNCTIONS))
312 # define FIBER_INSTANTIATE_CLASS_TEMPLATED_ON_BASIS_AND_RESULT_SP_REAL_COMPLEX(CLASSNAME) \
313 template class CLASSNAME<float, std::complex<float> >
315 # define FIBER_INSTANTIATE_CLASS_TEMPLATED_ON_BASIS_AND_RESULT_SP_REAL_COMPLEX(CLASSNAME)
318 #if defined(ENABLE_SINGLE_PRECISION) && defined(ENABLE_COMPLEX_BASIS_FUNCTIONS)
319 # define FIBER_INSTANTIATE_CLASS_TEMPLATED_ON_BASIS_AND_RESULT_SP_COMPLEX_COMPLEX(CLASSNAME) \
320 template class CLASSNAME<std::complex<float>, std::complex<float> >
322 # define FIBER_INSTANTIATE_CLASS_TEMPLATED_ON_BASIS_AND_RESULT_SP_COMPLEX_COMPLEX(CLASSNAME)
325 #if defined(ENABLE_DOUBLE_PRECISION)
326 # define FIBER_INSTANTIATE_CLASS_TEMPLATED_ON_BASIS_AND_RESULT_DP_REAL_REAL(CLASSNAME) \
327 template class CLASSNAME<double, double>
329 # define FIBER_INSTANTIATE_CLASS_TEMPLATED_ON_BASIS_AND_RESULT_DP_REAL_REAL(CLASSNAME)
332 #if defined(ENABLE_DOUBLE_PRECISION) && (defined(ENABLE_COMPLEX_KERNELS) || defined(ENABLE_COMPLEX_BASIS_FUNCTIONS))
333 # define FIBER_INSTANTIATE_CLASS_TEMPLATED_ON_BASIS_AND_RESULT_DP_REAL_COMPLEX(CLASSNAME) \
334 template class CLASSNAME<double, std::complex<double> >
336 # define FIBER_INSTANTIATE_CLASS_TEMPLATED_ON_BASIS_AND_RESULT_DP_REAL_COMPLEX(CLASSNAME)
339 #if defined(ENABLE_DOUBLE_PRECISION) && defined(ENABLE_COMPLEX_BASIS_FUNCTIONS)
340 # define FIBER_INSTANTIATE_CLASS_TEMPLATED_ON_BASIS_AND_RESULT_DP_COMPLEX_COMPLEX(CLASSNAME) \
341 template class CLASSNAME<std::complex<double>, std::complex<double> >
343 # define FIBER_INSTANTIATE_CLASS_TEMPLATED_ON_BASIS_AND_RESULT_DP_COMPLEX_COMPLEX(CLASSNAME)
346 #define FIBER_INSTANTIATE_CLASS_TEMPLATED_ON_BASIS_AND_RESULT(CLASSNAME) \
347 FIBER_INSTANTIATE_CLASS_TEMPLATED_ON_BASIS_AND_RESULT_SP_REAL_REAL(CLASSNAME); \
348 FIBER_INSTANTIATE_CLASS_TEMPLATED_ON_BASIS_AND_RESULT_SP_REAL_COMPLEX(CLASSNAME); \
349 FIBER_INSTANTIATE_CLASS_TEMPLATED_ON_BASIS_AND_RESULT_SP_COMPLEX_COMPLEX(CLASSNAME); \
350 FIBER_INSTANTIATE_CLASS_TEMPLATED_ON_BASIS_AND_RESULT_DP_REAL_REAL(CLASSNAME); \
351 FIBER_INSTANTIATE_CLASS_TEMPLATED_ON_BASIS_AND_RESULT_DP_REAL_COMPLEX(CLASSNAME); \
352 FIBER_INSTANTIATE_CLASS_TEMPLATED_ON_BASIS_AND_RESULT_DP_COMPLEX_COMPLEX(CLASSNAME)
354 #define FIBER_INSTANTIATE_CLASS_TEMPLATED_ON_BASIS_AND_RESULT_REAL_ONLY(CLASSNAME) \
355 FIBER_INSTANTIATE_CLASS_TEMPLATED_ON_BASIS_AND_RESULT_SP_REAL_REAL(CLASSNAME); \
356 FIBER_INSTANTIATE_CLASS_TEMPLATED_ON_BASIS_AND_RESULT_DP_REAL_REAL(CLASSNAME)
359 #if defined(ENABLE_SINGLE_PRECISION)
360 # define FIBER_INVOKE_MACRO_DEPENDENT_ON_BASIS_KERNEL_AND_RESULT_SP_REAL_REAL_REAL(MACRO) \
361 MACRO(float, float, float)
363 # define FIBER_INVOKE_MACRO_DEPENDENT_ON_BASIS_KERNEL_AND_RESULT_SP_REAL_REAL_REAL(MACRO)
366 #if defined(ENABLE_SINGLE_PRECISION) && (defined(ENABLE_COMPLEX_KERNELS) || defined(ENABLE_COMPLEX_BASIS_FUNCTIONS))
367 # define FIBER_INVOKE_MACRO_DEPENDENT_ON_BASIS_KERNEL_AND_RESULT_SP_REAL_REAL_COMPLEX(MACRO) \
368 MACRO(float, float, std::complex<float> );
370 # define FIBER_INVOKE_MACRO_DEPENDENT_ON_BASIS_KERNEL_AND_RESULT_SP_REAL_REAL_COMPLEX(MACRO)
373 #if defined(ENABLE_SINGLE_PRECISION) && defined(ENABLE_COMPLEX_KERNELS)
374 # define FIBER_INVOKE_MACRO_DEPENDENT_ON_BASIS_KERNEL_AND_RESULT_SP_REAL_COMPLEX_COMPLEX(MACRO) \
375 MACRO(float, std::complex<float>, std::complex<float> )
377 # define FIBER_INVOKE_MACRO_DEPENDENT_ON_BASIS_KERNEL_AND_RESULT_SP_REAL_COMPLEX_COMPLEX(MACRO)
380 #if defined(ENABLE_SINGLE_PRECISION) && defined(ENABLE_COMPLEX_BASIS_FUNCTIONS)
381 # define FIBER_INVOKE_MACRO_DEPENDENT_ON_BASIS_KERNEL_AND_RESULT_SP_COMPLEX_REAL_COMPLEX(MACRO) \
382 MACRO(std::complex<float>, float, std::complex<float> )
384 # define FIBER_INVOKE_MACRO_DEPENDENT_ON_BASIS_KERNEL_AND_RESULT_SP_COMPLEX_REAL_COMPLEX(MACRO)
387 #if defined(ENABLE_SINGLE_PRECISION) && defined(ENABLE_COMPLEX_KERNELS) && defined(ENABLE_COMPLEX_BASIS_FUNCTIONS)
388 # define FIBER_INVOKE_MACRO_DEPENDENT_ON_BASIS_KERNEL_AND_RESULT_SP_COMPLEX_COMPLEX_COMPLEX(MACRO) \
389 MACRO(std::complex<float>, std::complex<float>, std::complex<float> )
391 # define FIBER_INVOKE_MACRO_DEPENDENT_ON_BASIS_KERNEL_AND_RESULT_SP_COMPLEX_COMPLEX_COMPLEX(MACRO)
394 #if defined(ENABLE_DOUBLE_PRECISION)
395 # define FIBER_INVOKE_MACRO_DEPENDENT_ON_BASIS_KERNEL_AND_RESULT_DP_REAL_REAL_REAL(MACRO) \
396 MACRO(double, double, double)
398 # define FIBER_INVOKE_MACRO_DEPENDENT_ON_BASIS_KERNEL_AND_RESULT_DP_REAL_REAL_REAL(MACRO)
401 #if defined(ENABLE_DOUBLE_PRECISION) && (defined(ENABLE_COMPLEX_KERNELS) || defined(ENABLE_COMPLEX_BASIS_FUNCTIONS))
402 # define FIBER_INVOKE_MACRO_DEPENDENT_ON_BASIS_KERNEL_AND_RESULT_DP_REAL_REAL_COMPLEX(MACRO) \
403 MACRO(double, double, std::complex<double> );
405 # define FIBER_INVOKE_MACRO_DEPENDENT_ON_BASIS_KERNEL_AND_RESULT_DP_REAL_REAL_COMPLEX(MACRO)
408 #if defined(ENABLE_DOUBLE_PRECISION) && defined(ENABLE_COMPLEX_KERNELS)
409 # define FIBER_INVOKE_MACRO_DEPENDENT_ON_BASIS_KERNEL_AND_RESULT_DP_REAL_COMPLEX_COMPLEX(MACRO) \
410 MACRO(double, std::complex<double>, std::complex<double> )
412 # define FIBER_INVOKE_MACRO_DEPENDENT_ON_BASIS_KERNEL_AND_RESULT_DP_REAL_COMPLEX_COMPLEX(MACRO)
415 #if defined(ENABLE_DOUBLE_PRECISION) && defined(ENABLE_COMPLEX_BASIS_FUNCTIONS)
416 # define FIBER_INVOKE_MACRO_DEPENDENT_ON_BASIS_KERNEL_AND_RESULT_DP_COMPLEX_REAL_COMPLEX(MACRO) \
417 MACRO(std::complex<double>, double, std::complex<double> )
419 # define FIBER_INVOKE_MACRO_DEPENDENT_ON_BASIS_KERNEL_AND_RESULT_DP_COMPLEX_REAL_COMPLEX(MACRO)
422 #if defined(ENABLE_DOUBLE_PRECISION) && defined(ENABLE_COMPLEX_KERNELS) && defined(ENABLE_COMPLEX_BASIS_FUNCTIONS)
423 # define FIBER_INVOKE_MACRO_DEPENDENT_ON_BASIS_KERNEL_AND_RESULT_DP_COMPLEX_COMPLEX_COMPLEX(MACRO) \
424 MACRO(std::complex<double>, std::complex<double>, std::complex<double> )
426 # define FIBER_INVOKE_MACRO_DEPENDENT_ON_BASIS_KERNEL_AND_RESULT_DP_COMPLEX_COMPLEX_COMPLEX(MACRO)
429 #define FIBER_ITERATE_OVER_BASIS_KERNEL_AND_RESULT_TYPES(MACRO) \
430 FIBER_INVOKE_MACRO_DEPENDENT_ON_BASIS_KERNEL_AND_RESULT_SP_REAL_REAL_REAL(MACRO); \
431 FIBER_INVOKE_MACRO_DEPENDENT_ON_BASIS_KERNEL_AND_RESULT_SP_REAL_REAL_COMPLEX(MACRO); \
432 FIBER_INVOKE_MACRO_DEPENDENT_ON_BASIS_KERNEL_AND_RESULT_SP_REAL_COMPLEX_COMPLEX(MACRO); \
433 FIBER_INVOKE_MACRO_DEPENDENT_ON_BASIS_KERNEL_AND_RESULT_SP_COMPLEX_REAL_COMPLEX(MACRO); \
434 FIBER_INVOKE_MACRO_DEPENDENT_ON_BASIS_KERNEL_AND_RESULT_SP_COMPLEX_COMPLEX_COMPLEX(MACRO); \
435 FIBER_INVOKE_MACRO_DEPENDENT_ON_BASIS_KERNEL_AND_RESULT_DP_REAL_REAL_REAL(MACRO); \
436 FIBER_INVOKE_MACRO_DEPENDENT_ON_BASIS_KERNEL_AND_RESULT_DP_REAL_REAL_COMPLEX(MACRO); \
437 FIBER_INVOKE_MACRO_DEPENDENT_ON_BASIS_KERNEL_AND_RESULT_DP_REAL_COMPLEX_COMPLEX(MACRO); \
438 FIBER_INVOKE_MACRO_DEPENDENT_ON_BASIS_KERNEL_AND_RESULT_DP_COMPLEX_REAL_COMPLEX(MACRO); \
439 FIBER_INVOKE_MACRO_DEPENDENT_ON_BASIS_KERNEL_AND_RESULT_DP_COMPLEX_COMPLEX_COMPLEX(MACRO)
443 #if defined(ENABLE_SINGLE_PRECISION)
444 # define FIBER_INSTANTIATE_CLASS_TEMPLATED_ON_BASIS_KERNEL_AND_RESULT_SP_REAL_REAL_REAL(CLASSNAME) \
445 template class CLASSNAME<float, float, float>
447 # define FIBER_INSTANTIATE_CLASS_TEMPLATED_ON_BASIS_KERNEL_AND_RESULT_SP_REAL_REAL_REAL(CLASSNAME)
450 #if defined(ENABLE_SINGLE_PRECISION) && (defined(ENABLE_COMPLEX_KERNELS) || defined(ENABLE_COMPLEX_BASIS_FUNCTIONS))
451 # define FIBER_INSTANTIATE_CLASS_TEMPLATED_ON_BASIS_KERNEL_AND_RESULT_SP_REAL_REAL_COMPLEX(CLASSNAME) \
452 template class CLASSNAME<float, float, std::complex<float> >;
454 # define FIBER_INSTANTIATE_CLASS_TEMPLATED_ON_BASIS_KERNEL_AND_RESULT_SP_REAL_REAL_COMPLEX(CLASSNAME)
457 #if defined(ENABLE_SINGLE_PRECISION) && defined(ENABLE_COMPLEX_KERNELS)
458 # define FIBER_INSTANTIATE_CLASS_TEMPLATED_ON_BASIS_KERNEL_AND_RESULT_SP_REAL_COMPLEX_COMPLEX(CLASSNAME) \
459 template class CLASSNAME<float, std::complex<float>, std::complex<float> >
461 # define FIBER_INSTANTIATE_CLASS_TEMPLATED_ON_BASIS_KERNEL_AND_RESULT_SP_REAL_COMPLEX_COMPLEX(CLASSNAME)
464 #if defined(ENABLE_SINGLE_PRECISION) && defined(ENABLE_COMPLEX_BASIS_FUNCTIONS)
465 # define FIBER_INSTANTIATE_CLASS_TEMPLATED_ON_BASIS_KERNEL_AND_RESULT_SP_COMPLEX_REAL_COMPLEX(CLASSNAME) \
466 template class CLASSNAME<std::complex<float>, float, std::complex<float> >
468 # define FIBER_INSTANTIATE_CLASS_TEMPLATED_ON_BASIS_KERNEL_AND_RESULT_SP_COMPLEX_REAL_COMPLEX(CLASSNAME)
471 #if defined(ENABLE_SINGLE_PRECISION) && defined(ENABLE_COMPLEX_KERNELS) && defined(ENABLE_COMPLEX_BASIS_FUNCTIONS)
472 # define FIBER_INSTANTIATE_CLASS_TEMPLATED_ON_BASIS_KERNEL_AND_RESULT_SP_COMPLEX_COMPLEX_COMPLEX(CLASSNAME) \
473 template class CLASSNAME<std::complex<float>, std::complex<float>, std::complex<float> >
475 # define FIBER_INSTANTIATE_CLASS_TEMPLATED_ON_BASIS_KERNEL_AND_RESULT_SP_COMPLEX_COMPLEX_COMPLEX(CLASSNAME)
478 #if defined(ENABLE_DOUBLE_PRECISION)
479 # define FIBER_INSTANTIATE_CLASS_TEMPLATED_ON_BASIS_KERNEL_AND_RESULT_DP_REAL_REAL_REAL(CLASSNAME) \
480 template class CLASSNAME<double, double, double>
482 # define FIBER_INSTANTIATE_CLASS_TEMPLATED_ON_BASIS_KERNEL_AND_RESULT_DP_REAL_REAL_REAL(CLASSNAME)
485 #if defined(ENABLE_DOUBLE_PRECISION) && (defined(ENABLE_COMPLEX_KERNELS) || defined(ENABLE_COMPLEX_BASIS_FUNCTIONS))
486 # define FIBER_INSTANTIATE_CLASS_TEMPLATED_ON_BASIS_KERNEL_AND_RESULT_DP_REAL_REAL_COMPLEX(CLASSNAME) \
487 template class CLASSNAME<double, double, std::complex<double> >;
489 # define FIBER_INSTANTIATE_CLASS_TEMPLATED_ON_BASIS_KERNEL_AND_RESULT_DP_REAL_REAL_COMPLEX(CLASSNAME)
492 #if defined(ENABLE_DOUBLE_PRECISION) && defined(ENABLE_COMPLEX_KERNELS)
493 # define FIBER_INSTANTIATE_CLASS_TEMPLATED_ON_BASIS_KERNEL_AND_RESULT_DP_REAL_COMPLEX_COMPLEX(CLASSNAME) \
494 template class CLASSNAME<double, std::complex<double>, std::complex<double> >
496 # define FIBER_INSTANTIATE_CLASS_TEMPLATED_ON_BASIS_KERNEL_AND_RESULT_DP_REAL_COMPLEX_COMPLEX(CLASSNAME)
499 #if defined(ENABLE_DOUBLE_PRECISION) && defined(ENABLE_COMPLEX_BASIS_FUNCTIONS)
500 # define FIBER_INSTANTIATE_CLASS_TEMPLATED_ON_BASIS_KERNEL_AND_RESULT_DP_COMPLEX_REAL_COMPLEX(CLASSNAME) \
501 template class CLASSNAME<std::complex<double>, double, std::complex<double> >
503 # define FIBER_INSTANTIATE_CLASS_TEMPLATED_ON_BASIS_KERNEL_AND_RESULT_DP_COMPLEX_REAL_COMPLEX(CLASSNAME)
506 #if defined(ENABLE_DOUBLE_PRECISION) && defined(ENABLE_COMPLEX_KERNELS) && defined(ENABLE_COMPLEX_BASIS_FUNCTIONS)
507 # define FIBER_INSTANTIATE_CLASS_TEMPLATED_ON_BASIS_KERNEL_AND_RESULT_DP_COMPLEX_COMPLEX_COMPLEX(CLASSNAME) \
508 template class CLASSNAME<std::complex<double>, std::complex<double>, std::complex<double> >
510 # define FIBER_INSTANTIATE_CLASS_TEMPLATED_ON_BASIS_KERNEL_AND_RESULT_DP_COMPLEX_COMPLEX_COMPLEX(CLASSNAME)
513 #define FIBER_INSTANTIATE_CLASS_TEMPLATED_ON_BASIS_KERNEL_AND_RESULT(CLASSNAME) \
514 FIBER_INSTANTIATE_CLASS_TEMPLATED_ON_BASIS_KERNEL_AND_RESULT_SP_REAL_REAL_REAL(CLASSNAME); \
515 FIBER_INSTANTIATE_CLASS_TEMPLATED_ON_BASIS_KERNEL_AND_RESULT_SP_REAL_REAL_COMPLEX(CLASSNAME); \
516 FIBER_INSTANTIATE_CLASS_TEMPLATED_ON_BASIS_KERNEL_AND_RESULT_SP_REAL_COMPLEX_COMPLEX(CLASSNAME); \
517 FIBER_INSTANTIATE_CLASS_TEMPLATED_ON_BASIS_KERNEL_AND_RESULT_SP_COMPLEX_REAL_COMPLEX(CLASSNAME); \
518 FIBER_INSTANTIATE_CLASS_TEMPLATED_ON_BASIS_KERNEL_AND_RESULT_SP_COMPLEX_COMPLEX_COMPLEX(CLASSNAME); \
519 FIBER_INSTANTIATE_CLASS_TEMPLATED_ON_BASIS_KERNEL_AND_RESULT_DP_REAL_REAL_REAL(CLASSNAME); \
520 FIBER_INSTANTIATE_CLASS_TEMPLATED_ON_BASIS_KERNEL_AND_RESULT_DP_REAL_REAL_COMPLEX(CLASSNAME); \
521 FIBER_INSTANTIATE_CLASS_TEMPLATED_ON_BASIS_KERNEL_AND_RESULT_DP_REAL_COMPLEX_COMPLEX(CLASSNAME); \
522 FIBER_INSTANTIATE_CLASS_TEMPLATED_ON_BASIS_KERNEL_AND_RESULT_DP_COMPLEX_REAL_COMPLEX(CLASSNAME); \
523 FIBER_INSTANTIATE_CLASS_TEMPLATED_ON_BASIS_KERNEL_AND_RESULT_DP_COMPLEX_COMPLEX_COMPLEX(CLASSNAME)
525 #endif // fiber_explicit_instantiation_hpp