Line data Source code
1 :
2 : !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
3 : !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
4 : !!!! !!!!
5 : !!!! ParaMonte: Parallel Monte Carlo and Machine Learning Library. !!!!
6 : !!!! !!!!
7 : !!!! Copyright (C) 2012-present, The Computational Data Science Lab !!!!
8 : !!!! !!!!
9 : !!!! This file is part of the ParaMonte library. !!!!
10 : !!!! !!!!
11 : !!!! LICENSE !!!!
12 : !!!! !!!!
13 : !!!! https://github.com/cdslaborg/paramonte/blob/main/LICENSE.md !!!!
14 : !!!! !!!!
15 : !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
16 : !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
17 :
18 : !> \brief
19 : !> This file contains procedure implementations of [pm_matrixClass](@ref pm_matrixClass).
20 : !>
21 : !> \finmain
22 : !>
23 : !> \author
24 : !> \AmirShahmoradi, Monday March 6, 2017, 3:22 pm, Institute for Computational Engineering and Sciences (ICES), The University of Texas at Austin.<br>
25 :
26 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
27 :
28 : submodule (pm_matrixClass) routines ! LCOV_EXCL_LINE
29 :
30 : #if CHECK_ENABLED
31 : use pm_err, only: getFine
32 : use pm_val2str, only: getStr
33 : use pm_err, only: setAsserted
34 : #define CHECK_ASSERTION(LINE,ASSERTION,MSG) \
35 : call setAsserted(ASSERTION,getFine(__FILE__,LINE)//MODULE_NAME//MSG);
36 : #else
37 : #define CHECK_ASSERTION(LINE,ASSERTION,MSG) continue;
38 : #endif
39 :
40 : use pm_matrixPack, only: isMatPack
41 : use pm_matrixCopy, only: setMatCopy
42 : use pm_matrixChol, only: setMatChol
43 : use pm_matrixChol, only: recursion
44 : use pm_matrixChol, only: nothing
45 : implicit none
46 :
47 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
48 :
49 : contains
50 :
51 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
52 :
53 : #define isMatClass_ENABLED 1
54 :
55 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
56 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
57 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
58 :
59 : #define PosDef_ENABLED 1
60 :
61 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
62 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
63 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
64 :
65 : #define RDP_ENABLED 1
66 :
67 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
68 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
69 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
70 :
71 : #define Ful_ENABLED 1
72 :
73 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
74 :
75 : #define CK_ENABLED 1
76 :
77 : #if CK5_ENABLED
78 : module procedure isMatClassPosDefFulRDP_CK5
79 : use pm_kind, only: CKC => CK5
80 : #include "pm_matrixClass@routines.inc.F90"
81 : end procedure
82 : #endif
83 :
84 : #if CK4_ENABLED
85 0 : module procedure isMatClassPosDefFulRDP_CK4
86 : use pm_kind, only: CKC => CK4
87 : #include "pm_matrixClass@routines.inc.F90"
88 0 : end procedure
89 : #endif
90 :
91 : #if CK3_ENABLED
92 0 : module procedure isMatClassPosDefFulRDP_CK3
93 : use pm_kind, only: CKC => CK3
94 : #include "pm_matrixClass@routines.inc.F90"
95 0 : end procedure
96 : #endif
97 :
98 : #if CK2_ENABLED
99 15 : module procedure isMatClassPosDefFulRDP_CK2
100 : use pm_kind, only: CKC => CK2
101 : #include "pm_matrixClass@routines.inc.F90"
102 15 : end procedure
103 : #endif
104 :
105 : #if CK1_ENABLED
106 41 : module procedure isMatClassPosDefFulRDP_CK1
107 : use pm_kind, only: CKC => CK1
108 : #include "pm_matrixClass@routines.inc.F90"
109 41 : end procedure
110 : #endif
111 :
112 : #undef CK_ENABLED
113 :
114 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
115 :
116 : #define RK_ENABLED 1
117 :
118 : #if RK5_ENABLED
119 : module procedure isMatClassPosDefFulRDP_RK5
120 : use pm_kind, only: RKC => RK5
121 : #include "pm_matrixClass@routines.inc.F90"
122 : end procedure
123 : #endif
124 :
125 : #if RK4_ENABLED
126 0 : module procedure isMatClassPosDefFulRDP_RK4
127 : use pm_kind, only: RKC => RK4
128 : #include "pm_matrixClass@routines.inc.F90"
129 0 : end procedure
130 : #endif
131 :
132 : #if RK3_ENABLED
133 0 : module procedure isMatClassPosDefFulRDP_RK3
134 : use pm_kind, only: RKC => RK3
135 : #include "pm_matrixClass@routines.inc.F90"
136 0 : end procedure
137 : #endif
138 :
139 : #if RK2_ENABLED
140 1234084 : module procedure isMatClassPosDefFulRDP_RK2
141 : use pm_kind, only: RKC => RK2
142 : #include "pm_matrixClass@routines.inc.F90"
143 1234084 : end procedure
144 : #endif
145 :
146 : #if RK1_ENABLED
147 93 : module procedure isMatClassPosDefFulRDP_RK1
148 : use pm_kind, only: RKC => RK1
149 : #include "pm_matrixClass@routines.inc.F90"
150 93 : end procedure
151 : #endif
152 :
153 : #undef RK_ENABLED
154 :
155 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
156 :
157 : #undef Ful_ENABLED
158 :
159 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
160 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
161 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
162 :
163 : #define Upp_ENABLED 1
164 :
165 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
166 :
167 : #define CK_ENABLED 1
168 :
169 : #if CK5_ENABLED
170 : module procedure isMatClassPosDefUppRDP_CK5
171 : use pm_kind, only: CKC => CK5
172 : #include "pm_matrixClass@routines.inc.F90"
173 : end procedure
174 : #endif
175 :
176 : #if CK4_ENABLED
177 0 : module procedure isMatClassPosDefUppRDP_CK4
178 : use pm_kind, only: CKC => CK4
179 : #include "pm_matrixClass@routines.inc.F90"
180 0 : end procedure
181 : #endif
182 :
183 : #if CK3_ENABLED
184 0 : module procedure isMatClassPosDefUppRDP_CK3
185 : use pm_kind, only: CKC => CK3
186 : #include "pm_matrixClass@routines.inc.F90"
187 0 : end procedure
188 : #endif
189 :
190 : #if CK2_ENABLED
191 15 : module procedure isMatClassPosDefUppRDP_CK2
192 : use pm_kind, only: CKC => CK2
193 : #include "pm_matrixClass@routines.inc.F90"
194 15 : end procedure
195 : #endif
196 :
197 : #if CK1_ENABLED
198 32 : module procedure isMatClassPosDefUppRDP_CK1
199 : use pm_kind, only: CKC => CK1
200 : #include "pm_matrixClass@routines.inc.F90"
201 32 : end procedure
202 : #endif
203 :
204 : #undef CK_ENABLED
205 :
206 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
207 :
208 : #define RK_ENABLED 1
209 :
210 : #if RK5_ENABLED
211 : module procedure isMatClassPosDefUppRDP_RK5
212 : use pm_kind, only: RKC => RK5
213 : #include "pm_matrixClass@routines.inc.F90"
214 : end procedure
215 : #endif
216 :
217 : #if RK4_ENABLED
218 0 : module procedure isMatClassPosDefUppRDP_RK4
219 : use pm_kind, only: RKC => RK4
220 : #include "pm_matrixClass@routines.inc.F90"
221 0 : end procedure
222 : #endif
223 :
224 : #if RK3_ENABLED
225 0 : module procedure isMatClassPosDefUppRDP_RK3
226 : use pm_kind, only: RKC => RK3
227 : #include "pm_matrixClass@routines.inc.F90"
228 0 : end procedure
229 : #endif
230 :
231 : #if RK2_ENABLED
232 1234084 : module procedure isMatClassPosDefUppRDP_RK2
233 : use pm_kind, only: RKC => RK2
234 : #include "pm_matrixClass@routines.inc.F90"
235 1234084 : end procedure
236 : #endif
237 :
238 : #if RK1_ENABLED
239 88 : module procedure isMatClassPosDefUppRDP_RK1
240 : use pm_kind, only: RKC => RK1
241 : #include "pm_matrixClass@routines.inc.F90"
242 88 : end procedure
243 : #endif
244 :
245 : #undef RK_ENABLED
246 :
247 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
248 :
249 : #undef Upp_ENABLED
250 :
251 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
252 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
253 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
254 :
255 : #define Low_ENABLED 1
256 :
257 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
258 :
259 : #define CK_ENABLED 1
260 :
261 : #if CK5_ENABLED
262 : module procedure isMatClassPosDefLowRDP_CK5
263 : use pm_kind, only: CKC => CK5
264 : #include "pm_matrixClass@routines.inc.F90"
265 : end procedure
266 : #endif
267 :
268 : #if CK4_ENABLED
269 0 : module procedure isMatClassPosDefLowRDP_CK4
270 : use pm_kind, only: CKC => CK4
271 : #include "pm_matrixClass@routines.inc.F90"
272 0 : end procedure
273 : #endif
274 :
275 : #if CK3_ENABLED
276 0 : module procedure isMatClassPosDefLowRDP_CK3
277 : use pm_kind, only: CKC => CK3
278 : #include "pm_matrixClass@routines.inc.F90"
279 0 : end procedure
280 : #endif
281 :
282 : #if CK2_ENABLED
283 0 : module procedure isMatClassPosDefLowRDP_CK2
284 : use pm_kind, only: CKC => CK2
285 : #include "pm_matrixClass@routines.inc.F90"
286 0 : end procedure
287 : #endif
288 :
289 : #if CK1_ENABLED
290 0 : module procedure isMatClassPosDefLowRDP_CK1
291 : use pm_kind, only: CKC => CK1
292 : #include "pm_matrixClass@routines.inc.F90"
293 0 : end procedure
294 : #endif
295 :
296 : #undef CK_ENABLED
297 :
298 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
299 :
300 : #define RK_ENABLED 1
301 :
302 : #if RK5_ENABLED
303 : module procedure isMatClassPosDefLowRDP_RK5
304 : use pm_kind, only: RKC => RK5
305 : #include "pm_matrixClass@routines.inc.F90"
306 : end procedure
307 : #endif
308 :
309 : #if RK4_ENABLED
310 0 : module procedure isMatClassPosDefLowRDP_RK4
311 : use pm_kind, only: RKC => RK4
312 : #include "pm_matrixClass@routines.inc.F90"
313 0 : end procedure
314 : #endif
315 :
316 : #if RK3_ENABLED
317 0 : module procedure isMatClassPosDefLowRDP_RK3
318 : use pm_kind, only: RKC => RK3
319 : #include "pm_matrixClass@routines.inc.F90"
320 0 : end procedure
321 : #endif
322 :
323 : #if RK2_ENABLED
324 0 : module procedure isMatClassPosDefLowRDP_RK2
325 : use pm_kind, only: RKC => RK2
326 : #include "pm_matrixClass@routines.inc.F90"
327 0 : end procedure
328 : #endif
329 :
330 : #if RK1_ENABLED
331 0 : module procedure isMatClassPosDefLowRDP_RK1
332 : use pm_kind, only: RKC => RK1
333 : #include "pm_matrixClass@routines.inc.F90"
334 0 : end procedure
335 : #endif
336 :
337 : #undef RK_ENABLED
338 :
339 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
340 :
341 : #undef Low_ENABLED
342 :
343 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
344 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
345 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
346 :
347 : #undef RDP_ENABLED
348 :
349 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
350 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
351 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
352 :
353 : #define RFP_ENABLED 1
354 :
355 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
356 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
357 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
358 :
359 : #define Upp_ENABLED 1
360 :
361 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
362 :
363 : #define CK_ENABLED 1
364 :
365 : #if CK5_ENABLED
366 : module procedure isMatClassPosDefUppRFP_CK5
367 : use pm_kind, only: CKC => CK5
368 : #include "pm_matrixClass@routines.inc.F90"
369 : end procedure
370 : #endif
371 :
372 : #if CK4_ENABLED
373 0 : module procedure isMatClassPosDefUppRFP_CK4
374 : use pm_kind, only: CKC => CK4
375 : #include "pm_matrixClass@routines.inc.F90"
376 0 : end procedure
377 : #endif
378 :
379 : #if CK3_ENABLED
380 0 : module procedure isMatClassPosDefUppRFP_CK3
381 : use pm_kind, only: CKC => CK3
382 : #include "pm_matrixClass@routines.inc.F90"
383 0 : end procedure
384 : #endif
385 :
386 : #if CK2_ENABLED
387 0 : module procedure isMatClassPosDefUppRFP_CK2
388 : use pm_kind, only: CKC => CK2
389 : #include "pm_matrixClass@routines.inc.F90"
390 0 : end procedure
391 : #endif
392 :
393 : #if CK1_ENABLED
394 0 : module procedure isMatClassPosDefUppRFP_CK1
395 : use pm_kind, only: CKC => CK1
396 : #include "pm_matrixClass@routines.inc.F90"
397 0 : end procedure
398 : #endif
399 :
400 : #undef CK_ENABLED
401 :
402 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
403 :
404 : #define RK_ENABLED 1
405 :
406 : #if RK5_ENABLED
407 : module procedure isMatClassPosDefUppRFP_RK5
408 : use pm_kind, only: RKC => RK5
409 : #include "pm_matrixClass@routines.inc.F90"
410 : end procedure
411 : #endif
412 :
413 : #if RK4_ENABLED
414 0 : module procedure isMatClassPosDefUppRFP_RK4
415 : use pm_kind, only: RKC => RK4
416 : #include "pm_matrixClass@routines.inc.F90"
417 0 : end procedure
418 : #endif
419 :
420 : #if RK3_ENABLED
421 0 : module procedure isMatClassPosDefUppRFP_RK3
422 : use pm_kind, only: RKC => RK3
423 : #include "pm_matrixClass@routines.inc.F90"
424 0 : end procedure
425 : #endif
426 :
427 : #if RK2_ENABLED
428 0 : module procedure isMatClassPosDefUppRFP_RK2
429 : use pm_kind, only: RKC => RK2
430 : #include "pm_matrixClass@routines.inc.F90"
431 0 : end procedure
432 : #endif
433 :
434 : #if RK1_ENABLED
435 0 : module procedure isMatClassPosDefUppRFP_RK1
436 : use pm_kind, only: RKC => RK1
437 : #include "pm_matrixClass@routines.inc.F90"
438 0 : end procedure
439 : #endif
440 :
441 : #undef RK_ENABLED
442 :
443 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
444 :
445 : #undef Upp_ENABLED
446 :
447 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
448 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
449 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
450 :
451 : #define Low_ENABLED 1
452 :
453 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
454 :
455 : #define CK_ENABLED 1
456 :
457 : #if CK5_ENABLED
458 : module procedure isMatClassPosDefLowRFP_CK5
459 : use pm_kind, only: CKC => CK5
460 : #include "pm_matrixClass@routines.inc.F90"
461 : end procedure
462 : #endif
463 :
464 : #if CK4_ENABLED
465 0 : module procedure isMatClassPosDefLowRFP_CK4
466 : use pm_kind, only: CKC => CK4
467 : #include "pm_matrixClass@routines.inc.F90"
468 0 : end procedure
469 : #endif
470 :
471 : #if CK3_ENABLED
472 0 : module procedure isMatClassPosDefLowRFP_CK3
473 : use pm_kind, only: CKC => CK3
474 : #include "pm_matrixClass@routines.inc.F90"
475 0 : end procedure
476 : #endif
477 :
478 : #if CK2_ENABLED
479 0 : module procedure isMatClassPosDefLowRFP_CK2
480 : use pm_kind, only: CKC => CK2
481 : #include "pm_matrixClass@routines.inc.F90"
482 0 : end procedure
483 : #endif
484 :
485 : #if CK1_ENABLED
486 0 : module procedure isMatClassPosDefLowRFP_CK1
487 : use pm_kind, only: CKC => CK1
488 : #include "pm_matrixClass@routines.inc.F90"
489 0 : end procedure
490 : #endif
491 :
492 : #undef CK_ENABLED
493 :
494 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
495 :
496 : #define RK_ENABLED 1
497 :
498 : #if RK5_ENABLED
499 : module procedure isMatClassPosDefLowRFP_RK5
500 : use pm_kind, only: RKC => RK5
501 : #include "pm_matrixClass@routines.inc.F90"
502 : end procedure
503 : #endif
504 :
505 : #if RK4_ENABLED
506 0 : module procedure isMatClassPosDefLowRFP_RK4
507 : use pm_kind, only: RKC => RK4
508 : #include "pm_matrixClass@routines.inc.F90"
509 0 : end procedure
510 : #endif
511 :
512 : #if RK3_ENABLED
513 0 : module procedure isMatClassPosDefLowRFP_RK3
514 : use pm_kind, only: RKC => RK3
515 : #include "pm_matrixClass@routines.inc.F90"
516 0 : end procedure
517 : #endif
518 :
519 : #if RK2_ENABLED
520 0 : module procedure isMatClassPosDefLowRFP_RK2
521 : use pm_kind, only: RKC => RK2
522 : #include "pm_matrixClass@routines.inc.F90"
523 0 : end procedure
524 : #endif
525 :
526 : #if RK1_ENABLED
527 0 : module procedure isMatClassPosDefLowRFP_RK1
528 : use pm_kind, only: RKC => RK1
529 : #include "pm_matrixClass@routines.inc.F90"
530 0 : end procedure
531 : #endif
532 :
533 : #undef RK_ENABLED
534 :
535 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
536 :
537 : #undef Low_ENABLED
538 :
539 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
540 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
541 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
542 :
543 : #undef RFP_ENABLED
544 :
545 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
546 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
547 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
548 :
549 : #undef PosDef_ENABLED
550 :
551 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
552 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
553 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
554 :
555 : #define Symm_ENABLED 1
556 :
557 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
558 :
559 : #define SK_ENABLED 1
560 :
561 : #if SK5_ENABLED
562 : module procedure isMatClassSymm_SK5
563 : use pm_kind, only: SKC => SK5
564 : #include "pm_matrixClass@routines.inc.F90"
565 : end procedure
566 : #endif
567 :
568 : #if SK4_ENABLED
569 : module procedure isMatClassSymm_SK4
570 : use pm_kind, only: SKC => SK4
571 : #include "pm_matrixClass@routines.inc.F90"
572 : end procedure
573 : #endif
574 :
575 : #if SK3_ENABLED
576 : module procedure isMatClassSymm_SK3
577 : use pm_kind, only: SKC => SK3
578 : #include "pm_matrixClass@routines.inc.F90"
579 : end procedure
580 : #endif
581 :
582 : #if SK2_ENABLED
583 : module procedure isMatClassSymm_SK2
584 : use pm_kind, only: SKC => SK2
585 : #include "pm_matrixClass@routines.inc.F90"
586 : end procedure
587 : #endif
588 :
589 : #if SK1_ENABLED
590 10 : module procedure isMatClassSymm_SK1
591 : use pm_kind, only: SKC => SK1
592 : #include "pm_matrixClass@routines.inc.F90"
593 : end procedure
594 : #endif
595 :
596 : #undef SK_ENABLED
597 :
598 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
599 :
600 : #define IK_ENABLED 1
601 :
602 : #if IK5_ENABLED
603 0 : module procedure isMatClassSymm_IK5
604 : use pm_kind, only: IKC => IK5
605 : #include "pm_matrixClass@routines.inc.F90"
606 : end procedure
607 : #endif
608 :
609 : #if IK4_ENABLED
610 0 : module procedure isMatClassSymm_IK4
611 : use pm_kind, only: IKC => IK4
612 : #include "pm_matrixClass@routines.inc.F90"
613 : end procedure
614 : #endif
615 :
616 : #if IK3_ENABLED
617 10 : module procedure isMatClassSymm_IK3
618 : use pm_kind, only: IKC => IK3
619 : #include "pm_matrixClass@routines.inc.F90"
620 : end procedure
621 : #endif
622 :
623 : #if IK2_ENABLED
624 0 : module procedure isMatClassSymm_IK2
625 : use pm_kind, only: IKC => IK2
626 : #include "pm_matrixClass@routines.inc.F90"
627 : end procedure
628 : #endif
629 :
630 : #if IK1_ENABLED
631 0 : module procedure isMatClassSymm_IK1
632 : use pm_kind, only: IKC => IK1
633 : #include "pm_matrixClass@routines.inc.F90"
634 : end procedure
635 : #endif
636 :
637 : #undef IK_ENABLED
638 :
639 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
640 :
641 : #define LK_ENABLED 1
642 :
643 : #if LK5_ENABLED
644 0 : module procedure isMatClassSymm_LK5
645 : use pm_kind, only: LKC => LK5
646 : #include "pm_matrixClass@routines.inc.F90"
647 : end procedure
648 : #endif
649 :
650 : #if LK4_ENABLED
651 0 : module procedure isMatClassSymm_LK4
652 : use pm_kind, only: LKC => LK4
653 : #include "pm_matrixClass@routines.inc.F90"
654 : end procedure
655 : #endif
656 :
657 : #if LK3_ENABLED
658 10 : module procedure isMatClassSymm_LK3
659 : use pm_kind, only: LKC => LK3
660 : #include "pm_matrixClass@routines.inc.F90"
661 : end procedure
662 : #endif
663 :
664 : #if LK2_ENABLED
665 0 : module procedure isMatClassSymm_LK2
666 : use pm_kind, only: LKC => LK2
667 : #include "pm_matrixClass@routines.inc.F90"
668 : end procedure
669 : #endif
670 :
671 : #if LK1_ENABLED
672 0 : module procedure isMatClassSymm_LK1
673 : use pm_kind, only: LKC => LK1
674 : #include "pm_matrixClass@routines.inc.F90"
675 : end procedure
676 : #endif
677 :
678 : #undef LK_ENABLED
679 :
680 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
681 :
682 : #define CK_ENABLED 1
683 :
684 : #if CK5_ENABLED
685 : module procedure isMatClassSymm_CK5
686 : use pm_kind, only: CKC => CK5
687 : #include "pm_matrixClass@routines.inc.F90"
688 : end procedure
689 : #endif
690 :
691 : #if CK4_ENABLED
692 0 : module procedure isMatClassSymm_CK4
693 : use pm_kind, only: CKC => CK4
694 : #include "pm_matrixClass@routines.inc.F90"
695 : end procedure
696 : #endif
697 :
698 : #if CK3_ENABLED
699 0 : module procedure isMatClassSymm_CK3
700 : use pm_kind, only: CKC => CK3
701 : #include "pm_matrixClass@routines.inc.F90"
702 : end procedure
703 : #endif
704 :
705 : #if CK2_ENABLED
706 0 : module procedure isMatClassSymm_CK2
707 : use pm_kind, only: CKC => CK2
708 : #include "pm_matrixClass@routines.inc.F90"
709 : end procedure
710 : #endif
711 :
712 : #if CK1_ENABLED
713 10 : module procedure isMatClassSymm_CK1
714 : use pm_kind, only: CKC => CK1
715 : #include "pm_matrixClass@routines.inc.F90"
716 : end procedure
717 : #endif
718 :
719 : #undef CK_ENABLED
720 :
721 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
722 :
723 : #define RK_ENABLED 1
724 :
725 : #if RK5_ENABLED
726 : module procedure isMatClassSymm_RK5
727 : use pm_kind, only: RKC => RK5
728 : #include "pm_matrixClass@routines.inc.F90"
729 : end procedure
730 : #endif
731 :
732 : #if RK4_ENABLED
733 0 : module procedure isMatClassSymm_RK4
734 : use pm_kind, only: RKC => RK4
735 : #include "pm_matrixClass@routines.inc.F90"
736 : end procedure
737 : #endif
738 :
739 : #if RK3_ENABLED
740 0 : module procedure isMatClassSymm_RK3
741 : use pm_kind, only: RKC => RK3
742 : #include "pm_matrixClass@routines.inc.F90"
743 : end procedure
744 : #endif
745 :
746 : #if RK2_ENABLED
747 10 : module procedure isMatClassSymm_RK2
748 : use pm_kind, only: RKC => RK2
749 : #include "pm_matrixClass@routines.inc.F90"
750 : end procedure
751 : #endif
752 :
753 : #if RK1_ENABLED
754 10 : module procedure isMatClassSymm_RK1
755 : use pm_kind, only: RKC => RK1
756 : #include "pm_matrixClass@routines.inc.F90"
757 : end procedure
758 : #endif
759 :
760 : #undef RK_ENABLED
761 :
762 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
763 :
764 : #undef Symm_ENABLED
765 :
766 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
767 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
768 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
769 :
770 : #define Herm_ENABLED 1
771 :
772 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
773 :
774 : #define SK_ENABLED 1
775 :
776 : #if SK5_ENABLED
777 : module procedure isMatClassHerm_SK5
778 : use pm_kind, only: SKC => SK5
779 : #include "pm_matrixClass@routines.inc.F90"
780 : end procedure
781 : #endif
782 :
783 : #if SK4_ENABLED
784 : module procedure isMatClassHerm_SK4
785 : use pm_kind, only: SKC => SK4
786 : #include "pm_matrixClass@routines.inc.F90"
787 : end procedure
788 : #endif
789 :
790 : #if SK3_ENABLED
791 : module procedure isMatClassHerm_SK3
792 : use pm_kind, only: SKC => SK3
793 : #include "pm_matrixClass@routines.inc.F90"
794 : end procedure
795 : #endif
796 :
797 : #if SK2_ENABLED
798 : module procedure isMatClassHerm_SK2
799 : use pm_kind, only: SKC => SK2
800 : #include "pm_matrixClass@routines.inc.F90"
801 : end procedure
802 : #endif
803 :
804 : #if SK1_ENABLED
805 10 : module procedure isMatClassHerm_SK1
806 : use pm_kind, only: SKC => SK1
807 : #include "pm_matrixClass@routines.inc.F90"
808 : end procedure
809 : #endif
810 :
811 : #undef SK_ENABLED
812 :
813 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
814 :
815 : #define IK_ENABLED 1
816 :
817 : #if IK5_ENABLED
818 0 : module procedure isMatClassHerm_IK5
819 : use pm_kind, only: IKC => IK5
820 : #include "pm_matrixClass@routines.inc.F90"
821 : end procedure
822 : #endif
823 :
824 : #if IK4_ENABLED
825 0 : module procedure isMatClassHerm_IK4
826 : use pm_kind, only: IKC => IK4
827 : #include "pm_matrixClass@routines.inc.F90"
828 : end procedure
829 : #endif
830 :
831 : #if IK3_ENABLED
832 10 : module procedure isMatClassHerm_IK3
833 : use pm_kind, only: IKC => IK3
834 : #include "pm_matrixClass@routines.inc.F90"
835 : end procedure
836 : #endif
837 :
838 : #if IK2_ENABLED
839 0 : module procedure isMatClassHerm_IK2
840 : use pm_kind, only: IKC => IK2
841 : #include "pm_matrixClass@routines.inc.F90"
842 : end procedure
843 : #endif
844 :
845 : #if IK1_ENABLED
846 0 : module procedure isMatClassHerm_IK1
847 : use pm_kind, only: IKC => IK1
848 : #include "pm_matrixClass@routines.inc.F90"
849 : end procedure
850 : #endif
851 :
852 : #undef IK_ENABLED
853 :
854 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
855 :
856 : #define LK_ENABLED 1
857 :
858 : #if LK5_ENABLED
859 0 : module procedure isMatClassHerm_LK5
860 : use pm_kind, only: LKC => LK5
861 : #include "pm_matrixClass@routines.inc.F90"
862 : end procedure
863 : #endif
864 :
865 : #if LK4_ENABLED
866 0 : module procedure isMatClassHerm_LK4
867 : use pm_kind, only: LKC => LK4
868 : #include "pm_matrixClass@routines.inc.F90"
869 : end procedure
870 : #endif
871 :
872 : #if LK3_ENABLED
873 10 : module procedure isMatClassHerm_LK3
874 : use pm_kind, only: LKC => LK3
875 : #include "pm_matrixClass@routines.inc.F90"
876 : end procedure
877 : #endif
878 :
879 : #if LK2_ENABLED
880 0 : module procedure isMatClassHerm_LK2
881 : use pm_kind, only: LKC => LK2
882 : #include "pm_matrixClass@routines.inc.F90"
883 : end procedure
884 : #endif
885 :
886 : #if LK1_ENABLED
887 0 : module procedure isMatClassHerm_LK1
888 : use pm_kind, only: LKC => LK1
889 : #include "pm_matrixClass@routines.inc.F90"
890 : end procedure
891 : #endif
892 :
893 : #undef LK_ENABLED
894 :
895 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
896 :
897 : #define CK_ENABLED 1
898 :
899 : #if CK5_ENABLED
900 : module procedure isMatClassHerm_CK5
901 : use pm_kind, only: CKC => CK5
902 : #include "pm_matrixClass@routines.inc.F90"
903 : end procedure
904 : #endif
905 :
906 : #if CK4_ENABLED
907 0 : module procedure isMatClassHerm_CK4
908 : use pm_kind, only: CKC => CK4
909 : #include "pm_matrixClass@routines.inc.F90"
910 : end procedure
911 : #endif
912 :
913 : #if CK3_ENABLED
914 0 : module procedure isMatClassHerm_CK3
915 : use pm_kind, only: CKC => CK3
916 : #include "pm_matrixClass@routines.inc.F90"
917 : end procedure
918 : #endif
919 :
920 : #if CK2_ENABLED
921 30 : module procedure isMatClassHerm_CK2
922 : use pm_kind, only: CKC => CK2
923 : #include "pm_matrixClass@routines.inc.F90"
924 : end procedure
925 : #endif
926 :
927 : #if CK1_ENABLED
928 61 : module procedure isMatClassHerm_CK1
929 : use pm_kind, only: CKC => CK1
930 : #include "pm_matrixClass@routines.inc.F90"
931 : end procedure
932 : #endif
933 :
934 : #undef CK_ENABLED
935 :
936 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
937 :
938 : #define RK_ENABLED 1
939 :
940 : #if RK5_ENABLED
941 : module procedure isMatClassHerm_RK5
942 : use pm_kind, only: RKC => RK5
943 : #include "pm_matrixClass@routines.inc.F90"
944 : end procedure
945 : #endif
946 :
947 : #if RK4_ENABLED
948 0 : module procedure isMatClassHerm_RK4
949 : use pm_kind, only: RKC => RK4
950 : #include "pm_matrixClass@routines.inc.F90"
951 : end procedure
952 : #endif
953 :
954 : #if RK3_ENABLED
955 0 : module procedure isMatClassHerm_RK3
956 : use pm_kind, only: RKC => RK3
957 : #include "pm_matrixClass@routines.inc.F90"
958 : end procedure
959 : #endif
960 :
961 : #if RK2_ENABLED
962 1234094 : module procedure isMatClassHerm_RK2
963 : use pm_kind, only: RKC => RK2
964 : #include "pm_matrixClass@routines.inc.F90"
965 : end procedure
966 : #endif
967 :
968 : #if RK1_ENABLED
969 158 : module procedure isMatClassHerm_RK1
970 : use pm_kind, only: RKC => RK1
971 : #include "pm_matrixClass@routines.inc.F90"
972 : end procedure
973 : #endif
974 :
975 : #undef RK_ENABLED
976 :
977 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
978 :
979 : #undef Herm_ENABLED
980 :
981 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
982 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
983 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
984 :
985 : #undef isMatClass_ENABLED
986 :
987 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
988 :
989 : end submodule routines
|