ParaMonte Fortran 2.0.0
Parallel Monte Carlo and Machine Learning Library
See the latest version documentation.
pm_distUnifSphere.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
121
122!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
123
125
126 use pm_kind, only: SK, IK, LK
127 use pm_distUnif, only: rngf_type
131
132 implicit none
133
134 character(*, SK), parameter :: MODULE_NAME = "@pm_distUnifSphere"
135
136!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
137
172 end type
173
174!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
175
233
234 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
235
236#if RK5_ENABLED
237 PURE elemental module function getUnifSphereLogPDF_D0_RK5(logRadius, ndim) result(logPDF)
238#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
239 !DEC$ ATTRIBUTES DLLEXPORT :: getUnifSphereLogPDF_D0_RK5
240#endif
241 use pm_kind, only: RKG => RK5
242 integer(IK) , intent(in) :: ndim
243 real(RKG) , intent(in) :: logRadius
244 real(RKG) :: logPDF
245 end function
246#endif
247
248#if RK4_ENABLED
249 PURE elemental module function getUnifSphereLogPDF_D0_RK4(logRadius, ndim) result(logPDF)
250#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
251 !DEC$ ATTRIBUTES DLLEXPORT :: getUnifSphereLogPDF_D0_RK4
252#endif
253 use pm_kind, only: RKG => RK4
254 integer(IK) , intent(in) :: ndim
255 real(RKG) , intent(in) :: logRadius
256 real(RKG) :: logPDF
257 end function
258#endif
259
260#if RK3_ENABLED
261 PURE elemental module function getUnifSphereLogPDF_D0_RK3(logRadius, ndim) result(logPDF)
262#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
263 !DEC$ ATTRIBUTES DLLEXPORT :: getUnifSphereLogPDF_D0_RK3
264#endif
265 use pm_kind, only: RKG => RK3
266 integer(IK) , intent(in) :: ndim
267 real(RKG) , intent(in) :: logRadius
268 real(RKG) :: logPDF
269 end function
270#endif
271
272#if RK2_ENABLED
273 PURE elemental module function getUnifSphereLogPDF_D0_RK2(logRadius, ndim) result(logPDF)
274#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
275 !DEC$ ATTRIBUTES DLLEXPORT :: getUnifSphereLogPDF_D0_RK2
276#endif
277 use pm_kind, only: RKG => RK2
278 integer(IK) , intent(in) :: ndim
279 real(RKG) , intent(in) :: logRadius
280 real(RKG) :: logPDF
281 end function
282#endif
283
284#if RK1_ENABLED
285 PURE elemental module function getUnifSphereLogPDF_D0_RK1(logRadius, ndim) result(logPDF)
286#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
287 !DEC$ ATTRIBUTES DLLEXPORT :: getUnifSphereLogPDF_D0_RK1
288#endif
289 use pm_kind, only: RKG => RK1
290 integer(IK) , intent(in) :: ndim
291 real(RKG) , intent(in) :: logRadius
292 real(RKG) :: logPDF
293 end function
294#endif
295
296 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
297
298 end interface
299
300!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
301
410
411 ! D1 RNGD
412
414
415 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
416
417#if RK5_ENABLED
418 impure module function getUSR_RNGD_AM_DC_XXX_D1_RK5(mean) result(rand)
419#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
420 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGD_AM_DC_XXX_D1_RK5
421#endif
422 use pm_kind, only: RKG => RK5
423 real(RKG) , intent(in) , contiguous :: mean(:)
424 real(RKG) :: rand(size(mean, 1, IK))
425 end function
426#endif
427
428#if RK4_ENABLED
429 impure module function getUSR_RNGD_AM_DC_XXX_D1_RK4(mean) result(rand)
430#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
431 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGD_AM_DC_XXX_D1_RK4
432#endif
433 use pm_kind, only: RKG => RK4
434 real(RKG) , intent(in) , contiguous :: mean(:)
435 real(RKG) :: rand(size(mean, 1, IK))
436 end function
437#endif
438
439#if RK3_ENABLED
440 impure module function getUSR_RNGD_AM_DC_XXX_D1_RK3(mean) result(rand)
441#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
442 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGD_AM_DC_XXX_D1_RK3
443#endif
444 use pm_kind, only: RKG => RK3
445 real(RKG) , intent(in) , contiguous :: mean(:)
446 real(RKG) :: rand(size(mean, 1, IK))
447 end function
448#endif
449
450#if RK2_ENABLED
451 impure module function getUSR_RNGD_AM_DC_XXX_D1_RK2(mean) result(rand)
452#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
453 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGD_AM_DC_XXX_D1_RK2
454#endif
455 use pm_kind, only: RKG => RK2
456 real(RKG) , intent(in) , contiguous :: mean(:)
457 real(RKG) :: rand(size(mean, 1, IK))
458 end function
459#endif
460
461#if RK1_ENABLED
462 impure module function getUSR_RNGD_AM_DC_XXX_D1_RK1(mean) result(rand)
463#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
464 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGD_AM_DC_XXX_D1_RK1
465#endif
466 use pm_kind, only: RKG => RK1
467 real(RKG) , intent(in) , contiguous :: mean(:)
468 real(RKG) :: rand(size(mean, 1, IK))
469 end function
470#endif
471
472 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
473
474#if RK5_ENABLED
475 impure module function getUSR_RNGD_DM_AC_UXD_D1_RK5(chol, subset) result(rand)
476#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
477 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGD_DM_AC_UXD_D1_RK5
478#endif
479 use pm_kind, only: RKG => RK5
480 type(uppDia_type) , intent(in) :: subset
481 real(RKG) , intent(in) , contiguous :: chol(:,:)
482 real(RKG) :: rand(size(chol, 1, IK))
483 end function
484#endif
485
486#if RK4_ENABLED
487 impure module function getUSR_RNGD_DM_AC_UXD_D1_RK4(chol, subset) result(rand)
488#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
489 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGD_DM_AC_UXD_D1_RK4
490#endif
491 use pm_kind, only: RKG => RK4
492 type(uppDia_type) , intent(in) :: subset
493 real(RKG) , intent(in) , contiguous :: chol(:,:)
494 real(RKG) :: rand(size(chol, 1, IK))
495 end function
496#endif
497
498#if RK3_ENABLED
499 impure module function getUSR_RNGD_DM_AC_UXD_D1_RK3(chol, subset) result(rand)
500#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
501 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGD_DM_AC_UXD_D1_RK3
502#endif
503 use pm_kind, only: RKG => RK3
504 type(uppDia_type) , intent(in) :: subset
505 real(RKG) , intent(in) , contiguous :: chol(:,:)
506 real(RKG) :: rand(size(chol, 1, IK))
507 end function
508#endif
509
510#if RK2_ENABLED
511 impure module function getUSR_RNGD_DM_AC_UXD_D1_RK2(chol, subset) result(rand)
512#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
513 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGD_DM_AC_UXD_D1_RK2
514#endif
515 use pm_kind, only: RKG => RK2
516 type(uppDia_type) , intent(in) :: subset
517 real(RKG) , intent(in) , contiguous :: chol(:,:)
518 real(RKG) :: rand(size(chol, 1, IK))
519 end function
520#endif
521
522#if RK1_ENABLED
523 impure module function getUSR_RNGD_DM_AC_UXD_D1_RK1(chol, subset) result(rand)
524#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
525 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGD_DM_AC_UXD_D1_RK1
526#endif
527 use pm_kind, only: RKG => RK1
528 type(uppDia_type) , intent(in) :: subset
529 real(RKG) , intent(in) , contiguous :: chol(:,:)
530 real(RKG) :: rand(size(chol, 1, IK))
531 end function
532#endif
533
534 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
535
536#if RK5_ENABLED
537 impure module function getUSR_RNGD_DM_AC_XLD_D1_RK5(chol, subset) result(rand)
538#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
539 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGD_DM_AC_XLD_D1_RK5
540#endif
541 use pm_kind, only: RKG => RK5
542 type(lowDia_type) , intent(in) :: subset
543 real(RKG) , intent(in) , contiguous :: chol(:,:)
544 real(RKG) :: rand(size(chol, 1, IK))
545 end function
546#endif
547
548#if RK4_ENABLED
549 impure module function getUSR_RNGD_DM_AC_XLD_D1_RK4(chol, subset) result(rand)
550#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
551 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGD_DM_AC_XLD_D1_RK4
552#endif
553 use pm_kind, only: RKG => RK4
554 type(lowDia_type) , intent(in) :: subset
555 real(RKG) , intent(in) , contiguous :: chol(:,:)
556 real(RKG) :: rand(size(chol, 1, IK))
557 end function
558#endif
559
560#if RK3_ENABLED
561 impure module function getUSR_RNGD_DM_AC_XLD_D1_RK3(chol, subset) result(rand)
562#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
563 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGD_DM_AC_XLD_D1_RK3
564#endif
565 use pm_kind, only: RKG => RK3
566 type(lowDia_type) , intent(in) :: subset
567 real(RKG) , intent(in) , contiguous :: chol(:,:)
568 real(RKG) :: rand(size(chol, 1, IK))
569 end function
570#endif
571
572#if RK2_ENABLED
573 impure module function getUSR_RNGD_DM_AC_XLD_D1_RK2(chol, subset) result(rand)
574#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
575 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGD_DM_AC_XLD_D1_RK2
576#endif
577 use pm_kind, only: RKG => RK2
578 type(lowDia_type) , intent(in) :: subset
579 real(RKG) , intent(in) , contiguous :: chol(:,:)
580 real(RKG) :: rand(size(chol, 1, IK))
581 end function
582#endif
583
584#if RK1_ENABLED
585 impure module function getUSR_RNGD_DM_AC_XLD_D1_RK1(chol, subset) result(rand)
586#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
587 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGD_DM_AC_XLD_D1_RK1
588#endif
589 use pm_kind, only: RKG => RK1
590 type(lowDia_type) , intent(in) :: subset
591 real(RKG) , intent(in) , contiguous :: chol(:,:)
592 real(RKG) :: rand(size(chol, 1, IK))
593 end function
594#endif
595
596 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
597
598#if RK5_ENABLED
599 impure module function getUSR_RNGD_AM_AC_UXD_D1_RK5(mean, chol, subset) result(rand)
600#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
601 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGD_AM_AC_UXD_D1_RK5
602#endif
603 use pm_kind, only: RKG => RK5
604 type(uppDia_type) , intent(in) :: subset
605 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
606 real(RKG) :: rand(size(chol, 1, IK))
607 end function
608#endif
609
610#if RK4_ENABLED
611 impure module function getUSR_RNGD_AM_AC_UXD_D1_RK4(mean, chol, subset) result(rand)
612#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
613 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGD_AM_AC_UXD_D1_RK4
614#endif
615 use pm_kind, only: RKG => RK4
616 type(uppDia_type) , intent(in) :: subset
617 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
618 real(RKG) :: rand(size(chol, 1, IK))
619 end function
620#endif
621
622#if RK3_ENABLED
623 impure module function getUSR_RNGD_AM_AC_UXD_D1_RK3(mean, chol, subset) result(rand)
624#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
625 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGD_AM_AC_UXD_D1_RK3
626#endif
627 use pm_kind, only: RKG => RK3
628 type(uppDia_type) , intent(in) :: subset
629 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
630 real(RKG) :: rand(size(chol, 1, IK))
631 end function
632#endif
633
634#if RK2_ENABLED
635 impure module function getUSR_RNGD_AM_AC_UXD_D1_RK2(mean, chol, subset) result(rand)
636#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
637 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGD_AM_AC_UXD_D1_RK2
638#endif
639 use pm_kind, only: RKG => RK2
640 type(uppDia_type) , intent(in) :: subset
641 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
642 real(RKG) :: rand(size(chol, 1, IK))
643 end function
644#endif
645
646#if RK1_ENABLED
647 impure module function getUSR_RNGD_AM_AC_UXD_D1_RK1(mean, chol, subset) result(rand)
648#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
649 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGD_AM_AC_UXD_D1_RK1
650#endif
651 use pm_kind, only: RKG => RK1
652 type(uppDia_type) , intent(in) :: subset
653 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
654 real(RKG) :: rand(size(chol, 1, IK))
655 end function
656#endif
657
658 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
659
660#if RK5_ENABLED
661 impure module function getUSR_RNGD_AM_AC_XLD_D1_RK5(mean, chol, subset) result(rand)
662#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
663 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGD_AM_AC_XLD_D1_RK5
664#endif
665 use pm_kind, only: RKG => RK5
666 type(lowDia_type) , intent(in) :: subset
667 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
668 real(RKG) :: rand(size(chol, 1, IK))
669 end function
670#endif
671
672#if RK4_ENABLED
673 impure module function getUSR_RNGD_AM_AC_XLD_D1_RK4(mean, chol, subset) result(rand)
674#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
675 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGD_AM_AC_XLD_D1_RK4
676#endif
677 use pm_kind, only: RKG => RK4
678 type(lowDia_type) , intent(in) :: subset
679 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
680 real(RKG) :: rand(size(chol, 1, IK))
681 end function
682#endif
683
684#if RK3_ENABLED
685 impure module function getUSR_RNGD_AM_AC_XLD_D1_RK3(mean, chol, subset) result(rand)
686#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
687 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGD_AM_AC_XLD_D1_RK3
688#endif
689 use pm_kind, only: RKG => RK3
690 type(lowDia_type) , intent(in) :: subset
691 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
692 real(RKG) :: rand(size(chol, 1, IK))
693 end function
694#endif
695
696#if RK2_ENABLED
697 impure module function getUSR_RNGD_AM_AC_XLD_D1_RK2(mean, chol, subset) result(rand)
698#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
699 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGD_AM_AC_XLD_D1_RK2
700#endif
701 use pm_kind, only: RKG => RK2
702 type(lowDia_type) , intent(in) :: subset
703 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
704 real(RKG) :: rand(size(chol, 1, IK))
705 end function
706#endif
707
708#if RK1_ENABLED
709 impure module function getUSR_RNGD_AM_AC_XLD_D1_RK1(mean, chol, subset) result(rand)
710#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
711 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGD_AM_AC_XLD_D1_RK1
712#endif
713 use pm_kind, only: RKG => RK1
714 type(lowDia_type) , intent(in) :: subset
715 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
716 real(RKG) :: rand(size(chol, 1, IK))
717 end function
718#endif
719
720 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
721
722 end interface
723
724 ! D1 RNGF
725
726 interface getUnifSphereRand
727
728 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
729
730#if RK5_ENABLED
731 impure module function getUSR_RNGF_AM_DC_XXX_D1_RK5(rng, mean) result(rand)
732#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
733 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGF_AM_DC_XXX_D1_RK5
734#endif
735 use pm_kind, only: RKG => RK5
736 type(rngf_type) , intent(in) :: rng
737 real(RKG) , intent(in) , contiguous :: mean(:)
738 real(RKG) :: rand(size(mean, 1, IK))
739 end function
740#endif
741
742#if RK4_ENABLED
743 impure module function getUSR_RNGF_AM_DC_XXX_D1_RK4(rng, mean) result(rand)
744#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
745 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGF_AM_DC_XXX_D1_RK4
746#endif
747 use pm_kind, only: RKG => RK4
748 type(rngf_type) , intent(in) :: rng
749 real(RKG) , intent(in) , contiguous :: mean(:)
750 real(RKG) :: rand(size(mean, 1, IK))
751 end function
752#endif
753
754#if RK3_ENABLED
755 impure module function getUSR_RNGF_AM_DC_XXX_D1_RK3(rng, mean) result(rand)
756#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
757 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGF_AM_DC_XXX_D1_RK3
758#endif
759 use pm_kind, only: RKG => RK3
760 type(rngf_type) , intent(in) :: rng
761 real(RKG) , intent(in) , contiguous :: mean(:)
762 real(RKG) :: rand(size(mean, 1, IK))
763 end function
764#endif
765
766#if RK2_ENABLED
767 impure module function getUSR_RNGF_AM_DC_XXX_D1_RK2(rng, mean) result(rand)
768#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
769 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGF_AM_DC_XXX_D1_RK2
770#endif
771 use pm_kind, only: RKG => RK2
772 type(rngf_type) , intent(in) :: rng
773 real(RKG) , intent(in) , contiguous :: mean(:)
774 real(RKG) :: rand(size(mean, 1, IK))
775 end function
776#endif
777
778#if RK1_ENABLED
779 impure module function getUSR_RNGF_AM_DC_XXX_D1_RK1(rng, mean) result(rand)
780#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
781 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGF_AM_DC_XXX_D1_RK1
782#endif
783 use pm_kind, only: RKG => RK1
784 type(rngf_type) , intent(in) :: rng
785 real(RKG) , intent(in) , contiguous :: mean(:)
786 real(RKG) :: rand(size(mean, 1, IK))
787 end function
788#endif
789
790 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
791
792#if RK5_ENABLED
793 impure module function getUSR_RNGF_DM_AC_UXD_D1_RK5(rng, chol, subset) result(rand)
794#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
795 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGF_DM_AC_UXD_D1_RK5
796#endif
797 use pm_kind, only: RKG => RK5
798 type(rngf_type) , intent(in) :: rng
799 type(uppDia_type) , intent(in) :: subset
800 real(RKG) , intent(in) , contiguous :: chol(:,:)
801 real(RKG) :: rand(size(chol, 1, IK))
802 end function
803#endif
804
805#if RK4_ENABLED
806 impure module function getUSR_RNGF_DM_AC_UXD_D1_RK4(rng, chol, subset) result(rand)
807#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
808 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGF_DM_AC_UXD_D1_RK4
809#endif
810 use pm_kind, only: RKG => RK4
811 type(rngf_type) , intent(in) :: rng
812 type(uppDia_type) , intent(in) :: subset
813 real(RKG) , intent(in) , contiguous :: chol(:,:)
814 real(RKG) :: rand(size(chol, 1, IK))
815 end function
816#endif
817
818#if RK3_ENABLED
819 impure module function getUSR_RNGF_DM_AC_UXD_D1_RK3(rng, chol, subset) result(rand)
820#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
821 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGF_DM_AC_UXD_D1_RK3
822#endif
823 use pm_kind, only: RKG => RK3
824 type(rngf_type) , intent(in) :: rng
825 type(uppDia_type) , intent(in) :: subset
826 real(RKG) , intent(in) , contiguous :: chol(:,:)
827 real(RKG) :: rand(size(chol, 1, IK))
828 end function
829#endif
830
831#if RK2_ENABLED
832 impure module function getUSR_RNGF_DM_AC_UXD_D1_RK2(rng, chol, subset) result(rand)
833#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
834 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGF_DM_AC_UXD_D1_RK2
835#endif
836 use pm_kind, only: RKG => RK2
837 type(rngf_type) , intent(in) :: rng
838 type(uppDia_type) , intent(in) :: subset
839 real(RKG) , intent(in) , contiguous :: chol(:,:)
840 real(RKG) :: rand(size(chol, 1, IK))
841 end function
842#endif
843
844#if RK1_ENABLED
845 impure module function getUSR_RNGF_DM_AC_UXD_D1_RK1(rng, chol, subset) result(rand)
846#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
847 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGF_DM_AC_UXD_D1_RK1
848#endif
849 use pm_kind, only: RKG => RK1
850 type(rngf_type) , intent(in) :: rng
851 type(uppDia_type) , intent(in) :: subset
852 real(RKG) , intent(in) , contiguous :: chol(:,:)
853 real(RKG) :: rand(size(chol, 1, IK))
854 end function
855#endif
856
857 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
858
859#if RK5_ENABLED
860 impure module function getUSR_RNGF_DM_AC_XLD_D1_RK5(rng, chol, subset) result(rand)
861#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
862 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGF_DM_AC_XLD_D1_RK5
863#endif
864 use pm_kind, only: RKG => RK5
865 type(rngf_type) , intent(in) :: rng
866 type(lowDia_type) , intent(in) :: subset
867 real(RKG) , intent(in) , contiguous :: chol(:,:)
868 real(RKG) :: rand(size(chol, 1, IK))
869 end function
870#endif
871
872#if RK4_ENABLED
873 impure module function getUSR_RNGF_DM_AC_XLD_D1_RK4(rng, chol, subset) result(rand)
874#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
875 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGF_DM_AC_XLD_D1_RK4
876#endif
877 use pm_kind, only: RKG => RK4
878 type(rngf_type) , intent(in) :: rng
879 type(lowDia_type) , intent(in) :: subset
880 real(RKG) , intent(in) , contiguous :: chol(:,:)
881 real(RKG) :: rand(size(chol, 1, IK))
882 end function
883#endif
884
885#if RK3_ENABLED
886 impure module function getUSR_RNGF_DM_AC_XLD_D1_RK3(rng, chol, subset) result(rand)
887#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
888 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGF_DM_AC_XLD_D1_RK3
889#endif
890 use pm_kind, only: RKG => RK3
891 type(rngf_type) , intent(in) :: rng
892 type(lowDia_type) , intent(in) :: subset
893 real(RKG) , intent(in) , contiguous :: chol(:,:)
894 real(RKG) :: rand(size(chol, 1, IK))
895 end function
896#endif
897
898#if RK2_ENABLED
899 impure module function getUSR_RNGF_DM_AC_XLD_D1_RK2(rng, chol, subset) result(rand)
900#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
901 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGF_DM_AC_XLD_D1_RK2
902#endif
903 use pm_kind, only: RKG => RK2
904 type(rngf_type) , intent(in) :: rng
905 type(lowDia_type) , intent(in) :: subset
906 real(RKG) , intent(in) , contiguous :: chol(:,:)
907 real(RKG) :: rand(size(chol, 1, IK))
908 end function
909#endif
910
911#if RK1_ENABLED
912 impure module function getUSR_RNGF_DM_AC_XLD_D1_RK1(rng, chol, subset) result(rand)
913#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
914 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGF_DM_AC_XLD_D1_RK1
915#endif
916 use pm_kind, only: RKG => RK1
917 type(rngf_type) , intent(in) :: rng
918 type(lowDia_type) , intent(in) :: subset
919 real(RKG) , intent(in) , contiguous :: chol(:,:)
920 real(RKG) :: rand(size(chol, 1, IK))
921 end function
922#endif
923
924 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
925
926#if RK5_ENABLED
927 impure module function getUSR_RNGF_AM_AC_UXD_D1_RK5(rng, mean, chol, subset) result(rand)
928#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
929 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGF_AM_AC_UXD_D1_RK5
930#endif
931 use pm_kind, only: RKG => RK5
932 type(rngf_type) , intent(in) :: rng
933 type(uppDia_type) , intent(in) :: subset
934 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
935 real(RKG) :: rand(size(chol, 1, IK))
936 end function
937#endif
938
939#if RK4_ENABLED
940 impure module function getUSR_RNGF_AM_AC_UXD_D1_RK4(rng, mean, chol, subset) result(rand)
941#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
942 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGF_AM_AC_UXD_D1_RK4
943#endif
944 use pm_kind, only: RKG => RK4
945 type(rngf_type) , intent(in) :: rng
946 type(uppDia_type) , intent(in) :: subset
947 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
948 real(RKG) :: rand(size(chol, 1, IK))
949 end function
950#endif
951
952#if RK3_ENABLED
953 impure module function getUSR_RNGF_AM_AC_UXD_D1_RK3(rng, mean, chol, subset) result(rand)
954#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
955 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGF_AM_AC_UXD_D1_RK3
956#endif
957 use pm_kind, only: RKG => RK3
958 type(rngf_type) , intent(in) :: rng
959 type(uppDia_type) , intent(in) :: subset
960 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
961 real(RKG) :: rand(size(chol, 1, IK))
962 end function
963#endif
964
965#if RK2_ENABLED
966 impure module function getUSR_RNGF_AM_AC_UXD_D1_RK2(rng, mean, chol, subset) result(rand)
967#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
968 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGF_AM_AC_UXD_D1_RK2
969#endif
970 use pm_kind, only: RKG => RK2
971 type(rngf_type) , intent(in) :: rng
972 type(uppDia_type) , intent(in) :: subset
973 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
974 real(RKG) :: rand(size(chol, 1, IK))
975 end function
976#endif
977
978#if RK1_ENABLED
979 impure module function getUSR_RNGF_AM_AC_UXD_D1_RK1(rng, mean, chol, subset) result(rand)
980#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
981 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGF_AM_AC_UXD_D1_RK1
982#endif
983 use pm_kind, only: RKG => RK1
984 type(rngf_type) , intent(in) :: rng
985 type(uppDia_type) , intent(in) :: subset
986 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
987 real(RKG) :: rand(size(chol, 1, IK))
988 end function
989#endif
990
991 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
992
993#if RK5_ENABLED
994 impure module function getUSR_RNGF_AM_AC_XLD_D1_RK5(rng, mean, chol, subset) result(rand)
995#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
996 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGF_AM_AC_XLD_D1_RK5
997#endif
998 use pm_kind, only: RKG => RK5
999 type(rngf_type) , intent(in) :: rng
1000 type(lowDia_type) , intent(in) :: subset
1001 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
1002 real(RKG) :: rand(size(chol, 1, IK))
1003 end function
1004#endif
1005
1006#if RK4_ENABLED
1007 impure module function getUSR_RNGF_AM_AC_XLD_D1_RK4(rng, mean, chol, subset) result(rand)
1008#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1009 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGF_AM_AC_XLD_D1_RK4
1010#endif
1011 use pm_kind, only: RKG => RK4
1012 type(rngf_type) , intent(in) :: rng
1013 type(lowDia_type) , intent(in) :: subset
1014 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
1015 real(RKG) :: rand(size(chol, 1, IK))
1016 end function
1017#endif
1018
1019#if RK3_ENABLED
1020 impure module function getUSR_RNGF_AM_AC_XLD_D1_RK3(rng, mean, chol, subset) result(rand)
1021#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1022 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGF_AM_AC_XLD_D1_RK3
1023#endif
1024 use pm_kind, only: RKG => RK3
1025 type(rngf_type) , intent(in) :: rng
1026 type(lowDia_type) , intent(in) :: subset
1027 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
1028 real(RKG) :: rand(size(chol, 1, IK))
1029 end function
1030#endif
1031
1032#if RK2_ENABLED
1033 impure module function getUSR_RNGF_AM_AC_XLD_D1_RK2(rng, mean, chol, subset) result(rand)
1034#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1035 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGF_AM_AC_XLD_D1_RK2
1036#endif
1037 use pm_kind, only: RKG => RK2
1038 type(rngf_type) , intent(in) :: rng
1039 type(lowDia_type) , intent(in) :: subset
1040 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
1041 real(RKG) :: rand(size(chol, 1, IK))
1042 end function
1043#endif
1044
1045#if RK1_ENABLED
1046 impure module function getUSR_RNGF_AM_AC_XLD_D1_RK1(rng, mean, chol, subset) result(rand)
1047#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1048 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGF_AM_AC_XLD_D1_RK1
1049#endif
1050 use pm_kind, only: RKG => RK1
1051 type(rngf_type) , intent(in) :: rng
1052 type(lowDia_type) , intent(in) :: subset
1053 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
1054 real(RKG) :: rand(size(chol, 1, IK))
1055 end function
1056#endif
1057
1058 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1059
1060 end interface
1061
1062 ! D1 RNGX
1063
1064 interface getUnifSphereRand
1065
1066 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1067
1068#if RK5_ENABLED
1069 impure module function getUSR_RNGX_AM_DC_XXX_D1_RK5(rng, mean) result(rand)
1070#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1071 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGX_AM_DC_XXX_D1_RK5
1072#endif
1073 use pm_kind, only: RKG => RK5
1074 type(xoshiro256ssw_type), intent(inout) :: rng
1075 real(RKG) , intent(in) , contiguous :: mean(:)
1076 real(RKG) :: rand(size(mean, 1, IK))
1077 end function
1078#endif
1079
1080#if RK4_ENABLED
1081 impure module function getUSR_RNGX_AM_DC_XXX_D1_RK4(rng, mean) result(rand)
1082#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1083 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGX_AM_DC_XXX_D1_RK4
1084#endif
1085 use pm_kind, only: RKG => RK4
1086 type(xoshiro256ssw_type), intent(inout) :: rng
1087 real(RKG) , intent(in) , contiguous :: mean(:)
1088 real(RKG) :: rand(size(mean, 1, IK))
1089 end function
1090#endif
1091
1092#if RK3_ENABLED
1093 impure module function getUSR_RNGX_AM_DC_XXX_D1_RK3(rng, mean) result(rand)
1094#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1095 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGX_AM_DC_XXX_D1_RK3
1096#endif
1097 use pm_kind, only: RKG => RK3
1098 type(xoshiro256ssw_type), intent(inout) :: rng
1099 real(RKG) , intent(in) , contiguous :: mean(:)
1100 real(RKG) :: rand(size(mean, 1, IK))
1101 end function
1102#endif
1103
1104#if RK2_ENABLED
1105 impure module function getUSR_RNGX_AM_DC_XXX_D1_RK2(rng, mean) result(rand)
1106#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1107 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGX_AM_DC_XXX_D1_RK2
1108#endif
1109 use pm_kind, only: RKG => RK2
1110 type(xoshiro256ssw_type), intent(inout) :: rng
1111 real(RKG) , intent(in) , contiguous :: mean(:)
1112 real(RKG) :: rand(size(mean, 1, IK))
1113 end function
1114#endif
1115
1116#if RK1_ENABLED
1117 impure module function getUSR_RNGX_AM_DC_XXX_D1_RK1(rng, mean) result(rand)
1118#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1119 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGX_AM_DC_XXX_D1_RK1
1120#endif
1121 use pm_kind, only: RKG => RK1
1122 type(xoshiro256ssw_type), intent(inout) :: rng
1123 real(RKG) , intent(in) , contiguous :: mean(:)
1124 real(RKG) :: rand(size(mean, 1, IK))
1125 end function
1126#endif
1127
1128 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1129
1130#if RK5_ENABLED
1131 impure module function getUSR_RNGX_DM_AC_UXD_D1_RK5(rng, chol, subset) result(rand)
1132#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1133 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGX_DM_AC_UXD_D1_RK5
1134#endif
1135 use pm_kind, only: RKG => RK5
1136 type(xoshiro256ssw_type), intent(inout) :: rng
1137 type(uppDia_type) , intent(in) :: subset
1138 real(RKG) , intent(in) , contiguous :: chol(:,:)
1139 real(RKG) :: rand(size(chol, 1, IK))
1140 end function
1141#endif
1142
1143#if RK4_ENABLED
1144 impure module function getUSR_RNGX_DM_AC_UXD_D1_RK4(rng, chol, subset) result(rand)
1145#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1146 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGX_DM_AC_UXD_D1_RK4
1147#endif
1148 use pm_kind, only: RKG => RK4
1149 type(xoshiro256ssw_type), intent(inout) :: rng
1150 type(uppDia_type) , intent(in) :: subset
1151 real(RKG) , intent(in) , contiguous :: chol(:,:)
1152 real(RKG) :: rand(size(chol, 1, IK))
1153 end function
1154#endif
1155
1156#if RK3_ENABLED
1157 impure module function getUSR_RNGX_DM_AC_UXD_D1_RK3(rng, chol, subset) result(rand)
1158#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1159 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGX_DM_AC_UXD_D1_RK3
1160#endif
1161 use pm_kind, only: RKG => RK3
1162 type(xoshiro256ssw_type), intent(inout) :: rng
1163 type(uppDia_type) , intent(in) :: subset
1164 real(RKG) , intent(in) , contiguous :: chol(:,:)
1165 real(RKG) :: rand(size(chol, 1, IK))
1166 end function
1167#endif
1168
1169#if RK2_ENABLED
1170 impure module function getUSR_RNGX_DM_AC_UXD_D1_RK2(rng, chol, subset) result(rand)
1171#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1172 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGX_DM_AC_UXD_D1_RK2
1173#endif
1174 use pm_kind, only: RKG => RK2
1175 type(xoshiro256ssw_type), intent(inout) :: rng
1176 type(uppDia_type) , intent(in) :: subset
1177 real(RKG) , intent(in) , contiguous :: chol(:,:)
1178 real(RKG) :: rand(size(chol, 1, IK))
1179 end function
1180#endif
1181
1182#if RK1_ENABLED
1183 impure module function getUSR_RNGX_DM_AC_UXD_D1_RK1(rng, chol, subset) result(rand)
1184#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1185 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGX_DM_AC_UXD_D1_RK1
1186#endif
1187 use pm_kind, only: RKG => RK1
1188 type(xoshiro256ssw_type), intent(inout) :: rng
1189 type(uppDia_type) , intent(in) :: subset
1190 real(RKG) , intent(in) , contiguous :: chol(:,:)
1191 real(RKG) :: rand(size(chol, 1, IK))
1192 end function
1193#endif
1194
1195 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1196
1197#if RK5_ENABLED
1198 impure module function getUSR_RNGX_DM_AC_XLD_D1_RK5(rng, chol, subset) result(rand)
1199#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1200 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGX_DM_AC_XLD_D1_RK5
1201#endif
1202 use pm_kind, only: RKG => RK5
1203 type(xoshiro256ssw_type), intent(inout) :: rng
1204 type(lowDia_type) , intent(in) :: subset
1205 real(RKG) , intent(in) , contiguous :: chol(:,:)
1206 real(RKG) :: rand(size(chol, 1, IK))
1207 end function
1208#endif
1209
1210#if RK4_ENABLED
1211 impure module function getUSR_RNGX_DM_AC_XLD_D1_RK4(rng, chol, subset) result(rand)
1212#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1213 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGX_DM_AC_XLD_D1_RK4
1214#endif
1215 use pm_kind, only: RKG => RK4
1216 type(xoshiro256ssw_type), intent(inout) :: rng
1217 type(lowDia_type) , intent(in) :: subset
1218 real(RKG) , intent(in) , contiguous :: chol(:,:)
1219 real(RKG) :: rand(size(chol, 1, IK))
1220 end function
1221#endif
1222
1223#if RK3_ENABLED
1224 impure module function getUSR_RNGX_DM_AC_XLD_D1_RK3(rng, chol, subset) result(rand)
1225#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1226 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGX_DM_AC_XLD_D1_RK3
1227#endif
1228 use pm_kind, only: RKG => RK3
1229 type(xoshiro256ssw_type), intent(inout) :: rng
1230 type(lowDia_type) , intent(in) :: subset
1231 real(RKG) , intent(in) , contiguous :: chol(:,:)
1232 real(RKG) :: rand(size(chol, 1, IK))
1233 end function
1234#endif
1235
1236#if RK2_ENABLED
1237 impure module function getUSR_RNGX_DM_AC_XLD_D1_RK2(rng, chol, subset) result(rand)
1238#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1239 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGX_DM_AC_XLD_D1_RK2
1240#endif
1241 use pm_kind, only: RKG => RK2
1242 type(xoshiro256ssw_type), intent(inout) :: rng
1243 type(lowDia_type) , intent(in) :: subset
1244 real(RKG) , intent(in) , contiguous :: chol(:,:)
1245 real(RKG) :: rand(size(chol, 1, IK))
1246 end function
1247#endif
1248
1249#if RK1_ENABLED
1250 impure module function getUSR_RNGX_DM_AC_XLD_D1_RK1(rng, chol, subset) result(rand)
1251#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1252 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGX_DM_AC_XLD_D1_RK1
1253#endif
1254 use pm_kind, only: RKG => RK1
1255 type(xoshiro256ssw_type), intent(inout) :: rng
1256 type(lowDia_type) , intent(in) :: subset
1257 real(RKG) , intent(in) , contiguous :: chol(:,:)
1258 real(RKG) :: rand(size(chol, 1, IK))
1259 end function
1260#endif
1261
1262 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1263
1264#if RK5_ENABLED
1265 impure module function getUSR_RNGX_AM_AC_UXD_D1_RK5(rng, mean, chol, subset) result(rand)
1266#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1267 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGX_AM_AC_UXD_D1_RK5
1268#endif
1269 use pm_kind, only: RKG => RK5
1270 type(xoshiro256ssw_type), intent(inout) :: rng
1271 type(uppDia_type) , intent(in) :: subset
1272 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
1273 real(RKG) :: rand(size(chol, 1, IK))
1274 end function
1275#endif
1276
1277#if RK4_ENABLED
1278 impure module function getUSR_RNGX_AM_AC_UXD_D1_RK4(rng, mean, chol, subset) result(rand)
1279#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1280 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGX_AM_AC_UXD_D1_RK4
1281#endif
1282 use pm_kind, only: RKG => RK4
1283 type(xoshiro256ssw_type), intent(inout) :: rng
1284 type(uppDia_type) , intent(in) :: subset
1285 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
1286 real(RKG) :: rand(size(chol, 1, IK))
1287 end function
1288#endif
1289
1290#if RK3_ENABLED
1291 impure module function getUSR_RNGX_AM_AC_UXD_D1_RK3(rng, mean, chol, subset) result(rand)
1292#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1293 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGX_AM_AC_UXD_D1_RK3
1294#endif
1295 use pm_kind, only: RKG => RK3
1296 type(xoshiro256ssw_type), intent(inout) :: rng
1297 type(uppDia_type) , intent(in) :: subset
1298 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
1299 real(RKG) :: rand(size(chol, 1, IK))
1300 end function
1301#endif
1302
1303#if RK2_ENABLED
1304 impure module function getUSR_RNGX_AM_AC_UXD_D1_RK2(rng, mean, chol, subset) result(rand)
1305#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1306 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGX_AM_AC_UXD_D1_RK2
1307#endif
1308 use pm_kind, only: RKG => RK2
1309 type(xoshiro256ssw_type), intent(inout) :: rng
1310 type(uppDia_type) , intent(in) :: subset
1311 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
1312 real(RKG) :: rand(size(chol, 1, IK))
1313 end function
1314#endif
1315
1316#if RK1_ENABLED
1317 impure module function getUSR_RNGX_AM_AC_UXD_D1_RK1(rng, mean, chol, subset) result(rand)
1318#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1319 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGX_AM_AC_UXD_D1_RK1
1320#endif
1321 use pm_kind, only: RKG => RK1
1322 type(xoshiro256ssw_type), intent(inout) :: rng
1323 type(uppDia_type) , intent(in) :: subset
1324 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
1325 real(RKG) :: rand(size(chol, 1, IK))
1326 end function
1327#endif
1328
1329 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1330
1331#if RK5_ENABLED
1332 impure module function getUSR_RNGX_AM_AC_XLD_D1_RK5(rng, mean, chol, subset) result(rand)
1333#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1334 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGX_AM_AC_XLD_D1_RK5
1335#endif
1336 use pm_kind, only: RKG => RK5
1337 type(xoshiro256ssw_type), intent(inout) :: rng
1338 type(lowDia_type) , intent(in) :: subset
1339 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
1340 real(RKG) :: rand(size(chol, 1, IK))
1341 end function
1342#endif
1343
1344#if RK4_ENABLED
1345 impure module function getUSR_RNGX_AM_AC_XLD_D1_RK4(rng, mean, chol, subset) result(rand)
1346#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1347 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGX_AM_AC_XLD_D1_RK4
1348#endif
1349 use pm_kind, only: RKG => RK4
1350 type(xoshiro256ssw_type), intent(inout) :: rng
1351 type(lowDia_type) , intent(in) :: subset
1352 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
1353 real(RKG) :: rand(size(chol, 1, IK))
1354 end function
1355#endif
1356
1357#if RK3_ENABLED
1358 impure module function getUSR_RNGX_AM_AC_XLD_D1_RK3(rng, mean, chol, subset) result(rand)
1359#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1360 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGX_AM_AC_XLD_D1_RK3
1361#endif
1362 use pm_kind, only: RKG => RK3
1363 type(xoshiro256ssw_type), intent(inout) :: rng
1364 type(lowDia_type) , intent(in) :: subset
1365 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
1366 real(RKG) :: rand(size(chol, 1, IK))
1367 end function
1368#endif
1369
1370#if RK2_ENABLED
1371 impure module function getUSR_RNGX_AM_AC_XLD_D1_RK2(rng, mean, chol, subset) result(rand)
1372#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1373 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGX_AM_AC_XLD_D1_RK2
1374#endif
1375 use pm_kind, only: RKG => RK2
1376 type(xoshiro256ssw_type), intent(inout) :: rng
1377 type(lowDia_type) , intent(in) :: subset
1378 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
1379 real(RKG) :: rand(size(chol, 1, IK))
1380 end function
1381#endif
1382
1383#if RK1_ENABLED
1384 impure module function getUSR_RNGX_AM_AC_XLD_D1_RK1(rng, mean, chol, subset) result(rand)
1385#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1386 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGX_AM_AC_XLD_D1_RK1
1387#endif
1388 use pm_kind, only: RKG => RK1
1389 type(xoshiro256ssw_type), intent(inout) :: rng
1390 type(lowDia_type) , intent(in) :: subset
1391 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
1392 real(RKG) :: rand(size(chol, 1, IK))
1393 end function
1394#endif
1395
1396 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1397
1398 end interface
1399
1400 ! D2 RNGD
1401
1402 interface getUnifSphereRand
1403
1404 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1405
1406#if RK5_ENABLED
1407 impure module function getUSR_RNGD_AM_DC_XXX_D2_RK5(mean, nsam) result(rand)
1408#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1409 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGD_AM_DC_XXX_D2_RK5
1410#endif
1411 use pm_kind, only: RKG => RK5
1412 integer(IK) , intent(in) :: nsam
1413 real(RKG) , intent(in) , contiguous :: mean(:)
1414 real(RKG) :: rand(size(mean, 1, IK), nsam)
1415 end function
1416#endif
1417
1418#if RK4_ENABLED
1419 impure module function getUSR_RNGD_AM_DC_XXX_D2_RK4(mean, nsam) result(rand)
1420#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1421 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGD_AM_DC_XXX_D2_RK4
1422#endif
1423 use pm_kind, only: RKG => RK4
1424 integer(IK) , intent(in) :: nsam
1425 real(RKG) , intent(in) , contiguous :: mean(:)
1426 real(RKG) :: rand(size(mean, 1, IK), nsam)
1427 end function
1428#endif
1429
1430#if RK3_ENABLED
1431 impure module function getUSR_RNGD_AM_DC_XXX_D2_RK3(mean, nsam) result(rand)
1432#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1433 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGD_AM_DC_XXX_D2_RK3
1434#endif
1435 use pm_kind, only: RKG => RK3
1436 integer(IK) , intent(in) :: nsam
1437 real(RKG) , intent(in) , contiguous :: mean(:)
1438 real(RKG) :: rand(size(mean, 1, IK), nsam)
1439 end function
1440#endif
1441
1442#if RK2_ENABLED
1443 impure module function getUSR_RNGD_AM_DC_XXX_D2_RK2(mean, nsam) result(rand)
1444#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1445 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGD_AM_DC_XXX_D2_RK2
1446#endif
1447 use pm_kind, only: RKG => RK2
1448 integer(IK) , intent(in) :: nsam
1449 real(RKG) , intent(in) , contiguous :: mean(:)
1450 real(RKG) :: rand(size(mean, 1, IK), nsam)
1451 end function
1452#endif
1453
1454#if RK1_ENABLED
1455 impure module function getUSR_RNGD_AM_DC_XXX_D2_RK1(mean, nsam) result(rand)
1456#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1457 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGD_AM_DC_XXX_D2_RK1
1458#endif
1459 use pm_kind, only: RKG => RK1
1460 integer(IK) , intent(in) :: nsam
1461 real(RKG) , intent(in) , contiguous :: mean(:)
1462 real(RKG) :: rand(size(mean, 1, IK), nsam)
1463 end function
1464#endif
1465
1466 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1467
1468#if RK5_ENABLED
1469 impure module function getUSR_RNGD_DM_AC_UXD_D2_RK5(chol, subset, nsam) result(rand)
1470#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1471 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGD_DM_AC_UXD_D2_RK5
1472#endif
1473 use pm_kind, only: RKG => RK5
1474 integer(IK) , intent(in) :: nsam
1475 type(uppDia_type) , intent(in) :: subset
1476 real(RKG) , intent(in) , contiguous :: chol(:,:)
1477 real(RKG) :: rand(size(chol, 1, IK), nsam)
1478 end function
1479#endif
1480
1481#if RK4_ENABLED
1482 impure module function getUSR_RNGD_DM_AC_UXD_D2_RK4(chol, subset, nsam) result(rand)
1483#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1484 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGD_DM_AC_UXD_D2_RK4
1485#endif
1486 use pm_kind, only: RKG => RK4
1487 integer(IK) , intent(in) :: nsam
1488 type(uppDia_type) , intent(in) :: subset
1489 real(RKG) , intent(in) , contiguous :: chol(:,:)
1490 real(RKG) :: rand(size(chol, 1, IK), nsam)
1491 end function
1492#endif
1493
1494#if RK3_ENABLED
1495 impure module function getUSR_RNGD_DM_AC_UXD_D2_RK3(chol, subset, nsam) result(rand)
1496#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1497 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGD_DM_AC_UXD_D2_RK3
1498#endif
1499 use pm_kind, only: RKG => RK3
1500 integer(IK) , intent(in) :: nsam
1501 type(uppDia_type) , intent(in) :: subset
1502 real(RKG) , intent(in) , contiguous :: chol(:,:)
1503 real(RKG) :: rand(size(chol, 1, IK), nsam)
1504 end function
1505#endif
1506
1507#if RK2_ENABLED
1508 impure module function getUSR_RNGD_DM_AC_UXD_D2_RK2(chol, subset, nsam) result(rand)
1509#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1510 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGD_DM_AC_UXD_D2_RK2
1511#endif
1512 use pm_kind, only: RKG => RK2
1513 integer(IK) , intent(in) :: nsam
1514 type(uppDia_type) , intent(in) :: subset
1515 real(RKG) , intent(in) , contiguous :: chol(:,:)
1516 real(RKG) :: rand(size(chol, 1, IK), nsam)
1517 end function
1518#endif
1519
1520#if RK1_ENABLED
1521 impure module function getUSR_RNGD_DM_AC_UXD_D2_RK1(chol, subset, nsam) result(rand)
1522#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1523 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGD_DM_AC_UXD_D2_RK1
1524#endif
1525 use pm_kind, only: RKG => RK1
1526 integer(IK) , intent(in) :: nsam
1527 type(uppDia_type) , intent(in) :: subset
1528 real(RKG) , intent(in) , contiguous :: chol(:,:)
1529 real(RKG) :: rand(size(chol, 1, IK), nsam)
1530 end function
1531#endif
1532
1533 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1534
1535#if RK5_ENABLED
1536 impure module function getUSR_RNGD_DM_AC_XLD_D2_RK5(chol, subset, nsam) result(rand)
1537#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1538 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGD_DM_AC_XLD_D2_RK5
1539#endif
1540 use pm_kind, only: RKG => RK5
1541 integer(IK) , intent(in) :: nsam
1542 type(lowDia_type) , intent(in) :: subset
1543 real(RKG) , intent(in) , contiguous :: chol(:,:)
1544 real(RKG) :: rand(size(chol, 1, IK), nsam)
1545 end function
1546#endif
1547
1548#if RK4_ENABLED
1549 impure module function getUSR_RNGD_DM_AC_XLD_D2_RK4(chol, subset, nsam) result(rand)
1550#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1551 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGD_DM_AC_XLD_D2_RK4
1552#endif
1553 use pm_kind, only: RKG => RK4
1554 integer(IK) , intent(in) :: nsam
1555 type(lowDia_type) , intent(in) :: subset
1556 real(RKG) , intent(in) , contiguous :: chol(:,:)
1557 real(RKG) :: rand(size(chol, 1, IK), nsam)
1558 end function
1559#endif
1560
1561#if RK3_ENABLED
1562 impure module function getUSR_RNGD_DM_AC_XLD_D2_RK3(chol, subset, nsam) result(rand)
1563#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1564 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGD_DM_AC_XLD_D2_RK3
1565#endif
1566 use pm_kind, only: RKG => RK3
1567 integer(IK) , intent(in) :: nsam
1568 type(lowDia_type) , intent(in) :: subset
1569 real(RKG) , intent(in) , contiguous :: chol(:,:)
1570 real(RKG) :: rand(size(chol, 1, IK), nsam)
1571 end function
1572#endif
1573
1574#if RK2_ENABLED
1575 impure module function getUSR_RNGD_DM_AC_XLD_D2_RK2(chol, subset, nsam) result(rand)
1576#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1577 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGD_DM_AC_XLD_D2_RK2
1578#endif
1579 use pm_kind, only: RKG => RK2
1580 integer(IK) , intent(in) :: nsam
1581 type(lowDia_type) , intent(in) :: subset
1582 real(RKG) , intent(in) , contiguous :: chol(:,:)
1583 real(RKG) :: rand(size(chol, 1, IK), nsam)
1584 end function
1585#endif
1586
1587#if RK1_ENABLED
1588 impure module function getUSR_RNGD_DM_AC_XLD_D2_RK1(chol, subset, nsam) result(rand)
1589#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1590 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGD_DM_AC_XLD_D2_RK1
1591#endif
1592 use pm_kind, only: RKG => RK1
1593 integer(IK) , intent(in) :: nsam
1594 type(lowDia_type) , intent(in) :: subset
1595 real(RKG) , intent(in) , contiguous :: chol(:,:)
1596 real(RKG) :: rand(size(chol, 1, IK), nsam)
1597 end function
1598#endif
1599
1600 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1601
1602#if RK5_ENABLED
1603 impure module function getUSR_RNGD_AM_AC_UXD_D2_RK5(mean, chol, subset, nsam) result(rand)
1604#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1605 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGD_AM_AC_UXD_D2_RK5
1606#endif
1607 use pm_kind, only: RKG => RK5
1608 integer(IK) , intent(in) :: nsam
1609 type(uppDia_type) , intent(in) :: subset
1610 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
1611 real(RKG) :: rand(size(chol, 1, IK), nsam)
1612 end function
1613#endif
1614
1615#if RK4_ENABLED
1616 impure module function getUSR_RNGD_AM_AC_UXD_D2_RK4(mean, chol, subset, nsam) result(rand)
1617#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1618 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGD_AM_AC_UXD_D2_RK4
1619#endif
1620 use pm_kind, only: RKG => RK4
1621 integer(IK) , intent(in) :: nsam
1622 type(uppDia_type) , intent(in) :: subset
1623 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
1624 real(RKG) :: rand(size(chol, 1, IK), nsam)
1625 end function
1626#endif
1627
1628#if RK3_ENABLED
1629 impure module function getUSR_RNGD_AM_AC_UXD_D2_RK3(mean, chol, subset, nsam) result(rand)
1630#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1631 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGD_AM_AC_UXD_D2_RK3
1632#endif
1633 use pm_kind, only: RKG => RK3
1634 integer(IK) , intent(in) :: nsam
1635 type(uppDia_type) , intent(in) :: subset
1636 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
1637 real(RKG) :: rand(size(chol, 1, IK), nsam)
1638 end function
1639#endif
1640
1641#if RK2_ENABLED
1642 impure module function getUSR_RNGD_AM_AC_UXD_D2_RK2(mean, chol, subset, nsam) result(rand)
1643#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1644 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGD_AM_AC_UXD_D2_RK2
1645#endif
1646 use pm_kind, only: RKG => RK2
1647 integer(IK) , intent(in) :: nsam
1648 type(uppDia_type) , intent(in) :: subset
1649 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
1650 real(RKG) :: rand(size(chol, 1, IK), nsam)
1651 end function
1652#endif
1653
1654#if RK1_ENABLED
1655 impure module function getUSR_RNGD_AM_AC_UXD_D2_RK1(mean, chol, subset, nsam) result(rand)
1656#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1657 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGD_AM_AC_UXD_D2_RK1
1658#endif
1659 use pm_kind, only: RKG => RK1
1660 integer(IK) , intent(in) :: nsam
1661 type(uppDia_type) , intent(in) :: subset
1662 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
1663 real(RKG) :: rand(size(chol, 1, IK), nsam)
1664 end function
1665#endif
1666
1667 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1668
1669#if RK5_ENABLED
1670 impure module function getUSR_RNGD_AM_AC_XLD_D2_RK5(mean, chol, subset, nsam) result(rand)
1671#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1672 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGD_AM_AC_XLD_D2_RK5
1673#endif
1674 use pm_kind, only: RKG => RK5
1675 integer(IK) , intent(in) :: nsam
1676 type(lowDia_type) , intent(in) :: subset
1677 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
1678 real(RKG) :: rand(size(chol, 1, IK), nsam)
1679 end function
1680#endif
1681
1682#if RK4_ENABLED
1683 impure module function getUSR_RNGD_AM_AC_XLD_D2_RK4(mean, chol, subset, nsam) result(rand)
1684#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1685 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGD_AM_AC_XLD_D2_RK4
1686#endif
1687 use pm_kind, only: RKG => RK4
1688 integer(IK) , intent(in) :: nsam
1689 type(lowDia_type) , intent(in) :: subset
1690 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
1691 real(RKG) :: rand(size(chol, 1, IK), nsam)
1692 end function
1693#endif
1694
1695#if RK3_ENABLED
1696 impure module function getUSR_RNGD_AM_AC_XLD_D2_RK3(mean, chol, subset, nsam) result(rand)
1697#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1698 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGD_AM_AC_XLD_D2_RK3
1699#endif
1700 use pm_kind, only: RKG => RK3
1701 integer(IK) , intent(in) :: nsam
1702 type(lowDia_type) , intent(in) :: subset
1703 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
1704 real(RKG) :: rand(size(chol, 1, IK), nsam)
1705 end function
1706#endif
1707
1708#if RK2_ENABLED
1709 impure module function getUSR_RNGD_AM_AC_XLD_D2_RK2(mean, chol, subset, nsam) result(rand)
1710#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1711 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGD_AM_AC_XLD_D2_RK2
1712#endif
1713 use pm_kind, only: RKG => RK2
1714 integer(IK) , intent(in) :: nsam
1715 type(lowDia_type) , intent(in) :: subset
1716 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
1717 real(RKG) :: rand(size(chol, 1, IK), nsam)
1718 end function
1719#endif
1720
1721#if RK1_ENABLED
1722 impure module function getUSR_RNGD_AM_AC_XLD_D2_RK1(mean, chol, subset, nsam) result(rand)
1723#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1724 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGD_AM_AC_XLD_D2_RK1
1725#endif
1726 use pm_kind, only: RKG => RK1
1727 integer(IK) , intent(in) :: nsam
1728 type(lowDia_type) , intent(in) :: subset
1729 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
1730 real(RKG) :: rand(size(chol, 1, IK), nsam)
1731 end function
1732#endif
1733
1734 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1735
1736 end interface
1737
1738 ! D2 RNGF
1739
1740 interface getUnifSphereRand
1741
1742 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1743
1744#if RK5_ENABLED
1745 impure module function getUSR_RNGF_AM_DC_XXX_D2_RK5(rng, mean, nsam) result(rand)
1746#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1747 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGF_AM_DC_XXX_D2_RK5
1748#endif
1749 use pm_kind, only: RKG => RK5
1750 type(rngf_type) , intent(in) :: rng
1751 integer(IK) , intent(in) :: nsam
1752 real(RKG) , intent(in) , contiguous :: mean(:)
1753 real(RKG) :: rand(size(mean, 1, IK), nsam)
1754 end function
1755#endif
1756
1757#if RK4_ENABLED
1758 impure module function getUSR_RNGF_AM_DC_XXX_D2_RK4(rng, mean, nsam) result(rand)
1759#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1760 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGF_AM_DC_XXX_D2_RK4
1761#endif
1762 use pm_kind, only: RKG => RK4
1763 type(rngf_type) , intent(in) :: rng
1764 integer(IK) , intent(in) :: nsam
1765 real(RKG) , intent(in) , contiguous :: mean(:)
1766 real(RKG) :: rand(size(mean, 1, IK), nsam)
1767 end function
1768#endif
1769
1770#if RK3_ENABLED
1771 impure module function getUSR_RNGF_AM_DC_XXX_D2_RK3(rng, mean, nsam) result(rand)
1772#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1773 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGF_AM_DC_XXX_D2_RK3
1774#endif
1775 use pm_kind, only: RKG => RK3
1776 type(rngf_type) , intent(in) :: rng
1777 integer(IK) , intent(in) :: nsam
1778 real(RKG) , intent(in) , contiguous :: mean(:)
1779 real(RKG) :: rand(size(mean, 1, IK), nsam)
1780 end function
1781#endif
1782
1783#if RK2_ENABLED
1784 impure module function getUSR_RNGF_AM_DC_XXX_D2_RK2(rng, mean, nsam) result(rand)
1785#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1786 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGF_AM_DC_XXX_D2_RK2
1787#endif
1788 use pm_kind, only: RKG => RK2
1789 type(rngf_type) , intent(in) :: rng
1790 integer(IK) , intent(in) :: nsam
1791 real(RKG) , intent(in) , contiguous :: mean(:)
1792 real(RKG) :: rand(size(mean, 1, IK), nsam)
1793 end function
1794#endif
1795
1796#if RK1_ENABLED
1797 impure module function getUSR_RNGF_AM_DC_XXX_D2_RK1(rng, mean, nsam) result(rand)
1798#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1799 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGF_AM_DC_XXX_D2_RK1
1800#endif
1801 use pm_kind, only: RKG => RK1
1802 type(rngf_type) , intent(in) :: rng
1803 integer(IK) , intent(in) :: nsam
1804 real(RKG) , intent(in) , contiguous :: mean(:)
1805 real(RKG) :: rand(size(mean, 1, IK), nsam)
1806 end function
1807#endif
1808
1809 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1810
1811#if RK5_ENABLED
1812 impure module function getUSR_RNGF_DM_AC_UXD_D2_RK5(rng, chol, subset, nsam) result(rand)
1813#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1814 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGF_DM_AC_UXD_D2_RK5
1815#endif
1816 use pm_kind, only: RKG => RK5
1817 type(rngf_type) , intent(in) :: rng
1818 integer(IK) , intent(in) :: nsam
1819 type(uppDia_type) , intent(in) :: subset
1820 real(RKG) , intent(in) , contiguous :: chol(:,:)
1821 real(RKG) :: rand(size(chol, 1, IK), nsam)
1822 end function
1823#endif
1824
1825#if RK4_ENABLED
1826 impure module function getUSR_RNGF_DM_AC_UXD_D2_RK4(rng, chol, subset, nsam) result(rand)
1827#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1828 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGF_DM_AC_UXD_D2_RK4
1829#endif
1830 use pm_kind, only: RKG => RK4
1831 type(rngf_type) , intent(in) :: rng
1832 integer(IK) , intent(in) :: nsam
1833 type(uppDia_type) , intent(in) :: subset
1834 real(RKG) , intent(in) , contiguous :: chol(:,:)
1835 real(RKG) :: rand(size(chol, 1, IK), nsam)
1836 end function
1837#endif
1838
1839#if RK3_ENABLED
1840 impure module function getUSR_RNGF_DM_AC_UXD_D2_RK3(rng, chol, subset, nsam) result(rand)
1841#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1842 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGF_DM_AC_UXD_D2_RK3
1843#endif
1844 use pm_kind, only: RKG => RK3
1845 type(rngf_type) , intent(in) :: rng
1846 integer(IK) , intent(in) :: nsam
1847 type(uppDia_type) , intent(in) :: subset
1848 real(RKG) , intent(in) , contiguous :: chol(:,:)
1849 real(RKG) :: rand(size(chol, 1, IK), nsam)
1850 end function
1851#endif
1852
1853#if RK2_ENABLED
1854 impure module function getUSR_RNGF_DM_AC_UXD_D2_RK2(rng, chol, subset, nsam) result(rand)
1855#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1856 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGF_DM_AC_UXD_D2_RK2
1857#endif
1858 use pm_kind, only: RKG => RK2
1859 type(rngf_type) , intent(in) :: rng
1860 integer(IK) , intent(in) :: nsam
1861 type(uppDia_type) , intent(in) :: subset
1862 real(RKG) , intent(in) , contiguous :: chol(:,:)
1863 real(RKG) :: rand(size(chol, 1, IK), nsam)
1864 end function
1865#endif
1866
1867#if RK1_ENABLED
1868 impure module function getUSR_RNGF_DM_AC_UXD_D2_RK1(rng, chol, subset, nsam) result(rand)
1869#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1870 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGF_DM_AC_UXD_D2_RK1
1871#endif
1872 use pm_kind, only: RKG => RK1
1873 type(rngf_type) , intent(in) :: rng
1874 integer(IK) , intent(in) :: nsam
1875 type(uppDia_type) , intent(in) :: subset
1876 real(RKG) , intent(in) , contiguous :: chol(:,:)
1877 real(RKG) :: rand(size(chol, 1, IK), nsam)
1878 end function
1879#endif
1880
1881 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1882
1883#if RK5_ENABLED
1884 impure module function getUSR_RNGF_DM_AC_XLD_D2_RK5(rng, chol, subset, nsam) result(rand)
1885#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1886 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGF_DM_AC_XLD_D2_RK5
1887#endif
1888 use pm_kind, only: RKG => RK5
1889 type(rngf_type) , intent(in) :: rng
1890 integer(IK) , intent(in) :: nsam
1891 type(lowDia_type) , intent(in) :: subset
1892 real(RKG) , intent(in) , contiguous :: chol(:,:)
1893 real(RKG) :: rand(size(chol, 1, IK), nsam)
1894 end function
1895#endif
1896
1897#if RK4_ENABLED
1898 impure module function getUSR_RNGF_DM_AC_XLD_D2_RK4(rng, chol, subset, nsam) result(rand)
1899#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1900 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGF_DM_AC_XLD_D2_RK4
1901#endif
1902 use pm_kind, only: RKG => RK4
1903 type(rngf_type) , intent(in) :: rng
1904 integer(IK) , intent(in) :: nsam
1905 type(lowDia_type) , intent(in) :: subset
1906 real(RKG) , intent(in) , contiguous :: chol(:,:)
1907 real(RKG) :: rand(size(chol, 1, IK), nsam)
1908 end function
1909#endif
1910
1911#if RK3_ENABLED
1912 impure module function getUSR_RNGF_DM_AC_XLD_D2_RK3(rng, chol, subset, nsam) result(rand)
1913#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1914 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGF_DM_AC_XLD_D2_RK3
1915#endif
1916 use pm_kind, only: RKG => RK3
1917 type(rngf_type) , intent(in) :: rng
1918 integer(IK) , intent(in) :: nsam
1919 type(lowDia_type) , intent(in) :: subset
1920 real(RKG) , intent(in) , contiguous :: chol(:,:)
1921 real(RKG) :: rand(size(chol, 1, IK), nsam)
1922 end function
1923#endif
1924
1925#if RK2_ENABLED
1926 impure module function getUSR_RNGF_DM_AC_XLD_D2_RK2(rng, chol, subset, nsam) result(rand)
1927#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1928 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGF_DM_AC_XLD_D2_RK2
1929#endif
1930 use pm_kind, only: RKG => RK2
1931 type(rngf_type) , intent(in) :: rng
1932 integer(IK) , intent(in) :: nsam
1933 type(lowDia_type) , intent(in) :: subset
1934 real(RKG) , intent(in) , contiguous :: chol(:,:)
1935 real(RKG) :: rand(size(chol, 1, IK), nsam)
1936 end function
1937#endif
1938
1939#if RK1_ENABLED
1940 impure module function getUSR_RNGF_DM_AC_XLD_D2_RK1(rng, chol, subset, nsam) result(rand)
1941#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1942 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGF_DM_AC_XLD_D2_RK1
1943#endif
1944 use pm_kind, only: RKG => RK1
1945 type(rngf_type) , intent(in) :: rng
1946 integer(IK) , intent(in) :: nsam
1947 type(lowDia_type) , intent(in) :: subset
1948 real(RKG) , intent(in) , contiguous :: chol(:,:)
1949 real(RKG) :: rand(size(chol, 1, IK), nsam)
1950 end function
1951#endif
1952
1953 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1954
1955#if RK5_ENABLED
1956 impure module function getUSR_RNGF_AM_AC_UXD_D2_RK5(rng, mean, chol, subset, nsam) result(rand)
1957#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1958 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGF_AM_AC_UXD_D2_RK5
1959#endif
1960 use pm_kind, only: RKG => RK5
1961 type(rngf_type) , intent(in) :: rng
1962 integer(IK) , intent(in) :: nsam
1963 type(uppDia_type) , intent(in) :: subset
1964 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
1965 real(RKG) :: rand(size(chol, 1, IK), nsam)
1966 end function
1967#endif
1968
1969#if RK4_ENABLED
1970 impure module function getUSR_RNGF_AM_AC_UXD_D2_RK4(rng, mean, chol, subset, nsam) result(rand)
1971#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1972 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGF_AM_AC_UXD_D2_RK4
1973#endif
1974 use pm_kind, only: RKG => RK4
1975 type(rngf_type) , intent(in) :: rng
1976 integer(IK) , intent(in) :: nsam
1977 type(uppDia_type) , intent(in) :: subset
1978 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
1979 real(RKG) :: rand(size(chol, 1, IK), nsam)
1980 end function
1981#endif
1982
1983#if RK3_ENABLED
1984 impure module function getUSR_RNGF_AM_AC_UXD_D2_RK3(rng, mean, chol, subset, nsam) result(rand)
1985#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1986 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGF_AM_AC_UXD_D2_RK3
1987#endif
1988 use pm_kind, only: RKG => RK3
1989 type(rngf_type) , intent(in) :: rng
1990 integer(IK) , intent(in) :: nsam
1991 type(uppDia_type) , intent(in) :: subset
1992 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
1993 real(RKG) :: rand(size(chol, 1, IK), nsam)
1994 end function
1995#endif
1996
1997#if RK2_ENABLED
1998 impure module function getUSR_RNGF_AM_AC_UXD_D2_RK2(rng, mean, chol, subset, nsam) result(rand)
1999#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2000 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGF_AM_AC_UXD_D2_RK2
2001#endif
2002 use pm_kind, only: RKG => RK2
2003 type(rngf_type) , intent(in) :: rng
2004 integer(IK) , intent(in) :: nsam
2005 type(uppDia_type) , intent(in) :: subset
2006 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
2007 real(RKG) :: rand(size(chol, 1, IK), nsam)
2008 end function
2009#endif
2010
2011#if RK1_ENABLED
2012 impure module function getUSR_RNGF_AM_AC_UXD_D2_RK1(rng, mean, chol, subset, nsam) result(rand)
2013#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2014 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGF_AM_AC_UXD_D2_RK1
2015#endif
2016 use pm_kind, only: RKG => RK1
2017 type(rngf_type) , intent(in) :: rng
2018 integer(IK) , intent(in) :: nsam
2019 type(uppDia_type) , intent(in) :: subset
2020 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
2021 real(RKG) :: rand(size(chol, 1, IK), nsam)
2022 end function
2023#endif
2024
2025 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2026
2027#if RK5_ENABLED
2028 impure module function getUSR_RNGF_AM_AC_XLD_D2_RK5(rng, mean, chol, subset, nsam) result(rand)
2029#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2030 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGF_AM_AC_XLD_D2_RK5
2031#endif
2032 use pm_kind, only: RKG => RK5
2033 type(rngf_type) , intent(in) :: rng
2034 integer(IK) , intent(in) :: nsam
2035 type(lowDia_type) , intent(in) :: subset
2036 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
2037 real(RKG) :: rand(size(chol, 1, IK), nsam)
2038 end function
2039#endif
2040
2041#if RK4_ENABLED
2042 impure module function getUSR_RNGF_AM_AC_XLD_D2_RK4(rng, mean, chol, subset, nsam) result(rand)
2043#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2044 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGF_AM_AC_XLD_D2_RK4
2045#endif
2046 use pm_kind, only: RKG => RK4
2047 type(rngf_type) , intent(in) :: rng
2048 integer(IK) , intent(in) :: nsam
2049 type(lowDia_type) , intent(in) :: subset
2050 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
2051 real(RKG) :: rand(size(chol, 1, IK), nsam)
2052 end function
2053#endif
2054
2055#if RK3_ENABLED
2056 impure module function getUSR_RNGF_AM_AC_XLD_D2_RK3(rng, mean, chol, subset, nsam) result(rand)
2057#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2058 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGF_AM_AC_XLD_D2_RK3
2059#endif
2060 use pm_kind, only: RKG => RK3
2061 type(rngf_type) , intent(in) :: rng
2062 integer(IK) , intent(in) :: nsam
2063 type(lowDia_type) , intent(in) :: subset
2064 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
2065 real(RKG) :: rand(size(chol, 1, IK), nsam)
2066 end function
2067#endif
2068
2069#if RK2_ENABLED
2070 impure module function getUSR_RNGF_AM_AC_XLD_D2_RK2(rng, mean, chol, subset, nsam) result(rand)
2071#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2072 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGF_AM_AC_XLD_D2_RK2
2073#endif
2074 use pm_kind, only: RKG => RK2
2075 type(rngf_type) , intent(in) :: rng
2076 integer(IK) , intent(in) :: nsam
2077 type(lowDia_type) , intent(in) :: subset
2078 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
2079 real(RKG) :: rand(size(chol, 1, IK), nsam)
2080 end function
2081#endif
2082
2083#if RK1_ENABLED
2084 impure module function getUSR_RNGF_AM_AC_XLD_D2_RK1(rng, mean, chol, subset, nsam) result(rand)
2085#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2086 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGF_AM_AC_XLD_D2_RK1
2087#endif
2088 use pm_kind, only: RKG => RK1
2089 type(rngf_type) , intent(in) :: rng
2090 integer(IK) , intent(in) :: nsam
2091 type(lowDia_type) , intent(in) :: subset
2092 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
2093 real(RKG) :: rand(size(chol, 1, IK), nsam)
2094 end function
2095#endif
2096
2097 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2098
2099 end interface
2100
2101 ! D2 RNGX
2102
2103 interface getUnifSphereRand
2104
2105 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2106
2107#if RK5_ENABLED
2108 impure module function getUSR_RNGX_AM_DC_XXX_D2_RK5(rng, mean, nsam) result(rand)
2109#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2110 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGX_AM_DC_XXX_D2_RK5
2111#endif
2112 use pm_kind, only: RKG => RK5
2113 type(xoshiro256ssw_type), intent(inout) :: rng
2114 integer(IK) , intent(in) :: nsam
2115 real(RKG) , intent(in) , contiguous :: mean(:)
2116 real(RKG) :: rand(size(mean, 1, IK), nsam)
2117 end function
2118#endif
2119
2120#if RK4_ENABLED
2121 impure module function getUSR_RNGX_AM_DC_XXX_D2_RK4(rng, mean, nsam) result(rand)
2122#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2123 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGX_AM_DC_XXX_D2_RK4
2124#endif
2125 use pm_kind, only: RKG => RK4
2126 type(xoshiro256ssw_type), intent(inout) :: rng
2127 integer(IK) , intent(in) :: nsam
2128 real(RKG) , intent(in) , contiguous :: mean(:)
2129 real(RKG) :: rand(size(mean, 1, IK), nsam)
2130 end function
2131#endif
2132
2133#if RK3_ENABLED
2134 impure module function getUSR_RNGX_AM_DC_XXX_D2_RK3(rng, mean, nsam) result(rand)
2135#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2136 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGX_AM_DC_XXX_D2_RK3
2137#endif
2138 use pm_kind, only: RKG => RK3
2139 type(xoshiro256ssw_type), intent(inout) :: rng
2140 integer(IK) , intent(in) :: nsam
2141 real(RKG) , intent(in) , contiguous :: mean(:)
2142 real(RKG) :: rand(size(mean, 1, IK), nsam)
2143 end function
2144#endif
2145
2146#if RK2_ENABLED
2147 impure module function getUSR_RNGX_AM_DC_XXX_D2_RK2(rng, mean, nsam) result(rand)
2148#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2149 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGX_AM_DC_XXX_D2_RK2
2150#endif
2151 use pm_kind, only: RKG => RK2
2152 type(xoshiro256ssw_type), intent(inout) :: rng
2153 integer(IK) , intent(in) :: nsam
2154 real(RKG) , intent(in) , contiguous :: mean(:)
2155 real(RKG) :: rand(size(mean, 1, IK), nsam)
2156 end function
2157#endif
2158
2159#if RK1_ENABLED
2160 impure module function getUSR_RNGX_AM_DC_XXX_D2_RK1(rng, mean, nsam) result(rand)
2161#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2162 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGX_AM_DC_XXX_D2_RK1
2163#endif
2164 use pm_kind, only: RKG => RK1
2165 type(xoshiro256ssw_type), intent(inout) :: rng
2166 integer(IK) , intent(in) :: nsam
2167 real(RKG) , intent(in) , contiguous :: mean(:)
2168 real(RKG) :: rand(size(mean, 1, IK), nsam)
2169 end function
2170#endif
2171
2172 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2173
2174#if RK5_ENABLED
2175 impure module function getUSR_RNGX_DM_AC_UXD_D2_RK5(rng, chol, subset, nsam) result(rand)
2176#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2177 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGX_DM_AC_UXD_D2_RK5
2178#endif
2179 use pm_kind, only: RKG => RK5
2180 type(xoshiro256ssw_type), intent(inout) :: rng
2181 integer(IK) , intent(in) :: nsam
2182 type(uppDia_type) , intent(in) :: subset
2183 real(RKG) , intent(in) , contiguous :: chol(:,:)
2184 real(RKG) :: rand(size(chol, 1, IK), nsam)
2185 end function
2186#endif
2187
2188#if RK4_ENABLED
2189 impure module function getUSR_RNGX_DM_AC_UXD_D2_RK4(rng, chol, subset, nsam) result(rand)
2190#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2191 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGX_DM_AC_UXD_D2_RK4
2192#endif
2193 use pm_kind, only: RKG => RK4
2194 type(xoshiro256ssw_type), intent(inout) :: rng
2195 integer(IK) , intent(in) :: nsam
2196 type(uppDia_type) , intent(in) :: subset
2197 real(RKG) , intent(in) , contiguous :: chol(:,:)
2198 real(RKG) :: rand(size(chol, 1, IK), nsam)
2199 end function
2200#endif
2201
2202#if RK3_ENABLED
2203 impure module function getUSR_RNGX_DM_AC_UXD_D2_RK3(rng, chol, subset, nsam) result(rand)
2204#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2205 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGX_DM_AC_UXD_D2_RK3
2206#endif
2207 use pm_kind, only: RKG => RK3
2208 type(xoshiro256ssw_type), intent(inout) :: rng
2209 integer(IK) , intent(in) :: nsam
2210 type(uppDia_type) , intent(in) :: subset
2211 real(RKG) , intent(in) , contiguous :: chol(:,:)
2212 real(RKG) :: rand(size(chol, 1, IK), nsam)
2213 end function
2214#endif
2215
2216#if RK2_ENABLED
2217 impure module function getUSR_RNGX_DM_AC_UXD_D2_RK2(rng, chol, subset, nsam) result(rand)
2218#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2219 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGX_DM_AC_UXD_D2_RK2
2220#endif
2221 use pm_kind, only: RKG => RK2
2222 type(xoshiro256ssw_type), intent(inout) :: rng
2223 integer(IK) , intent(in) :: nsam
2224 type(uppDia_type) , intent(in) :: subset
2225 real(RKG) , intent(in) , contiguous :: chol(:,:)
2226 real(RKG) :: rand(size(chol, 1, IK), nsam)
2227 end function
2228#endif
2229
2230#if RK1_ENABLED
2231 impure module function getUSR_RNGX_DM_AC_UXD_D2_RK1(rng, chol, subset, nsam) result(rand)
2232#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2233 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGX_DM_AC_UXD_D2_RK1
2234#endif
2235 use pm_kind, only: RKG => RK1
2236 type(xoshiro256ssw_type), intent(inout) :: rng
2237 integer(IK) , intent(in) :: nsam
2238 type(uppDia_type) , intent(in) :: subset
2239 real(RKG) , intent(in) , contiguous :: chol(:,:)
2240 real(RKG) :: rand(size(chol, 1, IK), nsam)
2241 end function
2242#endif
2243
2244 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2245
2246#if RK5_ENABLED
2247 impure module function getUSR_RNGX_DM_AC_XLD_D2_RK5(rng, chol, subset, nsam) result(rand)
2248#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2249 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGX_DM_AC_XLD_D2_RK5
2250#endif
2251 use pm_kind, only: RKG => RK5
2252 type(xoshiro256ssw_type), intent(inout) :: rng
2253 integer(IK) , intent(in) :: nsam
2254 type(lowDia_type) , intent(in) :: subset
2255 real(RKG) , intent(in) , contiguous :: chol(:,:)
2256 real(RKG) :: rand(size(chol, 1, IK), nsam)
2257 end function
2258#endif
2259
2260#if RK4_ENABLED
2261 impure module function getUSR_RNGX_DM_AC_XLD_D2_RK4(rng, chol, subset, nsam) result(rand)
2262#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2263 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGX_DM_AC_XLD_D2_RK4
2264#endif
2265 use pm_kind, only: RKG => RK4
2266 type(xoshiro256ssw_type), intent(inout) :: rng
2267 integer(IK) , intent(in) :: nsam
2268 type(lowDia_type) , intent(in) :: subset
2269 real(RKG) , intent(in) , contiguous :: chol(:,:)
2270 real(RKG) :: rand(size(chol, 1, IK), nsam)
2271 end function
2272#endif
2273
2274#if RK3_ENABLED
2275 impure module function getUSR_RNGX_DM_AC_XLD_D2_RK3(rng, chol, subset, nsam) result(rand)
2276#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2277 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGX_DM_AC_XLD_D2_RK3
2278#endif
2279 use pm_kind, only: RKG => RK3
2280 type(xoshiro256ssw_type), intent(inout) :: rng
2281 integer(IK) , intent(in) :: nsam
2282 type(lowDia_type) , intent(in) :: subset
2283 real(RKG) , intent(in) , contiguous :: chol(:,:)
2284 real(RKG) :: rand(size(chol, 1, IK), nsam)
2285 end function
2286#endif
2287
2288#if RK2_ENABLED
2289 impure module function getUSR_RNGX_DM_AC_XLD_D2_RK2(rng, chol, subset, nsam) result(rand)
2290#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2291 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGX_DM_AC_XLD_D2_RK2
2292#endif
2293 use pm_kind, only: RKG => RK2
2294 type(xoshiro256ssw_type), intent(inout) :: rng
2295 integer(IK) , intent(in) :: nsam
2296 type(lowDia_type) , intent(in) :: subset
2297 real(RKG) , intent(in) , contiguous :: chol(:,:)
2298 real(RKG) :: rand(size(chol, 1, IK), nsam)
2299 end function
2300#endif
2301
2302#if RK1_ENABLED
2303 impure module function getUSR_RNGX_DM_AC_XLD_D2_RK1(rng, chol, subset, nsam) result(rand)
2304#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2305 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGX_DM_AC_XLD_D2_RK1
2306#endif
2307 use pm_kind, only: RKG => RK1
2308 type(xoshiro256ssw_type), intent(inout) :: rng
2309 integer(IK) , intent(in) :: nsam
2310 type(lowDia_type) , intent(in) :: subset
2311 real(RKG) , intent(in) , contiguous :: chol(:,:)
2312 real(RKG) :: rand(size(chol, 1, IK), nsam)
2313 end function
2314#endif
2315
2316 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2317
2318#if RK5_ENABLED
2319 impure module function getUSR_RNGX_AM_AC_UXD_D2_RK5(rng, mean, chol, subset, nsam) result(rand)
2320#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2321 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGX_AM_AC_UXD_D2_RK5
2322#endif
2323 use pm_kind, only: RKG => RK5
2324 type(xoshiro256ssw_type), intent(inout) :: rng
2325 integer(IK) , intent(in) :: nsam
2326 type(uppDia_type) , intent(in) :: subset
2327 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
2328 real(RKG) :: rand(size(chol, 1, IK), nsam)
2329 end function
2330#endif
2331
2332#if RK4_ENABLED
2333 impure module function getUSR_RNGX_AM_AC_UXD_D2_RK4(rng, mean, chol, subset, nsam) result(rand)
2334#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2335 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGX_AM_AC_UXD_D2_RK4
2336#endif
2337 use pm_kind, only: RKG => RK4
2338 type(xoshiro256ssw_type), intent(inout) :: rng
2339 integer(IK) , intent(in) :: nsam
2340 type(uppDia_type) , intent(in) :: subset
2341 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
2342 real(RKG) :: rand(size(chol, 1, IK), nsam)
2343 end function
2344#endif
2345
2346#if RK3_ENABLED
2347 impure module function getUSR_RNGX_AM_AC_UXD_D2_RK3(rng, mean, chol, subset, nsam) result(rand)
2348#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2349 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGX_AM_AC_UXD_D2_RK3
2350#endif
2351 use pm_kind, only: RKG => RK3
2352 type(xoshiro256ssw_type), intent(inout) :: rng
2353 integer(IK) , intent(in) :: nsam
2354 type(uppDia_type) , intent(in) :: subset
2355 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
2356 real(RKG) :: rand(size(chol, 1, IK), nsam)
2357 end function
2358#endif
2359
2360#if RK2_ENABLED
2361 impure module function getUSR_RNGX_AM_AC_UXD_D2_RK2(rng, mean, chol, subset, nsam) result(rand)
2362#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2363 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGX_AM_AC_UXD_D2_RK2
2364#endif
2365 use pm_kind, only: RKG => RK2
2366 type(xoshiro256ssw_type), intent(inout) :: rng
2367 integer(IK) , intent(in) :: nsam
2368 type(uppDia_type) , intent(in) :: subset
2369 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
2370 real(RKG) :: rand(size(chol, 1, IK), nsam)
2371 end function
2372#endif
2373
2374#if RK1_ENABLED
2375 impure module function getUSR_RNGX_AM_AC_UXD_D2_RK1(rng, mean, chol, subset, nsam) result(rand)
2376#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2377 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGX_AM_AC_UXD_D2_RK1
2378#endif
2379 use pm_kind, only: RKG => RK1
2380 type(xoshiro256ssw_type), intent(inout) :: rng
2381 integer(IK) , intent(in) :: nsam
2382 type(uppDia_type) , intent(in) :: subset
2383 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
2384 real(RKG) :: rand(size(chol, 1, IK), nsam)
2385 end function
2386#endif
2387
2388 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2389
2390#if RK5_ENABLED
2391 impure module function getUSR_RNGX_AM_AC_XLD_D2_RK5(rng, mean, chol, subset, nsam) result(rand)
2392#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2393 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGX_AM_AC_XLD_D2_RK5
2394#endif
2395 use pm_kind, only: RKG => RK5
2396 type(xoshiro256ssw_type), intent(inout) :: rng
2397 integer(IK) , intent(in) :: nsam
2398 type(lowDia_type) , intent(in) :: subset
2399 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
2400 real(RKG) :: rand(size(chol, 1, IK), nsam)
2401 end function
2402#endif
2403
2404#if RK4_ENABLED
2405 impure module function getUSR_RNGX_AM_AC_XLD_D2_RK4(rng, mean, chol, subset, nsam) result(rand)
2406#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2407 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGX_AM_AC_XLD_D2_RK4
2408#endif
2409 use pm_kind, only: RKG => RK4
2410 type(xoshiro256ssw_type), intent(inout) :: rng
2411 integer(IK) , intent(in) :: nsam
2412 type(lowDia_type) , intent(in) :: subset
2413 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
2414 real(RKG) :: rand(size(chol, 1, IK), nsam)
2415 end function
2416#endif
2417
2418#if RK3_ENABLED
2419 impure module function getUSR_RNGX_AM_AC_XLD_D2_RK3(rng, mean, chol, subset, nsam) result(rand)
2420#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2421 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGX_AM_AC_XLD_D2_RK3
2422#endif
2423 use pm_kind, only: RKG => RK3
2424 type(xoshiro256ssw_type), intent(inout) :: rng
2425 integer(IK) , intent(in) :: nsam
2426 type(lowDia_type) , intent(in) :: subset
2427 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
2428 real(RKG) :: rand(size(chol, 1, IK), nsam)
2429 end function
2430#endif
2431
2432#if RK2_ENABLED
2433 impure module function getUSR_RNGX_AM_AC_XLD_D2_RK2(rng, mean, chol, subset, nsam) result(rand)
2434#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2435 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGX_AM_AC_XLD_D2_RK2
2436#endif
2437 use pm_kind, only: RKG => RK2
2438 type(xoshiro256ssw_type), intent(inout) :: rng
2439 integer(IK) , intent(in) :: nsam
2440 type(lowDia_type) , intent(in) :: subset
2441 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
2442 real(RKG) :: rand(size(chol, 1, IK), nsam)
2443 end function
2444#endif
2445
2446#if RK1_ENABLED
2447 impure module function getUSR_RNGX_AM_AC_XLD_D2_RK1(rng, mean, chol, subset, nsam) result(rand)
2448#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2449 !DEC$ ATTRIBUTES DLLEXPORT :: getUSR_RNGX_AM_AC_XLD_D2_RK1
2450#endif
2451 use pm_kind, only: RKG => RK1
2452 type(xoshiro256ssw_type), intent(inout) :: rng
2453 integer(IK) , intent(in) :: nsam
2454 type(lowDia_type) , intent(in) :: subset
2455 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
2456 real(RKG) :: rand(size(chol, 1, IK), nsam)
2457 end function
2458#endif
2459
2460 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2461
2462 end interface
2463
2464!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2465
2573
2574 ! D1 RNGD
2575
2577
2578 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2579
2580#if RK5_ENABLED
2581 impure module subroutine setUSR_RNGD_DM_DC_XXX_D1_RK5(rand)
2582#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2583 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGD_DM_DC_XXX_D1_RK5
2584#endif
2585 use pm_kind, only: RKG => RK5
2586 real(RKG) , intent(out) , contiguous :: rand(:)
2587 end subroutine
2588#endif
2589
2590#if RK4_ENABLED
2591 impure module subroutine setUSR_RNGD_DM_DC_XXX_D1_RK4(rand)
2592#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2593 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGD_DM_DC_XXX_D1_RK4
2594#endif
2595 use pm_kind, only: RKG => RK4
2596 real(RKG) , intent(out) , contiguous :: rand(:)
2597 end subroutine
2598#endif
2599
2600#if RK3_ENABLED
2601 impure module subroutine setUSR_RNGD_DM_DC_XXX_D1_RK3(rand)
2602#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2603 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGD_DM_DC_XXX_D1_RK3
2604#endif
2605 use pm_kind, only: RKG => RK3
2606 real(RKG) , intent(out) , contiguous :: rand(:)
2607 end subroutine
2608#endif
2609
2610#if RK2_ENABLED
2611 impure module subroutine setUSR_RNGD_DM_DC_XXX_D1_RK2(rand)
2612#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2613 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGD_DM_DC_XXX_D1_RK2
2614#endif
2615 use pm_kind, only: RKG => RK2
2616 real(RKG) , intent(out) , contiguous :: rand(:)
2617 end subroutine
2618#endif
2619
2620#if RK1_ENABLED
2621 impure module subroutine setUSR_RNGD_DM_DC_XXX_D1_RK1(rand)
2622#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2623 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGD_DM_DC_XXX_D1_RK1
2624#endif
2625 use pm_kind, only: RKG => RK1
2626 real(RKG) , intent(out) , contiguous :: rand(:)
2627 end subroutine
2628#endif
2629
2630 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2631
2632#if RK5_ENABLED
2633 impure module subroutine setUSR_RNGD_AM_DC_XXX_D1_RK5(rand, mean)
2634#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2635 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGD_AM_DC_XXX_D1_RK5
2636#endif
2637 use pm_kind, only: RKG => RK5
2638 real(RKG) , intent(out) , contiguous :: rand(:)
2639 real(RKG) , intent(in) , contiguous :: mean(:)
2640 end subroutine
2641#endif
2642
2643#if RK4_ENABLED
2644 impure module subroutine setUSR_RNGD_AM_DC_XXX_D1_RK4(rand, mean)
2645#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2646 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGD_AM_DC_XXX_D1_RK4
2647#endif
2648 use pm_kind, only: RKG => RK4
2649 real(RKG) , intent(out) , contiguous :: rand(:)
2650 real(RKG) , intent(in) , contiguous :: mean(:)
2651 end subroutine
2652#endif
2653
2654#if RK3_ENABLED
2655 impure module subroutine setUSR_RNGD_AM_DC_XXX_D1_RK3(rand, mean)
2656#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2657 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGD_AM_DC_XXX_D1_RK3
2658#endif
2659 use pm_kind, only: RKG => RK3
2660 real(RKG) , intent(out) , contiguous :: rand(:)
2661 real(RKG) , intent(in) , contiguous :: mean(:)
2662 end subroutine
2663#endif
2664
2665#if RK2_ENABLED
2666 impure module subroutine setUSR_RNGD_AM_DC_XXX_D1_RK2(rand, mean)
2667#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2668 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGD_AM_DC_XXX_D1_RK2
2669#endif
2670 use pm_kind, only: RKG => RK2
2671 real(RKG) , intent(out) , contiguous :: rand(:)
2672 real(RKG) , intent(in) , contiguous :: mean(:)
2673 end subroutine
2674#endif
2675
2676#if RK1_ENABLED
2677 impure module subroutine setUSR_RNGD_AM_DC_XXX_D1_RK1(rand, mean)
2678#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2679 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGD_AM_DC_XXX_D1_RK1
2680#endif
2681 use pm_kind, only: RKG => RK1
2682 real(RKG) , intent(out) , contiguous :: rand(:)
2683 real(RKG) , intent(in) , contiguous :: mean(:)
2684 end subroutine
2685#endif
2686
2687 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2688
2689#if RK5_ENABLED
2690 impure module subroutine setUSR_RNGD_DM_AC_UXD_D1_RK5(rand, chol, subset)
2691#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2692 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGD_DM_AC_UXD_D1_RK5
2693#endif
2694 use pm_kind, only: RKG => RK5
2695 real(RKG) , intent(out) , contiguous :: rand(:)
2696 real(RKG) , intent(in) , contiguous :: chol(:,:)
2697 type(uppDia_type) , intent(in) :: subset
2698 end subroutine
2699#endif
2700
2701#if RK4_ENABLED
2702 impure module subroutine setUSR_RNGD_DM_AC_UXD_D1_RK4(rand, chol, subset)
2703#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2704 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGD_DM_AC_UXD_D1_RK4
2705#endif
2706 use pm_kind, only: RKG => RK4
2707 real(RKG) , intent(out) , contiguous :: rand(:)
2708 real(RKG) , intent(in) , contiguous :: chol(:,:)
2709 type(uppDia_type) , intent(in) :: subset
2710 end subroutine
2711#endif
2712
2713#if RK3_ENABLED
2714 impure module subroutine setUSR_RNGD_DM_AC_UXD_D1_RK3(rand, chol, subset)
2715#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2716 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGD_DM_AC_UXD_D1_RK3
2717#endif
2718 use pm_kind, only: RKG => RK3
2719 real(RKG) , intent(out) , contiguous :: rand(:)
2720 real(RKG) , intent(in) , contiguous :: chol(:,:)
2721 type(uppDia_type) , intent(in) :: subset
2722 end subroutine
2723#endif
2724
2725#if RK2_ENABLED
2726 impure module subroutine setUSR_RNGD_DM_AC_UXD_D1_RK2(rand, chol, subset)
2727#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2728 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGD_DM_AC_UXD_D1_RK2
2729#endif
2730 use pm_kind, only: RKG => RK2
2731 real(RKG) , intent(out) , contiguous :: rand(:)
2732 real(RKG) , intent(in) , contiguous :: chol(:,:)
2733 type(uppDia_type) , intent(in) :: subset
2734 end subroutine
2735#endif
2736
2737#if RK1_ENABLED
2738 impure module subroutine setUSR_RNGD_DM_AC_UXD_D1_RK1(rand, chol, subset)
2739#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2740 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGD_DM_AC_UXD_D1_RK1
2741#endif
2742 use pm_kind, only: RKG => RK1
2743 real(RKG) , intent(out) , contiguous :: rand(:)
2744 real(RKG) , intent(in) , contiguous :: chol(:,:)
2745 type(uppDia_type) , intent(in) :: subset
2746 end subroutine
2747#endif
2748
2749 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2750
2751#if RK5_ENABLED
2752 impure module subroutine setUSR_RNGD_DM_AC_XLD_D1_RK5(rand, chol, subset)
2753#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2754 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGD_DM_AC_XLD_D1_RK5
2755#endif
2756 use pm_kind, only: RKG => RK5
2757 real(RKG) , intent(out) , contiguous :: rand(:)
2758 real(RKG) , intent(in) , contiguous :: chol(:,:)
2759 type(lowDia_type) , intent(in) :: subset
2760 end subroutine
2761#endif
2762
2763#if RK4_ENABLED
2764 impure module subroutine setUSR_RNGD_DM_AC_XLD_D1_RK4(rand, chol, subset)
2765#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2766 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGD_DM_AC_XLD_D1_RK4
2767#endif
2768 use pm_kind, only: RKG => RK4
2769 real(RKG) , intent(out) , contiguous :: rand(:)
2770 real(RKG) , intent(in) , contiguous :: chol(:,:)
2771 type(lowDia_type) , intent(in) :: subset
2772 end subroutine
2773#endif
2774
2775#if RK3_ENABLED
2776 impure module subroutine setUSR_RNGD_DM_AC_XLD_D1_RK3(rand, chol, subset)
2777#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2778 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGD_DM_AC_XLD_D1_RK3
2779#endif
2780 use pm_kind, only: RKG => RK3
2781 real(RKG) , intent(out) , contiguous :: rand(:)
2782 real(RKG) , intent(in) , contiguous :: chol(:,:)
2783 type(lowDia_type) , intent(in) :: subset
2784 end subroutine
2785#endif
2786
2787#if RK2_ENABLED
2788 impure module subroutine setUSR_RNGD_DM_AC_XLD_D1_RK2(rand, chol, subset)
2789#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2790 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGD_DM_AC_XLD_D1_RK2
2791#endif
2792 use pm_kind, only: RKG => RK2
2793 real(RKG) , intent(out) , contiguous :: rand(:)
2794 real(RKG) , intent(in) , contiguous :: chol(:,:)
2795 type(lowDia_type) , intent(in) :: subset
2796 end subroutine
2797#endif
2798
2799#if RK1_ENABLED
2800 impure module subroutine setUSR_RNGD_DM_AC_XLD_D1_RK1(rand, chol, subset)
2801#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2802 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGD_DM_AC_XLD_D1_RK1
2803#endif
2804 use pm_kind, only: RKG => RK1
2805 real(RKG) , intent(out) , contiguous :: rand(:)
2806 real(RKG) , intent(in) , contiguous :: chol(:,:)
2807 type(lowDia_type) , intent(in) :: subset
2808 end subroutine
2809#endif
2810
2811 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2812
2813#if RK5_ENABLED
2814 impure module subroutine setUSR_RNGD_AM_AC_UXD_D1_RK5(rand, mean, chol, subset)
2815#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2816 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGD_AM_AC_UXD_D1_RK5
2817#endif
2818 use pm_kind, only: RKG => RK5
2819 real(RKG) , intent(out) , contiguous :: rand(:)
2820 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
2821 type(uppDia_type) , intent(in) :: subset
2822 end subroutine
2823#endif
2824
2825#if RK4_ENABLED
2826 impure module subroutine setUSR_RNGD_AM_AC_UXD_D1_RK4(rand, mean, chol, subset)
2827#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2828 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGD_AM_AC_UXD_D1_RK4
2829#endif
2830 use pm_kind, only: RKG => RK4
2831 real(RKG) , intent(out) , contiguous :: rand(:)
2832 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
2833 type(uppDia_type) , intent(in) :: subset
2834 end subroutine
2835#endif
2836
2837#if RK3_ENABLED
2838 impure module subroutine setUSR_RNGD_AM_AC_UXD_D1_RK3(rand, mean, chol, subset)
2839#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2840 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGD_AM_AC_UXD_D1_RK3
2841#endif
2842 use pm_kind, only: RKG => RK3
2843 real(RKG) , intent(out) , contiguous :: rand(:)
2844 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
2845 type(uppDia_type) , intent(in) :: subset
2846 end subroutine
2847#endif
2848
2849#if RK2_ENABLED
2850 impure module subroutine setUSR_RNGD_AM_AC_UXD_D1_RK2(rand, mean, chol, subset)
2851#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2852 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGD_AM_AC_UXD_D1_RK2
2853#endif
2854 use pm_kind, only: RKG => RK2
2855 real(RKG) , intent(out) , contiguous :: rand(:)
2856 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
2857 type(uppDia_type) , intent(in) :: subset
2858 end subroutine
2859#endif
2860
2861#if RK1_ENABLED
2862 impure module subroutine setUSR_RNGD_AM_AC_UXD_D1_RK1(rand, mean, chol, subset)
2863#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2864 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGD_AM_AC_UXD_D1_RK1
2865#endif
2866 use pm_kind, only: RKG => RK1
2867 real(RKG) , intent(out) , contiguous :: rand(:)
2868 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
2869 type(uppDia_type) , intent(in) :: subset
2870 end subroutine
2871#endif
2872
2873 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2874
2875#if RK5_ENABLED
2876 impure module subroutine setUSR_RNGD_AM_AC_XLD_D1_RK5(rand, mean, chol, subset)
2877#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2878 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGD_AM_AC_XLD_D1_RK5
2879#endif
2880 use pm_kind, only: RKG => RK5
2881 real(RKG) , intent(out) , contiguous :: rand(:)
2882 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
2883 type(lowDia_type) , intent(in) :: subset
2884 end subroutine
2885#endif
2886
2887#if RK4_ENABLED
2888 impure module subroutine setUSR_RNGD_AM_AC_XLD_D1_RK4(rand, mean, chol, subset)
2889#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2890 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGD_AM_AC_XLD_D1_RK4
2891#endif
2892 use pm_kind, only: RKG => RK4
2893 real(RKG) , intent(out) , contiguous :: rand(:)
2894 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
2895 type(lowDia_type) , intent(in) :: subset
2896 end subroutine
2897#endif
2898
2899#if RK3_ENABLED
2900 impure module subroutine setUSR_RNGD_AM_AC_XLD_D1_RK3(rand, mean, chol, subset)
2901#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2902 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGD_AM_AC_XLD_D1_RK3
2903#endif
2904 use pm_kind, only: RKG => RK3
2905 real(RKG) , intent(out) , contiguous :: rand(:)
2906 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
2907 type(lowDia_type) , intent(in) :: subset
2908 end subroutine
2909#endif
2910
2911#if RK2_ENABLED
2912 impure module subroutine setUSR_RNGD_AM_AC_XLD_D1_RK2(rand, mean, chol, subset)
2913#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2914 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGD_AM_AC_XLD_D1_RK2
2915#endif
2916 use pm_kind, only: RKG => RK2
2917 real(RKG) , intent(out) , contiguous :: rand(:)
2918 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
2919 type(lowDia_type) , intent(in) :: subset
2920 end subroutine
2921#endif
2922
2923#if RK1_ENABLED
2924 impure module subroutine setUSR_RNGD_AM_AC_XLD_D1_RK1(rand, mean, chol, subset)
2925#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2926 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGD_AM_AC_XLD_D1_RK1
2927#endif
2928 use pm_kind, only: RKG => RK1
2929 real(RKG) , intent(out) , contiguous :: rand(:)
2930 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
2931 type(lowDia_type) , intent(in) :: subset
2932 end subroutine
2933#endif
2934
2935 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2936
2937 end interface
2938
2939 ! D1 RNGF
2940
2941 interface setUnifSphereRand
2942
2943 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2944
2945#if RK5_ENABLED
2946 impure module subroutine setUSR_RNGF_DM_DC_XXX_D1_RK5(rng, rand)
2947#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2948 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGF_DM_DC_XXX_D1_RK5
2949#endif
2950 use pm_kind, only: RKG => RK5
2951 type(rngf_type) , intent(in) :: rng
2952 real(RKG) , intent(out) , contiguous :: rand(:)
2953 end subroutine
2954#endif
2955
2956#if RK4_ENABLED
2957 impure module subroutine setUSR_RNGF_DM_DC_XXX_D1_RK4(rng, rand)
2958#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2959 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGF_DM_DC_XXX_D1_RK4
2960#endif
2961 use pm_kind, only: RKG => RK4
2962 type(rngf_type) , intent(in) :: rng
2963 real(RKG) , intent(out) , contiguous :: rand(:)
2964 end subroutine
2965#endif
2966
2967#if RK3_ENABLED
2968 impure module subroutine setUSR_RNGF_DM_DC_XXX_D1_RK3(rng, rand)
2969#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2970 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGF_DM_DC_XXX_D1_RK3
2971#endif
2972 use pm_kind, only: RKG => RK3
2973 type(rngf_type) , intent(in) :: rng
2974 real(RKG) , intent(out) , contiguous :: rand(:)
2975 end subroutine
2976#endif
2977
2978#if RK2_ENABLED
2979 impure module subroutine setUSR_RNGF_DM_DC_XXX_D1_RK2(rng, rand)
2980#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2981 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGF_DM_DC_XXX_D1_RK2
2982#endif
2983 use pm_kind, only: RKG => RK2
2984 type(rngf_type) , intent(in) :: rng
2985 real(RKG) , intent(out) , contiguous :: rand(:)
2986 end subroutine
2987#endif
2988
2989#if RK1_ENABLED
2990 impure module subroutine setUSR_RNGF_DM_DC_XXX_D1_RK1(rng, rand)
2991#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2992 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGF_DM_DC_XXX_D1_RK1
2993#endif
2994 use pm_kind, only: RKG => RK1
2995 type(rngf_type) , intent(in) :: rng
2996 real(RKG) , intent(out) , contiguous :: rand(:)
2997 end subroutine
2998#endif
2999
3000 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3001
3002#if RK5_ENABLED
3003 impure module subroutine setUSR_RNGF_AM_DC_XXX_D1_RK5(rng, rand, mean)
3004#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3005 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGF_AM_DC_XXX_D1_RK5
3006#endif
3007 use pm_kind, only: RKG => RK5
3008 type(rngf_type) , intent(in) :: rng
3009 real(RKG) , intent(out) , contiguous :: rand(:)
3010 real(RKG) , intent(in) , contiguous :: mean(:)
3011 end subroutine
3012#endif
3013
3014#if RK4_ENABLED
3015 impure module subroutine setUSR_RNGF_AM_DC_XXX_D1_RK4(rng, rand, mean)
3016#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3017 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGF_AM_DC_XXX_D1_RK4
3018#endif
3019 use pm_kind, only: RKG => RK4
3020 type(rngf_type) , intent(in) :: rng
3021 real(RKG) , intent(out) , contiguous :: rand(:)
3022 real(RKG) , intent(in) , contiguous :: mean(:)
3023 end subroutine
3024#endif
3025
3026#if RK3_ENABLED
3027 impure module subroutine setUSR_RNGF_AM_DC_XXX_D1_RK3(rng, rand, mean)
3028#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3029 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGF_AM_DC_XXX_D1_RK3
3030#endif
3031 use pm_kind, only: RKG => RK3
3032 type(rngf_type) , intent(in) :: rng
3033 real(RKG) , intent(out) , contiguous :: rand(:)
3034 real(RKG) , intent(in) , contiguous :: mean(:)
3035 end subroutine
3036#endif
3037
3038#if RK2_ENABLED
3039 impure module subroutine setUSR_RNGF_AM_DC_XXX_D1_RK2(rng, rand, mean)
3040#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3041 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGF_AM_DC_XXX_D1_RK2
3042#endif
3043 use pm_kind, only: RKG => RK2
3044 type(rngf_type) , intent(in) :: rng
3045 real(RKG) , intent(out) , contiguous :: rand(:)
3046 real(RKG) , intent(in) , contiguous :: mean(:)
3047 end subroutine
3048#endif
3049
3050#if RK1_ENABLED
3051 impure module subroutine setUSR_RNGF_AM_DC_XXX_D1_RK1(rng, rand, mean)
3052#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3053 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGF_AM_DC_XXX_D1_RK1
3054#endif
3055 use pm_kind, only: RKG => RK1
3056 type(rngf_type) , intent(in) :: rng
3057 real(RKG) , intent(out) , contiguous :: rand(:)
3058 real(RKG) , intent(in) , contiguous :: mean(:)
3059 end subroutine
3060#endif
3061
3062 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3063
3064#if RK5_ENABLED
3065 impure module subroutine setUSR_RNGF_DM_AC_UXD_D1_RK5(rng, rand, chol, subset)
3066#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3067 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGF_DM_AC_UXD_D1_RK5
3068#endif
3069 use pm_kind, only: RKG => RK5
3070 type(rngf_type) , intent(in) :: rng
3071 real(RKG) , intent(out) , contiguous :: rand(:)
3072 real(RKG) , intent(in) , contiguous :: chol(:,:)
3073 type(uppDia_type) , intent(in) :: subset
3074 end subroutine
3075#endif
3076
3077#if RK4_ENABLED
3078 impure module subroutine setUSR_RNGF_DM_AC_UXD_D1_RK4(rng, rand, chol, subset)
3079#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3080 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGF_DM_AC_UXD_D1_RK4
3081#endif
3082 use pm_kind, only: RKG => RK4
3083 type(rngf_type) , intent(in) :: rng
3084 real(RKG) , intent(out) , contiguous :: rand(:)
3085 real(RKG) , intent(in) , contiguous :: chol(:,:)
3086 type(uppDia_type) , intent(in) :: subset
3087 end subroutine
3088#endif
3089
3090#if RK3_ENABLED
3091 impure module subroutine setUSR_RNGF_DM_AC_UXD_D1_RK3(rng, rand, chol, subset)
3092#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3093 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGF_DM_AC_UXD_D1_RK3
3094#endif
3095 use pm_kind, only: RKG => RK3
3096 type(rngf_type) , intent(in) :: rng
3097 real(RKG) , intent(out) , contiguous :: rand(:)
3098 real(RKG) , intent(in) , contiguous :: chol(:,:)
3099 type(uppDia_type) , intent(in) :: subset
3100 end subroutine
3101#endif
3102
3103#if RK2_ENABLED
3104 impure module subroutine setUSR_RNGF_DM_AC_UXD_D1_RK2(rng, rand, chol, subset)
3105#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3106 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGF_DM_AC_UXD_D1_RK2
3107#endif
3108 use pm_kind, only: RKG => RK2
3109 type(rngf_type) , intent(in) :: rng
3110 real(RKG) , intent(out) , contiguous :: rand(:)
3111 real(RKG) , intent(in) , contiguous :: chol(:,:)
3112 type(uppDia_type) , intent(in) :: subset
3113 end subroutine
3114#endif
3115
3116#if RK1_ENABLED
3117 impure module subroutine setUSR_RNGF_DM_AC_UXD_D1_RK1(rng, rand, chol, subset)
3118#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3119 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGF_DM_AC_UXD_D1_RK1
3120#endif
3121 use pm_kind, only: RKG => RK1
3122 type(rngf_type) , intent(in) :: rng
3123 real(RKG) , intent(out) , contiguous :: rand(:)
3124 real(RKG) , intent(in) , contiguous :: chol(:,:)
3125 type(uppDia_type) , intent(in) :: subset
3126 end subroutine
3127#endif
3128
3129 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3130
3131#if RK5_ENABLED
3132 impure module subroutine setUSR_RNGF_DM_AC_XLD_D1_RK5(rng, rand, chol, subset)
3133#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3134 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGF_DM_AC_XLD_D1_RK5
3135#endif
3136 use pm_kind, only: RKG => RK5
3137 type(rngf_type) , intent(in) :: rng
3138 real(RKG) , intent(out) , contiguous :: rand(:)
3139 real(RKG) , intent(in) , contiguous :: chol(:,:)
3140 type(lowDia_type) , intent(in) :: subset
3141 end subroutine
3142#endif
3143
3144#if RK4_ENABLED
3145 impure module subroutine setUSR_RNGF_DM_AC_XLD_D1_RK4(rng, rand, chol, subset)
3146#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3147 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGF_DM_AC_XLD_D1_RK4
3148#endif
3149 use pm_kind, only: RKG => RK4
3150 type(rngf_type) , intent(in) :: rng
3151 real(RKG) , intent(out) , contiguous :: rand(:)
3152 real(RKG) , intent(in) , contiguous :: chol(:,:)
3153 type(lowDia_type) , intent(in) :: subset
3154 end subroutine
3155#endif
3156
3157#if RK3_ENABLED
3158 impure module subroutine setUSR_RNGF_DM_AC_XLD_D1_RK3(rng, rand, chol, subset)
3159#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3160 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGF_DM_AC_XLD_D1_RK3
3161#endif
3162 use pm_kind, only: RKG => RK3
3163 type(rngf_type) , intent(in) :: rng
3164 real(RKG) , intent(out) , contiguous :: rand(:)
3165 real(RKG) , intent(in) , contiguous :: chol(:,:)
3166 type(lowDia_type) , intent(in) :: subset
3167 end subroutine
3168#endif
3169
3170#if RK2_ENABLED
3171 impure module subroutine setUSR_RNGF_DM_AC_XLD_D1_RK2(rng, rand, chol, subset)
3172#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3173 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGF_DM_AC_XLD_D1_RK2
3174#endif
3175 use pm_kind, only: RKG => RK2
3176 type(rngf_type) , intent(in) :: rng
3177 real(RKG) , intent(out) , contiguous :: rand(:)
3178 real(RKG) , intent(in) , contiguous :: chol(:,:)
3179 type(lowDia_type) , intent(in) :: subset
3180 end subroutine
3181#endif
3182
3183#if RK1_ENABLED
3184 impure module subroutine setUSR_RNGF_DM_AC_XLD_D1_RK1(rng, rand, chol, subset)
3185#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3186 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGF_DM_AC_XLD_D1_RK1
3187#endif
3188 use pm_kind, only: RKG => RK1
3189 type(rngf_type) , intent(in) :: rng
3190 real(RKG) , intent(out) , contiguous :: rand(:)
3191 real(RKG) , intent(in) , contiguous :: chol(:,:)
3192 type(lowDia_type) , intent(in) :: subset
3193 end subroutine
3194#endif
3195
3196 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3197
3198#if RK5_ENABLED
3199 impure module subroutine setUSR_RNGF_AM_AC_UXD_D1_RK5(rng, rand, mean, chol, subset)
3200#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3201 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGF_AM_AC_UXD_D1_RK5
3202#endif
3203 use pm_kind, only: RKG => RK5
3204 type(rngf_type) , intent(in) :: rng
3205 real(RKG) , intent(out) , contiguous :: rand(:)
3206 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
3207 type(uppDia_type) , intent(in) :: subset
3208 end subroutine
3209#endif
3210
3211#if RK4_ENABLED
3212 impure module subroutine setUSR_RNGF_AM_AC_UXD_D1_RK4(rng, rand, mean, chol, subset)
3213#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3214 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGF_AM_AC_UXD_D1_RK4
3215#endif
3216 use pm_kind, only: RKG => RK4
3217 type(rngf_type) , intent(in) :: rng
3218 real(RKG) , intent(out) , contiguous :: rand(:)
3219 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
3220 type(uppDia_type) , intent(in) :: subset
3221 end subroutine
3222#endif
3223
3224#if RK3_ENABLED
3225 impure module subroutine setUSR_RNGF_AM_AC_UXD_D1_RK3(rng, rand, mean, chol, subset)
3226#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3227 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGF_AM_AC_UXD_D1_RK3
3228#endif
3229 use pm_kind, only: RKG => RK3
3230 type(rngf_type) , intent(in) :: rng
3231 real(RKG) , intent(out) , contiguous :: rand(:)
3232 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
3233 type(uppDia_type) , intent(in) :: subset
3234 end subroutine
3235#endif
3236
3237#if RK2_ENABLED
3238 impure module subroutine setUSR_RNGF_AM_AC_UXD_D1_RK2(rng, rand, mean, chol, subset)
3239#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3240 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGF_AM_AC_UXD_D1_RK2
3241#endif
3242 use pm_kind, only: RKG => RK2
3243 type(rngf_type) , intent(in) :: rng
3244 real(RKG) , intent(out) , contiguous :: rand(:)
3245 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
3246 type(uppDia_type) , intent(in) :: subset
3247 end subroutine
3248#endif
3249
3250#if RK1_ENABLED
3251 impure module subroutine setUSR_RNGF_AM_AC_UXD_D1_RK1(rng, rand, mean, chol, subset)
3252#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3253 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGF_AM_AC_UXD_D1_RK1
3254#endif
3255 use pm_kind, only: RKG => RK1
3256 type(rngf_type) , intent(in) :: rng
3257 real(RKG) , intent(out) , contiguous :: rand(:)
3258 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
3259 type(uppDia_type) , intent(in) :: subset
3260 end subroutine
3261#endif
3262
3263 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3264
3265#if RK5_ENABLED
3266 impure module subroutine setUSR_RNGF_AM_AC_XLD_D1_RK5(rng, rand, mean, chol, subset)
3267#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3268 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGF_AM_AC_XLD_D1_RK5
3269#endif
3270 use pm_kind, only: RKG => RK5
3271 type(rngf_type) , intent(in) :: rng
3272 real(RKG) , intent(out) , contiguous :: rand(:)
3273 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
3274 type(lowDia_type) , intent(in) :: subset
3275 end subroutine
3276#endif
3277
3278#if RK4_ENABLED
3279 impure module subroutine setUSR_RNGF_AM_AC_XLD_D1_RK4(rng, rand, mean, chol, subset)
3280#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3281 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGF_AM_AC_XLD_D1_RK4
3282#endif
3283 use pm_kind, only: RKG => RK4
3284 type(rngf_type) , intent(in) :: rng
3285 real(RKG) , intent(out) , contiguous :: rand(:)
3286 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
3287 type(lowDia_type) , intent(in) :: subset
3288 end subroutine
3289#endif
3290
3291#if RK3_ENABLED
3292 impure module subroutine setUSR_RNGF_AM_AC_XLD_D1_RK3(rng, rand, mean, chol, subset)
3293#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3294 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGF_AM_AC_XLD_D1_RK3
3295#endif
3296 use pm_kind, only: RKG => RK3
3297 type(rngf_type) , intent(in) :: rng
3298 real(RKG) , intent(out) , contiguous :: rand(:)
3299 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
3300 type(lowDia_type) , intent(in) :: subset
3301 end subroutine
3302#endif
3303
3304#if RK2_ENABLED
3305 impure module subroutine setUSR_RNGF_AM_AC_XLD_D1_RK2(rng, rand, mean, chol, subset)
3306#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3307 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGF_AM_AC_XLD_D1_RK2
3308#endif
3309 use pm_kind, only: RKG => RK2
3310 type(rngf_type) , intent(in) :: rng
3311 real(RKG) , intent(out) , contiguous :: rand(:)
3312 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
3313 type(lowDia_type) , intent(in) :: subset
3314 end subroutine
3315#endif
3316
3317#if RK1_ENABLED
3318 impure module subroutine setUSR_RNGF_AM_AC_XLD_D1_RK1(rng, rand, mean, chol, subset)
3319#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3320 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGF_AM_AC_XLD_D1_RK1
3321#endif
3322 use pm_kind, only: RKG => RK1
3323 type(rngf_type) , intent(in) :: rng
3324 real(RKG) , intent(out) , contiguous :: rand(:)
3325 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
3326 type(lowDia_type) , intent(in) :: subset
3327 end subroutine
3328#endif
3329
3330 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3331
3332 end interface
3333
3334 ! D1 RNGX
3335
3336 interface setUnifSphereRand
3337
3338 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3339
3340#if RK5_ENABLED
3341 impure module subroutine setUSR_RNGX_DM_DC_XXX_D1_RK5(rng, rand)
3342#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3343 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGX_DM_DC_XXX_D1_RK5
3344#endif
3345 use pm_kind, only: RKG => RK5
3346 type(xoshiro256ssw_type), intent(inout) :: rng
3347 real(RKG) , intent(out) , contiguous :: rand(:)
3348 end subroutine
3349#endif
3350
3351#if RK4_ENABLED
3352 impure module subroutine setUSR_RNGX_DM_DC_XXX_D1_RK4(rng, rand)
3353#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3354 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGX_DM_DC_XXX_D1_RK4
3355#endif
3356 use pm_kind, only: RKG => RK4
3357 type(xoshiro256ssw_type), intent(inout) :: rng
3358 real(RKG) , intent(out) , contiguous :: rand(:)
3359 end subroutine
3360#endif
3361
3362#if RK3_ENABLED
3363 impure module subroutine setUSR_RNGX_DM_DC_XXX_D1_RK3(rng, rand)
3364#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3365 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGX_DM_DC_XXX_D1_RK3
3366#endif
3367 use pm_kind, only: RKG => RK3
3368 type(xoshiro256ssw_type), intent(inout) :: rng
3369 real(RKG) , intent(out) , contiguous :: rand(:)
3370 end subroutine
3371#endif
3372
3373#if RK2_ENABLED
3374 impure module subroutine setUSR_RNGX_DM_DC_XXX_D1_RK2(rng, rand)
3375#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3376 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGX_DM_DC_XXX_D1_RK2
3377#endif
3378 use pm_kind, only: RKG => RK2
3379 type(xoshiro256ssw_type), intent(inout) :: rng
3380 real(RKG) , intent(out) , contiguous :: rand(:)
3381 end subroutine
3382#endif
3383
3384#if RK1_ENABLED
3385 impure module subroutine setUSR_RNGX_DM_DC_XXX_D1_RK1(rng, rand)
3386#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3387 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGX_DM_DC_XXX_D1_RK1
3388#endif
3389 use pm_kind, only: RKG => RK1
3390 type(xoshiro256ssw_type), intent(inout) :: rng
3391 real(RKG) , intent(out) , contiguous :: rand(:)
3392 end subroutine
3393#endif
3394
3395 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3396
3397#if RK5_ENABLED
3398 impure module subroutine setUSR_RNGX_AM_DC_XXX_D1_RK5(rng, rand, mean)
3399#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3400 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGX_AM_DC_XXX_D1_RK5
3401#endif
3402 use pm_kind, only: RKG => RK5
3403 type(xoshiro256ssw_type), intent(inout) :: rng
3404 real(RKG) , intent(out) , contiguous :: rand(:)
3405 real(RKG) , intent(in) , contiguous :: mean(:)
3406 end subroutine
3407#endif
3408
3409#if RK4_ENABLED
3410 impure module subroutine setUSR_RNGX_AM_DC_XXX_D1_RK4(rng, rand, mean)
3411#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3412 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGX_AM_DC_XXX_D1_RK4
3413#endif
3414 use pm_kind, only: RKG => RK4
3415 type(xoshiro256ssw_type), intent(inout) :: rng
3416 real(RKG) , intent(out) , contiguous :: rand(:)
3417 real(RKG) , intent(in) , contiguous :: mean(:)
3418 end subroutine
3419#endif
3420
3421#if RK3_ENABLED
3422 impure module subroutine setUSR_RNGX_AM_DC_XXX_D1_RK3(rng, rand, mean)
3423#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3424 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGX_AM_DC_XXX_D1_RK3
3425#endif
3426 use pm_kind, only: RKG => RK3
3427 type(xoshiro256ssw_type), intent(inout) :: rng
3428 real(RKG) , intent(out) , contiguous :: rand(:)
3429 real(RKG) , intent(in) , contiguous :: mean(:)
3430 end subroutine
3431#endif
3432
3433#if RK2_ENABLED
3434 impure module subroutine setUSR_RNGX_AM_DC_XXX_D1_RK2(rng, rand, mean)
3435#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3436 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGX_AM_DC_XXX_D1_RK2
3437#endif
3438 use pm_kind, only: RKG => RK2
3439 type(xoshiro256ssw_type), intent(inout) :: rng
3440 real(RKG) , intent(out) , contiguous :: rand(:)
3441 real(RKG) , intent(in) , contiguous :: mean(:)
3442 end subroutine
3443#endif
3444
3445#if RK1_ENABLED
3446 impure module subroutine setUSR_RNGX_AM_DC_XXX_D1_RK1(rng, rand, mean)
3447#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3448 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGX_AM_DC_XXX_D1_RK1
3449#endif
3450 use pm_kind, only: RKG => RK1
3451 type(xoshiro256ssw_type), intent(inout) :: rng
3452 real(RKG) , intent(out) , contiguous :: rand(:)
3453 real(RKG) , intent(in) , contiguous :: mean(:)
3454 end subroutine
3455#endif
3456
3457 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3458
3459#if RK5_ENABLED
3460 impure module subroutine setUSR_RNGX_DM_AC_UXD_D1_RK5(rng, rand, chol, subset)
3461#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3462 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGX_DM_AC_UXD_D1_RK5
3463#endif
3464 use pm_kind, only: RKG => RK5
3465 type(xoshiro256ssw_type), intent(inout) :: rng
3466 real(RKG) , intent(out) , contiguous :: rand(:)
3467 real(RKG) , intent(in) , contiguous :: chol(:,:)
3468 type(uppDia_type) , intent(in) :: subset
3469 end subroutine
3470#endif
3471
3472#if RK4_ENABLED
3473 impure module subroutine setUSR_RNGX_DM_AC_UXD_D1_RK4(rng, rand, chol, subset)
3474#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3475 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGX_DM_AC_UXD_D1_RK4
3476#endif
3477 use pm_kind, only: RKG => RK4
3478 type(xoshiro256ssw_type), intent(inout) :: rng
3479 real(RKG) , intent(out) , contiguous :: rand(:)
3480 real(RKG) , intent(in) , contiguous :: chol(:,:)
3481 type(uppDia_type) , intent(in) :: subset
3482 end subroutine
3483#endif
3484
3485#if RK3_ENABLED
3486 impure module subroutine setUSR_RNGX_DM_AC_UXD_D1_RK3(rng, rand, chol, subset)
3487#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3488 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGX_DM_AC_UXD_D1_RK3
3489#endif
3490 use pm_kind, only: RKG => RK3
3491 type(xoshiro256ssw_type), intent(inout) :: rng
3492 real(RKG) , intent(out) , contiguous :: rand(:)
3493 real(RKG) , intent(in) , contiguous :: chol(:,:)
3494 type(uppDia_type) , intent(in) :: subset
3495 end subroutine
3496#endif
3497
3498#if RK2_ENABLED
3499 impure module subroutine setUSR_RNGX_DM_AC_UXD_D1_RK2(rng, rand, chol, subset)
3500#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3501 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGX_DM_AC_UXD_D1_RK2
3502#endif
3503 use pm_kind, only: RKG => RK2
3504 type(xoshiro256ssw_type), intent(inout) :: rng
3505 real(RKG) , intent(out) , contiguous :: rand(:)
3506 real(RKG) , intent(in) , contiguous :: chol(:,:)
3507 type(uppDia_type) , intent(in) :: subset
3508 end subroutine
3509#endif
3510
3511#if RK1_ENABLED
3512 impure module subroutine setUSR_RNGX_DM_AC_UXD_D1_RK1(rng, rand, chol, subset)
3513#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3514 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGX_DM_AC_UXD_D1_RK1
3515#endif
3516 use pm_kind, only: RKG => RK1
3517 type(xoshiro256ssw_type), intent(inout) :: rng
3518 real(RKG) , intent(out) , contiguous :: rand(:)
3519 real(RKG) , intent(in) , contiguous :: chol(:,:)
3520 type(uppDia_type) , intent(in) :: subset
3521 end subroutine
3522#endif
3523
3524 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3525
3526#if RK5_ENABLED
3527 impure module subroutine setUSR_RNGX_DM_AC_XLD_D1_RK5(rng, rand, chol, subset)
3528#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3529 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGX_DM_AC_XLD_D1_RK5
3530#endif
3531 use pm_kind, only: RKG => RK5
3532 type(xoshiro256ssw_type), intent(inout) :: rng
3533 real(RKG) , intent(out) , contiguous :: rand(:)
3534 real(RKG) , intent(in) , contiguous :: chol(:,:)
3535 type(lowDia_type) , intent(in) :: subset
3536 end subroutine
3537#endif
3538
3539#if RK4_ENABLED
3540 impure module subroutine setUSR_RNGX_DM_AC_XLD_D1_RK4(rng, rand, chol, subset)
3541#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3542 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGX_DM_AC_XLD_D1_RK4
3543#endif
3544 use pm_kind, only: RKG => RK4
3545 type(xoshiro256ssw_type), intent(inout) :: rng
3546 real(RKG) , intent(out) , contiguous :: rand(:)
3547 real(RKG) , intent(in) , contiguous :: chol(:,:)
3548 type(lowDia_type) , intent(in) :: subset
3549 end subroutine
3550#endif
3551
3552#if RK3_ENABLED
3553 impure module subroutine setUSR_RNGX_DM_AC_XLD_D1_RK3(rng, rand, chol, subset)
3554#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3555 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGX_DM_AC_XLD_D1_RK3
3556#endif
3557 use pm_kind, only: RKG => RK3
3558 type(xoshiro256ssw_type), intent(inout) :: rng
3559 real(RKG) , intent(out) , contiguous :: rand(:)
3560 real(RKG) , intent(in) , contiguous :: chol(:,:)
3561 type(lowDia_type) , intent(in) :: subset
3562 end subroutine
3563#endif
3564
3565#if RK2_ENABLED
3566 impure module subroutine setUSR_RNGX_DM_AC_XLD_D1_RK2(rng, rand, chol, subset)
3567#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3568 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGX_DM_AC_XLD_D1_RK2
3569#endif
3570 use pm_kind, only: RKG => RK2
3571 type(xoshiro256ssw_type), intent(inout) :: rng
3572 real(RKG) , intent(out) , contiguous :: rand(:)
3573 real(RKG) , intent(in) , contiguous :: chol(:,:)
3574 type(lowDia_type) , intent(in) :: subset
3575 end subroutine
3576#endif
3577
3578#if RK1_ENABLED
3579 impure module subroutine setUSR_RNGX_DM_AC_XLD_D1_RK1(rng, rand, chol, subset)
3580#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3581 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGX_DM_AC_XLD_D1_RK1
3582#endif
3583 use pm_kind, only: RKG => RK1
3584 type(xoshiro256ssw_type), intent(inout) :: rng
3585 real(RKG) , intent(out) , contiguous :: rand(:)
3586 real(RKG) , intent(in) , contiguous :: chol(:,:)
3587 type(lowDia_type) , intent(in) :: subset
3588 end subroutine
3589#endif
3590
3591 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3592
3593#if RK5_ENABLED
3594 impure module subroutine setUSR_RNGX_AM_AC_UXD_D1_RK5(rng, rand, mean, chol, subset)
3595#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3596 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGX_AM_AC_UXD_D1_RK5
3597#endif
3598 use pm_kind, only: RKG => RK5
3599 type(xoshiro256ssw_type), intent(inout) :: rng
3600 real(RKG) , intent(out) , contiguous :: rand(:)
3601 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
3602 type(uppDia_type) , intent(in) :: subset
3603 end subroutine
3604#endif
3605
3606#if RK4_ENABLED
3607 impure module subroutine setUSR_RNGX_AM_AC_UXD_D1_RK4(rng, rand, mean, chol, subset)
3608#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3609 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGX_AM_AC_UXD_D1_RK4
3610#endif
3611 use pm_kind, only: RKG => RK4
3612 type(xoshiro256ssw_type), intent(inout) :: rng
3613 real(RKG) , intent(out) , contiguous :: rand(:)
3614 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
3615 type(uppDia_type) , intent(in) :: subset
3616 end subroutine
3617#endif
3618
3619#if RK3_ENABLED
3620 impure module subroutine setUSR_RNGX_AM_AC_UXD_D1_RK3(rng, rand, mean, chol, subset)
3621#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3622 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGX_AM_AC_UXD_D1_RK3
3623#endif
3624 use pm_kind, only: RKG => RK3
3625 type(xoshiro256ssw_type), intent(inout) :: rng
3626 real(RKG) , intent(out) , contiguous :: rand(:)
3627 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
3628 type(uppDia_type) , intent(in) :: subset
3629 end subroutine
3630#endif
3631
3632#if RK2_ENABLED
3633 impure module subroutine setUSR_RNGX_AM_AC_UXD_D1_RK2(rng, rand, mean, chol, subset)
3634#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3635 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGX_AM_AC_UXD_D1_RK2
3636#endif
3637 use pm_kind, only: RKG => RK2
3638 type(xoshiro256ssw_type), intent(inout) :: rng
3639 real(RKG) , intent(out) , contiguous :: rand(:)
3640 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
3641 type(uppDia_type) , intent(in) :: subset
3642 end subroutine
3643#endif
3644
3645#if RK1_ENABLED
3646 impure module subroutine setUSR_RNGX_AM_AC_UXD_D1_RK1(rng, rand, mean, chol, subset)
3647#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3648 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGX_AM_AC_UXD_D1_RK1
3649#endif
3650 use pm_kind, only: RKG => RK1
3651 type(xoshiro256ssw_type), intent(inout) :: rng
3652 real(RKG) , intent(out) , contiguous :: rand(:)
3653 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
3654 type(uppDia_type) , intent(in) :: subset
3655 end subroutine
3656#endif
3657
3658 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3659
3660#if RK5_ENABLED
3661 impure module subroutine setUSR_RNGX_AM_AC_XLD_D1_RK5(rng, rand, mean, chol, subset)
3662#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3663 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGX_AM_AC_XLD_D1_RK5
3664#endif
3665 use pm_kind, only: RKG => RK5
3666 type(xoshiro256ssw_type), intent(inout) :: rng
3667 real(RKG) , intent(out) , contiguous :: rand(:)
3668 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
3669 type(lowDia_type) , intent(in) :: subset
3670 end subroutine
3671#endif
3672
3673#if RK4_ENABLED
3674 impure module subroutine setUSR_RNGX_AM_AC_XLD_D1_RK4(rng, rand, mean, chol, subset)
3675#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3676 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGX_AM_AC_XLD_D1_RK4
3677#endif
3678 use pm_kind, only: RKG => RK4
3679 type(xoshiro256ssw_type), intent(inout) :: rng
3680 real(RKG) , intent(out) , contiguous :: rand(:)
3681 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
3682 type(lowDia_type) , intent(in) :: subset
3683 end subroutine
3684#endif
3685
3686#if RK3_ENABLED
3687 impure module subroutine setUSR_RNGX_AM_AC_XLD_D1_RK3(rng, rand, mean, chol, subset)
3688#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3689 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGX_AM_AC_XLD_D1_RK3
3690#endif
3691 use pm_kind, only: RKG => RK3
3692 type(xoshiro256ssw_type), intent(inout) :: rng
3693 real(RKG) , intent(out) , contiguous :: rand(:)
3694 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
3695 type(lowDia_type) , intent(in) :: subset
3696 end subroutine
3697#endif
3698
3699#if RK2_ENABLED
3700 impure module subroutine setUSR_RNGX_AM_AC_XLD_D1_RK2(rng, rand, mean, chol, subset)
3701#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3702 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGX_AM_AC_XLD_D1_RK2
3703#endif
3704 use pm_kind, only: RKG => RK2
3705 type(xoshiro256ssw_type), intent(inout) :: rng
3706 real(RKG) , intent(out) , contiguous :: rand(:)
3707 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
3708 type(lowDia_type) , intent(in) :: subset
3709 end subroutine
3710#endif
3711
3712#if RK1_ENABLED
3713 impure module subroutine setUSR_RNGX_AM_AC_XLD_D1_RK1(rng, rand, mean, chol, subset)
3714#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3715 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGX_AM_AC_XLD_D1_RK1
3716#endif
3717 use pm_kind, only: RKG => RK1
3718 type(xoshiro256ssw_type), intent(inout) :: rng
3719 real(RKG) , intent(out) , contiguous :: rand(:)
3720 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
3721 type(lowDia_type) , intent(in) :: subset
3722 end subroutine
3723#endif
3724
3725 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3726
3727 end interface
3728
3729 ! D2 RNGD
3730
3731 interface setUnifSphereRand
3732
3733 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3734
3735#if RK5_ENABLED
3736 impure module subroutine setUSR_RNGD_DM_DC_XXX_D2_RK5(rand)
3737#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3738 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGD_DM_DC_XXX_D2_RK5
3739#endif
3740 use pm_kind, only: RKG => RK5
3741 real(RKG) , intent(out) , contiguous :: rand(:,:)
3742 end subroutine
3743#endif
3744
3745#if RK4_ENABLED
3746 impure module subroutine setUSR_RNGD_DM_DC_XXX_D2_RK4(rand)
3747#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3748 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGD_DM_DC_XXX_D2_RK4
3749#endif
3750 use pm_kind, only: RKG => RK4
3751 real(RKG) , intent(out) , contiguous :: rand(:,:)
3752 end subroutine
3753#endif
3754
3755#if RK3_ENABLED
3756 impure module subroutine setUSR_RNGD_DM_DC_XXX_D2_RK3(rand)
3757#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3758 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGD_DM_DC_XXX_D2_RK3
3759#endif
3760 use pm_kind, only: RKG => RK3
3761 real(RKG) , intent(out) , contiguous :: rand(:,:)
3762 end subroutine
3763#endif
3764
3765#if RK2_ENABLED
3766 impure module subroutine setUSR_RNGD_DM_DC_XXX_D2_RK2(rand)
3767#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3768 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGD_DM_DC_XXX_D2_RK2
3769#endif
3770 use pm_kind, only: RKG => RK2
3771 real(RKG) , intent(out) , contiguous :: rand(:,:)
3772 end subroutine
3773#endif
3774
3775#if RK1_ENABLED
3776 impure module subroutine setUSR_RNGD_DM_DC_XXX_D2_RK1(rand)
3777#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3778 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGD_DM_DC_XXX_D2_RK1
3779#endif
3780 use pm_kind, only: RKG => RK1
3781 real(RKG) , intent(out) , contiguous :: rand(:,:)
3782 end subroutine
3783#endif
3784
3785 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3786
3787#if RK5_ENABLED
3788 impure module subroutine setUSR_RNGD_AM_DC_XXX_D2_RK5(rand, mean)
3789#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3790 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGD_AM_DC_XXX_D2_RK5
3791#endif
3792 use pm_kind, only: RKG => RK5
3793 real(RKG) , intent(out) , contiguous :: rand(:,:)
3794 real(RKG) , intent(in) , contiguous :: mean(:)
3795 end subroutine
3796#endif
3797
3798#if RK4_ENABLED
3799 impure module subroutine setUSR_RNGD_AM_DC_XXX_D2_RK4(rand, mean)
3800#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3801 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGD_AM_DC_XXX_D2_RK4
3802#endif
3803 use pm_kind, only: RKG => RK4
3804 real(RKG) , intent(out) , contiguous :: rand(:,:)
3805 real(RKG) , intent(in) , contiguous :: mean(:)
3806 end subroutine
3807#endif
3808
3809#if RK3_ENABLED
3810 impure module subroutine setUSR_RNGD_AM_DC_XXX_D2_RK3(rand, mean)
3811#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3812 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGD_AM_DC_XXX_D2_RK3
3813#endif
3814 use pm_kind, only: RKG => RK3
3815 real(RKG) , intent(out) , contiguous :: rand(:,:)
3816 real(RKG) , intent(in) , contiguous :: mean(:)
3817 end subroutine
3818#endif
3819
3820#if RK2_ENABLED
3821 impure module subroutine setUSR_RNGD_AM_DC_XXX_D2_RK2(rand, mean)
3822#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3823 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGD_AM_DC_XXX_D2_RK2
3824#endif
3825 use pm_kind, only: RKG => RK2
3826 real(RKG) , intent(out) , contiguous :: rand(:,:)
3827 real(RKG) , intent(in) , contiguous :: mean(:)
3828 end subroutine
3829#endif
3830
3831#if RK1_ENABLED
3832 impure module subroutine setUSR_RNGD_AM_DC_XXX_D2_RK1(rand, mean)
3833#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3834 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGD_AM_DC_XXX_D2_RK1
3835#endif
3836 use pm_kind, only: RKG => RK1
3837 real(RKG) , intent(out) , contiguous :: rand(:,:)
3838 real(RKG) , intent(in) , contiguous :: mean(:)
3839 end subroutine
3840#endif
3841
3842 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3843
3844#if RK5_ENABLED
3845 impure module subroutine setUSR_RNGD_DM_AC_UXD_D2_RK5(rand, chol, subset)
3846#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3847 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGD_DM_AC_UXD_D2_RK5
3848#endif
3849 use pm_kind, only: RKG => RK5
3850 real(RKG) , intent(out) , contiguous :: rand(:,:)
3851 real(RKG) , intent(in) , contiguous :: chol(:,:)
3852 type(uppDia_type) , intent(in) :: subset
3853 end subroutine
3854#endif
3855
3856#if RK4_ENABLED
3857 impure module subroutine setUSR_RNGD_DM_AC_UXD_D2_RK4(rand, chol, subset)
3858#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3859 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGD_DM_AC_UXD_D2_RK4
3860#endif
3861 use pm_kind, only: RKG => RK4
3862 real(RKG) , intent(out) , contiguous :: rand(:,:)
3863 real(RKG) , intent(in) , contiguous :: chol(:,:)
3864 type(uppDia_type) , intent(in) :: subset
3865 end subroutine
3866#endif
3867
3868#if RK3_ENABLED
3869 impure module subroutine setUSR_RNGD_DM_AC_UXD_D2_RK3(rand, chol, subset)
3870#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3871 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGD_DM_AC_UXD_D2_RK3
3872#endif
3873 use pm_kind, only: RKG => RK3
3874 real(RKG) , intent(out) , contiguous :: rand(:,:)
3875 real(RKG) , intent(in) , contiguous :: chol(:,:)
3876 type(uppDia_type) , intent(in) :: subset
3877 end subroutine
3878#endif
3879
3880#if RK2_ENABLED
3881 impure module subroutine setUSR_RNGD_DM_AC_UXD_D2_RK2(rand, chol, subset)
3882#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3883 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGD_DM_AC_UXD_D2_RK2
3884#endif
3885 use pm_kind, only: RKG => RK2
3886 real(RKG) , intent(out) , contiguous :: rand(:,:)
3887 real(RKG) , intent(in) , contiguous :: chol(:,:)
3888 type(uppDia_type) , intent(in) :: subset
3889 end subroutine
3890#endif
3891
3892#if RK1_ENABLED
3893 impure module subroutine setUSR_RNGD_DM_AC_UXD_D2_RK1(rand, chol, subset)
3894#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3895 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGD_DM_AC_UXD_D2_RK1
3896#endif
3897 use pm_kind, only: RKG => RK1
3898 real(RKG) , intent(out) , contiguous :: rand(:,:)
3899 real(RKG) , intent(in) , contiguous :: chol(:,:)
3900 type(uppDia_type) , intent(in) :: subset
3901 end subroutine
3902#endif
3903
3904 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3905
3906#if RK5_ENABLED
3907 impure module subroutine setUSR_RNGD_DM_AC_XLD_D2_RK5(rand, chol, subset)
3908#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3909 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGD_DM_AC_XLD_D2_RK5
3910#endif
3911 use pm_kind, only: RKG => RK5
3912 real(RKG) , intent(out) , contiguous :: rand(:,:)
3913 real(RKG) , intent(in) , contiguous :: chol(:,:)
3914 type(lowDia_type) , intent(in) :: subset
3915 end subroutine
3916#endif
3917
3918#if RK4_ENABLED
3919 impure module subroutine setUSR_RNGD_DM_AC_XLD_D2_RK4(rand, chol, subset)
3920#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3921 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGD_DM_AC_XLD_D2_RK4
3922#endif
3923 use pm_kind, only: RKG => RK4
3924 real(RKG) , intent(out) , contiguous :: rand(:,:)
3925 real(RKG) , intent(in) , contiguous :: chol(:,:)
3926 type(lowDia_type) , intent(in) :: subset
3927 end subroutine
3928#endif
3929
3930#if RK3_ENABLED
3931 impure module subroutine setUSR_RNGD_DM_AC_XLD_D2_RK3(rand, chol, subset)
3932#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3933 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGD_DM_AC_XLD_D2_RK3
3934#endif
3935 use pm_kind, only: RKG => RK3
3936 real(RKG) , intent(out) , contiguous :: rand(:,:)
3937 real(RKG) , intent(in) , contiguous :: chol(:,:)
3938 type(lowDia_type) , intent(in) :: subset
3939 end subroutine
3940#endif
3941
3942#if RK2_ENABLED
3943 impure module subroutine setUSR_RNGD_DM_AC_XLD_D2_RK2(rand, chol, subset)
3944#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3945 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGD_DM_AC_XLD_D2_RK2
3946#endif
3947 use pm_kind, only: RKG => RK2
3948 real(RKG) , intent(out) , contiguous :: rand(:,:)
3949 real(RKG) , intent(in) , contiguous :: chol(:,:)
3950 type(lowDia_type) , intent(in) :: subset
3951 end subroutine
3952#endif
3953
3954#if RK1_ENABLED
3955 impure module subroutine setUSR_RNGD_DM_AC_XLD_D2_RK1(rand, chol, subset)
3956#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3957 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGD_DM_AC_XLD_D2_RK1
3958#endif
3959 use pm_kind, only: RKG => RK1
3960 real(RKG) , intent(out) , contiguous :: rand(:,:)
3961 real(RKG) , intent(in) , contiguous :: chol(:,:)
3962 type(lowDia_type) , intent(in) :: subset
3963 end subroutine
3964#endif
3965
3966 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3967
3968#if RK5_ENABLED
3969 impure module subroutine setUSR_RNGD_AM_AC_UXD_D2_RK5(rand, mean, chol, subset)
3970#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3971 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGD_AM_AC_UXD_D2_RK5
3972#endif
3973 use pm_kind, only: RKG => RK5
3974 real(RKG) , intent(out) , contiguous :: rand(:,:)
3975 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
3976 type(uppDia_type) , intent(in) :: subset
3977 end subroutine
3978#endif
3979
3980#if RK4_ENABLED
3981 impure module subroutine setUSR_RNGD_AM_AC_UXD_D2_RK4(rand, mean, chol, subset)
3982#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3983 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGD_AM_AC_UXD_D2_RK4
3984#endif
3985 use pm_kind, only: RKG => RK4
3986 real(RKG) , intent(out) , contiguous :: rand(:,:)
3987 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
3988 type(uppDia_type) , intent(in) :: subset
3989 end subroutine
3990#endif
3991
3992#if RK3_ENABLED
3993 impure module subroutine setUSR_RNGD_AM_AC_UXD_D2_RK3(rand, mean, chol, subset)
3994#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3995 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGD_AM_AC_UXD_D2_RK3
3996#endif
3997 use pm_kind, only: RKG => RK3
3998 real(RKG) , intent(out) , contiguous :: rand(:,:)
3999 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
4000 type(uppDia_type) , intent(in) :: subset
4001 end subroutine
4002#endif
4003
4004#if RK2_ENABLED
4005 impure module subroutine setUSR_RNGD_AM_AC_UXD_D2_RK2(rand, mean, chol, subset)
4006#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4007 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGD_AM_AC_UXD_D2_RK2
4008#endif
4009 use pm_kind, only: RKG => RK2
4010 real(RKG) , intent(out) , contiguous :: rand(:,:)
4011 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
4012 type(uppDia_type) , intent(in) :: subset
4013 end subroutine
4014#endif
4015
4016#if RK1_ENABLED
4017 impure module subroutine setUSR_RNGD_AM_AC_UXD_D2_RK1(rand, mean, chol, subset)
4018#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4019 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGD_AM_AC_UXD_D2_RK1
4020#endif
4021 use pm_kind, only: RKG => RK1
4022 real(RKG) , intent(out) , contiguous :: rand(:,:)
4023 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
4024 type(uppDia_type) , intent(in) :: subset
4025 end subroutine
4026#endif
4027
4028 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4029
4030#if RK5_ENABLED
4031 impure module subroutine setUSR_RNGD_AM_AC_XLD_D2_RK5(rand, mean, chol, subset)
4032#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4033 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGD_AM_AC_XLD_D2_RK5
4034#endif
4035 use pm_kind, only: RKG => RK5
4036 real(RKG) , intent(out) , contiguous :: rand(:,:)
4037 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
4038 type(lowDia_type) , intent(in) :: subset
4039 end subroutine
4040#endif
4041
4042#if RK4_ENABLED
4043 impure module subroutine setUSR_RNGD_AM_AC_XLD_D2_RK4(rand, mean, chol, subset)
4044#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4045 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGD_AM_AC_XLD_D2_RK4
4046#endif
4047 use pm_kind, only: RKG => RK4
4048 real(RKG) , intent(out) , contiguous :: rand(:,:)
4049 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
4050 type(lowDia_type) , intent(in) :: subset
4051 end subroutine
4052#endif
4053
4054#if RK3_ENABLED
4055 impure module subroutine setUSR_RNGD_AM_AC_XLD_D2_RK3(rand, mean, chol, subset)
4056#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4057 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGD_AM_AC_XLD_D2_RK3
4058#endif
4059 use pm_kind, only: RKG => RK3
4060 real(RKG) , intent(out) , contiguous :: rand(:,:)
4061 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
4062 type(lowDia_type) , intent(in) :: subset
4063 end subroutine
4064#endif
4065
4066#if RK2_ENABLED
4067 impure module subroutine setUSR_RNGD_AM_AC_XLD_D2_RK2(rand, mean, chol, subset)
4068#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4069 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGD_AM_AC_XLD_D2_RK2
4070#endif
4071 use pm_kind, only: RKG => RK2
4072 real(RKG) , intent(out) , contiguous :: rand(:,:)
4073 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
4074 type(lowDia_type) , intent(in) :: subset
4075 end subroutine
4076#endif
4077
4078#if RK1_ENABLED
4079 impure module subroutine setUSR_RNGD_AM_AC_XLD_D2_RK1(rand, mean, chol, subset)
4080#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4081 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGD_AM_AC_XLD_D2_RK1
4082#endif
4083 use pm_kind, only: RKG => RK1
4084 real(RKG) , intent(out) , contiguous :: rand(:,:)
4085 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
4086 type(lowDia_type) , intent(in) :: subset
4087 end subroutine
4088#endif
4089
4090 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4091
4092 end interface
4093
4094 ! D2 RNGF
4095
4096 interface setUnifSphereRand
4097
4098 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4099
4100#if RK5_ENABLED
4101 impure module subroutine setUSR_RNGF_DM_DC_XXX_D2_RK5(rng, rand)
4102#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4103 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGF_DM_DC_XXX_D2_RK5
4104#endif
4105 use pm_kind, only: RKG => RK5
4106 type(rngf_type) , intent(in) :: rng
4107 real(RKG) , intent(out) , contiguous :: rand(:,:)
4108 end subroutine
4109#endif
4110
4111#if RK4_ENABLED
4112 impure module subroutine setUSR_RNGF_DM_DC_XXX_D2_RK4(rng, rand)
4113#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4114 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGF_DM_DC_XXX_D2_RK4
4115#endif
4116 use pm_kind, only: RKG => RK4
4117 type(rngf_type) , intent(in) :: rng
4118 real(RKG) , intent(out) , contiguous :: rand(:,:)
4119 end subroutine
4120#endif
4121
4122#if RK3_ENABLED
4123 impure module subroutine setUSR_RNGF_DM_DC_XXX_D2_RK3(rng, rand)
4124#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4125 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGF_DM_DC_XXX_D2_RK3
4126#endif
4127 use pm_kind, only: RKG => RK3
4128 type(rngf_type) , intent(in) :: rng
4129 real(RKG) , intent(out) , contiguous :: rand(:,:)
4130 end subroutine
4131#endif
4132
4133#if RK2_ENABLED
4134 impure module subroutine setUSR_RNGF_DM_DC_XXX_D2_RK2(rng, rand)
4135#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4136 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGF_DM_DC_XXX_D2_RK2
4137#endif
4138 use pm_kind, only: RKG => RK2
4139 type(rngf_type) , intent(in) :: rng
4140 real(RKG) , intent(out) , contiguous :: rand(:,:)
4141 end subroutine
4142#endif
4143
4144#if RK1_ENABLED
4145 impure module subroutine setUSR_RNGF_DM_DC_XXX_D2_RK1(rng, rand)
4146#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4147 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGF_DM_DC_XXX_D2_RK1
4148#endif
4149 use pm_kind, only: RKG => RK1
4150 type(rngf_type) , intent(in) :: rng
4151 real(RKG) , intent(out) , contiguous :: rand(:,:)
4152 end subroutine
4153#endif
4154
4155 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4156
4157#if RK5_ENABLED
4158 impure module subroutine setUSR_RNGF_AM_DC_XXX_D2_RK5(rng, rand, mean)
4159#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4160 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGF_AM_DC_XXX_D2_RK5
4161#endif
4162 use pm_kind, only: RKG => RK5
4163 type(rngf_type) , intent(in) :: rng
4164 real(RKG) , intent(out) , contiguous :: rand(:,:)
4165 real(RKG) , intent(in) , contiguous :: mean(:)
4166 end subroutine
4167#endif
4168
4169#if RK4_ENABLED
4170 impure module subroutine setUSR_RNGF_AM_DC_XXX_D2_RK4(rng, rand, mean)
4171#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4172 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGF_AM_DC_XXX_D2_RK4
4173#endif
4174 use pm_kind, only: RKG => RK4
4175 type(rngf_type) , intent(in) :: rng
4176 real(RKG) , intent(out) , contiguous :: rand(:,:)
4177 real(RKG) , intent(in) , contiguous :: mean(:)
4178 end subroutine
4179#endif
4180
4181#if RK3_ENABLED
4182 impure module subroutine setUSR_RNGF_AM_DC_XXX_D2_RK3(rng, rand, mean)
4183#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4184 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGF_AM_DC_XXX_D2_RK3
4185#endif
4186 use pm_kind, only: RKG => RK3
4187 type(rngf_type) , intent(in) :: rng
4188 real(RKG) , intent(out) , contiguous :: rand(:,:)
4189 real(RKG) , intent(in) , contiguous :: mean(:)
4190 end subroutine
4191#endif
4192
4193#if RK2_ENABLED
4194 impure module subroutine setUSR_RNGF_AM_DC_XXX_D2_RK2(rng, rand, mean)
4195#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4196 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGF_AM_DC_XXX_D2_RK2
4197#endif
4198 use pm_kind, only: RKG => RK2
4199 type(rngf_type) , intent(in) :: rng
4200 real(RKG) , intent(out) , contiguous :: rand(:,:)
4201 real(RKG) , intent(in) , contiguous :: mean(:)
4202 end subroutine
4203#endif
4204
4205#if RK1_ENABLED
4206 impure module subroutine setUSR_RNGF_AM_DC_XXX_D2_RK1(rng, rand, mean)
4207#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4208 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGF_AM_DC_XXX_D2_RK1
4209#endif
4210 use pm_kind, only: RKG => RK1
4211 type(rngf_type) , intent(in) :: rng
4212 real(RKG) , intent(out) , contiguous :: rand(:,:)
4213 real(RKG) , intent(in) , contiguous :: mean(:)
4214 end subroutine
4215#endif
4216
4217 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4218
4219#if RK5_ENABLED
4220 impure module subroutine setUSR_RNGF_DM_AC_UXD_D2_RK5(rng, rand, chol, subset)
4221#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4222 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGF_DM_AC_UXD_D2_RK5
4223#endif
4224 use pm_kind, only: RKG => RK5
4225 type(rngf_type) , intent(in) :: rng
4226 real(RKG) , intent(out) , contiguous :: rand(:,:)
4227 real(RKG) , intent(in) , contiguous :: chol(:,:)
4228 type(uppDia_type) , intent(in) :: subset
4229 end subroutine
4230#endif
4231
4232#if RK4_ENABLED
4233 impure module subroutine setUSR_RNGF_DM_AC_UXD_D2_RK4(rng, rand, chol, subset)
4234#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4235 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGF_DM_AC_UXD_D2_RK4
4236#endif
4237 use pm_kind, only: RKG => RK4
4238 type(rngf_type) , intent(in) :: rng
4239 real(RKG) , intent(out) , contiguous :: rand(:,:)
4240 real(RKG) , intent(in) , contiguous :: chol(:,:)
4241 type(uppDia_type) , intent(in) :: subset
4242 end subroutine
4243#endif
4244
4245#if RK3_ENABLED
4246 impure module subroutine setUSR_RNGF_DM_AC_UXD_D2_RK3(rng, rand, chol, subset)
4247#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4248 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGF_DM_AC_UXD_D2_RK3
4249#endif
4250 use pm_kind, only: RKG => RK3
4251 type(rngf_type) , intent(in) :: rng
4252 real(RKG) , intent(out) , contiguous :: rand(:,:)
4253 real(RKG) , intent(in) , contiguous :: chol(:,:)
4254 type(uppDia_type) , intent(in) :: subset
4255 end subroutine
4256#endif
4257
4258#if RK2_ENABLED
4259 impure module subroutine setUSR_RNGF_DM_AC_UXD_D2_RK2(rng, rand, chol, subset)
4260#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4261 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGF_DM_AC_UXD_D2_RK2
4262#endif
4263 use pm_kind, only: RKG => RK2
4264 type(rngf_type) , intent(in) :: rng
4265 real(RKG) , intent(out) , contiguous :: rand(:,:)
4266 real(RKG) , intent(in) , contiguous :: chol(:,:)
4267 type(uppDia_type) , intent(in) :: subset
4268 end subroutine
4269#endif
4270
4271#if RK1_ENABLED
4272 impure module subroutine setUSR_RNGF_DM_AC_UXD_D2_RK1(rng, rand, chol, subset)
4273#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4274 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGF_DM_AC_UXD_D2_RK1
4275#endif
4276 use pm_kind, only: RKG => RK1
4277 type(rngf_type) , intent(in) :: rng
4278 real(RKG) , intent(out) , contiguous :: rand(:,:)
4279 real(RKG) , intent(in) , contiguous :: chol(:,:)
4280 type(uppDia_type) , intent(in) :: subset
4281 end subroutine
4282#endif
4283
4284 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4285
4286#if RK5_ENABLED
4287 impure module subroutine setUSR_RNGF_DM_AC_XLD_D2_RK5(rng, rand, chol, subset)
4288#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4289 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGF_DM_AC_XLD_D2_RK5
4290#endif
4291 use pm_kind, only: RKG => RK5
4292 type(rngf_type) , intent(in) :: rng
4293 real(RKG) , intent(out) , contiguous :: rand(:,:)
4294 real(RKG) , intent(in) , contiguous :: chol(:,:)
4295 type(lowDia_type) , intent(in) :: subset
4296 end subroutine
4297#endif
4298
4299#if RK4_ENABLED
4300 impure module subroutine setUSR_RNGF_DM_AC_XLD_D2_RK4(rng, rand, chol, subset)
4301#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4302 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGF_DM_AC_XLD_D2_RK4
4303#endif
4304 use pm_kind, only: RKG => RK4
4305 type(rngf_type) , intent(in) :: rng
4306 real(RKG) , intent(out) , contiguous :: rand(:,:)
4307 real(RKG) , intent(in) , contiguous :: chol(:,:)
4308 type(lowDia_type) , intent(in) :: subset
4309 end subroutine
4310#endif
4311
4312#if RK3_ENABLED
4313 impure module subroutine setUSR_RNGF_DM_AC_XLD_D2_RK3(rng, rand, chol, subset)
4314#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4315 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGF_DM_AC_XLD_D2_RK3
4316#endif
4317 use pm_kind, only: RKG => RK3
4318 type(rngf_type) , intent(in) :: rng
4319 real(RKG) , intent(out) , contiguous :: rand(:,:)
4320 real(RKG) , intent(in) , contiguous :: chol(:,:)
4321 type(lowDia_type) , intent(in) :: subset
4322 end subroutine
4323#endif
4324
4325#if RK2_ENABLED
4326 impure module subroutine setUSR_RNGF_DM_AC_XLD_D2_RK2(rng, rand, chol, subset)
4327#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4328 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGF_DM_AC_XLD_D2_RK2
4329#endif
4330 use pm_kind, only: RKG => RK2
4331 type(rngf_type) , intent(in) :: rng
4332 real(RKG) , intent(out) , contiguous :: rand(:,:)
4333 real(RKG) , intent(in) , contiguous :: chol(:,:)
4334 type(lowDia_type) , intent(in) :: subset
4335 end subroutine
4336#endif
4337
4338#if RK1_ENABLED
4339 impure module subroutine setUSR_RNGF_DM_AC_XLD_D2_RK1(rng, rand, chol, subset)
4340#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4341 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGF_DM_AC_XLD_D2_RK1
4342#endif
4343 use pm_kind, only: RKG => RK1
4344 type(rngf_type) , intent(in) :: rng
4345 real(RKG) , intent(out) , contiguous :: rand(:,:)
4346 real(RKG) , intent(in) , contiguous :: chol(:,:)
4347 type(lowDia_type) , intent(in) :: subset
4348 end subroutine
4349#endif
4350
4351 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4352
4353#if RK5_ENABLED
4354 impure module subroutine setUSR_RNGF_AM_AC_UXD_D2_RK5(rng, rand, mean, chol, subset)
4355#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4356 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGF_AM_AC_UXD_D2_RK5
4357#endif
4358 use pm_kind, only: RKG => RK5
4359 type(rngf_type) , intent(in) :: rng
4360 real(RKG) , intent(out) , contiguous :: rand(:,:)
4361 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
4362 type(uppDia_type) , intent(in) :: subset
4363 end subroutine
4364#endif
4365
4366#if RK4_ENABLED
4367 impure module subroutine setUSR_RNGF_AM_AC_UXD_D2_RK4(rng, rand, mean, chol, subset)
4368#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4369 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGF_AM_AC_UXD_D2_RK4
4370#endif
4371 use pm_kind, only: RKG => RK4
4372 type(rngf_type) , intent(in) :: rng
4373 real(RKG) , intent(out) , contiguous :: rand(:,:)
4374 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
4375 type(uppDia_type) , intent(in) :: subset
4376 end subroutine
4377#endif
4378
4379#if RK3_ENABLED
4380 impure module subroutine setUSR_RNGF_AM_AC_UXD_D2_RK3(rng, rand, mean, chol, subset)
4381#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4382 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGF_AM_AC_UXD_D2_RK3
4383#endif
4384 use pm_kind, only: RKG => RK3
4385 type(rngf_type) , intent(in) :: rng
4386 real(RKG) , intent(out) , contiguous :: rand(:,:)
4387 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
4388 type(uppDia_type) , intent(in) :: subset
4389 end subroutine
4390#endif
4391
4392#if RK2_ENABLED
4393 impure module subroutine setUSR_RNGF_AM_AC_UXD_D2_RK2(rng, rand, mean, chol, subset)
4394#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4395 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGF_AM_AC_UXD_D2_RK2
4396#endif
4397 use pm_kind, only: RKG => RK2
4398 type(rngf_type) , intent(in) :: rng
4399 real(RKG) , intent(out) , contiguous :: rand(:,:)
4400 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
4401 type(uppDia_type) , intent(in) :: subset
4402 end subroutine
4403#endif
4404
4405#if RK1_ENABLED
4406 impure module subroutine setUSR_RNGF_AM_AC_UXD_D2_RK1(rng, rand, mean, chol, subset)
4407#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4408 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGF_AM_AC_UXD_D2_RK1
4409#endif
4410 use pm_kind, only: RKG => RK1
4411 type(rngf_type) , intent(in) :: rng
4412 real(RKG) , intent(out) , contiguous :: rand(:,:)
4413 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
4414 type(uppDia_type) , intent(in) :: subset
4415 end subroutine
4416#endif
4417
4418 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4419
4420#if RK5_ENABLED
4421 impure module subroutine setUSR_RNGF_AM_AC_XLD_D2_RK5(rng, rand, mean, chol, subset)
4422#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4423 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGF_AM_AC_XLD_D2_RK5
4424#endif
4425 use pm_kind, only: RKG => RK5
4426 type(rngf_type) , intent(in) :: rng
4427 real(RKG) , intent(out) , contiguous :: rand(:,:)
4428 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
4429 type(lowDia_type) , intent(in) :: subset
4430 end subroutine
4431#endif
4432
4433#if RK4_ENABLED
4434 impure module subroutine setUSR_RNGF_AM_AC_XLD_D2_RK4(rng, rand, mean, chol, subset)
4435#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4436 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGF_AM_AC_XLD_D2_RK4
4437#endif
4438 use pm_kind, only: RKG => RK4
4439 type(rngf_type) , intent(in) :: rng
4440 real(RKG) , intent(out) , contiguous :: rand(:,:)
4441 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
4442 type(lowDia_type) , intent(in) :: subset
4443 end subroutine
4444#endif
4445
4446#if RK3_ENABLED
4447 impure module subroutine setUSR_RNGF_AM_AC_XLD_D2_RK3(rng, rand, mean, chol, subset)
4448#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4449 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGF_AM_AC_XLD_D2_RK3
4450#endif
4451 use pm_kind, only: RKG => RK3
4452 type(rngf_type) , intent(in) :: rng
4453 real(RKG) , intent(out) , contiguous :: rand(:,:)
4454 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
4455 type(lowDia_type) , intent(in) :: subset
4456 end subroutine
4457#endif
4458
4459#if RK2_ENABLED
4460 impure module subroutine setUSR_RNGF_AM_AC_XLD_D2_RK2(rng, rand, mean, chol, subset)
4461#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4462 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGF_AM_AC_XLD_D2_RK2
4463#endif
4464 use pm_kind, only: RKG => RK2
4465 type(rngf_type) , intent(in) :: rng
4466 real(RKG) , intent(out) , contiguous :: rand(:,:)
4467 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
4468 type(lowDia_type) , intent(in) :: subset
4469 end subroutine
4470#endif
4471
4472#if RK1_ENABLED
4473 impure module subroutine setUSR_RNGF_AM_AC_XLD_D2_RK1(rng, rand, mean, chol, subset)
4474#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4475 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGF_AM_AC_XLD_D2_RK1
4476#endif
4477 use pm_kind, only: RKG => RK1
4478 type(rngf_type) , intent(in) :: rng
4479 real(RKG) , intent(out) , contiguous :: rand(:,:)
4480 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
4481 type(lowDia_type) , intent(in) :: subset
4482 end subroutine
4483#endif
4484
4485 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4486
4487 end interface
4488
4489 ! D2 RNGX
4490
4491 interface setUnifSphereRand
4492
4493 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4494
4495#if RK5_ENABLED
4496 impure module subroutine setUSR_RNGX_DM_DC_XXX_D2_RK5(rng, rand)
4497#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4498 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGX_DM_DC_XXX_D2_RK5
4499#endif
4500 use pm_kind, only: RKG => RK5
4501 type(xoshiro256ssw_type), intent(inout) :: rng
4502 real(RKG) , intent(out) , contiguous :: rand(:,:)
4503 end subroutine
4504#endif
4505
4506#if RK4_ENABLED
4507 impure module subroutine setUSR_RNGX_DM_DC_XXX_D2_RK4(rng, rand)
4508#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4509 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGX_DM_DC_XXX_D2_RK4
4510#endif
4511 use pm_kind, only: RKG => RK4
4512 type(xoshiro256ssw_type), intent(inout) :: rng
4513 real(RKG) , intent(out) , contiguous :: rand(:,:)
4514 end subroutine
4515#endif
4516
4517#if RK3_ENABLED
4518 impure module subroutine setUSR_RNGX_DM_DC_XXX_D2_RK3(rng, rand)
4519#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4520 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGX_DM_DC_XXX_D2_RK3
4521#endif
4522 use pm_kind, only: RKG => RK3
4523 type(xoshiro256ssw_type), intent(inout) :: rng
4524 real(RKG) , intent(out) , contiguous :: rand(:,:)
4525 end subroutine
4526#endif
4527
4528#if RK2_ENABLED
4529 impure module subroutine setUSR_RNGX_DM_DC_XXX_D2_RK2(rng, rand)
4530#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4531 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGX_DM_DC_XXX_D2_RK2
4532#endif
4533 use pm_kind, only: RKG => RK2
4534 type(xoshiro256ssw_type), intent(inout) :: rng
4535 real(RKG) , intent(out) , contiguous :: rand(:,:)
4536 end subroutine
4537#endif
4538
4539#if RK1_ENABLED
4540 impure module subroutine setUSR_RNGX_DM_DC_XXX_D2_RK1(rng, rand)
4541#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4542 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGX_DM_DC_XXX_D2_RK1
4543#endif
4544 use pm_kind, only: RKG => RK1
4545 type(xoshiro256ssw_type), intent(inout) :: rng
4546 real(RKG) , intent(out) , contiguous :: rand(:,:)
4547 end subroutine
4548#endif
4549
4550 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4551
4552#if RK5_ENABLED
4553 impure module subroutine setUSR_RNGX_AM_DC_XXX_D2_RK5(rng, rand, mean)
4554#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4555 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGX_AM_DC_XXX_D2_RK5
4556#endif
4557 use pm_kind, only: RKG => RK5
4558 type(xoshiro256ssw_type), intent(inout) :: rng
4559 real(RKG) , intent(out) , contiguous :: rand(:,:)
4560 real(RKG) , intent(in) , contiguous :: mean(:)
4561 end subroutine
4562#endif
4563
4564#if RK4_ENABLED
4565 impure module subroutine setUSR_RNGX_AM_DC_XXX_D2_RK4(rng, rand, mean)
4566#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4567 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGX_AM_DC_XXX_D2_RK4
4568#endif
4569 use pm_kind, only: RKG => RK4
4570 type(xoshiro256ssw_type), intent(inout) :: rng
4571 real(RKG) , intent(out) , contiguous :: rand(:,:)
4572 real(RKG) , intent(in) , contiguous :: mean(:)
4573 end subroutine
4574#endif
4575
4576#if RK3_ENABLED
4577 impure module subroutine setUSR_RNGX_AM_DC_XXX_D2_RK3(rng, rand, mean)
4578#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4579 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGX_AM_DC_XXX_D2_RK3
4580#endif
4581 use pm_kind, only: RKG => RK3
4582 type(xoshiro256ssw_type), intent(inout) :: rng
4583 real(RKG) , intent(out) , contiguous :: rand(:,:)
4584 real(RKG) , intent(in) , contiguous :: mean(:)
4585 end subroutine
4586#endif
4587
4588#if RK2_ENABLED
4589 impure module subroutine setUSR_RNGX_AM_DC_XXX_D2_RK2(rng, rand, mean)
4590#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4591 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGX_AM_DC_XXX_D2_RK2
4592#endif
4593 use pm_kind, only: RKG => RK2
4594 type(xoshiro256ssw_type), intent(inout) :: rng
4595 real(RKG) , intent(out) , contiguous :: rand(:,:)
4596 real(RKG) , intent(in) , contiguous :: mean(:)
4597 end subroutine
4598#endif
4599
4600#if RK1_ENABLED
4601 impure module subroutine setUSR_RNGX_AM_DC_XXX_D2_RK1(rng, rand, mean)
4602#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4603 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGX_AM_DC_XXX_D2_RK1
4604#endif
4605 use pm_kind, only: RKG => RK1
4606 type(xoshiro256ssw_type), intent(inout) :: rng
4607 real(RKG) , intent(out) , contiguous :: rand(:,:)
4608 real(RKG) , intent(in) , contiguous :: mean(:)
4609 end subroutine
4610#endif
4611
4612 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4613
4614#if RK5_ENABLED
4615 impure module subroutine setUSR_RNGX_DM_AC_UXD_D2_RK5(rng, rand, chol, subset)
4616#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4617 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGX_DM_AC_UXD_D2_RK5
4618#endif
4619 use pm_kind, only: RKG => RK5
4620 type(xoshiro256ssw_type), intent(inout) :: rng
4621 real(RKG) , intent(out) , contiguous :: rand(:,:)
4622 real(RKG) , intent(in) , contiguous :: chol(:,:)
4623 type(uppDia_type) , intent(in) :: subset
4624 end subroutine
4625#endif
4626
4627#if RK4_ENABLED
4628 impure module subroutine setUSR_RNGX_DM_AC_UXD_D2_RK4(rng, rand, chol, subset)
4629#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4630 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGX_DM_AC_UXD_D2_RK4
4631#endif
4632 use pm_kind, only: RKG => RK4
4633 type(xoshiro256ssw_type), intent(inout) :: rng
4634 real(RKG) , intent(out) , contiguous :: rand(:,:)
4635 real(RKG) , intent(in) , contiguous :: chol(:,:)
4636 type(uppDia_type) , intent(in) :: subset
4637 end subroutine
4638#endif
4639
4640#if RK3_ENABLED
4641 impure module subroutine setUSR_RNGX_DM_AC_UXD_D2_RK3(rng, rand, chol, subset)
4642#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4643 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGX_DM_AC_UXD_D2_RK3
4644#endif
4645 use pm_kind, only: RKG => RK3
4646 type(xoshiro256ssw_type), intent(inout) :: rng
4647 real(RKG) , intent(out) , contiguous :: rand(:,:)
4648 real(RKG) , intent(in) , contiguous :: chol(:,:)
4649 type(uppDia_type) , intent(in) :: subset
4650 end subroutine
4651#endif
4652
4653#if RK2_ENABLED
4654 impure module subroutine setUSR_RNGX_DM_AC_UXD_D2_RK2(rng, rand, chol, subset)
4655#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4656 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGX_DM_AC_UXD_D2_RK2
4657#endif
4658 use pm_kind, only: RKG => RK2
4659 type(xoshiro256ssw_type), intent(inout) :: rng
4660 real(RKG) , intent(out) , contiguous :: rand(:,:)
4661 real(RKG) , intent(in) , contiguous :: chol(:,:)
4662 type(uppDia_type) , intent(in) :: subset
4663 end subroutine
4664#endif
4665
4666#if RK1_ENABLED
4667 impure module subroutine setUSR_RNGX_DM_AC_UXD_D2_RK1(rng, rand, chol, subset)
4668#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4669 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGX_DM_AC_UXD_D2_RK1
4670#endif
4671 use pm_kind, only: RKG => RK1
4672 type(xoshiro256ssw_type), intent(inout) :: rng
4673 real(RKG) , intent(out) , contiguous :: rand(:,:)
4674 real(RKG) , intent(in) , contiguous :: chol(:,:)
4675 type(uppDia_type) , intent(in) :: subset
4676 end subroutine
4677#endif
4678
4679 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4680
4681#if RK5_ENABLED
4682 impure module subroutine setUSR_RNGX_DM_AC_XLD_D2_RK5(rng, rand, chol, subset)
4683#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4684 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGX_DM_AC_XLD_D2_RK5
4685#endif
4686 use pm_kind, only: RKG => RK5
4687 type(xoshiro256ssw_type), intent(inout) :: rng
4688 real(RKG) , intent(out) , contiguous :: rand(:,:)
4689 real(RKG) , intent(in) , contiguous :: chol(:,:)
4690 type(lowDia_type) , intent(in) :: subset
4691 end subroutine
4692#endif
4693
4694#if RK4_ENABLED
4695 impure module subroutine setUSR_RNGX_DM_AC_XLD_D2_RK4(rng, rand, chol, subset)
4696#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4697 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGX_DM_AC_XLD_D2_RK4
4698#endif
4699 use pm_kind, only: RKG => RK4
4700 type(xoshiro256ssw_type), intent(inout) :: rng
4701 real(RKG) , intent(out) , contiguous :: rand(:,:)
4702 real(RKG) , intent(in) , contiguous :: chol(:,:)
4703 type(lowDia_type) , intent(in) :: subset
4704 end subroutine
4705#endif
4706
4707#if RK3_ENABLED
4708 impure module subroutine setUSR_RNGX_DM_AC_XLD_D2_RK3(rng, rand, chol, subset)
4709#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4710 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGX_DM_AC_XLD_D2_RK3
4711#endif
4712 use pm_kind, only: RKG => RK3
4713 type(xoshiro256ssw_type), intent(inout) :: rng
4714 real(RKG) , intent(out) , contiguous :: rand(:,:)
4715 real(RKG) , intent(in) , contiguous :: chol(:,:)
4716 type(lowDia_type) , intent(in) :: subset
4717 end subroutine
4718#endif
4719
4720#if RK2_ENABLED
4721 impure module subroutine setUSR_RNGX_DM_AC_XLD_D2_RK2(rng, rand, chol, subset)
4722#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4723 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGX_DM_AC_XLD_D2_RK2
4724#endif
4725 use pm_kind, only: RKG => RK2
4726 type(xoshiro256ssw_type), intent(inout) :: rng
4727 real(RKG) , intent(out) , contiguous :: rand(:,:)
4728 real(RKG) , intent(in) , contiguous :: chol(:,:)
4729 type(lowDia_type) , intent(in) :: subset
4730 end subroutine
4731#endif
4732
4733#if RK1_ENABLED
4734 impure module subroutine setUSR_RNGX_DM_AC_XLD_D2_RK1(rng, rand, chol, subset)
4735#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4736 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGX_DM_AC_XLD_D2_RK1
4737#endif
4738 use pm_kind, only: RKG => RK1
4739 type(xoshiro256ssw_type), intent(inout) :: rng
4740 real(RKG) , intent(out) , contiguous :: rand(:,:)
4741 real(RKG) , intent(in) , contiguous :: chol(:,:)
4742 type(lowDia_type) , intent(in) :: subset
4743 end subroutine
4744#endif
4745
4746 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4747
4748#if RK5_ENABLED
4749 impure module subroutine setUSR_RNGX_AM_AC_UXD_D2_RK5(rng, rand, mean, chol, subset)
4750#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4751 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGX_AM_AC_UXD_D2_RK5
4752#endif
4753 use pm_kind, only: RKG => RK5
4754 type(xoshiro256ssw_type), intent(inout) :: rng
4755 real(RKG) , intent(out) , contiguous :: rand(:,:)
4756 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
4757 type(uppDia_type) , intent(in) :: subset
4758 end subroutine
4759#endif
4760
4761#if RK4_ENABLED
4762 impure module subroutine setUSR_RNGX_AM_AC_UXD_D2_RK4(rng, rand, mean, chol, subset)
4763#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4764 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGX_AM_AC_UXD_D2_RK4
4765#endif
4766 use pm_kind, only: RKG => RK4
4767 type(xoshiro256ssw_type), intent(inout) :: rng
4768 real(RKG) , intent(out) , contiguous :: rand(:,:)
4769 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
4770 type(uppDia_type) , intent(in) :: subset
4771 end subroutine
4772#endif
4773
4774#if RK3_ENABLED
4775 impure module subroutine setUSR_RNGX_AM_AC_UXD_D2_RK3(rng, rand, mean, chol, subset)
4776#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4777 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGX_AM_AC_UXD_D2_RK3
4778#endif
4779 use pm_kind, only: RKG => RK3
4780 type(xoshiro256ssw_type), intent(inout) :: rng
4781 real(RKG) , intent(out) , contiguous :: rand(:,:)
4782 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
4783 type(uppDia_type) , intent(in) :: subset
4784 end subroutine
4785#endif
4786
4787#if RK2_ENABLED
4788 impure module subroutine setUSR_RNGX_AM_AC_UXD_D2_RK2(rng, rand, mean, chol, subset)
4789#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4790 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGX_AM_AC_UXD_D2_RK2
4791#endif
4792 use pm_kind, only: RKG => RK2
4793 type(xoshiro256ssw_type), intent(inout) :: rng
4794 real(RKG) , intent(out) , contiguous :: rand(:,:)
4795 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
4796 type(uppDia_type) , intent(in) :: subset
4797 end subroutine
4798#endif
4799
4800#if RK1_ENABLED
4801 impure module subroutine setUSR_RNGX_AM_AC_UXD_D2_RK1(rng, rand, mean, chol, subset)
4802#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4803 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGX_AM_AC_UXD_D2_RK1
4804#endif
4805 use pm_kind, only: RKG => RK1
4806 type(xoshiro256ssw_type), intent(inout) :: rng
4807 real(RKG) , intent(out) , contiguous :: rand(:,:)
4808 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
4809 type(uppDia_type) , intent(in) :: subset
4810 end subroutine
4811#endif
4812
4813 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4814
4815#if RK5_ENABLED
4816 impure module subroutine setUSR_RNGX_AM_AC_XLD_D2_RK5(rng, rand, mean, chol, subset)
4817#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4818 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGX_AM_AC_XLD_D2_RK5
4819#endif
4820 use pm_kind, only: RKG => RK5
4821 type(xoshiro256ssw_type), intent(inout) :: rng
4822 real(RKG) , intent(out) , contiguous :: rand(:,:)
4823 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
4824 type(lowDia_type) , intent(in) :: subset
4825 end subroutine
4826#endif
4827
4828#if RK4_ENABLED
4829 impure module subroutine setUSR_RNGX_AM_AC_XLD_D2_RK4(rng, rand, mean, chol, subset)
4830#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4831 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGX_AM_AC_XLD_D2_RK4
4832#endif
4833 use pm_kind, only: RKG => RK4
4834 type(xoshiro256ssw_type), intent(inout) :: rng
4835 real(RKG) , intent(out) , contiguous :: rand(:,:)
4836 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
4837 type(lowDia_type) , intent(in) :: subset
4838 end subroutine
4839#endif
4840
4841#if RK3_ENABLED
4842 impure module subroutine setUSR_RNGX_AM_AC_XLD_D2_RK3(rng, rand, mean, chol, subset)
4843#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4844 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGX_AM_AC_XLD_D2_RK3
4845#endif
4846 use pm_kind, only: RKG => RK3
4847 type(xoshiro256ssw_type), intent(inout) :: rng
4848 real(RKG) , intent(out) , contiguous :: rand(:,:)
4849 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
4850 type(lowDia_type) , intent(in) :: subset
4851 end subroutine
4852#endif
4853
4854#if RK2_ENABLED
4855 impure module subroutine setUSR_RNGX_AM_AC_XLD_D2_RK2(rng, rand, mean, chol, subset)
4856#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4857 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGX_AM_AC_XLD_D2_RK2
4858#endif
4859 use pm_kind, only: RKG => RK2
4860 type(xoshiro256ssw_type), intent(inout) :: rng
4861 real(RKG) , intent(out) , contiguous :: rand(:,:)
4862 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
4863 type(lowDia_type) , intent(in) :: subset
4864 end subroutine
4865#endif
4866
4867#if RK1_ENABLED
4868 impure module subroutine setUSR_RNGX_AM_AC_XLD_D2_RK1(rng, rand, mean, chol, subset)
4869#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4870 !DEC$ ATTRIBUTES DLLEXPORT :: setUSR_RNGX_AM_AC_XLD_D2_RK1
4871#endif
4872 use pm_kind, only: RKG => RK1
4873 type(xoshiro256ssw_type), intent(inout) :: rng
4874 real(RKG) , intent(out) , contiguous :: rand(:,:)
4875 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
4876 type(lowDia_type) , intent(in) :: subset
4877 end subroutine
4878#endif
4879
4880 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4881
4882 end interface
4883
4884!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4885
4886end module pm_distUnifSphere
Generate and return the natural logarithm of the Probability Density Function (PDF) of the uniform di...
Generate and return a (collection) of random vector(s) of size ndim uniformly distributed on the surf...
Return a (collection) of random vector(s) of size ndim uniformly distributed on the surface of an -sp...
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 MultiVariate Uniform Spherical...
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...