ParaMonte Fortran 2.0.0
Parallel Monte Carlo and Machine Learning Library
See the latest version documentation.
pm_distUnifPar.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
89
90!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
91
93
94 use pm_kind, only: SK, IK, LK
95
96 implicit none
97
98 character(*, SK), parameter :: MODULE_NAME = "@pm_distUnifPar"
99
100!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
101
136 end type
137
138!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
139
212
213 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
214
215#if RK5_ENABLED
216 PURE elemental module function getUnifCubLogPDF_RK5(logLenEdge, ndim) result(logPDF)
217#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
218 !DEC$ ATTRIBUTES DLLEXPORT :: getUnifCubLogPDF_RK5
219#endif
220 use pm_kind, only: RKG => RK5
221 integer(IK) , intent(in) :: ndim
222 real(RKG) , intent(in) :: logLenEdge
223 real(RKG) :: logPDF
224 end function
225#endif
226
227#if RK4_ENABLED
228 PURE elemental module function getUnifCubLogPDF_RK4(logLenEdge, ndim) result(logPDF)
229#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
230 !DEC$ ATTRIBUTES DLLEXPORT :: getUnifCubLogPDF_RK4
231#endif
232 use pm_kind, only: RKG => RK4
233 integer(IK) , intent(in) :: ndim
234 real(RKG) , intent(in) :: logLenEdge
235 real(RKG) :: logPDF
236 end function
237#endif
238
239#if RK3_ENABLED
240 PURE elemental module function getUnifCubLogPDF_RK3(logLenEdge, ndim) result(logPDF)
241#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
242 !DEC$ ATTRIBUTES DLLEXPORT :: getUnifCubLogPDF_RK3
243#endif
244 use pm_kind, only: RKG => RK3
245 integer(IK) , intent(in) :: ndim
246 real(RKG) , intent(in) :: logLenEdge
247 real(RKG) :: logPDF
248 end function
249#endif
250
251#if RK2_ENABLED
252 PURE elemental module function getUnifCubLogPDF_RK2(logLenEdge, ndim) result(logPDF)
253#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
254 !DEC$ ATTRIBUTES DLLEXPORT :: getUnifCubLogPDF_RK2
255#endif
256 use pm_kind, only: RKG => RK2
257 integer(IK) , intent(in) :: ndim
258 real(RKG) , intent(in) :: logLenEdge
259 real(RKG) :: logPDF
260 end function
261#endif
262
263#if RK1_ENABLED
264 PURE elemental module function getUnifCubLogPDF_RK1(logLenEdge, ndim) result(logPDF)
265#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
266 !DEC$ ATTRIBUTES DLLEXPORT :: getUnifCubLogPDF_RK1
267#endif
268 use pm_kind, only: RKG => RK1
269 integer(IK) , intent(in) :: ndim
270 real(RKG) , intent(in) :: logLenEdge
271 real(RKG) :: logPDF
272 end function
273#endif
274
275 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
276
277#if RK5_ENABLED
278 PURE module function getUnifRecLogPDF_RK5(logLenEdge) result(logPDF)
279#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
280 !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRecLogPDF_RK5
281#endif
282 use pm_kind, only: RKG => RK5
283 real(RKG) , intent(in) , contiguous :: logLenEdge(:)
284 real(RKG) :: logPDF
285 end function
286#endif
287
288#if RK4_ENABLED
289 PURE module function getUnifRecLogPDF_RK4(logLenEdge) result(logPDF)
290#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
291 !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRecLogPDF_RK4
292#endif
293 use pm_kind, only: RKG => RK4
294 real(RKG) , intent(in) , contiguous :: logLenEdge(:)
295 real(RKG) :: logPDF
296 end function
297#endif
298
299#if RK3_ENABLED
300 PURE module function getUnifRecLogPDF_RK3(logLenEdge) result(logPDF)
301#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
302 !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRecLogPDF_RK3
303#endif
304 use pm_kind, only: RKG => RK3
305 real(RKG) , intent(in) , contiguous :: logLenEdge(:)
306 real(RKG) :: logPDF
307 end function
308#endif
309
310#if RK2_ENABLED
311 PURE module function getUnifRecLogPDF_RK2(logLenEdge) result(logPDF)
312#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
313 !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRecLogPDF_RK2
314#endif
315 use pm_kind, only: RKG => RK2
316 real(RKG) , intent(in) , contiguous :: logLenEdge(:)
317 real(RKG) :: logPDF
318 end function
319#endif
320
321#if RK1_ENABLED
322 PURE module function getUnifRecLogPDF_RK1(logLenEdge) result(logPDF)
323#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
324 !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRecLogPDF_RK1
325#endif
326 use pm_kind, only: RKG => RK1
327 real(RKG) , intent(in) , contiguous :: logLenEdge(:)
328 real(RKG) :: logPDF
329 end function
330#endif
331
332 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
333
334#if RK5_ENABLED
335 PURE module function getUnifParLogPDF_RK5(repmat) result(logPDF)
336#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
337 !DEC$ ATTRIBUTES DLLEXPORT :: getUnifParLogPDF_RK5
338#endif
339 use pm_kind, only: RKG => RK5
340 real(RKG) , intent(in) , contiguous :: repmat(:,:)
341 real(RKG) :: logPDF
342 end function
343#endif
344
345#if RK4_ENABLED
346 PURE module function getUnifParLogPDF_RK4(repmat) result(logPDF)
347#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
348 !DEC$ ATTRIBUTES DLLEXPORT :: getUnifParLogPDF_RK4
349#endif
350 use pm_kind, only: RKG => RK4
351 real(RKG) , intent(in) , contiguous :: repmat(:,:)
352 real(RKG) :: logPDF
353 end function
354#endif
355
356#if RK3_ENABLED
357 PURE module function getUnifParLogPDF_RK3(repmat) result(logPDF)
358#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
359 !DEC$ ATTRIBUTES DLLEXPORT :: getUnifParLogPDF_RK3
360#endif
361 use pm_kind, only: RKG => RK3
362 real(RKG) , intent(in) , contiguous :: repmat(:,:)
363 real(RKG) :: logPDF
364 end function
365#endif
366
367#if RK2_ENABLED
368 PURE module function getUnifParLogPDF_RK2(repmat) result(logPDF)
369#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
370 !DEC$ ATTRIBUTES DLLEXPORT :: getUnifParLogPDF_RK2
371#endif
372 use pm_kind, only: RKG => RK2
373 real(RKG) , intent(in) , contiguous :: repmat(:,:)
374 real(RKG) :: logPDF
375 end function
376#endif
377
378#if RK1_ENABLED
379 PURE module function getUnifParLogPDF_RK1(repmat) result(logPDF)
380#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
381 !DEC$ ATTRIBUTES DLLEXPORT :: getUnifParLogPDF_RK1
382#endif
383 use pm_kind, only: RKG => RK1
384 real(RKG) , intent(in) , contiguous :: repmat(:,:)
385 real(RKG) :: logPDF
386 end function
387#endif
388
389 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
390
391 end interface
392
393!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
394
471
472 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
473
474#if RK5_ENABLED
475 impure module function getUnifCubRandDU_RK5(ub, ndim) result(rand)
476#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
477 !DEC$ ATTRIBUTES DLLEXPORT :: getUnifCubRandDU_RK5
478#endif
479 use pm_kind, only: RKG => RK5
480 integer(IK) , intent(in) :: ndim
481 real(RKG) , intent(in) :: ub
482 real(RKG) :: rand(ndim)
483 end function
484#endif
485
486#if RK4_ENABLED
487 impure module function getUnifCubRandDU_RK4(ub, ndim) result(rand)
488#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
489 !DEC$ ATTRIBUTES DLLEXPORT :: getUnifCubRandDU_RK4
490#endif
491 use pm_kind, only: RKG => RK4
492 integer(IK) , intent(in) :: ndim
493 real(RKG) , intent(in) :: ub
494 real(RKG) :: rand(ndim)
495 end function
496#endif
497
498#if RK3_ENABLED
499 impure module function getUnifCubRandDU_RK3(ub, ndim) result(rand)
500#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
501 !DEC$ ATTRIBUTES DLLEXPORT :: getUnifCubRandDU_RK3
502#endif
503 use pm_kind, only: RKG => RK3
504 integer(IK) , intent(in) :: ndim
505 real(RKG) , intent(in) :: ub
506 real(RKG) :: rand(ndim)
507 end function
508#endif
509
510#if RK2_ENABLED
511 impure module function getUnifCubRandDU_RK2(ub, ndim) result(rand)
512#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
513 !DEC$ ATTRIBUTES DLLEXPORT :: getUnifCubRandDU_RK2
514#endif
515 use pm_kind, only: RKG => RK2
516 integer(IK) , intent(in) :: ndim
517 real(RKG) , intent(in) :: ub
518 real(RKG) :: rand(ndim)
519 end function
520#endif
521
522#if RK1_ENABLED
523 impure module function getUnifCubRandDU_RK1(ub, ndim) result(rand)
524#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
525 !DEC$ ATTRIBUTES DLLEXPORT :: getUnifCubRandDU_RK1
526#endif
527 use pm_kind, only: RKG => RK1
528 integer(IK) , intent(in) :: ndim
529 real(RKG) , intent(in) :: ub
530 real(RKG) :: rand(ndim)
531 end function
532#endif
533
534 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
535
536#if RK5_ENABLED
537 impure module function getUnifCubRandLU_RK5(lb, ub, ndim) result(rand)
538#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
539 !DEC$ ATTRIBUTES DLLEXPORT :: getUnifCubRandLU_RK5
540#endif
541 use pm_kind, only: RKG => RK5
542 integer(IK) , intent(in) :: ndim
543 real(RKG) , intent(in) :: lb, ub
544 real(RKG) :: rand(ndim)
545 end function
546#endif
547
548#if RK4_ENABLED
549 impure module function getUnifCubRandLU_RK4(lb, ub, ndim) result(rand)
550#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
551 !DEC$ ATTRIBUTES DLLEXPORT :: getUnifCubRandLU_RK4
552#endif
553 use pm_kind, only: RKG => RK4
554 integer(IK) , intent(in) :: ndim
555 real(RKG) , intent(in) :: lb, ub
556 real(RKG) :: rand(ndim)
557 end function
558#endif
559
560#if RK3_ENABLED
561 impure module function getUnifCubRandLU_RK3(lb, ub, ndim) result(rand)
562#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
563 !DEC$ ATTRIBUTES DLLEXPORT :: getUnifCubRandLU_RK3
564#endif
565 use pm_kind, only: RKG => RK3
566 integer(IK) , intent(in) :: ndim
567 real(RKG) , intent(in) :: lb, ub
568 real(RKG) :: rand(ndim)
569 end function
570#endif
571
572#if RK2_ENABLED
573 impure module function getUnifCubRandLU_RK2(lb, ub, ndim) result(rand)
574#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
575 !DEC$ ATTRIBUTES DLLEXPORT :: getUnifCubRandLU_RK2
576#endif
577 use pm_kind, only: RKG => RK2
578 integer(IK) , intent(in) :: ndim
579 real(RKG) , intent(in) :: lb, ub
580 real(RKG) :: rand(ndim)
581 end function
582#endif
583
584#if RK1_ENABLED
585 impure module function getUnifCubRandLU_RK1(lb, ub, ndim) result(rand)
586#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
587 !DEC$ ATTRIBUTES DLLEXPORT :: getUnifCubRandLU_RK1
588#endif
589 use pm_kind, only: RKG => RK1
590 integer(IK) , intent(in) :: ndim
591 real(RKG) , intent(in) :: lb, ub
592 real(RKG) :: rand(ndim)
593 end function
594#endif
595
596 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
597
598#if RK5_ENABLED
599 impure module function getUnifRecRandDU_RK5(ub) result(rand)
600#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
601 !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRecRandDU_RK5
602#endif
603 use pm_kind, only: RKG => RK5
604 real(RKG) , intent(in) , contiguous :: ub(:)
605 real(RKG) :: rand(size(ub, 1, IK))
606 end function
607#endif
608
609#if RK4_ENABLED
610 impure module function getUnifRecRandDU_RK4(ub) result(rand)
611#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
612 !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRecRandDU_RK4
613#endif
614 use pm_kind, only: RKG => RK4
615 real(RKG) , intent(in) , contiguous :: ub(:)
616 real(RKG) :: rand(size(ub, 1, IK))
617 end function
618#endif
619
620#if RK3_ENABLED
621 impure module function getUnifRecRandDU_RK3(ub) result(rand)
622#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
623 !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRecRandDU_RK3
624#endif
625 use pm_kind, only: RKG => RK3
626 real(RKG) , intent(in) , contiguous :: ub(:)
627 real(RKG) :: rand(size(ub, 1, IK))
628 end function
629#endif
630
631#if RK2_ENABLED
632 impure module function getUnifRecRandDU_RK2(ub) result(rand)
633#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
634 !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRecRandDU_RK2
635#endif
636 use pm_kind, only: RKG => RK2
637 real(RKG) , intent(in) , contiguous :: ub(:)
638 real(RKG) :: rand(size(ub, 1, IK))
639 end function
640#endif
641
642#if RK1_ENABLED
643 impure module function getUnifRecRandDU_RK1(ub) result(rand)
644#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
645 !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRecRandDU_RK1
646#endif
647 use pm_kind, only: RKG => RK1
648 real(RKG) , intent(in) , contiguous :: ub(:)
649 real(RKG) :: rand(size(ub, 1, IK))
650 end function
651#endif
652
653 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
654
655#if RK5_ENABLED
656 impure module function getUnifRecRandLU_RK5(lb, ub) result(rand)
657#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
658 !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRecRandLU_RK5
659#endif
660 use pm_kind, only: RKG => RK5
661 real(RKG) , intent(in) , contiguous :: lb(:), ub(:)
662 real(RKG) :: rand(size(ub, 1, IK))
663 end function
664#endif
665
666#if RK4_ENABLED
667 impure module function getUnifRecRandLU_RK4(lb, ub) result(rand)
668#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
669 !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRecRandLU_RK4
670#endif
671 use pm_kind, only: RKG => RK4
672 real(RKG) , intent(in) , contiguous :: lb(:), ub(:)
673 real(RKG) :: rand(size(ub, 1, IK))
674 end function
675#endif
676
677#if RK3_ENABLED
678 impure module function getUnifRecRandLU_RK3(lb, ub) result(rand)
679#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
680 !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRecRandLU_RK3
681#endif
682 use pm_kind, only: RKG => RK3
683 real(RKG) , intent(in) , contiguous :: lb(:), ub(:)
684 real(RKG) :: rand(size(ub, 1, IK))
685 end function
686#endif
687
688#if RK2_ENABLED
689 impure module function getUnifRecRandLU_RK2(lb, ub) result(rand)
690#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
691 !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRecRandLU_RK2
692#endif
693 use pm_kind, only: RKG => RK2
694 real(RKG) , intent(in) , contiguous :: lb(:), ub(:)
695 real(RKG) :: rand(size(ub, 1, IK))
696 end function
697#endif
698
699#if RK1_ENABLED
700 impure module function getUnifRecRandLU_RK1(lb, ub) result(rand)
701#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
702 !DEC$ ATTRIBUTES DLLEXPORT :: getUnifRecRandLU_RK1
703#endif
704 use pm_kind, only: RKG => RK1
705 real(RKG) , intent(in) , contiguous :: lb(:), ub(:)
706 real(RKG) :: rand(size(ub, 1, IK))
707 end function
708#endif
709
710 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
711
712#if RK5_ENABLED
713 impure module function getUnifParRandDU_RK5(ub) result(rand)
714#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
715 !DEC$ ATTRIBUTES DLLEXPORT :: getUnifParRandDU_RK5
716#endif
717 use pm_kind, only: RKG => RK5
718 real(RKG) , intent(in) , contiguous :: ub(:,:)
719 real(RKG) :: rand(size(ub, 1, IK))
720 end function
721#endif
722
723#if RK4_ENABLED
724 impure module function getUnifParRandDU_RK4(ub) result(rand)
725#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
726 !DEC$ ATTRIBUTES DLLEXPORT :: getUnifParRandDU_RK4
727#endif
728 use pm_kind, only: RKG => RK4
729 real(RKG) , intent(in) , contiguous :: ub(:,:)
730 real(RKG) :: rand(size(ub, 1, IK))
731 end function
732#endif
733
734#if RK3_ENABLED
735 impure module function getUnifParRandDU_RK3(ub) result(rand)
736#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
737 !DEC$ ATTRIBUTES DLLEXPORT :: getUnifParRandDU_RK3
738#endif
739 use pm_kind, only: RKG => RK3
740 real(RKG) , intent(in) , contiguous :: ub(:,:)
741 real(RKG) :: rand(size(ub, 1, IK))
742 end function
743#endif
744
745#if RK2_ENABLED
746 impure module function getUnifParRandDU_RK2(ub) result(rand)
747#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
748 !DEC$ ATTRIBUTES DLLEXPORT :: getUnifParRandDU_RK2
749#endif
750 use pm_kind, only: RKG => RK2
751 real(RKG) , intent(in) , contiguous :: ub(:,:)
752 real(RKG) :: rand(size(ub, 1, IK))
753 end function
754#endif
755
756#if RK1_ENABLED
757 impure module function getUnifParRandDU_RK1(ub) result(rand)
758#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
759 !DEC$ ATTRIBUTES DLLEXPORT :: getUnifParRandDU_RK1
760#endif
761 use pm_kind, only: RKG => RK1
762 real(RKG) , intent(in) , contiguous :: ub(:,:)
763 real(RKG) :: rand(size(ub, 1, IK))
764 end function
765#endif
766
767 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
768
769#if RK5_ENABLED
770 impure module function getUnifParRandLU_RK5(lb, ub) result(rand)
771#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
772 !DEC$ ATTRIBUTES DLLEXPORT :: getUnifParRandLU_RK5
773#endif
774 use pm_kind, only: RKG => RK5
775 real(RKG) , intent(in) , contiguous :: lb(:), ub(:,:)
776 real(RKG) :: rand(size(ub, 1, IK))
777 end function
778#endif
779
780#if RK4_ENABLED
781 impure module function getUnifParRandLU_RK4(lb, ub) result(rand)
782#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
783 !DEC$ ATTRIBUTES DLLEXPORT :: getUnifParRandLU_RK4
784#endif
785 use pm_kind, only: RKG => RK4
786 real(RKG) , intent(in) , contiguous :: lb(:), ub(:,:)
787 real(RKG) :: rand(size(ub, 1, IK))
788 end function
789#endif
790
791#if RK3_ENABLED
792 impure module function getUnifParRandLU_RK3(lb, ub) result(rand)
793#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
794 !DEC$ ATTRIBUTES DLLEXPORT :: getUnifParRandLU_RK3
795#endif
796 use pm_kind, only: RKG => RK3
797 real(RKG) , intent(in) , contiguous :: lb(:), ub(:,:)
798 real(RKG) :: rand(size(ub, 1, IK))
799 end function
800#endif
801
802#if RK2_ENABLED
803 impure module function getUnifParRandLU_RK2(lb, ub) result(rand)
804#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
805 !DEC$ ATTRIBUTES DLLEXPORT :: getUnifParRandLU_RK2
806#endif
807 use pm_kind, only: RKG => RK2
808 real(RKG) , intent(in) , contiguous :: lb(:), ub(:,:)
809 real(RKG) :: rand(size(ub, 1, IK))
810 end function
811#endif
812
813#if RK1_ENABLED
814 impure module function getUnifParRandLU_RK1(lb, ub) result(rand)
815#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
816 !DEC$ ATTRIBUTES DLLEXPORT :: getUnifParRandLU_RK1
817#endif
818 use pm_kind, only: RKG => RK1
819 real(RKG) , intent(in) , contiguous :: lb(:), ub(:,:)
820 real(RKG) :: rand(size(ub, 1, IK))
821 end function
822#endif
823
824 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
825
826 end interface
827
828!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
829
842
921
922 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
923
924#if RK5_ENABLED
925 PURE module subroutine setUnifCubRandDU_RK5(rand, ub)
926#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
927 !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCubRandDU_RK5
928#endif
929 use pm_kind, only: RKG => RK5
930 real(RKG) , intent(inout) , contiguous :: rand(:)
931 real(RKG) , intent(in) :: ub
932 end subroutine
933#endif
934
935#if RK4_ENABLED
936 PURE module subroutine setUnifCubRandDU_RK4(rand, ub)
937#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
938 !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCubRandDU_RK4
939#endif
940 use pm_kind, only: RKG => RK4
941 real(RKG) , intent(inout) , contiguous :: rand(:)
942 real(RKG) , intent(in) :: ub
943 end subroutine
944#endif
945
946#if RK3_ENABLED
947 PURE module subroutine setUnifCubRandDU_RK3(rand, ub)
948#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
949 !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCubRandDU_RK3
950#endif
951 use pm_kind, only: RKG => RK3
952 real(RKG) , intent(inout) , contiguous :: rand(:)
953 real(RKG) , intent(in) :: ub
954 end subroutine
955#endif
956
957#if RK2_ENABLED
958 PURE module subroutine setUnifCubRandDU_RK2(rand, ub)
959#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
960 !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCubRandDU_RK2
961#endif
962 use pm_kind, only: RKG => RK2
963 real(RKG) , intent(inout) , contiguous :: rand(:)
964 real(RKG) , intent(in) :: ub
965 end subroutine
966#endif
967
968#if RK1_ENABLED
969 PURE module subroutine setUnifCubRandDU_RK1(rand, ub)
970#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
971 !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCubRandDU_RK1
972#endif
973 use pm_kind, only: RKG => RK1
974 real(RKG) , intent(inout) , contiguous :: rand(:)
975 real(RKG) , intent(in) :: ub
976 end subroutine
977#endif
978
979 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
980
981#if RK5_ENABLED
982 PURE module subroutine setUnifCubRandLU_RK5(rand, lb, ub)
983#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
984 !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCubRandLU_RK5
985#endif
986 use pm_kind, only: RKG => RK5
987 real(RKG) , intent(inout) , contiguous :: rand(:)
988 real(RKG) , intent(in) :: lb, ub
989 end subroutine
990#endif
991
992#if RK4_ENABLED
993 PURE module subroutine setUnifCubRandLU_RK4(rand, lb, ub)
994#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
995 !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCubRandLU_RK4
996#endif
997 use pm_kind, only: RKG => RK4
998 real(RKG) , intent(inout) , contiguous :: rand(:)
999 real(RKG) , intent(in) :: lb, ub
1000 end subroutine
1001#endif
1002
1003#if RK3_ENABLED
1004 PURE module subroutine setUnifCubRandLU_RK3(rand, lb, ub)
1005#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1006 !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCubRandLU_RK3
1007#endif
1008 use pm_kind, only: RKG => RK3
1009 real(RKG) , intent(inout) , contiguous :: rand(:)
1010 real(RKG) , intent(in) :: lb, ub
1011 end subroutine
1012#endif
1013
1014#if RK2_ENABLED
1015 PURE module subroutine setUnifCubRandLU_RK2(rand, lb, ub)
1016#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1017 !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCubRandLU_RK2
1018#endif
1019 use pm_kind, only: RKG => RK2
1020 real(RKG) , intent(inout) , contiguous :: rand(:)
1021 real(RKG) , intent(in) :: lb, ub
1022 end subroutine
1023#endif
1024
1025#if RK1_ENABLED
1026 PURE module subroutine setUnifCubRandLU_RK1(rand, lb, ub)
1027#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1028 !DEC$ ATTRIBUTES DLLEXPORT :: setUnifCubRandLU_RK1
1029#endif
1030 use pm_kind, only: RKG => RK1
1031 real(RKG) , intent(inout) , contiguous :: rand(:)
1032 real(RKG) , intent(in) :: lb, ub
1033 end subroutine
1034#endif
1035
1036 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1037
1038#if RK5_ENABLED
1039 PURE module subroutine setUnifRecRandDU_RK5(rand, ub)
1040#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1041 !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRecRandDU_RK5
1042#endif
1043 use pm_kind, only: RKG => RK5
1044 real(RKG) , intent(inout) , contiguous :: rand(:)
1045 real(RKG) , intent(in) , contiguous :: ub(:)
1046 end subroutine
1047#endif
1048
1049#if RK4_ENABLED
1050 PURE module subroutine setUnifRecRandDU_RK4(rand, ub)
1051#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1052 !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRecRandDU_RK4
1053#endif
1054 use pm_kind, only: RKG => RK4
1055 real(RKG) , intent(inout) , contiguous :: rand(:)
1056 real(RKG) , intent(in) , contiguous :: ub(:)
1057 end subroutine
1058#endif
1059
1060#if RK3_ENABLED
1061 PURE module subroutine setUnifRecRandDU_RK3(rand, ub)
1062#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1063 !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRecRandDU_RK3
1064#endif
1065 use pm_kind, only: RKG => RK3
1066 real(RKG) , intent(inout) , contiguous :: rand(:)
1067 real(RKG) , intent(in) , contiguous :: ub(:)
1068 end subroutine
1069#endif
1070
1071#if RK2_ENABLED
1072 PURE module subroutine setUnifRecRandDU_RK2(rand, ub)
1073#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1074 !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRecRandDU_RK2
1075#endif
1076 use pm_kind, only: RKG => RK2
1077 real(RKG) , intent(inout) , contiguous :: rand(:)
1078 real(RKG) , intent(in) , contiguous :: ub(:)
1079 end subroutine
1080#endif
1081
1082#if RK1_ENABLED
1083 PURE module subroutine setUnifRecRandDU_RK1(rand, ub)
1084#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1085 !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRecRandDU_RK1
1086#endif
1087 use pm_kind, only: RKG => RK1
1088 real(RKG) , intent(inout) , contiguous :: rand(:)
1089 real(RKG) , intent(in) , contiguous :: ub(:)
1090 end subroutine
1091#endif
1092
1093 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1094
1095#if RK5_ENABLED
1096 PURE module subroutine setUnifRecRandLU_RK5(rand, lb, ub)
1097#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1098 !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRecRandLU_RK5
1099#endif
1100 use pm_kind, only: RKG => RK5
1101 real(RKG) , intent(inout) , contiguous :: rand(:)
1102 real(RKG) , intent(in) , contiguous :: lb(:), ub(:)
1103 end subroutine
1104#endif
1105
1106#if RK4_ENABLED
1107 PURE module subroutine setUnifRecRandLU_RK4(rand, lb, ub)
1108#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1109 !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRecRandLU_RK4
1110#endif
1111 use pm_kind, only: RKG => RK4
1112 real(RKG) , intent(inout) , contiguous :: rand(:)
1113 real(RKG) , intent(in) , contiguous :: lb(:), ub(:)
1114 end subroutine
1115#endif
1116
1117#if RK3_ENABLED
1118 PURE module subroutine setUnifRecRandLU_RK3(rand, lb, ub)
1119#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1120 !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRecRandLU_RK3
1121#endif
1122 use pm_kind, only: RKG => RK3
1123 real(RKG) , intent(inout) , contiguous :: rand(:)
1124 real(RKG) , intent(in) , contiguous :: lb(:), ub(:)
1125 end subroutine
1126#endif
1127
1128#if RK2_ENABLED
1129 PURE module subroutine setUnifRecRandLU_RK2(rand, lb, ub)
1130#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1131 !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRecRandLU_RK2
1132#endif
1133 use pm_kind, only: RKG => RK2
1134 real(RKG) , intent(inout) , contiguous :: rand(:)
1135 real(RKG) , intent(in) , contiguous :: lb(:), ub(:)
1136 end subroutine
1137#endif
1138
1139#if RK1_ENABLED
1140 PURE module subroutine setUnifRecRandLU_RK1(rand, lb, ub)
1141#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1142 !DEC$ ATTRIBUTES DLLEXPORT :: setUnifRecRandLU_RK1
1143#endif
1144 use pm_kind, only: RKG => RK1
1145 real(RKG) , intent(inout) , contiguous :: rand(:)
1146 real(RKG) , intent(in) , contiguous :: lb(:), ub(:)
1147 end subroutine
1148#endif
1149
1150 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1151
1152#if RK5_ENABLED
1153 PURE module subroutine setUnifParRandDU_RK5(rand, ub)
1154#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1155 !DEC$ ATTRIBUTES DLLEXPORT :: setUnifParRandDU_RK5
1156#endif
1157 use pm_kind, only: RKG => RK5
1158 real(RKG) , intent(inout) , contiguous :: rand(:)
1159 real(RKG) , intent(in) , contiguous :: ub(:,:)
1160 end subroutine
1161#endif
1162
1163#if RK4_ENABLED
1164 PURE module subroutine setUnifParRandDU_RK4(rand, ub)
1165#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1166 !DEC$ ATTRIBUTES DLLEXPORT :: setUnifParRandDU_RK4
1167#endif
1168 use pm_kind, only: RKG => RK4
1169 real(RKG) , intent(inout) , contiguous :: rand(:)
1170 real(RKG) , intent(in) , contiguous :: ub(:,:)
1171 end subroutine
1172#endif
1173
1174#if RK3_ENABLED
1175 PURE module subroutine setUnifParRandDU_RK3(rand, ub)
1176#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1177 !DEC$ ATTRIBUTES DLLEXPORT :: setUnifParRandDU_RK3
1178#endif
1179 use pm_kind, only: RKG => RK3
1180 real(RKG) , intent(inout) , contiguous :: rand(:)
1181 real(RKG) , intent(in) , contiguous :: ub(:,:)
1182 end subroutine
1183#endif
1184
1185#if RK2_ENABLED
1186 PURE module subroutine setUnifParRandDU_RK2(rand, ub)
1187#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1188 !DEC$ ATTRIBUTES DLLEXPORT :: setUnifParRandDU_RK2
1189#endif
1190 use pm_kind, only: RKG => RK2
1191 real(RKG) , intent(inout) , contiguous :: rand(:)
1192 real(RKG) , intent(in) , contiguous :: ub(:,:)
1193 end subroutine
1194#endif
1195
1196#if RK1_ENABLED
1197 PURE module subroutine setUnifParRandDU_RK1(rand, ub)
1198#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1199 !DEC$ ATTRIBUTES DLLEXPORT :: setUnifParRandDU_RK1
1200#endif
1201 use pm_kind, only: RKG => RK1
1202 real(RKG) , intent(inout) , contiguous :: rand(:)
1203 real(RKG) , intent(in) , contiguous :: ub(:,:)
1204 end subroutine
1205#endif
1206
1207 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1208
1209#if RK5_ENABLED
1210 PURE module subroutine setUnifParRandLU_RK5(rand, lb, ub)
1211#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1212 !DEC$ ATTRIBUTES DLLEXPORT :: setUnifParRandLU_RK5
1213#endif
1214 use pm_kind, only: RKG => RK5
1215 real(RKG) , intent(inout) , contiguous :: rand(:)
1216 real(RKG) , intent(in) , contiguous :: lb(:), ub(:,:)
1217 end subroutine
1218#endif
1219
1220#if RK4_ENABLED
1221 PURE module subroutine setUnifParRandLU_RK4(rand, lb, ub)
1222#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1223 !DEC$ ATTRIBUTES DLLEXPORT :: setUnifParRandLU_RK4
1224#endif
1225 use pm_kind, only: RKG => RK4
1226 real(RKG) , intent(inout) , contiguous :: rand(:)
1227 real(RKG) , intent(in) , contiguous :: lb(:), ub(:,:)
1228 end subroutine
1229#endif
1230
1231#if RK3_ENABLED
1232 PURE module subroutine setUnifParRandLU_RK3(rand, lb, ub)
1233#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1234 !DEC$ ATTRIBUTES DLLEXPORT :: setUnifParRandLU_RK3
1235#endif
1236 use pm_kind, only: RKG => RK3
1237 real(RKG) , intent(inout) , contiguous :: rand(:)
1238 real(RKG) , intent(in) , contiguous :: lb(:), ub(:,:)
1239 end subroutine
1240#endif
1241
1242#if RK2_ENABLED
1243 PURE module subroutine setUnifParRandLU_RK2(rand, lb, ub)
1244#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1245 !DEC$ ATTRIBUTES DLLEXPORT :: setUnifParRandLU_RK2
1246#endif
1247 use pm_kind, only: RKG => RK2
1248 real(RKG) , intent(inout) , contiguous :: rand(:)
1249 real(RKG) , intent(in) , contiguous :: lb(:), ub(:,:)
1250 end subroutine
1251#endif
1252
1253#if RK1_ENABLED
1254 PURE module subroutine setUnifParRandLU_RK1(rand, lb, ub)
1255#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1256 !DEC$ ATTRIBUTES DLLEXPORT :: setUnifParRandLU_RK1
1257#endif
1258 use pm_kind, only: RKG => RK1
1259 real(RKG) , intent(inout) , contiguous :: rand(:)
1260 real(RKG) , intent(in) , contiguous :: lb(:), ub(:,:)
1261 end subroutine
1262#endif
1263
1264 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1265
1266 end interface
1267
1268!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1269
1270end module pm_distUnifPar
Generate and return the natural logarithm of the Probability Density Function (PDF) of the MultiVaria...
Generate and return a random vector from the -dimensional MultiVariate Uniform Parallelepiped (MVUP) ...
Return a random vector from the -dimensional MultiVariate Uniform Parallelepiped (MVUP) Distribution.
This module contains classes and procedures for setting up and computing the properties of the MultiV...
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 RK5
Definition: pm_kind.F90:478
integer, parameter RK4
Definition: pm_kind.F90:489
integer, parameter RK2
Definition: pm_kind.F90:511
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 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 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
This is the derived type for signifying distributions that are of type MultiVariate Uniform Parallele...