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 => RK2
5153 type(rngf_type) , intent(in) :: rng
5154 real(RKG) , intent(out) , contiguous :: rand(:,:)
5155 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
5156 type(lowDia_type) , intent(in) :: subset
5157 end subroutine
5158#endif
5159
5160#if RK1_ENABLED
5161 module subroutine setMNR_RNGF_AM_AC_XLD_D2_RK1(rng, rand, mean, chol, subset)
5162#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5163 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGF_AM_AC_XLD_D2_RK1
5164#endif
5165 use pm_kind, only: RKG => RK1
5166 type(rngf_type) , intent(in) :: rng
5167 real(RKG) , intent(out) , contiguous :: rand(:,:)
5168 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
5169 type(lowDia_type) , intent(in) :: subset
5170 end subroutine
5171#endif
5172
5173 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5174
5175 end interface
5176
5177 ! D2 RNGX
5178
5179 interface setMultiNormRand
5180
5181 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5182
5183#if RK5_ENABLED
5184 PURE module subroutine setMNR_RNGX_DM_DC_XXX_D2_RK5(rng, rand)
5185#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5186 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGX_DM_DC_XXX_D2_RK5
5187#endif
5188 use pm_kind, only: RKG => RK5
5189 type(xoshiro256ssw_type), intent(inout) :: rng
5190 real(RKG) , intent(out) , contiguous :: rand(:,:)
5191 end subroutine
5192#endif
5193
5194#if RK4_ENABLED
5195 PURE module subroutine setMNR_RNGX_DM_DC_XXX_D2_RK4(rng, rand)
5196#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5197 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGX_DM_DC_XXX_D2_RK4
5198#endif
5199 use pm_kind, only: RKG => RK4
5200 type(xoshiro256ssw_type), intent(inout) :: rng
5201 real(RKG) , intent(out) , contiguous :: rand(:,:)
5202 end subroutine
5203#endif
5204
5205#if RK3_ENABLED
5206 PURE module subroutine setMNR_RNGX_DM_DC_XXX_D2_RK3(rng, rand)
5207#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5208 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGX_DM_DC_XXX_D2_RK3
5209#endif
5210 use pm_kind, only: RKG => RK3
5211 type(xoshiro256ssw_type), intent(inout) :: rng
5212 real(RKG) , intent(out) , contiguous :: rand(:,:)
5213 end subroutine
5214#endif
5215
5216#if RK2_ENABLED
5217 PURE module subroutine setMNR_RNGX_DM_DC_XXX_D2_RK2(rng, rand)
5218#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5219 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGX_DM_DC_XXX_D2_RK2
5220#endif
5221 use pm_kind, only: RKG => RK2
5222 type(xoshiro256ssw_type), intent(inout) :: rng
5223 real(RKG) , intent(out) , contiguous :: rand(:,:)
5224 end subroutine
5225#endif
5226
5227#if RK1_ENABLED
5228 PURE module subroutine setMNR_RNGX_DM_DC_XXX_D2_RK1(rng, rand)
5229#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5230 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGX_DM_DC_XXX_D2_RK1
5231#endif
5232 use pm_kind, only: RKG => RK1
5233 type(xoshiro256ssw_type), intent(inout) :: rng
5234 real(RKG) , intent(out) , contiguous :: rand(:,:)
5235 end subroutine
5236#endif
5237
5238 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5239
5240#if RK5_ENABLED
5241 PURE module subroutine setMNR_RNGX_AM_DC_XXX_D2_RK5(rng, rand, mean)
5242#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5243 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGX_AM_DC_XXX_D2_RK5
5244#endif
5245 use pm_kind, only: RKG => RK5
5246 type(xoshiro256ssw_type), intent(inout) :: rng
5247 real(RKG) , intent(out) , contiguous :: rand(:,:)
5248 real(RKG) , intent(in) , contiguous :: mean(:)
5249 end subroutine
5250#endif
5251
5252#if RK4_ENABLED
5253 PURE module subroutine setMNR_RNGX_AM_DC_XXX_D2_RK4(rng, rand, mean)
5254#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5255 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGX_AM_DC_XXX_D2_RK4
5256#endif
5257 use pm_kind, only: RKG => RK4
5258 type(xoshiro256ssw_type), intent(inout) :: rng
5259 real(RKG) , intent(out) , contiguous :: rand(:,:)
5260 real(RKG) , intent(in) , contiguous :: mean(:)
5261 end subroutine
5262#endif
5263
5264#if RK3_ENABLED
5265 PURE module subroutine setMNR_RNGX_AM_DC_XXX_D2_RK3(rng, rand, mean)
5266#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5267 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGX_AM_DC_XXX_D2_RK3
5268#endif
5269 use pm_kind, only: RKG => RK3
5270 type(xoshiro256ssw_type), intent(inout) :: rng
5271 real(RKG) , intent(out) , contiguous :: rand(:,:)
5272 real(RKG) , intent(in) , contiguous :: mean(:)
5273 end subroutine
5274#endif
5275
5276#if RK2_ENABLED
5277 PURE module subroutine setMNR_RNGX_AM_DC_XXX_D2_RK2(rng, rand, mean)
5278#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5279 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGX_AM_DC_XXX_D2_RK2
5280#endif
5281 use pm_kind, only: RKG => RK2
5282 type(xoshiro256ssw_type), intent(inout) :: rng
5283 real(RKG) , intent(out) , contiguous :: rand(:,:)
5284 real(RKG) , intent(in) , contiguous :: mean(:)
5285 end subroutine
5286#endif
5287
5288#if RK1_ENABLED
5289 PURE module subroutine setMNR_RNGX_AM_DC_XXX_D2_RK1(rng, rand, mean)
5290#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5291 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGX_AM_DC_XXX_D2_RK1
5292#endif
5293 use pm_kind, only: RKG => RK1
5294 type(xoshiro256ssw_type), intent(inout) :: rng
5295 real(RKG) , intent(out) , contiguous :: rand(:,:)
5296 real(RKG) , intent(in) , contiguous :: mean(:)
5297 end subroutine
5298#endif
5299
5300 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5301
5302#if RK5_ENABLED
5303 PURE module subroutine setMNR_RNGX_DM_AC_UXD_D2_RK5(rng, rand, chol, subset)
5304#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5305 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGX_DM_AC_UXD_D2_RK5
5306#endif
5307 use pm_kind, only: RKG => RK5
5308 type(xoshiro256ssw_type), intent(inout) :: rng
5309 real(RKG) , intent(out) , contiguous :: rand(:,:)
5310 real(RKG) , intent(in) , contiguous :: chol(:,:)
5311 type(uppDia_type) , intent(in) :: subset
5312 end subroutine
5313#endif
5314
5315#if RK4_ENABLED
5316 PURE module subroutine setMNR_RNGX_DM_AC_UXD_D2_RK4(rng, rand, chol, subset)
5317#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5318 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGX_DM_AC_UXD_D2_RK4
5319#endif
5320 use pm_kind, only: RKG => RK4
5321 type(xoshiro256ssw_type), intent(inout) :: rng
5322 real(RKG) , intent(out) , contiguous :: rand(:,:)
5323 real(RKG) , intent(in) , contiguous :: chol(:,:)
5324 type(uppDia_type) , intent(in) :: subset
5325 end subroutine
5326#endif
5327
5328#if RK3_ENABLED
5329 PURE module subroutine setMNR_RNGX_DM_AC_UXD_D2_RK3(rng, rand, chol, subset)
5330#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5331 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGX_DM_AC_UXD_D2_RK3
5332#endif
5333 use pm_kind, only: RKG => RK3
5334 type(xoshiro256ssw_type), intent(inout) :: rng
5335 real(RKG) , intent(out) , contiguous :: rand(:,:)
5336 real(RKG) , intent(in) , contiguous :: chol(:,:)
5337 type(uppDia_type) , intent(in) :: subset
5338 end subroutine
5339#endif
5340
5341#if RK2_ENABLED
5342 PURE module subroutine setMNR_RNGX_DM_AC_UXD_D2_RK2(rng, rand, chol, subset)
5343#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5344 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGX_DM_AC_UXD_D2_RK2
5345#endif
5346 use pm_kind, only: RKG => RK2
5347 type(xoshiro256ssw_type), intent(inout) :: rng
5348 real(RKG) , intent(out) , contiguous :: rand(:,:)
5349 real(RKG) , intent(in) , contiguous :: chol(:,:)
5350 type(uppDia_type) , intent(in) :: subset
5351 end subroutine
5352#endif
5353
5354#if RK1_ENABLED
5355 PURE module subroutine setMNR_RNGX_DM_AC_UXD_D2_RK1(rng, rand, chol, subset)
5356#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5357 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGX_DM_AC_UXD_D2_RK1
5358#endif
5359 use pm_kind, only: RKG => RK1
5360 type(xoshiro256ssw_type), intent(inout) :: rng
5361 real(RKG) , intent(out) , contiguous :: rand(:,:)
5362 real(RKG) , intent(in) , contiguous :: chol(:,:)
5363 type(uppDia_type) , intent(in) :: subset
5364 end subroutine
5365#endif
5366
5367 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5368
5369#if RK5_ENABLED
5370 PURE module subroutine setMNR_RNGX_DM_AC_XLD_D2_RK5(rng, rand, chol, subset)
5371#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5372 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGX_DM_AC_XLD_D2_RK5
5373#endif
5374 use pm_kind, only: RKG => RK5
5375 type(xoshiro256ssw_type), intent(inout) :: rng
5376 real(RKG) , intent(out) , contiguous :: rand(:,:)
5377 real(RKG) , intent(in) , contiguous :: chol(:,:)
5378 type(lowDia_type) , intent(in) :: subset
5379 end subroutine
5380#endif
5381
5382#if RK4_ENABLED
5383 PURE module subroutine setMNR_RNGX_DM_AC_XLD_D2_RK4(rng, rand, chol, subset)
5384#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5385 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGX_DM_AC_XLD_D2_RK4
5386#endif
5387 use pm_kind, only: RKG => RK4
5388 type(xoshiro256ssw_type), intent(inout) :: rng
5389 real(RKG) , intent(out) , contiguous :: rand(:,:)
5390 real(RKG) , intent(in) , contiguous :: chol(:,:)
5391 type(lowDia_type) , intent(in) :: subset
5392 end subroutine
5393#endif
5394
5395#if RK3_ENABLED
5396 PURE module subroutine setMNR_RNGX_DM_AC_XLD_D2_RK3(rng, rand, chol, subset)
5397#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5398 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGX_DM_AC_XLD_D2_RK3
5399#endif
5400 use pm_kind, only: RKG => RK3
5401 type(xoshiro256ssw_type), intent(inout) :: rng
5402 real(RKG) , intent(out) , contiguous :: rand(:,:)
5403 real(RKG) , intent(in) , contiguous :: chol(:,:)
5404 type(lowDia_type) , intent(in) :: subset
5405 end subroutine
5406#endif
5407
5408#if RK2_ENABLED
5409 PURE module subroutine setMNR_RNGX_DM_AC_XLD_D2_RK2(rng, rand, chol, subset)
5410#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5411 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGX_DM_AC_XLD_D2_RK2
5412#endif
5413 use pm_kind, only: RKG => RK2
5414 type(xoshiro256ssw_type), intent(inout) :: rng
5415 real(RKG) , intent(out) , contiguous :: rand(:,:)
5416 real(RKG) , intent(in) , contiguous :: chol(:,:)
5417 type(lowDia_type) , intent(in) :: subset
5418 end subroutine
5419#endif
5420
5421#if RK1_ENABLED
5422 PURE module subroutine setMNR_RNGX_DM_AC_XLD_D2_RK1(rng, rand, chol, subset)
5423#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5424 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGX_DM_AC_XLD_D2_RK1
5425#endif
5426 use pm_kind, only: RKG => RK1
5427 type(xoshiro256ssw_type), intent(inout) :: rng
5428 real(RKG) , intent(out) , contiguous :: rand(:,:)
5429 real(RKG) , intent(in) , contiguous :: chol(:,:)
5430 type(lowDia_type) , intent(in) :: subset
5431 end subroutine
5432#endif
5433
5434 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5435
5436#if RK5_ENABLED
5437 PURE module subroutine setMNR_RNGX_AM_AC_UXD_D2_RK5(rng, rand, mean, chol, subset)
5438#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5439 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGX_AM_AC_UXD_D2_RK5
5440#endif
5441 use pm_kind, only: RKG => RK5
5442 type(xoshiro256ssw_type), intent(inout) :: rng
5443 real(RKG) , intent(out) , contiguous :: rand(:,:)
5444 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
5445 type(uppDia_type) , intent(in) :: subset
5446 end subroutine
5447#endif
5448
5449#if RK4_ENABLED
5450 PURE module subroutine setMNR_RNGX_AM_AC_UXD_D2_RK4(rng, rand, mean, chol, subset)
5451#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5452 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGX_AM_AC_UXD_D2_RK4
5453#endif
5454 use pm_kind, only: RKG => RK4
5455 type(xoshiro256ssw_type), intent(inout) :: rng
5456 real(RKG) , intent(out) , contiguous :: rand(:,:)
5457 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
5458 type(uppDia_type) , intent(in) :: subset
5459 end subroutine
5460#endif
5461
5462#if RK3_ENABLED
5463 PURE module subroutine setMNR_RNGX_AM_AC_UXD_D2_RK3(rng, rand, mean, chol, subset)
5464#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5465 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGX_AM_AC_UXD_D2_RK3
5466#endif
5467 use pm_kind, only: RKG => RK3
5468 type(xoshiro256ssw_type), intent(inout) :: rng
5469 real(RKG) , intent(out) , contiguous :: rand(:,:)
5470 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
5471 type(uppDia_type) , intent(in) :: subset
5472 end subroutine
5473#endif
5474
5475#if RK2_ENABLED
5476 PURE module subroutine setMNR_RNGX_AM_AC_UXD_D2_RK2(rng, rand, mean, chol, subset)
5477#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5478 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGX_AM_AC_UXD_D2_RK2
5479#endif
5480 use pm_kind, only: RKG => RK2
5481 type(xoshiro256ssw_type), intent(inout) :: rng
5482 real(RKG) , intent(out) , contiguous :: rand(:,:)
5483 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
5484 type(uppDia_type) , intent(in) :: subset
5485 end subroutine
5486#endif
5487
5488#if RK1_ENABLED
5489 PURE module subroutine setMNR_RNGX_AM_AC_UXD_D2_RK1(rng, rand, mean, chol, subset)
5490#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5491 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGX_AM_AC_UXD_D2_RK1
5492#endif
5493 use pm_kind, only: RKG => RK1
5494 type(xoshiro256ssw_type), intent(inout) :: rng
5495 real(RKG) , intent(out) , contiguous :: rand(:,:)
5496 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
5497 type(uppDia_type) , intent(in) :: subset
5498 end subroutine
5499#endif
5500
5501 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5502
5503#if RK5_ENABLED
5504 PURE module subroutine setMNR_RNGX_AM_AC_XLD_D2_RK5(rng, rand, mean, chol, subset)
5505#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5506 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGX_AM_AC_XLD_D2_RK5
5507#endif
5508 use pm_kind, only: RKG => RK5
5509 type(xoshiro256ssw_type), intent(inout) :: rng
5510 real(RKG) , intent(out) , contiguous :: rand(:,:)
5511 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
5512 type(lowDia_type) , intent(in) :: subset
5513 end subroutine
5514#endif
5515
5516#if RK4_ENABLED
5517 PURE module subroutine setMNR_RNGX_AM_AC_XLD_D2_RK4(rng, rand, mean, chol, subset)
5518#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5519 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGX_AM_AC_XLD_D2_RK4
5520#endif
5521 use pm_kind, only: RKG => RK4
5522 type(xoshiro256ssw_type), intent(inout) :: rng
5523 real(RKG) , intent(out) , contiguous :: rand(:,:)
5524 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
5525 type(lowDia_type) , intent(in) :: subset
5526 end subroutine
5527#endif
5528
5529#if RK3_ENABLED
5530 PURE module subroutine setMNR_RNGX_AM_AC_XLD_D2_RK3(rng, rand, mean, chol, subset)
5531#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5532 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGX_AM_AC_XLD_D2_RK3
5533#endif
5534 use pm_kind, only: RKG => RK3
5535 type(xoshiro256ssw_type), intent(inout) :: rng
5536 real(RKG) , intent(out) , contiguous :: rand(:,:)
5537 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
5538 type(lowDia_type) , intent(in) :: subset
5539 end subroutine
5540#endif
5541
5542#if RK2_ENABLED
5543 PURE module subroutine setMNR_RNGX_AM_AC_XLD_D2_RK2(rng, rand, mean, chol, subset)
5544#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5545 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGX_AM_AC_XLD_D2_RK2
5546#endif
5547 use pm_kind, only: RKG => RK2
5548 type(xoshiro256ssw_type), intent(inout) :: rng
5549 real(RKG) , intent(out) , contiguous :: rand(:,:)
5550 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
5551 type(lowDia_type) , intent(in) :: subset
5552 end subroutine
5553#endif
5554
5555#if RK1_ENABLED
5556 PURE module subroutine setMNR_RNGX_AM_AC_XLD_D2_RK1(rng, rand, mean, chol, subset)
5557#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
5558 !DEC$ ATTRIBUTES DLLEXPORT :: setMNR_RNGX_AM_AC_XLD_D2_RK1
5559#endif
5560 use pm_kind, only: RKG => RK1
5561 type(xoshiro256ssw_type), intent(inout) :: rng
5562 real(RKG) , intent(out) , contiguous :: rand(:,:)
5563 real(RKG) , intent(in) , contiguous :: mean(:), chol(:,:)
5564 type(lowDia_type) , intent(in) :: subset
5565 end subroutine
5566#endif
5567
5568 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5569
5570 end interface
5571
5572!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5573
5574end module pm_distMultiNorm
Generate and return the natural logarithm of the normalization coefficient of the Probability Density...
Generate and return the natural logarithm of the Probability Density Function (PDF) of the MultiVaria...
Generate and return a (collection) of random vector(s) of size ndim from the ndim-dimensional MultiVa...
Return a (collection) of random vector(s) of size ndim from the ndim-dimensional MultiVariate Normal ...
This module contains classes and procedures for computing various statistical quantities related to t...
character(*, SK), parameter MODULE_NAME
This module contains classes and procedures for computing various statistical quantities related to t...
This module defines the relevant Fortran kind type-parameters frequently used in the ParaMonte librar...
Definition: pm_kind.F90:268
integer, parameter RK5
Definition: pm_kind.F90:478
integer, parameter RK4
Definition: pm_kind.F90:489
integer, parameter RK2
Definition: pm_kind.F90:511
integer, parameter RK3
Definition: pm_kind.F90:500
integer, parameter LK
The default logical kind in the ParaMonte library: kind(.true.) in Fortran, kind(....
Definition: pm_kind.F90:541
integer, parameter IK
The default integer kind in the ParaMonte library: int32 in Fortran, c_int32_t in C-Fortran Interoper...
Definition: pm_kind.F90:540
integer, parameter SK
The default character kind in the ParaMonte library: kind("a") in Fortran, c_char in C-Fortran Intero...
Definition: pm_kind.F90:539
integer, parameter RK1
Definition: pm_kind.F90:522
This module contains abstract and concrete derived types that are required for compile-time resolutio...
type(lowDia_type), parameter lowDia
This is a scalar parameter object of type lowDia_type that is exclusively used to request lower-diago...
type(uppDia_type), parameter uppDia
This is a scalar parameter object of type uppDia_type that is exclusively used to request upper-diago...
This is the derived type for signifying distributions that are of type MultiVariate Normal (MVN) as d...
This is a concrete derived type whose instances can be used to define/request the default uniform ran...
This is the derived type for declaring and generating objects of type xoshiro256ssw_type containing a...
This is a concrete derived type whose instances are exclusively used to request lower-diagonal triang...
This is a concrete derived type whose instances are exclusively used to request upper-diagonal triang...