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_clustering](@ref pm_clustering).
19 : !>
20 : !> \finmain
21 : !>
22 : !> \author
23 : !> \AmirShahmoradi, Wednesday 5:43 PM, December 25, 2013, Institute for Fusion Studies, The University of Texas at Austin
24 :
25 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
26 :
27 : submodule (pm_clustering) 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_distUnif, only: setUnifRand
40 : implicit none
41 :
42 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
43 :
44 : contains
45 :
46 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
47 :
48 : #define setCenter_ENABLED 1
49 :
50 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
51 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
52 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
53 :
54 : #define D1_D1_ENABLED 1
55 :
56 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
57 :
58 : #define RK_ENABLED 1
59 :
60 : #if RK5_ENABLED
61 : module procedure setCenterEuc_D1_D1_RK5
62 : use pm_kind, only: RKC => RK5
63 : #include "pm_clustering@routines.inc.F90"
64 : end procedure
65 : #endif
66 :
67 : #if RK4_ENABLED
68 0 : module procedure setCenterEuc_D1_D1_RK4
69 : use pm_kind, only: RKC => RK4
70 : #include "pm_clustering@routines.inc.F90"
71 0 : end procedure
72 : #endif
73 :
74 : #if RK3_ENABLED
75 0 : module procedure setCenterEuc_D1_D1_RK3
76 : use pm_kind, only: RKC => RK3
77 : #include "pm_clustering@routines.inc.F90"
78 0 : end procedure
79 : #endif
80 :
81 : #if RK2_ENABLED
82 0 : module procedure setCenterEuc_D1_D1_RK2
83 : use pm_kind, only: RKC => RK2
84 : #include "pm_clustering@routines.inc.F90"
85 0 : end procedure
86 : #endif
87 :
88 : #if RK1_ENABLED
89 1 : module procedure setCenterEuc_D1_D1_RK1
90 : use pm_kind, only: RKC => RK1
91 : #include "pm_clustering@routines.inc.F90"
92 1 : end procedure
93 : #endif
94 :
95 : #undef RK_ENABLED
96 :
97 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
98 :
99 : #undef D1_D1_ENABLED
100 :
101 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
102 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
103 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
104 :
105 : #define D2_D2_ENABLED 1
106 :
107 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
108 :
109 : #define RK_ENABLED 1
110 :
111 : #if RK5_ENABLED
112 : module procedure setCenterEuc_D2_D2_RK5
113 : use pm_kind, only: RKC => RK5
114 : #include "pm_clustering@routines.inc.F90"
115 : end procedure
116 : #endif
117 :
118 : #if RK4_ENABLED
119 0 : module procedure setCenterEuc_D2_D2_RK4
120 : use pm_kind, only: RKC => RK4
121 : #include "pm_clustering@routines.inc.F90"
122 0 : end procedure
123 : #endif
124 :
125 : #if RK3_ENABLED
126 0 : module procedure setCenterEuc_D2_D2_RK3
127 : use pm_kind, only: RKC => RK3
128 : #include "pm_clustering@routines.inc.F90"
129 0 : end procedure
130 : #endif
131 :
132 : #if RK2_ENABLED
133 0 : module procedure setCenterEuc_D2_D2_RK2
134 : use pm_kind, only: RKC => RK2
135 : #include "pm_clustering@routines.inc.F90"
136 0 : end procedure
137 : #endif
138 :
139 : #if RK1_ENABLED
140 36 : module procedure setCenterEuc_D2_D2_RK1
141 : use pm_kind, only: RKC => RK1
142 : #include "pm_clustering@routines.inc.F90"
143 36 : end procedure
144 : #endif
145 :
146 : #undef RK_ENABLED
147 :
148 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
149 :
150 : #undef D2_D2_ENABLED
151 :
152 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
153 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
154 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
155 :
156 : #undef setCenter_ENABLED
157 :
158 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
159 :
160 : #define setMember_ENABLED 1
161 :
162 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
163 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
164 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
165 :
166 : #define D0_D1_ENABLED 1
167 :
168 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
169 :
170 : #define RK_ENABLED 1
171 :
172 : #if RK5_ENABLED
173 : module procedure setMemberEuc_D0_D1_RK5
174 : use pm_kind, only: RKC => RK5
175 : #include "pm_clustering@routines.inc.F90"
176 : end procedure
177 : #endif
178 :
179 : #if RK4_ENABLED
180 0 : module procedure setMemberEuc_D0_D1_RK4
181 : use pm_kind, only: RKC => RK4
182 : #include "pm_clustering@routines.inc.F90"
183 0 : end procedure
184 : #endif
185 :
186 : #if RK3_ENABLED
187 0 : module procedure setMemberEuc_D0_D1_RK3
188 : use pm_kind, only: RKC => RK3
189 : #include "pm_clustering@routines.inc.F90"
190 0 : end procedure
191 : #endif
192 :
193 : #if RK2_ENABLED
194 0 : module procedure setMemberEuc_D0_D1_RK2
195 : use pm_kind, only: RKC => RK2
196 : #include "pm_clustering@routines.inc.F90"
197 0 : end procedure
198 : #endif
199 :
200 : #if RK1_ENABLED
201 1 : module procedure setMemberEuc_D0_D1_RK1
202 : use pm_kind, only: RKC => RK1
203 : #include "pm_clustering@routines.inc.F90"
204 1 : end procedure
205 : #endif
206 :
207 : #undef RK_ENABLED
208 :
209 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
210 :
211 : #undef D0_D1_ENABLED
212 :
213 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
214 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
215 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
216 :
217 : #define D1_D1_ENABLED 1
218 :
219 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
220 :
221 : #define RK_ENABLED 1
222 :
223 : #if RK5_ENABLED
224 : module procedure setMemberEuc_D1_D1_RK5
225 : use pm_kind, only: RKC => RK5
226 : #include "pm_clustering@routines.inc.F90"
227 : end procedure
228 : #endif
229 :
230 : #if RK4_ENABLED
231 0 : module procedure setMemberEuc_D1_D1_RK4
232 : use pm_kind, only: RKC => RK4
233 : #include "pm_clustering@routines.inc.F90"
234 0 : end procedure
235 : #endif
236 :
237 : #if RK3_ENABLED
238 0 : module procedure setMemberEuc_D1_D1_RK3
239 : use pm_kind, only: RKC => RK3
240 : #include "pm_clustering@routines.inc.F90"
241 0 : end procedure
242 : #endif
243 :
244 : #if RK2_ENABLED
245 0 : module procedure setMemberEuc_D1_D1_RK2
246 : use pm_kind, only: RKC => RK2
247 : #include "pm_clustering@routines.inc.F90"
248 0 : end procedure
249 : #endif
250 :
251 : #if RK1_ENABLED
252 1 : module procedure setMemberEuc_D1_D1_RK1
253 : use pm_kind, only: RKC => RK1
254 : #include "pm_clustering@routines.inc.F90"
255 1 : end procedure
256 : #endif
257 :
258 : #undef RK_ENABLED
259 :
260 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
261 :
262 : #undef D1_D1_ENABLED
263 :
264 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
265 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
266 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
267 :
268 : #define D1_D2_ENABLED 1
269 :
270 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
271 :
272 : #define RK_ENABLED 1
273 :
274 : #if RK5_ENABLED
275 : module procedure setMemberEuc_D1_D2_RK5
276 : use pm_kind, only: RKC => RK5
277 : #include "pm_clustering@routines.inc.F90"
278 : end procedure
279 : #endif
280 :
281 : #if RK4_ENABLED
282 0 : module procedure setMemberEuc_D1_D2_RK4
283 : use pm_kind, only: RKC => RK4
284 : #include "pm_clustering@routines.inc.F90"
285 0 : end procedure
286 : #endif
287 :
288 : #if RK3_ENABLED
289 0 : module procedure setMemberEuc_D1_D2_RK3
290 : use pm_kind, only: RKC => RK3
291 : #include "pm_clustering@routines.inc.F90"
292 0 : end procedure
293 : #endif
294 :
295 : #if RK2_ENABLED
296 0 : module procedure setMemberEuc_D1_D2_RK2
297 : use pm_kind, only: RKC => RK2
298 : #include "pm_clustering@routines.inc.F90"
299 0 : end procedure
300 : #endif
301 :
302 : #if RK1_ENABLED
303 1 : module procedure setMemberEuc_D1_D2_RK1
304 : use pm_kind, only: RKC => RK1
305 : #include "pm_clustering@routines.inc.F90"
306 1 : end procedure
307 : #endif
308 :
309 : #undef RK_ENABLED
310 :
311 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
312 :
313 : #undef D1_D2_ENABLED
314 :
315 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
316 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
317 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
318 :
319 : #define D2_D2_ENABLED 1
320 :
321 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
322 :
323 : #define RK_ENABLED 1
324 :
325 : #if RK5_ENABLED
326 : module procedure setMemberEuc_D2_D2_RK5
327 : use pm_kind, only: RKC => RK5
328 : #include "pm_clustering@routines.inc.F90"
329 : end procedure
330 : #endif
331 :
332 : #if RK4_ENABLED
333 0 : module procedure setMemberEuc_D2_D2_RK4
334 : use pm_kind, only: RKC => RK4
335 : #include "pm_clustering@routines.inc.F90"
336 0 : end procedure
337 : #endif
338 :
339 : #if RK3_ENABLED
340 0 : module procedure setMemberEuc_D2_D2_RK3
341 : use pm_kind, only: RKC => RK3
342 : #include "pm_clustering@routines.inc.F90"
343 0 : end procedure
344 : #endif
345 :
346 : #if RK2_ENABLED
347 0 : module procedure setMemberEuc_D2_D2_RK2
348 : use pm_kind, only: RKC => RK2
349 : #include "pm_clustering@routines.inc.F90"
350 0 : end procedure
351 : #endif
352 :
353 : #if RK1_ENABLED
354 38 : module procedure setMemberEuc_D2_D2_RK1
355 : use pm_kind, only: RKC => RK1
356 : #include "pm_clustering@routines.inc.F90"
357 38 : end procedure
358 : #endif
359 :
360 : #undef RK_ENABLED
361 :
362 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
363 :
364 : #undef D2_D2_ENABLED
365 :
366 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
367 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
368 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
369 :
370 : #undef setMember_ENABLED
371 :
372 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
373 :
374 : #define setKmeansPP_ENABLED 1
375 :
376 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
377 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
378 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
379 :
380 : #define Default_ENABLED 1
381 :
382 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
383 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
384 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
385 :
386 : #define RNGF_ENABLED 1
387 :
388 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
389 :
390 : #define RK_ENABLED 1
391 :
392 : #if RK5_ENABLED
393 : module procedure setKmeansPPDRNGF_RK5
394 : use pm_kind, only: RKC => RK5
395 : #include "pm_clustering@routines.inc.F90"
396 : end procedure
397 : #endif
398 :
399 : #if RK4_ENABLED
400 0 : module procedure setKmeansPPDRNGF_RK4
401 : use pm_kind, only: RKC => RK4
402 : #include "pm_clustering@routines.inc.F90"
403 : end procedure
404 : #endif
405 :
406 : #if RK3_ENABLED
407 0 : module procedure setKmeansPPDRNGF_RK3
408 : use pm_kind, only: RKC => RK3
409 : #include "pm_clustering@routines.inc.F90"
410 : end procedure
411 : #endif
412 :
413 : #if RK2_ENABLED
414 0 : module procedure setKmeansPPDRNGF_RK2
415 : use pm_kind, only: RKC => RK2
416 : #include "pm_clustering@routines.inc.F90"
417 : end procedure
418 : #endif
419 :
420 : #if RK1_ENABLED
421 10 : module procedure setKmeansPPDRNGF_RK1
422 : use pm_kind, only: RKC => RK1
423 : #include "pm_clustering@routines.inc.F90"
424 : end procedure
425 : #endif
426 :
427 : #undef RK_ENABLED
428 :
429 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
430 :
431 : #undef RNGF_ENABLED
432 :
433 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
434 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
435 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
436 :
437 : #define RNGX_ENABLED 1
438 :
439 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
440 :
441 : #define RK_ENABLED 1
442 :
443 : #if RK5_ENABLED
444 : module procedure setKmeansPPDRNGX_RK5
445 : use pm_kind, only: RKC => RK5
446 : #include "pm_clustering@routines.inc.F90"
447 : end procedure
448 : #endif
449 :
450 : #if RK4_ENABLED
451 0 : module procedure setKmeansPPDRNGX_RK4
452 : use pm_kind, only: RKC => RK4
453 : #include "pm_clustering@routines.inc.F90"
454 : end procedure
455 : #endif
456 :
457 : #if RK3_ENABLED
458 0 : module procedure setKmeansPPDRNGX_RK3
459 : use pm_kind, only: RKC => RK3
460 : #include "pm_clustering@routines.inc.F90"
461 : end procedure
462 : #endif
463 :
464 : #if RK2_ENABLED
465 0 : module procedure setKmeansPPDRNGX_RK2
466 : use pm_kind, only: RKC => RK2
467 : #include "pm_clustering@routines.inc.F90"
468 : end procedure
469 : #endif
470 :
471 : #if RK1_ENABLED
472 0 : module procedure setKmeansPPDRNGX_RK1
473 : use pm_kind, only: RKC => RK1
474 : #include "pm_clustering@routines.inc.F90"
475 : end procedure
476 : #endif
477 :
478 : #undef RK_ENABLED
479 :
480 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
481 :
482 : #undef RNGX_ENABLED
483 :
484 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
485 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
486 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
487 :
488 : #undef Default_ENABLED
489 :
490 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
491 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
492 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
493 :
494 : #define Optional_ENABLED 1
495 :
496 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
497 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
498 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
499 :
500 : #define RNGF_ENABLED 1
501 :
502 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
503 :
504 : #define RK_ENABLED 1
505 :
506 : #if RK5_ENABLED
507 : module procedure setKmeansPPORNGF_RK5
508 : use pm_kind, only: RKC => RK5
509 : #include "pm_clustering@routines.inc.F90"
510 : end procedure
511 : #endif
512 :
513 : #if RK4_ENABLED
514 0 : module procedure setKmeansPPORNGF_RK4
515 : use pm_kind, only: RKC => RK4
516 : #include "pm_clustering@routines.inc.F90"
517 : end procedure
518 : #endif
519 :
520 : #if RK3_ENABLED
521 0 : module procedure setKmeansPPORNGF_RK3
522 : use pm_kind, only: RKC => RK3
523 : #include "pm_clustering@routines.inc.F90"
524 : end procedure
525 : #endif
526 :
527 : #if RK2_ENABLED
528 0 : module procedure setKmeansPPORNGF_RK2
529 : use pm_kind, only: RKC => RK2
530 : #include "pm_clustering@routines.inc.F90"
531 : end procedure
532 : #endif
533 :
534 : #if RK1_ENABLED
535 12 : module procedure setKmeansPPORNGF_RK1
536 : use pm_kind, only: RKC => RK1
537 : #include "pm_clustering@routines.inc.F90"
538 : end procedure
539 : #endif
540 :
541 : #undef RK_ENABLED
542 :
543 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
544 :
545 : #undef RNGF_ENABLED
546 :
547 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
548 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
549 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
550 :
551 : #define RNGX_ENABLED 1
552 :
553 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
554 :
555 : #define RK_ENABLED 1
556 :
557 : #if RK5_ENABLED
558 : module procedure setKmeansPPORNGX_RK5
559 : use pm_kind, only: RKC => RK5
560 : #include "pm_clustering@routines.inc.F90"
561 : end procedure
562 : #endif
563 :
564 : #if RK4_ENABLED
565 0 : module procedure setKmeansPPORNGX_RK4
566 : use pm_kind, only: RKC => RK4
567 : #include "pm_clustering@routines.inc.F90"
568 : end procedure
569 : #endif
570 :
571 : #if RK3_ENABLED
572 0 : module procedure setKmeansPPORNGX_RK3
573 : use pm_kind, only: RKC => RK3
574 : #include "pm_clustering@routines.inc.F90"
575 : end procedure
576 : #endif
577 :
578 : #if RK2_ENABLED
579 0 : module procedure setKmeansPPORNGX_RK2
580 : use pm_kind, only: RKC => RK2
581 : #include "pm_clustering@routines.inc.F90"
582 : end procedure
583 : #endif
584 :
585 : #if RK1_ENABLED
586 0 : module procedure setKmeansPPORNGX_RK1
587 : use pm_kind, only: RKC => RK1
588 : #include "pm_clustering@routines.inc.F90"
589 : end procedure
590 : #endif
591 :
592 : #undef RK_ENABLED
593 :
594 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
595 :
596 : #undef RNGX_ENABLED
597 :
598 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
599 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
600 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
601 :
602 : #undef Optional_ENABLED
603 :
604 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
605 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
606 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
607 :
608 : #undef setKmeansPP_ENABLED
609 :
610 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
611 :
612 : #define setKmeans_ENABLED 1
613 :
614 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
615 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
616 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
617 :
618 : #define Init_ENABLED 1
619 :
620 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
621 :
622 : #define RK_ENABLED 1
623 :
624 : #if RK5_ENABLED
625 : module procedure setKmeansInit_RK5
626 : use pm_kind, only: RKC => RK5
627 : #include "pm_clustering@routines.inc.F90"
628 : end procedure
629 : #endif
630 :
631 : #if RK4_ENABLED
632 0 : module procedure setKmeansInit_RK4
633 : use pm_kind, only: RKC => RK4
634 : #include "pm_clustering@routines.inc.F90"
635 0 : end procedure
636 : #endif
637 :
638 : #if RK3_ENABLED
639 0 : module procedure setKmeansInit_RK3
640 : use pm_kind, only: RKC => RK3
641 : #include "pm_clustering@routines.inc.F90"
642 0 : end procedure
643 : #endif
644 :
645 : #if RK2_ENABLED
646 0 : module procedure setKmeansInit_RK2
647 : use pm_kind, only: RKC => RK2
648 : #include "pm_clustering@routines.inc.F90"
649 0 : end procedure
650 : #endif
651 :
652 : #if RK1_ENABLED
653 11 : module procedure setKmeansInit_RK1
654 : use pm_kind, only: RKC => RK1
655 : #include "pm_clustering@routines.inc.F90"
656 11 : end procedure
657 : #endif
658 :
659 : #undef RK_ENABLED
660 :
661 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
662 :
663 : #undef Init_ENABLED
664 :
665 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
666 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
667 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
668 :
669 : #define RNGF_ENABLED 1
670 :
671 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
672 :
673 : #define RK_ENABLED 1
674 :
675 : #if RK5_ENABLED
676 : module procedure setKmeansRNGF_RK5
677 : use pm_kind, only: RKC => RK5
678 : #include "pm_clustering@routines.inc.F90"
679 : end procedure
680 : #endif
681 :
682 : #if RK4_ENABLED
683 0 : module procedure setKmeansRNGF_RK4
684 : use pm_kind, only: RKC => RK4
685 : #include "pm_clustering@routines.inc.F90"
686 0 : end procedure
687 : #endif
688 :
689 : #if RK3_ENABLED
690 0 : module procedure setKmeansRNGF_RK3
691 : use pm_kind, only: RKC => RK3
692 : #include "pm_clustering@routines.inc.F90"
693 0 : end procedure
694 : #endif
695 :
696 : #if RK2_ENABLED
697 0 : module procedure setKmeansRNGF_RK2
698 : use pm_kind, only: RKC => RK2
699 : #include "pm_clustering@routines.inc.F90"
700 0 : end procedure
701 : #endif
702 :
703 : #if RK1_ENABLED
704 10 : module procedure setKmeansRNGF_RK1
705 : use pm_kind, only: RKC => RK1
706 : #include "pm_clustering@routines.inc.F90"
707 10 : end procedure
708 : #endif
709 :
710 : #undef RK_ENABLED
711 :
712 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
713 :
714 : #undef RNGF_ENABLED
715 :
716 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
717 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
718 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
719 :
720 : #define RNGX_ENABLED 1
721 :
722 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
723 :
724 : #define RK_ENABLED 1
725 :
726 : #if RK5_ENABLED
727 : module procedure setKmeansRNGX_RK5
728 : use pm_kind, only: RKC => RK5
729 : #include "pm_clustering@routines.inc.F90"
730 : end procedure
731 : #endif
732 :
733 : #if RK4_ENABLED
734 0 : module procedure setKmeansRNGX_RK4
735 : use pm_kind, only: RKC => RK4
736 : #include "pm_clustering@routines.inc.F90"
737 0 : end procedure
738 : #endif
739 :
740 : #if RK3_ENABLED
741 0 : module procedure setKmeansRNGX_RK3
742 : use pm_kind, only: RKC => RK3
743 : #include "pm_clustering@routines.inc.F90"
744 0 : end procedure
745 : #endif
746 :
747 : #if RK2_ENABLED
748 0 : module procedure setKmeansRNGX_RK2
749 : use pm_kind, only: RKC => RK2
750 : #include "pm_clustering@routines.inc.F90"
751 0 : end procedure
752 : #endif
753 :
754 : #if RK1_ENABLED
755 0 : module procedure setKmeansRNGX_RK1
756 : use pm_kind, only: RKC => RK1
757 : #include "pm_clustering@routines.inc.F90"
758 0 : end procedure
759 : #endif
760 :
761 : #undef RK_ENABLED
762 :
763 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
764 :
765 : #undef RNGX_ENABLED
766 :
767 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
768 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
769 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
770 :
771 : #undef setKmeans_ENABLED
772 :
773 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
774 :
775 : #undef CHECK_ASSERTION
776 :
777 : end submodule routines
|