ParaMonte Fortran 2.0.0
Parallel Monte Carlo and Machine Learning Library
See the latest version documentation.
pm_distPois.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
119
120!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
121
123
124 use pm_kind, only: SK, IK, LK, RKB
126
127 implicit none
128
129 character(*, SK), parameter :: MODULE_NAME = "@pm_distPois"
130
131!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
132
167 end type
168
169!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
170
227
228 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
229
230#if RK5_ENABLED
231 PURE elemental module function getPoisLogPMF_RK5(count, lambda) result(logPMF)
232#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
233 !DEC$ ATTRIBUTES DLLEXPORT :: getPoisLogPMF_RK5
234#endif
235 use pm_kind, only: RKG => RK5
236 integer(IK) , intent(in) :: count
237 real(RKG) , intent(in) :: lambda
238 real(RKG) :: logPMF
239 end function
240#endif
241
242#if RK4_ENABLED
243 PURE elemental module function getPoisLogPMF_RK4(count, lambda) result(logPMF)
244#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
245 !DEC$ ATTRIBUTES DLLEXPORT :: getPoisLogPMF_RK4
246#endif
247 use pm_kind, only: RKG => RK4
248 integer(IK) , intent(in) :: count
249 real(RKG) , intent(in) :: lambda
250 real(RKG) :: logPMF
251 end function
252#endif
253
254#if RK3_ENABLED
255 PURE elemental module function getPoisLogPMF_RK3(count, lambda) result(logPMF)
256#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
257 !DEC$ ATTRIBUTES DLLEXPORT :: getPoisLogPMF_RK3
258#endif
259 use pm_kind, only: RKG => RK3
260 integer(IK) , intent(in) :: count
261 real(RKG) , intent(in) :: lambda
262 real(RKG) :: logPMF
263 end function
264#endif
265
266#if RK2_ENABLED
267 PURE elemental module function getPoisLogPMF_RK2(count, lambda) result(logPMF)
268#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
269 !DEC$ ATTRIBUTES DLLEXPORT :: getPoisLogPMF_RK2
270#endif
271 use pm_kind, only: RKG => RK2
272 integer(IK) , intent(in) :: count
273 real(RKG) , intent(in) :: lambda
274 real(RKG) :: logPMF
275 end function
276#endif
277
278#if RK1_ENABLED
279 PURE elemental module function getPoisLogPMF_RK1(count, lambda) result(logPMF)
280#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
281 !DEC$ ATTRIBUTES DLLEXPORT :: getPoisLogPMF_RK1
282#endif
283 use pm_kind, only: RKG => RK1
284 integer(IK) , intent(in) :: count
285 real(RKG) , intent(in) :: lambda
286 real(RKG) :: logPMF
287 end function
288#endif
289
290 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
291
292 end interface
293
294!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
295
359
360 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
361
362#if RK5_ENABLED
363 PURE elemental module subroutine setPoisLogPMFDef_RK5(logPMF, count, lambda)
364#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
365 !DEC$ ATTRIBUTES DLLEXPORT :: setPoisLogPMFDef_RK5
366#endif
367 use pm_kind, only: RKG => RK5
368 real(RKG) , intent(in) :: lambda
369 real(RKG) , intent(out) :: logPMF
370 integer(IK) , intent(in) :: count
371 end subroutine
372#endif
373
374#if RK4_ENABLED
375 PURE elemental module subroutine setPoisLogPMFDef_RK4(logPMF, count, lambda)
376#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
377 !DEC$ ATTRIBUTES DLLEXPORT :: setPoisLogPMFDef_RK4
378#endif
379 use pm_kind, only: RKG => RK4
380 real(RKG) , intent(in) :: lambda
381 real(RKG) , intent(out) :: logPMF
382 integer(IK) , intent(in) :: count
383 end subroutine
384#endif
385
386#if RK3_ENABLED
387 PURE elemental module subroutine setPoisLogPMFDef_RK3(logPMF, count, lambda)
388#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
389 !DEC$ ATTRIBUTES DLLEXPORT :: setPoisLogPMFDef_RK3
390#endif
391 use pm_kind, only: RKG => RK3
392 real(RKG) , intent(in) :: lambda
393 real(RKG) , intent(out) :: logPMF
394 integer(IK) , intent(in) :: count
395 end subroutine
396#endif
397
398#if RK2_ENABLED
399 PURE elemental module subroutine setPoisLogPMFDef_RK2(logPMF, count, lambda)
400#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
401 !DEC$ ATTRIBUTES DLLEXPORT :: setPoisLogPMFDef_RK2
402#endif
403 use pm_kind, only: RKG => RK2
404 real(RKG) , intent(in) :: lambda
405 real(RKG) , intent(out) :: logPMF
406 integer(IK) , intent(in) :: count
407 end subroutine
408#endif
409
410#if RK1_ENABLED
411 PURE elemental module subroutine setPoisLogPMFDef_RK1(logPMF, count, lambda)
412#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
413 !DEC$ ATTRIBUTES DLLEXPORT :: setPoisLogPMFDef_RK1
414#endif
415 use pm_kind, only: RKG => RK1
416 real(RKG) , intent(in) :: lambda
417 real(RKG) , intent(out) :: logPMF
418 integer(IK) , intent(in) :: count
419 end subroutine
420#endif
421
422 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
423
424#if RK5_ENABLED
425 PURE elemental module subroutine setPoisLogPMFLog_RK5(logPMF, count, lambda, logLambda)
426#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
427 !DEC$ ATTRIBUTES DLLEXPORT :: setPoisLogPMFLog_RK5
428#endif
429 use pm_kind, only: RKG => RK5
430 real(RKG) , intent(in) :: lambda, logLambda
431 real(RKG) , intent(out) :: logPMF
432 integer(IK) , intent(in) :: count
433 end subroutine
434#endif
435
436#if RK4_ENABLED
437 PURE elemental module subroutine setPoisLogPMFLog_RK4(logPMF, count, lambda, logLambda)
438#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
439 !DEC$ ATTRIBUTES DLLEXPORT :: setPoisLogPMFLog_RK4
440#endif
441 use pm_kind, only: RKG => RK4
442 real(RKG) , intent(in) :: lambda, logLambda
443 real(RKG) , intent(out) :: logPMF
444 integer(IK) , intent(in) :: count
445 end subroutine
446#endif
447
448#if RK3_ENABLED
449 PURE elemental module subroutine setPoisLogPMFLog_RK3(logPMF, count, lambda, logLambda)
450#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
451 !DEC$ ATTRIBUTES DLLEXPORT :: setPoisLogPMFLog_RK3
452#endif
453 use pm_kind, only: RKG => RK3
454 real(RKG) , intent(in) :: lambda, logLambda
455 real(RKG) , intent(out) :: logPMF
456 integer(IK) , intent(in) :: count
457 end subroutine
458#endif
459
460#if RK2_ENABLED
461 PURE elemental module subroutine setPoisLogPMFLog_RK2(logPMF, count, lambda, logLambda)
462#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
463 !DEC$ ATTRIBUTES DLLEXPORT :: setPoisLogPMFLog_RK2
464#endif
465 use pm_kind, only: RKG => RK2
466 real(RKG) , intent(in) :: lambda, logLambda
467 real(RKG) , intent(out) :: logPMF
468 integer(IK) , intent(in) :: count
469 end subroutine
470#endif
471
472#if RK1_ENABLED
473 PURE elemental module subroutine setPoisLogPMFLog_RK1(logPMF, count, lambda, logLambda)
474#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
475 !DEC$ ATTRIBUTES DLLEXPORT :: setPoisLogPMFLog_RK1
476#endif
477 use pm_kind, only: RKG => RK1
478 real(RKG) , intent(in) :: lambda, logLambda
479 real(RKG) , intent(out) :: logPMF
480 integer(IK) , intent(in) :: count
481 end subroutine
482#endif
483
484 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
485
486 end interface
487
488!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
489
545 interface getPoisCDF
546
547 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
548
549#if RK5_ENABLED
550 PURE elemental module function getPoisCDF_RK5(count, lambda) result(cdf)
551#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
552 !DEC$ ATTRIBUTES DLLEXPORT :: getPoisCDF_RK5
553#endif
554 use pm_kind, only: RKG => RK5
555 integer(IK) , intent(in) :: count
556 real(RKG) , intent(in) :: lambda
557 real(RKG) :: cdf
558 end function
559#endif
560
561#if RK4_ENABLED
562 PURE elemental module function getPoisCDF_RK4(count, lambda) result(cdf)
563#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
564 !DEC$ ATTRIBUTES DLLEXPORT :: getPoisCDF_RK4
565#endif
566 use pm_kind, only: RKG => RK4
567 integer(IK) , intent(in) :: count
568 real(RKG) , intent(in) :: lambda
569 real(RKG) :: cdf
570 end function
571#endif
572
573#if RK3_ENABLED
574 PURE elemental module function getPoisCDF_RK3(count, lambda) result(cdf)
575#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
576 !DEC$ ATTRIBUTES DLLEXPORT :: getPoisCDF_RK3
577#endif
578 use pm_kind, only: RKG => RK3
579 integer(IK) , intent(in) :: count
580 real(RKG) , intent(in) :: lambda
581 real(RKG) :: cdf
582 end function
583#endif
584
585#if RK2_ENABLED
586 PURE elemental module function getPoisCDF_RK2(count, lambda) result(cdf)
587#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
588 !DEC$ ATTRIBUTES DLLEXPORT :: getPoisCDF_RK2
589#endif
590 use pm_kind, only: RKG => RK2
591 integer(IK) , intent(in) :: count
592 real(RKG) , intent(in) :: lambda
593 real(RKG) :: cdf
594 end function
595#endif
596
597#if RK1_ENABLED
598 PURE elemental module function getPoisCDF_RK1(count, lambda) result(cdf)
599#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
600 !DEC$ ATTRIBUTES DLLEXPORT :: getPoisCDF_RK1
601#endif
602 use pm_kind, only: RKG => RK1
603 integer(IK) , intent(in) :: count
604 real(RKG) , intent(in) :: lambda
605 real(RKG) :: cdf
606 end function
607#endif
608
609 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
610
611 end interface
612
613!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
614
676 interface setPoisCDF
677
678 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
679
680#if RK5_ENABLED
681 PURE elemental module subroutine setPoisCDFLog_RK5(cdf, countP1, lambda, info)
682#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
683 !DEC$ ATTRIBUTES DLLEXPORT :: setPoisCDFLog_RK5
684#endif
685 use pm_kind, only: RKG => RK5
686 real(RKG) , intent(in) :: countP1, lambda
687 real(RKG) , intent(out) :: cdf
688 integer(IK) , intent(out) :: info
689 end subroutine
690#endif
691
692#if RK4_ENABLED
693 PURE elemental module subroutine setPoisCDFLog_RK4(cdf, countP1, lambda, info)
694#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
695 !DEC$ ATTRIBUTES DLLEXPORT :: setPoisCDFLog_RK4
696#endif
697 use pm_kind, only: RKG => RK4
698 real(RKG) , intent(in) :: countP1, lambda
699 real(RKG) , intent(out) :: cdf
700 integer(IK) , intent(out) :: info
701 end subroutine
702#endif
703
704#if RK3_ENABLED
705 PURE elemental module subroutine setPoisCDFLog_RK3(cdf, countP1, lambda, info)
706#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
707 !DEC$ ATTRIBUTES DLLEXPORT :: setPoisCDFLog_RK3
708#endif
709 use pm_kind, only: RKG => RK3
710 real(RKG) , intent(in) :: countP1, lambda
711 real(RKG) , intent(out) :: cdf
712 integer(IK) , intent(out) :: info
713 end subroutine
714#endif
715
716#if RK2_ENABLED
717 PURE elemental module subroutine setPoisCDFLog_RK2(cdf, countP1, lambda, info)
718#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
719 !DEC$ ATTRIBUTES DLLEXPORT :: setPoisCDFLog_RK2
720#endif
721 use pm_kind, only: RKG => RK2
722 real(RKG) , intent(in) :: countP1, lambda
723 real(RKG) , intent(out) :: cdf
724 integer(IK) , intent(out) :: info
725 end subroutine
726#endif
727
728#if RK1_ENABLED
729 PURE elemental module subroutine setPoisCDFLog_RK1(cdf, countP1, lambda, info)
730#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
731 !DEC$ ATTRIBUTES DLLEXPORT :: setPoisCDFLog_RK1
732#endif
733 use pm_kind, only: RKG => RK1
734 real(RKG) , intent(in) :: countP1, lambda
735 real(RKG) , intent(out) :: cdf
736 integer(IK) , intent(out) :: info
737 end subroutine
738#endif
739
740 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
741
742 end interface
743
744!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
745
762 real(RKB) , parameter :: LAMBDA_LIMIT = 10._RKB
763
764!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
765
821 interface getPoisRand
822
823 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
824
825#if RK5_ENABLED
826 impure elemental module function getPoisRand_RK5(lambda) result(rand)
827#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
828 !DEC$ ATTRIBUTES DLLEXPORT :: getPoisRand_RK5
829#endif
830 use pm_kind, only: RKG => RK5
831 integer(IK) :: rand
832 real(RKG) , intent(in) :: lambda
833 end function
834#endif
835
836#if RK4_ENABLED
837 impure elemental module function getPoisRand_RK4(lambda) result(rand)
838#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
839 !DEC$ ATTRIBUTES DLLEXPORT :: getPoisRand_RK4
840#endif
841 use pm_kind, only: RKG => RK4
842 integer(IK) :: rand
843 real(RKG) , intent(in) :: lambda
844 end function
845#endif
846
847#if RK3_ENABLED
848 impure elemental module function getPoisRand_RK3(lambda) result(rand)
849#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
850 !DEC$ ATTRIBUTES DLLEXPORT :: getPoisRand_RK3
851#endif
852 use pm_kind, only: RKG => RK3
853 integer(IK) :: rand
854 real(RKG) , intent(in) :: lambda
855 end function
856#endif
857
858#if RK2_ENABLED
859 impure elemental module function getPoisRand_RK2(lambda) result(rand)
860#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
861 !DEC$ ATTRIBUTES DLLEXPORT :: getPoisRand_RK2
862#endif
863 use pm_kind, only: RKG => RK2
864 integer(IK) :: rand
865 real(RKG) , intent(in) :: lambda
866 end function
867#endif
868
869#if RK1_ENABLED
870 impure elemental module function getPoisRand_RK1(lambda) result(rand)
871#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
872 !DEC$ ATTRIBUTES DLLEXPORT :: getPoisRand_RK1
873#endif
874 use pm_kind, only: RKG => RK1
875 integer(IK) :: rand
876 real(RKG) , intent(in) :: lambda
877 end function
878#endif
879
880 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
881
882 end interface
883
884!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
885
976 interface setPoisRand
977
978 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
979 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
980 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
981
982 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
983 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
984 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
985
986 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
987
988#if RK5_ENABLED
989 impure elemental module subroutine setPoisRandExpRNGD_D0_RK5(rand, expNegLambda)
990#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
991 !DEC$ ATTRIBUTES DLLEXPORT :: setPoisRandExpRNGD_D0_RK5
992#endif
993 use pm_kind, only: RKG => RK5
994 integer(IK) , intent(out) :: rand
995 real(RKG) , intent(in) :: expNegLambda
996 end subroutine
997#endif
998
999#if RK4_ENABLED
1000 impure elemental module subroutine setPoisRandExpRNGD_D0_RK4(rand, expNegLambda)
1001#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1002 !DEC$ ATTRIBUTES DLLEXPORT :: setPoisRandExpRNGD_D0_RK4
1003#endif
1004 use pm_kind, only: RKG => RK4
1005 integer(IK) , intent(out) :: rand
1006 real(RKG) , intent(in) :: expNegLambda
1007 end subroutine
1008#endif
1009
1010#if RK3_ENABLED
1011 impure elemental module subroutine setPoisRandExpRNGD_D0_RK3(rand, expNegLambda)
1012#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1013 !DEC$ ATTRIBUTES DLLEXPORT :: setPoisRandExpRNGD_D0_RK3
1014#endif
1015 use pm_kind, only: RKG => RK3
1016 integer(IK) , intent(out) :: rand
1017 real(RKG) , intent(in) :: expNegLambda
1018 end subroutine
1019#endif
1020
1021#if RK2_ENABLED
1022 impure elemental module subroutine setPoisRandExpRNGD_D0_RK2(rand, expNegLambda)
1023#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1024 !DEC$ ATTRIBUTES DLLEXPORT :: setPoisRandExpRNGD_D0_RK2
1025#endif
1026 use pm_kind, only: RKG => RK2
1027 integer(IK) , intent(out) :: rand
1028 real(RKG) , intent(in) :: expNegLambda
1029 end subroutine
1030#endif
1031
1032#if RK1_ENABLED
1033 impure elemental module subroutine setPoisRandExpRNGD_D0_RK1(rand, expNegLambda)
1034#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1035 !DEC$ ATTRIBUTES DLLEXPORT :: setPoisRandExpRNGD_D0_RK1
1036#endif
1037 use pm_kind, only: RKG => RK1
1038 integer(IK) , intent(out) :: rand
1039 real(RKG) , intent(in) :: expNegLambda
1040 end subroutine
1041#endif
1042
1043 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1044
1045#if RK5_ENABLED
1046 impure elemental module subroutine setPoisRandExpRNGF_D0_RK5(rng, rand, expNegLambda)
1047#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1048 !DEC$ ATTRIBUTES DLLEXPORT :: setPoisRandExpRNGF_D0_RK5
1049#endif
1050 use pm_kind, only: RKG => RK5
1051 type(rngf_type) , intent(in) :: rng
1052 integer(IK) , intent(out) :: rand
1053 real(RKG) , intent(in) :: expNegLambda
1054 end subroutine
1055#endif
1056
1057#if RK4_ENABLED
1058 impure elemental module subroutine setPoisRandExpRNGF_D0_RK4(rng, rand, expNegLambda)
1059#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1060 !DEC$ ATTRIBUTES DLLEXPORT :: setPoisRandExpRNGF_D0_RK4
1061#endif
1062 use pm_kind, only: RKG => RK4
1063 type(rngf_type) , intent(in) :: rng
1064 integer(IK) , intent(out) :: rand
1065 real(RKG) , intent(in) :: expNegLambda
1066 end subroutine
1067#endif
1068
1069#if RK3_ENABLED
1070 impure elemental module subroutine setPoisRandExpRNGF_D0_RK3(rng, rand, expNegLambda)
1071#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1072 !DEC$ ATTRIBUTES DLLEXPORT :: setPoisRandExpRNGF_D0_RK3
1073#endif
1074 use pm_kind, only: RKG => RK3
1075 type(rngf_type) , intent(in) :: rng
1076 integer(IK) , intent(out) :: rand
1077 real(RKG) , intent(in) :: expNegLambda
1078 end subroutine
1079#endif
1080
1081#if RK2_ENABLED
1082 impure elemental module subroutine setPoisRandExpRNGF_D0_RK2(rng, rand, expNegLambda)
1083#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1084 !DEC$ ATTRIBUTES DLLEXPORT :: setPoisRandExpRNGF_D0_RK2
1085#endif
1086 use pm_kind, only: RKG => RK2
1087 type(rngf_type) , intent(in) :: rng
1088 integer(IK) , intent(out) :: rand
1089 real(RKG) , intent(in) :: expNegLambda
1090 end subroutine
1091#endif
1092
1093#if RK1_ENABLED
1094 impure elemental module subroutine setPoisRandExpRNGF_D0_RK1(rng, rand, expNegLambda)
1095#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1096 !DEC$ ATTRIBUTES DLLEXPORT :: setPoisRandExpRNGF_D0_RK1
1097#endif
1098 use pm_kind, only: RKG => RK1
1099 type(rngf_type) , intent(in) :: rng
1100 integer(IK) , intent(out) :: rand
1101 real(RKG) , intent(in) :: expNegLambda
1102 end subroutine
1103#endif
1104
1105 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1106
1107#if RK5_ENABLED
1108 PURE elemental module subroutine setPoisRandExpRNGX_D0_RK5(rng, rand, expNegLambda)
1109#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1110 !DEC$ ATTRIBUTES DLLEXPORT :: setPoisRandExpRNGX_D0_RK5
1111#endif
1112 use pm_kind, only: RKG => RK5
1113 type(xoshiro256ssw_type), intent(inout) :: rng
1114 integer(IK) , intent(out) :: rand
1115 real(RKG) , intent(in) :: expNegLambda
1116 end subroutine
1117#endif
1118
1119#if RK4_ENABLED
1120 PURE elemental module subroutine setPoisRandExpRNGX_D0_RK4(rng, rand, expNegLambda)
1121#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1122 !DEC$ ATTRIBUTES DLLEXPORT :: setPoisRandExpRNGX_D0_RK4
1123#endif
1124 use pm_kind, only: RKG => RK4
1125 type(xoshiro256ssw_type), intent(inout) :: rng
1126 integer(IK) , intent(out) :: rand
1127 real(RKG) , intent(in) :: expNegLambda
1128 end subroutine
1129#endif
1130
1131#if RK3_ENABLED
1132 PURE elemental module subroutine setPoisRandExpRNGX_D0_RK3(rng, rand, expNegLambda)
1133#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1134 !DEC$ ATTRIBUTES DLLEXPORT :: setPoisRandExpRNGX_D0_RK3
1135#endif
1136 use pm_kind, only: RKG => RK3
1137 type(xoshiro256ssw_type), intent(inout) :: rng
1138 integer(IK) , intent(out) :: rand
1139 real(RKG) , intent(in) :: expNegLambda
1140 end subroutine
1141#endif
1142
1143#if RK2_ENABLED
1144 PURE elemental module subroutine setPoisRandExpRNGX_D0_RK2(rng, rand, expNegLambda)
1145#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1146 !DEC$ ATTRIBUTES DLLEXPORT :: setPoisRandExpRNGX_D0_RK2
1147#endif
1148 use pm_kind, only: RKG => RK2
1149 type(xoshiro256ssw_type), intent(inout) :: rng
1150 integer(IK) , intent(out) :: rand
1151 real(RKG) , intent(in) :: expNegLambda
1152 end subroutine
1153#endif
1154
1155#if RK1_ENABLED
1156 PURE elemental module subroutine setPoisRandExpRNGX_D0_RK1(rng, rand, expNegLambda)
1157#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1158 !DEC$ ATTRIBUTES DLLEXPORT :: setPoisRandExpRNGX_D0_RK1
1159#endif
1160 use pm_kind, only: RKG => RK1
1161 type(xoshiro256ssw_type), intent(inout) :: rng
1162 integer(IK) , intent(out) :: rand
1163 real(RKG) , intent(in) :: expNegLambda
1164 end subroutine
1165#endif
1166
1167 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1168
1169 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1170 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1171 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1172
1173 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1174
1175#if RK5_ENABLED
1176 module subroutine setPoisRandExpRNGD_D1_RK5(rand, expNegLambda)
1177#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1178 !DEC$ ATTRIBUTES DLLEXPORT :: setPoisRandExpRNGD_D1_RK5
1179#endif
1180 use pm_kind, only: RKG => RK5
1181 integer(IK) , intent(out) :: rand(:)
1182 real(RKG) , intent(in) :: expNegLambda
1183 end subroutine
1184#endif
1185
1186#if RK4_ENABLED
1187 module subroutine setPoisRandExpRNGD_D1_RK4(rand, expNegLambda)
1188#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1189 !DEC$ ATTRIBUTES DLLEXPORT :: setPoisRandExpRNGD_D1_RK4
1190#endif
1191 use pm_kind, only: RKG => RK4
1192 integer(IK) , intent(out) :: rand(:)
1193 real(RKG) , intent(in) :: expNegLambda
1194 end subroutine
1195#endif
1196
1197#if RK3_ENABLED
1198 module subroutine setPoisRandExpRNGD_D1_RK3(rand, expNegLambda)
1199#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1200 !DEC$ ATTRIBUTES DLLEXPORT :: setPoisRandExpRNGD_D1_RK3
1201#endif
1202 use pm_kind, only: RKG => RK3
1203 integer(IK) , intent(out) :: rand(:)
1204 real(RKG) , intent(in) :: expNegLambda
1205 end subroutine
1206#endif
1207
1208#if RK2_ENABLED
1209 module subroutine setPoisRandExpRNGD_D1_RK2(rand, expNegLambda)
1210#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1211 !DEC$ ATTRIBUTES DLLEXPORT :: setPoisRandExpRNGD_D1_RK2
1212#endif
1213 use pm_kind, only: RKG => RK2
1214 integer(IK) , intent(out) :: rand(:)
1215 real(RKG) , intent(in) :: expNegLambda
1216 end subroutine
1217#endif
1218
1219#if RK1_ENABLED
1220 module subroutine setPoisRandExpRNGD_D1_RK1(rand, expNegLambda)
1221#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1222 !DEC$ ATTRIBUTES DLLEXPORT :: setPoisRandExpRNGD_D1_RK1
1223#endif
1224 use pm_kind, only: RKG => RK1
1225 integer(IK) , intent(out) :: rand(:)
1226 real(RKG) , intent(in) :: expNegLambda
1227 end subroutine
1228#endif
1229
1230 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1231
1232#if RK5_ENABLED
1233 module subroutine setPoisRandExpRNGF_D1_RK5(rng, rand, expNegLambda)
1234#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1235 !DEC$ ATTRIBUTES DLLEXPORT :: setPoisRandExpRNGF_D1_RK5
1236#endif
1237 use pm_kind, only: RKG => RK5
1238 type(rngf_type) , intent(in) :: rng
1239 integer(IK) , intent(out) :: rand(:)
1240 real(RKG) , intent(in) :: expNegLambda
1241 end subroutine
1242#endif
1243
1244#if RK4_ENABLED
1245 module subroutine setPoisRandExpRNGF_D1_RK4(rng, rand, expNegLambda)
1246#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1247 !DEC$ ATTRIBUTES DLLEXPORT :: setPoisRandExpRNGF_D1_RK4
1248#endif
1249 use pm_kind, only: RKG => RK4
1250 type(rngf_type) , intent(in) :: rng
1251 integer(IK) , intent(out) :: rand(:)
1252 real(RKG) , intent(in) :: expNegLambda
1253 end subroutine
1254#endif
1255
1256#if RK3_ENABLED
1257 module subroutine setPoisRandExpRNGF_D1_RK3(rng, rand, expNegLambda)
1258#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1259 !DEC$ ATTRIBUTES DLLEXPORT :: setPoisRandExpRNGF_D1_RK3
1260#endif
1261 use pm_kind, only: RKG => RK3
1262 type(rngf_type) , intent(in) :: rng
1263 integer(IK) , intent(out) :: rand(:)
1264 real(RKG) , intent(in) :: expNegLambda
1265 end subroutine
1266#endif
1267
1268#if RK2_ENABLED
1269 module subroutine setPoisRandExpRNGF_D1_RK2(rng, rand, expNegLambda)
1270#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1271 !DEC$ ATTRIBUTES DLLEXPORT :: setPoisRandExpRNGF_D1_RK2
1272#endif
1273 use pm_kind, only: RKG => RK2
1274 type(rngf_type) , intent(in) :: rng
1275 integer(IK) , intent(out) :: rand(:)
1276 real(RKG) , intent(in) :: expNegLambda
1277 end subroutine
1278#endif
1279
1280#if RK1_ENABLED
1281 module subroutine setPoisRandExpRNGF_D1_RK1(rng, rand, expNegLambda)
1282#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1283 !DEC$ ATTRIBUTES DLLEXPORT :: setPoisRandExpRNGF_D1_RK1
1284#endif
1285 use pm_kind, only: RKG => RK1
1286 type(rngf_type) , intent(in) :: rng
1287 integer(IK) , intent(out) :: rand(:)
1288 real(RKG) , intent(in) :: expNegLambda
1289 end subroutine
1290#endif
1291
1292 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1293
1294#if RK5_ENABLED
1295 PURE module subroutine setPoisRandExpRNGX_D1_RK5(rng, rand, expNegLambda)
1296#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1297 !DEC$ ATTRIBUTES DLLEXPORT :: setPoisRandExpRNGX_D1_RK5
1298#endif
1299 use pm_kind, only: RKG => RK5
1300 type(xoshiro256ssw_type), intent(inout) :: rng
1301 integer(IK) , intent(out) :: rand(:)
1302 real(RKG) , intent(in) :: expNegLambda
1303 end subroutine
1304#endif
1305
1306#if RK4_ENABLED
1307 PURE module subroutine setPoisRandExpRNGX_D1_RK4(rng, rand, expNegLambda)
1308#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1309 !DEC$ ATTRIBUTES DLLEXPORT :: setPoisRandExpRNGX_D1_RK4
1310#endif
1311 use pm_kind, only: RKG => RK4
1312 type(xoshiro256ssw_type), intent(inout) :: rng
1313 integer(IK) , intent(out) :: rand(:)
1314 real(RKG) , intent(in) :: expNegLambda
1315 end subroutine
1316#endif
1317
1318#if RK3_ENABLED
1319 PURE module subroutine setPoisRandExpRNGX_D1_RK3(rng, rand, expNegLambda)
1320#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1321 !DEC$ ATTRIBUTES DLLEXPORT :: setPoisRandExpRNGX_D1_RK3
1322#endif
1323 use pm_kind, only: RKG => RK3
1324 type(xoshiro256ssw_type), intent(inout) :: rng
1325 integer(IK) , intent(out) :: rand(:)
1326 real(RKG) , intent(in) :: expNegLambda
1327 end subroutine
1328#endif
1329
1330#if RK2_ENABLED
1331 PURE module subroutine setPoisRandExpRNGX_D1_RK2(rng, rand, expNegLambda)
1332#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1333 !DEC$ ATTRIBUTES DLLEXPORT :: setPoisRandExpRNGX_D1_RK2
1334#endif
1335 use pm_kind, only: RKG => RK2
1336 type(xoshiro256ssw_type), intent(inout) :: rng
1337 integer(IK) , intent(out) :: rand(:)
1338 real(RKG) , intent(in) :: expNegLambda
1339 end subroutine
1340#endif
1341
1342#if RK1_ENABLED
1343 PURE module subroutine setPoisRandExpRNGX_D1_RK1(rng, rand, expNegLambda)
1344#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1345 !DEC$ ATTRIBUTES DLLEXPORT :: setPoisRandExpRNGX_D1_RK1
1346#endif
1347 use pm_kind, only: RKG => RK1
1348 type(xoshiro256ssw_type), intent(inout) :: rng
1349 integer(IK) , intent(out) :: rand(:)
1350 real(RKG) , intent(in) :: expNegLambda
1351 end subroutine
1352#endif
1353
1354 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1355
1356 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1357 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1358 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1359
1360 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1361 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1362 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1363
1364 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1365
1366#if RK5_ENABLED
1367 impure elemental module subroutine setPoisRandRejRNGD_D0_RK5(rand, lambda, logLambda, sqrtLambda)
1368#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1369 !DEC$ ATTRIBUTES DLLEXPORT :: setPoisRandRejRNGD_D0_RK5
1370#endif
1371 use pm_kind, only: RKG => RK5
1372 integer(IK) , intent(out) :: rand
1373 real(RKG) , intent(in) :: lambda, logLambda, sqrtLambda
1374 end subroutine
1375#endif
1376
1377#if RK4_ENABLED
1378 impure elemental module subroutine setPoisRandRejRNGD_D0_RK4(rand, lambda, logLambda, sqrtLambda)
1379#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1380 !DEC$ ATTRIBUTES DLLEXPORT :: setPoisRandRejRNGD_D0_RK4
1381#endif
1382 use pm_kind, only: RKG => RK4
1383 integer(IK) , intent(out) :: rand
1384 real(RKG) , intent(in) :: lambda, logLambda, sqrtLambda
1385 end subroutine
1386#endif
1387
1388#if RK3_ENABLED
1389 impure elemental module subroutine setPoisRandRejRNGD_D0_RK3(rand, lambda, logLambda, sqrtLambda)
1390#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1391 !DEC$ ATTRIBUTES DLLEXPORT :: setPoisRandRejRNGD_D0_RK3
1392#endif
1393 use pm_kind, only: RKG => RK3
1394 integer(IK) , intent(out) :: rand
1395 real(RKG) , intent(in) :: lambda, logLambda, sqrtLambda
1396 end subroutine
1397#endif
1398
1399#if RK2_ENABLED
1400 impure elemental module subroutine setPoisRandRejRNGD_D0_RK2(rand, lambda, logLambda, sqrtLambda)
1401#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1402 !DEC$ ATTRIBUTES DLLEXPORT :: setPoisRandRejRNGD_D0_RK2
1403#endif
1404 use pm_kind, only: RKG => RK2
1405 integer(IK) , intent(out) :: rand
1406 real(RKG) , intent(in) :: lambda, logLambda, sqrtLambda
1407 end subroutine
1408#endif
1409
1410#if RK1_ENABLED
1411 impure elemental module subroutine setPoisRandRejRNGD_D0_RK1(rand, lambda, logLambda, sqrtLambda)
1412#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1413 !DEC$ ATTRIBUTES DLLEXPORT :: setPoisRandRejRNGD_D0_RK1
1414#endif
1415 use pm_kind, only: RKG => RK1
1416 integer(IK) , intent(out) :: rand
1417 real(RKG) , intent(in) :: lambda, logLambda, sqrtLambda
1418 end subroutine
1419#endif
1420
1421 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1422
1423#if RK5_ENABLED
1424 impure elemental module subroutine setPoisRandRejRNGF_D0_RK5(rng, rand, lambda, logLambda, sqrtLambda)
1425#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1426 !DEC$ ATTRIBUTES DLLEXPORT :: setPoisRandRejRNGF_D0_RK5
1427#endif
1428 use pm_kind, only: RKG => RK5
1429 type(rngf_type) , intent(in) :: rng
1430 integer(IK) , intent(out) :: rand
1431 real(RKG) , intent(in) :: lambda, logLambda, sqrtLambda
1432 end subroutine
1433#endif
1434
1435#if RK4_ENABLED
1436 impure elemental module subroutine setPoisRandRejRNGF_D0_RK4(rng, rand, lambda, logLambda, sqrtLambda)
1437#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1438 !DEC$ ATTRIBUTES DLLEXPORT :: setPoisRandRejRNGF_D0_RK4
1439#endif
1440 use pm_kind, only: RKG => RK4
1441 type(rngf_type) , intent(in) :: rng
1442 integer(IK) , intent(out) :: rand
1443 real(RKG) , intent(in) :: lambda, logLambda, sqrtLambda
1444 end subroutine
1445#endif
1446
1447#if RK3_ENABLED
1448 impure elemental module subroutine setPoisRandRejRNGF_D0_RK3(rng, rand, lambda, logLambda, sqrtLambda)
1449#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1450 !DEC$ ATTRIBUTES DLLEXPORT :: setPoisRandRejRNGF_D0_RK3
1451#endif
1452 use pm_kind, only: RKG => RK3
1453 type(rngf_type) , intent(in) :: rng
1454 integer(IK) , intent(out) :: rand
1455 real(RKG) , intent(in) :: lambda, logLambda, sqrtLambda
1456 end subroutine
1457#endif
1458
1459#if RK2_ENABLED
1460 impure elemental module subroutine setPoisRandRejRNGF_D0_RK2(rng, rand, lambda, logLambda, sqrtLambda)
1461#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1462 !DEC$ ATTRIBUTES DLLEXPORT :: setPoisRandRejRNGF_D0_RK2
1463#endif
1464 use pm_kind, only: RKG => RK2
1465 type(rngf_type) , intent(in) :: rng
1466 integer(IK) , intent(out) :: rand
1467 real(RKG) , intent(in) :: lambda, logLambda, sqrtLambda
1468 end subroutine
1469#endif
1470
1471#if RK1_ENABLED
1472 impure elemental module subroutine setPoisRandRejRNGF_D0_RK1(rng, rand, lambda, logLambda, sqrtLambda)
1473#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1474 !DEC$ ATTRIBUTES DLLEXPORT :: setPoisRandRejRNGF_D0_RK1
1475#endif
1476 use pm_kind, only: RKG => RK1
1477 type(rngf_type) , intent(in) :: rng
1478 integer(IK) , intent(out) :: rand
1479 real(RKG) , intent(in) :: lambda, logLambda, sqrtLambda
1480 end subroutine
1481#endif
1482
1483 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1484
1485#if RK5_ENABLED
1486 PURE elemental module subroutine setPoisRandRejRNGX_D0_RK5(rng, rand, lambda, logLambda, sqrtLambda)
1487#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1488 !DEC$ ATTRIBUTES DLLEXPORT :: setPoisRandRejRNGX_D0_RK5
1489#endif
1490 use pm_kind, only: RKG => RK5
1491 type(xoshiro256ssw_type), intent(inout) :: rng
1492 integer(IK) , intent(out) :: rand
1493 real(RKG) , intent(in) :: lambda, logLambda, sqrtLambda
1494 end subroutine
1495#endif
1496
1497#if RK4_ENABLED
1498 PURE elemental module subroutine setPoisRandRejRNGX_D0_RK4(rng, rand, lambda, logLambda, sqrtLambda)
1499#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1500 !DEC$ ATTRIBUTES DLLEXPORT :: setPoisRandRejRNGX_D0_RK4
1501#endif
1502 use pm_kind, only: RKG => RK4
1503 type(xoshiro256ssw_type), intent(inout) :: rng
1504 integer(IK) , intent(out) :: rand
1505 real(RKG) , intent(in) :: lambda, logLambda, sqrtLambda
1506 end subroutine
1507#endif
1508
1509#if RK3_ENABLED
1510 PURE elemental module subroutine setPoisRandRejRNGX_D0_RK3(rng, rand, lambda, logLambda, sqrtLambda)
1511#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1512 !DEC$ ATTRIBUTES DLLEXPORT :: setPoisRandRejRNGX_D0_RK3
1513#endif
1514 use pm_kind, only: RKG => RK3
1515 type(xoshiro256ssw_type), intent(inout) :: rng
1516 integer(IK) , intent(out) :: rand
1517 real(RKG) , intent(in) :: lambda, logLambda, sqrtLambda
1518 end subroutine
1519#endif
1520
1521#if RK2_ENABLED
1522 PURE elemental module subroutine setPoisRandRejRNGX_D0_RK2(rng, rand, lambda, logLambda, sqrtLambda)
1523#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1524 !DEC$ ATTRIBUTES DLLEXPORT :: setPoisRandRejRNGX_D0_RK2
1525#endif
1526 use pm_kind, only: RKG => RK2
1527 type(xoshiro256ssw_type), intent(inout) :: rng
1528 integer(IK) , intent(out) :: rand
1529 real(RKG) , intent(in) :: lambda, logLambda, sqrtLambda
1530 end subroutine
1531#endif
1532
1533#if RK1_ENABLED
1534 PURE elemental module subroutine setPoisRandRejRNGX_D0_RK1(rng, rand, lambda, logLambda, sqrtLambda)
1535#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1536 !DEC$ ATTRIBUTES DLLEXPORT :: setPoisRandRejRNGX_D0_RK1
1537#endif
1538 use pm_kind, only: RKG => RK1
1539 type(xoshiro256ssw_type), intent(inout) :: rng
1540 integer(IK) , intent(out) :: rand
1541 real(RKG) , intent(in) :: lambda, logLambda, sqrtLambda
1542 end subroutine
1543#endif
1544
1545 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1546
1547 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1548 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1549 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1550
1551 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1552
1553#if RK5_ENABLED
1554 module subroutine setPoisRandRejRNGD_D1_RK5(rand, lambda, logLambda, sqrtLambda)
1555#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1556 !DEC$ ATTRIBUTES DLLEXPORT :: setPoisRandRejRNGD_D1_RK5
1557#endif
1558 use pm_kind, only: RKG => RK5
1559 integer(IK) , intent(out) :: rand(:)
1560 real(RKG) , intent(in) :: lambda, logLambda, sqrtLambda
1561 end subroutine
1562#endif
1563
1564#if RK4_ENABLED
1565 module subroutine setPoisRandRejRNGD_D1_RK4(rand, lambda, logLambda, sqrtLambda)
1566#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1567 !DEC$ ATTRIBUTES DLLEXPORT :: setPoisRandRejRNGD_D1_RK4
1568#endif
1569 use pm_kind, only: RKG => RK4
1570 integer(IK) , intent(out) :: rand(:)
1571 real(RKG) , intent(in) :: lambda, logLambda, sqrtLambda
1572 end subroutine
1573#endif
1574
1575#if RK3_ENABLED
1576 module subroutine setPoisRandRejRNGD_D1_RK3(rand, lambda, logLambda, sqrtLambda)
1577#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1578 !DEC$ ATTRIBUTES DLLEXPORT :: setPoisRandRejRNGD_D1_RK3
1579#endif
1580 use pm_kind, only: RKG => RK3
1581 integer(IK) , intent(out) :: rand(:)
1582 real(RKG) , intent(in) :: lambda, logLambda, sqrtLambda
1583 end subroutine
1584#endif
1585
1586#if RK2_ENABLED
1587 module subroutine setPoisRandRejRNGD_D1_RK2(rand, lambda, logLambda, sqrtLambda)
1588#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1589 !DEC$ ATTRIBUTES DLLEXPORT :: setPoisRandRejRNGD_D1_RK2
1590#endif
1591 use pm_kind, only: RKG => RK2
1592 integer(IK) , intent(out) :: rand(:)
1593 real(RKG) , intent(in) :: lambda, logLambda, sqrtLambda
1594 end subroutine
1595#endif
1596
1597#if RK1_ENABLED
1598 module subroutine setPoisRandRejRNGD_D1_RK1(rand, lambda, logLambda, sqrtLambda)
1599#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1600 !DEC$ ATTRIBUTES DLLEXPORT :: setPoisRandRejRNGD_D1_RK1
1601#endif
1602 use pm_kind, only: RKG => RK1
1603 integer(IK) , intent(out) :: rand(:)
1604 real(RKG) , intent(in) :: lambda, logLambda, sqrtLambda
1605 end subroutine
1606#endif
1607
1608 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1609
1610#if RK5_ENABLED
1611 module subroutine setPoisRandRejRNGF_D1_RK5(rng, rand, lambda, logLambda, sqrtLambda)
1612#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1613 !DEC$ ATTRIBUTES DLLEXPORT :: setPoisRandRejRNGF_D1_RK5
1614#endif
1615 use pm_kind, only: RKG => RK5
1616 type(rngf_type) , intent(in) :: rng
1617 integer(IK) , intent(out) :: rand(:)
1618 real(RKG) , intent(in) :: lambda, logLambda, sqrtLambda
1619 end subroutine
1620#endif
1621
1622#if RK4_ENABLED
1623 module subroutine setPoisRandRejRNGF_D1_RK4(rng, rand, lambda, logLambda, sqrtLambda)
1624#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1625 !DEC$ ATTRIBUTES DLLEXPORT :: setPoisRandRejRNGF_D1_RK4
1626#endif
1627 use pm_kind, only: RKG => RK4
1628 type(rngf_type) , intent(in) :: rng
1629 integer(IK) , intent(out) :: rand(:)
1630 real(RKG) , intent(in) :: lambda, logLambda, sqrtLambda
1631 end subroutine
1632#endif
1633
1634#if RK3_ENABLED
1635 module subroutine setPoisRandRejRNGF_D1_RK3(rng, rand, lambda, logLambda, sqrtLambda)
1636#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1637 !DEC$ ATTRIBUTES DLLEXPORT :: setPoisRandRejRNGF_D1_RK3
1638#endif
1639 use pm_kind, only: RKG => RK3
1640 type(rngf_type) , intent(in) :: rng
1641 integer(IK) , intent(out) :: rand(:)
1642 real(RKG) , intent(in) :: lambda, logLambda, sqrtLambda
1643 end subroutine
1644#endif
1645
1646#if RK2_ENABLED
1647 module subroutine setPoisRandRejRNGF_D1_RK2(rng, rand, lambda, logLambda, sqrtLambda)
1648#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1649 !DEC$ ATTRIBUTES DLLEXPORT :: setPoisRandRejRNGF_D1_RK2
1650#endif
1651 use pm_kind, only: RKG => RK2
1652 type(rngf_type) , intent(in) :: rng
1653 integer(IK) , intent(out) :: rand(:)
1654 real(RKG) , intent(in) :: lambda, logLambda, sqrtLambda
1655 end subroutine
1656#endif
1657
1658#if RK1_ENABLED
1659 module subroutine setPoisRandRejRNGF_D1_RK1(rng, rand, lambda, logLambda, sqrtLambda)
1660#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1661 !DEC$ ATTRIBUTES DLLEXPORT :: setPoisRandRejRNGF_D1_RK1
1662#endif
1663 use pm_kind, only: RKG => RK1
1664 type(rngf_type) , intent(in) :: rng
1665 integer(IK) , intent(out) :: rand(:)
1666 real(RKG) , intent(in) :: lambda, logLambda, sqrtLambda
1667 end subroutine
1668#endif
1669
1670 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1671
1672#if RK5_ENABLED
1673 PURE module subroutine setPoisRandRejRNGX_D1_RK5(rng, rand, lambda, logLambda, sqrtLambda)
1674#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1675 !DEC$ ATTRIBUTES DLLEXPORT :: setPoisRandRejRNGX_D1_RK5
1676#endif
1677 use pm_kind, only: RKG => RK5
1678 type(xoshiro256ssw_type), intent(inout) :: rng
1679 integer(IK) , intent(out) :: rand(:)
1680 real(RKG) , intent(in) :: lambda, logLambda, sqrtLambda
1681 end subroutine
1682#endif
1683
1684#if RK4_ENABLED
1685 PURE module subroutine setPoisRandRejRNGX_D1_RK4(rng, rand, lambda, logLambda, sqrtLambda)
1686#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1687 !DEC$ ATTRIBUTES DLLEXPORT :: setPoisRandRejRNGX_D1_RK4
1688#endif
1689 use pm_kind, only: RKG => RK4
1690 type(xoshiro256ssw_type), intent(inout) :: rng
1691 integer(IK) , intent(out) :: rand(:)
1692 real(RKG) , intent(in) :: lambda, logLambda, sqrtLambda
1693 end subroutine
1694#endif
1695
1696#if RK3_ENABLED
1697 PURE module subroutine setPoisRandRejRNGX_D1_RK3(rng, rand, lambda, logLambda, sqrtLambda)
1698#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1699 !DEC$ ATTRIBUTES DLLEXPORT :: setPoisRandRejRNGX_D1_RK3
1700#endif
1701 use pm_kind, only: RKG => RK3
1702 type(xoshiro256ssw_type), intent(inout) :: rng
1703 integer(IK) , intent(out) :: rand(:)
1704 real(RKG) , intent(in) :: lambda, logLambda, sqrtLambda
1705 end subroutine
1706#endif
1707
1708#if RK2_ENABLED
1709 PURE module subroutine setPoisRandRejRNGX_D1_RK2(rng, rand, lambda, logLambda, sqrtLambda)
1710#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1711 !DEC$ ATTRIBUTES DLLEXPORT :: setPoisRandRejRNGX_D1_RK2
1712#endif
1713 use pm_kind, only: RKG => RK2
1714 type(xoshiro256ssw_type), intent(inout) :: rng
1715 integer(IK) , intent(out) :: rand(:)
1716 real(RKG) , intent(in) :: lambda, logLambda, sqrtLambda
1717 end subroutine
1718#endif
1719
1720#if RK1_ENABLED
1721 PURE module subroutine setPoisRandRejRNGX_D1_RK1(rng, rand, lambda, logLambda, sqrtLambda)
1722#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1723 !DEC$ ATTRIBUTES DLLEXPORT :: setPoisRandRejRNGX_D1_RK1
1724#endif
1725 use pm_kind, only: RKG => RK1
1726 type(xoshiro256ssw_type), intent(inout) :: rng
1727 integer(IK) , intent(out) :: rand(:)
1728 real(RKG) , intent(in) :: lambda, logLambda, sqrtLambda
1729 end subroutine
1730#endif
1731
1732 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1733
1734 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1735 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1736 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1737
1738 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1739 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1740 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1741
1742 end interface
1743
1744!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1745
1746end module pm_distPois
Generate and return the Cumulative Distribution Function (CDF) of the Poisson distribution for an inp...
Generate and return the natural logarithm of the Probability Mass Function (PMF) of the Poisson distr...
Generate and return a scalar (or array of arbitrary rank of) random value(s) from the Poisson distrib...
Return the Cumulative Distribution Function (CDF) of the Poisson distribution.
Return the natural logarithm of the Probability Mass Function (PMF) of the Poisson distribution for a...
Return a scalar (or array of arbitrary rank of) random value(s) from the Poisson distribution.
This module contains classes and procedures for computing various statistical quantities related to t...
real(RKB), parameter LAMBDA_LIMIT
The constant scalar of type real of kind RKB, representing the value of the parameter of the Poisson ...
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 RKB
The scalar integer constant of intrinsic default kind, representing the Best-precision real kind supp...
Definition: pm_kind.F90:1371
integer, parameter IK
The default integer kind in the ParaMonte library: int32 in Fortran, c_int32_t in C-Fortran Interoper...
Definition: pm_kind.F90:540
integer, parameter SK
The default character kind in the ParaMonte library: kind("a") in Fortran, c_char in C-Fortran Intero...
Definition: pm_kind.F90:539
integer, parameter RK1
Definition: pm_kind.F90:522
This is the derived type for signifying distributions that are of type Poisson as defined in the desc...
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...