ParaMonte Fortran 2.0.0
Parallel Monte Carlo and Machine Learning Library
See the latest version documentation.
pm_distUnifElls.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
152
153!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
154
156
157 use pm_kind, only: SK, IK, LK
158 use pm_distUnif, only: rngf_type
162
163 implicit none
164
165 character(*, SK), parameter :: MODULE_NAME = "@pm_distUnifElls"
166
167!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
168
203 end type
204
205!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
206
275
276 ! NELL
277
279
280 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
281
282#if RK5_ENABLED
283 PURE module function getUnifEllsLogPDFNELL_RK5(invmul, ndim, nell) result(logPDF)
284#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
285 !DEC$ ATTRIBUTES DLLEXPORT :: getUnifEllsLogPDFNELL_RK5
286#endif
287 use pm_kind, only: RKG => RK5
288 integer(IK) , intent(in) :: ndim, nell
289 real(RKG) , intent(in) , contiguous :: invmul(:)
290 real(RKG) :: logPDF
291 end function
292#endif
293
294#if RK4_ENABLED
295 PURE module function getUnifEllsLogPDFNELL_RK4(invmul, ndim, nell) result(logPDF)
296#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
297 !DEC$ ATTRIBUTES DLLEXPORT :: getUnifEllsLogPDFNELL_RK4
298#endif
299 use pm_kind, only: RKG => RK4
300 integer(IK) , intent(in) :: ndim, nell
301 real(RKG) , intent(in) , contiguous :: invmul(:)
302 real(RKG) :: logPDF
303 end function
304#endif
305
306#if RK3_ENABLED
307 PURE module function getUnifEllsLogPDFNELL_RK3(invmul, ndim, nell) result(logPDF)
308#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
309 !DEC$ ATTRIBUTES DLLEXPORT :: getUnifEllsLogPDFNELL_RK3
310#endif
311 use pm_kind, only: RKG => RK3
312 integer(IK) , intent(in) :: ndim, nell
313 real(RKG) , intent(in) , contiguous :: invmul(:)
314 real(RKG) :: logPDF
315 end function
316#endif
317
318#if RK2_ENABLED
319 PURE module function getUnifEllsLogPDFNELL_RK2(invmul, ndim, nell) result(logPDF)
320#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
321 !DEC$ ATTRIBUTES DLLEXPORT :: getUnifEllsLogPDFNELL_RK2
322#endif
323 use pm_kind, only: RKG => RK2
324 integer(IK) , intent(in) :: ndim, nell
325 real(RKG) , intent(in) , contiguous :: invmul(:)
326 real(RKG) :: logPDF
327 end function
328#endif
329
330#if RK1_ENABLED
331 PURE module function getUnifEllsLogPDFNELL_RK1(invmul, ndim, nell) result(logPDF)
332#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
333 !DEC$ ATTRIBUTES DLLEXPORT :: getUnifEllsLogPDFNELL_RK1
334#endif
335 use pm_kind, only: RKG => RK1
336 integer(IK) , intent(in) :: ndim, nell
337 real(RKG) , intent(in) , contiguous :: invmul(:)
338 real(RKG) :: logPDF
339 end function
340#endif
341
342 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
343
344 end interface
345
346 ! CHOL
347
348 interface getUnifEllsLogPDF
349
350 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
351
352#if RK5_ENABLED
353 PURE module function getUnifEllsLogPDFCHOL_RK5(invmul, chol) result(logPDF)
354#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
355 !DEC$ ATTRIBUTES DLLEXPORT :: getUnifEllsLogPDFCHOL_RK5
356#endif
357 use pm_kind, only: RKG => RK5
358 real(RKG) , intent(in) , contiguous :: invmul(:), chol(:,:,:)
359 real(RKG) :: logPDF
360 end function
361#endif
362
363#if RK4_ENABLED
364 PURE module function getUnifEllsLogPDFCHOL_RK4(invmul, chol) result(logPDF)
365#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
366 !DEC$ ATTRIBUTES DLLEXPORT :: getUnifEllsLogPDFCHOL_RK4
367#endif
368 use pm_kind, only: RKG => RK4
369 real(RKG) , intent(in) , contiguous :: invmul(:), chol(:,:,:)
370 real(RKG) :: logPDF
371 end function
372#endif
373
374#if RK3_ENABLED
375 PURE module function getUnifEllsLogPDFCHOL_RK3(invmul, chol) result(logPDF)
376#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
377 !DEC$ ATTRIBUTES DLLEXPORT :: getUnifEllsLogPDFCHOL_RK3
378#endif
379 use pm_kind, only: RKG => RK3
380 real(RKG) , intent(in) , contiguous :: invmul(:), chol(:,:,:)
381 real(RKG) :: logPDF
382 end function
383#endif
384
385#if RK2_ENABLED
386 PURE module function getUnifEllsLogPDFCHOL_RK2(invmul, chol) result(logPDF)
387#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
388 !DEC$ ATTRIBUTES DLLEXPORT :: getUnifEllsLogPDFCHOL_RK2
389#endif
390 use pm_kind, only: RKG => RK2
391 real(RKG) , intent(in) , contiguous :: invmul(:), chol(:,:,:)
392 real(RKG) :: logPDF
393 end function
394#endif
395
396#if RK1_ENABLED
397 PURE module function getUnifEllsLogPDFCHOL_RK1(invmul, chol) result(logPDF)
398#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
399 !DEC$ ATTRIBUTES DLLEXPORT :: getUnifEllsLogPDFCHOL_RK1
400#endif
401 use pm_kind, only: RKG => RK1
402 real(RKG) , intent(in) , contiguous :: invmul(:), chol(:,:,:)
403 real(RKG) :: logPDF
404 end function
405#endif
406
407 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
408
409 end interface
410
411!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
412
514
515 ! D2 RNGF
516
518
519 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
520
521#if RK5_ENABLED
522 impure module subroutine setMMUR_RNGF_AM_DC_XXX_D2_RK5(rng, rand, mahalSq, invmul, mean)
523#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
524 !DEC$ ATTRIBUTES DLLEXPORT :: setMMUR_RNGF_AM_DC_XXX_D2_RK5
525#endif
526 use pm_kind, only: RKG => RK5
527 type(rngf_type) , intent(in) :: rng
528 real(RKG) , intent(out) , contiguous :: rand(:,:)
529 real(RKG) , intent(out) , contiguous :: mahalSq(:,:)
530 real(RKG) , intent(out) , contiguous :: invmul(:)
531 real(RKG) , intent(in) , contiguous :: mean(:,:)
532 end subroutine
533#endif
534
535#if RK4_ENABLED
536 impure module subroutine setMMUR_RNGF_AM_DC_XXX_D2_RK4(rng, rand, mahalSq, invmul, mean)
537#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
538 !DEC$ ATTRIBUTES DLLEXPORT :: setMMUR_RNGF_AM_DC_XXX_D2_RK4
539#endif
540 use pm_kind, only: RKG => RK4
541 type(rngf_type) , intent(in) :: rng
542 real(RKG) , intent(out) , contiguous :: rand(:,:)
543 real(RKG) , intent(out) , contiguous :: mahalSq(:,:)
544 real(RKG) , intent(out) , contiguous :: invmul(:)
545 real(RKG) , intent(in) , contiguous :: mean(:,:)
546 end subroutine
547#endif
548
549#if RK3_ENABLED
550 impure module subroutine setMMUR_RNGF_AM_DC_XXX_D2_RK3(rng, rand, mahalSq, invmul, mean)
551#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
552 !DEC$ ATTRIBUTES DLLEXPORT :: setMMUR_RNGF_AM_DC_XXX_D2_RK3
553#endif
554 use pm_kind, only: RKG => RK3
555 type(rngf_type) , intent(in) :: rng
556 real(RKG) , intent(out) , contiguous :: rand(:,:)
557 real(RKG) , intent(out) , contiguous :: mahalSq(:,:)
558 real(RKG) , intent(out) , contiguous :: invmul(:)
559 real(RKG) , intent(in) , contiguous :: mean(:,:)
560 end subroutine
561#endif
562
563#if RK2_ENABLED
564 impure module subroutine setMMUR_RNGF_AM_DC_XXX_D2_RK2(rng, rand, mahalSq, invmul, mean)
565#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
566 !DEC$ ATTRIBUTES DLLEXPORT :: setMMUR_RNGF_AM_DC_XXX_D2_RK2
567#endif
568 use pm_kind, only: RKG => RK2
569 type(rngf_type) , intent(in) :: rng
570 real(RKG) , intent(out) , contiguous :: rand(:,:)
571 real(RKG) , intent(out) , contiguous :: mahalSq(:,:)
572 real(RKG) , intent(out) , contiguous :: invmul(:)
573 real(RKG) , intent(in) , contiguous :: mean(:,:)
574 end subroutine
575#endif
576
577#if RK1_ENABLED
578 impure module subroutine setMMUR_RNGF_AM_DC_XXX_D2_RK1(rng, rand, mahalSq, invmul, mean)
579#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
580 !DEC$ ATTRIBUTES DLLEXPORT :: setMMUR_RNGF_AM_DC_XXX_D2_RK1
581#endif
582 use pm_kind, only: RKG => RK1
583 type(rngf_type) , intent(in) :: rng
584 real(RKG) , intent(out) , contiguous :: rand(:,:)
585 real(RKG) , intent(out) , contiguous :: mahalSq(:,:)
586 real(RKG) , intent(out) , contiguous :: invmul(:)
587 real(RKG) , intent(in) , contiguous :: mean(:,:)
588 end subroutine
589#endif
590
591 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
592
593#if RK5_ENABLED
594 impure module subroutine setMMUR_RNGF_AM_AC_UXD_D2_RK5(rng, rand, mahalSq, invmul, mean, chol, subset, invGram)
595#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
596 !DEC$ ATTRIBUTES DLLEXPORT :: setMMUR_RNGF_AM_AC_UXD_D2_RK5
597#endif
598 use pm_kind, only: RKG => RK5
599 type(rngf_type) , intent(in) :: rng
600 real(RKG) , intent(out) , contiguous :: rand(:,:)
601 real(RKG) , intent(out) , contiguous :: mahalSq(:,:)
602 real(RKG) , intent(out) , contiguous :: invmul(:)
603 real(RKG) , intent(in) , contiguous :: mean(:,:), chol(:,:,:), invGram(:,:,:)
604 type(uppDia_type) , intent(in) :: subset
605 end subroutine
606#endif
607
608#if RK4_ENABLED
609 impure module subroutine setMMUR_RNGF_AM_AC_UXD_D2_RK4(rng, rand, mahalSq, invmul, mean, chol, subset, invGram)
610#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
611 !DEC$ ATTRIBUTES DLLEXPORT :: setMMUR_RNGF_AM_AC_UXD_D2_RK4
612#endif
613 use pm_kind, only: RKG => RK4
614 type(rngf_type) , intent(in) :: rng
615 real(RKG) , intent(out) , contiguous :: rand(:,:)
616 real(RKG) , intent(out) , contiguous :: mahalSq(:,:)
617 real(RKG) , intent(out) , contiguous :: invmul(:)
618 real(RKG) , intent(in) , contiguous :: mean(:,:), chol(:,:,:), invGram(:,:,:)
619 type(uppDia_type) , intent(in) :: subset
620 end subroutine
621#endif
622
623#if RK3_ENABLED
624 impure module subroutine setMMUR_RNGF_AM_AC_UXD_D2_RK3(rng, rand, mahalSq, invmul, mean, chol, subset, invGram)
625#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
626 !DEC$ ATTRIBUTES DLLEXPORT :: setMMUR_RNGF_AM_AC_UXD_D2_RK3
627#endif
628 use pm_kind, only: RKG => RK3
629 type(rngf_type) , intent(in) :: rng
630 real(RKG) , intent(out) , contiguous :: rand(:,:)
631 real(RKG) , intent(out) , contiguous :: mahalSq(:,:)
632 real(RKG) , intent(out) , contiguous :: invmul(:)
633 real(RKG) , intent(in) , contiguous :: mean(:,:), chol(:,:,:), invGram(:,:,:)
634 type(uppDia_type) , intent(in) :: subset
635 end subroutine
636#endif
637
638#if RK2_ENABLED
639 impure module subroutine setMMUR_RNGF_AM_AC_UXD_D2_RK2(rng, rand, mahalSq, invmul, mean, chol, subset, invGram)
640#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
641 !DEC$ ATTRIBUTES DLLEXPORT :: setMMUR_RNGF_AM_AC_UXD_D2_RK2
642#endif
643 use pm_kind, only: RKG => RK2
644 type(rngf_type) , intent(in) :: rng
645 real(RKG) , intent(out) , contiguous :: rand(:,:)
646 real(RKG) , intent(out) , contiguous :: mahalSq(:,:)
647 real(RKG) , intent(out) , contiguous :: invmul(:)
648 real(RKG) , intent(in) , contiguous :: mean(:,:), chol(:,:,:), invGram(:,:,:)
649 type(uppDia_type) , intent(in) :: subset
650 end subroutine
651#endif
652
653#if RK1_ENABLED
654 impure module subroutine setMMUR_RNGF_AM_AC_UXD_D2_RK1(rng, rand, mahalSq, invmul, mean, chol, subset, invGram)
655#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
656 !DEC$ ATTRIBUTES DLLEXPORT :: setMMUR_RNGF_AM_AC_UXD_D2_RK1
657#endif
658 use pm_kind, only: RKG => RK1
659 type(rngf_type) , intent(in) :: rng
660 real(RKG) , intent(out) , contiguous :: rand(:,:)
661 real(RKG) , intent(out) , contiguous :: mahalSq(:,:)
662 real(RKG) , intent(out) , contiguous :: invmul(:)
663 real(RKG) , intent(in) , contiguous :: mean(:,:), chol(:,:,:), invGram(:,:,:)
664 type(uppDia_type) , intent(in) :: subset
665 end subroutine
666#endif
667
668 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
669
670#if RK5_ENABLED
671 impure module subroutine setMMUR_RNGF_AM_AC_XLD_D2_RK5(rng, rand, mahalSq, invmul, mean, chol, subset, invGram)
672#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
673 !DEC$ ATTRIBUTES DLLEXPORT :: setMMUR_RNGF_AM_AC_XLD_D2_RK5
674#endif
675 use pm_kind, only: RKG => RK5
676 type(rngf_type) , intent(in) :: rng
677 real(RKG) , intent(out) , contiguous :: rand(:,:)
678 real(RKG) , intent(out) , contiguous :: mahalSq(:,:)
679 real(RKG) , intent(out) , contiguous :: invmul(:)
680 real(RKG) , intent(in) , contiguous :: mean(:,:), chol(:,:,:), invGram(:,:,:)
681 type(lowDia_type) , intent(in) :: subset
682 end subroutine
683#endif
684
685#if RK4_ENABLED
686 impure module subroutine setMMUR_RNGF_AM_AC_XLD_D2_RK4(rng, rand, mahalSq, invmul, mean, chol, subset, invGram)
687#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
688 !DEC$ ATTRIBUTES DLLEXPORT :: setMMUR_RNGF_AM_AC_XLD_D2_RK4
689#endif
690 use pm_kind, only: RKG => RK4
691 type(rngf_type) , intent(in) :: rng
692 real(RKG) , intent(out) , contiguous :: rand(:,:)
693 real(RKG) , intent(out) , contiguous :: mahalSq(:,:)
694 real(RKG) , intent(out) , contiguous :: invmul(:)
695 real(RKG) , intent(in) , contiguous :: mean(:,:), chol(:,:,:), invGram(:,:,:)
696 type(lowDia_type) , intent(in) :: subset
697 end subroutine
698#endif
699
700#if RK3_ENABLED
701 impure module subroutine setMMUR_RNGF_AM_AC_XLD_D2_RK3(rng, rand, mahalSq, invmul, mean, chol, subset, invGram)
702#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
703 !DEC$ ATTRIBUTES DLLEXPORT :: setMMUR_RNGF_AM_AC_XLD_D2_RK3
704#endif
705 use pm_kind, only: RKG => RK3
706 type(rngf_type) , intent(in) :: rng
707 real(RKG) , intent(out) , contiguous :: rand(:,:)
708 real(RKG) , intent(out) , contiguous :: mahalSq(:,:)
709 real(RKG) , intent(out) , contiguous :: invmul(:)
710 real(RKG) , intent(in) , contiguous :: mean(:,:), chol(:,:,:), invGram(:,:,:)
711 type(lowDia_type) , intent(in) :: subset
712 end subroutine
713#endif
714
715#if RK2_ENABLED
716 impure module subroutine setMMUR_RNGF_AM_AC_XLD_D2_RK2(rng, rand, mahalSq, invmul, mean, chol, subset, invGram)
717#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
718 !DEC$ ATTRIBUTES DLLEXPORT :: setMMUR_RNGF_AM_AC_XLD_D2_RK2
719#endif
720 use pm_kind, only: RKG => RK2
721 type(rngf_type) , intent(in) :: rng
722 real(RKG) , intent(out) , contiguous :: rand(:,:)
723 real(RKG) , intent(out) , contiguous :: mahalSq(:,:)
724 real(RKG) , intent(out) , contiguous :: invmul(:)
725 real(RKG) , intent(in) , contiguous :: mean(:,:), chol(:,:,:), invGram(:,:,:)
726 type(lowDia_type) , intent(in) :: subset
727 end subroutine
728#endif
729
730#if RK1_ENABLED
731 impure module subroutine setMMUR_RNGF_AM_AC_XLD_D2_RK1(rng, rand, mahalSq, invmul, mean, chol, subset, invGram)
732#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
733 !DEC$ ATTRIBUTES DLLEXPORT :: setMMUR_RNGF_AM_AC_XLD_D2_RK1
734#endif
735 use pm_kind, only: RKG => RK1
736 type(rngf_type) , intent(in) :: rng
737 real(RKG) , intent(out) , contiguous :: rand(:,:)
738 real(RKG) , intent(out) , contiguous :: mahalSq(:,:)
739 real(RKG) , intent(out) , contiguous :: invmul(:)
740 real(RKG) , intent(in) , contiguous :: mean(:,:), chol(:,:,:), invGram(:,:,:)
741 type(lowDia_type) , intent(in) :: subset
742 end subroutine
743#endif
744
745 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
746
747 end interface
748
749 ! D2 RNGX
750
751 interface setUnifEllsRand
752
753 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
754
755#if RK5_ENABLED
756 PURE module subroutine setMMUR_RNGX_AM_DC_XXX_D2_RK5(rng, rand, mahalSq, invmul, mean)
757#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
758 !DEC$ ATTRIBUTES DLLEXPORT :: setMMUR_RNGX_AM_DC_XXX_D2_RK5
759#endif
760 use pm_kind, only: RKG => RK5
761 type(xoshiro256ssw_type), intent(inout) :: rng
762 real(RKG) , intent(out) , contiguous :: rand(:,:)
763 real(RKG) , intent(out) , contiguous :: mahalSq(:,:)
764 real(RKG) , intent(out) , contiguous :: invmul(:)
765 real(RKG) , intent(in) , contiguous :: mean(:,:)
766 end subroutine
767#endif
768
769#if RK4_ENABLED
770 PURE module subroutine setMMUR_RNGX_AM_DC_XXX_D2_RK4(rng, rand, mahalSq, invmul, mean)
771#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
772 !DEC$ ATTRIBUTES DLLEXPORT :: setMMUR_RNGX_AM_DC_XXX_D2_RK4
773#endif
774 use pm_kind, only: RKG => RK4
775 type(xoshiro256ssw_type), intent(inout) :: rng
776 real(RKG) , intent(out) , contiguous :: rand(:,:)
777 real(RKG) , intent(out) , contiguous :: mahalSq(:,:)
778 real(RKG) , intent(out) , contiguous :: invmul(:)
779 real(RKG) , intent(in) , contiguous :: mean(:,:)
780 end subroutine
781#endif
782
783#if RK3_ENABLED
784 PURE module subroutine setMMUR_RNGX_AM_DC_XXX_D2_RK3(rng, rand, mahalSq, invmul, mean)
785#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
786 !DEC$ ATTRIBUTES DLLEXPORT :: setMMUR_RNGX_AM_DC_XXX_D2_RK3
787#endif
788 use pm_kind, only: RKG => RK3
789 type(xoshiro256ssw_type), intent(inout) :: rng
790 real(RKG) , intent(out) , contiguous :: rand(:,:)
791 real(RKG) , intent(out) , contiguous :: mahalSq(:,:)
792 real(RKG) , intent(out) , contiguous :: invmul(:)
793 real(RKG) , intent(in) , contiguous :: mean(:,:)
794 end subroutine
795#endif
796
797#if RK2_ENABLED
798 PURE module subroutine setMMUR_RNGX_AM_DC_XXX_D2_RK2(rng, rand, mahalSq, invmul, mean)
799#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
800 !DEC$ ATTRIBUTES DLLEXPORT :: setMMUR_RNGX_AM_DC_XXX_D2_RK2
801#endif
802 use pm_kind, only: RKG => RK2
803 type(xoshiro256ssw_type), intent(inout) :: rng
804 real(RKG) , intent(out) , contiguous :: rand(:,:)
805 real(RKG) , intent(out) , contiguous :: mahalSq(:,:)
806 real(RKG) , intent(out) , contiguous :: invmul(:)
807 real(RKG) , intent(in) , contiguous :: mean(:,:)
808 end subroutine
809#endif
810
811#if RK1_ENABLED
812 PURE module subroutine setMMUR_RNGX_AM_DC_XXX_D2_RK1(rng, rand, mahalSq, invmul, mean)
813#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
814 !DEC$ ATTRIBUTES DLLEXPORT :: setMMUR_RNGX_AM_DC_XXX_D2_RK1
815#endif
816 use pm_kind, only: RKG => RK1
817 type(xoshiro256ssw_type), intent(inout) :: rng
818 real(RKG) , intent(out) , contiguous :: rand(:,:)
819 real(RKG) , intent(out) , contiguous :: mahalSq(:,:)
820 real(RKG) , intent(out) , contiguous :: invmul(:)
821 real(RKG) , intent(in) , contiguous :: mean(:,:)
822 end subroutine
823#endif
824
825 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
826
827#if RK5_ENABLED
828 PURE module subroutine setMMUR_RNGX_AM_AC_UXD_D2_RK5(rng, rand, mahalSq, invmul, mean, chol, subset, invGram)
829#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
830 !DEC$ ATTRIBUTES DLLEXPORT :: setMMUR_RNGX_AM_AC_UXD_D2_RK5
831#endif
832 use pm_kind, only: RKG => RK5
833 type(xoshiro256ssw_type), intent(inout) :: rng
834 real(RKG) , intent(out) , contiguous :: rand(:,:)
835 real(RKG) , intent(out) , contiguous :: mahalSq(:,:)
836 real(RKG) , intent(out) , contiguous :: invmul(:)
837 real(RKG) , intent(in) , contiguous :: mean(:,:), chol(:,:,:), invGram(:,:,:)
838 type(uppDia_type) , intent(in) :: subset
839 end subroutine
840#endif
841
842#if RK4_ENABLED
843 PURE module subroutine setMMUR_RNGX_AM_AC_UXD_D2_RK4(rng, rand, mahalSq, invmul, mean, chol, subset, invGram)
844#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
845 !DEC$ ATTRIBUTES DLLEXPORT :: setMMUR_RNGX_AM_AC_UXD_D2_RK4
846#endif
847 use pm_kind, only: RKG => RK4
848 type(xoshiro256ssw_type), intent(inout) :: rng
849 real(RKG) , intent(out) , contiguous :: rand(:,:)
850 real(RKG) , intent(out) , contiguous :: mahalSq(:,:)
851 real(RKG) , intent(out) , contiguous :: invmul(:)
852 real(RKG) , intent(in) , contiguous :: mean(:,:), chol(:,:,:), invGram(:,:,:)
853 type(uppDia_type) , intent(in) :: subset
854 end subroutine
855#endif
856
857#if RK3_ENABLED
858 PURE module subroutine setMMUR_RNGX_AM_AC_UXD_D2_RK3(rng, rand, mahalSq, invmul, mean, chol, subset, invGram)
859#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
860 !DEC$ ATTRIBUTES DLLEXPORT :: setMMUR_RNGX_AM_AC_UXD_D2_RK3
861#endif
862 use pm_kind, only: RKG => RK3
863 type(xoshiro256ssw_type), intent(inout) :: rng
864 real(RKG) , intent(out) , contiguous :: rand(:,:)
865 real(RKG) , intent(out) , contiguous :: mahalSq(:,:)
866 real(RKG) , intent(out) , contiguous :: invmul(:)
867 real(RKG) , intent(in) , contiguous :: mean(:,:), chol(:,:,:), invGram(:,:,:)
868 type(uppDia_type) , intent(in) :: subset
869 end subroutine
870#endif
871
872#if RK2_ENABLED
873 PURE module subroutine setMMUR_RNGX_AM_AC_UXD_D2_RK2(rng, rand, mahalSq, invmul, mean, chol, subset, invGram)
874#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
875 !DEC$ ATTRIBUTES DLLEXPORT :: setMMUR_RNGX_AM_AC_UXD_D2_RK2
876#endif
877 use pm_kind, only: RKG => RK2
878 type(xoshiro256ssw_type), intent(inout) :: rng
879 real(RKG) , intent(out) , contiguous :: rand(:,:)
880 real(RKG) , intent(out) , contiguous :: mahalSq(:,:)
881 real(RKG) , intent(out) , contiguous :: invmul(:)
882 real(RKG) , intent(in) , contiguous :: mean(:,:), chol(:,:,:), invGram(:,:,:)
883 type(uppDia_type) , intent(in) :: subset
884 end subroutine
885#endif
886
887#if RK1_ENABLED
888 PURE module subroutine setMMUR_RNGX_AM_AC_UXD_D2_RK1(rng, rand, mahalSq, invmul, mean, chol, subset, invGram)
889#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
890 !DEC$ ATTRIBUTES DLLEXPORT :: setMMUR_RNGX_AM_AC_UXD_D2_RK1
891#endif
892 use pm_kind, only: RKG => RK1
893 type(xoshiro256ssw_type), intent(inout) :: rng
894 real(RKG) , intent(out) , contiguous :: rand(:,:)
895 real(RKG) , intent(out) , contiguous :: mahalSq(:,:)
896 real(RKG) , intent(out) , contiguous :: invmul(:)
897 real(RKG) , intent(in) , contiguous :: mean(:,:), chol(:,:,:), invGram(:,:,:)
898 type(uppDia_type) , intent(in) :: subset
899 end subroutine
900#endif
901
902 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
903
904#if RK5_ENABLED
905 PURE module subroutine setMMUR_RNGX_AM_AC_XLD_D2_RK5(rng, rand, mahalSq, invmul, mean, chol, subset, invGram)
906#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
907 !DEC$ ATTRIBUTES DLLEXPORT :: setMMUR_RNGX_AM_AC_XLD_D2_RK5
908#endif
909 use pm_kind, only: RKG => RK5
910 type(xoshiro256ssw_type), intent(inout) :: rng
911 real(RKG) , intent(out) , contiguous :: rand(:,:)
912 real(RKG) , intent(out) , contiguous :: mahalSq(:,:)
913 real(RKG) , intent(out) , contiguous :: invmul(:)
914 real(RKG) , intent(in) , contiguous :: mean(:,:), chol(:,:,:), invGram(:,:,:)
915 type(lowDia_type) , intent(in) :: subset
916 end subroutine
917#endif
918
919#if RK4_ENABLED
920 PURE module subroutine setMMUR_RNGX_AM_AC_XLD_D2_RK4(rng, rand, mahalSq, invmul, mean, chol, subset, invGram)
921#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
922 !DEC$ ATTRIBUTES DLLEXPORT :: setMMUR_RNGX_AM_AC_XLD_D2_RK4
923#endif
924 use pm_kind, only: RKG => RK4
925 type(xoshiro256ssw_type), intent(inout) :: rng
926 real(RKG) , intent(out) , contiguous :: rand(:,:)
927 real(RKG) , intent(out) , contiguous :: mahalSq(:,:)
928 real(RKG) , intent(out) , contiguous :: invmul(:)
929 real(RKG) , intent(in) , contiguous :: mean(:,:), chol(:,:,:), invGram(:,:,:)
930 type(lowDia_type) , intent(in) :: subset
931 end subroutine
932#endif
933
934#if RK3_ENABLED
935 PURE module subroutine setMMUR_RNGX_AM_AC_XLD_D2_RK3(rng, rand, mahalSq, invmul, mean, chol, subset, invGram)
936#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
937 !DEC$ ATTRIBUTES DLLEXPORT :: setMMUR_RNGX_AM_AC_XLD_D2_RK3
938#endif
939 use pm_kind, only: RKG => RK3
940 type(xoshiro256ssw_type), intent(inout) :: rng
941 real(RKG) , intent(out) , contiguous :: rand(:,:)
942 real(RKG) , intent(out) , contiguous :: mahalSq(:,:)
943 real(RKG) , intent(out) , contiguous :: invmul(:)
944 real(RKG) , intent(in) , contiguous :: mean(:,:), chol(:,:,:), invGram(:,:,:)
945 type(lowDia_type) , intent(in) :: subset
946 end subroutine
947#endif
948
949#if RK2_ENABLED
950 PURE module subroutine setMMUR_RNGX_AM_AC_XLD_D2_RK2(rng, rand, mahalSq, invmul, mean, chol, subset, invGram)
951#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
952 !DEC$ ATTRIBUTES DLLEXPORT :: setMMUR_RNGX_AM_AC_XLD_D2_RK2
953#endif
954 use pm_kind, only: RKG => RK2
955 type(xoshiro256ssw_type), intent(inout) :: rng
956 real(RKG) , intent(out) , contiguous :: rand(:,:)
957 real(RKG) , intent(out) , contiguous :: mahalSq(:,:)
958 real(RKG) , intent(out) , contiguous :: invmul(:)
959 real(RKG) , intent(in) , contiguous :: mean(:,:), chol(:,:,:), invGram(:,:,:)
960 type(lowDia_type) , intent(in) :: subset
961 end subroutine
962#endif
963
964#if RK1_ENABLED
965 PURE module subroutine setMMUR_RNGX_AM_AC_XLD_D2_RK1(rng, rand, mahalSq, invmul, mean, chol, subset, invGram)
966#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
967 !DEC$ ATTRIBUTES DLLEXPORT :: setMMUR_RNGX_AM_AC_XLD_D2_RK1
968#endif
969 use pm_kind, only: RKG => RK1
970 type(xoshiro256ssw_type), intent(inout) :: rng
971 real(RKG) , intent(out) , contiguous :: rand(:,:)
972 real(RKG) , intent(out) , contiguous :: mahalSq(:,:)
973 real(RKG) , intent(out) , contiguous :: invmul(:)
974 real(RKG) , intent(in) , contiguous :: mean(:,:), chol(:,:,:), invGram(:,:,:)
975 type(lowDia_type) , intent(in) :: subset
976 end subroutine
977#endif
978
979 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
980
981 end interface
982
983!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
984
985end module pm_distUnifElls
Generate and return the natural logarithm of an approximation of the Probability Density Function (PD...
Return a collection of random vectors of size ndim from the ndim-dimensional Multiple MultiVariate Un...
This module contains classes and procedures for computing various statistical quantities related to t...
This module contains classes and procedures for computing various statistical quantities related to t...
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 module contains abstract and concrete derived types that are required for compile-time resolutio...
type(lowDia_type), parameter lowDia
This is a scalar parameter object of type lowDia_type that is exclusively used to request lower-diago...
type(uppDia_type), parameter uppDia
This is a scalar parameter object of type uppDia_type that is exclusively used to request upper-diago...
This is the derived type for signifying distributions that are of type Multiple MultiVariate Uniform ...
This is a concrete derived type whose instances can be used to define/request the default uniform ran...
This is the derived type for declaring and generating objects of type xoshiro256ssw_type containing a...
This is a concrete derived type whose instances are exclusively used to request lower-diagonal triang...
This is a concrete derived type whose instances are exclusively used to request upper-diagonal triang...