https://www.cdslab.org/paramonte/fortran/2
Current view: top level - main - pm_matrixMulAdd@routines.F90 (source / functions) Hit Total Coverage
Test: ParaMonte 2.0.0 :: Serial Fortran - Code Coverage Report Lines: 728 728 100.0 %
Date: 2024-04-08 03:18:57 Functions: 728 728 100.0 %
Legend: Lines: hit not hit

          Line data    Source code
       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             : 
      17             : !>  \brief
      18             : !>  This file contains procedure implementations of [pm_matrixMulAdd](@ref pm_matrixMulAdd).
      19             : !>
      20             : !>  \finmain
      21             : !>
      22             : !>  \author
      23             : !>  \AmirShahmoradi, Apr 21, 2017, 1:54 AM, Institute for Computational Engineering and Sciences (ICES), The University of Texas at Austin
      24             : 
      25             : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
      26             : 
      27             : submodule (pm_matrixMulAdd) routines ! LCOV_EXCL_LINE
      28             : 
      29             : #if CHECK_ENABLED
      30             :     ! \bug Bypass Intel `ifort` 2022 compiler bug for too many use statements in submodule procedures.
      31             :     use pm_err, only: getFine
      32             :     use pm_val2str, only: getStr
      33             :     use pm_err, only: setAsserted
      34             : #define CHECK_ASSERTION(LINE,ASSERTION,MSG) \
      35             : call setAsserted(ASSERTION,getFine(__FILE__,LINE)//MODULE_NAME//MSG);
      36             : #else
      37             : #define CHECK_ASSERTION(LINE,ASSERTION,MSG) continue;
      38             : #endif
      39             : 
      40             :     !use pm_arrayReverse, only: getReversed
      41             :     implicit none
      42             : 
      43             : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
      44             : 
      45             : contains
      46             : 
      47             : #define setMatMulAdd_ENABLED 1
      48             : 
      49             : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
      50             : 
      51             : #define gemv_ENABLED 1
      52             : 
      53             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
      54             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
      55             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
      56             : 
      57             : #define SFA_ENABLED 1
      58             : #define SFB_ENABLED 1
      59             : 
      60             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
      61             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
      62             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
      63             : 
      64             : #define ASS_ENABLED 1
      65             : 
      66             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
      67             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
      68             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
      69             : 
      70             : #define TNB_ENABLED 1
      71             : 
      72             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
      73             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
      74             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
      75             : 
      76             : #define TNA_ENABLED 1
      77             : 
      78             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
      79             : 
      80             : #define IK_ENABLED 1
      81             : 
      82             : #if IK5_ENABLED
      83         136 :     module procedure gemv_ASS_SFA_SFB_TNA_TNB_IK5
      84             :         use pm_kind, only: IKC => IK5
      85             : #include "pm_matrixMulAdd@routines.inc.F90"
      86             :     end procedure
      87             : #endif
      88             : 
      89             : #if IK4_ENABLED
      90         141 :     module procedure gemv_ASS_SFA_SFB_TNA_TNB_IK4
      91             :         use pm_kind, only: IKC => IK4
      92             : #include "pm_matrixMulAdd@routines.inc.F90"
      93             :     end procedure
      94             : #endif
      95             : 
      96             : #if IK3_ENABLED
      97         151 :     module procedure gemv_ASS_SFA_SFB_TNA_TNB_IK3
      98             :         use pm_kind, only: IKC => IK3
      99             : #include "pm_matrixMulAdd@routines.inc.F90"
     100             :     end procedure
     101             : #endif
     102             : 
     103             : #if IK2_ENABLED
     104         133 :     module procedure gemv_ASS_SFA_SFB_TNA_TNB_IK2
     105             :         use pm_kind, only: IKC => IK2
     106             : #include "pm_matrixMulAdd@routines.inc.F90"
     107             :     end procedure
     108             : #endif
     109             : 
     110             : #if IK1_ENABLED
     111         146 :     module procedure gemv_ASS_SFA_SFB_TNA_TNB_IK1
     112             :         use pm_kind, only: IKC => IK1
     113             : #include "pm_matrixMulAdd@routines.inc.F90"
     114             :     end procedure
     115             : #endif
     116             : 
     117             : #undef IK_ENABLED
     118             : 
     119             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     120             : 
     121             : #define CK_ENABLED 1
     122             : 
     123             : #if CK5_ENABLED
     124             :     module procedure gemv_ASS_SFA_SFB_TNA_TNB_CK5
     125             :         use pm_kind, only: CKC => CK5
     126             : #include "pm_matrixMulAdd@routines.inc.F90"
     127             :     end procedure
     128             : #endif
     129             : 
     130             : #if CK4_ENABLED
     131         141 :     module procedure gemv_ASS_SFA_SFB_TNA_TNB_CK4
     132             :         use pm_kind, only: CKC => CK4
     133             : #include "pm_matrixMulAdd@routines.inc.F90"
     134             :     end procedure
     135             : #endif
     136             : 
     137             : #if CK3_ENABLED
     138         152 :     module procedure gemv_ASS_SFA_SFB_TNA_TNB_CK3
     139             :         use pm_kind, only: CKC => CK3
     140             : #include "pm_matrixMulAdd@routines.inc.F90"
     141             :     end procedure
     142             : #endif
     143             : 
     144             : #if CK2_ENABLED
     145         130 :     module procedure gemv_ASS_SFA_SFB_TNA_TNB_CK2
     146             :         use pm_kind, only: CKC => CK2
     147             : #define DISPATCH_ENABLED 1
     148             : #include "pm_matrixMulAdd@routines.inc.F90"
     149             : #undef  DISPATCH_ENABLED
     150             :     end procedure
     151             : #endif
     152             : 
     153             : #if CK1_ENABLED
     154         144 :     module procedure gemv_ASS_SFA_SFB_TNA_TNB_CK1
     155             :         use pm_kind, only: CKC => CK1
     156             : #define DISPATCH_ENABLED 1
     157             : #include "pm_matrixMulAdd@routines.inc.F90"
     158             : #undef  DISPATCH_ENABLED
     159             :     end procedure
     160             : #endif
     161             : 
     162             : #undef CK_ENABLED
     163             : 
     164             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     165             : 
     166             : #define RK_ENABLED 1
     167             : 
     168             : #if RK5_ENABLED
     169             :     module procedure gemv_ASS_SFA_SFB_TNA_TNB_RK5
     170             :         use pm_kind, only: RKC => RK5
     171             : #include "pm_matrixMulAdd@routines.inc.F90"
     172             :     end procedure
     173             : #endif
     174             : 
     175             : #if RK4_ENABLED
     176         133 :     module procedure gemv_ASS_SFA_SFB_TNA_TNB_RK4
     177             :         use pm_kind, only: RKC => RK4
     178             : #include "pm_matrixMulAdd@routines.inc.F90"
     179             :     end procedure
     180             : #endif
     181             : 
     182             : #if RK3_ENABLED
     183         144 :     module procedure gemv_ASS_SFA_SFB_TNA_TNB_RK3
     184             :         use pm_kind, only: RKC => RK3
     185             : #include "pm_matrixMulAdd@routines.inc.F90"
     186             :     end procedure
     187             : #endif
     188             : 
     189             : #if RK2_ENABLED
     190         125 :     module procedure gemv_ASS_SFA_SFB_TNA_TNB_RK2
     191             :         use pm_kind, only: RKC => RK2
     192             : #define DISPATCH_ENABLED 1
     193             : #include "pm_matrixMulAdd@routines.inc.F90"
     194             : #undef  DISPATCH_ENABLED
     195             :     end procedure
     196             : #endif
     197             : 
     198             : #if RK1_ENABLED
     199         145 :     module procedure gemv_ASS_SFA_SFB_TNA_TNB_RK1
     200             :         use pm_kind, only: RKC => RK1
     201             : #define DISPATCH_ENABLED 1
     202             : #include "pm_matrixMulAdd@routines.inc.F90"
     203             : #undef  DISPATCH_ENABLED
     204             :     end procedure
     205             : #endif
     206             : 
     207             : #undef RK_ENABLED
     208             : 
     209             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     210             : 
     211             : #undef TNA_ENABLED
     212             : 
     213             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     214             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     215             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     216             : 
     217             : #define TSA_ENABLED 1
     218             : 
     219             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     220             : 
     221             : #define IK_ENABLED 1
     222             : 
     223             : #if IK5_ENABLED
     224         136 :     module procedure gemv_ASS_SFA_SFB_TSA_TNB_IK5
     225             :         use pm_kind, only: IKC => IK5
     226             : #include "pm_matrixMulAdd@routines.inc.F90"
     227             :     end procedure
     228             : #endif
     229             : 
     230             : #if IK4_ENABLED
     231         141 :     module procedure gemv_ASS_SFA_SFB_TSA_TNB_IK4
     232             :         use pm_kind, only: IKC => IK4
     233             : #include "pm_matrixMulAdd@routines.inc.F90"
     234             :     end procedure
     235             : #endif
     236             : 
     237             : #if IK3_ENABLED
     238         150 :     module procedure gemv_ASS_SFA_SFB_TSA_TNB_IK3
     239             :         use pm_kind, only: IKC => IK3
     240             : #include "pm_matrixMulAdd@routines.inc.F90"
     241             :     end procedure
     242             : #endif
     243             : 
     244             : #if IK2_ENABLED
     245         133 :     module procedure gemv_ASS_SFA_SFB_TSA_TNB_IK2
     246             :         use pm_kind, only: IKC => IK2
     247             : #include "pm_matrixMulAdd@routines.inc.F90"
     248             :     end procedure
     249             : #endif
     250             : 
     251             : #if IK1_ENABLED
     252         146 :     module procedure gemv_ASS_SFA_SFB_TSA_TNB_IK1
     253             :         use pm_kind, only: IKC => IK1
     254             : #include "pm_matrixMulAdd@routines.inc.F90"
     255             :     end procedure
     256             : #endif
     257             : 
     258             : #undef IK_ENABLED
     259             : 
     260             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     261             : 
     262             : #define CK_ENABLED 1
     263             : 
     264             : #if CK5_ENABLED
     265             :     module procedure gemv_ASS_SFA_SFB_TSA_TNB_CK5
     266             :         use pm_kind, only: CKC => CK5
     267             : #include "pm_matrixMulAdd@routines.inc.F90"
     268             :     end procedure
     269             : #endif
     270             : 
     271             : #if CK4_ENABLED
     272         141 :     module procedure gemv_ASS_SFA_SFB_TSA_TNB_CK4
     273             :         use pm_kind, only: CKC => CK4
     274             : #include "pm_matrixMulAdd@routines.inc.F90"
     275             :     end procedure
     276             : #endif
     277             : 
     278             : #if CK3_ENABLED
     279         152 :     module procedure gemv_ASS_SFA_SFB_TSA_TNB_CK3
     280             :         use pm_kind, only: CKC => CK3
     281             : #include "pm_matrixMulAdd@routines.inc.F90"
     282             :     end procedure
     283             : #endif
     284             : 
     285             : #if CK2_ENABLED
     286         130 :     module procedure gemv_ASS_SFA_SFB_TSA_TNB_CK2
     287             :         use pm_kind, only: CKC => CK2
     288             : #define DISPATCH_ENABLED 1
     289             : #include "pm_matrixMulAdd@routines.inc.F90"
     290             : #undef  DISPATCH_ENABLED
     291             :     end procedure
     292             : #endif
     293             : 
     294             : #if CK1_ENABLED
     295         144 :     module procedure gemv_ASS_SFA_SFB_TSA_TNB_CK1
     296             :         use pm_kind, only: CKC => CK1
     297             : #define DISPATCH_ENABLED 1
     298             : #include "pm_matrixMulAdd@routines.inc.F90"
     299             : #undef  DISPATCH_ENABLED
     300             :     end procedure
     301             : #endif
     302             : 
     303             : #undef CK_ENABLED
     304             : 
     305             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     306             : 
     307             : #define RK_ENABLED 1
     308             : 
     309             : #if RK5_ENABLED
     310             :     module procedure gemv_ASS_SFA_SFB_TSA_TNB_RK5
     311             :         use pm_kind, only: RKC => RK5
     312             : #include "pm_matrixMulAdd@routines.inc.F90"
     313             :     end procedure
     314             : #endif
     315             : 
     316             : #if RK4_ENABLED
     317         132 :     module procedure gemv_ASS_SFA_SFB_TSA_TNB_RK4
     318             :         use pm_kind, only: RKC => RK4
     319             : #include "pm_matrixMulAdd@routines.inc.F90"
     320             :     end procedure
     321             : #endif
     322             : 
     323             : #if RK3_ENABLED
     324         144 :     module procedure gemv_ASS_SFA_SFB_TSA_TNB_RK3
     325             :         use pm_kind, only: RKC => RK3
     326             : #include "pm_matrixMulAdd@routines.inc.F90"
     327             :     end procedure
     328             : #endif
     329             : 
     330             : #if RK2_ENABLED
     331         125 :     module procedure gemv_ASS_SFA_SFB_TSA_TNB_RK2
     332             :         use pm_kind, only: RKC => RK2
     333             : #define DISPATCH_ENABLED 1
     334             : #include "pm_matrixMulAdd@routines.inc.F90"
     335             : #undef  DISPATCH_ENABLED
     336             :     end procedure
     337             : #endif
     338             : 
     339             : #if RK1_ENABLED
     340         144 :     module procedure gemv_ASS_SFA_SFB_TSA_TNB_RK1
     341             :         use pm_kind, only: RKC => RK1
     342             : #define DISPATCH_ENABLED 1
     343             : #include "pm_matrixMulAdd@routines.inc.F90"
     344             : #undef  DISPATCH_ENABLED
     345             :     end procedure
     346             : #endif
     347             : 
     348             : #undef RK_ENABLED
     349             : 
     350             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     351             : 
     352             : #undef TSA_ENABLED
     353             : 
     354             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     355             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     356             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     357             : 
     358             : #define THA_ENABLED 1
     359             : 
     360             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     361             : 
     362             : #define IK_ENABLED 1
     363             : 
     364             : #if IK5_ENABLED
     365         136 :     module procedure gemv_ASS_SFA_SFB_THA_TNB_IK5
     366             :         use pm_kind, only: IKC => IK5
     367             : #include "pm_matrixMulAdd@routines.inc.F90"
     368             :     end procedure
     369             : #endif
     370             : 
     371             : #if IK4_ENABLED
     372         141 :     module procedure gemv_ASS_SFA_SFB_THA_TNB_IK4
     373             :         use pm_kind, only: IKC => IK4
     374             : #include "pm_matrixMulAdd@routines.inc.F90"
     375             :     end procedure
     376             : #endif
     377             : 
     378             : #if IK3_ENABLED
     379         149 :     module procedure gemv_ASS_SFA_SFB_THA_TNB_IK3
     380             :         use pm_kind, only: IKC => IK3
     381             : #include "pm_matrixMulAdd@routines.inc.F90"
     382             :     end procedure
     383             : #endif
     384             : 
     385             : #if IK2_ENABLED
     386         133 :     module procedure gemv_ASS_SFA_SFB_THA_TNB_IK2
     387             :         use pm_kind, only: IKC => IK2
     388             : #include "pm_matrixMulAdd@routines.inc.F90"
     389             :     end procedure
     390             : #endif
     391             : 
     392             : #if IK1_ENABLED
     393         146 :     module procedure gemv_ASS_SFA_SFB_THA_TNB_IK1
     394             :         use pm_kind, only: IKC => IK1
     395             : #include "pm_matrixMulAdd@routines.inc.F90"
     396             :     end procedure
     397             : #endif
     398             : 
     399             : #undef IK_ENABLED
     400             : 
     401             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     402             : 
     403             : #define CK_ENABLED 1
     404             : 
     405             : #if CK5_ENABLED
     406             :     module procedure gemv_ASS_SFA_SFB_THA_TNB_CK5
     407             :         use pm_kind, only: CKC => CK5
     408             : #include "pm_matrixMulAdd@routines.inc.F90"
     409             :     end procedure
     410             : #endif
     411             : 
     412             : #if CK4_ENABLED
     413         141 :     module procedure gemv_ASS_SFA_SFB_THA_TNB_CK4
     414             :         use pm_kind, only: CKC => CK4
     415             : #include "pm_matrixMulAdd@routines.inc.F90"
     416             :     end procedure
     417             : #endif
     418             : 
     419             : #if CK3_ENABLED
     420         152 :     module procedure gemv_ASS_SFA_SFB_THA_TNB_CK3
     421             :         use pm_kind, only: CKC => CK3
     422             : #include "pm_matrixMulAdd@routines.inc.F90"
     423             :     end procedure
     424             : #endif
     425             : 
     426             : #if CK2_ENABLED
     427         130 :     module procedure gemv_ASS_SFA_SFB_THA_TNB_CK2
     428             :         use pm_kind, only: CKC => CK2
     429             : #define DISPATCH_ENABLED 1
     430             : #include "pm_matrixMulAdd@routines.inc.F90"
     431             : #undef  DISPATCH_ENABLED
     432             :     end procedure
     433             : #endif
     434             : 
     435             : #if CK1_ENABLED
     436         144 :     module procedure gemv_ASS_SFA_SFB_THA_TNB_CK1
     437             :         use pm_kind, only: CKC => CK1
     438             : #define DISPATCH_ENABLED 1
     439             : #include "pm_matrixMulAdd@routines.inc.F90"
     440             : #undef  DISPATCH_ENABLED
     441             :     end procedure
     442             : #endif
     443             : 
     444             : #undef CK_ENABLED
     445             : 
     446             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     447             : 
     448             : #define RK_ENABLED 1
     449             : 
     450             : #if RK5_ENABLED
     451             :     module procedure gemv_ASS_SFA_SFB_THA_TNB_RK5
     452             :         use pm_kind, only: RKC => RK5
     453             : #include "pm_matrixMulAdd@routines.inc.F90"
     454             :     end procedure
     455             : #endif
     456             : 
     457             : #if RK4_ENABLED
     458         131 :     module procedure gemv_ASS_SFA_SFB_THA_TNB_RK4
     459             :         use pm_kind, only: RKC => RK4
     460             : #include "pm_matrixMulAdd@routines.inc.F90"
     461             :     end procedure
     462             : #endif
     463             : 
     464             : #if RK3_ENABLED
     465         144 :     module procedure gemv_ASS_SFA_SFB_THA_TNB_RK3
     466             :         use pm_kind, only: RKC => RK3
     467             : #include "pm_matrixMulAdd@routines.inc.F90"
     468             :     end procedure
     469             : #endif
     470             : 
     471             : #if RK2_ENABLED
     472         125 :     module procedure gemv_ASS_SFA_SFB_THA_TNB_RK2
     473             :         use pm_kind, only: RKC => RK2
     474             : #define DISPATCH_ENABLED 1
     475             : #include "pm_matrixMulAdd@routines.inc.F90"
     476             : #undef  DISPATCH_ENABLED
     477             :     end procedure
     478             : #endif
     479             : 
     480             : #if RK1_ENABLED
     481         143 :     module procedure gemv_ASS_SFA_SFB_THA_TNB_RK1
     482             :         use pm_kind, only: RKC => RK1
     483             : #define DISPATCH_ENABLED 1
     484             : #include "pm_matrixMulAdd@routines.inc.F90"
     485             : #undef  DISPATCH_ENABLED
     486             :     end procedure
     487             : #endif
     488             : 
     489             : #undef RK_ENABLED
     490             : 
     491             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     492             : 
     493             : #undef THA_ENABLED
     494             : 
     495             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     496             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     497             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     498             : 
     499             : #undef TNB_ENABLED
     500             : 
     501             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     502             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     503             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     504             : 
     505             : #undef ASS_ENABLED
     506             : 
     507             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     508             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     509             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     510             : 
     511             : #define EXP_ENABLED 1
     512             : 
     513             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     514             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     515             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     516             : 
     517             : #define TNB_ENABLED 1
     518             : 
     519             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     520             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     521             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     522             : 
     523             : #define TNA_ENABLED 1
     524             : 
     525             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     526             : 
     527             : #define IK_ENABLED 1
     528             : 
     529             : #if IK5_ENABLED
     530         100 :     module procedure gemv_EXP_SFA_SFB_TNA_TNB_IK5
     531             :         use pm_kind, only: IKC => IK5
     532             : #include "pm_matrixMulAdd@routines.inc.F90"
     533             :     end procedure
     534             : #endif
     535             : 
     536             : #if IK4_ENABLED
     537         100 :     module procedure gemv_EXP_SFA_SFB_TNA_TNB_IK4
     538             :         use pm_kind, only: IKC => IK4
     539             : #include "pm_matrixMulAdd@routines.inc.F90"
     540             :     end procedure
     541             : #endif
     542             : 
     543             : #if IK3_ENABLED
     544         102 :     module procedure gemv_EXP_SFA_SFB_TNA_TNB_IK3
     545             :         use pm_kind, only: IKC => IK3
     546             : #include "pm_matrixMulAdd@routines.inc.F90"
     547             :     end procedure
     548             : #endif
     549             : 
     550             : #if IK2_ENABLED
     551         100 :     module procedure gemv_EXP_SFA_SFB_TNA_TNB_IK2
     552             :         use pm_kind, only: IKC => IK2
     553             : #include "pm_matrixMulAdd@routines.inc.F90"
     554             :     end procedure
     555             : #endif
     556             : 
     557             : #if IK1_ENABLED
     558         100 :     module procedure gemv_EXP_SFA_SFB_TNA_TNB_IK1
     559             :         use pm_kind, only: IKC => IK1
     560             : #include "pm_matrixMulAdd@routines.inc.F90"
     561             :     end procedure
     562             : #endif
     563             : 
     564             : #undef IK_ENABLED
     565             : 
     566             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     567             : 
     568             : #define CK_ENABLED 1
     569             : 
     570             : #if CK5_ENABLED
     571             :     module procedure gemv_EXP_SFA_SFB_TNA_TNB_CK5
     572             :         use pm_kind, only: CKC => CK5
     573             : #include "pm_matrixMulAdd@routines.inc.F90"
     574             :     end procedure
     575             : #endif
     576             : 
     577             : #if CK4_ENABLED
     578         100 :     module procedure gemv_EXP_SFA_SFB_TNA_TNB_CK4
     579             :         use pm_kind, only: CKC => CK4
     580             : #include "pm_matrixMulAdd@routines.inc.F90"
     581             :     end procedure
     582             : #endif
     583             : 
     584             : #if CK3_ENABLED
     585         100 :     module procedure gemv_EXP_SFA_SFB_TNA_TNB_CK3
     586             :         use pm_kind, only: CKC => CK3
     587             : #include "pm_matrixMulAdd@routines.inc.F90"
     588             :     end procedure
     589             : #endif
     590             : 
     591             : #if CK2_ENABLED
     592         100 :     module procedure gemv_EXP_SFA_SFB_TNA_TNB_CK2
     593             :         use pm_kind, only: CKC => CK2
     594             : #define DISPATCH_ENABLED 1
     595             : #include "pm_matrixMulAdd@routines.inc.F90"
     596             : #undef  DISPATCH_ENABLED
     597             :     end procedure
     598             : #endif
     599             : 
     600             : #if CK1_ENABLED
     601         101 :     module procedure gemv_EXP_SFA_SFB_TNA_TNB_CK1
     602             :         use pm_kind, only: CKC => CK1
     603             : #define DISPATCH_ENABLED 1
     604             : #include "pm_matrixMulAdd@routines.inc.F90"
     605             : #undef  DISPATCH_ENABLED
     606             :     end procedure
     607             : #endif
     608             : 
     609             : #undef CK_ENABLED
     610             : 
     611             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     612             : 
     613             : #define RK_ENABLED 1
     614             : 
     615             : #if RK5_ENABLED
     616             :     module procedure gemv_EXP_SFA_SFB_TNA_TNB_RK5
     617             :         use pm_kind, only: RKC => RK5
     618             : #include "pm_matrixMulAdd@routines.inc.F90"
     619             :     end procedure
     620             : #endif
     621             : 
     622             : #if RK4_ENABLED
     623         102 :     module procedure gemv_EXP_SFA_SFB_TNA_TNB_RK4
     624             :         use pm_kind, only: RKC => RK4
     625             : #include "pm_matrixMulAdd@routines.inc.F90"
     626             :     end procedure
     627             : #endif
     628             : 
     629             : #if RK3_ENABLED
     630         100 :     module procedure gemv_EXP_SFA_SFB_TNA_TNB_RK3
     631             :         use pm_kind, only: RKC => RK3
     632             : #include "pm_matrixMulAdd@routines.inc.F90"
     633             :     end procedure
     634             : #endif
     635             : 
     636             : #if RK2_ENABLED
     637         100 :     module procedure gemv_EXP_SFA_SFB_TNA_TNB_RK2
     638             :         use pm_kind, only: RKC => RK2
     639             : #define DISPATCH_ENABLED 1
     640             : #include "pm_matrixMulAdd@routines.inc.F90"
     641             : #undef  DISPATCH_ENABLED
     642             :     end procedure
     643             : #endif
     644             : 
     645             : #if RK1_ENABLED
     646         102 :     module procedure gemv_EXP_SFA_SFB_TNA_TNB_RK1
     647             :         use pm_kind, only: RKC => RK1
     648             : #define DISPATCH_ENABLED 1
     649             : #include "pm_matrixMulAdd@routines.inc.F90"
     650             : #undef  DISPATCH_ENABLED
     651             :     end procedure
     652             : #endif
     653             : 
     654             : #undef RK_ENABLED
     655             : 
     656             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     657             : 
     658             : #undef TNA_ENABLED
     659             : 
     660             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     661             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     662             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     663             : 
     664             : #define TSA_ENABLED 1
     665             : 
     666             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     667             : 
     668             : #define IK_ENABLED 1
     669             : 
     670             : #if IK5_ENABLED
     671         100 :     module procedure gemv_EXP_SFA_SFB_TSA_TNB_IK5
     672             :         use pm_kind, only: IKC => IK5
     673             : #include "pm_matrixMulAdd@routines.inc.F90"
     674             :     end procedure
     675             : #endif
     676             : 
     677             : #if IK4_ENABLED
     678         100 :     module procedure gemv_EXP_SFA_SFB_TSA_TNB_IK4
     679             :         use pm_kind, only: IKC => IK4
     680             : #include "pm_matrixMulAdd@routines.inc.F90"
     681             :     end procedure
     682             : #endif
     683             : 
     684             : #if IK3_ENABLED
     685         101 :     module procedure gemv_EXP_SFA_SFB_TSA_TNB_IK3
     686             :         use pm_kind, only: IKC => IK3
     687             : #include "pm_matrixMulAdd@routines.inc.F90"
     688             :     end procedure
     689             : #endif
     690             : 
     691             : #if IK2_ENABLED
     692         100 :     module procedure gemv_EXP_SFA_SFB_TSA_TNB_IK2
     693             :         use pm_kind, only: IKC => IK2
     694             : #include "pm_matrixMulAdd@routines.inc.F90"
     695             :     end procedure
     696             : #endif
     697             : 
     698             : #if IK1_ENABLED
     699         100 :     module procedure gemv_EXP_SFA_SFB_TSA_TNB_IK1
     700             :         use pm_kind, only: IKC => IK1
     701             : #include "pm_matrixMulAdd@routines.inc.F90"
     702             :     end procedure
     703             : #endif
     704             : 
     705             : #undef IK_ENABLED
     706             : 
     707             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     708             : 
     709             : #define CK_ENABLED 1
     710             : 
     711             : #if CK5_ENABLED
     712             :     module procedure gemv_EXP_SFA_SFB_TSA_TNB_CK5
     713             :         use pm_kind, only: CKC => CK5
     714             : #include "pm_matrixMulAdd@routines.inc.F90"
     715             :     end procedure
     716             : #endif
     717             : 
     718             : #if CK4_ENABLED
     719         100 :     module procedure gemv_EXP_SFA_SFB_TSA_TNB_CK4
     720             :         use pm_kind, only: CKC => CK4
     721             : #include "pm_matrixMulAdd@routines.inc.F90"
     722             :     end procedure
     723             : #endif
     724             : 
     725             : #if CK3_ENABLED
     726         100 :     module procedure gemv_EXP_SFA_SFB_TSA_TNB_CK3
     727             :         use pm_kind, only: CKC => CK3
     728             : #include "pm_matrixMulAdd@routines.inc.F90"
     729             :     end procedure
     730             : #endif
     731             : 
     732             : #if CK2_ENABLED
     733         100 :     module procedure gemv_EXP_SFA_SFB_TSA_TNB_CK2
     734             :         use pm_kind, only: CKC => CK2
     735             : #define DISPATCH_ENABLED 1
     736             : #include "pm_matrixMulAdd@routines.inc.F90"
     737             : #undef  DISPATCH_ENABLED
     738             :     end procedure
     739             : #endif
     740             : 
     741             : #if CK1_ENABLED
     742         101 :     module procedure gemv_EXP_SFA_SFB_TSA_TNB_CK1
     743             :         use pm_kind, only: CKC => CK1
     744             : #define DISPATCH_ENABLED 1
     745             : #include "pm_matrixMulAdd@routines.inc.F90"
     746             : #undef  DISPATCH_ENABLED
     747             :     end procedure
     748             : #endif
     749             : 
     750             : #undef CK_ENABLED
     751             : 
     752             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     753             : 
     754             : #define RK_ENABLED 1
     755             : 
     756             : #if RK5_ENABLED
     757             :     module procedure gemv_EXP_SFA_SFB_TSA_TNB_RK5
     758             :         use pm_kind, only: RKC => RK5
     759             : #include "pm_matrixMulAdd@routines.inc.F90"
     760             :     end procedure
     761             : #endif
     762             : 
     763             : #if RK4_ENABLED
     764         101 :     module procedure gemv_EXP_SFA_SFB_TSA_TNB_RK4
     765             :         use pm_kind, only: RKC => RK4
     766             : #include "pm_matrixMulAdd@routines.inc.F90"
     767             :     end procedure
     768             : #endif
     769             : 
     770             : #if RK3_ENABLED
     771         100 :     module procedure gemv_EXP_SFA_SFB_TSA_TNB_RK3
     772             :         use pm_kind, only: RKC => RK3
     773             : #include "pm_matrixMulAdd@routines.inc.F90"
     774             :     end procedure
     775             : #endif
     776             : 
     777             : #if RK2_ENABLED
     778         100 :     module procedure gemv_EXP_SFA_SFB_TSA_TNB_RK2
     779             :         use pm_kind, only: RKC => RK2
     780             : #define DISPATCH_ENABLED 1
     781             : #include "pm_matrixMulAdd@routines.inc.F90"
     782             : #undef  DISPATCH_ENABLED
     783             :     end procedure
     784             : #endif
     785             : 
     786             : #if RK1_ENABLED
     787         101 :     module procedure gemv_EXP_SFA_SFB_TSA_TNB_RK1
     788             :         use pm_kind, only: RKC => RK1
     789             : #define DISPATCH_ENABLED 1
     790             : #include "pm_matrixMulAdd@routines.inc.F90"
     791             : #undef  DISPATCH_ENABLED
     792             :     end procedure
     793             : #endif
     794             : 
     795             : #undef RK_ENABLED
     796             : 
     797             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     798             : 
     799             : #undef TSA_ENABLED
     800             : 
     801             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     802             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     803             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     804             : 
     805             : #define THA_ENABLED 1
     806             : 
     807             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     808             : 
     809             : #define IK_ENABLED 1
     810             : 
     811             : #if IK5_ENABLED
     812         100 :     module procedure gemv_EXP_SFA_SFB_THA_TNB_IK5
     813             :         use pm_kind, only: IKC => IK5
     814             : #include "pm_matrixMulAdd@routines.inc.F90"
     815             :     end procedure
     816             : #endif
     817             : 
     818             : #if IK4_ENABLED
     819         100 :     module procedure gemv_EXP_SFA_SFB_THA_TNB_IK4
     820             :         use pm_kind, only: IKC => IK4
     821             : #include "pm_matrixMulAdd@routines.inc.F90"
     822             :     end procedure
     823             : #endif
     824             : 
     825             : #if IK3_ENABLED
     826         100 :     module procedure gemv_EXP_SFA_SFB_THA_TNB_IK3
     827             :         use pm_kind, only: IKC => IK3
     828             : #include "pm_matrixMulAdd@routines.inc.F90"
     829             :     end procedure
     830             : #endif
     831             : 
     832             : #if IK2_ENABLED
     833         100 :     module procedure gemv_EXP_SFA_SFB_THA_TNB_IK2
     834             :         use pm_kind, only: IKC => IK2
     835             : #include "pm_matrixMulAdd@routines.inc.F90"
     836             :     end procedure
     837             : #endif
     838             : 
     839             : #if IK1_ENABLED
     840         100 :     module procedure gemv_EXP_SFA_SFB_THA_TNB_IK1
     841             :         use pm_kind, only: IKC => IK1
     842             : #include "pm_matrixMulAdd@routines.inc.F90"
     843             :     end procedure
     844             : #endif
     845             : 
     846             : #undef IK_ENABLED
     847             : 
     848             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     849             : 
     850             : #define CK_ENABLED 1
     851             : 
     852             : #if CK5_ENABLED
     853             :     module procedure gemv_EXP_SFA_SFB_THA_TNB_CK5
     854             :         use pm_kind, only: CKC => CK5
     855             : #include "pm_matrixMulAdd@routines.inc.F90"
     856             :     end procedure
     857             : #endif
     858             : 
     859             : #if CK4_ENABLED
     860         100 :     module procedure gemv_EXP_SFA_SFB_THA_TNB_CK4
     861             :         use pm_kind, only: CKC => CK4
     862             : #include "pm_matrixMulAdd@routines.inc.F90"
     863             :     end procedure
     864             : #endif
     865             : 
     866             : #if CK3_ENABLED
     867         100 :     module procedure gemv_EXP_SFA_SFB_THA_TNB_CK3
     868             :         use pm_kind, only: CKC => CK3
     869             : #include "pm_matrixMulAdd@routines.inc.F90"
     870             :     end procedure
     871             : #endif
     872             : 
     873             : #if CK2_ENABLED
     874         100 :     module procedure gemv_EXP_SFA_SFB_THA_TNB_CK2
     875             :         use pm_kind, only: CKC => CK2
     876             : #define DISPATCH_ENABLED 1
     877             : #include "pm_matrixMulAdd@routines.inc.F90"
     878             : #undef  DISPATCH_ENABLED
     879             :     end procedure
     880             : #endif
     881             : 
     882             : #if CK1_ENABLED
     883         101 :     module procedure gemv_EXP_SFA_SFB_THA_TNB_CK1
     884             :         use pm_kind, only: CKC => CK1
     885             : #define DISPATCH_ENABLED 1
     886             : #include "pm_matrixMulAdd@routines.inc.F90"
     887             : #undef  DISPATCH_ENABLED
     888             :     end procedure
     889             : #endif
     890             : 
     891             : #undef CK_ENABLED
     892             : 
     893             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     894             : 
     895             : #define RK_ENABLED 1
     896             : 
     897             : #if RK5_ENABLED
     898             :     module procedure gemv_EXP_SFA_SFB_THA_TNB_RK5
     899             :         use pm_kind, only: RKC => RK5
     900             : #include "pm_matrixMulAdd@routines.inc.F90"
     901             :     end procedure
     902             : #endif
     903             : 
     904             : #if RK4_ENABLED
     905         100 :     module procedure gemv_EXP_SFA_SFB_THA_TNB_RK4
     906             :         use pm_kind, only: RKC => RK4
     907             : #include "pm_matrixMulAdd@routines.inc.F90"
     908             :     end procedure
     909             : #endif
     910             : 
     911             : #if RK3_ENABLED
     912         100 :     module procedure gemv_EXP_SFA_SFB_THA_TNB_RK3
     913             :         use pm_kind, only: RKC => RK3
     914             : #include "pm_matrixMulAdd@routines.inc.F90"
     915             :     end procedure
     916             : #endif
     917             : 
     918             : #if RK2_ENABLED
     919         100 :     module procedure gemv_EXP_SFA_SFB_THA_TNB_RK2
     920             :         use pm_kind, only: RKC => RK2
     921             : #define DISPATCH_ENABLED 1
     922             : #include "pm_matrixMulAdd@routines.inc.F90"
     923             : #undef  DISPATCH_ENABLED
     924             :     end procedure
     925             : #endif
     926             : 
     927             : #if RK1_ENABLED
     928         100 :     module procedure gemv_EXP_SFA_SFB_THA_TNB_RK1
     929             :         use pm_kind, only: RKC => RK1
     930             : #define DISPATCH_ENABLED 1
     931             : #include "pm_matrixMulAdd@routines.inc.F90"
     932             : #undef  DISPATCH_ENABLED
     933             :     end procedure
     934             : #endif
     935             : 
     936             : #undef RK_ENABLED
     937             : 
     938             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     939             : 
     940             : #undef THA_ENABLED
     941             : 
     942             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     943             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     944             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     945             : 
     946             : #undef TNB_ENABLED
     947             : 
     948             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     949             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     950             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     951             : 
     952             : #undef EXP_ENABLED
     953             : 
     954             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     955             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     956             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     957             : 
     958             : #undef SFA_ENABLED
     959             : #undef SFB_ENABLED
     960             : 
     961             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     962             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     963             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     964             : 
     965             : #undef gemv_ENABLED
     966             : 
     967             : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     968             : 
     969             : #define spmv_ENABLED 1
     970             : 
     971             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     972             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     973             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     974             : 
     975             : #define CSA_ENABLED 1
     976             : #define CNB_ENABLED 1
     977             : #define SFB_ENABLED 1
     978             : 
     979             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     980             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     981             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     982             : 
     983             : #define ASS_ENABLED 1
     984             : 
     985             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     986             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     987             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     988             : 
     989             : #define SUA_ENABLED 1
     990             : 
     991             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     992             : 
     993             : #define IK_ENABLED 1
     994             : 
     995             : #if IK5_ENABLED
     996         141 :     module procedure spmv_ASS_CSA_SUA_CNB_SFB_IK5
     997             :         use pm_kind, only: IKC => IK5
     998             : #include "pm_matrixMulAdd@routines.inc.F90"
     999             :     end procedure
    1000             : #endif
    1001             : 
    1002             : #if IK4_ENABLED
    1003         144 :     module procedure spmv_ASS_CSA_SUA_CNB_SFB_IK4
    1004             :         use pm_kind, only: IKC => IK4
    1005             : #include "pm_matrixMulAdd@routines.inc.F90"
    1006             :     end procedure
    1007             : #endif
    1008             : 
    1009             : #if IK3_ENABLED
    1010         134 :     module procedure spmv_ASS_CSA_SUA_CNB_SFB_IK3
    1011             :         use pm_kind, only: IKC => IK3
    1012             : #include "pm_matrixMulAdd@routines.inc.F90"
    1013             :     end procedure
    1014             : #endif
    1015             : 
    1016             : #if IK2_ENABLED
    1017         130 :     module procedure spmv_ASS_CSA_SUA_CNB_SFB_IK2
    1018             :         use pm_kind, only: IKC => IK2
    1019             : #include "pm_matrixMulAdd@routines.inc.F90"
    1020             :     end procedure
    1021             : #endif
    1022             : 
    1023             : #if IK1_ENABLED
    1024         153 :     module procedure spmv_ASS_CSA_SUA_CNB_SFB_IK1
    1025             :         use pm_kind, only: IKC => IK1
    1026             : #include "pm_matrixMulAdd@routines.inc.F90"
    1027             :     end procedure
    1028             : #endif
    1029             : 
    1030             : #undef IK_ENABLED
    1031             : 
    1032             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1033             : 
    1034             : #define CK_ENABLED 1
    1035             : 
    1036             : #if CK5_ENABLED
    1037             :     module procedure spmv_ASS_CSA_SUA_CNB_SFB_CK5
    1038             :         use pm_kind, only: CKC => CK5
    1039             : #include "pm_matrixMulAdd@routines.inc.F90"
    1040             :     end procedure
    1041             : #endif
    1042             : 
    1043             : #if CK4_ENABLED
    1044         142 :     module procedure spmv_ASS_CSA_SUA_CNB_SFB_CK4
    1045             :         use pm_kind, only: CKC => CK4
    1046             : #include "pm_matrixMulAdd@routines.inc.F90"
    1047             :     end procedure
    1048             : #endif
    1049             : 
    1050             : #if CK3_ENABLED
    1051         139 :     module procedure spmv_ASS_CSA_SUA_CNB_SFB_CK3
    1052             :         use pm_kind, only: CKC => CK3
    1053             : #include "pm_matrixMulAdd@routines.inc.F90"
    1054             :     end procedure
    1055             : #endif
    1056             : 
    1057             : #if CK2_ENABLED
    1058         132 :     module procedure spmv_ASS_CSA_SUA_CNB_SFB_CK2
    1059             :         use pm_kind, only: CKC => CK2
    1060             : #include "pm_matrixMulAdd@routines.inc.F90"
    1061             :     end procedure
    1062             : #endif
    1063             : 
    1064             : #if CK1_ENABLED
    1065         150 :     module procedure spmv_ASS_CSA_SUA_CNB_SFB_CK1
    1066             :         use pm_kind, only: CKC => CK1
    1067             : #include "pm_matrixMulAdd@routines.inc.F90"
    1068             :     end procedure
    1069             : #endif
    1070             : 
    1071             : #undef CK_ENABLED
    1072             : 
    1073             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1074             : 
    1075             : #define RK_ENABLED 1
    1076             : 
    1077             : #if RK5_ENABLED
    1078             :     module procedure spmv_ASS_CSA_SUA_CNB_SFB_RK5
    1079             :         use pm_kind, only: RKC => RK5
    1080             : #include "pm_matrixMulAdd@routines.inc.F90"
    1081             :     end procedure
    1082             : #endif
    1083             : 
    1084             : #if RK4_ENABLED
    1085         138 :     module procedure spmv_ASS_CSA_SUA_CNB_SFB_RK4
    1086             :         use pm_kind, only: RKC => RK4
    1087             : #include "pm_matrixMulAdd@routines.inc.F90"
    1088             :     end procedure
    1089             : #endif
    1090             : 
    1091             : #if RK3_ENABLED
    1092         140 :     module procedure spmv_ASS_CSA_SUA_CNB_SFB_RK3
    1093             :         use pm_kind, only: RKC => RK3
    1094             : #include "pm_matrixMulAdd@routines.inc.F90"
    1095             :     end procedure
    1096             : #endif
    1097             : 
    1098             : #if RK2_ENABLED
    1099         131 :     module procedure spmv_ASS_CSA_SUA_CNB_SFB_RK2
    1100             :         use pm_kind, only: RKC => RK2
    1101             : #define DISPATCH_ENABLED 1
    1102             : #include "pm_matrixMulAdd@routines.inc.F90"
    1103             : #undef  DISPATCH_ENABLED
    1104             :     end procedure
    1105             : #endif
    1106             : 
    1107             : #if RK1_ENABLED
    1108         150 :     module procedure spmv_ASS_CSA_SUA_CNB_SFB_RK1
    1109             :         use pm_kind, only: RKC => RK1
    1110             : #define DISPATCH_ENABLED 1
    1111             : #include "pm_matrixMulAdd@routines.inc.F90"
    1112             : #undef  DISPATCH_ENABLED
    1113             :     end procedure
    1114             : #endif
    1115             : 
    1116             : #undef RK_ENABLED
    1117             : 
    1118             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1119             : 
    1120             : #undef SUA_ENABLED
    1121             : 
    1122             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1123             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1124             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1125             : 
    1126             : #define SLA_ENABLED 1
    1127             : 
    1128             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1129             : 
    1130             : #define IK_ENABLED 1
    1131             : 
    1132             : #if IK5_ENABLED
    1133         141 :     module procedure spmv_ASS_CSA_SLA_CNB_SFB_IK5
    1134             :         use pm_kind, only: IKC => IK5
    1135             : #include "pm_matrixMulAdd@routines.inc.F90"
    1136             :     end procedure
    1137             : #endif
    1138             : 
    1139             : #if IK4_ENABLED
    1140         144 :     module procedure spmv_ASS_CSA_SLA_CNB_SFB_IK4
    1141             :         use pm_kind, only: IKC => IK4
    1142             : #include "pm_matrixMulAdd@routines.inc.F90"
    1143             :     end procedure
    1144             : #endif
    1145             : 
    1146             : #if IK3_ENABLED
    1147         134 :     module procedure spmv_ASS_CSA_SLA_CNB_SFB_IK3
    1148             :         use pm_kind, only: IKC => IK3
    1149             : #include "pm_matrixMulAdd@routines.inc.F90"
    1150             :     end procedure
    1151             : #endif
    1152             : 
    1153             : #if IK2_ENABLED
    1154         130 :     module procedure spmv_ASS_CSA_SLA_CNB_SFB_IK2
    1155             :         use pm_kind, only: IKC => IK2
    1156             : #include "pm_matrixMulAdd@routines.inc.F90"
    1157             :     end procedure
    1158             : #endif
    1159             : 
    1160             : #if IK1_ENABLED
    1161         153 :     module procedure spmv_ASS_CSA_SLA_CNB_SFB_IK1
    1162             :         use pm_kind, only: IKC => IK1
    1163             : #include "pm_matrixMulAdd@routines.inc.F90"
    1164             :     end procedure
    1165             : #endif
    1166             : 
    1167             : #undef IK_ENABLED
    1168             : 
    1169             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1170             : 
    1171             : #define CK_ENABLED 1
    1172             : 
    1173             : #if CK5_ENABLED
    1174             :     module procedure spmv_ASS_CSA_SLA_CNB_SFB_CK5
    1175             :         use pm_kind, only: CKC => CK5
    1176             : #include "pm_matrixMulAdd@routines.inc.F90"
    1177             :     end procedure
    1178             : #endif
    1179             : 
    1180             : #if CK4_ENABLED
    1181         142 :     module procedure spmv_ASS_CSA_SLA_CNB_SFB_CK4
    1182             :         use pm_kind, only: CKC => CK4
    1183             : #include "pm_matrixMulAdd@routines.inc.F90"
    1184             :     end procedure
    1185             : #endif
    1186             : 
    1187             : #if CK3_ENABLED
    1188         139 :     module procedure spmv_ASS_CSA_SLA_CNB_SFB_CK3
    1189             :         use pm_kind, only: CKC => CK3
    1190             : #include "pm_matrixMulAdd@routines.inc.F90"
    1191             :     end procedure
    1192             : #endif
    1193             : 
    1194             : #if CK2_ENABLED
    1195         132 :     module procedure spmv_ASS_CSA_SLA_CNB_SFB_CK2
    1196             :         use pm_kind, only: CKC => CK2
    1197             : #include "pm_matrixMulAdd@routines.inc.F90"
    1198             :     end procedure
    1199             : #endif
    1200             : 
    1201             : #if CK1_ENABLED
    1202         150 :     module procedure spmv_ASS_CSA_SLA_CNB_SFB_CK1
    1203             :         use pm_kind, only: CKC => CK1
    1204             : #include "pm_matrixMulAdd@routines.inc.F90"
    1205             :     end procedure
    1206             : #endif
    1207             : 
    1208             : #undef CK_ENABLED
    1209             : 
    1210             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1211             : 
    1212             : #define RK_ENABLED 1
    1213             : 
    1214             : #if RK5_ENABLED
    1215             :     module procedure spmv_ASS_CSA_SLA_CNB_SFB_RK5
    1216             :         use pm_kind, only: RKC => RK5
    1217             : #include "pm_matrixMulAdd@routines.inc.F90"
    1218             :     end procedure
    1219             : #endif
    1220             : 
    1221             : #if RK4_ENABLED
    1222         138 :     module procedure spmv_ASS_CSA_SLA_CNB_SFB_RK4
    1223             :         use pm_kind, only: RKC => RK4
    1224             : #include "pm_matrixMulAdd@routines.inc.F90"
    1225             :     end procedure
    1226             : #endif
    1227             : 
    1228             : #if RK3_ENABLED
    1229         140 :     module procedure spmv_ASS_CSA_SLA_CNB_SFB_RK3
    1230             :         use pm_kind, only: RKC => RK3
    1231             : #include "pm_matrixMulAdd@routines.inc.F90"
    1232             :     end procedure
    1233             : #endif
    1234             : 
    1235             : #if RK2_ENABLED
    1236         131 :     module procedure spmv_ASS_CSA_SLA_CNB_SFB_RK2
    1237             :         use pm_kind, only: RKC => RK2
    1238             : #define DISPATCH_ENABLED 1
    1239             : #include "pm_matrixMulAdd@routines.inc.F90"
    1240             : #undef  DISPATCH_ENABLED
    1241             :     end procedure
    1242             : #endif
    1243             : 
    1244             : #if RK1_ENABLED
    1245         150 :     module procedure spmv_ASS_CSA_SLA_CNB_SFB_RK1
    1246             :         use pm_kind, only: RKC => RK1
    1247             : #define DISPATCH_ENABLED 1
    1248             : #include "pm_matrixMulAdd@routines.inc.F90"
    1249             : #undef  DISPATCH_ENABLED
    1250             :     end procedure
    1251             : #endif
    1252             : 
    1253             : #undef RK_ENABLED
    1254             : 
    1255             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1256             : 
    1257             : #undef SLA_ENABLED
    1258             : 
    1259             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1260             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1261             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1262             : 
    1263             : #undef ASS_ENABLED
    1264             : 
    1265             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1266             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1267             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1268             : 
    1269             : #define EXP_ENABLED 1
    1270             : 
    1271             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1272             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1273             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1274             : 
    1275             : #define SUA_ENABLED 1
    1276             : 
    1277             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1278             : 
    1279             : #define IK_ENABLED 1
    1280             : 
    1281             : #if IK5_ENABLED
    1282         100 :     module procedure spmv_EXP_CSA_SUA_CNB_SFB_IK5
    1283             :         use pm_kind, only: IKC => IK5
    1284             : #include "pm_matrixMulAdd@routines.inc.F90"
    1285             :     end procedure
    1286             : #endif
    1287             : 
    1288             : #if IK4_ENABLED
    1289         100 :     module procedure spmv_EXP_CSA_SUA_CNB_SFB_IK4
    1290             :         use pm_kind, only: IKC => IK4
    1291             : #include "pm_matrixMulAdd@routines.inc.F90"
    1292             :     end procedure
    1293             : #endif
    1294             : 
    1295             : #if IK3_ENABLED
    1296         100 :     module procedure spmv_EXP_CSA_SUA_CNB_SFB_IK3
    1297             :         use pm_kind, only: IKC => IK3
    1298             : #include "pm_matrixMulAdd@routines.inc.F90"
    1299             :     end procedure
    1300             : #endif
    1301             : 
    1302             : #if IK2_ENABLED
    1303         100 :     module procedure spmv_EXP_CSA_SUA_CNB_SFB_IK2
    1304             :         use pm_kind, only: IKC => IK2
    1305             : #include "pm_matrixMulAdd@routines.inc.F90"
    1306             :     end procedure
    1307             : #endif
    1308             : 
    1309             : #if IK1_ENABLED
    1310         100 :     module procedure spmv_EXP_CSA_SUA_CNB_SFB_IK1
    1311             :         use pm_kind, only: IKC => IK1
    1312             : #include "pm_matrixMulAdd@routines.inc.F90"
    1313             :     end procedure
    1314             : #endif
    1315             : 
    1316             : #undef IK_ENABLED
    1317             : 
    1318             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1319             : 
    1320             : #define CK_ENABLED 1
    1321             : 
    1322             : #if CK5_ENABLED
    1323             :     module procedure spmv_EXP_CSA_SUA_CNB_SFB_CK5
    1324             :         use pm_kind, only: CKC => CK5
    1325             : #include "pm_matrixMulAdd@routines.inc.F90"
    1326             :     end procedure
    1327             : #endif
    1328             : 
    1329             : #if CK4_ENABLED
    1330         100 :     module procedure spmv_EXP_CSA_SUA_CNB_SFB_CK4
    1331             :         use pm_kind, only: CKC => CK4
    1332             : #include "pm_matrixMulAdd@routines.inc.F90"
    1333             :     end procedure
    1334             : #endif
    1335             : 
    1336             : #if CK3_ENABLED
    1337         100 :     module procedure spmv_EXP_CSA_SUA_CNB_SFB_CK3
    1338             :         use pm_kind, only: CKC => CK3
    1339             : #include "pm_matrixMulAdd@routines.inc.F90"
    1340             :     end procedure
    1341             : #endif
    1342             : 
    1343             : #if CK2_ENABLED
    1344         100 :     module procedure spmv_EXP_CSA_SUA_CNB_SFB_CK2
    1345             :         use pm_kind, only: CKC => CK2
    1346             : #include "pm_matrixMulAdd@routines.inc.F90"
    1347             :     end procedure
    1348             : #endif
    1349             : 
    1350             : #if CK1_ENABLED
    1351         100 :     module procedure spmv_EXP_CSA_SUA_CNB_SFB_CK1
    1352             :         use pm_kind, only: CKC => CK1
    1353             : #include "pm_matrixMulAdd@routines.inc.F90"
    1354             :     end procedure
    1355             : #endif
    1356             : 
    1357             : #undef CK_ENABLED
    1358             : 
    1359             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1360             : 
    1361             : #define RK_ENABLED 1
    1362             : 
    1363             : #if RK5_ENABLED
    1364             :     module procedure spmv_EXP_CSA_SUA_CNB_SFB_RK5
    1365             :         use pm_kind, only: RKC => RK5
    1366             : #include "pm_matrixMulAdd@routines.inc.F90"
    1367             :     end procedure
    1368             : #endif
    1369             : 
    1370             : #if RK4_ENABLED
    1371         100 :     module procedure spmv_EXP_CSA_SUA_CNB_SFB_RK4
    1372             :         use pm_kind, only: RKC => RK4
    1373             : #include "pm_matrixMulAdd@routines.inc.F90"
    1374             :     end procedure
    1375             : #endif
    1376             : 
    1377             : #if RK3_ENABLED
    1378         100 :     module procedure spmv_EXP_CSA_SUA_CNB_SFB_RK3
    1379             :         use pm_kind, only: RKC => RK3
    1380             : #include "pm_matrixMulAdd@routines.inc.F90"
    1381             :     end procedure
    1382             : #endif
    1383             : 
    1384             : #if RK2_ENABLED
    1385         100 :     module procedure spmv_EXP_CSA_SUA_CNB_SFB_RK2
    1386             :         use pm_kind, only: RKC => RK2
    1387             : #define DISPATCH_ENABLED 1
    1388             : #include "pm_matrixMulAdd@routines.inc.F90"
    1389             : #undef  DISPATCH_ENABLED
    1390             :     end procedure
    1391             : #endif
    1392             : 
    1393             : #if RK1_ENABLED
    1394         100 :     module procedure spmv_EXP_CSA_SUA_CNB_SFB_RK1
    1395             :         use pm_kind, only: RKC => RK1
    1396             : #define DISPATCH_ENABLED 1
    1397             : #include "pm_matrixMulAdd@routines.inc.F90"
    1398             : #undef  DISPATCH_ENABLED
    1399             :     end procedure
    1400             : #endif
    1401             : 
    1402             : #undef RK_ENABLED
    1403             : 
    1404             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1405             : 
    1406             : #undef SUA_ENABLED
    1407             : 
    1408             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1409             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1410             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1411             : 
    1412             : #define SLA_ENABLED 1
    1413             : 
    1414             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1415             : 
    1416             : #define IK_ENABLED 1
    1417             : 
    1418             : #if IK5_ENABLED
    1419         100 :     module procedure spmv_EXP_CSA_SLA_CNB_SFB_IK5
    1420             :         use pm_kind, only: IKC => IK5
    1421             : #include "pm_matrixMulAdd@routines.inc.F90"
    1422             :     end procedure
    1423             : #endif
    1424             : 
    1425             : #if IK4_ENABLED
    1426         100 :     module procedure spmv_EXP_CSA_SLA_CNB_SFB_IK4
    1427             :         use pm_kind, only: IKC => IK4
    1428             : #include "pm_matrixMulAdd@routines.inc.F90"
    1429             :     end procedure
    1430             : #endif
    1431             : 
    1432             : #if IK3_ENABLED
    1433         100 :     module procedure spmv_EXP_CSA_SLA_CNB_SFB_IK3
    1434             :         use pm_kind, only: IKC => IK3
    1435             : #include "pm_matrixMulAdd@routines.inc.F90"
    1436             :     end procedure
    1437             : #endif
    1438             : 
    1439             : #if IK2_ENABLED
    1440         100 :     module procedure spmv_EXP_CSA_SLA_CNB_SFB_IK2
    1441             :         use pm_kind, only: IKC => IK2
    1442             : #include "pm_matrixMulAdd@routines.inc.F90"
    1443             :     end procedure
    1444             : #endif
    1445             : 
    1446             : #if IK1_ENABLED
    1447         100 :     module procedure spmv_EXP_CSA_SLA_CNB_SFB_IK1
    1448             :         use pm_kind, only: IKC => IK1
    1449             : #include "pm_matrixMulAdd@routines.inc.F90"
    1450             :     end procedure
    1451             : #endif
    1452             : 
    1453             : #undef IK_ENABLED
    1454             : 
    1455             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1456             : 
    1457             : #define CK_ENABLED 1
    1458             : 
    1459             : #if CK5_ENABLED
    1460             :     module procedure spmv_EXP_CSA_SLA_CNB_SFB_CK5
    1461             :         use pm_kind, only: CKC => CK5
    1462             : #include "pm_matrixMulAdd@routines.inc.F90"
    1463             :     end procedure
    1464             : #endif
    1465             : 
    1466             : #if CK4_ENABLED
    1467         100 :     module procedure spmv_EXP_CSA_SLA_CNB_SFB_CK4
    1468             :         use pm_kind, only: CKC => CK4
    1469             : #include "pm_matrixMulAdd@routines.inc.F90"
    1470             :     end procedure
    1471             : #endif
    1472             : 
    1473             : #if CK3_ENABLED
    1474         100 :     module procedure spmv_EXP_CSA_SLA_CNB_SFB_CK3
    1475             :         use pm_kind, only: CKC => CK3
    1476             : #include "pm_matrixMulAdd@routines.inc.F90"
    1477             :     end procedure
    1478             : #endif
    1479             : 
    1480             : #if CK2_ENABLED
    1481         100 :     module procedure spmv_EXP_CSA_SLA_CNB_SFB_CK2
    1482             :         use pm_kind, only: CKC => CK2
    1483             : #include "pm_matrixMulAdd@routines.inc.F90"
    1484             :     end procedure
    1485             : #endif
    1486             : 
    1487             : #if CK1_ENABLED
    1488         100 :     module procedure spmv_EXP_CSA_SLA_CNB_SFB_CK1
    1489             :         use pm_kind, only: CKC => CK1
    1490             : #include "pm_matrixMulAdd@routines.inc.F90"
    1491             :     end procedure
    1492             : #endif
    1493             : 
    1494             : #undef CK_ENABLED
    1495             : 
    1496             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1497             : 
    1498             : #define RK_ENABLED 1
    1499             : 
    1500             : #if RK5_ENABLED
    1501             :     module procedure spmv_EXP_CSA_SLA_CNB_SFB_RK5
    1502             :         use pm_kind, only: RKC => RK5
    1503             : #include "pm_matrixMulAdd@routines.inc.F90"
    1504             :     end procedure
    1505             : #endif
    1506             : 
    1507             : #if RK4_ENABLED
    1508         100 :     module procedure spmv_EXP_CSA_SLA_CNB_SFB_RK4
    1509             :         use pm_kind, only: RKC => RK4
    1510             : #include "pm_matrixMulAdd@routines.inc.F90"
    1511             :     end procedure
    1512             : #endif
    1513             : 
    1514             : #if RK3_ENABLED
    1515         100 :     module procedure spmv_EXP_CSA_SLA_CNB_SFB_RK3
    1516             :         use pm_kind, only: RKC => RK3
    1517             : #include "pm_matrixMulAdd@routines.inc.F90"
    1518             :     end procedure
    1519             : #endif
    1520             : 
    1521             : #if RK2_ENABLED
    1522         100 :     module procedure spmv_EXP_CSA_SLA_CNB_SFB_RK2
    1523             :         use pm_kind, only: RKC => RK2
    1524             : #define DISPATCH_ENABLED 1
    1525             : #include "pm_matrixMulAdd@routines.inc.F90"
    1526             : #undef  DISPATCH_ENABLED
    1527             :     end procedure
    1528             : #endif
    1529             : 
    1530             : #if RK1_ENABLED
    1531         100 :     module procedure spmv_EXP_CSA_SLA_CNB_SFB_RK1
    1532             :         use pm_kind, only: RKC => RK1
    1533             : #define DISPATCH_ENABLED 1
    1534             : #include "pm_matrixMulAdd@routines.inc.F90"
    1535             : #undef  DISPATCH_ENABLED
    1536             :     end procedure
    1537             : #endif
    1538             : 
    1539             : #undef RK_ENABLED
    1540             : 
    1541             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1542             : 
    1543             : #undef SLA_ENABLED
    1544             : 
    1545             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1546             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1547             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1548             : 
    1549             : #undef EXP_ENABLED
    1550             : 
    1551             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1552             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1553             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1554             : 
    1555             : #undef CNB_ENABLED
    1556             : #undef SFB_ENABLED
    1557             : #undef CSA_ENABLED
    1558             : 
    1559             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1560             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1561             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1562             : 
    1563             : #undef spmv_ENABLED
    1564             : 
    1565             : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1566             : 
    1567             : #define hpmv_ENABLED 1
    1568             : 
    1569             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1570             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1571             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1572             : 
    1573             : #define CHA_ENABLED 1
    1574             : #define CNB_ENABLED 1
    1575             : #define SFB_ENABLED 1
    1576             : 
    1577             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1578             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1579             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1580             : 
    1581             : #define ASS_ENABLED 1
    1582             : 
    1583             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1584             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1585             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1586             : 
    1587             : #define SUA_ENABLED 1
    1588             : 
    1589             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1590             : 
    1591             : #define IK_ENABLED 1
    1592             : 
    1593             : #if IK5_ENABLED
    1594         141 :     module procedure hpmv_ASS_CHA_SUA_CNB_SFB_IK5
    1595             :         use pm_kind, only: IKC => IK5
    1596             : #include "pm_matrixMulAdd@routines.inc.F90"
    1597             :     end procedure
    1598             : #endif
    1599             : 
    1600             : #if IK4_ENABLED
    1601         144 :     module procedure hpmv_ASS_CHA_SUA_CNB_SFB_IK4
    1602             :         use pm_kind, only: IKC => IK4
    1603             : #include "pm_matrixMulAdd@routines.inc.F90"
    1604             :     end procedure
    1605             : #endif
    1606             : 
    1607             : #if IK3_ENABLED
    1608         134 :     module procedure hpmv_ASS_CHA_SUA_CNB_SFB_IK3
    1609             :         use pm_kind, only: IKC => IK3
    1610             : #include "pm_matrixMulAdd@routines.inc.F90"
    1611             :     end procedure
    1612             : #endif
    1613             : 
    1614             : #if IK2_ENABLED
    1615         130 :     module procedure hpmv_ASS_CHA_SUA_CNB_SFB_IK2
    1616             :         use pm_kind, only: IKC => IK2
    1617             : #include "pm_matrixMulAdd@routines.inc.F90"
    1618             :     end procedure
    1619             : #endif
    1620             : 
    1621             : #if IK1_ENABLED
    1622         153 :     module procedure hpmv_ASS_CHA_SUA_CNB_SFB_IK1
    1623             :         use pm_kind, only: IKC => IK1
    1624             : #include "pm_matrixMulAdd@routines.inc.F90"
    1625             :     end procedure
    1626             : #endif
    1627             : 
    1628             : #undef IK_ENABLED
    1629             : 
    1630             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1631             : 
    1632             : #define CK_ENABLED 1
    1633             : 
    1634             : #if CK5_ENABLED
    1635             :     module procedure hpmv_ASS_CHA_SUA_CNB_SFB_CK5
    1636             :         use pm_kind, only: CKC => CK5
    1637             : #include "pm_matrixMulAdd@routines.inc.F90"
    1638             :     end procedure
    1639             : #endif
    1640             : 
    1641             : #if CK4_ENABLED
    1642         142 :     module procedure hpmv_ASS_CHA_SUA_CNB_SFB_CK4
    1643             :         use pm_kind, only: CKC => CK4
    1644             : #include "pm_matrixMulAdd@routines.inc.F90"
    1645             :     end procedure
    1646             : #endif
    1647             : 
    1648             : #if CK3_ENABLED
    1649         139 :     module procedure hpmv_ASS_CHA_SUA_CNB_SFB_CK3
    1650             :         use pm_kind, only: CKC => CK3
    1651             : #include "pm_matrixMulAdd@routines.inc.F90"
    1652             :     end procedure
    1653             : #endif
    1654             : 
    1655             : #if CK2_ENABLED
    1656         132 :     module procedure hpmv_ASS_CHA_SUA_CNB_SFB_CK2
    1657             :         use pm_kind, only: CKC => CK2
    1658             : #define DISPATCH_ENABLED 1
    1659             : #include "pm_matrixMulAdd@routines.inc.F90"
    1660             : #undef  DISPATCH_ENABLED
    1661             :     end procedure
    1662             : #endif
    1663             : 
    1664             : #if CK1_ENABLED
    1665         150 :     module procedure hpmv_ASS_CHA_SUA_CNB_SFB_CK1
    1666             :         use pm_kind, only: CKC => CK1
    1667             : #define DISPATCH_ENABLED 1
    1668             : #include "pm_matrixMulAdd@routines.inc.F90"
    1669             : #undef  DISPATCH_ENABLED
    1670             :     end procedure
    1671             : #endif
    1672             : 
    1673             : #undef CK_ENABLED
    1674             : 
    1675             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1676             : 
    1677             : #define RK_ENABLED 1
    1678             : 
    1679             : #if RK5_ENABLED
    1680             :     module procedure hpmv_ASS_CHA_SUA_CNB_SFB_RK5
    1681             :         use pm_kind, only: RKC => RK5
    1682             : #include "pm_matrixMulAdd@routines.inc.F90"
    1683             :     end procedure
    1684             : #endif
    1685             : 
    1686             : #if RK4_ENABLED
    1687         138 :     module procedure hpmv_ASS_CHA_SUA_CNB_SFB_RK4
    1688             :         use pm_kind, only: RKC => RK4
    1689             : #include "pm_matrixMulAdd@routines.inc.F90"
    1690             :     end procedure
    1691             : #endif
    1692             : 
    1693             : #if RK3_ENABLED
    1694         140 :     module procedure hpmv_ASS_CHA_SUA_CNB_SFB_RK3
    1695             :         use pm_kind, only: RKC => RK3
    1696             : #include "pm_matrixMulAdd@routines.inc.F90"
    1697             :     end procedure
    1698             : #endif
    1699             : 
    1700             : #if RK2_ENABLED
    1701         131 :     module procedure hpmv_ASS_CHA_SUA_CNB_SFB_RK2
    1702             :         use pm_kind, only: RKC => RK2
    1703             : #include "pm_matrixMulAdd@routines.inc.F90"
    1704             :     end procedure
    1705             : #endif
    1706             : 
    1707             : #if RK1_ENABLED
    1708         150 :     module procedure hpmv_ASS_CHA_SUA_CNB_SFB_RK1
    1709             :         use pm_kind, only: RKC => RK1
    1710             : #include "pm_matrixMulAdd@routines.inc.F90"
    1711             :     end procedure
    1712             : #endif
    1713             : 
    1714             : #undef RK_ENABLED
    1715             : 
    1716             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1717             : 
    1718             : #undef SUA_ENABLED
    1719             : 
    1720             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1721             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1722             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1723             : 
    1724             : #define SLA_ENABLED 1
    1725             : 
    1726             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1727             : 
    1728             : #define IK_ENABLED 1
    1729             : 
    1730             : #if IK5_ENABLED
    1731         141 :     module procedure hpmv_ASS_CHA_SLA_CNB_SFB_IK5
    1732             :         use pm_kind, only: IKC => IK5
    1733             : #include "pm_matrixMulAdd@routines.inc.F90"
    1734             :     end procedure
    1735             : #endif
    1736             : 
    1737             : #if IK4_ENABLED
    1738         144 :     module procedure hpmv_ASS_CHA_SLA_CNB_SFB_IK4
    1739             :         use pm_kind, only: IKC => IK4
    1740             : #include "pm_matrixMulAdd@routines.inc.F90"
    1741             :     end procedure
    1742             : #endif
    1743             : 
    1744             : #if IK3_ENABLED
    1745         134 :     module procedure hpmv_ASS_CHA_SLA_CNB_SFB_IK3
    1746             :         use pm_kind, only: IKC => IK3
    1747             : #include "pm_matrixMulAdd@routines.inc.F90"
    1748             :     end procedure
    1749             : #endif
    1750             : 
    1751             : #if IK2_ENABLED
    1752         130 :     module procedure hpmv_ASS_CHA_SLA_CNB_SFB_IK2
    1753             :         use pm_kind, only: IKC => IK2
    1754             : #include "pm_matrixMulAdd@routines.inc.F90"
    1755             :     end procedure
    1756             : #endif
    1757             : 
    1758             : #if IK1_ENABLED
    1759         153 :     module procedure hpmv_ASS_CHA_SLA_CNB_SFB_IK1
    1760             :         use pm_kind, only: IKC => IK1
    1761             : #include "pm_matrixMulAdd@routines.inc.F90"
    1762             :     end procedure
    1763             : #endif
    1764             : 
    1765             : #undef IK_ENABLED
    1766             : 
    1767             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1768             : 
    1769             : #define CK_ENABLED 1
    1770             : 
    1771             : #if CK5_ENABLED
    1772             :     module procedure hpmv_ASS_CHA_SLA_CNB_SFB_CK5
    1773             :         use pm_kind, only: CKC => CK5
    1774             : #include "pm_matrixMulAdd@routines.inc.F90"
    1775             :     end procedure
    1776             : #endif
    1777             : 
    1778             : #if CK4_ENABLED
    1779         142 :     module procedure hpmv_ASS_CHA_SLA_CNB_SFB_CK4
    1780             :         use pm_kind, only: CKC => CK4
    1781             : #include "pm_matrixMulAdd@routines.inc.F90"
    1782             :     end procedure
    1783             : #endif
    1784             : 
    1785             : #if CK3_ENABLED
    1786         139 :     module procedure hpmv_ASS_CHA_SLA_CNB_SFB_CK3
    1787             :         use pm_kind, only: CKC => CK3
    1788             : #include "pm_matrixMulAdd@routines.inc.F90"
    1789             :     end procedure
    1790             : #endif
    1791             : 
    1792             : #if CK2_ENABLED
    1793         132 :     module procedure hpmv_ASS_CHA_SLA_CNB_SFB_CK2
    1794             :         use pm_kind, only: CKC => CK2
    1795             : #define DISPATCH_ENABLED 1
    1796             : #include "pm_matrixMulAdd@routines.inc.F90"
    1797             : #undef  DISPATCH_ENABLED
    1798             :     end procedure
    1799             : #endif
    1800             : 
    1801             : #if CK1_ENABLED
    1802         150 :     module procedure hpmv_ASS_CHA_SLA_CNB_SFB_CK1
    1803             :         use pm_kind, only: CKC => CK1
    1804             : #define DISPATCH_ENABLED 1
    1805             : #include "pm_matrixMulAdd@routines.inc.F90"
    1806             : #undef  DISPATCH_ENABLED
    1807             :     end procedure
    1808             : #endif
    1809             : 
    1810             : #undef CK_ENABLED
    1811             : 
    1812             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1813             : 
    1814             : #define RK_ENABLED 1
    1815             : 
    1816             : #if RK5_ENABLED
    1817             :     module procedure hpmv_ASS_CHA_SLA_CNB_SFB_RK5
    1818             :         use pm_kind, only: RKC => RK5
    1819             : #include "pm_matrixMulAdd@routines.inc.F90"
    1820             :     end procedure
    1821             : #endif
    1822             : 
    1823             : #if RK4_ENABLED
    1824         138 :     module procedure hpmv_ASS_CHA_SLA_CNB_SFB_RK4
    1825             :         use pm_kind, only: RKC => RK4
    1826             : #include "pm_matrixMulAdd@routines.inc.F90"
    1827             :     end procedure
    1828             : #endif
    1829             : 
    1830             : #if RK3_ENABLED
    1831         140 :     module procedure hpmv_ASS_CHA_SLA_CNB_SFB_RK3
    1832             :         use pm_kind, only: RKC => RK3
    1833             : #include "pm_matrixMulAdd@routines.inc.F90"
    1834             :     end procedure
    1835             : #endif
    1836             : 
    1837             : #if RK2_ENABLED
    1838         131 :     module procedure hpmv_ASS_CHA_SLA_CNB_SFB_RK2
    1839             :         use pm_kind, only: RKC => RK2
    1840             : #include "pm_matrixMulAdd@routines.inc.F90"
    1841             :     end procedure
    1842             : #endif
    1843             : 
    1844             : #if RK1_ENABLED
    1845         150 :     module procedure hpmv_ASS_CHA_SLA_CNB_SFB_RK1
    1846             :         use pm_kind, only: RKC => RK1
    1847             : #include "pm_matrixMulAdd@routines.inc.F90"
    1848             :     end procedure
    1849             : #endif
    1850             : 
    1851             : #undef RK_ENABLED
    1852             : 
    1853             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1854             : 
    1855             : #undef SLA_ENABLED
    1856             : 
    1857             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1858             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1859             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1860             : 
    1861             : #undef ASS_ENABLED
    1862             : 
    1863             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1864             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1865             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1866             : 
    1867             : #define EXP_ENABLED 1
    1868             : 
    1869             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1870             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1871             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1872             : 
    1873             : #define SUA_ENABLED 1
    1874             : 
    1875             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1876             : 
    1877             : #define IK_ENABLED 1
    1878             : 
    1879             : #if IK5_ENABLED
    1880         100 :     module procedure hpmv_EXP_CHA_SUA_CNB_SFB_IK5
    1881             :         use pm_kind, only: IKC => IK5
    1882             : #include "pm_matrixMulAdd@routines.inc.F90"
    1883             :     end procedure
    1884             : #endif
    1885             : 
    1886             : #if IK4_ENABLED
    1887         100 :     module procedure hpmv_EXP_CHA_SUA_CNB_SFB_IK4
    1888             :         use pm_kind, only: IKC => IK4
    1889             : #include "pm_matrixMulAdd@routines.inc.F90"
    1890             :     end procedure
    1891             : #endif
    1892             : 
    1893             : #if IK3_ENABLED
    1894         100 :     module procedure hpmv_EXP_CHA_SUA_CNB_SFB_IK3
    1895             :         use pm_kind, only: IKC => IK3
    1896             : #include "pm_matrixMulAdd@routines.inc.F90"
    1897             :     end procedure
    1898             : #endif
    1899             : 
    1900             : #if IK2_ENABLED
    1901         100 :     module procedure hpmv_EXP_CHA_SUA_CNB_SFB_IK2
    1902             :         use pm_kind, only: IKC => IK2
    1903             : #include "pm_matrixMulAdd@routines.inc.F90"
    1904             :     end procedure
    1905             : #endif
    1906             : 
    1907             : #if IK1_ENABLED
    1908         100 :     module procedure hpmv_EXP_CHA_SUA_CNB_SFB_IK1
    1909             :         use pm_kind, only: IKC => IK1
    1910             : #include "pm_matrixMulAdd@routines.inc.F90"
    1911             :     end procedure
    1912             : #endif
    1913             : 
    1914             : #undef IK_ENABLED
    1915             : 
    1916             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1917             : 
    1918             : #define CK_ENABLED 1
    1919             : 
    1920             : #if CK5_ENABLED
    1921             :     module procedure hpmv_EXP_CHA_SUA_CNB_SFB_CK5
    1922             :         use pm_kind, only: CKC => CK5
    1923             : #include "pm_matrixMulAdd@routines.inc.F90"
    1924             :     end procedure
    1925             : #endif
    1926             : 
    1927             : #if CK4_ENABLED
    1928         100 :     module procedure hpmv_EXP_CHA_SUA_CNB_SFB_CK4
    1929             :         use pm_kind, only: CKC => CK4
    1930             : #include "pm_matrixMulAdd@routines.inc.F90"
    1931             :     end procedure
    1932             : #endif
    1933             : 
    1934             : #if CK3_ENABLED
    1935         100 :     module procedure hpmv_EXP_CHA_SUA_CNB_SFB_CK3
    1936             :         use pm_kind, only: CKC => CK3
    1937             : #include "pm_matrixMulAdd@routines.inc.F90"
    1938             :     end procedure
    1939             : #endif
    1940             : 
    1941             : #if CK2_ENABLED
    1942         100 :     module procedure hpmv_EXP_CHA_SUA_CNB_SFB_CK2
    1943             :         use pm_kind, only: CKC => CK2
    1944             : #define DISPATCH_ENABLED 1
    1945             : #include "pm_matrixMulAdd@routines.inc.F90"
    1946             : #undef  DISPATCH_ENABLED
    1947             :     end procedure
    1948             : #endif
    1949             : 
    1950             : #if CK1_ENABLED
    1951         100 :     module procedure hpmv_EXP_CHA_SUA_CNB_SFB_CK1
    1952             :         use pm_kind, only: CKC => CK1
    1953             : #define DISPATCH_ENABLED 1
    1954             : #include "pm_matrixMulAdd@routines.inc.F90"
    1955             : #undef  DISPATCH_ENABLED
    1956             :     end procedure
    1957             : #endif
    1958             : 
    1959             : #undef CK_ENABLED
    1960             : 
    1961             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1962             : 
    1963             : #define RK_ENABLED 1
    1964             : 
    1965             : #if RK5_ENABLED
    1966             :     module procedure hpmv_EXP_CHA_SUA_CNB_SFB_RK5
    1967             :         use pm_kind, only: RKC => RK5
    1968             : #include "pm_matrixMulAdd@routines.inc.F90"
    1969             :     end procedure
    1970             : #endif
    1971             : 
    1972             : #if RK4_ENABLED
    1973         100 :     module procedure hpmv_EXP_CHA_SUA_CNB_SFB_RK4
    1974             :         use pm_kind, only: RKC => RK4
    1975             : #include "pm_matrixMulAdd@routines.inc.F90"
    1976             :     end procedure
    1977             : #endif
    1978             : 
    1979             : #if RK3_ENABLED
    1980         100 :     module procedure hpmv_EXP_CHA_SUA_CNB_SFB_RK3
    1981             :         use pm_kind, only: RKC => RK3
    1982             : #include "pm_matrixMulAdd@routines.inc.F90"
    1983             :     end procedure
    1984             : #endif
    1985             : 
    1986             : #if RK2_ENABLED
    1987         100 :     module procedure hpmv_EXP_CHA_SUA_CNB_SFB_RK2
    1988             :         use pm_kind, only: RKC => RK2
    1989             : #include "pm_matrixMulAdd@routines.inc.F90"
    1990             :     end procedure
    1991             : #endif
    1992             : 
    1993             : #if RK1_ENABLED
    1994         100 :     module procedure hpmv_EXP_CHA_SUA_CNB_SFB_RK1
    1995             :         use pm_kind, only: RKC => RK1
    1996             : #include "pm_matrixMulAdd@routines.inc.F90"
    1997             :     end procedure
    1998             : #endif
    1999             : 
    2000             : #undef RK_ENABLED
    2001             : 
    2002             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2003             : 
    2004             : #undef SUA_ENABLED
    2005             : 
    2006             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2007             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2008             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2009             : 
    2010             : #define SLA_ENABLED 1
    2011             : 
    2012             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2013             : 
    2014             : #define IK_ENABLED 1
    2015             : 
    2016             : #if IK5_ENABLED
    2017         100 :     module procedure hpmv_EXP_CHA_SLA_CNB_SFB_IK5
    2018             :         use pm_kind, only: IKC => IK5
    2019             : #include "pm_matrixMulAdd@routines.inc.F90"
    2020             :     end procedure
    2021             : #endif
    2022             : 
    2023             : #if IK4_ENABLED
    2024         100 :     module procedure hpmv_EXP_CHA_SLA_CNB_SFB_IK4
    2025             :         use pm_kind, only: IKC => IK4
    2026             : #include "pm_matrixMulAdd@routines.inc.F90"
    2027             :     end procedure
    2028             : #endif
    2029             : 
    2030             : #if IK3_ENABLED
    2031         100 :     module procedure hpmv_EXP_CHA_SLA_CNB_SFB_IK3
    2032             :         use pm_kind, only: IKC => IK3
    2033             : #include "pm_matrixMulAdd@routines.inc.F90"
    2034             :     end procedure
    2035             : #endif
    2036             : 
    2037             : #if IK2_ENABLED
    2038         100 :     module procedure hpmv_EXP_CHA_SLA_CNB_SFB_IK2
    2039             :         use pm_kind, only: IKC => IK2
    2040             : #include "pm_matrixMulAdd@routines.inc.F90"
    2041             :     end procedure
    2042             : #endif
    2043             : 
    2044             : #if IK1_ENABLED
    2045         100 :     module procedure hpmv_EXP_CHA_SLA_CNB_SFB_IK1
    2046             :         use pm_kind, only: IKC => IK1
    2047             : #include "pm_matrixMulAdd@routines.inc.F90"
    2048             :     end procedure
    2049             : #endif
    2050             : 
    2051             : #undef IK_ENABLED
    2052             : 
    2053             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2054             : 
    2055             : #define CK_ENABLED 1
    2056             : 
    2057             : #if CK5_ENABLED
    2058             :     module procedure hpmv_EXP_CHA_SLA_CNB_SFB_CK5
    2059             :         use pm_kind, only: CKC => CK5
    2060             : #include "pm_matrixMulAdd@routines.inc.F90"
    2061             :     end procedure
    2062             : #endif
    2063             : 
    2064             : #if CK4_ENABLED
    2065         100 :     module procedure hpmv_EXP_CHA_SLA_CNB_SFB_CK4
    2066             :         use pm_kind, only: CKC => CK4
    2067             : #include "pm_matrixMulAdd@routines.inc.F90"
    2068             :     end procedure
    2069             : #endif
    2070             : 
    2071             : #if CK3_ENABLED
    2072         100 :     module procedure hpmv_EXP_CHA_SLA_CNB_SFB_CK3
    2073             :         use pm_kind, only: CKC => CK3
    2074             : #include "pm_matrixMulAdd@routines.inc.F90"
    2075             :     end procedure
    2076             : #endif
    2077             : 
    2078             : #if CK2_ENABLED
    2079         100 :     module procedure hpmv_EXP_CHA_SLA_CNB_SFB_CK2
    2080             :         use pm_kind, only: CKC => CK2
    2081             : #define DISPATCH_ENABLED 1
    2082             : #include "pm_matrixMulAdd@routines.inc.F90"
    2083             : #undef  DISPATCH_ENABLED
    2084             :     end procedure
    2085             : #endif
    2086             : 
    2087             : #if CK1_ENABLED
    2088         100 :     module procedure hpmv_EXP_CHA_SLA_CNB_SFB_CK1
    2089             :         use pm_kind, only: CKC => CK1
    2090             : #define DISPATCH_ENABLED 1
    2091             : #include "pm_matrixMulAdd@routines.inc.F90"
    2092             : #undef  DISPATCH_ENABLED
    2093             :     end procedure
    2094             : #endif
    2095             : 
    2096             : #undef CK_ENABLED
    2097             : 
    2098             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2099             : 
    2100             : #define RK_ENABLED 1
    2101             : 
    2102             : #if RK5_ENABLED
    2103             :     module procedure hpmv_EXP_CHA_SLA_CNB_SFB_RK5
    2104             :         use pm_kind, only: RKC => RK5
    2105             : #include "pm_matrixMulAdd@routines.inc.F90"
    2106             :     end procedure
    2107             : #endif
    2108             : 
    2109             : #if RK4_ENABLED
    2110         100 :     module procedure hpmv_EXP_CHA_SLA_CNB_SFB_RK4
    2111             :         use pm_kind, only: RKC => RK4
    2112             : #include "pm_matrixMulAdd@routines.inc.F90"
    2113             :     end procedure
    2114             : #endif
    2115             : 
    2116             : #if RK3_ENABLED
    2117         100 :     module procedure hpmv_EXP_CHA_SLA_CNB_SFB_RK3
    2118             :         use pm_kind, only: RKC => RK3
    2119             : #include "pm_matrixMulAdd@routines.inc.F90"
    2120             :     end procedure
    2121             : #endif
    2122             : 
    2123             : #if RK2_ENABLED
    2124         100 :     module procedure hpmv_EXP_CHA_SLA_CNB_SFB_RK2
    2125             :         use pm_kind, only: RKC => RK2
    2126             : #include "pm_matrixMulAdd@routines.inc.F90"
    2127             :     end procedure
    2128             : #endif
    2129             : 
    2130             : #if RK1_ENABLED
    2131         100 :     module procedure hpmv_EXP_CHA_SLA_CNB_SFB_RK1
    2132             :         use pm_kind, only: RKC => RK1
    2133             : #include "pm_matrixMulAdd@routines.inc.F90"
    2134             :     end procedure
    2135             : #endif
    2136             : 
    2137             : #undef RK_ENABLED
    2138             : 
    2139             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2140             : 
    2141             : #undef SLA_ENABLED
    2142             : 
    2143             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2144             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2145             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2146             : 
    2147             : #undef EXP_ENABLED
    2148             : 
    2149             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2150             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2151             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2152             : 
    2153             : #undef CNB_ENABLED
    2154             : #undef SFB_ENABLED
    2155             : #undef CHA_ENABLED
    2156             : 
    2157             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2158             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2159             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2160             : 
    2161             : #undef hpmv_ENABLED
    2162             : 
    2163             : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2164             : 
    2165             : #define symv_ENABLED 1
    2166             : 
    2167             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2168             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2169             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2170             : 
    2171             : #define CSA_ENABLED 1
    2172             : #define CNB_ENABLED 1
    2173             : #define SFB_ENABLED 1
    2174             : 
    2175             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2176             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2177             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2178             : 
    2179             : #define ASS_ENABLED 1
    2180             : 
    2181             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2182             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2183             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2184             : 
    2185             : #define SUA_ENABLED 1
    2186             : 
    2187             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2188             : 
    2189             : #define IK_ENABLED 1
    2190             : 
    2191             : #if IK5_ENABLED
    2192         143 :     module procedure symv_ASS_CSA_SUA_CNB_SFB_IK5
    2193             :         use pm_kind, only: IKC => IK5
    2194             : #include "pm_matrixMulAdd@routines.inc.F90"
    2195             :     end procedure
    2196             : #endif
    2197             : 
    2198             : #if IK4_ENABLED
    2199         149 :     module procedure symv_ASS_CSA_SUA_CNB_SFB_IK4
    2200             :         use pm_kind, only: IKC => IK4
    2201             : #include "pm_matrixMulAdd@routines.inc.F90"
    2202             :     end procedure
    2203             : #endif
    2204             : 
    2205             : #if IK3_ENABLED
    2206         147 :     module procedure symv_ASS_CSA_SUA_CNB_SFB_IK3
    2207             :         use pm_kind, only: IKC => IK3
    2208             : #include "pm_matrixMulAdd@routines.inc.F90"
    2209             :     end procedure
    2210             : #endif
    2211             : 
    2212             : #if IK2_ENABLED
    2213         132 :     module procedure symv_ASS_CSA_SUA_CNB_SFB_IK2
    2214             :         use pm_kind, only: IKC => IK2
    2215             : #include "pm_matrixMulAdd@routines.inc.F90"
    2216             :     end procedure
    2217             : #endif
    2218             : 
    2219             : #if IK1_ENABLED
    2220         144 :     module procedure symv_ASS_CSA_SUA_CNB_SFB_IK1
    2221             :         use pm_kind, only: IKC => IK1
    2222             : #include "pm_matrixMulAdd@routines.inc.F90"
    2223             :     end procedure
    2224             : #endif
    2225             : 
    2226             : #undef IK_ENABLED
    2227             : 
    2228             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2229             : 
    2230             : #define CK_ENABLED 1
    2231             : 
    2232             : #if CK5_ENABLED
    2233             :     module procedure symv_ASS_CSA_SUA_CNB_SFB_CK5
    2234             :         use pm_kind, only: CKC => CK5
    2235             : #include "pm_matrixMulAdd@routines.inc.F90"
    2236             :     end procedure
    2237             : #endif
    2238             : 
    2239             : #if CK4_ENABLED
    2240         139 :     module procedure symv_ASS_CSA_SUA_CNB_SFB_CK4
    2241             :         use pm_kind, only: CKC => CK4
    2242             : #include "pm_matrixMulAdd@routines.inc.F90"
    2243             :     end procedure
    2244             : #endif
    2245             : 
    2246             : #if CK3_ENABLED
    2247         143 :     module procedure symv_ASS_CSA_SUA_CNB_SFB_CK3
    2248             :         use pm_kind, only: CKC => CK3
    2249             : #include "pm_matrixMulAdd@routines.inc.F90"
    2250             :     end procedure
    2251             : #endif
    2252             : 
    2253             : #if CK2_ENABLED
    2254         145 :     module procedure symv_ASS_CSA_SUA_CNB_SFB_CK2
    2255             :         use pm_kind, only: CKC => CK2
    2256             : #include "pm_matrixMulAdd@routines.inc.F90"
    2257             :     end procedure
    2258             : #endif
    2259             : 
    2260             : #if CK1_ENABLED
    2261         138 :     module procedure symv_ASS_CSA_SUA_CNB_SFB_CK1
    2262             :         use pm_kind, only: CKC => CK1
    2263             : #include "pm_matrixMulAdd@routines.inc.F90"
    2264             :     end procedure
    2265             : #endif
    2266             : 
    2267             : #undef CK_ENABLED
    2268             : 
    2269             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2270             : 
    2271             : #define RK_ENABLED 1
    2272             : 
    2273             : #if RK5_ENABLED
    2274             :     module procedure symv_ASS_CSA_SUA_CNB_SFB_RK5
    2275             :         use pm_kind, only: RKC => RK5
    2276             : #include "pm_matrixMulAdd@routines.inc.F90"
    2277             :     end procedure
    2278             : #endif
    2279             : 
    2280             : #if RK4_ENABLED
    2281         135 :     module procedure symv_ASS_CSA_SUA_CNB_SFB_RK4
    2282             :         use pm_kind, only: RKC => RK4
    2283             : #include "pm_matrixMulAdd@routines.inc.F90"
    2284             :     end procedure
    2285             : #endif
    2286             : 
    2287             : #if RK3_ENABLED
    2288         144 :     module procedure symv_ASS_CSA_SUA_CNB_SFB_RK3
    2289             :         use pm_kind, only: RKC => RK3
    2290             : #include "pm_matrixMulAdd@routines.inc.F90"
    2291             :     end procedure
    2292             : #endif
    2293             : 
    2294             : #if RK2_ENABLED
    2295         129 :     module procedure symv_ASS_CSA_SUA_CNB_SFB_RK2
    2296             :         use pm_kind, only: RKC => RK2
    2297             : #define DISPATCH_ENABLED 1
    2298             : #include "pm_matrixMulAdd@routines.inc.F90"
    2299             : #undef  DISPATCH_ENABLED
    2300             :     end procedure
    2301             : #endif
    2302             : 
    2303             : #if RK1_ENABLED
    2304         142 :     module procedure symv_ASS_CSA_SUA_CNB_SFB_RK1
    2305             :         use pm_kind, only: RKC => RK1
    2306             : #define DISPATCH_ENABLED 1
    2307             : #include "pm_matrixMulAdd@routines.inc.F90"
    2308             : #undef  DISPATCH_ENABLED
    2309             :     end procedure
    2310             : #endif
    2311             : 
    2312             : #undef RK_ENABLED
    2313             : 
    2314             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2315             : 
    2316             : #undef SUA_ENABLED
    2317             : 
    2318             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2319             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2320             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2321             : 
    2322             : #define SLA_ENABLED 1
    2323             : 
    2324             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2325             : 
    2326             : #define IK_ENABLED 1
    2327             : 
    2328             : #if IK5_ENABLED
    2329         143 :     module procedure symv_ASS_CSA_SLA_CNB_SFB_IK5
    2330             :         use pm_kind, only: IKC => IK5
    2331             : #include "pm_matrixMulAdd@routines.inc.F90"
    2332             :     end procedure
    2333             : #endif
    2334             : 
    2335             : #if IK4_ENABLED
    2336         149 :     module procedure symv_ASS_CSA_SLA_CNB_SFB_IK4
    2337             :         use pm_kind, only: IKC => IK4
    2338             : #include "pm_matrixMulAdd@routines.inc.F90"
    2339             :     end procedure
    2340             : #endif
    2341             : 
    2342             : #if IK3_ENABLED
    2343         147 :     module procedure symv_ASS_CSA_SLA_CNB_SFB_IK3
    2344             :         use pm_kind, only: IKC => IK3
    2345             : #include "pm_matrixMulAdd@routines.inc.F90"
    2346             :     end procedure
    2347             : #endif
    2348             : 
    2349             : #if IK2_ENABLED
    2350         132 :     module procedure symv_ASS_CSA_SLA_CNB_SFB_IK2
    2351             :         use pm_kind, only: IKC => IK2
    2352             : #include "pm_matrixMulAdd@routines.inc.F90"
    2353             :     end procedure
    2354             : #endif
    2355             : 
    2356             : #if IK1_ENABLED
    2357         144 :     module procedure symv_ASS_CSA_SLA_CNB_SFB_IK1
    2358             :         use pm_kind, only: IKC => IK1
    2359             : #include "pm_matrixMulAdd@routines.inc.F90"
    2360             :     end procedure
    2361             : #endif
    2362             : 
    2363             : #undef IK_ENABLED
    2364             : 
    2365             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2366             : 
    2367             : #define CK_ENABLED 1
    2368             : 
    2369             : #if CK5_ENABLED
    2370             :     module procedure symv_ASS_CSA_SLA_CNB_SFB_CK5
    2371             :         use pm_kind, only: CKC => CK5
    2372             : #include "pm_matrixMulAdd@routines.inc.F90"
    2373             :     end procedure
    2374             : #endif
    2375             : 
    2376             : #if CK4_ENABLED
    2377         139 :     module procedure symv_ASS_CSA_SLA_CNB_SFB_CK4
    2378             :         use pm_kind, only: CKC => CK4
    2379             : #include "pm_matrixMulAdd@routines.inc.F90"
    2380             :     end procedure
    2381             : #endif
    2382             : 
    2383             : #if CK3_ENABLED
    2384         143 :     module procedure symv_ASS_CSA_SLA_CNB_SFB_CK3
    2385             :         use pm_kind, only: CKC => CK3
    2386             : #include "pm_matrixMulAdd@routines.inc.F90"
    2387             :     end procedure
    2388             : #endif
    2389             : 
    2390             : #if CK2_ENABLED
    2391         145 :     module procedure symv_ASS_CSA_SLA_CNB_SFB_CK2
    2392             :         use pm_kind, only: CKC => CK2
    2393             : #include "pm_matrixMulAdd@routines.inc.F90"
    2394             :     end procedure
    2395             : #endif
    2396             : 
    2397             : #if CK1_ENABLED
    2398         138 :     module procedure symv_ASS_CSA_SLA_CNB_SFB_CK1
    2399             :         use pm_kind, only: CKC => CK1
    2400             : #include "pm_matrixMulAdd@routines.inc.F90"
    2401             :     end procedure
    2402             : #endif
    2403             : 
    2404             : #undef CK_ENABLED
    2405             : 
    2406             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2407             : 
    2408             : #define RK_ENABLED 1
    2409             : 
    2410             : #if RK5_ENABLED
    2411             :     module procedure symv_ASS_CSA_SLA_CNB_SFB_RK5
    2412             :         use pm_kind, only: RKC => RK5
    2413             : #include "pm_matrixMulAdd@routines.inc.F90"
    2414             :     end procedure
    2415             : #endif
    2416             : 
    2417             : #if RK4_ENABLED
    2418         135 :     module procedure symv_ASS_CSA_SLA_CNB_SFB_RK4
    2419             :         use pm_kind, only: RKC => RK4
    2420             : #include "pm_matrixMulAdd@routines.inc.F90"
    2421             :     end procedure
    2422             : #endif
    2423             : 
    2424             : #if RK3_ENABLED
    2425         144 :     module procedure symv_ASS_CSA_SLA_CNB_SFB_RK3
    2426             :         use pm_kind, only: RKC => RK3
    2427             : #include "pm_matrixMulAdd@routines.inc.F90"
    2428             :     end procedure
    2429             : #endif
    2430             : 
    2431             : #if RK2_ENABLED
    2432         129 :     module procedure symv_ASS_CSA_SLA_CNB_SFB_RK2
    2433             :         use pm_kind, only: RKC => RK2
    2434             : #define DISPATCH_ENABLED 1
    2435             : #include "pm_matrixMulAdd@routines.inc.F90"
    2436             : #undef  DISPATCH_ENABLED
    2437             :     end procedure
    2438             : #endif
    2439             : 
    2440             : #if RK1_ENABLED
    2441         142 :     module procedure symv_ASS_CSA_SLA_CNB_SFB_RK1
    2442             :         use pm_kind, only: RKC => RK1
    2443             : #define DISPATCH_ENABLED 1
    2444             : #include "pm_matrixMulAdd@routines.inc.F90"
    2445             : #undef  DISPATCH_ENABLED
    2446             :     end procedure
    2447             : #endif
    2448             : 
    2449             : #undef RK_ENABLED
    2450             : 
    2451             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2452             : 
    2453             : #undef SLA_ENABLED
    2454             : 
    2455             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2456             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2457             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2458             : 
    2459             : #undef ASS_ENABLED
    2460             : 
    2461             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2462             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2463             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2464             : 
    2465             : #define EXP_ENABLED 1
    2466             : 
    2467             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2468             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2469             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2470             : 
    2471             : #define SUA_ENABLED 1
    2472             : 
    2473             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2474             : 
    2475             : #define IK_ENABLED 1
    2476             : 
    2477             : #if IK5_ENABLED
    2478         100 :     module procedure symv_EXP_CSA_SUA_CNB_SFB_IK5
    2479             :         use pm_kind, only: IKC => IK5
    2480             : #include "pm_matrixMulAdd@routines.inc.F90"
    2481             :     end procedure
    2482             : #endif
    2483             : 
    2484             : #if IK4_ENABLED
    2485         100 :     module procedure symv_EXP_CSA_SUA_CNB_SFB_IK4
    2486             :         use pm_kind, only: IKC => IK4
    2487             : #include "pm_matrixMulAdd@routines.inc.F90"
    2488             :     end procedure
    2489             : #endif
    2490             : 
    2491             : #if IK3_ENABLED
    2492         100 :     module procedure symv_EXP_CSA_SUA_CNB_SFB_IK3
    2493             :         use pm_kind, only: IKC => IK3
    2494             : #include "pm_matrixMulAdd@routines.inc.F90"
    2495             :     end procedure
    2496             : #endif
    2497             : 
    2498             : #if IK2_ENABLED
    2499         100 :     module procedure symv_EXP_CSA_SUA_CNB_SFB_IK2
    2500             :         use pm_kind, only: IKC => IK2
    2501             : #include "pm_matrixMulAdd@routines.inc.F90"
    2502             :     end procedure
    2503             : #endif
    2504             : 
    2505             : #if IK1_ENABLED
    2506         100 :     module procedure symv_EXP_CSA_SUA_CNB_SFB_IK1
    2507             :         use pm_kind, only: IKC => IK1
    2508             : #include "pm_matrixMulAdd@routines.inc.F90"
    2509             :     end procedure
    2510             : #endif
    2511             : 
    2512             : #undef IK_ENABLED
    2513             : 
    2514             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2515             : 
    2516             : #define CK_ENABLED 1
    2517             : 
    2518             : #if CK5_ENABLED
    2519             :     module procedure symv_EXP_CSA_SUA_CNB_SFB_CK5
    2520             :         use pm_kind, only: CKC => CK5
    2521             : #include "pm_matrixMulAdd@routines.inc.F90"
    2522             :     end procedure
    2523             : #endif
    2524             : 
    2525             : #if CK4_ENABLED
    2526         100 :     module procedure symv_EXP_CSA_SUA_CNB_SFB_CK4
    2527             :         use pm_kind, only: CKC => CK4
    2528             : #include "pm_matrixMulAdd@routines.inc.F90"
    2529             :     end procedure
    2530             : #endif
    2531             : 
    2532             : #if CK3_ENABLED
    2533         100 :     module procedure symv_EXP_CSA_SUA_CNB_SFB_CK3
    2534             :         use pm_kind, only: CKC => CK3
    2535             : #include "pm_matrixMulAdd@routines.inc.F90"
    2536             :     end procedure
    2537             : #endif
    2538             : 
    2539             : #if CK2_ENABLED
    2540         100 :     module procedure symv_EXP_CSA_SUA_CNB_SFB_CK2
    2541             :         use pm_kind, only: CKC => CK2
    2542             : #include "pm_matrixMulAdd@routines.inc.F90"
    2543             :     end procedure
    2544             : #endif
    2545             : 
    2546             : #if CK1_ENABLED
    2547         100 :     module procedure symv_EXP_CSA_SUA_CNB_SFB_CK1
    2548             :         use pm_kind, only: CKC => CK1
    2549             : #include "pm_matrixMulAdd@routines.inc.F90"
    2550             :     end procedure
    2551             : #endif
    2552             : 
    2553             : #undef CK_ENABLED
    2554             : 
    2555             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2556             : 
    2557             : #define RK_ENABLED 1
    2558             : 
    2559             : #if RK5_ENABLED
    2560             :     module procedure symv_EXP_CSA_SUA_CNB_SFB_RK5
    2561             :         use pm_kind, only: RKC => RK5
    2562             : #include "pm_matrixMulAdd@routines.inc.F90"
    2563             :     end procedure
    2564             : #endif
    2565             : 
    2566             : #if RK4_ENABLED
    2567         100 :     module procedure symv_EXP_CSA_SUA_CNB_SFB_RK4
    2568             :         use pm_kind, only: RKC => RK4
    2569             : #include "pm_matrixMulAdd@routines.inc.F90"
    2570             :     end procedure
    2571             : #endif
    2572             : 
    2573             : #if RK3_ENABLED
    2574         100 :     module procedure symv_EXP_CSA_SUA_CNB_SFB_RK3
    2575             :         use pm_kind, only: RKC => RK3
    2576             : #include "pm_matrixMulAdd@routines.inc.F90"
    2577             :     end procedure
    2578             : #endif
    2579             : 
    2580             : #if RK2_ENABLED
    2581         100 :     module procedure symv_EXP_CSA_SUA_CNB_SFB_RK2
    2582             :         use pm_kind, only: RKC => RK2
    2583             : #define DISPATCH_ENABLED 1
    2584             : #include "pm_matrixMulAdd@routines.inc.F90"
    2585             : #undef  DISPATCH_ENABLED
    2586             :     end procedure
    2587             : #endif
    2588             : 
    2589             : #if RK1_ENABLED
    2590         101 :     module procedure symv_EXP_CSA_SUA_CNB_SFB_RK1
    2591             :         use pm_kind, only: RKC => RK1
    2592             : #define DISPATCH_ENABLED 1
    2593             : #include "pm_matrixMulAdd@routines.inc.F90"
    2594             : #undef  DISPATCH_ENABLED
    2595             :     end procedure
    2596             : #endif
    2597             : 
    2598             : #undef RK_ENABLED
    2599             : 
    2600             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2601             : 
    2602             : #undef SUA_ENABLED
    2603             : 
    2604             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2605             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2606             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2607             : 
    2608             : #define SLA_ENABLED 1
    2609             : 
    2610             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2611             : 
    2612             : #define IK_ENABLED 1
    2613             : 
    2614             : #if IK5_ENABLED
    2615         100 :     module procedure symv_EXP_CSA_SLA_CNB_SFB_IK5
    2616             :         use pm_kind, only: IKC => IK5
    2617             : #include "pm_matrixMulAdd@routines.inc.F90"
    2618             :     end procedure
    2619             : #endif
    2620             : 
    2621             : #if IK4_ENABLED
    2622         100 :     module procedure symv_EXP_CSA_SLA_CNB_SFB_IK4
    2623             :         use pm_kind, only: IKC => IK4
    2624             : #include "pm_matrixMulAdd@routines.inc.F90"
    2625             :     end procedure
    2626             : #endif
    2627             : 
    2628             : #if IK3_ENABLED
    2629         100 :     module procedure symv_EXP_CSA_SLA_CNB_SFB_IK3
    2630             :         use pm_kind, only: IKC => IK3
    2631             : #include "pm_matrixMulAdd@routines.inc.F90"
    2632             :     end procedure
    2633             : #endif
    2634             : 
    2635             : #if IK2_ENABLED
    2636         100 :     module procedure symv_EXP_CSA_SLA_CNB_SFB_IK2
    2637             :         use pm_kind, only: IKC => IK2
    2638             : #include "pm_matrixMulAdd@routines.inc.F90"
    2639             :     end procedure
    2640             : #endif
    2641             : 
    2642             : #if IK1_ENABLED
    2643         100 :     module procedure symv_EXP_CSA_SLA_CNB_SFB_IK1
    2644             :         use pm_kind, only: IKC => IK1
    2645             : #include "pm_matrixMulAdd@routines.inc.F90"
    2646             :     end procedure
    2647             : #endif
    2648             : 
    2649             : #undef IK_ENABLED
    2650             : 
    2651             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2652             : 
    2653             : #define CK_ENABLED 1
    2654             : 
    2655             : #if CK5_ENABLED
    2656             :     module procedure symv_EXP_CSA_SLA_CNB_SFB_CK5
    2657             :         use pm_kind, only: CKC => CK5
    2658             : #include "pm_matrixMulAdd@routines.inc.F90"
    2659             :     end procedure
    2660             : #endif
    2661             : 
    2662             : #if CK4_ENABLED
    2663         100 :     module procedure symv_EXP_CSA_SLA_CNB_SFB_CK4
    2664             :         use pm_kind, only: CKC => CK4
    2665             : #include "pm_matrixMulAdd@routines.inc.F90"
    2666             :     end procedure
    2667             : #endif
    2668             : 
    2669             : #if CK3_ENABLED
    2670         100 :     module procedure symv_EXP_CSA_SLA_CNB_SFB_CK3
    2671             :         use pm_kind, only: CKC => CK3
    2672             : #include "pm_matrixMulAdd@routines.inc.F90"
    2673             :     end procedure
    2674             : #endif
    2675             : 
    2676             : #if CK2_ENABLED
    2677         100 :     module procedure symv_EXP_CSA_SLA_CNB_SFB_CK2
    2678             :         use pm_kind, only: CKC => CK2
    2679             : #include "pm_matrixMulAdd@routines.inc.F90"
    2680             :     end procedure
    2681             : #endif
    2682             : 
    2683             : #if CK1_ENABLED
    2684         100 :     module procedure symv_EXP_CSA_SLA_CNB_SFB_CK1
    2685             :         use pm_kind, only: CKC => CK1
    2686             : #include "pm_matrixMulAdd@routines.inc.F90"
    2687             :     end procedure
    2688             : #endif
    2689             : 
    2690             : #undef CK_ENABLED
    2691             : 
    2692             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2693             : 
    2694             : #define RK_ENABLED 1
    2695             : 
    2696             : #if RK5_ENABLED
    2697             :     module procedure symv_EXP_CSA_SLA_CNB_SFB_RK5
    2698             :         use pm_kind, only: RKC => RK5
    2699             : #include "pm_matrixMulAdd@routines.inc.F90"
    2700             :     end procedure
    2701             : #endif
    2702             : 
    2703             : #if RK4_ENABLED
    2704         100 :     module procedure symv_EXP_CSA_SLA_CNB_SFB_RK4
    2705             :         use pm_kind, only: RKC => RK4
    2706             : #include "pm_matrixMulAdd@routines.inc.F90"
    2707             :     end procedure
    2708             : #endif
    2709             : 
    2710             : #if RK3_ENABLED
    2711         100 :     module procedure symv_EXP_CSA_SLA_CNB_SFB_RK3
    2712             :         use pm_kind, only: RKC => RK3
    2713             : #include "pm_matrixMulAdd@routines.inc.F90"
    2714             :     end procedure
    2715             : #endif
    2716             : 
    2717             : #if RK2_ENABLED
    2718         100 :     module procedure symv_EXP_CSA_SLA_CNB_SFB_RK2
    2719             :         use pm_kind, only: RKC => RK2
    2720             : #define DISPATCH_ENABLED 1
    2721             : #include "pm_matrixMulAdd@routines.inc.F90"
    2722             : #undef  DISPATCH_ENABLED
    2723             :     end procedure
    2724             : #endif
    2725             : 
    2726             : #if RK1_ENABLED
    2727         101 :     module procedure symv_EXP_CSA_SLA_CNB_SFB_RK1
    2728             :         use pm_kind, only: RKC => RK1
    2729             : #define DISPATCH_ENABLED 1
    2730             : #include "pm_matrixMulAdd@routines.inc.F90"
    2731             : #undef  DISPATCH_ENABLED
    2732             :     end procedure
    2733             : #endif
    2734             : 
    2735             : #undef RK_ENABLED
    2736             : 
    2737             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2738             : 
    2739             : #undef SLA_ENABLED
    2740             : 
    2741             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2742             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2743             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2744             : 
    2745             : #undef EXP_ENABLED
    2746             : 
    2747             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2748             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2749             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2750             : 
    2751             : #undef CNB_ENABLED
    2752             : #undef SFB_ENABLED
    2753             : #undef CSA_ENABLED
    2754             : 
    2755             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2756             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2757             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2758             : 
    2759             : #undef symv_ENABLED
    2760             : 
    2761             : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2762             : 
    2763             : #define hemv_ENABLED 1
    2764             : 
    2765             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2766             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2767             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2768             : 
    2769             : #define CHA_ENABLED 1
    2770             : #define CNB_ENABLED 1
    2771             : #define SFB_ENABLED 1
    2772             : 
    2773             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2774             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2775             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2776             : 
    2777             : #define ASS_ENABLED 1
    2778             : 
    2779             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2780             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2781             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2782             : 
    2783             : #define SUA_ENABLED 1
    2784             : 
    2785             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2786             : 
    2787             : #define IK_ENABLED 1
    2788             : 
    2789             : #if IK5_ENABLED
    2790         143 :     module procedure hemv_ASS_CHA_SUA_CNB_SFB_IK5
    2791             :         use pm_kind, only: IKC => IK5
    2792             : #include "pm_matrixMulAdd@routines.inc.F90"
    2793             :     end procedure
    2794             : #endif
    2795             : 
    2796             : #if IK4_ENABLED
    2797         149 :     module procedure hemv_ASS_CHA_SUA_CNB_SFB_IK4
    2798             :         use pm_kind, only: IKC => IK4
    2799             : #include "pm_matrixMulAdd@routines.inc.F90"
    2800             :     end procedure
    2801             : #endif
    2802             : 
    2803             : #if IK3_ENABLED
    2804         147 :     module procedure hemv_ASS_CHA_SUA_CNB_SFB_IK3
    2805             :         use pm_kind, only: IKC => IK3
    2806             : #include "pm_matrixMulAdd@routines.inc.F90"
    2807             :     end procedure
    2808             : #endif
    2809             : 
    2810             : #if IK2_ENABLED
    2811         132 :     module procedure hemv_ASS_CHA_SUA_CNB_SFB_IK2
    2812             :         use pm_kind, only: IKC => IK2
    2813             : #include "pm_matrixMulAdd@routines.inc.F90"
    2814             :     end procedure
    2815             : #endif
    2816             : 
    2817             : #if IK1_ENABLED
    2818         144 :     module procedure hemv_ASS_CHA_SUA_CNB_SFB_IK1
    2819             :         use pm_kind, only: IKC => IK1
    2820             : #include "pm_matrixMulAdd@routines.inc.F90"
    2821             :     end procedure
    2822             : #endif
    2823             : 
    2824             : #undef IK_ENABLED
    2825             : 
    2826             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2827             : 
    2828             : #define CK_ENABLED 1
    2829             : 
    2830             : #if CK5_ENABLED
    2831             :     module procedure hemv_ASS_CHA_SUA_CNB_SFB_CK5
    2832             :         use pm_kind, only: CKC => CK5
    2833             : #include "pm_matrixMulAdd@routines.inc.F90"
    2834             :     end procedure
    2835             : #endif
    2836             : 
    2837             : #if CK4_ENABLED
    2838         139 :     module procedure hemv_ASS_CHA_SUA_CNB_SFB_CK4
    2839             :         use pm_kind, only: CKC => CK4
    2840             : #include "pm_matrixMulAdd@routines.inc.F90"
    2841             :     end procedure
    2842             : #endif
    2843             : 
    2844             : #if CK3_ENABLED
    2845         143 :     module procedure hemv_ASS_CHA_SUA_CNB_SFB_CK3
    2846             :         use pm_kind, only: CKC => CK3
    2847             : #include "pm_matrixMulAdd@routines.inc.F90"
    2848             :     end procedure
    2849             : #endif
    2850             : 
    2851             : #if CK2_ENABLED
    2852         145 :     module procedure hemv_ASS_CHA_SUA_CNB_SFB_CK2
    2853             :         use pm_kind, only: CKC => CK2
    2854             : #define DISPATCH_ENABLED 1
    2855             : #include "pm_matrixMulAdd@routines.inc.F90"
    2856             : #undef  DISPATCH_ENABLED
    2857             :     end procedure
    2858             : #endif
    2859             : 
    2860             : #if CK1_ENABLED
    2861         139 :     module procedure hemv_ASS_CHA_SUA_CNB_SFB_CK1
    2862             :         use pm_kind, only: CKC => CK1
    2863             : #define DISPATCH_ENABLED 1
    2864             : #include "pm_matrixMulAdd@routines.inc.F90"
    2865             : #undef  DISPATCH_ENABLED
    2866             :     end procedure
    2867             : #endif
    2868             : 
    2869             : #undef CK_ENABLED
    2870             : 
    2871             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2872             : 
    2873             : #define RK_ENABLED 1
    2874             : 
    2875             : #if RK5_ENABLED
    2876             :     module procedure hemv_ASS_CHA_SUA_CNB_SFB_RK5
    2877             :         use pm_kind, only: RKC => RK5
    2878             : #include "pm_matrixMulAdd@routines.inc.F90"
    2879             :     end procedure
    2880             : #endif
    2881             : 
    2882             : #if RK4_ENABLED
    2883         135 :     module procedure hemv_ASS_CHA_SUA_CNB_SFB_RK4
    2884             :         use pm_kind, only: RKC => RK4
    2885             : #include "pm_matrixMulAdd@routines.inc.F90"
    2886             :     end procedure
    2887             : #endif
    2888             : 
    2889             : #if RK3_ENABLED
    2890         144 :     module procedure hemv_ASS_CHA_SUA_CNB_SFB_RK3
    2891             :         use pm_kind, only: RKC => RK3
    2892             : #include "pm_matrixMulAdd@routines.inc.F90"
    2893             :     end procedure
    2894             : #endif
    2895             : 
    2896             : #if RK2_ENABLED
    2897         129 :     module procedure hemv_ASS_CHA_SUA_CNB_SFB_RK2
    2898             :         use pm_kind, only: RKC => RK2
    2899             : #include "pm_matrixMulAdd@routines.inc.F90"
    2900             :     end procedure
    2901             : #endif
    2902             : 
    2903             : #if RK1_ENABLED
    2904         141 :     module procedure hemv_ASS_CHA_SUA_CNB_SFB_RK1
    2905             :         use pm_kind, only: RKC => RK1
    2906             : #include "pm_matrixMulAdd@routines.inc.F90"
    2907             :     end procedure
    2908             : #endif
    2909             : 
    2910             : #undef RK_ENABLED
    2911             : 
    2912             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2913             : 
    2914             : #undef SUA_ENABLED
    2915             : 
    2916             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2917             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2918             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2919             : 
    2920             : #define SLA_ENABLED 1
    2921             : 
    2922             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2923             : 
    2924             : #define IK_ENABLED 1
    2925             : 
    2926             : #if IK5_ENABLED
    2927         143 :     module procedure hemv_ASS_CHA_SLA_CNB_SFB_IK5
    2928             :         use pm_kind, only: IKC => IK5
    2929             : #include "pm_matrixMulAdd@routines.inc.F90"
    2930             :     end procedure
    2931             : #endif
    2932             : 
    2933             : #if IK4_ENABLED
    2934         149 :     module procedure hemv_ASS_CHA_SLA_CNB_SFB_IK4
    2935             :         use pm_kind, only: IKC => IK4
    2936             : #include "pm_matrixMulAdd@routines.inc.F90"
    2937             :     end procedure
    2938             : #endif
    2939             : 
    2940             : #if IK3_ENABLED
    2941         147 :     module procedure hemv_ASS_CHA_SLA_CNB_SFB_IK3
    2942             :         use pm_kind, only: IKC => IK3
    2943             : #include "pm_matrixMulAdd@routines.inc.F90"
    2944             :     end procedure
    2945             : #endif
    2946             : 
    2947             : #if IK2_ENABLED
    2948         132 :     module procedure hemv_ASS_CHA_SLA_CNB_SFB_IK2
    2949             :         use pm_kind, only: IKC => IK2
    2950             : #include "pm_matrixMulAdd@routines.inc.F90"
    2951             :     end procedure
    2952             : #endif
    2953             : 
    2954             : #if IK1_ENABLED
    2955         144 :     module procedure hemv_ASS_CHA_SLA_CNB_SFB_IK1
    2956             :         use pm_kind, only: IKC => IK1
    2957             : #include "pm_matrixMulAdd@routines.inc.F90"
    2958             :     end procedure
    2959             : #endif
    2960             : 
    2961             : #undef IK_ENABLED
    2962             : 
    2963             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2964             : 
    2965             : #define CK_ENABLED 1
    2966             : 
    2967             : #if CK5_ENABLED
    2968             :     module procedure hemv_ASS_CHA_SLA_CNB_SFB_CK5
    2969             :         use pm_kind, only: CKC => CK5
    2970             : #include "pm_matrixMulAdd@routines.inc.F90"
    2971             :     end procedure
    2972             : #endif
    2973             : 
    2974             : #if CK4_ENABLED
    2975         139 :     module procedure hemv_ASS_CHA_SLA_CNB_SFB_CK4
    2976             :         use pm_kind, only: CKC => CK4
    2977             : #include "pm_matrixMulAdd@routines.inc.F90"
    2978             :     end procedure
    2979             : #endif
    2980             : 
    2981             : #if CK3_ENABLED
    2982         143 :     module procedure hemv_ASS_CHA_SLA_CNB_SFB_CK3
    2983             :         use pm_kind, only: CKC => CK3
    2984             : #include "pm_matrixMulAdd@routines.inc.F90"
    2985             :     end procedure
    2986             : #endif
    2987             : 
    2988             : #if CK2_ENABLED
    2989         145 :     module procedure hemv_ASS_CHA_SLA_CNB_SFB_CK2
    2990             :         use pm_kind, only: CKC => CK2
    2991             : #define DISPATCH_ENABLED 1
    2992             : #include "pm_matrixMulAdd@routines.inc.F90"
    2993             : #undef  DISPATCH_ENABLED
    2994             :     end procedure
    2995             : #endif
    2996             : 
    2997             : #if CK1_ENABLED
    2998         139 :     module procedure hemv_ASS_CHA_SLA_CNB_SFB_CK1
    2999             :         use pm_kind, only: CKC => CK1
    3000             : #define DISPATCH_ENABLED 1
    3001             : #include "pm_matrixMulAdd@routines.inc.F90"
    3002             : #undef  DISPATCH_ENABLED
    3003             :     end procedure
    3004             : #endif
    3005             : 
    3006             : #undef CK_ENABLED
    3007             : 
    3008             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3009             : 
    3010             : #define RK_ENABLED 1
    3011             : 
    3012             : #if RK5_ENABLED
    3013             :     module procedure hemv_ASS_CHA_SLA_CNB_SFB_RK5
    3014             :         use pm_kind, only: RKC => RK5
    3015             : #include "pm_matrixMulAdd@routines.inc.F90"
    3016             :     end procedure
    3017             : #endif
    3018             : 
    3019             : #if RK4_ENABLED
    3020         135 :     module procedure hemv_ASS_CHA_SLA_CNB_SFB_RK4
    3021             :         use pm_kind, only: RKC => RK4
    3022             : #include "pm_matrixMulAdd@routines.inc.F90"
    3023             :     end procedure
    3024             : #endif
    3025             : 
    3026             : #if RK3_ENABLED
    3027         144 :     module procedure hemv_ASS_CHA_SLA_CNB_SFB_RK3
    3028             :         use pm_kind, only: RKC => RK3
    3029             : #include "pm_matrixMulAdd@routines.inc.F90"
    3030             :     end procedure
    3031             : #endif
    3032             : 
    3033             : #if RK2_ENABLED
    3034         129 :     module procedure hemv_ASS_CHA_SLA_CNB_SFB_RK2
    3035             :         use pm_kind, only: RKC => RK2
    3036             : #include "pm_matrixMulAdd@routines.inc.F90"
    3037             :     end procedure
    3038             : #endif
    3039             : 
    3040             : #if RK1_ENABLED
    3041         141 :     module procedure hemv_ASS_CHA_SLA_CNB_SFB_RK1
    3042             :         use pm_kind, only: RKC => RK1
    3043             : #include "pm_matrixMulAdd@routines.inc.F90"
    3044             :     end procedure
    3045             : #endif
    3046             : 
    3047             : #undef RK_ENABLED
    3048             : 
    3049             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3050             : 
    3051             : #undef SLA_ENABLED
    3052             : 
    3053             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3054             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3055             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3056             : 
    3057             : #undef ASS_ENABLED
    3058             : 
    3059             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3060             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3061             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3062             : 
    3063             : #define EXP_ENABLED 1
    3064             : 
    3065             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3066             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3067             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3068             : 
    3069             : #define SUA_ENABLED 1
    3070             : 
    3071             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3072             : 
    3073             : #define IK_ENABLED 1
    3074             : 
    3075             : #if IK5_ENABLED
    3076         100 :     module procedure hemv_EXP_CHA_SUA_CNB_SFB_IK5
    3077             :         use pm_kind, only: IKC => IK5
    3078             : #include "pm_matrixMulAdd@routines.inc.F90"
    3079             :     end procedure
    3080             : #endif
    3081             : 
    3082             : #if IK4_ENABLED
    3083         100 :     module procedure hemv_EXP_CHA_SUA_CNB_SFB_IK4
    3084             :         use pm_kind, only: IKC => IK4
    3085             : #include "pm_matrixMulAdd@routines.inc.F90"
    3086             :     end procedure
    3087             : #endif
    3088             : 
    3089             : #if IK3_ENABLED
    3090         100 :     module procedure hemv_EXP_CHA_SUA_CNB_SFB_IK3
    3091             :         use pm_kind, only: IKC => IK3
    3092             : #include "pm_matrixMulAdd@routines.inc.F90"
    3093             :     end procedure
    3094             : #endif
    3095             : 
    3096             : #if IK2_ENABLED
    3097         100 :     module procedure hemv_EXP_CHA_SUA_CNB_SFB_IK2
    3098             :         use pm_kind, only: IKC => IK2
    3099             : #include "pm_matrixMulAdd@routines.inc.F90"
    3100             :     end procedure
    3101             : #endif
    3102             : 
    3103             : #if IK1_ENABLED
    3104         100 :     module procedure hemv_EXP_CHA_SUA_CNB_SFB_IK1
    3105             :         use pm_kind, only: IKC => IK1
    3106             : #include "pm_matrixMulAdd@routines.inc.F90"
    3107             :     end procedure
    3108             : #endif
    3109             : 
    3110             : #undef IK_ENABLED
    3111             : 
    3112             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3113             : 
    3114             : #define CK_ENABLED 1
    3115             : 
    3116             : #if CK5_ENABLED
    3117             :     module procedure hemv_EXP_CHA_SUA_CNB_SFB_CK5
    3118             :         use pm_kind, only: CKC => CK5
    3119             : #include "pm_matrixMulAdd@routines.inc.F90"
    3120             :     end procedure
    3121             : #endif
    3122             : 
    3123             : #if CK4_ENABLED
    3124         100 :     module procedure hemv_EXP_CHA_SUA_CNB_SFB_CK4
    3125             :         use pm_kind, only: CKC => CK4
    3126             : #include "pm_matrixMulAdd@routines.inc.F90"
    3127             :     end procedure
    3128             : #endif
    3129             : 
    3130             : #if CK3_ENABLED
    3131         100 :     module procedure hemv_EXP_CHA_SUA_CNB_SFB_CK3
    3132             :         use pm_kind, only: CKC => CK3
    3133             : #include "pm_matrixMulAdd@routines.inc.F90"
    3134             :     end procedure
    3135             : #endif
    3136             : 
    3137             : #if CK2_ENABLED
    3138         100 :     module procedure hemv_EXP_CHA_SUA_CNB_SFB_CK2
    3139             :         use pm_kind, only: CKC => CK2
    3140             : #define DISPATCH_ENABLED 1
    3141             : #include "pm_matrixMulAdd@routines.inc.F90"
    3142             : #undef  DISPATCH_ENABLED
    3143             :     end procedure
    3144             : #endif
    3145             : 
    3146             : #if CK1_ENABLED
    3147         101 :     module procedure hemv_EXP_CHA_SUA_CNB_SFB_CK1
    3148             :         use pm_kind, only: CKC => CK1
    3149             : #define DISPATCH_ENABLED 1
    3150             : #include "pm_matrixMulAdd@routines.inc.F90"
    3151             : #undef  DISPATCH_ENABLED
    3152             :     end procedure
    3153             : #endif
    3154             : 
    3155             : #undef CK_ENABLED
    3156             : 
    3157             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3158             : 
    3159             : #define RK_ENABLED 1
    3160             : 
    3161             : #if RK5_ENABLED
    3162             :     module procedure hemv_EXP_CHA_SUA_CNB_SFB_RK5
    3163             :         use pm_kind, only: RKC => RK5
    3164             : #include "pm_matrixMulAdd@routines.inc.F90"
    3165             :     end procedure
    3166             : #endif
    3167             : 
    3168             : #if RK4_ENABLED
    3169         100 :     module procedure hemv_EXP_CHA_SUA_CNB_SFB_RK4
    3170             :         use pm_kind, only: RKC => RK4
    3171             : #include "pm_matrixMulAdd@routines.inc.F90"
    3172             :     end procedure
    3173             : #endif
    3174             : 
    3175             : #if RK3_ENABLED
    3176         100 :     module procedure hemv_EXP_CHA_SUA_CNB_SFB_RK3
    3177             :         use pm_kind, only: RKC => RK3
    3178             : #include "pm_matrixMulAdd@routines.inc.F90"
    3179             :     end procedure
    3180             : #endif
    3181             : 
    3182             : #if RK2_ENABLED
    3183         100 :     module procedure hemv_EXP_CHA_SUA_CNB_SFB_RK2
    3184             :         use pm_kind, only: RKC => RK2
    3185             : #include "pm_matrixMulAdd@routines.inc.F90"
    3186             :     end procedure
    3187             : #endif
    3188             : 
    3189             : #if RK1_ENABLED
    3190         100 :     module procedure hemv_EXP_CHA_SUA_CNB_SFB_RK1
    3191             :         use pm_kind, only: RKC => RK1
    3192             : #include "pm_matrixMulAdd@routines.inc.F90"
    3193             :     end procedure
    3194             : #endif
    3195             : 
    3196             : #undef RK_ENABLED
    3197             : 
    3198             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3199             : 
    3200             : #undef SUA_ENABLED
    3201             : 
    3202             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3203             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3204             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3205             : 
    3206             : #define SLA_ENABLED 1
    3207             : 
    3208             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3209             : 
    3210             : #define IK_ENABLED 1
    3211             : 
    3212             : #if IK5_ENABLED
    3213         100 :     module procedure hemv_EXP_CHA_SLA_CNB_SFB_IK5
    3214             :         use pm_kind, only: IKC => IK5
    3215             : #include "pm_matrixMulAdd@routines.inc.F90"
    3216             :     end procedure
    3217             : #endif
    3218             : 
    3219             : #if IK4_ENABLED
    3220         100 :     module procedure hemv_EXP_CHA_SLA_CNB_SFB_IK4
    3221             :         use pm_kind, only: IKC => IK4
    3222             : #include "pm_matrixMulAdd@routines.inc.F90"
    3223             :     end procedure
    3224             : #endif
    3225             : 
    3226             : #if IK3_ENABLED
    3227         100 :     module procedure hemv_EXP_CHA_SLA_CNB_SFB_IK3
    3228             :         use pm_kind, only: IKC => IK3
    3229             : #include "pm_matrixMulAdd@routines.inc.F90"
    3230             :     end procedure
    3231             : #endif
    3232             : 
    3233             : #if IK2_ENABLED
    3234         100 :     module procedure hemv_EXP_CHA_SLA_CNB_SFB_IK2
    3235             :         use pm_kind, only: IKC => IK2
    3236             : #include "pm_matrixMulAdd@routines.inc.F90"
    3237             :     end procedure
    3238             : #endif
    3239             : 
    3240             : #if IK1_ENABLED
    3241         100 :     module procedure hemv_EXP_CHA_SLA_CNB_SFB_IK1
    3242             :         use pm_kind, only: IKC => IK1
    3243             : #include "pm_matrixMulAdd@routines.inc.F90"
    3244             :     end procedure
    3245             : #endif
    3246             : 
    3247             : #undef IK_ENABLED
    3248             : 
    3249             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3250             : 
    3251             : #define CK_ENABLED 1
    3252             : 
    3253             : #if CK5_ENABLED
    3254             :     module procedure hemv_EXP_CHA_SLA_CNB_SFB_CK5
    3255             :         use pm_kind, only: CKC => CK5
    3256             : #include "pm_matrixMulAdd@routines.inc.F90"
    3257             :     end procedure
    3258             : #endif
    3259             : 
    3260             : #if CK4_ENABLED
    3261         100 :     module procedure hemv_EXP_CHA_SLA_CNB_SFB_CK4
    3262             :         use pm_kind, only: CKC => CK4
    3263             : #include "pm_matrixMulAdd@routines.inc.F90"
    3264             :     end procedure
    3265             : #endif
    3266             : 
    3267             : #if CK3_ENABLED
    3268         100 :     module procedure hemv_EXP_CHA_SLA_CNB_SFB_CK3
    3269             :         use pm_kind, only: CKC => CK3
    3270             : #include "pm_matrixMulAdd@routines.inc.F90"
    3271             :     end procedure
    3272             : #endif
    3273             : 
    3274             : #if CK2_ENABLED
    3275         100 :     module procedure hemv_EXP_CHA_SLA_CNB_SFB_CK2
    3276             :         use pm_kind, only: CKC => CK2
    3277             : #define DISPATCH_ENABLED 1
    3278             : #include "pm_matrixMulAdd@routines.inc.F90"
    3279             : #undef  DISPATCH_ENABLED
    3280             :     end procedure
    3281             : #endif
    3282             : 
    3283             : #if CK1_ENABLED
    3284         101 :     module procedure hemv_EXP_CHA_SLA_CNB_SFB_CK1
    3285             :         use pm_kind, only: CKC => CK1
    3286             : #define DISPATCH_ENABLED 1
    3287             : #include "pm_matrixMulAdd@routines.inc.F90"
    3288             : #undef  DISPATCH_ENABLED
    3289             :     end procedure
    3290             : #endif
    3291             : 
    3292             : #undef CK_ENABLED
    3293             : 
    3294             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3295             : 
    3296             : #define RK_ENABLED 1
    3297             : 
    3298             : #if RK5_ENABLED
    3299             :     module procedure hemv_EXP_CHA_SLA_CNB_SFB_RK5
    3300             :         use pm_kind, only: RKC => RK5
    3301             : #include "pm_matrixMulAdd@routines.inc.F90"
    3302             :     end procedure
    3303             : #endif
    3304             : 
    3305             : #if RK4_ENABLED
    3306         100 :     module procedure hemv_EXP_CHA_SLA_CNB_SFB_RK4
    3307             :         use pm_kind, only: RKC => RK4
    3308             : #include "pm_matrixMulAdd@routines.inc.F90"
    3309             :     end procedure
    3310             : #endif
    3311             : 
    3312             : #if RK3_ENABLED
    3313         100 :     module procedure hemv_EXP_CHA_SLA_CNB_SFB_RK3
    3314             :         use pm_kind, only: RKC => RK3
    3315             : #include "pm_matrixMulAdd@routines.inc.F90"
    3316             :     end procedure
    3317             : #endif
    3318             : 
    3319             : #if RK2_ENABLED
    3320         100 :     module procedure hemv_EXP_CHA_SLA_CNB_SFB_RK2
    3321             :         use pm_kind, only: RKC => RK2
    3322             : #include "pm_matrixMulAdd@routines.inc.F90"
    3323             :     end procedure
    3324             : #endif
    3325             : 
    3326             : #if RK1_ENABLED
    3327         100 :     module procedure hemv_EXP_CHA_SLA_CNB_SFB_RK1
    3328             :         use pm_kind, only: RKC => RK1
    3329             : #include "pm_matrixMulAdd@routines.inc.F90"
    3330             :     end procedure
    3331             : #endif
    3332             : 
    3333             : #undef RK_ENABLED
    3334             : 
    3335             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3336             : 
    3337             : #undef SLA_ENABLED
    3338             : 
    3339             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3340             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3341             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3342             : 
    3343             : #undef EXP_ENABLED
    3344             : 
    3345             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3346             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3347             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3348             : 
    3349             : #undef CNB_ENABLED
    3350             : #undef SFB_ENABLED
    3351             : #undef CHA_ENABLED
    3352             : 
    3353             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3354             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3355             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3356             : 
    3357             : #undef hemv_ENABLED
    3358             : 
    3359             : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3360             : 
    3361             : #define symm_ENABLED 1
    3362             : 
    3363             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3364             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3365             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3366             : 
    3367             : #define ASS_ENABLED 1
    3368             : 
    3369             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3370             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3371             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3372             : 
    3373             : #define CNB_ENABLED 1
    3374             : #define SFB_ENABLED 1
    3375             : 
    3376             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3377             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3378             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3379             : 
    3380             : #define SUA_ENABLED 1
    3381             : 
    3382             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3383             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3384             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3385             : 
    3386             : #define CSA_ENABLED 1
    3387             : 
    3388             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3389             : 
    3390             : #define IK_ENABLED 1
    3391             : 
    3392             : #if IK5_ENABLED
    3393         139 :     module procedure symm_ASS_CSA_SUA_CNB_SFB_IK5
    3394             :         use pm_kind, only: IKC => IK5
    3395             : #include "pm_matrixMulAdd@routines.inc.F90"
    3396             :     end procedure
    3397             : #endif
    3398             : 
    3399             : #if IK4_ENABLED
    3400         140 :     module procedure symm_ASS_CSA_SUA_CNB_SFB_IK4
    3401             :         use pm_kind, only: IKC => IK4
    3402             : #include "pm_matrixMulAdd@routines.inc.F90"
    3403             :     end procedure
    3404             : #endif
    3405             : 
    3406             : #if IK3_ENABLED
    3407         151 :     module procedure symm_ASS_CSA_SUA_CNB_SFB_IK3
    3408             :         use pm_kind, only: IKC => IK3
    3409             : #include "pm_matrixMulAdd@routines.inc.F90"
    3410             :     end procedure
    3411             : #endif
    3412             : 
    3413             : #if IK2_ENABLED
    3414         126 :     module procedure symm_ASS_CSA_SUA_CNB_SFB_IK2
    3415             :         use pm_kind, only: IKC => IK2
    3416             : #include "pm_matrixMulAdd@routines.inc.F90"
    3417             :     end procedure
    3418             : #endif
    3419             : 
    3420             : #if IK1_ENABLED
    3421         152 :     module procedure symm_ASS_CSA_SUA_CNB_SFB_IK1
    3422             :         use pm_kind, only: IKC => IK1
    3423             : #include "pm_matrixMulAdd@routines.inc.F90"
    3424             :     end procedure
    3425             : #endif
    3426             : 
    3427             : #undef IK_ENABLED
    3428             : 
    3429             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3430             : 
    3431             : #define CK_ENABLED 1
    3432             : 
    3433             : #if CK5_ENABLED
    3434             :     module procedure symm_ASS_CSA_SUA_CNB_SFB_CK5
    3435             :         use pm_kind, only: CKC => CK5
    3436             : #include "pm_matrixMulAdd@routines.inc.F90"
    3437             :     end procedure
    3438             : #endif
    3439             : 
    3440             : #if CK4_ENABLED
    3441         138 :     module procedure symm_ASS_CSA_SUA_CNB_SFB_CK4
    3442             :         use pm_kind, only: CKC => CK4
    3443             : #include "pm_matrixMulAdd@routines.inc.F90"
    3444             :     end procedure
    3445             : #endif
    3446             : 
    3447             : #if CK3_ENABLED
    3448         144 :     module procedure symm_ASS_CSA_SUA_CNB_SFB_CK3
    3449             :         use pm_kind, only: CKC => CK3
    3450             : #include "pm_matrixMulAdd@routines.inc.F90"
    3451             :     end procedure
    3452             : #endif
    3453             : 
    3454             : #if CK2_ENABLED
    3455         142 :     module procedure symm_ASS_CSA_SUA_CNB_SFB_CK2
    3456             :         use pm_kind, only: CKC => CK2
    3457             : #include "pm_matrixMulAdd@routines.inc.F90"
    3458             :     end procedure
    3459             : #endif
    3460             : 
    3461             : #if CK1_ENABLED
    3462         145 :     module procedure symm_ASS_CSA_SUA_CNB_SFB_CK1
    3463             :         use pm_kind, only: CKC => CK1
    3464             : #include "pm_matrixMulAdd@routines.inc.F90"
    3465             :     end procedure
    3466             : #endif
    3467             : 
    3468             : #undef CK_ENABLED
    3469             : 
    3470             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3471             : 
    3472             : #define RK_ENABLED 1
    3473             : 
    3474             : #if RK5_ENABLED
    3475             :     module procedure symm_ASS_CSA_SUA_CNB_SFB_RK5
    3476             :         use pm_kind, only: RKC => RK5
    3477             : #include "pm_matrixMulAdd@routines.inc.F90"
    3478             :     end procedure
    3479             : #endif
    3480             : 
    3481             : #if RK4_ENABLED
    3482         135 :     module procedure symm_ASS_CSA_SUA_CNB_SFB_RK4
    3483             :         use pm_kind, only: RKC => RK4
    3484             : #include "pm_matrixMulAdd@routines.inc.F90"
    3485             :     end procedure
    3486             : #endif
    3487             : 
    3488             : #if RK3_ENABLED
    3489         154 :     module procedure symm_ASS_CSA_SUA_CNB_SFB_RK3
    3490             :         use pm_kind, only: RKC => RK3
    3491             : #include "pm_matrixMulAdd@routines.inc.F90"
    3492             :     end procedure
    3493             : #endif
    3494             : 
    3495             : #if RK2_ENABLED
    3496         131 :     module procedure symm_ASS_CSA_SUA_CNB_SFB_RK2
    3497             :         use pm_kind, only: RKC => RK2
    3498             : #include "pm_matrixMulAdd@routines.inc.F90"
    3499             :     end procedure
    3500             : #endif
    3501             : 
    3502             : #if RK1_ENABLED
    3503         150 :     module procedure symm_ASS_CSA_SUA_CNB_SFB_RK1
    3504             :         use pm_kind, only: RKC => RK1
    3505             : #include "pm_matrixMulAdd@routines.inc.F90"
    3506             :     end procedure
    3507             : #endif
    3508             : 
    3509             : #undef RK_ENABLED
    3510             : 
    3511             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3512             : 
    3513             : #undef CSA_ENABLED
    3514             : 
    3515             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3516             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3517             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3518             : 
    3519             : #undef SUA_ENABLED
    3520             : 
    3521             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3522             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3523             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3524             : 
    3525             : #define SLA_ENABLED 1
    3526             : 
    3527             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3528             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3529             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3530             : 
    3531             : #define CSA_ENABLED 1
    3532             : 
    3533             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3534             : 
    3535             : #define IK_ENABLED 1
    3536             : 
    3537             : #if IK5_ENABLED
    3538         139 :     module procedure symm_ASS_CSA_SLA_CNB_SFB_IK5
    3539             :         use pm_kind, only: IKC => IK5
    3540             : #include "pm_matrixMulAdd@routines.inc.F90"
    3541             :     end procedure
    3542             : #endif
    3543             : 
    3544             : #if IK4_ENABLED
    3545         140 :     module procedure symm_ASS_CSA_SLA_CNB_SFB_IK4
    3546             :         use pm_kind, only: IKC => IK4
    3547             : #include "pm_matrixMulAdd@routines.inc.F90"
    3548             :     end procedure
    3549             : #endif
    3550             : 
    3551             : #if IK3_ENABLED
    3552         151 :     module procedure symm_ASS_CSA_SLA_CNB_SFB_IK3
    3553             :         use pm_kind, only: IKC => IK3
    3554             : #include "pm_matrixMulAdd@routines.inc.F90"
    3555             :     end procedure
    3556             : #endif
    3557             : 
    3558             : #if IK2_ENABLED
    3559         126 :     module procedure symm_ASS_CSA_SLA_CNB_SFB_IK2
    3560             :         use pm_kind, only: IKC => IK2
    3561             : #include "pm_matrixMulAdd@routines.inc.F90"
    3562             :     end procedure
    3563             : #endif
    3564             : 
    3565             : #if IK1_ENABLED
    3566         152 :     module procedure symm_ASS_CSA_SLA_CNB_SFB_IK1
    3567             :         use pm_kind, only: IKC => IK1
    3568             : #include "pm_matrixMulAdd@routines.inc.F90"
    3569             :     end procedure
    3570             : #endif
    3571             : 
    3572             : #undef IK_ENABLED
    3573             : 
    3574             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3575             : 
    3576             : #define CK_ENABLED 1
    3577             : 
    3578             : #if CK5_ENABLED
    3579             :     module procedure symm_ASS_CSA_SLA_CNB_SFB_CK5
    3580             :         use pm_kind, only: CKC => CK5
    3581             : #include "pm_matrixMulAdd@routines.inc.F90"
    3582             :     end procedure
    3583             : #endif
    3584             : 
    3585             : #if CK4_ENABLED
    3586         138 :     module procedure symm_ASS_CSA_SLA_CNB_SFB_CK4
    3587             :         use pm_kind, only: CKC => CK4
    3588             : #include "pm_matrixMulAdd@routines.inc.F90"
    3589             :     end procedure
    3590             : #endif
    3591             : 
    3592             : #if CK3_ENABLED
    3593         144 :     module procedure symm_ASS_CSA_SLA_CNB_SFB_CK3
    3594             :         use pm_kind, only: CKC => CK3
    3595             : #include "pm_matrixMulAdd@routines.inc.F90"
    3596             :     end procedure
    3597             : #endif
    3598             : 
    3599             : #if CK2_ENABLED
    3600         142 :     module procedure symm_ASS_CSA_SLA_CNB_SFB_CK2
    3601             :         use pm_kind, only: CKC => CK2
    3602             : #include "pm_matrixMulAdd@routines.inc.F90"
    3603             :     end procedure
    3604             : #endif
    3605             : 
    3606             : #if CK1_ENABLED
    3607         145 :     module procedure symm_ASS_CSA_SLA_CNB_SFB_CK1
    3608             :         use pm_kind, only: CKC => CK1
    3609             : #include "pm_matrixMulAdd@routines.inc.F90"
    3610             :     end procedure
    3611             : #endif
    3612             : 
    3613             : #undef CK_ENABLED
    3614             : 
    3615             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3616             : 
    3617             : #define RK_ENABLED 1
    3618             : 
    3619             : #if RK5_ENABLED
    3620             :     module procedure symm_ASS_CSA_SLA_CNB_SFB_RK5
    3621             :         use pm_kind, only: RKC => RK5
    3622             : #include "pm_matrixMulAdd@routines.inc.F90"
    3623             :     end procedure
    3624             : #endif
    3625             : 
    3626             : #if RK4_ENABLED
    3627         135 :     module procedure symm_ASS_CSA_SLA_CNB_SFB_RK4
    3628             :         use pm_kind, only: RKC => RK4
    3629             : #include "pm_matrixMulAdd@routines.inc.F90"
    3630             :     end procedure
    3631             : #endif
    3632             : 
    3633             : #if RK3_ENABLED
    3634         154 :     module procedure symm_ASS_CSA_SLA_CNB_SFB_RK3
    3635             :         use pm_kind, only: RKC => RK3
    3636             : #include "pm_matrixMulAdd@routines.inc.F90"
    3637             :     end procedure
    3638             : #endif
    3639             : 
    3640             : #if RK2_ENABLED
    3641         131 :     module procedure symm_ASS_CSA_SLA_CNB_SFB_RK2
    3642             :         use pm_kind, only: RKC => RK2
    3643             : #include "pm_matrixMulAdd@routines.inc.F90"
    3644             :     end procedure
    3645             : #endif
    3646             : 
    3647             : #if RK1_ENABLED
    3648         150 :     module procedure symm_ASS_CSA_SLA_CNB_SFB_RK1
    3649             :         use pm_kind, only: RKC => RK1
    3650             : #include "pm_matrixMulAdd@routines.inc.F90"
    3651             :     end procedure
    3652             : #endif
    3653             : 
    3654             : #undef RK_ENABLED
    3655             : 
    3656             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3657             : 
    3658             : #undef CSA_ENABLED
    3659             : 
    3660             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3661             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3662             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3663             : 
    3664             : #undef SLA_ENABLED
    3665             : 
    3666             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3667             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3668             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3669             : 
    3670             : #undef CNB_ENABLED
    3671             : #undef SFB_ENABLED
    3672             : 
    3673             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3674             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3675             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3676             : 
    3677             : #define CNA_ENABLED 1
    3678             : #define SFA_ENABLED 1
    3679             : 
    3680             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3681             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3682             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3683             : 
    3684             : #define SUB_ENABLED 1
    3685             : 
    3686             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3687             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3688             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3689             : 
    3690             : #define CSB_ENABLED 1
    3691             : 
    3692             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3693             : 
    3694             : #define IK_ENABLED 1
    3695             : 
    3696             : #if IK5_ENABLED
    3697         139 :     module procedure symm_ASS_CNA_SFA_CSB_SUB_IK5
    3698             :         use pm_kind, only: IKC => IK5
    3699             : #include "pm_matrixMulAdd@routines.inc.F90"
    3700             :     end procedure
    3701             : #endif
    3702             : 
    3703             : #if IK4_ENABLED
    3704         140 :     module procedure symm_ASS_CNA_SFA_CSB_SUB_IK4
    3705             :         use pm_kind, only: IKC => IK4
    3706             : #include "pm_matrixMulAdd@routines.inc.F90"
    3707             :     end procedure
    3708             : #endif
    3709             : 
    3710             : #if IK3_ENABLED
    3711         151 :     module procedure symm_ASS_CNA_SFA_CSB_SUB_IK3
    3712             :         use pm_kind, only: IKC => IK3
    3713             : #include "pm_matrixMulAdd@routines.inc.F90"
    3714             :     end procedure
    3715             : #endif
    3716             : 
    3717             : #if IK2_ENABLED
    3718         126 :     module procedure symm_ASS_CNA_SFA_CSB_SUB_IK2
    3719             :         use pm_kind, only: IKC => IK2
    3720             : #include "pm_matrixMulAdd@routines.inc.F90"
    3721             :     end procedure
    3722             : #endif
    3723             : 
    3724             : #if IK1_ENABLED
    3725         152 :     module procedure symm_ASS_CNA_SFA_CSB_SUB_IK1
    3726             :         use pm_kind, only: IKC => IK1
    3727             : #include "pm_matrixMulAdd@routines.inc.F90"
    3728             :     end procedure
    3729             : #endif
    3730             : 
    3731             : #undef IK_ENABLED
    3732             : 
    3733             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3734             : 
    3735             : #define CK_ENABLED 1
    3736             : 
    3737             : #if CK5_ENABLED
    3738             :     module procedure symm_ASS_CNA_SFA_CSB_SUB_CK5
    3739             :         use pm_kind, only: CKC => CK5
    3740             : #include "pm_matrixMulAdd@routines.inc.F90"
    3741             :     end procedure
    3742             : #endif
    3743             : 
    3744             : #if CK4_ENABLED
    3745         138 :     module procedure symm_ASS_CNA_SFA_CSB_SUB_CK4
    3746             :         use pm_kind, only: CKC => CK4
    3747             : #include "pm_matrixMulAdd@routines.inc.F90"
    3748             :     end procedure
    3749             : #endif
    3750             : 
    3751             : #if CK3_ENABLED
    3752         144 :     module procedure symm_ASS_CNA_SFA_CSB_SUB_CK3
    3753             :         use pm_kind, only: CKC => CK3
    3754             : #include "pm_matrixMulAdd@routines.inc.F90"
    3755             :     end procedure
    3756             : #endif
    3757             : 
    3758             : #if CK2_ENABLED
    3759         142 :     module procedure symm_ASS_CNA_SFA_CSB_SUB_CK2
    3760             :         use pm_kind, only: CKC => CK2
    3761             : #include "pm_matrixMulAdd@routines.inc.F90"
    3762             :     end procedure
    3763             : #endif
    3764             : 
    3765             : #if CK1_ENABLED
    3766         145 :     module procedure symm_ASS_CNA_SFA_CSB_SUB_CK1
    3767             :         use pm_kind, only: CKC => CK1
    3768             : #include "pm_matrixMulAdd@routines.inc.F90"
    3769             :     end procedure
    3770             : #endif
    3771             : 
    3772             : #undef CK_ENABLED
    3773             : 
    3774             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3775             : 
    3776             : #define RK_ENABLED 1
    3777             : 
    3778             : #if RK5_ENABLED
    3779             :     module procedure symm_ASS_CNA_SFA_CSB_SUB_RK5
    3780             :         use pm_kind, only: RKC => RK5
    3781             : #include "pm_matrixMulAdd@routines.inc.F90"
    3782             :     end procedure
    3783             : #endif
    3784             : 
    3785             : #if RK4_ENABLED
    3786         135 :     module procedure symm_ASS_CNA_SFA_CSB_SUB_RK4
    3787             :         use pm_kind, only: RKC => RK4
    3788             : #include "pm_matrixMulAdd@routines.inc.F90"
    3789             :     end procedure
    3790             : #endif
    3791             : 
    3792             : #if RK3_ENABLED
    3793         154 :     module procedure symm_ASS_CNA_SFA_CSB_SUB_RK3
    3794             :         use pm_kind, only: RKC => RK3
    3795             : #include "pm_matrixMulAdd@routines.inc.F90"
    3796             :     end procedure
    3797             : #endif
    3798             : 
    3799             : #if RK2_ENABLED
    3800         131 :     module procedure symm_ASS_CNA_SFA_CSB_SUB_RK2
    3801             :         use pm_kind, only: RKC => RK2
    3802             : #include "pm_matrixMulAdd@routines.inc.F90"
    3803             :     end procedure
    3804             : #endif
    3805             : 
    3806             : #if RK1_ENABLED
    3807         150 :     module procedure symm_ASS_CNA_SFA_CSB_SUB_RK1
    3808             :         use pm_kind, only: RKC => RK1
    3809             : #include "pm_matrixMulAdd@routines.inc.F90"
    3810             :     end procedure
    3811             : #endif
    3812             : 
    3813             : #undef RK_ENABLED
    3814             : 
    3815             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3816             : 
    3817             : #undef CSB_ENABLED
    3818             : 
    3819             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3820             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3821             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3822             : 
    3823             : #undef SUB_ENABLED
    3824             : 
    3825             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3826             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3827             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3828             : 
    3829             : #define SLB_ENABLED 1
    3830             : 
    3831             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3832             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3833             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3834             : 
    3835             : #define CSB_ENABLED 1
    3836             : 
    3837             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3838             : 
    3839             : #define IK_ENABLED 1
    3840             : 
    3841             : #if IK5_ENABLED
    3842         139 :     module procedure symm_ASS_CNA_SFA_CSB_SLB_IK5
    3843             :         use pm_kind, only: IKC => IK5
    3844             : #include "pm_matrixMulAdd@routines.inc.F90"
    3845             :     end procedure
    3846             : #endif
    3847             : 
    3848             : #if IK4_ENABLED
    3849         140 :     module procedure symm_ASS_CNA_SFA_CSB_SLB_IK4
    3850             :         use pm_kind, only: IKC => IK4
    3851             : #include "pm_matrixMulAdd@routines.inc.F90"
    3852             :     end procedure
    3853             : #endif
    3854             : 
    3855             : #if IK3_ENABLED
    3856         151 :     module procedure symm_ASS_CNA_SFA_CSB_SLB_IK3
    3857             :         use pm_kind, only: IKC => IK3
    3858             : #include "pm_matrixMulAdd@routines.inc.F90"
    3859             :     end procedure
    3860             : #endif
    3861             : 
    3862             : #if IK2_ENABLED
    3863         126 :     module procedure symm_ASS_CNA_SFA_CSB_SLB_IK2
    3864             :         use pm_kind, only: IKC => IK2
    3865             : #include "pm_matrixMulAdd@routines.inc.F90"
    3866             :     end procedure
    3867             : #endif
    3868             : 
    3869             : #if IK1_ENABLED
    3870         152 :     module procedure symm_ASS_CNA_SFA_CSB_SLB_IK1
    3871             :         use pm_kind, only: IKC => IK1
    3872             : #include "pm_matrixMulAdd@routines.inc.F90"
    3873             :     end procedure
    3874             : #endif
    3875             : 
    3876             : #undef IK_ENABLED
    3877             : 
    3878             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3879             : 
    3880             : #define CK_ENABLED 1
    3881             : 
    3882             : #if CK5_ENABLED
    3883             :     module procedure symm_ASS_CNA_SFA_CSB_SLB_CK5
    3884             :         use pm_kind, only: CKC => CK5
    3885             : #include "pm_matrixMulAdd@routines.inc.F90"
    3886             :     end procedure
    3887             : #endif
    3888             : 
    3889             : #if CK4_ENABLED
    3890         138 :     module procedure symm_ASS_CNA_SFA_CSB_SLB_CK4
    3891             :         use pm_kind, only: CKC => CK4
    3892             : #include "pm_matrixMulAdd@routines.inc.F90"
    3893             :     end procedure
    3894             : #endif
    3895             : 
    3896             : #if CK3_ENABLED
    3897         144 :     module procedure symm_ASS_CNA_SFA_CSB_SLB_CK3
    3898             :         use pm_kind, only: CKC => CK3
    3899             : #include "pm_matrixMulAdd@routines.inc.F90"
    3900             :     end procedure
    3901             : #endif
    3902             : 
    3903             : #if CK2_ENABLED
    3904         142 :     module procedure symm_ASS_CNA_SFA_CSB_SLB_CK2
    3905             :         use pm_kind, only: CKC => CK2
    3906             : #include "pm_matrixMulAdd@routines.inc.F90"
    3907             :     end procedure
    3908             : #endif
    3909             : 
    3910             : #if CK1_ENABLED
    3911         145 :     module procedure symm_ASS_CNA_SFA_CSB_SLB_CK1
    3912             :         use pm_kind, only: CKC => CK1
    3913             : #include "pm_matrixMulAdd@routines.inc.F90"
    3914             :     end procedure
    3915             : #endif
    3916             : 
    3917             : #undef CK_ENABLED
    3918             : 
    3919             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3920             : 
    3921             : #define RK_ENABLED 1
    3922             : 
    3923             : #if RK5_ENABLED
    3924             :     module procedure symm_ASS_CNA_SFA_CSB_SLB_RK5
    3925             :         use pm_kind, only: RKC => RK5
    3926             : #include "pm_matrixMulAdd@routines.inc.F90"
    3927             :     end procedure
    3928             : #endif
    3929             : 
    3930             : #if RK4_ENABLED
    3931         135 :     module procedure symm_ASS_CNA_SFA_CSB_SLB_RK4
    3932             :         use pm_kind, only: RKC => RK4
    3933             : #include "pm_matrixMulAdd@routines.inc.F90"
    3934             :     end procedure
    3935             : #endif
    3936             : 
    3937             : #if RK3_ENABLED
    3938         154 :     module procedure symm_ASS_CNA_SFA_CSB_SLB_RK3
    3939             :         use pm_kind, only: RKC => RK3
    3940             : #include "pm_matrixMulAdd@routines.inc.F90"
    3941             :     end procedure
    3942             : #endif
    3943             : 
    3944             : #if RK2_ENABLED
    3945         131 :     module procedure symm_ASS_CNA_SFA_CSB_SLB_RK2
    3946             :         use pm_kind, only: RKC => RK2
    3947             : #include "pm_matrixMulAdd@routines.inc.F90"
    3948             :     end procedure
    3949             : #endif
    3950             : 
    3951             : #if RK1_ENABLED
    3952         150 :     module procedure symm_ASS_CNA_SFA_CSB_SLB_RK1
    3953             :         use pm_kind, only: RKC => RK1
    3954             : #include "pm_matrixMulAdd@routines.inc.F90"
    3955             :     end procedure
    3956             : #endif
    3957             : 
    3958             : #undef RK_ENABLED
    3959             : 
    3960             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3961             : 
    3962             : #undef CSB_ENABLED
    3963             : 
    3964             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3965             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3966             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3967             : 
    3968             : #undef SLB_ENABLED
    3969             : 
    3970             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3971             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3972             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3973             : 
    3974             : #undef CNA_ENABLED
    3975             : #undef SFA_ENABLED
    3976             : 
    3977             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3978             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3979             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3980             : 
    3981             : #undef ASS_ENABLED
    3982             : 
    3983             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3984             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3985             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3986             : 
    3987             : #define EXP_ENABLED 1
    3988             : 
    3989             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3990             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3991             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3992             : 
    3993             : #define CNB_ENABLED 1
    3994             : #define SFB_ENABLED 1
    3995             : 
    3996             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3997             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3998             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3999             : 
    4000             : #define SUA_ENABLED 1
    4001             : 
    4002             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4003             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4004             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4005             : 
    4006             : #define CSA_ENABLED 1
    4007             : 
    4008             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4009             : 
    4010             : #define IK_ENABLED 1
    4011             : 
    4012             : #if IK5_ENABLED
    4013         100 :     module procedure symm_EXP_CSA_SUA_CNB_SFB_IK5
    4014             :         use pm_kind, only: IKC => IK5
    4015             : #include "pm_matrixMulAdd@routines.inc.F90"
    4016             :     end procedure
    4017             : #endif
    4018             : 
    4019             : #if IK4_ENABLED
    4020         100 :     module procedure symm_EXP_CSA_SUA_CNB_SFB_IK4
    4021             :         use pm_kind, only: IKC => IK4
    4022             : #include "pm_matrixMulAdd@routines.inc.F90"
    4023             :     end procedure
    4024             : #endif
    4025             : 
    4026             : #if IK3_ENABLED
    4027         100 :     module procedure symm_EXP_CSA_SUA_CNB_SFB_IK3
    4028             :         use pm_kind, only: IKC => IK3
    4029             : #include "pm_matrixMulAdd@routines.inc.F90"
    4030             :     end procedure
    4031             : #endif
    4032             : 
    4033             : #if IK2_ENABLED
    4034         100 :     module procedure symm_EXP_CSA_SUA_CNB_SFB_IK2
    4035             :         use pm_kind, only: IKC => IK2
    4036             : #include "pm_matrixMulAdd@routines.inc.F90"
    4037             :     end procedure
    4038             : #endif
    4039             : 
    4040             : #if IK1_ENABLED
    4041         100 :     module procedure symm_EXP_CSA_SUA_CNB_SFB_IK1
    4042             :         use pm_kind, only: IKC => IK1
    4043             : #include "pm_matrixMulAdd@routines.inc.F90"
    4044             :     end procedure
    4045             : #endif
    4046             : 
    4047             : #undef IK_ENABLED
    4048             : 
    4049             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4050             : 
    4051             : #define CK_ENABLED 1
    4052             : 
    4053             : #if CK5_ENABLED
    4054             :     module procedure symm_EXP_CSA_SUA_CNB_SFB_CK5
    4055             :         use pm_kind, only: CKC => CK5
    4056             : #include "pm_matrixMulAdd@routines.inc.F90"
    4057             :     end procedure
    4058             : #endif
    4059             : 
    4060             : #if CK4_ENABLED
    4061         100 :     module procedure symm_EXP_CSA_SUA_CNB_SFB_CK4
    4062             :         use pm_kind, only: CKC => CK4
    4063             : #include "pm_matrixMulAdd@routines.inc.F90"
    4064             :     end procedure
    4065             : #endif
    4066             : 
    4067             : #if CK3_ENABLED
    4068         100 :     module procedure symm_EXP_CSA_SUA_CNB_SFB_CK3
    4069             :         use pm_kind, only: CKC => CK3
    4070             : #include "pm_matrixMulAdd@routines.inc.F90"
    4071             :     end procedure
    4072             : #endif
    4073             : 
    4074             : #if CK2_ENABLED
    4075         100 :     module procedure symm_EXP_CSA_SUA_CNB_SFB_CK2
    4076             :         use pm_kind, only: CKC => CK2
    4077             : #include "pm_matrixMulAdd@routines.inc.F90"
    4078             :     end procedure
    4079             : #endif
    4080             : 
    4081             : #if CK1_ENABLED
    4082         100 :     module procedure symm_EXP_CSA_SUA_CNB_SFB_CK1
    4083             :         use pm_kind, only: CKC => CK1
    4084             : #include "pm_matrixMulAdd@routines.inc.F90"
    4085             :     end procedure
    4086             : #endif
    4087             : 
    4088             : #undef CK_ENABLED
    4089             : 
    4090             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4091             : 
    4092             : #define RK_ENABLED 1
    4093             : 
    4094             : #if RK5_ENABLED
    4095             :     module procedure symm_EXP_CSA_SUA_CNB_SFB_RK5
    4096             :         use pm_kind, only: RKC => RK5
    4097             : #include "pm_matrixMulAdd@routines.inc.F90"
    4098             :     end procedure
    4099             : #endif
    4100             : 
    4101             : #if RK4_ENABLED
    4102         100 :     module procedure symm_EXP_CSA_SUA_CNB_SFB_RK4
    4103             :         use pm_kind, only: RKC => RK4
    4104             : #include "pm_matrixMulAdd@routines.inc.F90"
    4105             :     end procedure
    4106             : #endif
    4107             : 
    4108             : #if RK3_ENABLED
    4109         100 :     module procedure symm_EXP_CSA_SUA_CNB_SFB_RK3
    4110             :         use pm_kind, only: RKC => RK3
    4111             : #include "pm_matrixMulAdd@routines.inc.F90"
    4112             :     end procedure
    4113             : #endif
    4114             : 
    4115             : #if RK2_ENABLED
    4116         100 :     module procedure symm_EXP_CSA_SUA_CNB_SFB_RK2
    4117             :         use pm_kind, only: RKC => RK2
    4118             : #include "pm_matrixMulAdd@routines.inc.F90"
    4119             :     end procedure
    4120             : #endif
    4121             : 
    4122             : #if RK1_ENABLED
    4123         101 :     module procedure symm_EXP_CSA_SUA_CNB_SFB_RK1
    4124             :         use pm_kind, only: RKC => RK1
    4125             : #include "pm_matrixMulAdd@routines.inc.F90"
    4126             :     end procedure
    4127             : #endif
    4128             : 
    4129             : #undef RK_ENABLED
    4130             : 
    4131             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4132             : 
    4133             : #undef CSA_ENABLED
    4134             : 
    4135             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4136             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4137             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4138             : 
    4139             : #undef SUA_ENABLED
    4140             : 
    4141             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4142             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4143             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4144             : 
    4145             : #define SLA_ENABLED 1
    4146             : 
    4147             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4148             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4149             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4150             : 
    4151             : #define CSA_ENABLED 1
    4152             : 
    4153             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4154             : 
    4155             : #define IK_ENABLED 1
    4156             : 
    4157             : #if IK5_ENABLED
    4158         100 :     module procedure symm_EXP_CSA_SLA_CNB_SFB_IK5
    4159             :         use pm_kind, only: IKC => IK5
    4160             : #include "pm_matrixMulAdd@routines.inc.F90"
    4161             :     end procedure
    4162             : #endif
    4163             : 
    4164             : #if IK4_ENABLED
    4165         100 :     module procedure symm_EXP_CSA_SLA_CNB_SFB_IK4
    4166             :         use pm_kind, only: IKC => IK4
    4167             : #include "pm_matrixMulAdd@routines.inc.F90"
    4168             :     end procedure
    4169             : #endif
    4170             : 
    4171             : #if IK3_ENABLED
    4172         100 :     module procedure symm_EXP_CSA_SLA_CNB_SFB_IK3
    4173             :         use pm_kind, only: IKC => IK3
    4174             : #include "pm_matrixMulAdd@routines.inc.F90"
    4175             :     end procedure
    4176             : #endif
    4177             : 
    4178             : #if IK2_ENABLED
    4179         100 :     module procedure symm_EXP_CSA_SLA_CNB_SFB_IK2
    4180             :         use pm_kind, only: IKC => IK2
    4181             : #include "pm_matrixMulAdd@routines.inc.F90"
    4182             :     end procedure
    4183             : #endif
    4184             : 
    4185             : #if IK1_ENABLED
    4186         100 :     module procedure symm_EXP_CSA_SLA_CNB_SFB_IK1
    4187             :         use pm_kind, only: IKC => IK1
    4188             : #include "pm_matrixMulAdd@routines.inc.F90"
    4189             :     end procedure
    4190             : #endif
    4191             : 
    4192             : #undef IK_ENABLED
    4193             : 
    4194             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4195             : 
    4196             : #define CK_ENABLED 1
    4197             : 
    4198             : #if CK5_ENABLED
    4199             :     module procedure symm_EXP_CSA_SLA_CNB_SFB_CK5
    4200             :         use pm_kind, only: CKC => CK5
    4201             : #include "pm_matrixMulAdd@routines.inc.F90"
    4202             :     end procedure
    4203             : #endif
    4204             : 
    4205             : #if CK4_ENABLED
    4206         100 :     module procedure symm_EXP_CSA_SLA_CNB_SFB_CK4
    4207             :         use pm_kind, only: CKC => CK4
    4208             : #include "pm_matrixMulAdd@routines.inc.F90"
    4209             :     end procedure
    4210             : #endif
    4211             : 
    4212             : #if CK3_ENABLED
    4213         100 :     module procedure symm_EXP_CSA_SLA_CNB_SFB_CK3
    4214             :         use pm_kind, only: CKC => CK3
    4215             : #include "pm_matrixMulAdd@routines.inc.F90"
    4216             :     end procedure
    4217             : #endif
    4218             : 
    4219             : #if CK2_ENABLED
    4220         100 :     module procedure symm_EXP_CSA_SLA_CNB_SFB_CK2
    4221             :         use pm_kind, only: CKC => CK2
    4222             : #include "pm_matrixMulAdd@routines.inc.F90"
    4223             :     end procedure
    4224             : #endif
    4225             : 
    4226             : #if CK1_ENABLED
    4227         100 :     module procedure symm_EXP_CSA_SLA_CNB_SFB_CK1
    4228             :         use pm_kind, only: CKC => CK1
    4229             : #include "pm_matrixMulAdd@routines.inc.F90"
    4230             :     end procedure
    4231             : #endif
    4232             : 
    4233             : #undef CK_ENABLED
    4234             : 
    4235             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4236             : 
    4237             : #define RK_ENABLED 1
    4238             : 
    4239             : #if RK5_ENABLED
    4240             :     module procedure symm_EXP_CSA_SLA_CNB_SFB_RK5
    4241             :         use pm_kind, only: RKC => RK5
    4242             : #include "pm_matrixMulAdd@routines.inc.F90"
    4243             :     end procedure
    4244             : #endif
    4245             : 
    4246             : #if RK4_ENABLED
    4247         100 :     module procedure symm_EXP_CSA_SLA_CNB_SFB_RK4
    4248             :         use pm_kind, only: RKC => RK4
    4249             : #include "pm_matrixMulAdd@routines.inc.F90"
    4250             :     end procedure
    4251             : #endif
    4252             : 
    4253             : #if RK3_ENABLED
    4254         100 :     module procedure symm_EXP_CSA_SLA_CNB_SFB_RK3
    4255             :         use pm_kind, only: RKC => RK3
    4256             : #include "pm_matrixMulAdd@routines.inc.F90"
    4257             :     end procedure
    4258             : #endif
    4259             : 
    4260             : #if RK2_ENABLED
    4261         100 :     module procedure symm_EXP_CSA_SLA_CNB_SFB_RK2
    4262             :         use pm_kind, only: RKC => RK2
    4263             : #include "pm_matrixMulAdd@routines.inc.F90"
    4264             :     end procedure
    4265             : #endif
    4266             : 
    4267             : #if RK1_ENABLED
    4268         101 :     module procedure symm_EXP_CSA_SLA_CNB_SFB_RK1
    4269             :         use pm_kind, only: RKC => RK1
    4270             : #include "pm_matrixMulAdd@routines.inc.F90"
    4271             :     end procedure
    4272             : #endif
    4273             : 
    4274             : #undef RK_ENABLED
    4275             : 
    4276             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4277             : 
    4278             : #undef CSA_ENABLED
    4279             : 
    4280             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4281             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4282             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4283             : 
    4284             : #undef SLA_ENABLED
    4285             : 
    4286             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4287             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4288             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4289             : 
    4290             : #undef CNB_ENABLED
    4291             : #undef SFB_ENABLED
    4292             : 
    4293             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4294             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4295             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4296             : 
    4297             : #define CNA_ENABLED 1
    4298             : #define SFA_ENABLED 1
    4299             : 
    4300             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4301             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4302             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4303             : 
    4304             : #define SUB_ENABLED 1
    4305             : 
    4306             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4307             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4308             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4309             : 
    4310             : #define CSB_ENABLED 1
    4311             : 
    4312             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4313             : 
    4314             : #define IK_ENABLED 1
    4315             : 
    4316             : #if IK5_ENABLED
    4317         100 :     module procedure symm_EXP_CNA_SFA_CSB_SUB_IK5
    4318             :         use pm_kind, only: IKC => IK5
    4319             : #include "pm_matrixMulAdd@routines.inc.F90"
    4320             :     end procedure
    4321             : #endif
    4322             : 
    4323             : #if IK4_ENABLED
    4324         100 :     module procedure symm_EXP_CNA_SFA_CSB_SUB_IK4
    4325             :         use pm_kind, only: IKC => IK4
    4326             : #include "pm_matrixMulAdd@routines.inc.F90"
    4327             :     end procedure
    4328             : #endif
    4329             : 
    4330             : #if IK3_ENABLED
    4331         100 :     module procedure symm_EXP_CNA_SFA_CSB_SUB_IK3
    4332             :         use pm_kind, only: IKC => IK3
    4333             : #include "pm_matrixMulAdd@routines.inc.F90"
    4334             :     end procedure
    4335             : #endif
    4336             : 
    4337             : #if IK2_ENABLED
    4338         100 :     module procedure symm_EXP_CNA_SFA_CSB_SUB_IK2
    4339             :         use pm_kind, only: IKC => IK2
    4340             : #include "pm_matrixMulAdd@routines.inc.F90"
    4341             :     end procedure
    4342             : #endif
    4343             : 
    4344             : #if IK1_ENABLED
    4345         100 :     module procedure symm_EXP_CNA_SFA_CSB_SUB_IK1
    4346             :         use pm_kind, only: IKC => IK1
    4347             : #include "pm_matrixMulAdd@routines.inc.F90"
    4348             :     end procedure
    4349             : #endif
    4350             : 
    4351             : #undef IK_ENABLED
    4352             : 
    4353             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4354             : 
    4355             : #define CK_ENABLED 1
    4356             : 
    4357             : #if CK5_ENABLED
    4358             :     module procedure symm_EXP_CNA_SFA_CSB_SUB_CK5
    4359             :         use pm_kind, only: CKC => CK5
    4360             : #include "pm_matrixMulAdd@routines.inc.F90"
    4361             :     end procedure
    4362             : #endif
    4363             : 
    4364             : #if CK4_ENABLED
    4365         100 :     module procedure symm_EXP_CNA_SFA_CSB_SUB_CK4
    4366             :         use pm_kind, only: CKC => CK4
    4367             : #include "pm_matrixMulAdd@routines.inc.F90"
    4368             :     end procedure
    4369             : #endif
    4370             : 
    4371             : #if CK3_ENABLED
    4372         100 :     module procedure symm_EXP_CNA_SFA_CSB_SUB_CK3
    4373             :         use pm_kind, only: CKC => CK3
    4374             : #include "pm_matrixMulAdd@routines.inc.F90"
    4375             :     end procedure
    4376             : #endif
    4377             : 
    4378             : #if CK2_ENABLED
    4379         100 :     module procedure symm_EXP_CNA_SFA_CSB_SUB_CK2
    4380             :         use pm_kind, only: CKC => CK2
    4381             : #include "pm_matrixMulAdd@routines.inc.F90"
    4382             :     end procedure
    4383             : #endif
    4384             : 
    4385             : #if CK1_ENABLED
    4386         101 :     module procedure symm_EXP_CNA_SFA_CSB_SUB_CK1
    4387             :         use pm_kind, only: CKC => CK1
    4388             : #include "pm_matrixMulAdd@routines.inc.F90"
    4389             :     end procedure
    4390             : #endif
    4391             : 
    4392             : #undef CK_ENABLED
    4393             : 
    4394             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4395             : 
    4396             : #define RK_ENABLED 1
    4397             : 
    4398             : #if RK5_ENABLED
    4399             :     module procedure symm_EXP_CNA_SFA_CSB_SUB_RK5
    4400             :         use pm_kind, only: RKC => RK5
    4401             : #include "pm_matrixMulAdd@routines.inc.F90"
    4402             :     end procedure
    4403             : #endif
    4404             : 
    4405             : #if RK4_ENABLED
    4406         100 :     module procedure symm_EXP_CNA_SFA_CSB_SUB_RK4
    4407             :         use pm_kind, only: RKC => RK4
    4408             : #include "pm_matrixMulAdd@routines.inc.F90"
    4409             :     end procedure
    4410             : #endif
    4411             : 
    4412             : #if RK3_ENABLED
    4413         100 :     module procedure symm_EXP_CNA_SFA_CSB_SUB_RK3
    4414             :         use pm_kind, only: RKC => RK3
    4415             : #include "pm_matrixMulAdd@routines.inc.F90"
    4416             :     end procedure
    4417             : #endif
    4418             : 
    4419             : #if RK2_ENABLED
    4420         100 :     module procedure symm_EXP_CNA_SFA_CSB_SUB_RK2
    4421             :         use pm_kind, only: RKC => RK2
    4422             : #include "pm_matrixMulAdd@routines.inc.F90"
    4423             :     end procedure
    4424             : #endif
    4425             : 
    4426             : #if RK1_ENABLED
    4427         101 :     module procedure symm_EXP_CNA_SFA_CSB_SUB_RK1
    4428             :         use pm_kind, only: RKC => RK1
    4429             : #include "pm_matrixMulAdd@routines.inc.F90"
    4430             :     end procedure
    4431             : #endif
    4432             : 
    4433             : #undef RK_ENABLED
    4434             : 
    4435             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4436             : 
    4437             : #undef CSB_ENABLED
    4438             : 
    4439             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4440             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4441             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4442             : 
    4443             : #undef SUB_ENABLED
    4444             : 
    4445             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4446             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4447             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4448             : 
    4449             : #define SLB_ENABLED 1
    4450             : 
    4451             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4452             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4453             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4454             : 
    4455             : #define CSB_ENABLED 1
    4456             : 
    4457             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4458             : 
    4459             : #define IK_ENABLED 1
    4460             : 
    4461             : #if IK5_ENABLED
    4462         100 :     module procedure symm_EXP_CNA_SFA_CSB_SLB_IK5
    4463             :         use pm_kind, only: IKC => IK5
    4464             : #include "pm_matrixMulAdd@routines.inc.F90"
    4465             :     end procedure
    4466             : #endif
    4467             : 
    4468             : #if IK4_ENABLED
    4469         100 :     module procedure symm_EXP_CNA_SFA_CSB_SLB_IK4
    4470             :         use pm_kind, only: IKC => IK4
    4471             : #include "pm_matrixMulAdd@routines.inc.F90"
    4472             :     end procedure
    4473             : #endif
    4474             : 
    4475             : #if IK3_ENABLED
    4476         100 :     module procedure symm_EXP_CNA_SFA_CSB_SLB_IK3
    4477             :         use pm_kind, only: IKC => IK3
    4478             : #include "pm_matrixMulAdd@routines.inc.F90"
    4479             :     end procedure
    4480             : #endif
    4481             : 
    4482             : #if IK2_ENABLED
    4483         100 :     module procedure symm_EXP_CNA_SFA_CSB_SLB_IK2
    4484             :         use pm_kind, only: IKC => IK2
    4485             : #include "pm_matrixMulAdd@routines.inc.F90"
    4486             :     end procedure
    4487             : #endif
    4488             : 
    4489             : #if IK1_ENABLED
    4490         100 :     module procedure symm_EXP_CNA_SFA_CSB_SLB_IK1
    4491             :         use pm_kind, only: IKC => IK1
    4492             : #include "pm_matrixMulAdd@routines.inc.F90"
    4493             :     end procedure
    4494             : #endif
    4495             : 
    4496             : #undef IK_ENABLED
    4497             : 
    4498             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4499             : 
    4500             : #define CK_ENABLED 1
    4501             : 
    4502             : #if CK5_ENABLED
    4503             :     module procedure symm_EXP_CNA_SFA_CSB_SLB_CK5
    4504             :         use pm_kind, only: CKC => CK5
    4505             : #include "pm_matrixMulAdd@routines.inc.F90"
    4506             :     end procedure
    4507             : #endif
    4508             : 
    4509             : #if CK4_ENABLED
    4510         100 :     module procedure symm_EXP_CNA_SFA_CSB_SLB_CK4
    4511             :         use pm_kind, only: CKC => CK4
    4512             : #include "pm_matrixMulAdd@routines.inc.F90"
    4513             :     end procedure
    4514             : #endif
    4515             : 
    4516             : #if CK3_ENABLED
    4517         100 :     module procedure symm_EXP_CNA_SFA_CSB_SLB_CK3
    4518             :         use pm_kind, only: CKC => CK3
    4519             : #include "pm_matrixMulAdd@routines.inc.F90"
    4520             :     end procedure
    4521             : #endif
    4522             : 
    4523             : #if CK2_ENABLED
    4524         100 :     module procedure symm_EXP_CNA_SFA_CSB_SLB_CK2
    4525             :         use pm_kind, only: CKC => CK2
    4526             : #include "pm_matrixMulAdd@routines.inc.F90"
    4527             :     end procedure
    4528             : #endif
    4529             : 
    4530             : #if CK1_ENABLED
    4531         100 :     module procedure symm_EXP_CNA_SFA_CSB_SLB_CK1
    4532             :         use pm_kind, only: CKC => CK1
    4533             : #include "pm_matrixMulAdd@routines.inc.F90"
    4534             :     end procedure
    4535             : #endif
    4536             : 
    4537             : #undef CK_ENABLED
    4538             : 
    4539             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4540             : 
    4541             : #define RK_ENABLED 1
    4542             : 
    4543             : #if RK5_ENABLED
    4544             :     module procedure symm_EXP_CNA_SFA_CSB_SLB_RK5
    4545             :         use pm_kind, only: RKC => RK5
    4546             : #include "pm_matrixMulAdd@routines.inc.F90"
    4547             :     end procedure
    4548             : #endif
    4549             : 
    4550             : #if RK4_ENABLED
    4551         100 :     module procedure symm_EXP_CNA_SFA_CSB_SLB_RK4
    4552             :         use pm_kind, only: RKC => RK4
    4553             : #include "pm_matrixMulAdd@routines.inc.F90"
    4554             :     end procedure
    4555             : #endif
    4556             : 
    4557             : #if RK3_ENABLED
    4558         100 :     module procedure symm_EXP_CNA_SFA_CSB_SLB_RK3
    4559             :         use pm_kind, only: RKC => RK3
    4560             : #include "pm_matrixMulAdd@routines.inc.F90"
    4561             :     end procedure
    4562             : #endif
    4563             : 
    4564             : #if RK2_ENABLED
    4565         100 :     module procedure symm_EXP_CNA_SFA_CSB_SLB_RK2
    4566             :         use pm_kind, only: RKC => RK2
    4567             : #include "pm_matrixMulAdd@routines.inc.F90"
    4568             :     end procedure
    4569             : #endif
    4570             : 
    4571             : #if RK1_ENABLED
    4572         101 :     module procedure symm_EXP_CNA_SFA_CSB_SLB_RK1
    4573             :         use pm_kind, only: RKC => RK1
    4574             : #include "pm_matrixMulAdd@routines.inc.F90"
    4575             :     end procedure
    4576             : #endif
    4577             : 
    4578             : #undef RK_ENABLED
    4579             : 
    4580             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4581             : 
    4582             : #undef CSB_ENABLED
    4583             : 
    4584             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4585             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4586             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4587             : 
    4588             : #undef SLB_ENABLED
    4589             : 
    4590             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4591             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4592             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4593             : 
    4594             : #undef CNA_ENABLED
    4595             : #undef SFA_ENABLED
    4596             : 
    4597             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4598             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4599             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4600             : 
    4601             : #undef EXP_ENABLED
    4602             : 
    4603             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4604             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4605             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4606             : 
    4607             : #undef symm_ENABLED
    4608             : 
    4609             : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4610             : 
    4611             : #define hemm_ENABLED 1
    4612             : 
    4613             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4614             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4615             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4616             : 
    4617             : #define ASS_ENABLED 1
    4618             : 
    4619             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4620             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4621             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4622             : 
    4623             : #define CNB_ENABLED 1
    4624             : #define SFB_ENABLED 1
    4625             : 
    4626             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4627             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4628             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4629             : 
    4630             : #define SUA_ENABLED 1
    4631             : 
    4632             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4633             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4634             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4635             : 
    4636             : #define CHA_ENABLED 1
    4637             : 
    4638             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4639             : 
    4640             : #define IK_ENABLED 1
    4641             : 
    4642             : #if IK5_ENABLED
    4643         139 :     module procedure hemm_ASS_CHA_SUA_CNB_SFB_IK5
    4644             :         use pm_kind, only: IKC => IK5
    4645             : #include "pm_matrixMulAdd@routines.inc.F90"
    4646             :     end procedure
    4647             : #endif
    4648             : 
    4649             : #if IK4_ENABLED
    4650         140 :     module procedure hemm_ASS_CHA_SUA_CNB_SFB_IK4
    4651             :         use pm_kind, only: IKC => IK4
    4652             : #include "pm_matrixMulAdd@routines.inc.F90"
    4653             :     end procedure
    4654             : #endif
    4655             : 
    4656             : #if IK3_ENABLED
    4657         151 :     module procedure hemm_ASS_CHA_SUA_CNB_SFB_IK3
    4658             :         use pm_kind, only: IKC => IK3
    4659             : #include "pm_matrixMulAdd@routines.inc.F90"
    4660             :     end procedure
    4661             : #endif
    4662             : 
    4663             : #if IK2_ENABLED
    4664         126 :     module procedure hemm_ASS_CHA_SUA_CNB_SFB_IK2
    4665             :         use pm_kind, only: IKC => IK2
    4666             : #include "pm_matrixMulAdd@routines.inc.F90"
    4667             :     end procedure
    4668             : #endif
    4669             : 
    4670             : #if IK1_ENABLED
    4671         152 :     module procedure hemm_ASS_CHA_SUA_CNB_SFB_IK1
    4672             :         use pm_kind, only: IKC => IK1
    4673             : #include "pm_matrixMulAdd@routines.inc.F90"
    4674             :     end procedure
    4675             : #endif
    4676             : 
    4677             : #undef IK_ENABLED
    4678             : 
    4679             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4680             : 
    4681             : #define CK_ENABLED 1
    4682             : 
    4683             : #if CK5_ENABLED
    4684             :     module procedure hemm_ASS_CHA_SUA_CNB_SFB_CK5
    4685             :         use pm_kind, only: CKC => CK5
    4686             : #include "pm_matrixMulAdd@routines.inc.F90"
    4687             :     end procedure
    4688             : #endif
    4689             : 
    4690             : #if CK4_ENABLED
    4691         138 :     module procedure hemm_ASS_CHA_SUA_CNB_SFB_CK4
    4692             :         use pm_kind, only: CKC => CK4
    4693             : #include "pm_matrixMulAdd@routines.inc.F90"
    4694             :     end procedure
    4695             : #endif
    4696             : 
    4697             : #if CK3_ENABLED
    4698         144 :     module procedure hemm_ASS_CHA_SUA_CNB_SFB_CK3
    4699             :         use pm_kind, only: CKC => CK3
    4700             : #include "pm_matrixMulAdd@routines.inc.F90"
    4701             :     end procedure
    4702             : #endif
    4703             : 
    4704             : #if CK2_ENABLED
    4705         142 :     module procedure hemm_ASS_CHA_SUA_CNB_SFB_CK2
    4706             :         use pm_kind, only: CKC => CK2
    4707             : #include "pm_matrixMulAdd@routines.inc.F90"
    4708             :     end procedure
    4709             : #endif
    4710             : 
    4711             : #if CK1_ENABLED
    4712         145 :     module procedure hemm_ASS_CHA_SUA_CNB_SFB_CK1
    4713             :         use pm_kind, only: CKC => CK1
    4714             : #include "pm_matrixMulAdd@routines.inc.F90"
    4715             :     end procedure
    4716             : #endif
    4717             : 
    4718             : #undef CK_ENABLED
    4719             : 
    4720             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4721             : 
    4722             : #define RK_ENABLED 1
    4723             : 
    4724             : #if RK5_ENABLED
    4725             :     module procedure hemm_ASS_CHA_SUA_CNB_SFB_RK5
    4726             :         use pm_kind, only: RKC => RK5
    4727             : #include "pm_matrixMulAdd@routines.inc.F90"
    4728             :     end procedure
    4729             : #endif
    4730             : 
    4731             : #if RK4_ENABLED
    4732         135 :     module procedure hemm_ASS_CHA_SUA_CNB_SFB_RK4
    4733             :         use pm_kind, only: RKC => RK4
    4734             : #include "pm_matrixMulAdd@routines.inc.F90"
    4735             :     end procedure
    4736             : #endif
    4737             : 
    4738             : #if RK3_ENABLED
    4739         154 :     module procedure hemm_ASS_CHA_SUA_CNB_SFB_RK3
    4740             :         use pm_kind, only: RKC => RK3
    4741             : #include "pm_matrixMulAdd@routines.inc.F90"
    4742             :     end procedure
    4743             : #endif
    4744             : 
    4745             : #if RK2_ENABLED
    4746         131 :     module procedure hemm_ASS_CHA_SUA_CNB_SFB_RK2
    4747             :         use pm_kind, only: RKC => RK2
    4748             : #include "pm_matrixMulAdd@routines.inc.F90"
    4749             :     end procedure
    4750             : #endif
    4751             : 
    4752             : #if RK1_ENABLED
    4753         149 :     module procedure hemm_ASS_CHA_SUA_CNB_SFB_RK1
    4754             :         use pm_kind, only: RKC => RK1
    4755             : #include "pm_matrixMulAdd@routines.inc.F90"
    4756             :     end procedure
    4757             : #endif
    4758             : 
    4759             : #undef RK_ENABLED
    4760             : 
    4761             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4762             : 
    4763             : #undef CHA_ENABLED
    4764             : 
    4765             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4766             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4767             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4768             : 
    4769             : #undef SUA_ENABLED
    4770             : 
    4771             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4772             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4773             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4774             : 
    4775             : #define SLA_ENABLED 1
    4776             : 
    4777             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4778             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4779             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4780             : 
    4781             : #define CHA_ENABLED 1
    4782             : 
    4783             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4784             : 
    4785             : #define IK_ENABLED 1
    4786             : 
    4787             : #if IK5_ENABLED
    4788         139 :     module procedure hemm_ASS_CHA_SLA_CNB_SFB_IK5
    4789             :         use pm_kind, only: IKC => IK5
    4790             : #include "pm_matrixMulAdd@routines.inc.F90"
    4791             :     end procedure
    4792             : #endif
    4793             : 
    4794             : #if IK4_ENABLED
    4795         140 :     module procedure hemm_ASS_CHA_SLA_CNB_SFB_IK4
    4796             :         use pm_kind, only: IKC => IK4
    4797             : #include "pm_matrixMulAdd@routines.inc.F90"
    4798             :     end procedure
    4799             : #endif
    4800             : 
    4801             : #if IK3_ENABLED
    4802         151 :     module procedure hemm_ASS_CHA_SLA_CNB_SFB_IK3
    4803             :         use pm_kind, only: IKC => IK3
    4804             : #include "pm_matrixMulAdd@routines.inc.F90"
    4805             :     end procedure
    4806             : #endif
    4807             : 
    4808             : #if IK2_ENABLED
    4809         126 :     module procedure hemm_ASS_CHA_SLA_CNB_SFB_IK2
    4810             :         use pm_kind, only: IKC => IK2
    4811             : #include "pm_matrixMulAdd@routines.inc.F90"
    4812             :     end procedure
    4813             : #endif
    4814             : 
    4815             : #if IK1_ENABLED
    4816         152 :     module procedure hemm_ASS_CHA_SLA_CNB_SFB_IK1
    4817             :         use pm_kind, only: IKC => IK1
    4818             : #include "pm_matrixMulAdd@routines.inc.F90"
    4819             :     end procedure
    4820             : #endif
    4821             : 
    4822             : #undef IK_ENABLED
    4823             : 
    4824             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4825             : 
    4826             : #define CK_ENABLED 1
    4827             : 
    4828             : #if CK5_ENABLED
    4829             :     module procedure hemm_ASS_CHA_SLA_CNB_SFB_CK5
    4830             :         use pm_kind, only: CKC => CK5
    4831             : #include "pm_matrixMulAdd@routines.inc.F90"
    4832             :     end procedure
    4833             : #endif
    4834             : 
    4835             : #if CK4_ENABLED
    4836         138 :     module procedure hemm_ASS_CHA_SLA_CNB_SFB_CK4
    4837             :         use pm_kind, only: CKC => CK4
    4838             : #include "pm_matrixMulAdd@routines.inc.F90"
    4839             :     end procedure
    4840             : #endif
    4841             : 
    4842             : #if CK3_ENABLED
    4843         144 :     module procedure hemm_ASS_CHA_SLA_CNB_SFB_CK3
    4844             :         use pm_kind, only: CKC => CK3
    4845             : #include "pm_matrixMulAdd@routines.inc.F90"
    4846             :     end procedure
    4847             : #endif
    4848             : 
    4849             : #if CK2_ENABLED
    4850         142 :     module procedure hemm_ASS_CHA_SLA_CNB_SFB_CK2
    4851             :         use pm_kind, only: CKC => CK2
    4852             : #include "pm_matrixMulAdd@routines.inc.F90"
    4853             :     end procedure
    4854             : #endif
    4855             : 
    4856             : #if CK1_ENABLED
    4857         145 :     module procedure hemm_ASS_CHA_SLA_CNB_SFB_CK1
    4858             :         use pm_kind, only: CKC => CK1
    4859             : #include "pm_matrixMulAdd@routines.inc.F90"
    4860             :     end procedure
    4861             : #endif
    4862             : 
    4863             : #undef CK_ENABLED
    4864             : 
    4865             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4866             : 
    4867             : #define RK_ENABLED 1
    4868             : 
    4869             : #if RK5_ENABLED
    4870             :     module procedure hemm_ASS_CHA_SLA_CNB_SFB_RK5
    4871             :         use pm_kind, only: RKC => RK5
    4872             : #include "pm_matrixMulAdd@routines.inc.F90"
    4873             :     end procedure
    4874             : #endif
    4875             : 
    4876             : #if RK4_ENABLED
    4877         135 :     module procedure hemm_ASS_CHA_SLA_CNB_SFB_RK4
    4878             :         use pm_kind, only: RKC => RK4
    4879             : #include "pm_matrixMulAdd@routines.inc.F90"
    4880             :     end procedure
    4881             : #endif
    4882             : 
    4883             : #if RK3_ENABLED
    4884         154 :     module procedure hemm_ASS_CHA_SLA_CNB_SFB_RK3
    4885             :         use pm_kind, only: RKC => RK3
    4886             : #include "pm_matrixMulAdd@routines.inc.F90"
    4887             :     end procedure
    4888             : #endif
    4889             : 
    4890             : #if RK2_ENABLED
    4891         131 :     module procedure hemm_ASS_CHA_SLA_CNB_SFB_RK2
    4892             :         use pm_kind, only: RKC => RK2
    4893             : #include "pm_matrixMulAdd@routines.inc.F90"
    4894             :     end procedure
    4895             : #endif
    4896             : 
    4897             : #if RK1_ENABLED
    4898         149 :     module procedure hemm_ASS_CHA_SLA_CNB_SFB_RK1
    4899             :         use pm_kind, only: RKC => RK1
    4900             : #include "pm_matrixMulAdd@routines.inc.F90"
    4901             :     end procedure
    4902             : #endif
    4903             : 
    4904             : #undef RK_ENABLED
    4905             : 
    4906             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4907             : 
    4908             : #undef CHA_ENABLED
    4909             : 
    4910             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4911             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4912             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4913             : 
    4914             : #undef SLA_ENABLED
    4915             : 
    4916             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4917             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4918             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4919             : 
    4920             : #undef CNB_ENABLED
    4921             : #undef SFB_ENABLED
    4922             : 
    4923             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4924             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4925             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4926             : 
    4927             : #define CNA_ENABLED 1
    4928             : #define SFA_ENABLED 1
    4929             : 
    4930             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4931             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4932             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4933             : 
    4934             : #define SUB_ENABLED 1
    4935             : 
    4936             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4937             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4938             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4939             : 
    4940             : #define CHB_ENABLED 1
    4941             : 
    4942             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4943             : 
    4944             : #define IK_ENABLED 1
    4945             : 
    4946             : #if IK5_ENABLED
    4947         139 :     module procedure hemm_ASS_CNA_SFA_CHB_SUB_IK5
    4948             :         use pm_kind, only: IKC => IK5
    4949             : #include "pm_matrixMulAdd@routines.inc.F90"
    4950             :     end procedure
    4951             : #endif
    4952             : 
    4953             : #if IK4_ENABLED
    4954         140 :     module procedure hemm_ASS_CNA_SFA_CHB_SUB_IK4
    4955             :         use pm_kind, only: IKC => IK4
    4956             : #include "pm_matrixMulAdd@routines.inc.F90"
    4957             :     end procedure
    4958             : #endif
    4959             : 
    4960             : #if IK3_ENABLED
    4961         151 :     module procedure hemm_ASS_CNA_SFA_CHB_SUB_IK3
    4962             :         use pm_kind, only: IKC => IK3
    4963             : #include "pm_matrixMulAdd@routines.inc.F90"
    4964             :     end procedure
    4965             : #endif
    4966             : 
    4967             : #if IK2_ENABLED
    4968         126 :     module procedure hemm_ASS_CNA_SFA_CHB_SUB_IK2
    4969             :         use pm_kind, only: IKC => IK2
    4970             : #include "pm_matrixMulAdd@routines.inc.F90"
    4971             :     end procedure
    4972             : #endif
    4973             : 
    4974             : #if IK1_ENABLED
    4975         152 :     module procedure hemm_ASS_CNA_SFA_CHB_SUB_IK1
    4976             :         use pm_kind, only: IKC => IK1
    4977             : #include "pm_matrixMulAdd@routines.inc.F90"
    4978             :     end procedure
    4979             : #endif
    4980             : 
    4981             : #undef IK_ENABLED
    4982             : 
    4983             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4984             : 
    4985             : #define CK_ENABLED 1
    4986             : 
    4987             : #if CK5_ENABLED
    4988             :     module procedure hemm_ASS_CNA_SFA_CHB_SUB_CK5
    4989             :         use pm_kind, only: CKC => CK5
    4990             : #include "pm_matrixMulAdd@routines.inc.F90"
    4991             :     end procedure
    4992             : #endif
    4993             : 
    4994             : #if CK4_ENABLED
    4995         138 :     module procedure hemm_ASS_CNA_SFA_CHB_SUB_CK4
    4996             :         use pm_kind, only: CKC => CK4
    4997             : #include "pm_matrixMulAdd@routines.inc.F90"
    4998             :     end procedure
    4999             : #endif
    5000             : 
    5001             : #if CK3_ENABLED
    5002         144 :     module procedure hemm_ASS_CNA_SFA_CHB_SUB_CK3
    5003             :         use pm_kind, only: CKC => CK3
    5004             : #include "pm_matrixMulAdd@routines.inc.F90"
    5005             :     end procedure
    5006             : #endif
    5007             : 
    5008             : #if CK2_ENABLED
    5009         142 :     module procedure hemm_ASS_CNA_SFA_CHB_SUB_CK2
    5010             :         use pm_kind, only: CKC => CK2
    5011             : #include "pm_matrixMulAdd@routines.inc.F90"
    5012             :     end procedure
    5013             : #endif
    5014             : 
    5015             : #if CK1_ENABLED
    5016         145 :     module procedure hemm_ASS_CNA_SFA_CHB_SUB_CK1
    5017             :         use pm_kind, only: CKC => CK1
    5018             : #include "pm_matrixMulAdd@routines.inc.F90"
    5019             :     end procedure
    5020             : #endif
    5021             : 
    5022             : #undef CK_ENABLED
    5023             : 
    5024             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5025             : 
    5026             : #define RK_ENABLED 1
    5027             : 
    5028             : #if RK5_ENABLED
    5029             :     module procedure hemm_ASS_CNA_SFA_CHB_SUB_RK5
    5030             :         use pm_kind, only: RKC => RK5
    5031             : #include "pm_matrixMulAdd@routines.inc.F90"
    5032             :     end procedure
    5033             : #endif
    5034             : 
    5035             : #if RK4_ENABLED
    5036         135 :     module procedure hemm_ASS_CNA_SFA_CHB_SUB_RK4
    5037             :         use pm_kind, only: RKC => RK4
    5038             : #include "pm_matrixMulAdd@routines.inc.F90"
    5039             :     end procedure
    5040             : #endif
    5041             : 
    5042             : #if RK3_ENABLED
    5043         154 :     module procedure hemm_ASS_CNA_SFA_CHB_SUB_RK3
    5044             :         use pm_kind, only: RKC => RK3
    5045             : #include "pm_matrixMulAdd@routines.inc.F90"
    5046             :     end procedure
    5047             : #endif
    5048             : 
    5049             : #if RK2_ENABLED
    5050         131 :     module procedure hemm_ASS_CNA_SFA_CHB_SUB_RK2
    5051             :         use pm_kind, only: RKC => RK2
    5052             : #include "pm_matrixMulAdd@routines.inc.F90"
    5053             :     end procedure
    5054             : #endif
    5055             : 
    5056             : #if RK1_ENABLED
    5057         149 :     module procedure hemm_ASS_CNA_SFA_CHB_SUB_RK1
    5058             :         use pm_kind, only: RKC => RK1
    5059             : #include "pm_matrixMulAdd@routines.inc.F90"
    5060             :     end procedure
    5061             : #endif
    5062             : 
    5063             : #undef RK_ENABLED
    5064             : 
    5065             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5066             : 
    5067             : #undef CHB_ENABLED
    5068             : 
    5069             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5070             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5071             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5072             : 
    5073             : #undef SUB_ENABLED
    5074             : 
    5075             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5076             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5077             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5078             : 
    5079             : #define SLB_ENABLED 1
    5080             : 
    5081             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5082             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5083             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5084             : 
    5085             : #define CHB_ENABLED 1
    5086             : 
    5087             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5088             : 
    5089             : #define IK_ENABLED 1
    5090             : 
    5091             : #if IK5_ENABLED
    5092         139 :     module procedure hemm_ASS_CNA_SFA_CHB_SLB_IK5
    5093             :         use pm_kind, only: IKC => IK5
    5094             : #include "pm_matrixMulAdd@routines.inc.F90"
    5095             :     end procedure
    5096             : #endif
    5097             : 
    5098             : #if IK4_ENABLED
    5099         140 :     module procedure hemm_ASS_CNA_SFA_CHB_SLB_IK4
    5100             :         use pm_kind, only: IKC => IK4
    5101             : #include "pm_matrixMulAdd@routines.inc.F90"
    5102             :     end procedure
    5103             : #endif
    5104             : 
    5105             : #if IK3_ENABLED
    5106         151 :     module procedure hemm_ASS_CNA_SFA_CHB_SLB_IK3
    5107             :         use pm_kind, only: IKC => IK3
    5108             : #include "pm_matrixMulAdd@routines.inc.F90"
    5109             :     end procedure
    5110             : #endif
    5111             : 
    5112             : #if IK2_ENABLED
    5113         126 :     module procedure hemm_ASS_CNA_SFA_CHB_SLB_IK2
    5114             :         use pm_kind, only: IKC => IK2
    5115             : #include "pm_matrixMulAdd@routines.inc.F90"
    5116             :     end procedure
    5117             : #endif
    5118             : 
    5119             : #if IK1_ENABLED
    5120         152 :     module procedure hemm_ASS_CNA_SFA_CHB_SLB_IK1
    5121             :         use pm_kind, only: IKC => IK1
    5122             : #include "pm_matrixMulAdd@routines.inc.F90"
    5123             :     end procedure
    5124             : #endif
    5125             : 
    5126             : #undef IK_ENABLED
    5127             : 
    5128             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5129             : 
    5130             : #define CK_ENABLED 1
    5131             : 
    5132             : #if CK5_ENABLED
    5133             :     module procedure hemm_ASS_CNA_SFA_CHB_SLB_CK5
    5134             :         use pm_kind, only: CKC => CK5
    5135             : #include "pm_matrixMulAdd@routines.inc.F90"
    5136             :     end procedure
    5137             : #endif
    5138             : 
    5139             : #if CK4_ENABLED
    5140         138 :     module procedure hemm_ASS_CNA_SFA_CHB_SLB_CK4
    5141             :         use pm_kind, only: CKC => CK4
    5142             : #include "pm_matrixMulAdd@routines.inc.F90"
    5143             :     end procedure
    5144             : #endif
    5145             : 
    5146             : #if CK3_ENABLED
    5147         144 :     module procedure hemm_ASS_CNA_SFA_CHB_SLB_CK3
    5148             :         use pm_kind, only: CKC => CK3
    5149             : #include "pm_matrixMulAdd@routines.inc.F90"
    5150             :     end procedure
    5151             : #endif
    5152             : 
    5153             : #if CK2_ENABLED
    5154         142 :     module procedure hemm_ASS_CNA_SFA_CHB_SLB_CK2
    5155             :         use pm_kind, only: CKC => CK2
    5156             : #include "pm_matrixMulAdd@routines.inc.F90"
    5157             :     end procedure
    5158             : #endif
    5159             : 
    5160             : #if CK1_ENABLED
    5161         145 :     module procedure hemm_ASS_CNA_SFA_CHB_SLB_CK1
    5162             :         use pm_kind, only: CKC => CK1
    5163             : #include "pm_matrixMulAdd@routines.inc.F90"
    5164             :     end procedure
    5165             : #endif
    5166             : 
    5167             : #undef CK_ENABLED
    5168             : 
    5169             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5170             : 
    5171             : #define RK_ENABLED 1
    5172             : 
    5173             : #if RK5_ENABLED
    5174             :     module procedure hemm_ASS_CNA_SFA_CHB_SLB_RK5
    5175             :         use pm_kind, only: RKC => RK5
    5176             : #include "pm_matrixMulAdd@routines.inc.F90"
    5177             :     end procedure
    5178             : #endif
    5179             : 
    5180             : #if RK4_ENABLED
    5181         135 :     module procedure hemm_ASS_CNA_SFA_CHB_SLB_RK4
    5182             :         use pm_kind, only: RKC => RK4
    5183             : #include "pm_matrixMulAdd@routines.inc.F90"
    5184             :     end procedure
    5185             : #endif
    5186             : 
    5187             : #if RK3_ENABLED
    5188         154 :     module procedure hemm_ASS_CNA_SFA_CHB_SLB_RK3
    5189             :         use pm_kind, only: RKC => RK3
    5190             : #include "pm_matrixMulAdd@routines.inc.F90"
    5191             :     end procedure
    5192             : #endif
    5193             : 
    5194             : #if RK2_ENABLED
    5195         131 :     module procedure hemm_ASS_CNA_SFA_CHB_SLB_RK2
    5196             :         use pm_kind, only: RKC => RK2
    5197             : #include "pm_matrixMulAdd@routines.inc.F90"
    5198             :     end procedure
    5199             : #endif
    5200             : 
    5201             : #if RK1_ENABLED
    5202         149 :     module procedure hemm_ASS_CNA_SFA_CHB_SLB_RK1
    5203             :         use pm_kind, only: RKC => RK1
    5204             : #include "pm_matrixMulAdd@routines.inc.F90"
    5205             :     end procedure
    5206             : #endif
    5207             : 
    5208             : #undef RK_ENABLED
    5209             : 
    5210             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5211             : 
    5212             : #undef CHB_ENABLED
    5213             : 
    5214             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5215             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5216             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5217             : 
    5218             : #undef SLB_ENABLED
    5219             : 
    5220             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5221             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5222             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5223             : 
    5224             : #undef CNA_ENABLED
    5225             : #undef SFA_ENABLED
    5226             : 
    5227             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5228             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5229             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5230             : 
    5231             : #undef ASS_ENABLED
    5232             : 
    5233             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5234             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5235             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5236             : 
    5237             : #define EXP_ENABLED 1
    5238             : 
    5239             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5240             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5241             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5242             : 
    5243             : #define CNB_ENABLED 1
    5244             : #define SFB_ENABLED 1
    5245             : 
    5246             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5247             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5248             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5249             : 
    5250             : #define SUA_ENABLED 1
    5251             : 
    5252             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5253             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5254             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5255             : 
    5256             : #define CHA_ENABLED 1
    5257             : 
    5258             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5259             : 
    5260             : #define IK_ENABLED 1
    5261             : 
    5262             : #if IK5_ENABLED
    5263         100 :     module procedure hemm_EXP_CHA_SUA_CNB_SFB_IK5
    5264             :         use pm_kind, only: IKC => IK5
    5265             : #include "pm_matrixMulAdd@routines.inc.F90"
    5266             :     end procedure
    5267             : #endif
    5268             : 
    5269             : #if IK4_ENABLED
    5270         100 :     module procedure hemm_EXP_CHA_SUA_CNB_SFB_IK4
    5271             :         use pm_kind, only: IKC => IK4
    5272             : #include "pm_matrixMulAdd@routines.inc.F90"
    5273             :     end procedure
    5274             : #endif
    5275             : 
    5276             : #if IK3_ENABLED
    5277         100 :     module procedure hemm_EXP_CHA_SUA_CNB_SFB_IK3
    5278             :         use pm_kind, only: IKC => IK3
    5279             : #include "pm_matrixMulAdd@routines.inc.F90"
    5280             :     end procedure
    5281             : #endif
    5282             : 
    5283             : #if IK2_ENABLED
    5284         100 :     module procedure hemm_EXP_CHA_SUA_CNB_SFB_IK2
    5285             :         use pm_kind, only: IKC => IK2
    5286             : #include "pm_matrixMulAdd@routines.inc.F90"
    5287             :     end procedure
    5288             : #endif
    5289             : 
    5290             : #if IK1_ENABLED
    5291         100 :     module procedure hemm_EXP_CHA_SUA_CNB_SFB_IK1
    5292             :         use pm_kind, only: IKC => IK1
    5293             : #include "pm_matrixMulAdd@routines.inc.F90"
    5294             :     end procedure
    5295             : #endif
    5296             : 
    5297             : #undef IK_ENABLED
    5298             : 
    5299             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5300             : 
    5301             : #define CK_ENABLED 1
    5302             : 
    5303             : #if CK5_ENABLED
    5304             :     module procedure hemm_EXP_CHA_SUA_CNB_SFB_CK5
    5305             :         use pm_kind, only: CKC => CK5
    5306             : #include "pm_matrixMulAdd@routines.inc.F90"
    5307             :     end procedure
    5308             : #endif
    5309             : 
    5310             : #if CK4_ENABLED
    5311         100 :     module procedure hemm_EXP_CHA_SUA_CNB_SFB_CK4
    5312             :         use pm_kind, only: CKC => CK4
    5313             : #include "pm_matrixMulAdd@routines.inc.F90"
    5314             :     end procedure
    5315             : #endif
    5316             : 
    5317             : #if CK3_ENABLED
    5318         100 :     module procedure hemm_EXP_CHA_SUA_CNB_SFB_CK3
    5319             :         use pm_kind, only: CKC => CK3
    5320             : #include "pm_matrixMulAdd@routines.inc.F90"
    5321             :     end procedure
    5322             : #endif
    5323             : 
    5324             : #if CK2_ENABLED
    5325         100 :     module procedure hemm_EXP_CHA_SUA_CNB_SFB_CK2
    5326             :         use pm_kind, only: CKC => CK2
    5327             : #include "pm_matrixMulAdd@routines.inc.F90"
    5328             :     end procedure
    5329             : #endif
    5330             : 
    5331             : #if CK1_ENABLED
    5332         100 :     module procedure hemm_EXP_CHA_SUA_CNB_SFB_CK1
    5333             :         use pm_kind, only: CKC => CK1
    5334             : #include "pm_matrixMulAdd@routines.inc.F90"
    5335             :     end procedure
    5336             : #endif
    5337             : 
    5338             : #undef CK_ENABLED
    5339             : 
    5340             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5341             : 
    5342             : #define RK_ENABLED 1
    5343             : 
    5344             : #if RK5_ENABLED
    5345             :     module procedure hemm_EXP_CHA_SUA_CNB_SFB_RK5
    5346             :         use pm_kind, only: RKC => RK5
    5347             : #include "pm_matrixMulAdd@routines.inc.F90"
    5348             :     end procedure
    5349             : #endif
    5350             : 
    5351             : #if RK4_ENABLED
    5352         100 :     module procedure hemm_EXP_CHA_SUA_CNB_SFB_RK4
    5353             :         use pm_kind, only: RKC => RK4
    5354             : #include "pm_matrixMulAdd@routines.inc.F90"
    5355             :     end procedure
    5356             : #endif
    5357             : 
    5358             : #if RK3_ENABLED
    5359         100 :     module procedure hemm_EXP_CHA_SUA_CNB_SFB_RK3
    5360             :         use pm_kind, only: RKC => RK3
    5361             : #include "pm_matrixMulAdd@routines.inc.F90"
    5362             :     end procedure
    5363             : #endif
    5364             : 
    5365             : #if RK2_ENABLED
    5366         100 :     module procedure hemm_EXP_CHA_SUA_CNB_SFB_RK2
    5367             :         use pm_kind, only: RKC => RK2
    5368             : #include "pm_matrixMulAdd@routines.inc.F90"
    5369             :     end procedure
    5370             : #endif
    5371             : 
    5372             : #if RK1_ENABLED
    5373         100 :     module procedure hemm_EXP_CHA_SUA_CNB_SFB_RK1
    5374             :         use pm_kind, only: RKC => RK1
    5375             : #include "pm_matrixMulAdd@routines.inc.F90"
    5376             :     end procedure
    5377             : #endif
    5378             : 
    5379             : #undef RK_ENABLED
    5380             : 
    5381             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5382             : 
    5383             : #undef CHA_ENABLED
    5384             : 
    5385             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5386             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5387             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5388             : 
    5389             : #undef SUA_ENABLED
    5390             : 
    5391             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5392             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5393             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5394             : 
    5395             : #define SLA_ENABLED 1
    5396             : 
    5397             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5398             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5399             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5400             : 
    5401             : #define CHA_ENABLED 1
    5402             : 
    5403             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5404             : 
    5405             : #define IK_ENABLED 1
    5406             : 
    5407             : #if IK5_ENABLED
    5408         100 :     module procedure hemm_EXP_CHA_SLA_CNB_SFB_IK5
    5409             :         use pm_kind, only: IKC => IK5
    5410             : #include "pm_matrixMulAdd@routines.inc.F90"
    5411             :     end procedure
    5412             : #endif
    5413             : 
    5414             : #if IK4_ENABLED
    5415         100 :     module procedure hemm_EXP_CHA_SLA_CNB_SFB_IK4
    5416             :         use pm_kind, only: IKC => IK4
    5417             : #include "pm_matrixMulAdd@routines.inc.F90"
    5418             :     end procedure
    5419             : #endif
    5420             : 
    5421             : #if IK3_ENABLED
    5422         100 :     module procedure hemm_EXP_CHA_SLA_CNB_SFB_IK3
    5423             :         use pm_kind, only: IKC => IK3
    5424             : #include "pm_matrixMulAdd@routines.inc.F90"
    5425             :     end procedure
    5426             : #endif
    5427             : 
    5428             : #if IK2_ENABLED
    5429         100 :     module procedure hemm_EXP_CHA_SLA_CNB_SFB_IK2
    5430             :         use pm_kind, only: IKC => IK2
    5431             : #include "pm_matrixMulAdd@routines.inc.F90"
    5432             :     end procedure
    5433             : #endif
    5434             : 
    5435             : #if IK1_ENABLED
    5436         100 :     module procedure hemm_EXP_CHA_SLA_CNB_SFB_IK1
    5437             :         use pm_kind, only: IKC => IK1
    5438             : #include "pm_matrixMulAdd@routines.inc.F90"
    5439             :     end procedure
    5440             : #endif
    5441             : 
    5442             : #undef IK_ENABLED
    5443             : 
    5444             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5445             : 
    5446             : #define CK_ENABLED 1
    5447             : 
    5448             : #if CK5_ENABLED
    5449             :     module procedure hemm_EXP_CHA_SLA_CNB_SFB_CK5
    5450             :         use pm_kind, only: CKC => CK5
    5451             : #include "pm_matrixMulAdd@routines.inc.F90"
    5452             :     end procedure
    5453             : #endif
    5454             : 
    5455             : #if CK4_ENABLED
    5456         100 :     module procedure hemm_EXP_CHA_SLA_CNB_SFB_CK4
    5457             :         use pm_kind, only: CKC => CK4
    5458             : #include "pm_matrixMulAdd@routines.inc.F90"
    5459             :     end procedure
    5460             : #endif
    5461             : 
    5462             : #if CK3_ENABLED
    5463         100 :     module procedure hemm_EXP_CHA_SLA_CNB_SFB_CK3
    5464             :         use pm_kind, only: CKC => CK3
    5465             : #include "pm_matrixMulAdd@routines.inc.F90"
    5466             :     end procedure
    5467             : #endif
    5468             : 
    5469             : #if CK2_ENABLED
    5470         100 :     module procedure hemm_EXP_CHA_SLA_CNB_SFB_CK2
    5471             :         use pm_kind, only: CKC => CK2
    5472             : #include "pm_matrixMulAdd@routines.inc.F90"
    5473             :     end procedure
    5474             : #endif
    5475             : 
    5476             : #if CK1_ENABLED
    5477         100 :     module procedure hemm_EXP_CHA_SLA_CNB_SFB_CK1
    5478             :         use pm_kind, only: CKC => CK1
    5479             : #include "pm_matrixMulAdd@routines.inc.F90"
    5480             :     end procedure
    5481             : #endif
    5482             : 
    5483             : #undef CK_ENABLED
    5484             : 
    5485             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5486             : 
    5487             : #define RK_ENABLED 1
    5488             : 
    5489             : #if RK5_ENABLED
    5490             :     module procedure hemm_EXP_CHA_SLA_CNB_SFB_RK5
    5491             :         use pm_kind, only: RKC => RK5
    5492             : #include "pm_matrixMulAdd@routines.inc.F90"
    5493             :     end procedure
    5494             : #endif
    5495             : 
    5496             : #if RK4_ENABLED
    5497         100 :     module procedure hemm_EXP_CHA_SLA_CNB_SFB_RK4
    5498             :         use pm_kind, only: RKC => RK4
    5499             : #include "pm_matrixMulAdd@routines.inc.F90"
    5500             :     end procedure
    5501             : #endif
    5502             : 
    5503             : #if RK3_ENABLED
    5504         100 :     module procedure hemm_EXP_CHA_SLA_CNB_SFB_RK3
    5505             :         use pm_kind, only: RKC => RK3
    5506             : #include "pm_matrixMulAdd@routines.inc.F90"
    5507             :     end procedure
    5508             : #endif
    5509             : 
    5510             : #if RK2_ENABLED
    5511         100 :     module procedure hemm_EXP_CHA_SLA_CNB_SFB_RK2
    5512             :         use pm_kind, only: RKC => RK2
    5513             : #include "pm_matrixMulAdd@routines.inc.F90"
    5514             :     end procedure
    5515             : #endif
    5516             : 
    5517             : #if RK1_ENABLED
    5518         100 :     module procedure hemm_EXP_CHA_SLA_CNB_SFB_RK1
    5519             :         use pm_kind, only: RKC => RK1
    5520             : #include "pm_matrixMulAdd@routines.inc.F90"
    5521             :     end procedure
    5522             : #endif
    5523             : 
    5524             : #undef RK_ENABLED
    5525             : 
    5526             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5527             : 
    5528             : #undef CHA_ENABLED
    5529             : 
    5530             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5531             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5532             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5533             : 
    5534             : #undef SLA_ENABLED
    5535             : 
    5536             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5537             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5538             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5539             : 
    5540             : #undef CNB_ENABLED
    5541             : #undef SFB_ENABLED
    5542             : 
    5543             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5544             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5545             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5546             : 
    5547             : #define CNA_ENABLED 1
    5548             : #define SFA_ENABLED 1
    5549             : 
    5550             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5551             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5552             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5553             : 
    5554             : #define SUB_ENABLED 1
    5555             : 
    5556             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5557             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5558             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5559             : 
    5560             : #define CHB_ENABLED 1
    5561             : 
    5562             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5563             : 
    5564             : #define IK_ENABLED 1
    5565             : 
    5566             : #if IK5_ENABLED
    5567         100 :     module procedure hemm_EXP_CNA_SFA_CHB_SUB_IK5
    5568             :         use pm_kind, only: IKC => IK5
    5569             : #include "pm_matrixMulAdd@routines.inc.F90"
    5570             :     end procedure
    5571             : #endif
    5572             : 
    5573             : #if IK4_ENABLED
    5574         100 :     module procedure hemm_EXP_CNA_SFA_CHB_SUB_IK4
    5575             :         use pm_kind, only: IKC => IK4
    5576             : #include "pm_matrixMulAdd@routines.inc.F90"
    5577             :     end procedure
    5578             : #endif
    5579             : 
    5580             : #if IK3_ENABLED
    5581         100 :     module procedure hemm_EXP_CNA_SFA_CHB_SUB_IK3
    5582             :         use pm_kind, only: IKC => IK3
    5583             : #include "pm_matrixMulAdd@routines.inc.F90"
    5584             :     end procedure
    5585             : #endif
    5586             : 
    5587             : #if IK2_ENABLED
    5588         100 :     module procedure hemm_EXP_CNA_SFA_CHB_SUB_IK2
    5589             :         use pm_kind, only: IKC => IK2
    5590             : #include "pm_matrixMulAdd@routines.inc.F90"
    5591             :     end procedure
    5592             : #endif
    5593             : 
    5594             : #if IK1_ENABLED
    5595         100 :     module procedure hemm_EXP_CNA_SFA_CHB_SUB_IK1
    5596             :         use pm_kind, only: IKC => IK1
    5597             : #include "pm_matrixMulAdd@routines.inc.F90"
    5598             :     end procedure
    5599             : #endif
    5600             : 
    5601             : #undef IK_ENABLED
    5602             : 
    5603             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5604             : 
    5605             : #define CK_ENABLED 1
    5606             : 
    5607             : #if CK5_ENABLED
    5608             :     module procedure hemm_EXP_CNA_SFA_CHB_SUB_CK5
    5609             :         use pm_kind, only: CKC => CK5
    5610             : #include "pm_matrixMulAdd@routines.inc.F90"
    5611             :     end procedure
    5612             : #endif
    5613             : 
    5614             : #if CK4_ENABLED
    5615         100 :     module procedure hemm_EXP_CNA_SFA_CHB_SUB_CK4
    5616             :         use pm_kind, only: CKC => CK4
    5617             : #include "pm_matrixMulAdd@routines.inc.F90"
    5618             :     end procedure
    5619             : #endif
    5620             : 
    5621             : #if CK3_ENABLED
    5622         100 :     module procedure hemm_EXP_CNA_SFA_CHB_SUB_CK3
    5623             :         use pm_kind, only: CKC => CK3
    5624             : #include "pm_matrixMulAdd@routines.inc.F90"
    5625             :     end procedure
    5626             : #endif
    5627             : 
    5628             : #if CK2_ENABLED
    5629         100 :     module procedure hemm_EXP_CNA_SFA_CHB_SUB_CK2
    5630             :         use pm_kind, only: CKC => CK2
    5631             : #include "pm_matrixMulAdd@routines.inc.F90"
    5632             :     end procedure
    5633             : #endif
    5634             : 
    5635             : #if CK1_ENABLED
    5636         100 :     module procedure hemm_EXP_CNA_SFA_CHB_SUB_CK1
    5637             :         use pm_kind, only: CKC => CK1
    5638             : #include "pm_matrixMulAdd@routines.inc.F90"
    5639             :     end procedure
    5640             : #endif
    5641             : 
    5642             : #undef CK_ENABLED
    5643             : 
    5644             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5645             : 
    5646             : #define RK_ENABLED 1
    5647             : 
    5648             : #if RK5_ENABLED
    5649             :     module procedure hemm_EXP_CNA_SFA_CHB_SUB_RK5
    5650             :         use pm_kind, only: RKC => RK5
    5651             : #include "pm_matrixMulAdd@routines.inc.F90"
    5652             :     end procedure
    5653             : #endif
    5654             : 
    5655             : #if RK4_ENABLED
    5656         100 :     module procedure hemm_EXP_CNA_SFA_CHB_SUB_RK4
    5657             :         use pm_kind, only: RKC => RK4
    5658             : #include "pm_matrixMulAdd@routines.inc.F90"
    5659             :     end procedure
    5660             : #endif
    5661             : 
    5662             : #if RK3_ENABLED
    5663         100 :     module procedure hemm_EXP_CNA_SFA_CHB_SUB_RK3
    5664             :         use pm_kind, only: RKC => RK3
    5665             : #include "pm_matrixMulAdd@routines.inc.F90"
    5666             :     end procedure
    5667             : #endif
    5668             : 
    5669             : #if RK2_ENABLED
    5670         100 :     module procedure hemm_EXP_CNA_SFA_CHB_SUB_RK2
    5671             :         use pm_kind, only: RKC => RK2
    5672             : #include "pm_matrixMulAdd@routines.inc.F90"
    5673             :     end procedure
    5674             : #endif
    5675             : 
    5676             : #if RK1_ENABLED
    5677         100 :     module procedure hemm_EXP_CNA_SFA_CHB_SUB_RK1
    5678             :         use pm_kind, only: RKC => RK1
    5679             : #include "pm_matrixMulAdd@routines.inc.F90"
    5680             :     end procedure
    5681             : #endif
    5682             : 
    5683             : #undef RK_ENABLED
    5684             : 
    5685             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5686             : 
    5687             : #undef CHB_ENABLED
    5688             : 
    5689             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5690             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5691             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5692             : 
    5693             : #undef SUB_ENABLED
    5694             : 
    5695             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5696             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5697             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5698             : 
    5699             : #define SLB_ENABLED 1
    5700             : 
    5701             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5702             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5703             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5704             : 
    5705             : #define CHB_ENABLED 1
    5706             : 
    5707             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5708             : 
    5709             : #define IK_ENABLED 1
    5710             : 
    5711             : #if IK5_ENABLED
    5712         100 :     module procedure hemm_EXP_CNA_SFA_CHB_SLB_IK5
    5713             :         use pm_kind, only: IKC => IK5
    5714             : #include "pm_matrixMulAdd@routines.inc.F90"
    5715             :     end procedure
    5716             : #endif
    5717             : 
    5718             : #if IK4_ENABLED
    5719         100 :     module procedure hemm_EXP_CNA_SFA_CHB_SLB_IK4
    5720             :         use pm_kind, only: IKC => IK4
    5721             : #include "pm_matrixMulAdd@routines.inc.F90"
    5722             :     end procedure
    5723             : #endif
    5724             : 
    5725             : #if IK3_ENABLED
    5726         100 :     module procedure hemm_EXP_CNA_SFA_CHB_SLB_IK3
    5727             :         use pm_kind, only: IKC => IK3
    5728             : #include "pm_matrixMulAdd@routines.inc.F90"
    5729             :     end procedure
    5730             : #endif
    5731             : 
    5732             : #if IK2_ENABLED
    5733         100 :     module procedure hemm_EXP_CNA_SFA_CHB_SLB_IK2
    5734             :         use pm_kind, only: IKC => IK2
    5735             : #include "pm_matrixMulAdd@routines.inc.F90"
    5736             :     end procedure
    5737             : #endif
    5738             : 
    5739             : #if IK1_ENABLED
    5740         100 :     module procedure hemm_EXP_CNA_SFA_CHB_SLB_IK1
    5741             :         use pm_kind, only: IKC => IK1
    5742             : #include "pm_matrixMulAdd@routines.inc.F90"
    5743             :     end procedure
    5744             : #endif
    5745             : 
    5746             : #undef IK_ENABLED
    5747             : 
    5748             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5749             : 
    5750             : #define CK_ENABLED 1
    5751             : 
    5752             : #if CK5_ENABLED
    5753             :     module procedure hemm_EXP_CNA_SFA_CHB_SLB_CK5
    5754             :         use pm_kind, only: CKC => CK5
    5755             : #include "pm_matrixMulAdd@routines.inc.F90"
    5756             :     end procedure
    5757             : #endif
    5758             : 
    5759             : #if CK4_ENABLED
    5760         100 :     module procedure hemm_EXP_CNA_SFA_CHB_SLB_CK4
    5761             :         use pm_kind, only: CKC => CK4
    5762             : #include "pm_matrixMulAdd@routines.inc.F90"
    5763             :     end procedure
    5764             : #endif
    5765             : 
    5766             : #if CK3_ENABLED
    5767         100 :     module procedure hemm_EXP_CNA_SFA_CHB_SLB_CK3
    5768             :         use pm_kind, only: CKC => CK3
    5769             : #include "pm_matrixMulAdd@routines.inc.F90"
    5770             :     end procedure
    5771             : #endif
    5772             : 
    5773             : #if CK2_ENABLED
    5774         100 :     module procedure hemm_EXP_CNA_SFA_CHB_SLB_CK2
    5775             :         use pm_kind, only: CKC => CK2
    5776             : #include "pm_matrixMulAdd@routines.inc.F90"
    5777             :     end procedure
    5778             : #endif
    5779             : 
    5780             : #if CK1_ENABLED
    5781         101 :     module procedure hemm_EXP_CNA_SFA_CHB_SLB_CK1
    5782             :         use pm_kind, only: CKC => CK1
    5783             : #include "pm_matrixMulAdd@routines.inc.F90"
    5784             :     end procedure
    5785             : #endif
    5786             : 
    5787             : #undef CK_ENABLED
    5788             : 
    5789             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5790             : 
    5791             : #define RK_ENABLED 1
    5792             : 
    5793             : #if RK5_ENABLED
    5794             :     module procedure hemm_EXP_CNA_SFA_CHB_SLB_RK5
    5795             :         use pm_kind, only: RKC => RK5
    5796             : #include "pm_matrixMulAdd@routines.inc.F90"
    5797             :     end procedure
    5798             : #endif
    5799             : 
    5800             : #if RK4_ENABLED
    5801         100 :     module procedure hemm_EXP_CNA_SFA_CHB_SLB_RK4
    5802             :         use pm_kind, only: RKC => RK4
    5803             : #include "pm_matrixMulAdd@routines.inc.F90"
    5804             :     end procedure
    5805             : #endif
    5806             : 
    5807             : #if RK3_ENABLED
    5808         100 :     module procedure hemm_EXP_CNA_SFA_CHB_SLB_RK3
    5809             :         use pm_kind, only: RKC => RK3
    5810             : #include "pm_matrixMulAdd@routines.inc.F90"
    5811             :     end procedure
    5812             : #endif
    5813             : 
    5814             : #if RK2_ENABLED
    5815         100 :     module procedure hemm_EXP_CNA_SFA_CHB_SLB_RK2
    5816             :         use pm_kind, only: RKC => RK2
    5817             : #include "pm_matrixMulAdd@routines.inc.F90"
    5818             :     end procedure
    5819             : #endif
    5820             : 
    5821             : #if RK1_ENABLED
    5822         100 :     module procedure hemm_EXP_CNA_SFA_CHB_SLB_RK1
    5823             :         use pm_kind, only: RKC => RK1
    5824             : #include "pm_matrixMulAdd@routines.inc.F90"
    5825             :     end procedure
    5826             : #endif
    5827             : 
    5828             : #undef RK_ENABLED
    5829             : 
    5830             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5831             : 
    5832             : #undef CHB_ENABLED
    5833             : 
    5834             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5835             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5836             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5837             : 
    5838             : #undef SLB_ENABLED
    5839             : 
    5840             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5841             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5842             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5843             : 
    5844             : #undef CNA_ENABLED
    5845             : #undef SFA_ENABLED
    5846             : 
    5847             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5848             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5849             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5850             : 
    5851             : #undef EXP_ENABLED
    5852             : 
    5853             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5854             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5855             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5856             : 
    5857             : #undef hemm_ENABLED
    5858             : 
    5859             : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5860             : 
    5861             : #define gemm_ENABLED 1
    5862             : 
    5863             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5864             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5865             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5866             : 
    5867             : #define SFA_ENABLED 1
    5868             : #define SFB_ENABLED 1
    5869             : 
    5870             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5871             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5872             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5873             : 
    5874             : #define ASS_ENABLED 1
    5875             : 
    5876             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5877             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5878             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5879             : 
    5880             : #define TNB_ENABLED 1
    5881             : 
    5882             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5883             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5884             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5885             : 
    5886             : #define TNA_ENABLED 1
    5887             : 
    5888             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5889             : 
    5890             : #define IK_ENABLED 1
    5891             : 
    5892             : #if IK5_ENABLED
    5893         130 :     module procedure gemm_ASS_SFA_SFB_TNA_TNB_IK5
    5894             :         use pm_kind, only: IKC => IK5
    5895             : #include "pm_matrixMulAdd@routines.inc.F90"
    5896             :     end procedure
    5897             : #endif
    5898             : 
    5899             : #if IK4_ENABLED
    5900         139 :     module procedure gemm_ASS_SFA_SFB_TNA_TNB_IK4
    5901             :         use pm_kind, only: IKC => IK4
    5902             : #include "pm_matrixMulAdd@routines.inc.F90"
    5903             :     end procedure
    5904             : #endif
    5905             : 
    5906             : #if IK3_ENABLED
    5907         134 :     module procedure gemm_ASS_SFA_SFB_TNA_TNB_IK3
    5908             :         use pm_kind, only: IKC => IK3
    5909             : #include "pm_matrixMulAdd@routines.inc.F90"
    5910             :     end procedure
    5911             : #endif
    5912             : 
    5913             : #if IK2_ENABLED
    5914         117 :     module procedure gemm_ASS_SFA_SFB_TNA_TNB_IK2
    5915             :         use pm_kind, only: IKC => IK2
    5916             : #include "pm_matrixMulAdd@routines.inc.F90"
    5917             :     end procedure
    5918             : #endif
    5919             : 
    5920             : #if IK1_ENABLED
    5921         151 :     module procedure gemm_ASS_SFA_SFB_TNA_TNB_IK1
    5922             :         use pm_kind, only: IKC => IK1
    5923             : #include "pm_matrixMulAdd@routines.inc.F90"
    5924             :     end procedure
    5925             : #endif
    5926             : 
    5927             : #undef IK_ENABLED
    5928             : 
    5929             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5930             : 
    5931             : #define CK_ENABLED 1
    5932             : 
    5933             : #if CK5_ENABLED
    5934             :     module procedure gemm_ASS_SFA_SFB_TNA_TNB_CK5
    5935             :         use pm_kind, only: CKC => CK5
    5936             : #include "pm_matrixMulAdd@routines.inc.F90"
    5937             :     end procedure
    5938             : #endif
    5939             : 
    5940             : #if CK4_ENABLED
    5941         139 :     module procedure gemm_ASS_SFA_SFB_TNA_TNB_CK4
    5942             :         use pm_kind, only: CKC => CK4
    5943             : #include "pm_matrixMulAdd@routines.inc.F90"
    5944             :     end procedure
    5945             : #endif
    5946             : 
    5947             : #if CK3_ENABLED
    5948         148 :     module procedure gemm_ASS_SFA_SFB_TNA_TNB_CK3
    5949             :         use pm_kind, only: CKC => CK3
    5950             : #include "pm_matrixMulAdd@routines.inc.F90"
    5951             :     end procedure
    5952             : #endif
    5953             : 
    5954             : #if CK2_ENABLED
    5955         141 :     module procedure gemm_ASS_SFA_SFB_TNA_TNB_CK2
    5956             :         use pm_kind, only: CKC => CK2
    5957             : #define DISPATCH_ENABLED 1
    5958             : #include "pm_matrixMulAdd@routines.inc.F90"
    5959             : #undef  DISPATCH_ENABLED
    5960             :     end procedure
    5961             : #endif
    5962             : 
    5963             : #if CK1_ENABLED
    5964         153 :     module procedure gemm_ASS_SFA_SFB_TNA_TNB_CK1
    5965             :         use pm_kind, only: CKC => CK1
    5966             : #define DISPATCH_ENABLED 1
    5967             : #include "pm_matrixMulAdd@routines.inc.F90"
    5968             : #undef  DISPATCH_ENABLED
    5969             :     end procedure
    5970             : #endif
    5971             : 
    5972             : #undef CK_ENABLED
    5973             : 
    5974             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5975             : 
    5976             : #define RK_ENABLED 1
    5977             : 
    5978             : #if RK5_ENABLED
    5979             :     module procedure gemm_ASS_SFA_SFB_TNA_TNB_RK5
    5980             :         use pm_kind, only: RKC => RK5
    5981             : #include "pm_matrixMulAdd@routines.inc.F90"
    5982             :     end procedure
    5983             : #endif
    5984             : 
    5985             : #if RK4_ENABLED
    5986         128 :     module procedure gemm_ASS_SFA_SFB_TNA_TNB_RK4
    5987             :         use pm_kind, only: RKC => RK4
    5988             : #include "pm_matrixMulAdd@routines.inc.F90"
    5989             :     end procedure
    5990             : #endif
    5991             : 
    5992             : #if RK3_ENABLED
    5993         143 :     module procedure gemm_ASS_SFA_SFB_TNA_TNB_RK3
    5994             :         use pm_kind, only: RKC => RK3
    5995             : #include "pm_matrixMulAdd@routines.inc.F90"
    5996             :     end procedure
    5997             : #endif
    5998             : 
    5999             : #if RK2_ENABLED
    6000         128 :     module procedure gemm_ASS_SFA_SFB_TNA_TNB_RK2
    6001             :         use pm_kind, only: RKC => RK2
    6002             : #define DISPATCH_ENABLED 1
    6003             : #include "pm_matrixMulAdd@routines.inc.F90"
    6004             : #undef  DISPATCH_ENABLED
    6005             :     end procedure
    6006             : #endif
    6007             : 
    6008             : #if RK1_ENABLED
    6009         145 :     module procedure gemm_ASS_SFA_SFB_TNA_TNB_RK1
    6010             :         use pm_kind, only: RKC => RK1
    6011             : #define DISPATCH_ENABLED 1
    6012             : #include "pm_matrixMulAdd@routines.inc.F90"
    6013             : #undef  DISPATCH_ENABLED
    6014             :     end procedure
    6015             : #endif
    6016             : 
    6017             : #undef RK_ENABLED
    6018             : 
    6019             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    6020             : 
    6021             : #undef TNA_ENABLED
    6022             : #undef TNB_ENABLED
    6023             : 
    6024             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    6025             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    6026             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    6027             : 
    6028             : #define TSA_ENABLED 1
    6029             : #define TNB_ENABLED 1
    6030             : 
    6031             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    6032             : 
    6033             : #define IK_ENABLED 1
    6034             : 
    6035             : #if IK5_ENABLED
    6036         130 :     module procedure gemm_ASS_SFA_SFB_TSA_TNB_IK5
    6037             :         use pm_kind, only: IKC => IK5
    6038             : #include "pm_matrixMulAdd@routines.inc.F90"
    6039             :     end procedure
    6040             : #endif
    6041             : 
    6042             : #if IK4_ENABLED
    6043         139 :     module procedure gemm_ASS_SFA_SFB_TSA_TNB_IK4
    6044             :         use pm_kind, only: IKC => IK4
    6045             : #include "pm_matrixMulAdd@routines.inc.F90"
    6046             :     end procedure
    6047             : #endif
    6048             : 
    6049             : #if IK3_ENABLED
    6050         134 :     module procedure gemm_ASS_SFA_SFB_TSA_TNB_IK3
    6051             :         use pm_kind, only: IKC => IK3
    6052             : #include "pm_matrixMulAdd@routines.inc.F90"
    6053             :     end procedure
    6054             : #endif
    6055             : 
    6056             : #if IK2_ENABLED
    6057         117 :     module procedure gemm_ASS_SFA_SFB_TSA_TNB_IK2
    6058             :         use pm_kind, only: IKC => IK2
    6059             : #include "pm_matrixMulAdd@routines.inc.F90"
    6060             :     end procedure
    6061             : #endif
    6062             : 
    6063             : #if IK1_ENABLED
    6064         151 :     module procedure gemm_ASS_SFA_SFB_TSA_TNB_IK1
    6065             :         use pm_kind, only: IKC => IK1
    6066             : #include "pm_matrixMulAdd@routines.inc.F90"
    6067             :     end procedure
    6068             : #endif
    6069             : 
    6070             : #undef IK_ENABLED
    6071             : 
    6072             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    6073             : 
    6074             : #define CK_ENABLED 1
    6075             : 
    6076             : #if CK5_ENABLED
    6077             :     module procedure gemm_ASS_SFA_SFB_TSA_TNB_CK5
    6078             :         use pm_kind, only: CKC => CK5
    6079             : #include "pm_matrixMulAdd@routines.inc.F90"
    6080             :     end procedure
    6081             : #endif
    6082             : 
    6083             : #if CK4_ENABLED
    6084         139 :     module procedure gemm_ASS_SFA_SFB_TSA_TNB_CK4
    6085             :         use pm_kind, only: CKC => CK4
    6086             : #include "pm_matrixMulAdd@routines.inc.F90"
    6087             :     end procedure
    6088             : #endif
    6089             : 
    6090             : #if CK3_ENABLED
    6091         148 :     module procedure gemm_ASS_SFA_SFB_TSA_TNB_CK3
    6092             :         use pm_kind, only: CKC => CK3
    6093             : #include "pm_matrixMulAdd@routines.inc.F90"
    6094             :     end procedure
    6095             : #endif
    6096             : 
    6097             : #if CK2_ENABLED
    6098         141 :     module procedure gemm_ASS_SFA_SFB_TSA_TNB_CK2
    6099             :         use pm_kind, only: CKC => CK2
    6100             : #define DISPATCH_ENABLED 1
    6101             : #include "pm_matrixMulAdd@routines.inc.F90"
    6102             : #undef  DISPATCH_ENABLED
    6103             :     end procedure
    6104             : #endif
    6105             : 
    6106             : #if CK1_ENABLED
    6107         152 :     module procedure gemm_ASS_SFA_SFB_TSA_TNB_CK1
    6108             :         use pm_kind, only: CKC => CK1
    6109             : #define DISPATCH_ENABLED 1
    6110             : #include "pm_matrixMulAdd@routines.inc.F90"
    6111             : #undef  DISPATCH_ENABLED
    6112             :     end procedure
    6113             : #endif
    6114             : 
    6115             : #undef CK_ENABLED
    6116             : 
    6117             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    6118             : 
    6119             : #define RK_ENABLED 1
    6120             : 
    6121             : #if RK5_ENABLED
    6122             :     module procedure gemm_ASS_SFA_SFB_TSA_TNB_RK5
    6123             :         use pm_kind, only: RKC => RK5
    6124             : #include "pm_matrixMulAdd@routines.inc.F90"
    6125             :     end procedure
    6126             : #endif
    6127             : 
    6128             : #if RK4_ENABLED
    6129         128 :     module procedure gemm_ASS_SFA_SFB_TSA_TNB_RK4
    6130             :         use pm_kind, only: RKC => RK4
    6131             : #include "pm_matrixMulAdd@routines.inc.F90"
    6132             :     end procedure
    6133             : #endif
    6134             : 
    6135             : #if RK3_ENABLED
    6136         143 :     module procedure gemm_ASS_SFA_SFB_TSA_TNB_RK3
    6137             :         use pm_kind, only: RKC => RK3
    6138             : #include "pm_matrixMulAdd@routines.inc.F90"
    6139             :     end procedure
    6140             : #endif
    6141             : 
    6142             : #if RK2_ENABLED
    6143         128 :     module procedure gemm_ASS_SFA_SFB_TSA_TNB_RK2
    6144             :         use pm_kind, only: RKC => RK2
    6145             : #define DISPATCH_ENABLED 1
    6146             : #include "pm_matrixMulAdd@routines.inc.F90"
    6147             : #undef  DISPATCH_ENABLED
    6148             :     end procedure
    6149             : #endif
    6150             : 
    6151             : #if RK1_ENABLED
    6152         145 :     module procedure gemm_ASS_SFA_SFB_TSA_TNB_RK1
    6153             :         use pm_kind, only: RKC => RK1
    6154             : #define DISPATCH_ENABLED 1
    6155             : #include "pm_matrixMulAdd@routines.inc.F90"
    6156             : #undef  DISPATCH_ENABLED
    6157             :     end procedure
    6158             : #endif
    6159             : 
    6160             : #undef RK_ENABLED
    6161             : 
    6162             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    6163             : 
    6164             : #undef TSA_ENABLED
    6165             : #undef TNB_ENABLED
    6166             : 
    6167             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    6168             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    6169             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    6170             : 
    6171             : #define THA_ENABLED 1
    6172             : #define TNB_ENABLED 1
    6173             : 
    6174             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    6175             : 
    6176             : #define IK_ENABLED 1
    6177             : 
    6178             : #if IK5_ENABLED
    6179         130 :     module procedure gemm_ASS_SFA_SFB_THA_TNB_IK5
    6180             :         use pm_kind, only: IKC => IK5
    6181             : #include "pm_matrixMulAdd@routines.inc.F90"
    6182             :     end procedure
    6183             : #endif
    6184             : 
    6185             : #if IK4_ENABLED
    6186         139 :     module procedure gemm_ASS_SFA_SFB_THA_TNB_IK4
    6187             :         use pm_kind, only: IKC => IK4
    6188             : #include "pm_matrixMulAdd@routines.inc.F90"
    6189             :     end procedure
    6190             : #endif
    6191             : 
    6192             : #if IK3_ENABLED
    6193         133 :     module procedure gemm_ASS_SFA_SFB_THA_TNB_IK3
    6194             :         use pm_kind, only: IKC => IK3
    6195             : #include "pm_matrixMulAdd@routines.inc.F90"
    6196             :     end procedure
    6197             : #endif
    6198             : 
    6199             : #if IK2_ENABLED
    6200         117 :     module procedure gemm_ASS_SFA_SFB_THA_TNB_IK2
    6201             :         use pm_kind, only: IKC => IK2
    6202             : #include "pm_matrixMulAdd@routines.inc.F90"
    6203             :     end procedure
    6204             : #endif
    6205             : 
    6206             : #if IK1_ENABLED
    6207         151 :     module procedure gemm_ASS_SFA_SFB_THA_TNB_IK1
    6208             :         use pm_kind, only: IKC => IK1
    6209             : #include "pm_matrixMulAdd@routines.inc.F90"
    6210             :     end procedure
    6211             : #endif
    6212             : 
    6213             : #undef IK_ENABLED
    6214             : 
    6215             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    6216             : 
    6217             : #define CK_ENABLED 1
    6218             : 
    6219             : #if CK5_ENABLED
    6220             :     module procedure gemm_ASS_SFA_SFB_THA_TNB_CK5
    6221             :         use pm_kind, only: CKC => CK5
    6222             : #include "pm_matrixMulAdd@routines.inc.F90"
    6223             :     end procedure
    6224             : #endif
    6225             : 
    6226             : #if CK4_ENABLED
    6227         139 :     module procedure gemm_ASS_SFA_SFB_THA_TNB_CK4
    6228             :         use pm_kind, only: CKC => CK4
    6229             : #include "pm_matrixMulAdd@routines.inc.F90"
    6230             :     end procedure
    6231             : #endif
    6232             : 
    6233             : #if CK3_ENABLED
    6234         148 :     module procedure gemm_ASS_SFA_SFB_THA_TNB_CK3
    6235             :         use pm_kind, only: CKC => CK3
    6236             : #include "pm_matrixMulAdd@routines.inc.F90"
    6237             :     end procedure
    6238             : #endif
    6239             : 
    6240             : #if CK2_ENABLED
    6241         141 :     module procedure gemm_ASS_SFA_SFB_THA_TNB_CK2
    6242             :         use pm_kind, only: CKC => CK2
    6243             : #define DISPATCH_ENABLED 1
    6244             : #include "pm_matrixMulAdd@routines.inc.F90"
    6245             : #undef  DISPATCH_ENABLED
    6246             :     end procedure
    6247             : #endif
    6248             : 
    6249             : #if CK1_ENABLED
    6250         153 :     module procedure gemm_ASS_SFA_SFB_THA_TNB_CK1
    6251             :         use pm_kind, only: CKC => CK1
    6252             : #define DISPATCH_ENABLED 1
    6253             : #include "pm_matrixMulAdd@routines.inc.F90"
    6254             : #undef  DISPATCH_ENABLED
    6255             :     end procedure
    6256             : #endif
    6257             : 
    6258             : #undef CK_ENABLED
    6259             : 
    6260             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    6261             : 
    6262             : #define RK_ENABLED 1
    6263             : 
    6264             : #if RK5_ENABLED
    6265             :     module procedure gemm_ASS_SFA_SFB_THA_TNB_RK5
    6266             :         use pm_kind, only: RKC => RK5
    6267             : #include "pm_matrixMulAdd@routines.inc.F90"
    6268             :     end procedure
    6269             : #endif
    6270             : 
    6271             : #if RK4_ENABLED
    6272         128 :     module procedure gemm_ASS_SFA_SFB_THA_TNB_RK4
    6273             :         use pm_kind, only: RKC => RK4
    6274             : #include "pm_matrixMulAdd@routines.inc.F90"
    6275             :     end procedure
    6276             : #endif
    6277             : 
    6278             : #if RK3_ENABLED
    6279         143 :     module procedure gemm_ASS_SFA_SFB_THA_TNB_RK3
    6280             :         use pm_kind, only: RKC => RK3
    6281             : #include "pm_matrixMulAdd@routines.inc.F90"
    6282             :     end procedure
    6283             : #endif
    6284             : 
    6285             : #if RK2_ENABLED
    6286         128 :     module procedure gemm_ASS_SFA_SFB_THA_TNB_RK2
    6287             :         use pm_kind, only: RKC => RK2
    6288             : #define DISPATCH_ENABLED 1
    6289             : #include "pm_matrixMulAdd@routines.inc.F90"
    6290             : #undef  DISPATCH_ENABLED
    6291             :     end procedure
    6292             : #endif
    6293             : 
    6294             : #if RK1_ENABLED
    6295         145 :     module procedure gemm_ASS_SFA_SFB_THA_TNB_RK1
    6296             :         use pm_kind, only: RKC => RK1
    6297             : #define DISPATCH_ENABLED 1
    6298             : #include "pm_matrixMulAdd@routines.inc.F90"
    6299             : #undef  DISPATCH_ENABLED
    6300             :     end procedure
    6301             : #endif
    6302             : 
    6303             : #undef RK_ENABLED
    6304             : 
    6305             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    6306             : 
    6307             : #undef THA_ENABLED
    6308             : 
    6309             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    6310             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    6311             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    6312             : 
    6313             : #undef TNB_ENABLED
    6314             : 
    6315             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    6316             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    6317             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    6318             : 
    6319             : #define TSB_ENABLED 1
    6320             : 
    6321             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    6322             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    6323             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    6324             : 
    6325             : #define TNA_ENABLED 1
    6326             : 
    6327             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    6328             : 
    6329             : #define IK_ENABLED 1
    6330             : 
    6331             : #if IK5_ENABLED
    6332         130 :     module procedure gemm_ASS_SFA_SFB_TNA_TSB_IK5
    6333             :         use pm_kind, only: IKC => IK5
    6334             : #include "pm_matrixMulAdd@routines.inc.F90"
    6335             :     end procedure
    6336             : #endif
    6337             : 
    6338             : #if IK4_ENABLED
    6339         139 :     module procedure gemm_ASS_SFA_SFB_TNA_TSB_IK4
    6340             :         use pm_kind, only: IKC => IK4
    6341             : #include "pm_matrixMulAdd@routines.inc.F90"
    6342             :     end procedure
    6343             : #endif
    6344             : 
    6345             : #if IK3_ENABLED
    6346         133 :     module procedure gemm_ASS_SFA_SFB_TNA_TSB_IK3
    6347             :         use pm_kind, only: IKC => IK3
    6348             : #include "pm_matrixMulAdd@routines.inc.F90"
    6349             :     end procedure
    6350             : #endif
    6351             : 
    6352             : #if IK2_ENABLED
    6353         117 :     module procedure gemm_ASS_SFA_SFB_TNA_TSB_IK2
    6354             :         use pm_kind, only: IKC => IK2
    6355             : #include "pm_matrixMulAdd@routines.inc.F90"
    6356             :     end procedure
    6357             : #endif
    6358             : 
    6359             : #if IK1_ENABLED
    6360         151 :     module procedure gemm_ASS_SFA_SFB_TNA_TSB_IK1
    6361             :         use pm_kind, only: IKC => IK1
    6362             : #include "pm_matrixMulAdd@routines.inc.F90"
    6363             :     end procedure
    6364             : #endif
    6365             : 
    6366             : #undef IK_ENABLED
    6367             : 
    6368             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    6369             : 
    6370             : #define CK_ENABLED 1
    6371             : 
    6372             : #if CK5_ENABLED
    6373             :     module procedure gemm_ASS_SFA_SFB_TNA_TSB_CK5
    6374             :         use pm_kind, only: CKC => CK5
    6375             : #include "pm_matrixMulAdd@routines.inc.F90"
    6376             :     end procedure
    6377             : #endif
    6378             : 
    6379             : #if CK4_ENABLED
    6380         139 :     module procedure gemm_ASS_SFA_SFB_TNA_TSB_CK4
    6381             :         use pm_kind, only: CKC => CK4
    6382             : #include "pm_matrixMulAdd@routines.inc.F90"
    6383             :     end procedure
    6384             : #endif
    6385             : 
    6386             : #if CK3_ENABLED
    6387         148 :     module procedure gemm_ASS_SFA_SFB_TNA_TSB_CK3
    6388             :         use pm_kind, only: CKC => CK3
    6389             : #include "pm_matrixMulAdd@routines.inc.F90"
    6390             :     end procedure
    6391             : #endif
    6392             : 
    6393             : #if CK2_ENABLED
    6394         141 :     module procedure gemm_ASS_SFA_SFB_TNA_TSB_CK2
    6395             :         use pm_kind, only: CKC => CK2
    6396             : #define DISPATCH_ENABLED 1
    6397             : #include "pm_matrixMulAdd@routines.inc.F90"
    6398             : #undef  DISPATCH_ENABLED
    6399             :     end procedure
    6400             : #endif
    6401             : 
    6402             : #if CK1_ENABLED
    6403         152 :     module procedure gemm_ASS_SFA_SFB_TNA_TSB_CK1
    6404             :         use pm_kind, only: CKC => CK1
    6405             : #define DISPATCH_ENABLED 1
    6406             : #include "pm_matrixMulAdd@routines.inc.F90"
    6407             : #undef  DISPATCH_ENABLED
    6408             :     end procedure
    6409             : #endif
    6410             : 
    6411             : #undef CK_ENABLED
    6412             : 
    6413             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    6414             : 
    6415             : #define RK_ENABLED 1
    6416             : 
    6417             : #if RK5_ENABLED
    6418             :     module procedure gemm_ASS_SFA_SFB_TNA_TSB_RK5
    6419             :         use pm_kind, only: RKC => RK5
    6420             : #include "pm_matrixMulAdd@routines.inc.F90"
    6421             :     end procedure
    6422             : #endif
    6423             : 
    6424             : #if RK4_ENABLED
    6425         128 :     module procedure gemm_ASS_SFA_SFB_TNA_TSB_RK4
    6426             :         use pm_kind, only: RKC => RK4
    6427             : #include "pm_matrixMulAdd@routines.inc.F90"
    6428             :     end procedure
    6429             : #endif
    6430             : 
    6431             : #if RK3_ENABLED
    6432         143 :     module procedure gemm_ASS_SFA_SFB_TNA_TSB_RK3
    6433             :         use pm_kind, only: RKC => RK3
    6434             : #include "pm_matrixMulAdd@routines.inc.F90"
    6435             :     end procedure
    6436             : #endif
    6437             : 
    6438             : #if RK2_ENABLED
    6439         128 :     module procedure gemm_ASS_SFA_SFB_TNA_TSB_RK2
    6440             :         use pm_kind, only: RKC => RK2
    6441             : #define DISPATCH_ENABLED 1
    6442             : #include "pm_matrixMulAdd@routines.inc.F90"
    6443             : #undef  DISPATCH_ENABLED
    6444             :     end procedure
    6445             : #endif
    6446             : 
    6447             : #if RK1_ENABLED
    6448         145 :     module procedure gemm_ASS_SFA_SFB_TNA_TSB_RK1
    6449             :         use pm_kind, only: RKC => RK1
    6450             : #define DISPATCH_ENABLED 1
    6451             : #include "pm_matrixMulAdd@routines.inc.F90"
    6452             : #undef  DISPATCH_ENABLED
    6453             :     end procedure
    6454             : #endif
    6455             : 
    6456             : #undef RK_ENABLED
    6457             : 
    6458             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    6459             : 
    6460             : #undef TNA_ENABLED
    6461             : #undef TSB_ENABLED
    6462             : 
    6463             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    6464             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    6465             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    6466             : 
    6467             : #define TSA_ENABLED 1
    6468             : #define TSB_ENABLED 1
    6469             : 
    6470             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    6471             : 
    6472             : #define IK_ENABLED 1
    6473             : 
    6474             : #if IK5_ENABLED
    6475         130 :     module procedure gemm_ASS_SFA_SFB_TSA_TSB_IK5
    6476             :         use pm_kind, only: IKC => IK5
    6477             : #include "pm_matrixMulAdd@routines.inc.F90"
    6478             :     end procedure
    6479             : #endif
    6480             : 
    6481             : #if IK4_ENABLED
    6482         139 :     module procedure gemm_ASS_SFA_SFB_TSA_TSB_IK4
    6483             :         use pm_kind, only: IKC => IK4
    6484             : #include "pm_matrixMulAdd@routines.inc.F90"
    6485             :     end procedure
    6486             : #endif
    6487             : 
    6488             : #if IK3_ENABLED
    6489         133 :     module procedure gemm_ASS_SFA_SFB_TSA_TSB_IK3
    6490             :         use pm_kind, only: IKC => IK3
    6491             : #include "pm_matrixMulAdd@routines.inc.F90"
    6492             :     end procedure
    6493             : #endif
    6494             : 
    6495             : #if IK2_ENABLED
    6496         117 :     module procedure gemm_ASS_SFA_SFB_TSA_TSB_IK2
    6497             :         use pm_kind, only: IKC => IK2
    6498             : #include "pm_matrixMulAdd@routines.inc.F90"
    6499             :     end procedure
    6500             : #endif
    6501             : 
    6502             : #if IK1_ENABLED
    6503         151 :     module procedure gemm_ASS_SFA_SFB_TSA_TSB_IK1
    6504             :         use pm_kind, only: IKC => IK1
    6505             : #include "pm_matrixMulAdd@routines.inc.F90"
    6506             :     end procedure
    6507             : #endif
    6508             : 
    6509             : #undef IK_ENABLED
    6510             : 
    6511             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    6512             : 
    6513             : #define CK_ENABLED 1
    6514             : 
    6515             : #if CK5_ENABLED
    6516             :     module procedure gemm_ASS_SFA_SFB_TSA_TSB_CK5
    6517             :         use pm_kind, only: CKC => CK5
    6518             : #include "pm_matrixMulAdd@routines.inc.F90"
    6519             :     end procedure
    6520             : #endif
    6521             : 
    6522             : #if CK4_ENABLED
    6523         139 :     module procedure gemm_ASS_SFA_SFB_TSA_TSB_CK4
    6524             :         use pm_kind, only: CKC => CK4
    6525             : #include "pm_matrixMulAdd@routines.inc.F90"
    6526             :     end procedure
    6527             : #endif
    6528             : 
    6529             : #if CK3_ENABLED
    6530         148 :     module procedure gemm_ASS_SFA_SFB_TSA_TSB_CK3
    6531             :         use pm_kind, only: CKC => CK3
    6532             : #include "pm_matrixMulAdd@routines.inc.F90"
    6533             :     end procedure
    6534             : #endif
    6535             : 
    6536             : #if CK2_ENABLED
    6537         141 :     module procedure gemm_ASS_SFA_SFB_TSA_TSB_CK2
    6538             :         use pm_kind, only: CKC => CK2
    6539             : #define DISPATCH_ENABLED 1
    6540             : #include "pm_matrixMulAdd@routines.inc.F90"
    6541             : #undef  DISPATCH_ENABLED
    6542             :     end procedure
    6543             : #endif
    6544             : 
    6545             : #if CK1_ENABLED
    6546         152 :     module procedure gemm_ASS_SFA_SFB_TSA_TSB_CK1
    6547             :         use pm_kind, only: CKC => CK1
    6548             : #define DISPATCH_ENABLED 1
    6549             : #include "pm_matrixMulAdd@routines.inc.F90"
    6550             : #undef  DISPATCH_ENABLED
    6551             :     end procedure
    6552             : #endif
    6553             : 
    6554             : #undef CK_ENABLED
    6555             : 
    6556             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    6557             : 
    6558             : #define RK_ENABLED 1
    6559             : 
    6560             : #if RK5_ENABLED
    6561             :     module procedure gemm_ASS_SFA_SFB_TSA_TSB_RK5
    6562             :         use pm_kind, only: RKC => RK5
    6563             : #include "pm_matrixMulAdd@routines.inc.F90"
    6564             :     end procedure
    6565             : #endif
    6566             : 
    6567             : #if RK4_ENABLED
    6568         128 :     module procedure gemm_ASS_SFA_SFB_TSA_TSB_RK4
    6569             :         use pm_kind, only: RKC => RK4
    6570             : #include "pm_matrixMulAdd@routines.inc.F90"
    6571             :     end procedure
    6572             : #endif
    6573             : 
    6574             : #if RK3_ENABLED
    6575         143 :     module procedure gemm_ASS_SFA_SFB_TSA_TSB_RK3
    6576             :         use pm_kind, only: RKC => RK3
    6577             : #include "pm_matrixMulAdd@routines.inc.F90"
    6578             :     end procedure
    6579             : #endif
    6580             : 
    6581             : #if RK2_ENABLED
    6582         128 :     module procedure gemm_ASS_SFA_SFB_TSA_TSB_RK2
    6583             :         use pm_kind, only: RKC => RK2
    6584             : #define DISPATCH_ENABLED 1
    6585             : #include "pm_matrixMulAdd@routines.inc.F90"
    6586             : #undef  DISPATCH_ENABLED
    6587             :     end procedure
    6588             : #endif
    6589             : 
    6590             : #if RK1_ENABLED
    6591         145 :     module procedure gemm_ASS_SFA_SFB_TSA_TSB_RK1
    6592             :         use pm_kind, only: RKC => RK1
    6593             : #define DISPATCH_ENABLED 1
    6594             : #include "pm_matrixMulAdd@routines.inc.F90"
    6595             : #undef  DISPATCH_ENABLED
    6596             :     end procedure
    6597             : #endif
    6598             : 
    6599             : #undef RK_ENABLED
    6600             : 
    6601             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    6602             : 
    6603             : #undef TSA_ENABLED
    6604             : #undef TSB_ENABLED
    6605             : 
    6606             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    6607             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    6608             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    6609             : 
    6610             : #define THA_ENABLED 1
    6611             : #define TSB_ENABLED 1
    6612             : 
    6613             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    6614             : 
    6615             : #define IK_ENABLED 1
    6616             : 
    6617             : #if IK5_ENABLED
    6618         130 :     module procedure gemm_ASS_SFA_SFB_THA_TSB_IK5
    6619             :         use pm_kind, only: IKC => IK5
    6620             : #include "pm_matrixMulAdd@routines.inc.F90"
    6621             :     end procedure
    6622             : #endif
    6623             : 
    6624             : #if IK4_ENABLED
    6625         139 :     module procedure gemm_ASS_SFA_SFB_THA_TSB_IK4
    6626             :         use pm_kind, only: IKC => IK4
    6627             : #include "pm_matrixMulAdd@routines.inc.F90"
    6628             :     end procedure
    6629             : #endif
    6630             : 
    6631             : #if IK3_ENABLED
    6632         133 :     module procedure gemm_ASS_SFA_SFB_THA_TSB_IK3
    6633             :         use pm_kind, only: IKC => IK3
    6634             : #include "pm_matrixMulAdd@routines.inc.F90"
    6635             :     end procedure
    6636             : #endif
    6637             : 
    6638             : #if IK2_ENABLED
    6639         117 :     module procedure gemm_ASS_SFA_SFB_THA_TSB_IK2
    6640             :         use pm_kind, only: IKC => IK2
    6641             : #include "pm_matrixMulAdd@routines.inc.F90"
    6642             :     end procedure
    6643             : #endif
    6644             : 
    6645             : #if IK1_ENABLED
    6646         151 :     module procedure gemm_ASS_SFA_SFB_THA_TSB_IK1
    6647             :         use pm_kind, only: IKC => IK1
    6648             : #include "pm_matrixMulAdd@routines.inc.F90"
    6649             :     end procedure
    6650             : #endif
    6651             : 
    6652             : #undef IK_ENABLED
    6653             : 
    6654             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    6655             : 
    6656             : #define CK_ENABLED 1
    6657             : 
    6658             : #if CK5_ENABLED
    6659             :     module procedure gemm_ASS_SFA_SFB_THA_TSB_CK5
    6660             :         use pm_kind, only: CKC => CK5
    6661             : #include "pm_matrixMulAdd@routines.inc.F90"
    6662             :     end procedure
    6663             : #endif
    6664             : 
    6665             : #if CK4_ENABLED
    6666         139 :     module procedure gemm_ASS_SFA_SFB_THA_TSB_CK4
    6667             :         use pm_kind, only: CKC => CK4
    6668             : #include "pm_matrixMulAdd@routines.inc.F90"
    6669             :     end procedure
    6670             : #endif
    6671             : 
    6672             : #if CK3_ENABLED
    6673         148 :     module procedure gemm_ASS_SFA_SFB_THA_TSB_CK3
    6674             :         use pm_kind, only: CKC => CK3
    6675             : #include "pm_matrixMulAdd@routines.inc.F90"
    6676             :     end procedure
    6677             : #endif
    6678             : 
    6679             : #if CK2_ENABLED
    6680         141 :     module procedure gemm_ASS_SFA_SFB_THA_TSB_CK2
    6681             :         use pm_kind, only: CKC => CK2
    6682             : #define DISPATCH_ENABLED 1
    6683             : #include "pm_matrixMulAdd@routines.inc.F90"
    6684             : #undef  DISPATCH_ENABLED
    6685             :     end procedure
    6686             : #endif
    6687             : 
    6688             : #if CK1_ENABLED
    6689         152 :     module procedure gemm_ASS_SFA_SFB_THA_TSB_CK1
    6690             :         use pm_kind, only: CKC => CK1
    6691             : #define DISPATCH_ENABLED 1
    6692             : #include "pm_matrixMulAdd@routines.inc.F90"
    6693             : #undef  DISPATCH_ENABLED
    6694             :     end procedure
    6695             : #endif
    6696             : 
    6697             : #undef CK_ENABLED
    6698             : 
    6699             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    6700             : 
    6701             : #define RK_ENABLED 1
    6702             : 
    6703             : #if RK5_ENABLED
    6704             :     module procedure gemm_ASS_SFA_SFB_THA_TSB_RK5
    6705             :         use pm_kind, only: RKC => RK5
    6706             : #include "pm_matrixMulAdd@routines.inc.F90"
    6707             :     end procedure
    6708             : #endif
    6709             : 
    6710             : #if RK4_ENABLED
    6711         128 :     module procedure gemm_ASS_SFA_SFB_THA_TSB_RK4
    6712             :         use pm_kind, only: RKC => RK4
    6713             : #include "pm_matrixMulAdd@routines.inc.F90"
    6714             :     end procedure
    6715             : #endif
    6716             : 
    6717             : #if RK3_ENABLED
    6718         143 :     module procedure gemm_ASS_SFA_SFB_THA_TSB_RK3
    6719             :         use pm_kind, only: RKC => RK3
    6720             : #include "pm_matrixMulAdd@routines.inc.F90"
    6721             :     end procedure
    6722             : #endif
    6723             : 
    6724             : #if RK2_ENABLED
    6725         128 :     module procedure gemm_ASS_SFA_SFB_THA_TSB_RK2
    6726             :         use pm_kind, only: RKC => RK2
    6727             : #define DISPATCH_ENABLED 1
    6728             : #include "pm_matrixMulAdd@routines.inc.F90"
    6729             : #undef  DISPATCH_ENABLED
    6730             :     end procedure
    6731             : #endif
    6732             : 
    6733             : #if RK1_ENABLED
    6734         145 :     module procedure gemm_ASS_SFA_SFB_THA_TSB_RK1
    6735             :         use pm_kind, only: RKC => RK1
    6736             : #define DISPATCH_ENABLED 1
    6737             : #include "pm_matrixMulAdd@routines.inc.F90"
    6738             : #undef  DISPATCH_ENABLED
    6739             :     end procedure
    6740             : #endif
    6741             : 
    6742             : #undef RK_ENABLED
    6743             : 
    6744             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    6745             : 
    6746             : #undef THA_ENABLED
    6747             : 
    6748             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    6749             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    6750             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    6751             : 
    6752             : #undef TSB_ENABLED
    6753             : 
    6754             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    6755             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    6756             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    6757             : 
    6758             : #define THB_ENABLED 1
    6759             : 
    6760             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    6761             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    6762             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    6763             : 
    6764             : #define TNA_ENABLED 1
    6765             : 
    6766             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    6767             : 
    6768             : #define IK_ENABLED 1
    6769             : 
    6770             : #if IK5_ENABLED
    6771         130 :     module procedure gemm_ASS_SFA_SFB_TNA_THB_IK5
    6772             :         use pm_kind, only: IKC => IK5
    6773             : #include "pm_matrixMulAdd@routines.inc.F90"
    6774             :     end procedure
    6775             : #endif
    6776             : 
    6777             : #if IK4_ENABLED
    6778         139 :     module procedure gemm_ASS_SFA_SFB_TNA_THB_IK4
    6779             :         use pm_kind, only: IKC => IK4
    6780             : #include "pm_matrixMulAdd@routines.inc.F90"
    6781             :     end procedure
    6782             : #endif
    6783             : 
    6784             : #if IK3_ENABLED
    6785         133 :     module procedure gemm_ASS_SFA_SFB_TNA_THB_IK3
    6786             :         use pm_kind, only: IKC => IK3
    6787             : #include "pm_matrixMulAdd@routines.inc.F90"
    6788             :     end procedure
    6789             : #endif
    6790             : 
    6791             : #if IK2_ENABLED
    6792         117 :     module procedure gemm_ASS_SFA_SFB_TNA_THB_IK2
    6793             :         use pm_kind, only: IKC => IK2
    6794             : #include "pm_matrixMulAdd@routines.inc.F90"
    6795             :     end procedure
    6796             : #endif
    6797             : 
    6798             : #if IK1_ENABLED
    6799         151 :     module procedure gemm_ASS_SFA_SFB_TNA_THB_IK1
    6800             :         use pm_kind, only: IKC => IK1
    6801             : #include "pm_matrixMulAdd@routines.inc.F90"
    6802             :     end procedure
    6803             : #endif
    6804             : 
    6805             : #undef IK_ENABLED
    6806             : 
    6807             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    6808             : 
    6809             : #define CK_ENABLED 1
    6810             : 
    6811             : #if CK5_ENABLED
    6812             :     module procedure gemm_ASS_SFA_SFB_TNA_THB_CK5
    6813             :         use pm_kind, only: CKC => CK5
    6814             : #include "pm_matrixMulAdd@routines.inc.F90"
    6815             :     end procedure
    6816             : #endif
    6817             : 
    6818             : #if CK4_ENABLED
    6819         139 :     module procedure gemm_ASS_SFA_SFB_TNA_THB_CK4
    6820             :         use pm_kind, only: CKC => CK4
    6821             : #include "pm_matrixMulAdd@routines.inc.F90"
    6822             :     end procedure
    6823             : #endif
    6824             : 
    6825             : #if CK3_ENABLED
    6826         148 :     module procedure gemm_ASS_SFA_SFB_TNA_THB_CK3
    6827             :         use pm_kind, only: CKC => CK3
    6828             : #include "pm_matrixMulAdd@routines.inc.F90"
    6829             :     end procedure
    6830             : #endif
    6831             : 
    6832             : #if CK2_ENABLED
    6833         141 :     module procedure gemm_ASS_SFA_SFB_TNA_THB_CK2
    6834             :         use pm_kind, only: CKC => CK2
    6835             : #define DISPATCH_ENABLED 1
    6836             : #include "pm_matrixMulAdd@routines.inc.F90"
    6837             : #undef  DISPATCH_ENABLED
    6838             :     end procedure
    6839             : #endif
    6840             : 
    6841             : #if CK1_ENABLED
    6842         152 :     module procedure gemm_ASS_SFA_SFB_TNA_THB_CK1
    6843             :         use pm_kind, only: CKC => CK1
    6844             : #define DISPATCH_ENABLED 1
    6845             : #include "pm_matrixMulAdd@routines.inc.F90"
    6846             : #undef  DISPATCH_ENABLED
    6847             :     end procedure
    6848             : #endif
    6849             : 
    6850             : #undef CK_ENABLED
    6851             : 
    6852             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    6853             : 
    6854             : #define RK_ENABLED 1
    6855             : 
    6856             : #if RK5_ENABLED
    6857             :     module procedure gemm_ASS_SFA_SFB_TNA_THB_RK5
    6858             :         use pm_kind, only: RKC => RK5
    6859             : #include "pm_matrixMulAdd@routines.inc.F90"
    6860             :     end procedure
    6861             : #endif
    6862             : 
    6863             : #if RK4_ENABLED
    6864         128 :     module procedure gemm_ASS_SFA_SFB_TNA_THB_RK4
    6865             :         use pm_kind, only: RKC => RK4
    6866             : #include "pm_matrixMulAdd@routines.inc.F90"
    6867             :     end procedure
    6868             : #endif
    6869             : 
    6870             : #if RK3_ENABLED
    6871         143 :     module procedure gemm_ASS_SFA_SFB_TNA_THB_RK3
    6872             :         use pm_kind, only: RKC => RK3
    6873             : #include "pm_matrixMulAdd@routines.inc.F90"
    6874             :     end procedure
    6875             : #endif
    6876             : 
    6877             : #if RK2_ENABLED
    6878         128 :     module procedure gemm_ASS_SFA_SFB_TNA_THB_RK2
    6879             :         use pm_kind, only: RKC => RK2
    6880             : #define DISPATCH_ENABLED 1
    6881             : #include "pm_matrixMulAdd@routines.inc.F90"
    6882             : #undef  DISPATCH_ENABLED
    6883             :     end procedure
    6884             : #endif
    6885             : 
    6886             : #if RK1_ENABLED
    6887         145 :     module procedure gemm_ASS_SFA_SFB_TNA_THB_RK1
    6888             :         use pm_kind, only: RKC => RK1
    6889             : #define DISPATCH_ENABLED 1
    6890             : #include "pm_matrixMulAdd@routines.inc.F90"
    6891             : #undef  DISPATCH_ENABLED
    6892             :     end procedure
    6893             : #endif
    6894             : 
    6895             : #undef RK_ENABLED
    6896             : 
    6897             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    6898             : 
    6899             : #undef TNA_ENABLED
    6900             : #undef THB_ENABLED
    6901             : 
    6902             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    6903             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    6904             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    6905             : 
    6906             : #define TSA_ENABLED 1
    6907             : #define THB_ENABLED 1
    6908             : 
    6909             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    6910             : 
    6911             : #define IK_ENABLED 1
    6912             : 
    6913             : #if IK5_ENABLED
    6914         130 :     module procedure gemm_ASS_SFA_SFB_TSA_THB_IK5
    6915             :         use pm_kind, only: IKC => IK5
    6916             : #include "pm_matrixMulAdd@routines.inc.F90"
    6917             :     end procedure
    6918             : #endif
    6919             : 
    6920             : #if IK4_ENABLED
    6921         139 :     module procedure gemm_ASS_SFA_SFB_TSA_THB_IK4
    6922             :         use pm_kind, only: IKC => IK4
    6923             : #include "pm_matrixMulAdd@routines.inc.F90"
    6924             :     end procedure
    6925             : #endif
    6926             : 
    6927             : #if IK3_ENABLED
    6928         133 :     module procedure gemm_ASS_SFA_SFB_TSA_THB_IK3
    6929             :         use pm_kind, only: IKC => IK3
    6930             : #include "pm_matrixMulAdd@routines.inc.F90"
    6931             :     end procedure
    6932             : #endif
    6933             : 
    6934             : #if IK2_ENABLED
    6935         117 :     module procedure gemm_ASS_SFA_SFB_TSA_THB_IK2
    6936             :         use pm_kind, only: IKC => IK2
    6937             : #include "pm_matrixMulAdd@routines.inc.F90"
    6938             :     end procedure
    6939             : #endif
    6940             : 
    6941             : #if IK1_ENABLED
    6942         151 :     module procedure gemm_ASS_SFA_SFB_TSA_THB_IK1
    6943             :         use pm_kind, only: IKC => IK1
    6944             : #include "pm_matrixMulAdd@routines.inc.F90"
    6945             :     end procedure
    6946             : #endif
    6947             : 
    6948             : #undef IK_ENABLED
    6949             : 
    6950             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    6951             : 
    6952             : #define CK_ENABLED 1
    6953             : 
    6954             : #if CK5_ENABLED
    6955             :     module procedure gemm_ASS_SFA_SFB_TSA_THB_CK5
    6956             :         use pm_kind, only: CKC => CK5
    6957             : #include "pm_matrixMulAdd@routines.inc.F90"
    6958             :     end procedure
    6959             : #endif
    6960             : 
    6961             : #if CK4_ENABLED
    6962         139 :     module procedure gemm_ASS_SFA_SFB_TSA_THB_CK4
    6963             :         use pm_kind, only: CKC => CK4
    6964             : #include "pm_matrixMulAdd@routines.inc.F90"
    6965             :     end procedure
    6966             : #endif
    6967             : 
    6968             : #if CK3_ENABLED
    6969         148 :     module procedure gemm_ASS_SFA_SFB_TSA_THB_CK3
    6970             :         use pm_kind, only: CKC => CK3
    6971             : #include "pm_matrixMulAdd@routines.inc.F90"
    6972             :     end procedure
    6973             : #endif
    6974             : 
    6975             : #if CK2_ENABLED
    6976         141 :     module procedure gemm_ASS_SFA_SFB_TSA_THB_CK2
    6977             :         use pm_kind, only: CKC => CK2
    6978             : #define DISPATCH_ENABLED 1
    6979             : #include "pm_matrixMulAdd@routines.inc.F90"
    6980             : #undef  DISPATCH_ENABLED
    6981             :     end procedure
    6982             : #endif
    6983             : 
    6984             : #if CK1_ENABLED
    6985         152 :     module procedure gemm_ASS_SFA_SFB_TSA_THB_CK1
    6986             :         use pm_kind, only: CKC => CK1
    6987             : #define DISPATCH_ENABLED 1
    6988             : #include "pm_matrixMulAdd@routines.inc.F90"
    6989             : #undef  DISPATCH_ENABLED
    6990             :     end procedure
    6991             : #endif
    6992             : 
    6993             : #undef CK_ENABLED
    6994             : 
    6995             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    6996             : 
    6997             : #define RK_ENABLED 1
    6998             : 
    6999             : #if RK5_ENABLED
    7000             :     module procedure gemm_ASS_SFA_SFB_TSA_THB_RK5
    7001             :         use pm_kind, only: RKC => RK5
    7002             : #include "pm_matrixMulAdd@routines.inc.F90"
    7003             :     end procedure
    7004             : #endif
    7005             : 
    7006             : #if RK4_ENABLED
    7007         128 :     module procedure gemm_ASS_SFA_SFB_TSA_THB_RK4
    7008             :         use pm_kind, only: RKC => RK4
    7009             : #include "pm_matrixMulAdd@routines.inc.F90"
    7010             :     end procedure
    7011             : #endif
    7012             : 
    7013             : #if RK3_ENABLED
    7014         143 :     module procedure gemm_ASS_SFA_SFB_TSA_THB_RK3
    7015             :         use pm_kind, only: RKC => RK3
    7016             : #include "pm_matrixMulAdd@routines.inc.F90"
    7017             :     end procedure
    7018             : #endif
    7019             : 
    7020             : #if RK2_ENABLED
    7021         128 :     module procedure gemm_ASS_SFA_SFB_TSA_THB_RK2
    7022             :         use pm_kind, only: RKC => RK2
    7023             : #define DISPATCH_ENABLED 1
    7024             : #include "pm_matrixMulAdd@routines.inc.F90"
    7025             : #undef  DISPATCH_ENABLED
    7026             :     end procedure
    7027             : #endif
    7028             : 
    7029             : #if RK1_ENABLED
    7030         145 :     module procedure gemm_ASS_SFA_SFB_TSA_THB_RK1
    7031             :         use pm_kind, only: RKC => RK1
    7032             : #define DISPATCH_ENABLED 1
    7033             : #include "pm_matrixMulAdd@routines.inc.F90"
    7034             : #undef  DISPATCH_ENABLED
    7035             :     end procedure
    7036             : #endif
    7037             : 
    7038             : #undef RK_ENABLED
    7039             : 
    7040             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    7041             : 
    7042             : #undef TSA_ENABLED
    7043             : #undef THB_ENABLED
    7044             : 
    7045             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    7046             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    7047             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    7048             : 
    7049             : #define THA_ENABLED 1
    7050             : #define THB_ENABLED 1
    7051             : 
    7052             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    7053             : 
    7054             : #define IK_ENABLED 1
    7055             : 
    7056             : #if IK5_ENABLED
    7057         130 :     module procedure gemm_ASS_SFA_SFB_THA_THB_IK5
    7058             :         use pm_kind, only: IKC => IK5
    7059             : #include "pm_matrixMulAdd@routines.inc.F90"
    7060             :     end procedure
    7061             : #endif
    7062             : 
    7063             : #if IK4_ENABLED
    7064         139 :     module procedure gemm_ASS_SFA_SFB_THA_THB_IK4
    7065             :         use pm_kind, only: IKC => IK4
    7066             : #include "pm_matrixMulAdd@routines.inc.F90"
    7067             :     end procedure
    7068             : #endif
    7069             : 
    7070             : #if IK3_ENABLED
    7071         133 :     module procedure gemm_ASS_SFA_SFB_THA_THB_IK3
    7072             :         use pm_kind, only: IKC => IK3
    7073             : #include "pm_matrixMulAdd@routines.inc.F90"
    7074             :     end procedure
    7075             : #endif
    7076             : 
    7077             : #if IK2_ENABLED
    7078         117 :     module procedure gemm_ASS_SFA_SFB_THA_THB_IK2
    7079             :         use pm_kind, only: IKC => IK2
    7080             : #include "pm_matrixMulAdd@routines.inc.F90"
    7081             :     end procedure
    7082             : #endif
    7083             : 
    7084             : #if IK1_ENABLED
    7085         151 :     module procedure gemm_ASS_SFA_SFB_THA_THB_IK1
    7086             :         use pm_kind, only: IKC => IK1
    7087             : #include "pm_matrixMulAdd@routines.inc.F90"
    7088             :     end procedure
    7089             : #endif
    7090             : 
    7091             : #undef IK_ENABLED
    7092             : 
    7093             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    7094             : 
    7095             : #define CK_ENABLED 1
    7096             : 
    7097             : #if CK5_ENABLED
    7098             :     module procedure gemm_ASS_SFA_SFB_THA_THB_CK5
    7099             :         use pm_kind, only: CKC => CK5
    7100             : #include "pm_matrixMulAdd@routines.inc.F90"
    7101             :     end procedure
    7102             : #endif
    7103             : 
    7104             : #if CK4_ENABLED
    7105         139 :     module procedure gemm_ASS_SFA_SFB_THA_THB_CK4
    7106             :         use pm_kind, only: CKC => CK4
    7107             : #include "pm_matrixMulAdd@routines.inc.F90"
    7108             :     end procedure
    7109             : #endif
    7110             : 
    7111             : #if CK3_ENABLED
    7112         148 :     module procedure gemm_ASS_SFA_SFB_THA_THB_CK3
    7113             :         use pm_kind, only: CKC => CK3
    7114             : #include "pm_matrixMulAdd@routines.inc.F90"
    7115             :     end procedure
    7116             : #endif
    7117             : 
    7118             : #if CK2_ENABLED
    7119         141 :     module procedure gemm_ASS_SFA_SFB_THA_THB_CK2
    7120             :         use pm_kind, only: CKC => CK2
    7121             : #define DISPATCH_ENABLED 1
    7122             : #include "pm_matrixMulAdd@routines.inc.F90"
    7123             : #undef  DISPATCH_ENABLED
    7124             :     end procedure
    7125             : #endif
    7126             : 
    7127             : #if CK1_ENABLED
    7128         152 :     module procedure gemm_ASS_SFA_SFB_THA_THB_CK1
    7129             :         use pm_kind, only: CKC => CK1
    7130             : #define DISPATCH_ENABLED 1
    7131             : #include "pm_matrixMulAdd@routines.inc.F90"
    7132             : #undef  DISPATCH_ENABLED
    7133             :     end procedure
    7134             : #endif
    7135             : 
    7136             : #undef CK_ENABLED
    7137             : 
    7138             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    7139             : 
    7140             : #define RK_ENABLED 1
    7141             : 
    7142             : #if RK5_ENABLED
    7143             :     module procedure gemm_ASS_SFA_SFB_THA_THB_RK5
    7144             :         use pm_kind, only: RKC => RK5
    7145             : #include "pm_matrixMulAdd@routines.inc.F90"
    7146             :     end procedure
    7147             : #endif
    7148             : 
    7149             : #if RK4_ENABLED
    7150         128 :     module procedure gemm_ASS_SFA_SFB_THA_THB_RK4
    7151             :         use pm_kind, only: RKC => RK4
    7152             : #include "pm_matrixMulAdd@routines.inc.F90"
    7153             :     end procedure
    7154             : #endif
    7155             : 
    7156             : #if RK3_ENABLED
    7157         143 :     module procedure gemm_ASS_SFA_SFB_THA_THB_RK3
    7158             :         use pm_kind, only: RKC => RK3
    7159             : #include "pm_matrixMulAdd@routines.inc.F90"
    7160             :     end procedure
    7161             : #endif
    7162             : 
    7163             : #if RK2_ENABLED
    7164         128 :     module procedure gemm_ASS_SFA_SFB_THA_THB_RK2
    7165             :         use pm_kind, only: RKC => RK2
    7166             : #define DISPATCH_ENABLED 1
    7167             : #include "pm_matrixMulAdd@routines.inc.F90"
    7168             : #undef  DISPATCH_ENABLED
    7169             :     end procedure
    7170             : #endif
    7171             : 
    7172             : #if RK1_ENABLED
    7173         145 :     module procedure gemm_ASS_SFA_SFB_THA_THB_RK1
    7174             :         use pm_kind, only: RKC => RK1
    7175             : #define DISPATCH_ENABLED 1
    7176             : #include "pm_matrixMulAdd@routines.inc.F90"
    7177             : #undef  DISPATCH_ENABLED
    7178             :     end procedure
    7179             : #endif
    7180             : 
    7181             : #undef RK_ENABLED
    7182             : 
    7183             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    7184             : 
    7185             : #undef THA_ENABLED
    7186             : 
    7187             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    7188             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    7189             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    7190             : 
    7191             : #undef THB_ENABLED
    7192             : 
    7193             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    7194             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    7195             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    7196             : 
    7197             : #undef ASS_ENABLED
    7198             : 
    7199             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    7200             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    7201             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    7202             : 
    7203             : #define EXP_ENABLED 1
    7204             : 
    7205             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    7206             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    7207             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    7208             : 
    7209             : #define TNB_ENABLED 1
    7210             : 
    7211             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    7212             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    7213             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    7214             : 
    7215             : #define TNA_ENABLED 1
    7216             : 
    7217             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    7218             : 
    7219             : #define IK_ENABLED 1
    7220             : 
    7221             : #if IK5_ENABLED
    7222         100 :     module procedure gemm_EXP_SFA_SFB_TNA_TNB_IK5
    7223             :         use pm_kind, only: IKC => IK5
    7224             : #include "pm_matrixMulAdd@routines.inc.F90"
    7225             :     end procedure
    7226             : #endif
    7227             : 
    7228             : #if IK4_ENABLED
    7229         100 :     module procedure gemm_EXP_SFA_SFB_TNA_TNB_IK4
    7230             :         use pm_kind, only: IKC => IK4
    7231             : #include "pm_matrixMulAdd@routines.inc.F90"
    7232             :     end procedure
    7233             : #endif
    7234             : 
    7235             : #if IK3_ENABLED
    7236         101 :     module procedure gemm_EXP_SFA_SFB_TNA_TNB_IK3
    7237             :         use pm_kind, only: IKC => IK3
    7238             : #include "pm_matrixMulAdd@routines.inc.F90"
    7239             :     end procedure
    7240             : #endif
    7241             : 
    7242             : #if IK2_ENABLED
    7243         100 :     module procedure gemm_EXP_SFA_SFB_TNA_TNB_IK2
    7244             :         use pm_kind, only: IKC => IK2
    7245             : #include "pm_matrixMulAdd@routines.inc.F90"
    7246             :     end procedure
    7247             : #endif
    7248             : 
    7249             : #if IK1_ENABLED
    7250         100 :     module procedure gemm_EXP_SFA_SFB_TNA_TNB_IK1
    7251             :         use pm_kind, only: IKC => IK1
    7252             : #include "pm_matrixMulAdd@routines.inc.F90"
    7253             :     end procedure
    7254             : #endif
    7255             : 
    7256             : #undef IK_ENABLED
    7257             : 
    7258             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    7259             : 
    7260             : #define CK_ENABLED 1
    7261             : 
    7262             : #if CK5_ENABLED
    7263             :     module procedure gemm_EXP_SFA_SFB_TNA_TNB_CK5
    7264             :         use pm_kind, only: CKC => CK5
    7265             : #include "pm_matrixMulAdd@routines.inc.F90"
    7266             :     end procedure
    7267             : #endif
    7268             : 
    7269             : #if CK4_ENABLED
    7270         100 :     module procedure gemm_EXP_SFA_SFB_TNA_TNB_CK4
    7271             :         use pm_kind, only: CKC => CK4
    7272             : #include "pm_matrixMulAdd@routines.inc.F90"
    7273             :     end procedure
    7274             : #endif
    7275             : 
    7276             : #if CK3_ENABLED
    7277         100 :     module procedure gemm_EXP_SFA_SFB_TNA_TNB_CK3
    7278             :         use pm_kind, only: CKC => CK3
    7279             : #include "pm_matrixMulAdd@routines.inc.F90"
    7280             :     end procedure
    7281             : #endif
    7282             : 
    7283             : #if CK2_ENABLED
    7284         100 :     module procedure gemm_EXP_SFA_SFB_TNA_TNB_CK2
    7285             :         use pm_kind, only: CKC => CK2
    7286             : #define DISPATCH_ENABLED 1
    7287             : #include "pm_matrixMulAdd@routines.inc.F90"
    7288             : #undef  DISPATCH_ENABLED
    7289             :     end procedure
    7290             : #endif
    7291             : 
    7292             : #if CK1_ENABLED
    7293         101 :     module procedure gemm_EXP_SFA_SFB_TNA_TNB_CK1
    7294             :         use pm_kind, only: CKC => CK1
    7295             : #define DISPATCH_ENABLED 1
    7296             : #include "pm_matrixMulAdd@routines.inc.F90"
    7297             : #undef  DISPATCH_ENABLED
    7298             :     end procedure
    7299             : #endif
    7300             : 
    7301             : #undef CK_ENABLED
    7302             : 
    7303             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    7304             : 
    7305             : #define RK_ENABLED 1
    7306             : 
    7307             : #if RK5_ENABLED
    7308             :     module procedure gemm_EXP_SFA_SFB_TNA_TNB_RK5
    7309             :         use pm_kind, only: RKC => RK5
    7310             : #include "pm_matrixMulAdd@routines.inc.F90"
    7311             :     end procedure
    7312             : #endif
    7313             : 
    7314             : #if RK4_ENABLED
    7315         100 :     module procedure gemm_EXP_SFA_SFB_TNA_TNB_RK4
    7316             :         use pm_kind, only: RKC => RK4
    7317             : #include "pm_matrixMulAdd@routines.inc.F90"
    7318             :     end procedure
    7319             : #endif
    7320             : 
    7321             : #if RK3_ENABLED
    7322         100 :     module procedure gemm_EXP_SFA_SFB_TNA_TNB_RK3
    7323             :         use pm_kind, only: RKC => RK3
    7324             : #include "pm_matrixMulAdd@routines.inc.F90"
    7325             :     end procedure
    7326             : #endif
    7327             : 
    7328             : #if RK2_ENABLED
    7329         100 :     module procedure gemm_EXP_SFA_SFB_TNA_TNB_RK2
    7330             :         use pm_kind, only: RKC => RK2
    7331             : #define DISPATCH_ENABLED 1
    7332             : #include "pm_matrixMulAdd@routines.inc.F90"
    7333             : #undef  DISPATCH_ENABLED
    7334             :     end procedure
    7335             : #endif
    7336             : 
    7337             : #if RK1_ENABLED
    7338         101 :     module procedure gemm_EXP_SFA_SFB_TNA_TNB_RK1
    7339             :         use pm_kind, only: RKC => RK1
    7340             : #define DISPATCH_ENABLED 1
    7341             : #include "pm_matrixMulAdd@routines.inc.F90"
    7342             : #undef  DISPATCH_ENABLED
    7343             :     end procedure
    7344             : #endif
    7345             : 
    7346             : #undef RK_ENABLED
    7347             : 
    7348             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    7349             : 
    7350             : #undef TNA_ENABLED
    7351             : #undef TNB_ENABLED
    7352             : 
    7353             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    7354             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    7355             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    7356             : 
    7357             : #define TSA_ENABLED 1
    7358             : #define TNB_ENABLED 1
    7359             : 
    7360             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    7361             : 
    7362             : #define IK_ENABLED 1
    7363             : 
    7364             : #if IK5_ENABLED
    7365         100 :     module procedure gemm_EXP_SFA_SFB_TSA_TNB_IK5
    7366             :         use pm_kind, only: IKC => IK5
    7367             : #include "pm_matrixMulAdd@routines.inc.F90"
    7368             :     end procedure
    7369             : #endif
    7370             : 
    7371             : #if IK4_ENABLED
    7372         100 :     module procedure gemm_EXP_SFA_SFB_TSA_TNB_IK4
    7373             :         use pm_kind, only: IKC => IK4
    7374             : #include "pm_matrixMulAdd@routines.inc.F90"
    7375             :     end procedure
    7376             : #endif
    7377             : 
    7378             : #if IK3_ENABLED
    7379         100 :     module procedure gemm_EXP_SFA_SFB_TSA_TNB_IK3
    7380             :         use pm_kind, only: IKC => IK3
    7381             : #include "pm_matrixMulAdd@routines.inc.F90"
    7382             :     end procedure
    7383             : #endif
    7384             : 
    7385             : #if IK2_ENABLED
    7386         100 :     module procedure gemm_EXP_SFA_SFB_TSA_TNB_IK2
    7387             :         use pm_kind, only: IKC => IK2
    7388             : #include "pm_matrixMulAdd@routines.inc.F90"
    7389             :     end procedure
    7390             : #endif
    7391             : 
    7392             : #if IK1_ENABLED
    7393         100 :     module procedure gemm_EXP_SFA_SFB_TSA_TNB_IK1
    7394             :         use pm_kind, only: IKC => IK1
    7395             : #include "pm_matrixMulAdd@routines.inc.F90"
    7396             :     end procedure
    7397             : #endif
    7398             : 
    7399             : #undef IK_ENABLED
    7400             : 
    7401             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    7402             : 
    7403             : #define CK_ENABLED 1
    7404             : 
    7405             : #if CK5_ENABLED
    7406             :     module procedure gemm_EXP_SFA_SFB_TSA_TNB_CK5
    7407             :         use pm_kind, only: CKC => CK5
    7408             : #include "pm_matrixMulAdd@routines.inc.F90"
    7409             :     end procedure
    7410             : #endif
    7411             : 
    7412             : #if CK4_ENABLED
    7413         100 :     module procedure gemm_EXP_SFA_SFB_TSA_TNB_CK4
    7414             :         use pm_kind, only: CKC => CK4
    7415             : #include "pm_matrixMulAdd@routines.inc.F90"
    7416             :     end procedure
    7417             : #endif
    7418             : 
    7419             : #if CK3_ENABLED
    7420         100 :     module procedure gemm_EXP_SFA_SFB_TSA_TNB_CK3
    7421             :         use pm_kind, only: CKC => CK3
    7422             : #include "pm_matrixMulAdd@routines.inc.F90"
    7423             :     end procedure
    7424             : #endif
    7425             : 
    7426             : #if CK2_ENABLED
    7427         100 :     module procedure gemm_EXP_SFA_SFB_TSA_TNB_CK2
    7428             :         use pm_kind, only: CKC => CK2
    7429             : #define DISPATCH_ENABLED 1
    7430             : #include "pm_matrixMulAdd@routines.inc.F90"
    7431             : #undef  DISPATCH_ENABLED
    7432             :     end procedure
    7433             : #endif
    7434             : 
    7435             : #if CK1_ENABLED
    7436         100 :     module procedure gemm_EXP_SFA_SFB_TSA_TNB_CK1
    7437             :         use pm_kind, only: CKC => CK1
    7438             : #define DISPATCH_ENABLED 1
    7439             : #include "pm_matrixMulAdd@routines.inc.F90"
    7440             : #undef  DISPATCH_ENABLED
    7441             :     end procedure
    7442             : #endif
    7443             : 
    7444             : #undef CK_ENABLED
    7445             : 
    7446             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    7447             : 
    7448             : #define RK_ENABLED 1
    7449             : 
    7450             : #if RK5_ENABLED
    7451             :     module procedure gemm_EXP_SFA_SFB_TSA_TNB_RK5
    7452             :         use pm_kind, only: RKC => RK5
    7453             : #include "pm_matrixMulAdd@routines.inc.F90"
    7454             :     end procedure
    7455             : #endif
    7456             : 
    7457             : #if RK4_ENABLED
    7458         100 :     module procedure gemm_EXP_SFA_SFB_TSA_TNB_RK4
    7459             :         use pm_kind, only: RKC => RK4
    7460             : #include "pm_matrixMulAdd@routines.inc.F90"
    7461             :     end procedure
    7462             : #endif
    7463             : 
    7464             : #if RK3_ENABLED
    7465         100 :     module procedure gemm_EXP_SFA_SFB_TSA_TNB_RK3
    7466             :         use pm_kind, only: RKC => RK3
    7467             : #include "pm_matrixMulAdd@routines.inc.F90"
    7468             :     end procedure
    7469             : #endif
    7470             : 
    7471             : #if RK2_ENABLED
    7472         100 :     module procedure gemm_EXP_SFA_SFB_TSA_TNB_RK2
    7473             :         use pm_kind, only: RKC => RK2
    7474             : #define DISPATCH_ENABLED 1
    7475             : #include "pm_matrixMulAdd@routines.inc.F90"
    7476             : #undef  DISPATCH_ENABLED
    7477             :     end procedure
    7478             : #endif
    7479             : 
    7480             : #if RK1_ENABLED
    7481         100 :     module procedure gemm_EXP_SFA_SFB_TSA_TNB_RK1
    7482             :         use pm_kind, only: RKC => RK1
    7483             : #define DISPATCH_ENABLED 1
    7484             : #include "pm_matrixMulAdd@routines.inc.F90"
    7485             : #undef  DISPATCH_ENABLED
    7486             :     end procedure
    7487             : #endif
    7488             : 
    7489             : #undef RK_ENABLED
    7490             : 
    7491             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    7492             : 
    7493             : #undef TSA_ENABLED
    7494             : #undef TNB_ENABLED
    7495             : 
    7496             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    7497             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    7498             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    7499             : 
    7500             : #define THA_ENABLED 1
    7501             : #define TNB_ENABLED 1
    7502             : 
    7503             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    7504             : 
    7505             : #define IK_ENABLED 1
    7506             : 
    7507             : #if IK5_ENABLED
    7508         100 :     module procedure gemm_EXP_SFA_SFB_THA_TNB_IK5
    7509             :         use pm_kind, only: IKC => IK5
    7510             : #include "pm_matrixMulAdd@routines.inc.F90"
    7511             :     end procedure
    7512             : #endif
    7513             : 
    7514             : #if IK4_ENABLED
    7515         100 :     module procedure gemm_EXP_SFA_SFB_THA_TNB_IK4
    7516             :         use pm_kind, only: IKC => IK4
    7517             : #include "pm_matrixMulAdd@routines.inc.F90"
    7518             :     end procedure
    7519             : #endif
    7520             : 
    7521             : #if IK3_ENABLED
    7522         100 :     module procedure gemm_EXP_SFA_SFB_THA_TNB_IK3
    7523             :         use pm_kind, only: IKC => IK3
    7524             : #include "pm_matrixMulAdd@routines.inc.F90"
    7525             :     end procedure
    7526             : #endif
    7527             : 
    7528             : #if IK2_ENABLED
    7529         100 :     module procedure gemm_EXP_SFA_SFB_THA_TNB_IK2
    7530             :         use pm_kind, only: IKC => IK2
    7531             : #include "pm_matrixMulAdd@routines.inc.F90"
    7532             :     end procedure
    7533             : #endif
    7534             : 
    7535             : #if IK1_ENABLED
    7536         100 :     module procedure gemm_EXP_SFA_SFB_THA_TNB_IK1
    7537             :         use pm_kind, only: IKC => IK1
    7538             : #include "pm_matrixMulAdd@routines.inc.F90"
    7539             :     end procedure
    7540             : #endif
    7541             : 
    7542             : #undef IK_ENABLED
    7543             : 
    7544             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    7545             : 
    7546             : #define CK_ENABLED 1
    7547             : 
    7548             : #if CK5_ENABLED
    7549             :     module procedure gemm_EXP_SFA_SFB_THA_TNB_CK5
    7550             :         use pm_kind, only: CKC => CK5
    7551             : #include "pm_matrixMulAdd@routines.inc.F90"
    7552             :     end procedure
    7553             : #endif
    7554             : 
    7555             : #if CK4_ENABLED
    7556         161 :     module procedure gemm_EXP_SFA_SFB_THA_TNB_CK4
    7557             :         use pm_kind, only: CKC => CK4
    7558             : #include "pm_matrixMulAdd@routines.inc.F90"
    7559             :     end procedure
    7560             : #endif
    7561             : 
    7562             : #if CK3_ENABLED
    7563         140 :     module procedure gemm_EXP_SFA_SFB_THA_TNB_CK3
    7564             :         use pm_kind, only: CKC => CK3
    7565             : #include "pm_matrixMulAdd@routines.inc.F90"
    7566             :     end procedure
    7567             : #endif
    7568             : 
    7569             : #if CK2_ENABLED
    7570         163 :     module procedure gemm_EXP_SFA_SFB_THA_TNB_CK2
    7571             :         use pm_kind, only: CKC => CK2
    7572             : #define DISPATCH_ENABLED 1
    7573             : #include "pm_matrixMulAdd@routines.inc.F90"
    7574             : #undef  DISPATCH_ENABLED
    7575             :     end procedure
    7576             : #endif
    7577             : 
    7578             : #if CK1_ENABLED
    7579         156 :     module procedure gemm_EXP_SFA_SFB_THA_TNB_CK1
    7580             :         use pm_kind, only: CKC => CK1
    7581             : #define DISPATCH_ENABLED 1
    7582             : #include "pm_matrixMulAdd@routines.inc.F90"
    7583             : #undef  DISPATCH_ENABLED
    7584             :     end procedure
    7585             : #endif
    7586             : 
    7587             : #undef CK_ENABLED
    7588             : 
    7589             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    7590             : 
    7591             : #define RK_ENABLED 1
    7592             : 
    7593             : #if RK5_ENABLED
    7594             :     module procedure gemm_EXP_SFA_SFB_THA_TNB_RK5
    7595             :         use pm_kind, only: RKC => RK5
    7596             : #include "pm_matrixMulAdd@routines.inc.F90"
    7597             :     end procedure
    7598             : #endif
    7599             : 
    7600             : #if RK4_ENABLED
    7601         164 :     module procedure gemm_EXP_SFA_SFB_THA_TNB_RK4
    7602             :         use pm_kind, only: RKC => RK4
    7603             : #include "pm_matrixMulAdd@routines.inc.F90"
    7604             :     end procedure
    7605             : #endif
    7606             : 
    7607             : #if RK3_ENABLED
    7608         143 :     module procedure gemm_EXP_SFA_SFB_THA_TNB_RK3
    7609             :         use pm_kind, only: RKC => RK3
    7610             : #include "pm_matrixMulAdd@routines.inc.F90"
    7611             :     end procedure
    7612             : #endif
    7613             : 
    7614             : #if RK2_ENABLED
    7615         156 :     module procedure gemm_EXP_SFA_SFB_THA_TNB_RK2
    7616             :         use pm_kind, only: RKC => RK2
    7617             : #define DISPATCH_ENABLED 1
    7618             : #include "pm_matrixMulAdd@routines.inc.F90"
    7619             : #undef  DISPATCH_ENABLED
    7620             :     end procedure
    7621             : #endif
    7622             : 
    7623             : #if RK1_ENABLED
    7624         162 :     module procedure gemm_EXP_SFA_SFB_THA_TNB_RK1
    7625             :         use pm_kind, only: RKC => RK1
    7626             : #define DISPATCH_ENABLED 1
    7627             : #include "pm_matrixMulAdd@routines.inc.F90"
    7628             : #undef  DISPATCH_ENABLED
    7629             :     end procedure
    7630             : #endif
    7631             : 
    7632             : #undef RK_ENABLED
    7633             : 
    7634             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    7635             : 
    7636             : #undef THA_ENABLED
    7637             : 
    7638             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    7639             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    7640             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    7641             : 
    7642             : #undef TNB_ENABLED
    7643             : 
    7644             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    7645             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    7646             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    7647             : 
    7648             : #define TSB_ENABLED 1
    7649             : 
    7650             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    7651             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    7652             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    7653             : 
    7654             : #define TNA_ENABLED 1
    7655             : 
    7656             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    7657             : 
    7658             : #define IK_ENABLED 1
    7659             : 
    7660             : #if IK5_ENABLED
    7661         100 :     module procedure gemm_EXP_SFA_SFB_TNA_TSB_IK5
    7662             :         use pm_kind, only: IKC => IK5
    7663             : #include "pm_matrixMulAdd@routines.inc.F90"
    7664             :     end procedure
    7665             : #endif
    7666             : 
    7667             : #if IK4_ENABLED
    7668         100 :     module procedure gemm_EXP_SFA_SFB_TNA_TSB_IK4
    7669             :         use pm_kind, only: IKC => IK4
    7670             : #include "pm_matrixMulAdd@routines.inc.F90"
    7671             :     end procedure
    7672             : #endif
    7673             : 
    7674             : #if IK3_ENABLED
    7675         101 :     module procedure gemm_EXP_SFA_SFB_TNA_TSB_IK3
    7676             :         use pm_kind, only: IKC => IK3
    7677             : #include "pm_matrixMulAdd@routines.inc.F90"
    7678             :     end procedure
    7679             : #endif
    7680             : 
    7681             : #if IK2_ENABLED
    7682         100 :     module procedure gemm_EXP_SFA_SFB_TNA_TSB_IK2
    7683             :         use pm_kind, only: IKC => IK2
    7684             : #include "pm_matrixMulAdd@routines.inc.F90"
    7685             :     end procedure
    7686             : #endif
    7687             : 
    7688             : #if IK1_ENABLED
    7689         100 :     module procedure gemm_EXP_SFA_SFB_TNA_TSB_IK1
    7690             :         use pm_kind, only: IKC => IK1
    7691             : #include "pm_matrixMulAdd@routines.inc.F90"
    7692             :     end procedure
    7693             : #endif
    7694             : 
    7695             : #undef IK_ENABLED
    7696             : 
    7697             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    7698             : 
    7699             : #define CK_ENABLED 1
    7700             : 
    7701             : #if CK5_ENABLED
    7702             :     module procedure gemm_EXP_SFA_SFB_TNA_TSB_CK5
    7703             :         use pm_kind, only: CKC => CK5
    7704             : #include "pm_matrixMulAdd@routines.inc.F90"
    7705             :     end procedure
    7706             : #endif
    7707             : 
    7708             : #if CK4_ENABLED
    7709         100 :     module procedure gemm_EXP_SFA_SFB_TNA_TSB_CK4
    7710             :         use pm_kind, only: CKC => CK4
    7711             : #include "pm_matrixMulAdd@routines.inc.F90"
    7712             :     end procedure
    7713             : #endif
    7714             : 
    7715             : #if CK3_ENABLED
    7716         100 :     module procedure gemm_EXP_SFA_SFB_TNA_TSB_CK3
    7717             :         use pm_kind, only: CKC => CK3
    7718             : #include "pm_matrixMulAdd@routines.inc.F90"
    7719             :     end procedure
    7720             : #endif
    7721             : 
    7722             : #if CK2_ENABLED
    7723         100 :     module procedure gemm_EXP_SFA_SFB_TNA_TSB_CK2
    7724             :         use pm_kind, only: CKC => CK2
    7725             : #define DISPATCH_ENABLED 1
    7726             : #include "pm_matrixMulAdd@routines.inc.F90"
    7727             : #undef  DISPATCH_ENABLED
    7728             :     end procedure
    7729             : #endif
    7730             : 
    7731             : #if CK1_ENABLED
    7732         100 :     module procedure gemm_EXP_SFA_SFB_TNA_TSB_CK1
    7733             :         use pm_kind, only: CKC => CK1
    7734             : #define DISPATCH_ENABLED 1
    7735             : #include "pm_matrixMulAdd@routines.inc.F90"
    7736             : #undef  DISPATCH_ENABLED
    7737             :     end procedure
    7738             : #endif
    7739             : 
    7740             : #undef CK_ENABLED
    7741             : 
    7742             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    7743             : 
    7744             : #define RK_ENABLED 1
    7745             : 
    7746             : #if RK5_ENABLED
    7747             :     module procedure gemm_EXP_SFA_SFB_TNA_TSB_RK5
    7748             :         use pm_kind, only: RKC => RK5
    7749             : #include "pm_matrixMulAdd@routines.inc.F90"
    7750             :     end procedure
    7751             : #endif
    7752             : 
    7753             : #if RK4_ENABLED
    7754         100 :     module procedure gemm_EXP_SFA_SFB_TNA_TSB_RK4
    7755             :         use pm_kind, only: RKC => RK4
    7756             : #include "pm_matrixMulAdd@routines.inc.F90"
    7757             :     end procedure
    7758             : #endif
    7759             : 
    7760             : #if RK3_ENABLED
    7761         100 :     module procedure gemm_EXP_SFA_SFB_TNA_TSB_RK3
    7762             :         use pm_kind, only: RKC => RK3
    7763             : #include "pm_matrixMulAdd@routines.inc.F90"
    7764             :     end procedure
    7765             : #endif
    7766             : 
    7767             : #if RK2_ENABLED
    7768         100 :     module procedure gemm_EXP_SFA_SFB_TNA_TSB_RK2
    7769             :         use pm_kind, only: RKC => RK2
    7770             : #define DISPATCH_ENABLED 1
    7771             : #include "pm_matrixMulAdd@routines.inc.F90"
    7772             : #undef  DISPATCH_ENABLED
    7773             :     end procedure
    7774             : #endif
    7775             : 
    7776             : #if RK1_ENABLED
    7777         101 :     module procedure gemm_EXP_SFA_SFB_TNA_TSB_RK1
    7778             :         use pm_kind, only: RKC => RK1
    7779             : #define DISPATCH_ENABLED 1
    7780             : #include "pm_matrixMulAdd@routines.inc.F90"
    7781             : #undef  DISPATCH_ENABLED
    7782             :     end procedure
    7783             : #endif
    7784             : 
    7785             : #undef RK_ENABLED
    7786             : 
    7787             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    7788             : 
    7789             : #undef TNA_ENABLED
    7790             : #undef TSB_ENABLED
    7791             : 
    7792             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    7793             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    7794             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    7795             : 
    7796             : #define TSA_ENABLED 1
    7797             : #define TSB_ENABLED 1
    7798             : 
    7799             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    7800             : 
    7801             : #define IK_ENABLED 1
    7802             : 
    7803             : #if IK5_ENABLED
    7804         100 :     module procedure gemm_EXP_SFA_SFB_TSA_TSB_IK5
    7805             :         use pm_kind, only: IKC => IK5
    7806             : #include "pm_matrixMulAdd@routines.inc.F90"
    7807             :     end procedure
    7808             : #endif
    7809             : 
    7810             : #if IK4_ENABLED
    7811         100 :     module procedure gemm_EXP_SFA_SFB_TSA_TSB_IK4
    7812             :         use pm_kind, only: IKC => IK4
    7813             : #include "pm_matrixMulAdd@routines.inc.F90"
    7814             :     end procedure
    7815             : #endif
    7816             : 
    7817             : #if IK3_ENABLED
    7818         100 :     module procedure gemm_EXP_SFA_SFB_TSA_TSB_IK3
    7819             :         use pm_kind, only: IKC => IK3
    7820             : #include "pm_matrixMulAdd@routines.inc.F90"
    7821             :     end procedure
    7822             : #endif
    7823             : 
    7824             : #if IK2_ENABLED
    7825         100 :     module procedure gemm_EXP_SFA_SFB_TSA_TSB_IK2
    7826             :         use pm_kind, only: IKC => IK2
    7827             : #include "pm_matrixMulAdd@routines.inc.F90"
    7828             :     end procedure
    7829             : #endif
    7830             : 
    7831             : #if IK1_ENABLED
    7832         100 :     module procedure gemm_EXP_SFA_SFB_TSA_TSB_IK1
    7833             :         use pm_kind, only: IKC => IK1
    7834             : #include "pm_matrixMulAdd@routines.inc.F90"
    7835             :     end procedure
    7836             : #endif
    7837             : 
    7838             : #undef IK_ENABLED
    7839             : 
    7840             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    7841             : 
    7842             : #define CK_ENABLED 1
    7843             : 
    7844             : #if CK5_ENABLED
    7845             :     module procedure gemm_EXP_SFA_SFB_TSA_TSB_CK5
    7846             :         use pm_kind, only: CKC => CK5
    7847             : #include "pm_matrixMulAdd@routines.inc.F90"
    7848             :     end procedure
    7849             : #endif
    7850             : 
    7851             : #if CK4_ENABLED
    7852         100 :     module procedure gemm_EXP_SFA_SFB_TSA_TSB_CK4
    7853             :         use pm_kind, only: CKC => CK4
    7854             : #include "pm_matrixMulAdd@routines.inc.F90"
    7855             :     end procedure
    7856             : #endif
    7857             : 
    7858             : #if CK3_ENABLED
    7859         100 :     module procedure gemm_EXP_SFA_SFB_TSA_TSB_CK3
    7860             :         use pm_kind, only: CKC => CK3
    7861             : #include "pm_matrixMulAdd@routines.inc.F90"
    7862             :     end procedure
    7863             : #endif
    7864             : 
    7865             : #if CK2_ENABLED
    7866         100 :     module procedure gemm_EXP_SFA_SFB_TSA_TSB_CK2
    7867             :         use pm_kind, only: CKC => CK2
    7868             : #define DISPATCH_ENABLED 1
    7869             : #include "pm_matrixMulAdd@routines.inc.F90"
    7870             : #undef  DISPATCH_ENABLED
    7871             :     end procedure
    7872             : #endif
    7873             : 
    7874             : #if CK1_ENABLED
    7875         100 :     module procedure gemm_EXP_SFA_SFB_TSA_TSB_CK1
    7876             :         use pm_kind, only: CKC => CK1
    7877             : #define DISPATCH_ENABLED 1
    7878             : #include "pm_matrixMulAdd@routines.inc.F90"
    7879             : #undef  DISPATCH_ENABLED
    7880             :     end procedure
    7881             : #endif
    7882             : 
    7883             : #undef CK_ENABLED
    7884             : 
    7885             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    7886             : 
    7887             : #define RK_ENABLED 1
    7888             : 
    7889             : #if RK5_ENABLED
    7890             :     module procedure gemm_EXP_SFA_SFB_TSA_TSB_RK5
    7891             :         use pm_kind, only: RKC => RK5
    7892             : #include "pm_matrixMulAdd@routines.inc.F90"
    7893             :     end procedure
    7894             : #endif
    7895             : 
    7896             : #if RK4_ENABLED
    7897         100 :     module procedure gemm_EXP_SFA_SFB_TSA_TSB_RK4
    7898             :         use pm_kind, only: RKC => RK4
    7899             : #include "pm_matrixMulAdd@routines.inc.F90"
    7900             :     end procedure
    7901             : #endif
    7902             : 
    7903             : #if RK3_ENABLED
    7904         100 :     module procedure gemm_EXP_SFA_SFB_TSA_TSB_RK3
    7905             :         use pm_kind, only: RKC => RK3
    7906             : #include "pm_matrixMulAdd@routines.inc.F90"
    7907             :     end procedure
    7908             : #endif
    7909             : 
    7910             : #if RK2_ENABLED
    7911         100 :     module procedure gemm_EXP_SFA_SFB_TSA_TSB_RK2
    7912             :         use pm_kind, only: RKC => RK2
    7913             : #define DISPATCH_ENABLED 1
    7914             : #include "pm_matrixMulAdd@routines.inc.F90"
    7915             : #undef  DISPATCH_ENABLED
    7916             :     end procedure
    7917             : #endif
    7918             : 
    7919             : #if RK1_ENABLED
    7920         100 :     module procedure gemm_EXP_SFA_SFB_TSA_TSB_RK1
    7921             :         use pm_kind, only: RKC => RK1
    7922             : #define DISPATCH_ENABLED 1
    7923             : #include "pm_matrixMulAdd@routines.inc.F90"
    7924             : #undef  DISPATCH_ENABLED
    7925             :     end procedure
    7926             : #endif
    7927             : 
    7928             : #undef RK_ENABLED
    7929             : 
    7930             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    7931             : 
    7932             : #undef TSA_ENABLED
    7933             : #undef TSB_ENABLED
    7934             : 
    7935             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    7936             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    7937             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    7938             : 
    7939             : #define THA_ENABLED 1
    7940             : #define TSB_ENABLED 1
    7941             : 
    7942             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    7943             : 
    7944             : #define IK_ENABLED 1
    7945             : 
    7946             : #if IK5_ENABLED
    7947         100 :     module procedure gemm_EXP_SFA_SFB_THA_TSB_IK5
    7948             :         use pm_kind, only: IKC => IK5
    7949             : #include "pm_matrixMulAdd@routines.inc.F90"
    7950             :     end procedure
    7951             : #endif
    7952             : 
    7953             : #if IK4_ENABLED
    7954         100 :     module procedure gemm_EXP_SFA_SFB_THA_TSB_IK4
    7955             :         use pm_kind, only: IKC => IK4
    7956             : #include "pm_matrixMulAdd@routines.inc.F90"
    7957             :     end procedure
    7958             : #endif
    7959             : 
    7960             : #if IK3_ENABLED
    7961         100 :     module procedure gemm_EXP_SFA_SFB_THA_TSB_IK3
    7962             :         use pm_kind, only: IKC => IK3
    7963             : #include "pm_matrixMulAdd@routines.inc.F90"
    7964             :     end procedure
    7965             : #endif
    7966             : 
    7967             : #if IK2_ENABLED
    7968         100 :     module procedure gemm_EXP_SFA_SFB_THA_TSB_IK2
    7969             :         use pm_kind, only: IKC => IK2
    7970             : #include "pm_matrixMulAdd@routines.inc.F90"
    7971             :     end procedure
    7972             : #endif
    7973             : 
    7974             : #if IK1_ENABLED
    7975         100 :     module procedure gemm_EXP_SFA_SFB_THA_TSB_IK1
    7976             :         use pm_kind, only: IKC => IK1
    7977             : #include "pm_matrixMulAdd@routines.inc.F90"
    7978             :     end procedure
    7979             : #endif
    7980             : 
    7981             : #undef IK_ENABLED
    7982             : 
    7983             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    7984             : 
    7985             : #define CK_ENABLED 1
    7986             : 
    7987             : #if CK5_ENABLED
    7988             :     module procedure gemm_EXP_SFA_SFB_THA_TSB_CK5
    7989             :         use pm_kind, only: CKC => CK5
    7990             : #include "pm_matrixMulAdd@routines.inc.F90"
    7991             :     end procedure
    7992             : #endif
    7993             : 
    7994             : #if CK4_ENABLED
    7995         100 :     module procedure gemm_EXP_SFA_SFB_THA_TSB_CK4
    7996             :         use pm_kind, only: CKC => CK4
    7997             : #include "pm_matrixMulAdd@routines.inc.F90"
    7998             :     end procedure
    7999             : #endif
    8000             : 
    8001             : #if CK3_ENABLED
    8002         100 :     module procedure gemm_EXP_SFA_SFB_THA_TSB_CK3
    8003             :         use pm_kind, only: CKC => CK3
    8004             : #include "pm_matrixMulAdd@routines.inc.F90"
    8005             :     end procedure
    8006             : #endif
    8007             : 
    8008             : #if CK2_ENABLED
    8009         100 :     module procedure gemm_EXP_SFA_SFB_THA_TSB_CK2
    8010             :         use pm_kind, only: CKC => CK2
    8011             : #define DISPATCH_ENABLED 1
    8012             : #include "pm_matrixMulAdd@routines.inc.F90"
    8013             : #undef  DISPATCH_ENABLED
    8014             :     end procedure
    8015             : #endif
    8016             : 
    8017             : #if CK1_ENABLED
    8018         100 :     module procedure gemm_EXP_SFA_SFB_THA_TSB_CK1
    8019             :         use pm_kind, only: CKC => CK1
    8020             : #define DISPATCH_ENABLED 1
    8021             : #include "pm_matrixMulAdd@routines.inc.F90"
    8022             : #undef  DISPATCH_ENABLED
    8023             :     end procedure
    8024             : #endif
    8025             : 
    8026             : #undef CK_ENABLED
    8027             : 
    8028             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    8029             : 
    8030             : #define RK_ENABLED 1
    8031             : 
    8032             : #if RK5_ENABLED
    8033             :     module procedure gemm_EXP_SFA_SFB_THA_TSB_RK5
    8034             :         use pm_kind, only: RKC => RK5
    8035             : #include "pm_matrixMulAdd@routines.inc.F90"
    8036             :     end procedure
    8037             : #endif
    8038             : 
    8039             : #if RK4_ENABLED
    8040         100 :     module procedure gemm_EXP_SFA_SFB_THA_TSB_RK4
    8041             :         use pm_kind, only: RKC => RK4
    8042             : #include "pm_matrixMulAdd@routines.inc.F90"
    8043             :     end procedure
    8044             : #endif
    8045             : 
    8046             : #if RK3_ENABLED
    8047         100 :     module procedure gemm_EXP_SFA_SFB_THA_TSB_RK3
    8048             :         use pm_kind, only: RKC => RK3
    8049             : #include "pm_matrixMulAdd@routines.inc.F90"
    8050             :     end procedure
    8051             : #endif
    8052             : 
    8053             : #if RK2_ENABLED
    8054         100 :     module procedure gemm_EXP_SFA_SFB_THA_TSB_RK2
    8055             :         use pm_kind, only: RKC => RK2
    8056             : #define DISPATCH_ENABLED 1
    8057             : #include "pm_matrixMulAdd@routines.inc.F90"
    8058             : #undef  DISPATCH_ENABLED
    8059             :     end procedure
    8060             : #endif
    8061             : 
    8062             : #if RK1_ENABLED
    8063         100 :     module procedure gemm_EXP_SFA_SFB_THA_TSB_RK1
    8064             :         use pm_kind, only: RKC => RK1
    8065             : #define DISPATCH_ENABLED 1
    8066             : #include "pm_matrixMulAdd@routines.inc.F90"
    8067             : #undef  DISPATCH_ENABLED
    8068             :     end procedure
    8069             : #endif
    8070             : 
    8071             : #undef RK_ENABLED
    8072             : 
    8073             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    8074             : 
    8075             : #undef THA_ENABLED
    8076             : 
    8077             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    8078             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    8079             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    8080             : 
    8081             : #undef TSB_ENABLED
    8082             : 
    8083             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    8084             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    8085             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    8086             : 
    8087             : #define THB_ENABLED 1
    8088             : 
    8089             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    8090             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    8091             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    8092             : 
    8093             : #define TNA_ENABLED 1
    8094             : 
    8095             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    8096             : 
    8097             : #define IK_ENABLED 1
    8098             : 
    8099             : #if IK5_ENABLED
    8100         100 :     module procedure gemm_EXP_SFA_SFB_TNA_THB_IK5
    8101             :         use pm_kind, only: IKC => IK5
    8102             : #include "pm_matrixMulAdd@routines.inc.F90"
    8103             :     end procedure
    8104             : #endif
    8105             : 
    8106             : #if IK4_ENABLED
    8107         100 :     module procedure gemm_EXP_SFA_SFB_TNA_THB_IK4
    8108             :         use pm_kind, only: IKC => IK4
    8109             : #include "pm_matrixMulAdd@routines.inc.F90"
    8110             :     end procedure
    8111             : #endif
    8112             : 
    8113             : #if IK3_ENABLED
    8114         100 :     module procedure gemm_EXP_SFA_SFB_TNA_THB_IK3
    8115             :         use pm_kind, only: IKC => IK3
    8116             : #include "pm_matrixMulAdd@routines.inc.F90"
    8117             :     end procedure
    8118             : #endif
    8119             : 
    8120             : #if IK2_ENABLED
    8121         100 :     module procedure gemm_EXP_SFA_SFB_TNA_THB_IK2
    8122             :         use pm_kind, only: IKC => IK2
    8123             : #include "pm_matrixMulAdd@routines.inc.F90"
    8124             :     end procedure
    8125             : #endif
    8126             : 
    8127             : #if IK1_ENABLED
    8128         100 :     module procedure gemm_EXP_SFA_SFB_TNA_THB_IK1
    8129             :         use pm_kind, only: IKC => IK1
    8130             : #include "pm_matrixMulAdd@routines.inc.F90"
    8131             :     end procedure
    8132             : #endif
    8133             : 
    8134             : #undef IK_ENABLED
    8135             : 
    8136             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    8137             : 
    8138             : #define CK_ENABLED 1
    8139             : 
    8140             : #if CK5_ENABLED
    8141             :     module procedure gemm_EXP_SFA_SFB_TNA_THB_CK5
    8142             :         use pm_kind, only: CKC => CK5
    8143             : #include "pm_matrixMulAdd@routines.inc.F90"
    8144             :     end procedure
    8145             : #endif
    8146             : 
    8147             : #if CK4_ENABLED
    8148         161 :     module procedure gemm_EXP_SFA_SFB_TNA_THB_CK4
    8149             :         use pm_kind, only: CKC => CK4
    8150             : #include "pm_matrixMulAdd@routines.inc.F90"
    8151             :     end procedure
    8152             : #endif
    8153             : 
    8154             : #if CK3_ENABLED
    8155         140 :     module procedure gemm_EXP_SFA_SFB_TNA_THB_CK3
    8156             :         use pm_kind, only: CKC => CK3
    8157             : #include "pm_matrixMulAdd@routines.inc.F90"
    8158             :     end procedure
    8159             : #endif
    8160             : 
    8161             : #if CK2_ENABLED
    8162         163 :     module procedure gemm_EXP_SFA_SFB_TNA_THB_CK2
    8163             :         use pm_kind, only: CKC => CK2
    8164             : #define DISPATCH_ENABLED 1
    8165             : #include "pm_matrixMulAdd@routines.inc.F90"
    8166             : #undef  DISPATCH_ENABLED
    8167             :     end procedure
    8168             : #endif
    8169             : 
    8170             : #if CK1_ENABLED
    8171         155 :     module procedure gemm_EXP_SFA_SFB_TNA_THB_CK1
    8172             :         use pm_kind, only: CKC => CK1
    8173             : #define DISPATCH_ENABLED 1
    8174             : #include "pm_matrixMulAdd@routines.inc.F90"
    8175             : #undef  DISPATCH_ENABLED
    8176             :     end procedure
    8177             : #endif
    8178             : 
    8179             : #undef CK_ENABLED
    8180             : 
    8181             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    8182             : 
    8183             : #define RK_ENABLED 1
    8184             : 
    8185             : #if RK5_ENABLED
    8186             :     module procedure gemm_EXP_SFA_SFB_TNA_THB_RK5
    8187             :         use pm_kind, only: RKC => RK5
    8188             : #include "pm_matrixMulAdd@routines.inc.F90"
    8189             :     end procedure
    8190             : #endif
    8191             : 
    8192             : #if RK4_ENABLED
    8193         164 :     module procedure gemm_EXP_SFA_SFB_TNA_THB_RK4
    8194             :         use pm_kind, only: RKC => RK4
    8195             : #include "pm_matrixMulAdd@routines.inc.F90"
    8196             :     end procedure
    8197             : #endif
    8198             : 
    8199             : #if RK3_ENABLED
    8200         143 :     module procedure gemm_EXP_SFA_SFB_TNA_THB_RK3
    8201             :         use pm_kind, only: RKC => RK3
    8202             : #include "pm_matrixMulAdd@routines.inc.F90"
    8203             :     end procedure
    8204             : #endif
    8205             : 
    8206             : #if RK2_ENABLED
    8207         156 :     module procedure gemm_EXP_SFA_SFB_TNA_THB_RK2
    8208             :         use pm_kind, only: RKC => RK2
    8209             : #define DISPATCH_ENABLED 1
    8210             : #include "pm_matrixMulAdd@routines.inc.F90"
    8211             : #undef  DISPATCH_ENABLED
    8212             :     end procedure
    8213             : #endif
    8214             : 
    8215             : #if RK1_ENABLED
    8216         162 :     module procedure gemm_EXP_SFA_SFB_TNA_THB_RK1
    8217             :         use pm_kind, only: RKC => RK1
    8218             : #define DISPATCH_ENABLED 1
    8219             : #include "pm_matrixMulAdd@routines.inc.F90"
    8220             : #undef  DISPATCH_ENABLED
    8221             :     end procedure
    8222             : #endif
    8223             : 
    8224             : #undef RK_ENABLED
    8225             : 
    8226             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    8227             : 
    8228             : #undef TNA_ENABLED
    8229             : #undef THB_ENABLED
    8230             : 
    8231             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    8232             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    8233             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    8234             : 
    8235             : #define TSA_ENABLED 1
    8236             : #define THB_ENABLED 1
    8237             : 
    8238             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    8239             : 
    8240             : #define IK_ENABLED 1
    8241             : 
    8242             : #if IK5_ENABLED
    8243         100 :     module procedure gemm_EXP_SFA_SFB_TSA_THB_IK5
    8244             :         use pm_kind, only: IKC => IK5
    8245             : #include "pm_matrixMulAdd@routines.inc.F90"
    8246             :     end procedure
    8247             : #endif
    8248             : 
    8249             : #if IK4_ENABLED
    8250         100 :     module procedure gemm_EXP_SFA_SFB_TSA_THB_IK4
    8251             :         use pm_kind, only: IKC => IK4
    8252             : #include "pm_matrixMulAdd@routines.inc.F90"
    8253             :     end procedure
    8254             : #endif
    8255             : 
    8256             : #if IK3_ENABLED
    8257         100 :     module procedure gemm_EXP_SFA_SFB_TSA_THB_IK3
    8258             :         use pm_kind, only: IKC => IK3
    8259             : #include "pm_matrixMulAdd@routines.inc.F90"
    8260             :     end procedure
    8261             : #endif
    8262             : 
    8263             : #if IK2_ENABLED
    8264         100 :     module procedure gemm_EXP_SFA_SFB_TSA_THB_IK2
    8265             :         use pm_kind, only: IKC => IK2
    8266             : #include "pm_matrixMulAdd@routines.inc.F90"
    8267             :     end procedure
    8268             : #endif
    8269             : 
    8270             : #if IK1_ENABLED
    8271         100 :     module procedure gemm_EXP_SFA_SFB_TSA_THB_IK1
    8272             :         use pm_kind, only: IKC => IK1
    8273             : #include "pm_matrixMulAdd@routines.inc.F90"
    8274             :     end procedure
    8275             : #endif
    8276             : 
    8277             : #undef IK_ENABLED
    8278             : 
    8279             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    8280             : 
    8281             : #define CK_ENABLED 1
    8282             : 
    8283             : #if CK5_ENABLED
    8284             :     module procedure gemm_EXP_SFA_SFB_TSA_THB_CK5
    8285             :         use pm_kind, only: CKC => CK5
    8286             : #include "pm_matrixMulAdd@routines.inc.F90"
    8287             :     end procedure
    8288             : #endif
    8289             : 
    8290             : #if CK4_ENABLED
    8291         100 :     module procedure gemm_EXP_SFA_SFB_TSA_THB_CK4
    8292             :         use pm_kind, only: CKC => CK4
    8293             : #include "pm_matrixMulAdd@routines.inc.F90"
    8294             :     end procedure
    8295             : #endif
    8296             : 
    8297             : #if CK3_ENABLED
    8298         100 :     module procedure gemm_EXP_SFA_SFB_TSA_THB_CK3
    8299             :         use pm_kind, only: CKC => CK3
    8300             : #include "pm_matrixMulAdd@routines.inc.F90"
    8301             :     end procedure
    8302             : #endif
    8303             : 
    8304             : #if CK2_ENABLED
    8305         100 :     module procedure gemm_EXP_SFA_SFB_TSA_THB_CK2
    8306             :         use pm_kind, only: CKC => CK2
    8307             : #define DISPATCH_ENABLED 1
    8308             : #include "pm_matrixMulAdd@routines.inc.F90"
    8309             : #undef  DISPATCH_ENABLED
    8310             :     end procedure
    8311             : #endif
    8312             : 
    8313             : #if CK1_ENABLED
    8314         100 :     module procedure gemm_EXP_SFA_SFB_TSA_THB_CK1
    8315             :         use pm_kind, only: CKC => CK1
    8316             : #define DISPATCH_ENABLED 1
    8317             : #include "pm_matrixMulAdd@routines.inc.F90"
    8318             : #undef  DISPATCH_ENABLED
    8319             :     end procedure
    8320             : #endif
    8321             : 
    8322             : #undef CK_ENABLED
    8323             : 
    8324             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    8325             : 
    8326             : #define RK_ENABLED 1
    8327             : 
    8328             : #if RK5_ENABLED
    8329             :     module procedure gemm_EXP_SFA_SFB_TSA_THB_RK5
    8330             :         use pm_kind, only: RKC => RK5
    8331             : #include "pm_matrixMulAdd@routines.inc.F90"
    8332             :     end procedure
    8333             : #endif
    8334             : 
    8335             : #if RK4_ENABLED
    8336         100 :     module procedure gemm_EXP_SFA_SFB_TSA_THB_RK4
    8337             :         use pm_kind, only: RKC => RK4
    8338             : #include "pm_matrixMulAdd@routines.inc.F90"
    8339             :     end procedure
    8340             : #endif
    8341             : 
    8342             : #if RK3_ENABLED
    8343         100 :     module procedure gemm_EXP_SFA_SFB_TSA_THB_RK3
    8344             :         use pm_kind, only: RKC => RK3
    8345             : #include "pm_matrixMulAdd@routines.inc.F90"
    8346             :     end procedure
    8347             : #endif
    8348             : 
    8349             : #if RK2_ENABLED
    8350         100 :     module procedure gemm_EXP_SFA_SFB_TSA_THB_RK2
    8351             :         use pm_kind, only: RKC => RK2
    8352             : #define DISPATCH_ENABLED 1
    8353             : #include "pm_matrixMulAdd@routines.inc.F90"
    8354             : #undef  DISPATCH_ENABLED
    8355             :     end procedure
    8356             : #endif
    8357             : 
    8358             : #if RK1_ENABLED
    8359         100 :     module procedure gemm_EXP_SFA_SFB_TSA_THB_RK1
    8360             :         use pm_kind, only: RKC => RK1
    8361             : #define DISPATCH_ENABLED 1
    8362             : #include "pm_matrixMulAdd@routines.inc.F90"
    8363             : #undef  DISPATCH_ENABLED
    8364             :     end procedure
    8365             : #endif
    8366             : 
    8367             : #undef RK_ENABLED
    8368             : 
    8369             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    8370             : 
    8371             : #undef TSA_ENABLED
    8372             : #undef THB_ENABLED
    8373             : 
    8374             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    8375             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    8376             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    8377             : 
    8378             : #define THA_ENABLED 1
    8379             : #define THB_ENABLED 1
    8380             : 
    8381             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    8382             : 
    8383             : #define IK_ENABLED 1
    8384             : 
    8385             : #if IK5_ENABLED
    8386         100 :     module procedure gemm_EXP_SFA_SFB_THA_THB_IK5
    8387             :         use pm_kind, only: IKC => IK5
    8388             : #include "pm_matrixMulAdd@routines.inc.F90"
    8389             :     end procedure
    8390             : #endif
    8391             : 
    8392             : #if IK4_ENABLED
    8393         100 :     module procedure gemm_EXP_SFA_SFB_THA_THB_IK4
    8394             :         use pm_kind, only: IKC => IK4
    8395             : #include "pm_matrixMulAdd@routines.inc.F90"
    8396             :     end procedure
    8397             : #endif
    8398             : 
    8399             : #if IK3_ENABLED
    8400         100 :     module procedure gemm_EXP_SFA_SFB_THA_THB_IK3
    8401             :         use pm_kind, only: IKC => IK3
    8402             : #include "pm_matrixMulAdd@routines.inc.F90"
    8403             :     end procedure
    8404             : #endif
    8405             : 
    8406             : #if IK2_ENABLED
    8407         100 :     module procedure gemm_EXP_SFA_SFB_THA_THB_IK2
    8408             :         use pm_kind, only: IKC => IK2
    8409             : #include "pm_matrixMulAdd@routines.inc.F90"
    8410             :     end procedure
    8411             : #endif
    8412             : 
    8413             : #if IK1_ENABLED
    8414         100 :     module procedure gemm_EXP_SFA_SFB_THA_THB_IK1
    8415             :         use pm_kind, only: IKC => IK1
    8416             : #include "pm_matrixMulAdd@routines.inc.F90"
    8417             :     end procedure
    8418             : #endif
    8419             : 
    8420             : #undef IK_ENABLED
    8421             : 
    8422             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    8423             : 
    8424             : #define CK_ENABLED 1
    8425             : 
    8426             : #if CK5_ENABLED
    8427             :     module procedure gemm_EXP_SFA_SFB_THA_THB_CK5
    8428             :         use pm_kind, only: CKC => CK5
    8429             : #include "pm_matrixMulAdd@routines.inc.F90"
    8430             :     end procedure
    8431             : #endif
    8432             : 
    8433             : #if CK4_ENABLED
    8434         100 :     module procedure gemm_EXP_SFA_SFB_THA_THB_CK4
    8435             :         use pm_kind, only: CKC => CK4
    8436             : #include "pm_matrixMulAdd@routines.inc.F90"
    8437             :     end procedure
    8438             : #endif
    8439             : 
    8440             : #if CK3_ENABLED
    8441         100 :     module procedure gemm_EXP_SFA_SFB_THA_THB_CK3
    8442             :         use pm_kind, only: CKC => CK3
    8443             : #include "pm_matrixMulAdd@routines.inc.F90"
    8444             :     end procedure
    8445             : #endif
    8446             : 
    8447             : #if CK2_ENABLED
    8448         100 :     module procedure gemm_EXP_SFA_SFB_THA_THB_CK2
    8449             :         use pm_kind, only: CKC => CK2
    8450             : #define DISPATCH_ENABLED 1
    8451             : #include "pm_matrixMulAdd@routines.inc.F90"
    8452             : #undef  DISPATCH_ENABLED
    8453             :     end procedure
    8454             : #endif
    8455             : 
    8456             : #if CK1_ENABLED
    8457         100 :     module procedure gemm_EXP_SFA_SFB_THA_THB_CK1
    8458             :         use pm_kind, only: CKC => CK1
    8459             : #define DISPATCH_ENABLED 1
    8460             : #include "pm_matrixMulAdd@routines.inc.F90"
    8461             : #undef  DISPATCH_ENABLED
    8462             :     end procedure
    8463             : #endif
    8464             : 
    8465             : #undef CK_ENABLED
    8466             : 
    8467             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    8468             : 
    8469             : #define RK_ENABLED 1
    8470             : 
    8471             : #if RK5_ENABLED
    8472             :     module procedure gemm_EXP_SFA_SFB_THA_THB_RK5
    8473             :         use pm_kind, only: RKC => RK5
    8474             : #include "pm_matrixMulAdd@routines.inc.F90"
    8475             :     end procedure
    8476             : #endif
    8477             : 
    8478             : #if RK4_ENABLED
    8479         100 :     module procedure gemm_EXP_SFA_SFB_THA_THB_RK4
    8480             :         use pm_kind, only: RKC => RK4
    8481             : #include "pm_matrixMulAdd@routines.inc.F90"
    8482             :     end procedure
    8483             : #endif
    8484             : 
    8485             : #if RK3_ENABLED
    8486         100 :     module procedure gemm_EXP_SFA_SFB_THA_THB_RK3
    8487             :         use pm_kind, only: RKC => RK3
    8488             : #include "pm_matrixMulAdd@routines.inc.F90"
    8489             :     end procedure
    8490             : #endif
    8491             : 
    8492             : #if RK2_ENABLED
    8493         100 :     module procedure gemm_EXP_SFA_SFB_THA_THB_RK2
    8494             :         use pm_kind, only: RKC => RK2
    8495             : #define DISPATCH_ENABLED 1
    8496             : #include "pm_matrixMulAdd@routines.inc.F90"
    8497             : #undef  DISPATCH_ENABLED
    8498             :     end procedure
    8499             : #endif
    8500             : 
    8501             : #if RK1_ENABLED
    8502         100 :     module procedure gemm_EXP_SFA_SFB_THA_THB_RK1
    8503             :         use pm_kind, only: RKC => RK1
    8504             : #define DISPATCH_ENABLED 1
    8505             : #include "pm_matrixMulAdd@routines.inc.F90"
    8506             : #undef  DISPATCH_ENABLED
    8507             :     end procedure
    8508             : #endif
    8509             : 
    8510             : #undef RK_ENABLED
    8511             : 
    8512             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    8513             : 
    8514             : #undef THA_ENABLED
    8515             : 
    8516             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    8517             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    8518             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    8519             : 
    8520             : #undef THB_ENABLED
    8521             : 
    8522             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    8523             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    8524             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    8525             : 
    8526             : #undef EXP_ENABLED
    8527             : 
    8528             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    8529             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    8530             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    8531             : 
    8532             : #undef SFA_ENABLED
    8533             : #undef SFB_ENABLED
    8534             : 
    8535             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    8536             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    8537             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    8538             : 
    8539             : #undef gemm_ENABLED
    8540             : 
    8541             : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    8542             : 
    8543             : #undef setMatMulAdd_ENABLED
    8544             : 
    8545             : #undef CHECK_ASSERTION
    8546             : 
    8547             : end submodule routines

ParaMonte: Parallel Monte Carlo and Machine Learning Library 
The Computational Data Science Lab
© Copyright 2012 - 2024