ParaMonte Fortran 2.0.0
Parallel Monte Carlo and Machine Learning Library
See the latest version documentation.
pm_quadRomb.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
28
29!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
30
32
33 use pm_kind, only: IK, RK, SK
34
35 implicit none
36
37 character(*, SK), parameter :: MODULE_NAME = "@pm_quadRomb"
38
39!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
40
78 type :: open_type
79 end type
80
81!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
82
125 type :: pwrl_type
126 end type
127
128!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
129
169 type :: nexp_type
170 end type
171
172!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
173
213 type :: pexp_type
214 end type
215
216!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
217
256 type :: lbis_type
257 real :: exponent = 0.5
258 end type
259
260!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
261
300 type :: ubis_type
301 real :: exponent = 0.5
302 end type
303
304!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
305
396 interface getQuadRomb
397
398 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
399 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
400 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
401
402 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
403
404#if RK5_ENABLED
405 recursive impure module function getQR_Clos_EM_NM_RK5(getFunc, lb, ub, tol, nref) result(quadRomb)
406#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
407 !DEC$ ATTRIBUTES DLLEXPORT :: getQR_Clos_EM_NM_RK5
408#endif
409 use pm_kind, only: RKG => RK5
410 procedure(real(RKG)) :: getFunc
411 real(RKG) , intent(in) :: lb, ub, tol
412 integer(IK) , intent(in) :: nref
413 real(RKG) :: quadRomb
414 end function
415#endif
416
417#if RK4_ENABLED
418 recursive impure module function getQR_Clos_EM_NM_RK4(getFunc, lb, ub, tol, nref) result(quadRomb)
419#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
420 !DEC$ ATTRIBUTES DLLEXPORT :: getQR_Clos_EM_NM_RK4
421#endif
422 use pm_kind, only: RKG => RK4
423 procedure(real(RKG)) :: getFunc
424 real(RKG) , intent(in) :: lb, ub, tol
425 integer(IK) , intent(in) :: nref
426 real(RKG) :: quadRomb
427 end function
428#endif
429
430#if RK3_ENABLED
431 recursive impure module function getQR_Clos_EM_NM_RK3(getFunc, lb, ub, tol, nref) result(quadRomb)
432#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
433 !DEC$ ATTRIBUTES DLLEXPORT :: getQR_Clos_EM_NM_RK3
434#endif
435 use pm_kind, only: RKG => RK3
436 procedure(real(RKG)) :: getFunc
437 real(RKG) , intent(in) :: lb, ub, tol
438 integer(IK) , intent(in) :: nref
439 real(RKG) :: quadRomb
440 end function
441#endif
442
443#if RK2_ENABLED
444 recursive impure module function getQR_Clos_EM_NM_RK2(getFunc, lb, ub, tol, nref) result(quadRomb)
445#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
446 !DEC$ ATTRIBUTES DLLEXPORT :: getQR_Clos_EM_NM_RK2
447#endif
448 use pm_kind, only: RKG => RK2
449 procedure(real(RKG)) :: getFunc
450 real(RKG) , intent(in) :: lb, ub, tol
451 integer(IK) , intent(in) :: nref
452 real(RKG) :: quadRomb
453 end function
454#endif
455
456#if RK1_ENABLED
457 recursive impure module function getQR_Clos_EM_NM_RK1(getFunc, lb, ub, tol, nref) result(quadRomb)
458#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
459 !DEC$ ATTRIBUTES DLLEXPORT :: getQR_Clos_EM_NM_RK1
460#endif
461 use pm_kind, only: RKG => RK1
462 procedure(real(RKG)) :: getFunc
463 real(RKG) , intent(in) :: lb, ub, tol
464 integer(IK) , intent(in) :: nref
465 real(RKG) :: quadRomb
466 end function
467#endif
468
469 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
470
471#if RK5_ENABLED
472 recursive impure module function getQR_Clos_EP_NM_RK5(getFunc, lb, ub, tol, nref, relerr) result(quadRomb)
473#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
474 !DEC$ ATTRIBUTES DLLEXPORT :: getQR_Clos_EP_NM_RK5
475#endif
476 use pm_kind, only: RKG => RK5
477 procedure(real(RKG)) :: getFunc
478 real(RKG) , intent(in) :: lb, ub, tol
479 integer(IK) , intent(in) :: nref
480 real(RKG) , intent(out) :: relerr
481 real(RKG) :: quadRomb
482 end function
483#endif
484
485#if RK4_ENABLED
486 recursive impure module function getQR_Clos_EP_NM_RK4(getFunc, lb, ub, tol, nref, relerr) result(quadRomb)
487#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
488 !DEC$ ATTRIBUTES DLLEXPORT :: getQR_Clos_EP_NM_RK4
489#endif
490 use pm_kind, only: RKG => RK4
491 procedure(real(RKG)) :: getFunc
492 real(RKG) , intent(in) :: lb, ub, tol
493 integer(IK) , intent(in) :: nref
494 real(RKG) , intent(out) :: relerr
495 real(RKG) :: quadRomb
496 end function
497#endif
498
499#if RK3_ENABLED
500 recursive impure module function getQR_Clos_EP_NM_RK3(getFunc, lb, ub, tol, nref, relerr) result(quadRomb)
501#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
502 !DEC$ ATTRIBUTES DLLEXPORT :: getQR_Clos_EP_NM_RK3
503#endif
504 use pm_kind, only: RKG => RK3
505 procedure(real(RKG)) :: getFunc
506 real(RKG) , intent(in) :: lb, ub, tol
507 integer(IK) , intent(in) :: nref
508 real(RKG) , intent(out) :: relerr
509 real(RKG) :: quadRomb
510 end function
511#endif
512
513#if RK2_ENABLED
514 recursive impure module function getQR_Clos_EP_NM_RK2(getFunc, lb, ub, tol, nref, relerr) result(quadRomb)
515#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
516 !DEC$ ATTRIBUTES DLLEXPORT :: getQR_Clos_EP_NM_RK2
517#endif
518 use pm_kind, only: RKG => RK2
519 procedure(real(RKG)) :: getFunc
520 real(RKG) , intent(in) :: lb, ub, tol
521 integer(IK) , intent(in) :: nref
522 real(RKG) , intent(out) :: relerr
523 real(RKG) :: quadRomb
524 end function
525#endif
526
527#if RK1_ENABLED
528 recursive impure module function getQR_Clos_EP_NM_RK1(getFunc, lb, ub, tol, nref, relerr) result(quadRomb)
529#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
530 !DEC$ ATTRIBUTES DLLEXPORT :: getQR_Clos_EP_NM_RK1
531#endif
532 use pm_kind, only: RKG => RK1
533 procedure(real(RKG)) :: getFunc
534 real(RKG) , intent(in) :: lb, ub, tol
535 integer(IK) , intent(in) :: nref
536 real(RKG) , intent(out) :: relerr
537 real(RKG) :: quadRomb
538 end function
539#endif
540
541 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
542
543#if RK5_ENABLED
544 recursive impure module function getQR_Clos_EP_NP_RK5(getFunc, lb, ub, tol, nref, relerr, neval) result(quadRomb)
545#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
546 !DEC$ ATTRIBUTES DLLEXPORT :: getQR_Clos_EP_NP_RK5
547#endif
548 use pm_kind, only: RKG => RK5
549 procedure(real(RKG)) :: getFunc
550 real(RKG) , intent(in) :: lb, ub, tol
551 integer(IK) , intent(in) :: nref
552 integer(IK) , intent(out) :: neval
553 real(RKG) , intent(out) :: relerr
554 real(RKG) :: quadRomb
555 end function
556#endif
557
558#if RK4_ENABLED
559 recursive impure module function getQR_Clos_EP_NP_RK4(getFunc, lb, ub, tol, nref, relerr, neval) result(quadRomb)
560#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
561 !DEC$ ATTRIBUTES DLLEXPORT :: getQR_Clos_EP_NP_RK4
562#endif
563 use pm_kind, only: RKG => RK4
564 procedure(real(RKG)) :: getFunc
565 real(RKG) , intent(in) :: lb, ub, tol
566 integer(IK) , intent(in) :: nref
567 integer(IK) , intent(out) :: neval
568 real(RKG) , intent(out) :: relerr
569 real(RKG) :: quadRomb
570 end function
571#endif
572
573#if RK3_ENABLED
574 recursive impure module function getQR_Clos_EP_NP_RK3(getFunc, lb, ub, tol, nref, relerr, neval) result(quadRomb)
575#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
576 !DEC$ ATTRIBUTES DLLEXPORT :: getQR_Clos_EP_NP_RK3
577#endif
578 use pm_kind, only: RKG => RK3
579 procedure(real(RKG)) :: getFunc
580 real(RKG) , intent(in) :: lb, ub, tol
581 integer(IK) , intent(in) :: nref
582 integer(IK) , intent(out) :: neval
583 real(RKG) , intent(out) :: relerr
584 real(RKG) :: quadRomb
585 end function
586#endif
587
588#if RK2_ENABLED
589 recursive impure module function getQR_Clos_EP_NP_RK2(getFunc, lb, ub, tol, nref, relerr, neval) result(quadRomb)
590#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
591 !DEC$ ATTRIBUTES DLLEXPORT :: getQR_Clos_EP_NP_RK2
592#endif
593 use pm_kind, only: RKG => RK2
594 procedure(real(RKG)) :: getFunc
595 real(RKG) , intent(in) :: lb, ub, tol
596 integer(IK) , intent(in) :: nref
597 integer(IK) , intent(out) :: neval
598 real(RKG) , intent(out) :: relerr
599 real(RKG) :: quadRomb
600 end function
601#endif
602
603#if RK1_ENABLED
604 recursive impure module function getQR_Clos_EP_NP_RK1(getFunc, lb, ub, tol, nref, relerr, neval) result(quadRomb)
605#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
606 !DEC$ ATTRIBUTES DLLEXPORT :: getQR_Clos_EP_NP_RK1
607#endif
608 use pm_kind, only: RKG => RK1
609 procedure(real(RKG)) :: getFunc
610 real(RKG) , intent(in) :: lb, ub, tol
611 integer(IK) , intent(in) :: nref
612 integer(IK) , intent(out) :: neval
613 real(RKG) , intent(out) :: relerr
614 real(RKG) :: quadRomb
615 end function
616#endif
617
618 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
619
620 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
621 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
622 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
623
624 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
625
626#if RK5_ENABLED
627 recursive impure module function getQR_Open_EM_NM_RK5(getFunc, lb, ub, tol, nref, interval) result(quadRomb)
628#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
629 !DEC$ ATTRIBUTES DLLEXPORT :: getQR_Open_EM_NM_RK5
630#endif
631 use pm_kind, only: RKG => RK5
632 procedure(real(RKG)) :: getFunc
633 real(RKG) , intent(in) :: lb, ub, tol
634 integer(IK) , intent(in) :: nref
635 type(open_type) :: interval
636 real(RKG) :: quadRomb
637 end function
638#endif
639
640#if RK4_ENABLED
641 recursive impure module function getQR_Open_EM_NM_RK4(getFunc, lb, ub, tol, nref, interval) result(quadRomb)
642#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
643 !DEC$ ATTRIBUTES DLLEXPORT :: getQR_Open_EM_NM_RK4
644#endif
645 use pm_kind, only: RKG => RK4
646 procedure(real(RKG)) :: getFunc
647 real(RKG) , intent(in) :: lb, ub, tol
648 integer(IK) , intent(in) :: nref
649 type(open_type) :: interval
650 real(RKG) :: quadRomb
651 end function
652#endif
653
654#if RK3_ENABLED
655 recursive impure module function getQR_Open_EM_NM_RK3(getFunc, lb, ub, tol, nref, interval) result(quadRomb)
656#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
657 !DEC$ ATTRIBUTES DLLEXPORT :: getQR_Open_EM_NM_RK3
658#endif
659 use pm_kind, only: RKG => RK3
660 procedure(real(RKG)) :: getFunc
661 real(RKG) , intent(in) :: lb, ub, tol
662 integer(IK) , intent(in) :: nref
663 type(open_type) :: interval
664 real(RKG) :: quadRomb
665 end function
666#endif
667
668#if RK2_ENABLED
669 recursive impure module function getQR_Open_EM_NM_RK2(getFunc, lb, ub, tol, nref, interval) result(quadRomb)
670#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
671 !DEC$ ATTRIBUTES DLLEXPORT :: getQR_Open_EM_NM_RK2
672#endif
673 use pm_kind, only: RKG => RK2
674 procedure(real(RKG)) :: getFunc
675 real(RKG) , intent(in) :: lb, ub, tol
676 integer(IK) , intent(in) :: nref
677 type(open_type) :: interval
678 real(RKG) :: quadRomb
679 end function
680#endif
681
682#if RK1_ENABLED
683 recursive impure module function getQR_Open_EM_NM_RK1(getFunc, lb, ub, tol, nref, interval) result(quadRomb)
684#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
685 !DEC$ ATTRIBUTES DLLEXPORT :: getQR_Open_EM_NM_RK1
686#endif
687 use pm_kind, only: RKG => RK1
688 procedure(real(RKG)) :: getFunc
689 real(RKG) , intent(in) :: lb, ub, tol
690 integer(IK) , intent(in) :: nref
691 type(open_type) :: interval
692 real(RKG) :: quadRomb
693 end function
694#endif
695
696 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
697
698#if RK5_ENABLED
699 recursive impure module function getQR_Open_EP_NM_RK5(getFunc, lb, ub, tol, nref, interval, relerr) result(quadRomb)
700#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
701 !DEC$ ATTRIBUTES DLLEXPORT :: getQR_Open_EP_NM_RK5
702#endif
703 use pm_kind, only: RKG => RK5
704 procedure(real(RKG)) :: getFunc
705 real(RKG) , intent(in) :: lb, ub, tol
706 integer(IK) , intent(in) :: nref
707 type(open_type) :: interval
708 real(RKG) , intent(out) :: relerr
709 real(RKG) :: quadRomb
710 end function
711#endif
712
713#if RK4_ENABLED
714 recursive impure module function getQR_Open_EP_NM_RK4(getFunc, lb, ub, tol, nref, interval, relerr) result(quadRomb)
715#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
716 !DEC$ ATTRIBUTES DLLEXPORT :: getQR_Open_EP_NM_RK4
717#endif
718 use pm_kind, only: RKG => RK4
719 procedure(real(RKG)) :: getFunc
720 real(RKG) , intent(in) :: lb, ub, tol
721 integer(IK) , intent(in) :: nref
722 type(open_type) :: interval
723 real(RKG) , intent(out) :: relerr
724 real(RKG) :: quadRomb
725 end function
726#endif
727
728#if RK3_ENABLED
729 recursive impure module function getQR_Open_EP_NM_RK3(getFunc, lb, ub, tol, nref, interval, relerr) result(quadRomb)
730#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
731 !DEC$ ATTRIBUTES DLLEXPORT :: getQR_Open_EP_NM_RK3
732#endif
733 use pm_kind, only: RKG => RK3
734 procedure(real(RKG)) :: getFunc
735 real(RKG) , intent(in) :: lb, ub, tol
736 integer(IK) , intent(in) :: nref
737 type(open_type) :: interval
738 real(RKG) , intent(out) :: relerr
739 real(RKG) :: quadRomb
740 end function
741#endif
742
743#if RK2_ENABLED
744 recursive impure module function getQR_Open_EP_NM_RK2(getFunc, lb, ub, tol, nref, interval, relerr) result(quadRomb)
745#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
746 !DEC$ ATTRIBUTES DLLEXPORT :: getQR_Open_EP_NM_RK2
747#endif
748 use pm_kind, only: RKG => RK2
749 procedure(real(RKG)) :: getFunc
750 real(RKG) , intent(in) :: lb, ub, tol
751 integer(IK) , intent(in) :: nref
752 type(open_type) :: interval
753 real(RKG) , intent(out) :: relerr
754 real(RKG) :: quadRomb
755 end function
756#endif
757
758#if RK1_ENABLED
759 recursive impure module function getQR_Open_EP_NM_RK1(getFunc, lb, ub, tol, nref, interval, relerr) result(quadRomb)
760#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
761 !DEC$ ATTRIBUTES DLLEXPORT :: getQR_Open_EP_NM_RK1
762#endif
763 use pm_kind, only: RKG => RK1
764 procedure(real(RKG)) :: getFunc
765 real(RKG) , intent(in) :: lb, ub, tol
766 integer(IK) , intent(in) :: nref
767 type(open_type) :: interval
768 real(RKG) , intent(out) :: relerr
769 real(RKG) :: quadRomb
770 end function
771#endif
772
773 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
774
775#if RK5_ENABLED
776 recursive impure module function getQR_Open_EP_NP_RK5(getFunc, lb, ub, tol, nref, interval, relerr, neval) result(quadRomb)
777#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
778 !DEC$ ATTRIBUTES DLLEXPORT :: getQR_Open_EP_NP_RK5
779#endif
780 use pm_kind, only: RKG => RK5
781 procedure(real(RKG)) :: getFunc
782 real(RKG) , intent(in) :: lb, ub, tol
783 integer(IK) , intent(in) :: nref
784 type(open_type) :: interval
785 integer(IK) , intent(out) :: neval
786 real(RKG) , intent(out) :: relerr
787 real(RKG) :: quadRomb
788 end function
789#endif
790
791#if RK4_ENABLED
792 recursive impure module function getQR_Open_EP_NP_RK4(getFunc, lb, ub, tol, nref, interval, relerr, neval) result(quadRomb)
793#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
794 !DEC$ ATTRIBUTES DLLEXPORT :: getQR_Open_EP_NP_RK4
795#endif
796 use pm_kind, only: RKG => RK4
797 procedure(real(RKG)) :: getFunc
798 real(RKG) , intent(in) :: lb, ub, tol
799 integer(IK) , intent(in) :: nref
800 type(open_type) :: interval
801 integer(IK) , intent(out) :: neval
802 real(RKG) , intent(out) :: relerr
803 real(RKG) :: quadRomb
804 end function
805#endif
806
807#if RK3_ENABLED
808 recursive impure module function getQR_Open_EP_NP_RK3(getFunc, lb, ub, tol, nref, interval, relerr, neval) result(quadRomb)
809#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
810 !DEC$ ATTRIBUTES DLLEXPORT :: getQR_Open_EP_NP_RK3
811#endif
812 use pm_kind, only: RKG => RK3
813 procedure(real(RKG)) :: getFunc
814 real(RKG) , intent(in) :: lb, ub, tol
815 integer(IK) , intent(in) :: nref
816 type(open_type) :: interval
817 integer(IK) , intent(out) :: neval
818 real(RKG) , intent(out) :: relerr
819 real(RKG) :: quadRomb
820 end function
821#endif
822
823#if RK2_ENABLED
824 recursive impure module function getQR_Open_EP_NP_RK2(getFunc, lb, ub, tol, nref, interval, relerr, neval) result(quadRomb)
825#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
826 !DEC$ ATTRIBUTES DLLEXPORT :: getQR_Open_EP_NP_RK2
827#endif
828 use pm_kind, only: RKG => RK2
829 procedure(real(RKG)) :: getFunc
830 real(RKG) , intent(in) :: lb, ub, tol
831 integer(IK) , intent(in) :: nref
832 type(open_type) :: interval
833 integer(IK) , intent(out) :: neval
834 real(RKG) , intent(out) :: relerr
835 real(RKG) :: quadRomb
836 end function
837#endif
838
839#if RK1_ENABLED
840 recursive impure module function getQR_Open_EP_NP_RK1(getFunc, lb, ub, tol, nref, interval, relerr, neval) result(quadRomb)
841#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
842 !DEC$ ATTRIBUTES DLLEXPORT :: getQR_Open_EP_NP_RK1
843#endif
844 use pm_kind, only: RKG => RK1
845 procedure(real(RKG)) :: getFunc
846 real(RKG) , intent(in) :: lb, ub, tol
847 integer(IK) , intent(in) :: nref
848 type(open_type) :: interval
849 integer(IK) , intent(out) :: neval
850 real(RKG) , intent(out) :: relerr
851 real(RKG) :: quadRomb
852 end function
853#endif
854
855 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
856
857 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
858 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
859 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
860
861 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
862
863#if RK5_ENABLED
864 recursive impure module function getQR_PWRL_EM_NM_RK5(getFunc, lb, ub, tol, nref, interval) result(quadRomb)
865#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
866 !DEC$ ATTRIBUTES DLLEXPORT :: getQR_PWRL_EM_NM_RK5
867#endif
868 use pm_kind, only: RKG => RK5
869 procedure(real(RKG)) :: getFunc
870 real(RKG) , intent(in) :: lb, ub, tol
871 integer(IK) , intent(in) :: nref
872 type(pwrl_type) :: interval
873 real(RKG) :: quadRomb
874 end function
875#endif
876
877#if RK4_ENABLED
878 recursive impure module function getQR_PWRL_EM_NM_RK4(getFunc, lb, ub, tol, nref, interval) result(quadRomb)
879#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
880 !DEC$ ATTRIBUTES DLLEXPORT :: getQR_PWRL_EM_NM_RK4
881#endif
882 use pm_kind, only: RKG => RK4
883 procedure(real(RKG)) :: getFunc
884 real(RKG) , intent(in) :: lb, ub, tol
885 integer(IK) , intent(in) :: nref
886 type(pwrl_type) :: interval
887 real(RKG) :: quadRomb
888 end function
889#endif
890
891#if RK3_ENABLED
892 recursive impure module function getQR_PWRL_EM_NM_RK3(getFunc, lb, ub, tol, nref, interval) result(quadRomb)
893#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
894 !DEC$ ATTRIBUTES DLLEXPORT :: getQR_PWRL_EM_NM_RK3
895#endif
896 use pm_kind, only: RKG => RK3
897 procedure(real(RKG)) :: getFunc
898 real(RKG) , intent(in) :: lb, ub, tol
899 integer(IK) , intent(in) :: nref
900 type(pwrl_type) :: interval
901 real(RKG) :: quadRomb
902 end function
903#endif
904
905#if RK2_ENABLED
906 recursive impure module function getQR_PWRL_EM_NM_RK2(getFunc, lb, ub, tol, nref, interval) result(quadRomb)
907#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
908 !DEC$ ATTRIBUTES DLLEXPORT :: getQR_PWRL_EM_NM_RK2
909#endif
910 use pm_kind, only: RKG => RK2
911 procedure(real(RKG)) :: getFunc
912 real(RKG) , intent(in) :: lb, ub, tol
913 integer(IK) , intent(in) :: nref
914 type(pwrl_type) :: interval
915 real(RKG) :: quadRomb
916 end function
917#endif
918
919#if RK1_ENABLED
920 recursive impure module function getQR_PWRL_EM_NM_RK1(getFunc, lb, ub, tol, nref, interval) result(quadRomb)
921#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
922 !DEC$ ATTRIBUTES DLLEXPORT :: getQR_PWRL_EM_NM_RK1
923#endif
924 use pm_kind, only: RKG => RK1
925 procedure(real(RKG)) :: getFunc
926 real(RKG) , intent(in) :: lb, ub, tol
927 integer(IK) , intent(in) :: nref
928 type(pwrl_type) :: interval
929 real(RKG) :: quadRomb
930 end function
931#endif
932
933 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
934
935#if RK5_ENABLED
936 recursive impure module function getQR_PWRL_EP_NM_RK5(getFunc, lb, ub, tol, nref, interval, relerr) result(quadRomb)
937#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
938 !DEC$ ATTRIBUTES DLLEXPORT :: getQR_PWRL_EP_NM_RK5
939#endif
940 use pm_kind, only: RKG => RK5
941 procedure(real(RKG)) :: getFunc
942 real(RKG) , intent(in) :: lb, ub, tol
943 integer(IK) , intent(in) :: nref
944 type(pwrl_type) :: interval
945 real(RKG) , intent(out) :: relerr
946 real(RKG) :: quadRomb
947 end function
948#endif
949
950#if RK4_ENABLED
951 recursive impure module function getQR_PWRL_EP_NM_RK4(getFunc, lb, ub, tol, nref, interval, relerr) result(quadRomb)
952#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
953 !DEC$ ATTRIBUTES DLLEXPORT :: getQR_PWRL_EP_NM_RK4
954#endif
955 use pm_kind, only: RKG => RK4
956 procedure(real(RKG)) :: getFunc
957 real(RKG) , intent(in) :: lb, ub, tol
958 integer(IK) , intent(in) :: nref
959 type(pwrl_type) :: interval
960 real(RKG) , intent(out) :: relerr
961 real(RKG) :: quadRomb
962 end function
963#endif
964
965#if RK3_ENABLED
966 recursive impure module function getQR_PWRL_EP_NM_RK3(getFunc, lb, ub, tol, nref, interval, relerr) result(quadRomb)
967#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
968 !DEC$ ATTRIBUTES DLLEXPORT :: getQR_PWRL_EP_NM_RK3
969#endif
970 use pm_kind, only: RKG => RK3
971 procedure(real(RKG)) :: getFunc
972 real(RKG) , intent(in) :: lb, ub, tol
973 integer(IK) , intent(in) :: nref
974 type(pwrl_type) :: interval
975 real(RKG) , intent(out) :: relerr
976 real(RKG) :: quadRomb
977 end function
978#endif
979
980#if RK2_ENABLED
981 recursive impure module function getQR_PWRL_EP_NM_RK2(getFunc, lb, ub, tol, nref, interval, relerr) result(quadRomb)
982#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
983 !DEC$ ATTRIBUTES DLLEXPORT :: getQR_PWRL_EP_NM_RK2
984#endif
985 use pm_kind, only: RKG => RK2
986 procedure(real(RKG)) :: getFunc
987 real(RKG) , intent(in) :: lb, ub, tol
988 integer(IK) , intent(in) :: nref
989 type(pwrl_type) :: interval
990 real(RKG) , intent(out) :: relerr
991 real(RKG) :: quadRomb
992 end function
993#endif
994
995#if RK1_ENABLED
996 recursive impure module function getQR_PWRL_EP_NM_RK1(getFunc, lb, ub, tol, nref, interval, relerr) result(quadRomb)
997#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
998 !DEC$ ATTRIBUTES DLLEXPORT :: getQR_PWRL_EP_NM_RK1
999#endif
1000 use pm_kind, only: RKG => RK1
1001 procedure(real(RKG)) :: getFunc
1002 real(RKG) , intent(in) :: lb, ub, tol
1003 integer(IK) , intent(in) :: nref
1004 type(pwrl_type) :: interval
1005 real(RKG) , intent(out) :: relerr
1006 real(RKG) :: quadRomb
1007 end function
1008#endif
1009
1010 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1011
1012#if RK5_ENABLED
1013 recursive impure module function getQR_PWRL_EP_NP_RK5(getFunc, lb, ub, tol, nref, interval, relerr, neval) result(quadRomb)
1014#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1015 !DEC$ ATTRIBUTES DLLEXPORT :: getQR_PWRL_EP_NP_RK5
1016#endif
1017 use pm_kind, only: RKG => RK5
1018 procedure(real(RKG)) :: getFunc
1019 real(RKG) , intent(in) :: lb, ub, tol
1020 integer(IK) , intent(in) :: nref
1021 type(pwrl_type) :: interval
1022 integer(IK) , intent(out) :: neval
1023 real(RKG) , intent(out) :: relerr
1024 real(RKG) :: quadRomb
1025 end function
1026#endif
1027
1028#if RK4_ENABLED
1029 recursive impure module function getQR_PWRL_EP_NP_RK4(getFunc, lb, ub, tol, nref, interval, relerr, neval) result(quadRomb)
1030#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1031 !DEC$ ATTRIBUTES DLLEXPORT :: getQR_PWRL_EP_NP_RK4
1032#endif
1033 use pm_kind, only: RKG => RK4
1034 procedure(real(RKG)) :: getFunc
1035 real(RKG) , intent(in) :: lb, ub, tol
1036 integer(IK) , intent(in) :: nref
1037 type(pwrl_type) :: interval
1038 integer(IK) , intent(out) :: neval
1039 real(RKG) , intent(out) :: relerr
1040 real(RKG) :: quadRomb
1041 end function
1042#endif
1043
1044#if RK3_ENABLED
1045 recursive impure module function getQR_PWRL_EP_NP_RK3(getFunc, lb, ub, tol, nref, interval, relerr, neval) result(quadRomb)
1046#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1047 !DEC$ ATTRIBUTES DLLEXPORT :: getQR_PWRL_EP_NP_RK3
1048#endif
1049 use pm_kind, only: RKG => RK3
1050 procedure(real(RKG)) :: getFunc
1051 real(RKG) , intent(in) :: lb, ub, tol
1052 integer(IK) , intent(in) :: nref
1053 type(pwrl_type) :: interval
1054 integer(IK) , intent(out) :: neval
1055 real(RKG) , intent(out) :: relerr
1056 real(RKG) :: quadRomb
1057 end function
1058#endif
1059
1060#if RK2_ENABLED
1061 recursive impure module function getQR_PWRL_EP_NP_RK2(getFunc, lb, ub, tol, nref, interval, relerr, neval) result(quadRomb)
1062#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1063 !DEC$ ATTRIBUTES DLLEXPORT :: getQR_PWRL_EP_NP_RK2
1064#endif
1065 use pm_kind, only: RKG => RK2
1066 procedure(real(RKG)) :: getFunc
1067 real(RKG) , intent(in) :: lb, ub, tol
1068 integer(IK) , intent(in) :: nref
1069 type(pwrl_type) :: interval
1070 integer(IK) , intent(out) :: neval
1071 real(RKG) , intent(out) :: relerr
1072 real(RKG) :: quadRomb
1073 end function
1074#endif
1075
1076#if RK1_ENABLED
1077 recursive impure module function getQR_PWRL_EP_NP_RK1(getFunc, lb, ub, tol, nref, interval, relerr, neval) result(quadRomb)
1078#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1079 !DEC$ ATTRIBUTES DLLEXPORT :: getQR_PWRL_EP_NP_RK1
1080#endif
1081 use pm_kind, only: RKG => RK1
1082 procedure(real(RKG)) :: getFunc
1083 real(RKG) , intent(in) :: lb, ub, tol
1084 integer(IK) , intent(in) :: nref
1085 type(pwrl_type) :: interval
1086 integer(IK) , intent(out) :: neval
1087 real(RKG) , intent(out) :: relerr
1088 real(RKG) :: quadRomb
1089 end function
1090#endif
1091
1092 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1093
1094 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1095 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1096 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1097
1098 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1099
1100#if RK5_ENABLED
1101 recursive impure module function getQR_NEXP_EM_NM_RK5(getFunc, lb, ub, tol, nref, interval) result(quadRomb)
1102#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1103 !DEC$ ATTRIBUTES DLLEXPORT :: getQR_NEXP_EM_NM_RK5
1104#endif
1105 use pm_kind, only: RKG => RK5
1106 procedure(real(RKG)) :: getFunc
1107 real(RKG) , intent(in) :: lb, ub, tol
1108 integer(IK) , intent(in) :: nref
1109 type(nexp_type) :: interval
1110 real(RKG) :: quadRomb
1111 end function
1112#endif
1113
1114#if RK4_ENABLED
1115 recursive impure module function getQR_NEXP_EM_NM_RK4(getFunc, lb, ub, tol, nref, interval) result(quadRomb)
1116#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1117 !DEC$ ATTRIBUTES DLLEXPORT :: getQR_NEXP_EM_NM_RK4
1118#endif
1119 use pm_kind, only: RKG => RK4
1120 procedure(real(RKG)) :: getFunc
1121 real(RKG) , intent(in) :: lb, ub, tol
1122 integer(IK) , intent(in) :: nref
1123 type(nexp_type) :: interval
1124 real(RKG) :: quadRomb
1125 end function
1126#endif
1127
1128#if RK3_ENABLED
1129 recursive impure module function getQR_NEXP_EM_NM_RK3(getFunc, lb, ub, tol, nref, interval) result(quadRomb)
1130#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1131 !DEC$ ATTRIBUTES DLLEXPORT :: getQR_NEXP_EM_NM_RK3
1132#endif
1133 use pm_kind, only: RKG => RK3
1134 procedure(real(RKG)) :: getFunc
1135 real(RKG) , intent(in) :: lb, ub, tol
1136 integer(IK) , intent(in) :: nref
1137 type(nexp_type) :: interval
1138 real(RKG) :: quadRomb
1139 end function
1140#endif
1141
1142#if RK2_ENABLED
1143 recursive impure module function getQR_NEXP_EM_NM_RK2(getFunc, lb, ub, tol, nref, interval) result(quadRomb)
1144#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1145 !DEC$ ATTRIBUTES DLLEXPORT :: getQR_NEXP_EM_NM_RK2
1146#endif
1147 use pm_kind, only: RKG => RK2
1148 procedure(real(RKG)) :: getFunc
1149 real(RKG) , intent(in) :: lb, ub, tol
1150 integer(IK) , intent(in) :: nref
1151 type(nexp_type) :: interval
1152 real(RKG) :: quadRomb
1153 end function
1154#endif
1155
1156#if RK1_ENABLED
1157 recursive impure module function getQR_NEXP_EM_NM_RK1(getFunc, lb, ub, tol, nref, interval) result(quadRomb)
1158#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1159 !DEC$ ATTRIBUTES DLLEXPORT :: getQR_NEXP_EM_NM_RK1
1160#endif
1161 use pm_kind, only: RKG => RK1
1162 procedure(real(RKG)) :: getFunc
1163 real(RKG) , intent(in) :: lb, ub, tol
1164 integer(IK) , intent(in) :: nref
1165 type(nexp_type) :: interval
1166 real(RKG) :: quadRomb
1167 end function
1168#endif
1169
1170 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1171
1172#if RK5_ENABLED
1173 recursive impure module function getQR_NEXP_EP_NM_RK5(getFunc, lb, ub, tol, nref, interval, relerr) result(quadRomb)
1174#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1175 !DEC$ ATTRIBUTES DLLEXPORT :: getQR_NEXP_EP_NM_RK5
1176#endif
1177 use pm_kind, only: RKG => RK5
1178 procedure(real(RKG)) :: getFunc
1179 real(RKG) , intent(in) :: lb, ub, tol
1180 integer(IK) , intent(in) :: nref
1181 type(nexp_type) :: interval
1182 real(RKG) , intent(out) :: relerr
1183 real(RKG) :: quadRomb
1184 end function
1185#endif
1186
1187#if RK4_ENABLED
1188 recursive impure module function getQR_NEXP_EP_NM_RK4(getFunc, lb, ub, tol, nref, interval, relerr) result(quadRomb)
1189#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1190 !DEC$ ATTRIBUTES DLLEXPORT :: getQR_NEXP_EP_NM_RK4
1191#endif
1192 use pm_kind, only: RKG => RK4
1193 procedure(real(RKG)) :: getFunc
1194 real(RKG) , intent(in) :: lb, ub, tol
1195 integer(IK) , intent(in) :: nref
1196 type(nexp_type) :: interval
1197 real(RKG) , intent(out) :: relerr
1198 real(RKG) :: quadRomb
1199 end function
1200#endif
1201
1202#if RK3_ENABLED
1203 recursive impure module function getQR_NEXP_EP_NM_RK3(getFunc, lb, ub, tol, nref, interval, relerr) result(quadRomb)
1204#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1205 !DEC$ ATTRIBUTES DLLEXPORT :: getQR_NEXP_EP_NM_RK3
1206#endif
1207 use pm_kind, only: RKG => RK3
1208 procedure(real(RKG)) :: getFunc
1209 real(RKG) , intent(in) :: lb, ub, tol
1210 integer(IK) , intent(in) :: nref
1211 type(nexp_type) :: interval
1212 real(RKG) , intent(out) :: relerr
1213 real(RKG) :: quadRomb
1214 end function
1215#endif
1216
1217#if RK2_ENABLED
1218 recursive impure module function getQR_NEXP_EP_NM_RK2(getFunc, lb, ub, tol, nref, interval, relerr) result(quadRomb)
1219#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1220 !DEC$ ATTRIBUTES DLLEXPORT :: getQR_NEXP_EP_NM_RK2
1221#endif
1222 use pm_kind, only: RKG => RK2
1223 procedure(real(RKG)) :: getFunc
1224 real(RKG) , intent(in) :: lb, ub, tol
1225 integer(IK) , intent(in) :: nref
1226 type(nexp_type) :: interval
1227 real(RKG) , intent(out) :: relerr
1228 real(RKG) :: quadRomb
1229 end function
1230#endif
1231
1232#if RK1_ENABLED
1233 recursive impure module function getQR_NEXP_EP_NM_RK1(getFunc, lb, ub, tol, nref, interval, relerr) result(quadRomb)
1234#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1235 !DEC$ ATTRIBUTES DLLEXPORT :: getQR_NEXP_EP_NM_RK1
1236#endif
1237 use pm_kind, only: RKG => RK1
1238 procedure(real(RKG)) :: getFunc
1239 real(RKG) , intent(in) :: lb, ub, tol
1240 integer(IK) , intent(in) :: nref
1241 type(nexp_type) :: interval
1242 real(RKG) , intent(out) :: relerr
1243 real(RKG) :: quadRomb
1244 end function
1245#endif
1246
1247 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1248
1249#if RK5_ENABLED
1250 recursive impure module function getQR_NEXP_EP_NP_RK5(getFunc, lb, ub, tol, nref, interval, relerr, neval) result(quadRomb)
1251#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1252 !DEC$ ATTRIBUTES DLLEXPORT :: getQR_NEXP_EP_NP_RK5
1253#endif
1254 use pm_kind, only: RKG => RK5
1255 procedure(real(RKG)) :: getFunc
1256 real(RKG) , intent(in) :: lb, ub, tol
1257 integer(IK) , intent(in) :: nref
1258 type(nexp_type) :: interval
1259 integer(IK) , intent(out) :: neval
1260 real(RKG) , intent(out) :: relerr
1261 real(RKG) :: quadRomb
1262 end function
1263#endif
1264
1265#if RK4_ENABLED
1266 recursive impure module function getQR_NEXP_EP_NP_RK4(getFunc, lb, ub, tol, nref, interval, relerr, neval) result(quadRomb)
1267#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1268 !DEC$ ATTRIBUTES DLLEXPORT :: getQR_NEXP_EP_NP_RK4
1269#endif
1270 use pm_kind, only: RKG => RK4
1271 procedure(real(RKG)) :: getFunc
1272 real(RKG) , intent(in) :: lb, ub, tol
1273 integer(IK) , intent(in) :: nref
1274 type(nexp_type) :: interval
1275 integer(IK) , intent(out) :: neval
1276 real(RKG) , intent(out) :: relerr
1277 real(RKG) :: quadRomb
1278 end function
1279#endif
1280
1281#if RK3_ENABLED
1282 recursive impure module function getQR_NEXP_EP_NP_RK3(getFunc, lb, ub, tol, nref, interval, relerr, neval) result(quadRomb)
1283#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1284 !DEC$ ATTRIBUTES DLLEXPORT :: getQR_NEXP_EP_NP_RK3
1285#endif
1286 use pm_kind, only: RKG => RK3
1287 procedure(real(RKG)) :: getFunc
1288 real(RKG) , intent(in) :: lb, ub, tol
1289 integer(IK) , intent(in) :: nref
1290 type(nexp_type) :: interval
1291 integer(IK) , intent(out) :: neval
1292 real(RKG) , intent(out) :: relerr
1293 real(RKG) :: quadRomb
1294 end function
1295#endif
1296
1297#if RK2_ENABLED
1298 recursive impure module function getQR_NEXP_EP_NP_RK2(getFunc, lb, ub, tol, nref, interval, relerr, neval) result(quadRomb)
1299#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1300 !DEC$ ATTRIBUTES DLLEXPORT :: getQR_NEXP_EP_NP_RK2
1301#endif
1302 use pm_kind, only: RKG => RK2
1303 procedure(real(RKG)) :: getFunc
1304 real(RKG) , intent(in) :: lb, ub, tol
1305 integer(IK) , intent(in) :: nref
1306 type(nexp_type) :: interval
1307 integer(IK) , intent(out) :: neval
1308 real(RKG) , intent(out) :: relerr
1309 real(RKG) :: quadRomb
1310 end function
1311#endif
1312
1313#if RK1_ENABLED
1314 recursive impure module function getQR_NEXP_EP_NP_RK1(getFunc, lb, ub, tol, nref, interval, relerr, neval) result(quadRomb)
1315#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1316 !DEC$ ATTRIBUTES DLLEXPORT :: getQR_NEXP_EP_NP_RK1
1317#endif
1318 use pm_kind, only: RKG => RK1
1319 procedure(real(RKG)) :: getFunc
1320 real(RKG) , intent(in) :: lb, ub, tol
1321 integer(IK) , intent(in) :: nref
1322 type(nexp_type) :: interval
1323 integer(IK) , intent(out) :: neval
1324 real(RKG) , intent(out) :: relerr
1325 real(RKG) :: quadRomb
1326 end function
1327#endif
1328
1329 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1330
1331 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1332 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1333 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1334
1335 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1336
1337#if RK5_ENABLED
1338 recursive impure module function getQR_PEXP_EM_NM_RK5(getFunc, lb, ub, tol, nref, interval) result(quadRomb)
1339#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1340 !DEC$ ATTRIBUTES DLLEXPORT :: getQR_PEXP_EM_NM_RK5
1341#endif
1342 use pm_kind, only: RKG => RK5
1343 procedure(real(RKG)) :: getFunc
1344 real(RKG) , intent(in) :: lb, ub, tol
1345 integer(IK) , intent(in) :: nref
1346 type(pexp_type) :: interval
1347 real(RKG) :: quadRomb
1348 end function
1349#endif
1350
1351#if RK4_ENABLED
1352 recursive impure module function getQR_PEXP_EM_NM_RK4(getFunc, lb, ub, tol, nref, interval) result(quadRomb)
1353#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1354 !DEC$ ATTRIBUTES DLLEXPORT :: getQR_PEXP_EM_NM_RK4
1355#endif
1356 use pm_kind, only: RKG => RK4
1357 procedure(real(RKG)) :: getFunc
1358 real(RKG) , intent(in) :: lb, ub, tol
1359 integer(IK) , intent(in) :: nref
1360 type(pexp_type) :: interval
1361 real(RKG) :: quadRomb
1362 end function
1363#endif
1364
1365#if RK3_ENABLED
1366 recursive impure module function getQR_PEXP_EM_NM_RK3(getFunc, lb, ub, tol, nref, interval) result(quadRomb)
1367#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1368 !DEC$ ATTRIBUTES DLLEXPORT :: getQR_PEXP_EM_NM_RK3
1369#endif
1370 use pm_kind, only: RKG => RK3
1371 procedure(real(RKG)) :: getFunc
1372 real(RKG) , intent(in) :: lb, ub, tol
1373 integer(IK) , intent(in) :: nref
1374 type(pexp_type) :: interval
1375 real(RKG) :: quadRomb
1376 end function
1377#endif
1378
1379#if RK2_ENABLED
1380 recursive impure module function getQR_PEXP_EM_NM_RK2(getFunc, lb, ub, tol, nref, interval) result(quadRomb)
1381#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1382 !DEC$ ATTRIBUTES DLLEXPORT :: getQR_PEXP_EM_NM_RK2
1383#endif
1384 use pm_kind, only: RKG => RK2
1385 procedure(real(RKG)) :: getFunc
1386 real(RKG) , intent(in) :: lb, ub, tol
1387 integer(IK) , intent(in) :: nref
1388 type(pexp_type) :: interval
1389 real(RKG) :: quadRomb
1390 end function
1391#endif
1392
1393#if RK1_ENABLED
1394 recursive impure module function getQR_PEXP_EM_NM_RK1(getFunc, lb, ub, tol, nref, interval) result(quadRomb)
1395#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1396 !DEC$ ATTRIBUTES DLLEXPORT :: getQR_PEXP_EM_NM_RK1
1397#endif
1398 use pm_kind, only: RKG => RK1
1399 procedure(real(RKG)) :: getFunc
1400 real(RKG) , intent(in) :: lb, ub, tol
1401 integer(IK) , intent(in) :: nref
1402 type(pexp_type) :: interval
1403 real(RKG) :: quadRomb
1404 end function
1405#endif
1406
1407 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1408
1409#if RK5_ENABLED
1410 recursive impure module function getQR_PEXP_EP_NM_RK5(getFunc, lb, ub, tol, nref, interval, relerr) result(quadRomb)
1411#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1412 !DEC$ ATTRIBUTES DLLEXPORT :: getQR_PEXP_EP_NM_RK5
1413#endif
1414 use pm_kind, only: RKG => RK5
1415 procedure(real(RKG)) :: getFunc
1416 real(RKG) , intent(in) :: lb, ub, tol
1417 integer(IK) , intent(in) :: nref
1418 type(pexp_type) :: interval
1419 real(RKG) , intent(out) :: relerr
1420 real(RKG) :: quadRomb
1421 end function
1422#endif
1423
1424#if RK4_ENABLED
1425 recursive impure module function getQR_PEXP_EP_NM_RK4(getFunc, lb, ub, tol, nref, interval, relerr) result(quadRomb)
1426#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1427 !DEC$ ATTRIBUTES DLLEXPORT :: getQR_PEXP_EP_NM_RK4
1428#endif
1429 use pm_kind, only: RKG => RK4
1430 procedure(real(RKG)) :: getFunc
1431 real(RKG) , intent(in) :: lb, ub, tol
1432 integer(IK) , intent(in) :: nref
1433 type(pexp_type) :: interval
1434 real(RKG) , intent(out) :: relerr
1435 real(RKG) :: quadRomb
1436 end function
1437#endif
1438
1439#if RK3_ENABLED
1440 recursive impure module function getQR_PEXP_EP_NM_RK3(getFunc, lb, ub, tol, nref, interval, relerr) result(quadRomb)
1441#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1442 !DEC$ ATTRIBUTES DLLEXPORT :: getQR_PEXP_EP_NM_RK3
1443#endif
1444 use pm_kind, only: RKG => RK3
1445 procedure(real(RKG)) :: getFunc
1446 real(RKG) , intent(in) :: lb, ub, tol
1447 integer(IK) , intent(in) :: nref
1448 type(pexp_type) :: interval
1449 real(RKG) , intent(out) :: relerr
1450 real(RKG) :: quadRomb
1451 end function
1452#endif
1453
1454#if RK2_ENABLED
1455 recursive impure module function getQR_PEXP_EP_NM_RK2(getFunc, lb, ub, tol, nref, interval, relerr) result(quadRomb)
1456#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1457 !DEC$ ATTRIBUTES DLLEXPORT :: getQR_PEXP_EP_NM_RK2
1458#endif
1459 use pm_kind, only: RKG => RK2
1460 procedure(real(RKG)) :: getFunc
1461 real(RKG) , intent(in) :: lb, ub, tol
1462 integer(IK) , intent(in) :: nref
1463 type(pexp_type) :: interval
1464 real(RKG) , intent(out) :: relerr
1465 real(RKG) :: quadRomb
1466 end function
1467#endif
1468
1469#if RK1_ENABLED
1470 recursive impure module function getQR_PEXP_EP_NM_RK1(getFunc, lb, ub, tol, nref, interval, relerr) result(quadRomb)
1471#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1472 !DEC$ ATTRIBUTES DLLEXPORT :: getQR_PEXP_EP_NM_RK1
1473#endif
1474 use pm_kind, only: RKG => RK1
1475 procedure(real(RKG)) :: getFunc
1476 real(RKG) , intent(in) :: lb, ub, tol
1477 integer(IK) , intent(in) :: nref
1478 type(pexp_type) :: interval
1479 real(RKG) , intent(out) :: relerr
1480 real(RKG) :: quadRomb
1481 end function
1482#endif
1483
1484 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1485
1486#if RK5_ENABLED
1487 recursive impure module function getQR_PEXP_EP_NP_RK5(getFunc, lb, ub, tol, nref, interval, relerr, neval) result(quadRomb)
1488#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1489 !DEC$ ATTRIBUTES DLLEXPORT :: getQR_PEXP_EP_NP_RK5
1490#endif
1491 use pm_kind, only: RKG => RK5
1492 procedure(real(RKG)) :: getFunc
1493 real(RKG) , intent(in) :: lb, ub, tol
1494 integer(IK) , intent(in) :: nref
1495 type(pexp_type) :: interval
1496 integer(IK) , intent(out) :: neval
1497 real(RKG) , intent(out) :: relerr
1498 real(RKG) :: quadRomb
1499 end function
1500#endif
1501
1502#if RK4_ENABLED
1503 recursive impure module function getQR_PEXP_EP_NP_RK4(getFunc, lb, ub, tol, nref, interval, relerr, neval) result(quadRomb)
1504#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1505 !DEC$ ATTRIBUTES DLLEXPORT :: getQR_PEXP_EP_NP_RK4
1506#endif
1507 use pm_kind, only: RKG => RK4
1508 procedure(real(RKG)) :: getFunc
1509 real(RKG) , intent(in) :: lb, ub, tol
1510 integer(IK) , intent(in) :: nref
1511 type(pexp_type) :: interval
1512 integer(IK) , intent(out) :: neval
1513 real(RKG) , intent(out) :: relerr
1514 real(RKG) :: quadRomb
1515 end function
1516#endif
1517
1518#if RK3_ENABLED
1519 recursive impure module function getQR_PEXP_EP_NP_RK3(getFunc, lb, ub, tol, nref, interval, relerr, neval) result(quadRomb)
1520#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1521 !DEC$ ATTRIBUTES DLLEXPORT :: getQR_PEXP_EP_NP_RK3
1522#endif
1523 use pm_kind, only: RKG => RK3
1524 procedure(real(RKG)) :: getFunc
1525 real(RKG) , intent(in) :: lb, ub, tol
1526 integer(IK) , intent(in) :: nref
1527 type(pexp_type) :: interval
1528 integer(IK) , intent(out) :: neval
1529 real(RKG) , intent(out) :: relerr
1530 real(RKG) :: quadRomb
1531 end function
1532#endif
1533
1534#if RK2_ENABLED
1535 recursive impure module function getQR_PEXP_EP_NP_RK2(getFunc, lb, ub, tol, nref, interval, relerr, neval) result(quadRomb)
1536#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1537 !DEC$ ATTRIBUTES DLLEXPORT :: getQR_PEXP_EP_NP_RK2
1538#endif
1539 use pm_kind, only: RKG => RK2
1540 procedure(real(RKG)) :: getFunc
1541 real(RKG) , intent(in) :: lb, ub, tol
1542 integer(IK) , intent(in) :: nref
1543 type(pexp_type) :: interval
1544 integer(IK) , intent(out) :: neval
1545 real(RKG) , intent(out) :: relerr
1546 real(RKG) :: quadRomb
1547 end function
1548#endif
1549
1550#if RK1_ENABLED
1551 recursive impure module function getQR_PEXP_EP_NP_RK1(getFunc, lb, ub, tol, nref, interval, relerr, neval) result(quadRomb)
1552#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1553 !DEC$ ATTRIBUTES DLLEXPORT :: getQR_PEXP_EP_NP_RK1
1554#endif
1555 use pm_kind, only: RKG => RK1
1556 procedure(real(RKG)) :: getFunc
1557 real(RKG) , intent(in) :: lb, ub, tol
1558 integer(IK) , intent(in) :: nref
1559 type(pexp_type) :: interval
1560 integer(IK) , intent(out) :: neval
1561 real(RKG) , intent(out) :: relerr
1562 real(RKG) :: quadRomb
1563 end function
1564#endif
1565
1566 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1567
1568 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1569 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1570 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1571
1572 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1573
1574#if RK5_ENABLED
1575 recursive impure module function getQR_LBIS_EM_NM_RK5(getFunc, lb, ub, tol, nref, interval) result(quadRomb)
1576#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1577 !DEC$ ATTRIBUTES DLLEXPORT :: getQR_LBIS_EM_NM_RK5
1578#endif
1579 use pm_kind, only: RKG => RK5
1580 procedure(real(RKG)) :: getFunc
1581 real(RKG) , intent(in) :: lb, ub, tol
1582 integer(IK) , intent(in) :: nref
1583 type(lbis_type) :: interval
1584 real(RKG) :: quadRomb
1585 end function
1586#endif
1587
1588#if RK4_ENABLED
1589 recursive impure module function getQR_LBIS_EM_NM_RK4(getFunc, lb, ub, tol, nref, interval) result(quadRomb)
1590#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1591 !DEC$ ATTRIBUTES DLLEXPORT :: getQR_LBIS_EM_NM_RK4
1592#endif
1593 use pm_kind, only: RKG => RK4
1594 procedure(real(RKG)) :: getFunc
1595 real(RKG) , intent(in) :: lb, ub, tol
1596 integer(IK) , intent(in) :: nref
1597 type(lbis_type) :: interval
1598 real(RKG) :: quadRomb
1599 end function
1600#endif
1601
1602#if RK3_ENABLED
1603 recursive impure module function getQR_LBIS_EM_NM_RK3(getFunc, lb, ub, tol, nref, interval) result(quadRomb)
1604#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1605 !DEC$ ATTRIBUTES DLLEXPORT :: getQR_LBIS_EM_NM_RK3
1606#endif
1607 use pm_kind, only: RKG => RK3
1608 procedure(real(RKG)) :: getFunc
1609 real(RKG) , intent(in) :: lb, ub, tol
1610 integer(IK) , intent(in) :: nref
1611 type(lbis_type) :: interval
1612 real(RKG) :: quadRomb
1613 end function
1614#endif
1615
1616#if RK2_ENABLED
1617 recursive impure module function getQR_LBIS_EM_NM_RK2(getFunc, lb, ub, tol, nref, interval) result(quadRomb)
1618#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1619 !DEC$ ATTRIBUTES DLLEXPORT :: getQR_LBIS_EM_NM_RK2
1620#endif
1621 use pm_kind, only: RKG => RK2
1622 procedure(real(RKG)) :: getFunc
1623 real(RKG) , intent(in) :: lb, ub, tol
1624 integer(IK) , intent(in) :: nref
1625 type(lbis_type) :: interval
1626 real(RKG) :: quadRomb
1627 end function
1628#endif
1629
1630#if RK1_ENABLED
1631 recursive impure module function getQR_LBIS_EM_NM_RK1(getFunc, lb, ub, tol, nref, interval) result(quadRomb)
1632#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1633 !DEC$ ATTRIBUTES DLLEXPORT :: getQR_LBIS_EM_NM_RK1
1634#endif
1635 use pm_kind, only: RKG => RK1
1636 procedure(real(RKG)) :: getFunc
1637 real(RKG) , intent(in) :: lb, ub, tol
1638 integer(IK) , intent(in) :: nref
1639 type(lbis_type) :: interval
1640 real(RKG) :: quadRomb
1641 end function
1642#endif
1643
1644 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1645
1646#if RK5_ENABLED
1647 recursive impure module function getQR_LBIS_EP_NM_RK5(getFunc, lb, ub, tol, nref, interval, relerr) result(quadRomb)
1648#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1649 !DEC$ ATTRIBUTES DLLEXPORT :: getQR_LBIS_EP_NM_RK5
1650#endif
1651 use pm_kind, only: RKG => RK5
1652 procedure(real(RKG)) :: getFunc
1653 real(RKG) , intent(in) :: lb, ub, tol
1654 integer(IK) , intent(in) :: nref
1655 type(lbis_type) :: interval
1656 real(RKG) , intent(out) :: relerr
1657 real(RKG) :: quadRomb
1658 end function
1659#endif
1660
1661#if RK4_ENABLED
1662 recursive impure module function getQR_LBIS_EP_NM_RK4(getFunc, lb, ub, tol, nref, interval, relerr) result(quadRomb)
1663#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1664 !DEC$ ATTRIBUTES DLLEXPORT :: getQR_LBIS_EP_NM_RK4
1665#endif
1666 use pm_kind, only: RKG => RK4
1667 procedure(real(RKG)) :: getFunc
1668 real(RKG) , intent(in) :: lb, ub, tol
1669 integer(IK) , intent(in) :: nref
1670 type(lbis_type) :: interval
1671 real(RKG) , intent(out) :: relerr
1672 real(RKG) :: quadRomb
1673 end function
1674#endif
1675
1676#if RK3_ENABLED
1677 recursive impure module function getQR_LBIS_EP_NM_RK3(getFunc, lb, ub, tol, nref, interval, relerr) result(quadRomb)
1678#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1679 !DEC$ ATTRIBUTES DLLEXPORT :: getQR_LBIS_EP_NM_RK3
1680#endif
1681 use pm_kind, only: RKG => RK3
1682 procedure(real(RKG)) :: getFunc
1683 real(RKG) , intent(in) :: lb, ub, tol
1684 integer(IK) , intent(in) :: nref
1685 type(lbis_type) :: interval
1686 real(RKG) , intent(out) :: relerr
1687 real(RKG) :: quadRomb
1688 end function
1689#endif
1690
1691#if RK2_ENABLED
1692 recursive impure module function getQR_LBIS_EP_NM_RK2(getFunc, lb, ub, tol, nref, interval, relerr) result(quadRomb)
1693#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1694 !DEC$ ATTRIBUTES DLLEXPORT :: getQR_LBIS_EP_NM_RK2
1695#endif
1696 use pm_kind, only: RKG => RK2
1697 procedure(real(RKG)) :: getFunc
1698 real(RKG) , intent(in) :: lb, ub, tol
1699 integer(IK) , intent(in) :: nref
1700 type(lbis_type) :: interval
1701 real(RKG) , intent(out) :: relerr
1702 real(RKG) :: quadRomb
1703 end function
1704#endif
1705
1706#if RK1_ENABLED
1707 recursive impure module function getQR_LBIS_EP_NM_RK1(getFunc, lb, ub, tol, nref, interval, relerr) result(quadRomb)
1708#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1709 !DEC$ ATTRIBUTES DLLEXPORT :: getQR_LBIS_EP_NM_RK1
1710#endif
1711 use pm_kind, only: RKG => RK1
1712 procedure(real(RKG)) :: getFunc
1713 real(RKG) , intent(in) :: lb, ub, tol
1714 integer(IK) , intent(in) :: nref
1715 type(lbis_type) :: interval
1716 real(RKG) , intent(out) :: relerr
1717 real(RKG) :: quadRomb
1718 end function
1719#endif
1720
1721 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1722
1723#if RK5_ENABLED
1724 recursive impure module function getQR_LBIS_EP_NP_RK5(getFunc, lb, ub, tol, nref, interval, relerr, neval) result(quadRomb)
1725#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1726 !DEC$ ATTRIBUTES DLLEXPORT :: getQR_LBIS_EP_NP_RK5
1727#endif
1728 use pm_kind, only: RKG => RK5
1729 procedure(real(RKG)) :: getFunc
1730 real(RKG) , intent(in) :: lb, ub, tol
1731 integer(IK) , intent(in) :: nref
1732 type(lbis_type) :: interval
1733 integer(IK) , intent(out) :: neval
1734 real(RKG) , intent(out) :: relerr
1735 real(RKG) :: quadRomb
1736 end function
1737#endif
1738
1739#if RK4_ENABLED
1740 recursive impure module function getQR_LBIS_EP_NP_RK4(getFunc, lb, ub, tol, nref, interval, relerr, neval) result(quadRomb)
1741#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1742 !DEC$ ATTRIBUTES DLLEXPORT :: getQR_LBIS_EP_NP_RK4
1743#endif
1744 use pm_kind, only: RKG => RK4
1745 procedure(real(RKG)) :: getFunc
1746 real(RKG) , intent(in) :: lb, ub, tol
1747 integer(IK) , intent(in) :: nref
1748 type(lbis_type) :: interval
1749 integer(IK) , intent(out) :: neval
1750 real(RKG) , intent(out) :: relerr
1751 real(RKG) :: quadRomb
1752 end function
1753#endif
1754
1755#if RK3_ENABLED
1756 recursive impure module function getQR_LBIS_EP_NP_RK3(getFunc, lb, ub, tol, nref, interval, relerr, neval) result(quadRomb)
1757#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1758 !DEC$ ATTRIBUTES DLLEXPORT :: getQR_LBIS_EP_NP_RK3
1759#endif
1760 use pm_kind, only: RKG => RK3
1761 procedure(real(RKG)) :: getFunc
1762 real(RKG) , intent(in) :: lb, ub, tol
1763 integer(IK) , intent(in) :: nref
1764 type(lbis_type) :: interval
1765 integer(IK) , intent(out) :: neval
1766 real(RKG) , intent(out) :: relerr
1767 real(RKG) :: quadRomb
1768 end function
1769#endif
1770
1771#if RK2_ENABLED
1772 recursive impure module function getQR_LBIS_EP_NP_RK2(getFunc, lb, ub, tol, nref, interval, relerr, neval) result(quadRomb)
1773#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1774 !DEC$ ATTRIBUTES DLLEXPORT :: getQR_LBIS_EP_NP_RK2
1775#endif
1776 use pm_kind, only: RKG => RK2
1777 procedure(real(RKG)) :: getFunc
1778 real(RKG) , intent(in) :: lb, ub, tol
1779 integer(IK) , intent(in) :: nref
1780 type(lbis_type) :: interval
1781 integer(IK) , intent(out) :: neval
1782 real(RKG) , intent(out) :: relerr
1783 real(RKG) :: quadRomb
1784 end function
1785#endif
1786
1787#if RK1_ENABLED
1788 recursive impure module function getQR_LBIS_EP_NP_RK1(getFunc, lb, ub, tol, nref, interval, relerr, neval) result(quadRomb)
1789#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1790 !DEC$ ATTRIBUTES DLLEXPORT :: getQR_LBIS_EP_NP_RK1
1791#endif
1792 use pm_kind, only: RKG => RK1
1793 procedure(real(RKG)) :: getFunc
1794 real(RKG) , intent(in) :: lb, ub, tol
1795 integer(IK) , intent(in) :: nref
1796 type(lbis_type) :: interval
1797 integer(IK) , intent(out) :: neval
1798 real(RKG) , intent(out) :: relerr
1799 real(RKG) :: quadRomb
1800 end function
1801#endif
1802
1803 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1804
1805 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1806 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1807 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1808
1809 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1810
1811#if RK5_ENABLED
1812 recursive impure module function getQR_UBIS_EM_NM_RK5(getFunc, lb, ub, tol, nref, interval) result(quadRomb)
1813#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1814 !DEC$ ATTRIBUTES DLLEXPORT :: getQR_UBIS_EM_NM_RK5
1815#endif
1816 use pm_kind, only: RKG => RK5
1817 procedure(real(RKG)) :: getFunc
1818 real(RKG) , intent(in) :: lb, ub, tol
1819 integer(IK) , intent(in) :: nref
1820 type(ubis_type) :: interval
1821 real(RKG) :: quadRomb
1822 end function
1823#endif
1824
1825#if RK4_ENABLED
1826 recursive impure module function getQR_UBIS_EM_NM_RK4(getFunc, lb, ub, tol, nref, interval) result(quadRomb)
1827#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1828 !DEC$ ATTRIBUTES DLLEXPORT :: getQR_UBIS_EM_NM_RK4
1829#endif
1830 use pm_kind, only: RKG => RK4
1831 procedure(real(RKG)) :: getFunc
1832 real(RKG) , intent(in) :: lb, ub, tol
1833 integer(IK) , intent(in) :: nref
1834 type(ubis_type) :: interval
1835 real(RKG) :: quadRomb
1836 end function
1837#endif
1838
1839#if RK3_ENABLED
1840 recursive impure module function getQR_UBIS_EM_NM_RK3(getFunc, lb, ub, tol, nref, interval) result(quadRomb)
1841#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1842 !DEC$ ATTRIBUTES DLLEXPORT :: getQR_UBIS_EM_NM_RK3
1843#endif
1844 use pm_kind, only: RKG => RK3
1845 procedure(real(RKG)) :: getFunc
1846 real(RKG) , intent(in) :: lb, ub, tol
1847 integer(IK) , intent(in) :: nref
1848 type(ubis_type) :: interval
1849 real(RKG) :: quadRomb
1850 end function
1851#endif
1852
1853#if RK2_ENABLED
1854 recursive impure module function getQR_UBIS_EM_NM_RK2(getFunc, lb, ub, tol, nref, interval) result(quadRomb)
1855#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1856 !DEC$ ATTRIBUTES DLLEXPORT :: getQR_UBIS_EM_NM_RK2
1857#endif
1858 use pm_kind, only: RKG => RK2
1859 procedure(real(RKG)) :: getFunc
1860 real(RKG) , intent(in) :: lb, ub, tol
1861 integer(IK) , intent(in) :: nref
1862 type(ubis_type) :: interval
1863 real(RKG) :: quadRomb
1864 end function
1865#endif
1866
1867#if RK1_ENABLED
1868 recursive impure module function getQR_UBIS_EM_NM_RK1(getFunc, lb, ub, tol, nref, interval) result(quadRomb)
1869#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1870 !DEC$ ATTRIBUTES DLLEXPORT :: getQR_UBIS_EM_NM_RK1
1871#endif
1872 use pm_kind, only: RKG => RK1
1873 procedure(real(RKG)) :: getFunc
1874 real(RKG) , intent(in) :: lb, ub, tol
1875 integer(IK) , intent(in) :: nref
1876 type(ubis_type) :: interval
1877 real(RKG) :: quadRomb
1878 end function
1879#endif
1880
1881 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1882
1883#if RK5_ENABLED
1884 recursive impure module function getQR_UBIS_EP_NM_RK5(getFunc, lb, ub, tol, nref, interval, relerr) result(quadRomb)
1885#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1886 !DEC$ ATTRIBUTES DLLEXPORT :: getQR_UBIS_EP_NM_RK5
1887#endif
1888 use pm_kind, only: RKG => RK5
1889 procedure(real(RKG)) :: getFunc
1890 real(RKG) , intent(in) :: lb, ub, tol
1891 integer(IK) , intent(in) :: nref
1892 type(ubis_type) :: interval
1893 real(RKG) , intent(out) :: relerr
1894 real(RKG) :: quadRomb
1895 end function
1896#endif
1897
1898#if RK4_ENABLED
1899 recursive impure module function getQR_UBIS_EP_NM_RK4(getFunc, lb, ub, tol, nref, interval, relerr) result(quadRomb)
1900#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1901 !DEC$ ATTRIBUTES DLLEXPORT :: getQR_UBIS_EP_NM_RK4
1902#endif
1903 use pm_kind, only: RKG => RK4
1904 procedure(real(RKG)) :: getFunc
1905 real(RKG) , intent(in) :: lb, ub, tol
1906 integer(IK) , intent(in) :: nref
1907 type(ubis_type) :: interval
1908 real(RKG) , intent(out) :: relerr
1909 real(RKG) :: quadRomb
1910 end function
1911#endif
1912
1913#if RK3_ENABLED
1914 recursive impure module function getQR_UBIS_EP_NM_RK3(getFunc, lb, ub, tol, nref, interval, relerr) result(quadRomb)
1915#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1916 !DEC$ ATTRIBUTES DLLEXPORT :: getQR_UBIS_EP_NM_RK3
1917#endif
1918 use pm_kind, only: RKG => RK3
1919 procedure(real(RKG)) :: getFunc
1920 real(RKG) , intent(in) :: lb, ub, tol
1921 integer(IK) , intent(in) :: nref
1922 type(ubis_type) :: interval
1923 real(RKG) , intent(out) :: relerr
1924 real(RKG) :: quadRomb
1925 end function
1926#endif
1927
1928#if RK2_ENABLED
1929 recursive impure module function getQR_UBIS_EP_NM_RK2(getFunc, lb, ub, tol, nref, interval, relerr) result(quadRomb)
1930#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1931 !DEC$ ATTRIBUTES DLLEXPORT :: getQR_UBIS_EP_NM_RK2
1932#endif
1933 use pm_kind, only: RKG => RK2
1934 procedure(real(RKG)) :: getFunc
1935 real(RKG) , intent(in) :: lb, ub, tol
1936 integer(IK) , intent(in) :: nref
1937 type(ubis_type) :: interval
1938 real(RKG) , intent(out) :: relerr
1939 real(RKG) :: quadRomb
1940 end function
1941#endif
1942
1943#if RK1_ENABLED
1944 recursive impure module function getQR_UBIS_EP_NM_RK1(getFunc, lb, ub, tol, nref, interval, relerr) result(quadRomb)
1945#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1946 !DEC$ ATTRIBUTES DLLEXPORT :: getQR_UBIS_EP_NM_RK1
1947#endif
1948 use pm_kind, only: RKG => RK1
1949 procedure(real(RKG)) :: getFunc
1950 real(RKG) , intent(in) :: lb, ub, tol
1951 integer(IK) , intent(in) :: nref
1952 type(ubis_type) :: interval
1953 real(RKG) , intent(out) :: relerr
1954 real(RKG) :: quadRomb
1955 end function
1956#endif
1957
1958 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1959
1960#if RK5_ENABLED
1961 recursive impure module function getQR_UBIS_EP_NP_RK5(getFunc, lb, ub, tol, nref, interval, relerr, neval) result(quadRomb)
1962#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1963 !DEC$ ATTRIBUTES DLLEXPORT :: getQR_UBIS_EP_NP_RK5
1964#endif
1965 use pm_kind, only: RKG => RK5
1966 procedure(real(RKG)) :: getFunc
1967 real(RKG) , intent(in) :: lb, ub, tol
1968 integer(IK) , intent(in) :: nref
1969 type(ubis_type) :: interval
1970 integer(IK) , intent(out) :: neval
1971 real(RKG) , intent(out) :: relerr
1972 real(RKG) :: quadRomb
1973 end function
1974#endif
1975
1976#if RK4_ENABLED
1977 recursive impure module function getQR_UBIS_EP_NP_RK4(getFunc, lb, ub, tol, nref, interval, relerr, neval) result(quadRomb)
1978#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1979 !DEC$ ATTRIBUTES DLLEXPORT :: getQR_UBIS_EP_NP_RK4
1980#endif
1981 use pm_kind, only: RKG => RK4
1982 procedure(real(RKG)) :: getFunc
1983 real(RKG) , intent(in) :: lb, ub, tol
1984 integer(IK) , intent(in) :: nref
1985 type(ubis_type) :: interval
1986 integer(IK) , intent(out) :: neval
1987 real(RKG) , intent(out) :: relerr
1988 real(RKG) :: quadRomb
1989 end function
1990#endif
1991
1992#if RK3_ENABLED
1993 recursive impure module function getQR_UBIS_EP_NP_RK3(getFunc, lb, ub, tol, nref, interval, relerr, neval) result(quadRomb)
1994#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1995 !DEC$ ATTRIBUTES DLLEXPORT :: getQR_UBIS_EP_NP_RK3
1996#endif
1997 use pm_kind, only: RKG => RK3
1998 procedure(real(RKG)) :: getFunc
1999 real(RKG) , intent(in) :: lb, ub, tol
2000 integer(IK) , intent(in) :: nref
2001 type(ubis_type) :: interval
2002 integer(IK) , intent(out) :: neval
2003 real(RKG) , intent(out) :: relerr
2004 real(RKG) :: quadRomb
2005 end function
2006#endif
2007
2008#if RK2_ENABLED
2009 recursive impure module function getQR_UBIS_EP_NP_RK2(getFunc, lb, ub, tol, nref, interval, relerr, neval) result(quadRomb)
2010#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2011 !DEC$ ATTRIBUTES DLLEXPORT :: getQR_UBIS_EP_NP_RK2
2012#endif
2013 use pm_kind, only: RKG => RK2
2014 procedure(real(RKG)) :: getFunc
2015 real(RKG) , intent(in) :: lb, ub, tol
2016 integer(IK) , intent(in) :: nref
2017 type(ubis_type) :: interval
2018 integer(IK) , intent(out) :: neval
2019 real(RKG) , intent(out) :: relerr
2020 real(RKG) :: quadRomb
2021 end function
2022#endif
2023
2024#if RK1_ENABLED
2025 recursive impure module function getQR_UBIS_EP_NP_RK1(getFunc, lb, ub, tol, nref, interval, relerr, neval) result(quadRomb)
2026#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2027 !DEC$ ATTRIBUTES DLLEXPORT :: getQR_UBIS_EP_NP_RK1
2028#endif
2029 use pm_kind, only: RKG => RK1
2030 procedure(real(RKG)) :: getFunc
2031 real(RKG) , intent(in) :: lb, ub, tol
2032 integer(IK) , intent(in) :: nref
2033 type(ubis_type) :: interval
2034 integer(IK) , intent(out) :: neval
2035 real(RKG) , intent(out) :: relerr
2036 real(RKG) :: quadRomb
2037 end function
2038#endif
2039
2040 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2041
2042 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2043 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2044 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2045
2046 end interface
2047
2048!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2049
2050! !> \brief
2051! !> Generate and return the \f$n\f$th stage refinement of the integral of the input function `getFunc()` in the closed range `[lb, ub]`
2052! !> using the **Extended Trapezoidal Rule**.
2053! !>
2054! !> \details
2055! !> The coarsest implementation of the trapezoidal rule is to average the function at its endpoints `lb` and `ub`.<br>
2056! !> The first stage of the refinement is to add to this average the value of the function at the halfway point.<br>
2057! !> The second stage of refinement is to add the values at the `1/4` and `3/4` points.<br>
2058! !> This procedure continues until the user is satisfied with the achieved accuracy of the integral.<br>
2059! !> With each new sequential call to `setQuadTrap()`, the accuracy of the output integral will be improved
2060! !> by adding \f42^{\ms{nref} - 2} extra function evaluation points between the integration bounds.<br>
2061! !>
2062! !> \param[in] getFunc : The input function to be integrated (i.e., the integrand).
2063! !> -# On entry, it must take an input scalar of the same type and kind as `quadTrap`.<br>
2064! !> -# On exit, it must generate an input scalar of the same type and kind as `quadTrap`, representing the corresponding function value.<br>
2065! !> \param[in] lb : The input scalar of the same type and kind as the output `quadTrap`, containing the lower bound of the integration.
2066! !> \param[in] ub : The input scalar of the same type and kind as the output `quadTrap`, containing the upper bound of the integration.
2067! !> \param[in] nref : The input scalar `integer` of default kind \IK, representing the integration refinement stage.<br>
2068! !> The value of `nref` is supposed to be `1` in the first call to `setQuadTrap()` and subsequently increase by one in each subsequent call.<br>
2069! !> \param[inout] quadTrap : The input/output scalar `real` of kind \RKALL, representing the integration result.<br>
2070! !> On input, it must contain the integration result at previous refinements.<br>
2071! !> On output, it is overwritten with the most recent integral estimate via the most recent function evaluations.<br>
2072! !> On the first call to `setQuadTrap()`, it must be set to `0`.<br>
2073! !> \param[out] neval : The output scalar `integer` of default kind \IK, representing the number of function evaluations made within the integrator.<br>
2074! !> (**optional**. It can be present <b>if and only if</b> `relerr` is also present.)
2075! !> \param[out] relerr : The output scalar of the same type and kind as the output `quadTrap` containing the final estimated relative error in the result.<br>
2076! !> By definition, this is always smaller than the specified input `tol`.<br>
2077! !> (**optional**. It can be present <b>if and only if</b> `neval` is also present.)
2078! !>
2079! !> \interface
2080! !> \code{.F90}
2081! !>
2082! !> use pm_quadRomb, only: setQuadTrap
2083! !>
2084! !> call setQuadTrap(getFunc, lb, ub, nref, quadTrap)
2085! !> call setQuadTrap(getFunc, lb, ub, nref, quadTrap, relerr, neval)
2086! !>
2087! !> \endcode
2088! !>
2089! !> \see
2090! !> [getQuadRombOpen](@ref pm_quadRomb::getQuadRombOpen)<br>
2091! !>
2092! !> \example
2093! !> \include{lineno} example/pm_quadRomb/setQuadTrap/main.F90
2094! !> \compilef
2095! !> \output
2096! !> \include{lineno} example/pm_quadRomb/setQuadTrap/main.out.F90
2097! !> \postproc
2098! !> \include{lineno} example/pm_quadRomb/setQuadTrap/main.py
2099! !> \vis
2100! !> \image html pm_quadRomb/setQuadTrap/setQuadTrap.png width=700
2101! !>
2102! !> \test
2103! !> [test_pm_quadRomb](@ref test_pm_quadRomb)
2104! !>
2105! !> \final
2106! !>
2107! !> \author
2108! !> \AmirShahmoradi, September 1, 2017, 12:00 AM, Institute for Computational Engineering and Sciences (ICES), The University of Texas Austin<br>
2109! interface setQuadTrap
2110!
2111! !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2112!
2113!#if RK5_ENABLED
2114! recursive impure module subroutine setQuadTrap_RK5(getFunc, lb, ub, nref, quadTrap)
2115!#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2116! !DEC$ ATTRIBUTES DLLEXPORT :: setQuadTrap_RK5
2117!#endif
2118! use pm_kind, only: RKG => RK5
2119! procedure(real(RKG)) :: getFunc
2120! real(RKG) , intent(in) :: lb, ub
2121! integer(IK) , intent(in) :: nref
2122! real(RKG) :: quadTrap
2123! end subroutine
2124!#endif
2125!
2126!#if RK4_ENABLED
2127! recursive impure module subroutine setQuadTrap_RK4(getFunc, lb, ub, nref, quadTrap)
2128!#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2129! !DEC$ ATTRIBUTES DLLEXPORT :: setQuadTrap_RK4
2130!#endif
2131! use pm_kind, only: RKG => RK4
2132! procedure(real(RKG)) :: getFunc
2133! real(RKG) , intent(in) :: lb, ub
2134! integer(IK) , intent(in) :: nref
2135! real(RKG) :: quadTrap
2136! end subroutine
2137!#endif
2138!
2139!#if RK3_ENABLED
2140! recursive impure module subroutine setQuadTrap_RK3(getFunc, lb, ub, nref, quadTrap)
2141!#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2142! !DEC$ ATTRIBUTES DLLEXPORT :: setQuadTrap_RK3
2143!#endif
2144! use pm_kind, only: RKG => RK3
2145! procedure(real(RKG)) :: getFunc
2146! real(RKG) , intent(in) :: lb, ub
2147! integer(IK) , intent(in) :: nref
2148! real(RKG) :: quadTrap
2149! end subroutine
2150!#endif
2151!
2152!#if RK2_ENABLED
2153! recursive impure module subroutine setQuadTrap_RK2(getFunc, lb, ub, nref, quadTrap)
2154!#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2155! !DEC$ ATTRIBUTES DLLEXPORT :: setQuadTrap_RK2
2156!#endif
2157! use pm_kind, only: RKG => RK2
2158! procedure(real(RKG)) :: getFunc
2159! real(RKG) , intent(in) :: lb, ub
2160! integer(IK) , intent(in) :: nref
2161! real(RKG) :: quadTrap
2162! end subroutine
2163!#endif
2164!
2165!#if RK1_ENABLED
2166! recursive impure module subroutine setQuadTrap_RK1(getFunc, lb, ub, nref, quadTrap)
2167!#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2168! !DEC$ ATTRIBUTES DLLEXPORT :: setQuadTrap_RK1
2169!#endif
2170! use pm_kind, only: RKG => RK1
2171! procedure(real(RKG)) :: getFunc
2172! real(RKG) , intent(in) :: lb, ub
2173! integer(IK) , intent(in) :: nref
2174! real(RKG) :: quadTrap
2175! end subroutine
2176!#endif
2177!
2178! !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2179!
2180!#if RK5_ENABLED
2181! recursive impure module subroutine setQuadTrap_EP_NM_RK5(getFunc, lb, ub, nref, quadTrap, relerr, neval)
2182!#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2183! !DEC$ ATTRIBUTES DLLEXPORT :: setQuadTrap_EP_NM_RK5
2184!#endif
2185! use pm_kind, only: RKG => RK5
2186! procedure(real(RKG)) :: getFunc
2187! real(RKG) , intent(in) :: lb, ub
2188! integer(IK) , intent(in) :: nref
2189! integer(IK) , intent(out) :: neval
2190! real(RKG) , intent(out) :: relerr
2191! real(RKG) :: quadTrap
2192! end subroutine
2193!#endif
2194!
2195!#if RK4_ENABLED
2196! recursive impure module subroutine setQuadTrap_EP_NM_RK4(getFunc, lb, ub, nref, quadTrap, relerr, neval)
2197!#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2198! !DEC$ ATTRIBUTES DLLEXPORT :: setQuadTrap_EP_NM_RK4
2199!#endif
2200! use pm_kind, only: RKG => RK4
2201! procedure(real(RKG)) :: getFunc
2202! real(RKG) , intent(in) :: lb, ub
2203! integer(IK) , intent(in) :: nref
2204! integer(IK) , intent(out) :: neval
2205! real(RKG) , intent(out) :: relerr
2206! real(RKG) :: quadTrap
2207! end subroutine
2208!#endif
2209!
2210!#if RK3_ENABLED
2211! recursive impure module subroutine setQuadTrap_EP_NM_RK3(getFunc, lb, ub, nref, quadTrap, relerr, neval)
2212!#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2213! !DEC$ ATTRIBUTES DLLEXPORT :: setQuadTrap_EP_NM_RK3
2214!#endif
2215! use pm_kind, only: RKG => RK3
2216! procedure(real(RKG)) :: getFunc
2217! real(RKG) , intent(in) :: lb, ub
2218! integer(IK) , intent(in) :: nref
2219! integer(IK) , intent(out) :: neval
2220! real(RKG) , intent(out) :: relerr
2221! real(RKG) :: quadTrap
2222! end subroutine
2223!#endif
2224!
2225!#if RK2_ENABLED
2226! recursive impure module subroutine setQuadTrap_EP_NM_RK2(getFunc, lb, ub, nref, quadTrap, relerr, neval)
2227!#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2228! !DEC$ ATTRIBUTES DLLEXPORT :: setQuadTrap_EP_NM_RK2
2229!#endif
2230! use pm_kind, only: RKG => RK2
2231! procedure(real(RKG)) :: getFunc
2232! real(RKG) , intent(in) :: lb, ub
2233! integer(IK) , intent(in) :: nref
2234! integer(IK) , intent(out) :: neval
2235! real(RKG) , intent(out) :: relerr
2236! real(RKG) , intent(inout) :: quadTrap
2237! end subroutine
2238!#endif
2239!
2240!#if RK1_ENABLED
2241! recursive impure module subroutine setQuadTrap_EP_NM_RK1(getFunc, lb, ub, nref, quadTrap, relerr, neval)
2242!#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2243! !DEC$ ATTRIBUTES DLLEXPORT :: setQuadTrap_EP_NM_RK1
2244!#endif
2245! use pm_kind, only: RKG => RK1
2246! procedure(real(RKG)) :: getFunc
2247! real(RKG) , intent(in) :: lb, ub
2248! integer(IK) , intent(in) :: nref
2249! integer(IK) , intent(out) :: neval
2250! real(RKG) , intent(out) :: relerr
2251! real(RKG) :: quadTrap
2252! end subroutine
2253!#endif
2254!
2255! !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2256!
2257! end interface
2258
2259!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2260
2261! recursive impure setQuadTrap(getFunc, lb, ub, quadTrap, refinementStage, neval)
2262!#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2263! !DEC$ ATTRIBUTES DLLEXPORT :: setQuadTrap
2264!#endif
2265! implicit none
2266! integer(IK), intent(in) :: refinementStage
2267! real(RK), intent(in) :: lb,ub
2268! real(RK), intent(inout) :: quadTrap
2269! integer(IK), intent(out) :: neval
2270! integer(IK) :: iFuncEval
2271! real(RK) :: del,sum,tnm,x
2272! procedure(integrand_proc) :: getFunc
2273! if (refinementStage == 1_IK) then
2274! neval = 2_IK
2275! quadTrap = 0.5_RK * (ub - lb) * (getFunc(lb) + getFunc(ub))
2276! else
2277! neval = 2**(refinementStage - 2_IK)
2278! tnm = real(neval, RK)
2279! del = (ub - lb) / tnm
2280! x = lb + 0.5_RK * del
2281! sum = 0._RK
2282! do iFuncEval = 1_IK, neval
2283! sum = sum + getFunc(x)
2284! x = x + del
2285! end do
2286! quadTrap = 0.5_RK * (quadTrap + (ub-lb) * sum / tnm)
2287! endif
2288! end subroutine setQuadTrap
2289
2290!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2291
2293#if 0
2294contains
2295
2296!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2297
2315 recursive subroutine midexp(getFunc, lb, ub, integral, refinementStage, neval)
2316#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2317 !DEC$ ATTRIBUTES DLLEXPORT :: midexp
2318#endif
2319 use pm_except, only: LOGHUGE_RK
2320 implicit none
2321 integer(IK) , intent(in) :: refinementStage
2322 real(RK) , intent(in) :: lb,ub
2323 integer(IK) , intent(out) :: neval
2324 real(RK) , intent(inout) :: integral
2325 procedure(integrand_proc) :: getFunc
2326 real(RK) :: ddel,del,summ,x,lbTrans,ubTrans
2327 real(RK) :: inverseThreeNumFuncEval
2328 integer(IK) :: iFuncEval
2329 ubTrans = exp(-lb)
2330 lbTrans = 0._RK; if (ub<LOGHUGE_RK) lbTrans = exp(-ub)
2331 if (refinementStage==1_IK) then
2332 neval = 1_IK
2333 integral = (ubTrans-lbTrans)*getTransFunc(0.5_RK*(lbTrans+ubTrans))
2334 else
2335 neval = 3**(refinementStage-2)
2336 inverseThreeNumFuncEval = ONE_THIRD / neval
2337 del = (ubTrans-lbTrans) * inverseThreeNumFuncEval
2338 ddel = del + del
2339 x = lbTrans + 0.5_RK*del
2340 summ = 0._RK
2341 do iFuncEval = 1,neval
2342 summ = summ + getTransFunc(x)
2343 x = x + ddel
2344 summ = summ + getTransFunc(x)
2345 x = x + del
2346 end do
2347 integral = ONE_THIRD * integral + (ubTrans-lbTrans) * summ * inverseThreeNumFuncEval
2348 neval = 2_IK * neval
2349 end if
2350 contains
2351 !!> \cond excluded
2352 function getTransFunc(x)
2353 real(RK), intent(in) :: x
2354 real(RK) :: getTransFunc
2355 getTransFunc = getFunc(-log(x)) / x
2356 end function getTransFunc
2357 !!> \endcond excluded
2358 end subroutine midexp
2359
2360!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2361
2381 subroutine midinf(getFunc,lb,ub,integral,refinementStage,neval)
2382#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2383 !DEC$ ATTRIBUTES DLLEXPORT :: midinf
2384#endif
2385 implicit none
2386 real(RK) , intent(in) :: lb,ub
2387 integer(IK) , intent(in) :: refinementStage
2388 integer(IK) , intent(out) :: neval
2389 real(RK) , intent(inout) :: integral
2390 procedure(integrand_proc) :: getFunc
2391 real(RK) :: lbTrans, ubTrans, del, ddel, summ, x
2392 real(RK) :: inverseThreeNumFuncEval
2393 integer(IK) :: iFuncEval
2394 ubTrans = 1.0_RK / lb
2395 lbTrans = 1.0_RK / ub
2396 if (refinementStage == 1_IK) then
2397 neval = 1_IK
2398 integral = (ubTrans-lbTrans) * getTransFunc(0.5_RK * (lbTrans+ubTrans))
2399 else
2400 neval = 3**(refinementStage-2)
2401 inverseThreeNumFuncEval = ONE_THIRD / neval
2402 del = (ubTrans-lbTrans) * inverseThreeNumFuncEval
2403 ddel = del + del
2404 x = lbTrans + 0.5_RK * del
2405 summ = 0._RK
2406 do iFuncEval = 1, neval
2407 summ = summ + getTransFunc(x)
2408 x = x + ddel
2409 summ = summ + getTransFunc(x)
2410 x = x + del
2411 end do
2412 integral = ONE_THIRD * integral + (ubTrans-lbTrans) * summ * inverseThreeNumFuncEval
2413 neval = 2_IK * neval
2414 end if
2415 contains
2416 !!> \cond excluded
2417 function getTransFunc(x) result(transFunc)
2418 implicit none
2419 real(RK), intent(in) :: x
2420 real(RK) :: transFunc
2421 transFunc = getFunc(1._RK/x) / x**2
2422 end function getTransFunc
2423 !!> \endcond excluded
2424 end subroutine midinf
2425
2426!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2427
2447 subroutine midpnt(getFunc,lb,ub,integral,refinementStage,neval)
2448#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2449 !DEC$ ATTRIBUTES DLLEXPORT :: midpnt
2450#endif
2451 implicit none
2452 integer(IK) , intent(in) :: refinementStage
2453 real(RK) , intent(in) :: lb, ub
2454 real(RK) , intent(inout) :: integral
2455 integer(IK) , intent(out) :: neval
2456 procedure(integrand_proc) :: getFunc
2457 integer(IK) :: iFuncEval
2458 real(RK) :: ddel,del,summ,x
2459 real(RK) :: inverseThreeNumFuncEval
2460 if (refinementStage==1) then
2461 neval = 1_IK
2462 integral = (ub-lb) * getFunc( 0.5_RK * (lb+ub) )
2463 else
2464 neval = 3_IK**(refinementStage-2)
2465 inverseThreeNumFuncEval = ONE_THIRD / neval
2466 del = (ub-lb) * inverseThreeNumFuncEval
2467 ddel = del+del
2468 x = lb + 0.5_RK * del
2469 summ = 0._RK
2470 do iFuncEval = 1, neval
2471 summ = summ + getFunc(x)
2472 x = x + ddel
2473 summ = summ + getFunc(x)
2474 x = x + del
2475 end do
2476 integral = ONE_THIRD * integral + (ub-lb) * summ * inverseThreeNumFuncEval
2477 neval = 2_IK * neval
2478 end if
2479 end subroutine midpnt
2480
2481!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2482#endif
2483
2484
2485end module pm_quadRomb
Generate and return the integral of the input function getFunc() in the closed range [lb,...
This module contains procedures and generic interfaces for testing for exceptional cases at runtime.
Definition: pm_except.F90:46
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 RK
The default real kind in the ParaMonte library: real64 in Fortran, c_double in C-Fortran Interoperati...
Definition: pm_kind.F90:543
integer, parameter RK3
Definition: pm_kind.F90:500
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 classes and procedures to perform numerical integrations.
Definition: pm_quadRomb.F90:31
character(*, SK), parameter MODULE_NAME
Definition: pm_quadRomb.F90:37
This is the indicator type for generating instances of objects that indicate the integration interval...
This is the indicator type for generating instances of objects that indicate the integration interval...
This is the indicator type for generating instances of objects that indicate the integration interval...
Definition: pm_quadRomb.F90:78
This is the indicator type for generating instances of objects that indicate the integration interval...
This is the indicator type for generating instances of objects that indicate the integration interval...
This is the indicator type for generating instances of objects that indicate the integration interval...