ParaMonte Fortran 2.0.0
Parallel Monte Carlo and Machine Learning Library
See the latest version documentation.
pm_arraySearch.F90
Go to the documentation of this file.
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
49
50 use pm_kind, only: SK, IK, LK
51
52 implicit none
53
54 character(*,SK), parameter :: MODULE_NAME = "@pm_arraySearch"
55
56!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
57
174 interface getBin
175
176 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
177 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
178 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
179
180 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
181
182#if SK5_ENABLED
183 PURE module function getBinDefCom_D0_D0_SK5(array, value) result(bin)
184#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
185 !DEC$ ATTRIBUTES DLLEXPORT :: getBinDefCom_D0_D0_SK5
186#endif
187 use pm_kind, only: SKG => SK5
188 character(*,SKG) , intent(in) :: array
189 character(*,SKG) , intent(in) :: value
190 integer(IK) :: bin
191 end function
192#endif
193
194#if SK4_ENABLED
195 PURE module function getBinDefCom_D0_D0_SK4(array, value) result(bin)
196#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
197 !DEC$ ATTRIBUTES DLLEXPORT :: getBinDefCom_D0_D0_SK4
198#endif
199 use pm_kind, only: SKG => SK4
200 character(*,SKG) , intent(in) :: array
201 character(*,SKG) , intent(in) :: value
202 integer(IK) :: bin
203 end function
204#endif
205
206#if SK3_ENABLED
207 PURE module function getBinDefCom_D0_D0_SK3(array, value) result(bin)
208#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
209 !DEC$ ATTRIBUTES DLLEXPORT :: getBinDefCom_D0_D0_SK3
210#endif
211 use pm_kind, only: SKG => SK3
212 character(*,SKG) , intent(in) :: array
213 character(*,SKG) , intent(in) :: value
214 integer(IK) :: bin
215 end function
216#endif
217
218#if SK2_ENABLED
219 PURE module function getBinDefCom_D0_D0_SK2(array, value) result(bin)
220#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
221 !DEC$ ATTRIBUTES DLLEXPORT :: getBinDefCom_D0_D0_SK2
222#endif
223 use pm_kind, only: SKG => SK2
224 character(*,SKG) , intent(in) :: array
225 character(*,SKG) , intent(in) :: value
226 integer(IK) :: bin
227 end function
228#endif
229
230#if SK1_ENABLED
231 PURE module function getBinDefCom_D0_D0_SK1(array, value) result(bin)
232#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
233 !DEC$ ATTRIBUTES DLLEXPORT :: getBinDefCom_D0_D0_SK1
234#endif
235 use pm_kind, only: SKG => SK1
236 character(*,SKG) , intent(in) :: array
237 character(*,SKG) , intent(in) :: value
238 integer(IK) :: bin
239 end function
240#endif
241
242 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
243
244#if SK5_ENABLED
245 PURE module function getBinDefCom_D1_D0_SK5(array, value) result(bin)
246#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
247 !DEC$ ATTRIBUTES DLLEXPORT :: getBinDefCom_D1_D0_SK5
248#endif
249 use pm_kind, only: SKG => SK5
250 character(*,SKG) , intent(in), contiguous :: array(:)
251 character(*,SKG) , intent(in) :: value
252 integer(IK) :: bin
253 end function
254#endif
255
256#if SK4_ENABLED
257 PURE module function getBinDefCom_D1_D0_SK4(array, value) result(bin)
258#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
259 !DEC$ ATTRIBUTES DLLEXPORT :: getBinDefCom_D1_D0_SK4
260#endif
261 use pm_kind, only: SKG => SK4
262 character(*,SKG) , intent(in), contiguous :: array(:)
263 character(*,SKG) , intent(in) :: value
264 integer(IK) :: bin
265 end function
266#endif
267
268#if SK3_ENABLED
269 PURE module function getBinDefCom_D1_D0_SK3(array, value) result(bin)
270#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
271 !DEC$ ATTRIBUTES DLLEXPORT :: getBinDefCom_D1_D0_SK3
272#endif
273 use pm_kind, only: SKG => SK3
274 character(*,SKG) , intent(in), contiguous :: array(:)
275 character(*,SKG) , intent(in) :: value
276 integer(IK) :: bin
277 end function
278#endif
279
280#if SK2_ENABLED
281 PURE module function getBinDefCom_D1_D0_SK2(array, value) result(bin)
282#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
283 !DEC$ ATTRIBUTES DLLEXPORT :: getBinDefCom_D1_D0_SK2
284#endif
285 use pm_kind, only: SKG => SK2
286 character(*,SKG) , intent(in), contiguous :: array(:)
287 character(*,SKG) , intent(in) :: value
288 integer(IK) :: bin
289 end function
290#endif
291
292#if SK1_ENABLED
293 PURE module function getBinDefCom_D1_D0_SK1(array, value) result(bin)
294#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
295 !DEC$ ATTRIBUTES DLLEXPORT :: getBinDefCom_D1_D0_SK1
296#endif
297 use pm_kind, only: SKG => SK1
298 character(*,SKG) , intent(in), contiguous :: array(:)
299 character(*,SKG) , intent(in) :: value
300 integer(IK) :: bin
301 end function
302#endif
303
304 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
305
306#if IK5_ENABLED
307 PURE module function getBinDefCom_D1_D0_IK5(array, value) result(bin)
308#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
309 !DEC$ ATTRIBUTES DLLEXPORT :: getBinDefCom_D1_D0_IK5
310#endif
311 use pm_kind, only: IKG => IK5
312 integer(IKG) , intent(in), contiguous :: array(:)
313 integer(IKG) , intent(in) :: value
314 integer(IK) :: bin
315 end function
316#endif
317
318#if IK4_ENABLED
319 PURE module function getBinDefCom_D1_D0_IK4(array, value) result(bin)
320#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
321 !DEC$ ATTRIBUTES DLLEXPORT :: getBinDefCom_D1_D0_IK4
322#endif
323 use pm_kind, only: IKG => IK4
324 integer(IKG) , intent(in), contiguous :: array(:)
325 integer(IKG) , intent(in) :: value
326 integer(IK) :: bin
327 end function
328#endif
329
330#if IK3_ENABLED
331 PURE module function getBinDefCom_D1_D0_IK3(array, value) result(bin)
332#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
333 !DEC$ ATTRIBUTES DLLEXPORT :: getBinDefCom_D1_D0_IK3
334#endif
335 use pm_kind, only: IKG => IK3
336 integer(IKG) , intent(in), contiguous :: array(:)
337 integer(IKG) , intent(in) :: value
338 integer(IK) :: bin
339 end function
340#endif
341
342#if IK2_ENABLED
343 PURE module function getBinDefCom_D1_D0_IK2(array, value) result(bin)
344#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
345 !DEC$ ATTRIBUTES DLLEXPORT :: getBinDefCom_D1_D0_IK2
346#endif
347 use pm_kind, only: IKG => IK2
348 integer(IKG) , intent(in), contiguous :: array(:)
349 integer(IKG) , intent(in) :: value
350 integer(IK) :: bin
351 end function
352#endif
353
354#if IK1_ENABLED
355 PURE module function getBinDefCom_D1_D0_IK1(array, value) result(bin)
356#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
357 !DEC$ ATTRIBUTES DLLEXPORT :: getBinDefCom_D1_D0_IK1
358#endif
359 use pm_kind, only: IKG => IK1
360 integer(IKG) , intent(in), contiguous :: array(:)
361 integer(IKG) , intent(in) :: value
362 integer(IK) :: bin
363 end function
364#endif
365
366 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
367
368#if CK5_ENABLED
369 PURE module function getBinDefCom_D1_D0_CK5(array, value) result(bin)
370#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
371 !DEC$ ATTRIBUTES DLLEXPORT :: getBinDefCom_D1_D0_CK5
372#endif
373 use pm_kind, only: CKG => CK5
374 complex(CKG) , intent(in), contiguous :: array(:)
375 complex(CKG) , intent(in) :: value
376 integer(IK) :: bin
377 end function
378#endif
379
380#if CK4_ENABLED
381 PURE module function getBinDefCom_D1_D0_CK4(array, value) result(bin)
382#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
383 !DEC$ ATTRIBUTES DLLEXPORT :: getBinDefCom_D1_D0_CK4
384#endif
385 use pm_kind, only: CKG => CK4
386 complex(CKG) , intent(in), contiguous :: array(:)
387 complex(CKG) , intent(in) :: value
388 integer(IK) :: bin
389 end function
390#endif
391
392#if CK3_ENABLED
393 PURE module function getBinDefCom_D1_D0_CK3(array, value) result(bin)
394#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
395 !DEC$ ATTRIBUTES DLLEXPORT :: getBinDefCom_D1_D0_CK3
396#endif
397 use pm_kind, only: CKG => CK3
398 complex(CKG) , intent(in), contiguous :: array(:)
399 complex(CKG) , intent(in) :: value
400 integer(IK) :: bin
401 end function
402#endif
403
404#if CK2_ENABLED
405 PURE module function getBinDefCom_D1_D0_CK2(array, value) result(bin)
406#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
407 !DEC$ ATTRIBUTES DLLEXPORT :: getBinDefCom_D1_D0_CK2
408#endif
409 use pm_kind, only: CKG => CK2
410 complex(CKG) , intent(in), contiguous :: array(:)
411 complex(CKG) , intent(in) :: value
412 integer(IK) :: bin
413 end function
414#endif
415
416#if CK1_ENABLED
417 PURE module function getBinDefCom_D1_D0_CK1(array, value) result(bin)
418#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
419 !DEC$ ATTRIBUTES DLLEXPORT :: getBinDefCom_D1_D0_CK1
420#endif
421 use pm_kind, only: CKG => CK1
422 complex(CKG) , intent(in), contiguous :: array(:)
423 complex(CKG) , intent(in) :: value
424 integer(IK) :: bin
425 end function
426#endif
427
428 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
429
430#if RK5_ENABLED
431 PURE module function getBinDefCom_D1_D0_RK5(array, value) result(bin)
432#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
433 !DEC$ ATTRIBUTES DLLEXPORT :: getBinDefCom_D1_D0_RK5
434#endif
435 use pm_kind, only: RKG => RK5
436 real(RKG) , intent(in), contiguous :: array(:)
437 real(RKG) , intent(in) :: value
438 integer(IK) :: bin
439 end function
440#endif
441
442#if RK4_ENABLED
443 PURE module function getBinDefCom_D1_D0_RK4(array, value) result(bin)
444#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
445 !DEC$ ATTRIBUTES DLLEXPORT :: getBinDefCom_D1_D0_RK4
446#endif
447 use pm_kind, only: RKG => RK4
448 real(RKG) , intent(in), contiguous :: array(:)
449 real(RKG) , intent(in) :: value
450 integer(IK) :: bin
451 end function
452#endif
453
454#if RK3_ENABLED
455 PURE module function getBinDefCom_D1_D0_RK3(array, value) result(bin)
456#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
457 !DEC$ ATTRIBUTES DLLEXPORT :: getBinDefCom_D1_D0_RK3
458#endif
459 use pm_kind, only: RKG => RK3
460 real(RKG) , intent(in), contiguous :: array(:)
461 real(RKG) , intent(in) :: value
462 integer(IK) :: bin
463 end function
464#endif
465
466#if RK2_ENABLED
467 PURE module function getBinDefCom_D1_D0_RK2(array, value) result(bin)
468#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
469 !DEC$ ATTRIBUTES DLLEXPORT :: getBinDefCom_D1_D0_RK2
470#endif
471 use pm_kind, only: RKG => RK2
472 real(RKG) , intent(in), contiguous :: array(:)
473 real(RKG) , intent(in) :: value
474 integer(IK) :: bin
475 end function
476#endif
477
478#if RK1_ENABLED
479 PURE module function getBinDefCom_D1_D0_RK1(array, value) result(bin)
480#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
481 !DEC$ ATTRIBUTES DLLEXPORT :: getBinDefCom_D1_D0_RK1
482#endif
483 use pm_kind, only: RKG => RK1
484 real(RKG) , intent(in), contiguous :: array(:)
485 real(RKG) , intent(in) :: value
486 integer(IK) :: bin
487 end function
488#endif
489
490 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
491
492 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
493 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
494 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
495
496 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
497
498#if SK5_ENABLED
499 module function getBinCusCom_D0_D0_SK5(array, value, isLess) result(bin)
500#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
501 !DEC$ ATTRIBUTES DLLEXPORT :: getBinCusCom_D0_D0_SK5
502#endif
503 use pm_kind, only: SKG => SK5
504 character(*,SKG) , intent(in) :: array
505 character(*,SKG) , intent(in) :: value
506 procedure(logical(LK)) :: isLess
507 integer(IK) :: bin
508 end function
509#endif
510
511#if SK4_ENABLED
512 module function getBinCusCom_D0_D0_SK4(array, value, isLess) result(bin)
513#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
514 !DEC$ ATTRIBUTES DLLEXPORT :: getBinCusCom_D0_D0_SK4
515#endif
516 use pm_kind, only: SKG => SK4
517 character(*,SKG) , intent(in) :: array
518 character(*,SKG) , intent(in) :: value
519 procedure(logical(LK)) :: isLess
520 integer(IK) :: bin
521 end function
522#endif
523
524#if SK3_ENABLED
525 module function getBinCusCom_D0_D0_SK3(array, value, isLess) result(bin)
526#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
527 !DEC$ ATTRIBUTES DLLEXPORT :: getBinCusCom_D0_D0_SK3
528#endif
529 use pm_kind, only: SKG => SK3
530 character(*,SKG) , intent(in) :: array
531 character(*,SKG) , intent(in) :: value
532 procedure(logical(LK)) :: isLess
533 integer(IK) :: bin
534 end function
535#endif
536
537#if SK2_ENABLED
538 module function getBinCusCom_D0_D0_SK2(array, value, isLess) result(bin)
539#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
540 !DEC$ ATTRIBUTES DLLEXPORT :: getBinCusCom_D0_D0_SK2
541#endif
542 use pm_kind, only: SKG => SK2
543 character(*,SKG) , intent(in) :: array
544 character(*,SKG) , intent(in) :: value
545 procedure(logical(LK)) :: isLess
546 integer(IK) :: bin
547 end function
548#endif
549
550#if SK1_ENABLED
551 module function getBinCusCom_D0_D0_SK1(array, value, isLess) result(bin)
552#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
553 !DEC$ ATTRIBUTES DLLEXPORT :: getBinCusCom_D0_D0_SK1
554#endif
555 use pm_kind, only: SKG => SK1
556 character(*,SKG) , intent(in) :: array
557 character(*,SKG) , intent(in) :: value
558 procedure(logical(LK)) :: isLess
559 integer(IK) :: bin
560 end function
561#endif
562
563 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
564
565#if SK5_ENABLED
566 module function getBinCusCom_D1_D0_SK5(array, value, isLess) result(bin)
567#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
568 !DEC$ ATTRIBUTES DLLEXPORT :: getBinCusCom_D1_D0_SK5
569#endif
570 use pm_kind, only: SKG => SK5
571 character(*,SKG) , intent(in), contiguous :: array(:)
572 character(*,SKG) , intent(in) :: value
573 procedure(logical(LK)) :: isLess
574 integer(IK) :: bin
575 end function
576#endif
577
578#if SK4_ENABLED
579 module function getBinCusCom_D1_D0_SK4(array, value, isLess) result(bin)
580#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
581 !DEC$ ATTRIBUTES DLLEXPORT :: getBinCusCom_D1_D0_SK4
582#endif
583 use pm_kind, only: SKG => SK4
584 character(*,SKG) , intent(in), contiguous :: array(:)
585 character(*,SKG) , intent(in) :: value
586 procedure(logical(LK)) :: isLess
587 integer(IK) :: bin
588 end function
589#endif
590
591#if SK3_ENABLED
592 module function getBinCusCom_D1_D0_SK3(array, value, isLess) result(bin)
593#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
594 !DEC$ ATTRIBUTES DLLEXPORT :: getBinCusCom_D1_D0_SK3
595#endif
596 use pm_kind, only: SKG => SK3
597 character(*,SKG) , intent(in), contiguous :: array(:)
598 character(*,SKG) , intent(in) :: value
599 procedure(logical(LK)) :: isLess
600 integer(IK) :: bin
601 end function
602#endif
603
604#if SK2_ENABLED
605 module function getBinCusCom_D1_D0_SK2(array, value, isLess) result(bin)
606#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
607 !DEC$ ATTRIBUTES DLLEXPORT :: getBinCusCom_D1_D0_SK2
608#endif
609 use pm_kind, only: SKG => SK2
610 character(*,SKG) , intent(in), contiguous :: array(:)
611 character(*,SKG) , intent(in) :: value
612 procedure(logical(LK)) :: isLess
613 integer(IK) :: bin
614 end function
615#endif
616
617#if SK1_ENABLED
618 module function getBinCusCom_D1_D0_SK1(array, value, isLess) result(bin)
619#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
620 !DEC$ ATTRIBUTES DLLEXPORT :: getBinCusCom_D1_D0_SK1
621#endif
622 use pm_kind, only: SKG => SK1
623 character(*,SKG) , intent(in), contiguous :: array(:)
624 character(*,SKG) , intent(in) :: value
625 procedure(logical(LK)) :: isLess
626 integer(IK) :: bin
627 end function
628#endif
629
630 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
631
632#if IK5_ENABLED
633 module function getBinCusCom_D1_D0_IK5(array, value, isLess) result(bin)
634#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
635 !DEC$ ATTRIBUTES DLLEXPORT :: getBinCusCom_D1_D0_IK5
636#endif
637 use pm_kind, only: IKG => IK5
638 integer(IKG) , intent(in), contiguous :: array(:)
639 integer(IKG) , intent(in) :: value
640 procedure(logical(LK)) :: isLess
641 integer(IK) :: bin
642 end function
643#endif
644
645#if IK4_ENABLED
646 module function getBinCusCom_D1_D0_IK4(array, value, isLess) result(bin)
647#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
648 !DEC$ ATTRIBUTES DLLEXPORT :: getBinCusCom_D1_D0_IK4
649#endif
650 use pm_kind, only: IKG => IK4
651 integer(IKG) , intent(in), contiguous :: array(:)
652 integer(IKG) , intent(in) :: value
653 procedure(logical(LK)) :: isLess
654 integer(IK) :: bin
655 end function
656#endif
657
658#if IK3_ENABLED
659 module function getBinCusCom_D1_D0_IK3(array, value, isLess) result(bin)
660#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
661 !DEC$ ATTRIBUTES DLLEXPORT :: getBinCusCom_D1_D0_IK3
662#endif
663 use pm_kind, only: IKG => IK3
664 integer(IKG) , intent(in), contiguous :: array(:)
665 integer(IKG) , intent(in) :: value
666 procedure(logical(LK)) :: isLess
667 integer(IK) :: bin
668 end function
669#endif
670
671#if IK2_ENABLED
672 module function getBinCusCom_D1_D0_IK2(array, value, isLess) result(bin)
673#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
674 !DEC$ ATTRIBUTES DLLEXPORT :: getBinCusCom_D1_D0_IK2
675#endif
676 use pm_kind, only: IKG => IK2
677 integer(IKG) , intent(in), contiguous :: array(:)
678 integer(IKG) , intent(in) :: value
679 procedure(logical(LK)) :: isLess
680 integer(IK) :: bin
681 end function
682#endif
683
684#if IK1_ENABLED
685 module function getBinCusCom_D1_D0_IK1(array, value, isLess) result(bin)
686#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
687 !DEC$ ATTRIBUTES DLLEXPORT :: getBinCusCom_D1_D0_IK1
688#endif
689 use pm_kind, only: IKG => IK1
690 integer(IKG) , intent(in), contiguous :: array(:)
691 integer(IKG) , intent(in) :: value
692 procedure(logical(LK)) :: isLess
693 integer(IK) :: bin
694 end function
695#endif
696
697 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
698
699#if CK5_ENABLED
700 module function getBinCusCom_D1_D0_CK5(array, value, isLess) result(bin)
701#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
702 !DEC$ ATTRIBUTES DLLEXPORT :: getBinCusCom_D1_D0_CK5
703#endif
704 use pm_kind, only: CKG => CK5
705 complex(CKG) , intent(in), contiguous :: array(:)
706 complex(CKG) , intent(in) :: value
707 procedure(logical(LK)) :: isLess
708 integer(IK) :: bin
709 end function
710#endif
711
712#if CK4_ENABLED
713 module function getBinCusCom_D1_D0_CK4(array, value, isLess) result(bin)
714#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
715 !DEC$ ATTRIBUTES DLLEXPORT :: getBinCusCom_D1_D0_CK4
716#endif
717 use pm_kind, only: CKG => CK4
718 complex(CKG) , intent(in), contiguous :: array(:)
719 complex(CKG) , intent(in) :: value
720 procedure(logical(LK)) :: isLess
721 integer(IK) :: bin
722 end function
723#endif
724
725#if CK3_ENABLED
726 module function getBinCusCom_D1_D0_CK3(array, value, isLess) result(bin)
727#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
728 !DEC$ ATTRIBUTES DLLEXPORT :: getBinCusCom_D1_D0_CK3
729#endif
730 use pm_kind, only: CKG => CK3
731 complex(CKG) , intent(in), contiguous :: array(:)
732 complex(CKG) , intent(in) :: value
733 procedure(logical(LK)) :: isLess
734 integer(IK) :: bin
735 end function
736#endif
737
738#if CK2_ENABLED
739 module function getBinCusCom_D1_D0_CK2(array, value, isLess) result(bin)
740#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
741 !DEC$ ATTRIBUTES DLLEXPORT :: getBinCusCom_D1_D0_CK2
742#endif
743 use pm_kind, only: CKG => CK2
744 complex(CKG) , intent(in), contiguous :: array(:)
745 complex(CKG) , intent(in) :: value
746 procedure(logical(LK)) :: isLess
747 integer(IK) :: bin
748 end function
749#endif
750
751#if CK1_ENABLED
752 module function getBinCusCom_D1_D0_CK1(array, value, isLess) result(bin)
753#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
754 !DEC$ ATTRIBUTES DLLEXPORT :: getBinCusCom_D1_D0_CK1
755#endif
756 use pm_kind, only: CKG => CK1
757 complex(CKG) , intent(in), contiguous :: array(:)
758 complex(CKG) , intent(in) :: value
759 procedure(logical(LK)) :: isLess
760 integer(IK) :: bin
761 end function
762#endif
763
764 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
765
766#if RK5_ENABLED
767 module function getBinCusCom_D1_D0_RK5(array, value, isLess) result(bin)
768#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
769 !DEC$ ATTRIBUTES DLLEXPORT :: getBinCusCom_D1_D0_RK5
770#endif
771 use pm_kind, only: RKG => RK5
772 real(RKG) , intent(in), contiguous :: array(:)
773 real(RKG) , intent(in) :: value
774 procedure(logical(LK)) :: isLess
775 integer(IK) :: bin
776 end function
777#endif
778
779#if RK4_ENABLED
780 module function getBinCusCom_D1_D0_RK4(array, value, isLess) result(bin)
781#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
782 !DEC$ ATTRIBUTES DLLEXPORT :: getBinCusCom_D1_D0_RK4
783#endif
784 use pm_kind, only: RKG => RK4
785 real(RKG) , intent(in), contiguous :: array(:)
786 real(RKG) , intent(in) :: value
787 procedure(logical(LK)) :: isLess
788 integer(IK) :: bin
789 end function
790#endif
791
792#if RK3_ENABLED
793 module function getBinCusCom_D1_D0_RK3(array, value, isLess) result(bin)
794#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
795 !DEC$ ATTRIBUTES DLLEXPORT :: getBinCusCom_D1_D0_RK3
796#endif
797 use pm_kind, only: RKG => RK3
798 real(RKG) , intent(in), contiguous :: array(:)
799 real(RKG) , intent(in) :: value
800 procedure(logical(LK)) :: isLess
801 integer(IK) :: bin
802 end function
803#endif
804
805#if RK2_ENABLED
806 module function getBinCusCom_D1_D0_RK2(array, value, isLess) result(bin)
807#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
808 !DEC$ ATTRIBUTES DLLEXPORT :: getBinCusCom_D1_D0_RK2
809#endif
810 use pm_kind, only: RKG => RK2
811 real(RKG) , intent(in), contiguous :: array(:)
812 real(RKG) , intent(in) :: value
813 procedure(logical(LK)) :: isLess
814 integer(IK) :: bin
815 end function
816#endif
817
818#if RK1_ENABLED
819 module function getBinCusCom_D1_D0_RK1(array, value, isLess) result(bin)
820#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
821 !DEC$ ATTRIBUTES DLLEXPORT :: getBinCusCom_D1_D0_RK1
822#endif
823 use pm_kind, only: RKG => RK1
824 real(RKG) , intent(in), contiguous :: array(:)
825 real(RKG) , intent(in) :: value
826 procedure(logical(LK)) :: isLess
827 integer(IK) :: bin
828 end function
829#endif
830
831 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
832
833 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
834 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
835 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
836
837 end interface
838
839!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
840
841end module pm_arraySearch ! LCOV_EXCL_LINE
Generate and return bin, the index of the element of the input ascending-ordered array,...
This module contains procedures and generic interfaces for finding the specific array index whose ele...
character(*, SK), parameter MODULE_NAME
This module defines the relevant Fortran kind type-parameters frequently used in the ParaMonte librar...
Definition: pm_kind.F90:268
integer, parameter SK5
Definition: pm_kind.F90:326
integer, parameter IK3
Definition: pm_kind.F90:368
integer, parameter RK5
Definition: pm_kind.F90:478
integer, parameter RK4
Definition: pm_kind.F90:489
integer, parameter SK1
Definition: pm_kind.F90:346
integer, parameter IK1
Definition: pm_kind.F90:382
integer, parameter RK2
Definition: pm_kind.F90:511
integer, parameter CK1
Definition: pm_kind.F90:464
integer, parameter RK3
Definition: pm_kind.F90:500
integer, parameter LK
The default logical kind in the ParaMonte library: kind(.true.) in Fortran, kind(....
Definition: pm_kind.F90:541
integer, parameter CK5
Definition: pm_kind.F90:420
integer, parameter CK4
Definition: pm_kind.F90:431
integer, parameter SK4
Definition: pm_kind.F90:331
integer, parameter IK2
Definition: pm_kind.F90:375
integer, parameter CK2
Definition: pm_kind.F90:453
integer, parameter SK2
Definition: pm_kind.F90:341
integer, parameter CK3
Definition: pm_kind.F90:442
integer, parameter IK
The default integer kind in the ParaMonte library: int32 in Fortran, c_int32_t in C-Fortran Interoper...
Definition: pm_kind.F90:540
integer, parameter IK4
Definition: pm_kind.F90:361
integer, parameter IK5
Definition: pm_kind.F90:354
integer, parameter SK
The default character kind in the ParaMonte library: kind("a") in Fortran, c_char in C-Fortran Intero...
Definition: pm_kind.F90:539
integer, parameter RK1
Definition: pm_kind.F90:522
integer, parameter SK3
Definition: pm_kind.F90:336