ParaMonte Fortran 2.0.0
Parallel Monte Carlo and Machine Learning Library
See the latest version documentation.
pm_distMultiNorm.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
57
58!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
59
61
62 use pm_kind, only: SK, IK, LK
63 use pm_distUnif, only: rngf_type
67
68 implicit none
69
70 character(*, SK), parameter :: MODULE_NAME = "@pm_distMultiNorm"
71
72!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
73
108 end type
109
110!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
111
183
184 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
185
186#if RK5_ENABLED
187 PURE module function getMultiNormLogPDFNFI_RK5(invCov) result(logPDFNF)
188#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
189 !DEC$ ATTRIBUTES DLLEXPORT :: getMultiNormLogPDFNFI_RK5
190#endif
191 use pm_kind, only: RKG => RK5
192 real(RKG) , intent(in), contiguous :: invCov(:,:)
193 real(RKG) :: logPDFNF
194 end function
195#endif
196
197#if RK4_ENABLED
198 PURE module function getMultiNormLogPDFNFI_RK4(invCov) result(logPDFNF)
199#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
200 !DEC$ ATTRIBUTES DLLEXPORT :: getMultiNormLogPDFNFI_RK4
201#endif
202 use pm_kind, only: RKG => RK4
203 real(RKG) , intent(in), contiguous :: invCov(:,:)
204 real(RKG) :: logPDFNF
205 end function
206#endif
207
208#if RK3_ENABLED
209 PURE module function getMultiNormLogPDFNFI_RK3(invCov) result(logPDFNF)
210#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
211 !DEC$ ATTRIBUTES DLLEXPORT :: getMultiNormLogPDFNFI_RK3
212#endif
213 use pm_kind, only: RKG => RK3
214 real(RKG) , intent(in), contiguous :: invCov(:,:)
215 real(RKG) :: logPDFNF
216 end function
217#endif
218
219#if RK2_ENABLED
220 PURE module function getMultiNormLogPDFNFI_RK2(invCov) result(logPDFNF)
221#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
222 !DEC$ ATTRIBUTES DLLEXPORT :: getMultiNormLogPDFNFI_RK2
223#endif
224 use pm_kind, only: RKG => RK2
225 real(RKG) , intent(in), contiguous :: invCov(:,:)
226 real(RKG) :: logPDFNF
227 end function
228#endif
229
230#if RK1_ENABLED
231 PURE module function getMultiNormLogPDFNFI_RK1(invCov) result(logPDFNF)
232#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
233 !DEC$ ATTRIBUTES DLLEXPORT :: getMultiNormLogPDFNFI_RK1
234#endif
235 use pm_kind, only: RKG => RK1
236 real(RKG) , intent(in), contiguous :: invCov(:,:)
237 real(RKG) :: logPDFNF
238 end function
239#endif
240
241 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
242
243#if RK5_ENABLED
244 impure module function getMultiNormLogPDFNFIF_RK5(invCov, info) result(logPDFNF)
245#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
246 !DEC$ ATTRIBUTES DLLEXPORT :: getMultiNormLogPDFNFIF_RK5
247#endif
248 use pm_kind, only: RKG => RK5
249 real(RKG) , intent(in), contiguous :: invCov(:,:)
250 integer(IK) , intent(out) :: info
251 real(RKG) :: logPDFNF
252 end function
253#endif
254
255#if RK4_ENABLED
256 impure module function getMultiNormLogPDFNFIF_RK4(invCov, info) result(logPDFNF)
257#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
258 !DEC$ ATTRIBUTES DLLEXPORT :: getMultiNormLogPDFNFIF_RK4
259#endif
260 use pm_kind, only: RKG => RK4
261 real(RKG) , intent(in), contiguous :: invCov(:,:)
262 integer(IK) , intent(out) :: info
263 real(RKG) :: logPDFNF
264 end function
265#endif
266
267#if RK3_ENABLED
268 impure module function getMultiNormLogPDFNFIF_RK3(invCov, info) result(logPDFNF)
269#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
270 !DEC$ ATTRIBUTES DLLEXPORT :: getMultiNormLogPDFNFIF_RK3
271#endif
272 use pm_kind, only: RKG => RK3
273 real(RKG) , intent(in), contiguous :: invCov(:,:)
274 integer(IK) , intent(out) :: info
275 real(RKG) :: logPDFNF
276 end function
277#endif
278
279#if RK2_ENABLED
280 impure module function getMultiNormLogPDFNFIF_RK2(invCov, info) result(logPDFNF)
281#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
282 !DEC$ ATTRIBUTES DLLEXPORT :: getMultiNormLogPDFNFIF_RK2
283#endif
284 use pm_kind, only: RKG => RK2
285 real(RKG) , intent(in), contiguous :: invCov(:,:)
286 integer(IK) , intent(out) :: info
287 real(RKG) :: logPDFNF
288 end function
289#endif
290
291#if RK1_ENABLED
292 impure module function getMultiNormLogPDFNFIF_RK1(invCov, info) result(logPDFNF)
293#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
294 !DEC$ ATTRIBUTES DLLEXPORT :: getMultiNormLogPDFNFIF_RK1
295#endif
296 use pm_kind, only: RKG => RK1
297 real(RKG) , intent(in), contiguous :: invCov(:,:)
298 integer(IK) , intent(out) :: info
299 real(RKG) :: logPDFNF
300 end function
301#endif
302
303 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
304
305#if RK5_ENABLED
306 PURE elemental module function getMultiNormLogPDFNFND_RK5(ndim, logSqrtDetInvCov) result(logPDFNF)
307#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
308 !DEC$ ATTRIBUTES DLLEXPORT :: getMultiNormLogPDFNFND_RK5
309#endif
310 use pm_kind, only: RKG => RK5
311 integer(IK) , intent(in) :: ndim
312 real(RKG) , intent(in) :: logSqrtDetInvCov
313 real(RKG) :: logPDFNF
314 end function
315#endif
316
317#if RK4_ENABLED
318 PURE elemental module function getMultiNormLogPDFNFND_RK4(ndim, logSqrtDetInvCov) result(logPDFNF)
319#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
320 !DEC$ ATTRIBUTES DLLEXPORT :: getMultiNormLogPDFNFND_RK4
321#endif
322 use pm_kind, only: RKG => RK4
323 integer(IK) , intent(in) :: ndim
324 real(RKG) , intent(in) :: logSqrtDetInvCov
325 real(RKG) :: logPDFNF
326 end function
327#endif
328
329#if RK3_ENABLED
330 PURE elemental module function getMultiNormLogPDFNFND_RK3(ndim, logSqrtDetInvCov) result(logPDFNF)
331#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
332 !DEC$ ATTRIBUTES DLLEXPORT :: getMultiNormLogPDFNFND_RK3
333#endif
334 use pm_kind, only: RKG => RK3
335 integer(IK) , intent(in) :: ndim
336 real(RKG) , intent(in) :: logSqrtDetInvCov
337 real(RKG) :: logPDFNF
338 end function
339#endif
340
341#if RK2_ENABLED
342 PURE elemental module function getMultiNormLogPDFNFND_RK2(ndim, logSqrtDetInvCov) result(logPDFNF)
343#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
344 !DEC$ ATTRIBUTES DLLEXPORT :: getMultiNormLogPDFNFND_RK2
345#endif
346 use pm_kind, only: RKG => RK2
347 integer(IK) , intent(in) :: ndim
348 real(RKG) , intent(in) :: logSqrtDetInvCov
349 real(RKG) :: logPDFNF
350 end function
351#endif
352
353#if RK1_ENABLED
354 PURE elemental module function getMultiNormLogPDFNFND_RK1(ndim, logSqrtDetInvCov) result(logPDFNF)
355#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
356 !DEC$ ATTRIBUTES DLLEXPORT :: getMultiNormLogPDFNFND_RK1
357#endif
358 use pm_kind, only: RKG => RK1
359 integer(IK) , intent(in) :: ndim
360 real(RKG) , intent(in) :: logSqrtDetInvCov
361 real(RKG) :: logPDFNF
362 end function
363#endif
364
365 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
366
367 end interface
368
369!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
370
450
451 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
452
453#if RK5_ENABLED
454 PURE module function getMultiNormLogPDFDDD_D1_RK5(X) result(logPDF)
455#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
456 !DEC$ ATTRIBUTES DLLEXPORT :: getMultiNormLogPDFDDD_D1_RK5
457#endif
458 use pm_kind, only: RKG => RK5
459 real(RKG) , intent(in) , contiguous :: X(:)
460 real(RKG) :: logPDF
461 end function
462#endif
463
464#if RK4_ENABLED
465 PURE module function getMultiNormLogPDFDDD_D1_RK4(X) result(logPDF)
466#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
467 !DEC$ ATTRIBUTES DLLEXPORT :: getMultiNormLogPDFDDD_D1_RK4
468#endif
469 use pm_kind, only: RKG => RK4
470 real(RKG) , intent(in) , contiguous :: X(:)
471 real(RKG) :: logPDF
472 end function
473#endif
474
475#if RK3_ENABLED
476 PURE module function getMultiNormLogPDFDDD_D1_RK3(X) result(logPDF)
477#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
478 !DEC$ ATTRIBUTES DLLEXPORT :: getMultiNormLogPDFDDD_D1_RK3
479#endif
480 use pm_kind, only: RKG => RK3
481 real(RKG) , intent(in) , contiguous :: X(:)
482 real(RKG) :: logPDF
483 end function
484#endif
485
486#if RK2_ENABLED
487 PURE module function getMultiNormLogPDFDDD_D1_RK2(X) result(logPDF)
488#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
489 !DEC$ ATTRIBUTES DLLEXPORT :: getMultiNormLogPDFDDD_D1_RK2
490#endif
491 use pm_kind, only: RKG => RK2
492 real(RKG) , intent(in) , contiguous :: X(:)
493 real(RKG) :: logPDF
494 end function
495#endif
496
497#if RK1_ENABLED
498 PURE module function getMultiNormLogPDFDDD_D1_RK1(X) result(logPDF)
499#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
500 !DEC$ ATTRIBUTES DLLEXPORT :: getMultiNormLogPDFDDD_D1_RK1
501#endif
502 use pm_kind, only: RKG => RK1
503 real(RKG) , intent(in) , contiguous :: X(:)
504 real(RKG) :: logPDF
505 end function
506#endif
507
508 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
509
510#if RK5_ENABLED
511 PURE module function getMultiNormLogPDFDDN_D1_RK5(X, logPDFNF) result(logPDF)
512#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
513 !DEC$ ATTRIBUTES DLLEXPORT :: getMultiNormLogPDFDDN_D1_RK5
514#endif
515 use pm_kind, only: RKG => RK5
516 real(RKG) , intent(in) , contiguous :: X(:)
517 real(RKG) , intent(in) :: logPDFNF
518 real(RKG) :: logPDF
519 end function
520#endif
521
522#if RK4_ENABLED
523 PURE module function getMultiNormLogPDFDDN_D1_RK4(X, logPDFNF) result(logPDF)
524#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
525 !DEC$ ATTRIBUTES DLLEXPORT :: getMultiNormLogPDFDDN_D1_RK4
526#endif
527 use pm_kind, only: RKG => RK4
528 real(RKG) , intent(in) , contiguous :: X(:)
529 real(RKG) , intent(in) :: logPDFNF
530 real(RKG) :: logPDF
531 end function
532#endif
533
534#if RK3_ENABLED
535 PURE module function getMultiNormLogPDFDDN_D1_RK3(X, logPDFNF) result(logPDF)
536#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
537 !DEC$ ATTRIBUTES DLLEXPORT :: getMultiNormLogPDFDDN_D1_RK3
538#endif
539 use pm_kind, only: RKG => RK3
540 real(RKG) , intent(in) , contiguous :: X(:)
541 real(RKG) , intent(in) :: logPDFNF
542 real(RKG) :: logPDF
543 end function
544#endif
545
546#if RK2_ENABLED
547 PURE module function getMultiNormLogPDFDDN_D1_RK2(X, logPDFNF) result(logPDF)
548#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
549 !DEC$ ATTRIBUTES DLLEXPORT :: getMultiNormLogPDFDDN_D1_RK2
550#endif
551 use pm_kind, only: RKG => RK2
552 real(RKG) , intent(in) , contiguous :: X(:)
553 real(RKG) , intent(in) :: logPDFNF
554 real(RKG) :: logPDF
555 end function
556#endif
557
558#if RK1_ENABLED
559 PURE module function getMultiNormLogPDFDDN_D1_RK1(X, logPDFNF) result(logPDF)
560#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
561 !DEC$ ATTRIBUTES DLLEXPORT :: getMultiNormLogPDFDDN_D1_RK1
562#endif
563 use pm_kind, only: RKG => RK1
564 real(RKG) , intent(in) , contiguous :: X(:)
565 real(RKG) , intent(in) :: logPDFNF
566 real(RKG) :: logPDF
567 end function
568#endif
569
570 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
571
572#if RK5_ENABLED
573 PURE module function getMultiNormLogPDFMDD_D1_RK5(X, mean) result(logPDF)
574#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
575 !DEC$ ATTRIBUTES DLLEXPORT :: getMultiNormLogPDFMDD_D1_RK5
576#endif
577 use pm_kind, only: RKG => RK5
578 real(RKG) , intent(in) , contiguous :: X(:)
579 real(RKG) , intent(in) , contiguous :: mean(:)
580 real(RKG) :: logPDF
581 end function
582#endif
583
584#if RK4_ENABLED
585 PURE module function getMultiNormLogPDFMDD_D1_RK4(X, mean) result(logPDF)
586#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
587 !DEC$ ATTRIBUTES DLLEXPORT :: getMultiNormLogPDFMDD_D1_RK4
588#endif
589 use pm_kind, only: RKG => RK4
590 real(RKG) , intent(in) , contiguous :: X(:)
591 real(RKG) , intent(in) , contiguous :: mean(:)
592 real(RKG) :: logPDF
593 end function
594#endif
595
596#if RK3_ENABLED
597 PURE module function getMultiNormLogPDFMDD_D1_RK3(X, mean) result(logPDF)
598#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
599 !DEC$ ATTRIBUTES DLLEXPORT :: getMultiNormLogPDFMDD_D1_RK3
600#endif
601 use pm_kind, only: RKG => RK3
602 real(RKG) , intent(in) , contiguous :: X(:)
603 real(RKG) , intent(in) , contiguous :: mean(:)
604 real(RKG) :: logPDF
605 end function
606#endif
607
608#if RK2_ENABLED
609 PURE module function getMultiNormLogPDFMDD_D1_RK2(X, mean) result(logPDF)
610#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
611 !DEC$ ATTRIBUTES DLLEXPORT :: getMultiNormLogPDFMDD_D1_RK2
612#endif
613 use pm_kind, only: RKG => RK2
614 real(RKG) , intent(in) , contiguous :: X(:)
615 real(RKG) , intent(in) , contiguous :: mean(:)
616 real(RKG) :: logPDF
617 end function
618#endif
619
620#if RK1_ENABLED
621 PURE module function getMultiNormLogPDFMDD_D1_RK1(X, mean) result(logPDF)
622#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
623 !DEC$ ATTRIBUTES DLLEXPORT :: getMultiNormLogPDFMDD_D1_RK1
624#endif
625 use pm_kind, only: RKG => RK1
626 real(RKG) , intent(in) , contiguous :: X(:)
627 real(RKG) , intent(in) , contiguous :: mean(:)
628 real(RKG) :: logPDF
629 end function
630#endif
631
632 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
633
634#if RK5_ENABLED
635 PURE module function getMultiNormLogPDFMDN_D1_RK5(X, mean, logPDFNF) result(logPDF)
636#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
637 !DEC$ ATTRIBUTES DLLEXPORT :: getMultiNormLogPDFMDN_D1_RK5
638#endif
639 use pm_kind, only: RKG => RK5
640 real(RKG) , intent(in) , contiguous :: X(:)
641 real(RKG) , intent(in) , contiguous :: mean(:)
642 real(RKG) , intent(in) :: logPDFNF
643 real(RKG) :: logPDF
644 end function
645#endif
646
647#if RK4_ENABLED
648 PURE module function getMultiNormLogPDFMDN_D1_RK4(X, mean, logPDFNF) result(logPDF)
649#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
650 !DEC$ ATTRIBUTES DLLEXPORT :: getMultiNormLogPDFMDN_D1_RK4
651#endif
652 use pm_kind, only: RKG => RK4
653 real(RKG) , intent(in) , contiguous :: X(:)
654 real(RKG) , intent(in) , contiguous :: mean(:)
655 real(RKG) , intent(in) :: logPDFNF
656 real(RKG) :: logPDF
657 end function
658#endif
659
660#if RK3_ENABLED
661 PURE module function getMultiNormLogPDFMDN_D1_RK3(X, mean, logPDFNF) result(logPDF)
662#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
663 !DEC$ ATTRIBUTES DLLEXPORT :: getMultiNormLogPDFMDN_D1_RK3
664#endif
665 use pm_kind, only: RKG => RK3
666 real(RKG) , intent(in) , contiguous :: X(:)
667 real(RKG) , intent(in) , contiguous :: mean(:)
668 real(RKG) , intent(in) :: logPDFNF
669 real(RKG) :: logPDF
670 end function
671#endif
672
673#if RK2_ENABLED
674 PURE module function getMultiNormLogPDFMDN_D1_RK2(X, mean, logPDFNF) result(logPDF)
675#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
676 !DEC$ ATTRIBUTES DLLEXPORT :: getMultiNormLogPDFMDN_D1_RK2
677#endif
678 use pm_kind, only: RKG => RK2
679 real(RKG) , intent(in) , contiguous :: X(:)
680 real(RKG) , intent(in) , contiguous :: mean(:)
681 real(RKG) , intent(in) :: logPDFNF
682 real(RKG) :: logPDF
683 end function
684#endif
685
686#if RK1_ENABLED
687 PURE module function getMultiNormLogPDFMDN_D1_RK1(X, mean, logPDFNF) result(logPDF)
688#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
689 !DEC$ ATTRIBUTES DLLEXPORT :: getMultiNormLogPDFMDN_D1_RK1
690#endif
691 use pm_kind, only: RKG => RK1
692 real(RKG) , intent(in) , contiguous :: X(:)
693 real(RKG) , intent(in) , contiguous :: mean(:)
694 real(RKG) , intent(in) :: logPDFNF
695 real(RKG) :: logPDF
696 end function
697#endif
698
699 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
700
701#if RK5_ENABLED
702 PURE module function getMultiNormLogPDFDID_D1_RK5(X, invCov) result(logPDF)
703#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
704 !DEC$ ATTRIBUTES DLLEXPORT :: getMultiNormLogPDFDID_D1_RK5
705#endif
706 use pm_kind, only: RKG => RK5
707 real(RKG) , intent(in) , contiguous :: X(:)
708 real(RKG) , intent(in) , contiguous :: invCov(:,:)
709 real(RKG) :: logPDF
710 end function
711#endif
712
713#if RK4_ENABLED
714 PURE module function getMultiNormLogPDFDID_D1_RK4(X, invCov) result(logPDF)
715#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
716 !DEC$ ATTRIBUTES DLLEXPORT :: getMultiNormLogPDFDID_D1_RK4
717#endif
718 use pm_kind, only: RKG => RK4
719 real(RKG) , intent(in) , contiguous :: X(:)
720 real(RKG) , intent(in) , contiguous :: invCov(:,:)
721 real(RKG) :: logPDF
722 end function
723#endif
724
725#if RK3_ENABLED
726 PURE module function getMultiNormLogPDFDID_D1_RK3(X, invCov) result(logPDF)
727#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
728 !DEC$ ATTRIBUTES DLLEXPORT :: getMultiNormLogPDFDID_D1_RK3
729#endif
730 use pm_kind, only: RKG => RK3
731 real(RKG) , intent(in) , contiguous :: X(:)
732 real(RKG) , intent(in) , contiguous :: invCov(:,:)
733 real(RKG) :: logPDF
734 end function
735#endif
736
737#if RK2_ENABLED
738 PURE module function getMultiNormLogPDFDID_D1_RK2(X, invCov) result(logPDF)
739#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
740 !DEC$ ATTRIBUTES DLLEXPORT :: getMultiNormLogPDFDID_D1_RK2
741#endif
742 use pm_kind, only: RKG => RK2
743 real(RKG) , intent(in) , contiguous :: X(:)
744 real(RKG) , intent(in) , contiguous :: invCov(:,:)
745 real(RKG) :: logPDF
746 end function
747#endif
748
749#if RK1_ENABLED
750 PURE module function getMultiNormLogPDFDID_D1_RK1(X, invCov) result(logPDF)
751#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
752 !DEC$ ATTRIBUTES DLLEXPORT :: getMultiNormLogPDFDID_D1_RK1
753#endif
754 use pm_kind, only: RKG => RK1
755 real(RKG) , intent(in) , contiguous :: X(:)
756 real(RKG) , intent(in) , contiguous :: invCov(:,:)
757 real(RKG) :: logPDF
758 end function
759#endif
760
761 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
762
763#if RK5_ENABLED
764 PURE module function getMultiNormLogPDFDIN_D1_RK5(X, invCov, logPDFNF) result(logPDF)
765#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
766 !DEC$ ATTRIBUTES DLLEXPORT :: getMultiNormLogPDFDIN_D1_RK5
767#endif
768 use pm_kind, only: RKG => RK5
769 real(RKG) , intent(in) , contiguous :: X(:)
770 real(RKG) , intent(in) , contiguous :: invCov(:,:)
771 real(RKG) , intent(in) :: logPDFNF
772 real(RKG) :: logPDF
773 end function
774#endif
775
776#if RK4_ENABLED
777 PURE module function getMultiNormLogPDFDIN_D1_RK4(X, invCov, logPDFNF) result(logPDF)
778#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
779 !DEC$ ATTRIBUTES DLLEXPORT :: getMultiNormLogPDFDIN_D1_RK4
780#endif
781 use pm_kind, only: RKG => RK4
782 real(RKG) , intent(in) , contiguous :: X(:)
783 real(RKG) , intent(in) , contiguous :: invCov(:,:)
784 real(RKG) , intent(in) :: logPDFNF
785 real(RKG) :: logPDF
786 end function
787#endif
788
789#if RK3_ENABLED
790 PURE module function getMultiNormLogPDFDIN_D1_RK3(X, invCov, logPDFNF) result(logPDF)
791#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
792 !DEC$ ATTRIBUTES DLLEXPORT :: getMultiNormLogPDFDIN_D1_RK3
793#endif
794 use pm_kind, only: RKG => RK3
795 real(RKG) , intent(in) , contiguous :: X(:)
796 real(RKG) , intent(in) , contiguous :: invCov(:,:)
797 real(RKG) , intent(in) :: logPDFNF
798 real(RKG) :: logPDF
799 end function
800#endif
801
802#if RK2_ENABLED
803 PURE module function getMultiNormLogPDFDIN_D1_RK2(X, invCov, logPDFNF) result(logPDF)
804#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
805 !DEC$ ATTRIBUTES DLLEXPORT :: getMultiNormLogPDFDIN_D1_RK2
806#endif
807 use pm_kind, only: RKG => RK2
808 real(RKG) , intent(in) , contiguous :: X(:)
809 real(RKG) , intent(in) , contiguous :: invCov(:,:)
810 real(RKG) , intent(in) :: logPDFNF
811 real(RKG) :: logPDF
812 end function
813#endif
814
815#if RK1_ENABLED
816 PURE module function getMultiNormLogPDFDIN_D1_RK1(X, invCov, logPDFNF) result(logPDF)
817#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
818 !DEC$ ATTRIBUTES DLLEXPORT :: getMultiNormLogPDFDIN_D1_RK1
819#endif
820 use pm_kind, only: RKG => RK1
821 real(RKG) , intent(in) , contiguous :: X(:)
822 real(RKG) , intent(in) , contiguous :: invCov(:,:)
823 real(RKG) , intent(in) :: logPDFNF
824 real(RKG) :: logPDF
825 end function
826#endif
827
828 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
829
830#if RK5_ENABLED
831 PURE module function getMultiNormLogPDFMID_D1_RK5(X, mean, invCov) result(logPDF)
832#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
833 !DEC$ ATTRIBUTES DLLEXPORT :: getMultiNormLogPDFMID_D1_RK5
834#endif
835 use pm_kind, only: RKG => RK5
836 real(RKG) , intent(in) , contiguous :: X(:)
837 real(RKG) , intent(in) , contiguous :: mean(:)
838 real(RKG) , intent(in) , contiguous :: invCov(:,:)
839 real(RKG) :: logPDF
840 end function
841#endif
842
843#if RK4_ENABLED
844 PURE module function getMultiNormLogPDFMID_D1_RK4(X, mean, invCov) result(logPDF)
845#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
846 !DEC$ ATTRIBUTES DLLEXPORT :: getMultiNormLogPDFMID_D1_RK4
847#endif
848 use pm_kind, only: RKG => RK4
849 real(RKG) , intent(in) , contiguous :: X(:)
850 real(RKG) , intent(in) , contiguous :: mean(:)
851 real(RKG) , intent(in) , contiguous :: invCov(:,:)
852 real(RKG) :: logPDF
853 end function
854#endif
855
856#if RK3_ENABLED
857 PURE module function getMultiNormLogPDFMID_D1_RK3(X, mean, invCov) result(logPDF)
858#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
859 !DEC$ ATTRIBUTES DLLEXPORT :: getMultiNormLogPDFMID_D1_RK3
860#endif
861 use pm_kind, only: RKG => RK3
862 real(RKG) , intent(in) , contiguous :: X(:)
863 real(RKG) , intent(in) , contiguous :: mean(:)
864 real(RKG) , intent(in) , contiguous :: invCov(:,:)
865 real(RKG) :: logPDF
866 end function
867#endif
868
869#if RK2_ENABLED
870 PURE module function getMultiNormLogPDFMID_D1_RK2(X, mean, invCov) result(logPDF)
871#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
872 !DEC$ ATTRIBUTES DLLEXPORT :: getMultiNormLogPDFMID_D1_RK2
873#endif
874 use pm_kind, only: RKG => RK2
875 real(RKG) , intent(in) , contiguous :: X(:)
876 real(RKG) , intent(in) , contiguous :: mean(:)
877 real(RKG) , intent(in) , contiguous :: invCov(:,:)
878 real(RKG) :: logPDF
879 end function
880#endif
881
882#if RK1_ENABLED
883 PURE module function getMultiNormLogPDFMID_D1_RK1(X, mean, invCov) result(logPDF)
884#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
885 !DEC$ ATTRIBUTES DLLEXPORT :: getMultiNormLogPDFMID_D1_RK1
886#endif
887 use pm_kind, only: RKG => RK1
888 real(RKG) , intent(in) , contiguous :: X(:)
889 real(RKG) , intent(in) , contiguous :: mean(:)
890 real(RKG) , intent(in) , contiguous :: invCov(:,:)
891 real(RKG) :: logPDF
892 end function
893#endif
894
895 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
896
897#if RK5_ENABLED
898 PURE module function getMultiNormLogPDFMIN_D1_RK5(X, mean, invCov, logPDFNF) result(logPDF)
899#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
900 !DEC$ ATTRIBUTES DLLEXPORT :: getMultiNormLogPDFMIN_D1_RK5
901#endif
902 use pm_kind, only: RKG => RK5
903 real(RKG) , intent(in) , contiguous :: X(:)
904 real(RKG) , intent(in) , contiguous :: mean(:)
905 real(RKG) , intent(in) , contiguous :: invCov(:,:)
906 real(RKG) , intent(in) :: logPDFNF
907 real(RKG) :: logPDF
908 end function
909#endif
910
911#if RK4_ENABLED
912 PURE module function getMultiNormLogPDFMIN_D1_RK4(X, mean, invCov, logPDFNF) result(logPDF)
913#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
914 !DEC$ ATTRIBUTES DLLEXPORT :: getMultiNormLogPDFMIN_D1_RK4
915#endif
916 use pm_kind, only: RKG => RK4
917 real(RKG) , intent(in) , contiguous :: X(:)
918 real(RKG) , intent(in) , contiguous :: mean(:)
919 real(RKG) , intent(in) , contiguous :: invCov(:,:)
920 real(RKG) , intent(in) :: logPDFNF
921 real(RKG) :: logPDF
922 end function
923#endif
924
925#if RK3_ENABLED
926 PURE module function getMultiNormLogPDFMIN_D1_RK3(X, mean, invCov, logPDFNF) result(logPDF)
927#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
928 !DEC$ ATTRIBUTES DLLEXPORT :: getMultiNormLogPDFMIN_D1_RK3
929#endif
930 use pm_kind, only: RKG => RK3
931 real(RKG) , intent(in) , contiguous :: X(:)
932 real(RKG) , intent(in) , contiguous :: mean(:)
933 real(RKG) , intent(in) , contiguous :: invCov(:,:)
934 real(RKG) , intent(in) :: logPDFNF
935 real(RKG) :: logPDF
936 end function
937#endif
938
939#if RK2_ENABLED
940 PURE module function getMultiNormLogPDFMIN_D1_RK2(X, mean, invCov, logPDFNF) result(logPDF)
941#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
942 !DEC$ ATTRIBUTES DLLEXPORT :: getMultiNormLogPDFMIN_D1_RK2
943#endif
944 use pm_kind, only: RKG => RK2
945 real(RKG) , intent(in) , contiguous :: X(:)
946 real(RKG) , intent(in) , contiguous :: mean(:)
947 real(RKG) , intent(in) , contiguous :: invCov(:,:)
948 real(RKG) , intent(in) :: logPDFNF
949 real(RKG) :: logPDF
950 end function
951#endif
952
953#if RK1_ENABLED
954 PURE module function getMultiNormLogPDFMIN_D1_RK1(X, mean, invCov, logPDFNF) result(logPDF)
955#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
956 !DEC$ ATTRIBUTES DLLEXPORT :: getMultiNormLogPDFMIN_D1_RK1
957#endif
958 use pm_kind, only: RKG => RK1
959 real(RKG) , intent(in) , contiguous :: X(:)
960 real(RKG) , intent(in) , contiguous :: mean(:)
961 real(RKG) , intent(in) , contiguous :: invCov(:,:)
962 real(RKG) , intent(in) :: logPDFNF
963 real(RKG) :: logPDF
964 end function
965#endif
966
967 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
968
969 end interface
970
971!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
972
1089
1090 ! D1 RNGD
1091
1093
1094 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1095
1096#if RK5_ENABLED
1097 impure module function getMNR_RNGD_AM_DC_XXX_D1_RK5(mean) result(rand)
1098#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1099 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGD_AM_DC_XXX_D1_RK5
1100#endif
1101 use pm_kind, only: RKG => RK5
1102 real(RKG) , intent(in) , contiguous :: mean(:)
1103 real(RKG) :: rand(size(mean, 1, IK))
1104 end function
1105#endif
1106
1107#if RK4_ENABLED
1108 impure module function getMNR_RNGD_AM_DC_XXX_D1_RK4(mean) result(rand)
1109#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1110 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGD_AM_DC_XXX_D1_RK4
1111#endif
1112 use pm_kind, only: RKG => RK4
1113 real(RKG) , intent(in) , contiguous :: mean(:)
1114 real(RKG) :: rand(size(mean, 1, IK))
1115 end function
1116#endif
1117
1118#if RK3_ENABLED
1119 impure module function getMNR_RNGD_AM_DC_XXX_D1_RK3(mean) result(rand)
1120#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1121 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGD_AM_DC_XXX_D1_RK3
1122#endif
1123 use pm_kind, only: RKG => RK3
1124 real(RKG) , intent(in) , contiguous :: mean(:)
1125 real(RKG) :: rand(size(mean, 1, IK))
1126 end function
1127#endif
1128
1129#if RK2_ENABLED
1130 impure module function getMNR_RNGD_AM_DC_XXX_D1_RK2(mean) result(rand)
1131#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1132 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGD_AM_DC_XXX_D1_RK2
1133#endif
1134 use pm_kind, only: RKG => RK2
1135 real(RKG) , intent(in) , contiguous :: mean(:)
1136 real(RKG) :: rand(size(mean, 1, IK))
1137 end function
1138#endif
1139
1140#if RK1_ENABLED
1141 impure module function getMNR_RNGD_AM_DC_XXX_D1_RK1(mean) result(rand)
1142#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1143 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGD_AM_DC_XXX_D1_RK1
1144#endif
1145 use pm_kind, only: RKG => RK1
1146 real(RKG) , intent(in) , contiguous :: mean(:)
1147 real(RKG) :: rand(size(mean, 1, IK))
1148 end function
1149#endif
1150
1151 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1152
1153#if RK5_ENABLED
1154 impure module function getMNR_RNGD_DM_AC_UXD_D1_RK5(chol, subset) result(rand)
1155#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1156 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGD_DM_AC_UXD_D1_RK5
1157#endif
1158 use pm_kind, only: RKG => RK5
1159 type(uppDia_type) , intent(in) :: subset
1160 real(RKG) , intent(in) , contiguous :: chol(:,:)
1161 real(RKG) :: rand(size(chol, 1, IK))
1162 end function
1163#endif
1164
1165#if RK4_ENABLED
1166 impure module function getMNR_RNGD_DM_AC_UXD_D1_RK4(chol, subset) result(rand)
1167#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1168 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGD_DM_AC_UXD_D1_RK4
1169#endif
1170 use pm_kind, only: RKG => RK4
1171 type(uppDia_type) , intent(in) :: subset
1172 real(RKG) , intent(in) , contiguous :: chol(:,:)
1173 real(RKG) :: rand(size(chol, 1, IK))
1174 end function
1175#endif
1176
1177#if RK3_ENABLED
1178 impure module function getMNR_RNGD_DM_AC_UXD_D1_RK3(chol, subset) result(rand)
1179#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1180 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGD_DM_AC_UXD_D1_RK3
1181#endif
1182 use pm_kind, only: RKG => RK3
1183 type(uppDia_type) , intent(in) :: subset
1184 real(RKG) , intent(in) , contiguous :: chol(:,:)
1185 real(RKG) :: rand(size(chol, 1, IK))
1186 end function
1187#endif
1188
1189#if RK2_ENABLED
1190 impure module function getMNR_RNGD_DM_AC_UXD_D1_RK2(chol, subset) result(rand)
1191#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1192 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGD_DM_AC_UXD_D1_RK2
1193#endif
1194 use pm_kind, only: RKG => RK2
1195 type(uppDia_type) , intent(in) :: subset
1196 real(RKG) , intent(in) , contiguous :: chol(:,:)
1197 real(RKG) :: rand(size(chol, 1, IK))
1198 end function
1199#endif
1200
1201#if RK1_ENABLED
1202 impure module function getMNR_RNGD_DM_AC_UXD_D1_RK1(chol, subset) result(rand)
1203#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1204 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGD_DM_AC_UXD_D1_RK1
1205#endif
1206 use pm_kind, only: RKG => RK1
1207 type(uppDia_type) , intent(in) :: subset
1208 real(RKG) , intent(in) , contiguous :: chol(:,:)
1209 real(RKG) :: rand(size(chol, 1, IK))
1210 end function
1211#endif
1212
1213 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1214
1215#if RK5_ENABLED
1216 impure module function getMNR_RNGD_DM_AC_XLD_D1_RK5(chol, subset) result(rand)
1217#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1218 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGD_DM_AC_XLD_D1_RK5
1219#endif
1220 use pm_kind, only: RKG => RK5
1221 type(lowDia_type) , intent(in) :: subset
1222 real(RKG) , intent(in) , contiguous :: chol(:,:)
1223 real(RKG) :: rand(size(chol, 1, IK))
1224 end function
1225#endif
1226
1227#if RK4_ENABLED
1228 impure module function getMNR_RNGD_DM_AC_XLD_D1_RK4(chol, subset) result(rand)
1229#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1230 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGD_DM_AC_XLD_D1_RK4
1231#endif
1232 use pm_kind, only: RKG => RK4
1233 type(lowDia_type) , intent(in) :: subset
1234 real(RKG) , intent(in) , contiguous :: chol(:,:)
1235 real(RKG) :: rand(size(chol, 1, IK))
1236 end function
1237#endif
1238
1239#if RK3_ENABLED
1240 impure module function getMNR_RNGD_DM_AC_XLD_D1_RK3(chol, subset) result(rand)
1241#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1242 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGD_DM_AC_XLD_D1_RK3
1243#endif
1244 use pm_kind, only: RKG => RK3
1245 type(lowDia_type) , intent(in) :: subset
1246 real(RKG) , intent(in) , contiguous :: chol(:,:)
1247 real(RKG) :: rand(size(chol, 1, IK))
1248 end function
1249#endif
1250
1251#if RK2_ENABLED
1252 impure module function getMNR_RNGD_DM_AC_XLD_D1_RK2(chol, subset) result(rand)
1253#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1254 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGD_DM_AC_XLD_D1_RK2
1255#endif
1256 use pm_kind, only: RKG => RK2
1257 type(lowDia_type) , intent(in) :: subset
1258 real(RKG) , intent(in) , contiguous :: chol(:,:)
1259 real(RKG) :: rand(size(chol, 1, IK))
1260 end function
1261#endif
1262
1263#if RK1_ENABLED
1264 impure module function getMNR_RNGD_DM_AC_XLD_D1_RK1(chol, subset) result(rand)
1265#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1266 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGD_DM_AC_XLD_D1_RK1
1267#endif
1268 use pm_kind, only: RKG => RK1
1269 type(lowDia_type) , intent(in) :: subset
1270 real(RKG) , intent(in) , contiguous :: chol(:,:)
1271 real(RKG) :: rand(size(chol, 1, IK))
1272 end function
1273#endif
1274
1275 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1276
1277#if RK5_ENABLED
1278 impure module function getMNR_RNGD_AM_AC_UXD_D1_RK5(mean, chol, subset) result(rand)
1279#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1280 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGD_AM_AC_UXD_D1_RK5
1281#endif
1282 use pm_kind, only: RKG => RK5
1283 type(uppDia_type) , intent(in) :: subset
1284 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
1285 real(RKG) :: rand(size(chol, 1, IK))
1286 end function
1287#endif
1288
1289#if RK4_ENABLED
1290 impure module function getMNR_RNGD_AM_AC_UXD_D1_RK4(mean, chol, subset) result(rand)
1291#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1292 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGD_AM_AC_UXD_D1_RK4
1293#endif
1294 use pm_kind, only: RKG => RK4
1295 type(uppDia_type) , intent(in) :: subset
1296 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
1297 real(RKG) :: rand(size(chol, 1, IK))
1298 end function
1299#endif
1300
1301#if RK3_ENABLED
1302 impure module function getMNR_RNGD_AM_AC_UXD_D1_RK3(mean, chol, subset) result(rand)
1303#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1304 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGD_AM_AC_UXD_D1_RK3
1305#endif
1306 use pm_kind, only: RKG => RK3
1307 type(uppDia_type) , intent(in) :: subset
1308 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
1309 real(RKG) :: rand(size(chol, 1, IK))
1310 end function
1311#endif
1312
1313#if RK2_ENABLED
1314 impure module function getMNR_RNGD_AM_AC_UXD_D1_RK2(mean, chol, subset) result(rand)
1315#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1316 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGD_AM_AC_UXD_D1_RK2
1317#endif
1318 use pm_kind, only: RKG => RK2
1319 type(uppDia_type) , intent(in) :: subset
1320 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
1321 real(RKG) :: rand(size(chol, 1, IK))
1322 end function
1323#endif
1324
1325#if RK1_ENABLED
1326 impure module function getMNR_RNGD_AM_AC_UXD_D1_RK1(mean, chol, subset) result(rand)
1327#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1328 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGD_AM_AC_UXD_D1_RK1
1329#endif
1330 use pm_kind, only: RKG => RK1
1331 type(uppDia_type) , intent(in) :: subset
1332 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
1333 real(RKG) :: rand(size(chol, 1, IK))
1334 end function
1335#endif
1336
1337 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1338
1339#if RK5_ENABLED
1340 impure module function getMNR_RNGD_AM_AC_XLD_D1_RK5(mean, chol, subset) result(rand)
1341#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1342 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGD_AM_AC_XLD_D1_RK5
1343#endif
1344 use pm_kind, only: RKG => RK5
1345 type(lowDia_type) , intent(in) :: subset
1346 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
1347 real(RKG) :: rand(size(chol, 1, IK))
1348 end function
1349#endif
1350
1351#if RK4_ENABLED
1352 impure module function getMNR_RNGD_AM_AC_XLD_D1_RK4(mean, chol, subset) result(rand)
1353#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1354 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGD_AM_AC_XLD_D1_RK4
1355#endif
1356 use pm_kind, only: RKG => RK4
1357 type(lowDia_type) , intent(in) :: subset
1358 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
1359 real(RKG) :: rand(size(chol, 1, IK))
1360 end function
1361#endif
1362
1363#if RK3_ENABLED
1364 impure module function getMNR_RNGD_AM_AC_XLD_D1_RK3(mean, chol, subset) result(rand)
1365#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1366 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGD_AM_AC_XLD_D1_RK3
1367#endif
1368 use pm_kind, only: RKG => RK3
1369 type(lowDia_type) , intent(in) :: subset
1370 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
1371 real(RKG) :: rand(size(chol, 1, IK))
1372 end function
1373#endif
1374
1375#if RK2_ENABLED
1376 impure module function getMNR_RNGD_AM_AC_XLD_D1_RK2(mean, chol, subset) result(rand)
1377#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1378 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGD_AM_AC_XLD_D1_RK2
1379#endif
1380 use pm_kind, only: RKG => RK2
1381 type(lowDia_type) , intent(in) :: subset
1382 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
1383 real(RKG) :: rand(size(chol, 1, IK))
1384 end function
1385#endif
1386
1387#if RK1_ENABLED
1388 impure module function getMNR_RNGD_AM_AC_XLD_D1_RK1(mean, chol, subset) result(rand)
1389#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1390 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGD_AM_AC_XLD_D1_RK1
1391#endif
1392 use pm_kind, only: RKG => RK1
1393 type(lowDia_type) , intent(in) :: subset
1394 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
1395 real(RKG) :: rand(size(chol, 1, IK))
1396 end function
1397#endif
1398
1399 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1400
1401 end interface
1402
1403 ! D1 RNGF
1404
1405 interface getMultiNormRand
1406
1407 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1408
1409#if RK5_ENABLED
1410 impure module function getMNR_RNGF_AM_DC_XXX_D1_RK5(rng, mean) result(rand)
1411#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1412 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGF_AM_DC_XXX_D1_RK5
1413#endif
1414 use pm_kind, only: RKG => RK5
1415 type(rngf_type) , intent(in) :: rng
1416 real(RKG) , intent(in) , contiguous :: mean(:)
1417 real(RKG) :: rand(size(mean, 1, IK))
1418 end function
1419#endif
1420
1421#if RK4_ENABLED
1422 impure module function getMNR_RNGF_AM_DC_XXX_D1_RK4(rng, mean) result(rand)
1423#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1424 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGF_AM_DC_XXX_D1_RK4
1425#endif
1426 use pm_kind, only: RKG => RK4
1427 type(rngf_type) , intent(in) :: rng
1428 real(RKG) , intent(in) , contiguous :: mean(:)
1429 real(RKG) :: rand(size(mean, 1, IK))
1430 end function
1431#endif
1432
1433#if RK3_ENABLED
1434 impure module function getMNR_RNGF_AM_DC_XXX_D1_RK3(rng, mean) result(rand)
1435#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1436 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGF_AM_DC_XXX_D1_RK3
1437#endif
1438 use pm_kind, only: RKG => RK3
1439 type(rngf_type) , intent(in) :: rng
1440 real(RKG) , intent(in) , contiguous :: mean(:)
1441 real(RKG) :: rand(size(mean, 1, IK))
1442 end function
1443#endif
1444
1445#if RK2_ENABLED
1446 impure module function getMNR_RNGF_AM_DC_XXX_D1_RK2(rng, mean) result(rand)
1447#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1448 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGF_AM_DC_XXX_D1_RK2
1449#endif
1450 use pm_kind, only: RKG => RK2
1451 type(rngf_type) , intent(in) :: rng
1452 real(RKG) , intent(in) , contiguous :: mean(:)
1453 real(RKG) :: rand(size(mean, 1, IK))
1454 end function
1455#endif
1456
1457#if RK1_ENABLED
1458 impure module function getMNR_RNGF_AM_DC_XXX_D1_RK1(rng, mean) result(rand)
1459#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1460 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGF_AM_DC_XXX_D1_RK1
1461#endif
1462 use pm_kind, only: RKG => RK1
1463 type(rngf_type) , intent(in) :: rng
1464 real(RKG) , intent(in) , contiguous :: mean(:)
1465 real(RKG) :: rand(size(mean, 1, IK))
1466 end function
1467#endif
1468
1469 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1470
1471#if RK5_ENABLED
1472 impure module function getMNR_RNGF_DM_AC_UXD_D1_RK5(rng, chol, subset) result(rand)
1473#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1474 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGF_DM_AC_UXD_D1_RK5
1475#endif
1476 use pm_kind, only: RKG => RK5
1477 type(rngf_type) , intent(in) :: rng
1478 type(uppDia_type) , intent(in) :: subset
1479 real(RKG) , intent(in) , contiguous :: chol(:,:)
1480 real(RKG) :: rand(size(chol, 1, IK))
1481 end function
1482#endif
1483
1484#if RK4_ENABLED
1485 impure module function getMNR_RNGF_DM_AC_UXD_D1_RK4(rng, chol, subset) result(rand)
1486#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1487 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGF_DM_AC_UXD_D1_RK4
1488#endif
1489 use pm_kind, only: RKG => RK4
1490 type(rngf_type) , intent(in) :: rng
1491 type(uppDia_type) , intent(in) :: subset
1492 real(RKG) , intent(in) , contiguous :: chol(:,:)
1493 real(RKG) :: rand(size(chol, 1, IK))
1494 end function
1495#endif
1496
1497#if RK3_ENABLED
1498 impure module function getMNR_RNGF_DM_AC_UXD_D1_RK3(rng, chol, subset) result(rand)
1499#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1500 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGF_DM_AC_UXD_D1_RK3
1501#endif
1502 use pm_kind, only: RKG => RK3
1503 type(rngf_type) , intent(in) :: rng
1504 type(uppDia_type) , intent(in) :: subset
1505 real(RKG) , intent(in) , contiguous :: chol(:,:)
1506 real(RKG) :: rand(size(chol, 1, IK))
1507 end function
1508#endif
1509
1510#if RK2_ENABLED
1511 impure module function getMNR_RNGF_DM_AC_UXD_D1_RK2(rng, chol, subset) result(rand)
1512#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1513 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGF_DM_AC_UXD_D1_RK2
1514#endif
1515 use pm_kind, only: RKG => RK2
1516 type(rngf_type) , intent(in) :: rng
1517 type(uppDia_type) , intent(in) :: subset
1518 real(RKG) , intent(in) , contiguous :: chol(:,:)
1519 real(RKG) :: rand(size(chol, 1, IK))
1520 end function
1521#endif
1522
1523#if RK1_ENABLED
1524 impure module function getMNR_RNGF_DM_AC_UXD_D1_RK1(rng, chol, subset) result(rand)
1525#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1526 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGF_DM_AC_UXD_D1_RK1
1527#endif
1528 use pm_kind, only: RKG => RK1
1529 type(rngf_type) , intent(in) :: rng
1530 type(uppDia_type) , intent(in) :: subset
1531 real(RKG) , intent(in) , contiguous :: chol(:,:)
1532 real(RKG) :: rand(size(chol, 1, IK))
1533 end function
1534#endif
1535
1536 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1537
1538#if RK5_ENABLED
1539 impure module function getMNR_RNGF_DM_AC_XLD_D1_RK5(rng, chol, subset) result(rand)
1540#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1541 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGF_DM_AC_XLD_D1_RK5
1542#endif
1543 use pm_kind, only: RKG => RK5
1544 type(rngf_type) , intent(in) :: rng
1545 type(lowDia_type) , intent(in) :: subset
1546 real(RKG) , intent(in) , contiguous :: chol(:,:)
1547 real(RKG) :: rand(size(chol, 1, IK))
1548 end function
1549#endif
1550
1551#if RK4_ENABLED
1552 impure module function getMNR_RNGF_DM_AC_XLD_D1_RK4(rng, chol, subset) result(rand)
1553#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1554 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGF_DM_AC_XLD_D1_RK4
1555#endif
1556 use pm_kind, only: RKG => RK4
1557 type(rngf_type) , intent(in) :: rng
1558 type(lowDia_type) , intent(in) :: subset
1559 real(RKG) , intent(in) , contiguous :: chol(:,:)
1560 real(RKG) :: rand(size(chol, 1, IK))
1561 end function
1562#endif
1563
1564#if RK3_ENABLED
1565 impure module function getMNR_RNGF_DM_AC_XLD_D1_RK3(rng, chol, subset) result(rand)
1566#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1567 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGF_DM_AC_XLD_D1_RK3
1568#endif
1569 use pm_kind, only: RKG => RK3
1570 type(rngf_type) , intent(in) :: rng
1571 type(lowDia_type) , intent(in) :: subset
1572 real(RKG) , intent(in) , contiguous :: chol(:,:)
1573 real(RKG) :: rand(size(chol, 1, IK))
1574 end function
1575#endif
1576
1577#if RK2_ENABLED
1578 impure module function getMNR_RNGF_DM_AC_XLD_D1_RK2(rng, chol, subset) result(rand)
1579#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1580 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGF_DM_AC_XLD_D1_RK2
1581#endif
1582 use pm_kind, only: RKG => RK2
1583 type(rngf_type) , intent(in) :: rng
1584 type(lowDia_type) , intent(in) :: subset
1585 real(RKG) , intent(in) , contiguous :: chol(:,:)
1586 real(RKG) :: rand(size(chol, 1, IK))
1587 end function
1588#endif
1589
1590#if RK1_ENABLED
1591 impure module function getMNR_RNGF_DM_AC_XLD_D1_RK1(rng, chol, subset) result(rand)
1592#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1593 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGF_DM_AC_XLD_D1_RK1
1594#endif
1595 use pm_kind, only: RKG => RK1
1596 type(rngf_type) , intent(in) :: rng
1597 type(lowDia_type) , intent(in) :: subset
1598 real(RKG) , intent(in) , contiguous :: chol(:,:)
1599 real(RKG) :: rand(size(chol, 1, IK))
1600 end function
1601#endif
1602
1603 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1604
1605#if RK5_ENABLED
1606 impure module function getMNR_RNGF_AM_AC_UXD_D1_RK5(rng, mean, chol, subset) result(rand)
1607#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1608 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGF_AM_AC_UXD_D1_RK5
1609#endif
1610 use pm_kind, only: RKG => RK5
1611 type(rngf_type) , intent(in) :: rng
1612 type(uppDia_type) , intent(in) :: subset
1613 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
1614 real(RKG) :: rand(size(chol, 1, IK))
1615 end function
1616#endif
1617
1618#if RK4_ENABLED
1619 impure module function getMNR_RNGF_AM_AC_UXD_D1_RK4(rng, mean, chol, subset) result(rand)
1620#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1621 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGF_AM_AC_UXD_D1_RK4
1622#endif
1623 use pm_kind, only: RKG => RK4
1624 type(rngf_type) , intent(in) :: rng
1625 type(uppDia_type) , intent(in) :: subset
1626 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
1627 real(RKG) :: rand(size(chol, 1, IK))
1628 end function
1629#endif
1630
1631#if RK3_ENABLED
1632 impure module function getMNR_RNGF_AM_AC_UXD_D1_RK3(rng, mean, chol, subset) result(rand)
1633#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1634 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGF_AM_AC_UXD_D1_RK3
1635#endif
1636 use pm_kind, only: RKG => RK3
1637 type(rngf_type) , intent(in) :: rng
1638 type(uppDia_type) , intent(in) :: subset
1639 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
1640 real(RKG) :: rand(size(chol, 1, IK))
1641 end function
1642#endif
1643
1644#if RK2_ENABLED
1645 impure module function getMNR_RNGF_AM_AC_UXD_D1_RK2(rng, mean, chol, subset) result(rand)
1646#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1647 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGF_AM_AC_UXD_D1_RK2
1648#endif
1649 use pm_kind, only: RKG => RK2
1650 type(rngf_type) , intent(in) :: rng
1651 type(uppDia_type) , intent(in) :: subset
1652 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
1653 real(RKG) :: rand(size(chol, 1, IK))
1654 end function
1655#endif
1656
1657#if RK1_ENABLED
1658 impure module function getMNR_RNGF_AM_AC_UXD_D1_RK1(rng, mean, chol, subset) result(rand)
1659#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1660 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGF_AM_AC_UXD_D1_RK1
1661#endif
1662 use pm_kind, only: RKG => RK1
1663 type(rngf_type) , intent(in) :: rng
1664 type(uppDia_type) , intent(in) :: subset
1665 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
1666 real(RKG) :: rand(size(chol, 1, IK))
1667 end function
1668#endif
1669
1670 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1671
1672#if RK5_ENABLED
1673 impure module function getMNR_RNGF_AM_AC_XLD_D1_RK5(rng, mean, chol, subset) result(rand)
1674#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1675 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGF_AM_AC_XLD_D1_RK5
1676#endif
1677 use pm_kind, only: RKG => RK5
1678 type(rngf_type) , intent(in) :: rng
1679 type(lowDia_type) , intent(in) :: subset
1680 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
1681 real(RKG) :: rand(size(chol, 1, IK))
1682 end function
1683#endif
1684
1685#if RK4_ENABLED
1686 impure module function getMNR_RNGF_AM_AC_XLD_D1_RK4(rng, mean, chol, subset) result(rand)
1687#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1688 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGF_AM_AC_XLD_D1_RK4
1689#endif
1690 use pm_kind, only: RKG => RK4
1691 type(rngf_type) , intent(in) :: rng
1692 type(lowDia_type) , intent(in) :: subset
1693 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
1694 real(RKG) :: rand(size(chol, 1, IK))
1695 end function
1696#endif
1697
1698#if RK3_ENABLED
1699 impure module function getMNR_RNGF_AM_AC_XLD_D1_RK3(rng, mean, chol, subset) result(rand)
1700#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1701 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGF_AM_AC_XLD_D1_RK3
1702#endif
1703 use pm_kind, only: RKG => RK3
1704 type(rngf_type) , intent(in) :: rng
1705 type(lowDia_type) , intent(in) :: subset
1706 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
1707 real(RKG) :: rand(size(chol, 1, IK))
1708 end function
1709#endif
1710
1711#if RK2_ENABLED
1712 impure module function getMNR_RNGF_AM_AC_XLD_D1_RK2(rng, mean, chol, subset) result(rand)
1713#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1714 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGF_AM_AC_XLD_D1_RK2
1715#endif
1716 use pm_kind, only: RKG => RK2
1717 type(rngf_type) , intent(in) :: rng
1718 type(lowDia_type) , intent(in) :: subset
1719 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
1720 real(RKG) :: rand(size(chol, 1, IK))
1721 end function
1722#endif
1723
1724#if RK1_ENABLED
1725 impure module function getMNR_RNGF_AM_AC_XLD_D1_RK1(rng, mean, chol, subset) result(rand)
1726#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1727 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGF_AM_AC_XLD_D1_RK1
1728#endif
1729 use pm_kind, only: RKG => RK1
1730 type(rngf_type) , intent(in) :: rng
1731 type(lowDia_type) , intent(in) :: subset
1732 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
1733 real(RKG) :: rand(size(chol, 1, IK))
1734 end function
1735#endif
1736
1737 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1738
1739 end interface
1740
1741 ! D1 RNGX
1742
1743 interface getMultiNormRand
1744
1745 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1746
1747#if RK5_ENABLED
1748 impure module function getMNR_RNGX_AM_DC_XXX_D1_RK5(rng, mean) result(rand)
1749#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1750 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGX_AM_DC_XXX_D1_RK5
1751#endif
1752 use pm_kind, only: RKG => RK5
1753 type(xoshiro256ssw_type), intent(inout) :: rng
1754 real(RKG) , intent(in) , contiguous :: mean(:)
1755 real(RKG) :: rand(size(mean, 1, IK))
1756 end function
1757#endif
1758
1759#if RK4_ENABLED
1760 impure module function getMNR_RNGX_AM_DC_XXX_D1_RK4(rng, mean) result(rand)
1761#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1762 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGX_AM_DC_XXX_D1_RK4
1763#endif
1764 use pm_kind, only: RKG => RK4
1765 type(xoshiro256ssw_type), intent(inout) :: rng
1766 real(RKG) , intent(in) , contiguous :: mean(:)
1767 real(RKG) :: rand(size(mean, 1, IK))
1768 end function
1769#endif
1770
1771#if RK3_ENABLED
1772 impure module function getMNR_RNGX_AM_DC_XXX_D1_RK3(rng, mean) result(rand)
1773#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1774 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGX_AM_DC_XXX_D1_RK3
1775#endif
1776 use pm_kind, only: RKG => RK3
1777 type(xoshiro256ssw_type), intent(inout) :: rng
1778 real(RKG) , intent(in) , contiguous :: mean(:)
1779 real(RKG) :: rand(size(mean, 1, IK))
1780 end function
1781#endif
1782
1783#if RK2_ENABLED
1784 impure module function getMNR_RNGX_AM_DC_XXX_D1_RK2(rng, mean) result(rand)
1785#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1786 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGX_AM_DC_XXX_D1_RK2
1787#endif
1788 use pm_kind, only: RKG => RK2
1789 type(xoshiro256ssw_type), intent(inout) :: rng
1790 real(RKG) , intent(in) , contiguous :: mean(:)
1791 real(RKG) :: rand(size(mean, 1, IK))
1792 end function
1793#endif
1794
1795#if RK1_ENABLED
1796 impure module function getMNR_RNGX_AM_DC_XXX_D1_RK1(rng, mean) result(rand)
1797#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1798 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGX_AM_DC_XXX_D1_RK1
1799#endif
1800 use pm_kind, only: RKG => RK1
1801 type(xoshiro256ssw_type), intent(inout) :: rng
1802 real(RKG) , intent(in) , contiguous :: mean(:)
1803 real(RKG) :: rand(size(mean, 1, IK))
1804 end function
1805#endif
1806
1807 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1808
1809#if RK5_ENABLED
1810 impure module function getMNR_RNGX_DM_AC_UXD_D1_RK5(rng, chol, subset) result(rand)
1811#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1812 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGX_DM_AC_UXD_D1_RK5
1813#endif
1814 use pm_kind, only: RKG => RK5
1815 type(xoshiro256ssw_type), intent(inout) :: rng
1816 type(uppDia_type) , intent(in) :: subset
1817 real(RKG) , intent(in) , contiguous :: chol(:,:)
1818 real(RKG) :: rand(size(chol, 1, IK))
1819 end function
1820#endif
1821
1822#if RK4_ENABLED
1823 impure module function getMNR_RNGX_DM_AC_UXD_D1_RK4(rng, chol, subset) result(rand)
1824#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1825 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGX_DM_AC_UXD_D1_RK4
1826#endif
1827 use pm_kind, only: RKG => RK4
1828 type(xoshiro256ssw_type), intent(inout) :: rng
1829 type(uppDia_type) , intent(in) :: subset
1830 real(RKG) , intent(in) , contiguous :: chol(:,:)
1831 real(RKG) :: rand(size(chol, 1, IK))
1832 end function
1833#endif
1834
1835#if RK3_ENABLED
1836 impure module function getMNR_RNGX_DM_AC_UXD_D1_RK3(rng, chol, subset) result(rand)
1837#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1838 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGX_DM_AC_UXD_D1_RK3
1839#endif
1840 use pm_kind, only: RKG => RK3
1841 type(xoshiro256ssw_type), intent(inout) :: rng
1842 type(uppDia_type) , intent(in) :: subset
1843 real(RKG) , intent(in) , contiguous :: chol(:,:)
1844 real(RKG) :: rand(size(chol, 1, IK))
1845 end function
1846#endif
1847
1848#if RK2_ENABLED
1849 impure module function getMNR_RNGX_DM_AC_UXD_D1_RK2(rng, chol, subset) result(rand)
1850#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1851 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGX_DM_AC_UXD_D1_RK2
1852#endif
1853 use pm_kind, only: RKG => RK2
1854 type(xoshiro256ssw_type), intent(inout) :: rng
1855 type(uppDia_type) , intent(in) :: subset
1856 real(RKG) , intent(in) , contiguous :: chol(:,:)
1857 real(RKG) :: rand(size(chol, 1, IK))
1858 end function
1859#endif
1860
1861#if RK1_ENABLED
1862 impure module function getMNR_RNGX_DM_AC_UXD_D1_RK1(rng, chol, subset) result(rand)
1863#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1864 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGX_DM_AC_UXD_D1_RK1
1865#endif
1866 use pm_kind, only: RKG => RK1
1867 type(xoshiro256ssw_type), intent(inout) :: rng
1868 type(uppDia_type) , intent(in) :: subset
1869 real(RKG) , intent(in) , contiguous :: chol(:,:)
1870 real(RKG) :: rand(size(chol, 1, IK))
1871 end function
1872#endif
1873
1874 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1875
1876#if RK5_ENABLED
1877 impure module function getMNR_RNGX_DM_AC_XLD_D1_RK5(rng, chol, subset) result(rand)
1878#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1879 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGX_DM_AC_XLD_D1_RK5
1880#endif
1881 use pm_kind, only: RKG => RK5
1882 type(xoshiro256ssw_type), intent(inout) :: rng
1883 type(lowDia_type) , intent(in) :: subset
1884 real(RKG) , intent(in) , contiguous :: chol(:,:)
1885 real(RKG) :: rand(size(chol, 1, IK))
1886 end function
1887#endif
1888
1889#if RK4_ENABLED
1890 impure module function getMNR_RNGX_DM_AC_XLD_D1_RK4(rng, chol, subset) result(rand)
1891#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1892 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGX_DM_AC_XLD_D1_RK4
1893#endif
1894 use pm_kind, only: RKG => RK4
1895 type(xoshiro256ssw_type), intent(inout) :: rng
1896 type(lowDia_type) , intent(in) :: subset
1897 real(RKG) , intent(in) , contiguous :: chol(:,:)
1898 real(RKG) :: rand(size(chol, 1, IK))
1899 end function
1900#endif
1901
1902#if RK3_ENABLED
1903 impure module function getMNR_RNGX_DM_AC_XLD_D1_RK3(rng, chol, subset) result(rand)
1904#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1905 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGX_DM_AC_XLD_D1_RK3
1906#endif
1907 use pm_kind, only: RKG => RK3
1908 type(xoshiro256ssw_type), intent(inout) :: rng
1909 type(lowDia_type) , intent(in) :: subset
1910 real(RKG) , intent(in) , contiguous :: chol(:,:)
1911 real(RKG) :: rand(size(chol, 1, IK))
1912 end function
1913#endif
1914
1915#if RK2_ENABLED
1916 impure module function getMNR_RNGX_DM_AC_XLD_D1_RK2(rng, chol, subset) result(rand)
1917#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1918 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGX_DM_AC_XLD_D1_RK2
1919#endif
1920 use pm_kind, only: RKG => RK2
1921 type(xoshiro256ssw_type), intent(inout) :: rng
1922 type(lowDia_type) , intent(in) :: subset
1923 real(RKG) , intent(in) , contiguous :: chol(:,:)
1924 real(RKG) :: rand(size(chol, 1, IK))
1925 end function
1926#endif
1927
1928#if RK1_ENABLED
1929 impure module function getMNR_RNGX_DM_AC_XLD_D1_RK1(rng, chol, subset) result(rand)
1930#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1931 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGX_DM_AC_XLD_D1_RK1
1932#endif
1933 use pm_kind, only: RKG => RK1
1934 type(xoshiro256ssw_type), intent(inout) :: rng
1935 type(lowDia_type) , intent(in) :: subset
1936 real(RKG) , intent(in) , contiguous :: chol(:,:)
1937 real(RKG) :: rand(size(chol, 1, IK))
1938 end function
1939#endif
1940
1941 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1942
1943#if RK5_ENABLED
1944 impure module function getMNR_RNGX_AM_AC_UXD_D1_RK5(rng, mean, chol, subset) result(rand)
1945#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1946 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGX_AM_AC_UXD_D1_RK5
1947#endif
1948 use pm_kind, only: RKG => RK5
1949 type(xoshiro256ssw_type), intent(inout) :: rng
1950 type(uppDia_type) , intent(in) :: subset
1951 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
1952 real(RKG) :: rand(size(chol, 1, IK))
1953 end function
1954#endif
1955
1956#if RK4_ENABLED
1957 impure module function getMNR_RNGX_AM_AC_UXD_D1_RK4(rng, mean, chol, subset) result(rand)
1958#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1959 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGX_AM_AC_UXD_D1_RK4
1960#endif
1961 use pm_kind, only: RKG => RK4
1962 type(xoshiro256ssw_type), intent(inout) :: rng
1963 type(uppDia_type) , intent(in) :: subset
1964 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
1965 real(RKG) :: rand(size(chol, 1, IK))
1966 end function
1967#endif
1968
1969#if RK3_ENABLED
1970 impure module function getMNR_RNGX_AM_AC_UXD_D1_RK3(rng, mean, chol, subset) result(rand)
1971#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1972 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGX_AM_AC_UXD_D1_RK3
1973#endif
1974 use pm_kind, only: RKG => RK3
1975 type(xoshiro256ssw_type), intent(inout) :: rng
1976 type(uppDia_type) , intent(in) :: subset
1977 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
1978 real(RKG) :: rand(size(chol, 1, IK))
1979 end function
1980#endif
1981
1982#if RK2_ENABLED
1983 impure module function getMNR_RNGX_AM_AC_UXD_D1_RK2(rng, mean, chol, subset) result(rand)
1984#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1985 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGX_AM_AC_UXD_D1_RK2
1986#endif
1987 use pm_kind, only: RKG => RK2
1988 type(xoshiro256ssw_type), intent(inout) :: rng
1989 type(uppDia_type) , intent(in) :: subset
1990 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
1991 real(RKG) :: rand(size(chol, 1, IK))
1992 end function
1993#endif
1994
1995#if RK1_ENABLED
1996 impure module function getMNR_RNGX_AM_AC_UXD_D1_RK1(rng, mean, chol, subset) result(rand)
1997#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1998 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGX_AM_AC_UXD_D1_RK1
1999#endif
2000 use pm_kind, only: RKG => RK1
2001 type(xoshiro256ssw_type), intent(inout) :: rng
2002 type(uppDia_type) , intent(in) :: subset
2003 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
2004 real(RKG) :: rand(size(chol, 1, IK))
2005 end function
2006#endif
2007
2008 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2009
2010#if RK5_ENABLED
2011 impure module function getMNR_RNGX_AM_AC_XLD_D1_RK5(rng, mean, chol, subset) result(rand)
2012#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2013 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGX_AM_AC_XLD_D1_RK5
2014#endif
2015 use pm_kind, only: RKG => RK5
2016 type(xoshiro256ssw_type), intent(inout) :: rng
2017 type(lowDia_type) , intent(in) :: subset
2018 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
2019 real(RKG) :: rand(size(chol, 1, IK))
2020 end function
2021#endif
2022
2023#if RK4_ENABLED
2024 impure module function getMNR_RNGX_AM_AC_XLD_D1_RK4(rng, mean, chol, subset) result(rand)
2025#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2026 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGX_AM_AC_XLD_D1_RK4
2027#endif
2028 use pm_kind, only: RKG => RK4
2029 type(xoshiro256ssw_type), intent(inout) :: rng
2030 type(lowDia_type) , intent(in) :: subset
2031 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
2032 real(RKG) :: rand(size(chol, 1, IK))
2033 end function
2034#endif
2035
2036#if RK3_ENABLED
2037 impure module function getMNR_RNGX_AM_AC_XLD_D1_RK3(rng, mean, chol, subset) result(rand)
2038#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2039 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGX_AM_AC_XLD_D1_RK3
2040#endif
2041 use pm_kind, only: RKG => RK3
2042 type(xoshiro256ssw_type), intent(inout) :: rng
2043 type(lowDia_type) , intent(in) :: subset
2044 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
2045 real(RKG) :: rand(size(chol, 1, IK))
2046 end function
2047#endif
2048
2049#if RK2_ENABLED
2050 impure module function getMNR_RNGX_AM_AC_XLD_D1_RK2(rng, mean, chol, subset) result(rand)
2051#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2052 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGX_AM_AC_XLD_D1_RK2
2053#endif
2054 use pm_kind, only: RKG => RK2
2055 type(xoshiro256ssw_type), intent(inout) :: rng
2056 type(lowDia_type) , intent(in) :: subset
2057 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
2058 real(RKG) :: rand(size(chol, 1, IK))
2059 end function
2060#endif
2061
2062#if RK1_ENABLED
2063 impure module function getMNR_RNGX_AM_AC_XLD_D1_RK1(rng, mean, chol, subset) result(rand)
2064#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2065 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGX_AM_AC_XLD_D1_RK1
2066#endif
2067 use pm_kind, only: RKG => RK1
2068 type(xoshiro256ssw_type), intent(inout) :: rng
2069 type(lowDia_type) , intent(in) :: subset
2070 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
2071 real(RKG) :: rand(size(chol, 1, IK))
2072 end function
2073#endif
2074
2075 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2076
2077 end interface
2078
2079 ! D2 RNGD
2080
2081 interface getMultiNormRand
2082
2083 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2084
2085#if RK5_ENABLED
2086 impure module function getMNR_RNGD_AM_DC_XXX_D2_RK5(mean, nsam) result(rand)
2087#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2088 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGD_AM_DC_XXX_D2_RK5
2089#endif
2090 use pm_kind, only: RKG => RK5
2091 integer(IK) , intent(in) :: nsam
2092 real(RKG) , intent(in) , contiguous :: mean(:)
2093 real(RKG) :: rand(size(mean, 1, IK), nsam)
2094 end function
2095#endif
2096
2097#if RK4_ENABLED
2098 impure module function getMNR_RNGD_AM_DC_XXX_D2_RK4(mean, nsam) result(rand)
2099#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2100 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGD_AM_DC_XXX_D2_RK4
2101#endif
2102 use pm_kind, only: RKG => RK4
2103 integer(IK) , intent(in) :: nsam
2104 real(RKG) , intent(in) , contiguous :: mean(:)
2105 real(RKG) :: rand(size(mean, 1, IK), nsam)
2106 end function
2107#endif
2108
2109#if RK3_ENABLED
2110 impure module function getMNR_RNGD_AM_DC_XXX_D2_RK3(mean, nsam) result(rand)
2111#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2112 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGD_AM_DC_XXX_D2_RK3
2113#endif
2114 use pm_kind, only: RKG => RK3
2115 integer(IK) , intent(in) :: nsam
2116 real(RKG) , intent(in) , contiguous :: mean(:)
2117 real(RKG) :: rand(size(mean, 1, IK), nsam)
2118 end function
2119#endif
2120
2121#if RK2_ENABLED
2122 impure module function getMNR_RNGD_AM_DC_XXX_D2_RK2(mean, nsam) result(rand)
2123#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2124 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGD_AM_DC_XXX_D2_RK2
2125#endif
2126 use pm_kind, only: RKG => RK2
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 RK1_ENABLED
2134 impure module function getMNR_RNGD_AM_DC_XXX_D2_RK1(mean, nsam) result(rand)
2135#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2136 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGD_AM_DC_XXX_D2_RK1
2137#endif
2138 use pm_kind, only: RKG => RK1
2139 integer(IK) , intent(in) :: nsam
2140 real(RKG) , intent(in) , contiguous :: mean(:)
2141 real(RKG) :: rand(size(mean, 1, IK), nsam)
2142 end function
2143#endif
2144
2145 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2146
2147#if RK5_ENABLED
2148 impure module function getMNR_RNGD_DM_AC_UXD_D2_RK5(chol, subset, nsam) result(rand)
2149#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2150 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGD_DM_AC_UXD_D2_RK5
2151#endif
2152 use pm_kind, only: RKG => RK5
2153 integer(IK) , intent(in) :: nsam
2154 type(uppDia_type) , intent(in) :: subset
2155 real(RKG) , intent(in) , contiguous :: chol(:,:)
2156 real(RKG) :: rand(size(chol, 1, IK), nsam)
2157 end function
2158#endif
2159
2160#if RK4_ENABLED
2161 impure module function getMNR_RNGD_DM_AC_UXD_D2_RK4(chol, subset, nsam) result(rand)
2162#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2163 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGD_DM_AC_UXD_D2_RK4
2164#endif
2165 use pm_kind, only: RKG => RK4
2166 integer(IK) , intent(in) :: nsam
2167 type(uppDia_type) , intent(in) :: subset
2168 real(RKG) , intent(in) , contiguous :: chol(:,:)
2169 real(RKG) :: rand(size(chol, 1, IK), nsam)
2170 end function
2171#endif
2172
2173#if RK3_ENABLED
2174 impure module function getMNR_RNGD_DM_AC_UXD_D2_RK3(chol, subset, nsam) result(rand)
2175#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2176 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGD_DM_AC_UXD_D2_RK3
2177#endif
2178 use pm_kind, only: RKG => RK3
2179 integer(IK) , intent(in) :: nsam
2180 type(uppDia_type) , intent(in) :: subset
2181 real(RKG) , intent(in) , contiguous :: chol(:,:)
2182 real(RKG) :: rand(size(chol, 1, IK), nsam)
2183 end function
2184#endif
2185
2186#if RK2_ENABLED
2187 impure module function getMNR_RNGD_DM_AC_UXD_D2_RK2(chol, subset, nsam) result(rand)
2188#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2189 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGD_DM_AC_UXD_D2_RK2
2190#endif
2191 use pm_kind, only: RKG => RK2
2192 integer(IK) , intent(in) :: nsam
2193 type(uppDia_type) , intent(in) :: subset
2194 real(RKG) , intent(in) , contiguous :: chol(:,:)
2195 real(RKG) :: rand(size(chol, 1, IK), nsam)
2196 end function
2197#endif
2198
2199#if RK1_ENABLED
2200 impure module function getMNR_RNGD_DM_AC_UXD_D2_RK1(chol, subset, nsam) result(rand)
2201#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2202 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGD_DM_AC_UXD_D2_RK1
2203#endif
2204 use pm_kind, only: RKG => RK1
2205 integer(IK) , intent(in) :: nsam
2206 type(uppDia_type) , intent(in) :: subset
2207 real(RKG) , intent(in) , contiguous :: chol(:,:)
2208 real(RKG) :: rand(size(chol, 1, IK), nsam)
2209 end function
2210#endif
2211
2212 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2213
2214#if RK5_ENABLED
2215 impure module function getMNR_RNGD_DM_AC_XLD_D2_RK5(chol, subset, nsam) result(rand)
2216#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2217 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGD_DM_AC_XLD_D2_RK5
2218#endif
2219 use pm_kind, only: RKG => RK5
2220 integer(IK) , intent(in) :: nsam
2221 type(lowDia_type) , intent(in) :: subset
2222 real(RKG) , intent(in) , contiguous :: chol(:,:)
2223 real(RKG) :: rand(size(chol, 1, IK), nsam)
2224 end function
2225#endif
2226
2227#if RK4_ENABLED
2228 impure module function getMNR_RNGD_DM_AC_XLD_D2_RK4(chol, subset, nsam) result(rand)
2229#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2230 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGD_DM_AC_XLD_D2_RK4
2231#endif
2232 use pm_kind, only: RKG => RK4
2233 integer(IK) , intent(in) :: nsam
2234 type(lowDia_type) , intent(in) :: subset
2235 real(RKG) , intent(in) , contiguous :: chol(:,:)
2236 real(RKG) :: rand(size(chol, 1, IK), nsam)
2237 end function
2238#endif
2239
2240#if RK3_ENABLED
2241 impure module function getMNR_RNGD_DM_AC_XLD_D2_RK3(chol, subset, nsam) result(rand)
2242#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2243 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGD_DM_AC_XLD_D2_RK3
2244#endif
2245 use pm_kind, only: RKG => RK3
2246 integer(IK) , intent(in) :: nsam
2247 type(lowDia_type) , intent(in) :: subset
2248 real(RKG) , intent(in) , contiguous :: chol(:,:)
2249 real(RKG) :: rand(size(chol, 1, IK), nsam)
2250 end function
2251#endif
2252
2253#if RK2_ENABLED
2254 impure module function getMNR_RNGD_DM_AC_XLD_D2_RK2(chol, subset, nsam) result(rand)
2255#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2256 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGD_DM_AC_XLD_D2_RK2
2257#endif
2258 use pm_kind, only: RKG => RK2
2259 integer(IK) , intent(in) :: nsam
2260 type(lowDia_type) , intent(in) :: subset
2261 real(RKG) , intent(in) , contiguous :: chol(:,:)
2262 real(RKG) :: rand(size(chol, 1, IK), nsam)
2263 end function
2264#endif
2265
2266#if RK1_ENABLED
2267 impure module function getMNR_RNGD_DM_AC_XLD_D2_RK1(chol, subset, nsam) result(rand)
2268#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2269 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGD_DM_AC_XLD_D2_RK1
2270#endif
2271 use pm_kind, only: RKG => RK1
2272 integer(IK) , intent(in) :: nsam
2273 type(lowDia_type) , intent(in) :: subset
2274 real(RKG) , intent(in) , contiguous :: chol(:,:)
2275 real(RKG) :: rand(size(chol, 1, IK), nsam)
2276 end function
2277#endif
2278
2279 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2280
2281#if RK5_ENABLED
2282 impure module function getMNR_RNGD_AM_AC_UXD_D2_RK5(mean, chol, subset, nsam) result(rand)
2283#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2284 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGD_AM_AC_UXD_D2_RK5
2285#endif
2286 use pm_kind, only: RKG => RK5
2287 integer(IK) , intent(in) :: nsam
2288 type(uppDia_type) , intent(in) :: subset
2289 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
2290 real(RKG) :: rand(size(chol, 1, IK), nsam)
2291 end function
2292#endif
2293
2294#if RK4_ENABLED
2295 impure module function getMNR_RNGD_AM_AC_UXD_D2_RK4(mean, chol, subset, nsam) result(rand)
2296#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2297 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGD_AM_AC_UXD_D2_RK4
2298#endif
2299 use pm_kind, only: RKG => RK4
2300 integer(IK) , intent(in) :: nsam
2301 type(uppDia_type) , intent(in) :: subset
2302 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
2303 real(RKG) :: rand(size(chol, 1, IK), nsam)
2304 end function
2305#endif
2306
2307#if RK3_ENABLED
2308 impure module function getMNR_RNGD_AM_AC_UXD_D2_RK3(mean, chol, subset, nsam) result(rand)
2309#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2310 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGD_AM_AC_UXD_D2_RK3
2311#endif
2312 use pm_kind, only: RKG => RK3
2313 integer(IK) , intent(in) :: nsam
2314 type(uppDia_type) , intent(in) :: subset
2315 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
2316 real(RKG) :: rand(size(chol, 1, IK), nsam)
2317 end function
2318#endif
2319
2320#if RK2_ENABLED
2321 impure module function getMNR_RNGD_AM_AC_UXD_D2_RK2(mean, chol, subset, nsam) result(rand)
2322#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2323 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGD_AM_AC_UXD_D2_RK2
2324#endif
2325 use pm_kind, only: RKG => RK2
2326 integer(IK) , intent(in) :: nsam
2327 type(uppDia_type) , intent(in) :: subset
2328 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
2329 real(RKG) :: rand(size(chol, 1, IK), nsam)
2330 end function
2331#endif
2332
2333#if RK1_ENABLED
2334 impure module function getMNR_RNGD_AM_AC_UXD_D2_RK1(mean, chol, subset, nsam) result(rand)
2335#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2336 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGD_AM_AC_UXD_D2_RK1
2337#endif
2338 use pm_kind, only: RKG => RK1
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 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2347
2348#if RK5_ENABLED
2349 impure module function getMNR_RNGD_AM_AC_XLD_D2_RK5(mean, chol, subset, nsam) result(rand)
2350#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2351 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGD_AM_AC_XLD_D2_RK5
2352#endif
2353 use pm_kind, only: RKG => RK5
2354 integer(IK) , intent(in) :: nsam
2355 type(lowDia_type) , intent(in) :: subset
2356 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
2357 real(RKG) :: rand(size(chol, 1, IK), nsam)
2358 end function
2359#endif
2360
2361#if RK4_ENABLED
2362 impure module function getMNR_RNGD_AM_AC_XLD_D2_RK4(mean, chol, subset, nsam) result(rand)
2363#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2364 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGD_AM_AC_XLD_D2_RK4
2365#endif
2366 use pm_kind, only: RKG => RK4
2367 integer(IK) , intent(in) :: nsam
2368 type(lowDia_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 RK3_ENABLED
2375 impure module function getMNR_RNGD_AM_AC_XLD_D2_RK3(mean, chol, subset, nsam) result(rand)
2376#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2377 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGD_AM_AC_XLD_D2_RK3
2378#endif
2379 use pm_kind, only: RKG => RK3
2380 integer(IK) , intent(in) :: nsam
2381 type(lowDia_type) , intent(in) :: subset
2382 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
2383 real(RKG) :: rand(size(chol, 1, IK), nsam)
2384 end function
2385#endif
2386
2387#if RK2_ENABLED
2388 impure module function getMNR_RNGD_AM_AC_XLD_D2_RK2(mean, chol, subset, nsam) result(rand)
2389#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2390 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGD_AM_AC_XLD_D2_RK2
2391#endif
2392 use pm_kind, only: RKG => RK2
2393 integer(IK) , intent(in) :: nsam
2394 type(lowDia_type) , intent(in) :: subset
2395 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
2396 real(RKG) :: rand(size(chol, 1, IK), nsam)
2397 end function
2398#endif
2399
2400#if RK1_ENABLED
2401 impure module function getMNR_RNGD_AM_AC_XLD_D2_RK1(mean, chol, subset, nsam) result(rand)
2402#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2403 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGD_AM_AC_XLD_D2_RK1
2404#endif
2405 use pm_kind, only: RKG => RK1
2406 integer(IK) , intent(in) :: nsam
2407 type(lowDia_type) , intent(in) :: subset
2408 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
2409 real(RKG) :: rand(size(chol, 1, IK), nsam)
2410 end function
2411#endif
2412
2413 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2414
2415 end interface
2416
2417 ! D2 RNGF
2418
2419 interface getMultiNormRand
2420
2421 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2422
2423#if RK5_ENABLED
2424 impure module function getMNR_RNGF_AM_DC_XXX_D2_RK5(rng, mean, nsam) result(rand)
2425#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2426 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGF_AM_DC_XXX_D2_RK5
2427#endif
2428 use pm_kind, only: RKG => RK5
2429 type(rngf_type) , intent(in) :: rng
2430 integer(IK) , intent(in) :: nsam
2431 real(RKG) , intent(in) , contiguous :: mean(:)
2432 real(RKG) :: rand(size(mean, 1, IK), nsam)
2433 end function
2434#endif
2435
2436#if RK4_ENABLED
2437 impure module function getMNR_RNGF_AM_DC_XXX_D2_RK4(rng, mean, nsam) result(rand)
2438#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2439 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGF_AM_DC_XXX_D2_RK4
2440#endif
2441 use pm_kind, only: RKG => RK4
2442 type(rngf_type) , intent(in) :: rng
2443 integer(IK) , intent(in) :: nsam
2444 real(RKG) , intent(in) , contiguous :: mean(:)
2445 real(RKG) :: rand(size(mean, 1, IK), nsam)
2446 end function
2447#endif
2448
2449#if RK3_ENABLED
2450 impure module function getMNR_RNGF_AM_DC_XXX_D2_RK3(rng, mean, nsam) result(rand)
2451#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2452 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGF_AM_DC_XXX_D2_RK3
2453#endif
2454 use pm_kind, only: RKG => RK3
2455 type(rngf_type) , intent(in) :: rng
2456 integer(IK) , intent(in) :: nsam
2457 real(RKG) , intent(in) , contiguous :: mean(:)
2458 real(RKG) :: rand(size(mean, 1, IK), nsam)
2459 end function
2460#endif
2461
2462#if RK2_ENABLED
2463 impure module function getMNR_RNGF_AM_DC_XXX_D2_RK2(rng, mean, nsam) result(rand)
2464#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2465 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGF_AM_DC_XXX_D2_RK2
2466#endif
2467 use pm_kind, only: RKG => RK2
2468 type(rngf_type) , intent(in) :: rng
2469 integer(IK) , intent(in) :: nsam
2470 real(RKG) , intent(in) , contiguous :: mean(:)
2471 real(RKG) :: rand(size(mean, 1, IK), nsam)
2472 end function
2473#endif
2474
2475#if RK1_ENABLED
2476 impure module function getMNR_RNGF_AM_DC_XXX_D2_RK1(rng, mean, nsam) result(rand)
2477#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2478 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGF_AM_DC_XXX_D2_RK1
2479#endif
2480 use pm_kind, only: RKG => RK1
2481 type(rngf_type) , intent(in) :: rng
2482 integer(IK) , intent(in) :: nsam
2483 real(RKG) , intent(in) , contiguous :: mean(:)
2484 real(RKG) :: rand(size(mean, 1, IK), nsam)
2485 end function
2486#endif
2487
2488 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2489
2490#if RK5_ENABLED
2491 impure module function getMNR_RNGF_DM_AC_UXD_D2_RK5(rng, chol, subset, nsam) result(rand)
2492#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2493 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGF_DM_AC_UXD_D2_RK5
2494#endif
2495 use pm_kind, only: RKG => RK5
2496 type(rngf_type) , intent(in) :: rng
2497 integer(IK) , intent(in) :: nsam
2498 type(uppDia_type) , intent(in) :: subset
2499 real(RKG) , intent(in) , contiguous :: chol(:,:)
2500 real(RKG) :: rand(size(chol, 1, IK), nsam)
2501 end function
2502#endif
2503
2504#if RK4_ENABLED
2505 impure module function getMNR_RNGF_DM_AC_UXD_D2_RK4(rng, chol, subset, nsam) result(rand)
2506#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2507 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGF_DM_AC_UXD_D2_RK4
2508#endif
2509 use pm_kind, only: RKG => RK4
2510 type(rngf_type) , intent(in) :: rng
2511 integer(IK) , intent(in) :: nsam
2512 type(uppDia_type) , intent(in) :: subset
2513 real(RKG) , intent(in) , contiguous :: chol(:,:)
2514 real(RKG) :: rand(size(chol, 1, IK), nsam)
2515 end function
2516#endif
2517
2518#if RK3_ENABLED
2519 impure module function getMNR_RNGF_DM_AC_UXD_D2_RK3(rng, chol, subset, nsam) result(rand)
2520#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2521 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGF_DM_AC_UXD_D2_RK3
2522#endif
2523 use pm_kind, only: RKG => RK3
2524 type(rngf_type) , intent(in) :: rng
2525 integer(IK) , intent(in) :: nsam
2526 type(uppDia_type) , intent(in) :: subset
2527 real(RKG) , intent(in) , contiguous :: chol(:,:)
2528 real(RKG) :: rand(size(chol, 1, IK), nsam)
2529 end function
2530#endif
2531
2532#if RK2_ENABLED
2533 impure module function getMNR_RNGF_DM_AC_UXD_D2_RK2(rng, chol, subset, nsam) result(rand)
2534#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2535 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGF_DM_AC_UXD_D2_RK2
2536#endif
2537 use pm_kind, only: RKG => RK2
2538 type(rngf_type) , intent(in) :: rng
2539 integer(IK) , intent(in) :: nsam
2540 type(uppDia_type) , intent(in) :: subset
2541 real(RKG) , intent(in) , contiguous :: chol(:,:)
2542 real(RKG) :: rand(size(chol, 1, IK), nsam)
2543 end function
2544#endif
2545
2546#if RK1_ENABLED
2547 impure module function getMNR_RNGF_DM_AC_UXD_D2_RK1(rng, chol, subset, nsam) result(rand)
2548#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2549 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGF_DM_AC_UXD_D2_RK1
2550#endif
2551 use pm_kind, only: RKG => RK1
2552 type(rngf_type) , intent(in) :: rng
2553 integer(IK) , intent(in) :: nsam
2554 type(uppDia_type) , intent(in) :: subset
2555 real(RKG) , intent(in) , contiguous :: chol(:,:)
2556 real(RKG) :: rand(size(chol, 1, IK), nsam)
2557 end function
2558#endif
2559
2560 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2561
2562#if RK5_ENABLED
2563 impure module function getMNR_RNGF_DM_AC_XLD_D2_RK5(rng, chol, subset, nsam) result(rand)
2564#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2565 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGF_DM_AC_XLD_D2_RK5
2566#endif
2567 use pm_kind, only: RKG => RK5
2568 type(rngf_type) , intent(in) :: rng
2569 integer(IK) , intent(in) :: nsam
2570 type(lowDia_type) , intent(in) :: subset
2571 real(RKG) , intent(in) , contiguous :: chol(:,:)
2572 real(RKG) :: rand(size(chol, 1, IK), nsam)
2573 end function
2574#endif
2575
2576#if RK4_ENABLED
2577 impure module function getMNR_RNGF_DM_AC_XLD_D2_RK4(rng, chol, subset, nsam) result(rand)
2578#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2579 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGF_DM_AC_XLD_D2_RK4
2580#endif
2581 use pm_kind, only: RKG => RK4
2582 type(rngf_type) , intent(in) :: rng
2583 integer(IK) , intent(in) :: nsam
2584 type(lowDia_type) , intent(in) :: subset
2585 real(RKG) , intent(in) , contiguous :: chol(:,:)
2586 real(RKG) :: rand(size(chol, 1, IK), nsam)
2587 end function
2588#endif
2589
2590#if RK3_ENABLED
2591 impure module function getMNR_RNGF_DM_AC_XLD_D2_RK3(rng, chol, subset, nsam) result(rand)
2592#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2593 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGF_DM_AC_XLD_D2_RK3
2594#endif
2595 use pm_kind, only: RKG => RK3
2596 type(rngf_type) , intent(in) :: rng
2597 integer(IK) , intent(in) :: nsam
2598 type(lowDia_type) , intent(in) :: subset
2599 real(RKG) , intent(in) , contiguous :: chol(:,:)
2600 real(RKG) :: rand(size(chol, 1, IK), nsam)
2601 end function
2602#endif
2603
2604#if RK2_ENABLED
2605 impure module function getMNR_RNGF_DM_AC_XLD_D2_RK2(rng, chol, subset, nsam) result(rand)
2606#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2607 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGF_DM_AC_XLD_D2_RK2
2608#endif
2609 use pm_kind, only: RKG => RK2
2610 type(rngf_type) , intent(in) :: rng
2611 integer(IK) , intent(in) :: nsam
2612 type(lowDia_type) , intent(in) :: subset
2613 real(RKG) , intent(in) , contiguous :: chol(:,:)
2614 real(RKG) :: rand(size(chol, 1, IK), nsam)
2615 end function
2616#endif
2617
2618#if RK1_ENABLED
2619 impure module function getMNR_RNGF_DM_AC_XLD_D2_RK1(rng, chol, subset, nsam) result(rand)
2620#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2621 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGF_DM_AC_XLD_D2_RK1
2622#endif
2623 use pm_kind, only: RKG => RK1
2624 type(rngf_type) , intent(in) :: rng
2625 integer(IK) , intent(in) :: nsam
2626 type(lowDia_type) , intent(in) :: subset
2627 real(RKG) , intent(in) , contiguous :: chol(:,:)
2628 real(RKG) :: rand(size(chol, 1, IK), nsam)
2629 end function
2630#endif
2631
2632 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2633
2634#if RK5_ENABLED
2635 impure module function getMNR_RNGF_AM_AC_UXD_D2_RK5(rng, mean, chol, subset, nsam) result(rand)
2636#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2637 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGF_AM_AC_UXD_D2_RK5
2638#endif
2639 use pm_kind, only: RKG => RK5
2640 type(rngf_type) , intent(in) :: rng
2641 integer(IK) , intent(in) :: nsam
2642 type(uppDia_type) , intent(in) :: subset
2643 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
2644 real(RKG) :: rand(size(chol, 1, IK), nsam)
2645 end function
2646#endif
2647
2648#if RK4_ENABLED
2649 impure module function getMNR_RNGF_AM_AC_UXD_D2_RK4(rng, mean, chol, subset, nsam) result(rand)
2650#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2651 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGF_AM_AC_UXD_D2_RK4
2652#endif
2653 use pm_kind, only: RKG => RK4
2654 type(rngf_type) , intent(in) :: rng
2655 integer(IK) , intent(in) :: nsam
2656 type(uppDia_type) , intent(in) :: subset
2657 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
2658 real(RKG) :: rand(size(chol, 1, IK), nsam)
2659 end function
2660#endif
2661
2662#if RK3_ENABLED
2663 impure module function getMNR_RNGF_AM_AC_UXD_D2_RK3(rng, mean, chol, subset, nsam) result(rand)
2664#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2665 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGF_AM_AC_UXD_D2_RK3
2666#endif
2667 use pm_kind, only: RKG => RK3
2668 type(rngf_type) , intent(in) :: rng
2669 integer(IK) , intent(in) :: nsam
2670 type(uppDia_type) , intent(in) :: subset
2671 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
2672 real(RKG) :: rand(size(chol, 1, IK), nsam)
2673 end function
2674#endif
2675
2676#if RK2_ENABLED
2677 impure module function getMNR_RNGF_AM_AC_UXD_D2_RK2(rng, mean, chol, subset, nsam) result(rand)
2678#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2679 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGF_AM_AC_UXD_D2_RK2
2680#endif
2681 use pm_kind, only: RKG => RK2
2682 type(rngf_type) , intent(in) :: rng
2683 integer(IK) , intent(in) :: nsam
2684 type(uppDia_type) , intent(in) :: subset
2685 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
2686 real(RKG) :: rand(size(chol, 1, IK), nsam)
2687 end function
2688#endif
2689
2690#if RK1_ENABLED
2691 impure module function getMNR_RNGF_AM_AC_UXD_D2_RK1(rng, mean, chol, subset, nsam) result(rand)
2692#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2693 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGF_AM_AC_UXD_D2_RK1
2694#endif
2695 use pm_kind, only: RKG => RK1
2696 type(rngf_type) , intent(in) :: rng
2697 integer(IK) , intent(in) :: nsam
2698 type(uppDia_type) , intent(in) :: subset
2699 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
2700 real(RKG) :: rand(size(chol, 1, IK), nsam)
2701 end function
2702#endif
2703
2704 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2705
2706#if RK5_ENABLED
2707 impure module function getMNR_RNGF_AM_AC_XLD_D2_RK5(rng, mean, chol, subset, nsam) result(rand)
2708#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2709 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGF_AM_AC_XLD_D2_RK5
2710#endif
2711 use pm_kind, only: RKG => RK5
2712 type(rngf_type) , intent(in) :: rng
2713 integer(IK) , intent(in) :: nsam
2714 type(lowDia_type) , intent(in) :: subset
2715 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
2716 real(RKG) :: rand(size(chol, 1, IK), nsam)
2717 end function
2718#endif
2719
2720#if RK4_ENABLED
2721 impure module function getMNR_RNGF_AM_AC_XLD_D2_RK4(rng, mean, chol, subset, nsam) result(rand)
2722#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2723 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGF_AM_AC_XLD_D2_RK4
2724#endif
2725 use pm_kind, only: RKG => RK4
2726 type(rngf_type) , intent(in) :: rng
2727 integer(IK) , intent(in) :: nsam
2728 type(lowDia_type) , intent(in) :: subset
2729 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
2730 real(RKG) :: rand(size(chol, 1, IK), nsam)
2731 end function
2732#endif
2733
2734#if RK3_ENABLED
2735 impure module function getMNR_RNGF_AM_AC_XLD_D2_RK3(rng, mean, chol, subset, nsam) result(rand)
2736#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2737 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGF_AM_AC_XLD_D2_RK3
2738#endif
2739 use pm_kind, only: RKG => RK3
2740 type(rngf_type) , intent(in) :: rng
2741 integer(IK) , intent(in) :: nsam
2742 type(lowDia_type) , intent(in) :: subset
2743 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
2744 real(RKG) :: rand(size(chol, 1, IK), nsam)
2745 end function
2746#endif
2747
2748#if RK2_ENABLED
2749 impure module function getMNR_RNGF_AM_AC_XLD_D2_RK2(rng, mean, chol, subset, nsam) result(rand)
2750#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2751 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGF_AM_AC_XLD_D2_RK2
2752#endif
2753 use pm_kind, only: RKG => RK2
2754 type(rngf_type) , intent(in) :: rng
2755 integer(IK) , intent(in) :: nsam
2756 type(lowDia_type) , intent(in) :: subset
2757 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
2758 real(RKG) :: rand(size(chol, 1, IK), nsam)
2759 end function
2760#endif
2761
2762#if RK1_ENABLED
2763 impure module function getMNR_RNGF_AM_AC_XLD_D2_RK1(rng, mean, chol, subset, nsam) result(rand)
2764#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2765 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGF_AM_AC_XLD_D2_RK1
2766#endif
2767 use pm_kind, only: RKG => RK1
2768 type(rngf_type) , intent(in) :: rng
2769 integer(IK) , intent(in) :: nsam
2770 type(lowDia_type) , intent(in) :: subset
2771 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
2772 real(RKG) :: rand(size(chol, 1, IK), nsam)
2773 end function
2774#endif
2775
2776 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2777
2778 end interface
2779
2780 ! D2 RNGX
2781
2782 interface getMultiNormRand
2783
2784 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2785
2786#if RK5_ENABLED
2787 impure module function getMNR_RNGX_AM_DC_XXX_D2_RK5(rng, mean, nsam) result(rand)
2788#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2789 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGX_AM_DC_XXX_D2_RK5
2790#endif
2791 use pm_kind, only: RKG => RK5
2792 type(xoshiro256ssw_type), intent(inout) :: rng
2793 integer(IK) , intent(in) :: nsam
2794 real(RKG) , intent(in) , contiguous :: mean(:)
2795 real(RKG) :: rand(size(mean, 1, IK), nsam)
2796 end function
2797#endif
2798
2799#if RK4_ENABLED
2800 impure module function getMNR_RNGX_AM_DC_XXX_D2_RK4(rng, mean, nsam) result(rand)
2801#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2802 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGX_AM_DC_XXX_D2_RK4
2803#endif
2804 use pm_kind, only: RKG => RK4
2805 type(xoshiro256ssw_type), intent(inout) :: rng
2806 integer(IK) , intent(in) :: nsam
2807 real(RKG) , intent(in) , contiguous :: mean(:)
2808 real(RKG) :: rand(size(mean, 1, IK), nsam)
2809 end function
2810#endif
2811
2812#if RK3_ENABLED
2813 impure module function getMNR_RNGX_AM_DC_XXX_D2_RK3(rng, mean, nsam) result(rand)
2814#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2815 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGX_AM_DC_XXX_D2_RK3
2816#endif
2817 use pm_kind, only: RKG => RK3
2818 type(xoshiro256ssw_type), intent(inout) :: rng
2819 integer(IK) , intent(in) :: nsam
2820 real(RKG) , intent(in) , contiguous :: mean(:)
2821 real(RKG) :: rand(size(mean, 1, IK), nsam)
2822 end function
2823#endif
2824
2825#if RK2_ENABLED
2826 impure module function getMNR_RNGX_AM_DC_XXX_D2_RK2(rng, mean, nsam) result(rand)
2827#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2828 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGX_AM_DC_XXX_D2_RK2
2829#endif
2830 use pm_kind, only: RKG => RK2
2831 type(xoshiro256ssw_type), intent(inout) :: rng
2832 integer(IK) , intent(in) :: nsam
2833 real(RKG) , intent(in) , contiguous :: mean(:)
2834 real(RKG) :: rand(size(mean, 1, IK), nsam)
2835 end function
2836#endif
2837
2838#if RK1_ENABLED
2839 impure module function getMNR_RNGX_AM_DC_XXX_D2_RK1(rng, mean, nsam) result(rand)
2840#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2841 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGX_AM_DC_XXX_D2_RK1
2842#endif
2843 use pm_kind, only: RKG => RK1
2844 type(xoshiro256ssw_type), intent(inout) :: rng
2845 integer(IK) , intent(in) :: nsam
2846 real(RKG) , intent(in) , contiguous :: mean(:)
2847 real(RKG) :: rand(size(mean, 1, IK), nsam)
2848 end function
2849#endif
2850
2851 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2852
2853#if RK5_ENABLED
2854 impure module function getMNR_RNGX_DM_AC_UXD_D2_RK5(rng, chol, subset, nsam) result(rand)
2855#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2856 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGX_DM_AC_UXD_D2_RK5
2857#endif
2858 use pm_kind, only: RKG => RK5
2859 type(xoshiro256ssw_type), intent(inout) :: rng
2860 integer(IK) , intent(in) :: nsam
2861 type(uppDia_type) , intent(in) :: subset
2862 real(RKG) , intent(in) , contiguous :: chol(:,:)
2863 real(RKG) :: rand(size(chol, 1, IK), nsam)
2864 end function
2865#endif
2866
2867#if RK4_ENABLED
2868 impure module function getMNR_RNGX_DM_AC_UXD_D2_RK4(rng, chol, subset, nsam) result(rand)
2869#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2870 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGX_DM_AC_UXD_D2_RK4
2871#endif
2872 use pm_kind, only: RKG => RK4
2873 type(xoshiro256ssw_type), intent(inout) :: rng
2874 integer(IK) , intent(in) :: nsam
2875 type(uppDia_type) , intent(in) :: subset
2876 real(RKG) , intent(in) , contiguous :: chol(:,:)
2877 real(RKG) :: rand(size(chol, 1, IK), nsam)
2878 end function
2879#endif
2880
2881#if RK3_ENABLED
2882 impure module function getMNR_RNGX_DM_AC_UXD_D2_RK3(rng, chol, subset, nsam) result(rand)
2883#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2884 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGX_DM_AC_UXD_D2_RK3
2885#endif
2886 use pm_kind, only: RKG => RK3
2887 type(xoshiro256ssw_type), intent(inout) :: rng
2888 integer(IK) , intent(in) :: nsam
2889 type(uppDia_type) , intent(in) :: subset
2890 real(RKG) , intent(in) , contiguous :: chol(:,:)
2891 real(RKG) :: rand(size(chol, 1, IK), nsam)
2892 end function
2893#endif
2894
2895#if RK2_ENABLED
2896 impure module function getMNR_RNGX_DM_AC_UXD_D2_RK2(rng, chol, subset, nsam) result(rand)
2897#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2898 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGX_DM_AC_UXD_D2_RK2
2899#endif
2900 use pm_kind, only: RKG => RK2
2901 type(xoshiro256ssw_type), intent(inout) :: rng
2902 integer(IK) , intent(in) :: nsam
2903 type(uppDia_type) , intent(in) :: subset
2904 real(RKG) , intent(in) , contiguous :: chol(:,:)
2905 real(RKG) :: rand(size(chol, 1, IK), nsam)
2906 end function
2907#endif
2908
2909#if RK1_ENABLED
2910 impure module function getMNR_RNGX_DM_AC_UXD_D2_RK1(rng, chol, subset, nsam) result(rand)
2911#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2912 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGX_DM_AC_UXD_D2_RK1
2913#endif
2914 use pm_kind, only: RKG => RK1
2915 type(xoshiro256ssw_type), intent(inout) :: rng
2916 integer(IK) , intent(in) :: nsam
2917 type(uppDia_type) , intent(in) :: subset
2918 real(RKG) , intent(in) , contiguous :: chol(:,:)
2919 real(RKG) :: rand(size(chol, 1, IK), nsam)
2920 end function
2921#endif
2922
2923 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2924
2925#if RK5_ENABLED
2926 impure module function getMNR_RNGX_DM_AC_XLD_D2_RK5(rng, chol, subset, nsam) result(rand)
2927#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2928 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGX_DM_AC_XLD_D2_RK5
2929#endif
2930 use pm_kind, only: RKG => RK5
2931 type(xoshiro256ssw_type), intent(inout) :: rng
2932 integer(IK) , intent(in) :: nsam
2933 type(lowDia_type) , intent(in) :: subset
2934 real(RKG) , intent(in) , contiguous :: chol(:,:)
2935 real(RKG) :: rand(size(chol, 1, IK), nsam)
2936 end function
2937#endif
2938
2939#if RK4_ENABLED
2940 impure module function getMNR_RNGX_DM_AC_XLD_D2_RK4(rng, chol, subset, nsam) result(rand)
2941#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2942 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGX_DM_AC_XLD_D2_RK4
2943#endif
2944 use pm_kind, only: RKG => RK4
2945 type(xoshiro256ssw_type), intent(inout) :: rng
2946 integer(IK) , intent(in) :: nsam
2947 type(lowDia_type) , intent(in) :: subset
2948 real(RKG) , intent(in) , contiguous :: chol(:,:)
2949 real(RKG) :: rand(size(chol, 1, IK), nsam)
2950 end function
2951#endif
2952
2953#if RK3_ENABLED
2954 impure module function getMNR_RNGX_DM_AC_XLD_D2_RK3(rng, chol, subset, nsam) result(rand)
2955#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2956 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGX_DM_AC_XLD_D2_RK3
2957#endif
2958 use pm_kind, only: RKG => RK3
2959 type(xoshiro256ssw_type), intent(inout) :: rng
2960 integer(IK) , intent(in) :: nsam
2961 type(lowDia_type) , intent(in) :: subset
2962 real(RKG) , intent(in) , contiguous :: chol(:,:)
2963 real(RKG) :: rand(size(chol, 1, IK), nsam)
2964 end function
2965#endif
2966
2967#if RK2_ENABLED
2968 impure module function getMNR_RNGX_DM_AC_XLD_D2_RK2(rng, chol, subset, nsam) result(rand)
2969#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2970 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGX_DM_AC_XLD_D2_RK2
2971#endif
2972 use pm_kind, only: RKG => RK2
2973 type(xoshiro256ssw_type), intent(inout) :: rng
2974 integer(IK) , intent(in) :: nsam
2975 type(lowDia_type) , intent(in) :: subset
2976 real(RKG) , intent(in) , contiguous :: chol(:,:)
2977 real(RKG) :: rand(size(chol, 1, IK), nsam)
2978 end function
2979#endif
2980
2981#if RK1_ENABLED
2982 impure module function getMNR_RNGX_DM_AC_XLD_D2_RK1(rng, chol, subset, nsam) result(rand)
2983#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2984 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGX_DM_AC_XLD_D2_RK1
2985#endif
2986 use pm_kind, only: RKG => RK1
2987 type(xoshiro256ssw_type), intent(inout) :: rng
2988 integer(IK) , intent(in) :: nsam
2989 type(lowDia_type) , intent(in) :: subset
2990 real(RKG) , intent(in) , contiguous :: chol(:,:)
2991 real(RKG) :: rand(size(chol, 1, IK), nsam)
2992 end function
2993#endif
2994
2995 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2996
2997#if RK5_ENABLED
2998 impure module function getMNR_RNGX_AM_AC_UXD_D2_RK5(rng, mean, chol, subset, nsam) result(rand)
2999#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3000 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGX_AM_AC_UXD_D2_RK5
3001#endif
3002 use pm_kind, only: RKG => RK5
3003 type(xoshiro256ssw_type), intent(inout) :: rng
3004 integer(IK) , intent(in) :: nsam
3005 type(uppDia_type) , intent(in) :: subset
3006 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
3007 real(RKG) :: rand(size(chol, 1, IK), nsam)
3008 end function
3009#endif
3010
3011#if RK4_ENABLED
3012 impure module function getMNR_RNGX_AM_AC_UXD_D2_RK4(rng, mean, chol, subset, nsam) result(rand)
3013#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3014 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGX_AM_AC_UXD_D2_RK4
3015#endif
3016 use pm_kind, only: RKG => RK4
3017 type(xoshiro256ssw_type), intent(inout) :: rng
3018 integer(IK) , intent(in) :: nsam
3019 type(uppDia_type) , intent(in) :: subset
3020 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
3021 real(RKG) :: rand(size(chol, 1, IK), nsam)
3022 end function
3023#endif
3024
3025#if RK3_ENABLED
3026 impure module function getMNR_RNGX_AM_AC_UXD_D2_RK3(rng, mean, chol, subset, nsam) result(rand)
3027#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3028 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGX_AM_AC_UXD_D2_RK3
3029#endif
3030 use pm_kind, only: RKG => RK3
3031 type(xoshiro256ssw_type), intent(inout) :: rng
3032 integer(IK) , intent(in) :: nsam
3033 type(uppDia_type) , intent(in) :: subset
3034 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
3035 real(RKG) :: rand(size(chol, 1, IK), nsam)
3036 end function
3037#endif
3038
3039#if RK2_ENABLED
3040 impure module function getMNR_RNGX_AM_AC_UXD_D2_RK2(rng, mean, chol, subset, nsam) result(rand)
3041#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3042 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGX_AM_AC_UXD_D2_RK2
3043#endif
3044 use pm_kind, only: RKG => RK2
3045 type(xoshiro256ssw_type), intent(inout) :: rng
3046 integer(IK) , intent(in) :: nsam
3047 type(uppDia_type) , intent(in) :: subset
3048 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
3049 real(RKG) :: rand(size(chol, 1, IK), nsam)
3050 end function
3051#endif
3052
3053#if RK1_ENABLED
3054 impure module function getMNR_RNGX_AM_AC_UXD_D2_RK1(rng, mean, chol, subset, nsam) result(rand)
3055#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3056 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGX_AM_AC_UXD_D2_RK1
3057#endif
3058 use pm_kind, only: RKG => RK1
3059 type(xoshiro256ssw_type), intent(inout) :: rng
3060 integer(IK) , intent(in) :: nsam
3061 type(uppDia_type) , intent(in) :: subset
3062 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
3063 real(RKG) :: rand(size(chol, 1, IK), nsam)
3064 end function
3065#endif
3066
3067 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3068
3069#if RK5_ENABLED
3070 impure module function getMNR_RNGX_AM_AC_XLD_D2_RK5(rng, mean, chol, subset, nsam) result(rand)
3071#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3072 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGX_AM_AC_XLD_D2_RK5
3073#endif
3074 use pm_kind, only: RKG => RK5
3075 type(xoshiro256ssw_type), intent(inout) :: rng
3076 integer(IK) , intent(in) :: nsam
3077 type(lowDia_type) , intent(in) :: subset
3078 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
3079 real(RKG) :: rand(size(chol, 1, IK), nsam)
3080 end function
3081#endif
3082
3083#if RK4_ENABLED
3084 impure module function getMNR_RNGX_AM_AC_XLD_D2_RK4(rng, mean, chol, subset, nsam) result(rand)
3085#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3086 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGX_AM_AC_XLD_D2_RK4
3087#endif
3088 use pm_kind, only: RKG => RK4
3089 type(xoshiro256ssw_type), intent(inout) :: rng
3090 integer(IK) , intent(in) :: nsam
3091 type(lowDia_type) , intent(in) :: subset
3092 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
3093 real(RKG) :: rand(size(chol, 1, IK), nsam)
3094 end function
3095#endif
3096
3097#if RK3_ENABLED
3098 impure module function getMNR_RNGX_AM_AC_XLD_D2_RK3(rng, mean, chol, subset, nsam) result(rand)
3099#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3100 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGX_AM_AC_XLD_D2_RK3
3101#endif
3102 use pm_kind, only: RKG => RK3
3103 type(xoshiro256ssw_type), intent(inout) :: rng
3104 integer(IK) , intent(in) :: nsam
3105 type(lowDia_type) , intent(in) :: subset
3106 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
3107 real(RKG) :: rand(size(chol, 1, IK), nsam)
3108 end function
3109#endif
3110
3111#if RK2_ENABLED
3112 impure module function getMNR_RNGX_AM_AC_XLD_D2_RK2(rng, mean, chol, subset, nsam) result(rand)
3113#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3114 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGX_AM_AC_XLD_D2_RK2
3115#endif
3116 use pm_kind, only: RKG => RK2
3117 type(xoshiro256ssw_type), intent(inout) :: rng
3118 integer(IK) , intent(in) :: nsam
3119 type(lowDia_type) , intent(in) :: subset
3120 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
3121 real(RKG) :: rand(size(chol, 1, IK), nsam)
3122 end function
3123#endif
3124
3125#if RK1_ENABLED
3126 impure module function getMNR_RNGX_AM_AC_XLD_D2_RK1(rng, mean, chol, subset, nsam) result(rand)
3127#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3128 !DEC$ ATTRIBUTES DLLEXPORT :: getMNR_RNGX_AM_AC_XLD_D2_RK1
3129#endif
3130 use pm_kind, only: RKG => RK1
3131 type(xoshiro256ssw_type), intent(inout) :: rng
3132 integer(IK) , intent(in) :: nsam
3133 type(lowDia_type) , intent(in) :: subset
3134 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
3135 real(RKG) :: rand(size(chol, 1, IK), nsam)
3136 end function
3137#endif
3138
3139 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3140
3141 end interface
3142
3143!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3144
3261
3262 ! D1 RNGD
3263
3265
3266 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3267
3268#if RK5_ENABLED
3269 impure module subroutine setMNR_RNGD_DM_DC_XXX_D1_RK5(rand)
3270#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3271 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGD_DM_DC_XXX_D1_RK5
3272#endif
3273 use pm_kind, only: RKG => RK5
3274 real(RKG) , intent(out) , contiguous :: rand(:)
3275 end subroutine
3276#endif
3277
3278#if RK4_ENABLED
3279 impure module subroutine setMNR_RNGD_DM_DC_XXX_D1_RK4(rand)
3280#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3281 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGD_DM_DC_XXX_D1_RK4
3282#endif
3283 use pm_kind, only: RKG => RK4
3284 real(RKG) , intent(out) , contiguous :: rand(:)
3285 end subroutine
3286#endif
3287
3288#if RK3_ENABLED
3289 impure module subroutine setMNR_RNGD_DM_DC_XXX_D1_RK3(rand)
3290#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3291 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGD_DM_DC_XXX_D1_RK3
3292#endif
3293 use pm_kind, only: RKG => RK3
3294 real(RKG) , intent(out) , contiguous :: rand(:)
3295 end subroutine
3296#endif
3297
3298#if RK2_ENABLED
3299 impure module subroutine setMNR_RNGD_DM_DC_XXX_D1_RK2(rand)
3300#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3301 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGD_DM_DC_XXX_D1_RK2
3302#endif
3303 use pm_kind, only: RKG => RK2
3304 real(RKG) , intent(out) , contiguous :: rand(:)
3305 end subroutine
3306#endif
3307
3308#if RK1_ENABLED
3309 impure module subroutine setMNR_RNGD_DM_DC_XXX_D1_RK1(rand)
3310#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3311 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGD_DM_DC_XXX_D1_RK1
3312#endif
3313 use pm_kind, only: RKG => RK1
3314 real(RKG) , intent(out) , contiguous :: rand(:)
3315 end subroutine
3316#endif
3317
3318 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3319
3320#if RK5_ENABLED
3321 impure module subroutine setMNR_RNGD_AM_DC_XXX_D1_RK5(rand, mean)
3322#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3323 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGD_AM_DC_XXX_D1_RK5
3324#endif
3325 use pm_kind, only: RKG => RK5
3326 real(RKG) , intent(out) , contiguous :: rand(:)
3327 real(RKG) , intent(in) , contiguous :: mean(:)
3328 end subroutine
3329#endif
3330
3331#if RK4_ENABLED
3332 impure module subroutine setMNR_RNGD_AM_DC_XXX_D1_RK4(rand, mean)
3333#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3334 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGD_AM_DC_XXX_D1_RK4
3335#endif
3336 use pm_kind, only: RKG => RK4
3337 real(RKG) , intent(out) , contiguous :: rand(:)
3338 real(RKG) , intent(in) , contiguous :: mean(:)
3339 end subroutine
3340#endif
3341
3342#if RK3_ENABLED
3343 impure module subroutine setMNR_RNGD_AM_DC_XXX_D1_RK3(rand, mean)
3344#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3345 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGD_AM_DC_XXX_D1_RK3
3346#endif
3347 use pm_kind, only: RKG => RK3
3348 real(RKG) , intent(out) , contiguous :: rand(:)
3349 real(RKG) , intent(in) , contiguous :: mean(:)
3350 end subroutine
3351#endif
3352
3353#if RK2_ENABLED
3354 impure module subroutine setMNR_RNGD_AM_DC_XXX_D1_RK2(rand, mean)
3355#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3356 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGD_AM_DC_XXX_D1_RK2
3357#endif
3358 use pm_kind, only: RKG => RK2
3359 real(RKG) , intent(out) , contiguous :: rand(:)
3360 real(RKG) , intent(in) , contiguous :: mean(:)
3361 end subroutine
3362#endif
3363
3364#if RK1_ENABLED
3365 impure module subroutine setMNR_RNGD_AM_DC_XXX_D1_RK1(rand, mean)
3366#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3367 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGD_AM_DC_XXX_D1_RK1
3368#endif
3369 use pm_kind, only: RKG => RK1
3370 real(RKG) , intent(out) , contiguous :: rand(:)
3371 real(RKG) , intent(in) , contiguous :: mean(:)
3372 end subroutine
3373#endif
3374
3375 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3376
3377#if RK5_ENABLED
3378 impure module subroutine setMNR_RNGD_DM_AC_UXD_D1_RK5(rand, chol, subset)
3379#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3380 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGD_DM_AC_UXD_D1_RK5
3381#endif
3382 use pm_kind, only: RKG => RK5
3383 real(RKG) , intent(out) , contiguous :: rand(:)
3384 real(RKG) , intent(in) , contiguous :: chol(:,:)
3385 type(uppDia_type) , intent(in) :: subset
3386 end subroutine
3387#endif
3388
3389#if RK4_ENABLED
3390 impure module subroutine setMNR_RNGD_DM_AC_UXD_D1_RK4(rand, chol, subset)
3391#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3392 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGD_DM_AC_UXD_D1_RK4
3393#endif
3394 use pm_kind, only: RKG => RK4
3395 real(RKG) , intent(out) , contiguous :: rand(:)
3396 real(RKG) , intent(in) , contiguous :: chol(:,:)
3397 type(uppDia_type) , intent(in) :: subset
3398 end subroutine
3399#endif
3400
3401#if RK3_ENABLED
3402 impure module subroutine setMNR_RNGD_DM_AC_UXD_D1_RK3(rand, chol, subset)
3403#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3404 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGD_DM_AC_UXD_D1_RK3
3405#endif
3406 use pm_kind, only: RKG => RK3
3407 real(RKG) , intent(out) , contiguous :: rand(:)
3408 real(RKG) , intent(in) , contiguous :: chol(:,:)
3409 type(uppDia_type) , intent(in) :: subset
3410 end subroutine
3411#endif
3412
3413#if RK2_ENABLED
3414 impure module subroutine setMNR_RNGD_DM_AC_UXD_D1_RK2(rand, chol, subset)
3415#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3416 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGD_DM_AC_UXD_D1_RK2
3417#endif
3418 use pm_kind, only: RKG => RK2
3419 real(RKG) , intent(out) , contiguous :: rand(:)
3420 real(RKG) , intent(in) , contiguous :: chol(:,:)
3421 type(uppDia_type) , intent(in) :: subset
3422 end subroutine
3423#endif
3424
3425#if RK1_ENABLED
3426 impure module subroutine setMNR_RNGD_DM_AC_UXD_D1_RK1(rand, chol, subset)
3427#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3428 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGD_DM_AC_UXD_D1_RK1
3429#endif
3430 use pm_kind, only: RKG => RK1
3431 real(RKG) , intent(out) , contiguous :: rand(:)
3432 real(RKG) , intent(in) , contiguous :: chol(:,:)
3433 type(uppDia_type) , intent(in) :: subset
3434 end subroutine
3435#endif
3436
3437 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3438
3439#if RK5_ENABLED
3440 impure module subroutine setMNR_RNGD_DM_AC_XLD_D1_RK5(rand, chol, subset)
3441#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3442 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGD_DM_AC_XLD_D1_RK5
3443#endif
3444 use pm_kind, only: RKG => RK5
3445 real(RKG) , intent(out) , contiguous :: rand(:)
3446 real(RKG) , intent(in) , contiguous :: chol(:,:)
3447 type(lowDia_type) , intent(in) :: subset
3448 end subroutine
3449#endif
3450
3451#if RK4_ENABLED
3452 impure module subroutine setMNR_RNGD_DM_AC_XLD_D1_RK4(rand, chol, subset)
3453#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3454 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGD_DM_AC_XLD_D1_RK4
3455#endif
3456 use pm_kind, only: RKG => RK4
3457 real(RKG) , intent(out) , contiguous :: rand(:)
3458 real(RKG) , intent(in) , contiguous :: chol(:,:)
3459 type(lowDia_type) , intent(in) :: subset
3460 end subroutine
3461#endif
3462
3463#if RK3_ENABLED
3464 impure module subroutine setMNR_RNGD_DM_AC_XLD_D1_RK3(rand, chol, subset)
3465#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3466 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGD_DM_AC_XLD_D1_RK3
3467#endif
3468 use pm_kind, only: RKG => RK3
3469 real(RKG) , intent(out) , contiguous :: rand(:)
3470 real(RKG) , intent(in) , contiguous :: chol(:,:)
3471 type(lowDia_type) , intent(in) :: subset
3472 end subroutine
3473#endif
3474
3475#if RK2_ENABLED
3476 impure module subroutine setMNR_RNGD_DM_AC_XLD_D1_RK2(rand, chol, subset)
3477#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3478 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGD_DM_AC_XLD_D1_RK2
3479#endif
3480 use pm_kind, only: RKG => RK2
3481 real(RKG) , intent(out) , contiguous :: rand(:)
3482 real(RKG) , intent(in) , contiguous :: chol(:,:)
3483 type(lowDia_type) , intent(in) :: subset
3484 end subroutine
3485#endif
3486
3487#if RK1_ENABLED
3488 impure module subroutine setMNR_RNGD_DM_AC_XLD_D1_RK1(rand, chol, subset)
3489#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3490 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGD_DM_AC_XLD_D1_RK1
3491#endif
3492 use pm_kind, only: RKG => RK1
3493 real(RKG) , intent(out) , contiguous :: rand(:)
3494 real(RKG) , intent(in) , contiguous :: chol(:,:)
3495 type(lowDia_type) , intent(in) :: subset
3496 end subroutine
3497#endif
3498
3499 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3500
3501#if RK5_ENABLED
3502 impure module subroutine setMNR_RNGD_AM_AC_UXD_D1_RK5(rand, mean, chol, subset)
3503#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3504 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGD_AM_AC_UXD_D1_RK5
3505#endif
3506 use pm_kind, only: RKG => RK5
3507 real(RKG) , intent(out) , contiguous :: rand(:)
3508 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
3509 type(uppDia_type) , intent(in) :: subset
3510 end subroutine
3511#endif
3512
3513#if RK4_ENABLED
3514 impure module subroutine setMNR_RNGD_AM_AC_UXD_D1_RK4(rand, mean, chol, subset)
3515#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3516 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGD_AM_AC_UXD_D1_RK4
3517#endif
3518 use pm_kind, only: RKG => RK4
3519 real(RKG) , intent(out) , contiguous :: rand(:)
3520 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
3521 type(uppDia_type) , intent(in) :: subset
3522 end subroutine
3523#endif
3524
3525#if RK3_ENABLED
3526 impure module subroutine setMNR_RNGD_AM_AC_UXD_D1_RK3(rand, mean, chol, subset)
3527#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3528 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGD_AM_AC_UXD_D1_RK3
3529#endif
3530 use pm_kind, only: RKG => RK3
3531 real(RKG) , intent(out) , contiguous :: rand(:)
3532 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
3533 type(uppDia_type) , intent(in) :: subset
3534 end subroutine
3535#endif
3536
3537#if RK2_ENABLED
3538 impure module subroutine setMNR_RNGD_AM_AC_UXD_D1_RK2(rand, mean, chol, subset)
3539#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3540 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGD_AM_AC_UXD_D1_RK2
3541#endif
3542 use pm_kind, only: RKG => RK2
3543 real(RKG) , intent(out) , contiguous :: rand(:)
3544 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
3545 type(uppDia_type) , intent(in) :: subset
3546 end subroutine
3547#endif
3548
3549#if RK1_ENABLED
3550 impure module subroutine setMNR_RNGD_AM_AC_UXD_D1_RK1(rand, mean, chol, subset)
3551#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3552 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGD_AM_AC_UXD_D1_RK1
3553#endif
3554 use pm_kind, only: RKG => RK1
3555 real(RKG) , intent(out) , contiguous :: rand(:)
3556 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
3557 type(uppDia_type) , intent(in) :: subset
3558 end subroutine
3559#endif
3560
3561 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3562
3563#if RK5_ENABLED
3564 impure module subroutine setMNR_RNGD_AM_AC_XLD_D1_RK5(rand, mean, chol, subset)
3565#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3566 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGD_AM_AC_XLD_D1_RK5
3567#endif
3568 use pm_kind, only: RKG => RK5
3569 real(RKG) , intent(out) , contiguous :: rand(:)
3570 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
3571 type(lowDia_type) , intent(in) :: subset
3572 end subroutine
3573#endif
3574
3575#if RK4_ENABLED
3576 impure module subroutine setMNR_RNGD_AM_AC_XLD_D1_RK4(rand, mean, chol, subset)
3577#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3578 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGD_AM_AC_XLD_D1_RK4
3579#endif
3580 use pm_kind, only: RKG => RK4
3581 real(RKG) , intent(out) , contiguous :: rand(:)
3582 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
3583 type(lowDia_type) , intent(in) :: subset
3584 end subroutine
3585#endif
3586
3587#if RK3_ENABLED
3588 impure module subroutine setMNR_RNGD_AM_AC_XLD_D1_RK3(rand, mean, chol, subset)
3589#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3590 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGD_AM_AC_XLD_D1_RK3
3591#endif
3592 use pm_kind, only: RKG => RK3
3593 real(RKG) , intent(out) , contiguous :: rand(:)
3594 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
3595 type(lowDia_type) , intent(in) :: subset
3596 end subroutine
3597#endif
3598
3599#if RK2_ENABLED
3600 impure module subroutine setMNR_RNGD_AM_AC_XLD_D1_RK2(rand, mean, chol, subset)
3601#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3602 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGD_AM_AC_XLD_D1_RK2
3603#endif
3604 use pm_kind, only: RKG => RK2
3605 real(RKG) , intent(out) , contiguous :: rand(:)
3606 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
3607 type(lowDia_type) , intent(in) :: subset
3608 end subroutine
3609#endif
3610
3611#if RK1_ENABLED
3612 impure module subroutine setMNR_RNGD_AM_AC_XLD_D1_RK1(rand, mean, chol, subset)
3613#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3614 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGD_AM_AC_XLD_D1_RK1
3615#endif
3616 use pm_kind, only: RKG => RK1
3617 real(RKG) , intent(out) , contiguous :: rand(:)
3618 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
3619 type(lowDia_type) , intent(in) :: subset
3620 end subroutine
3621#endif
3622
3623 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3624
3625 end interface
3626
3627 ! D1 RNGF
3628
3629 interface setMultiNormRand
3630
3631 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3632
3633#if RK5_ENABLED
3634 impure module subroutine setMNR_RNGF_DM_DC_XXX_D1_RK5(rng, rand)
3635#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3636 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGF_DM_DC_XXX_D1_RK5
3637#endif
3638 use pm_kind, only: RKG => RK5
3639 type(rngf_type) , intent(in) :: rng
3640 real(RKG) , intent(out) , contiguous :: rand(:)
3641 end subroutine
3642#endif
3643
3644#if RK4_ENABLED
3645 impure module subroutine setMNR_RNGF_DM_DC_XXX_D1_RK4(rng, rand)
3646#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3647 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGF_DM_DC_XXX_D1_RK4
3648#endif
3649 use pm_kind, only: RKG => RK4
3650 type(rngf_type) , intent(in) :: rng
3651 real(RKG) , intent(out) , contiguous :: rand(:)
3652 end subroutine
3653#endif
3654
3655#if RK3_ENABLED
3656 impure module subroutine setMNR_RNGF_DM_DC_XXX_D1_RK3(rng, rand)
3657#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3658 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGF_DM_DC_XXX_D1_RK3
3659#endif
3660 use pm_kind, only: RKG => RK3
3661 type(rngf_type) , intent(in) :: rng
3662 real(RKG) , intent(out) , contiguous :: rand(:)
3663 end subroutine
3664#endif
3665
3666#if RK2_ENABLED
3667 impure module subroutine setMNR_RNGF_DM_DC_XXX_D1_RK2(rng, rand)
3668#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3669 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGF_DM_DC_XXX_D1_RK2
3670#endif
3671 use pm_kind, only: RKG => RK2
3672 type(rngf_type) , intent(in) :: rng
3673 real(RKG) , intent(out) , contiguous :: rand(:)
3674 end subroutine
3675#endif
3676
3677#if RK1_ENABLED
3678 impure module subroutine setMNR_RNGF_DM_DC_XXX_D1_RK1(rng, rand)
3679#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3680 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGF_DM_DC_XXX_D1_RK1
3681#endif
3682 use pm_kind, only: RKG => RK1
3683 type(rngf_type) , intent(in) :: rng
3684 real(RKG) , intent(out) , contiguous :: rand(:)
3685 end subroutine
3686#endif
3687
3688 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3689
3690#if RK5_ENABLED
3691 impure module subroutine setMNR_RNGF_AM_DC_XXX_D1_RK5(rng, rand, mean)
3692#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3693 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGF_AM_DC_XXX_D1_RK5
3694#endif
3695 use pm_kind, only: RKG => RK5
3696 type(rngf_type) , intent(in) :: rng
3697 real(RKG) , intent(out) , contiguous :: rand(:)
3698 real(RKG) , intent(in) , contiguous :: mean(:)
3699 end subroutine
3700#endif
3701
3702#if RK4_ENABLED
3703 impure module subroutine setMNR_RNGF_AM_DC_XXX_D1_RK4(rng, rand, mean)
3704#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3705 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGF_AM_DC_XXX_D1_RK4
3706#endif
3707 use pm_kind, only: RKG => RK4
3708 type(rngf_type) , intent(in) :: rng
3709 real(RKG) , intent(out) , contiguous :: rand(:)
3710 real(RKG) , intent(in) , contiguous :: mean(:)
3711 end subroutine
3712#endif
3713
3714#if RK3_ENABLED
3715 impure module subroutine setMNR_RNGF_AM_DC_XXX_D1_RK3(rng, rand, mean)
3716#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3717 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGF_AM_DC_XXX_D1_RK3
3718#endif
3719 use pm_kind, only: RKG => RK3
3720 type(rngf_type) , intent(in) :: rng
3721 real(RKG) , intent(out) , contiguous :: rand(:)
3722 real(RKG) , intent(in) , contiguous :: mean(:)
3723 end subroutine
3724#endif
3725
3726#if RK2_ENABLED
3727 impure module subroutine setMNR_RNGF_AM_DC_XXX_D1_RK2(rng, rand, mean)
3728#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3729 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGF_AM_DC_XXX_D1_RK2
3730#endif
3731 use pm_kind, only: RKG => RK2
3732 type(rngf_type) , intent(in) :: rng
3733 real(RKG) , intent(out) , contiguous :: rand(:)
3734 real(RKG) , intent(in) , contiguous :: mean(:)
3735 end subroutine
3736#endif
3737
3738#if RK1_ENABLED
3739 impure module subroutine setMNR_RNGF_AM_DC_XXX_D1_RK1(rng, rand, mean)
3740#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3741 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGF_AM_DC_XXX_D1_RK1
3742#endif
3743 use pm_kind, only: RKG => RK1
3744 type(rngf_type) , intent(in) :: rng
3745 real(RKG) , intent(out) , contiguous :: rand(:)
3746 real(RKG) , intent(in) , contiguous :: mean(:)
3747 end subroutine
3748#endif
3749
3750 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3751
3752#if RK5_ENABLED
3753 impure module subroutine setMNR_RNGF_DM_AC_UXD_D1_RK5(rng, rand, chol, subset)
3754#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3755 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGF_DM_AC_UXD_D1_RK5
3756#endif
3757 use pm_kind, only: RKG => RK5
3758 type(rngf_type) , intent(in) :: rng
3759 real(RKG) , intent(out) , contiguous :: rand(:)
3760 real(RKG) , intent(in) , contiguous :: chol(:,:)
3761 type(uppDia_type) , intent(in) :: subset
3762 end subroutine
3763#endif
3764
3765#if RK4_ENABLED
3766 impure module subroutine setMNR_RNGF_DM_AC_UXD_D1_RK4(rng, rand, chol, subset)
3767#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3768 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGF_DM_AC_UXD_D1_RK4
3769#endif
3770 use pm_kind, only: RKG => RK4
3771 type(rngf_type) , intent(in) :: rng
3772 real(RKG) , intent(out) , contiguous :: rand(:)
3773 real(RKG) , intent(in) , contiguous :: chol(:,:)
3774 type(uppDia_type) , intent(in) :: subset
3775 end subroutine
3776#endif
3777
3778#if RK3_ENABLED
3779 impure module subroutine setMNR_RNGF_DM_AC_UXD_D1_RK3(rng, rand, chol, subset)
3780#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3781 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGF_DM_AC_UXD_D1_RK3
3782#endif
3783 use pm_kind, only: RKG => RK3
3784 type(rngf_type) , intent(in) :: rng
3785 real(RKG) , intent(out) , contiguous :: rand(:)
3786 real(RKG) , intent(in) , contiguous :: chol(:,:)
3787 type(uppDia_type) , intent(in) :: subset
3788 end subroutine
3789#endif
3790
3791#if RK2_ENABLED
3792 impure module subroutine setMNR_RNGF_DM_AC_UXD_D1_RK2(rng, rand, chol, subset)
3793#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3794 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGF_DM_AC_UXD_D1_RK2
3795#endif
3796 use pm_kind, only: RKG => RK2
3797 type(rngf_type) , intent(in) :: rng
3798 real(RKG) , intent(out) , contiguous :: rand(:)
3799 real(RKG) , intent(in) , contiguous :: chol(:,:)
3800 type(uppDia_type) , intent(in) :: subset
3801 end subroutine
3802#endif
3803
3804#if RK1_ENABLED
3805 impure module subroutine setMNR_RNGF_DM_AC_UXD_D1_RK1(rng, rand, chol, subset)
3806#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3807 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGF_DM_AC_UXD_D1_RK1
3808#endif
3809 use pm_kind, only: RKG => RK1
3810 type(rngf_type) , intent(in) :: rng
3811 real(RKG) , intent(out) , contiguous :: rand(:)
3812 real(RKG) , intent(in) , contiguous :: chol(:,:)
3813 type(uppDia_type) , intent(in) :: subset
3814 end subroutine
3815#endif
3816
3817 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3818
3819#if RK5_ENABLED
3820 impure module subroutine setMNR_RNGF_DM_AC_XLD_D1_RK5(rng, rand, chol, subset)
3821#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3822 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGF_DM_AC_XLD_D1_RK5
3823#endif
3824 use pm_kind, only: RKG => RK5
3825 type(rngf_type) , intent(in) :: rng
3826 real(RKG) , intent(out) , contiguous :: rand(:)
3827 real(RKG) , intent(in) , contiguous :: chol(:,:)
3828 type(lowDia_type) , intent(in) :: subset
3829 end subroutine
3830#endif
3831
3832#if RK4_ENABLED
3833 impure module subroutine setMNR_RNGF_DM_AC_XLD_D1_RK4(rng, rand, chol, subset)
3834#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3835 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGF_DM_AC_XLD_D1_RK4
3836#endif
3837 use pm_kind, only: RKG => RK4
3838 type(rngf_type) , intent(in) :: rng
3839 real(RKG) , intent(out) , contiguous :: rand(:)
3840 real(RKG) , intent(in) , contiguous :: chol(:,:)
3841 type(lowDia_type) , intent(in) :: subset
3842 end subroutine
3843#endif
3844
3845#if RK3_ENABLED
3846 impure module subroutine setMNR_RNGF_DM_AC_XLD_D1_RK3(rng, rand, chol, subset)
3847#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3848 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGF_DM_AC_XLD_D1_RK3
3849#endif
3850 use pm_kind, only: RKG => RK3
3851 type(rngf_type) , intent(in) :: rng
3852 real(RKG) , intent(out) , contiguous :: rand(:)
3853 real(RKG) , intent(in) , contiguous :: chol(:,:)
3854 type(lowDia_type) , intent(in) :: subset
3855 end subroutine
3856#endif
3857
3858#if RK2_ENABLED
3859 impure module subroutine setMNR_RNGF_DM_AC_XLD_D1_RK2(rng, rand, chol, subset)
3860#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3861 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGF_DM_AC_XLD_D1_RK2
3862#endif
3863 use pm_kind, only: RKG => RK2
3864 type(rngf_type) , intent(in) :: rng
3865 real(RKG) , intent(out) , contiguous :: rand(:)
3866 real(RKG) , intent(in) , contiguous :: chol(:,:)
3867 type(lowDia_type) , intent(in) :: subset
3868 end subroutine
3869#endif
3870
3871#if RK1_ENABLED
3872 impure module subroutine setMNR_RNGF_DM_AC_XLD_D1_RK1(rng, rand, chol, subset)
3873#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3874 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGF_DM_AC_XLD_D1_RK1
3875#endif
3876 use pm_kind, only: RKG => RK1
3877 type(rngf_type) , intent(in) :: rng
3878 real(RKG) , intent(out) , contiguous :: rand(:)
3879 real(RKG) , intent(in) , contiguous :: chol(:,:)
3880 type(lowDia_type) , intent(in) :: subset
3881 end subroutine
3882#endif
3883
3884 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3885
3886#if RK5_ENABLED
3887 impure module subroutine setMNR_RNGF_AM_AC_UXD_D1_RK5(rng, rand, mean, chol, subset)
3888#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3889 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGF_AM_AC_UXD_D1_RK5
3890#endif
3891 use pm_kind, only: RKG => RK5
3892 type(rngf_type) , intent(in) :: rng
3893 real(RKG) , intent(out) , contiguous :: rand(:)
3894 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
3895 type(uppDia_type) , intent(in) :: subset
3896 end subroutine
3897#endif
3898
3899#if RK4_ENABLED
3900 impure module subroutine setMNR_RNGF_AM_AC_UXD_D1_RK4(rng, rand, mean, chol, subset)
3901#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3902 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGF_AM_AC_UXD_D1_RK4
3903#endif
3904 use pm_kind, only: RKG => RK4
3905 type(rngf_type) , intent(in) :: rng
3906 real(RKG) , intent(out) , contiguous :: rand(:)
3907 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
3908 type(uppDia_type) , intent(in) :: subset
3909 end subroutine
3910#endif
3911
3912#if RK3_ENABLED
3913 impure module subroutine setMNR_RNGF_AM_AC_UXD_D1_RK3(rng, rand, mean, chol, subset)
3914#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3915 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGF_AM_AC_UXD_D1_RK3
3916#endif
3917 use pm_kind, only: RKG => RK3
3918 type(rngf_type) , intent(in) :: rng
3919 real(RKG) , intent(out) , contiguous :: rand(:)
3920 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
3921 type(uppDia_type) , intent(in) :: subset
3922 end subroutine
3923#endif
3924
3925#if RK2_ENABLED
3926 impure module subroutine setMNR_RNGF_AM_AC_UXD_D1_RK2(rng, rand, mean, chol, subset)
3927#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3928 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGF_AM_AC_UXD_D1_RK2
3929#endif
3930 use pm_kind, only: RKG => RK2
3931 type(rngf_type) , intent(in) :: rng
3932 real(RKG) , intent(out) , contiguous :: rand(:)
3933 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
3934 type(uppDia_type) , intent(in) :: subset
3935 end subroutine
3936#endif
3937
3938#if RK1_ENABLED
3939 impure module subroutine setMNR_RNGF_AM_AC_UXD_D1_RK1(rng, rand, mean, chol, subset)
3940#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3941 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGF_AM_AC_UXD_D1_RK1
3942#endif
3943 use pm_kind, only: RKG => RK1
3944 type(rngf_type) , intent(in) :: rng
3945 real(RKG) , intent(out) , contiguous :: rand(:)
3946 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
3947 type(uppDia_type) , intent(in) :: subset
3948 end subroutine
3949#endif
3950
3951 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3952
3953#if RK5_ENABLED
3954 impure module subroutine setMNR_RNGF_AM_AC_XLD_D1_RK5(rng, rand, mean, chol, subset)
3955#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3956 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGF_AM_AC_XLD_D1_RK5
3957#endif
3958 use pm_kind, only: RKG => RK5
3959 type(rngf_type) , intent(in) :: rng
3960 real(RKG) , intent(out) , contiguous :: rand(:)
3961 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
3962 type(lowDia_type) , intent(in) :: subset
3963 end subroutine
3964#endif
3965
3966#if RK4_ENABLED
3967 impure module subroutine setMNR_RNGF_AM_AC_XLD_D1_RK4(rng, rand, mean, chol, subset)
3968#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3969 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGF_AM_AC_XLD_D1_RK4
3970#endif
3971 use pm_kind, only: RKG => RK4
3972 type(rngf_type) , intent(in) :: rng
3973 real(RKG) , intent(out) , contiguous :: rand(:)
3974 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
3975 type(lowDia_type) , intent(in) :: subset
3976 end subroutine
3977#endif
3978
3979#if RK3_ENABLED
3980 impure module subroutine setMNR_RNGF_AM_AC_XLD_D1_RK3(rng, rand, mean, chol, subset)
3981#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3982 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGF_AM_AC_XLD_D1_RK3
3983#endif
3984 use pm_kind, only: RKG => RK3
3985 type(rngf_type) , intent(in) :: rng
3986 real(RKG) , intent(out) , contiguous :: rand(:)
3987 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
3988 type(lowDia_type) , intent(in) :: subset
3989 end subroutine
3990#endif
3991
3992#if RK2_ENABLED
3993 impure module subroutine setMNR_RNGF_AM_AC_XLD_D1_RK2(rng, rand, mean, chol, subset)
3994#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3995 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGF_AM_AC_XLD_D1_RK2
3996#endif
3997 use pm_kind, only: RKG => RK2
3998 type(rngf_type) , intent(in) :: rng
3999 real(RKG) , intent(out) , contiguous :: rand(:)
4000 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
4001 type(lowDia_type) , intent(in) :: subset
4002 end subroutine
4003#endif
4004
4005#if RK1_ENABLED
4006 impure module subroutine setMNR_RNGF_AM_AC_XLD_D1_RK1(rng, rand, mean, chol, subset)
4007#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4008 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGF_AM_AC_XLD_D1_RK1
4009#endif
4010 use pm_kind, only: RKG => RK1
4011 type(rngf_type) , intent(in) :: rng
4012 real(RKG) , intent(out) , contiguous :: rand(:)
4013 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
4014 type(lowDia_type) , intent(in) :: subset
4015 end subroutine
4016#endif
4017
4018 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4019
4020 end interface
4021
4022 ! D1 RNGX
4023
4024 interface setMultiNormRand
4025
4026 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4027
4028#if RK5_ENABLED
4029 PURE module subroutine setMNR_RNGX_DM_DC_XXX_D1_RK5(rng, rand)
4030#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4031 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGX_DM_DC_XXX_D1_RK5
4032#endif
4033 use pm_kind, only: RKG => RK5
4034 type(xoshiro256ssw_type), intent(inout) :: rng
4035 real(RKG) , intent(out) , contiguous :: rand(:)
4036 end subroutine
4037#endif
4038
4039#if RK4_ENABLED
4040 PURE module subroutine setMNR_RNGX_DM_DC_XXX_D1_RK4(rng, rand)
4041#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4042 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGX_DM_DC_XXX_D1_RK4
4043#endif
4044 use pm_kind, only: RKG => RK4
4045 type(xoshiro256ssw_type), intent(inout) :: rng
4046 real(RKG) , intent(out) , contiguous :: rand(:)
4047 end subroutine
4048#endif
4049
4050#if RK3_ENABLED
4051 PURE module subroutine setMNR_RNGX_DM_DC_XXX_D1_RK3(rng, rand)
4052#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4053 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGX_DM_DC_XXX_D1_RK3
4054#endif
4055 use pm_kind, only: RKG => RK3
4056 type(xoshiro256ssw_type), intent(inout) :: rng
4057 real(RKG) , intent(out) , contiguous :: rand(:)
4058 end subroutine
4059#endif
4060
4061#if RK2_ENABLED
4062 PURE module subroutine setMNR_RNGX_DM_DC_XXX_D1_RK2(rng, rand)
4063#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4064 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGX_DM_DC_XXX_D1_RK2
4065#endif
4066 use pm_kind, only: RKG => RK2
4067 type(xoshiro256ssw_type), intent(inout) :: rng
4068 real(RKG) , intent(out) , contiguous :: rand(:)
4069 end subroutine
4070#endif
4071
4072#if RK1_ENABLED
4073 PURE module subroutine setMNR_RNGX_DM_DC_XXX_D1_RK1(rng, rand)
4074#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4075 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGX_DM_DC_XXX_D1_RK1
4076#endif
4077 use pm_kind, only: RKG => RK1
4078 type(xoshiro256ssw_type), intent(inout) :: rng
4079 real(RKG) , intent(out) , contiguous :: rand(:)
4080 end subroutine
4081#endif
4082
4083 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4084
4085#if RK5_ENABLED
4086 PURE module subroutine setMNR_RNGX_AM_DC_XXX_D1_RK5(rng, rand, mean)
4087#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4088 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGX_AM_DC_XXX_D1_RK5
4089#endif
4090 use pm_kind, only: RKG => RK5
4091 type(xoshiro256ssw_type), intent(inout) :: rng
4092 real(RKG) , intent(out) , contiguous :: rand(:)
4093 real(RKG) , intent(in) , contiguous :: mean(:)
4094 end subroutine
4095#endif
4096
4097#if RK4_ENABLED
4098 PURE module subroutine setMNR_RNGX_AM_DC_XXX_D1_RK4(rng, rand, mean)
4099#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4100 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGX_AM_DC_XXX_D1_RK4
4101#endif
4102 use pm_kind, only: RKG => RK4
4103 type(xoshiro256ssw_type), intent(inout) :: rng
4104 real(RKG) , intent(out) , contiguous :: rand(:)
4105 real(RKG) , intent(in) , contiguous :: mean(:)
4106 end subroutine
4107#endif
4108
4109#if RK3_ENABLED
4110 PURE module subroutine setMNR_RNGX_AM_DC_XXX_D1_RK3(rng, rand, mean)
4111#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4112 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGX_AM_DC_XXX_D1_RK3
4113#endif
4114 use pm_kind, only: RKG => RK3
4115 type(xoshiro256ssw_type), intent(inout) :: rng
4116 real(RKG) , intent(out) , contiguous :: rand(:)
4117 real(RKG) , intent(in) , contiguous :: mean(:)
4118 end subroutine
4119#endif
4120
4121#if RK2_ENABLED
4122 PURE module subroutine setMNR_RNGX_AM_DC_XXX_D1_RK2(rng, rand, mean)
4123#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4124 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGX_AM_DC_XXX_D1_RK2
4125#endif
4126 use pm_kind, only: RKG => RK2
4127 type(xoshiro256ssw_type), intent(inout) :: rng
4128 real(RKG) , intent(out) , contiguous :: rand(:)
4129 real(RKG) , intent(in) , contiguous :: mean(:)
4130 end subroutine
4131#endif
4132
4133#if RK1_ENABLED
4134 PURE module subroutine setMNR_RNGX_AM_DC_XXX_D1_RK1(rng, rand, mean)
4135#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4136 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGX_AM_DC_XXX_D1_RK1
4137#endif
4138 use pm_kind, only: RKG => RK1
4139 type(xoshiro256ssw_type), intent(inout) :: rng
4140 real(RKG) , intent(out) , contiguous :: rand(:)
4141 real(RKG) , intent(in) , contiguous :: mean(:)
4142 end subroutine
4143#endif
4144
4145 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4146
4147#if RK5_ENABLED
4148 PURE module subroutine setMNR_RNGX_DM_AC_UXD_D1_RK5(rng, rand, chol, subset)
4149#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4150 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGX_DM_AC_UXD_D1_RK5
4151#endif
4152 use pm_kind, only: RKG => RK5
4153 type(xoshiro256ssw_type), intent(inout) :: rng
4154 real(RKG) , intent(out) , contiguous :: rand(:)
4155 real(RKG) , intent(in) , contiguous :: chol(:,:)
4156 type(uppDia_type) , intent(in) :: subset
4157 end subroutine
4158#endif
4159
4160#if RK4_ENABLED
4161 PURE module subroutine setMNR_RNGX_DM_AC_UXD_D1_RK4(rng, rand, chol, subset)
4162#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4163 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGX_DM_AC_UXD_D1_RK4
4164#endif
4165 use pm_kind, only: RKG => RK4
4166 type(xoshiro256ssw_type), intent(inout) :: rng
4167 real(RKG) , intent(out) , contiguous :: rand(:)
4168 real(RKG) , intent(in) , contiguous :: chol(:,:)
4169 type(uppDia_type) , intent(in) :: subset
4170 end subroutine
4171#endif
4172
4173#if RK3_ENABLED
4174 PURE module subroutine setMNR_RNGX_DM_AC_UXD_D1_RK3(rng, rand, chol, subset)
4175#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4176 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGX_DM_AC_UXD_D1_RK3
4177#endif
4178 use pm_kind, only: RKG => RK3
4179 type(xoshiro256ssw_type), intent(inout) :: rng
4180 real(RKG) , intent(out) , contiguous :: rand(:)
4181 real(RKG) , intent(in) , contiguous :: chol(:,:)
4182 type(uppDia_type) , intent(in) :: subset
4183 end subroutine
4184#endif
4185
4186#if RK2_ENABLED
4187 PURE module subroutine setMNR_RNGX_DM_AC_UXD_D1_RK2(rng, rand, chol, subset)
4188#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4189 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGX_DM_AC_UXD_D1_RK2
4190#endif
4191 use pm_kind, only: RKG => RK2
4192 type(xoshiro256ssw_type), intent(inout) :: rng
4193 real(RKG) , intent(out) , contiguous :: rand(:)
4194 real(RKG) , intent(in) , contiguous :: chol(:,:)
4195 type(uppDia_type) , intent(in) :: subset
4196 end subroutine
4197#endif
4198
4199#if RK1_ENABLED
4200 PURE module subroutine setMNR_RNGX_DM_AC_UXD_D1_RK1(rng, rand, chol, subset)
4201#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4202 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGX_DM_AC_UXD_D1_RK1
4203#endif
4204 use pm_kind, only: RKG => RK1
4205 type(xoshiro256ssw_type), intent(inout) :: rng
4206 real(RKG) , intent(out) , contiguous :: rand(:)
4207 real(RKG) , intent(in) , contiguous :: chol(:,:)
4208 type(uppDia_type) , intent(in) :: subset
4209 end subroutine
4210#endif
4211
4212 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4213
4214#if RK5_ENABLED
4215 PURE module subroutine setMNR_RNGX_DM_AC_XLD_D1_RK5(rng, rand, chol, subset)
4216#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4217 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGX_DM_AC_XLD_D1_RK5
4218#endif
4219 use pm_kind, only: RKG => RK5
4220 type(xoshiro256ssw_type), intent(inout) :: rng
4221 real(RKG) , intent(out) , contiguous :: rand(:)
4222 real(RKG) , intent(in) , contiguous :: chol(:,:)
4223 type(lowDia_type) , intent(in) :: subset
4224 end subroutine
4225#endif
4226
4227#if RK4_ENABLED
4228 PURE module subroutine setMNR_RNGX_DM_AC_XLD_D1_RK4(rng, rand, chol, subset)
4229#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4230 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGX_DM_AC_XLD_D1_RK4
4231#endif
4232 use pm_kind, only: RKG => RK4
4233 type(xoshiro256ssw_type), intent(inout) :: rng
4234 real(RKG) , intent(out) , contiguous :: rand(:)
4235 real(RKG) , intent(in) , contiguous :: chol(:,:)
4236 type(lowDia_type) , intent(in) :: subset
4237 end subroutine
4238#endif
4239
4240#if RK3_ENABLED
4241 PURE module subroutine setMNR_RNGX_DM_AC_XLD_D1_RK3(rng, rand, chol, subset)
4242#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4243 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGX_DM_AC_XLD_D1_RK3
4244#endif
4245 use pm_kind, only: RKG => RK3
4246 type(xoshiro256ssw_type), intent(inout) :: rng
4247 real(RKG) , intent(out) , contiguous :: rand(:)
4248 real(RKG) , intent(in) , contiguous :: chol(:,:)
4249 type(lowDia_type) , intent(in) :: subset
4250 end subroutine
4251#endif
4252
4253#if RK2_ENABLED
4254 PURE module subroutine setMNR_RNGX_DM_AC_XLD_D1_RK2(rng, rand, chol, subset)
4255#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4256 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGX_DM_AC_XLD_D1_RK2
4257#endif
4258 use pm_kind, only: RKG => RK2
4259 type(xoshiro256ssw_type), intent(inout) :: rng
4260 real(RKG) , intent(out) , contiguous :: rand(:)
4261 real(RKG) , intent(in) , contiguous :: chol(:,:)
4262 type(lowDia_type) , intent(in) :: subset
4263 end subroutine
4264#endif
4265
4266#if RK1_ENABLED
4267 PURE module subroutine setMNR_RNGX_DM_AC_XLD_D1_RK1(rng, rand, chol, subset)
4268#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4269 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGX_DM_AC_XLD_D1_RK1
4270#endif
4271 use pm_kind, only: RKG => RK1
4272 type(xoshiro256ssw_type), intent(inout) :: rng
4273 real(RKG) , intent(out) , contiguous :: rand(:)
4274 real(RKG) , intent(in) , contiguous :: chol(:,:)
4275 type(lowDia_type) , intent(in) :: subset
4276 end subroutine
4277#endif
4278
4279 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4280
4281#if RK5_ENABLED
4282 PURE module subroutine setMNR_RNGX_AM_AC_UXD_D1_RK5(rng, rand, mean, chol, subset)
4283#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4284 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGX_AM_AC_UXD_D1_RK5
4285#endif
4286 use pm_kind, only: RKG => RK5
4287 type(xoshiro256ssw_type), intent(inout) :: rng
4288 real(RKG) , intent(out) , contiguous :: rand(:)
4289 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
4290 type(uppDia_type) , intent(in) :: subset
4291 end subroutine
4292#endif
4293
4294#if RK4_ENABLED
4295 PURE module subroutine setMNR_RNGX_AM_AC_UXD_D1_RK4(rng, rand, mean, chol, subset)
4296#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4297 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGX_AM_AC_UXD_D1_RK4
4298#endif
4299 use pm_kind, only: RKG => RK4
4300 type(xoshiro256ssw_type), intent(inout) :: rng
4301 real(RKG) , intent(out) , contiguous :: rand(:)
4302 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
4303 type(uppDia_type) , intent(in) :: subset
4304 end subroutine
4305#endif
4306
4307#if RK3_ENABLED
4308 PURE module subroutine setMNR_RNGX_AM_AC_UXD_D1_RK3(rng, rand, mean, chol, subset)
4309#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4310 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGX_AM_AC_UXD_D1_RK3
4311#endif
4312 use pm_kind, only: RKG => RK3
4313 type(xoshiro256ssw_type), intent(inout) :: rng
4314 real(RKG) , intent(out) , contiguous :: rand(:)
4315 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
4316 type(uppDia_type) , intent(in) :: subset
4317 end subroutine
4318#endif
4319
4320#if RK2_ENABLED
4321 PURE module subroutine setMNR_RNGX_AM_AC_UXD_D1_RK2(rng, rand, mean, chol, subset)
4322#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4323 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGX_AM_AC_UXD_D1_RK2
4324#endif
4325 use pm_kind, only: RKG => RK2
4326 type(xoshiro256ssw_type), intent(inout) :: rng
4327 real(RKG) , intent(out) , contiguous :: rand(:)
4328 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
4329 type(uppDia_type) , intent(in) :: subset
4330 end subroutine
4331#endif
4332
4333#if RK1_ENABLED
4334 PURE module subroutine setMNR_RNGX_AM_AC_UXD_D1_RK1(rng, rand, mean, chol, subset)
4335#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4336 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGX_AM_AC_UXD_D1_RK1
4337#endif
4338 use pm_kind, only: RKG => RK1
4339 type(xoshiro256ssw_type), intent(inout) :: rng
4340 real(RKG) , intent(out) , contiguous :: rand(:)
4341 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
4342 type(uppDia_type) , intent(in) :: subset
4343 end subroutine
4344#endif
4345
4346 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4347
4348#if RK5_ENABLED
4349 PURE module subroutine setMNR_RNGX_AM_AC_XLD_D1_RK5(rng, rand, mean, chol, subset)
4350#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4351 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGX_AM_AC_XLD_D1_RK5
4352#endif
4353 use pm_kind, only: RKG => RK5
4354 type(xoshiro256ssw_type), intent(inout) :: rng
4355 real(RKG) , intent(out) , contiguous :: rand(:)
4356 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
4357 type(lowDia_type) , intent(in) :: subset
4358 end subroutine
4359#endif
4360
4361#if RK4_ENABLED
4362 PURE module subroutine setMNR_RNGX_AM_AC_XLD_D1_RK4(rng, rand, mean, chol, subset)
4363#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4364 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGX_AM_AC_XLD_D1_RK4
4365#endif
4366 use pm_kind, only: RKG => RK4
4367 type(xoshiro256ssw_type), intent(inout) :: rng
4368 real(RKG) , intent(out) , contiguous :: rand(:)
4369 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
4370 type(lowDia_type) , intent(in) :: subset
4371 end subroutine
4372#endif
4373
4374#if RK3_ENABLED
4375 PURE module subroutine setMNR_RNGX_AM_AC_XLD_D1_RK3(rng, rand, mean, chol, subset)
4376#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4377 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGX_AM_AC_XLD_D1_RK3
4378#endif
4379 use pm_kind, only: RKG => RK3
4380 type(xoshiro256ssw_type), intent(inout) :: rng
4381 real(RKG) , intent(out) , contiguous :: rand(:)
4382 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
4383 type(lowDia_type) , intent(in) :: subset
4384 end subroutine
4385#endif
4386
4387#if RK2_ENABLED
4388 PURE module subroutine setMNR_RNGX_AM_AC_XLD_D1_RK2(rng, rand, mean, chol, subset)
4389#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4390 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGX_AM_AC_XLD_D1_RK2
4391#endif
4392 use pm_kind, only: RKG => RK2
4393 type(xoshiro256ssw_type), intent(inout) :: rng
4394 real(RKG) , intent(out) , contiguous :: rand(:)
4395 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
4396 type(lowDia_type) , intent(in) :: subset
4397 end subroutine
4398#endif
4399
4400#if RK1_ENABLED
4401 PURE module subroutine setMNR_RNGX_AM_AC_XLD_D1_RK1(rng, rand, mean, chol, subset)
4402#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4403 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGX_AM_AC_XLD_D1_RK1
4404#endif
4405 use pm_kind, only: RKG => RK1
4406 type(xoshiro256ssw_type), intent(inout) :: rng
4407 real(RKG) , intent(out) , contiguous :: rand(:)
4408 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
4409 type(lowDia_type) , intent(in) :: subset
4410 end subroutine
4411#endif
4412
4413 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4414
4415 end interface
4416
4417 ! D2 RNGD
4418
4419 interface setMultiNormRand
4420
4421 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4422
4423#if RK5_ENABLED
4424 module subroutine setMNR_RNGD_DM_DC_XXX_D2_RK5(rand)
4425#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4426 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGD_DM_DC_XXX_D2_RK5
4427#endif
4428 use pm_kind, only: RKG => RK5
4429 real(RKG) , intent(out) , contiguous :: rand(:,:)
4430 end subroutine
4431#endif
4432
4433#if RK4_ENABLED
4434 module subroutine setMNR_RNGD_DM_DC_XXX_D2_RK4(rand)
4435#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4436 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGD_DM_DC_XXX_D2_RK4
4437#endif
4438 use pm_kind, only: RKG => RK4
4439 real(RKG) , intent(out) , contiguous :: rand(:,:)
4440 end subroutine
4441#endif
4442
4443#if RK3_ENABLED
4444 module subroutine setMNR_RNGD_DM_DC_XXX_D2_RK3(rand)
4445#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4446 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGD_DM_DC_XXX_D2_RK3
4447#endif
4448 use pm_kind, only: RKG => RK3
4449 real(RKG) , intent(out) , contiguous :: rand(:,:)
4450 end subroutine
4451#endif
4452
4453#if RK2_ENABLED
4454 module subroutine setMNR_RNGD_DM_DC_XXX_D2_RK2(rand)
4455#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4456 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGD_DM_DC_XXX_D2_RK2
4457#endif
4458 use pm_kind, only: RKG => RK2
4459 real(RKG) , intent(out) , contiguous :: rand(:,:)
4460 end subroutine
4461#endif
4462
4463#if RK1_ENABLED
4464 module subroutine setMNR_RNGD_DM_DC_XXX_D2_RK1(rand)
4465#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4466 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGD_DM_DC_XXX_D2_RK1
4467#endif
4468 use pm_kind, only: RKG => RK1
4469 real(RKG) , intent(out) , contiguous :: rand(:,:)
4470 end subroutine
4471#endif
4472
4473 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4474
4475#if RK5_ENABLED
4476 module subroutine setMNR_RNGD_AM_DC_XXX_D2_RK5(rand, mean)
4477#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4478 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGD_AM_DC_XXX_D2_RK5
4479#endif
4480 use pm_kind, only: RKG => RK5
4481 real(RKG) , intent(out) , contiguous :: rand(:,:)
4482 real(RKG) , intent(in) , contiguous :: mean(:)
4483 end subroutine
4484#endif
4485
4486#if RK4_ENABLED
4487 module subroutine setMNR_RNGD_AM_DC_XXX_D2_RK4(rand, mean)
4488#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4489 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGD_AM_DC_XXX_D2_RK4
4490#endif
4491 use pm_kind, only: RKG => RK4
4492 real(RKG) , intent(out) , contiguous :: rand(:,:)
4493 real(RKG) , intent(in) , contiguous :: mean(:)
4494 end subroutine
4495#endif
4496
4497#if RK3_ENABLED
4498 module subroutine setMNR_RNGD_AM_DC_XXX_D2_RK3(rand, mean)
4499#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4500 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGD_AM_DC_XXX_D2_RK3
4501#endif
4502 use pm_kind, only: RKG => RK3
4503 real(RKG) , intent(out) , contiguous :: rand(:,:)
4504 real(RKG) , intent(in) , contiguous :: mean(:)
4505 end subroutine
4506#endif
4507
4508#if RK2_ENABLED
4509 module subroutine setMNR_RNGD_AM_DC_XXX_D2_RK2(rand, mean)
4510#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4511 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGD_AM_DC_XXX_D2_RK2
4512#endif
4513 use pm_kind, only: RKG => RK2
4514 real(RKG) , intent(out) , contiguous :: rand(:,:)
4515 real(RKG) , intent(in) , contiguous :: mean(:)
4516 end subroutine
4517#endif
4518
4519#if RK1_ENABLED
4520 module subroutine setMNR_RNGD_AM_DC_XXX_D2_RK1(rand, mean)
4521#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4522 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGD_AM_DC_XXX_D2_RK1
4523#endif
4524 use pm_kind, only: RKG => RK1
4525 real(RKG) , intent(out) , contiguous :: rand(:,:)
4526 real(RKG) , intent(in) , contiguous :: mean(:)
4527 end subroutine
4528#endif
4529
4530 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4531
4532#if RK5_ENABLED
4533 module subroutine setMNR_RNGD_DM_AC_UXD_D2_RK5(rand, chol, subset)
4534#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4535 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGD_DM_AC_UXD_D2_RK5
4536#endif
4537 use pm_kind, only: RKG => RK5
4538 real(RKG) , intent(out) , contiguous :: rand(:,:)
4539 real(RKG) , intent(in) , contiguous :: chol(:,:)
4540 type(uppDia_type) , intent(in) :: subset
4541 end subroutine
4542#endif
4543
4544#if RK4_ENABLED
4545 module subroutine setMNR_RNGD_DM_AC_UXD_D2_RK4(rand, chol, subset)
4546#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4547 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGD_DM_AC_UXD_D2_RK4
4548#endif
4549 use pm_kind, only: RKG => RK4
4550 real(RKG) , intent(out) , contiguous :: rand(:,:)
4551 real(RKG) , intent(in) , contiguous :: chol(:,:)
4552 type(uppDia_type) , intent(in) :: subset
4553 end subroutine
4554#endif
4555
4556#if RK3_ENABLED
4557 module subroutine setMNR_RNGD_DM_AC_UXD_D2_RK3(rand, chol, subset)
4558#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4559 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGD_DM_AC_UXD_D2_RK3
4560#endif
4561 use pm_kind, only: RKG => RK3
4562 real(RKG) , intent(out) , contiguous :: rand(:,:)
4563 real(RKG) , intent(in) , contiguous :: chol(:,:)
4564 type(uppDia_type) , intent(in) :: subset
4565 end subroutine
4566#endif
4567
4568#if RK2_ENABLED
4569 module subroutine setMNR_RNGD_DM_AC_UXD_D2_RK2(rand, chol, subset)
4570#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4571 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGD_DM_AC_UXD_D2_RK2
4572#endif
4573 use pm_kind, only: RKG => RK2
4574 real(RKG) , intent(out) , contiguous :: rand(:,:)
4575 real(RKG) , intent(in) , contiguous :: chol(:,:)
4576 type(uppDia_type) , intent(in) :: subset
4577 end subroutine
4578#endif
4579
4580#if RK1_ENABLED
4581 module subroutine setMNR_RNGD_DM_AC_UXD_D2_RK1(rand, chol, subset)
4582#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4583 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGD_DM_AC_UXD_D2_RK1
4584#endif
4585 use pm_kind, only: RKG => RK1
4586 real(RKG) , intent(out) , contiguous :: rand(:,:)
4587 real(RKG) , intent(in) , contiguous :: chol(:,:)
4588 type(uppDia_type) , intent(in) :: subset
4589 end subroutine
4590#endif
4591
4592 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4593
4594#if RK5_ENABLED
4595 module subroutine setMNR_RNGD_DM_AC_XLD_D2_RK5(rand, chol, subset)
4596#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4597 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGD_DM_AC_XLD_D2_RK5
4598#endif
4599 use pm_kind, only: RKG => RK5
4600 real(RKG) , intent(out) , contiguous :: rand(:,:)
4601 real(RKG) , intent(in) , contiguous :: chol(:,:)
4602 type(lowDia_type) , intent(in) :: subset
4603 end subroutine
4604#endif
4605
4606#if RK4_ENABLED
4607 module subroutine setMNR_RNGD_DM_AC_XLD_D2_RK4(rand, chol, subset)
4608#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4609 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGD_DM_AC_XLD_D2_RK4
4610#endif
4611 use pm_kind, only: RKG => RK4
4612 real(RKG) , intent(out) , contiguous :: rand(:,:)
4613 real(RKG) , intent(in) , contiguous :: chol(:,:)
4614 type(lowDia_type) , intent(in) :: subset
4615 end subroutine
4616#endif
4617
4618#if RK3_ENABLED
4619 module subroutine setMNR_RNGD_DM_AC_XLD_D2_RK3(rand, chol, subset)
4620#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4621 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGD_DM_AC_XLD_D2_RK3
4622#endif
4623 use pm_kind, only: RKG => RK3
4624 real(RKG) , intent(out) , contiguous :: rand(:,:)
4625 real(RKG) , intent(in) , contiguous :: chol(:,:)
4626 type(lowDia_type) , intent(in) :: subset
4627 end subroutine
4628#endif
4629
4630#if RK2_ENABLED
4631 module subroutine setMNR_RNGD_DM_AC_XLD_D2_RK2(rand, chol, subset)
4632#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4633 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGD_DM_AC_XLD_D2_RK2
4634#endif
4635 use pm_kind, only: RKG => RK2
4636 real(RKG) , intent(out) , contiguous :: rand(:,:)
4637 real(RKG) , intent(in) , contiguous :: chol(:,:)
4638 type(lowDia_type) , intent(in) :: subset
4639 end subroutine
4640#endif
4641
4642#if RK1_ENABLED
4643 module subroutine setMNR_RNGD_DM_AC_XLD_D2_RK1(rand, chol, subset)
4644#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4645 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGD_DM_AC_XLD_D2_RK1
4646#endif
4647 use pm_kind, only: RKG => RK1
4648 real(RKG) , intent(out) , contiguous :: rand(:,:)
4649 real(RKG) , intent(in) , contiguous :: chol(:,:)
4650 type(lowDia_type) , intent(in) :: subset
4651 end subroutine
4652#endif
4653
4654 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4655
4656#if RK5_ENABLED
4657 module subroutine setMNR_RNGD_AM_AC_UXD_D2_RK5(rand, mean, chol, subset)
4658#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4659 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGD_AM_AC_UXD_D2_RK5
4660#endif
4661 use pm_kind, only: RKG => RK5
4662 real(RKG) , intent(out) , contiguous :: rand(:,:)
4663 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
4664 type(uppDia_type) , intent(in) :: subset
4665 end subroutine
4666#endif
4667
4668#if RK4_ENABLED
4669 module subroutine setMNR_RNGD_AM_AC_UXD_D2_RK4(rand, mean, chol, subset)
4670#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4671 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGD_AM_AC_UXD_D2_RK4
4672#endif
4673 use pm_kind, only: RKG => RK4
4674 real(RKG) , intent(out) , contiguous :: rand(:,:)
4675 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
4676 type(uppDia_type) , intent(in) :: subset
4677 end subroutine
4678#endif
4679
4680#if RK3_ENABLED
4681 module subroutine setMNR_RNGD_AM_AC_UXD_D2_RK3(rand, mean, chol, subset)
4682#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4683 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGD_AM_AC_UXD_D2_RK3
4684#endif
4685 use pm_kind, only: RKG => RK3
4686 real(RKG) , intent(out) , contiguous :: rand(:,:)
4687 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
4688 type(uppDia_type) , intent(in) :: subset
4689 end subroutine
4690#endif
4691
4692#if RK2_ENABLED
4693 module subroutine setMNR_RNGD_AM_AC_UXD_D2_RK2(rand, mean, chol, subset)
4694#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4695 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGD_AM_AC_UXD_D2_RK2
4696#endif
4697 use pm_kind, only: RKG => RK2
4698 real(RKG) , intent(out) , contiguous :: rand(:,:)
4699 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
4700 type(uppDia_type) , intent(in) :: subset
4701 end subroutine
4702#endif
4703
4704#if RK1_ENABLED
4705 module subroutine setMNR_RNGD_AM_AC_UXD_D2_RK1(rand, mean, chol, subset)
4706#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4707 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGD_AM_AC_UXD_D2_RK1
4708#endif
4709 use pm_kind, only: RKG => RK1
4710 real(RKG) , intent(out) , contiguous :: rand(:,:)
4711 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
4712 type(uppDia_type) , intent(in) :: subset
4713 end subroutine
4714#endif
4715
4716 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4717
4718#if RK5_ENABLED
4719 module subroutine setMNR_RNGD_AM_AC_XLD_D2_RK5(rand, mean, chol, subset)
4720#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4721 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGD_AM_AC_XLD_D2_RK5
4722#endif
4723 use pm_kind, only: RKG => RK5
4724 real(RKG) , intent(out) , contiguous :: rand(:,:)
4725 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
4726 type(lowDia_type) , intent(in) :: subset
4727 end subroutine
4728#endif
4729
4730#if RK4_ENABLED
4731 module subroutine setMNR_RNGD_AM_AC_XLD_D2_RK4(rand, mean, chol, subset)
4732#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4733 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGD_AM_AC_XLD_D2_RK4
4734#endif
4735 use pm_kind, only: RKG => RK4
4736 real(RKG) , intent(out) , contiguous :: rand(:,:)
4737 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
4738 type(lowDia_type) , intent(in) :: subset
4739 end subroutine
4740#endif
4741
4742#if RK3_ENABLED
4743 module subroutine setMNR_RNGD_AM_AC_XLD_D2_RK3(rand, mean, chol, subset)
4744#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4745 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGD_AM_AC_XLD_D2_RK3
4746#endif
4747 use pm_kind, only: RKG => RK3
4748 real(RKG) , intent(out) , contiguous :: rand(:,:)
4749 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
4750 type(lowDia_type) , intent(in) :: subset
4751 end subroutine
4752#endif
4753
4754#if RK2_ENABLED
4755 module subroutine setMNR_RNGD_AM_AC_XLD_D2_RK2(rand, mean, chol, subset)
4756#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4757 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGD_AM_AC_XLD_D2_RK2
4758#endif
4759 use pm_kind, only: RKG => RK2
4760 real(RKG) , intent(out) , contiguous :: rand(:,:)
4761 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
4762 type(lowDia_type) , intent(in) :: subset
4763 end subroutine
4764#endif
4765
4766#if RK1_ENABLED
4767 module subroutine setMNR_RNGD_AM_AC_XLD_D2_RK1(rand, mean, chol, subset)
4768#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4769 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGD_AM_AC_XLD_D2_RK1
4770#endif
4771 use pm_kind, only: RKG => RK1
4772 real(RKG) , intent(out) , contiguous :: rand(:,:)
4773 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
4774 type(lowDia_type) , intent(in) :: subset
4775 end subroutine
4776#endif
4777
4778 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4779
4780 end interface
4781
4782 ! D2 RNGF
4783
4784 interface setMultiNormRand
4785
4786 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4787
4788#if RK5_ENABLED
4789 module subroutine setMNR_RNGF_DM_DC_XXX_D2_RK5(rng, rand)
4790#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4791 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGF_DM_DC_XXX_D2_RK5
4792#endif
4793 use pm_kind, only: RKG => RK5
4794 type(rngf_type) , intent(in) :: rng
4795 real(RKG) , intent(out) , contiguous :: rand(:,:)
4796 end subroutine
4797#endif
4798
4799#if RK4_ENABLED
4800 module subroutine setMNR_RNGF_DM_DC_XXX_D2_RK4(rng, rand)
4801#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4802 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGF_DM_DC_XXX_D2_RK4
4803#endif
4804 use pm_kind, only: RKG => RK4
4805 type(rngf_type) , intent(in) :: rng
4806 real(RKG) , intent(out) , contiguous :: rand(:,:)
4807 end subroutine
4808#endif
4809
4810#if RK3_ENABLED
4811 module subroutine setMNR_RNGF_DM_DC_XXX_D2_RK3(rng, rand)
4812#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4813 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGF_DM_DC_XXX_D2_RK3
4814#endif
4815 use pm_kind, only: RKG => RK3
4816 type(rngf_type) , intent(in) :: rng
4817 real(RKG) , intent(out) , contiguous :: rand(:,:)
4818 end subroutine
4819#endif
4820
4821#if RK2_ENABLED
4822 module subroutine setMNR_RNGF_DM_DC_XXX_D2_RK2(rng, rand)
4823#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4824 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGF_DM_DC_XXX_D2_RK2
4825#endif
4826 use pm_kind, only: RKG => RK2
4827 type(rngf_type) , intent(in) :: rng
4828 real(RKG) , intent(out) , contiguous :: rand(:,:)
4829 end subroutine
4830#endif
4831
4832#if RK1_ENABLED
4833 module subroutine setMNR_RNGF_DM_DC_XXX_D2_RK1(rng, rand)
4834#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4835 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGF_DM_DC_XXX_D2_RK1
4836#endif
4837 use pm_kind, only: RKG => RK1
4838 type(rngf_type) , intent(in) :: rng
4839 real(RKG) , intent(out) , contiguous :: rand(:,:)
4840 end subroutine
4841#endif
4842
4843 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4844
4845#if RK5_ENABLED
4846 module subroutine setMNR_RNGF_AM_DC_XXX_D2_RK5(rng, rand, mean)
4847#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4848 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGF_AM_DC_XXX_D2_RK5
4849#endif
4850 use pm_kind, only: RKG => RK5
4851 type(rngf_type) , intent(in) :: rng
4852 real(RKG) , intent(out) , contiguous :: rand(:,:)
4853 real(RKG) , intent(in) , contiguous :: mean(:)
4854 end subroutine
4855#endif
4856
4857#if RK4_ENABLED
4858 module subroutine setMNR_RNGF_AM_DC_XXX_D2_RK4(rng, rand, mean)
4859#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4860 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGF_AM_DC_XXX_D2_RK4
4861#endif
4862 use pm_kind, only: RKG => RK4
4863 type(rngf_type) , intent(in) :: rng
4864 real(RKG) , intent(out) , contiguous :: rand(:,:)
4865 real(RKG) , intent(in) , contiguous :: mean(:)
4866 end subroutine
4867#endif
4868
4869#if RK3_ENABLED
4870 module subroutine setMNR_RNGF_AM_DC_XXX_D2_RK3(rng, rand, mean)
4871#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4872 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGF_AM_DC_XXX_D2_RK3
4873#endif
4874 use pm_kind, only: RKG => RK3
4875 type(rngf_type) , intent(in) :: rng
4876 real(RKG) , intent(out) , contiguous :: rand(:,:)
4877 real(RKG) , intent(in) , contiguous :: mean(:)
4878 end subroutine
4879#endif
4880
4881#if RK2_ENABLED
4882 module subroutine setMNR_RNGF_AM_DC_XXX_D2_RK2(rng, rand, mean)
4883#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4884 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGF_AM_DC_XXX_D2_RK2
4885#endif
4886 use pm_kind, only: RKG => RK2
4887 type(rngf_type) , intent(in) :: rng
4888 real(RKG) , intent(out) , contiguous :: rand(:,:)
4889 real(RKG) , intent(in) , contiguous :: mean(:)
4890 end subroutine
4891#endif
4892
4893#if RK1_ENABLED
4894 module subroutine setMNR_RNGF_AM_DC_XXX_D2_RK1(rng, rand, mean)
4895#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4896 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGF_AM_DC_XXX_D2_RK1
4897#endif
4898 use pm_kind, only: RKG => RK1
4899 type(rngf_type) , intent(in) :: rng
4900 real(RKG) , intent(out) , contiguous :: rand(:,:)
4901 real(RKG) , intent(in) , contiguous :: mean(:)
4902 end subroutine
4903#endif
4904
4905 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4906
4907#if RK5_ENABLED
4908 module subroutine setMNR_RNGF_DM_AC_UXD_D2_RK5(rng, rand, chol, subset)
4909#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4910 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGF_DM_AC_UXD_D2_RK5
4911#endif
4912 use pm_kind, only: RKG => RK5
4913 type(rngf_type) , intent(in) :: rng
4914 real(RKG) , intent(out) , contiguous :: rand(:,:)
4915 real(RKG) , intent(in) , contiguous :: chol(:,:)
4916 type(uppDia_type) , intent(in) :: subset
4917 end subroutine
4918#endif
4919
4920#if RK4_ENABLED
4921 module subroutine setMNR_RNGF_DM_AC_UXD_D2_RK4(rng, rand, chol, subset)
4922#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4923 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGF_DM_AC_UXD_D2_RK4
4924#endif
4925 use pm_kind, only: RKG => RK4
4926 type(rngf_type) , intent(in) :: rng
4927 real(RKG) , intent(out) , contiguous :: rand(:,:)
4928 real(RKG) , intent(in) , contiguous :: chol(:,:)
4929 type(uppDia_type) , intent(in) :: subset
4930 end subroutine
4931#endif
4932
4933#if RK3_ENABLED
4934 module subroutine setMNR_RNGF_DM_AC_UXD_D2_RK3(rng, rand, chol, subset)
4935#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4936 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGF_DM_AC_UXD_D2_RK3
4937#endif
4938 use pm_kind, only: RKG => RK3
4939 type(rngf_type) , intent(in) :: rng
4940 real(RKG) , intent(out) , contiguous :: rand(:,:)
4941 real(RKG) , intent(in) , contiguous :: chol(:,:)
4942 type(uppDia_type) , intent(in) :: subset
4943 end subroutine
4944#endif
4945
4946#if RK2_ENABLED
4947 module subroutine setMNR_RNGF_DM_AC_UXD_D2_RK2(rng, rand, chol, subset)
4948#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4949 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGF_DM_AC_UXD_D2_RK2
4950#endif
4951 use pm_kind, only: RKG => RK2
4952 type(rngf_type) , intent(in) :: rng
4953 real(RKG) , intent(out) , contiguous :: rand(:,:)
4954 real(RKG) , intent(in) , contiguous :: chol(:,:)
4955 type(uppDia_type) , intent(in) :: subset
4956 end subroutine
4957#endif
4958
4959#if RK1_ENABLED
4960 module subroutine setMNR_RNGF_DM_AC_UXD_D2_RK1(rng, rand, chol, subset)
4961#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4962 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGF_DM_AC_UXD_D2_RK1
4963#endif
4964 use pm_kind, only: RKG => RK1
4965 type(rngf_type) , intent(in) :: rng
4966 real(RKG) , intent(out) , contiguous :: rand(:,:)
4967 real(RKG) , intent(in) , contiguous :: chol(:,:)
4968 type(uppDia_type) , intent(in) :: subset
4969 end subroutine
4970#endif
4971
4972 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4973
4974#if RK5_ENABLED
4975 module subroutine setMNR_RNGF_DM_AC_XLD_D2_RK5(rng, rand, chol, subset)
4976#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4977 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGF_DM_AC_XLD_D2_RK5
4978#endif
4979 use pm_kind, only: RKG => RK5
4980 type(rngf_type) , intent(in) :: rng
4981 real(RKG) , intent(out) , contiguous :: rand(:,:)
4982 real(RKG) , intent(in) , contiguous :: chol(:,:)
4983 type(lowDia_type) , intent(in) :: subset
4984 end subroutine
4985#endif
4986
4987#if RK4_ENABLED
4988 module subroutine setMNR_RNGF_DM_AC_XLD_D2_RK4(rng, rand, chol, subset)
4989#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4990 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGF_DM_AC_XLD_D2_RK4
4991#endif
4992 use pm_kind, only: RKG => RK4
4993 type(rngf_type) , intent(in) :: rng
4994 real(RKG) , intent(out) , contiguous :: rand(:,:)
4995 real(RKG) , intent(in) , contiguous :: chol(:,:)
4996 type(lowDia_type) , intent(in) :: subset
4997 end subroutine
4998#endif
4999
5000#if RK3_ENABLED
5001 module subroutine setMNR_RNGF_DM_AC_XLD_D2_RK3(rng, rand, chol, subset)
5002#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5003 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGF_DM_AC_XLD_D2_RK3
5004#endif
5005 use pm_kind, only: RKG => RK3
5006 type(rngf_type) , intent(in) :: rng
5007 real(RKG) , intent(out) , contiguous :: rand(:,:)
5008 real(RKG) , intent(in) , contiguous :: chol(:,:)
5009 type(lowDia_type) , intent(in) :: subset
5010 end subroutine
5011#endif
5012
5013#if RK2_ENABLED
5014 module subroutine setMNR_RNGF_DM_AC_XLD_D2_RK2(rng, rand, chol, subset)
5015#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5016 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGF_DM_AC_XLD_D2_RK2
5017#endif
5018 use pm_kind, only: RKG => RK2
5019 type(rngf_type) , intent(in) :: rng
5020 real(RKG) , intent(out) , contiguous :: rand(:,:)
5021 real(RKG) , intent(in) , contiguous :: chol(:,:)
5022 type(lowDia_type) , intent(in) :: subset
5023 end subroutine
5024#endif
5025
5026#if RK1_ENABLED
5027 module subroutine setMNR_RNGF_DM_AC_XLD_D2_RK1(rng, rand, chol, subset)
5028#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5029 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGF_DM_AC_XLD_D2_RK1
5030#endif
5031 use pm_kind, only: RKG => RK1
5032 type(rngf_type) , intent(in) :: rng
5033 real(RKG) , intent(out) , contiguous :: rand(:,:)
5034 real(RKG) , intent(in) , contiguous :: chol(:,:)
5035 type(lowDia_type) , intent(in) :: subset
5036 end subroutine
5037#endif
5038
5039 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5040
5041#if RK5_ENABLED
5042 module subroutine setMNR_RNGF_AM_AC_UXD_D2_RK5(rng, rand, mean, chol, subset)
5043#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5044 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGF_AM_AC_UXD_D2_RK5
5045#endif
5046 use pm_kind, only: RKG => RK5
5047 type(rngf_type) , intent(in) :: rng
5048 real(RKG) , intent(out) , contiguous :: rand(:,:)
5049 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
5050 type(uppDia_type) , intent(in) :: subset
5051 end subroutine
5052#endif
5053
5054#if RK4_ENABLED
5055 module subroutine setMNR_RNGF_AM_AC_UXD_D2_RK4(rng, rand, mean, chol, subset)
5056#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5057 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGF_AM_AC_UXD_D2_RK4
5058#endif
5059 use pm_kind, only: RKG => RK4
5060 type(rngf_type) , intent(in) :: rng
5061 real(RKG) , intent(out) , contiguous :: rand(:,:)
5062 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
5063 type(uppDia_type) , intent(in) :: subset
5064 end subroutine
5065#endif
5066
5067#if RK3_ENABLED
5068 module subroutine setMNR_RNGF_AM_AC_UXD_D2_RK3(rng, rand, mean, chol, subset)
5069#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5070 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGF_AM_AC_UXD_D2_RK3
5071#endif
5072 use pm_kind, only: RKG => RK3
5073 type(rngf_type) , intent(in) :: rng
5074 real(RKG) , intent(out) , contiguous :: rand(:,:)
5075 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
5076 type(uppDia_type) , intent(in) :: subset
5077 end subroutine
5078#endif
5079
5080#if RK2_ENABLED
5081 module subroutine setMNR_RNGF_AM_AC_UXD_D2_RK2(rng, rand, mean, chol, subset)
5082#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5083 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGF_AM_AC_UXD_D2_RK2
5084#endif
5085 use pm_kind, only: RKG => RK2
5086 type(rngf_type) , intent(in) :: rng
5087 real(RKG) , intent(out) , contiguous :: rand(:,:)
5088 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
5089 type(uppDia_type) , intent(in) :: subset
5090 end subroutine
5091#endif
5092
5093#if RK1_ENABLED
5094 module subroutine setMNR_RNGF_AM_AC_UXD_D2_RK1(rng, rand, mean, chol, subset)
5095#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5096 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGF_AM_AC_UXD_D2_RK1
5097#endif
5098 use pm_kind, only: RKG => RK1
5099 type(rngf_type) , intent(in) :: rng
5100 real(RKG) , intent(out) , contiguous :: rand(:,:)
5101 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
5102 type(uppDia_type) , intent(in) :: subset
5103 end subroutine
5104#endif
5105
5106 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5107
5108#if RK5_ENABLED
5109 module subroutine setMNR_RNGF_AM_AC_XLD_D2_RK5(rng, rand, mean, chol, subset)
5110#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5111 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGF_AM_AC_XLD_D2_RK5
5112#endif
5113 use pm_kind, only: RKG => RK5
5114 type(rngf_type) , intent(in) :: rng
5115 real(RKG) , intent(out) , contiguous :: rand(:,:)
5116 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
5117 type(lowDia_type) , intent(in) :: subset
5118 end subroutine
5119#endif
5120
5121#if RK4_ENABLED
5122 module subroutine setMNR_RNGF_AM_AC_XLD_D2_RK4(rng, rand, mean, chol, subset)
5123#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5124 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGF_AM_AC_XLD_D2_RK4
5125#endif
5126 use pm_kind, only: RKG => RK4
5127 type(rngf_type) , intent(in) :: rng
5128 real(RKG) , intent(out) , contiguous :: rand(:,:)
5129 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
5130 type(lowDia_type) , intent(in) :: subset
5131 end subroutine
5132#endif
5133
5134#if RK3_ENABLED
5135 module subroutine setMNR_RNGF_AM_AC_XLD_D2_RK3(rng, rand, mean, chol, subset)
5136#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5137 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGF_AM_AC_XLD_D2_RK3
5138#endif
5139 use pm_kind, only: RKG => RK3
5140 type(rngf_type) , intent(in) :: rng
5141 real(RKG) , intent(out) , contiguous :: rand(:,:)
5142 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
5143 type(lowDia_type) , intent(in) :: subset
5144 end subroutine
5145#endif
5146
5147#if RK2_ENABLED
5148 module subroutine setMNR_RNGF_AM_AC_XLD_D2_RK2(rng, rand, mean, chol, subset)
5149#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5150 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGF_AM_AC_XLD_D2_RK2
5151#endif
5152 use pm_kind, only: RKG =