Line data Source code
1 : !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
2 : !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
3 : !!!! !!!!
4 : !!!! ParaMonte: Parallel Monte Carlo and Machine Learning Library. !!!!
5 : !!!! !!!!
6 : !!!! Copyright (C) 2012-present, The Computational Data Science Lab !!!!
7 : !!!! !!!!
8 : !!!! This file is part of the ParaMonte library. !!!!
9 : !!!! !!!!
10 : !!!! LICENSE !!!!
11 : !!!! !!!!
12 : !!!! https://github.com/cdslaborg/paramonte/blob/main/LICENSE.md !!!!
13 : !!!! !!!!
14 : !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
15 : !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
16 :
17 : !> \brief
18 : !> This file contains procedure implementations of [pm_fftnr](@ref pm_fftnr).
19 : !>
20 : !> \finmain
21 : !>
22 : !> \author
23 : !> \FatemehBagheri, Wednesday 12:20 PM, September 22, 2021, Dallas, TX
24 :
25 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
26 :
27 : submodule (pm_fftnr) routines
28 :
29 : #if CHECK_ENABLED
30 : use pm_err, only: getFine
31 : use pm_val2str, only: getStr
32 : use pm_err, only: setAsserted
33 : #define CHECK_ASSERTION(LINE,ASSERTION,MSG) \
34 : call setAsserted(ASSERTION,getFine(__FILE__,LINE)//MODULE_NAME//MSG);
35 : #else
36 : #define CHECK_ASSERTION(LINE,ASSERTION,MSG) continue;
37 : #endif
38 :
39 : use pm_mathExp, only: isIntPow
40 : implicit none
41 :
42 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
43 :
44 : contains
45 :
46 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
47 :
48 : #define getFFTF_ENABLED 1
49 :
50 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
51 :
52 : #define CK_ENABLED 1
53 :
54 : #if CK5_ENABLED
55 : module procedure getFFTF_CK5
56 : use pm_kind, only: TKC => CK5
57 : #include "pm_fftnr@routines.inc.F90"
58 : end procedure
59 : #endif
60 :
61 : #if CK4_ENABLED
62 15 : module procedure getFFTF_CK4
63 : use pm_kind, only: TKC => CK4
64 : #include "pm_fftnr@routines.inc.F90"
65 15 : end procedure
66 : #endif
67 :
68 : #if CK3_ENABLED
69 0 : module procedure getFFTF_CK3
70 : use pm_kind, only: TKC => CK3
71 : #include "pm_fftnr@routines.inc.F90"
72 0 : end procedure
73 : #endif
74 :
75 : #if CK2_ENABLED
76 15 : module procedure getFFTF_CK2
77 : use pm_kind, only: TKC => CK2
78 : #include "pm_fftnr@routines.inc.F90"
79 15 : end procedure
80 : #endif
81 :
82 : #if CK1_ENABLED
83 15 : module procedure getFFTF_CK1
84 : use pm_kind, only: TKC => CK1
85 : #include "pm_fftnr@routines.inc.F90"
86 15 : end procedure
87 : #endif
88 :
89 : #undef CK_ENABLED
90 :
91 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
92 :
93 : #define RK_ENABLED 1
94 :
95 : #if RK5_ENABLED
96 : module procedure getFFTF_RK5
97 : use pm_kind, only: TKC => RK5
98 : #include "pm_fftnr@routines.inc.F90"
99 : end procedure
100 : #endif
101 :
102 : #if RK4_ENABLED
103 15 : module procedure getFFTF_RK4
104 : use pm_kind, only: TKC => RK4
105 : #include "pm_fftnr@routines.inc.F90"
106 15 : end procedure
107 : #endif
108 :
109 : #if RK3_ENABLED
110 0 : module procedure getFFTF_RK3
111 : use pm_kind, only: TKC => RK3
112 : #include "pm_fftnr@routines.inc.F90"
113 0 : end procedure
114 : #endif
115 :
116 : #if RK2_ENABLED
117 15 : module procedure getFFTF_RK2
118 : use pm_kind, only: TKC => RK2
119 : #include "pm_fftnr@routines.inc.F90"
120 15 : end procedure
121 : #endif
122 :
123 : #if RK1_ENABLED
124 15 : module procedure getFFTF_RK1
125 : use pm_kind, only: TKC => RK1
126 : #include "pm_fftnr@routines.inc.F90"
127 15 : end procedure
128 : #endif
129 :
130 : #undef RK_ENABLED
131 :
132 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
133 :
134 : #undef getFFTF_ENABLED
135 :
136 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
137 :
138 : #define getFFTR_ENABLED 1
139 :
140 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
141 :
142 : #define CK_ENABLED 1
143 :
144 : #if CK5_ENABLED
145 : module procedure getFFTR_CK5
146 : use pm_kind, only: TKC => CK5
147 : #include "pm_fftnr@routines.inc.F90"
148 : end procedure
149 : #endif
150 :
151 : #if CK4_ENABLED
152 5 : module procedure getFFTR_CK4
153 : use pm_kind, only: TKC => CK4
154 : #include "pm_fftnr@routines.inc.F90"
155 5 : end procedure
156 : #endif
157 :
158 : #if CK3_ENABLED
159 0 : module procedure getFFTR_CK3
160 : use pm_kind, only: TKC => CK3
161 : #include "pm_fftnr@routines.inc.F90"
162 0 : end procedure
163 : #endif
164 :
165 : #if CK2_ENABLED
166 5 : module procedure getFFTR_CK2
167 : use pm_kind, only: TKC => CK2
168 : #include "pm_fftnr@routines.inc.F90"
169 5 : end procedure
170 : #endif
171 :
172 : #if CK1_ENABLED
173 5 : module procedure getFFTR_CK1
174 : use pm_kind, only: TKC => CK1
175 : #include "pm_fftnr@routines.inc.F90"
176 5 : end procedure
177 : #endif
178 :
179 : #undef CK_ENABLED
180 :
181 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
182 :
183 : #define RK_ENABLED 1
184 :
185 : #if RK5_ENABLED
186 : module procedure getFFTR_RK5
187 : use pm_kind, only: TKC => RK5
188 : #include "pm_fftnr@routines.inc.F90"
189 : end procedure
190 : #endif
191 :
192 : #if RK4_ENABLED
193 5 : module procedure getFFTR_RK4
194 : use pm_kind, only: TKC => RK4
195 : #include "pm_fftnr@routines.inc.F90"
196 5 : end procedure
197 : #endif
198 :
199 : #if RK3_ENABLED
200 0 : module procedure getFFTR_RK3
201 : use pm_kind, only: TKC => RK3
202 : #include "pm_fftnr@routines.inc.F90"
203 0 : end procedure
204 : #endif
205 :
206 : #if RK2_ENABLED
207 5 : module procedure getFFTR_RK2
208 : use pm_kind, only: TKC => RK2
209 : #include "pm_fftnr@routines.inc.F90"
210 5 : end procedure
211 : #endif
212 :
213 : #if RK1_ENABLED
214 5 : module procedure getFFTR_RK1
215 : use pm_kind, only: TKC => RK1
216 : #include "pm_fftnr@routines.inc.F90"
217 5 : end procedure
218 : #endif
219 :
220 : #undef RK_ENABLED
221 :
222 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
223 :
224 : #undef getFFTR_ENABLED
225 :
226 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
227 :
228 : #define getFFTI_ENABLED 1
229 :
230 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
231 :
232 : #define CK_ENABLED 1
233 :
234 : #if CK5_ENABLED
235 : module procedure getFFTI_CK5
236 : use pm_kind, only: TKC => CK5
237 : #include "pm_fftnr@routines.inc.F90"
238 : end procedure
239 : #endif
240 :
241 : #if CK4_ENABLED
242 10 : module procedure getFFTI_CK4
243 : use pm_kind, only: TKC => CK4
244 : #include "pm_fftnr@routines.inc.F90"
245 10 : end procedure
246 : #endif
247 :
248 : #if CK3_ENABLED
249 0 : module procedure getFFTI_CK3
250 : use pm_kind, only: TKC => CK3
251 : #include "pm_fftnr@routines.inc.F90"
252 0 : end procedure
253 : #endif
254 :
255 : #if CK2_ENABLED
256 10 : module procedure getFFTI_CK2
257 : use pm_kind, only: TKC => CK2
258 : #include "pm_fftnr@routines.inc.F90"
259 10 : end procedure
260 : #endif
261 :
262 : #if CK1_ENABLED
263 10 : module procedure getFFTI_CK1
264 : use pm_kind, only: TKC => CK1
265 : #include "pm_fftnr@routines.inc.F90"
266 10 : end procedure
267 : #endif
268 :
269 : #undef CK_ENABLED
270 :
271 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
272 :
273 : #define RK_ENABLED 1
274 :
275 : #if RK5_ENABLED
276 : module procedure getFFTI_RK5
277 : use pm_kind, only: TKC => RK5
278 : #include "pm_fftnr@routines.inc.F90"
279 : end procedure
280 : #endif
281 :
282 : #if RK4_ENABLED
283 10 : module procedure getFFTI_RK4
284 : use pm_kind, only: TKC => RK4
285 : #include "pm_fftnr@routines.inc.F90"
286 10 : end procedure
287 : #endif
288 :
289 : #if RK3_ENABLED
290 0 : module procedure getFFTI_RK3
291 : use pm_kind, only: TKC => RK3
292 : #include "pm_fftnr@routines.inc.F90"
293 0 : end procedure
294 : #endif
295 :
296 : #if RK2_ENABLED
297 10 : module procedure getFFTI_RK2
298 : use pm_kind, only: TKC => RK2
299 : #include "pm_fftnr@routines.inc.F90"
300 10 : end procedure
301 : #endif
302 :
303 : #if RK1_ENABLED
304 10 : module procedure getFFTI_RK1
305 : use pm_kind, only: TKC => RK1
306 : #include "pm_fftnr@routines.inc.F90"
307 10 : end procedure
308 : #endif
309 :
310 : #undef RK_ENABLED
311 :
312 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
313 :
314 : #undef getFFTI_ENABLED
315 :
316 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
317 :
318 : #define setFFTF_ENABLED 1
319 :
320 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
321 :
322 : #define CK_ENABLED 1
323 :
324 : #if CK5_ENABLED
325 : module procedure setFFTF_CK5
326 : use pm_kind, only: TKC => CK5
327 : #include "pm_fftnr@routines.inc.F90"
328 : end procedure
329 : #endif
330 :
331 : #if CK4_ENABLED
332 18 : module procedure setFFTF_CK4
333 : use pm_kind, only: TKC => CK4
334 : #include "pm_fftnr@routines.inc.F90"
335 18 : end procedure
336 : #endif
337 :
338 : #if CK3_ENABLED
339 0 : module procedure setFFTF_CK3
340 : use pm_kind, only: TKC => CK3
341 : #include "pm_fftnr@routines.inc.F90"
342 0 : end procedure
343 : #endif
344 :
345 : #if CK2_ENABLED
346 18 : module procedure setFFTF_CK2
347 : use pm_kind, only: TKC => CK2
348 : #include "pm_fftnr@routines.inc.F90"
349 18 : end procedure
350 : #endif
351 :
352 : #if CK1_ENABLED
353 18 : module procedure setFFTF_CK1
354 : use pm_kind, only: TKC => CK1
355 : #include "pm_fftnr@routines.inc.F90"
356 18 : end procedure
357 : #endif
358 :
359 : #undef CK_ENABLED
360 :
361 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
362 :
363 : #define RK_ENABLED 1
364 :
365 : #if RK5_ENABLED
366 : module procedure setFFTF_RK5
367 : use pm_kind, only: TKC => RK5
368 : #include "pm_fftnr@routines.inc.F90"
369 : end procedure
370 : #endif
371 :
372 : #if RK4_ENABLED
373 18 : module procedure setFFTF_RK4
374 : use pm_kind, only: TKC => RK4
375 : #include "pm_fftnr@routines.inc.F90"
376 : end procedure
377 : #endif
378 :
379 : #if RK3_ENABLED
380 0 : module procedure setFFTF_RK3
381 : use pm_kind, only: TKC => RK3
382 : #include "pm_fftnr@routines.inc.F90"
383 : end procedure
384 : #endif
385 :
386 : #if RK2_ENABLED
387 18 : module procedure setFFTF_RK2
388 : use pm_kind, only: TKC => RK2
389 : #include "pm_fftnr@routines.inc.F90"
390 : end procedure
391 : #endif
392 :
393 : #if RK1_ENABLED
394 18 : module procedure setFFTF_RK1
395 : use pm_kind, only: TKC => RK1
396 : #include "pm_fftnr@routines.inc.F90"
397 : end procedure
398 : #endif
399 :
400 : #undef RK_ENABLED
401 :
402 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
403 :
404 : #undef setFFTF_ENABLED
405 :
406 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
407 :
408 : #define setFFTR_ENABLED 1
409 :
410 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
411 :
412 : #define CK_ENABLED 1
413 :
414 : #if CK5_ENABLED
415 : module procedure setFFTR_CK5
416 : use pm_kind, only: TKC => CK5
417 : #include "pm_fftnr@routines.inc.F90"
418 : end procedure
419 : #endif
420 :
421 : #if CK4_ENABLED
422 18 : module procedure setFFTR_CK4
423 : use pm_kind, only: TKC => CK4
424 : #include "pm_fftnr@routines.inc.F90"
425 18 : end procedure
426 : #endif
427 :
428 : #if CK3_ENABLED
429 0 : module procedure setFFTR_CK3
430 : use pm_kind, only: TKC => CK3
431 : #include "pm_fftnr@routines.inc.F90"
432 0 : end procedure
433 : #endif
434 :
435 : #if CK2_ENABLED
436 18 : module procedure setFFTR_CK2
437 : use pm_kind, only: TKC => CK2
438 : #include "pm_fftnr@routines.inc.F90"
439 18 : end procedure
440 : #endif
441 :
442 : #if CK1_ENABLED
443 18 : module procedure setFFTR_CK1
444 : use pm_kind, only: TKC => CK1
445 : #include "pm_fftnr@routines.inc.F90"
446 18 : end procedure
447 : #endif
448 :
449 : #undef CK_ENABLED
450 :
451 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
452 :
453 : #define RK_ENABLED 1
454 :
455 : #if RK5_ENABLED
456 : module procedure setFFTR_RK5
457 : use pm_kind, only: TKC => RK5
458 : #include "pm_fftnr@routines.inc.F90"
459 : end procedure
460 : #endif
461 :
462 : #if RK4_ENABLED
463 18 : module procedure setFFTR_RK4
464 : use pm_kind, only: TKC => RK4
465 : #include "pm_fftnr@routines.inc.F90"
466 : end procedure
467 : #endif
468 :
469 : #if RK3_ENABLED
470 0 : module procedure setFFTR_RK3
471 : use pm_kind, only: TKC => RK3
472 : #include "pm_fftnr@routines.inc.F90"
473 : end procedure
474 : #endif
475 :
476 : #if RK2_ENABLED
477 18 : module procedure setFFTR_RK2
478 : use pm_kind, only: TKC => RK2
479 : #include "pm_fftnr@routines.inc.F90"
480 : end procedure
481 : #endif
482 :
483 : #if RK1_ENABLED
484 18 : module procedure setFFTR_RK1
485 : use pm_kind, only: TKC => RK1
486 : #include "pm_fftnr@routines.inc.F90"
487 : end procedure
488 : #endif
489 :
490 : #undef RK_ENABLED
491 :
492 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
493 :
494 : #undef setFFTR_ENABLED
495 :
496 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
497 :
498 : #define setFFTI_ENABLED 1
499 :
500 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
501 :
502 : #define CK_ENABLED 1
503 :
504 : #if CK5_ENABLED
505 : module procedure setFFTI_CK5
506 : use pm_kind, only: TKC => CK5
507 : #include "pm_fftnr@routines.inc.F90"
508 : end procedure
509 : #endif
510 :
511 : #if CK4_ENABLED
512 11 : module procedure setFFTI_CK4
513 : use pm_kind, only: TKC => CK4
514 : #include "pm_fftnr@routines.inc.F90"
515 11 : end procedure
516 : #endif
517 :
518 : #if CK3_ENABLED
519 0 : module procedure setFFTI_CK3
520 : use pm_kind, only: TKC => CK3
521 : #include "pm_fftnr@routines.inc.F90"
522 0 : end procedure
523 : #endif
524 :
525 : #if CK2_ENABLED
526 11 : module procedure setFFTI_CK2
527 : use pm_kind, only: TKC => CK2
528 : #include "pm_fftnr@routines.inc.F90"
529 11 : end procedure
530 : #endif
531 :
532 : #if CK1_ENABLED
533 11 : module procedure setFFTI_CK1
534 : use pm_kind, only: TKC => CK1
535 : #include "pm_fftnr@routines.inc.F90"
536 11 : end procedure
537 : #endif
538 :
539 : #undef CK_ENABLED
540 :
541 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
542 :
543 : #define RK_ENABLED 1
544 :
545 : #if RK5_ENABLED
546 : module procedure setFFTI_RK5
547 : use pm_kind, only: TKC => RK5
548 : #include "pm_fftnr@routines.inc.F90"
549 : end procedure
550 : #endif
551 :
552 : #if RK4_ENABLED
553 11 : module procedure setFFTI_RK4
554 : use pm_kind, only: TKC => RK4
555 : #include "pm_fftnr@routines.inc.F90"
556 11 : end procedure
557 : #endif
558 :
559 : #if RK3_ENABLED
560 0 : module procedure setFFTI_RK3
561 : use pm_kind, only: TKC => RK3
562 : #include "pm_fftnr@routines.inc.F90"
563 0 : end procedure
564 : #endif
565 :
566 : #if RK2_ENABLED
567 11 : module procedure setFFTI_RK2
568 : use pm_kind, only: TKC => RK2
569 : #include "pm_fftnr@routines.inc.F90"
570 11 : end procedure
571 : #endif
572 :
573 : #if RK1_ENABLED
574 11 : module procedure setFFTI_RK1
575 : use pm_kind, only: TKC => RK1
576 : #include "pm_fftnr@routines.inc.F90"
577 11 : end procedure
578 : #endif
579 :
580 : #undef RK_ENABLED
581 :
582 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
583 :
584 : #undef setFFTI_ENABLED
585 :
586 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
587 :
588 : #undef CHECK_ASSERTION
589 :
590 : end submodule routines
|