CP2K 2.4 (Revision 12889)

hfx_contraction_methods.f90

Go to the documentation of this file.
00001 !-----------------------------------------------------------------------------!
00002 !   CP2K: A general program to perform molecular dynamics simulations         !
00003 !   Copyright (C) 2000 - 2013  CP2K developers group                          !
00004 !-----------------------------------------------------------------------------!
00005 
00006 ! *****************************************************************************
00019 
00020 MODULE hfx_contraction_methods
00021 
00022 !** This defines the default behaviour
00023 #ifndef __MAX_CONTR
00024 #define __MAX_CONTR 2
00025 #endif
00026 
00027   USE kinds,                           ONLY: dp
00028 #include "cp_common_uses.h"
00029 
00030   IMPLICIT NONE
00031 
00032 
00033   PRIVATE
00034   PUBLIC contract
00035 
00036 
00037   CONTAINS
00038 
00039   SUBROUTINE  contract(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod, &
00040                        n_a, n_b, n_c, n_d,nl_a, nl_b, nl_c, nl_d, work,&
00041                        sphi_a, sphi_b, sphi_c, sphi_d,&
00042                        primitives, &
00043                        buffer1, buffer2)
00044 
00045     INTEGER, INTENT(IN)         :: ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,
00046                                    n_a, n_b, n_c, n_d, nl_a, nl_b, nl_c, nl_d
00047     REAL(dp), DIMENSION(ncoa*ncob* ncoc* ncod), INTENT(IN) :: work
00048     REAL(dp), DIMENSION(ncoa,nsoa*nl_a), INTENT(IN)   :: sphi_a
00049     REAL(dp), DIMENSION(ncob,nsob*nl_b), INTENT(IN)   :: sphi_b
00050     REAL(dp), DIMENSION(ncoc,nsoc*nl_c), INTENT(IN)   :: sphi_c
00051     REAL(dp), DIMENSION(ncod,nsod*nl_d), INTENT(IN)   :: sphi_d
00052 
00053     REAL(dp), DIMENSION(nsoa*nl_a, nsob*nl_b,nsoc*nl_c,nsod*nl_d) :: primitives
00054     REAL(dp), DIMENSION(ncoa*ncob*ncoc*ncod)  :: buffer1, buffer2
00055 
00056 #if defined(__LIBINT)
00057     SELECT CASE(n_a)
00058     CASE(0)
00059      SELECT CASE(n_b)
00060      CASE(0)
00061       SELECT CASE(n_c)
00062       CASE(0)
00063        SELECT CASE(n_d)
00064        CASE(0)
00065 #if __MAX_CONTR > 0 || __MAX_CONTR == 0
00066         CALL contract_ssss(work,&
00067                  nl_a, nl_b, nl_c, nl_d, &
00068                   sphi_a, sphi_b, sphi_c, sphi_d, &
00069                   primitives,&
00070                   buffer1,buffer2 )
00071 #else
00072         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
00073                               work, nl_a, nl_b, nl_c, nl_d, &
00074                               sphi_a, &
00075                               sphi_b, &
00076                               sphi_c, &
00077                               sphi_d, &
00078                               primitives, &
00079                               buffer1, buffer2)
00080 #endif
00081        CASE(1)
00082 #if __MAX_CONTR > 1 || __MAX_CONTR == 1
00083         CALL contract_sssp(work,&
00084                  nl_a, nl_b, nl_c, nl_d, &
00085                   sphi_a, sphi_b, sphi_c, sphi_d, &
00086                   primitives,&
00087                   buffer1,buffer2 )
00088 #else
00089         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
00090                               work, nl_a, nl_b, nl_c, nl_d, &
00091                               sphi_a, &
00092                               sphi_b, &
00093                               sphi_c, &
00094                               sphi_d, &
00095                               primitives, &
00096                               buffer1, buffer2)
00097 #endif
00098        CASE(2)
00099 #if __MAX_CONTR > 2 || __MAX_CONTR == 2
00100         CALL contract_sssd(work,&
00101                  nl_a, nl_b, nl_c, nl_d, &
00102                   sphi_a, sphi_b, sphi_c, sphi_d, &
00103                   primitives,&
00104                   buffer1,buffer2 )
00105 #else
00106         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
00107                               work, nl_a, nl_b, nl_c, nl_d, &
00108                               sphi_a, &
00109                               sphi_b, &
00110                               sphi_c, &
00111                               sphi_d, &
00112                               primitives, &
00113                               buffer1, buffer2)
00114 #endif
00115        CASE(3)
00116 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
00117         CALL contract_sssf(work,&
00118                  nl_a, nl_b, nl_c, nl_d, &
00119                   sphi_a, sphi_b, sphi_c, sphi_d, &
00120                   primitives,&
00121                   buffer1,buffer2 )
00122 #else
00123         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
00124                               work, nl_a, nl_b, nl_c, nl_d, &
00125                               sphi_a, &
00126                               sphi_b, &
00127                               sphi_c, &
00128                               sphi_d, &
00129                               primitives, &
00130                               buffer1, buffer2)
00131 #endif
00132        CASE(4)
00133 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
00134         CALL contract_sssg(work,&
00135                  nl_a, nl_b, nl_c, nl_d, &
00136                   sphi_a, sphi_b, sphi_c, sphi_d, &
00137                   primitives,&
00138                   buffer1,buffer2 )
00139 #else
00140         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
00141                               work, nl_a, nl_b, nl_c, nl_d, &
00142                               sphi_a, &
00143                               sphi_b, &
00144                               sphi_c, &
00145                               sphi_d, &
00146                               primitives, &
00147                               buffer1, buffer2)
00148 #endif
00149        CASE DEFAULT
00150         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
00151                               work, nl_a, nl_b, nl_c, nl_d, &
00152                               sphi_a, &
00153                               sphi_b, &
00154                               sphi_c, &
00155                               sphi_d, &
00156                               primitives, &
00157                               buffer1, buffer2)
00158        END SELECT
00159       CASE(1)
00160        SELECT CASE(n_d)
00161        CASE(0)
00162 #if __MAX_CONTR > 1 || __MAX_CONTR == 1
00163         CALL contract_ssps(work,&
00164                  nl_a, nl_b, nl_c, nl_d, &
00165                   sphi_a, sphi_b, sphi_c, sphi_d, &
00166                   primitives,&
00167                   buffer1,buffer2 )
00168 #else
00169         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
00170                               work, nl_a, nl_b, nl_c, nl_d, &
00171                               sphi_a, &
00172                               sphi_b, &
00173                               sphi_c, &
00174                               sphi_d, &
00175                               primitives, &
00176                               buffer1, buffer2)
00177 #endif
00178        CASE(1)
00179 #if __MAX_CONTR > 1 || __MAX_CONTR == 1
00180         CALL contract_sspp(work,&
00181                  nl_a, nl_b, nl_c, nl_d, &
00182                   sphi_a, sphi_b, sphi_c, sphi_d, &
00183                   primitives,&
00184                   buffer1,buffer2 )
00185 #else
00186         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
00187                               work, nl_a, nl_b, nl_c, nl_d, &
00188                               sphi_a, &
00189                               sphi_b, &
00190                               sphi_c, &
00191                               sphi_d, &
00192                               primitives, &
00193                               buffer1, buffer2)
00194 #endif
00195        CASE(2)
00196 #if __MAX_CONTR > 2 || __MAX_CONTR == 2
00197         CALL contract_sspd(work,&
00198                  nl_a, nl_b, nl_c, nl_d, &
00199                   sphi_a, sphi_b, sphi_c, sphi_d, &
00200                   primitives,&
00201                   buffer1,buffer2 )
00202 #else
00203         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
00204                               work, nl_a, nl_b, nl_c, nl_d, &
00205                               sphi_a, &
00206                               sphi_b, &
00207                               sphi_c, &
00208                               sphi_d, &
00209                               primitives, &
00210                               buffer1, buffer2)
00211 #endif
00212        CASE(3)
00213 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
00214         CALL contract_sspf(work,&
00215                  nl_a, nl_b, nl_c, nl_d, &
00216                   sphi_a, sphi_b, sphi_c, sphi_d, &
00217                   primitives,&
00218                   buffer1,buffer2 )
00219 #else
00220         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
00221                               work, nl_a, nl_b, nl_c, nl_d, &
00222                               sphi_a, &
00223                               sphi_b, &
00224                               sphi_c, &
00225                               sphi_d, &
00226                               primitives, &
00227                               buffer1, buffer2)
00228 #endif
00229        CASE(4)
00230 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
00231         CALL contract_sspg(work,&
00232                  nl_a, nl_b, nl_c, nl_d, &
00233                   sphi_a, sphi_b, sphi_c, sphi_d, &
00234                   primitives,&
00235                   buffer1,buffer2 )
00236 #else
00237         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
00238                               work, nl_a, nl_b, nl_c, nl_d, &
00239                               sphi_a, &
00240                               sphi_b, &
00241                               sphi_c, &
00242                               sphi_d, &
00243                               primitives, &
00244                               buffer1, buffer2)
00245 #endif
00246        CASE DEFAULT
00247         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
00248                               work, nl_a, nl_b, nl_c, nl_d, &
00249                               sphi_a, &
00250                               sphi_b, &
00251                               sphi_c, &
00252                               sphi_d, &
00253                               primitives, &
00254                               buffer1, buffer2)
00255        END SELECT
00256       CASE(2)
00257        SELECT CASE(n_d)
00258        CASE(0)
00259 #if __MAX_CONTR > 2 || __MAX_CONTR == 2
00260         CALL contract_ssds(work,&
00261                  nl_a, nl_b, nl_c, nl_d, &
00262                   sphi_a, sphi_b, sphi_c, sphi_d, &
00263                   primitives,&
00264                   buffer1,buffer2 )
00265 #else
00266         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
00267                               work, nl_a, nl_b, nl_c, nl_d, &
00268                               sphi_a, &
00269                               sphi_b, &
00270                               sphi_c, &
00271                               sphi_d, &
00272                               primitives, &
00273                               buffer1, buffer2)
00274 #endif
00275        CASE(1)
00276 #if __MAX_CONTR > 2 || __MAX_CONTR == 2
00277         CALL contract_ssdp(work,&
00278                  nl_a, nl_b, nl_c, nl_d, &
00279                   sphi_a, sphi_b, sphi_c, sphi_d, &
00280                   primitives,&
00281                   buffer1,buffer2 )
00282 #else
00283         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
00284                               work, nl_a, nl_b, nl_c, nl_d, &
00285                               sphi_a, &
00286                               sphi_b, &
00287                               sphi_c, &
00288                               sphi_d, &
00289                               primitives, &
00290                               buffer1, buffer2)
00291 #endif
00292        CASE(2)
00293 #if __MAX_CONTR > 2 || __MAX_CONTR == 2
00294         CALL contract_ssdd(work,&
00295                  nl_a, nl_b, nl_c, nl_d, &
00296                   sphi_a, sphi_b, sphi_c, sphi_d, &
00297                   primitives,&
00298                   buffer1,buffer2 )
00299 #else
00300         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
00301                               work, nl_a, nl_b, nl_c, nl_d, &
00302                               sphi_a, &
00303                               sphi_b, &
00304                               sphi_c, &
00305                               sphi_d, &
00306                               primitives, &
00307                               buffer1, buffer2)
00308 #endif
00309        CASE(3)
00310 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
00311         CALL contract_ssdf(work,&
00312                  nl_a, nl_b, nl_c, nl_d, &
00313                   sphi_a, sphi_b, sphi_c, sphi_d, &
00314                   primitives,&
00315                   buffer1,buffer2 )
00316 #else
00317         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
00318                               work, nl_a, nl_b, nl_c, nl_d, &
00319                               sphi_a, &
00320                               sphi_b, &
00321                               sphi_c, &
00322                               sphi_d, &
00323                               primitives, &
00324                               buffer1, buffer2)
00325 #endif
00326        CASE(4)
00327 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
00328         CALL contract_ssdg(work,&
00329                  nl_a, nl_b, nl_c, nl_d, &
00330                   sphi_a, sphi_b, sphi_c, sphi_d, &
00331                   primitives,&
00332                   buffer1,buffer2 )
00333 #else
00334         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
00335                               work, nl_a, nl_b, nl_c, nl_d, &
00336                               sphi_a, &
00337                               sphi_b, &
00338                               sphi_c, &
00339                               sphi_d, &
00340                               primitives, &
00341                               buffer1, buffer2)
00342 #endif
00343        CASE DEFAULT
00344         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
00345                               work, nl_a, nl_b, nl_c, nl_d, &
00346                               sphi_a, &
00347                               sphi_b, &
00348                               sphi_c, &
00349                               sphi_d, &
00350                               primitives, &
00351                               buffer1, buffer2)
00352        END SELECT
00353       CASE(3)
00354        SELECT CASE(n_d)
00355        CASE(0)
00356 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
00357         CALL contract_ssfs(work,&
00358                  nl_a, nl_b, nl_c, nl_d, &
00359                   sphi_a, sphi_b, sphi_c, sphi_d, &
00360                   primitives,&
00361                   buffer1,buffer2 )
00362 #else
00363         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
00364                               work, nl_a, nl_b, nl_c, nl_d, &
00365                               sphi_a, &
00366                               sphi_b, &
00367                               sphi_c, &
00368                               sphi_d, &
00369                               primitives, &
00370                               buffer1, buffer2)
00371 #endif
00372        CASE(1)
00373 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
00374         CALL contract_ssfp(work,&
00375                  nl_a, nl_b, nl_c, nl_d, &
00376                   sphi_a, sphi_b, sphi_c, sphi_d, &
00377                   primitives,&
00378                   buffer1,buffer2 )
00379 #else
00380         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
00381                               work, nl_a, nl_b, nl_c, nl_d, &
00382                               sphi_a, &
00383                               sphi_b, &
00384                               sphi_c, &
00385                               sphi_d, &
00386                               primitives, &
00387                               buffer1, buffer2)
00388 #endif
00389        CASE(2)
00390 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
00391         CALL contract_ssfd(work,&
00392                  nl_a, nl_b, nl_c, nl_d, &
00393                   sphi_a, sphi_b, sphi_c, sphi_d, &
00394                   primitives,&
00395                   buffer1,buffer2 )
00396 #else
00397         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
00398                               work, nl_a, nl_b, nl_c, nl_d, &
00399                               sphi_a, &
00400                               sphi_b, &
00401                               sphi_c, &
00402                               sphi_d, &
00403                               primitives, &
00404                               buffer1, buffer2)
00405 #endif
00406        CASE(3)
00407 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
00408         CALL contract_ssff(work,&
00409                  nl_a, nl_b, nl_c, nl_d, &
00410                   sphi_a, sphi_b, sphi_c, sphi_d, &
00411                   primitives,&
00412                   buffer1,buffer2 )
00413 #else
00414         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
00415                               work, nl_a, nl_b, nl_c, nl_d, &
00416                               sphi_a, &
00417                               sphi_b, &
00418                               sphi_c, &
00419                               sphi_d, &
00420                               primitives, &
00421                               buffer1, buffer2)
00422 #endif
00423        CASE(4)
00424 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
00425         CALL contract_ssfg(work,&
00426                  nl_a, nl_b, nl_c, nl_d, &
00427                   sphi_a, sphi_b, sphi_c, sphi_d, &
00428                   primitives,&
00429                   buffer1,buffer2 )
00430 #else
00431         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
00432                               work, nl_a, nl_b, nl_c, nl_d, &
00433                               sphi_a, &
00434                               sphi_b, &
00435                               sphi_c, &
00436                               sphi_d, &
00437                               primitives, &
00438                               buffer1, buffer2)
00439 #endif
00440        CASE DEFAULT
00441         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
00442                               work, nl_a, nl_b, nl_c, nl_d, &
00443                               sphi_a, &
00444                               sphi_b, &
00445                               sphi_c, &
00446                               sphi_d, &
00447                               primitives, &
00448                               buffer1, buffer2)
00449        END SELECT
00450       CASE(4)
00451        SELECT CASE(n_d)
00452        CASE(0)
00453 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
00454         CALL contract_ssgs(work,&
00455                  nl_a, nl_b, nl_c, nl_d, &
00456                   sphi_a, sphi_b, sphi_c, sphi_d, &
00457                   primitives,&
00458                   buffer1,buffer2 )
00459 #else
00460         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
00461                               work, nl_a, nl_b, nl_c, nl_d, &
00462                               sphi_a, &
00463                               sphi_b, &
00464                               sphi_c, &
00465                               sphi_d, &
00466                               primitives, &
00467                               buffer1, buffer2)
00468 #endif
00469        CASE(1)
00470 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
00471         CALL contract_ssgp(work,&
00472                  nl_a, nl_b, nl_c, nl_d, &
00473                   sphi_a, sphi_b, sphi_c, sphi_d, &
00474                   primitives,&
00475                   buffer1,buffer2 )
00476 #else
00477         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
00478                               work, nl_a, nl_b, nl_c, nl_d, &
00479                               sphi_a, &
00480                               sphi_b, &
00481                               sphi_c, &
00482                               sphi_d, &
00483                               primitives, &
00484                               buffer1, buffer2)
00485 #endif
00486        CASE(2)
00487 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
00488         CALL contract_ssgd(work,&
00489                  nl_a, nl_b, nl_c, nl_d, &
00490                   sphi_a, sphi_b, sphi_c, sphi_d, &
00491                   primitives,&
00492                   buffer1,buffer2 )
00493 #else
00494         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
00495                               work, nl_a, nl_b, nl_c, nl_d, &
00496                               sphi_a, &
00497                               sphi_b, &
00498                               sphi_c, &
00499                               sphi_d, &
00500                               primitives, &
00501                               buffer1, buffer2)
00502 #endif
00503        CASE(3)
00504 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
00505         CALL contract_ssgf(work,&
00506                  nl_a, nl_b, nl_c, nl_d, &
00507                   sphi_a, sphi_b, sphi_c, sphi_d, &
00508                   primitives,&
00509                   buffer1,buffer2 )
00510 #else
00511         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
00512                               work, nl_a, nl_b, nl_c, nl_d, &
00513                               sphi_a, &
00514                               sphi_b, &
00515                               sphi_c, &
00516                               sphi_d, &
00517                               primitives, &
00518                               buffer1, buffer2)
00519 #endif
00520        CASE(4)
00521 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
00522         CALL contract_ssgg(work,&
00523                  nl_a, nl_b, nl_c, nl_d, &
00524                   sphi_a, sphi_b, sphi_c, sphi_d, &
00525                   primitives,&
00526                   buffer1,buffer2 )
00527 #else
00528         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
00529                               work, nl_a, nl_b, nl_c, nl_d, &
00530                               sphi_a, &
00531                               sphi_b, &
00532                               sphi_c, &
00533                               sphi_d, &
00534                               primitives, &
00535                               buffer1, buffer2)
00536 #endif
00537        CASE DEFAULT
00538         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
00539                               work, nl_a, nl_b, nl_c, nl_d, &
00540                               sphi_a, &
00541                               sphi_b, &
00542                               sphi_c, &
00543                               sphi_d, &
00544                               primitives, &
00545                               buffer1, buffer2)
00546        END SELECT
00547       CASE DEFAULT
00548        CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
00549                              work, nl_a, nl_b, nl_c, nl_d, &
00550                              sphi_a, &
00551                              sphi_b, &
00552                              sphi_c, &
00553                              sphi_d, &
00554                              primitives, &
00555                              buffer1, buffer2)
00556       END SELECT
00557      CASE(1)
00558       SELECT CASE(n_c)
00559       CASE(0)
00560        SELECT CASE(n_d)
00561        CASE(0)
00562 #if __MAX_CONTR > 1 || __MAX_CONTR == 1
00563         CALL contract_spss(work,&
00564                  nl_a, nl_b, nl_c, nl_d, &
00565                   sphi_a, sphi_b, sphi_c, sphi_d, &
00566                   primitives,&
00567                   buffer1,buffer2 )
00568 #else
00569         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
00570                               work, nl_a, nl_b, nl_c, nl_d, &
00571                               sphi_a, &
00572                               sphi_b, &
00573                               sphi_c, &
00574                               sphi_d, &
00575                               primitives, &
00576                               buffer1, buffer2)
00577 #endif
00578        CASE(1)
00579 #if __MAX_CONTR > 1 || __MAX_CONTR == 1
00580         CALL contract_spsp(work,&
00581                  nl_a, nl_b, nl_c, nl_d, &
00582                   sphi_a, sphi_b, sphi_c, sphi_d, &
00583                   primitives,&
00584                   buffer1,buffer2 )
00585 #else
00586         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
00587                               work, nl_a, nl_b, nl_c, nl_d, &
00588                               sphi_a, &
00589                               sphi_b, &
00590                               sphi_c, &
00591                               sphi_d, &
00592                               primitives, &
00593                               buffer1, buffer2)
00594 #endif
00595        CASE(2)
00596 #if __MAX_CONTR > 2 || __MAX_CONTR == 2
00597         CALL contract_spsd(work,&
00598                  nl_a, nl_b, nl_c, nl_d, &
00599                   sphi_a, sphi_b, sphi_c, sphi_d, &
00600                   primitives,&
00601                   buffer1,buffer2 )
00602 #else
00603         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
00604                               work, nl_a, nl_b, nl_c, nl_d, &
00605                               sphi_a, &
00606                               sphi_b, &
00607                               sphi_c, &
00608                               sphi_d, &
00609                               primitives, &
00610                               buffer1, buffer2)
00611 #endif
00612        CASE(3)
00613 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
00614         CALL contract_spsf(work,&
00615                  nl_a, nl_b, nl_c, nl_d, &
00616                   sphi_a, sphi_b, sphi_c, sphi_d, &
00617                   primitives,&
00618                   buffer1,buffer2 )
00619 #else
00620         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
00621                               work, nl_a, nl_b, nl_c, nl_d, &
00622                               sphi_a, &
00623                               sphi_b, &
00624                               sphi_c, &
00625                               sphi_d, &
00626                               primitives, &
00627                               buffer1, buffer2)
00628 #endif
00629        CASE(4)
00630 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
00631         CALL contract_spsg(work,&
00632                  nl_a, nl_b, nl_c, nl_d, &
00633                   sphi_a, sphi_b, sphi_c, sphi_d, &
00634                   primitives,&
00635                   buffer1,buffer2 )
00636 #else
00637         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
00638                               work, nl_a, nl_b, nl_c, nl_d, &
00639                               sphi_a, &
00640                               sphi_b, &
00641                               sphi_c, &
00642                               sphi_d, &
00643                               primitives, &
00644                               buffer1, buffer2)
00645 #endif
00646        CASE DEFAULT
00647         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
00648                               work, nl_a, nl_b, nl_c, nl_d, &
00649                               sphi_a, &
00650                               sphi_b, &
00651                               sphi_c, &
00652                               sphi_d, &
00653                               primitives, &
00654                               buffer1, buffer2)
00655        END SELECT
00656       CASE(1)
00657        SELECT CASE(n_d)
00658        CASE(0)
00659 #if __MAX_CONTR > 1 || __MAX_CONTR == 1
00660         CALL contract_spps(work,&
00661                  nl_a, nl_b, nl_c, nl_d, &
00662                   sphi_a, sphi_b, sphi_c, sphi_d, &
00663                   primitives,&
00664                   buffer1,buffer2 )
00665 #else
00666         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
00667                               work, nl_a, nl_b, nl_c, nl_d, &
00668                               sphi_a, &
00669                               sphi_b, &
00670                               sphi_c, &
00671                               sphi_d, &
00672                               primitives, &
00673                               buffer1, buffer2)
00674 #endif
00675        CASE(1)
00676 #if __MAX_CONTR > 1 || __MAX_CONTR == 1
00677         CALL contract_sppp(work,&
00678                  nl_a, nl_b, nl_c, nl_d, &
00679                   sphi_a, sphi_b, sphi_c, sphi_d, &
00680                   primitives,&
00681                   buffer1,buffer2 )
00682 #else
00683         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
00684                               work, nl_a, nl_b, nl_c, nl_d, &
00685                               sphi_a, &
00686                               sphi_b, &
00687                               sphi_c, &
00688                               sphi_d, &
00689                               primitives, &
00690                               buffer1, buffer2)
00691 #endif
00692        CASE(2)
00693 #if __MAX_CONTR > 2 || __MAX_CONTR == 2
00694         CALL contract_sppd(work,&
00695                  nl_a, nl_b, nl_c, nl_d, &
00696                   sphi_a, sphi_b, sphi_c, sphi_d, &
00697                   primitives,&
00698                   buffer1,buffer2 )
00699 #else
00700         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
00701                               work, nl_a, nl_b, nl_c, nl_d, &
00702                               sphi_a, &
00703                               sphi_b, &
00704                               sphi_c, &
00705                               sphi_d, &
00706                               primitives, &
00707                               buffer1, buffer2)
00708 #endif
00709        CASE(3)
00710 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
00711         CALL contract_sppf(work,&
00712                  nl_a, nl_b, nl_c, nl_d, &
00713                   sphi_a, sphi_b, sphi_c, sphi_d, &
00714                   primitives,&
00715                   buffer1,buffer2 )
00716 #else
00717         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
00718                               work, nl_a, nl_b, nl_c, nl_d, &
00719                               sphi_a, &
00720                               sphi_b, &
00721                               sphi_c, &
00722                               sphi_d, &
00723                               primitives, &
00724                               buffer1, buffer2)
00725 #endif
00726        CASE(4)
00727 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
00728         CALL contract_sppg(work,&
00729                  nl_a, nl_b, nl_c, nl_d, &
00730                   sphi_a, sphi_b, sphi_c, sphi_d, &
00731                   primitives,&
00732                   buffer1,buffer2 )
00733 #else
00734         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
00735                               work, nl_a, nl_b, nl_c, nl_d, &
00736                               sphi_a, &
00737                               sphi_b, &
00738                               sphi_c, &
00739                               sphi_d, &
00740                               primitives, &
00741                               buffer1, buffer2)
00742 #endif
00743        CASE DEFAULT
00744         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
00745                               work, nl_a, nl_b, nl_c, nl_d, &
00746                               sphi_a, &
00747                               sphi_b, &
00748                               sphi_c, &
00749                               sphi_d, &
00750                               primitives, &
00751                               buffer1, buffer2)
00752        END SELECT
00753       CASE(2)
00754        SELECT CASE(n_d)
00755        CASE(0)
00756 #if __MAX_CONTR > 2 || __MAX_CONTR == 2
00757         CALL contract_spds(work,&
00758                  nl_a, nl_b, nl_c, nl_d, &
00759                   sphi_a, sphi_b, sphi_c, sphi_d, &
00760                   primitives,&
00761                   buffer1,buffer2 )
00762 #else
00763         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
00764                               work, nl_a, nl_b, nl_c, nl_d, &
00765                               sphi_a, &
00766                               sphi_b, &
00767                               sphi_c, &
00768                               sphi_d, &
00769                               primitives, &
00770                               buffer1, buffer2)
00771 #endif
00772        CASE(1)
00773 #if __MAX_CONTR > 2 || __MAX_CONTR == 2
00774         CALL contract_spdp(work,&
00775                  nl_a, nl_b, nl_c, nl_d, &
00776                   sphi_a, sphi_b, sphi_c, sphi_d, &
00777                   primitives,&
00778                   buffer1,buffer2 )
00779 #else
00780         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
00781                               work, nl_a, nl_b, nl_c, nl_d, &
00782                               sphi_a, &
00783                               sphi_b, &
00784                               sphi_c, &
00785                               sphi_d, &
00786                               primitives, &
00787                               buffer1, buffer2)
00788 #endif
00789        CASE(2)
00790 #if __MAX_CONTR > 2 || __MAX_CONTR == 2
00791         CALL contract_spdd(work,&
00792                  nl_a, nl_b, nl_c, nl_d, &
00793                   sphi_a, sphi_b, sphi_c, sphi_d, &
00794                   primitives,&
00795                   buffer1,buffer2 )
00796 #else
00797         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
00798                               work, nl_a, nl_b, nl_c, nl_d, &
00799                               sphi_a, &
00800                               sphi_b, &
00801                               sphi_c, &
00802                               sphi_d, &
00803                               primitives, &
00804                               buffer1, buffer2)
00805 #endif
00806        CASE(3)
00807 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
00808         CALL contract_spdf(work,&
00809                  nl_a, nl_b, nl_c, nl_d, &
00810                   sphi_a, sphi_b, sphi_c, sphi_d, &
00811                   primitives,&
00812                   buffer1,buffer2 )
00813 #else
00814         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
00815                               work, nl_a, nl_b, nl_c, nl_d, &
00816                               sphi_a, &
00817                               sphi_b, &
00818                               sphi_c, &
00819                               sphi_d, &
00820                               primitives, &
00821                               buffer1, buffer2)
00822 #endif
00823        CASE(4)
00824 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
00825         CALL contract_spdg(work,&
00826                  nl_a, nl_b, nl_c, nl_d, &
00827                   sphi_a, sphi_b, sphi_c, sphi_d, &
00828                   primitives,&
00829                   buffer1,buffer2 )
00830 #else
00831         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
00832                               work, nl_a, nl_b, nl_c, nl_d, &
00833                               sphi_a, &
00834                               sphi_b, &
00835                               sphi_c, &
00836                               sphi_d, &
00837                               primitives, &
00838                               buffer1, buffer2)
00839 #endif
00840        CASE DEFAULT
00841         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
00842                               work, nl_a, nl_b, nl_c, nl_d, &
00843                               sphi_a, &
00844                               sphi_b, &
00845                               sphi_c, &
00846                               sphi_d, &
00847                               primitives, &
00848                               buffer1, buffer2)
00849        END SELECT
00850       CASE(3)
00851        SELECT CASE(n_d)
00852        CASE(0)
00853 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
00854         CALL contract_spfs(work,&
00855                  nl_a, nl_b, nl_c, nl_d, &
00856                   sphi_a, sphi_b, sphi_c, sphi_d, &
00857                   primitives,&
00858                   buffer1,buffer2 )
00859 #else
00860         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
00861                               work, nl_a, nl_b, nl_c, nl_d, &
00862                               sphi_a, &
00863                               sphi_b, &
00864                               sphi_c, &
00865                               sphi_d, &
00866                               primitives, &
00867                               buffer1, buffer2)
00868 #endif
00869        CASE(1)
00870 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
00871         CALL contract_spfp(work,&
00872                  nl_a, nl_b, nl_c, nl_d, &
00873                   sphi_a, sphi_b, sphi_c, sphi_d, &
00874                   primitives,&
00875                   buffer1,buffer2 )
00876 #else
00877         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
00878                               work, nl_a, nl_b, nl_c, nl_d, &
00879                               sphi_a, &
00880                               sphi_b, &
00881                               sphi_c, &
00882                               sphi_d, &
00883                               primitives, &
00884                               buffer1, buffer2)
00885 #endif
00886        CASE(2)
00887 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
00888         CALL contract_spfd(work,&
00889                  nl_a, nl_b, nl_c, nl_d, &
00890                   sphi_a, sphi_b, sphi_c, sphi_d, &
00891                   primitives,&
00892                   buffer1,buffer2 )
00893 #else
00894         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
00895                               work, nl_a, nl_b, nl_c, nl_d, &
00896                               sphi_a, &
00897                               sphi_b, &
00898                               sphi_c, &
00899                               sphi_d, &
00900                               primitives, &
00901                               buffer1, buffer2)
00902 #endif
00903        CASE(3)
00904 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
00905         CALL contract_spff(work,&
00906                  nl_a, nl_b, nl_c, nl_d, &
00907                   sphi_a, sphi_b, sphi_c, sphi_d, &
00908                   primitives,&
00909                   buffer1,buffer2 )
00910 #else
00911         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
00912                               work, nl_a, nl_b, nl_c, nl_d, &
00913                               sphi_a, &
00914                               sphi_b, &
00915                               sphi_c, &
00916                               sphi_d, &
00917                               primitives, &
00918                               buffer1, buffer2)
00919 #endif
00920        CASE(4)
00921 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
00922         CALL contract_spfg(work,&
00923                  nl_a, nl_b, nl_c, nl_d, &
00924                   sphi_a, sphi_b, sphi_c, sphi_d, &
00925                   primitives,&
00926                   buffer1,buffer2 )
00927 #else
00928         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
00929                               work, nl_a, nl_b, nl_c, nl_d, &
00930                               sphi_a, &
00931                               sphi_b, &
00932                               sphi_c, &
00933                               sphi_d, &
00934                               primitives, &
00935                               buffer1, buffer2)
00936 #endif
00937        CASE DEFAULT
00938         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
00939                               work, nl_a, nl_b, nl_c, nl_d, &
00940                               sphi_a, &
00941                               sphi_b, &
00942                               sphi_c, &
00943                               sphi_d, &
00944                               primitives, &
00945                               buffer1, buffer2)
00946        END SELECT
00947       CASE(4)
00948        SELECT CASE(n_d)
00949        CASE(0)
00950 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
00951         CALL contract_spgs(work,&
00952                  nl_a, nl_b, nl_c, nl_d, &
00953                   sphi_a, sphi_b, sphi_c, sphi_d, &
00954                   primitives,&
00955                   buffer1,buffer2 )
00956 #else
00957         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
00958                               work, nl_a, nl_b, nl_c, nl_d, &
00959                               sphi_a, &
00960                               sphi_b, &
00961                               sphi_c, &
00962                               sphi_d, &
00963                               primitives, &
00964                               buffer1, buffer2)
00965 #endif
00966        CASE(1)
00967 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
00968         CALL contract_spgp(work,&
00969                  nl_a, nl_b, nl_c, nl_d, &
00970                   sphi_a, sphi_b, sphi_c, sphi_d, &
00971                   primitives,&
00972                   buffer1,buffer2 )
00973 #else
00974         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
00975                               work, nl_a, nl_b, nl_c, nl_d, &
00976                               sphi_a, &
00977                               sphi_b, &
00978                               sphi_c, &
00979                               sphi_d, &
00980                               primitives, &
00981                               buffer1, buffer2)
00982 #endif
00983        CASE(2)
00984 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
00985         CALL contract_spgd(work,&
00986                  nl_a, nl_b, nl_c, nl_d, &
00987                   sphi_a, sphi_b, sphi_c, sphi_d, &
00988                   primitives,&
00989                   buffer1,buffer2 )
00990 #else
00991         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
00992                               work, nl_a, nl_b, nl_c, nl_d, &
00993                               sphi_a, &
00994                               sphi_b, &
00995                               sphi_c, &
00996                               sphi_d, &
00997                               primitives, &
00998                               buffer1, buffer2)
00999 #endif
01000        CASE(3)
01001 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
01002         CALL contract_spgf(work,&
01003                  nl_a, nl_b, nl_c, nl_d, &
01004                   sphi_a, sphi_b, sphi_c, sphi_d, &
01005                   primitives,&
01006                   buffer1,buffer2 )
01007 #else
01008         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
01009                               work, nl_a, nl_b, nl_c, nl_d, &
01010                               sphi_a, &
01011                               sphi_b, &
01012                               sphi_c, &
01013                               sphi_d, &
01014                               primitives, &
01015                               buffer1, buffer2)
01016 #endif
01017        CASE(4)
01018 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
01019         CALL contract_spgg(work,&
01020                  nl_a, nl_b, nl_c, nl_d, &
01021                   sphi_a, sphi_b, sphi_c, sphi_d, &
01022                   primitives,&
01023                   buffer1,buffer2 )
01024 #else
01025         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
01026                               work, nl_a, nl_b, nl_c, nl_d, &
01027                               sphi_a, &
01028                               sphi_b, &
01029                               sphi_c, &
01030                               sphi_d, &
01031                               primitives, &
01032                               buffer1, buffer2)
01033 #endif
01034        CASE DEFAULT
01035         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
01036                               work, nl_a, nl_b, nl_c, nl_d, &
01037                               sphi_a, &
01038                               sphi_b, &
01039                               sphi_c, &
01040                               sphi_d, &
01041                               primitives, &
01042                               buffer1, buffer2)
01043        END SELECT
01044       CASE DEFAULT
01045        CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
01046                              work, nl_a, nl_b, nl_c, nl_d, &
01047                              sphi_a, &
01048                              sphi_b, &
01049                              sphi_c, &
01050                              sphi_d, &
01051                              primitives, &
01052                              buffer1, buffer2)
01053       END SELECT
01054      CASE(2)
01055       SELECT CASE(n_c)
01056       CASE(0)
01057        SELECT CASE(n_d)
01058        CASE(0)
01059 #if __MAX_CONTR > 2 || __MAX_CONTR == 2
01060         CALL contract_sdss(work,&
01061                  nl_a, nl_b, nl_c, nl_d, &
01062                   sphi_a, sphi_b, sphi_c, sphi_d, &
01063                   primitives,&
01064                   buffer1,buffer2 )
01065 #else
01066         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
01067                               work, nl_a, nl_b, nl_c, nl_d, &
01068                               sphi_a, &
01069                               sphi_b, &
01070                               sphi_c, &
01071                               sphi_d, &
01072                               primitives, &
01073                               buffer1, buffer2)
01074 #endif
01075        CASE(1)
01076 #if __MAX_CONTR > 2 || __MAX_CONTR == 2
01077         CALL contract_sdsp(work,&
01078                  nl_a, nl_b, nl_c, nl_d, &
01079                   sphi_a, sphi_b, sphi_c, sphi_d, &
01080                   primitives,&
01081                   buffer1,buffer2 )
01082 #else
01083         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
01084                               work, nl_a, nl_b, nl_c, nl_d, &
01085                               sphi_a, &
01086                               sphi_b, &
01087                               sphi_c, &
01088                               sphi_d, &
01089                               primitives, &
01090                               buffer1, buffer2)
01091 #endif
01092        CASE(2)
01093 #if __MAX_CONTR > 2 || __MAX_CONTR == 2
01094         CALL contract_sdsd(work,&
01095                  nl_a, nl_b, nl_c, nl_d, &
01096                   sphi_a, sphi_b, sphi_c, sphi_d, &
01097                   primitives,&
01098                   buffer1,buffer2 )
01099 #else
01100         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
01101                               work, nl_a, nl_b, nl_c, nl_d, &
01102                               sphi_a, &
01103                               sphi_b, &
01104                               sphi_c, &
01105                               sphi_d, &
01106                               primitives, &
01107                               buffer1, buffer2)
01108 #endif
01109        CASE(3)
01110 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
01111         CALL contract_sdsf(work,&
01112                  nl_a, nl_b, nl_c, nl_d, &
01113                   sphi_a, sphi_b, sphi_c, sphi_d, &
01114                   primitives,&
01115                   buffer1,buffer2 )
01116 #else
01117         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
01118                               work, nl_a, nl_b, nl_c, nl_d, &
01119                               sphi_a, &
01120                               sphi_b, &
01121                               sphi_c, &
01122                               sphi_d, &
01123                               primitives, &
01124                               buffer1, buffer2)
01125 #endif
01126        CASE(4)
01127 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
01128         CALL contract_sdsg(work,&
01129                  nl_a, nl_b, nl_c, nl_d, &
01130                   sphi_a, sphi_b, sphi_c, sphi_d, &
01131                   primitives,&
01132                   buffer1,buffer2 )
01133 #else
01134         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
01135                               work, nl_a, nl_b, nl_c, nl_d, &
01136                               sphi_a, &
01137                               sphi_b, &
01138                               sphi_c, &
01139                               sphi_d, &
01140                               primitives, &
01141                               buffer1, buffer2)
01142 #endif
01143        CASE DEFAULT
01144         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
01145                               work, nl_a, nl_b, nl_c, nl_d, &
01146                               sphi_a, &
01147                               sphi_b, &
01148                               sphi_c, &
01149                               sphi_d, &
01150                               primitives, &
01151                               buffer1, buffer2)
01152        END SELECT
01153       CASE(1)
01154        SELECT CASE(n_d)
01155        CASE(0)
01156 #if __MAX_CONTR > 2 || __MAX_CONTR == 2
01157         CALL contract_sdps(work,&
01158                  nl_a, nl_b, nl_c, nl_d, &
01159                   sphi_a, sphi_b, sphi_c, sphi_d, &
01160                   primitives,&
01161                   buffer1,buffer2 )
01162 #else
01163         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
01164                               work, nl_a, nl_b, nl_c, nl_d, &
01165                               sphi_a, &
01166                               sphi_b, &
01167                               sphi_c, &
01168                               sphi_d, &
01169                               primitives, &
01170                               buffer1, buffer2)
01171 #endif
01172        CASE(1)
01173 #if __MAX_CONTR > 2 || __MAX_CONTR == 2
01174         CALL contract_sdpp(work,&
01175                  nl_a, nl_b, nl_c, nl_d, &
01176                   sphi_a, sphi_b, sphi_c, sphi_d, &
01177                   primitives,&
01178                   buffer1,buffer2 )
01179 #else
01180         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
01181                               work, nl_a, nl_b, nl_c, nl_d, &
01182                               sphi_a, &
01183                               sphi_b, &
01184                               sphi_c, &
01185                               sphi_d, &
01186                               primitives, &
01187                               buffer1, buffer2)
01188 #endif
01189        CASE(2)
01190 #if __MAX_CONTR > 2 || __MAX_CONTR == 2
01191         CALL contract_sdpd(work,&
01192                  nl_a, nl_b, nl_c, nl_d, &
01193                   sphi_a, sphi_b, sphi_c, sphi_d, &
01194                   primitives,&
01195                   buffer1,buffer2 )
01196 #else
01197         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
01198                               work, nl_a, nl_b, nl_c, nl_d, &
01199                               sphi_a, &
01200                               sphi_b, &
01201                               sphi_c, &
01202                               sphi_d, &
01203                               primitives, &
01204                               buffer1, buffer2)
01205 #endif
01206        CASE(3)
01207 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
01208         CALL contract_sdpf(work,&
01209                  nl_a, nl_b, nl_c, nl_d, &
01210                   sphi_a, sphi_b, sphi_c, sphi_d, &
01211                   primitives,&
01212                   buffer1,buffer2 )
01213 #else
01214         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
01215                               work, nl_a, nl_b, nl_c, nl_d, &
01216                               sphi_a, &
01217                               sphi_b, &
01218                               sphi_c, &
01219                               sphi_d, &
01220                               primitives, &
01221                               buffer1, buffer2)
01222 #endif
01223        CASE(4)
01224 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
01225         CALL contract_sdpg(work,&
01226                  nl_a, nl_b, nl_c, nl_d, &
01227                   sphi_a, sphi_b, sphi_c, sphi_d, &
01228                   primitives,&
01229                   buffer1,buffer2 )
01230 #else
01231         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
01232                               work, nl_a, nl_b, nl_c, nl_d, &
01233                               sphi_a, &
01234                               sphi_b, &
01235                               sphi_c, &
01236                               sphi_d, &
01237                               primitives, &
01238                               buffer1, buffer2)
01239 #endif
01240        CASE DEFAULT
01241         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
01242                               work, nl_a, nl_b, nl_c, nl_d, &
01243                               sphi_a, &
01244                               sphi_b, &
01245                               sphi_c, &
01246                               sphi_d, &
01247                               primitives, &
01248                               buffer1, buffer2)
01249        END SELECT
01250       CASE(2)
01251        SELECT CASE(n_d)
01252        CASE(0)
01253 #if __MAX_CONTR > 2 || __MAX_CONTR == 2
01254         CALL contract_sdds(work,&
01255                  nl_a, nl_b, nl_c, nl_d, &
01256                   sphi_a, sphi_b, sphi_c, sphi_d, &
01257                   primitives,&
01258                   buffer1,buffer2 )
01259 #else
01260         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
01261                               work, nl_a, nl_b, nl_c, nl_d, &
01262                               sphi_a, &
01263                               sphi_b, &
01264                               sphi_c, &
01265                               sphi_d, &
01266                               primitives, &
01267                               buffer1, buffer2)
01268 #endif
01269        CASE(1)
01270 #if __MAX_CONTR > 2 || __MAX_CONTR == 2
01271         CALL contract_sddp(work,&
01272                  nl_a, nl_b, nl_c, nl_d, &
01273                   sphi_a, sphi_b, sphi_c, sphi_d, &
01274                   primitives,&
01275                   buffer1,buffer2 )
01276 #else
01277         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
01278                               work, nl_a, nl_b, nl_c, nl_d, &
01279                               sphi_a, &
01280                               sphi_b, &
01281                               sphi_c, &
01282                               sphi_d, &
01283                               primitives, &
01284                               buffer1, buffer2)
01285 #endif
01286        CASE(2)
01287 #if __MAX_CONTR > 2 || __MAX_CONTR == 2
01288         CALL contract_sddd(work,&
01289                  nl_a, nl_b, nl_c, nl_d, &
01290                   sphi_a, sphi_b, sphi_c, sphi_d, &
01291                   primitives,&
01292                   buffer1,buffer2 )
01293 #else
01294         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
01295                               work, nl_a, nl_b, nl_c, nl_d, &
01296                               sphi_a, &
01297                               sphi_b, &
01298                               sphi_c, &
01299                               sphi_d, &
01300                               primitives, &
01301                               buffer1, buffer2)
01302 #endif
01303        CASE(3)
01304 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
01305         CALL contract_sddf(work,&
01306                  nl_a, nl_b, nl_c, nl_d, &
01307                   sphi_a, sphi_b, sphi_c, sphi_d, &
01308                   primitives,&
01309                   buffer1,buffer2 )
01310 #else
01311         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
01312                               work, nl_a, nl_b, nl_c, nl_d, &
01313                               sphi_a, &
01314                               sphi_b, &
01315                               sphi_c, &
01316                               sphi_d, &
01317                               primitives, &
01318                               buffer1, buffer2)
01319 #endif
01320        CASE(4)
01321 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
01322         CALL contract_sddg(work,&
01323                  nl_a, nl_b, nl_c, nl_d, &
01324                   sphi_a, sphi_b, sphi_c, sphi_d, &
01325                   primitives,&
01326                   buffer1,buffer2 )
01327 #else
01328         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
01329                               work, nl_a, nl_b, nl_c, nl_d, &
01330                               sphi_a, &
01331                               sphi_b, &
01332                               sphi_c, &
01333                               sphi_d, &
01334                               primitives, &
01335                               buffer1, buffer2)
01336 #endif
01337        CASE DEFAULT
01338         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
01339                               work, nl_a, nl_b, nl_c, nl_d, &
01340                               sphi_a, &
01341                               sphi_b, &
01342                               sphi_c, &
01343                               sphi_d, &
01344                               primitives, &
01345                               buffer1, buffer2)
01346        END SELECT
01347       CASE(3)
01348        SELECT CASE(n_d)
01349        CASE(0)
01350 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
01351         CALL contract_sdfs(work,&
01352                  nl_a, nl_b, nl_c, nl_d, &
01353                   sphi_a, sphi_b, sphi_c, sphi_d, &
01354                   primitives,&
01355                   buffer1,buffer2 )
01356 #else
01357         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
01358                               work, nl_a, nl_b, nl_c, nl_d, &
01359                               sphi_a, &
01360                               sphi_b, &
01361                               sphi_c, &
01362                               sphi_d, &
01363                               primitives, &
01364                               buffer1, buffer2)
01365 #endif
01366        CASE(1)
01367 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
01368         CALL contract_sdfp(work,&
01369                  nl_a, nl_b, nl_c, nl_d, &
01370                   sphi_a, sphi_b, sphi_c, sphi_d, &
01371                   primitives,&
01372                   buffer1,buffer2 )
01373 #else
01374         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
01375                               work, nl_a, nl_b, nl_c, nl_d, &
01376                               sphi_a, &
01377                               sphi_b, &
01378                               sphi_c, &
01379                               sphi_d, &
01380                               primitives, &
01381                               buffer1, buffer2)
01382 #endif
01383        CASE(2)
01384 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
01385         CALL contract_sdfd(work,&
01386                  nl_a, nl_b, nl_c, nl_d, &
01387                   sphi_a, sphi_b, sphi_c, sphi_d, &
01388                   primitives,&
01389                   buffer1,buffer2 )
01390 #else
01391         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
01392                               work, nl_a, nl_b, nl_c, nl_d, &
01393                               sphi_a, &
01394                               sphi_b, &
01395                               sphi_c, &
01396                               sphi_d, &
01397                               primitives, &
01398                               buffer1, buffer2)
01399 #endif
01400        CASE(3)
01401 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
01402         CALL contract_sdff(work,&
01403                  nl_a, nl_b, nl_c, nl_d, &
01404                   sphi_a, sphi_b, sphi_c, sphi_d, &
01405                   primitives,&
01406                   buffer1,buffer2 )
01407 #else
01408         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
01409                               work, nl_a, nl_b, nl_c, nl_d, &
01410                               sphi_a, &
01411                               sphi_b, &
01412                               sphi_c, &
01413                               sphi_d, &
01414                               primitives, &
01415                               buffer1, buffer2)
01416 #endif
01417        CASE(4)
01418 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
01419         CALL contract_sdfg(work,&
01420                  nl_a, nl_b, nl_c, nl_d, &
01421                   sphi_a, sphi_b, sphi_c, sphi_d, &
01422                   primitives,&
01423                   buffer1,buffer2 )
01424 #else
01425         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
01426                               work, nl_a, nl_b, nl_c, nl_d, &
01427                               sphi_a, &
01428                               sphi_b, &
01429                               sphi_c, &
01430                               sphi_d, &
01431                               primitives, &
01432                               buffer1, buffer2)
01433 #endif
01434        CASE DEFAULT
01435         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
01436                               work, nl_a, nl_b, nl_c, nl_d, &
01437                               sphi_a, &
01438                               sphi_b, &
01439                               sphi_c, &
01440                               sphi_d, &
01441                               primitives, &
01442                               buffer1, buffer2)
01443        END SELECT
01444       CASE(4)
01445        SELECT CASE(n_d)
01446        CASE(0)
01447 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
01448         CALL contract_sdgs(work,&
01449                  nl_a, nl_b, nl_c, nl_d, &
01450                   sphi_a, sphi_b, sphi_c, sphi_d, &
01451                   primitives,&
01452                   buffer1,buffer2 )
01453 #else
01454         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
01455                               work, nl_a, nl_b, nl_c, nl_d, &
01456                               sphi_a, &
01457                               sphi_b, &
01458                               sphi_c, &
01459                               sphi_d, &
01460                               primitives, &
01461                               buffer1, buffer2)
01462 #endif
01463        CASE(1)
01464 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
01465         CALL contract_sdgp(work,&
01466                  nl_a, nl_b, nl_c, nl_d, &
01467                   sphi_a, sphi_b, sphi_c, sphi_d, &
01468                   primitives,&
01469                   buffer1,buffer2 )
01470 #else
01471         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
01472                               work, nl_a, nl_b, nl_c, nl_d, &
01473                               sphi_a, &
01474                               sphi_b, &
01475                               sphi_c, &
01476                               sphi_d, &
01477                               primitives, &
01478                               buffer1, buffer2)
01479 #endif
01480        CASE(2)
01481 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
01482         CALL contract_sdgd(work,&
01483                  nl_a, nl_b, nl_c, nl_d, &
01484                   sphi_a, sphi_b, sphi_c, sphi_d, &
01485                   primitives,&
01486                   buffer1,buffer2 )
01487 #else
01488         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
01489                               work, nl_a, nl_b, nl_c, nl_d, &
01490                               sphi_a, &
01491                               sphi_b, &
01492                               sphi_c, &
01493                               sphi_d, &
01494                               primitives, &
01495                               buffer1, buffer2)
01496 #endif
01497        CASE(3)
01498 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
01499         CALL contract_sdgf(work,&
01500                  nl_a, nl_b, nl_c, nl_d, &
01501                   sphi_a, sphi_b, sphi_c, sphi_d, &
01502                   primitives,&
01503                   buffer1,buffer2 )
01504 #else
01505         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
01506                               work, nl_a, nl_b, nl_c, nl_d, &
01507                               sphi_a, &
01508                               sphi_b, &
01509                               sphi_c, &
01510                               sphi_d, &
01511                               primitives, &
01512                               buffer1, buffer2)
01513 #endif
01514        CASE(4)
01515 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
01516         CALL contract_sdgg(work,&
01517                  nl_a, nl_b, nl_c, nl_d, &
01518                   sphi_a, sphi_b, sphi_c, sphi_d, &
01519                   primitives,&
01520                   buffer1,buffer2 )
01521 #else
01522         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
01523                               work, nl_a, nl_b, nl_c, nl_d, &
01524                               sphi_a, &
01525                               sphi_b, &
01526                               sphi_c, &
01527                               sphi_d, &
01528                               primitives, &
01529                               buffer1, buffer2)
01530 #endif
01531        CASE DEFAULT
01532         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
01533                               work, nl_a, nl_b, nl_c, nl_d, &
01534                               sphi_a, &
01535                               sphi_b, &
01536                               sphi_c, &
01537                               sphi_d, &
01538                               primitives, &
01539                               buffer1, buffer2)
01540        END SELECT
01541       CASE DEFAULT
01542        CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
01543                              work, nl_a, nl_b, nl_c, nl_d, &
01544                              sphi_a, &
01545                              sphi_b, &
01546                              sphi_c, &
01547                              sphi_d, &
01548                              primitives, &
01549                              buffer1, buffer2)
01550       END SELECT
01551      CASE(3)
01552       SELECT CASE(n_c)
01553       CASE(0)
01554        SELECT CASE(n_d)
01555        CASE(0)
01556 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
01557         CALL contract_sfss(work,&
01558                  nl_a, nl_b, nl_c, nl_d, &
01559                   sphi_a, sphi_b, sphi_c, sphi_d, &
01560                   primitives,&
01561                   buffer1,buffer2 )
01562 #else
01563         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
01564                               work, nl_a, nl_b, nl_c, nl_d, &
01565                               sphi_a, &
01566                               sphi_b, &
01567                               sphi_c, &
01568                               sphi_d, &
01569                               primitives, &
01570                               buffer1, buffer2)
01571 #endif
01572        CASE(1)
01573 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
01574         CALL contract_sfsp(work,&
01575                  nl_a, nl_b, nl_c, nl_d, &
01576                   sphi_a, sphi_b, sphi_c, sphi_d, &
01577                   primitives,&
01578                   buffer1,buffer2 )
01579 #else
01580         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
01581                               work, nl_a, nl_b, nl_c, nl_d, &
01582                               sphi_a, &
01583                               sphi_b, &
01584                               sphi_c, &
01585                               sphi_d, &
01586                               primitives, &
01587                               buffer1, buffer2)
01588 #endif
01589        CASE(2)
01590 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
01591         CALL contract_sfsd(work,&
01592                  nl_a, nl_b, nl_c, nl_d, &
01593                   sphi_a, sphi_b, sphi_c, sphi_d, &
01594                   primitives,&
01595                   buffer1,buffer2 )
01596 #else
01597         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
01598                               work, nl_a, nl_b, nl_c, nl_d, &
01599                               sphi_a, &
01600                               sphi_b, &
01601                               sphi_c, &
01602                               sphi_d, &
01603                               primitives, &
01604                               buffer1, buffer2)
01605 #endif
01606        CASE(3)
01607 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
01608         CALL contract_sfsf(work,&
01609                  nl_a, nl_b, nl_c, nl_d, &
01610                   sphi_a, sphi_b, sphi_c, sphi_d, &
01611                   primitives,&
01612                   buffer1,buffer2 )
01613 #else
01614         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
01615                               work, nl_a, nl_b, nl_c, nl_d, &
01616                               sphi_a, &
01617                               sphi_b, &
01618                               sphi_c, &
01619                               sphi_d, &
01620                               primitives, &
01621                               buffer1, buffer2)
01622 #endif
01623        CASE(4)
01624 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
01625         CALL contract_sfsg(work,&
01626                  nl_a, nl_b, nl_c, nl_d, &
01627                   sphi_a, sphi_b, sphi_c, sphi_d, &
01628                   primitives,&
01629                   buffer1,buffer2 )
01630 #else
01631         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
01632                               work, nl_a, nl_b, nl_c, nl_d, &
01633                               sphi_a, &
01634                               sphi_b, &
01635                               sphi_c, &
01636                               sphi_d, &
01637                               primitives, &
01638                               buffer1, buffer2)
01639 #endif
01640        CASE DEFAULT
01641         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
01642                               work, nl_a, nl_b, nl_c, nl_d, &
01643                               sphi_a, &
01644                               sphi_b, &
01645                               sphi_c, &
01646                               sphi_d, &
01647                               primitives, &
01648                               buffer1, buffer2)
01649        END SELECT
01650       CASE(1)
01651        SELECT CASE(n_d)
01652        CASE(0)
01653 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
01654         CALL contract_sfps(work,&
01655                  nl_a, nl_b, nl_c, nl_d, &
01656                   sphi_a, sphi_b, sphi_c, sphi_d, &
01657                   primitives,&
01658                   buffer1,buffer2 )
01659 #else
01660         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
01661                               work, nl_a, nl_b, nl_c, nl_d, &
01662                               sphi_a, &
01663                               sphi_b, &
01664                               sphi_c, &
01665                               sphi_d, &
01666                               primitives, &
01667                               buffer1, buffer2)
01668 #endif
01669        CASE(1)
01670 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
01671         CALL contract_sfpp(work,&
01672                  nl_a, nl_b, nl_c, nl_d, &
01673                   sphi_a, sphi_b, sphi_c, sphi_d, &
01674                   primitives,&
01675                   buffer1,buffer2 )
01676 #else
01677         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
01678                               work, nl_a, nl_b, nl_c, nl_d, &
01679                               sphi_a, &
01680                               sphi_b, &
01681                               sphi_c, &
01682                               sphi_d, &
01683                               primitives, &
01684                               buffer1, buffer2)
01685 #endif
01686        CASE(2)
01687 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
01688         CALL contract_sfpd(work,&
01689                  nl_a, nl_b, nl_c, nl_d, &
01690                   sphi_a, sphi_b, sphi_c, sphi_d, &
01691                   primitives,&
01692                   buffer1,buffer2 )
01693 #else
01694         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
01695                               work, nl_a, nl_b, nl_c, nl_d, &
01696                               sphi_a, &
01697                               sphi_b, &
01698                               sphi_c, &
01699                               sphi_d, &
01700                               primitives, &
01701                               buffer1, buffer2)
01702 #endif
01703        CASE(3)
01704 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
01705         CALL contract_sfpf(work,&
01706                  nl_a, nl_b, nl_c, nl_d, &
01707                   sphi_a, sphi_b, sphi_c, sphi_d, &
01708                   primitives,&
01709                   buffer1,buffer2 )
01710 #else
01711         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
01712                               work, nl_a, nl_b, nl_c, nl_d, &
01713                               sphi_a, &
01714                               sphi_b, &
01715                               sphi_c, &
01716                               sphi_d, &
01717                               primitives, &
01718                               buffer1, buffer2)
01719 #endif
01720        CASE(4)
01721 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
01722         CALL contract_sfpg(work,&
01723                  nl_a, nl_b, nl_c, nl_d, &
01724                   sphi_a, sphi_b, sphi_c, sphi_d, &
01725                   primitives,&
01726                   buffer1,buffer2 )
01727 #else
01728         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
01729                               work, nl_a, nl_b, nl_c, nl_d, &
01730                               sphi_a, &
01731                               sphi_b, &
01732                               sphi_c, &
01733                               sphi_d, &
01734                               primitives, &
01735                               buffer1, buffer2)
01736 #endif
01737        CASE DEFAULT
01738         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
01739                               work, nl_a, nl_b, nl_c, nl_d, &
01740                               sphi_a, &
01741                               sphi_b, &
01742                               sphi_c, &
01743                               sphi_d, &
01744                               primitives, &
01745                               buffer1, buffer2)
01746        END SELECT
01747       CASE(2)
01748        SELECT CASE(n_d)
01749        CASE(0)
01750 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
01751         CALL contract_sfds(work,&
01752                  nl_a, nl_b, nl_c, nl_d, &
01753                   sphi_a, sphi_b, sphi_c, sphi_d, &
01754                   primitives,&
01755                   buffer1,buffer2 )
01756 #else
01757         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
01758                               work, nl_a, nl_b, nl_c, nl_d, &
01759                               sphi_a, &
01760                               sphi_b, &
01761                               sphi_c, &
01762                               sphi_d, &
01763                               primitives, &
01764                               buffer1, buffer2)
01765 #endif
01766        CASE(1)
01767 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
01768         CALL contract_sfdp(work,&
01769                  nl_a, nl_b, nl_c, nl_d, &
01770                   sphi_a, sphi_b, sphi_c, sphi_d, &
01771                   primitives,&
01772                   buffer1,buffer2 )
01773 #else
01774         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
01775                               work, nl_a, nl_b, nl_c, nl_d, &
01776                               sphi_a, &
01777                               sphi_b, &
01778                               sphi_c, &
01779                               sphi_d, &
01780                               primitives, &
01781                               buffer1, buffer2)
01782 #endif
01783        CASE(2)
01784 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
01785         CALL contract_sfdd(work,&
01786                  nl_a, nl_b, nl_c, nl_d, &
01787                   sphi_a, sphi_b, sphi_c, sphi_d, &
01788                   primitives,&
01789                   buffer1,buffer2 )
01790 #else
01791         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
01792                               work, nl_a, nl_b, nl_c, nl_d, &
01793                               sphi_a, &
01794                               sphi_b, &
01795                               sphi_c, &
01796                               sphi_d, &
01797                               primitives, &
01798                               buffer1, buffer2)
01799 #endif
01800        CASE(3)
01801 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
01802         CALL contract_sfdf(work,&
01803                  nl_a, nl_b, nl_c, nl_d, &
01804                   sphi_a, sphi_b, sphi_c, sphi_d, &
01805                   primitives,&
01806                   buffer1,buffer2 )
01807 #else
01808         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
01809                               work, nl_a, nl_b, nl_c, nl_d, &
01810                               sphi_a, &
01811                               sphi_b, &
01812                               sphi_c, &
01813                               sphi_d, &
01814                               primitives, &
01815                               buffer1, buffer2)
01816 #endif
01817        CASE(4)
01818 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
01819         CALL contract_sfdg(work,&
01820                  nl_a, nl_b, nl_c, nl_d, &
01821                   sphi_a, sphi_b, sphi_c, sphi_d, &
01822                   primitives,&
01823                   buffer1,buffer2 )
01824 #else
01825         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
01826                               work, nl_a, nl_b, nl_c, nl_d, &
01827                               sphi_a, &
01828                               sphi_b, &
01829                               sphi_c, &
01830                               sphi_d, &
01831                               primitives, &
01832                               buffer1, buffer2)
01833 #endif
01834        CASE DEFAULT
01835         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
01836                               work, nl_a, nl_b, nl_c, nl_d, &
01837                               sphi_a, &
01838                               sphi_b, &
01839                               sphi_c, &
01840                               sphi_d, &
01841                               primitives, &
01842                               buffer1, buffer2)
01843        END SELECT
01844       CASE(3)
01845        SELECT CASE(n_d)
01846        CASE(0)
01847 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
01848         CALL contract_sffs(work,&
01849                  nl_a, nl_b, nl_c, nl_d, &
01850                   sphi_a, sphi_b, sphi_c, sphi_d, &
01851                   primitives,&
01852                   buffer1,buffer2 )
01853 #else
01854         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
01855                               work, nl_a, nl_b, nl_c, nl_d, &
01856                               sphi_a, &
01857                               sphi_b, &
01858                               sphi_c, &
01859                               sphi_d, &
01860                               primitives, &
01861                               buffer1, buffer2)
01862 #endif
01863        CASE(1)
01864 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
01865         CALL contract_sffp(work,&
01866                  nl_a, nl_b, nl_c, nl_d, &
01867                   sphi_a, sphi_b, sphi_c, sphi_d, &
01868                   primitives,&
01869                   buffer1,buffer2 )
01870 #else
01871         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
01872                               work, nl_a, nl_b, nl_c, nl_d, &
01873                               sphi_a, &
01874                               sphi_b, &
01875                               sphi_c, &
01876                               sphi_d, &
01877                               primitives, &
01878                               buffer1, buffer2)
01879 #endif
01880        CASE(2)
01881 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
01882         CALL contract_sffd(work,&
01883                  nl_a, nl_b, nl_c, nl_d, &
01884                   sphi_a, sphi_b, sphi_c, sphi_d, &
01885                   primitives,&
01886                   buffer1,buffer2 )
01887 #else
01888         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
01889                               work, nl_a, nl_b, nl_c, nl_d, &
01890                               sphi_a, &
01891                               sphi_b, &
01892                               sphi_c, &
01893                               sphi_d, &
01894                               primitives, &
01895                               buffer1, buffer2)
01896 #endif
01897        CASE(3)
01898 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
01899         CALL contract_sfff(work,&
01900                  nl_a, nl_b, nl_c, nl_d, &
01901                   sphi_a, sphi_b, sphi_c, sphi_d, &
01902                   primitives,&
01903                   buffer1,buffer2 )
01904 #else
01905         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
01906                               work, nl_a, nl_b, nl_c, nl_d, &
01907                               sphi_a, &
01908                               sphi_b, &
01909                               sphi_c, &
01910                               sphi_d, &
01911                               primitives, &
01912                               buffer1, buffer2)
01913 #endif
01914        CASE(4)
01915 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
01916         CALL contract_sffg(work,&
01917                  nl_a, nl_b, nl_c, nl_d, &
01918                   sphi_a, sphi_b, sphi_c, sphi_d, &
01919                   primitives,&
01920                   buffer1,buffer2 )
01921 #else
01922         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
01923                               work, nl_a, nl_b, nl_c, nl_d, &
01924                               sphi_a, &
01925                               sphi_b, &
01926                               sphi_c, &
01927                               sphi_d, &
01928                               primitives, &
01929                               buffer1, buffer2)
01930 #endif
01931        CASE DEFAULT
01932         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
01933                               work, nl_a, nl_b, nl_c, nl_d, &
01934                               sphi_a, &
01935                               sphi_b, &
01936                               sphi_c, &
01937                               sphi_d, &
01938                               primitives, &
01939                               buffer1, buffer2)
01940        END SELECT
01941       CASE(4)
01942        SELECT CASE(n_d)
01943        CASE(0)
01944 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
01945         CALL contract_sfgs(work,&
01946                  nl_a, nl_b, nl_c, nl_d, &
01947                   sphi_a, sphi_b, sphi_c, sphi_d, &
01948                   primitives,&
01949                   buffer1,buffer2 )
01950 #else
01951         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
01952                               work, nl_a, nl_b, nl_c, nl_d, &
01953                               sphi_a, &
01954                               sphi_b, &
01955                               sphi_c, &
01956                               sphi_d, &
01957                               primitives, &
01958                               buffer1, buffer2)
01959 #endif
01960        CASE(1)
01961 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
01962         CALL contract_sfgp(work,&
01963                  nl_a, nl_b, nl_c, nl_d, &
01964                   sphi_a, sphi_b, sphi_c, sphi_d, &
01965                   primitives,&
01966                   buffer1,buffer2 )
01967 #else
01968         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
01969                               work, nl_a, nl_b, nl_c, nl_d, &
01970                               sphi_a, &
01971                               sphi_b, &
01972                               sphi_c, &
01973                               sphi_d, &
01974                               primitives, &
01975                               buffer1, buffer2)
01976 #endif
01977        CASE(2)
01978 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
01979         CALL contract_sfgd(work,&
01980                  nl_a, nl_b, nl_c, nl_d, &
01981                   sphi_a, sphi_b, sphi_c, sphi_d, &
01982                   primitives,&
01983                   buffer1,buffer2 )
01984 #else
01985         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
01986                               work, nl_a, nl_b, nl_c, nl_d, &
01987                               sphi_a, &
01988                               sphi_b, &
01989                               sphi_c, &
01990                               sphi_d, &
01991                               primitives, &
01992                               buffer1, buffer2)
01993 #endif
01994        CASE(3)
01995 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
01996         CALL contract_sfgf(work,&
01997                  nl_a, nl_b, nl_c, nl_d, &
01998                   sphi_a, sphi_b, sphi_c, sphi_d, &
01999                   primitives,&
02000                   buffer1,buffer2 )
02001 #else
02002         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
02003                               work, nl_a, nl_b, nl_c, nl_d, &
02004                               sphi_a, &
02005                               sphi_b, &
02006                               sphi_c, &
02007                               sphi_d, &
02008                               primitives, &
02009                               buffer1, buffer2)
02010 #endif
02011        CASE(4)
02012 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
02013         CALL contract_sfgg(work,&
02014                  nl_a, nl_b, nl_c, nl_d, &
02015                   sphi_a, sphi_b, sphi_c, sphi_d, &
02016                   primitives,&
02017                   buffer1,buffer2 )
02018 #else
02019         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
02020                               work, nl_a, nl_b, nl_c, nl_d, &
02021                               sphi_a, &
02022                               sphi_b, &
02023                               sphi_c, &
02024                               sphi_d, &
02025                               primitives, &
02026                               buffer1, buffer2)
02027 #endif
02028        CASE DEFAULT
02029         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
02030                               work, nl_a, nl_b, nl_c, nl_d, &
02031                               sphi_a, &
02032                               sphi_b, &
02033                               sphi_c, &
02034                               sphi_d, &
02035                               primitives, &
02036                               buffer1, buffer2)
02037        END SELECT
02038       CASE DEFAULT
02039        CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
02040                              work, nl_a, nl_b, nl_c, nl_d, &
02041                              sphi_a, &
02042                              sphi_b, &
02043                              sphi_c, &
02044                              sphi_d, &
02045                              primitives, &
02046                              buffer1, buffer2)
02047       END SELECT
02048      CASE(4)
02049       SELECT CASE(n_c)
02050       CASE(0)
02051        SELECT CASE(n_d)
02052        CASE(0)
02053 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
02054         CALL contract_sgss(work,&
02055                  nl_a, nl_b, nl_c, nl_d, &
02056                   sphi_a, sphi_b, sphi_c, sphi_d, &
02057                   primitives,&
02058                   buffer1,buffer2 )
02059 #else
02060         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
02061                               work, nl_a, nl_b, nl_c, nl_d, &
02062                               sphi_a, &
02063                               sphi_b, &
02064                               sphi_c, &
02065                               sphi_d, &
02066                               primitives, &
02067                               buffer1, buffer2)
02068 #endif
02069        CASE(1)
02070 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
02071         CALL contract_sgsp(work,&
02072                  nl_a, nl_b, nl_c, nl_d, &
02073                   sphi_a, sphi_b, sphi_c, sphi_d, &
02074                   primitives,&
02075                   buffer1,buffer2 )
02076 #else
02077         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
02078                               work, nl_a, nl_b, nl_c, nl_d, &
02079                               sphi_a, &
02080                               sphi_b, &
02081                               sphi_c, &
02082                               sphi_d, &
02083                               primitives, &
02084                               buffer1, buffer2)
02085 #endif
02086        CASE(2)
02087 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
02088         CALL contract_sgsd(work,&
02089                  nl_a, nl_b, nl_c, nl_d, &
02090                   sphi_a, sphi_b, sphi_c, sphi_d, &
02091                   primitives,&
02092                   buffer1,buffer2 )
02093 #else
02094         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
02095                               work, nl_a, nl_b, nl_c, nl_d, &
02096                               sphi_a, &
02097                               sphi_b, &
02098                               sphi_c, &
02099                               sphi_d, &
02100                               primitives, &
02101                               buffer1, buffer2)
02102 #endif
02103        CASE(3)
02104 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
02105         CALL contract_sgsf(work,&
02106                  nl_a, nl_b, nl_c, nl_d, &
02107                   sphi_a, sphi_b, sphi_c, sphi_d, &
02108                   primitives,&
02109                   buffer1,buffer2 )
02110 #else
02111         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
02112                               work, nl_a, nl_b, nl_c, nl_d, &
02113                               sphi_a, &
02114                               sphi_b, &
02115                               sphi_c, &
02116                               sphi_d, &
02117                               primitives, &
02118                               buffer1, buffer2)
02119 #endif
02120        CASE(4)
02121 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
02122         CALL contract_sgsg(work,&
02123                  nl_a, nl_b, nl_c, nl_d, &
02124                   sphi_a, sphi_b, sphi_c, sphi_d, &
02125                   primitives,&
02126                   buffer1,buffer2 )
02127 #else
02128         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
02129                               work, nl_a, nl_b, nl_c, nl_d, &
02130                               sphi_a, &
02131                               sphi_b, &
02132                               sphi_c, &
02133                               sphi_d, &
02134                               primitives, &
02135                               buffer1, buffer2)
02136 #endif
02137        CASE DEFAULT
02138         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
02139                               work, nl_a, nl_b, nl_c, nl_d, &
02140                               sphi_a, &
02141                               sphi_b, &
02142                               sphi_c, &
02143                               sphi_d, &
02144                               primitives, &
02145                               buffer1, buffer2)
02146        END SELECT
02147       CASE(1)
02148        SELECT CASE(n_d)
02149        CASE(0)
02150 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
02151         CALL contract_sgps(work,&
02152                  nl_a, nl_b, nl_c, nl_d, &
02153                   sphi_a, sphi_b, sphi_c, sphi_d, &
02154                   primitives,&
02155                   buffer1,buffer2 )
02156 #else
02157         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
02158                               work, nl_a, nl_b, nl_c, nl_d, &
02159                               sphi_a, &
02160                               sphi_b, &
02161                               sphi_c, &
02162                               sphi_d, &
02163                               primitives, &
02164                               buffer1, buffer2)
02165 #endif
02166        CASE(1)
02167 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
02168         CALL contract_sgpp(work,&
02169                  nl_a, nl_b, nl_c, nl_d, &
02170                   sphi_a, sphi_b, sphi_c, sphi_d, &
02171                   primitives,&
02172                   buffer1,buffer2 )
02173 #else
02174         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
02175                               work, nl_a, nl_b, nl_c, nl_d, &
02176                               sphi_a, &
02177                               sphi_b, &
02178                               sphi_c, &
02179                               sphi_d, &
02180                               primitives, &
02181                               buffer1, buffer2)
02182 #endif
02183        CASE(2)
02184 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
02185         CALL contract_sgpd(work,&
02186                  nl_a, nl_b, nl_c, nl_d, &
02187                   sphi_a, sphi_b, sphi_c, sphi_d, &
02188                   primitives,&
02189                   buffer1,buffer2 )
02190 #else
02191         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
02192                               work, nl_a, nl_b, nl_c, nl_d, &
02193                               sphi_a, &
02194                               sphi_b, &
02195                               sphi_c, &
02196                               sphi_d, &
02197                               primitives, &
02198                               buffer1, buffer2)
02199 #endif
02200        CASE(3)
02201 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
02202         CALL contract_sgpf(work,&
02203                  nl_a, nl_b, nl_c, nl_d, &
02204                   sphi_a, sphi_b, sphi_c, sphi_d, &
02205                   primitives,&
02206                   buffer1,buffer2 )
02207 #else
02208         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
02209                               work, nl_a, nl_b, nl_c, nl_d, &
02210                               sphi_a, &
02211                               sphi_b, &
02212                               sphi_c, &
02213                               sphi_d, &
02214                               primitives, &
02215                               buffer1, buffer2)
02216 #endif
02217        CASE(4)
02218 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
02219         CALL contract_sgpg(work,&
02220                  nl_a, nl_b, nl_c, nl_d, &
02221                   sphi_a, sphi_b, sphi_c, sphi_d, &
02222                   primitives,&
02223                   buffer1,buffer2 )
02224 #else
02225         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
02226                               work, nl_a, nl_b, nl_c, nl_d, &
02227                               sphi_a, &
02228                               sphi_b, &
02229                               sphi_c, &
02230                               sphi_d, &
02231                               primitives, &
02232                               buffer1, buffer2)
02233 #endif
02234        CASE DEFAULT
02235         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
02236                               work, nl_a, nl_b, nl_c, nl_d, &
02237                               sphi_a, &
02238                               sphi_b, &
02239                               sphi_c, &
02240                               sphi_d, &
02241                               primitives, &
02242                               buffer1, buffer2)
02243        END SELECT
02244       CASE(2)
02245        SELECT CASE(n_d)
02246        CASE(0)
02247 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
02248         CALL contract_sgds(work,&
02249                  nl_a, nl_b, nl_c, nl_d, &
02250                   sphi_a, sphi_b, sphi_c, sphi_d, &
02251                   primitives,&
02252                   buffer1,buffer2 )
02253 #else
02254         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
02255                               work, nl_a, nl_b, nl_c, nl_d, &
02256                               sphi_a, &
02257                               sphi_b, &
02258                               sphi_c, &
02259                               sphi_d, &
02260                               primitives, &
02261                               buffer1, buffer2)
02262 #endif
02263        CASE(1)
02264 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
02265         CALL contract_sgdp(work,&
02266                  nl_a, nl_b, nl_c, nl_d, &
02267                   sphi_a, sphi_b, sphi_c, sphi_d, &
02268                   primitives,&
02269                   buffer1,buffer2 )
02270 #else
02271         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
02272                               work, nl_a, nl_b, nl_c, nl_d, &
02273                               sphi_a, &
02274                               sphi_b, &
02275                               sphi_c, &
02276                               sphi_d, &
02277                               primitives, &
02278                               buffer1, buffer2)
02279 #endif
02280        CASE(2)
02281 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
02282         CALL contract_sgdd(work,&
02283                  nl_a, nl_b, nl_c, nl_d, &
02284                   sphi_a, sphi_b, sphi_c, sphi_d, &
02285                   primitives,&
02286                   buffer1,buffer2 )
02287 #else
02288         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
02289                               work, nl_a, nl_b, nl_c, nl_d, &
02290                               sphi_a, &
02291                               sphi_b, &
02292                               sphi_c, &
02293                               sphi_d, &
02294                               primitives, &
02295                               buffer1, buffer2)
02296 #endif
02297        CASE(3)
02298 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
02299         CALL contract_sgdf(work,&
02300                  nl_a, nl_b, nl_c, nl_d, &
02301                   sphi_a, sphi_b, sphi_c, sphi_d, &
02302                   primitives,&
02303                   buffer1,buffer2 )
02304 #else
02305         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
02306                               work, nl_a, nl_b, nl_c, nl_d, &
02307                               sphi_a, &
02308                               sphi_b, &
02309                               sphi_c, &
02310                               sphi_d, &
02311                               primitives, &
02312                               buffer1, buffer2)
02313 #endif
02314        CASE(4)
02315 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
02316         CALL contract_sgdg(work,&
02317                  nl_a, nl_b, nl_c, nl_d, &
02318                   sphi_a, sphi_b, sphi_c, sphi_d, &
02319                   primitives,&
02320                   buffer1,buffer2 )
02321 #else
02322         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
02323                               work, nl_a, nl_b, nl_c, nl_d, &
02324                               sphi_a, &
02325                               sphi_b, &
02326                               sphi_c, &
02327                               sphi_d, &
02328                               primitives, &
02329                               buffer1, buffer2)
02330 #endif
02331        CASE DEFAULT
02332         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
02333                               work, nl_a, nl_b, nl_c, nl_d, &
02334                               sphi_a, &
02335                               sphi_b, &
02336                               sphi_c, &
02337                               sphi_d, &
02338                               primitives, &
02339                               buffer1, buffer2)
02340        END SELECT
02341       CASE(3)
02342        SELECT CASE(n_d)
02343        CASE(0)
02344 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
02345         CALL contract_sgfs(work,&
02346                  nl_a, nl_b, nl_c, nl_d, &
02347                   sphi_a, sphi_b, sphi_c, sphi_d, &
02348                   primitives,&
02349                   buffer1,buffer2 )
02350 #else
02351         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
02352                               work, nl_a, nl_b, nl_c, nl_d, &
02353                               sphi_a, &
02354                               sphi_b, &
02355                               sphi_c, &
02356                               sphi_d, &
02357                               primitives, &
02358                               buffer1, buffer2)
02359 #endif
02360        CASE(1)
02361 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
02362         CALL contract_sgfp(work,&
02363                  nl_a, nl_b, nl_c, nl_d, &
02364                   sphi_a, sphi_b, sphi_c, sphi_d, &
02365                   primitives,&
02366                   buffer1,buffer2 )
02367 #else
02368         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
02369                               work, nl_a, nl_b, nl_c, nl_d, &
02370                               sphi_a, &
02371                               sphi_b, &
02372                               sphi_c, &
02373                               sphi_d, &
02374                               primitives, &
02375                               buffer1, buffer2)
02376 #endif
02377        CASE(2)
02378 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
02379         CALL contract_sgfd(work,&
02380                  nl_a, nl_b, nl_c, nl_d, &
02381                   sphi_a, sphi_b, sphi_c, sphi_d, &
02382                   primitives,&
02383                   buffer1,buffer2 )
02384 #else
02385         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
02386                               work, nl_a, nl_b, nl_c, nl_d, &
02387                               sphi_a, &
02388                               sphi_b, &
02389                               sphi_c, &
02390                               sphi_d, &
02391                               primitives, &
02392                               buffer1, buffer2)
02393 #endif
02394        CASE(3)
02395 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
02396         CALL contract_sgff(work,&
02397                  nl_a, nl_b, nl_c, nl_d, &
02398                   sphi_a, sphi_b, sphi_c, sphi_d, &
02399                   primitives,&
02400                   buffer1,buffer2 )
02401 #else
02402         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
02403                               work, nl_a, nl_b, nl_c, nl_d, &
02404                               sphi_a, &
02405                               sphi_b, &
02406                               sphi_c, &
02407                               sphi_d, &
02408                               primitives, &
02409                               buffer1, buffer2)
02410 #endif
02411        CASE(4)
02412 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
02413         CALL contract_sgfg(work,&
02414                  nl_a, nl_b, nl_c, nl_d, &
02415                   sphi_a, sphi_b, sphi_c, sphi_d, &
02416                   primitives,&
02417                   buffer1,buffer2 )
02418 #else
02419         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
02420                               work, nl_a, nl_b, nl_c, nl_d, &
02421                               sphi_a, &
02422                               sphi_b, &
02423                               sphi_c, &
02424                               sphi_d, &
02425                               primitives, &
02426                               buffer1, buffer2)
02427 #endif
02428        CASE DEFAULT
02429         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
02430                               work, nl_a, nl_b, nl_c, nl_d, &
02431                               sphi_a, &
02432                               sphi_b, &
02433                               sphi_c, &
02434                               sphi_d, &
02435                               primitives, &
02436                               buffer1, buffer2)
02437        END SELECT
02438       CASE(4)
02439        SELECT CASE(n_d)
02440        CASE(0)
02441 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
02442         CALL contract_sggs(work,&
02443                  nl_a, nl_b, nl_c, nl_d, &
02444                   sphi_a, sphi_b, sphi_c, sphi_d, &
02445                   primitives,&
02446                   buffer1,buffer2 )
02447 #else
02448         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
02449                               work, nl_a, nl_b, nl_c, nl_d, &
02450                               sphi_a, &
02451                               sphi_b, &
02452                               sphi_c, &
02453                               sphi_d, &
02454                               primitives, &
02455                               buffer1, buffer2)
02456 #endif
02457        CASE(1)
02458 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
02459         CALL contract_sggp(work,&
02460                  nl_a, nl_b, nl_c, nl_d, &
02461                   sphi_a, sphi_b, sphi_c, sphi_d, &
02462                   primitives,&
02463                   buffer1,buffer2 )
02464 #else
02465         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
02466                               work, nl_a, nl_b, nl_c, nl_d, &
02467                               sphi_a, &
02468                               sphi_b, &
02469                               sphi_c, &
02470                               sphi_d, &
02471                               primitives, &
02472                               buffer1, buffer2)
02473 #endif
02474        CASE(2)
02475 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
02476         CALL contract_sggd(work,&
02477                  nl_a, nl_b, nl_c, nl_d, &
02478                   sphi_a, sphi_b, sphi_c, sphi_d, &
02479                   primitives,&
02480                   buffer1,buffer2 )
02481 #else
02482         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
02483                               work, nl_a, nl_b, nl_c, nl_d, &
02484                               sphi_a, &
02485                               sphi_b, &
02486                               sphi_c, &
02487                               sphi_d, &
02488                               primitives, &
02489                               buffer1, buffer2)
02490 #endif
02491        CASE(3)
02492 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
02493         CALL contract_sggf(work,&
02494                  nl_a, nl_b, nl_c, nl_d, &
02495                   sphi_a, sphi_b, sphi_c, sphi_d, &
02496                   primitives,&
02497                   buffer1,buffer2 )
02498 #else
02499         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
02500                               work, nl_a, nl_b, nl_c, nl_d, &
02501                               sphi_a, &
02502                               sphi_b, &
02503                               sphi_c, &
02504                               sphi_d, &
02505                               primitives, &
02506                               buffer1, buffer2)
02507 #endif
02508        CASE(4)
02509 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
02510         CALL contract_sggg(work,&
02511                  nl_a, nl_b, nl_c, nl_d, &
02512                   sphi_a, sphi_b, sphi_c, sphi_d, &
02513                   primitives,&
02514                   buffer1,buffer2 )
02515 #else
02516         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
02517                               work, nl_a, nl_b, nl_c, nl_d, &
02518                               sphi_a, &
02519                               sphi_b, &
02520                               sphi_c, &
02521                               sphi_d, &
02522                               primitives, &
02523                               buffer1, buffer2)
02524 #endif
02525        CASE DEFAULT
02526         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
02527                               work, nl_a, nl_b, nl_c, nl_d, &
02528                               sphi_a, &
02529                               sphi_b, &
02530                               sphi_c, &
02531                               sphi_d, &
02532                               primitives, &
02533                               buffer1, buffer2)
02534        END SELECT
02535       CASE DEFAULT
02536        CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
02537                              work, nl_a, nl_b, nl_c, nl_d, &
02538                              sphi_a, &
02539                              sphi_b, &
02540                              sphi_c, &
02541                              sphi_d, &
02542                              primitives, &
02543                              buffer1, buffer2)
02544       END SELECT
02545      CASE DEFAULT
02546       CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
02547                             work, nl_a, nl_b, nl_c, nl_d, &
02548                             sphi_a, &
02549                             sphi_b, &
02550                             sphi_c, &
02551                             sphi_d, &
02552                             primitives, &
02553                             buffer1, buffer2)
02554      END SELECT
02555     CASE(1)
02556      SELECT CASE(n_b)
02557      CASE(0)
02558       SELECT CASE(n_c)
02559       CASE(0)
02560        SELECT CASE(n_d)
02561        CASE(0)
02562 #if __MAX_CONTR > 1 || __MAX_CONTR == 1
02563         CALL contract_psss(work,&
02564                  nl_a, nl_b, nl_c, nl_d, &
02565                   sphi_a, sphi_b, sphi_c, sphi_d, &
02566                   primitives,&
02567                   buffer1,buffer2 )
02568 #else
02569         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
02570                               work, nl_a, nl_b, nl_c, nl_d, &
02571                               sphi_a, &
02572                               sphi_b, &
02573                               sphi_c, &
02574                               sphi_d, &
02575                               primitives, &
02576                               buffer1, buffer2)
02577 #endif
02578        CASE(1)
02579 #if __MAX_CONTR > 1 || __MAX_CONTR == 1
02580         CALL contract_pssp(work,&
02581                  nl_a, nl_b, nl_c, nl_d, &
02582                   sphi_a, sphi_b, sphi_c, sphi_d, &
02583                   primitives,&
02584                   buffer1,buffer2 )
02585 #else
02586         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
02587                               work, nl_a, nl_b, nl_c, nl_d, &
02588                               sphi_a, &
02589                               sphi_b, &
02590                               sphi_c, &
02591                               sphi_d, &
02592                               primitives, &
02593                               buffer1, buffer2)
02594 #endif
02595        CASE(2)
02596 #if __MAX_CONTR > 2 || __MAX_CONTR == 2
02597         CALL contract_pssd(work,&
02598                  nl_a, nl_b, nl_c, nl_d, &
02599                   sphi_a, sphi_b, sphi_c, sphi_d, &
02600                   primitives,&
02601                   buffer1,buffer2 )
02602 #else
02603         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
02604                               work, nl_a, nl_b, nl_c, nl_d, &
02605                               sphi_a, &
02606                               sphi_b, &
02607                               sphi_c, &
02608                               sphi_d, &
02609                               primitives, &
02610                               buffer1, buffer2)
02611 #endif
02612        CASE(3)
02613 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
02614         CALL contract_pssf(work,&
02615                  nl_a, nl_b, nl_c, nl_d, &
02616                   sphi_a, sphi_b, sphi_c, sphi_d, &
02617                   primitives,&
02618                   buffer1,buffer2 )
02619 #else
02620         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
02621                               work, nl_a, nl_b, nl_c, nl_d, &
02622                               sphi_a, &
02623                               sphi_b, &
02624                               sphi_c, &
02625                               sphi_d, &
02626                               primitives, &
02627                               buffer1, buffer2)
02628 #endif
02629        CASE(4)
02630 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
02631         CALL contract_pssg(work,&
02632                  nl_a, nl_b, nl_c, nl_d, &
02633                   sphi_a, sphi_b, sphi_c, sphi_d, &
02634                   primitives,&
02635                   buffer1,buffer2 )
02636 #else
02637         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
02638                               work, nl_a, nl_b, nl_c, nl_d, &
02639                               sphi_a, &
02640                               sphi_b, &
02641                               sphi_c, &
02642                               sphi_d, &
02643                               primitives, &
02644                               buffer1, buffer2)
02645 #endif
02646        CASE DEFAULT
02647         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
02648                               work, nl_a, nl_b, nl_c, nl_d, &
02649                               sphi_a, &
02650                               sphi_b, &
02651                               sphi_c, &
02652                               sphi_d, &
02653                               primitives, &
02654                               buffer1, buffer2)
02655        END SELECT
02656       CASE(1)
02657        SELECT CASE(n_d)
02658        CASE(0)
02659 #if __MAX_CONTR > 1 || __MAX_CONTR == 1
02660         CALL contract_psps(work,&
02661                  nl_a, nl_b, nl_c, nl_d, &
02662                   sphi_a, sphi_b, sphi_c, sphi_d, &
02663                   primitives,&
02664                   buffer1,buffer2 )
02665 #else
02666         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
02667                               work, nl_a, nl_b, nl_c, nl_d, &
02668                               sphi_a, &
02669                               sphi_b, &
02670                               sphi_c, &
02671                               sphi_d, &
02672                               primitives, &
02673                               buffer1, buffer2)
02674 #endif
02675        CASE(1)
02676 #if __MAX_CONTR > 1 || __MAX_CONTR == 1
02677         CALL contract_pspp(work,&
02678                  nl_a, nl_b, nl_c, nl_d, &
02679                   sphi_a, sphi_b, sphi_c, sphi_d, &
02680                   primitives,&
02681                   buffer1,buffer2 )
02682 #else
02683         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
02684                               work, nl_a, nl_b, nl_c, nl_d, &
02685                               sphi_a, &
02686                               sphi_b, &
02687                               sphi_c, &
02688                               sphi_d, &
02689                               primitives, &
02690                               buffer1, buffer2)
02691 #endif
02692        CASE(2)
02693 #if __MAX_CONTR > 2 || __MAX_CONTR == 2
02694         CALL contract_pspd(work,&
02695                  nl_a, nl_b, nl_c, nl_d, &
02696                   sphi_a, sphi_b, sphi_c, sphi_d, &
02697                   primitives,&
02698                   buffer1,buffer2 )
02699 #else
02700         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
02701                               work, nl_a, nl_b, nl_c, nl_d, &
02702                               sphi_a, &
02703                               sphi_b, &
02704                               sphi_c, &
02705                               sphi_d, &
02706                               primitives, &
02707                               buffer1, buffer2)
02708 #endif
02709        CASE(3)
02710 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
02711         CALL contract_pspf(work,&
02712                  nl_a, nl_b, nl_c, nl_d, &
02713                   sphi_a, sphi_b, sphi_c, sphi_d, &
02714                   primitives,&
02715                   buffer1,buffer2 )
02716 #else
02717         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
02718                               work, nl_a, nl_b, nl_c, nl_d, &
02719                               sphi_a, &
02720                               sphi_b, &
02721                               sphi_c, &
02722                               sphi_d, &
02723                               primitives, &
02724                               buffer1, buffer2)
02725 #endif
02726        CASE(4)
02727 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
02728         CALL contract_pspg(work,&
02729                  nl_a, nl_b, nl_c, nl_d, &
02730                   sphi_a, sphi_b, sphi_c, sphi_d, &
02731                   primitives,&
02732                   buffer1,buffer2 )
02733 #else
02734         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
02735                               work, nl_a, nl_b, nl_c, nl_d, &
02736                               sphi_a, &
02737                               sphi_b, &
02738                               sphi_c, &
02739                               sphi_d, &
02740                               primitives, &
02741                               buffer1, buffer2)
02742 #endif
02743        CASE DEFAULT
02744         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
02745                               work, nl_a, nl_b, nl_c, nl_d, &
02746                               sphi_a, &
02747                               sphi_b, &
02748                               sphi_c, &
02749                               sphi_d, &
02750                               primitives, &
02751                               buffer1, buffer2)
02752        END SELECT
02753       CASE(2)
02754        SELECT CASE(n_d)
02755        CASE(0)
02756 #if __MAX_CONTR > 2 || __MAX_CONTR == 2
02757         CALL contract_psds(work,&
02758                  nl_a, nl_b, nl_c, nl_d, &
02759                   sphi_a, sphi_b, sphi_c, sphi_d, &
02760                   primitives,&
02761                   buffer1,buffer2 )
02762 #else
02763         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
02764                               work, nl_a, nl_b, nl_c, nl_d, &
02765                               sphi_a, &
02766                               sphi_b, &
02767                               sphi_c, &
02768                               sphi_d, &
02769                               primitives, &
02770                               buffer1, buffer2)
02771 #endif
02772        CASE(1)
02773 #if __MAX_CONTR > 2 || __MAX_CONTR == 2
02774         CALL contract_psdp(work,&
02775                  nl_a, nl_b, nl_c, nl_d, &
02776                   sphi_a, sphi_b, sphi_c, sphi_d, &
02777                   primitives,&
02778                   buffer1,buffer2 )
02779 #else
02780         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
02781                               work, nl_a, nl_b, nl_c, nl_d, &
02782                               sphi_a, &
02783                               sphi_b, &
02784                               sphi_c, &
02785                               sphi_d, &
02786                               primitives, &
02787                               buffer1, buffer2)
02788 #endif
02789        CASE(2)
02790 #if __MAX_CONTR > 2 || __MAX_CONTR == 2
02791         CALL contract_psdd(work,&
02792                  nl_a, nl_b, nl_c, nl_d, &
02793                   sphi_a, sphi_b, sphi_c, sphi_d, &
02794                   primitives,&
02795                   buffer1,buffer2 )
02796 #else
02797         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
02798                               work, nl_a, nl_b, nl_c, nl_d, &
02799                               sphi_a, &
02800                               sphi_b, &
02801                               sphi_c, &
02802                               sphi_d, &
02803                               primitives, &
02804                               buffer1, buffer2)
02805 #endif
02806        CASE(3)
02807 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
02808         CALL contract_psdf(work,&
02809                  nl_a, nl_b, nl_c, nl_d, &
02810                   sphi_a, sphi_b, sphi_c, sphi_d, &
02811                   primitives,&
02812                   buffer1,buffer2 )
02813 #else
02814         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
02815                               work, nl_a, nl_b, nl_c, nl_d, &
02816                               sphi_a, &
02817                               sphi_b, &
02818                               sphi_c, &
02819                               sphi_d, &
02820                               primitives, &
02821                               buffer1, buffer2)
02822 #endif
02823        CASE(4)
02824 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
02825         CALL contract_psdg(work,&
02826                  nl_a, nl_b, nl_c, nl_d, &
02827                   sphi_a, sphi_b, sphi_c, sphi_d, &
02828                   primitives,&
02829                   buffer1,buffer2 )
02830 #else
02831         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
02832                               work, nl_a, nl_b, nl_c, nl_d, &
02833                               sphi_a, &
02834                               sphi_b, &
02835                               sphi_c, &
02836                               sphi_d, &
02837                               primitives, &
02838                               buffer1, buffer2)
02839 #endif
02840        CASE DEFAULT
02841         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
02842                               work, nl_a, nl_b, nl_c, nl_d, &
02843                               sphi_a, &
02844                               sphi_b, &
02845                               sphi_c, &
02846                               sphi_d, &
02847                               primitives, &
02848                               buffer1, buffer2)
02849        END SELECT
02850       CASE(3)
02851        SELECT CASE(n_d)
02852        CASE(0)
02853 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
02854         CALL contract_psfs(work,&
02855                  nl_a, nl_b, nl_c, nl_d, &
02856                   sphi_a, sphi_b, sphi_c, sphi_d, &
02857                   primitives,&
02858                   buffer1,buffer2 )
02859 #else
02860         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
02861                               work, nl_a, nl_b, nl_c, nl_d, &
02862                               sphi_a, &
02863                               sphi_b, &
02864                               sphi_c, &
02865                               sphi_d, &
02866                               primitives, &
02867                               buffer1, buffer2)
02868 #endif
02869        CASE(1)
02870 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
02871         CALL contract_psfp(work,&
02872                  nl_a, nl_b, nl_c, nl_d, &
02873                   sphi_a, sphi_b, sphi_c, sphi_d, &
02874                   primitives,&
02875                   buffer1,buffer2 )
02876 #else
02877         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
02878                               work, nl_a, nl_b, nl_c, nl_d, &
02879                               sphi_a, &
02880                               sphi_b, &
02881                               sphi_c, &
02882                               sphi_d, &
02883                               primitives, &
02884                               buffer1, buffer2)
02885 #endif
02886        CASE(2)
02887 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
02888         CALL contract_psfd(work,&
02889                  nl_a, nl_b, nl_c, nl_d, &
02890                   sphi_a, sphi_b, sphi_c, sphi_d, &
02891                   primitives,&
02892                   buffer1,buffer2 )
02893 #else
02894         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
02895                               work, nl_a, nl_b, nl_c, nl_d, &
02896                               sphi_a, &
02897                               sphi_b, &
02898                               sphi_c, &
02899                               sphi_d, &
02900                               primitives, &
02901                               buffer1, buffer2)
02902 #endif
02903        CASE(3)
02904 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
02905         CALL contract_psff(work,&
02906                  nl_a, nl_b, nl_c, nl_d, &
02907                   sphi_a, sphi_b, sphi_c, sphi_d, &
02908                   primitives,&
02909                   buffer1,buffer2 )
02910 #else
02911         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
02912                               work, nl_a, nl_b, nl_c, nl_d, &
02913                               sphi_a, &
02914                               sphi_b, &
02915                               sphi_c, &
02916                               sphi_d, &
02917                               primitives, &
02918                               buffer1, buffer2)
02919 #endif
02920        CASE(4)
02921 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
02922         CALL contract_psfg(work,&
02923                  nl_a, nl_b, nl_c, nl_d, &
02924                   sphi_a, sphi_b, sphi_c, sphi_d, &
02925                   primitives,&
02926                   buffer1,buffer2 )
02927 #else
02928         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
02929                               work, nl_a, nl_b, nl_c, nl_d, &
02930                               sphi_a, &
02931                               sphi_b, &
02932                               sphi_c, &
02933                               sphi_d, &
02934                               primitives, &
02935                               buffer1, buffer2)
02936 #endif
02937        CASE DEFAULT
02938         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
02939                               work, nl_a, nl_b, nl_c, nl_d, &
02940                               sphi_a, &
02941                               sphi_b, &
02942                               sphi_c, &
02943                               sphi_d, &
02944                               primitives, &
02945                               buffer1, buffer2)
02946        END SELECT
02947       CASE(4)
02948        SELECT CASE(n_d)
02949        CASE(0)
02950 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
02951         CALL contract_psgs(work,&
02952                  nl_a, nl_b, nl_c, nl_d, &
02953                   sphi_a, sphi_b, sphi_c, sphi_d, &
02954                   primitives,&
02955                   buffer1,buffer2 )
02956 #else
02957         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
02958                               work, nl_a, nl_b, nl_c, nl_d, &
02959                               sphi_a, &
02960                               sphi_b, &
02961                               sphi_c, &
02962                               sphi_d, &
02963                               primitives, &
02964                               buffer1, buffer2)
02965 #endif
02966        CASE(1)
02967 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
02968         CALL contract_psgp(work,&
02969                  nl_a, nl_b, nl_c, nl_d, &
02970                   sphi_a, sphi_b, sphi_c, sphi_d, &
02971                   primitives,&
02972                   buffer1,buffer2 )
02973 #else
02974         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
02975                               work, nl_a, nl_b, nl_c, nl_d, &
02976                               sphi_a, &
02977                               sphi_b, &
02978                               sphi_c, &
02979                               sphi_d, &
02980                               primitives, &
02981                               buffer1, buffer2)
02982 #endif
02983        CASE(2)
02984 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
02985         CALL contract_psgd(work,&
02986                  nl_a, nl_b, nl_c, nl_d, &
02987                   sphi_a, sphi_b, sphi_c, sphi_d, &
02988                   primitives,&
02989                   buffer1,buffer2 )
02990 #else
02991         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
02992                               work, nl_a, nl_b, nl_c, nl_d, &
02993                               sphi_a, &
02994                               sphi_b, &
02995                               sphi_c, &
02996                               sphi_d, &
02997                               primitives, &
02998                               buffer1, buffer2)
02999 #endif
03000        CASE(3)
03001 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
03002         CALL contract_psgf(work,&
03003                  nl_a, nl_b, nl_c, nl_d, &
03004                   sphi_a, sphi_b, sphi_c, sphi_d, &
03005                   primitives,&
03006                   buffer1,buffer2 )
03007 #else
03008         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
03009                               work, nl_a, nl_b, nl_c, nl_d, &
03010                               sphi_a, &
03011                               sphi_b, &
03012                               sphi_c, &
03013                               sphi_d, &
03014                               primitives, &
03015                               buffer1, buffer2)
03016 #endif
03017        CASE(4)
03018 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
03019         CALL contract_psgg(work,&
03020                  nl_a, nl_b, nl_c, nl_d, &
03021                   sphi_a, sphi_b, sphi_c, sphi_d, &
03022                   primitives,&
03023                   buffer1,buffer2 )
03024 #else
03025         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
03026                               work, nl_a, nl_b, nl_c, nl_d, &
03027                               sphi_a, &
03028                               sphi_b, &
03029                               sphi_c, &
03030                               sphi_d, &
03031                               primitives, &
03032                               buffer1, buffer2)
03033 #endif
03034        CASE DEFAULT
03035         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
03036                               work, nl_a, nl_b, nl_c, nl_d, &
03037                               sphi_a, &
03038                               sphi_b, &
03039                               sphi_c, &
03040                               sphi_d, &
03041                               primitives, &
03042                               buffer1, buffer2)
03043        END SELECT
03044       CASE DEFAULT
03045        CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
03046                              work, nl_a, nl_b, nl_c, nl_d, &
03047                              sphi_a, &
03048                              sphi_b, &
03049                              sphi_c, &
03050                              sphi_d, &
03051                              primitives, &
03052                              buffer1, buffer2)
03053       END SELECT
03054      CASE(1)
03055       SELECT CASE(n_c)
03056       CASE(0)
03057        SELECT CASE(n_d)
03058        CASE(0)
03059 #if __MAX_CONTR > 1 || __MAX_CONTR == 1
03060         CALL contract_ppss(work,&
03061                  nl_a, nl_b, nl_c, nl_d, &
03062                   sphi_a, sphi_b, sphi_c, sphi_d, &
03063                   primitives,&
03064                   buffer1,buffer2 )
03065 #else
03066         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
03067                               work, nl_a, nl_b, nl_c, nl_d, &
03068                               sphi_a, &
03069                               sphi_b, &
03070                               sphi_c, &
03071                               sphi_d, &
03072                               primitives, &
03073                               buffer1, buffer2)
03074 #endif
03075        CASE(1)
03076 #if __MAX_CONTR > 1 || __MAX_CONTR == 1
03077         CALL contract_ppsp(work,&
03078                  nl_a, nl_b, nl_c, nl_d, &
03079                   sphi_a, sphi_b, sphi_c, sphi_d, &
03080                   primitives,&
03081                   buffer1,buffer2 )
03082 #else
03083         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
03084                               work, nl_a, nl_b, nl_c, nl_d, &
03085                               sphi_a, &
03086                               sphi_b, &
03087                               sphi_c, &
03088                               sphi_d, &
03089                               primitives, &
03090                               buffer1, buffer2)
03091 #endif
03092        CASE(2)
03093 #if __MAX_CONTR > 2 || __MAX_CONTR == 2
03094         CALL contract_ppsd(work,&
03095                  nl_a, nl_b, nl_c, nl_d, &
03096                   sphi_a, sphi_b, sphi_c, sphi_d, &
03097                   primitives,&
03098                   buffer1,buffer2 )
03099 #else
03100         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
03101                               work, nl_a, nl_b, nl_c, nl_d, &
03102                               sphi_a, &
03103                               sphi_b, &
03104                               sphi_c, &
03105                               sphi_d, &
03106                               primitives, &
03107                               buffer1, buffer2)
03108 #endif
03109        CASE(3)
03110 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
03111         CALL contract_ppsf(work,&
03112                  nl_a, nl_b, nl_c, nl_d, &
03113                   sphi_a, sphi_b, sphi_c, sphi_d, &
03114                   primitives,&
03115                   buffer1,buffer2 )
03116 #else
03117         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
03118                               work, nl_a, nl_b, nl_c, nl_d, &
03119                               sphi_a, &
03120                               sphi_b, &
03121                               sphi_c, &
03122                               sphi_d, &
03123                               primitives, &
03124                               buffer1, buffer2)
03125 #endif
03126        CASE(4)
03127 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
03128         CALL contract_ppsg(work,&
03129                  nl_a, nl_b, nl_c, nl_d, &
03130                   sphi_a, sphi_b, sphi_c, sphi_d, &
03131                   primitives,&
03132                   buffer1,buffer2 )
03133 #else
03134         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
03135                               work, nl_a, nl_b, nl_c, nl_d, &
03136                               sphi_a, &
03137                               sphi_b, &
03138                               sphi_c, &
03139                               sphi_d, &
03140                               primitives, &
03141                               buffer1, buffer2)
03142 #endif
03143        CASE DEFAULT
03144         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
03145                               work, nl_a, nl_b, nl_c, nl_d, &
03146                               sphi_a, &
03147                               sphi_b, &
03148                               sphi_c, &
03149                               sphi_d, &
03150                               primitives, &
03151                               buffer1, buffer2)
03152        END SELECT
03153       CASE(1)
03154        SELECT CASE(n_d)
03155        CASE(0)
03156 #if __MAX_CONTR > 1 || __MAX_CONTR == 1
03157         CALL contract_ppps(work,&
03158                  nl_a, nl_b, nl_c, nl_d, &
03159                   sphi_a, sphi_b, sphi_c, sphi_d, &
03160                   primitives,&
03161                   buffer1,buffer2 )
03162 #else
03163         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
03164                               work, nl_a, nl_b, nl_c, nl_d, &
03165                               sphi_a, &
03166                               sphi_b, &
03167                               sphi_c, &
03168                               sphi_d, &
03169                               primitives, &
03170                               buffer1, buffer2)
03171 #endif
03172        CASE(1)
03173 #if __MAX_CONTR > 1 || __MAX_CONTR == 1
03174         CALL contract_pppp(work,&
03175                  nl_a, nl_b, nl_c, nl_d, &
03176                   sphi_a, sphi_b, sphi_c, sphi_d, &
03177                   primitives,&
03178                   buffer1,buffer2 )
03179 #else
03180         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
03181                               work, nl_a, nl_b, nl_c, nl_d, &
03182                               sphi_a, &
03183                               sphi_b, &
03184                               sphi_c, &
03185                               sphi_d, &
03186                               primitives, &
03187                               buffer1, buffer2)
03188 #endif
03189        CASE(2)
03190 #if __MAX_CONTR > 2 || __MAX_CONTR == 2
03191         CALL contract_pppd(work,&
03192                  nl_a, nl_b, nl_c, nl_d, &
03193                   sphi_a, sphi_b, sphi_c, sphi_d, &
03194                   primitives,&
03195                   buffer1,buffer2 )
03196 #else
03197         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
03198                               work, nl_a, nl_b, nl_c, nl_d, &
03199                               sphi_a, &
03200                               sphi_b, &
03201                               sphi_c, &
03202                               sphi_d, &
03203                               primitives, &
03204                               buffer1, buffer2)
03205 #endif
03206        CASE(3)
03207 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
03208         CALL contract_pppf(work,&
03209                  nl_a, nl_b, nl_c, nl_d, &
03210                   sphi_a, sphi_b, sphi_c, sphi_d, &
03211                   primitives,&
03212                   buffer1,buffer2 )
03213 #else
03214         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
03215                               work, nl_a, nl_b, nl_c, nl_d, &
03216                               sphi_a, &
03217                               sphi_b, &
03218                               sphi_c, &
03219                               sphi_d, &
03220                               primitives, &
03221                               buffer1, buffer2)
03222 #endif
03223        CASE(4)
03224 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
03225         CALL contract_pppg(work,&
03226                  nl_a, nl_b, nl_c, nl_d, &
03227                   sphi_a, sphi_b, sphi_c, sphi_d, &
03228                   primitives,&
03229                   buffer1,buffer2 )
03230 #else
03231         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
03232                               work, nl_a, nl_b, nl_c, nl_d, &
03233                               sphi_a, &
03234                               sphi_b, &
03235                               sphi_c, &
03236                               sphi_d, &
03237                               primitives, &
03238                               buffer1, buffer2)
03239 #endif
03240        CASE DEFAULT
03241         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
03242                               work, nl_a, nl_b, nl_c, nl_d, &
03243                               sphi_a, &
03244                               sphi_b, &
03245                               sphi_c, &
03246                               sphi_d, &
03247                               primitives, &
03248                               buffer1, buffer2)
03249        END SELECT
03250       CASE(2)
03251        SELECT CASE(n_d)
03252        CASE(0)
03253 #if __MAX_CONTR > 2 || __MAX_CONTR == 2
03254         CALL contract_ppds(work,&
03255                  nl_a, nl_b, nl_c, nl_d, &
03256                   sphi_a, sphi_b, sphi_c, sphi_d, &
03257                   primitives,&
03258                   buffer1,buffer2 )
03259 #else
03260         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
03261                               work, nl_a, nl_b, nl_c, nl_d, &
03262                               sphi_a, &
03263                               sphi_b, &
03264                               sphi_c, &
03265                               sphi_d, &
03266                               primitives, &
03267                               buffer1, buffer2)
03268 #endif
03269        CASE(1)
03270 #if __MAX_CONTR > 2 || __MAX_CONTR == 2
03271         CALL contract_ppdp(work,&
03272                  nl_a, nl_b, nl_c, nl_d, &
03273                   sphi_a, sphi_b, sphi_c, sphi_d, &
03274                   primitives,&
03275                   buffer1,buffer2 )
03276 #else
03277         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
03278                               work, nl_a, nl_b, nl_c, nl_d, &
03279                               sphi_a, &
03280                               sphi_b, &
03281                               sphi_c, &
03282                               sphi_d, &
03283                               primitives, &
03284                               buffer1, buffer2)
03285 #endif
03286        CASE(2)
03287 #if __MAX_CONTR > 2 || __MAX_CONTR == 2
03288         CALL contract_ppdd(work,&
03289                  nl_a, nl_b, nl_c, nl_d, &
03290                   sphi_a, sphi_b, sphi_c, sphi_d, &
03291                   primitives,&
03292                   buffer1,buffer2 )
03293 #else
03294         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
03295                               work, nl_a, nl_b, nl_c, nl_d, &
03296                               sphi_a, &
03297                               sphi_b, &
03298                               sphi_c, &
03299                               sphi_d, &
03300                               primitives, &
03301                               buffer1, buffer2)
03302 #endif
03303        CASE(3)
03304 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
03305         CALL contract_ppdf(work,&
03306                  nl_a, nl_b, nl_c, nl_d, &
03307                   sphi_a, sphi_b, sphi_c, sphi_d, &
03308                   primitives,&
03309                   buffer1,buffer2 )
03310 #else
03311         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
03312                               work, nl_a, nl_b, nl_c, nl_d, &
03313                               sphi_a, &
03314                               sphi_b, &
03315                               sphi_c, &
03316                               sphi_d, &
03317                               primitives, &
03318                               buffer1, buffer2)
03319 #endif
03320        CASE(4)
03321 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
03322         CALL contract_ppdg(work,&
03323                  nl_a, nl_b, nl_c, nl_d, &
03324                   sphi_a, sphi_b, sphi_c, sphi_d, &
03325                   primitives,&
03326                   buffer1,buffer2 )
03327 #else
03328         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
03329                               work, nl_a, nl_b, nl_c, nl_d, &
03330                               sphi_a, &
03331                               sphi_b, &
03332                               sphi_c, &
03333                               sphi_d, &
03334                               primitives, &
03335                               buffer1, buffer2)
03336 #endif
03337        CASE DEFAULT
03338         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
03339                               work, nl_a, nl_b, nl_c, nl_d, &
03340                               sphi_a, &
03341                               sphi_b, &
03342                               sphi_c, &
03343                               sphi_d, &
03344                               primitives, &
03345                               buffer1, buffer2)
03346        END SELECT
03347       CASE(3)
03348        SELECT CASE(n_d)
03349        CASE(0)
03350 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
03351         CALL contract_ppfs(work,&
03352                  nl_a, nl_b, nl_c, nl_d, &
03353                   sphi_a, sphi_b, sphi_c, sphi_d, &
03354                   primitives,&
03355                   buffer1,buffer2 )
03356 #else
03357         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
03358                               work, nl_a, nl_b, nl_c, nl_d, &
03359                               sphi_a, &
03360                               sphi_b, &
03361                               sphi_c, &
03362                               sphi_d, &
03363                               primitives, &
03364                               buffer1, buffer2)
03365 #endif
03366        CASE(1)
03367 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
03368         CALL contract_ppfp(work,&
03369                  nl_a, nl_b, nl_c, nl_d, &
03370                   sphi_a, sphi_b, sphi_c, sphi_d, &
03371                   primitives,&
03372                   buffer1,buffer2 )
03373 #else
03374         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
03375                               work, nl_a, nl_b, nl_c, nl_d, &
03376                               sphi_a, &
03377                               sphi_b, &
03378                               sphi_c, &
03379                               sphi_d, &
03380                               primitives, &
03381                               buffer1, buffer2)
03382 #endif
03383        CASE(2)
03384 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
03385         CALL contract_ppfd(work,&
03386                  nl_a, nl_b, nl_c, nl_d, &
03387                   sphi_a, sphi_b, sphi_c, sphi_d, &
03388                   primitives,&
03389                   buffer1,buffer2 )
03390 #else
03391         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
03392                               work, nl_a, nl_b, nl_c, nl_d, &
03393                               sphi_a, &
03394                               sphi_b, &
03395                               sphi_c, &
03396                               sphi_d, &
03397                               primitives, &
03398                               buffer1, buffer2)
03399 #endif
03400        CASE(3)
03401 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
03402         CALL contract_ppff(work,&
03403                  nl_a, nl_b, nl_c, nl_d, &
03404                   sphi_a, sphi_b, sphi_c, sphi_d, &
03405                   primitives,&
03406                   buffer1,buffer2 )
03407 #else
03408         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
03409                               work, nl_a, nl_b, nl_c, nl_d, &
03410                               sphi_a, &
03411                               sphi_b, &
03412                               sphi_c, &
03413                               sphi_d, &
03414                               primitives, &
03415                               buffer1, buffer2)
03416 #endif
03417        CASE(4)
03418 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
03419         CALL contract_ppfg(work,&
03420                  nl_a, nl_b, nl_c, nl_d, &
03421                   sphi_a, sphi_b, sphi_c, sphi_d, &
03422                   primitives,&
03423                   buffer1,buffer2 )
03424 #else
03425         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
03426                               work, nl_a, nl_b, nl_c, nl_d, &
03427                               sphi_a, &
03428                               sphi_b, &
03429                               sphi_c, &
03430                               sphi_d, &
03431                               primitives, &
03432                               buffer1, buffer2)
03433 #endif
03434        CASE DEFAULT
03435         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
03436                               work, nl_a, nl_b, nl_c, nl_d, &
03437                               sphi_a, &
03438                               sphi_b, &
03439                               sphi_c, &
03440                               sphi_d, &
03441                               primitives, &
03442                               buffer1, buffer2)
03443        END SELECT
03444       CASE(4)
03445        SELECT CASE(n_d)
03446        CASE(0)
03447 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
03448         CALL contract_ppgs(work,&
03449                  nl_a, nl_b, nl_c, nl_d, &
03450                   sphi_a, sphi_b, sphi_c, sphi_d, &
03451                   primitives,&
03452                   buffer1,buffer2 )
03453 #else
03454         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
03455                               work, nl_a, nl_b, nl_c, nl_d, &
03456                               sphi_a, &
03457                               sphi_b, &
03458                               sphi_c, &
03459                               sphi_d, &
03460                               primitives, &
03461                               buffer1, buffer2)
03462 #endif
03463        CASE(1)
03464 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
03465         CALL contract_ppgp(work,&
03466                  nl_a, nl_b, nl_c, nl_d, &
03467                   sphi_a, sphi_b, sphi_c, sphi_d, &
03468                   primitives,&
03469                   buffer1,buffer2 )
03470 #else
03471         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
03472                               work, nl_a, nl_b, nl_c, nl_d, &
03473                               sphi_a, &
03474                               sphi_b, &
03475                               sphi_c, &
03476                               sphi_d, &
03477                               primitives, &
03478                               buffer1, buffer2)
03479 #endif
03480        CASE(2)
03481 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
03482         CALL contract_ppgd(work,&
03483                  nl_a, nl_b, nl_c, nl_d, &
03484                   sphi_a, sphi_b, sphi_c, sphi_d, &
03485                   primitives,&
03486                   buffer1,buffer2 )
03487 #else
03488         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
03489                               work, nl_a, nl_b, nl_c, nl_d, &
03490                               sphi_a, &
03491                               sphi_b, &
03492                               sphi_c, &
03493                               sphi_d, &
03494                               primitives, &
03495                               buffer1, buffer2)
03496 #endif
03497        CASE(3)
03498 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
03499         CALL contract_ppgf(work,&
03500                  nl_a, nl_b, nl_c, nl_d, &
03501                   sphi_a, sphi_b, sphi_c, sphi_d, &
03502                   primitives,&
03503                   buffer1,buffer2 )
03504 #else
03505         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
03506                               work, nl_a, nl_b, nl_c, nl_d, &
03507                               sphi_a, &
03508                               sphi_b, &
03509                               sphi_c, &
03510                               sphi_d, &
03511                               primitives, &
03512                               buffer1, buffer2)
03513 #endif
03514        CASE(4)
03515 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
03516         CALL contract_ppgg(work,&
03517                  nl_a, nl_b, nl_c, nl_d, &
03518                   sphi_a, sphi_b, sphi_c, sphi_d, &
03519                   primitives,&
03520                   buffer1,buffer2 )
03521 #else
03522         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
03523                               work, nl_a, nl_b, nl_c, nl_d, &
03524                               sphi_a, &
03525                               sphi_b, &
03526                               sphi_c, &
03527                               sphi_d, &
03528                               primitives, &
03529                               buffer1, buffer2)
03530 #endif
03531        CASE DEFAULT
03532         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
03533                               work, nl_a, nl_b, nl_c, nl_d, &
03534                               sphi_a, &
03535                               sphi_b, &
03536                               sphi_c, &
03537                               sphi_d, &
03538                               primitives, &
03539                               buffer1, buffer2)
03540        END SELECT
03541       CASE DEFAULT
03542        CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
03543                              work, nl_a, nl_b, nl_c, nl_d, &
03544                              sphi_a, &
03545                              sphi_b, &
03546                              sphi_c, &
03547                              sphi_d, &
03548                              primitives, &
03549                              buffer1, buffer2)
03550       END SELECT
03551      CASE(2)
03552       SELECT CASE(n_c)
03553       CASE(0)
03554        SELECT CASE(n_d)
03555        CASE(0)
03556 #if __MAX_CONTR > 2 || __MAX_CONTR == 2
03557         CALL contract_pdss(work,&
03558                  nl_a, nl_b, nl_c, nl_d, &
03559                   sphi_a, sphi_b, sphi_c, sphi_d, &
03560                   primitives,&
03561                   buffer1,buffer2 )
03562 #else
03563         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
03564                               work, nl_a, nl_b, nl_c, nl_d, &
03565                               sphi_a, &
03566                               sphi_b, &
03567                               sphi_c, &
03568                               sphi_d, &
03569                               primitives, &
03570                               buffer1, buffer2)
03571 #endif
03572        CASE(1)
03573 #if __MAX_CONTR > 2 || __MAX_CONTR == 2
03574         CALL contract_pdsp(work,&
03575                  nl_a, nl_b, nl_c, nl_d, &
03576                   sphi_a, sphi_b, sphi_c, sphi_d, &
03577                   primitives,&
03578                   buffer1,buffer2 )
03579 #else
03580         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
03581                               work, nl_a, nl_b, nl_c, nl_d, &
03582                               sphi_a, &
03583                               sphi_b, &
03584                               sphi_c, &
03585                               sphi_d, &
03586                               primitives, &
03587                               buffer1, buffer2)
03588 #endif
03589        CASE(2)
03590 #if __MAX_CONTR > 2 || __MAX_CONTR == 2
03591         CALL contract_pdsd(work,&
03592                  nl_a, nl_b, nl_c, nl_d, &
03593                   sphi_a, sphi_b, sphi_c, sphi_d, &
03594                   primitives,&
03595                   buffer1,buffer2 )
03596 #else
03597         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
03598                               work, nl_a, nl_b, nl_c, nl_d, &
03599                               sphi_a, &
03600                               sphi_b, &
03601                               sphi_c, &
03602                               sphi_d, &
03603                               primitives, &
03604                               buffer1, buffer2)
03605 #endif
03606        CASE(3)
03607 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
03608         CALL contract_pdsf(work,&
03609                  nl_a, nl_b, nl_c, nl_d, &
03610                   sphi_a, sphi_b, sphi_c, sphi_d, &
03611                   primitives,&
03612                   buffer1,buffer2 )
03613 #else
03614         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
03615                               work, nl_a, nl_b, nl_c, nl_d, &
03616                               sphi_a, &
03617                               sphi_b, &
03618                               sphi_c, &
03619                               sphi_d, &
03620                               primitives, &
03621                               buffer1, buffer2)
03622 #endif
03623        CASE(4)
03624 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
03625         CALL contract_pdsg(work,&
03626                  nl_a, nl_b, nl_c, nl_d, &
03627                   sphi_a, sphi_b, sphi_c, sphi_d, &
03628                   primitives,&
03629                   buffer1,buffer2 )
03630 #else
03631         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
03632                               work, nl_a, nl_b, nl_c, nl_d, &
03633                               sphi_a, &
03634                               sphi_b, &
03635                               sphi_c, &
03636                               sphi_d, &
03637                               primitives, &
03638                               buffer1, buffer2)
03639 #endif
03640        CASE DEFAULT
03641         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
03642                               work, nl_a, nl_b, nl_c, nl_d, &
03643                               sphi_a, &
03644                               sphi_b, &
03645                               sphi_c, &
03646                               sphi_d, &
03647                               primitives, &
03648                               buffer1, buffer2)
03649        END SELECT
03650       CASE(1)
03651        SELECT CASE(n_d)
03652        CASE(0)
03653 #if __MAX_CONTR > 2 || __MAX_CONTR == 2
03654         CALL contract_pdps(work,&
03655                  nl_a, nl_b, nl_c, nl_d, &
03656                   sphi_a, sphi_b, sphi_c, sphi_d, &
03657                   primitives,&
03658                   buffer1,buffer2 )
03659 #else
03660         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
03661                               work, nl_a, nl_b, nl_c, nl_d, &
03662                               sphi_a, &
03663                               sphi_b, &
03664                               sphi_c, &
03665                               sphi_d, &
03666                               primitives, &
03667                               buffer1, buffer2)
03668 #endif
03669        CASE(1)
03670 #if __MAX_CONTR > 2 || __MAX_CONTR == 2
03671         CALL contract_pdpp(work,&
03672                  nl_a, nl_b, nl_c, nl_d, &
03673                   sphi_a, sphi_b, sphi_c, sphi_d, &
03674                   primitives,&
03675                   buffer1,buffer2 )
03676 #else
03677         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
03678                               work, nl_a, nl_b, nl_c, nl_d, &
03679                               sphi_a, &
03680                               sphi_b, &
03681                               sphi_c, &
03682                               sphi_d, &
03683                               primitives, &
03684                               buffer1, buffer2)
03685 #endif
03686        CASE(2)
03687 #if __MAX_CONTR > 2 || __MAX_CONTR == 2
03688         CALL contract_pdpd(work,&
03689                  nl_a, nl_b, nl_c, nl_d, &
03690                   sphi_a, sphi_b, sphi_c, sphi_d, &
03691                   primitives,&
03692                   buffer1,buffer2 )
03693 #else
03694         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
03695                               work, nl_a, nl_b, nl_c, nl_d, &
03696                               sphi_a, &
03697                               sphi_b, &
03698                               sphi_c, &
03699                               sphi_d, &
03700                               primitives, &
03701                               buffer1, buffer2)
03702 #endif
03703        CASE(3)
03704 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
03705         CALL contract_pdpf(work,&
03706                  nl_a, nl_b, nl_c, nl_d, &
03707                   sphi_a, sphi_b, sphi_c, sphi_d, &
03708                   primitives,&
03709                   buffer1,buffer2 )
03710 #else
03711         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
03712                               work, nl_a, nl_b, nl_c, nl_d, &
03713                               sphi_a, &
03714                               sphi_b, &
03715                               sphi_c, &
03716                               sphi_d, &
03717                               primitives, &
03718                               buffer1, buffer2)
03719 #endif
03720        CASE(4)
03721 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
03722         CALL contract_pdpg(work,&
03723                  nl_a, nl_b, nl_c, nl_d, &
03724                   sphi_a, sphi_b, sphi_c, sphi_d, &
03725                   primitives,&
03726                   buffer1,buffer2 )
03727 #else
03728         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
03729                               work, nl_a, nl_b, nl_c, nl_d, &
03730                               sphi_a, &
03731                               sphi_b, &
03732                               sphi_c, &
03733                               sphi_d, &
03734                               primitives, &
03735                               buffer1, buffer2)
03736 #endif
03737        CASE DEFAULT
03738         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
03739                               work, nl_a, nl_b, nl_c, nl_d, &
03740                               sphi_a, &
03741                               sphi_b, &
03742                               sphi_c, &
03743                               sphi_d, &
03744                               primitives, &
03745                               buffer1, buffer2)
03746        END SELECT
03747       CASE(2)
03748        SELECT CASE(n_d)
03749        CASE(0)
03750 #if __MAX_CONTR > 2 || __MAX_CONTR == 2
03751         CALL contract_pdds(work,&
03752                  nl_a, nl_b, nl_c, nl_d, &
03753                   sphi_a, sphi_b, sphi_c, sphi_d, &
03754                   primitives,&
03755                   buffer1,buffer2 )
03756 #else
03757         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
03758                               work, nl_a, nl_b, nl_c, nl_d, &
03759                               sphi_a, &
03760                               sphi_b, &
03761                               sphi_c, &
03762                               sphi_d, &
03763                               primitives, &
03764                               buffer1, buffer2)
03765 #endif
03766        CASE(1)
03767 #if __MAX_CONTR > 2 || __MAX_CONTR == 2
03768         CALL contract_pddp(work,&
03769                  nl_a, nl_b, nl_c, nl_d, &
03770                   sphi_a, sphi_b, sphi_c, sphi_d, &
03771                   primitives,&
03772                   buffer1,buffer2 )
03773 #else
03774         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
03775                               work, nl_a, nl_b, nl_c, nl_d, &
03776                               sphi_a, &
03777                               sphi_b, &
03778                               sphi_c, &
03779                               sphi_d, &
03780                               primitives, &
03781                               buffer1, buffer2)
03782 #endif
03783        CASE(2)
03784 #if __MAX_CONTR > 2 || __MAX_CONTR == 2
03785         CALL contract_pddd(work,&
03786                  nl_a, nl_b, nl_c, nl_d, &
03787                   sphi_a, sphi_b, sphi_c, sphi_d, &
03788                   primitives,&
03789                   buffer1,buffer2 )
03790 #else
03791         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
03792                               work, nl_a, nl_b, nl_c, nl_d, &
03793                               sphi_a, &
03794                               sphi_b, &
03795                               sphi_c, &
03796                               sphi_d, &
03797                               primitives, &
03798                               buffer1, buffer2)
03799 #endif
03800        CASE(3)
03801 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
03802         CALL contract_pddf(work,&
03803                  nl_a, nl_b, nl_c, nl_d, &
03804                   sphi_a, sphi_b, sphi_c, sphi_d, &
03805                   primitives,&
03806                   buffer1,buffer2 )
03807 #else
03808         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
03809                               work, nl_a, nl_b, nl_c, nl_d, &
03810                               sphi_a, &
03811                               sphi_b, &
03812                               sphi_c, &
03813                               sphi_d, &
03814                               primitives, &
03815                               buffer1, buffer2)
03816 #endif
03817        CASE(4)
03818 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
03819         CALL contract_pddg(work,&
03820                  nl_a, nl_b, nl_c, nl_d, &
03821                   sphi_a, sphi_b, sphi_c, sphi_d, &
03822                   primitives,&
03823                   buffer1,buffer2 )
03824 #else
03825         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
03826                               work, nl_a, nl_b, nl_c, nl_d, &
03827                               sphi_a, &
03828                               sphi_b, &
03829                               sphi_c, &
03830                               sphi_d, &
03831                               primitives, &
03832                               buffer1, buffer2)
03833 #endif
03834        CASE DEFAULT
03835         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
03836                               work, nl_a, nl_b, nl_c, nl_d, &
03837                               sphi_a, &
03838                               sphi_b, &
03839                               sphi_c, &
03840                               sphi_d, &
03841                               primitives, &
03842                               buffer1, buffer2)
03843        END SELECT
03844       CASE(3)
03845        SELECT CASE(n_d)
03846        CASE(0)
03847 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
03848         CALL contract_pdfs(work,&
03849                  nl_a, nl_b, nl_c, nl_d, &
03850                   sphi_a, sphi_b, sphi_c, sphi_d, &
03851                   primitives,&
03852                   buffer1,buffer2 )
03853 #else
03854         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
03855                               work, nl_a, nl_b, nl_c, nl_d, &
03856                               sphi_a, &
03857                               sphi_b, &
03858                               sphi_c, &
03859                               sphi_d, &
03860                               primitives, &
03861                               buffer1, buffer2)
03862 #endif
03863        CASE(1)
03864 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
03865         CALL contract_pdfp(work,&
03866                  nl_a, nl_b, nl_c, nl_d, &
03867                   sphi_a, sphi_b, sphi_c, sphi_d, &
03868                   primitives,&
03869                   buffer1,buffer2 )
03870 #else
03871         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
03872                               work, nl_a, nl_b, nl_c, nl_d, &
03873                               sphi_a, &
03874                               sphi_b, &
03875                               sphi_c, &
03876                               sphi_d, &
03877                               primitives, &
03878                               buffer1, buffer2)
03879 #endif
03880        CASE(2)
03881 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
03882         CALL contract_pdfd(work,&
03883                  nl_a, nl_b, nl_c, nl_d, &
03884                   sphi_a, sphi_b, sphi_c, sphi_d, &
03885                   primitives,&
03886                   buffer1,buffer2 )
03887 #else
03888         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
03889                               work, nl_a, nl_b, nl_c, nl_d, &
03890                               sphi_a, &
03891                               sphi_b, &
03892                               sphi_c, &
03893                               sphi_d, &
03894                               primitives, &
03895                               buffer1, buffer2)
03896 #endif
03897        CASE(3)
03898 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
03899         CALL contract_pdff(work,&
03900                  nl_a, nl_b, nl_c, nl_d, &
03901                   sphi_a, sphi_b, sphi_c, sphi_d, &
03902                   primitives,&
03903                   buffer1,buffer2 )
03904 #else
03905         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
03906                               work, nl_a, nl_b, nl_c, nl_d, &
03907                               sphi_a, &
03908                               sphi_b, &
03909                               sphi_c, &
03910                               sphi_d, &
03911                               primitives, &
03912                               buffer1, buffer2)
03913 #endif
03914        CASE(4)
03915 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
03916         CALL contract_pdfg(work,&
03917                  nl_a, nl_b, nl_c, nl_d, &
03918                   sphi_a, sphi_b, sphi_c, sphi_d, &
03919                   primitives,&
03920                   buffer1,buffer2 )
03921 #else
03922         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
03923                               work, nl_a, nl_b, nl_c, nl_d, &
03924                               sphi_a, &
03925                               sphi_b, &
03926                               sphi_c, &
03927                               sphi_d, &
03928                               primitives, &
03929                               buffer1, buffer2)
03930 #endif
03931        CASE DEFAULT
03932         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
03933                               work, nl_a, nl_b, nl_c, nl_d, &
03934                               sphi_a, &
03935                               sphi_b, &
03936                               sphi_c, &
03937                               sphi_d, &
03938                               primitives, &
03939                               buffer1, buffer2)
03940        END SELECT
03941       CASE(4)
03942        SELECT CASE(n_d)
03943        CASE(0)
03944 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
03945         CALL contract_pdgs(work,&
03946                  nl_a, nl_b, nl_c, nl_d, &
03947                   sphi_a, sphi_b, sphi_c, sphi_d, &
03948                   primitives,&
03949                   buffer1,buffer2 )
03950 #else
03951         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
03952                               work, nl_a, nl_b, nl_c, nl_d, &
03953                               sphi_a, &
03954                               sphi_b, &
03955                               sphi_c, &
03956                               sphi_d, &
03957                               primitives, &
03958                               buffer1, buffer2)
03959 #endif
03960        CASE(1)
03961 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
03962         CALL contract_pdgp(work,&
03963                  nl_a, nl_b, nl_c, nl_d, &
03964                   sphi_a, sphi_b, sphi_c, sphi_d, &
03965                   primitives,&
03966                   buffer1,buffer2 )
03967 #else
03968         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
03969                               work, nl_a, nl_b, nl_c, nl_d, &
03970                               sphi_a, &
03971                               sphi_b, &
03972                               sphi_c, &
03973                               sphi_d, &
03974                               primitives, &
03975                               buffer1, buffer2)
03976 #endif
03977        CASE(2)
03978 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
03979         CALL contract_pdgd(work,&
03980                  nl_a, nl_b, nl_c, nl_d, &
03981                   sphi_a, sphi_b, sphi_c, sphi_d, &
03982                   primitives,&
03983                   buffer1,buffer2 )
03984 #else
03985         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
03986                               work, nl_a, nl_b, nl_c, nl_d, &
03987                               sphi_a, &
03988                               sphi_b, &
03989                               sphi_c, &
03990                               sphi_d, &
03991                               primitives, &
03992                               buffer1, buffer2)
03993 #endif
03994        CASE(3)
03995 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
03996         CALL contract_pdgf(work,&
03997                  nl_a, nl_b, nl_c, nl_d, &
03998                   sphi_a, sphi_b, sphi_c, sphi_d, &
03999                   primitives,&
04000                   buffer1,buffer2 )
04001 #else
04002         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
04003                               work, nl_a, nl_b, nl_c, nl_d, &
04004                               sphi_a, &
04005                               sphi_b, &
04006                               sphi_c, &
04007                               sphi_d, &
04008                               primitives, &
04009                               buffer1, buffer2)
04010 #endif
04011        CASE(4)
04012 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
04013         CALL contract_pdgg(work,&
04014                  nl_a, nl_b, nl_c, nl_d, &
04015                   sphi_a, sphi_b, sphi_c, sphi_d, &
04016                   primitives,&
04017                   buffer1,buffer2 )
04018 #else
04019         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
04020                               work, nl_a, nl_b, nl_c, nl_d, &
04021                               sphi_a, &
04022                               sphi_b, &
04023                               sphi_c, &
04024                               sphi_d, &
04025                               primitives, &
04026                               buffer1, buffer2)
04027 #endif
04028        CASE DEFAULT
04029         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
04030                               work, nl_a, nl_b, nl_c, nl_d, &
04031                               sphi_a, &
04032                               sphi_b, &
04033                               sphi_c, &
04034                               sphi_d, &
04035                               primitives, &
04036                               buffer1, buffer2)
04037        END SELECT
04038       CASE DEFAULT
04039        CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
04040                              work, nl_a, nl_b, nl_c, nl_d, &
04041                              sphi_a, &
04042                              sphi_b, &
04043                              sphi_c, &
04044                              sphi_d, &
04045                              primitives, &
04046                              buffer1, buffer2)
04047       END SELECT
04048      CASE(3)
04049       SELECT CASE(n_c)
04050       CASE(0)
04051        SELECT CASE(n_d)
04052        CASE(0)
04053 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
04054         CALL contract_pfss(work,&
04055                  nl_a, nl_b, nl_c, nl_d, &
04056                   sphi_a, sphi_b, sphi_c, sphi_d, &
04057                   primitives,&
04058                   buffer1,buffer2 )
04059 #else
04060         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
04061                               work, nl_a, nl_b, nl_c, nl_d, &
04062                               sphi_a, &
04063                               sphi_b, &
04064                               sphi_c, &
04065                               sphi_d, &
04066                               primitives, &
04067                               buffer1, buffer2)
04068 #endif
04069        CASE(1)
04070 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
04071         CALL contract_pfsp(work,&
04072                  nl_a, nl_b, nl_c, nl_d, &
04073                   sphi_a, sphi_b, sphi_c, sphi_d, &
04074                   primitives,&
04075                   buffer1,buffer2 )
04076 #else
04077         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
04078                               work, nl_a, nl_b, nl_c, nl_d, &
04079                               sphi_a, &
04080                               sphi_b, &
04081                               sphi_c, &
04082                               sphi_d, &
04083                               primitives, &
04084                               buffer1, buffer2)
04085 #endif
04086        CASE(2)
04087 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
04088         CALL contract_pfsd(work,&
04089                  nl_a, nl_b, nl_c, nl_d, &
04090                   sphi_a, sphi_b, sphi_c, sphi_d, &
04091                   primitives,&
04092                   buffer1,buffer2 )
04093 #else
04094         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
04095                               work, nl_a, nl_b, nl_c, nl_d, &
04096                               sphi_a, &
04097                               sphi_b, &
04098                               sphi_c, &
04099                               sphi_d, &
04100                               primitives, &
04101                               buffer1, buffer2)
04102 #endif
04103        CASE(3)
04104 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
04105         CALL contract_pfsf(work,&
04106                  nl_a, nl_b, nl_c, nl_d, &
04107                   sphi_a, sphi_b, sphi_c, sphi_d, &
04108                   primitives,&
04109                   buffer1,buffer2 )
04110 #else
04111         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
04112                               work, nl_a, nl_b, nl_c, nl_d, &
04113                               sphi_a, &
04114                               sphi_b, &
04115                               sphi_c, &
04116                               sphi_d, &
04117                               primitives, &
04118                               buffer1, buffer2)
04119 #endif
04120        CASE(4)
04121 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
04122         CALL contract_pfsg(work,&
04123                  nl_a, nl_b, nl_c, nl_d, &
04124                   sphi_a, sphi_b, sphi_c, sphi_d, &
04125                   primitives,&
04126                   buffer1,buffer2 )
04127 #else
04128         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
04129                               work, nl_a, nl_b, nl_c, nl_d, &
04130                               sphi_a, &
04131                               sphi_b, &
04132                               sphi_c, &
04133                               sphi_d, &
04134                               primitives, &
04135                               buffer1, buffer2)
04136 #endif
04137        CASE DEFAULT
04138         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
04139                               work, nl_a, nl_b, nl_c, nl_d, &
04140                               sphi_a, &
04141                               sphi_b, &
04142                               sphi_c, &
04143                               sphi_d, &
04144                               primitives, &
04145                               buffer1, buffer2)
04146        END SELECT
04147       CASE(1)
04148        SELECT CASE(n_d)
04149        CASE(0)
04150 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
04151         CALL contract_pfps(work,&
04152                  nl_a, nl_b, nl_c, nl_d, &
04153                   sphi_a, sphi_b, sphi_c, sphi_d, &
04154                   primitives,&
04155                   buffer1,buffer2 )
04156 #else
04157         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
04158                               work, nl_a, nl_b, nl_c, nl_d, &
04159                               sphi_a, &
04160                               sphi_b, &
04161                               sphi_c, &
04162                               sphi_d, &
04163                               primitives, &
04164                               buffer1, buffer2)
04165 #endif
04166        CASE(1)
04167 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
04168         CALL contract_pfpp(work,&
04169                  nl_a, nl_b, nl_c, nl_d, &
04170                   sphi_a, sphi_b, sphi_c, sphi_d, &
04171                   primitives,&
04172                   buffer1,buffer2 )
04173 #else
04174         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
04175                               work, nl_a, nl_b, nl_c, nl_d, &
04176                               sphi_a, &
04177                               sphi_b, &
04178                               sphi_c, &
04179                               sphi_d, &
04180                               primitives, &
04181                               buffer1, buffer2)
04182 #endif
04183        CASE(2)
04184 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
04185         CALL contract_pfpd(work,&
04186                  nl_a, nl_b, nl_c, nl_d, &
04187                   sphi_a, sphi_b, sphi_c, sphi_d, &
04188                   primitives,&
04189                   buffer1,buffer2 )
04190 #else
04191         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
04192                               work, nl_a, nl_b, nl_c, nl_d, &
04193                               sphi_a, &
04194                               sphi_b, &
04195                               sphi_c, &
04196                               sphi_d, &
04197                               primitives, &
04198                               buffer1, buffer2)
04199 #endif
04200        CASE(3)
04201 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
04202         CALL contract_pfpf(work,&
04203                  nl_a, nl_b, nl_c, nl_d, &
04204                   sphi_a, sphi_b, sphi_c, sphi_d, &
04205                   primitives,&
04206                   buffer1,buffer2 )
04207 #else
04208         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
04209                               work, nl_a, nl_b, nl_c, nl_d, &
04210                               sphi_a, &
04211                               sphi_b, &
04212                               sphi_c, &
04213                               sphi_d, &
04214                               primitives, &
04215                               buffer1, buffer2)
04216 #endif
04217        CASE(4)
04218 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
04219         CALL contract_pfpg(work,&
04220                  nl_a, nl_b, nl_c, nl_d, &
04221                   sphi_a, sphi_b, sphi_c, sphi_d, &
04222                   primitives,&
04223                   buffer1,buffer2 )
04224 #else
04225         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
04226                               work, nl_a, nl_b, nl_c, nl_d, &
04227                               sphi_a, &
04228                               sphi_b, &
04229                               sphi_c, &
04230                               sphi_d, &
04231                               primitives, &
04232                               buffer1, buffer2)
04233 #endif
04234        CASE DEFAULT
04235         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
04236                               work, nl_a, nl_b, nl_c, nl_d, &
04237                               sphi_a, &
04238                               sphi_b, &
04239                               sphi_c, &
04240                               sphi_d, &
04241                               primitives, &
04242                               buffer1, buffer2)
04243        END SELECT
04244       CASE(2)
04245        SELECT CASE(n_d)
04246        CASE(0)
04247 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
04248         CALL contract_pfds(work,&
04249                  nl_a, nl_b, nl_c, nl_d, &
04250                   sphi_a, sphi_b, sphi_c, sphi_d, &
04251                   primitives,&
04252                   buffer1,buffer2 )
04253 #else
04254         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
04255                               work, nl_a, nl_b, nl_c, nl_d, &
04256                               sphi_a, &
04257                               sphi_b, &
04258                               sphi_c, &
04259                               sphi_d, &
04260                               primitives, &
04261                               buffer1, buffer2)
04262 #endif
04263        CASE(1)
04264 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
04265         CALL contract_pfdp(work,&
04266                  nl_a, nl_b, nl_c, nl_d, &
04267                   sphi_a, sphi_b, sphi_c, sphi_d, &
04268                   primitives,&
04269                   buffer1,buffer2 )
04270 #else
04271         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
04272                               work, nl_a, nl_b, nl_c, nl_d, &
04273                               sphi_a, &
04274                               sphi_b, &
04275                               sphi_c, &
04276                               sphi_d, &
04277                               primitives, &
04278                               buffer1, buffer2)
04279 #endif
04280        CASE(2)
04281 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
04282         CALL contract_pfdd(work,&
04283                  nl_a, nl_b, nl_c, nl_d, &
04284                   sphi_a, sphi_b, sphi_c, sphi_d, &
04285                   primitives,&
04286                   buffer1,buffer2 )
04287 #else
04288         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
04289                               work, nl_a, nl_b, nl_c, nl_d, &
04290                               sphi_a, &
04291                               sphi_b, &
04292                               sphi_c, &
04293                               sphi_d, &
04294                               primitives, &
04295                               buffer1, buffer2)
04296 #endif
04297        CASE(3)
04298 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
04299         CALL contract_pfdf(work,&
04300                  nl_a, nl_b, nl_c, nl_d, &
04301                   sphi_a, sphi_b, sphi_c, sphi_d, &
04302                   primitives,&
04303                   buffer1,buffer2 )
04304 #else
04305         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
04306                               work, nl_a, nl_b, nl_c, nl_d, &
04307                               sphi_a, &
04308                               sphi_b, &
04309                               sphi_c, &
04310                               sphi_d, &
04311                               primitives, &
04312                               buffer1, buffer2)
04313 #endif
04314        CASE(4)
04315 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
04316         CALL contract_pfdg(work,&
04317                  nl_a, nl_b, nl_c, nl_d, &
04318                   sphi_a, sphi_b, sphi_c, sphi_d, &
04319                   primitives,&
04320                   buffer1,buffer2 )
04321 #else
04322         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
04323                               work, nl_a, nl_b, nl_c, nl_d, &
04324                               sphi_a, &
04325                               sphi_b, &
04326                               sphi_c, &
04327                               sphi_d, &
04328                               primitives, &
04329                               buffer1, buffer2)
04330 #endif
04331        CASE DEFAULT
04332         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
04333                               work, nl_a, nl_b, nl_c, nl_d, &
04334                               sphi_a, &
04335                               sphi_b, &
04336                               sphi_c, &
04337                               sphi_d, &
04338                               primitives, &
04339                               buffer1, buffer2)
04340        END SELECT
04341       CASE(3)
04342        SELECT CASE(n_d)
04343        CASE(0)
04344 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
04345         CALL contract_pffs(work,&
04346                  nl_a, nl_b, nl_c, nl_d, &
04347                   sphi_a, sphi_b, sphi_c, sphi_d, &
04348                   primitives,&
04349                   buffer1,buffer2 )
04350 #else
04351         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
04352                               work, nl_a, nl_b, nl_c, nl_d, &
04353                               sphi_a, &
04354                               sphi_b, &
04355                               sphi_c, &
04356                               sphi_d, &
04357                               primitives, &
04358                               buffer1, buffer2)
04359 #endif
04360        CASE(1)
04361 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
04362         CALL contract_pffp(work,&
04363                  nl_a, nl_b, nl_c, nl_d, &
04364                   sphi_a, sphi_b, sphi_c, sphi_d, &
04365                   primitives,&
04366                   buffer1,buffer2 )
04367 #else
04368         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
04369                               work, nl_a, nl_b, nl_c, nl_d, &
04370                               sphi_a, &
04371                               sphi_b, &
04372                               sphi_c, &
04373                               sphi_d, &
04374                               primitives, &
04375                               buffer1, buffer2)
04376 #endif
04377        CASE(2)
04378 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
04379         CALL contract_pffd(work,&
04380                  nl_a, nl_b, nl_c, nl_d, &
04381                   sphi_a, sphi_b, sphi_c, sphi_d, &
04382                   primitives,&
04383                   buffer1,buffer2 )
04384 #else
04385         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
04386                               work, nl_a, nl_b, nl_c, nl_d, &
04387                               sphi_a, &
04388                               sphi_b, &
04389                               sphi_c, &
04390                               sphi_d, &
04391                               primitives, &
04392                               buffer1, buffer2)
04393 #endif
04394        CASE(3)
04395 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
04396         CALL contract_pfff(work,&
04397                  nl_a, nl_b, nl_c, nl_d, &
04398                   sphi_a, sphi_b, sphi_c, sphi_d, &
04399                   primitives,&
04400                   buffer1,buffer2 )
04401 #else
04402         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
04403                               work, nl_a, nl_b, nl_c, nl_d, &
04404                               sphi_a, &
04405                               sphi_b, &
04406                               sphi_c, &
04407                               sphi_d, &
04408                               primitives, &
04409                               buffer1, buffer2)
04410 #endif
04411        CASE(4)
04412 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
04413         CALL contract_pffg(work,&
04414                  nl_a, nl_b, nl_c, nl_d, &
04415                   sphi_a, sphi_b, sphi_c, sphi_d, &
04416                   primitives,&
04417                   buffer1,buffer2 )
04418 #else
04419         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
04420                               work, nl_a, nl_b, nl_c, nl_d, &
04421                               sphi_a, &
04422                               sphi_b, &
04423                               sphi_c, &
04424                               sphi_d, &
04425                               primitives, &
04426                               buffer1, buffer2)
04427 #endif
04428        CASE DEFAULT
04429         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
04430                               work, nl_a, nl_b, nl_c, nl_d, &
04431                               sphi_a, &
04432                               sphi_b, &
04433                               sphi_c, &
04434                               sphi_d, &
04435                               primitives, &
04436                               buffer1, buffer2)
04437        END SELECT
04438       CASE(4)
04439        SELECT CASE(n_d)
04440        CASE(0)
04441 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
04442         CALL contract_pfgs(work,&
04443                  nl_a, nl_b, nl_c, nl_d, &
04444                   sphi_a, sphi_b, sphi_c, sphi_d, &
04445                   primitives,&
04446                   buffer1,buffer2 )
04447 #else
04448         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
04449                               work, nl_a, nl_b, nl_c, nl_d, &
04450                               sphi_a, &
04451                               sphi_b, &
04452                               sphi_c, &
04453                               sphi_d, &
04454                               primitives, &
04455                               buffer1, buffer2)
04456 #endif
04457        CASE(1)
04458 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
04459         CALL contract_pfgp(work,&
04460                  nl_a, nl_b, nl_c, nl_d, &
04461                   sphi_a, sphi_b, sphi_c, sphi_d, &
04462                   primitives,&
04463                   buffer1,buffer2 )
04464 #else
04465         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
04466                               work, nl_a, nl_b, nl_c, nl_d, &
04467                               sphi_a, &
04468                               sphi_b, &
04469                               sphi_c, &
04470                               sphi_d, &
04471                               primitives, &
04472                               buffer1, buffer2)
04473 #endif
04474        CASE(2)
04475 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
04476         CALL contract_pfgd(work,&
04477                  nl_a, nl_b, nl_c, nl_d, &
04478                   sphi_a, sphi_b, sphi_c, sphi_d, &
04479                   primitives,&
04480                   buffer1,buffer2 )
04481 #else
04482         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
04483                               work, nl_a, nl_b, nl_c, nl_d, &
04484                               sphi_a, &
04485                               sphi_b, &
04486                               sphi_c, &
04487                               sphi_d, &
04488                               primitives, &
04489                               buffer1, buffer2)
04490 #endif
04491        CASE(3)
04492 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
04493         CALL contract_pfgf(work,&
04494                  nl_a, nl_b, nl_c, nl_d, &
04495                   sphi_a, sphi_b, sphi_c, sphi_d, &
04496                   primitives,&
04497                   buffer1,buffer2 )
04498 #else
04499         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
04500                               work, nl_a, nl_b, nl_c, nl_d, &
04501                               sphi_a, &
04502                               sphi_b, &
04503                               sphi_c, &
04504                               sphi_d, &
04505                               primitives, &
04506                               buffer1, buffer2)
04507 #endif
04508        CASE(4)
04509 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
04510         CALL contract_pfgg(work,&
04511                  nl_a, nl_b, nl_c, nl_d, &
04512                   sphi_a, sphi_b, sphi_c, sphi_d, &
04513                   primitives,&
04514                   buffer1,buffer2 )
04515 #else
04516         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
04517                               work, nl_a, nl_b, nl_c, nl_d, &
04518                               sphi_a, &
04519                               sphi_b, &
04520                               sphi_c, &
04521                               sphi_d, &
04522                               primitives, &
04523                               buffer1, buffer2)
04524 #endif
04525        CASE DEFAULT
04526         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
04527                               work, nl_a, nl_b, nl_c, nl_d, &
04528                               sphi_a, &
04529                               sphi_b, &
04530                               sphi_c, &
04531                               sphi_d, &
04532                               primitives, &
04533                               buffer1, buffer2)
04534        END SELECT
04535       CASE DEFAULT
04536        CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
04537                              work, nl_a, nl_b, nl_c, nl_d, &
04538                              sphi_a, &
04539                              sphi_b, &
04540                              sphi_c, &
04541                              sphi_d, &
04542                              primitives, &
04543                              buffer1, buffer2)
04544       END SELECT
04545      CASE(4)
04546       SELECT CASE(n_c)
04547       CASE(0)
04548        SELECT CASE(n_d)
04549        CASE(0)
04550 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
04551         CALL contract_pgss(work,&
04552                  nl_a, nl_b, nl_c, nl_d, &
04553                   sphi_a, sphi_b, sphi_c, sphi_d, &
04554                   primitives,&
04555                   buffer1,buffer2 )
04556 #else
04557         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
04558                               work, nl_a, nl_b, nl_c, nl_d, &
04559                               sphi_a, &
04560                               sphi_b, &
04561                               sphi_c, &
04562                               sphi_d, &
04563                               primitives, &
04564                               buffer1, buffer2)
04565 #endif
04566        CASE(1)
04567 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
04568         CALL contract_pgsp(work,&
04569                  nl_a, nl_b, nl_c, nl_d, &
04570                   sphi_a, sphi_b, sphi_c, sphi_d, &
04571                   primitives,&
04572                   buffer1,buffer2 )
04573 #else
04574         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
04575                               work, nl_a, nl_b, nl_c, nl_d, &
04576                               sphi_a, &
04577                               sphi_b, &
04578                               sphi_c, &
04579                               sphi_d, &
04580                               primitives, &
04581                               buffer1, buffer2)
04582 #endif
04583        CASE(2)
04584 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
04585         CALL contract_pgsd(work,&
04586                  nl_a, nl_b, nl_c, nl_d, &
04587                   sphi_a, sphi_b, sphi_c, sphi_d, &
04588                   primitives,&
04589                   buffer1,buffer2 )
04590 #else
04591         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
04592                               work, nl_a, nl_b, nl_c, nl_d, &
04593                               sphi_a, &
04594                               sphi_b, &
04595                               sphi_c, &
04596                               sphi_d, &
04597                               primitives, &
04598                               buffer1, buffer2)
04599 #endif
04600        CASE(3)
04601 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
04602         CALL contract_pgsf(work,&
04603                  nl_a, nl_b, nl_c, nl_d, &
04604                   sphi_a, sphi_b, sphi_c, sphi_d, &
04605                   primitives,&
04606                   buffer1,buffer2 )
04607 #else
04608         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
04609                               work, nl_a, nl_b, nl_c, nl_d, &
04610                               sphi_a, &
04611                               sphi_b, &
04612                               sphi_c, &
04613                               sphi_d, &
04614                               primitives, &
04615                               buffer1, buffer2)
04616 #endif
04617        CASE(4)
04618 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
04619         CALL contract_pgsg(work,&
04620                  nl_a, nl_b, nl_c, nl_d, &
04621                   sphi_a, sphi_b, sphi_c, sphi_d, &
04622                   primitives,&
04623                   buffer1,buffer2 )
04624 #else
04625         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
04626                               work, nl_a, nl_b, nl_c, nl_d, &
04627                               sphi_a, &
04628                               sphi_b, &
04629                               sphi_c, &
04630                               sphi_d, &
04631                               primitives, &
04632                               buffer1, buffer2)
04633 #endif
04634        CASE DEFAULT
04635         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
04636                               work, nl_a, nl_b, nl_c, nl_d, &
04637                               sphi_a, &
04638                               sphi_b, &
04639                               sphi_c, &
04640                               sphi_d, &
04641                               primitives, &
04642                               buffer1, buffer2)
04643        END SELECT
04644       CASE(1)
04645        SELECT CASE(n_d)
04646        CASE(0)
04647 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
04648         CALL contract_pgps(work,&
04649                  nl_a, nl_b, nl_c, nl_d, &
04650                   sphi_a, sphi_b, sphi_c, sphi_d, &
04651                   primitives,&
04652                   buffer1,buffer2 )
04653 #else
04654         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
04655                               work, nl_a, nl_b, nl_c, nl_d, &
04656                               sphi_a, &
04657                               sphi_b, &
04658                               sphi_c, &
04659                               sphi_d, &
04660                               primitives, &
04661                               buffer1, buffer2)
04662 #endif
04663        CASE(1)
04664 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
04665         CALL contract_pgpp(work,&
04666                  nl_a, nl_b, nl_c, nl_d, &
04667                   sphi_a, sphi_b, sphi_c, sphi_d, &
04668                   primitives,&
04669                   buffer1,buffer2 )
04670 #else
04671         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
04672                               work, nl_a, nl_b, nl_c, nl_d, &
04673                               sphi_a, &
04674                               sphi_b, &
04675                               sphi_c, &
04676                               sphi_d, &
04677                               primitives, &
04678                               buffer1, buffer2)
04679 #endif
04680        CASE(2)
04681 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
04682         CALL contract_pgpd(work,&
04683                  nl_a, nl_b, nl_c, nl_d, &
04684                   sphi_a, sphi_b, sphi_c, sphi_d, &
04685                   primitives,&
04686                   buffer1,buffer2 )
04687 #else
04688         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
04689                               work, nl_a, nl_b, nl_c, nl_d, &
04690                               sphi_a, &
04691                               sphi_b, &
04692                               sphi_c, &
04693                               sphi_d, &
04694                               primitives, &
04695                               buffer1, buffer2)
04696 #endif
04697        CASE(3)
04698 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
04699         CALL contract_pgpf(work,&
04700                  nl_a, nl_b, nl_c, nl_d, &
04701                   sphi_a, sphi_b, sphi_c, sphi_d, &
04702                   primitives,&
04703                   buffer1,buffer2 )
04704 #else
04705         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
04706                               work, nl_a, nl_b, nl_c, nl_d, &
04707                               sphi_a, &
04708                               sphi_b, &
04709                               sphi_c, &
04710                               sphi_d, &
04711                               primitives, &
04712                               buffer1, buffer2)
04713 #endif
04714        CASE(4)
04715 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
04716         CALL contract_pgpg(work,&
04717                  nl_a, nl_b, nl_c, nl_d, &
04718                   sphi_a, sphi_b, sphi_c, sphi_d, &
04719                   primitives,&
04720                   buffer1,buffer2 )
04721 #else
04722         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
04723                               work, nl_a, nl_b, nl_c, nl_d, &
04724                               sphi_a, &
04725                               sphi_b, &
04726                               sphi_c, &
04727                               sphi_d, &
04728                               primitives, &
04729                               buffer1, buffer2)
04730 #endif
04731        CASE DEFAULT
04732         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
04733                               work, nl_a, nl_b, nl_c, nl_d, &
04734                               sphi_a, &
04735                               sphi_b, &
04736                               sphi_c, &
04737                               sphi_d, &
04738                               primitives, &
04739                               buffer1, buffer2)
04740        END SELECT
04741       CASE(2)
04742        SELECT CASE(n_d)
04743        CASE(0)
04744 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
04745         CALL contract_pgds(work,&
04746                  nl_a, nl_b, nl_c, nl_d, &
04747                   sphi_a, sphi_b, sphi_c, sphi_d, &
04748                   primitives,&
04749                   buffer1,buffer2 )
04750 #else
04751         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
04752                               work, nl_a, nl_b, nl_c, nl_d, &
04753                               sphi_a, &
04754                               sphi_b, &
04755                               sphi_c, &
04756                               sphi_d, &
04757                               primitives, &
04758                               buffer1, buffer2)
04759 #endif
04760        CASE(1)
04761 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
04762         CALL contract_pgdp(work,&
04763                  nl_a, nl_b, nl_c, nl_d, &
04764                   sphi_a, sphi_b, sphi_c, sphi_d, &
04765                   primitives,&
04766                   buffer1,buffer2 )
04767 #else
04768         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
04769                               work, nl_a, nl_b, nl_c, nl_d, &
04770                               sphi_a, &
04771                               sphi_b, &
04772                               sphi_c, &
04773                               sphi_d, &
04774                               primitives, &
04775                               buffer1, buffer2)
04776 #endif
04777        CASE(2)
04778 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
04779         CALL contract_pgdd(work,&
04780                  nl_a, nl_b, nl_c, nl_d, &
04781                   sphi_a, sphi_b, sphi_c, sphi_d, &
04782                   primitives,&
04783                   buffer1,buffer2 )
04784 #else
04785         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
04786                               work, nl_a, nl_b, nl_c, nl_d, &
04787                               sphi_a, &
04788                               sphi_b, &
04789                               sphi_c, &
04790                               sphi_d, &
04791                               primitives, &
04792                               buffer1, buffer2)
04793 #endif
04794        CASE(3)
04795 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
04796         CALL contract_pgdf(work,&
04797                  nl_a, nl_b, nl_c, nl_d, &
04798                   sphi_a, sphi_b, sphi_c, sphi_d, &
04799                   primitives,&
04800                   buffer1,buffer2 )
04801 #else
04802         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
04803                               work, nl_a, nl_b, nl_c, nl_d, &
04804                               sphi_a, &
04805                               sphi_b, &
04806                               sphi_c, &
04807                               sphi_d, &
04808                               primitives, &
04809                               buffer1, buffer2)
04810 #endif
04811        CASE(4)
04812 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
04813         CALL contract_pgdg(work,&
04814                  nl_a, nl_b, nl_c, nl_d, &
04815                   sphi_a, sphi_b, sphi_c, sphi_d, &
04816                   primitives,&
04817                   buffer1,buffer2 )
04818 #else
04819         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
04820                               work, nl_a, nl_b, nl_c, nl_d, &
04821                               sphi_a, &
04822                               sphi_b, &
04823                               sphi_c, &
04824                               sphi_d, &
04825                               primitives, &
04826                               buffer1, buffer2)
04827 #endif
04828        CASE DEFAULT
04829         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
04830                               work, nl_a, nl_b, nl_c, nl_d, &
04831                               sphi_a, &
04832                               sphi_b, &
04833                               sphi_c, &
04834                               sphi_d, &
04835                               primitives, &
04836                               buffer1, buffer2)
04837        END SELECT
04838       CASE(3)
04839        SELECT CASE(n_d)
04840        CASE(0)
04841 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
04842         CALL contract_pgfs(work,&
04843                  nl_a, nl_b, nl_c, nl_d, &
04844                   sphi_a, sphi_b, sphi_c, sphi_d, &
04845                   primitives,&
04846                   buffer1,buffer2 )
04847 #else
04848         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
04849                               work, nl_a, nl_b, nl_c, nl_d, &
04850                               sphi_a, &
04851                               sphi_b, &
04852                               sphi_c, &
04853                               sphi_d, &
04854                               primitives, &
04855                               buffer1, buffer2)
04856 #endif
04857        CASE(1)
04858 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
04859         CALL contract_pgfp(work,&
04860                  nl_a, nl_b, nl_c, nl_d, &
04861                   sphi_a, sphi_b, sphi_c, sphi_d, &
04862                   primitives,&
04863                   buffer1,buffer2 )
04864 #else
04865         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
04866                               work, nl_a, nl_b, nl_c, nl_d, &
04867                               sphi_a, &
04868                               sphi_b, &
04869                               sphi_c, &
04870                               sphi_d, &
04871                               primitives, &
04872                               buffer1, buffer2)
04873 #endif
04874        CASE(2)
04875 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
04876         CALL contract_pgfd(work,&
04877                  nl_a, nl_b, nl_c, nl_d, &
04878                   sphi_a, sphi_b, sphi_c, sphi_d, &
04879                   primitives,&
04880                   buffer1,buffer2 )
04881 #else
04882         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
04883                               work, nl_a, nl_b, nl_c, nl_d, &
04884                               sphi_a, &
04885                               sphi_b, &
04886                               sphi_c, &
04887                               sphi_d, &
04888                               primitives, &
04889                               buffer1, buffer2)
04890 #endif
04891        CASE(3)
04892 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
04893         CALL contract_pgff(work,&
04894                  nl_a, nl_b, nl_c, nl_d, &
04895                   sphi_a, sphi_b, sphi_c, sphi_d, &
04896                   primitives,&
04897                   buffer1,buffer2 )
04898 #else
04899         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
04900                               work, nl_a, nl_b, nl_c, nl_d, &
04901                               sphi_a, &
04902                               sphi_b, &
04903                               sphi_c, &
04904                               sphi_d, &
04905                               primitives, &
04906                               buffer1, buffer2)
04907 #endif
04908        CASE(4)
04909 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
04910         CALL contract_pgfg(work,&
04911                  nl_a, nl_b, nl_c, nl_d, &
04912                   sphi_a, sphi_b, sphi_c, sphi_d, &
04913                   primitives,&
04914                   buffer1,buffer2 )
04915 #else
04916         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
04917                               work, nl_a, nl_b, nl_c, nl_d, &
04918                               sphi_a, &
04919                               sphi_b, &
04920                               sphi_c, &
04921                               sphi_d, &
04922                               primitives, &
04923                               buffer1, buffer2)
04924 #endif
04925        CASE DEFAULT
04926         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
04927                               work, nl_a, nl_b, nl_c, nl_d, &
04928                               sphi_a, &
04929                               sphi_b, &
04930                               sphi_c, &
04931                               sphi_d, &
04932                               primitives, &
04933                               buffer1, buffer2)
04934        END SELECT
04935       CASE(4)
04936        SELECT CASE(n_d)
04937        CASE(0)
04938 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
04939         CALL contract_pggs(work,&
04940                  nl_a, nl_b, nl_c, nl_d, &
04941                   sphi_a, sphi_b, sphi_c, sphi_d, &
04942                   primitives,&
04943                   buffer1,buffer2 )
04944 #else
04945         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
04946                               work, nl_a, nl_b, nl_c, nl_d, &
04947                               sphi_a, &
04948                               sphi_b, &
04949                               sphi_c, &
04950                               sphi_d, &
04951                               primitives, &
04952                               buffer1, buffer2)
04953 #endif
04954        CASE(1)
04955 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
04956         CALL contract_pggp(work,&
04957                  nl_a, nl_b, nl_c, nl_d, &
04958                   sphi_a, sphi_b, sphi_c, sphi_d, &
04959                   primitives,&
04960                   buffer1,buffer2 )
04961 #else
04962         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
04963                               work, nl_a, nl_b, nl_c, nl_d, &
04964                               sphi_a, &
04965                               sphi_b, &
04966                               sphi_c, &
04967                               sphi_d, &
04968                               primitives, &
04969                               buffer1, buffer2)
04970 #endif
04971        CASE(2)
04972 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
04973         CALL contract_pggd(work,&
04974                  nl_a, nl_b, nl_c, nl_d, &
04975                   sphi_a, sphi_b, sphi_c, sphi_d, &
04976                   primitives,&
04977                   buffer1,buffer2 )
04978 #else
04979         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
04980                               work, nl_a, nl_b, nl_c, nl_d, &
04981                               sphi_a, &
04982                               sphi_b, &
04983                               sphi_c, &
04984                               sphi_d, &
04985                               primitives, &
04986                               buffer1, buffer2)
04987 #endif
04988        CASE(3)
04989 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
04990         CALL contract_pggf(work,&
04991                  nl_a, nl_b, nl_c, nl_d, &
04992                   sphi_a, sphi_b, sphi_c, sphi_d, &
04993                   primitives,&
04994                   buffer1,buffer2 )
04995 #else
04996         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
04997                               work, nl_a, nl_b, nl_c, nl_d, &
04998                               sphi_a, &
04999                               sphi_b, &
05000                               sphi_c, &
05001                               sphi_d, &
05002                               primitives, &
05003                               buffer1, buffer2)
05004 #endif
05005        CASE(4)
05006 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
05007         CALL contract_pggg(work,&
05008                  nl_a, nl_b, nl_c, nl_d, &
05009                   sphi_a, sphi_b, sphi_c, sphi_d, &
05010                   primitives,&
05011                   buffer1,buffer2 )
05012 #else
05013         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
05014                               work, nl_a, nl_b, nl_c, nl_d, &
05015                               sphi_a, &
05016                               sphi_b, &
05017                               sphi_c, &
05018                               sphi_d, &
05019                               primitives, &
05020                               buffer1, buffer2)
05021 #endif
05022        CASE DEFAULT
05023         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
05024                               work, nl_a, nl_b, nl_c, nl_d, &
05025                               sphi_a, &
05026                               sphi_b, &
05027                               sphi_c, &
05028                               sphi_d, &
05029                               primitives, &
05030                               buffer1, buffer2)
05031        END SELECT
05032       CASE DEFAULT
05033        CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
05034                              work, nl_a, nl_b, nl_c, nl_d, &
05035                              sphi_a, &
05036                              sphi_b, &
05037                              sphi_c, &
05038                              sphi_d, &
05039                              primitives, &
05040                              buffer1, buffer2)
05041       END SELECT
05042      CASE DEFAULT
05043       CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
05044                             work, nl_a, nl_b, nl_c, nl_d, &
05045                             sphi_a, &
05046                             sphi_b, &
05047                             sphi_c, &
05048                             sphi_d, &
05049                             primitives, &
05050                             buffer1, buffer2)
05051      END SELECT
05052     CASE(2)
05053      SELECT CASE(n_b)
05054      CASE(0)
05055       SELECT CASE(n_c)
05056       CASE(0)
05057        SELECT CASE(n_d)
05058        CASE(0)
05059 #if __MAX_CONTR > 2 || __MAX_CONTR == 2
05060         CALL contract_dsss(work,&
05061                  nl_a, nl_b, nl_c, nl_d, &
05062                   sphi_a, sphi_b, sphi_c, sphi_d, &
05063                   primitives,&
05064                   buffer1,buffer2 )
05065 #else
05066         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
05067                               work, nl_a, nl_b, nl_c, nl_d, &
05068                               sphi_a, &
05069                               sphi_b, &
05070                               sphi_c, &
05071                               sphi_d, &
05072                               primitives, &
05073                               buffer1, buffer2)
05074 #endif
05075        CASE(1)
05076 #if __MAX_CONTR > 2 || __MAX_CONTR == 2
05077         CALL contract_dssp(work,&
05078                  nl_a, nl_b, nl_c, nl_d, &
05079                   sphi_a, sphi_b, sphi_c, sphi_d, &
05080                   primitives,&
05081                   buffer1,buffer2 )
05082 #else
05083         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
05084                               work, nl_a, nl_b, nl_c, nl_d, &
05085                               sphi_a, &
05086                               sphi_b, &
05087                               sphi_c, &
05088                               sphi_d, &
05089                               primitives, &
05090                               buffer1, buffer2)
05091 #endif
05092        CASE(2)
05093 #if __MAX_CONTR > 2 || __MAX_CONTR == 2
05094         CALL contract_dssd(work,&
05095                  nl_a, nl_b, nl_c, nl_d, &
05096                   sphi_a, sphi_b, sphi_c, sphi_d, &
05097                   primitives,&
05098                   buffer1,buffer2 )
05099 #else
05100         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
05101                               work, nl_a, nl_b, nl_c, nl_d, &
05102                               sphi_a, &
05103                               sphi_b, &
05104                               sphi_c, &
05105                               sphi_d, &
05106                               primitives, &
05107                               buffer1, buffer2)
05108 #endif
05109        CASE(3)
05110 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
05111         CALL contract_dssf(work,&
05112                  nl_a, nl_b, nl_c, nl_d, &
05113                   sphi_a, sphi_b, sphi_c, sphi_d, &
05114                   primitives,&
05115                   buffer1,buffer2 )
05116 #else
05117         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
05118                               work, nl_a, nl_b, nl_c, nl_d, &
05119                               sphi_a, &
05120                               sphi_b, &
05121                               sphi_c, &
05122                               sphi_d, &
05123                               primitives, &
05124                               buffer1, buffer2)
05125 #endif
05126        CASE(4)
05127 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
05128         CALL contract_dssg(work,&
05129                  nl_a, nl_b, nl_c, nl_d, &
05130                   sphi_a, sphi_b, sphi_c, sphi_d, &
05131                   primitives,&
05132                   buffer1,buffer2 )
05133 #else
05134         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
05135                               work, nl_a, nl_b, nl_c, nl_d, &
05136                               sphi_a, &
05137                               sphi_b, &
05138                               sphi_c, &
05139                               sphi_d, &
05140                               primitives, &
05141                               buffer1, buffer2)
05142 #endif
05143        CASE DEFAULT
05144         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
05145                               work, nl_a, nl_b, nl_c, nl_d, &
05146                               sphi_a, &
05147                               sphi_b, &
05148                               sphi_c, &
05149                               sphi_d, &
05150                               primitives, &
05151                               buffer1, buffer2)
05152        END SELECT
05153       CASE(1)
05154        SELECT CASE(n_d)
05155        CASE(0)
05156 #if __MAX_CONTR > 2 || __MAX_CONTR == 2
05157         CALL contract_dsps(work,&
05158                  nl_a, nl_b, nl_c, nl_d, &
05159                   sphi_a, sphi_b, sphi_c, sphi_d, &
05160                   primitives,&
05161                   buffer1,buffer2 )
05162 #else
05163         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
05164                               work, nl_a, nl_b, nl_c, nl_d, &
05165                               sphi_a, &
05166                               sphi_b, &
05167                               sphi_c, &
05168                               sphi_d, &
05169                               primitives, &
05170                               buffer1, buffer2)
05171 #endif
05172        CASE(1)
05173 #if __MAX_CONTR > 2 || __MAX_CONTR == 2
05174         CALL contract_dspp(work,&
05175                  nl_a, nl_b, nl_c, nl_d, &
05176                   sphi_a, sphi_b, sphi_c, sphi_d, &
05177                   primitives,&
05178                   buffer1,buffer2 )
05179 #else
05180         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
05181                               work, nl_a, nl_b, nl_c, nl_d, &
05182                               sphi_a, &
05183                               sphi_b, &
05184                               sphi_c, &
05185                               sphi_d, &
05186                               primitives, &
05187                               buffer1, buffer2)
05188 #endif
05189        CASE(2)
05190 #if __MAX_CONTR > 2 || __MAX_CONTR == 2
05191         CALL contract_dspd(work,&
05192                  nl_a, nl_b, nl_c, nl_d, &
05193                   sphi_a, sphi_b, sphi_c, sphi_d, &
05194                   primitives,&
05195                   buffer1,buffer2 )
05196 #else
05197         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
05198                               work, nl_a, nl_b, nl_c, nl_d, &
05199                               sphi_a, &
05200                               sphi_b, &
05201                               sphi_c, &
05202                               sphi_d, &
05203                               primitives, &
05204                               buffer1, buffer2)
05205 #endif
05206        CASE(3)
05207 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
05208         CALL contract_dspf(work,&
05209                  nl_a, nl_b, nl_c, nl_d, &
05210                   sphi_a, sphi_b, sphi_c, sphi_d, &
05211                   primitives,&
05212                   buffer1,buffer2 )
05213 #else
05214         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
05215                               work, nl_a, nl_b, nl_c, nl_d, &
05216                               sphi_a, &
05217                               sphi_b, &
05218                               sphi_c, &
05219                               sphi_d, &
05220                               primitives, &
05221                               buffer1, buffer2)
05222 #endif
05223        CASE(4)
05224 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
05225         CALL contract_dspg(work,&
05226                  nl_a, nl_b, nl_c, nl_d, &
05227                   sphi_a, sphi_b, sphi_c, sphi_d, &
05228                   primitives,&
05229                   buffer1,buffer2 )
05230 #else
05231         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
05232                               work, nl_a, nl_b, nl_c, nl_d, &
05233                               sphi_a, &
05234                               sphi_b, &
05235                               sphi_c, &
05236                               sphi_d, &
05237                               primitives, &
05238                               buffer1, buffer2)
05239 #endif
05240        CASE DEFAULT
05241         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
05242                               work, nl_a, nl_b, nl_c, nl_d, &
05243                               sphi_a, &
05244                               sphi_b, &
05245                               sphi_c, &
05246                               sphi_d, &
05247                               primitives, &
05248                               buffer1, buffer2)
05249        END SELECT
05250       CASE(2)
05251        SELECT CASE(n_d)
05252        CASE(0)
05253 #if __MAX_CONTR > 2 || __MAX_CONTR == 2
05254         CALL contract_dsds(work,&
05255                  nl_a, nl_b, nl_c, nl_d, &
05256                   sphi_a, sphi_b, sphi_c, sphi_d, &
05257                   primitives,&
05258                   buffer1,buffer2 )
05259 #else
05260         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
05261                               work, nl_a, nl_b, nl_c, nl_d, &
05262                               sphi_a, &
05263                               sphi_b, &
05264                               sphi_c, &
05265                               sphi_d, &
05266                               primitives, &
05267                               buffer1, buffer2)
05268 #endif
05269        CASE(1)
05270 #if __MAX_CONTR > 2 || __MAX_CONTR == 2
05271         CALL contract_dsdp(work,&
05272                  nl_a, nl_b, nl_c, nl_d, &
05273                   sphi_a, sphi_b, sphi_c, sphi_d, &
05274                   primitives,&
05275                   buffer1,buffer2 )
05276 #else
05277         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
05278                               work, nl_a, nl_b, nl_c, nl_d, &
05279                               sphi_a, &
05280                               sphi_b, &
05281                               sphi_c, &
05282                               sphi_d, &
05283                               primitives, &
05284                               buffer1, buffer2)
05285 #endif
05286        CASE(2)
05287 #if __MAX_CONTR > 2 || __MAX_CONTR == 2
05288         CALL contract_dsdd(work,&
05289                  nl_a, nl_b, nl_c, nl_d, &
05290                   sphi_a, sphi_b, sphi_c, sphi_d, &
05291                   primitives,&
05292                   buffer1,buffer2 )
05293 #else
05294         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
05295                               work, nl_a, nl_b, nl_c, nl_d, &
05296                               sphi_a, &
05297                               sphi_b, &
05298                               sphi_c, &
05299                               sphi_d, &
05300                               primitives, &
05301                               buffer1, buffer2)
05302 #endif
05303        CASE(3)
05304 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
05305         CALL contract_dsdf(work,&
05306                  nl_a, nl_b, nl_c, nl_d, &
05307                   sphi_a, sphi_b, sphi_c, sphi_d, &
05308                   primitives,&
05309                   buffer1,buffer2 )
05310 #else
05311         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
05312                               work, nl_a, nl_b, nl_c, nl_d, &
05313                               sphi_a, &
05314                               sphi_b, &
05315                               sphi_c, &
05316                               sphi_d, &
05317                               primitives, &
05318                               buffer1, buffer2)
05319 #endif
05320        CASE(4)
05321 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
05322         CALL contract_dsdg(work,&
05323                  nl_a, nl_b, nl_c, nl_d, &
05324                   sphi_a, sphi_b, sphi_c, sphi_d, &
05325                   primitives,&
05326                   buffer1,buffer2 )
05327 #else
05328         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
05329                               work, nl_a, nl_b, nl_c, nl_d, &
05330                               sphi_a, &
05331                               sphi_b, &
05332                               sphi_c, &
05333                               sphi_d, &
05334                               primitives, &
05335                               buffer1, buffer2)
05336 #endif
05337        CASE DEFAULT
05338         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
05339                               work, nl_a, nl_b, nl_c, nl_d, &
05340                               sphi_a, &
05341                               sphi_b, &
05342                               sphi_c, &
05343                               sphi_d, &
05344                               primitives, &
05345                               buffer1, buffer2)
05346        END SELECT
05347       CASE(3)
05348        SELECT CASE(n_d)
05349        CASE(0)
05350 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
05351         CALL contract_dsfs(work,&
05352                  nl_a, nl_b, nl_c, nl_d, &
05353                   sphi_a, sphi_b, sphi_c, sphi_d, &
05354                   primitives,&
05355                   buffer1,buffer2 )
05356 #else
05357         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
05358                               work, nl_a, nl_b, nl_c, nl_d, &
05359                               sphi_a, &
05360                               sphi_b, &
05361                               sphi_c, &
05362                               sphi_d, &
05363                               primitives, &
05364                               buffer1, buffer2)
05365 #endif
05366        CASE(1)
05367 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
05368         CALL contract_dsfp(work,&
05369                  nl_a, nl_b, nl_c, nl_d, &
05370                   sphi_a, sphi_b, sphi_c, sphi_d, &
05371                   primitives,&
05372                   buffer1,buffer2 )
05373 #else
05374         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
05375                               work, nl_a, nl_b, nl_c, nl_d, &
05376                               sphi_a, &
05377                               sphi_b, &
05378                               sphi_c, &
05379                               sphi_d, &
05380                               primitives, &
05381                               buffer1, buffer2)
05382 #endif
05383        CASE(2)
05384 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
05385         CALL contract_dsfd(work,&
05386                  nl_a, nl_b, nl_c, nl_d, &
05387                   sphi_a, sphi_b, sphi_c, sphi_d, &
05388                   primitives,&
05389                   buffer1,buffer2 )
05390 #else
05391         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
05392                               work, nl_a, nl_b, nl_c, nl_d, &
05393                               sphi_a, &
05394                               sphi_b, &
05395                               sphi_c, &
05396                               sphi_d, &
05397                               primitives, &
05398                               buffer1, buffer2)
05399 #endif
05400        CASE(3)
05401 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
05402         CALL contract_dsff(work,&
05403                  nl_a, nl_b, nl_c, nl_d, &
05404                   sphi_a, sphi_b, sphi_c, sphi_d, &
05405                   primitives,&
05406                   buffer1,buffer2 )
05407 #else
05408         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
05409                               work, nl_a, nl_b, nl_c, nl_d, &
05410                               sphi_a, &
05411                               sphi_b, &
05412                               sphi_c, &
05413                               sphi_d, &
05414                               primitives, &
05415                               buffer1, buffer2)
05416 #endif
05417        CASE(4)
05418 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
05419         CALL contract_dsfg(work,&
05420                  nl_a, nl_b, nl_c, nl_d, &
05421                   sphi_a, sphi_b, sphi_c, sphi_d, &
05422                   primitives,&
05423                   buffer1,buffer2 )
05424 #else
05425         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
05426                               work, nl_a, nl_b, nl_c, nl_d, &
05427                               sphi_a, &
05428                               sphi_b, &
05429                               sphi_c, &
05430                               sphi_d, &
05431                               primitives, &
05432                               buffer1, buffer2)
05433 #endif
05434        CASE DEFAULT
05435         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
05436                               work, nl_a, nl_b, nl_c, nl_d, &
05437                               sphi_a, &
05438                               sphi_b, &
05439                               sphi_c, &
05440                               sphi_d, &
05441                               primitives, &
05442                               buffer1, buffer2)
05443        END SELECT
05444       CASE(4)
05445        SELECT CASE(n_d)
05446        CASE(0)
05447 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
05448         CALL contract_dsgs(work,&
05449                  nl_a, nl_b, nl_c, nl_d, &
05450                   sphi_a, sphi_b, sphi_c, sphi_d, &
05451                   primitives,&
05452                   buffer1,buffer2 )
05453 #else
05454         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
05455                               work, nl_a, nl_b, nl_c, nl_d, &
05456                               sphi_a, &
05457                               sphi_b, &
05458                               sphi_c, &
05459                               sphi_d, &
05460                               primitives, &
05461                               buffer1, buffer2)
05462 #endif
05463        CASE(1)
05464 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
05465         CALL contract_dsgp(work,&
05466                  nl_a, nl_b, nl_c, nl_d, &
05467                   sphi_a, sphi_b, sphi_c, sphi_d, &
05468                   primitives,&
05469                   buffer1,buffer2 )
05470 #else
05471         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
05472                               work, nl_a, nl_b, nl_c, nl_d, &
05473                               sphi_a, &
05474                               sphi_b, &
05475                               sphi_c, &
05476                               sphi_d, &
05477                               primitives, &
05478                               buffer1, buffer2)
05479 #endif
05480        CASE(2)
05481 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
05482         CALL contract_dsgd(work,&
05483                  nl_a, nl_b, nl_c, nl_d, &
05484                   sphi_a, sphi_b, sphi_c, sphi_d, &
05485                   primitives,&
05486                   buffer1,buffer2 )
05487 #else
05488         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
05489                               work, nl_a, nl_b, nl_c, nl_d, &
05490                               sphi_a, &
05491                               sphi_b, &
05492                               sphi_c, &
05493                               sphi_d, &
05494                               primitives, &
05495                               buffer1, buffer2)
05496 #endif
05497        CASE(3)
05498 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
05499         CALL contract_dsgf(work,&
05500                  nl_a, nl_b, nl_c, nl_d, &
05501                   sphi_a, sphi_b, sphi_c, sphi_d, &
05502                   primitives,&
05503                   buffer1,buffer2 )
05504 #else
05505         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
05506                               work, nl_a, nl_b, nl_c, nl_d, &
05507                               sphi_a, &
05508                               sphi_b, &
05509                               sphi_c, &
05510                               sphi_d, &
05511                               primitives, &
05512                               buffer1, buffer2)
05513 #endif
05514        CASE(4)
05515 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
05516         CALL contract_dsgg(work,&
05517                  nl_a, nl_b, nl_c, nl_d, &
05518                   sphi_a, sphi_b, sphi_c, sphi_d, &
05519                   primitives,&
05520                   buffer1,buffer2 )
05521 #else
05522         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
05523                               work, nl_a, nl_b, nl_c, nl_d, &
05524                               sphi_a, &
05525                               sphi_b, &
05526                               sphi_c, &
05527                               sphi_d, &
05528                               primitives, &
05529                               buffer1, buffer2)
05530 #endif
05531        CASE DEFAULT
05532         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
05533                               work, nl_a, nl_b, nl_c, nl_d, &
05534                               sphi_a, &
05535                               sphi_b, &
05536                               sphi_c, &
05537                               sphi_d, &
05538                               primitives, &
05539                               buffer1, buffer2)
05540        END SELECT
05541       CASE DEFAULT
05542        CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
05543                              work, nl_a, nl_b, nl_c, nl_d, &
05544                              sphi_a, &
05545                              sphi_b, &
05546                              sphi_c, &
05547                              sphi_d, &
05548                              primitives, &
05549                              buffer1, buffer2)
05550       END SELECT
05551      CASE(1)
05552       SELECT CASE(n_c)
05553       CASE(0)
05554        SELECT CASE(n_d)
05555        CASE(0)
05556 #if __MAX_CONTR > 2 || __MAX_CONTR == 2
05557         CALL contract_dpss(work,&
05558                  nl_a, nl_b, nl_c, nl_d, &
05559                   sphi_a, sphi_b, sphi_c, sphi_d, &
05560                   primitives,&
05561                   buffer1,buffer2 )
05562 #else
05563         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
05564                               work, nl_a, nl_b, nl_c, nl_d, &
05565                               sphi_a, &
05566                               sphi_b, &
05567                               sphi_c, &
05568                               sphi_d, &
05569                               primitives, &
05570                               buffer1, buffer2)
05571 #endif
05572        CASE(1)
05573 #if __MAX_CONTR > 2 || __MAX_CONTR == 2
05574         CALL contract_dpsp(work,&
05575                  nl_a, nl_b, nl_c, nl_d, &
05576                   sphi_a, sphi_b, sphi_c, sphi_d, &
05577                   primitives,&
05578                   buffer1,buffer2 )
05579 #else
05580         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
05581                               work, nl_a, nl_b, nl_c, nl_d, &
05582                               sphi_a, &
05583                               sphi_b, &
05584                               sphi_c, &
05585                               sphi_d, &
05586                               primitives, &
05587                               buffer1, buffer2)
05588 #endif
05589        CASE(2)
05590 #if __MAX_CONTR > 2 || __MAX_CONTR == 2
05591         CALL contract_dpsd(work,&
05592                  nl_a, nl_b, nl_c, nl_d, &
05593                   sphi_a, sphi_b, sphi_c, sphi_d, &
05594                   primitives,&
05595                   buffer1,buffer2 )
05596 #else
05597         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
05598                               work, nl_a, nl_b, nl_c, nl_d, &
05599                               sphi_a, &
05600                               sphi_b, &
05601                               sphi_c, &
05602                               sphi_d, &
05603                               primitives, &
05604                               buffer1, buffer2)
05605 #endif
05606        CASE(3)
05607 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
05608         CALL contract_dpsf(work,&
05609                  nl_a, nl_b, nl_c, nl_d, &
05610                   sphi_a, sphi_b, sphi_c, sphi_d, &
05611                   primitives,&
05612                   buffer1,buffer2 )
05613 #else
05614         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
05615                               work, nl_a, nl_b, nl_c, nl_d, &
05616                               sphi_a, &
05617                               sphi_b, &
05618                               sphi_c, &
05619                               sphi_d, &
05620                               primitives, &
05621                               buffer1, buffer2)
05622 #endif
05623        CASE(4)
05624 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
05625         CALL contract_dpsg(work,&
05626                  nl_a, nl_b, nl_c, nl_d, &
05627                   sphi_a, sphi_b, sphi_c, sphi_d, &
05628                   primitives,&
05629                   buffer1,buffer2 )
05630 #else
05631         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
05632                               work, nl_a, nl_b, nl_c, nl_d, &
05633                               sphi_a, &
05634                               sphi_b, &
05635                               sphi_c, &
05636                               sphi_d, &
05637                               primitives, &
05638                               buffer1, buffer2)
05639 #endif
05640        CASE DEFAULT
05641         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
05642                               work, nl_a, nl_b, nl_c, nl_d, &
05643                               sphi_a, &
05644                               sphi_b, &
05645                               sphi_c, &
05646                               sphi_d, &
05647                               primitives, &
05648                               buffer1, buffer2)
05649        END SELECT
05650       CASE(1)
05651        SELECT CASE(n_d)
05652        CASE(0)
05653 #if __MAX_CONTR > 2 || __MAX_CONTR == 2
05654         CALL contract_dpps(work,&
05655                  nl_a, nl_b, nl_c, nl_d, &
05656                   sphi_a, sphi_b, sphi_c, sphi_d, &
05657                   primitives,&
05658                   buffer1,buffer2 )
05659 #else
05660         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
05661                               work, nl_a, nl_b, nl_c, nl_d, &
05662                               sphi_a, &
05663                               sphi_b, &
05664                               sphi_c, &
05665                               sphi_d, &
05666                               primitives, &
05667                               buffer1, buffer2)
05668 #endif
05669        CASE(1)
05670 #if __MAX_CONTR > 2 || __MAX_CONTR == 2
05671         CALL contract_dppp(work,&
05672                  nl_a, nl_b, nl_c, nl_d, &
05673                   sphi_a, sphi_b, sphi_c, sphi_d, &
05674                   primitives,&
05675                   buffer1,buffer2 )
05676 #else
05677         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
05678                               work, nl_a, nl_b, nl_c, nl_d, &
05679                               sphi_a, &
05680                               sphi_b, &
05681                               sphi_c, &
05682                               sphi_d, &
05683                               primitives, &
05684                               buffer1, buffer2)
05685 #endif
05686        CASE(2)
05687 #if __MAX_CONTR > 2 || __MAX_CONTR == 2
05688         CALL contract_dppd(work,&
05689                  nl_a, nl_b, nl_c, nl_d, &
05690                   sphi_a, sphi_b, sphi_c, sphi_d, &
05691                   primitives,&
05692                   buffer1,buffer2 )
05693 #else
05694         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
05695                               work, nl_a, nl_b, nl_c, nl_d, &
05696                               sphi_a, &
05697                               sphi_b, &
05698                               sphi_c, &
05699                               sphi_d, &
05700                               primitives, &
05701                               buffer1, buffer2)
05702 #endif
05703        CASE(3)
05704 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
05705         CALL contract_dppf(work,&
05706                  nl_a, nl_b, nl_c, nl_d, &
05707                   sphi_a, sphi_b, sphi_c, sphi_d, &
05708                   primitives,&
05709                   buffer1,buffer2 )
05710 #else
05711         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
05712                               work, nl_a, nl_b, nl_c, nl_d, &
05713                               sphi_a, &
05714                               sphi_b, &
05715                               sphi_c, &
05716                               sphi_d, &
05717                               primitives, &
05718                               buffer1, buffer2)
05719 #endif
05720        CASE(4)
05721 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
05722         CALL contract_dppg(work,&
05723                  nl_a, nl_b, nl_c, nl_d, &
05724                   sphi_a, sphi_b, sphi_c, sphi_d, &
05725                   primitives,&
05726                   buffer1,buffer2 )
05727 #else
05728         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
05729                               work, nl_a, nl_b, nl_c, nl_d, &
05730                               sphi_a, &
05731                               sphi_b, &
05732                               sphi_c, &
05733                               sphi_d, &
05734                               primitives, &
05735                               buffer1, buffer2)
05736 #endif
05737        CASE DEFAULT
05738         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
05739                               work, nl_a, nl_b, nl_c, nl_d, &
05740                               sphi_a, &
05741                               sphi_b, &
05742                               sphi_c, &
05743                               sphi_d, &
05744                               primitives, &
05745                               buffer1, buffer2)
05746        END SELECT
05747       CASE(2)
05748        SELECT CASE(n_d)
05749        CASE(0)
05750 #if __MAX_CONTR > 2 || __MAX_CONTR == 2
05751         CALL contract_dpds(work,&
05752                  nl_a, nl_b, nl_c, nl_d, &
05753                   sphi_a, sphi_b, sphi_c, sphi_d, &
05754                   primitives,&
05755                   buffer1,buffer2 )
05756 #else
05757         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
05758                               work, nl_a, nl_b, nl_c, nl_d, &
05759                               sphi_a, &
05760                               sphi_b, &
05761                               sphi_c, &
05762                               sphi_d, &
05763                               primitives, &
05764                               buffer1, buffer2)
05765 #endif
05766        CASE(1)
05767 #if __MAX_CONTR > 2 || __MAX_CONTR == 2
05768         CALL contract_dpdp(work,&
05769                  nl_a, nl_b, nl_c, nl_d, &
05770                   sphi_a, sphi_b, sphi_c, sphi_d, &
05771                   primitives,&
05772                   buffer1,buffer2 )
05773 #else
05774         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
05775                               work, nl_a, nl_b, nl_c, nl_d, &
05776                               sphi_a, &
05777                               sphi_b, &
05778                               sphi_c, &
05779                               sphi_d, &
05780                               primitives, &
05781                               buffer1, buffer2)
05782 #endif
05783        CASE(2)
05784 #if __MAX_CONTR > 2 || __MAX_CONTR == 2
05785         CALL contract_dpdd(work,&
05786                  nl_a, nl_b, nl_c, nl_d, &
05787                   sphi_a, sphi_b, sphi_c, sphi_d, &
05788                   primitives,&
05789                   buffer1,buffer2 )
05790 #else
05791         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
05792                               work, nl_a, nl_b, nl_c, nl_d, &
05793                               sphi_a, &
05794                               sphi_b, &
05795                               sphi_c, &
05796                               sphi_d, &
05797                               primitives, &
05798                               buffer1, buffer2)
05799 #endif
05800        CASE(3)
05801 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
05802         CALL contract_dpdf(work,&
05803                  nl_a, nl_b, nl_c, nl_d, &
05804                   sphi_a, sphi_b, sphi_c, sphi_d, &
05805                   primitives,&
05806                   buffer1,buffer2 )
05807 #else
05808         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
05809                               work, nl_a, nl_b, nl_c, nl_d, &
05810                               sphi_a, &
05811                               sphi_b, &
05812                               sphi_c, &
05813                               sphi_d, &
05814                               primitives, &
05815                               buffer1, buffer2)
05816 #endif
05817        CASE(4)
05818 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
05819         CALL contract_dpdg(work,&
05820                  nl_a, nl_b, nl_c, nl_d, &
05821                   sphi_a, sphi_b, sphi_c, sphi_d, &
05822                   primitives,&
05823                   buffer1,buffer2 )
05824 #else
05825         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
05826                               work, nl_a, nl_b, nl_c, nl_d, &
05827                               sphi_a, &
05828                               sphi_b, &
05829                               sphi_c, &
05830                               sphi_d, &
05831                               primitives, &
05832                               buffer1, buffer2)
05833 #endif
05834        CASE DEFAULT
05835         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
05836                               work, nl_a, nl_b, nl_c, nl_d, &
05837                               sphi_a, &
05838                               sphi_b, &
05839                               sphi_c, &
05840                               sphi_d, &
05841                               primitives, &
05842                               buffer1, buffer2)
05843        END SELECT
05844       CASE(3)
05845        SELECT CASE(n_d)
05846        CASE(0)
05847 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
05848         CALL contract_dpfs(work,&
05849                  nl_a, nl_b, nl_c, nl_d, &
05850                   sphi_a, sphi_b, sphi_c, sphi_d, &
05851                   primitives,&
05852                   buffer1,buffer2 )
05853 #else
05854         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
05855                               work, nl_a, nl_b, nl_c, nl_d, &
05856                               sphi_a, &
05857                               sphi_b, &
05858                               sphi_c, &
05859                               sphi_d, &
05860                               primitives, &
05861                               buffer1, buffer2)
05862 #endif
05863        CASE(1)
05864 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
05865         CALL contract_dpfp(work,&
05866                  nl_a, nl_b, nl_c, nl_d, &
05867                   sphi_a, sphi_b, sphi_c, sphi_d, &
05868                   primitives,&
05869                   buffer1,buffer2 )
05870 #else
05871         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
05872                               work, nl_a, nl_b, nl_c, nl_d, &
05873                               sphi_a, &
05874                               sphi_b, &
05875                               sphi_c, &
05876                               sphi_d, &
05877                               primitives, &
05878                               buffer1, buffer2)
05879 #endif
05880        CASE(2)
05881 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
05882         CALL contract_dpfd(work,&
05883                  nl_a, nl_b, nl_c, nl_d, &
05884                   sphi_a, sphi_b, sphi_c, sphi_d, &
05885                   primitives,&
05886                   buffer1,buffer2 )
05887 #else
05888         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
05889                               work, nl_a, nl_b, nl_c, nl_d, &
05890                               sphi_a, &
05891                               sphi_b, &
05892                               sphi_c, &
05893                               sphi_d, &
05894                               primitives, &
05895                               buffer1, buffer2)
05896 #endif
05897        CASE(3)
05898 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
05899         CALL contract_dpff(work,&
05900                  nl_a, nl_b, nl_c, nl_d, &
05901                   sphi_a, sphi_b, sphi_c, sphi_d, &
05902                   primitives,&
05903                   buffer1,buffer2 )
05904 #else
05905         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
05906                               work, nl_a, nl_b, nl_c, nl_d, &
05907                               sphi_a, &
05908                               sphi_b, &
05909                               sphi_c, &
05910                               sphi_d, &
05911                               primitives, &
05912                               buffer1, buffer2)
05913 #endif
05914        CASE(4)
05915 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
05916         CALL contract_dpfg(work,&
05917                  nl_a, nl_b, nl_c, nl_d, &
05918                   sphi_a, sphi_b, sphi_c, sphi_d, &
05919                   primitives,&
05920                   buffer1,buffer2 )
05921 #else
05922         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
05923                               work, nl_a, nl_b, nl_c, nl_d, &
05924                               sphi_a, &
05925                               sphi_b, &
05926                               sphi_c, &
05927                               sphi_d, &
05928                               primitives, &
05929                               buffer1, buffer2)
05930 #endif
05931        CASE DEFAULT
05932         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
05933                               work, nl_a, nl_b, nl_c, nl_d, &
05934                               sphi_a, &
05935                               sphi_b, &
05936                               sphi_c, &
05937                               sphi_d, &
05938                               primitives, &
05939                               buffer1, buffer2)
05940        END SELECT
05941       CASE(4)
05942        SELECT CASE(n_d)
05943        CASE(0)
05944 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
05945         CALL contract_dpgs(work,&
05946                  nl_a, nl_b, nl_c, nl_d, &
05947                   sphi_a, sphi_b, sphi_c, sphi_d, &
05948                   primitives,&
05949                   buffer1,buffer2 )
05950 #else
05951         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
05952                               work, nl_a, nl_b, nl_c, nl_d, &
05953                               sphi_a, &
05954                               sphi_b, &
05955                               sphi_c, &
05956                               sphi_d, &
05957                               primitives, &
05958                               buffer1, buffer2)
05959 #endif
05960        CASE(1)
05961 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
05962         CALL contract_dpgp(work,&
05963                  nl_a, nl_b, nl_c, nl_d, &
05964                   sphi_a, sphi_b, sphi_c, sphi_d, &
05965                   primitives,&
05966                   buffer1,buffer2 )
05967 #else
05968         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
05969                               work, nl_a, nl_b, nl_c, nl_d, &
05970                               sphi_a, &
05971                               sphi_b, &
05972                               sphi_c, &
05973                               sphi_d, &
05974                               primitives, &
05975                               buffer1, buffer2)
05976 #endif
05977        CASE(2)
05978 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
05979         CALL contract_dpgd(work,&
05980                  nl_a, nl_b, nl_c, nl_d, &
05981                   sphi_a, sphi_b, sphi_c, sphi_d, &
05982                   primitives,&
05983                   buffer1,buffer2 )
05984 #else
05985         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
05986                               work, nl_a, nl_b, nl_c, nl_d, &
05987                               sphi_a, &
05988                               sphi_b, &
05989                               sphi_c, &
05990                               sphi_d, &
05991                               primitives, &
05992                               buffer1, buffer2)
05993 #endif
05994        CASE(3)
05995 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
05996         CALL contract_dpgf(work,&
05997                  nl_a, nl_b, nl_c, nl_d, &
05998                   sphi_a, sphi_b, sphi_c, sphi_d, &
05999                   primitives,&
06000                   buffer1,buffer2 )
06001 #else
06002         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
06003                               work, nl_a, nl_b, nl_c, nl_d, &
06004                               sphi_a, &
06005                               sphi_b, &
06006                               sphi_c, &
06007                               sphi_d, &
06008                               primitives, &
06009                               buffer1, buffer2)
06010 #endif
06011        CASE(4)
06012 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
06013         CALL contract_dpgg(work,&
06014                  nl_a, nl_b, nl_c, nl_d, &
06015                   sphi_a, sphi_b, sphi_c, sphi_d, &
06016                   primitives,&
06017                   buffer1,buffer2 )
06018 #else
06019         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
06020                               work, nl_a, nl_b, nl_c, nl_d, &
06021                               sphi_a, &
06022                               sphi_b, &
06023                               sphi_c, &
06024                               sphi_d, &
06025                               primitives, &
06026                               buffer1, buffer2)
06027 #endif
06028        CASE DEFAULT
06029         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
06030                               work, nl_a, nl_b, nl_c, nl_d, &
06031                               sphi_a, &
06032                               sphi_b, &
06033                               sphi_c, &
06034                               sphi_d, &
06035                               primitives, &
06036                               buffer1, buffer2)
06037        END SELECT
06038       CASE DEFAULT
06039        CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
06040                              work, nl_a, nl_b, nl_c, nl_d, &
06041                              sphi_a, &
06042                              sphi_b, &
06043                              sphi_c, &
06044                              sphi_d, &
06045                              primitives, &
06046                              buffer1, buffer2)
06047       END SELECT
06048      CASE(2)
06049       SELECT CASE(n_c)
06050       CASE(0)
06051        SELECT CASE(n_d)
06052        CASE(0)
06053 #if __MAX_CONTR > 2 || __MAX_CONTR == 2
06054         CALL contract_ddss(work,&
06055                  nl_a, nl_b, nl_c, nl_d, &
06056                   sphi_a, sphi_b, sphi_c, sphi_d, &
06057                   primitives,&
06058                   buffer1,buffer2 )
06059 #else
06060         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
06061                               work, nl_a, nl_b, nl_c, nl_d, &
06062                               sphi_a, &
06063                               sphi_b, &
06064                               sphi_c, &
06065                               sphi_d, &
06066                               primitives, &
06067                               buffer1, buffer2)
06068 #endif
06069        CASE(1)
06070 #if __MAX_CONTR > 2 || __MAX_CONTR == 2
06071         CALL contract_ddsp(work,&
06072                  nl_a, nl_b, nl_c, nl_d, &
06073                   sphi_a, sphi_b, sphi_c, sphi_d, &
06074                   primitives,&
06075                   buffer1,buffer2 )
06076 #else
06077         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
06078                               work, nl_a, nl_b, nl_c, nl_d, &
06079                               sphi_a, &
06080                               sphi_b, &
06081                               sphi_c, &
06082                               sphi_d, &
06083                               primitives, &
06084                               buffer1, buffer2)
06085 #endif
06086        CASE(2)
06087 #if __MAX_CONTR > 2 || __MAX_CONTR == 2
06088         CALL contract_ddsd(work,&
06089                  nl_a, nl_b, nl_c, nl_d, &
06090                   sphi_a, sphi_b, sphi_c, sphi_d, &
06091                   primitives,&
06092                   buffer1,buffer2 )
06093 #else
06094         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
06095                               work, nl_a, nl_b, nl_c, nl_d, &
06096                               sphi_a, &
06097                               sphi_b, &
06098                               sphi_c, &
06099                               sphi_d, &
06100                               primitives, &
06101                               buffer1, buffer2)
06102 #endif
06103        CASE(3)
06104 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
06105         CALL contract_ddsf(work,&
06106                  nl_a, nl_b, nl_c, nl_d, &
06107                   sphi_a, sphi_b, sphi_c, sphi_d, &
06108                   primitives,&
06109                   buffer1,buffer2 )
06110 #else
06111         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
06112                               work, nl_a, nl_b, nl_c, nl_d, &
06113                               sphi_a, &
06114                               sphi_b, &
06115                               sphi_c, &
06116                               sphi_d, &
06117                               primitives, &
06118                               buffer1, buffer2)
06119 #endif
06120        CASE(4)
06121 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
06122         CALL contract_ddsg(work,&
06123                  nl_a, nl_b, nl_c, nl_d, &
06124                   sphi_a, sphi_b, sphi_c, sphi_d, &
06125                   primitives,&
06126                   buffer1,buffer2 )
06127 #else
06128         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
06129                               work, nl_a, nl_b, nl_c, nl_d, &
06130                               sphi_a, &
06131                               sphi_b, &
06132                               sphi_c, &
06133                               sphi_d, &
06134                               primitives, &
06135                               buffer1, buffer2)
06136 #endif
06137        CASE DEFAULT
06138         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
06139                               work, nl_a, nl_b, nl_c, nl_d, &
06140                               sphi_a, &
06141                               sphi_b, &
06142                               sphi_c, &
06143                               sphi_d, &
06144                               primitives, &
06145                               buffer1, buffer2)
06146        END SELECT
06147       CASE(1)
06148        SELECT CASE(n_d)
06149        CASE(0)
06150 #if __MAX_CONTR > 2 || __MAX_CONTR == 2
06151         CALL contract_ddps(work,&
06152                  nl_a, nl_b, nl_c, nl_d, &
06153                   sphi_a, sphi_b, sphi_c, sphi_d, &
06154                   primitives,&
06155                   buffer1,buffer2 )
06156 #else
06157         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
06158                               work, nl_a, nl_b, nl_c, nl_d, &
06159                               sphi_a, &
06160                               sphi_b, &
06161                               sphi_c, &
06162                               sphi_d, &
06163                               primitives, &
06164                               buffer1, buffer2)
06165 #endif
06166        CASE(1)
06167 #if __MAX_CONTR > 2 || __MAX_CONTR == 2
06168         CALL contract_ddpp(work,&
06169                  nl_a, nl_b, nl_c, nl_d, &
06170                   sphi_a, sphi_b, sphi_c, sphi_d, &
06171                   primitives,&
06172                   buffer1,buffer2 )
06173 #else
06174         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
06175                               work, nl_a, nl_b, nl_c, nl_d, &
06176                               sphi_a, &
06177                               sphi_b, &
06178                               sphi_c, &
06179                               sphi_d, &
06180                               primitives, &
06181                               buffer1, buffer2)
06182 #endif
06183        CASE(2)
06184 #if __MAX_CONTR > 2 || __MAX_CONTR == 2
06185         CALL contract_ddpd(work,&
06186                  nl_a, nl_b, nl_c, nl_d, &
06187                   sphi_a, sphi_b, sphi_c, sphi_d, &
06188                   primitives,&
06189                   buffer1,buffer2 )
06190 #else
06191         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
06192                               work, nl_a, nl_b, nl_c, nl_d, &
06193                               sphi_a, &
06194                               sphi_b, &
06195                               sphi_c, &
06196                               sphi_d, &
06197                               primitives, &
06198                               buffer1, buffer2)
06199 #endif
06200        CASE(3)
06201 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
06202         CALL contract_ddpf(work,&
06203                  nl_a, nl_b, nl_c, nl_d, &
06204                   sphi_a, sphi_b, sphi_c, sphi_d, &
06205                   primitives,&
06206                   buffer1,buffer2 )
06207 #else
06208         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
06209                               work, nl_a, nl_b, nl_c, nl_d, &
06210                               sphi_a, &
06211                               sphi_b, &
06212                               sphi_c, &
06213                               sphi_d, &
06214                               primitives, &
06215                               buffer1, buffer2)
06216 #endif
06217        CASE(4)
06218 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
06219         CALL contract_ddpg(work,&
06220                  nl_a, nl_b, nl_c, nl_d, &
06221                   sphi_a, sphi_b, sphi_c, sphi_d, &
06222                   primitives,&
06223                   buffer1,buffer2 )
06224 #else
06225         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
06226                               work, nl_a, nl_b, nl_c, nl_d, &
06227                               sphi_a, &
06228                               sphi_b, &
06229                               sphi_c, &
06230                               sphi_d, &
06231                               primitives, &
06232                               buffer1, buffer2)
06233 #endif
06234        CASE DEFAULT
06235         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
06236                               work, nl_a, nl_b, nl_c, nl_d, &
06237                               sphi_a, &
06238                               sphi_b, &
06239                               sphi_c, &
06240                               sphi_d, &
06241                               primitives, &
06242                               buffer1, buffer2)
06243        END SELECT
06244       CASE(2)
06245        SELECT CASE(n_d)
06246        CASE(0)
06247 #if __MAX_CONTR > 2 || __MAX_CONTR == 2
06248         CALL contract_ddds(work,&
06249                  nl_a, nl_b, nl_c, nl_d, &
06250                   sphi_a, sphi_b, sphi_c, sphi_d, &
06251                   primitives,&
06252                   buffer1,buffer2 )
06253 #else
06254         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
06255                               work, nl_a, nl_b, nl_c, nl_d, &
06256                               sphi_a, &
06257                               sphi_b, &
06258                               sphi_c, &
06259                               sphi_d, &
06260                               primitives, &
06261                               buffer1, buffer2)
06262 #endif
06263        CASE(1)
06264 #if __MAX_CONTR > 2 || __MAX_CONTR == 2
06265         CALL contract_dddp(work,&
06266                  nl_a, nl_b, nl_c, nl_d, &
06267                   sphi_a, sphi_b, sphi_c, sphi_d, &
06268                   primitives,&
06269                   buffer1,buffer2 )
06270 #else
06271         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
06272                               work, nl_a, nl_b, nl_c, nl_d, &
06273                               sphi_a, &
06274                               sphi_b, &
06275                               sphi_c, &
06276                               sphi_d, &
06277                               primitives, &
06278                               buffer1, buffer2)
06279 #endif
06280        CASE(2)
06281 #if __MAX_CONTR > 2 || __MAX_CONTR == 2
06282         CALL contract_dddd(work,&
06283                  nl_a, nl_b, nl_c, nl_d, &
06284                   sphi_a, sphi_b, sphi_c, sphi_d, &
06285                   primitives,&
06286                   buffer1,buffer2 )
06287 #else
06288         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
06289                               work, nl_a, nl_b, nl_c, nl_d, &
06290                               sphi_a, &
06291                               sphi_b, &
06292                               sphi_c, &
06293                               sphi_d, &
06294                               primitives, &
06295                               buffer1, buffer2)
06296 #endif
06297        CASE(3)
06298 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
06299         CALL contract_dddf(work,&
06300                  nl_a, nl_b, nl_c, nl_d, &
06301                   sphi_a, sphi_b, sphi_c, sphi_d, &
06302                   primitives,&
06303                   buffer1,buffer2 )
06304 #else
06305         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
06306                               work, nl_a, nl_b, nl_c, nl_d, &
06307                               sphi_a, &
06308                               sphi_b, &
06309                               sphi_c, &
06310                               sphi_d, &
06311                               primitives, &
06312                               buffer1, buffer2)
06313 #endif
06314        CASE(4)
06315 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
06316         CALL contract_dddg(work,&
06317                  nl_a, nl_b, nl_c, nl_d, &
06318                   sphi_a, sphi_b, sphi_c, sphi_d, &
06319                   primitives,&
06320                   buffer1,buffer2 )
06321 #else
06322         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
06323                               work, nl_a, nl_b, nl_c, nl_d, &
06324                               sphi_a, &
06325                               sphi_b, &
06326                               sphi_c, &
06327                               sphi_d, &
06328                               primitives, &
06329                               buffer1, buffer2)
06330 #endif
06331        CASE DEFAULT
06332         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
06333                               work, nl_a, nl_b, nl_c, nl_d, &
06334                               sphi_a, &
06335                               sphi_b, &
06336                               sphi_c, &
06337                               sphi_d, &
06338                               primitives, &
06339                               buffer1, buffer2)
06340        END SELECT
06341       CASE(3)
06342        SELECT CASE(n_d)
06343        CASE(0)
06344 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
06345         CALL contract_ddfs(work,&
06346                  nl_a, nl_b, nl_c, nl_d, &
06347                   sphi_a, sphi_b, sphi_c, sphi_d, &
06348                   primitives,&
06349                   buffer1,buffer2 )
06350 #else
06351         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
06352                               work, nl_a, nl_b, nl_c, nl_d, &
06353                               sphi_a, &
06354                               sphi_b, &
06355                               sphi_c, &
06356                               sphi_d, &
06357                               primitives, &
06358                               buffer1, buffer2)
06359 #endif
06360        CASE(1)
06361 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
06362         CALL contract_ddfp(work,&
06363                  nl_a, nl_b, nl_c, nl_d, &
06364                   sphi_a, sphi_b, sphi_c, sphi_d, &
06365                   primitives,&
06366                   buffer1,buffer2 )
06367 #else
06368         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
06369                               work, nl_a, nl_b, nl_c, nl_d, &
06370                               sphi_a, &
06371                               sphi_b, &
06372                               sphi_c, &
06373                               sphi_d, &
06374                               primitives, &
06375                               buffer1, buffer2)
06376 #endif
06377        CASE(2)
06378 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
06379         CALL contract_ddfd(work,&
06380                  nl_a, nl_b, nl_c, nl_d, &
06381                   sphi_a, sphi_b, sphi_c, sphi_d, &
06382                   primitives,&
06383                   buffer1,buffer2 )
06384 #else
06385         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
06386                               work, nl_a, nl_b, nl_c, nl_d, &
06387                               sphi_a, &
06388                               sphi_b, &
06389                               sphi_c, &
06390                               sphi_d, &
06391                               primitives, &
06392                               buffer1, buffer2)
06393 #endif
06394        CASE(3)
06395 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
06396         CALL contract_ddff(work,&
06397                  nl_a, nl_b, nl_c, nl_d, &
06398                   sphi_a, sphi_b, sphi_c, sphi_d, &
06399                   primitives,&
06400                   buffer1,buffer2 )
06401 #else
06402         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
06403                               work, nl_a, nl_b, nl_c, nl_d, &
06404                               sphi_a, &
06405                               sphi_b, &
06406                               sphi_c, &
06407                               sphi_d, &
06408                               primitives, &
06409                               buffer1, buffer2)
06410 #endif
06411        CASE(4)
06412 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
06413         CALL contract_ddfg(work,&
06414                  nl_a, nl_b, nl_c, nl_d, &
06415                   sphi_a, sphi_b, sphi_c, sphi_d, &
06416                   primitives,&
06417                   buffer1,buffer2 )
06418 #else
06419         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
06420                               work, nl_a, nl_b, nl_c, nl_d, &
06421                               sphi_a, &
06422                               sphi_b, &
06423                               sphi_c, &
06424                               sphi_d, &
06425                               primitives, &
06426                               buffer1, buffer2)
06427 #endif
06428        CASE DEFAULT
06429         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
06430                               work, nl_a, nl_b, nl_c, nl_d, &
06431                               sphi_a, &
06432                               sphi_b, &
06433                               sphi_c, &
06434                               sphi_d, &
06435                               primitives, &
06436                               buffer1, buffer2)
06437        END SELECT
06438       CASE(4)
06439        SELECT CASE(n_d)
06440        CASE(0)
06441 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
06442         CALL contract_ddgs(work,&
06443                  nl_a, nl_b, nl_c, nl_d, &
06444                   sphi_a, sphi_b, sphi_c, sphi_d, &
06445                   primitives,&
06446                   buffer1,buffer2 )
06447 #else
06448         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
06449                               work, nl_a, nl_b, nl_c, nl_d, &
06450                               sphi_a, &
06451                               sphi_b, &
06452                               sphi_c, &
06453                               sphi_d, &
06454                               primitives, &
06455                               buffer1, buffer2)
06456 #endif
06457        CASE(1)
06458 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
06459         CALL contract_ddgp(work,&
06460                  nl_a, nl_b, nl_c, nl_d, &
06461                   sphi_a, sphi_b, sphi_c, sphi_d, &
06462                   primitives,&
06463                   buffer1,buffer2 )
06464 #else
06465         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
06466                               work, nl_a, nl_b, nl_c, nl_d, &
06467                               sphi_a, &
06468                               sphi_b, &
06469                               sphi_c, &
06470                               sphi_d, &
06471                               primitives, &
06472                               buffer1, buffer2)
06473 #endif
06474        CASE(2)
06475 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
06476         CALL contract_ddgd(work,&
06477                  nl_a, nl_b, nl_c, nl_d, &
06478                   sphi_a, sphi_b, sphi_c, sphi_d, &
06479                   primitives,&
06480                   buffer1,buffer2 )
06481 #else
06482         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
06483                               work, nl_a, nl_b, nl_c, nl_d, &
06484                               sphi_a, &
06485                               sphi_b, &
06486                               sphi_c, &
06487                               sphi_d, &
06488                               primitives, &
06489                               buffer1, buffer2)
06490 #endif
06491        CASE(3)
06492 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
06493         CALL contract_ddgf(work,&
06494                  nl_a, nl_b, nl_c, nl_d, &
06495                   sphi_a, sphi_b, sphi_c, sphi_d, &
06496                   primitives,&
06497                   buffer1,buffer2 )
06498 #else
06499         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
06500                               work, nl_a, nl_b, nl_c, nl_d, &
06501                               sphi_a, &
06502                               sphi_b, &
06503                               sphi_c, &
06504                               sphi_d, &
06505                               primitives, &
06506                               buffer1, buffer2)
06507 #endif
06508        CASE(4)
06509 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
06510         CALL contract_ddgg(work,&
06511                  nl_a, nl_b, nl_c, nl_d, &
06512                   sphi_a, sphi_b, sphi_c, sphi_d, &
06513                   primitives,&
06514                   buffer1,buffer2 )
06515 #else
06516         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
06517                               work, nl_a, nl_b, nl_c, nl_d, &
06518                               sphi_a, &
06519                               sphi_b, &
06520                               sphi_c, &
06521                               sphi_d, &
06522                               primitives, &
06523                               buffer1, buffer2)
06524 #endif
06525        CASE DEFAULT
06526         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
06527                               work, nl_a, nl_b, nl_c, nl_d, &
06528                               sphi_a, &
06529                               sphi_b, &
06530                               sphi_c, &
06531                               sphi_d, &
06532                               primitives, &
06533                               buffer1, buffer2)
06534        END SELECT
06535       CASE DEFAULT
06536        CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
06537                              work, nl_a, nl_b, nl_c, nl_d, &
06538                              sphi_a, &
06539                              sphi_b, &
06540                              sphi_c, &
06541                              sphi_d, &
06542                              primitives, &
06543                              buffer1, buffer2)
06544       END SELECT
06545      CASE(3)
06546       SELECT CASE(n_c)
06547       CASE(0)
06548        SELECT CASE(n_d)
06549        CASE(0)
06550 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
06551         CALL contract_dfss(work,&
06552                  nl_a, nl_b, nl_c, nl_d, &
06553                   sphi_a, sphi_b, sphi_c, sphi_d, &
06554                   primitives,&
06555                   buffer1,buffer2 )
06556 #else
06557         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
06558                               work, nl_a, nl_b, nl_c, nl_d, &
06559                               sphi_a, &
06560                               sphi_b, &
06561                               sphi_c, &
06562                               sphi_d, &
06563                               primitives, &
06564                               buffer1, buffer2)
06565 #endif
06566        CASE(1)
06567 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
06568         CALL contract_dfsp(work,&
06569                  nl_a, nl_b, nl_c, nl_d, &
06570                   sphi_a, sphi_b, sphi_c, sphi_d, &
06571                   primitives,&
06572                   buffer1,buffer2 )
06573 #else
06574         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
06575                               work, nl_a, nl_b, nl_c, nl_d, &
06576                               sphi_a, &
06577                               sphi_b, &
06578                               sphi_c, &
06579                               sphi_d, &
06580                               primitives, &
06581                               buffer1, buffer2)
06582 #endif
06583        CASE(2)
06584 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
06585         CALL contract_dfsd(work,&
06586                  nl_a, nl_b, nl_c, nl_d, &
06587                   sphi_a, sphi_b, sphi_c, sphi_d, &
06588                   primitives,&
06589                   buffer1,buffer2 )
06590 #else
06591         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
06592                               work, nl_a, nl_b, nl_c, nl_d, &
06593                               sphi_a, &
06594                               sphi_b, &
06595                               sphi_c, &
06596                               sphi_d, &
06597                               primitives, &
06598                               buffer1, buffer2)
06599 #endif
06600        CASE(3)
06601 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
06602         CALL contract_dfsf(work,&
06603                  nl_a, nl_b, nl_c, nl_d, &
06604                   sphi_a, sphi_b, sphi_c, sphi_d, &
06605                   primitives,&
06606                   buffer1,buffer2 )
06607 #else
06608         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
06609                               work, nl_a, nl_b, nl_c, nl_d, &
06610                               sphi_a, &
06611                               sphi_b, &
06612                               sphi_c, &
06613                               sphi_d, &
06614                               primitives, &
06615                               buffer1, buffer2)
06616 #endif
06617        CASE(4)
06618 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
06619         CALL contract_dfsg(work,&
06620                  nl_a, nl_b, nl_c, nl_d, &
06621                   sphi_a, sphi_b, sphi_c, sphi_d, &
06622                   primitives,&
06623                   buffer1,buffer2 )
06624 #else
06625         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
06626                               work, nl_a, nl_b, nl_c, nl_d, &
06627                               sphi_a, &
06628                               sphi_b, &
06629                               sphi_c, &
06630                               sphi_d, &
06631                               primitives, &
06632                               buffer1, buffer2)
06633 #endif
06634        CASE DEFAULT
06635         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
06636                               work, nl_a, nl_b, nl_c, nl_d, &
06637                               sphi_a, &
06638                               sphi_b, &
06639                               sphi_c, &
06640                               sphi_d, &
06641                               primitives, &
06642                               buffer1, buffer2)
06643        END SELECT
06644       CASE(1)
06645        SELECT CASE(n_d)
06646        CASE(0)
06647 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
06648         CALL contract_dfps(work,&
06649                  nl_a, nl_b, nl_c, nl_d, &
06650                   sphi_a, sphi_b, sphi_c, sphi_d, &
06651                   primitives,&
06652                   buffer1,buffer2 )
06653 #else
06654         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
06655                               work, nl_a, nl_b, nl_c, nl_d, &
06656                               sphi_a, &
06657                               sphi_b, &
06658                               sphi_c, &
06659                               sphi_d, &
06660                               primitives, &
06661                               buffer1, buffer2)
06662 #endif
06663        CASE(1)
06664 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
06665         CALL contract_dfpp(work,&
06666                  nl_a, nl_b, nl_c, nl_d, &
06667                   sphi_a, sphi_b, sphi_c, sphi_d, &
06668                   primitives,&
06669                   buffer1,buffer2 )
06670 #else
06671         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
06672                               work, nl_a, nl_b, nl_c, nl_d, &
06673                               sphi_a, &
06674                               sphi_b, &
06675                               sphi_c, &
06676                               sphi_d, &
06677                               primitives, &
06678                               buffer1, buffer2)
06679 #endif
06680        CASE(2)
06681 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
06682         CALL contract_dfpd(work,&
06683                  nl_a, nl_b, nl_c, nl_d, &
06684                   sphi_a, sphi_b, sphi_c, sphi_d, &
06685                   primitives,&
06686                   buffer1,buffer2 )
06687 #else
06688         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
06689                               work, nl_a, nl_b, nl_c, nl_d, &
06690                               sphi_a, &
06691                               sphi_b, &
06692                               sphi_c, &
06693                               sphi_d, &
06694                               primitives, &
06695                               buffer1, buffer2)
06696 #endif
06697        CASE(3)
06698 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
06699         CALL contract_dfpf(work,&
06700                  nl_a, nl_b, nl_c, nl_d, &
06701                   sphi_a, sphi_b, sphi_c, sphi_d, &
06702                   primitives,&
06703                   buffer1,buffer2 )
06704 #else
06705         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
06706                               work, nl_a, nl_b, nl_c, nl_d, &
06707                               sphi_a, &
06708                               sphi_b, &
06709                               sphi_c, &
06710                               sphi_d, &
06711                               primitives, &
06712                               buffer1, buffer2)
06713 #endif
06714        CASE(4)
06715 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
06716         CALL contract_dfpg(work,&
06717                  nl_a, nl_b, nl_c, nl_d, &
06718                   sphi_a, sphi_b, sphi_c, sphi_d, &
06719                   primitives,&
06720                   buffer1,buffer2 )
06721 #else
06722         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
06723                               work, nl_a, nl_b, nl_c, nl_d, &
06724                               sphi_a, &
06725                               sphi_b, &
06726                               sphi_c, &
06727                               sphi_d, &
06728                               primitives, &
06729                               buffer1, buffer2)
06730 #endif
06731        CASE DEFAULT
06732         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
06733                               work, nl_a, nl_b, nl_c, nl_d, &
06734                               sphi_a, &
06735                               sphi_b, &
06736                               sphi_c, &
06737                               sphi_d, &
06738                               primitives, &
06739                               buffer1, buffer2)
06740        END SELECT
06741       CASE(2)
06742        SELECT CASE(n_d)
06743        CASE(0)
06744 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
06745         CALL contract_dfds(work,&
06746                  nl_a, nl_b, nl_c, nl_d, &
06747                   sphi_a, sphi_b, sphi_c, sphi_d, &
06748                   primitives,&
06749                   buffer1,buffer2 )
06750 #else
06751         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
06752                               work, nl_a, nl_b, nl_c, nl_d, &
06753                               sphi_a, &
06754                               sphi_b, &
06755                               sphi_c, &
06756                               sphi_d, &
06757                               primitives, &
06758                               buffer1, buffer2)
06759 #endif
06760        CASE(1)
06761 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
06762         CALL contract_dfdp(work,&
06763                  nl_a, nl_b, nl_c, nl_d, &
06764                   sphi_a, sphi_b, sphi_c, sphi_d, &
06765                   primitives,&
06766                   buffer1,buffer2 )
06767 #else
06768         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
06769                               work, nl_a, nl_b, nl_c, nl_d, &
06770                               sphi_a, &
06771                               sphi_b, &
06772                               sphi_c, &
06773                               sphi_d, &
06774                               primitives, &
06775                               buffer1, buffer2)
06776 #endif
06777        CASE(2)
06778 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
06779         CALL contract_dfdd(work,&
06780                  nl_a, nl_b, nl_c, nl_d, &
06781                   sphi_a, sphi_b, sphi_c, sphi_d, &
06782                   primitives,&
06783                   buffer1,buffer2 )
06784 #else
06785         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
06786                               work, nl_a, nl_b, nl_c, nl_d, &
06787                               sphi_a, &
06788                               sphi_b, &
06789                               sphi_c, &
06790                               sphi_d, &
06791                               primitives, &
06792                               buffer1, buffer2)
06793 #endif
06794        CASE(3)
06795 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
06796         CALL contract_dfdf(work,&
06797                  nl_a, nl_b, nl_c, nl_d, &
06798                   sphi_a, sphi_b, sphi_c, sphi_d, &
06799                   primitives,&
06800                   buffer1,buffer2 )
06801 #else
06802         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
06803                               work, nl_a, nl_b, nl_c, nl_d, &
06804                               sphi_a, &
06805                               sphi_b, &
06806                               sphi_c, &
06807                               sphi_d, &
06808                               primitives, &
06809                               buffer1, buffer2)
06810 #endif
06811        CASE(4)
06812 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
06813         CALL contract_dfdg(work,&
06814                  nl_a, nl_b, nl_c, nl_d, &
06815                   sphi_a, sphi_b, sphi_c, sphi_d, &
06816                   primitives,&
06817                   buffer1,buffer2 )
06818 #else
06819         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
06820                               work, nl_a, nl_b, nl_c, nl_d, &
06821                               sphi_a, &
06822                               sphi_b, &
06823                               sphi_c, &
06824                               sphi_d, &
06825                               primitives, &
06826                               buffer1, buffer2)
06827 #endif
06828        CASE DEFAULT
06829         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
06830                               work, nl_a, nl_b, nl_c, nl_d, &
06831                               sphi_a, &
06832                               sphi_b, &
06833                               sphi_c, &
06834                               sphi_d, &
06835                               primitives, &
06836                               buffer1, buffer2)
06837        END SELECT
06838       CASE(3)
06839        SELECT CASE(n_d)
06840        CASE(0)
06841 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
06842         CALL contract_dffs(work,&
06843                  nl_a, nl_b, nl_c, nl_d, &
06844                   sphi_a, sphi_b, sphi_c, sphi_d, &
06845                   primitives,&
06846                   buffer1,buffer2 )
06847 #else
06848         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
06849                               work, nl_a, nl_b, nl_c, nl_d, &
06850                               sphi_a, &
06851                               sphi_b, &
06852                               sphi_c, &
06853                               sphi_d, &
06854                               primitives, &
06855                               buffer1, buffer2)
06856 #endif
06857        CASE(1)
06858 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
06859         CALL contract_dffp(work,&
06860                  nl_a, nl_b, nl_c, nl_d, &
06861                   sphi_a, sphi_b, sphi_c, sphi_d, &
06862                   primitives,&
06863                   buffer1,buffer2 )
06864 #else
06865         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
06866                               work, nl_a, nl_b, nl_c, nl_d, &
06867                               sphi_a, &
06868                               sphi_b, &
06869                               sphi_c, &
06870                               sphi_d, &
06871                               primitives, &
06872                               buffer1, buffer2)
06873 #endif
06874        CASE(2)
06875 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
06876         CALL contract_dffd(work,&
06877                  nl_a, nl_b, nl_c, nl_d, &
06878                   sphi_a, sphi_b, sphi_c, sphi_d, &
06879                   primitives,&
06880                   buffer1,buffer2 )
06881 #else
06882         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
06883                               work, nl_a, nl_b, nl_c, nl_d, &
06884                               sphi_a, &
06885                               sphi_b, &
06886                               sphi_c, &
06887                               sphi_d, &
06888                               primitives, &
06889                               buffer1, buffer2)
06890 #endif
06891        CASE(3)
06892 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
06893         CALL contract_dfff(work,&
06894                  nl_a, nl_b, nl_c, nl_d, &
06895                   sphi_a, sphi_b, sphi_c, sphi_d, &
06896                   primitives,&
06897                   buffer1,buffer2 )
06898 #else
06899         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
06900                               work, nl_a, nl_b, nl_c, nl_d, &
06901                               sphi_a, &
06902                               sphi_b, &
06903                               sphi_c, &
06904                               sphi_d, &
06905                               primitives, &
06906                               buffer1, buffer2)
06907 #endif
06908        CASE(4)
06909 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
06910         CALL contract_dffg(work,&
06911                  nl_a, nl_b, nl_c, nl_d, &
06912                   sphi_a, sphi_b, sphi_c, sphi_d, &
06913                   primitives,&
06914                   buffer1,buffer2 )
06915 #else
06916         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
06917                               work, nl_a, nl_b, nl_c, nl_d, &
06918                               sphi_a, &
06919                               sphi_b, &
06920                               sphi_c, &
06921                               sphi_d, &
06922                               primitives, &
06923                               buffer1, buffer2)
06924 #endif
06925        CASE DEFAULT
06926         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
06927                               work, nl_a, nl_b, nl_c, nl_d, &
06928                               sphi_a, &
06929                               sphi_b, &
06930                               sphi_c, &
06931                               sphi_d, &
06932                               primitives, &
06933                               buffer1, buffer2)
06934        END SELECT
06935       CASE(4)
06936        SELECT CASE(n_d)
06937        CASE(0)
06938 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
06939         CALL contract_dfgs(work,&
06940                  nl_a, nl_b, nl_c, nl_d, &
06941                   sphi_a, sphi_b, sphi_c, sphi_d, &
06942                   primitives,&
06943                   buffer1,buffer2 )
06944 #else
06945         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
06946                               work, nl_a, nl_b, nl_c, nl_d, &
06947                               sphi_a, &
06948                               sphi_b, &
06949                               sphi_c, &
06950                               sphi_d, &
06951                               primitives, &
06952                               buffer1, buffer2)
06953 #endif
06954        CASE(1)
06955 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
06956         CALL contract_dfgp(work,&
06957                  nl_a, nl_b, nl_c, nl_d, &
06958                   sphi_a, sphi_b, sphi_c, sphi_d, &
06959                   primitives,&
06960                   buffer1,buffer2 )
06961 #else
06962         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
06963                               work, nl_a, nl_b, nl_c, nl_d, &
06964                               sphi_a, &
06965                               sphi_b, &
06966                               sphi_c, &
06967                               sphi_d, &
06968                               primitives, &
06969                               buffer1, buffer2)
06970 #endif
06971        CASE(2)
06972 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
06973         CALL contract_dfgd(work,&
06974                  nl_a, nl_b, nl_c, nl_d, &
06975                   sphi_a, sphi_b, sphi_c, sphi_d, &
06976                   primitives,&
06977                   buffer1,buffer2 )
06978 #else
06979         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
06980                               work, nl_a, nl_b, nl_c, nl_d, &
06981                               sphi_a, &
06982                               sphi_b, &
06983                               sphi_c, &
06984                               sphi_d, &
06985                               primitives, &
06986                               buffer1, buffer2)
06987 #endif
06988        CASE(3)
06989 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
06990         CALL contract_dfgf(work,&
06991                  nl_a, nl_b, nl_c, nl_d, &
06992                   sphi_a, sphi_b, sphi_c, sphi_d, &
06993                   primitives,&
06994                   buffer1,buffer2 )
06995 #else
06996         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
06997                               work, nl_a, nl_b, nl_c, nl_d, &
06998                               sphi_a, &
06999                               sphi_b, &
07000                               sphi_c, &
07001                               sphi_d, &
07002                               primitives, &
07003                               buffer1, buffer2)
07004 #endif
07005        CASE(4)
07006 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
07007         CALL contract_dfgg(work,&
07008                  nl_a, nl_b, nl_c, nl_d, &
07009                   sphi_a, sphi_b, sphi_c, sphi_d, &
07010                   primitives,&
07011                   buffer1,buffer2 )
07012 #else
07013         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
07014                               work, nl_a, nl_b, nl_c, nl_d, &
07015                               sphi_a, &
07016                               sphi_b, &
07017                               sphi_c, &
07018                               sphi_d, &
07019                               primitives, &
07020                               buffer1, buffer2)
07021 #endif
07022        CASE DEFAULT
07023         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
07024                               work, nl_a, nl_b, nl_c, nl_d, &
07025                               sphi_a, &
07026                               sphi_b, &
07027                               sphi_c, &
07028                               sphi_d, &
07029                               primitives, &
07030                               buffer1, buffer2)
07031        END SELECT
07032       CASE DEFAULT
07033        CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
07034                              work, nl_a, nl_b, nl_c, nl_d, &
07035                              sphi_a, &
07036                              sphi_b, &
07037                              sphi_c, &
07038                              sphi_d, &
07039                              primitives, &
07040                              buffer1, buffer2)
07041       END SELECT
07042      CASE(4)
07043       SELECT CASE(n_c)
07044       CASE(0)
07045        SELECT CASE(n_d)
07046        CASE(0)
07047 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
07048         CALL contract_dgss(work,&
07049                  nl_a, nl_b, nl_c, nl_d, &
07050                   sphi_a, sphi_b, sphi_c, sphi_d, &
07051                   primitives,&
07052                   buffer1,buffer2 )
07053 #else
07054         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
07055                               work, nl_a, nl_b, nl_c, nl_d, &
07056                               sphi_a, &
07057                               sphi_b, &
07058                               sphi_c, &
07059                               sphi_d, &
07060                               primitives, &
07061                               buffer1, buffer2)
07062 #endif
07063        CASE(1)
07064 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
07065         CALL contract_dgsp(work,&
07066                  nl_a, nl_b, nl_c, nl_d, &
07067                   sphi_a, sphi_b, sphi_c, sphi_d, &
07068                   primitives,&
07069                   buffer1,buffer2 )
07070 #else
07071         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
07072                               work, nl_a, nl_b, nl_c, nl_d, &
07073                               sphi_a, &
07074                               sphi_b, &
07075                               sphi_c, &
07076                               sphi_d, &
07077                               primitives, &
07078                               buffer1, buffer2)
07079 #endif
07080        CASE(2)
07081 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
07082         CALL contract_dgsd(work,&
07083                  nl_a, nl_b, nl_c, nl_d, &
07084                   sphi_a, sphi_b, sphi_c, sphi_d, &
07085                   primitives,&
07086                   buffer1,buffer2 )
07087 #else
07088         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
07089                               work, nl_a, nl_b, nl_c, nl_d, &
07090                               sphi_a, &
07091                               sphi_b, &
07092                               sphi_c, &
07093                               sphi_d, &
07094                               primitives, &
07095                               buffer1, buffer2)
07096 #endif
07097        CASE(3)
07098 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
07099         CALL contract_dgsf(work,&
07100                  nl_a, nl_b, nl_c, nl_d, &
07101                   sphi_a, sphi_b, sphi_c, sphi_d, &
07102                   primitives,&
07103                   buffer1,buffer2 )
07104 #else
07105         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
07106                               work, nl_a, nl_b, nl_c, nl_d, &
07107                               sphi_a, &
07108                               sphi_b, &
07109                               sphi_c, &
07110                               sphi_d, &
07111                               primitives, &
07112                               buffer1, buffer2)
07113 #endif
07114        CASE(4)
07115 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
07116         CALL contract_dgsg(work,&
07117                  nl_a, nl_b, nl_c, nl_d, &
07118                   sphi_a, sphi_b, sphi_c, sphi_d, &
07119                   primitives,&
07120                   buffer1,buffer2 )
07121 #else
07122         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
07123                               work, nl_a, nl_b, nl_c, nl_d, &
07124                               sphi_a, &
07125                               sphi_b, &
07126                               sphi_c, &
07127                               sphi_d, &
07128                               primitives, &
07129                               buffer1, buffer2)
07130 #endif
07131        CASE DEFAULT
07132         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
07133                               work, nl_a, nl_b, nl_c, nl_d, &
07134                               sphi_a, &
07135                               sphi_b, &
07136                               sphi_c, &
07137                               sphi_d, &
07138                               primitives, &
07139                               buffer1, buffer2)
07140        END SELECT
07141       CASE(1)
07142        SELECT CASE(n_d)
07143        CASE(0)
07144 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
07145         CALL contract_dgps(work,&
07146                  nl_a, nl_b, nl_c, nl_d, &
07147                   sphi_a, sphi_b, sphi_c, sphi_d, &
07148                   primitives,&
07149                   buffer1,buffer2 )
07150 #else
07151         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
07152                               work, nl_a, nl_b, nl_c, nl_d, &
07153                               sphi_a, &
07154                               sphi_b, &
07155                               sphi_c, &
07156                               sphi_d, &
07157                               primitives, &
07158                               buffer1, buffer2)
07159 #endif
07160        CASE(1)
07161 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
07162         CALL contract_dgpp(work,&
07163                  nl_a, nl_b, nl_c, nl_d, &
07164                   sphi_a, sphi_b, sphi_c, sphi_d, &
07165                   primitives,&
07166                   buffer1,buffer2 )
07167 #else
07168         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
07169                               work, nl_a, nl_b, nl_c, nl_d, &
07170                               sphi_a, &
07171                               sphi_b, &
07172                               sphi_c, &
07173                               sphi_d, &
07174                               primitives, &
07175                               buffer1, buffer2)
07176 #endif
07177        CASE(2)
07178 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
07179         CALL contract_dgpd(work,&
07180                  nl_a, nl_b, nl_c, nl_d, &
07181                   sphi_a, sphi_b, sphi_c, sphi_d, &
07182                   primitives,&
07183                   buffer1,buffer2 )
07184 #else
07185         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
07186                               work, nl_a, nl_b, nl_c, nl_d, &
07187                               sphi_a, &
07188                               sphi_b, &
07189                               sphi_c, &
07190                               sphi_d, &
07191                               primitives, &
07192                               buffer1, buffer2)
07193 #endif
07194        CASE(3)
07195 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
07196         CALL contract_dgpf(work,&
07197                  nl_a, nl_b, nl_c, nl_d, &
07198                   sphi_a, sphi_b, sphi_c, sphi_d, &
07199                   primitives,&
07200                   buffer1,buffer2 )
07201 #else
07202         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
07203                               work, nl_a, nl_b, nl_c, nl_d, &
07204                               sphi_a, &
07205                               sphi_b, &
07206                               sphi_c, &
07207                               sphi_d, &
07208                               primitives, &
07209                               buffer1, buffer2)
07210 #endif
07211        CASE(4)
07212 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
07213         CALL contract_dgpg(work,&
07214                  nl_a, nl_b, nl_c, nl_d, &
07215                   sphi_a, sphi_b, sphi_c, sphi_d, &
07216                   primitives,&
07217                   buffer1,buffer2 )
07218 #else
07219         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
07220                               work, nl_a, nl_b, nl_c, nl_d, &
07221                               sphi_a, &
07222                               sphi_b, &
07223                               sphi_c, &
07224                               sphi_d, &
07225                               primitives, &
07226                               buffer1, buffer2)
07227 #endif
07228        CASE DEFAULT
07229         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
07230                               work, nl_a, nl_b, nl_c, nl_d, &
07231                               sphi_a, &
07232                               sphi_b, &
07233                               sphi_c, &
07234                               sphi_d, &
07235                               primitives, &
07236                               buffer1, buffer2)
07237        END SELECT
07238       CASE(2)
07239        SELECT CASE(n_d)
07240        CASE(0)
07241 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
07242         CALL contract_dgds(work,&
07243                  nl_a, nl_b, nl_c, nl_d, &
07244                   sphi_a, sphi_b, sphi_c, sphi_d, &
07245                   primitives,&
07246                   buffer1,buffer2 )
07247 #else
07248         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
07249                               work, nl_a, nl_b, nl_c, nl_d, &
07250                               sphi_a, &
07251                               sphi_b, &
07252                               sphi_c, &
07253                               sphi_d, &
07254                               primitives, &
07255                               buffer1, buffer2)
07256 #endif
07257        CASE(1)
07258 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
07259         CALL contract_dgdp(work,&
07260                  nl_a, nl_b, nl_c, nl_d, &
07261                   sphi_a, sphi_b, sphi_c, sphi_d, &
07262                   primitives,&
07263                   buffer1,buffer2 )
07264 #else
07265         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
07266                               work, nl_a, nl_b, nl_c, nl_d, &
07267                               sphi_a, &
07268                               sphi_b, &
07269                               sphi_c, &
07270                               sphi_d, &
07271                               primitives, &
07272                               buffer1, buffer2)
07273 #endif
07274        CASE(2)
07275 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
07276         CALL contract_dgdd(work,&
07277                  nl_a, nl_b, nl_c, nl_d, &
07278                   sphi_a, sphi_b, sphi_c, sphi_d, &
07279                   primitives,&
07280                   buffer1,buffer2 )
07281 #else
07282         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
07283                               work, nl_a, nl_b, nl_c, nl_d, &
07284                               sphi_a, &
07285                               sphi_b, &
07286                               sphi_c, &
07287                               sphi_d, &
07288                               primitives, &
07289                               buffer1, buffer2)
07290 #endif
07291        CASE(3)
07292 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
07293         CALL contract_dgdf(work,&
07294                  nl_a, nl_b, nl_c, nl_d, &
07295                   sphi_a, sphi_b, sphi_c, sphi_d, &
07296                   primitives,&
07297                   buffer1,buffer2 )
07298 #else
07299         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
07300                               work, nl_a, nl_b, nl_c, nl_d, &
07301                               sphi_a, &
07302                               sphi_b, &
07303                               sphi_c, &
07304                               sphi_d, &
07305                               primitives, &
07306                               buffer1, buffer2)
07307 #endif
07308        CASE(4)
07309 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
07310         CALL contract_dgdg(work,&
07311                  nl_a, nl_b, nl_c, nl_d, &
07312                   sphi_a, sphi_b, sphi_c, sphi_d, &
07313                   primitives,&
07314                   buffer1,buffer2 )
07315 #else
07316         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
07317                               work, nl_a, nl_b, nl_c, nl_d, &
07318                               sphi_a, &
07319                               sphi_b, &
07320                               sphi_c, &
07321                               sphi_d, &
07322                               primitives, &
07323                               buffer1, buffer2)
07324 #endif
07325        CASE DEFAULT
07326         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
07327                               work, nl_a, nl_b, nl_c, nl_d, &
07328                               sphi_a, &
07329                               sphi_b, &
07330                               sphi_c, &
07331                               sphi_d, &
07332                               primitives, &
07333                               buffer1, buffer2)
07334        END SELECT
07335       CASE(3)
07336        SELECT CASE(n_d)
07337        CASE(0)
07338 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
07339         CALL contract_dgfs(work,&
07340                  nl_a, nl_b, nl_c, nl_d, &
07341                   sphi_a, sphi_b, sphi_c, sphi_d, &
07342                   primitives,&
07343                   buffer1,buffer2 )
07344 #else
07345         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
07346                               work, nl_a, nl_b, nl_c, nl_d, &
07347                               sphi_a, &
07348                               sphi_b, &
07349                               sphi_c, &
07350                               sphi_d, &
07351                               primitives, &
07352                               buffer1, buffer2)
07353 #endif
07354        CASE(1)
07355 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
07356         CALL contract_dgfp(work,&
07357                  nl_a, nl_b, nl_c, nl_d, &
07358                   sphi_a, sphi_b, sphi_c, sphi_d, &
07359                   primitives,&
07360                   buffer1,buffer2 )
07361 #else
07362         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
07363                               work, nl_a, nl_b, nl_c, nl_d, &
07364                               sphi_a, &
07365                               sphi_b, &
07366                               sphi_c, &
07367                               sphi_d, &
07368                               primitives, &
07369                               buffer1, buffer2)
07370 #endif
07371        CASE(2)
07372 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
07373         CALL contract_dgfd(work,&
07374                  nl_a, nl_b, nl_c, nl_d, &
07375                   sphi_a, sphi_b, sphi_c, sphi_d, &
07376                   primitives,&
07377                   buffer1,buffer2 )
07378 #else
07379         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
07380                               work, nl_a, nl_b, nl_c, nl_d, &
07381                               sphi_a, &
07382                               sphi_b, &
07383                               sphi_c, &
07384                               sphi_d, &
07385                               primitives, &
07386                               buffer1, buffer2)
07387 #endif
07388        CASE(3)
07389 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
07390         CALL contract_dgff(work,&
07391                  nl_a, nl_b, nl_c, nl_d, &
07392                   sphi_a, sphi_b, sphi_c, sphi_d, &
07393                   primitives,&
07394                   buffer1,buffer2 )
07395 #else
07396         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
07397                               work, nl_a, nl_b, nl_c, nl_d, &
07398                               sphi_a, &
07399                               sphi_b, &
07400                               sphi_c, &
07401                               sphi_d, &
07402                               primitives, &
07403                               buffer1, buffer2)
07404 #endif
07405        CASE(4)
07406 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
07407         CALL contract_dgfg(work,&
07408                  nl_a, nl_b, nl_c, nl_d, &
07409                   sphi_a, sphi_b, sphi_c, sphi_d, &
07410                   primitives,&
07411                   buffer1,buffer2 )
07412 #else
07413         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
07414                               work, nl_a, nl_b, nl_c, nl_d, &
07415                               sphi_a, &
07416                               sphi_b, &
07417                               sphi_c, &
07418                               sphi_d, &
07419                               primitives, &
07420                               buffer1, buffer2)
07421 #endif
07422        CASE DEFAULT
07423         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
07424                               work, nl_a, nl_b, nl_c, nl_d, &
07425                               sphi_a, &
07426                               sphi_b, &
07427                               sphi_c, &
07428                               sphi_d, &
07429                               primitives, &
07430                               buffer1, buffer2)
07431        END SELECT
07432       CASE(4)
07433        SELECT CASE(n_d)
07434        CASE(0)
07435 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
07436         CALL contract_dggs(work,&
07437                  nl_a, nl_b, nl_c, nl_d, &
07438                   sphi_a, sphi_b, sphi_c, sphi_d, &
07439                   primitives,&
07440                   buffer1,buffer2 )
07441 #else
07442         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
07443                               work, nl_a, nl_b, nl_c, nl_d, &
07444                               sphi_a, &
07445                               sphi_b, &
07446                               sphi_c, &
07447                               sphi_d, &
07448                               primitives, &
07449                               buffer1, buffer2)
07450 #endif
07451        CASE(1)
07452 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
07453         CALL contract_dggp(work,&
07454                  nl_a, nl_b, nl_c, nl_d, &
07455                   sphi_a, sphi_b, sphi_c, sphi_d, &
07456                   primitives,&
07457                   buffer1,buffer2 )
07458 #else
07459         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
07460                               work, nl_a, nl_b, nl_c, nl_d, &
07461                               sphi_a, &
07462                               sphi_b, &
07463                               sphi_c, &
07464                               sphi_d, &
07465                               primitives, &
07466                               buffer1, buffer2)
07467 #endif
07468        CASE(2)
07469 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
07470         CALL contract_dggd(work,&
07471                  nl_a, nl_b, nl_c, nl_d, &
07472                   sphi_a, sphi_b, sphi_c, sphi_d, &
07473                   primitives,&
07474                   buffer1,buffer2 )
07475 #else
07476         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
07477                               work, nl_a, nl_b, nl_c, nl_d, &
07478                               sphi_a, &
07479                               sphi_b, &
07480                               sphi_c, &
07481                               sphi_d, &
07482                               primitives, &
07483                               buffer1, buffer2)
07484 #endif
07485        CASE(3)
07486 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
07487         CALL contract_dggf(work,&
07488                  nl_a, nl_b, nl_c, nl_d, &
07489                   sphi_a, sphi_b, sphi_c, sphi_d, &
07490                   primitives,&
07491                   buffer1,buffer2 )
07492 #else
07493         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
07494                               work, nl_a, nl_b, nl_c, nl_d, &
07495                               sphi_a, &
07496                               sphi_b, &
07497                               sphi_c, &
07498                               sphi_d, &
07499                               primitives, &
07500                               buffer1, buffer2)
07501 #endif
07502        CASE(4)
07503 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
07504         CALL contract_dggg(work,&
07505                  nl_a, nl_b, nl_c, nl_d, &
07506                   sphi_a, sphi_b, sphi_c, sphi_d, &
07507                   primitives,&
07508                   buffer1,buffer2 )
07509 #else
07510         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
07511                               work, nl_a, nl_b, nl_c, nl_d, &
07512                               sphi_a, &
07513                               sphi_b, &
07514                               sphi_c, &
07515                               sphi_d, &
07516                               primitives, &
07517                               buffer1, buffer2)
07518 #endif
07519        CASE DEFAULT
07520         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
07521                               work, nl_a, nl_b, nl_c, nl_d, &
07522                               sphi_a, &
07523                               sphi_b, &
07524                               sphi_c, &
07525                               sphi_d, &
07526                               primitives, &
07527                               buffer1, buffer2)
07528        END SELECT
07529       CASE DEFAULT
07530        CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
07531                              work, nl_a, nl_b, nl_c, nl_d, &
07532                              sphi_a, &
07533                              sphi_b, &
07534                              sphi_c, &
07535                              sphi_d, &
07536                              primitives, &
07537                              buffer1, buffer2)
07538       END SELECT
07539      CASE DEFAULT
07540       CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
07541                             work, nl_a, nl_b, nl_c, nl_d, &
07542                             sphi_a, &
07543                             sphi_b, &
07544                             sphi_c, &
07545                             sphi_d, &
07546                             primitives, &
07547                             buffer1, buffer2)
07548      END SELECT
07549     CASE(3)
07550      SELECT CASE(n_b)
07551      CASE(0)
07552       SELECT CASE(n_c)
07553       CASE(0)
07554        SELECT CASE(n_d)
07555        CASE(0)
07556 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
07557         CALL contract_fsss(work,&
07558                  nl_a, nl_b, nl_c, nl_d, &
07559                   sphi_a, sphi_b, sphi_c, sphi_d, &
07560                   primitives,&
07561                   buffer1,buffer2 )
07562 #else
07563         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
07564                               work, nl_a, nl_b, nl_c, nl_d, &
07565                               sphi_a, &
07566                               sphi_b, &
07567                               sphi_c, &
07568                               sphi_d, &
07569                               primitives, &
07570                               buffer1, buffer2)
07571 #endif
07572        CASE(1)
07573 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
07574         CALL contract_fssp(work,&
07575                  nl_a, nl_b, nl_c, nl_d, &
07576                   sphi_a, sphi_b, sphi_c, sphi_d, &
07577                   primitives,&
07578                   buffer1,buffer2 )
07579 #else
07580         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
07581                               work, nl_a, nl_b, nl_c, nl_d, &
07582                               sphi_a, &
07583                               sphi_b, &
07584                               sphi_c, &
07585                               sphi_d, &
07586                               primitives, &
07587                               buffer1, buffer2)
07588 #endif
07589        CASE(2)
07590 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
07591         CALL contract_fssd(work,&
07592                  nl_a, nl_b, nl_c, nl_d, &
07593                   sphi_a, sphi_b, sphi_c, sphi_d, &
07594                   primitives,&
07595                   buffer1,buffer2 )
07596 #else
07597         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
07598                               work, nl_a, nl_b, nl_c, nl_d, &
07599                               sphi_a, &
07600                               sphi_b, &
07601                               sphi_c, &
07602                               sphi_d, &
07603                               primitives, &
07604                               buffer1, buffer2)
07605 #endif
07606        CASE(3)
07607 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
07608         CALL contract_fssf(work,&
07609                  nl_a, nl_b, nl_c, nl_d, &
07610                   sphi_a, sphi_b, sphi_c, sphi_d, &
07611                   primitives,&
07612                   buffer1,buffer2 )
07613 #else
07614         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
07615                               work, nl_a, nl_b, nl_c, nl_d, &
07616                               sphi_a, &
07617                               sphi_b, &
07618                               sphi_c, &
07619                               sphi_d, &
07620                               primitives, &
07621                               buffer1, buffer2)
07622 #endif
07623        CASE(4)
07624 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
07625         CALL contract_fssg(work,&
07626                  nl_a, nl_b, nl_c, nl_d, &
07627                   sphi_a, sphi_b, sphi_c, sphi_d, &
07628                   primitives,&
07629                   buffer1,buffer2 )
07630 #else
07631         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
07632                               work, nl_a, nl_b, nl_c, nl_d, &
07633                               sphi_a, &
07634                               sphi_b, &
07635                               sphi_c, &
07636                               sphi_d, &
07637                               primitives, &
07638                               buffer1, buffer2)
07639 #endif
07640        CASE DEFAULT
07641         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
07642                               work, nl_a, nl_b, nl_c, nl_d, &
07643                               sphi_a, &
07644                               sphi_b, &
07645                               sphi_c, &
07646                               sphi_d, &
07647                               primitives, &
07648                               buffer1, buffer2)
07649        END SELECT
07650       CASE(1)
07651        SELECT CASE(n_d)
07652        CASE(0)
07653 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
07654         CALL contract_fsps(work,&
07655                  nl_a, nl_b, nl_c, nl_d, &
07656                   sphi_a, sphi_b, sphi_c, sphi_d, &
07657                   primitives,&
07658                   buffer1,buffer2 )
07659 #else
07660         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
07661                               work, nl_a, nl_b, nl_c, nl_d, &
07662                               sphi_a, &
07663                               sphi_b, &
07664                               sphi_c, &
07665                               sphi_d, &
07666                               primitives, &
07667                               buffer1, buffer2)
07668 #endif
07669        CASE(1)
07670 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
07671         CALL contract_fspp(work,&
07672                  nl_a, nl_b, nl_c, nl_d, &
07673                   sphi_a, sphi_b, sphi_c, sphi_d, &
07674                   primitives,&
07675                   buffer1,buffer2 )
07676 #else
07677         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
07678                               work, nl_a, nl_b, nl_c, nl_d, &
07679                               sphi_a, &
07680                               sphi_b, &
07681                               sphi_c, &
07682                               sphi_d, &
07683                               primitives, &
07684                               buffer1, buffer2)
07685 #endif
07686        CASE(2)
07687 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
07688         CALL contract_fspd(work,&
07689                  nl_a, nl_b, nl_c, nl_d, &
07690                   sphi_a, sphi_b, sphi_c, sphi_d, &
07691                   primitives,&
07692                   buffer1,buffer2 )
07693 #else
07694         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
07695                               work, nl_a, nl_b, nl_c, nl_d, &
07696                               sphi_a, &
07697                               sphi_b, &
07698                               sphi_c, &
07699                               sphi_d, &
07700                               primitives, &
07701                               buffer1, buffer2)
07702 #endif
07703        CASE(3)
07704 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
07705         CALL contract_fspf(work,&
07706                  nl_a, nl_b, nl_c, nl_d, &
07707                   sphi_a, sphi_b, sphi_c, sphi_d, &
07708                   primitives,&
07709                   buffer1,buffer2 )
07710 #else
07711         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
07712                               work, nl_a, nl_b, nl_c, nl_d, &
07713                               sphi_a, &
07714                               sphi_b, &
07715                               sphi_c, &
07716                               sphi_d, &
07717                               primitives, &
07718                               buffer1, buffer2)
07719 #endif
07720        CASE(4)
07721 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
07722         CALL contract_fspg(work,&
07723                  nl_a, nl_b, nl_c, nl_d, &
07724                   sphi_a, sphi_b, sphi_c, sphi_d, &
07725                   primitives,&
07726                   buffer1,buffer2 )
07727 #else
07728         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
07729                               work, nl_a, nl_b, nl_c, nl_d, &
07730                               sphi_a, &
07731                               sphi_b, &
07732                               sphi_c, &
07733                               sphi_d, &
07734                               primitives, &
07735                               buffer1, buffer2)
07736 #endif
07737        CASE DEFAULT
07738         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
07739                               work, nl_a, nl_b, nl_c, nl_d, &
07740                               sphi_a, &
07741                               sphi_b, &
07742                               sphi_c, &
07743                               sphi_d, &
07744                               primitives, &
07745                               buffer1, buffer2)
07746        END SELECT
07747       CASE(2)
07748        SELECT CASE(n_d)
07749        CASE(0)
07750 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
07751         CALL contract_fsds(work,&
07752                  nl_a, nl_b, nl_c, nl_d, &
07753                   sphi_a, sphi_b, sphi_c, sphi_d, &
07754                   primitives,&
07755                   buffer1,buffer2 )
07756 #else
07757         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
07758                               work, nl_a, nl_b, nl_c, nl_d, &
07759                               sphi_a, &
07760                               sphi_b, &
07761                               sphi_c, &
07762                               sphi_d, &
07763                               primitives, &
07764                               buffer1, buffer2)
07765 #endif
07766        CASE(1)
07767 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
07768         CALL contract_fsdp(work,&
07769                  nl_a, nl_b, nl_c, nl_d, &
07770                   sphi_a, sphi_b, sphi_c, sphi_d, &
07771                   primitives,&
07772                   buffer1,buffer2 )
07773 #else
07774         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
07775                               work, nl_a, nl_b, nl_c, nl_d, &
07776                               sphi_a, &
07777                               sphi_b, &
07778                               sphi_c, &
07779                               sphi_d, &
07780                               primitives, &
07781                               buffer1, buffer2)
07782 #endif
07783        CASE(2)
07784 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
07785         CALL contract_fsdd(work,&
07786                  nl_a, nl_b, nl_c, nl_d, &
07787                   sphi_a, sphi_b, sphi_c, sphi_d, &
07788                   primitives,&
07789                   buffer1,buffer2 )
07790 #else
07791         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
07792                               work, nl_a, nl_b, nl_c, nl_d, &
07793                               sphi_a, &
07794                               sphi_b, &
07795                               sphi_c, &
07796                               sphi_d, &
07797                               primitives, &
07798                               buffer1, buffer2)
07799 #endif
07800        CASE(3)
07801 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
07802         CALL contract_fsdf(work,&
07803                  nl_a, nl_b, nl_c, nl_d, &
07804                   sphi_a, sphi_b, sphi_c, sphi_d, &
07805                   primitives,&
07806                   buffer1,buffer2 )
07807 #else
07808         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
07809                               work, nl_a, nl_b, nl_c, nl_d, &
07810                               sphi_a, &
07811                               sphi_b, &
07812                               sphi_c, &
07813                               sphi_d, &
07814                               primitives, &
07815                               buffer1, buffer2)
07816 #endif
07817        CASE(4)
07818 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
07819         CALL contract_fsdg(work,&
07820                  nl_a, nl_b, nl_c, nl_d, &
07821                   sphi_a, sphi_b, sphi_c, sphi_d, &
07822                   primitives,&
07823                   buffer1,buffer2 )
07824 #else
07825         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
07826                               work, nl_a, nl_b, nl_c, nl_d, &
07827                               sphi_a, &
07828                               sphi_b, &
07829                               sphi_c, &
07830                               sphi_d, &
07831                               primitives, &
07832                               buffer1, buffer2)
07833 #endif
07834        CASE DEFAULT
07835         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
07836                               work, nl_a, nl_b, nl_c, nl_d, &
07837                               sphi_a, &
07838                               sphi_b, &
07839                               sphi_c, &
07840                               sphi_d, &
07841                               primitives, &
07842                               buffer1, buffer2)
07843        END SELECT
07844       CASE(3)
07845        SELECT CASE(n_d)
07846        CASE(0)
07847 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
07848         CALL contract_fsfs(work,&
07849                  nl_a, nl_b, nl_c, nl_d, &
07850                   sphi_a, sphi_b, sphi_c, sphi_d, &
07851                   primitives,&
07852                   buffer1,buffer2 )
07853 #else
07854         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
07855                               work, nl_a, nl_b, nl_c, nl_d, &
07856                               sphi_a, &
07857                               sphi_b, &
07858                               sphi_c, &
07859                               sphi_d, &
07860                               primitives, &
07861                               buffer1, buffer2)
07862 #endif
07863        CASE(1)
07864 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
07865         CALL contract_fsfp(work,&
07866                  nl_a, nl_b, nl_c, nl_d, &
07867                   sphi_a, sphi_b, sphi_c, sphi_d, &
07868                   primitives,&
07869                   buffer1,buffer2 )
07870 #else
07871         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
07872                               work, nl_a, nl_b, nl_c, nl_d, &
07873                               sphi_a, &
07874                               sphi_b, &
07875                               sphi_c, &
07876                               sphi_d, &
07877                               primitives, &
07878                               buffer1, buffer2)
07879 #endif
07880        CASE(2)
07881 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
07882         CALL contract_fsfd(work,&
07883                  nl_a, nl_b, nl_c, nl_d, &
07884                   sphi_a, sphi_b, sphi_c, sphi_d, &
07885                   primitives,&
07886                   buffer1,buffer2 )
07887 #else
07888         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
07889                               work, nl_a, nl_b, nl_c, nl_d, &
07890                               sphi_a, &
07891                               sphi_b, &
07892                               sphi_c, &
07893                               sphi_d, &
07894                               primitives, &
07895                               buffer1, buffer2)
07896 #endif
07897        CASE(3)
07898 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
07899         CALL contract_fsff(work,&
07900                  nl_a, nl_b, nl_c, nl_d, &
07901                   sphi_a, sphi_b, sphi_c, sphi_d, &
07902                   primitives,&
07903                   buffer1,buffer2 )
07904 #else
07905         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
07906                               work, nl_a, nl_b, nl_c, nl_d, &
07907                               sphi_a, &
07908                               sphi_b, &
07909                               sphi_c, &
07910                               sphi_d, &
07911                               primitives, &
07912                               buffer1, buffer2)
07913 #endif
07914        CASE(4)
07915 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
07916         CALL contract_fsfg(work,&
07917                  nl_a, nl_b, nl_c, nl_d, &
07918                   sphi_a, sphi_b, sphi_c, sphi_d, &
07919                   primitives,&
07920                   buffer1,buffer2 )
07921 #else
07922         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
07923                               work, nl_a, nl_b, nl_c, nl_d, &
07924                               sphi_a, &
07925                               sphi_b, &
07926                               sphi_c, &
07927                               sphi_d, &
07928                               primitives, &
07929                               buffer1, buffer2)
07930 #endif
07931        CASE DEFAULT
07932         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
07933                               work, nl_a, nl_b, nl_c, nl_d, &
07934                               sphi_a, &
07935                               sphi_b, &
07936                               sphi_c, &
07937                               sphi_d, &
07938                               primitives, &
07939                               buffer1, buffer2)
07940        END SELECT
07941       CASE(4)
07942        SELECT CASE(n_d)
07943        CASE(0)
07944 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
07945         CALL contract_fsgs(work,&
07946                  nl_a, nl_b, nl_c, nl_d, &
07947                   sphi_a, sphi_b, sphi_c, sphi_d, &
07948                   primitives,&
07949                   buffer1,buffer2 )
07950 #else
07951         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
07952                               work, nl_a, nl_b, nl_c, nl_d, &
07953                               sphi_a, &
07954                               sphi_b, &
07955                               sphi_c, &
07956                               sphi_d, &
07957                               primitives, &
07958                               buffer1, buffer2)
07959 #endif
07960        CASE(1)
07961 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
07962         CALL contract_fsgp(work,&
07963                  nl_a, nl_b, nl_c, nl_d, &
07964                   sphi_a, sphi_b, sphi_c, sphi_d, &
07965                   primitives,&
07966                   buffer1,buffer2 )
07967 #else
07968         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
07969                               work, nl_a, nl_b, nl_c, nl_d, &
07970                               sphi_a, &
07971                               sphi_b, &
07972                               sphi_c, &
07973                               sphi_d, &
07974                               primitives, &
07975                               buffer1, buffer2)
07976 #endif
07977        CASE(2)
07978 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
07979         CALL contract_fsgd(work,&
07980                  nl_a, nl_b, nl_c, nl_d, &
07981                   sphi_a, sphi_b, sphi_c, sphi_d, &
07982                   primitives,&
07983                   buffer1,buffer2 )
07984 #else
07985         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
07986                               work, nl_a, nl_b, nl_c, nl_d, &
07987                               sphi_a, &
07988                               sphi_b, &
07989                               sphi_c, &
07990                               sphi_d, &
07991                               primitives, &
07992                               buffer1, buffer2)
07993 #endif
07994        CASE(3)
07995 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
07996         CALL contract_fsgf(work,&
07997                  nl_a, nl_b, nl_c, nl_d, &
07998                   sphi_a, sphi_b, sphi_c, sphi_d, &
07999                   primitives,&
08000                   buffer1,buffer2 )
08001 #else
08002         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
08003                               work, nl_a, nl_b, nl_c, nl_d, &
08004                               sphi_a, &
08005                               sphi_b, &
08006                               sphi_c, &
08007                               sphi_d, &
08008                               primitives, &
08009                               buffer1, buffer2)
08010 #endif
08011        CASE(4)
08012 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
08013         CALL contract_fsgg(work,&
08014                  nl_a, nl_b, nl_c, nl_d, &
08015                   sphi_a, sphi_b, sphi_c, sphi_d, &
08016                   primitives,&
08017                   buffer1,buffer2 )
08018 #else
08019         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
08020                               work, nl_a, nl_b, nl_c, nl_d, &
08021                               sphi_a, &
08022                               sphi_b, &
08023                               sphi_c, &
08024                               sphi_d, &
08025                               primitives, &
08026                               buffer1, buffer2)
08027 #endif
08028        CASE DEFAULT
08029         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
08030                               work, nl_a, nl_b, nl_c, nl_d, &
08031                               sphi_a, &
08032                               sphi_b, &
08033                               sphi_c, &
08034                               sphi_d, &
08035                               primitives, &
08036                               buffer1, buffer2)
08037        END SELECT
08038       CASE DEFAULT
08039        CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
08040                              work, nl_a, nl_b, nl_c, nl_d, &
08041                              sphi_a, &
08042                              sphi_b, &
08043                              sphi_c, &
08044                              sphi_d, &
08045                              primitives, &
08046                              buffer1, buffer2)
08047       END SELECT
08048      CASE(1)
08049       SELECT CASE(n_c)
08050       CASE(0)
08051        SELECT CASE(n_d)
08052        CASE(0)
08053 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
08054         CALL contract_fpss(work,&
08055                  nl_a, nl_b, nl_c, nl_d, &
08056                   sphi_a, sphi_b, sphi_c, sphi_d, &
08057                   primitives,&
08058                   buffer1,buffer2 )
08059 #else
08060         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
08061                               work, nl_a, nl_b, nl_c, nl_d, &
08062                               sphi_a, &
08063                               sphi_b, &
08064                               sphi_c, &
08065                               sphi_d, &
08066                               primitives, &
08067                               buffer1, buffer2)
08068 #endif
08069        CASE(1)
08070 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
08071         CALL contract_fpsp(work,&
08072                  nl_a, nl_b, nl_c, nl_d, &
08073                   sphi_a, sphi_b, sphi_c, sphi_d, &
08074                   primitives,&
08075                   buffer1,buffer2 )
08076 #else
08077         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
08078                               work, nl_a, nl_b, nl_c, nl_d, &
08079                               sphi_a, &
08080                               sphi_b, &
08081                               sphi_c, &
08082                               sphi_d, &
08083                               primitives, &
08084                               buffer1, buffer2)
08085 #endif
08086        CASE(2)
08087 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
08088         CALL contract_fpsd(work,&
08089                  nl_a, nl_b, nl_c, nl_d, &
08090                   sphi_a, sphi_b, sphi_c, sphi_d, &
08091                   primitives,&
08092                   buffer1,buffer2 )
08093 #else
08094         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
08095                               work, nl_a, nl_b, nl_c, nl_d, &
08096                               sphi_a, &
08097                               sphi_b, &
08098                               sphi_c, &
08099                               sphi_d, &
08100                               primitives, &
08101                               buffer1, buffer2)
08102 #endif
08103        CASE(3)
08104 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
08105         CALL contract_fpsf(work,&
08106                  nl_a, nl_b, nl_c, nl_d, &
08107                   sphi_a, sphi_b, sphi_c, sphi_d, &
08108                   primitives,&
08109                   buffer1,buffer2 )
08110 #else
08111         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
08112                               work, nl_a, nl_b, nl_c, nl_d, &
08113                               sphi_a, &
08114                               sphi_b, &
08115                               sphi_c, &
08116                               sphi_d, &
08117                               primitives, &
08118                               buffer1, buffer2)
08119 #endif
08120        CASE(4)
08121 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
08122         CALL contract_fpsg(work,&
08123                  nl_a, nl_b, nl_c, nl_d, &
08124                   sphi_a, sphi_b, sphi_c, sphi_d, &
08125                   primitives,&
08126                   buffer1,buffer2 )
08127 #else
08128         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
08129                               work, nl_a, nl_b, nl_c, nl_d, &
08130                               sphi_a, &
08131                               sphi_b, &
08132                               sphi_c, &
08133                               sphi_d, &
08134                               primitives, &
08135                               buffer1, buffer2)
08136 #endif
08137        CASE DEFAULT
08138         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
08139                               work, nl_a, nl_b, nl_c, nl_d, &
08140                               sphi_a, &
08141                               sphi_b, &
08142                               sphi_c, &
08143                               sphi_d, &
08144                               primitives, &
08145                               buffer1, buffer2)
08146        END SELECT
08147       CASE(1)
08148        SELECT CASE(n_d)
08149        CASE(0)
08150 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
08151         CALL contract_fpps(work,&
08152                  nl_a, nl_b, nl_c, nl_d, &
08153                   sphi_a, sphi_b, sphi_c, sphi_d, &
08154                   primitives,&
08155                   buffer1,buffer2 )
08156 #else
08157         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
08158                               work, nl_a, nl_b, nl_c, nl_d, &
08159                               sphi_a, &
08160                               sphi_b, &
08161                               sphi_c, &
08162                               sphi_d, &
08163                               primitives, &
08164                               buffer1, buffer2)
08165 #endif
08166        CASE(1)
08167 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
08168         CALL contract_fppp(work,&
08169                  nl_a, nl_b, nl_c, nl_d, &
08170                   sphi_a, sphi_b, sphi_c, sphi_d, &
08171                   primitives,&
08172                   buffer1,buffer2 )
08173 #else
08174         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
08175                               work, nl_a, nl_b, nl_c, nl_d, &
08176                               sphi_a, &
08177                               sphi_b, &
08178                               sphi_c, &
08179                               sphi_d, &
08180                               primitives, &
08181                               buffer1, buffer2)
08182 #endif
08183        CASE(2)
08184 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
08185         CALL contract_fppd(work,&
08186                  nl_a, nl_b, nl_c, nl_d, &
08187                   sphi_a, sphi_b, sphi_c, sphi_d, &
08188                   primitives,&
08189                   buffer1,buffer2 )
08190 #else
08191         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
08192                               work, nl_a, nl_b, nl_c, nl_d, &
08193                               sphi_a, &
08194                               sphi_b, &
08195                               sphi_c, &
08196                               sphi_d, &
08197                               primitives, &
08198                               buffer1, buffer2)
08199 #endif
08200        CASE(3)
08201 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
08202         CALL contract_fppf(work,&
08203                  nl_a, nl_b, nl_c, nl_d, &
08204                   sphi_a, sphi_b, sphi_c, sphi_d, &
08205                   primitives,&
08206                   buffer1,buffer2 )
08207 #else
08208         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
08209                               work, nl_a, nl_b, nl_c, nl_d, &
08210                               sphi_a, &
08211                               sphi_b, &
08212                               sphi_c, &
08213                               sphi_d, &
08214                               primitives, &
08215                               buffer1, buffer2)
08216 #endif
08217        CASE(4)
08218 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
08219         CALL contract_fppg(work,&
08220                  nl_a, nl_b, nl_c, nl_d, &
08221                   sphi_a, sphi_b, sphi_c, sphi_d, &
08222                   primitives,&
08223                   buffer1,buffer2 )
08224 #else
08225         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
08226                               work, nl_a, nl_b, nl_c, nl_d, &
08227                               sphi_a, &
08228                               sphi_b, &
08229                               sphi_c, &
08230                               sphi_d, &
08231                               primitives, &
08232                               buffer1, buffer2)
08233 #endif
08234        CASE DEFAULT
08235         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
08236                               work, nl_a, nl_b, nl_c, nl_d, &
08237                               sphi_a, &
08238                               sphi_b, &
08239                               sphi_c, &
08240                               sphi_d, &
08241                               primitives, &
08242                               buffer1, buffer2)
08243        END SELECT
08244       CASE(2)
08245        SELECT CASE(n_d)
08246        CASE(0)
08247 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
08248         CALL contract_fpds(work,&
08249                  nl_a, nl_b, nl_c, nl_d, &
08250                   sphi_a, sphi_b, sphi_c, sphi_d, &
08251                   primitives,&
08252                   buffer1,buffer2 )
08253 #else
08254         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
08255                               work, nl_a, nl_b, nl_c, nl_d, &
08256                               sphi_a, &
08257                               sphi_b, &
08258                               sphi_c, &
08259                               sphi_d, &
08260                               primitives, &
08261                               buffer1, buffer2)
08262 #endif
08263        CASE(1)
08264 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
08265         CALL contract_fpdp(work,&
08266                  nl_a, nl_b, nl_c, nl_d, &
08267                   sphi_a, sphi_b, sphi_c, sphi_d, &
08268                   primitives,&
08269                   buffer1,buffer2 )
08270 #else
08271         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
08272                               work, nl_a, nl_b, nl_c, nl_d, &
08273                               sphi_a, &
08274                               sphi_b, &
08275                               sphi_c, &
08276                               sphi_d, &
08277                               primitives, &
08278                               buffer1, buffer2)
08279 #endif
08280        CASE(2)
08281 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
08282         CALL contract_fpdd(work,&
08283                  nl_a, nl_b, nl_c, nl_d, &
08284                   sphi_a, sphi_b, sphi_c, sphi_d, &
08285                   primitives,&
08286                   buffer1,buffer2 )
08287 #else
08288         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
08289                               work, nl_a, nl_b, nl_c, nl_d, &
08290                               sphi_a, &
08291                               sphi_b, &
08292                               sphi_c, &
08293                               sphi_d, &
08294                               primitives, &
08295                               buffer1, buffer2)
08296 #endif
08297        CASE(3)
08298 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
08299         CALL contract_fpdf(work,&
08300                  nl_a, nl_b, nl_c, nl_d, &
08301                   sphi_a, sphi_b, sphi_c, sphi_d, &
08302                   primitives,&
08303                   buffer1,buffer2 )
08304 #else
08305         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
08306                               work, nl_a, nl_b, nl_c, nl_d, &
08307                               sphi_a, &
08308                               sphi_b, &
08309                               sphi_c, &
08310                               sphi_d, &
08311                               primitives, &
08312                               buffer1, buffer2)
08313 #endif
08314        CASE(4)
08315 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
08316         CALL contract_fpdg(work,&
08317                  nl_a, nl_b, nl_c, nl_d, &
08318                   sphi_a, sphi_b, sphi_c, sphi_d, &
08319                   primitives,&
08320                   buffer1,buffer2 )
08321 #else
08322         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
08323                               work, nl_a, nl_b, nl_c, nl_d, &
08324                               sphi_a, &
08325                               sphi_b, &
08326                               sphi_c, &
08327                               sphi_d, &
08328                               primitives, &
08329                               buffer1, buffer2)
08330 #endif
08331        CASE DEFAULT
08332         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
08333                               work, nl_a, nl_b, nl_c, nl_d, &
08334                               sphi_a, &
08335                               sphi_b, &
08336                               sphi_c, &
08337                               sphi_d, &
08338                               primitives, &
08339                               buffer1, buffer2)
08340        END SELECT
08341       CASE(3)
08342        SELECT CASE(n_d)
08343        CASE(0)
08344 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
08345         CALL contract_fpfs(work,&
08346                  nl_a, nl_b, nl_c, nl_d, &
08347                   sphi_a, sphi_b, sphi_c, sphi_d, &
08348                   primitives,&
08349                   buffer1,buffer2 )
08350 #else
08351         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
08352                               work, nl_a, nl_b, nl_c, nl_d, &
08353                               sphi_a, &
08354                               sphi_b, &
08355                               sphi_c, &
08356                               sphi_d, &
08357                               primitives, &
08358                               buffer1, buffer2)
08359 #endif
08360        CASE(1)
08361 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
08362         CALL contract_fpfp(work,&
08363                  nl_a, nl_b, nl_c, nl_d, &
08364                   sphi_a, sphi_b, sphi_c, sphi_d, &
08365                   primitives,&
08366                   buffer1,buffer2 )
08367 #else
08368         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
08369                               work, nl_a, nl_b, nl_c, nl_d, &
08370                               sphi_a, &
08371                               sphi_b, &
08372                               sphi_c, &
08373                               sphi_d, &
08374                               primitives, &
08375                               buffer1, buffer2)
08376 #endif
08377        CASE(2)
08378 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
08379         CALL contract_fpfd(work,&
08380                  nl_a, nl_b, nl_c, nl_d, &
08381                   sphi_a, sphi_b, sphi_c, sphi_d, &
08382                   primitives,&
08383                   buffer1,buffer2 )
08384 #else
08385         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
08386                               work, nl_a, nl_b, nl_c, nl_d, &
08387                               sphi_a, &
08388                               sphi_b, &
08389                               sphi_c, &
08390                               sphi_d, &
08391                               primitives, &
08392                               buffer1, buffer2)
08393 #endif
08394        CASE(3)
08395 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
08396         CALL contract_fpff(work,&
08397                  nl_a, nl_b, nl_c, nl_d, &
08398                   sphi_a, sphi_b, sphi_c, sphi_d, &
08399                   primitives,&
08400                   buffer1,buffer2 )
08401 #else
08402         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
08403                               work, nl_a, nl_b, nl_c, nl_d, &
08404                               sphi_a, &
08405                               sphi_b, &
08406                               sphi_c, &
08407                               sphi_d, &
08408                               primitives, &
08409                               buffer1, buffer2)
08410 #endif
08411        CASE(4)
08412 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
08413         CALL contract_fpfg(work,&
08414                  nl_a, nl_b, nl_c, nl_d, &
08415                   sphi_a, sphi_b, sphi_c, sphi_d, &
08416                   primitives,&
08417                   buffer1,buffer2 )
08418 #else
08419         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
08420                               work, nl_a, nl_b, nl_c, nl_d, &
08421                               sphi_a, &
08422                               sphi_b, &
08423                               sphi_c, &
08424                               sphi_d, &
08425                               primitives, &
08426                               buffer1, buffer2)
08427 #endif
08428        CASE DEFAULT
08429         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
08430                               work, nl_a, nl_b, nl_c, nl_d, &
08431                               sphi_a, &
08432                               sphi_b, &
08433                               sphi_c, &
08434                               sphi_d, &
08435                               primitives, &
08436                               buffer1, buffer2)
08437        END SELECT
08438       CASE(4)
08439        SELECT CASE(n_d)
08440        CASE(0)
08441 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
08442         CALL contract_fpgs(work,&
08443                  nl_a, nl_b, nl_c, nl_d, &
08444                   sphi_a, sphi_b, sphi_c, sphi_d, &
08445                   primitives,&
08446                   buffer1,buffer2 )
08447 #else
08448         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
08449                               work, nl_a, nl_b, nl_c, nl_d, &
08450                               sphi_a, &
08451                               sphi_b, &
08452                               sphi_c, &
08453                               sphi_d, &
08454                               primitives, &
08455                               buffer1, buffer2)
08456 #endif
08457        CASE(1)
08458 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
08459         CALL contract_fpgp(work,&
08460                  nl_a, nl_b, nl_c, nl_d, &
08461                   sphi_a, sphi_b, sphi_c, sphi_d, &
08462                   primitives,&
08463                   buffer1,buffer2 )
08464 #else
08465         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
08466                               work, nl_a, nl_b, nl_c, nl_d, &
08467                               sphi_a, &
08468                               sphi_b, &
08469                               sphi_c, &
08470                               sphi_d, &
08471                               primitives, &
08472                               buffer1, buffer2)
08473 #endif
08474        CASE(2)
08475 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
08476         CALL contract_fpgd(work,&
08477                  nl_a, nl_b, nl_c, nl_d, &
08478                   sphi_a, sphi_b, sphi_c, sphi_d, &
08479                   primitives,&
08480                   buffer1,buffer2 )
08481 #else
08482         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
08483                               work, nl_a, nl_b, nl_c, nl_d, &
08484                               sphi_a, &
08485                               sphi_b, &
08486                               sphi_c, &
08487                               sphi_d, &
08488                               primitives, &
08489                               buffer1, buffer2)
08490 #endif
08491        CASE(3)
08492 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
08493         CALL contract_fpgf(work,&
08494                  nl_a, nl_b, nl_c, nl_d, &
08495                   sphi_a, sphi_b, sphi_c, sphi_d, &
08496                   primitives,&
08497                   buffer1,buffer2 )
08498 #else
08499         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
08500                               work, nl_a, nl_b, nl_c, nl_d, &
08501                               sphi_a, &
08502                               sphi_b, &
08503                               sphi_c, &
08504                               sphi_d, &
08505                               primitives, &
08506                               buffer1, buffer2)
08507 #endif
08508        CASE(4)
08509 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
08510         CALL contract_fpgg(work,&
08511                  nl_a, nl_b, nl_c, nl_d, &
08512                   sphi_a, sphi_b, sphi_c, sphi_d, &
08513                   primitives,&
08514                   buffer1,buffer2 )
08515 #else
08516         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
08517                               work, nl_a, nl_b, nl_c, nl_d, &
08518                               sphi_a, &
08519                               sphi_b, &
08520                               sphi_c, &
08521                               sphi_d, &
08522                               primitives, &
08523                               buffer1, buffer2)
08524 #endif
08525        CASE DEFAULT
08526         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
08527                               work, nl_a, nl_b, nl_c, nl_d, &
08528                               sphi_a, &
08529                               sphi_b, &
08530                               sphi_c, &
08531                               sphi_d, &
08532                               primitives, &
08533                               buffer1, buffer2)
08534        END SELECT
08535       CASE DEFAULT
08536        CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
08537                              work, nl_a, nl_b, nl_c, nl_d, &
08538                              sphi_a, &
08539                              sphi_b, &
08540                              sphi_c, &
08541                              sphi_d, &
08542                              primitives, &
08543                              buffer1, buffer2)
08544       END SELECT
08545      CASE(2)
08546       SELECT CASE(n_c)
08547       CASE(0)
08548        SELECT CASE(n_d)
08549        CASE(0)
08550 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
08551         CALL contract_fdss(work,&
08552                  nl_a, nl_b, nl_c, nl_d, &
08553                   sphi_a, sphi_b, sphi_c, sphi_d, &
08554                   primitives,&
08555                   buffer1,buffer2 )
08556 #else
08557         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
08558                               work, nl_a, nl_b, nl_c, nl_d, &
08559                               sphi_a, &
08560                               sphi_b, &
08561                               sphi_c, &
08562                               sphi_d, &
08563                               primitives, &
08564                               buffer1, buffer2)
08565 #endif
08566        CASE(1)
08567 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
08568         CALL contract_fdsp(work,&
08569                  nl_a, nl_b, nl_c, nl_d, &
08570                   sphi_a, sphi_b, sphi_c, sphi_d, &
08571                   primitives,&
08572                   buffer1,buffer2 )
08573 #else
08574         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
08575                               work, nl_a, nl_b, nl_c, nl_d, &
08576                               sphi_a, &
08577                               sphi_b, &
08578                               sphi_c, &
08579                               sphi_d, &
08580                               primitives, &
08581                               buffer1, buffer2)
08582 #endif
08583        CASE(2)
08584 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
08585         CALL contract_fdsd(work,&
08586                  nl_a, nl_b, nl_c, nl_d, &
08587                   sphi_a, sphi_b, sphi_c, sphi_d, &
08588                   primitives,&
08589                   buffer1,buffer2 )
08590 #else
08591         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
08592                               work, nl_a, nl_b, nl_c, nl_d, &
08593                               sphi_a, &
08594                               sphi_b, &
08595                               sphi_c, &
08596                               sphi_d, &
08597                               primitives, &
08598                               buffer1, buffer2)
08599 #endif
08600        CASE(3)
08601 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
08602         CALL contract_fdsf(work,&
08603                  nl_a, nl_b, nl_c, nl_d, &
08604                   sphi_a, sphi_b, sphi_c, sphi_d, &
08605                   primitives,&
08606                   buffer1,buffer2 )
08607 #else
08608         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
08609                               work, nl_a, nl_b, nl_c, nl_d, &
08610                               sphi_a, &
08611                               sphi_b, &
08612                               sphi_c, &
08613                               sphi_d, &
08614                               primitives, &
08615                               buffer1, buffer2)
08616 #endif
08617        CASE(4)
08618 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
08619         CALL contract_fdsg(work,&
08620                  nl_a, nl_b, nl_c, nl_d, &
08621                   sphi_a, sphi_b, sphi_c, sphi_d, &
08622                   primitives,&
08623                   buffer1,buffer2 )
08624 #else
08625         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
08626                               work, nl_a, nl_b, nl_c, nl_d, &
08627                               sphi_a, &
08628                               sphi_b, &
08629                               sphi_c, &
08630                               sphi_d, &
08631                               primitives, &
08632                               buffer1, buffer2)
08633 #endif
08634        CASE DEFAULT
08635         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
08636                               work, nl_a, nl_b, nl_c, nl_d, &
08637                               sphi_a, &
08638                               sphi_b, &
08639                               sphi_c, &
08640                               sphi_d, &
08641                               primitives, &
08642                               buffer1, buffer2)
08643        END SELECT
08644       CASE(1)
08645        SELECT CASE(n_d)
08646        CASE(0)
08647 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
08648         CALL contract_fdps(work,&
08649                  nl_a, nl_b, nl_c, nl_d, &
08650                   sphi_a, sphi_b, sphi_c, sphi_d, &
08651                   primitives,&
08652                   buffer1,buffer2 )
08653 #else
08654         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
08655                               work, nl_a, nl_b, nl_c, nl_d, &
08656                               sphi_a, &
08657                               sphi_b, &
08658                               sphi_c, &
08659                               sphi_d, &
08660                               primitives, &
08661                               buffer1, buffer2)
08662 #endif
08663        CASE(1)
08664 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
08665         CALL contract_fdpp(work,&
08666                  nl_a, nl_b, nl_c, nl_d, &
08667                   sphi_a, sphi_b, sphi_c, sphi_d, &
08668                   primitives,&
08669                   buffer1,buffer2 )
08670 #else
08671         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
08672                               work, nl_a, nl_b, nl_c, nl_d, &
08673                               sphi_a, &
08674                               sphi_b, &
08675                               sphi_c, &
08676                               sphi_d, &
08677                               primitives, &
08678                               buffer1, buffer2)
08679 #endif
08680        CASE(2)
08681 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
08682         CALL contract_fdpd(work,&
08683                  nl_a, nl_b, nl_c, nl_d, &
08684                   sphi_a, sphi_b, sphi_c, sphi_d, &
08685                   primitives,&
08686                   buffer1,buffer2 )
08687 #else
08688         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
08689                               work, nl_a, nl_b, nl_c, nl_d, &
08690                               sphi_a, &
08691                               sphi_b, &
08692                               sphi_c, &
08693                               sphi_d, &
08694                               primitives, &
08695                               buffer1, buffer2)
08696 #endif
08697        CASE(3)
08698 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
08699         CALL contract_fdpf(work,&
08700                  nl_a, nl_b, nl_c, nl_d, &
08701                   sphi_a, sphi_b, sphi_c, sphi_d, &
08702                   primitives,&
08703                   buffer1,buffer2 )
08704 #else
08705         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
08706                               work, nl_a, nl_b, nl_c, nl_d, &
08707                               sphi_a, &
08708                               sphi_b, &
08709                               sphi_c, &
08710                               sphi_d, &
08711                               primitives, &
08712                               buffer1, buffer2)
08713 #endif
08714        CASE(4)
08715 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
08716         CALL contract_fdpg(work,&
08717                  nl_a, nl_b, nl_c, nl_d, &
08718                   sphi_a, sphi_b, sphi_c, sphi_d, &
08719                   primitives,&
08720                   buffer1,buffer2 )
08721 #else
08722         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
08723                               work, nl_a, nl_b, nl_c, nl_d, &
08724                               sphi_a, &
08725                               sphi_b, &
08726                               sphi_c, &
08727                               sphi_d, &
08728                               primitives, &
08729                               buffer1, buffer2)
08730 #endif
08731        CASE DEFAULT
08732         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
08733                               work, nl_a, nl_b, nl_c, nl_d, &
08734                               sphi_a, &
08735                               sphi_b, &
08736                               sphi_c, &
08737                               sphi_d, &
08738                               primitives, &
08739                               buffer1, buffer2)
08740        END SELECT
08741       CASE(2)
08742        SELECT CASE(n_d)
08743        CASE(0)
08744 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
08745         CALL contract_fdds(work,&
08746                  nl_a, nl_b, nl_c, nl_d, &
08747                   sphi_a, sphi_b, sphi_c, sphi_d, &
08748                   primitives,&
08749                   buffer1,buffer2 )
08750 #else
08751         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
08752                               work, nl_a, nl_b, nl_c, nl_d, &
08753                               sphi_a, &
08754                               sphi_b, &
08755                               sphi_c, &
08756                               sphi_d, &
08757                               primitives, &
08758                               buffer1, buffer2)
08759 #endif
08760        CASE(1)
08761 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
08762         CALL contract_fddp(work,&
08763                  nl_a, nl_b, nl_c, nl_d, &
08764                   sphi_a, sphi_b, sphi_c, sphi_d, &
08765                   primitives,&
08766                   buffer1,buffer2 )
08767 #else
08768         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
08769                               work, nl_a, nl_b, nl_c, nl_d, &
08770                               sphi_a, &
08771                               sphi_b, &
08772                               sphi_c, &
08773                               sphi_d, &
08774                               primitives, &
08775                               buffer1, buffer2)
08776 #endif
08777        CASE(2)
08778 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
08779         CALL contract_fddd(work,&
08780                  nl_a, nl_b, nl_c, nl_d, &
08781                   sphi_a, sphi_b, sphi_c, sphi_d, &
08782                   primitives,&
08783                   buffer1,buffer2 )
08784 #else
08785         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
08786                               work, nl_a, nl_b, nl_c, nl_d, &
08787                               sphi_a, &
08788                               sphi_b, &
08789                               sphi_c, &
08790                               sphi_d, &
08791                               primitives, &
08792                               buffer1, buffer2)
08793 #endif
08794        CASE(3)
08795 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
08796         CALL contract_fddf(work,&
08797                  nl_a, nl_b, nl_c, nl_d, &
08798                   sphi_a, sphi_b, sphi_c, sphi_d, &
08799                   primitives,&
08800                   buffer1,buffer2 )
08801 #else
08802         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
08803                               work, nl_a, nl_b, nl_c, nl_d, &
08804                               sphi_a, &
08805                               sphi_b, &
08806                               sphi_c, &
08807                               sphi_d, &
08808                               primitives, &
08809                               buffer1, buffer2)
08810 #endif
08811        CASE(4)
08812 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
08813         CALL contract_fddg(work,&
08814                  nl_a, nl_b, nl_c, nl_d, &
08815                   sphi_a, sphi_b, sphi_c, sphi_d, &
08816                   primitives,&
08817                   buffer1,buffer2 )
08818 #else
08819         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
08820                               work, nl_a, nl_b, nl_c, nl_d, &
08821                               sphi_a, &
08822                               sphi_b, &
08823                               sphi_c, &
08824                               sphi_d, &
08825                               primitives, &
08826                               buffer1, buffer2)
08827 #endif
08828        CASE DEFAULT
08829         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
08830                               work, nl_a, nl_b, nl_c, nl_d, &
08831                               sphi_a, &
08832                               sphi_b, &
08833                               sphi_c, &
08834                               sphi_d, &
08835                               primitives, &
08836                               buffer1, buffer2)
08837        END SELECT
08838       CASE(3)
08839        SELECT CASE(n_d)
08840        CASE(0)
08841 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
08842         CALL contract_fdfs(work,&
08843                  nl_a, nl_b, nl_c, nl_d, &
08844                   sphi_a, sphi_b, sphi_c, sphi_d, &
08845                   primitives,&
08846                   buffer1,buffer2 )
08847 #else
08848         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
08849                               work, nl_a, nl_b, nl_c, nl_d, &
08850                               sphi_a, &
08851                               sphi_b, &
08852                               sphi_c, &
08853                               sphi_d, &
08854                               primitives, &
08855                               buffer1, buffer2)
08856 #endif
08857        CASE(1)
08858 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
08859         CALL contract_fdfp(work,&
08860                  nl_a, nl_b, nl_c, nl_d, &
08861                   sphi_a, sphi_b, sphi_c, sphi_d, &
08862                   primitives,&
08863                   buffer1,buffer2 )
08864 #else
08865         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
08866                               work, nl_a, nl_b, nl_c, nl_d, &
08867                               sphi_a, &
08868                               sphi_b, &
08869                               sphi_c, &
08870                               sphi_d, &
08871                               primitives, &
08872                               buffer1, buffer2)
08873 #endif
08874        CASE(2)
08875 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
08876         CALL contract_fdfd(work,&
08877                  nl_a, nl_b, nl_c, nl_d, &
08878                   sphi_a, sphi_b, sphi_c, sphi_d, &
08879                   primitives,&
08880                   buffer1,buffer2 )
08881 #else
08882         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
08883                               work, nl_a, nl_b, nl_c, nl_d, &
08884                               sphi_a, &
08885                               sphi_b, &
08886                               sphi_c, &
08887                               sphi_d, &
08888                               primitives, &
08889                               buffer1, buffer2)
08890 #endif
08891        CASE(3)
08892 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
08893         CALL contract_fdff(work,&
08894                  nl_a, nl_b, nl_c, nl_d, &
08895                   sphi_a, sphi_b, sphi_c, sphi_d, &
08896                   primitives,&
08897                   buffer1,buffer2 )
08898 #else
08899         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
08900                               work, nl_a, nl_b, nl_c, nl_d, &
08901                               sphi_a, &
08902                               sphi_b, &
08903                               sphi_c, &
08904                               sphi_d, &
08905                               primitives, &
08906                               buffer1, buffer2)
08907 #endif
08908        CASE(4)
08909 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
08910         CALL contract_fdfg(work,&
08911                  nl_a, nl_b, nl_c, nl_d, &
08912                   sphi_a, sphi_b, sphi_c, sphi_d, &
08913                   primitives,&
08914                   buffer1,buffer2 )
08915 #else
08916         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
08917                               work, nl_a, nl_b, nl_c, nl_d, &
08918                               sphi_a, &
08919                               sphi_b, &
08920                               sphi_c, &
08921                               sphi_d, &
08922                               primitives, &
08923                               buffer1, buffer2)
08924 #endif
08925        CASE DEFAULT
08926         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
08927                               work, nl_a, nl_b, nl_c, nl_d, &
08928                               sphi_a, &
08929                               sphi_b, &
08930                               sphi_c, &
08931                               sphi_d, &
08932                               primitives, &
08933                               buffer1, buffer2)
08934        END SELECT
08935       CASE(4)
08936        SELECT CASE(n_d)
08937        CASE(0)
08938 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
08939         CALL contract_fdgs(work,&
08940                  nl_a, nl_b, nl_c, nl_d, &
08941                   sphi_a, sphi_b, sphi_c, sphi_d, &
08942                   primitives,&
08943                   buffer1,buffer2 )
08944 #else
08945         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
08946                               work, nl_a, nl_b, nl_c, nl_d, &
08947                               sphi_a, &
08948                               sphi_b, &
08949                               sphi_c, &
08950                               sphi_d, &
08951                               primitives, &
08952                               buffer1, buffer2)
08953 #endif
08954        CASE(1)
08955 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
08956         CALL contract_fdgp(work,&
08957                  nl_a, nl_b, nl_c, nl_d, &
08958                   sphi_a, sphi_b, sphi_c, sphi_d, &
08959                   primitives,&
08960                   buffer1,buffer2 )
08961 #else
08962         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
08963                               work, nl_a, nl_b, nl_c, nl_d, &
08964                               sphi_a, &
08965                               sphi_b, &
08966                               sphi_c, &
08967                               sphi_d, &
08968                               primitives, &
08969                               buffer1, buffer2)
08970 #endif
08971        CASE(2)
08972 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
08973         CALL contract_fdgd(work,&
08974                  nl_a, nl_b, nl_c, nl_d, &
08975                   sphi_a, sphi_b, sphi_c, sphi_d, &
08976                   primitives,&
08977                   buffer1,buffer2 )
08978 #else
08979         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
08980                               work, nl_a, nl_b, nl_c, nl_d, &
08981                               sphi_a, &
08982                               sphi_b, &
08983                               sphi_c, &
08984                               sphi_d, &
08985                               primitives, &
08986                               buffer1, buffer2)
08987 #endif
08988        CASE(3)
08989 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
08990         CALL contract_fdgf(work,&
08991                  nl_a, nl_b, nl_c, nl_d, &
08992                   sphi_a, sphi_b, sphi_c, sphi_d, &
08993                   primitives,&
08994                   buffer1,buffer2 )
08995 #else
08996         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
08997                               work, nl_a, nl_b, nl_c, nl_d, &
08998                               sphi_a, &
08999                               sphi_b, &
09000                               sphi_c, &
09001                               sphi_d, &
09002                               primitives, &
09003                               buffer1, buffer2)
09004 #endif
09005        CASE(4)
09006 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
09007         CALL contract_fdgg(work,&
09008                  nl_a, nl_b, nl_c, nl_d, &
09009                   sphi_a, sphi_b, sphi_c, sphi_d, &
09010                   primitives,&
09011                   buffer1,buffer2 )
09012 #else
09013         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
09014                               work, nl_a, nl_b, nl_c, nl_d, &
09015                               sphi_a, &
09016                               sphi_b, &
09017                               sphi_c, &
09018                               sphi_d, &
09019                               primitives, &
09020                               buffer1, buffer2)
09021 #endif
09022        CASE DEFAULT
09023         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
09024                               work, nl_a, nl_b, nl_c, nl_d, &
09025                               sphi_a, &
09026                               sphi_b, &
09027                               sphi_c, &
09028                               sphi_d, &
09029                               primitives, &
09030                               buffer1, buffer2)
09031        END SELECT
09032       CASE DEFAULT
09033        CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
09034                              work, nl_a, nl_b, nl_c, nl_d, &
09035                              sphi_a, &
09036                              sphi_b, &
09037                              sphi_c, &
09038                              sphi_d, &
09039                              primitives, &
09040                              buffer1, buffer2)
09041       END SELECT
09042      CASE(3)
09043       SELECT CASE(n_c)
09044       CASE(0)
09045        SELECT CASE(n_d)
09046        CASE(0)
09047 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
09048         CALL contract_ffss(work,&
09049                  nl_a, nl_b, nl_c, nl_d, &
09050                   sphi_a, sphi_b, sphi_c, sphi_d, &
09051                   primitives,&
09052                   buffer1,buffer2 )
09053 #else
09054         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
09055                               work, nl_a, nl_b, nl_c, nl_d, &
09056                               sphi_a, &
09057                               sphi_b, &
09058                               sphi_c, &
09059                               sphi_d, &
09060                               primitives, &
09061                               buffer1, buffer2)
09062 #endif
09063        CASE(1)
09064 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
09065         CALL contract_ffsp(work,&
09066                  nl_a, nl_b, nl_c, nl_d, &
09067                   sphi_a, sphi_b, sphi_c, sphi_d, &
09068                   primitives,&
09069                   buffer1,buffer2 )
09070 #else
09071         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
09072                               work, nl_a, nl_b, nl_c, nl_d, &
09073                               sphi_a, &
09074                               sphi_b, &
09075                               sphi_c, &
09076                               sphi_d, &
09077                               primitives, &
09078                               buffer1, buffer2)
09079 #endif
09080        CASE(2)
09081 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
09082         CALL contract_ffsd(work,&
09083                  nl_a, nl_b, nl_c, nl_d, &
09084                   sphi_a, sphi_b, sphi_c, sphi_d, &
09085                   primitives,&
09086                   buffer1,buffer2 )
09087 #else
09088         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
09089                               work, nl_a, nl_b, nl_c, nl_d, &
09090                               sphi_a, &
09091                               sphi_b, &
09092                               sphi_c, &
09093                               sphi_d, &
09094                               primitives, &
09095                               buffer1, buffer2)
09096 #endif
09097        CASE(3)
09098 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
09099         CALL contract_ffsf(work,&
09100                  nl_a, nl_b, nl_c, nl_d, &
09101                   sphi_a, sphi_b, sphi_c, sphi_d, &
09102                   primitives,&
09103                   buffer1,buffer2 )
09104 #else
09105         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
09106                               work, nl_a, nl_b, nl_c, nl_d, &
09107                               sphi_a, &
09108                               sphi_b, &
09109                               sphi_c, &
09110                               sphi_d, &
09111                               primitives, &
09112                               buffer1, buffer2)
09113 #endif
09114        CASE(4)
09115 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
09116         CALL contract_ffsg(work,&
09117                  nl_a, nl_b, nl_c, nl_d, &
09118                   sphi_a, sphi_b, sphi_c, sphi_d, &
09119                   primitives,&
09120                   buffer1,buffer2 )
09121 #else
09122         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
09123                               work, nl_a, nl_b, nl_c, nl_d, &
09124                               sphi_a, &
09125                               sphi_b, &
09126                               sphi_c, &
09127                               sphi_d, &
09128                               primitives, &
09129                               buffer1, buffer2)
09130 #endif
09131        CASE DEFAULT
09132         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
09133                               work, nl_a, nl_b, nl_c, nl_d, &
09134                               sphi_a, &
09135                               sphi_b, &
09136                               sphi_c, &
09137                               sphi_d, &
09138                               primitives, &
09139                               buffer1, buffer2)
09140        END SELECT
09141       CASE(1)
09142        SELECT CASE(n_d)
09143        CASE(0)
09144 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
09145         CALL contract_ffps(work,&
09146                  nl_a, nl_b, nl_c, nl_d, &
09147                   sphi_a, sphi_b, sphi_c, sphi_d, &
09148                   primitives,&
09149                   buffer1,buffer2 )
09150 #else
09151         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
09152                               work, nl_a, nl_b, nl_c, nl_d, &
09153                               sphi_a, &
09154                               sphi_b, &
09155                               sphi_c, &
09156                               sphi_d, &
09157                               primitives, &
09158                               buffer1, buffer2)
09159 #endif
09160        CASE(1)
09161 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
09162         CALL contract_ffpp(work,&
09163                  nl_a, nl_b, nl_c, nl_d, &
09164                   sphi_a, sphi_b, sphi_c, sphi_d, &
09165                   primitives,&
09166                   buffer1,buffer2 )
09167 #else
09168         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
09169                               work, nl_a, nl_b, nl_c, nl_d, &
09170                               sphi_a, &
09171                               sphi_b, &
09172                               sphi_c, &
09173                               sphi_d, &
09174                               primitives, &
09175                               buffer1, buffer2)
09176 #endif
09177        CASE(2)
09178 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
09179         CALL contract_ffpd(work,&
09180                  nl_a, nl_b, nl_c, nl_d, &
09181                   sphi_a, sphi_b, sphi_c, sphi_d, &
09182                   primitives,&
09183                   buffer1,buffer2 )
09184 #else
09185         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
09186                               work, nl_a, nl_b, nl_c, nl_d, &
09187                               sphi_a, &
09188                               sphi_b, &
09189                               sphi_c, &
09190                               sphi_d, &
09191                               primitives, &
09192                               buffer1, buffer2)
09193 #endif
09194        CASE(3)
09195 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
09196         CALL contract_ffpf(work,&
09197                  nl_a, nl_b, nl_c, nl_d, &
09198                   sphi_a, sphi_b, sphi_c, sphi_d, &
09199                   primitives,&
09200                   buffer1,buffer2 )
09201 #else
09202         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
09203                               work, nl_a, nl_b, nl_c, nl_d, &
09204                               sphi_a, &
09205                               sphi_b, &
09206                               sphi_c, &
09207                               sphi_d, &
09208                               primitives, &
09209                               buffer1, buffer2)
09210 #endif
09211        CASE(4)
09212 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
09213         CALL contract_ffpg(work,&
09214                  nl_a, nl_b, nl_c, nl_d, &
09215                   sphi_a, sphi_b, sphi_c, sphi_d, &
09216                   primitives,&
09217                   buffer1,buffer2 )
09218 #else
09219         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
09220                               work, nl_a, nl_b, nl_c, nl_d, &
09221                               sphi_a, &
09222                               sphi_b, &
09223                               sphi_c, &
09224                               sphi_d, &
09225                               primitives, &
09226                               buffer1, buffer2)
09227 #endif
09228        CASE DEFAULT
09229         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
09230                               work, nl_a, nl_b, nl_c, nl_d, &
09231                               sphi_a, &
09232                               sphi_b, &
09233                               sphi_c, &
09234                               sphi_d, &
09235                               primitives, &
09236                               buffer1, buffer2)
09237        END SELECT
09238       CASE(2)
09239        SELECT CASE(n_d)
09240        CASE(0)
09241 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
09242         CALL contract_ffds(work,&
09243                  nl_a, nl_b, nl_c, nl_d, &
09244                   sphi_a, sphi_b, sphi_c, sphi_d, &
09245                   primitives,&
09246                   buffer1,buffer2 )
09247 #else
09248         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
09249                               work, nl_a, nl_b, nl_c, nl_d, &
09250                               sphi_a, &
09251                               sphi_b, &
09252                               sphi_c, &
09253                               sphi_d, &
09254                               primitives, &
09255                               buffer1, buffer2)
09256 #endif
09257        CASE(1)
09258 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
09259         CALL contract_ffdp(work,&
09260                  nl_a, nl_b, nl_c, nl_d, &
09261                   sphi_a, sphi_b, sphi_c, sphi_d, &
09262                   primitives,&
09263                   buffer1,buffer2 )
09264 #else
09265         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
09266                               work, nl_a, nl_b, nl_c, nl_d, &
09267                               sphi_a, &
09268                               sphi_b, &
09269                               sphi_c, &
09270                               sphi_d, &
09271                               primitives, &
09272                               buffer1, buffer2)
09273 #endif
09274        CASE(2)
09275 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
09276         CALL contract_ffdd(work,&
09277                  nl_a, nl_b, nl_c, nl_d, &
09278                   sphi_a, sphi_b, sphi_c, sphi_d, &
09279                   primitives,&
09280                   buffer1,buffer2 )
09281 #else
09282         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
09283                               work, nl_a, nl_b, nl_c, nl_d, &
09284                               sphi_a, &
09285                               sphi_b, &
09286                               sphi_c, &
09287                               sphi_d, &
09288                               primitives, &
09289                               buffer1, buffer2)
09290 #endif
09291        CASE(3)
09292 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
09293         CALL contract_ffdf(work,&
09294                  nl_a, nl_b, nl_c, nl_d, &
09295                   sphi_a, sphi_b, sphi_c, sphi_d, &
09296                   primitives,&
09297                   buffer1,buffer2 )
09298 #else
09299         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
09300                               work, nl_a, nl_b, nl_c, nl_d, &
09301                               sphi_a, &
09302                               sphi_b, &
09303                               sphi_c, &
09304                               sphi_d, &
09305                               primitives, &
09306                               buffer1, buffer2)
09307 #endif
09308        CASE(4)
09309 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
09310         CALL contract_ffdg(work,&
09311                  nl_a, nl_b, nl_c, nl_d, &
09312                   sphi_a, sphi_b, sphi_c, sphi_d, &
09313                   primitives,&
09314                   buffer1,buffer2 )
09315 #else
09316         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
09317                               work, nl_a, nl_b, nl_c, nl_d, &
09318                               sphi_a, &
09319                               sphi_b, &
09320                               sphi_c, &
09321                               sphi_d, &
09322                               primitives, &
09323                               buffer1, buffer2)
09324 #endif
09325        CASE DEFAULT
09326         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
09327                               work, nl_a, nl_b, nl_c, nl_d, &
09328                               sphi_a, &
09329                               sphi_b, &
09330                               sphi_c, &
09331                               sphi_d, &
09332                               primitives, &
09333                               buffer1, buffer2)
09334        END SELECT
09335       CASE(3)
09336        SELECT CASE(n_d)
09337        CASE(0)
09338 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
09339         CALL contract_fffs(work,&
09340                  nl_a, nl_b, nl_c, nl_d, &
09341                   sphi_a, sphi_b, sphi_c, sphi_d, &
09342                   primitives,&
09343                   buffer1,buffer2 )
09344 #else
09345         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
09346                               work, nl_a, nl_b, nl_c, nl_d, &
09347                               sphi_a, &
09348                               sphi_b, &
09349                               sphi_c, &
09350                               sphi_d, &
09351                               primitives, &
09352                               buffer1, buffer2)
09353 #endif
09354        CASE(1)
09355 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
09356         CALL contract_fffp(work,&
09357                  nl_a, nl_b, nl_c, nl_d, &
09358                   sphi_a, sphi_b, sphi_c, sphi_d, &
09359                   primitives,&
09360                   buffer1,buffer2 )
09361 #else
09362         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
09363                               work, nl_a, nl_b, nl_c, nl_d, &
09364                               sphi_a, &
09365                               sphi_b, &
09366                               sphi_c, &
09367                               sphi_d, &
09368                               primitives, &
09369                               buffer1, buffer2)
09370 #endif
09371        CASE(2)
09372 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
09373         CALL contract_fffd(work,&
09374                  nl_a, nl_b, nl_c, nl_d, &
09375                   sphi_a, sphi_b, sphi_c, sphi_d, &
09376                   primitives,&
09377                   buffer1,buffer2 )
09378 #else
09379         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
09380                               work, nl_a, nl_b, nl_c, nl_d, &
09381                               sphi_a, &
09382                               sphi_b, &
09383                               sphi_c, &
09384                               sphi_d, &
09385                               primitives, &
09386                               buffer1, buffer2)
09387 #endif
09388        CASE(3)
09389 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
09390         CALL contract_ffff(work,&
09391                  nl_a, nl_b, nl_c, nl_d, &
09392                   sphi_a, sphi_b, sphi_c, sphi_d, &
09393                   primitives,&
09394                   buffer1,buffer2 )
09395 #else
09396         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
09397                               work, nl_a, nl_b, nl_c, nl_d, &
09398                               sphi_a, &
09399                               sphi_b, &
09400                               sphi_c, &
09401                               sphi_d, &
09402                               primitives, &
09403                               buffer1, buffer2)
09404 #endif
09405        CASE(4)
09406 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
09407         CALL contract_fffg(work,&
09408                  nl_a, nl_b, nl_c, nl_d, &
09409                   sphi_a, sphi_b, sphi_c, sphi_d, &
09410                   primitives,&
09411                   buffer1,buffer2 )
09412 #else
09413         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
09414                               work, nl_a, nl_b, nl_c, nl_d, &
09415                               sphi_a, &
09416                               sphi_b, &
09417                               sphi_c, &
09418                               sphi_d, &
09419                               primitives, &
09420                               buffer1, buffer2)
09421 #endif
09422        CASE DEFAULT
09423         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
09424                               work, nl_a, nl_b, nl_c, nl_d, &
09425                               sphi_a, &
09426                               sphi_b, &
09427                               sphi_c, &
09428                               sphi_d, &
09429                               primitives, &
09430                               buffer1, buffer2)
09431        END SELECT
09432       CASE(4)
09433        SELECT CASE(n_d)
09434        CASE(0)
09435 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
09436         CALL contract_ffgs(work,&
09437                  nl_a, nl_b, nl_c, nl_d, &
09438                   sphi_a, sphi_b, sphi_c, sphi_d, &
09439                   primitives,&
09440                   buffer1,buffer2 )
09441 #else
09442         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
09443                               work, nl_a, nl_b, nl_c, nl_d, &
09444                               sphi_a, &
09445                               sphi_b, &
09446                               sphi_c, &
09447                               sphi_d, &
09448                               primitives, &
09449                               buffer1, buffer2)
09450 #endif
09451        CASE(1)
09452 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
09453         CALL contract_ffgp(work,&
09454                  nl_a, nl_b, nl_c, nl_d, &
09455                   sphi_a, sphi_b, sphi_c, sphi_d, &
09456                   primitives,&
09457                   buffer1,buffer2 )
09458 #else
09459         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
09460                               work, nl_a, nl_b, nl_c, nl_d, &
09461                               sphi_a, &
09462                               sphi_b, &
09463                               sphi_c, &
09464                               sphi_d, &
09465                               primitives, &
09466                               buffer1, buffer2)
09467 #endif
09468        CASE(2)
09469 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
09470         CALL contract_ffgd(work,&
09471                  nl_a, nl_b, nl_c, nl_d, &
09472                   sphi_a, sphi_b, sphi_c, sphi_d, &
09473                   primitives,&
09474                   buffer1,buffer2 )
09475 #else
09476         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
09477                               work, nl_a, nl_b, nl_c, nl_d, &
09478                               sphi_a, &
09479                               sphi_b, &
09480                               sphi_c, &
09481                               sphi_d, &
09482                               primitives, &
09483                               buffer1, buffer2)
09484 #endif
09485        CASE(3)
09486 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
09487         CALL contract_ffgf(work,&
09488                  nl_a, nl_b, nl_c, nl_d, &
09489                   sphi_a, sphi_b, sphi_c, sphi_d, &
09490                   primitives,&
09491                   buffer1,buffer2 )
09492 #else
09493         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
09494                               work, nl_a, nl_b, nl_c, nl_d, &
09495                               sphi_a, &
09496                               sphi_b, &
09497                               sphi_c, &
09498                               sphi_d, &
09499                               primitives, &
09500                               buffer1, buffer2)
09501 #endif
09502        CASE(4)
09503 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
09504         CALL contract_ffgg(work,&
09505                  nl_a, nl_b, nl_c, nl_d, &
09506                   sphi_a, sphi_b, sphi_c, sphi_d, &
09507                   primitives,&
09508                   buffer1,buffer2 )
09509 #else
09510         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
09511                               work, nl_a, nl_b, nl_c, nl_d, &
09512                               sphi_a, &
09513                               sphi_b, &
09514                               sphi_c, &
09515                               sphi_d, &
09516                               primitives, &
09517                               buffer1, buffer2)
09518 #endif
09519        CASE DEFAULT
09520         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
09521                               work, nl_a, nl_b, nl_c, nl_d, &
09522                               sphi_a, &
09523                               sphi_b, &
09524                               sphi_c, &
09525                               sphi_d, &
09526                               primitives, &
09527                               buffer1, buffer2)
09528        END SELECT
09529       CASE DEFAULT
09530        CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
09531                              work, nl_a, nl_b, nl_c, nl_d, &
09532                              sphi_a, &
09533                              sphi_b, &
09534                              sphi_c, &
09535                              sphi_d, &
09536                              primitives, &
09537                              buffer1, buffer2)
09538       END SELECT
09539      CASE(4)
09540       SELECT CASE(n_c)
09541       CASE(0)
09542        SELECT CASE(n_d)
09543        CASE(0)
09544 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
09545         CALL contract_fgss(work,&
09546                  nl_a, nl_b, nl_c, nl_d, &
09547                   sphi_a, sphi_b, sphi_c, sphi_d, &
09548                   primitives,&
09549                   buffer1,buffer2 )
09550 #else
09551         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
09552                               work, nl_a, nl_b, nl_c, nl_d, &
09553                               sphi_a, &
09554                               sphi_b, &
09555                               sphi_c, &
09556                               sphi_d, &
09557                               primitives, &
09558                               buffer1, buffer2)
09559 #endif
09560        CASE(1)
09561 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
09562         CALL contract_fgsp(work,&
09563                  nl_a, nl_b, nl_c, nl_d, &
09564                   sphi_a, sphi_b, sphi_c, sphi_d, &
09565                   primitives,&
09566                   buffer1,buffer2 )
09567 #else
09568         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
09569                               work, nl_a, nl_b, nl_c, nl_d, &
09570                               sphi_a, &
09571                               sphi_b, &
09572                               sphi_c, &
09573                               sphi_d, &
09574                               primitives, &
09575                               buffer1, buffer2)
09576 #endif
09577        CASE(2)
09578 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
09579         CALL contract_fgsd(work,&
09580                  nl_a, nl_b, nl_c, nl_d, &
09581                   sphi_a, sphi_b, sphi_c, sphi_d, &
09582                   primitives,&
09583                   buffer1,buffer2 )
09584 #else
09585         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
09586                               work, nl_a, nl_b, nl_c, nl_d, &
09587                               sphi_a, &
09588                               sphi_b, &
09589                               sphi_c, &
09590                               sphi_d, &
09591                               primitives, &
09592                               buffer1, buffer2)
09593 #endif
09594        CASE(3)
09595 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
09596         CALL contract_fgsf(work,&
09597                  nl_a, nl_b, nl_c, nl_d, &
09598                   sphi_a, sphi_b, sphi_c, sphi_d, &
09599                   primitives,&
09600                   buffer1,buffer2 )
09601 #else
09602         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
09603                               work, nl_a, nl_b, nl_c, nl_d, &
09604                               sphi_a, &
09605                               sphi_b, &
09606                               sphi_c, &
09607                               sphi_d, &
09608                               primitives, &
09609                               buffer1, buffer2)
09610 #endif
09611        CASE(4)
09612 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
09613         CALL contract_fgsg(work,&
09614                  nl_a, nl_b, nl_c, nl_d, &
09615                   sphi_a, sphi_b, sphi_c, sphi_d, &
09616                   primitives,&
09617                   buffer1,buffer2 )
09618 #else
09619         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
09620                               work, nl_a, nl_b, nl_c, nl_d, &
09621                               sphi_a, &
09622                               sphi_b, &
09623                               sphi_c, &
09624                               sphi_d, &
09625                               primitives, &
09626                               buffer1, buffer2)
09627 #endif
09628        CASE DEFAULT
09629         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
09630                               work, nl_a, nl_b, nl_c, nl_d, &
09631                               sphi_a, &
09632                               sphi_b, &
09633                               sphi_c, &
09634                               sphi_d, &
09635                               primitives, &
09636                               buffer1, buffer2)
09637        END SELECT
09638       CASE(1)
09639        SELECT CASE(n_d)
09640        CASE(0)
09641 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
09642         CALL contract_fgps(work,&
09643                  nl_a, nl_b, nl_c, nl_d, &
09644                   sphi_a, sphi_b, sphi_c, sphi_d, &
09645                   primitives,&
09646                   buffer1,buffer2 )
09647 #else
09648         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
09649                               work, nl_a, nl_b, nl_c, nl_d, &
09650                               sphi_a, &
09651                               sphi_b, &
09652                               sphi_c, &
09653                               sphi_d, &
09654                               primitives, &
09655                               buffer1, buffer2)
09656 #endif
09657        CASE(1)
09658 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
09659         CALL contract_fgpp(work,&
09660                  nl_a, nl_b, nl_c, nl_d, &
09661                   sphi_a, sphi_b, sphi_c, sphi_d, &
09662                   primitives,&
09663                   buffer1,buffer2 )
09664 #else
09665         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
09666                               work, nl_a, nl_b, nl_c, nl_d, &
09667                               sphi_a, &
09668                               sphi_b, &
09669                               sphi_c, &
09670                               sphi_d, &
09671                               primitives, &
09672                               buffer1, buffer2)
09673 #endif
09674        CASE(2)
09675 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
09676         CALL contract_fgpd(work,&
09677                  nl_a, nl_b, nl_c, nl_d, &
09678                   sphi_a, sphi_b, sphi_c, sphi_d, &
09679                   primitives,&
09680                   buffer1,buffer2 )
09681 #else
09682         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
09683                               work, nl_a, nl_b, nl_c, nl_d, &
09684                               sphi_a, &
09685                               sphi_b, &
09686                               sphi_c, &
09687                               sphi_d, &
09688                               primitives, &
09689                               buffer1, buffer2)
09690 #endif
09691        CASE(3)
09692 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
09693         CALL contract_fgpf(work,&
09694                  nl_a, nl_b, nl_c, nl_d, &
09695                   sphi_a, sphi_b, sphi_c, sphi_d, &
09696                   primitives,&
09697                   buffer1,buffer2 )
09698 #else
09699         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
09700                               work, nl_a, nl_b, nl_c, nl_d, &
09701                               sphi_a, &
09702                               sphi_b, &
09703                               sphi_c, &
09704                               sphi_d, &
09705                               primitives, &
09706                               buffer1, buffer2)
09707 #endif
09708        CASE(4)
09709 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
09710         CALL contract_fgpg(work,&
09711                  nl_a, nl_b, nl_c, nl_d, &
09712                   sphi_a, sphi_b, sphi_c, sphi_d, &
09713                   primitives,&
09714                   buffer1,buffer2 )
09715 #else
09716         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
09717                               work, nl_a, nl_b, nl_c, nl_d, &
09718                               sphi_a, &
09719                               sphi_b, &
09720                               sphi_c, &
09721                               sphi_d, &
09722                               primitives, &
09723                               buffer1, buffer2)
09724 #endif
09725        CASE DEFAULT
09726         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
09727                               work, nl_a, nl_b, nl_c, nl_d, &
09728                               sphi_a, &
09729                               sphi_b, &
09730                               sphi_c, &
09731                               sphi_d, &
09732                               primitives, &
09733                               buffer1, buffer2)
09734        END SELECT
09735       CASE(2)
09736        SELECT CASE(n_d)
09737        CASE(0)
09738 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
09739         CALL contract_fgds(work,&
09740                  nl_a, nl_b, nl_c, nl_d, &
09741                   sphi_a, sphi_b, sphi_c, sphi_d, &
09742                   primitives,&
09743                   buffer1,buffer2 )
09744 #else
09745         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
09746                               work, nl_a, nl_b, nl_c, nl_d, &
09747                               sphi_a, &
09748                               sphi_b, &
09749                               sphi_c, &
09750                               sphi_d, &
09751                               primitives, &
09752                               buffer1, buffer2)
09753 #endif
09754        CASE(1)
09755 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
09756         CALL contract_fgdp(work,&
09757                  nl_a, nl_b, nl_c, nl_d, &
09758                   sphi_a, sphi_b, sphi_c, sphi_d, &
09759                   primitives,&
09760                   buffer1,buffer2 )
09761 #else
09762         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
09763                               work, nl_a, nl_b, nl_c, nl_d, &
09764                               sphi_a, &
09765                               sphi_b, &
09766                               sphi_c, &
09767                               sphi_d, &
09768                               primitives, &
09769                               buffer1, buffer2)
09770 #endif
09771        CASE(2)
09772 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
09773         CALL contract_fgdd(work,&
09774                  nl_a, nl_b, nl_c, nl_d, &
09775                   sphi_a, sphi_b, sphi_c, sphi_d, &
09776                   primitives,&
09777                   buffer1,buffer2 )
09778 #else
09779         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
09780                               work, nl_a, nl_b, nl_c, nl_d, &
09781                               sphi_a, &
09782                               sphi_b, &
09783                               sphi_c, &
09784                               sphi_d, &
09785                               primitives, &
09786                               buffer1, buffer2)
09787 #endif
09788        CASE(3)
09789 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
09790         CALL contract_fgdf(work,&
09791                  nl_a, nl_b, nl_c, nl_d, &
09792                   sphi_a, sphi_b, sphi_c, sphi_d, &
09793                   primitives,&
09794                   buffer1,buffer2 )
09795 #else
09796         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
09797                               work, nl_a, nl_b, nl_c, nl_d, &
09798                               sphi_a, &
09799                               sphi_b, &
09800                               sphi_c, &
09801                               sphi_d, &
09802                               primitives, &
09803                               buffer1, buffer2)
09804 #endif
09805        CASE(4)
09806 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
09807         CALL contract_fgdg(work,&
09808                  nl_a, nl_b, nl_c, nl_d, &
09809                   sphi_a, sphi_b, sphi_c, sphi_d, &
09810                   primitives,&
09811                   buffer1,buffer2 )
09812 #else
09813         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
09814                               work, nl_a, nl_b, nl_c, nl_d, &
09815                               sphi_a, &
09816                               sphi_b, &
09817                               sphi_c, &
09818                               sphi_d, &
09819                               primitives, &
09820                               buffer1, buffer2)
09821 #endif
09822        CASE DEFAULT
09823         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
09824                               work, nl_a, nl_b, nl_c, nl_d, &
09825                               sphi_a, &
09826                               sphi_b, &
09827                               sphi_c, &
09828                               sphi_d, &
09829                               primitives, &
09830                               buffer1, buffer2)
09831        END SELECT
09832       CASE(3)
09833        SELECT CASE(n_d)
09834        CASE(0)
09835 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
09836         CALL contract_fgfs(work,&
09837                  nl_a, nl_b, nl_c, nl_d, &
09838                   sphi_a, sphi_b, sphi_c, sphi_d, &
09839                   primitives,&
09840                   buffer1,buffer2 )
09841 #else
09842         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
09843                               work, nl_a, nl_b, nl_c, nl_d, &
09844                               sphi_a, &
09845                               sphi_b, &
09846                               sphi_c, &
09847                               sphi_d, &
09848                               primitives, &
09849                               buffer1, buffer2)
09850 #endif
09851        CASE(1)
09852 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
09853         CALL contract_fgfp(work,&
09854                  nl_a, nl_b, nl_c, nl_d, &
09855                   sphi_a, sphi_b, sphi_c, sphi_d, &
09856                   primitives,&
09857                   buffer1,buffer2 )
09858 #else
09859         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
09860                               work, nl_a, nl_b, nl_c, nl_d, &
09861                               sphi_a, &
09862                               sphi_b, &
09863                               sphi_c, &
09864                               sphi_d, &
09865                               primitives, &
09866                               buffer1, buffer2)
09867 #endif
09868        CASE(2)
09869 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
09870         CALL contract_fgfd(work,&
09871                  nl_a, nl_b, nl_c, nl_d, &
09872                   sphi_a, sphi_b, sphi_c, sphi_d, &
09873                   primitives,&
09874                   buffer1,buffer2 )
09875 #else
09876         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
09877                               work, nl_a, nl_b, nl_c, nl_d, &
09878                               sphi_a, &
09879                               sphi_b, &
09880                               sphi_c, &
09881                               sphi_d, &
09882                               primitives, &
09883                               buffer1, buffer2)
09884 #endif
09885        CASE(3)
09886 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
09887         CALL contract_fgff(work,&
09888                  nl_a, nl_b, nl_c, nl_d, &
09889                   sphi_a, sphi_b, sphi_c, sphi_d, &
09890                   primitives,&
09891                   buffer1,buffer2 )
09892 #else
09893         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
09894                               work, nl_a, nl_b, nl_c, nl_d, &
09895                               sphi_a, &
09896                               sphi_b, &
09897                               sphi_c, &
09898                               sphi_d, &
09899                               primitives, &
09900                               buffer1, buffer2)
09901 #endif
09902        CASE(4)
09903 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
09904         CALL contract_fgfg(work,&
09905                  nl_a, nl_b, nl_c, nl_d, &
09906                   sphi_a, sphi_b, sphi_c, sphi_d, &
09907                   primitives,&
09908                   buffer1,buffer2 )
09909 #else
09910         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
09911                               work, nl_a, nl_b, nl_c, nl_d, &
09912                               sphi_a, &
09913                               sphi_b, &
09914                               sphi_c, &
09915                               sphi_d, &
09916                               primitives, &
09917                               buffer1, buffer2)
09918 #endif
09919        CASE DEFAULT
09920         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
09921                               work, nl_a, nl_b, nl_c, nl_d, &
09922                               sphi_a, &
09923                               sphi_b, &
09924                               sphi_c, &
09925                               sphi_d, &
09926                               primitives, &
09927                               buffer1, buffer2)
09928        END SELECT
09929       CASE(4)
09930        SELECT CASE(n_d)
09931        CASE(0)
09932 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
09933         CALL contract_fggs(work,&
09934                  nl_a, nl_b, nl_c, nl_d, &
09935                   sphi_a, sphi_b, sphi_c, sphi_d, &
09936                   primitives,&
09937                   buffer1,buffer2 )
09938 #else
09939         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
09940                               work, nl_a, nl_b, nl_c, nl_d, &
09941                               sphi_a, &
09942                               sphi_b, &
09943                               sphi_c, &
09944                               sphi_d, &
09945                               primitives, &
09946                               buffer1, buffer2)
09947 #endif
09948        CASE(1)
09949 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
09950         CALL contract_fggp(work,&
09951                  nl_a, nl_b, nl_c, nl_d, &
09952                   sphi_a, sphi_b, sphi_c, sphi_d, &
09953                   primitives,&
09954                   buffer1,buffer2 )
09955 #else
09956         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
09957                               work, nl_a, nl_b, nl_c, nl_d, &
09958                               sphi_a, &
09959                               sphi_b, &
09960                               sphi_c, &
09961                               sphi_d, &
09962                               primitives, &
09963                               buffer1, buffer2)
09964 #endif
09965        CASE(2)
09966 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
09967         CALL contract_fggd(work,&
09968                  nl_a, nl_b, nl_c, nl_d, &
09969                   sphi_a, sphi_b, sphi_c, sphi_d, &
09970                   primitives,&
09971                   buffer1,buffer2 )
09972 #else
09973         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
09974                               work, nl_a, nl_b, nl_c, nl_d, &
09975                               sphi_a, &
09976                               sphi_b, &
09977                               sphi_c, &
09978                               sphi_d, &
09979                               primitives, &
09980                               buffer1, buffer2)
09981 #endif
09982        CASE(3)
09983 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
09984         CALL contract_fggf(work,&
09985                  nl_a, nl_b, nl_c, nl_d, &
09986                   sphi_a, sphi_b, sphi_c, sphi_d, &
09987                   primitives,&
09988                   buffer1,buffer2 )
09989 #else
09990         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
09991                               work, nl_a, nl_b, nl_c, nl_d, &
09992                               sphi_a, &
09993                               sphi_b, &
09994                               sphi_c, &
09995                               sphi_d, &
09996                               primitives, &
09997                               buffer1, buffer2)
09998 #endif
09999        CASE(4)
10000 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
10001         CALL contract_fggg(work,&
10002                  nl_a, nl_b, nl_c, nl_d, &
10003                   sphi_a, sphi_b, sphi_c, sphi_d, &
10004                   primitives,&
10005                   buffer1,buffer2 )
10006 #else
10007         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
10008                               work, nl_a, nl_b, nl_c, nl_d, &
10009                               sphi_a, &
10010                               sphi_b, &
10011                               sphi_c, &
10012                               sphi_d, &
10013                               primitives, &
10014                               buffer1, buffer2)
10015 #endif
10016        CASE DEFAULT
10017         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
10018                               work, nl_a, nl_b, nl_c, nl_d, &
10019                               sphi_a, &
10020                               sphi_b, &
10021                               sphi_c, &
10022                               sphi_d, &
10023                               primitives, &
10024                               buffer1, buffer2)
10025        END SELECT
10026       CASE DEFAULT
10027        CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
10028                              work, nl_a, nl_b, nl_c, nl_d, &
10029                              sphi_a, &
10030                              sphi_b, &
10031                              sphi_c, &
10032                              sphi_d, &
10033                              primitives, &
10034                              buffer1, buffer2)
10035       END SELECT
10036      CASE DEFAULT
10037       CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
10038                             work, nl_a, nl_b, nl_c, nl_d, &
10039                             sphi_a, &
10040                             sphi_b, &
10041                             sphi_c, &
10042                             sphi_d, &
10043                             primitives, &
10044                             buffer1, buffer2)
10045      END SELECT
10046     CASE(4)
10047      SELECT CASE(n_b)
10048      CASE(0)
10049       SELECT CASE(n_c)
10050       CASE(0)
10051        SELECT CASE(n_d)
10052        CASE(0)
10053 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
10054         CALL contract_gsss(work,&
10055                  nl_a, nl_b, nl_c, nl_d, &
10056                   sphi_a, sphi_b, sphi_c, sphi_d, &
10057                   primitives,&
10058                   buffer1,buffer2 )
10059 #else
10060         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
10061                               work, nl_a, nl_b, nl_c, nl_d, &
10062                               sphi_a, &
10063                               sphi_b, &
10064                               sphi_c, &
10065                               sphi_d, &
10066                               primitives, &
10067                               buffer1, buffer2)
10068 #endif
10069        CASE(1)
10070 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
10071         CALL contract_gssp(work,&
10072                  nl_a, nl_b, nl_c, nl_d, &
10073                   sphi_a, sphi_b, sphi_c, sphi_d, &
10074                   primitives,&
10075                   buffer1,buffer2 )
10076 #else
10077         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
10078                               work, nl_a, nl_b, nl_c, nl_d, &
10079                               sphi_a, &
10080                               sphi_b, &
10081                               sphi_c, &
10082                               sphi_d, &
10083                               primitives, &
10084                               buffer1, buffer2)
10085 #endif
10086        CASE(2)
10087 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
10088         CALL contract_gssd(work,&
10089                  nl_a, nl_b, nl_c, nl_d, &
10090                   sphi_a, sphi_b, sphi_c, sphi_d, &
10091                   primitives,&
10092                   buffer1,buffer2 )
10093 #else
10094         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
10095                               work, nl_a, nl_b, nl_c, nl_d, &
10096                               sphi_a, &
10097                               sphi_b, &
10098                               sphi_c, &
10099                               sphi_d, &
10100                               primitives, &
10101                               buffer1, buffer2)
10102 #endif
10103        CASE(3)
10104 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
10105         CALL contract_gssf(work,&
10106                  nl_a, nl_b, nl_c, nl_d, &
10107                   sphi_a, sphi_b, sphi_c, sphi_d, &
10108                   primitives,&
10109                   buffer1,buffer2 )
10110 #else
10111         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
10112                               work, nl_a, nl_b, nl_c, nl_d, &
10113                               sphi_a, &
10114                               sphi_b, &
10115                               sphi_c, &
10116                               sphi_d, &
10117                               primitives, &
10118                               buffer1, buffer2)
10119 #endif
10120        CASE(4)
10121 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
10122         CALL contract_gssg(work,&
10123                  nl_a, nl_b, nl_c, nl_d, &
10124                   sphi_a, sphi_b, sphi_c, sphi_d, &
10125                   primitives,&
10126                   buffer1,buffer2 )
10127 #else
10128         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
10129                               work, nl_a, nl_b, nl_c, nl_d, &
10130                               sphi_a, &
10131                               sphi_b, &
10132                               sphi_c, &
10133                               sphi_d, &
10134                               primitives, &
10135                               buffer1, buffer2)
10136 #endif
10137        CASE DEFAULT
10138         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
10139                               work, nl_a, nl_b, nl_c, nl_d, &
10140                               sphi_a, &
10141                               sphi_b, &
10142                               sphi_c, &
10143                               sphi_d, &
10144                               primitives, &
10145                               buffer1, buffer2)
10146        END SELECT
10147       CASE(1)
10148        SELECT CASE(n_d)
10149        CASE(0)
10150 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
10151         CALL contract_gsps(work,&
10152                  nl_a, nl_b, nl_c, nl_d, &
10153                   sphi_a, sphi_b, sphi_c, sphi_d, &
10154                   primitives,&
10155                   buffer1,buffer2 )
10156 #else
10157         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
10158                               work, nl_a, nl_b, nl_c, nl_d, &
10159                               sphi_a, &
10160                               sphi_b, &
10161                               sphi_c, &
10162                               sphi_d, &
10163                               primitives, &
10164                               buffer1, buffer2)
10165 #endif
10166        CASE(1)
10167 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
10168         CALL contract_gspp(work,&
10169                  nl_a, nl_b, nl_c, nl_d, &
10170                   sphi_a, sphi_b, sphi_c, sphi_d, &
10171                   primitives,&
10172                   buffer1,buffer2 )
10173 #else
10174         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
10175                               work, nl_a, nl_b, nl_c, nl_d, &
10176                               sphi_a, &
10177                               sphi_b, &
10178                               sphi_c, &
10179                               sphi_d, &
10180                               primitives, &
10181                               buffer1, buffer2)
10182 #endif
10183        CASE(2)
10184 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
10185         CALL contract_gspd(work,&
10186                  nl_a, nl_b, nl_c, nl_d, &
10187                   sphi_a, sphi_b, sphi_c, sphi_d, &
10188                   primitives,&
10189                   buffer1,buffer2 )
10190 #else
10191         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
10192                               work, nl_a, nl_b, nl_c, nl_d, &
10193                               sphi_a, &
10194                               sphi_b, &
10195                               sphi_c, &
10196                               sphi_d, &
10197                               primitives, &
10198                               buffer1, buffer2)
10199 #endif
10200        CASE(3)
10201 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
10202         CALL contract_gspf(work,&
10203                  nl_a, nl_b, nl_c, nl_d, &
10204                   sphi_a, sphi_b, sphi_c, sphi_d, &
10205                   primitives,&
10206                   buffer1,buffer2 )
10207 #else
10208         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
10209                               work, nl_a, nl_b, nl_c, nl_d, &
10210                               sphi_a, &
10211                               sphi_b, &
10212                               sphi_c, &
10213                               sphi_d, &
10214                               primitives, &
10215                               buffer1, buffer2)
10216 #endif
10217        CASE(4)
10218 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
10219         CALL contract_gspg(work,&
10220                  nl_a, nl_b, nl_c, nl_d, &
10221                   sphi_a, sphi_b, sphi_c, sphi_d, &
10222                   primitives,&
10223                   buffer1,buffer2 )
10224 #else
10225         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
10226                               work, nl_a, nl_b, nl_c, nl_d, &
10227                               sphi_a, &
10228                               sphi_b, &
10229                               sphi_c, &
10230                               sphi_d, &
10231                               primitives, &
10232                               buffer1, buffer2)
10233 #endif
10234        CASE DEFAULT
10235         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
10236                               work, nl_a, nl_b, nl_c, nl_d, &
10237                               sphi_a, &
10238                               sphi_b, &
10239                               sphi_c, &
10240                               sphi_d, &
10241                               primitives, &
10242                               buffer1, buffer2)
10243        END SELECT
10244       CASE(2)
10245        SELECT CASE(n_d)
10246        CASE(0)
10247 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
10248         CALL contract_gsds(work,&
10249                  nl_a, nl_b, nl_c, nl_d, &
10250                   sphi_a, sphi_b, sphi_c, sphi_d, &
10251                   primitives,&
10252                   buffer1,buffer2 )
10253 #else
10254         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
10255                               work, nl_a, nl_b, nl_c, nl_d, &
10256                               sphi_a, &
10257                               sphi_b, &
10258                               sphi_c, &
10259                               sphi_d, &
10260                               primitives, &
10261                               buffer1, buffer2)
10262 #endif
10263        CASE(1)
10264 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
10265         CALL contract_gsdp(work,&
10266                  nl_a, nl_b, nl_c, nl_d, &
10267                   sphi_a, sphi_b, sphi_c, sphi_d, &
10268                   primitives,&
10269                   buffer1,buffer2 )
10270 #else
10271         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
10272                               work, nl_a, nl_b, nl_c, nl_d, &
10273                               sphi_a, &
10274                               sphi_b, &
10275                               sphi_c, &
10276                               sphi_d, &
10277                               primitives, &
10278                               buffer1, buffer2)
10279 #endif
10280        CASE(2)
10281 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
10282         CALL contract_gsdd(work,&
10283                  nl_a, nl_b, nl_c, nl_d, &
10284                   sphi_a, sphi_b, sphi_c, sphi_d, &
10285                   primitives,&
10286                   buffer1,buffer2 )
10287 #else
10288         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
10289                               work, nl_a, nl_b, nl_c, nl_d, &
10290                               sphi_a, &
10291                               sphi_b, &
10292                               sphi_c, &
10293                               sphi_d, &
10294                               primitives, &
10295                               buffer1, buffer2)
10296 #endif
10297        CASE(3)
10298 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
10299         CALL contract_gsdf(work,&
10300                  nl_a, nl_b, nl_c, nl_d, &
10301                   sphi_a, sphi_b, sphi_c, sphi_d, &
10302                   primitives,&
10303                   buffer1,buffer2 )
10304 #else
10305         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
10306                               work, nl_a, nl_b, nl_c, nl_d, &
10307                               sphi_a, &
10308                               sphi_b, &
10309                               sphi_c, &
10310                               sphi_d, &
10311                               primitives, &
10312                               buffer1, buffer2)
10313 #endif
10314        CASE(4)
10315 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
10316         CALL contract_gsdg(work,&
10317                  nl_a, nl_b, nl_c, nl_d, &
10318                   sphi_a, sphi_b, sphi_c, sphi_d, &
10319                   primitives,&
10320                   buffer1,buffer2 )
10321 #else
10322         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
10323                               work, nl_a, nl_b, nl_c, nl_d, &
10324                               sphi_a, &
10325                               sphi_b, &
10326                               sphi_c, &
10327                               sphi_d, &
10328                               primitives, &
10329                               buffer1, buffer2)
10330 #endif
10331        CASE DEFAULT
10332         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
10333                               work, nl_a, nl_b, nl_c, nl_d, &
10334                               sphi_a, &
10335                               sphi_b, &
10336                               sphi_c, &
10337                               sphi_d, &
10338                               primitives, &
10339                               buffer1, buffer2)
10340        END SELECT
10341       CASE(3)
10342        SELECT CASE(n_d)
10343        CASE(0)
10344 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
10345         CALL contract_gsfs(work,&
10346                  nl_a, nl_b, nl_c, nl_d, &
10347                   sphi_a, sphi_b, sphi_c, sphi_d, &
10348                   primitives,&
10349                   buffer1,buffer2 )
10350 #else
10351         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
10352                               work, nl_a, nl_b, nl_c, nl_d, &
10353                               sphi_a, &
10354                               sphi_b, &
10355                               sphi_c, &
10356                               sphi_d, &
10357                               primitives, &
10358                               buffer1, buffer2)
10359 #endif
10360        CASE(1)
10361 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
10362         CALL contract_gsfp(work,&
10363                  nl_a, nl_b, nl_c, nl_d, &
10364                   sphi_a, sphi_b, sphi_c, sphi_d, &
10365                   primitives,&
10366                   buffer1,buffer2 )
10367 #else
10368         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
10369                               work, nl_a, nl_b, nl_c, nl_d, &
10370                               sphi_a, &
10371                               sphi_b, &
10372                               sphi_c, &
10373                               sphi_d, &
10374                               primitives, &
10375                               buffer1, buffer2)
10376 #endif
10377        CASE(2)
10378 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
10379         CALL contract_gsfd(work,&
10380                  nl_a, nl_b, nl_c, nl_d, &
10381                   sphi_a, sphi_b, sphi_c, sphi_d, &
10382                   primitives,&
10383                   buffer1,buffer2 )
10384 #else
10385         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
10386                               work, nl_a, nl_b, nl_c, nl_d, &
10387                               sphi_a, &
10388                               sphi_b, &
10389                               sphi_c, &
10390                               sphi_d, &
10391                               primitives, &
10392                               buffer1, buffer2)
10393 #endif
10394        CASE(3)
10395 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
10396         CALL contract_gsff(work,&
10397                  nl_a, nl_b, nl_c, nl_d, &
10398                   sphi_a, sphi_b, sphi_c, sphi_d, &
10399                   primitives,&
10400                   buffer1,buffer2 )
10401 #else
10402         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
10403                               work, nl_a, nl_b, nl_c, nl_d, &
10404                               sphi_a, &
10405                               sphi_b, &
10406                               sphi_c, &
10407                               sphi_d, &
10408                               primitives, &
10409                               buffer1, buffer2)
10410 #endif
10411        CASE(4)
10412 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
10413         CALL contract_gsfg(work,&
10414                  nl_a, nl_b, nl_c, nl_d, &
10415                   sphi_a, sphi_b, sphi_c, sphi_d, &
10416                   primitives,&
10417                   buffer1,buffer2 )
10418 #else
10419         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
10420                               work, nl_a, nl_b, nl_c, nl_d, &
10421                               sphi_a, &
10422                               sphi_b, &
10423                               sphi_c, &
10424                               sphi_d, &
10425                               primitives, &
10426                               buffer1, buffer2)
10427 #endif
10428        CASE DEFAULT
10429         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
10430                               work, nl_a, nl_b, nl_c, nl_d, &
10431                               sphi_a, &
10432                               sphi_b, &
10433                               sphi_c, &
10434                               sphi_d, &
10435                               primitives, &
10436                               buffer1, buffer2)
10437        END SELECT
10438       CASE(4)
10439        SELECT CASE(n_d)
10440        CASE(0)
10441 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
10442         CALL contract_gsgs(work,&
10443                  nl_a, nl_b, nl_c, nl_d, &
10444                   sphi_a, sphi_b, sphi_c, sphi_d, &
10445                   primitives,&
10446                   buffer1,buffer2 )
10447 #else
10448         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
10449                               work, nl_a, nl_b, nl_c, nl_d, &
10450                               sphi_a, &
10451                               sphi_b, &
10452                               sphi_c, &
10453                               sphi_d, &
10454                               primitives, &
10455                               buffer1, buffer2)
10456 #endif
10457        CASE(1)
10458 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
10459         CALL contract_gsgp(work,&
10460                  nl_a, nl_b, nl_c, nl_d, &
10461                   sphi_a, sphi_b, sphi_c, sphi_d, &
10462                   primitives,&
10463                   buffer1,buffer2 )
10464 #else
10465         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
10466                               work, nl_a, nl_b, nl_c, nl_d, &
10467                               sphi_a, &
10468                               sphi_b, &
10469                               sphi_c, &
10470                               sphi_d, &
10471                               primitives, &
10472                               buffer1, buffer2)
10473 #endif
10474        CASE(2)
10475 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
10476         CALL contract_gsgd(work,&
10477                  nl_a, nl_b, nl_c, nl_d, &
10478                   sphi_a, sphi_b, sphi_c, sphi_d, &
10479                   primitives,&
10480                   buffer1,buffer2 )
10481 #else
10482         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
10483                               work, nl_a, nl_b, nl_c, nl_d, &
10484                               sphi_a, &
10485                               sphi_b, &
10486                               sphi_c, &
10487                               sphi_d, &
10488                               primitives, &
10489                               buffer1, buffer2)
10490 #endif
10491        CASE(3)
10492 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
10493         CALL contract_gsgf(work,&
10494                  nl_a, nl_b, nl_c, nl_d, &
10495                   sphi_a, sphi_b, sphi_c, sphi_d, &
10496                   primitives,&
10497                   buffer1,buffer2 )
10498 #else
10499         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
10500                               work, nl_a, nl_b, nl_c, nl_d, &
10501                               sphi_a, &
10502                               sphi_b, &
10503                               sphi_c, &
10504                               sphi_d, &
10505                               primitives, &
10506                               buffer1, buffer2)
10507 #endif
10508        CASE(4)
10509 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
10510         CALL contract_gsgg(work,&
10511                  nl_a, nl_b, nl_c, nl_d, &
10512                   sphi_a, sphi_b, sphi_c, sphi_d, &
10513                   primitives,&
10514                   buffer1,buffer2 )
10515 #else
10516         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
10517                               work, nl_a, nl_b, nl_c, nl_d, &
10518                               sphi_a, &
10519                               sphi_b, &
10520                               sphi_c, &
10521                               sphi_d, &
10522                               primitives, &
10523                               buffer1, buffer2)
10524 #endif
10525        CASE DEFAULT
10526         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
10527                               work, nl_a, nl_b, nl_c, nl_d, &
10528                               sphi_a, &
10529                               sphi_b, &
10530                               sphi_c, &
10531                               sphi_d, &
10532                               primitives, &
10533                               buffer1, buffer2)
10534        END SELECT
10535       CASE DEFAULT
10536        CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
10537                              work, nl_a, nl_b, nl_c, nl_d, &
10538                              sphi_a, &
10539                              sphi_b, &
10540                              sphi_c, &
10541                              sphi_d, &
10542                              primitives, &
10543                              buffer1, buffer2)
10544       END SELECT
10545      CASE(1)
10546       SELECT CASE(n_c)
10547       CASE(0)
10548        SELECT CASE(n_d)
10549        CASE(0)
10550 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
10551         CALL contract_gpss(work,&
10552                  nl_a, nl_b, nl_c, nl_d, &
10553                   sphi_a, sphi_b, sphi_c, sphi_d, &
10554                   primitives,&
10555                   buffer1,buffer2 )
10556 #else
10557         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
10558                               work, nl_a, nl_b, nl_c, nl_d, &
10559                               sphi_a, &
10560                               sphi_b, &
10561                               sphi_c, &
10562                               sphi_d, &
10563                               primitives, &
10564                               buffer1, buffer2)
10565 #endif
10566        CASE(1)
10567 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
10568         CALL contract_gpsp(work,&
10569                  nl_a, nl_b, nl_c, nl_d, &
10570                   sphi_a, sphi_b, sphi_c, sphi_d, &
10571                   primitives,&
10572                   buffer1,buffer2 )
10573 #else
10574         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
10575                               work, nl_a, nl_b, nl_c, nl_d, &
10576                               sphi_a, &
10577                               sphi_b, &
10578                               sphi_c, &
10579                               sphi_d, &
10580                               primitives, &
10581                               buffer1, buffer2)
10582 #endif
10583        CASE(2)
10584 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
10585         CALL contract_gpsd(work,&
10586                  nl_a, nl_b, nl_c, nl_d, &
10587                   sphi_a, sphi_b, sphi_c, sphi_d, &
10588                   primitives,&
10589                   buffer1,buffer2 )
10590 #else
10591         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
10592                               work, nl_a, nl_b, nl_c, nl_d, &
10593                               sphi_a, &
10594                               sphi_b, &
10595                               sphi_c, &
10596                               sphi_d, &
10597                               primitives, &
10598                               buffer1, buffer2)
10599 #endif
10600        CASE(3)
10601 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
10602         CALL contract_gpsf(work,&
10603                  nl_a, nl_b, nl_c, nl_d, &
10604                   sphi_a, sphi_b, sphi_c, sphi_d, &
10605                   primitives,&
10606                   buffer1,buffer2 )
10607 #else
10608         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
10609                               work, nl_a, nl_b, nl_c, nl_d, &
10610                               sphi_a, &
10611                               sphi_b, &
10612                               sphi_c, &
10613                               sphi_d, &
10614                               primitives, &
10615                               buffer1, buffer2)
10616 #endif
10617        CASE(4)
10618 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
10619         CALL contract_gpsg(work,&
10620                  nl_a, nl_b, nl_c, nl_d, &
10621                   sphi_a, sphi_b, sphi_c, sphi_d, &
10622                   primitives,&
10623                   buffer1,buffer2 )
10624 #else
10625         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
10626                               work, nl_a, nl_b, nl_c, nl_d, &
10627                               sphi_a, &
10628                               sphi_b, &
10629                               sphi_c, &
10630                               sphi_d, &
10631                               primitives, &
10632                               buffer1, buffer2)
10633 #endif
10634        CASE DEFAULT
10635         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
10636                               work, nl_a, nl_b, nl_c, nl_d, &
10637                               sphi_a, &
10638                               sphi_b, &
10639                               sphi_c, &
10640                               sphi_d, &
10641                               primitives, &
10642                               buffer1, buffer2)
10643        END SELECT
10644       CASE(1)
10645        SELECT CASE(n_d)
10646        CASE(0)
10647 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
10648         CALL contract_gpps(work,&
10649                  nl_a, nl_b, nl_c, nl_d, &
10650                   sphi_a, sphi_b, sphi_c, sphi_d, &
10651                   primitives,&
10652                   buffer1,buffer2 )
10653 #else
10654         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
10655                               work, nl_a, nl_b, nl_c, nl_d, &
10656                               sphi_a, &
10657                               sphi_b, &
10658                               sphi_c, &
10659                               sphi_d, &
10660                               primitives, &
10661                               buffer1, buffer2)
10662 #endif
10663        CASE(1)
10664 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
10665         CALL contract_gppp(work,&
10666                  nl_a, nl_b, nl_c, nl_d, &
10667                   sphi_a, sphi_b, sphi_c, sphi_d, &
10668                   primitives,&
10669                   buffer1,buffer2 )
10670 #else
10671         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
10672                               work, nl_a, nl_b, nl_c, nl_d, &
10673                               sphi_a, &
10674                               sphi_b, &
10675                               sphi_c, &
10676                               sphi_d, &
10677                               primitives, &
10678                               buffer1, buffer2)
10679 #endif
10680        CASE(2)
10681 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
10682         CALL contract_gppd(work,&
10683                  nl_a, nl_b, nl_c, nl_d, &
10684                   sphi_a, sphi_b, sphi_c, sphi_d, &
10685                   primitives,&
10686                   buffer1,buffer2 )
10687 #else
10688         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
10689                               work, nl_a, nl_b, nl_c, nl_d, &
10690                               sphi_a, &
10691                               sphi_b, &
10692                               sphi_c, &
10693                               sphi_d, &
10694                               primitives, &
10695                               buffer1, buffer2)
10696 #endif
10697        CASE(3)
10698 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
10699         CALL contract_gppf(work,&
10700                  nl_a, nl_b, nl_c, nl_d, &
10701                   sphi_a, sphi_b, sphi_c, sphi_d, &
10702                   primitives,&
10703                   buffer1,buffer2 )
10704 #else
10705         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
10706                               work, nl_a, nl_b, nl_c, nl_d, &
10707                               sphi_a, &
10708                               sphi_b, &
10709                               sphi_c, &
10710                               sphi_d, &
10711                               primitives, &
10712                               buffer1, buffer2)
10713 #endif
10714        CASE(4)
10715 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
10716         CALL contract_gppg(work,&
10717                  nl_a, nl_b, nl_c, nl_d, &
10718                   sphi_a, sphi_b, sphi_c, sphi_d, &
10719                   primitives,&
10720                   buffer1,buffer2 )
10721 #else
10722         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
10723                               work, nl_a, nl_b, nl_c, nl_d, &
10724                               sphi_a, &
10725                               sphi_b, &
10726                               sphi_c, &
10727                               sphi_d, &
10728                               primitives, &
10729                               buffer1, buffer2)
10730 #endif
10731        CASE DEFAULT
10732         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
10733                               work, nl_a, nl_b, nl_c, nl_d, &
10734                               sphi_a, &
10735                               sphi_b, &
10736                               sphi_c, &
10737                               sphi_d, &
10738                               primitives, &
10739                               buffer1, buffer2)
10740        END SELECT
10741       CASE(2)
10742        SELECT CASE(n_d)
10743        CASE(0)
10744 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
10745         CALL contract_gpds(work,&
10746                  nl_a, nl_b, nl_c, nl_d, &
10747                   sphi_a, sphi_b, sphi_c, sphi_d, &
10748                   primitives,&
10749                   buffer1,buffer2 )
10750 #else
10751         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
10752                               work, nl_a, nl_b, nl_c, nl_d, &
10753                               sphi_a, &
10754                               sphi_b, &
10755                               sphi_c, &
10756                               sphi_d, &
10757                               primitives, &
10758                               buffer1, buffer2)
10759 #endif
10760        CASE(1)
10761 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
10762         CALL contract_gpdp(work,&
10763                  nl_a, nl_b, nl_c, nl_d, &
10764                   sphi_a, sphi_b, sphi_c, sphi_d, &
10765                   primitives,&
10766                   buffer1,buffer2 )
10767 #else
10768         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
10769                               work, nl_a, nl_b, nl_c, nl_d, &
10770                               sphi_a, &
10771                               sphi_b, &
10772                               sphi_c, &
10773                               sphi_d, &
10774                               primitives, &
10775                               buffer1, buffer2)
10776 #endif
10777        CASE(2)
10778 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
10779         CALL contract_gpdd(work,&
10780                  nl_a, nl_b, nl_c, nl_d, &
10781                   sphi_a, sphi_b, sphi_c, sphi_d, &
10782                   primitives,&
10783                   buffer1,buffer2 )
10784 #else
10785         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
10786                               work, nl_a, nl_b, nl_c, nl_d, &
10787                               sphi_a, &
10788                               sphi_b, &
10789                               sphi_c, &
10790                               sphi_d, &
10791                               primitives, &
10792                               buffer1, buffer2)
10793 #endif
10794        CASE(3)
10795 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
10796         CALL contract_gpdf(work,&
10797                  nl_a, nl_b, nl_c, nl_d, &
10798                   sphi_a, sphi_b, sphi_c, sphi_d, &
10799                   primitives,&
10800                   buffer1,buffer2 )
10801 #else
10802         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
10803                               work, nl_a, nl_b, nl_c, nl_d, &
10804                               sphi_a, &
10805                               sphi_b, &
10806                               sphi_c, &
10807                               sphi_d, &
10808                               primitives, &
10809                               buffer1, buffer2)
10810 #endif
10811        CASE(4)
10812 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
10813         CALL contract_gpdg(work,&
10814                  nl_a, nl_b, nl_c, nl_d, &
10815                   sphi_a, sphi_b, sphi_c, sphi_d, &
10816                   primitives,&
10817                   buffer1,buffer2 )
10818 #else
10819         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
10820                               work, nl_a, nl_b, nl_c, nl_d, &
10821                               sphi_a, &
10822                               sphi_b, &
10823                               sphi_c, &
10824                               sphi_d, &
10825                               primitives, &
10826                               buffer1, buffer2)
10827 #endif
10828        CASE DEFAULT
10829         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
10830                               work, nl_a, nl_b, nl_c, nl_d, &
10831                               sphi_a, &
10832                               sphi_b, &
10833                               sphi_c, &
10834                               sphi_d, &
10835                               primitives, &
10836                               buffer1, buffer2)
10837        END SELECT
10838       CASE(3)
10839        SELECT CASE(n_d)
10840        CASE(0)
10841 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
10842         CALL contract_gpfs(work,&
10843                  nl_a, nl_b, nl_c, nl_d, &
10844                   sphi_a, sphi_b, sphi_c, sphi_d, &
10845                   primitives,&
10846                   buffer1,buffer2 )
10847 #else
10848         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
10849                               work, nl_a, nl_b, nl_c, nl_d, &
10850                               sphi_a, &
10851                               sphi_b, &
10852                               sphi_c, &
10853                               sphi_d, &
10854                               primitives, &
10855                               buffer1, buffer2)
10856 #endif
10857        CASE(1)
10858 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
10859         CALL contract_gpfp(work,&
10860                  nl_a, nl_b, nl_c, nl_d, &
10861                   sphi_a, sphi_b, sphi_c, sphi_d, &
10862                   primitives,&
10863                   buffer1,buffer2 )
10864 #else
10865         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
10866                               work, nl_a, nl_b, nl_c, nl_d, &
10867                               sphi_a, &
10868                               sphi_b, &
10869                               sphi_c, &
10870                               sphi_d, &
10871                               primitives, &
10872                               buffer1, buffer2)
10873 #endif
10874        CASE(2)
10875 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
10876         CALL contract_gpfd(work,&
10877                  nl_a, nl_b, nl_c, nl_d, &
10878                   sphi_a, sphi_b, sphi_c, sphi_d, &
10879                   primitives,&
10880                   buffer1,buffer2 )
10881 #else
10882         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
10883                               work, nl_a, nl_b, nl_c, nl_d, &
10884                               sphi_a, &
10885                               sphi_b, &
10886                               sphi_c, &
10887                               sphi_d, &
10888                               primitives, &
10889                               buffer1, buffer2)
10890 #endif
10891        CASE(3)
10892 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
10893         CALL contract_gpff(work,&
10894                  nl_a, nl_b, nl_c, nl_d, &
10895                   sphi_a, sphi_b, sphi_c, sphi_d, &
10896                   primitives,&
10897                   buffer1,buffer2 )
10898 #else
10899         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
10900                               work, nl_a, nl_b, nl_c, nl_d, &
10901                               sphi_a, &
10902                               sphi_b, &
10903                               sphi_c, &
10904                               sphi_d, &
10905                               primitives, &
10906                               buffer1, buffer2)
10907 #endif
10908        CASE(4)
10909 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
10910         CALL contract_gpfg(work,&
10911                  nl_a, nl_b, nl_c, nl_d, &
10912                   sphi_a, sphi_b, sphi_c, sphi_d, &
10913                   primitives,&
10914                   buffer1,buffer2 )
10915 #else
10916         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
10917                               work, nl_a, nl_b, nl_c, nl_d, &
10918                               sphi_a, &
10919                               sphi_b, &
10920                               sphi_c, &
10921                               sphi_d, &
10922                               primitives, &
10923                               buffer1, buffer2)
10924 #endif
10925        CASE DEFAULT
10926         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
10927                               work, nl_a, nl_b, nl_c, nl_d, &
10928                               sphi_a, &
10929                               sphi_b, &
10930                               sphi_c, &
10931                               sphi_d, &
10932                               primitives, &
10933                               buffer1, buffer2)
10934        END SELECT
10935       CASE(4)
10936        SELECT CASE(n_d)
10937        CASE(0)
10938 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
10939         CALL contract_gpgs(work,&
10940                  nl_a, nl_b, nl_c, nl_d, &
10941                   sphi_a, sphi_b, sphi_c, sphi_d, &
10942                   primitives,&
10943                   buffer1,buffer2 )
10944 #else
10945         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
10946                               work, nl_a, nl_b, nl_c, nl_d, &
10947                               sphi_a, &
10948                               sphi_b, &
10949                               sphi_c, &
10950                               sphi_d, &
10951                               primitives, &
10952                               buffer1, buffer2)
10953 #endif
10954        CASE(1)
10955 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
10956         CALL contract_gpgp(work,&
10957                  nl_a, nl_b, nl_c, nl_d, &
10958                   sphi_a, sphi_b, sphi_c, sphi_d, &
10959                   primitives,&
10960                   buffer1,buffer2 )
10961 #else
10962         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
10963                               work, nl_a, nl_b, nl_c, nl_d, &
10964                               sphi_a, &
10965                               sphi_b, &
10966                               sphi_c, &
10967                               sphi_d, &
10968                               primitives, &
10969                               buffer1, buffer2)
10970 #endif
10971        CASE(2)
10972 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
10973         CALL contract_gpgd(work,&
10974                  nl_a, nl_b, nl_c, nl_d, &
10975                   sphi_a, sphi_b, sphi_c, sphi_d, &
10976                   primitives,&
10977                   buffer1,buffer2 )
10978 #else
10979         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
10980                               work, nl_a, nl_b, nl_c, nl_d, &
10981                               sphi_a, &
10982                               sphi_b, &
10983                               sphi_c, &
10984                               sphi_d, &
10985                               primitives, &
10986                               buffer1, buffer2)
10987 #endif
10988        CASE(3)
10989 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
10990         CALL contract_gpgf(work,&
10991                  nl_a, nl_b, nl_c, nl_d, &
10992                   sphi_a, sphi_b, sphi_c, sphi_d, &
10993                   primitives,&
10994                   buffer1,buffer2 )
10995 #else
10996         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
10997                               work, nl_a, nl_b, nl_c, nl_d, &
10998                               sphi_a, &
10999                               sphi_b, &
11000                               sphi_c, &
11001                               sphi_d, &
11002                               primitives, &
11003                               buffer1, buffer2)
11004 #endif
11005        CASE(4)
11006 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
11007         CALL contract_gpgg(work,&
11008                  nl_a, nl_b, nl_c, nl_d, &
11009                   sphi_a, sphi_b, sphi_c, sphi_d, &
11010                   primitives,&
11011                   buffer1,buffer2 )
11012 #else
11013         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
11014                               work, nl_a, nl_b, nl_c, nl_d, &
11015                               sphi_a, &
11016                               sphi_b, &
11017                               sphi_c, &
11018                               sphi_d, &
11019                               primitives, &
11020                               buffer1, buffer2)
11021 #endif
11022        CASE DEFAULT
11023         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
11024                               work, nl_a, nl_b, nl_c, nl_d, &
11025                               sphi_a, &
11026                               sphi_b, &
11027                               sphi_c, &
11028                               sphi_d, &
11029                               primitives, &
11030                               buffer1, buffer2)
11031        END SELECT
11032       CASE DEFAULT
11033        CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
11034                              work, nl_a, nl_b, nl_c, nl_d, &
11035                              sphi_a, &
11036                              sphi_b, &
11037                              sphi_c, &
11038                              sphi_d, &
11039                              primitives, &
11040                              buffer1, buffer2)
11041       END SELECT
11042      CASE(2)
11043       SELECT CASE(n_c)
11044       CASE(0)
11045        SELECT CASE(n_d)
11046        CASE(0)
11047 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
11048         CALL contract_gdss(work,&
11049                  nl_a, nl_b, nl_c, nl_d, &
11050                   sphi_a, sphi_b, sphi_c, sphi_d, &
11051                   primitives,&
11052                   buffer1,buffer2 )
11053 #else
11054         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
11055                               work, nl_a, nl_b, nl_c, nl_d, &
11056                               sphi_a, &
11057                               sphi_b, &
11058                               sphi_c, &
11059                               sphi_d, &
11060                               primitives, &
11061                               buffer1, buffer2)
11062 #endif
11063        CASE(1)
11064 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
11065         CALL contract_gdsp(work,&
11066                  nl_a, nl_b, nl_c, nl_d, &
11067                   sphi_a, sphi_b, sphi_c, sphi_d, &
11068                   primitives,&
11069                   buffer1,buffer2 )
11070 #else
11071         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
11072                               work, nl_a, nl_b, nl_c, nl_d, &
11073                               sphi_a, &
11074                               sphi_b, &
11075                               sphi_c, &
11076                               sphi_d, &
11077                               primitives, &
11078                               buffer1, buffer2)
11079 #endif
11080        CASE(2)
11081 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
11082         CALL contract_gdsd(work,&
11083                  nl_a, nl_b, nl_c, nl_d, &
11084                   sphi_a, sphi_b, sphi_c, sphi_d, &
11085                   primitives,&
11086                   buffer1,buffer2 )
11087 #else
11088         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
11089                               work, nl_a, nl_b, nl_c, nl_d, &
11090                               sphi_a, &
11091                               sphi_b, &
11092                               sphi_c, &
11093                               sphi_d, &
11094                               primitives, &
11095                               buffer1, buffer2)
11096 #endif
11097        CASE(3)
11098 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
11099         CALL contract_gdsf(work,&
11100                  nl_a, nl_b, nl_c, nl_d, &
11101                   sphi_a, sphi_b, sphi_c, sphi_d, &
11102                   primitives,&
11103                   buffer1,buffer2 )
11104 #else
11105         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
11106                               work, nl_a, nl_b, nl_c, nl_d, &
11107                               sphi_a, &
11108                               sphi_b, &
11109                               sphi_c, &
11110                               sphi_d, &
11111                               primitives, &
11112                               buffer1, buffer2)
11113 #endif
11114        CASE(4)
11115 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
11116         CALL contract_gdsg(work,&
11117                  nl_a, nl_b, nl_c, nl_d, &
11118                   sphi_a, sphi_b, sphi_c, sphi_d, &
11119                   primitives,&
11120                   buffer1,buffer2 )
11121 #else
11122         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
11123                               work, nl_a, nl_b, nl_c, nl_d, &
11124                               sphi_a, &
11125                               sphi_b, &
11126                               sphi_c, &
11127                               sphi_d, &
11128                               primitives, &
11129                               buffer1, buffer2)
11130 #endif
11131        CASE DEFAULT
11132         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
11133                               work, nl_a, nl_b, nl_c, nl_d, &
11134                               sphi_a, &
11135                               sphi_b, &
11136                               sphi_c, &
11137                               sphi_d, &
11138                               primitives, &
11139                               buffer1, buffer2)
11140        END SELECT
11141       CASE(1)
11142        SELECT CASE(n_d)
11143        CASE(0)
11144 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
11145         CALL contract_gdps(work,&
11146                  nl_a, nl_b, nl_c, nl_d, &
11147                   sphi_a, sphi_b, sphi_c, sphi_d, &
11148                   primitives,&
11149                   buffer1,buffer2 )
11150 #else
11151         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
11152                               work, nl_a, nl_b, nl_c, nl_d, &
11153                               sphi_a, &
11154                               sphi_b, &
11155                               sphi_c, &
11156                               sphi_d, &
11157                               primitives, &
11158                               buffer1, buffer2)
11159 #endif
11160        CASE(1)
11161 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
11162         CALL contract_gdpp(work,&
11163                  nl_a, nl_b, nl_c, nl_d, &
11164                   sphi_a, sphi_b, sphi_c, sphi_d, &
11165                   primitives,&
11166                   buffer1,buffer2 )
11167 #else
11168         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
11169                               work, nl_a, nl_b, nl_c, nl_d, &
11170                               sphi_a, &
11171                               sphi_b, &
11172                               sphi_c, &
11173                               sphi_d, &
11174                               primitives, &
11175                               buffer1, buffer2)
11176 #endif
11177        CASE(2)
11178 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
11179         CALL contract_gdpd(work,&
11180                  nl_a, nl_b, nl_c, nl_d, &
11181                   sphi_a, sphi_b, sphi_c, sphi_d, &
11182                   primitives,&
11183                   buffer1,buffer2 )
11184 #else
11185         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
11186                               work, nl_a, nl_b, nl_c, nl_d, &
11187                               sphi_a, &
11188                               sphi_b, &
11189                               sphi_c, &
11190                               sphi_d, &
11191                               primitives, &
11192                               buffer1, buffer2)
11193 #endif
11194        CASE(3)
11195 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
11196         CALL contract_gdpf(work,&
11197                  nl_a, nl_b, nl_c, nl_d, &
11198                   sphi_a, sphi_b, sphi_c, sphi_d, &
11199                   primitives,&
11200                   buffer1,buffer2 )
11201 #else
11202         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
11203                               work, nl_a, nl_b, nl_c, nl_d, &
11204                               sphi_a, &
11205                               sphi_b, &
11206                               sphi_c, &
11207                               sphi_d, &
11208                               primitives, &
11209                               buffer1, buffer2)
11210 #endif
11211        CASE(4)
11212 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
11213         CALL contract_gdpg(work,&
11214                  nl_a, nl_b, nl_c, nl_d, &
11215                   sphi_a, sphi_b, sphi_c, sphi_d, &
11216                   primitives,&
11217                   buffer1,buffer2 )
11218 #else
11219         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
11220                               work, nl_a, nl_b, nl_c, nl_d, &
11221                               sphi_a, &
11222                               sphi_b, &
11223                               sphi_c, &
11224                               sphi_d, &
11225                               primitives, &
11226                               buffer1, buffer2)
11227 #endif
11228        CASE DEFAULT
11229         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
11230                               work, nl_a, nl_b, nl_c, nl_d, &
11231                               sphi_a, &
11232                               sphi_b, &
11233                               sphi_c, &
11234                               sphi_d, &
11235                               primitives, &
11236                               buffer1, buffer2)
11237        END SELECT
11238       CASE(2)
11239        SELECT CASE(n_d)
11240        CASE(0)
11241 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
11242         CALL contract_gdds(work,&
11243                  nl_a, nl_b, nl_c, nl_d, &
11244                   sphi_a, sphi_b, sphi_c, sphi_d, &
11245                   primitives,&
11246                   buffer1,buffer2 )
11247 #else
11248         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
11249                               work, nl_a, nl_b, nl_c, nl_d, &
11250                               sphi_a, &
11251                               sphi_b, &
11252                               sphi_c, &
11253                               sphi_d, &
11254                               primitives, &
11255                               buffer1, buffer2)
11256 #endif
11257        CASE(1)
11258 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
11259         CALL contract_gddp(work,&
11260                  nl_a, nl_b, nl_c, nl_d, &
11261                   sphi_a, sphi_b, sphi_c, sphi_d, &
11262                   primitives,&
11263                   buffer1,buffer2 )
11264 #else
11265         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
11266                               work, nl_a, nl_b, nl_c, nl_d, &
11267                               sphi_a, &
11268                               sphi_b, &
11269                               sphi_c, &
11270                               sphi_d, &
11271                               primitives, &
11272                               buffer1, buffer2)
11273 #endif
11274        CASE(2)
11275 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
11276         CALL contract_gddd(work,&
11277                  nl_a, nl_b, nl_c, nl_d, &
11278                   sphi_a, sphi_b, sphi_c, sphi_d, &
11279                   primitives,&
11280                   buffer1,buffer2 )
11281 #else
11282         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
11283                               work, nl_a, nl_b, nl_c, nl_d, &
11284                               sphi_a, &
11285                               sphi_b, &
11286                               sphi_c, &
11287                               sphi_d, &
11288                               primitives, &
11289                               buffer1, buffer2)
11290 #endif
11291        CASE(3)
11292 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
11293         CALL contract_gddf(work,&
11294                  nl_a, nl_b, nl_c, nl_d, &
11295                   sphi_a, sphi_b, sphi_c, sphi_d, &
11296                   primitives,&
11297                   buffer1,buffer2 )
11298 #else
11299         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
11300                               work, nl_a, nl_b, nl_c, nl_d, &
11301                               sphi_a, &
11302                               sphi_b, &
11303                               sphi_c, &
11304                               sphi_d, &
11305                               primitives, &
11306                               buffer1, buffer2)
11307 #endif
11308        CASE(4)
11309 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
11310         CALL contract_gddg(work,&
11311                  nl_a, nl_b, nl_c, nl_d, &
11312                   sphi_a, sphi_b, sphi_c, sphi_d, &
11313                   primitives,&
11314                   buffer1,buffer2 )
11315 #else
11316         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
11317                               work, nl_a, nl_b, nl_c, nl_d, &
11318                               sphi_a, &
11319                               sphi_b, &
11320                               sphi_c, &
11321                               sphi_d, &
11322                               primitives, &
11323                               buffer1, buffer2)
11324 #endif
11325        CASE DEFAULT
11326         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
11327                               work, nl_a, nl_b, nl_c, nl_d, &
11328                               sphi_a, &
11329                               sphi_b, &
11330                               sphi_c, &
11331                               sphi_d, &
11332                               primitives, &
11333                               buffer1, buffer2)
11334        END SELECT
11335       CASE(3)
11336        SELECT CASE(n_d)
11337        CASE(0)
11338 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
11339         CALL contract_gdfs(work,&
11340                  nl_a, nl_b, nl_c, nl_d, &
11341                   sphi_a, sphi_b, sphi_c, sphi_d, &
11342                   primitives,&
11343                   buffer1,buffer2 )
11344 #else
11345         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
11346                               work, nl_a, nl_b, nl_c, nl_d, &
11347                               sphi_a, &
11348                               sphi_b, &
11349                               sphi_c, &
11350                               sphi_d, &
11351                               primitives, &
11352                               buffer1, buffer2)
11353 #endif
11354        CASE(1)
11355 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
11356         CALL contract_gdfp(work,&
11357                  nl_a, nl_b, nl_c, nl_d, &
11358                   sphi_a, sphi_b, sphi_c, sphi_d, &
11359                   primitives,&
11360                   buffer1,buffer2 )
11361 #else
11362         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
11363                               work, nl_a, nl_b, nl_c, nl_d, &
11364                               sphi_a, &
11365                               sphi_b, &
11366                               sphi_c, &
11367                               sphi_d, &
11368                               primitives, &
11369                               buffer1, buffer2)
11370 #endif
11371        CASE(2)
11372 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
11373         CALL contract_gdfd(work,&
11374                  nl_a, nl_b, nl_c, nl_d, &
11375                   sphi_a, sphi_b, sphi_c, sphi_d, &
11376                   primitives,&
11377                   buffer1,buffer2 )
11378 #else
11379         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
11380                               work, nl_a, nl_b, nl_c, nl_d, &
11381                               sphi_a, &
11382                               sphi_b, &
11383                               sphi_c, &
11384                               sphi_d, &
11385                               primitives, &
11386                               buffer1, buffer2)
11387 #endif
11388        CASE(3)
11389 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
11390         CALL contract_gdff(work,&
11391                  nl_a, nl_b, nl_c, nl_d, &
11392                   sphi_a, sphi_b, sphi_c, sphi_d, &
11393                   primitives,&
11394                   buffer1,buffer2 )
11395 #else
11396         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
11397                               work, nl_a, nl_b, nl_c, nl_d, &
11398                               sphi_a, &
11399                               sphi_b, &
11400                               sphi_c, &
11401                               sphi_d, &
11402                               primitives, &
11403                               buffer1, buffer2)
11404 #endif
11405        CASE(4)
11406 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
11407         CALL contract_gdfg(work,&
11408                  nl_a, nl_b, nl_c, nl_d, &
11409                   sphi_a, sphi_b, sphi_c, sphi_d, &
11410                   primitives,&
11411                   buffer1,buffer2 )
11412 #else
11413         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
11414                               work, nl_a, nl_b, nl_c, nl_d, &
11415                               sphi_a, &
11416                               sphi_b, &
11417                               sphi_c, &
11418                               sphi_d, &
11419                               primitives, &
11420                               buffer1, buffer2)
11421 #endif
11422        CASE DEFAULT
11423         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
11424                               work, nl_a, nl_b, nl_c, nl_d, &
11425                               sphi_a, &
11426                               sphi_b, &
11427                               sphi_c, &
11428                               sphi_d, &
11429                               primitives, &
11430                               buffer1, buffer2)
11431        END SELECT
11432       CASE(4)
11433        SELECT CASE(n_d)
11434        CASE(0)
11435 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
11436         CALL contract_gdgs(work,&
11437                  nl_a, nl_b, nl_c, nl_d, &
11438                   sphi_a, sphi_b, sphi_c, sphi_d, &
11439                   primitives,&
11440                   buffer1,buffer2 )
11441 #else
11442         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
11443                               work, nl_a, nl_b, nl_c, nl_d, &
11444                               sphi_a, &
11445                               sphi_b, &
11446                               sphi_c, &
11447                               sphi_d, &
11448                               primitives, &
11449                               buffer1, buffer2)
11450 #endif
11451        CASE(1)
11452 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
11453         CALL contract_gdgp(work,&
11454                  nl_a, nl_b, nl_c, nl_d, &
11455                   sphi_a, sphi_b, sphi_c, sphi_d, &
11456                   primitives,&
11457                   buffer1,buffer2 )
11458 #else
11459         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
11460                               work, nl_a, nl_b, nl_c, nl_d, &
11461                               sphi_a, &
11462                               sphi_b, &
11463                               sphi_c, &
11464                               sphi_d, &
11465                               primitives, &
11466                               buffer1, buffer2)
11467 #endif
11468        CASE(2)
11469 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
11470         CALL contract_gdgd(work,&
11471                  nl_a, nl_b, nl_c, nl_d, &
11472                   sphi_a, sphi_b, sphi_c, sphi_d, &
11473                   primitives,&
11474                   buffer1,buffer2 )
11475 #else
11476         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
11477                               work, nl_a, nl_b, nl_c, nl_d, &
11478                               sphi_a, &
11479                               sphi_b, &
11480                               sphi_c, &
11481                               sphi_d, &
11482                               primitives, &
11483                               buffer1, buffer2)
11484 #endif
11485        CASE(3)
11486 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
11487         CALL contract_gdgf(work,&
11488                  nl_a, nl_b, nl_c, nl_d, &
11489                   sphi_a, sphi_b, sphi_c, sphi_d, &
11490                   primitives,&
11491                   buffer1,buffer2 )
11492 #else
11493         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
11494                               work, nl_a, nl_b, nl_c, nl_d, &
11495                               sphi_a, &
11496                               sphi_b, &
11497                               sphi_c, &
11498                               sphi_d, &
11499                               primitives, &
11500                               buffer1, buffer2)
11501 #endif
11502        CASE(4)
11503 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
11504         CALL contract_gdgg(work,&
11505                  nl_a, nl_b, nl_c, nl_d, &
11506                   sphi_a, sphi_b, sphi_c, sphi_d, &
11507                   primitives,&
11508                   buffer1,buffer2 )
11509 #else
11510         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
11511                               work, nl_a, nl_b, nl_c, nl_d, &
11512                               sphi_a, &
11513                               sphi_b, &
11514                               sphi_c, &
11515                               sphi_d, &
11516                               primitives, &
11517                               buffer1, buffer2)
11518 #endif
11519        CASE DEFAULT
11520         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
11521                               work, nl_a, nl_b, nl_c, nl_d, &
11522                               sphi_a, &
11523                               sphi_b, &
11524                               sphi_c, &
11525                               sphi_d, &
11526                               primitives, &
11527                               buffer1, buffer2)
11528        END SELECT
11529       CASE DEFAULT
11530        CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
11531                              work, nl_a, nl_b, nl_c, nl_d, &
11532                              sphi_a, &
11533                              sphi_b, &
11534                              sphi_c, &
11535                              sphi_d, &
11536                              primitives, &
11537                              buffer1, buffer2)
11538       END SELECT
11539      CASE(3)
11540       SELECT CASE(n_c)
11541       CASE(0)
11542        SELECT CASE(n_d)
11543        CASE(0)
11544 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
11545         CALL contract_gfss(work,&
11546                  nl_a, nl_b, nl_c, nl_d, &
11547                   sphi_a, sphi_b, sphi_c, sphi_d, &
11548                   primitives,&
11549                   buffer1,buffer2 )
11550 #else
11551         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
11552                               work, nl_a, nl_b, nl_c, nl_d, &
11553                               sphi_a, &
11554                               sphi_b, &
11555                               sphi_c, &
11556                               sphi_d, &
11557                               primitives, &
11558                               buffer1, buffer2)
11559 #endif
11560        CASE(1)
11561 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
11562         CALL contract_gfsp(work,&
11563                  nl_a, nl_b, nl_c, nl_d, &
11564                   sphi_a, sphi_b, sphi_c, sphi_d, &
11565                   primitives,&
11566                   buffer1,buffer2 )
11567 #else
11568         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
11569                               work, nl_a, nl_b, nl_c, nl_d, &
11570                               sphi_a, &
11571                               sphi_b, &
11572                               sphi_c, &
11573                               sphi_d, &
11574                               primitives, &
11575                               buffer1, buffer2)
11576 #endif
11577        CASE(2)
11578 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
11579         CALL contract_gfsd(work,&
11580                  nl_a, nl_b, nl_c, nl_d, &
11581                   sphi_a, sphi_b, sphi_c, sphi_d, &
11582                   primitives,&
11583                   buffer1,buffer2 )
11584 #else
11585         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
11586                               work, nl_a, nl_b, nl_c, nl_d, &
11587                               sphi_a, &
11588                               sphi_b, &
11589                               sphi_c, &
11590                               sphi_d, &
11591                               primitives, &
11592                               buffer1, buffer2)
11593 #endif
11594        CASE(3)
11595 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
11596         CALL contract_gfsf(work,&
11597                  nl_a, nl_b, nl_c, nl_d, &
11598                   sphi_a, sphi_b, sphi_c, sphi_d, &
11599                   primitives,&
11600                   buffer1,buffer2 )
11601 #else
11602         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
11603                               work, nl_a, nl_b, nl_c, nl_d, &
11604                               sphi_a, &
11605                               sphi_b, &
11606                               sphi_c, &
11607                               sphi_d, &
11608                               primitives, &
11609                               buffer1, buffer2)
11610 #endif
11611        CASE(4)
11612 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
11613         CALL contract_gfsg(work,&
11614                  nl_a, nl_b, nl_c, nl_d, &
11615                   sphi_a, sphi_b, sphi_c, sphi_d, &
11616                   primitives,&
11617                   buffer1,buffer2 )
11618 #else
11619         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
11620                               work, nl_a, nl_b, nl_c, nl_d, &
11621                               sphi_a, &
11622                               sphi_b, &
11623                               sphi_c, &
11624                               sphi_d, &
11625                               primitives, &
11626                               buffer1, buffer2)
11627 #endif
11628        CASE DEFAULT
11629         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
11630                               work, nl_a, nl_b, nl_c, nl_d, &
11631                               sphi_a, &
11632                               sphi_b, &
11633                               sphi_c, &
11634                               sphi_d, &
11635                               primitives, &
11636                               buffer1, buffer2)
11637        END SELECT
11638       CASE(1)
11639        SELECT CASE(n_d)
11640        CASE(0)
11641 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
11642         CALL contract_gfps(work,&
11643                  nl_a, nl_b, nl_c, nl_d, &
11644                   sphi_a, sphi_b, sphi_c, sphi_d, &
11645                   primitives,&
11646                   buffer1,buffer2 )
11647 #else
11648         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
11649                               work, nl_a, nl_b, nl_c, nl_d, &
11650                               sphi_a, &
11651                               sphi_b, &
11652                               sphi_c, &
11653                               sphi_d, &
11654                               primitives, &
11655                               buffer1, buffer2)
11656 #endif
11657        CASE(1)
11658 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
11659         CALL contract_gfpp(work,&
11660                  nl_a, nl_b, nl_c, nl_d, &
11661                   sphi_a, sphi_b, sphi_c, sphi_d, &
11662                   primitives,&
11663                   buffer1,buffer2 )
11664 #else
11665         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
11666                               work, nl_a, nl_b, nl_c, nl_d, &
11667                               sphi_a, &
11668                               sphi_b, &
11669                               sphi_c, &
11670                               sphi_d, &
11671                               primitives, &
11672                               buffer1, buffer2)
11673 #endif
11674        CASE(2)
11675 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
11676         CALL contract_gfpd(work,&
11677                  nl_a, nl_b, nl_c, nl_d, &
11678                   sphi_a, sphi_b, sphi_c, sphi_d, &
11679                   primitives,&
11680                   buffer1,buffer2 )
11681 #else
11682         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
11683                               work, nl_a, nl_b, nl_c, nl_d, &
11684                               sphi_a, &
11685                               sphi_b, &
11686                               sphi_c, &
11687                               sphi_d, &
11688                               primitives, &
11689                               buffer1, buffer2)
11690 #endif
11691        CASE(3)
11692 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
11693         CALL contract_gfpf(work,&
11694                  nl_a, nl_b, nl_c, nl_d, &
11695                   sphi_a, sphi_b, sphi_c, sphi_d, &
11696                   primitives,&
11697                   buffer1,buffer2 )
11698 #else
11699         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
11700                               work, nl_a, nl_b, nl_c, nl_d, &
11701                               sphi_a, &
11702                               sphi_b, &
11703                               sphi_c, &
11704                               sphi_d, &
11705                               primitives, &
11706                               buffer1, buffer2)
11707 #endif
11708        CASE(4)
11709 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
11710         CALL contract_gfpg(work,&
11711                  nl_a, nl_b, nl_c, nl_d, &
11712                   sphi_a, sphi_b, sphi_c, sphi_d, &
11713                   primitives,&
11714                   buffer1,buffer2 )
11715 #else
11716         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
11717                               work, nl_a, nl_b, nl_c, nl_d, &
11718                               sphi_a, &
11719                               sphi_b, &
11720                               sphi_c, &
11721                               sphi_d, &
11722                               primitives, &
11723                               buffer1, buffer2)
11724 #endif
11725        CASE DEFAULT
11726         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
11727                               work, nl_a, nl_b, nl_c, nl_d, &
11728                               sphi_a, &
11729                               sphi_b, &
11730                               sphi_c, &
11731                               sphi_d, &
11732                               primitives, &
11733                               buffer1, buffer2)
11734        END SELECT
11735       CASE(2)
11736        SELECT CASE(n_d)
11737        CASE(0)
11738 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
11739         CALL contract_gfds(work,&
11740                  nl_a, nl_b, nl_c, nl_d, &
11741                   sphi_a, sphi_b, sphi_c, sphi_d, &
11742                   primitives,&
11743                   buffer1,buffer2 )
11744 #else
11745         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
11746                               work, nl_a, nl_b, nl_c, nl_d, &
11747                               sphi_a, &
11748                               sphi_b, &
11749                               sphi_c, &
11750                               sphi_d, &
11751                               primitives, &
11752                               buffer1, buffer2)
11753 #endif
11754        CASE(1)
11755 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
11756         CALL contract_gfdp(work,&
11757                  nl_a, nl_b, nl_c, nl_d, &
11758                   sphi_a, sphi_b, sphi_c, sphi_d, &
11759                   primitives,&
11760                   buffer1,buffer2 )
11761 #else
11762         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
11763                               work, nl_a, nl_b, nl_c, nl_d, &
11764                               sphi_a, &
11765                               sphi_b, &
11766                               sphi_c, &
11767                               sphi_d, &
11768                               primitives, &
11769                               buffer1, buffer2)
11770 #endif
11771        CASE(2)
11772 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
11773         CALL contract_gfdd(work,&
11774                  nl_a, nl_b, nl_c, nl_d, &
11775                   sphi_a, sphi_b, sphi_c, sphi_d, &
11776                   primitives,&
11777                   buffer1,buffer2 )
11778 #else
11779         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
11780                               work, nl_a, nl_b, nl_c, nl_d, &
11781                               sphi_a, &
11782                               sphi_b, &
11783                               sphi_c, &
11784                               sphi_d, &
11785                               primitives, &
11786                               buffer1, buffer2)
11787 #endif
11788        CASE(3)
11789 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
11790         CALL contract_gfdf(work,&
11791                  nl_a, nl_b, nl_c, nl_d, &
11792                   sphi_a, sphi_b, sphi_c, sphi_d, &
11793                   primitives,&
11794                   buffer1,buffer2 )
11795 #else
11796         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
11797                               work, nl_a, nl_b, nl_c, nl_d, &
11798                               sphi_a, &
11799                               sphi_b, &
11800                               sphi_c, &
11801                               sphi_d, &
11802                               primitives, &
11803                               buffer1, buffer2)
11804 #endif
11805        CASE(4)
11806 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
11807         CALL contract_gfdg(work,&
11808                  nl_a, nl_b, nl_c, nl_d, &
11809                   sphi_a, sphi_b, sphi_c, sphi_d, &
11810                   primitives,&
11811                   buffer1,buffer2 )
11812 #else
11813         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
11814                               work, nl_a, nl_b, nl_c, nl_d, &
11815                               sphi_a, &
11816                               sphi_b, &
11817                               sphi_c, &
11818                               sphi_d, &
11819                               primitives, &
11820                               buffer1, buffer2)
11821 #endif
11822        CASE DEFAULT
11823         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
11824                               work, nl_a, nl_b, nl_c, nl_d, &
11825                               sphi_a, &
11826                               sphi_b, &
11827                               sphi_c, &
11828                               sphi_d, &
11829                               primitives, &
11830                               buffer1, buffer2)
11831        END SELECT
11832       CASE(3)
11833        SELECT CASE(n_d)
11834        CASE(0)
11835 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
11836         CALL contract_gffs(work,&
11837                  nl_a, nl_b, nl_c, nl_d, &
11838                   sphi_a, sphi_b, sphi_c, sphi_d, &
11839                   primitives,&
11840                   buffer1,buffer2 )
11841 #else
11842         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
11843                               work, nl_a, nl_b, nl_c, nl_d, &
11844                               sphi_a, &
11845                               sphi_b, &
11846                               sphi_c, &
11847                               sphi_d, &
11848                               primitives, &
11849                               buffer1, buffer2)
11850 #endif
11851        CASE(1)
11852 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
11853         CALL contract_gffp(work,&
11854                  nl_a, nl_b, nl_c, nl_d, &
11855                   sphi_a, sphi_b, sphi_c, sphi_d, &
11856                   primitives,&
11857                   buffer1,buffer2 )
11858 #else
11859         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
11860                               work, nl_a, nl_b, nl_c, nl_d, &
11861                               sphi_a, &
11862                               sphi_b, &
11863                               sphi_c, &
11864                               sphi_d, &
11865                               primitives, &
11866                               buffer1, buffer2)
11867 #endif
11868        CASE(2)
11869 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
11870         CALL contract_gffd(work,&
11871                  nl_a, nl_b, nl_c, nl_d, &
11872                   sphi_a, sphi_b, sphi_c, sphi_d, &
11873                   primitives,&
11874                   buffer1,buffer2 )
11875 #else
11876         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
11877                               work, nl_a, nl_b, nl_c, nl_d, &
11878                               sphi_a, &
11879                               sphi_b, &
11880                               sphi_c, &
11881                               sphi_d, &
11882                               primitives, &
11883                               buffer1, buffer2)
11884 #endif
11885        CASE(3)
11886 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
11887         CALL contract_gfff(work,&
11888                  nl_a, nl_b, nl_c, nl_d, &
11889                   sphi_a, sphi_b, sphi_c, sphi_d, &
11890                   primitives,&
11891                   buffer1,buffer2 )
11892 #else
11893         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
11894                               work, nl_a, nl_b, nl_c, nl_d, &
11895                               sphi_a, &
11896                               sphi_b, &
11897                               sphi_c, &
11898                               sphi_d, &
11899                               primitives, &
11900                               buffer1, buffer2)
11901 #endif
11902        CASE(4)
11903 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
11904         CALL contract_gffg(work,&
11905                  nl_a, nl_b, nl_c, nl_d, &
11906                   sphi_a, sphi_b, sphi_c, sphi_d, &
11907                   primitives,&
11908                   buffer1,buffer2 )
11909 #else
11910         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
11911                               work, nl_a, nl_b, nl_c, nl_d, &
11912                               sphi_a, &
11913                               sphi_b, &
11914                               sphi_c, &
11915                               sphi_d, &
11916                               primitives, &
11917                               buffer1, buffer2)
11918 #endif
11919        CASE DEFAULT
11920         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
11921                               work, nl_a, nl_b, nl_c, nl_d, &
11922                               sphi_a, &
11923                               sphi_b, &
11924                               sphi_c, &
11925                               sphi_d, &
11926                               primitives, &
11927                               buffer1, buffer2)
11928        END SELECT
11929       CASE(4)
11930        SELECT CASE(n_d)
11931        CASE(0)
11932 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
11933         CALL contract_gfgs(work,&
11934                  nl_a, nl_b, nl_c, nl_d, &
11935                   sphi_a, sphi_b, sphi_c, sphi_d, &
11936                   primitives,&
11937                   buffer1,buffer2 )
11938 #else
11939         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
11940                               work, nl_a, nl_b, nl_c, nl_d, &
11941                               sphi_a, &
11942                               sphi_b, &
11943                               sphi_c, &
11944                               sphi_d, &
11945                               primitives, &
11946                               buffer1, buffer2)
11947 #endif
11948        CASE(1)
11949 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
11950         CALL contract_gfgp(work,&
11951                  nl_a, nl_b, nl_c, nl_d, &
11952                   sphi_a, sphi_b, sphi_c, sphi_d, &
11953                   primitives,&
11954                   buffer1,buffer2 )
11955 #else
11956         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
11957                               work, nl_a, nl_b, nl_c, nl_d, &
11958                               sphi_a, &
11959                               sphi_b, &
11960                               sphi_c, &
11961                               sphi_d, &
11962                               primitives, &
11963                               buffer1, buffer2)
11964 #endif
11965        CASE(2)
11966 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
11967         CALL contract_gfgd(work,&
11968                  nl_a, nl_b, nl_c, nl_d, &
11969                   sphi_a, sphi_b, sphi_c, sphi_d, &
11970                   primitives,&
11971                   buffer1,buffer2 )
11972 #else
11973         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
11974                               work, nl_a, nl_b, nl_c, nl_d, &
11975                               sphi_a, &
11976                               sphi_b, &
11977                               sphi_c, &
11978                               sphi_d, &
11979                               primitives, &
11980                               buffer1, buffer2)
11981 #endif
11982        CASE(3)
11983 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
11984         CALL contract_gfgf(work,&
11985                  nl_a, nl_b, nl_c, nl_d, &
11986                   sphi_a, sphi_b, sphi_c, sphi_d, &
11987                   primitives,&
11988                   buffer1,buffer2 )
11989 #else
11990         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
11991                               work, nl_a, nl_b, nl_c, nl_d, &
11992                               sphi_a, &
11993                               sphi_b, &
11994                               sphi_c, &
11995                               sphi_d, &
11996                               primitives, &
11997                               buffer1, buffer2)
11998 #endif
11999        CASE(4)
12000 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
12001         CALL contract_gfgg(work,&
12002                  nl_a, nl_b, nl_c, nl_d, &
12003                   sphi_a, sphi_b, sphi_c, sphi_d, &
12004                   primitives,&
12005                   buffer1,buffer2 )
12006 #else
12007         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
12008                               work, nl_a, nl_b, nl_c, nl_d, &
12009                               sphi_a, &
12010                               sphi_b, &
12011                               sphi_c, &
12012                               sphi_d, &
12013                               primitives, &
12014                               buffer1, buffer2)
12015 #endif
12016        CASE DEFAULT
12017         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
12018                               work, nl_a, nl_b, nl_c, nl_d, &
12019                               sphi_a, &
12020                               sphi_b, &
12021                               sphi_c, &
12022                               sphi_d, &
12023                               primitives, &
12024                               buffer1, buffer2)
12025        END SELECT
12026       CASE DEFAULT
12027        CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
12028                              work, nl_a, nl_b, nl_c, nl_d, &
12029                              sphi_a, &
12030                              sphi_b, &
12031                              sphi_c, &
12032                              sphi_d, &
12033                              primitives, &
12034                              buffer1, buffer2)
12035       END SELECT
12036      CASE(4)
12037       SELECT CASE(n_c)
12038       CASE(0)
12039        SELECT CASE(n_d)
12040        CASE(0)
12041 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
12042         CALL contract_ggss(work,&
12043                  nl_a, nl_b, nl_c, nl_d, &
12044                   sphi_a, sphi_b, sphi_c, sphi_d, &
12045                   primitives,&
12046                   buffer1,buffer2 )
12047 #else
12048         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
12049                               work, nl_a, nl_b, nl_c, nl_d, &
12050                               sphi_a, &
12051                               sphi_b, &
12052                               sphi_c, &
12053                               sphi_d, &
12054                               primitives, &
12055                               buffer1, buffer2)
12056 #endif
12057        CASE(1)
12058 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
12059         CALL contract_ggsp(work,&
12060                  nl_a, nl_b, nl_c, nl_d, &
12061                   sphi_a, sphi_b, sphi_c, sphi_d, &
12062                   primitives,&
12063                   buffer1,buffer2 )
12064 #else
12065         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
12066                               work, nl_a, nl_b, nl_c, nl_d, &
12067                               sphi_a, &
12068                               sphi_b, &
12069                               sphi_c, &
12070                               sphi_d, &
12071                               primitives, &
12072                               buffer1, buffer2)
12073 #endif
12074        CASE(2)
12075 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
12076         CALL contract_ggsd(work,&
12077                  nl_a, nl_b, nl_c, nl_d, &
12078                   sphi_a, sphi_b, sphi_c, sphi_d, &
12079                   primitives,&
12080                   buffer1,buffer2 )
12081 #else
12082         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
12083                               work, nl_a, nl_b, nl_c, nl_d, &
12084                               sphi_a, &
12085                               sphi_b, &
12086                               sphi_c, &
12087                               sphi_d, &
12088                               primitives, &
12089                               buffer1, buffer2)
12090 #endif
12091        CASE(3)
12092 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
12093         CALL contract_ggsf(work,&
12094                  nl_a, nl_b, nl_c, nl_d, &
12095                   sphi_a, sphi_b, sphi_c, sphi_d, &
12096                   primitives,&
12097                   buffer1,buffer2 )
12098 #else
12099         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
12100                               work, nl_a, nl_b, nl_c, nl_d, &
12101                               sphi_a, &
12102                               sphi_b, &
12103                               sphi_c, &
12104                               sphi_d, &
12105                               primitives, &
12106                               buffer1, buffer2)
12107 #endif
12108        CASE(4)
12109 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
12110         CALL contract_ggsg(work,&
12111                  nl_a, nl_b, nl_c, nl_d, &
12112                   sphi_a, sphi_b, sphi_c, sphi_d, &
12113                   primitives,&
12114                   buffer1,buffer2 )
12115 #else
12116         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
12117                               work, nl_a, nl_b, nl_c, nl_d, &
12118                               sphi_a, &
12119                               sphi_b, &
12120                               sphi_c, &
12121                               sphi_d, &
12122                               primitives, &
12123                               buffer1, buffer2)
12124 #endif
12125        CASE DEFAULT
12126         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
12127                               work, nl_a, nl_b, nl_c, nl_d, &
12128                               sphi_a, &
12129                               sphi_b, &
12130                               sphi_c, &
12131                               sphi_d, &
12132                               primitives, &
12133                               buffer1, buffer2)
12134        END SELECT
12135       CASE(1)
12136        SELECT CASE(n_d)
12137        CASE(0)
12138 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
12139         CALL contract_ggps(work,&
12140                  nl_a, nl_b, nl_c, nl_d, &
12141                   sphi_a, sphi_b, sphi_c, sphi_d, &
12142                   primitives,&
12143                   buffer1,buffer2 )
12144 #else
12145         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
12146                               work, nl_a, nl_b, nl_c, nl_d, &
12147                               sphi_a, &
12148                               sphi_b, &
12149                               sphi_c, &
12150                               sphi_d, &
12151                               primitives, &
12152                               buffer1, buffer2)
12153 #endif
12154        CASE(1)
12155 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
12156         CALL contract_ggpp(work,&
12157                  nl_a, nl_b, nl_c, nl_d, &
12158                   sphi_a, sphi_b, sphi_c, sphi_d, &
12159                   primitives,&
12160                   buffer1,buffer2 )
12161 #else
12162         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
12163                               work, nl_a, nl_b, nl_c, nl_d, &
12164                               sphi_a, &
12165                               sphi_b, &
12166                               sphi_c, &
12167                               sphi_d, &
12168                               primitives, &
12169                               buffer1, buffer2)
12170 #endif
12171        CASE(2)
12172 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
12173         CALL contract_ggpd(work,&
12174                  nl_a, nl_b, nl_c, nl_d, &
12175                   sphi_a, sphi_b, sphi_c, sphi_d, &
12176                   primitives,&
12177                   buffer1,buffer2 )
12178 #else
12179         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
12180                               work, nl_a, nl_b, nl_c, nl_d, &
12181                               sphi_a, &
12182                               sphi_b, &
12183                               sphi_c, &
12184                               sphi_d, &
12185                               primitives, &
12186                               buffer1, buffer2)
12187 #endif
12188        CASE(3)
12189 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
12190         CALL contract_ggpf(work,&
12191                  nl_a, nl_b, nl_c, nl_d, &
12192                   sphi_a, sphi_b, sphi_c, sphi_d, &
12193                   primitives,&
12194                   buffer1,buffer2 )
12195 #else
12196         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
12197                               work, nl_a, nl_b, nl_c, nl_d, &
12198                               sphi_a, &
12199                               sphi_b, &
12200                               sphi_c, &
12201                               sphi_d, &
12202                               primitives, &
12203                               buffer1, buffer2)
12204 #endif
12205        CASE(4)
12206 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
12207         CALL contract_ggpg(work,&
12208                  nl_a, nl_b, nl_c, nl_d, &
12209                   sphi_a, sphi_b, sphi_c, sphi_d, &
12210                   primitives,&
12211                   buffer1,buffer2 )
12212 #else
12213         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
12214                               work, nl_a, nl_b, nl_c, nl_d, &
12215                               sphi_a, &
12216                               sphi_b, &
12217                               sphi_c, &
12218                               sphi_d, &
12219                               primitives, &
12220                               buffer1, buffer2)
12221 #endif
12222        CASE DEFAULT
12223         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
12224                               work, nl_a, nl_b, nl_c, nl_d, &
12225                               sphi_a, &
12226                               sphi_b, &
12227                               sphi_c, &
12228                               sphi_d, &
12229                               primitives, &
12230                               buffer1, buffer2)
12231        END SELECT
12232       CASE(2)
12233        SELECT CASE(n_d)
12234        CASE(0)
12235 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
12236         CALL contract_ggds(work,&
12237                  nl_a, nl_b, nl_c, nl_d, &
12238                   sphi_a, sphi_b, sphi_c, sphi_d, &
12239                   primitives,&
12240                   buffer1,buffer2 )
12241 #else
12242         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
12243                               work, nl_a, nl_b, nl_c, nl_d, &
12244                               sphi_a, &
12245                               sphi_b, &
12246                               sphi_c, &
12247                               sphi_d, &
12248                               primitives, &
12249                               buffer1, buffer2)
12250 #endif
12251        CASE(1)
12252 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
12253         CALL contract_ggdp(work,&
12254                  nl_a, nl_b, nl_c, nl_d, &
12255                   sphi_a, sphi_b, sphi_c, sphi_d, &
12256                   primitives,&
12257                   buffer1,buffer2 )
12258 #else
12259         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
12260                               work, nl_a, nl_b, nl_c, nl_d, &
12261                               sphi_a, &
12262                               sphi_b, &
12263                               sphi_c, &
12264                               sphi_d, &
12265                               primitives, &
12266                               buffer1, buffer2)
12267 #endif
12268        CASE(2)
12269 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
12270         CALL contract_ggdd(work,&
12271                  nl_a, nl_b, nl_c, nl_d, &
12272                   sphi_a, sphi_b, sphi_c, sphi_d, &
12273                   primitives,&
12274                   buffer1,buffer2 )
12275 #else
12276         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
12277                               work, nl_a, nl_b, nl_c, nl_d, &
12278                               sphi_a, &
12279                               sphi_b, &
12280                               sphi_c, &
12281                               sphi_d, &
12282                               primitives, &
12283                               buffer1, buffer2)
12284 #endif
12285        CASE(3)
12286 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
12287         CALL contract_ggdf(work,&
12288                  nl_a, nl_b, nl_c, nl_d, &
12289                   sphi_a, sphi_b, sphi_c, sphi_d, &
12290                   primitives,&
12291                   buffer1,buffer2 )
12292 #else
12293         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
12294                               work, nl_a, nl_b, nl_c, nl_d, &
12295                               sphi_a, &
12296                               sphi_b, &
12297                               sphi_c, &
12298                               sphi_d, &
12299                               primitives, &
12300                               buffer1, buffer2)
12301 #endif
12302        CASE(4)
12303 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
12304         CALL contract_ggdg(work,&
12305                  nl_a, nl_b, nl_c, nl_d, &
12306                   sphi_a, sphi_b, sphi_c, sphi_d, &
12307                   primitives,&
12308                   buffer1,buffer2 )
12309 #else
12310         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
12311                               work, nl_a, nl_b, nl_c, nl_d, &
12312                               sphi_a, &
12313                               sphi_b, &
12314                               sphi_c, &
12315                               sphi_d, &
12316                               primitives, &
12317                               buffer1, buffer2)
12318 #endif
12319        CASE DEFAULT
12320         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
12321                               work, nl_a, nl_b, nl_c, nl_d, &
12322                               sphi_a, &
12323                               sphi_b, &
12324                               sphi_c, &
12325                               sphi_d, &
12326                               primitives, &
12327                               buffer1, buffer2)
12328        END SELECT
12329       CASE(3)
12330        SELECT CASE(n_d)
12331        CASE(0)
12332 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
12333         CALL contract_ggfs(work,&
12334                  nl_a, nl_b, nl_c, nl_d, &
12335                   sphi_a, sphi_b, sphi_c, sphi_d, &
12336                   primitives,&
12337                   buffer1,buffer2 )
12338 #else
12339         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
12340                               work, nl_a, nl_b, nl_c, nl_d, &
12341                               sphi_a, &
12342                               sphi_b, &
12343                               sphi_c, &
12344                               sphi_d, &
12345                               primitives, &
12346                               buffer1, buffer2)
12347 #endif
12348        CASE(1)
12349 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
12350         CALL contract_ggfp(work,&
12351                  nl_a, nl_b, nl_c, nl_d, &
12352                   sphi_a, sphi_b, sphi_c, sphi_d, &
12353                   primitives,&
12354                   buffer1,buffer2 )
12355 #else
12356         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
12357                               work, nl_a, nl_b, nl_c, nl_d, &
12358                               sphi_a, &
12359                               sphi_b, &
12360                               sphi_c, &
12361                               sphi_d, &
12362                               primitives, &
12363                               buffer1, buffer2)
12364 #endif
12365        CASE(2)
12366 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
12367         CALL contract_ggfd(work,&
12368                  nl_a, nl_b, nl_c, nl_d, &
12369                   sphi_a, sphi_b, sphi_c, sphi_d, &
12370                   primitives,&
12371                   buffer1,buffer2 )
12372 #else
12373         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
12374                               work, nl_a, nl_b, nl_c, nl_d, &
12375                               sphi_a, &
12376                               sphi_b, &
12377                               sphi_c, &
12378                               sphi_d, &
12379                               primitives, &
12380                               buffer1, buffer2)
12381 #endif
12382        CASE(3)
12383 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
12384         CALL contract_ggff(work,&
12385                  nl_a, nl_b, nl_c, nl_d, &
12386                   sphi_a, sphi_b, sphi_c, sphi_d, &
12387                   primitives,&
12388                   buffer1,buffer2 )
12389 #else
12390         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
12391                               work, nl_a, nl_b, nl_c, nl_d, &
12392                               sphi_a, &
12393                               sphi_b, &
12394                               sphi_c, &
12395                               sphi_d, &
12396                               primitives, &
12397                               buffer1, buffer2)
12398 #endif
12399        CASE(4)
12400 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
12401         CALL contract_ggfg(work,&
12402                  nl_a, nl_b, nl_c, nl_d, &
12403                   sphi_a, sphi_b, sphi_c, sphi_d, &
12404                   primitives,&
12405                   buffer1,buffer2 )
12406 #else
12407         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
12408                               work, nl_a, nl_b, nl_c, nl_d, &
12409                               sphi_a, &
12410                               sphi_b, &
12411                               sphi_c, &
12412                               sphi_d, &
12413                               primitives, &
12414                               buffer1, buffer2)
12415 #endif
12416        CASE DEFAULT
12417         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
12418                               work, nl_a, nl_b, nl_c, nl_d, &
12419                               sphi_a, &
12420                               sphi_b, &
12421                               sphi_c, &
12422                               sphi_d, &
12423                               primitives, &
12424                               buffer1, buffer2)
12425        END SELECT
12426       CASE(4)
12427        SELECT CASE(n_d)
12428        CASE(0)
12429 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
12430         CALL contract_gggs(work,&
12431                  nl_a, nl_b, nl_c, nl_d, &
12432                   sphi_a, sphi_b, sphi_c, sphi_d, &
12433                   primitives,&
12434                   buffer1,buffer2 )
12435 #else
12436         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
12437                               work, nl_a, nl_b, nl_c, nl_d, &
12438                               sphi_a, &
12439                               sphi_b, &
12440                               sphi_c, &
12441                               sphi_d, &
12442                               primitives, &
12443                               buffer1, buffer2)
12444 #endif
12445        CASE(1)
12446 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
12447         CALL contract_gggp(work,&
12448                  nl_a, nl_b, nl_c, nl_d, &
12449                   sphi_a, sphi_b, sphi_c, sphi_d, &
12450                   primitives,&
12451                   buffer1,buffer2 )
12452 #else
12453         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
12454                               work, nl_a, nl_b, nl_c, nl_d, &
12455                               sphi_a, &
12456                               sphi_b, &
12457                               sphi_c, &
12458                               sphi_d, &
12459                               primitives, &
12460                               buffer1, buffer2)
12461 #endif
12462        CASE(2)
12463 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
12464         CALL contract_gggd(work,&
12465                  nl_a, nl_b, nl_c, nl_d, &
12466                   sphi_a, sphi_b, sphi_c, sphi_d, &
12467                   primitives,&
12468                   buffer1,buffer2 )
12469 #else
12470         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
12471                               work, nl_a, nl_b, nl_c, nl_d, &
12472                               sphi_a, &
12473                               sphi_b, &
12474                               sphi_c, &
12475                               sphi_d, &
12476                               primitives, &
12477                               buffer1, buffer2)
12478 #endif
12479        CASE(3)
12480 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
12481         CALL contract_gggf(work,&
12482                  nl_a, nl_b, nl_c, nl_d, &
12483                   sphi_a, sphi_b, sphi_c, sphi_d, &
12484                   primitives,&
12485                   buffer1,buffer2 )
12486 #else
12487         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
12488                               work, nl_a, nl_b, nl_c, nl_d, &
12489                               sphi_a, &
12490                               sphi_b, &
12491                               sphi_c, &
12492                               sphi_d, &
12493                               primitives, &
12494                               buffer1, buffer2)
12495 #endif
12496        CASE(4)
12497 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
12498         CALL contract_gggg(work,&
12499                  nl_a, nl_b, nl_c, nl_d, &
12500                   sphi_a, sphi_b, sphi_c, sphi_d, &
12501                   primitives,&
12502                   buffer1,buffer2 )
12503 #else
12504         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
12505                               work, nl_a, nl_b, nl_c, nl_d, &
12506                               sphi_a, &
12507                               sphi_b, &
12508                               sphi_c, &
12509                               sphi_d, &
12510                               primitives, &
12511                               buffer1, buffer2)
12512 #endif
12513        CASE DEFAULT
12514         CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
12515                               work, nl_a, nl_b, nl_c, nl_d, &
12516                               sphi_a, &
12517                               sphi_b, &
12518                               sphi_c, &
12519                               sphi_d, &
12520                               primitives, &
12521                               buffer1, buffer2)
12522        END SELECT
12523       CASE DEFAULT
12524        CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
12525                              work, nl_a, nl_b, nl_c, nl_d, &
12526                              sphi_a, &
12527                              sphi_b, &
12528                              sphi_c, &
12529                              sphi_d, &
12530                              primitives, &
12531                              buffer1, buffer2)
12532       END SELECT
12533      CASE DEFAULT
12534       CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
12535                             work, nl_a, nl_b, nl_c, nl_d, &
12536                             sphi_a, &
12537                             sphi_b, &
12538                             sphi_c, &
12539                             sphi_d, &
12540                             primitives, &
12541                             buffer1, buffer2)
12542      END SELECT
12543     CASE DEFAULT
12544      CALL contract_generic(ncoa, ncob, ncoc, ncod, nsoa, nsob, nsoc, nsod,&
12545                            work, nl_a, nl_b, nl_c, nl_d, &
12546                            sphi_a, &
12547                            sphi_b, &
12548                            sphi_c, &
12549                            sphi_d, &
12550                            primitives, &
12551                            buffer1, buffer2)
12552     END SELECT
12553 #else
12554     RETURN
12555 #endif
12556   END SUBROUTINE  contract
12557 #if defined (__LIBINT)
12558 
12559 
12560 #if __MAX_CONTR > 0 || __MAX_CONTR == 0
12561   SUBROUTINE contract_ssss(work, &
12562                             nl_a, nl_b, nl_c, nl_d,&
12563                             sphi_a, sphi_b, sphi_c, sphi_d,&
12564                             primitives,&
12565                             buffer1,buffer2)
12566 
12567     REAL(dp), DIMENSION(1*1*1*1), INTENT(IN) :: work
12568     INTEGER                                  :: nl_a, nl_b, nl_c, nl_d
12569     REAL(dp), DIMENSION(1, 1*nl_a), 
12570       INTENT(IN)                             :: sphi_a
12571     REAL(dp), DIMENSION(1, 1*nl_b), 
12572       INTENT(IN)                             :: sphi_b
12573     REAL(dp), DIMENSION(1, 1*nl_c), 
12574       INTENT(IN)                             :: sphi_c
12575     REAL(dp), DIMENSION(1, 1*nl_d), 
12576       INTENT(IN)                             :: sphi_d
12577     REAL(dp), DIMENSION(1*nl_a, 1*nl_b, 1*&
      nl_c, 1*nl_d)                          :: primitives
12578     REAL(dp), DIMENSION(1*1*1*1)             :: buffer1, buffer2
12579 
12580     INTEGER                                  :: i, i1, i2, i3, ia, ib, ic, 
12581                                                 id, imax, kmax, s_offset_a1, 
12582                                                 s_offset_b1, s_offset_c1, 
12583                                                 s_offset_d1
12584 
12585     s_offset_a1 = 0
12586     DO ia = 1,nl_a
12587       s_offset_b1 = 0
12588       DO ib = 1,nl_b
12589         s_offset_c1 = 0
12590         DO ic = 1,nl_c
12591           s_offset_d1 = 0
12592           DO id = 1,nl_d
12593 
12594             buffer1 = 0.0_dp
12595             imax=1*1*1
12596             kmax=1
12597             DO i=1,imax
12598 buffer1(i+imax*(1-1)) = buffer1(i+imax*(1-1)) + work(1+(i-1)*kmax) * sphi_a(1,1+s_offset_a1)
12599             ENDDO
12600 
12601             buffer2 = 0.0_dp
12602             imax=1*1*1
12603             kmax=1
12604             DO i=1,imax
12605 buffer2(i+imax*(1-1)) = buffer2(i+imax*(1-1)) + buffer1(1+(i-1)*kmax) * sphi_b(1,1+s_offset_b1)
12606             ENDDO
12607 
12608             buffer1 = 0.0_dp
12609             imax=1*1*1
12610             kmax=1
12611             DO i=1,imax
12612 buffer1(i+imax*(1-1)) = buffer1(i+imax*(1-1)) + buffer2(1+(i-1)*kmax) * sphi_c(1,1+s_offset_c1)
12613             ENDDO
12614 
12615             imax=1*1*1
12616             kmax=1
12617             i = 0
12618             DO i1=1,1
12619             DO i2=1,1
12620             DO i3=1,1
12621               i = i + 1
12622 primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+1) =&
12623 primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+1) &
12624 + buffer1(1+(i-1)*kmax) * sphi_d(1,1+s_offset_d1)
12625             ENDDO
12626             ENDDO
12627             ENDDO
12628             s_offset_d1 = s_offset_d1 + 1
12629           END DO
12630           s_offset_c1 = s_offset_c1 + 1
12631         END DO
12632         s_offset_b1 = s_offset_b1 + 1
12633       END DO
12634       s_offset_a1 = s_offset_a1 + 1
12635     END DO
12636   END SUBROUTINE contract_ssss
12637 #endif
12638 #if __MAX_CONTR > 1 || __MAX_CONTR == 1
12639   SUBROUTINE contract_sssp(work, &
12640                             nl_a, nl_b, nl_c, nl_d,&
12641                             sphi_a, sphi_b, sphi_c, sphi_d,&
12642                             primitives,&
12643                             buffer1,buffer2)
12644     REAL(dp), DIMENSION(1*1*1*3), INTENT(IN) :: work
12645     INTEGER                                  :: nl_a, nl_b, nl_c, nl_d
12646     REAL(dp), DIMENSION(1, 1*nl_a), 
12647       INTENT(IN)                             :: sphi_a
12648     REAL(dp), DIMENSION(1, 1*nl_b), 
12649       INTENT(IN)                             :: sphi_b
12650     REAL(dp), DIMENSION(1, 1*nl_c), 
12651       INTENT(IN)                             :: sphi_c
12652     REAL(dp), DIMENSION(3, 3*nl_d), 
12653       INTENT(IN)                             :: sphi_d
12654     REAL(dp), DIMENSION(1*nl_a, 1*nl_b, 1*&
      nl_c, 3*nl_d)                          :: primitives
12655     REAL(dp), DIMENSION(1*1*1*3)             :: buffer1, buffer2
12656 
12657     INTEGER                                  :: i, i1, i2, i3, ia, ib, ic, 
12658                                                 id, imax, kmax, s_offset_a1, 
12659                                                 s_offset_b1, s_offset_c1, 
12660                                                 s_offset_d1
12661 
12662     s_offset_a1 = 0
12663     DO ia = 1,nl_a
12664       s_offset_b1 = 0
12665       DO ib = 1,nl_b
12666         s_offset_c1 = 0
12667         DO ic = 1,nl_c
12668           s_offset_d1 = 0
12669           DO id = 1,nl_d
12670 
12671             buffer1 = 0.0_dp
12672             imax=1*1*3
12673             kmax=1
12674             DO i=1,imax
12675 buffer1(i+imax*(1-1)) = buffer1(i+imax*(1-1)) + work(1+(i-1)*kmax) * sphi_a(1,1+s_offset_a1)
12676             ENDDO
12677 
12678             buffer2 = 0.0_dp
12679             imax=1*1*3
12680             kmax=1
12681             DO i=1,imax
12682 buffer2(i+imax*(1-1)) = buffer2(i+imax*(1-1)) + buffer1(1+(i-1)*kmax) * sphi_b(1,1+s_offset_b1)
12683             ENDDO
12684 
12685             buffer1 = 0.0_dp
12686             imax=1*1*3
12687             kmax=1
12688             DO i=1,imax
12689 buffer1(i+imax*(1-1)) = buffer1(i+imax*(1-1)) + buffer2(1+(i-1)*kmax) * sphi_c(1,1+s_offset_c1)
12690             ENDDO
12691 
12692             imax=1*1*1
12693             kmax=3
12694             i = 0
12695             DO i1=1,1
12696             DO i2=1,1
12697             DO i3=1,1
12698               i = i + 1
12699 primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+3) =&
12700 primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+3) &
12701 + buffer1(1+(i-1)*kmax) * sphi_d(1,3+s_offset_d1)
12702 primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+1) =&
12703 primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+1) &
12704 + buffer1(2+(i-1)*kmax) * sphi_d(2,1+s_offset_d1)
12705 primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+2) =&
12706 primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+2) &
12707 + buffer1(3+(i-1)*kmax) * sphi_d(3,2+s_offset_d1)
12708             ENDDO
12709             ENDDO
12710             ENDDO
12711             s_offset_d1 = s_offset_d1 + 3
12712           END DO
12713           s_offset_c1 = s_offset_c1 + 1
12714         END DO
12715         s_offset_b1 = s_offset_b1 + 1
12716       END DO
12717       s_offset_a1 = s_offset_a1 + 1
12718     END DO
12719   END SUBROUTINE contract_sssp
12720 #endif
12721 #if __MAX_CONTR > 2 || __MAX_CONTR == 2
12722   SUBROUTINE contract_sssd(work, &
12723                             nl_a, nl_b, nl_c, nl_d,&
12724                             sphi_a, sphi_b, sphi_c, sphi_d,&
12725                             primitives,&
12726                             buffer1,buffer2)
12727     REAL(dp), DIMENSION(1*1*1*6), INTENT(IN) :: work
12728     INTEGER                                  :: nl_a, nl_b, nl_c, nl_d
12729     REAL(dp), DIMENSION(1, 1*nl_a), 
12730       INTENT(IN)                             :: sphi_a
12731     REAL(dp), DIMENSION(1, 1*nl_b), 
12732       INTENT(IN)                             :: sphi_b
12733     REAL(dp), DIMENSION(1, 1*nl_c), 
12734       INTENT(IN)                             :: sphi_c
12735     REAL(dp), DIMENSION(6, 5*nl_d), 
12736       INTENT(IN)                             :: sphi_d
12737     REAL(dp), DIMENSION(1*nl_a, 1*nl_b, 1*&
      nl_c, 5*nl_d)                          :: primitives
12738     REAL(dp), DIMENSION(1*1*1*6)             :: buffer1, buffer2
12739 
12740     INTEGER                                  :: i, i1, i2, i3, ia, ib, ic, 
12741                                                 id, imax, kmax, s_offset_a1, 
12742                                                 s_offset_b1, s_offset_c1, 
12743                                                 s_offset_d1
12744 
12745     s_offset_a1 = 0
12746     DO ia = 1,nl_a
12747       s_offset_b1 = 0
12748       DO ib = 1,nl_b
12749         s_offset_c1 = 0
12750         DO ic = 1,nl_c
12751           s_offset_d1 = 0
12752           DO id = 1,nl_d
12753             buffer1 = 0.0_dp
12754             imax=1*1*6
12755             kmax=1
12756             DO i=1,imax
12757 buffer1(i+imax*(1-1)) = buffer1(i+imax*(1-1)) + work(1+(i-1)*kmax) * sphi_a(1,1+s_offset_a1)
12758             ENDDO
12759             buffer2 = 0.0_dp
12760             imax=1*1*6
12761             kmax=1
12762             DO i=1,imax
12763 buffer2(i+imax*(1-1)) = buffer2(i+imax*(1-1)) + buffer1(1+(i-1)*kmax) * sphi_b(1,1+s_offset_b1)
12764             ENDDO
12765             buffer1 = 0.0_dp
12766             imax=1*1*6
12767             kmax=1
12768             DO i=1,imax
12769 buffer1(i+imax*(1-1)) = buffer1(i+imax*(1-1)) + buffer2(1+(i-1)*kmax) * sphi_c(1,1+s_offset_c1)
12770             ENDDO
12771 
12772             imax=1*1*1
12773             kmax=6
12774             i = 0
12775             DO i1=1,1
12776             DO i2=1,1
12777             DO i3=1,1
12778               i = i + 1
12779 primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+3)= &
12780 primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+3)+ &
12781 buffer1(1+(i-1)*kmax) * sphi_d(1,3+s_offset_d1)
12782 primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+5)= &
12783 primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+5)+ &
12784 buffer1(1+(i-1)*kmax) * sphi_d(1,5+s_offset_d1)
12785 primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+1)= &
12786 primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+1)+ &
12787 buffer1(2+(i-1)*kmax) * sphi_d(2,1+s_offset_d1)
12788 primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+4)= &
12789 primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+4)+ &
12790 buffer1(3+(i-1)*kmax) * sphi_d(3,4+s_offset_d1)
12791 primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+3)= &
12792 primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+3)+ &
12793 buffer1(4+(i-1)*kmax) * sphi_d(4,3+s_offset_d1)
12794 primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+5)= &
12795 primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+5)+ &
12796 buffer1(4+(i-1)*kmax) * sphi_d(4,5+s_offset_d1)
12797 primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+2)= &
12798 primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+2)+ &
12799 buffer1(5+(i-1)*kmax) * sphi_d(5,2+s_offset_d1)
12800 primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+3)= &
12801 primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+3)+ &
12802 buffer1(6+(i-1)*kmax) * sphi_d(6,3+s_offset_d1)
12803             ENDDO
12804             ENDDO
12805             ENDDO
12806             s_offset_d1 = s_offset_d1 + 5
12807           END DO
12808           s_offset_c1 = s_offset_c1 + 1
12809         END DO
12810         s_offset_b1 = s_offset_b1 + 1
12811       END DO
12812       s_offset_a1 = s_offset_a1 + 1
12813     END DO
12814   END SUBROUTINE contract_sssd
12815 #endif
12816 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
12817   SUBROUTINE contract_sssf(work, &
12818                             nl_a, nl_b, nl_c, nl_d,&
12819                             sphi_a, sphi_b, sphi_c, sphi_d,&
12820                             primitives,&
12821                             buffer1,buffer2)
12822     REAL(dp), DIMENSION(1*1*1*10), 
12823       INTENT(IN)                             :: work
12824     INTEGER                                  :: nl_a, nl_b, nl_c, nl_d
12825     REAL(dp), DIMENSION(1, 1*nl_a), 
12826       INTENT(IN)                             :: sphi_a
12827     REAL(dp), DIMENSION(1, 1*nl_b), 
12828       INTENT(IN)                             :: sphi_b
12829     REAL(dp), DIMENSION(1, 1*nl_c), 
12830       INTENT(IN)                             :: sphi_c
12831     REAL(dp), DIMENSION(10, 7*nl_d), 
12832       INTENT(IN)                             :: sphi_d
12833     REAL(dp), DIMENSION(1*nl_a, 1*nl_b, 1*&
      nl_c, 7*nl_d)                          :: primitives
12834     REAL(dp), DIMENSION(1*1*1*10)            :: buffer1, buffer2
12835 
12836     INTEGER                                  :: i, i1, i2, i3, ia, ib, ic, 
12837                                                 id, imax, kmax, s_offset_a1, 
12838                                                 s_offset_b1, s_offset_c1, 
12839                                                 s_offset_d1
12840 
12841     s_offset_a1 = 0
12842     DO ia = 1,nl_a
12843       s_offset_b1 = 0
12844       DO ib = 1,nl_b
12845         s_offset_c1 = 0
12846         DO ic = 1,nl_c
12847           s_offset_d1 = 0
12848           DO id = 1,nl_d
12849             buffer1 = 0.0_dp
12850             imax=1*1*10
12851             kmax=1
12852             DO i=1,imax
12853 buffer1(i+imax*(1-1)) = buffer1(i+imax*(1-1)) + work(1+(i-1)*kmax) * sphi_a(1,1+s_offset_a1)
12854             ENDDO
12855             buffer2 = 0.0_dp
12856             imax=1*1*10
12857             kmax=1
12858             DO i=1,imax
12859 buffer2(i+imax*(1-1)) = buffer2(i+imax*(1-1)) + buffer1(1+(i-1)*kmax) * sphi_b(1,1+s_offset_b1)
12860             ENDDO
12861             buffer1 = 0.0_dp
12862             imax=1*1*10
12863             kmax=1
12864             DO i=1,imax
12865 buffer1(i+imax*(1-1)) = buffer1(i+imax*(1-1)) + buffer2(1+(i-1)*kmax) * sphi_c(1,1+s_offset_c1)
12866             ENDDO
12867             imax=1*1*1
12868             kmax=10
12869             i = 0
12870             DO i1=1,1
12871             DO i2=1,1
12872             DO i3=1,1
12873               i = i + 1
12874 primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+5)= &
12875 primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+5)+ &
12876 buffer1(1+(i-1)*kmax) * sphi_d(1,5 +s_offset_d1)
12877 primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+7)= &
12878 primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+7)+ &
12879 buffer1(1+(i-1)*kmax) * sphi_d(1,7 +s_offset_d1)
12880 primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+1)= &
12881 primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+1)+ &
12882 buffer1(2+(i-1)*kmax) * sphi_d(2,1 +s_offset_d1)
12883 primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+3)= &
12884 primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+3)+ &
12885 buffer1(2+(i-1)*kmax) * sphi_d(2,3 +s_offset_d1)
12886 primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+4)= &
12887 primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+4)+ &
12888 buffer1(3+(i-1)*kmax) * sphi_d(3,4 +s_offset_d1)
12889 primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+6)= &
12890 primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+6)+ &
12891 buffer1(3+(i-1)*kmax) * sphi_d(3,6 +s_offset_d1)
12892 primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+5)= &
12893 primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+5)+ &
12894 buffer1(4+(i-1)*kmax) * sphi_d(4,5 +s_offset_d1)
12895 primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+7)= &
12896 primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+7)+ &
12897 buffer1(4+(i-1)*kmax) * sphi_d(4,7 +s_offset_d1)
12898 primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+2)= &
12899 primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+2)+ &
12900 buffer1(5+(i-1)*kmax) * sphi_d(5,2 +s_offset_d1)
12901 primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+5)= &
12902 primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+5)+ &
12903 buffer1(6+(i-1)*kmax) * sphi_d(6,5 +s_offset_d1)
12904 primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+1)= &
12905 primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+1)+ &
12906 buffer1(7+(i-1)*kmax) * sphi_d(7,1 +s_offset_d1)
12907 primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+3)= &
12908 primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+3)+ &
12909 buffer1(7+(i-1)*kmax) * sphi_d(7,3 +s_offset_d1)
12910 primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+4)= &
12911 primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+4)+ &
12912 buffer1(8+(i-1)*kmax) * sphi_d(8,4 +s_offset_d1)
12913 primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+6)= &
12914 primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+6)+ &
12915 buffer1(8+(i-1)*kmax) * sphi_d(8,6 +s_offset_d1)
12916 primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+3)= &
12917 primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+3)+ &
12918 buffer1(9+(i-1)*kmax) * sphi_d(9,3 +s_offset_d1)
12919 primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+4)= &
12920 primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+4)+ &
12921 buffer1(10+(i-1)*kmax) * sphi_d(10,4 +s_offset_d1)
12922             ENDDO
12923             ENDDO
12924             ENDDO
12925             s_offset_d1 = s_offset_d1 + 7
12926           END DO
12927           s_offset_c1 = s_offset_c1 + 1
12928         END DO
12929         s_offset_b1 = s_offset_b1 + 1
12930       END DO
12931       s_offset_a1 = s_offset_a1 + 1
12932     END DO
12933   END SUBROUTINE contract_sssf
12934 #endif
12935 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
12936   SUBROUTINE contract_sssg(work, &
12937                             nl_a, nl_b, nl_c, nl_d,&
12938                             sphi_a, sphi_b, sphi_c, sphi_d,&
12939                             primitives,&
12940                             buffer1,buffer2)
12941     REAL(dp), DIMENSION(1*1*1*15), 
12942       INTENT(IN)                             :: work
12943     INTEGER                                  :: nl_a, nl_b, nl_c, nl_d
12944     REAL(dp), DIMENSION(1, 1*nl_a), 
12945       INTENT(IN)                             :: sphi_a
12946     REAL(dp), DIMENSION(1, 1*nl_b), 
12947       INTENT(IN)                             :: sphi_b
12948     REAL(dp), DIMENSION(1, 1*nl_c), 
12949       INTENT(IN)                             :: sphi_c
12950     REAL(dp), DIMENSION(15, 9*nl_d), 
12951       INTENT(IN)                             :: sphi_d
12952     REAL(dp), DIMENSION(1*nl_a, 1*nl_b, 1*&
      nl_c, 9*nl_d)                          :: primitives
12953     REAL(dp), DIMENSION(1*1*1*15)            :: buffer1, buffer2
12954 
12955     INTEGER                                  :: i, i1, i2, i3, ia, ib, ic, 
12956                                                 id, imax, kmax, s_offset_a1, 
12957                                                 s_offset_b1, s_offset_c1, 
12958                                                 s_offset_d1
12959 
12960     s_offset_a1 = 0
12961     DO ia = 1,nl_a
12962       s_offset_b1 = 0
12963       DO ib = 1,nl_b
12964         s_offset_c1 = 0
12965         DO ic = 1,nl_c
12966           s_offset_d1 = 0
12967           DO id = 1,nl_d
12968             buffer1 = 0.0_dp
12969             imax=1*1*15
12970             kmax=1
12971             DO i=1,imax
12972 buffer1(i+imax*(1-1)) = buffer1(i+imax*(1-1)) + work(1+(i-1)*kmax) * sphi_a(1,1+s_offset_a1)
12973             ENDDO
12974             buffer2 = 0.0_dp
12975             imax=1*1*15
12976             kmax=1
12977             DO i=1,imax
12978 buffer2(i+imax*(1-1)) = buffer2(i+imax*(1-1)) + buffer1(1+(i-1)*kmax) * sphi_b(1,1+s_offset_b1)
12979             ENDDO
12980             buffer1 = 0.0_dp
12981             imax=1*1*15
12982             kmax=1
12983             DO i=1,imax
12984 buffer1(i+imax*(1-1)) = buffer1(i+imax*(1-1)) + buffer2(1+(i-1)*kmax) * sphi_c(1,1+s_offset_c1)
12985             ENDDO
12986             imax=1*1*1
12987             kmax=15
12988             i = 0
12989             DO i1=1,1
12990             DO i2=1,1
12991             DO i3=1,1
12992               i = i + 1
12993  primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+5)= &
12994  primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+5)+ &
12995  buffer1(1+(i-1)*kmax) * sphi_d(1,5+s_offset_d1)
12996  primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+7)= &
12997  primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+7)+ &
12998  buffer1(1+(i-1)*kmax) * sphi_d(1,7+s_offset_d1)
12999  primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+9)= &
13000  primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+9)+ &
13001  buffer1(1+(i-1)*kmax) * sphi_d(1,9+s_offset_d1)
13002  primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+1)= &
13003  primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+1)+ &
13004  buffer1(2+(i-1)*kmax) * sphi_d(2,1+s_offset_d1)
13005  primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+3)= &
13006  primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+3)+ &
13007  buffer1(2+(i-1)*kmax) * sphi_d(2,3+s_offset_d1)
13008  primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+6)= &
13009  primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+6)+ &
13010  buffer1(3+(i-1)*kmax) * sphi_d(3,6+s_offset_d1)
13011  primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+8)= &
13012  primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+8)+ &
13013  buffer1(3+(i-1)*kmax) * sphi_d(3,8+s_offset_d1)
13014  primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+5)= &
13015  primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+5)+ &
13016  buffer1(4+(i-1)*kmax) * sphi_d(4,5+s_offset_d1)
13017  primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+9)= &
13018  primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+9)+ &
13019  buffer1(4+(i-1)*kmax) * sphi_d(4,9+s_offset_d1)
13020  primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+2)= &
13021  primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+2)+ &
13022  buffer1(5+(i-1)*kmax) * sphi_d(5,2+s_offset_d1)
13023  primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+4)= &
13024  primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+4)+ &
13025  buffer1(5+(i-1)*kmax) * sphi_d(5,4+s_offset_d1)
13026  primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+5)= &
13027  primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+5)+ &
13028  buffer1(6+(i-1)*kmax) * sphi_d(6,5+s_offset_d1)
13029  primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+7)= &
13030  primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+7)+ &
13031  buffer1(6+(i-1)*kmax) * sphi_d(6,7+s_offset_d1)
13032  primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+1)= &
13033  primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+1)+ &
13034  buffer1(7+(i-1)*kmax) * sphi_d(7,1+s_offset_d1)
13035  primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+3)= &
13036  primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+3)+ &
13037  buffer1(7+(i-1)*kmax) * sphi_d(7,3+s_offset_d1)
13038  primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+6)= &
13039  primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+6)+ &
13040  buffer1(8+(i-1)*kmax) * sphi_d(8,6+s_offset_d1)
13041  primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+8)= &
13042  primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+8)+ &
13043  buffer1(8+(i-1)*kmax) * sphi_d(8,8+s_offset_d1)
13044  primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+3)= &
13045  primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+3)+ &
13046  buffer1(9+(i-1)*kmax) * sphi_d(9,3+s_offset_d1)
13047  primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+6)= &
13048  primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+6)+ &
13049  buffer1(10+(i-1)*kmax) * sphi_d(10,6+s_offset_d1)
13050  primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+5)= &
13051  primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+5)+ &
13052  buffer1(11+(i-1)*kmax) * sphi_d(11,5+s_offset_d1)
13053  primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+7)= &
13054  primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+7)+ &
13055  buffer1(11+(i-1)*kmax) * sphi_d(11,7+s_offset_d1)
13056  primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+9)= &
13057  primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+9)+ &
13058  buffer1(11+(i-1)*kmax) * sphi_d(11,9+s_offset_d1)
13059  primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+2)= &
13060  primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+2)+ &
13061  buffer1(12+(i-1)*kmax) * sphi_d(12,2+s_offset_d1)
13062  primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+4)= &
13063  primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+4)+ &
13064  buffer1(12+(i-1)*kmax) * sphi_d(12,4+s_offset_d1)
13065  primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+5)= &
13066  primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+5)+ &
13067  buffer1(13+(i-1)*kmax) * sphi_d(13,5+s_offset_d1)
13068  primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+7)= &
13069  primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+7)+ &
13070  buffer1(13+(i-1)*kmax) * sphi_d(13,7+s_offset_d1)
13071  primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+4)= &
13072  primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+4)+ &
13073  buffer1(14+(i-1)*kmax) * sphi_d(14,4+s_offset_d1)
13074  primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+5)= &
13075  primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+5)+ &
13076  buffer1(15+(i-1)*kmax) * sphi_d(15,5+s_offset_d1)
13077             ENDDO
13078             ENDDO
13079             ENDDO
13080             s_offset_d1 = s_offset_d1 + 9
13081           END DO
13082           s_offset_c1 = s_offset_c1 + 1
13083         END DO
13084         s_offset_b1 = s_offset_b1 + 1
13085       END DO
13086       s_offset_a1 = s_offset_a1 + 1
13087     END DO
13088   END SUBROUTINE contract_sssg
13089 #endif
13090 #if __MAX_CONTR > 1 || __MAX_CONTR == 1
13091   SUBROUTINE contract_ssps(work, &
13092                             nl_a, nl_b, nl_c, nl_d,&
13093                             sphi_a, sphi_b, sphi_c, sphi_d,&
13094                             primitives,&
13095                             buffer1,buffer2)
13096     REAL(dp), DIMENSION(1*1*3*1), INTENT(IN) :: work
13097     INTEGER                                  :: nl_a, nl_b, nl_c, nl_d
13098     REAL(dp), DIMENSION(1, 1*nl_a), 
13099       INTENT(IN)                             :: sphi_a
13100     REAL(dp), DIMENSION(1, 1*nl_b), 
13101       INTENT(IN)                             :: sphi_b
13102     REAL(dp), DIMENSION(3, 3*nl_c), 
13103       INTENT(IN)                             :: sphi_c
13104     REAL(dp), DIMENSION(1, 1*nl_d), 
13105       INTENT(IN)                             :: sphi_d
13106     REAL(dp), DIMENSION(1*nl_a, 1*nl_b, 3*&
      nl_c, 1*nl_d)                          :: primitives
13107     REAL(dp), DIMENSION(1*1*3*1)             :: buffer1, buffer2
13108 
13109     INTEGER                                  :: i, i1, i2, i3, ia, ib, ic, 
13110                                                 id, imax, kmax, s_offset_a1, 
13111                                                 s_offset_b1, s_offset_c1, 
13112                                                 s_offset_d1
13113 
13114     s_offset_a1 = 0
13115     DO ia = 1,nl_a
13116       s_offset_b1 = 0
13117       DO ib = 1,nl_b
13118         s_offset_c1 = 0
13119         DO ic = 1,nl_c
13120           s_offset_d1 = 0
13121           DO id = 1,nl_d
13122             buffer1 = 0.0_dp
13123             imax=1*3*1
13124             kmax=1
13125             DO i=1,imax
13126 buffer1(i+imax*(1-1)) = buffer1(i+imax*(1-1)) + work(1+(i-1)*kmax) * sphi_a(1,1+s_offset_a1)
13127             ENDDO
13128             buffer2 = 0.0_dp
13129             imax=1*3*1
13130             kmax=1
13131             DO i=1,imax
13132 buffer2(i+imax*(1-1)) = buffer2(i+imax*(1-1)) + buffer1(1+(i-1)*kmax) * sphi_b(1,1+s_offset_b1)
13133             ENDDO
13134             buffer1 = 0.0_dp
13135             imax=1*1*1
13136             kmax=3
13137             DO i=1,imax
13138 buffer1(i+imax*(3-1)) = buffer1(i+imax*(3-1)) + buffer2(1+(i-1)*kmax) * sphi_c(1,3+s_offset_c1)
13139 buffer1(i+imax*(1-1)) = buffer1(i+imax*(1-1)) + buffer2(2+(i-1)*kmax) * sphi_c(2,1+s_offset_c1)
13140 buffer1(i+imax*(2-1)) = buffer1(i+imax*(2-1)) + buffer2(3+(i-1)*kmax) * sphi_c(3,2+s_offset_c1)
13141             ENDDO
13142             imax=1*1*3
13143             kmax=1
13144             i = 0
13145             DO i1=1,3
13146             DO i2=1,1
13147             DO i3=1,1
13148               i = i + 1
13149 primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+1) =&
13150 primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+1) &
13151 + buffer1(1+(i-1)*kmax) * sphi_d(1,1+s_offset_d1)
13152             ENDDO
13153             ENDDO
13154             ENDDO
13155             s_offset_d1 = s_offset_d1 + 1
13156           END DO
13157           s_offset_c1 = s_offset_c1 + 3
13158         END DO
13159         s_offset_b1 = s_offset_b1 + 1
13160       END DO
13161       s_offset_a1 = s_offset_a1 + 1
13162     END DO
13163   END SUBROUTINE contract_ssps
13164 #endif
13165 #if __MAX_CONTR > 1 || __MAX_CONTR == 1
13166   SUBROUTINE contract_sspp(work, &
13167                             nl_a, nl_b, nl_c, nl_d,&
13168                             sphi_a, sphi_b, sphi_c, sphi_d,&
13169                             primitives,&
13170                             buffer1,buffer2)
13171     REAL(dp), DIMENSION(1*1*3*3), INTENT(IN) :: work
13172     INTEGER                                  :: nl_a, nl_b, nl_c, nl_d
13173     REAL(dp), DIMENSION(1, 1*nl_a), 
13174       INTENT(IN)                             :: sphi_a
13175     REAL(dp), DIMENSION(1, 1*nl_b), 
13176       INTENT(IN)                             :: sphi_b
13177     REAL(dp), DIMENSION(3, 3*nl_c), 
13178       INTENT(IN)                             :: sphi_c
13179     REAL(dp), DIMENSION(3, 3*nl_d), 
13180       INTENT(IN)                             :: sphi_d
13181     REAL(dp), DIMENSION(1*nl_a, 1*nl_b, 3*&
      nl_c, 3*nl_d)                          :: primitives
13182     REAL(dp), DIMENSION(1*1*3*3)             :: buffer1, buffer2
13183 
13184     INTEGER                                  :: i, i1, i2, i3, ia, ib, ic, 
13185                                                 id, imax, kmax, s_offset_a1, 
13186                                                 s_offset_b1, s_offset_c1, 
13187                                                 s_offset_d1
13188 
13189     s_offset_a1 = 0
13190     DO ia = 1,nl_a
13191       s_offset_b1 = 0
13192       DO ib = 1,nl_b
13193         s_offset_c1 = 0
13194         DO ic = 1,nl_c
13195           s_offset_d1 = 0
13196           DO id = 1,nl_d
13197             buffer1 = 0.0_dp
13198             imax=1*3*3
13199             kmax=1
13200             DO i=1,imax
13201 buffer1(i+imax*(1-1)) = buffer1(i+imax*(1-1)) + work(1+(i-1)*kmax) * sphi_a(1,1+s_offset_a1)
13202             ENDDO
13203             buffer2 = 0.0_dp
13204             imax=1*3*3
13205             kmax=1
13206             DO i=1,imax
13207 buffer2(i+imax*(1-1)) = buffer2(i+imax*(1-1)) + buffer1(1+(i-1)*kmax) * sphi_b(1,1+s_offset_b1)
13208             ENDDO
13209             buffer1 = 0.0_dp
13210             imax=1*1*3
13211             kmax=3
13212             DO i=1,imax
13213 buffer1(i+imax*(3-1)) = buffer1(i+imax*(3-1)) + buffer2(1+(i-1)*kmax) * sphi_c(1,3+s_offset_c1)
13214 buffer1(i+imax*(1-1)) = buffer1(i+imax*(1-1)) + buffer2(2+(i-1)*kmax) * sphi_c(2,1+s_offset_c1)
13215 buffer1(i+imax*(2-1)) = buffer1(i+imax*(2-1)) + buffer2(3+(i-1)*kmax) * sphi_c(3,2+s_offset_c1)
13216             ENDDO
13217             imax=1*1*3
13218             kmax=3
13219             i = 0
13220             DO i1=1,3
13221             DO i2=1,1
13222             DO i3=1,1
13223               i = i + 1
13224 primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+3) =&
13225 primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+3) &
13226 + buffer1(1+(i-1)*kmax) * sphi_d(1,3+s_offset_d1)
13227 primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+1) =&
13228 primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+1) &
13229 + buffer1(2+(i-1)*kmax) * sphi_d(2,1+s_offset_d1)
13230 primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+2) =&
13231 primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+2) &
13232 + buffer1(3+(i-1)*kmax) * sphi_d(3,2+s_offset_d1)
13233             ENDDO
13234             ENDDO
13235             ENDDO
13236             s_offset_d1 = s_offset_d1 + 3
13237           END DO
13238           s_offset_c1 = s_offset_c1 + 3
13239         END DO
13240         s_offset_b1 = s_offset_b1 + 1
13241       END DO
13242       s_offset_a1 = s_offset_a1 + 1
13243     END DO
13244   END SUBROUTINE contract_sspp
13245 #endif
13246 #if __MAX_CONTR > 2 || __MAX_CONTR == 2
13247   SUBROUTINE contract_sspd(work, &
13248                             nl_a, nl_b, nl_c, nl_d,&
13249                             sphi_a, sphi_b, sphi_c, sphi_d,&
13250                             primitives,&
13251                             buffer1,buffer2)
13252     REAL(dp), DIMENSION(1*1*3*6), INTENT(IN) :: work
13253     INTEGER                                  :: nl_a, nl_b, nl_c, nl_d
13254     REAL(dp), DIMENSION(1, 1*nl_a), 
13255       INTENT(IN)                             :: sphi_a
13256     REAL(dp), DIMENSION(1, 1*nl_b), 
13257       INTENT(IN)                             :: sphi_b
13258     REAL(dp), DIMENSION(3, 3*nl_c), 
13259       INTENT(IN)                             :: sphi_c
13260     REAL(dp), DIMENSION(6, 5*nl_d), 
13261       INTENT(IN)                             :: sphi_d
13262     REAL(dp), DIMENSION(1*nl_a, 1*nl_b, 3*&
      nl_c, 5*nl_d)                          :: primitives
13263     REAL(dp), DIMENSION(1*1*3*6)             :: buffer1, buffer2
13264 
13265     INTEGER                                  :: i, i1, i2, i3, ia, ib, ic, 
13266                                                 id, imax, kmax, s_offset_a1, 
13267                                                 s_offset_b1, s_offset_c1, 
13268                                                 s_offset_d1
13269 
13270     s_offset_a1 = 0
13271     DO ia = 1,nl_a
13272       s_offset_b1 = 0
13273       DO ib = 1,nl_b
13274         s_offset_c1 = 0
13275         DO ic = 1,nl_c
13276           s_offset_d1 = 0
13277           DO id = 1,nl_d
13278             buffer1 = 0.0_dp
13279             imax=1*3*6
13280             kmax=1
13281             DO i=1,imax
13282 buffer1(i+imax*(1-1)) = buffer1(i+imax*(1-1)) + work(1+(i-1)*kmax) * sphi_a(1,1+s_offset_a1)
13283             ENDDO
13284             buffer2 = 0.0_dp
13285             imax=1*3*6
13286             kmax=1
13287             DO i=1,imax
13288 buffer2(i+imax*(1-1)) = buffer2(i+imax*(1-1)) + buffer1(1+(i-1)*kmax) * sphi_b(1,1+s_offset_b1)
13289             ENDDO
13290             buffer1 = 0.0_dp
13291             imax=1*1*6
13292             kmax=3
13293             DO i=1,imax
13294 buffer1(i+imax*(3-1)) = buffer1(i+imax*(3-1)) + buffer2(1+(i-1)*kmax) * sphi_c(1,3+s_offset_c1)
13295 buffer1(i+imax*(1-1)) = buffer1(i+imax*(1-1)) + buffer2(2+(i-1)*kmax) * sphi_c(2,1+s_offset_c1)
13296 buffer1(i+imax*(2-1)) = buffer1(i+imax*(2-1)) + buffer2(3+(i-1)*kmax) * sphi_c(3,2+s_offset_c1)
13297             ENDDO
13298             imax=1*1*3
13299             kmax=6
13300             i = 0
13301             DO i1=1,3
13302             DO i2=1,1
13303             DO i3=1,1
13304               i = i + 1
13305 primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+3)= &
13306 primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+3)+ &
13307 buffer1(1+(i-1)*kmax) * sphi_d(1,3+s_offset_d1)
13308 primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+5)= &
13309 primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+5)+ &
13310 buffer1(1+(i-1)*kmax) * sphi_d(1,5+s_offset_d1)
13311 primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+1)= &
13312 primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+1)+ &
13313 buffer1(2+(i-1)*kmax) * sphi_d(2,1+s_offset_d1)
13314 primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+4)= &
13315 primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+4)+ &
13316 buffer1(3+(i-1)*kmax) * sphi_d(3,4+s_offset_d1)
13317 primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+3)= &
13318 primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+3)+ &
13319 buffer1(4+(i-1)*kmax) * sphi_d(4,3+s_offset_d1)
13320 primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+5)= &
13321 primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+5)+ &
13322 buffer1(4+(i-1)*kmax) * sphi_d(4,5+s_offset_d1)
13323 primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+2)= &
13324 primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+2)+ &
13325 buffer1(5+(i-1)*kmax) * sphi_d(5,2+s_offset_d1)
13326 primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+3)= &
13327 primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+3)+ &
13328 buffer1(6+(i-1)*kmax) * sphi_d(6,3+s_offset_d1)
13329             ENDDO
13330             ENDDO
13331             ENDDO
13332             s_offset_d1 = s_offset_d1 + 5
13333           END DO
13334           s_offset_c1 = s_offset_c1 + 3
13335         END DO
13336         s_offset_b1 = s_offset_b1 + 1
13337       END DO
13338       s_offset_a1 = s_offset_a1 + 1
13339     END DO
13340   END SUBROUTINE contract_sspd
13341 #endif
13342 #if __MAX_CONTR > 3 || __MAX_CONTR == 3
13343   SUBROUTINE contract_sspf(work, &
13344                             nl_a, nl_b, nl_c, nl_d,&
13345                             sphi_a, sphi_b, sphi_c, sphi_d,&
13346                             primitives,&
13347                             buffer1,buffer2)
13348     REAL(dp), DIMENSION(1*1*3*10), 
13349       INTENT(IN)                             :: work
13350     INTEGER                                  :: nl_a, nl_b, nl_c, nl_d
13351     REAL(dp), DIMENSION(1, 1*nl_a), 
13352       INTENT(IN)                             :: sphi_a
13353     REAL(dp), DIMENSION(1, 1*nl_b), 
13354       INTENT(IN)                             :: sphi_b
13355     REAL(dp), DIMENSION(3, 3*nl_c), 
13356       INTENT(IN)                             :: sphi_c
13357     REAL(dp), DIMENSION(10, 7*nl_d), 
13358       INTENT(IN)                             :: sphi_d
13359     REAL(dp), DIMENSION(1*nl_a, 1*nl_b, 3*&
      nl_c, 7*nl_d)                          :: primitives
13360     REAL(dp), DIMENSION(1*1*3*10)            :: buffer1, buffer2
13361 
13362     INTEGER                                  :: i, i1, i2, i3, ia, ib, ic, 
13363                                                 id, imax, kmax, s_offset_a1, 
13364                                                 s_offset_b1, s_offset_c1, 
13365                                                 s_offset_d1
13366 
13367     s_offset_a1 = 0
13368     DO ia = 1,nl_a
13369       s_offset_b1 = 0
13370       DO ib = 1,nl_b
13371         s_offset_c1 = 0
13372         DO ic = 1,nl_c
13373           s_offset_d1 = 0
13374           DO id = 1,nl_d
13375             buffer1 = 0.0_dp
13376             imax=1*3*10
13377             kmax=1
13378             DO i=1,imax
13379 buffer1(i+imax*(1-1)) = buffer1(i+imax*(1-1)) + work(1+(i-1)*kmax) * sphi_a(1,1+s_offset_a1)
13380             ENDDO
13381             buffer2 = 0.0_dp
13382             imax=1*3*10
13383             kmax=1
13384             DO i=1,imax
13385 buffer2(i+imax*(1-1)) = buffer2(i+imax*(1-1)) + buffer1(1+(i-1)*kmax) * sphi_b(1,1+s_offset_b1)
13386             ENDDO
13387             buffer1 = 0.0_dp
13388             imax=1*1*10
13389             kmax=3
13390             DO i=1,imax
13391 buffer1(i+imax*(3-1)) = buffer1(i+imax*(3-1)) + buffer2(1+(i-1)*kmax) * sphi_c(1,3+s_offset_c1)
13392 buffer1(i+imax*(1-1)) = buffer1(i+imax*(1-1)) + buffer2(2+(i-1)*kmax) * sphi_c(2,1+s_offset_c1)
13393 buffer1(i+imax*(2-1)) = buffer1(i+imax*(2-1)) + buffer2(3+(i-1)*kmax) * sphi_c(3,2+s_offset_c1)
13394             ENDDO
13395             imax=1*1*3
13396             kmax=10
13397             i = 0
13398             DO i1=1,3
13399             DO i2=1,1
13400             DO i3=1,1
13401               i = i + 1
13402 primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+5)= &
13403 primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+5)+ &
13404 buffer1(1+(i-1)*kmax) * sphi_d(1,5 +s_offset_d1)
13405 primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+7)= &
13406 primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+7)+ &
13407 buffer1(1+(i-1)*kmax) * sphi_d(1,7 +s_offset_d1)
13408 primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+1)= &
13409 primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+1)+ &
13410 buffer1(2+(i-1)*kmax) * sphi_d(2,1 +s_offset_d1)
13411 primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+3)= &
13412 primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+3)+ &
13413 buffer1(2+(i-1)*kmax) * sphi_d(2,3 +s_offset_d1)
13414 primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+4)= &
13415 primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+4)+ &
13416 buffer1(3+(i-1)*kmax) * sphi_d(3,4 +s_offset_d1)
13417 primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+6)= &
13418 primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+6)+ &
13419 buffer1(3+(i-1)*kmax) * sphi_d(3,6 +s_offset_d1)
13420 primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+5)= &
13421 primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+5)+ &
13422 buffer1(4+(i-1)*kmax) * sphi_d(4,5 +s_offset_d1)
13423 primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+7)= &
13424 primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+7)+ &
13425 buffer1(4+(i-1)*kmax) * sphi_d(4,7 +s_offset_d1)
13426 primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+2)= &
13427 primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+2)+ &
13428 buffer1(5+(i-1)*kmax) * sphi_d(5,2 +s_offset_d1)
13429 primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+5)= &
13430 primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+5)+ &
13431 buffer1(6+(i-1)*kmax) * sphi_d(6,5 +s_offset_d1)
13432 primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+1)= &
13433 primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+1)+ &
13434 buffer1(7+(i-1)*kmax) * sphi_d(7,1 +s_offset_d1)
13435 primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+3)= &
13436 primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+3)+ &
13437 buffer1(7+(i-1)*kmax) * sphi_d(7,3 +s_offset_d1)
13438 primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+4)= &
13439 primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+4)+ &
13440 buffer1(8+(i-1)*kmax) * sphi_d(8,4 +s_offset_d1)
13441 primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+6)= &
13442 primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+6)+ &
13443 buffer1(8+(i-1)*kmax) * sphi_d(8,6 +s_offset_d1)
13444 primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+3)= &
13445 primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+3)+ &
13446 buffer1(9+(i-1)*kmax) * sphi_d(9,3 +s_offset_d1)
13447 primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+4)= &
13448 primitives(s_offset_a1+i3, s_offset_b1+i2, s_offset_c1+i1, s_offset_d1+4)+ &
13449 buffer1(10+(i-1)*kmax) * sphi_d(10,4 +s_offset_d1)
13450             ENDDO
13451             ENDDO
13452             ENDDO
13453             s_offset_d1 = s_offset_d1 + 7
13454           END DO
13455           s_offset_c1 = s_offset_c1 + 3
13456         END DO
13457         s_offset_b1 = s_offset_b1 + 1
13458       END DO
13459       s_offset_a1 = s_offset_a1 + 1
13460     END DO
13461   END SUBROUTINE contract_sspf
13462 #endif
13463 #if __MAX_CONTR > 4 || __MAX_CONTR == 4
13464   SUBROUTINE contract_sspg(work, &
13465                             nl_a, nl_b, nl_c, nl_d,&
13466                             sphi_a, sphi_b, sphi_c, sphi_d,&
13467                             primitives,&
13468                             buffer1,buffer2)
13469     REAL(dp), DIMENSION(1*1*3*15), 
13470       INTENT(IN)                             :: work
13471     INTEGER                                  :: nl_a, nl_b, nl_c, nl_d
13472     REAL(dp), DIMENSION(1, 1*nl_a), 
13473       INTENT(IN)                             :: sphi_a
13474     REAL(dp), DIMENSION(1, 1*nl_b), 
13475       INTENT(IN)                             :: sphi_b
13476     REAL(dp), DIMENSION(3, 3*nl_c), 
13477       INTENT(IN)                             :: sphi_c
13478     REAL(dp), DIMENSION(15, 9*nl_d), 
13479       INTENT(IN)                             :: sphi_d
13480     REAL(dp), DIMENSION(1*nl_a, 1*nl_b, 3*&
      nl_c, 9*nl_d)                          :: primitives
13481     REAL(dp), DIMENSION(1*1*3*15)            :: buffer1, buffer2
13482 
13483     INTEGER                                  :: i, i1, i2, i3, ia, ib, ic, 
13484                                                 id, imax, kmax, s_offset_a1, 
13485                                                 s_offset_b1, s_offset_c1, 
13486                                                 s_offset_d1
13487 
13488     s_offset_a1 = 0
13489     DO ia = 1,nl_a
13490       s_offset_b1 = 0
13491       DO ib = 1,nl_b
13492         s_offset_c1 = 0
13493         DO ic = 1,nl_c
13494           s_offset_d1 = 0
13495           DO id = 1,nl_d
13496