LCOV - code coverage report
Current view: top level - src/common - t_sh_p_s_c.F (source / functions) Hit Total Coverage
Test: CP2K Regtests (git:1a29073) Lines: 435 761 57.2 %
Date: 2024-04-17 06:30:47 Functions: 4 4 100.0 %

          Line data    Source code
       1             : !--------------------------------------------------------------------------------------------------!
       2             : !   CP2K: A general program to perform molecular dynamics simulations                              !
       3             : !   Copyright 2000-2024 CP2K developers group <https://cp2k.org>                                   !
       4             : !                                                                                                  !
       5             : !   SPDX-License-Identifier: GPL-2.0-or-later                                                      !
       6             : !--------------------------------------------------------------------------------------------------!
       7             : 
       8             : !--------------------------------------------------------------------------------------------------!
       9             : !   Copyright (c) 2008, Joost VandeVondele and Manuel Guidon                                       !
      10             : !   All rights reserved.                                                                           !
      11             : !                                                                                                  !
      12             : !   Redistribution and use in source and binary forms, with or without                             !
      13             : !   modification, are permitted provided that the following conditions are met:                    !
      14             : !       * Redistributions of source code must retain the above copyright                           !
      15             : !         notice, this list of conditions and the following disclaimer.                            !
      16             : !       * Redistributions in binary form must reproduce the above copyright                        !
      17             : !         notice, this list of conditions and the following disclaimer in the                      !
      18             : !         documentation and/or other materials provided with the distribution.                     !
      19             : !                                                                                                  !
      20             : !   THIS SOFTWARE IS PROVIDED BY Joost VandeVondele and Manuel Guidon AS IS AND ANY                !
      21             : !   EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED                      !
      22             : !   WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE                         !
      23             : !   DISCLAIMED. IN NO EVENT SHALL Joost VandeVondele or Manuel Guidon BE LIABLE FOR ANY            !
      24             : !   DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES                     !
      25             : !   (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;                   !
      26             : !   LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND                    !
      27             : !   ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT                     !
      28             : !   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS                  !
      29             : !   SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.                                   !
      30             : !--------------------------------------------------------------------------------------------------!
      31             : 
      32             : ! **************************************************************************************************
      33             : !> \brief ...
      34             : !> \author Joost VandeVondele and Manuel Guidon
      35             : !> \par History
      36             : !>      Nov 2008 Joost VandeVondele and Manuel Guidon
      37             : !>      Sep 2019 A.Bussy: Moved the file to common (together with gamma.F and t_c_g0.F)
      38             : ! **************************************************************************************************
      39             : MODULE t_sh_p_s_c
      40             :    USE kinds,                           ONLY: dp
      41             :    USE message_passing,                 ONLY: mp_comm_type
      42             : #include "../base/base_uses.f90"
      43             : 
      44             :    IMPLICIT NONE
      45             :    PRIVATE
      46             : 
      47             :    PUBLIC :: trunc_CS_poly_n20, init, free_C0
      48             :    REAL(KIND=dp), DIMENSION(:, :), ALLOCATABLE, SAVE :: C0
      49             :    INTEGER, PARAMETER :: degree = 15
      50             :    REAL(KIND=dp), PARAMETER :: target_error = 0.100000E-08
      51             :    INTEGER, PARAMETER :: nderiv_max = 21
      52             :    INTEGER, SAVE      :: nderiv_init = -1
      53             :    INTEGER, SAVE      :: patches = -1
      54             : 
      55             : CONTAINS
      56             : 
      57             : ! **************************************************************************************************
      58             : !> \brief ...
      59             : !> \param RES ...
      60             : !> \param R ...
      61             : !> \param T ...
      62             : !> \param NDERIV ...
      63             : ! **************************************************************************************************
      64     1160636 :    SUBROUTINE trunc_CS_poly_n20(RES, R, T, NDERIV)
      65             :       REAL(KIND=dp), INTENT(OUT)                         :: RES(*)
      66             :       REAL(KIND=dp), INTENT(IN)                          :: R, T
      67             :       INTEGER, INTENT(IN)                                :: NDERIV
      68             : 
      69             :       REAL(KIND=dp), PARAMETER :: eps = 34.53877639491068526026987182_dp, n = 2.0_dp
      70             : 
      71             :       INTEGER                                            :: i
      72             :       REAL(KIND=dp)                                      :: lower, TG1, TG2, X1, X2
      73             : 
      74     1160636 :       IF (T <= 81.0_dp) THEN
      75      851516 :          X2 = 1/(1 + R)
      76      851516 :          X1 = 1/(1 + SQRT(T))
      77      851516 :          IF (X2 <= 0.500000000000000000E+00_dp) THEN
      78      851316 :             IF (X2 <= 0.250000000000000000E+00_dp) THEN
      79      616392 :                IF (X1 <= 0.550000000000000044E+00_dp) THEN
      80      221680 :                   IF (X1 <= 0.325000000000000011E+00_dp) THEN
      81      175848 :                      IF (X1 <= 0.212500000000000022E+00_dp) THEN
      82      161224 :                         IF (X2 <= 0.125000000000000000E+00_dp) THEN
      83           0 :                            IF (X2 <= 0.625000000000000000E-01_dp) THEN
      84           0 :                               TG1 = (2*X1 - 0.312500000000000000E+00_dp)*0.888888888888888751E+01_dp
      85           0 :                               TG2 = (2*X2 - 0.625000000000000000E-01_dp)*0.160000000000000000E+02_dp
      86           0 :                               CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 1))
      87             :                            ELSE
      88           0 :                               IF (X1 <= 0.156250000000000000E+00_dp) THEN
      89           0 :                                  IF (X2 <= 0.937500000000000000E-01_dp) THEN
      90           0 :                                     IF (X1 <= 0.128124999999999989E+00_dp) THEN
      91           0 :                                        TG1 = (2*X1 - 0.228124999999999994E+00_dp)*0.355555555555555785E+02_dp
      92           0 :                                        TG2 = (2*X2 - 0.156250000000000000E+00_dp)*0.320000000000000000E+02_dp
      93           0 :                                        CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 2))
      94             :                                     ELSE
      95           0 :                                        TG1 = (2*X1 - 0.284374999999999989E+00_dp)*0.355555555555555429E+02_dp
      96           0 :                                        TG2 = (2*X2 - 0.156250000000000000E+00_dp)*0.320000000000000000E+02_dp
      97           0 :                                        CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 3))
      98             :                                     END IF
      99             :                                  ELSE
     100           0 :                                     IF (X1 <= 0.128124999999999989E+00_dp) THEN
     101           0 :                                        IF (X2 <= 0.109375000000000000E+00_dp) THEN
     102           0 :                                           TG1 = (2*X1 - 0.228124999999999994E+00_dp)*0.355555555555555785E+02_dp
     103           0 :                                           TG2 = (2*X2 - 0.203125000000000000E+00_dp)*0.640000000000000000E+02_dp
     104           0 :                                           CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 4))
     105             :                                        ELSE
     106           0 :                                           TG1 = (2*X1 - 0.228124999999999994E+00_dp)*0.355555555555555785E+02_dp
     107           0 :                                           TG2 = (2*X2 - 0.234375000000000000E+00_dp)*0.640000000000000000E+02_dp
     108           0 :                                           CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 5))
     109             :                                        END IF
     110             :                                     ELSE
     111           0 :                                        TG1 = (2*X1 - 0.284374999999999989E+00_dp)*0.355555555555555429E+02_dp
     112           0 :                                        TG2 = (2*X2 - 0.218750000000000000E+00_dp)*0.320000000000000000E+02_dp
     113           0 :                                        CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 6))
     114             :                                     END IF
     115             :                                  END IF
     116             :                               ELSE
     117           0 :                                  TG1 = (2*X1 - 0.368750000000000022E+00_dp)*0.177777777777777715E+02_dp
     118           0 :                                  TG2 = (2*X2 - 0.187500000000000000E+00_dp)*0.160000000000000000E+02_dp
     119           0 :                                  CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 7))
     120             :                               END IF
     121             :                            END IF
     122             :                         ELSE
     123      161224 :                            IF (X2 <= 0.187500000000000000E+00_dp) THEN
     124       22184 :                               IF (X1 <= 0.156250000000000000E+00_dp) THEN
     125       22184 :                                  IF (X2 <= 0.156250000000000000E+00_dp) THEN
     126         576 :                                     IF (X1 <= 0.128124999999999989E+00_dp) THEN
     127         576 :                                        TG1 = (2*X1 - 0.228124999999999994E+00_dp)*0.355555555555555785E+02_dp
     128         576 :                                        TG2 = (2*X2 - 0.281250000000000000E+00_dp)*0.320000000000000000E+02_dp
     129         576 :                                        CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 8))
     130             :                                     ELSE
     131           0 :                                        TG1 = (2*X1 - 0.284374999999999989E+00_dp)*0.355555555555555429E+02_dp
     132           0 :                                        TG2 = (2*X2 - 0.281250000000000000E+00_dp)*0.320000000000000000E+02_dp
     133           0 :                                        CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 9))
     134             :                                     END IF
     135             :                                  ELSE
     136       21608 :                                     IF (X1 <= 0.128124999999999989E+00_dp) THEN
     137       20544 :                                        IF (X1 <= 0.114062499999999997E+00_dp) THEN
     138       16576 :                                           TG1 = (2*X1 - 0.214062499999999989E+00_dp)*0.711111111111111569E+02_dp
     139       16576 :                                           TG2 = (2*X2 - 0.343750000000000000E+00_dp)*0.320000000000000000E+02_dp
     140       16576 :                                           CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 10))
     141             :                                        ELSE
     142        3968 :                                           TG1 = (2*X1 - 0.242187500000000000E+00_dp)*0.711111111111111569E+02_dp
     143        3968 :                                           TG2 = (2*X2 - 0.343750000000000000E+00_dp)*0.320000000000000000E+02_dp
     144        3968 :                                           CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 11))
     145             :                                        END IF
     146             :                                     ELSE
     147        1064 :                                        TG1 = (2*X1 - 0.284374999999999989E+00_dp)*0.355555555555555429E+02_dp
     148        1064 :                                        TG2 = (2*X2 - 0.343750000000000000E+00_dp)*0.320000000000000000E+02_dp
     149        1064 :                                        CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 12))
     150             :                                     END IF
     151             :                                  END IF
     152             :                               ELSE
     153           0 :                                  IF (X2 <= 0.156250000000000000E+00_dp) THEN
     154           0 :                                     TG1 = (2*X1 - 0.368750000000000022E+00_dp)*0.177777777777777715E+02_dp
     155           0 :                                     TG2 = (2*X2 - 0.281250000000000000E+00_dp)*0.320000000000000000E+02_dp
     156           0 :                                     CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 13))
     157             :                                  ELSE
     158           0 :                                     TG1 = (2*X1 - 0.368750000000000022E+00_dp)*0.177777777777777715E+02_dp
     159           0 :                                     TG2 = (2*X2 - 0.343750000000000000E+00_dp)*0.320000000000000000E+02_dp
     160           0 :                                     CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 14))
     161             :                                  END IF
     162             :                               END IF
     163             :                            ELSE
     164      139040 :                               IF (X1 <= 0.156250000000000000E+00_dp) THEN
     165       92508 :                                  IF (X1 <= 0.128124999999999989E+00_dp) THEN
     166       45604 :                                     IF (X2 <= 0.218750000000000000E+00_dp) THEN
     167       32312 :                                        IF (X1 <= 0.114062499999999997E+00_dp) THEN
     168       23440 :                                           TG1 = (2*X1 - 0.214062499999999989E+00_dp)*0.711111111111111569E+02_dp
     169       23440 :                                           TG2 = (2*X2 - 0.406250000000000000E+00_dp)*0.320000000000000000E+02_dp
     170       23440 :                                           CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 15))
     171             :                                        ELSE
     172        8872 :                                           TG1 = (2*X1 - 0.242187500000000000E+00_dp)*0.711111111111111569E+02_dp
     173        8872 :                                           TG2 = (2*X2 - 0.406250000000000000E+00_dp)*0.320000000000000000E+02_dp
     174        8872 :                                           CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 16))
     175             :                                        END IF
     176             :                                     ELSE
     177       13292 :                                        TG1 = (2*X1 - 0.228124999999999994E+00_dp)*0.355555555555555785E+02_dp
     178       13292 :                                        TG2 = (2*X2 - 0.468750000000000000E+00_dp)*0.320000000000000000E+02_dp
     179       13292 :                                        CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 17))
     180             :                                     END IF
     181             :                                  ELSE
     182       46904 :                                     IF (X2 <= 0.218750000000000000E+00_dp) THEN
     183        3580 :                                        TG1 = (2*X1 - 0.284374999999999989E+00_dp)*0.355555555555555429E+02_dp
     184        3580 :                                        TG2 = (2*X2 - 0.406250000000000000E+00_dp)*0.320000000000000000E+02_dp
     185        3580 :                                        CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 18))
     186             :                                     ELSE
     187       43324 :                                        TG1 = (2*X1 - 0.284374999999999989E+00_dp)*0.355555555555555429E+02_dp
     188       43324 :                                        TG2 = (2*X2 - 0.468750000000000000E+00_dp)*0.320000000000000000E+02_dp
     189       43324 :                                        CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 19))
     190             :                                     END IF
     191             :                                  END IF
     192             :                               ELSE
     193       46532 :                                  IF (X2 <= 0.218750000000000000E+00_dp) THEN
     194       22912 :                                     TG1 = (2*X1 - 0.368750000000000022E+00_dp)*0.177777777777777715E+02_dp
     195       22912 :                                     TG2 = (2*X2 - 0.406250000000000000E+00_dp)*0.320000000000000000E+02_dp
     196       22912 :                                     CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 20))
     197             :                                  ELSE
     198       23620 :                                     TG1 = (2*X1 - 0.368750000000000022E+00_dp)*0.177777777777777715E+02_dp
     199       23620 :                                     TG2 = (2*X2 - 0.468750000000000000E+00_dp)*0.320000000000000000E+02_dp
     200       23620 :                                     CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 21))
     201             :                                  END IF
     202             :                               END IF
     203             :                            END IF
     204             :                         END IF
     205             :                      ELSE
     206       14624 :                         IF (X2 <= 0.125000000000000000E+00_dp) THEN
     207           0 :                            TG1 = (2*X1 - 0.537500000000000089E+00_dp)*0.888888888888888928E+01_dp
     208           0 :                            TG2 = (2*X2 - 0.125000000000000000E+00_dp)*0.800000000000000000E+01_dp
     209           0 :                            CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 22))
     210             :                         ELSE
     211       14624 :                            IF (X2 <= 0.187500000000000000E+00_dp) THEN
     212        5864 :                               IF (X1 <= 0.268750000000000044E+00_dp) THEN
     213        3792 :                                  TG1 = (2*X1 - 0.481250000000000067E+00_dp)*0.177777777777777715E+02_dp
     214        3792 :                                  TG2 = (2*X2 - 0.312500000000000000E+00_dp)*0.160000000000000000E+02_dp
     215        3792 :                                  CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 23))
     216             :                               ELSE
     217        2072 :                                  TG1 = (2*X1 - 0.593750000000000000E+00_dp)*0.177777777777777892E+02_dp
     218        2072 :                                  TG2 = (2*X2 - 0.312500000000000000E+00_dp)*0.160000000000000000E+02_dp
     219        2072 :                                  CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 24))
     220             :                               END IF
     221             :                            ELSE
     222        8760 :                               IF (X1 <= 0.268750000000000044E+00_dp) THEN
     223        6992 :                                  TG1 = (2*X1 - 0.481250000000000067E+00_dp)*0.177777777777777715E+02_dp
     224        6992 :                                  TG2 = (2*X2 - 0.437500000000000000E+00_dp)*0.160000000000000000E+02_dp
     225        6992 :                                  CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 25))
     226             :                               ELSE
     227        1768 :                                  TG1 = (2*X1 - 0.593750000000000000E+00_dp)*0.177777777777777892E+02_dp
     228        1768 :                                  TG2 = (2*X2 - 0.437500000000000000E+00_dp)*0.160000000000000000E+02_dp
     229        1768 :                                  CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 26))
     230             :                               END IF
     231             :                            END IF
     232             :                         END IF
     233             :                      END IF
     234             :                   ELSE
     235       45832 :                      IF (X2 <= 0.125000000000000000E+00_dp) THEN
     236           8 :                         TG1 = (2*X1 - 0.875000000000000000E+00_dp)*0.444444444444444375E+01_dp
     237           8 :                         TG2 = (2*X2 - 0.125000000000000000E+00_dp)*0.800000000000000000E+01_dp
     238           8 :                         CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 27))
     239             :                      ELSE
     240       45824 :                         IF (X2 <= 0.187500000000000000E+00_dp) THEN
     241       19168 :                            TG1 = (2*X1 - 0.875000000000000000E+00_dp)*0.444444444444444375E+01_dp
     242       19168 :                            TG2 = (2*X2 - 0.312500000000000000E+00_dp)*0.160000000000000000E+02_dp
     243       19168 :                            CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 28))
     244             :                         ELSE
     245       26656 :                            TG1 = (2*X1 - 0.875000000000000000E+00_dp)*0.444444444444444375E+01_dp
     246       26656 :                            TG2 = (2*X2 - 0.437500000000000000E+00_dp)*0.160000000000000000E+02_dp
     247       26656 :                            CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 29))
     248             :                         END IF
     249             :                      END IF
     250             :                   END IF
     251             :                ELSE
     252      394712 :                   IF (X2 <= 0.125000000000000000E+00_dp) THEN
     253      209032 :                      TG1 = (2*X1 - 0.155000000000000004E+01_dp)*0.222222222222222232E+01_dp
     254      209032 :                      TG2 = (2*X2 - 0.125000000000000000E+00_dp)*0.800000000000000000E+01_dp
     255      209032 :                      CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 30))
     256             :                   ELSE
     257      185680 :                      TG1 = (2*X1 - 0.155000000000000004E+01_dp)*0.222222222222222232E+01_dp
     258      185680 :                      TG2 = (2*X2 - 0.375000000000000000E+00_dp)*0.800000000000000000E+01_dp
     259      185680 :                      CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 31))
     260             :                   END IF
     261             :                END IF
     262             :             ELSE
     263      234924 :                IF (X1 <= 0.550000000000000044E+00_dp) THEN
     264      155684 :                   IF (X1 <= 0.325000000000000011E+00_dp) THEN
     265      116820 :                      IF (X1 <= 0.212500000000000022E+00_dp) THEN
     266       54872 :                         IF (X1 <= 0.156250000000000000E+00_dp) THEN
     267        9104 :                            IF (X2 <= 0.375000000000000000E+00_dp) THEN
     268        9104 :                               IF (X1 <= 0.128124999999999989E+00_dp) THEN
     269           0 :                                  IF (X2 <= 0.312500000000000000E+00_dp) THEN
     270           0 :                                     TG1 = (2*X1 - 0.228124999999999994E+00_dp)*0.355555555555555785E+02_dp
     271           0 :                                     TG2 = (2*X2 - 0.562500000000000000E+00_dp)*0.160000000000000000E+02_dp
     272           0 :                                     CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 32))
     273             :                                  ELSE
     274           0 :                                     TG1 = (2*X1 - 0.228124999999999994E+00_dp)*0.355555555555555785E+02_dp
     275           0 :                                     TG2 = (2*X2 - 0.687500000000000000E+00_dp)*0.160000000000000000E+02_dp
     276           0 :                                     CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 33))
     277             :                                  END IF
     278             :                               ELSE
     279        9104 :                                  IF (X2 <= 0.312500000000000000E+00_dp) THEN
     280        9104 :                                     IF (X2 <= 0.281250000000000000E+00_dp) THEN
     281        9104 :                                        TG1 = (2*X1 - 0.284374999999999989E+00_dp)*0.355555555555555429E+02_dp
     282        9104 :                                        TG2 = (2*X2 - 0.531250000000000000E+00_dp)*0.320000000000000000E+02_dp
     283        9104 :                                        CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 34))
     284             :                                     ELSE
     285           0 :                                        TG1 = (2*X1 - 0.284374999999999989E+00_dp)*0.355555555555555429E+02_dp
     286           0 :                                        TG2 = (2*X2 - 0.593750000000000000E+00_dp)*0.320000000000000000E+02_dp
     287           0 :                                        CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 35))
     288             :                                     END IF
     289             :                                  ELSE
     290           0 :                                     TG1 = (2*X1 - 0.284374999999999989E+00_dp)*0.355555555555555429E+02_dp
     291           0 :                                     TG2 = (2*X2 - 0.687500000000000000E+00_dp)*0.160000000000000000E+02_dp
     292           0 :                                     CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 36))
     293             :                                  END IF
     294             :                               END IF
     295             :                            ELSE
     296           0 :                               TG1 = (2*X1 - 0.256249999999999978E+00_dp)*0.177777777777777786E+02_dp
     297           0 :                               TG2 = (2*X2 - 0.875000000000000000E+00_dp)*0.800000000000000000E+01_dp
     298           0 :                               CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 37))
     299             :                            END IF
     300             :                         ELSE
     301       45768 :                            IF (X2 <= 0.375000000000000000E+00_dp) THEN
     302       45768 :                               IF (X2 <= 0.312500000000000000E+00_dp) THEN
     303       32804 :                                  IF (X1 <= 0.184375000000000011E+00_dp) THEN
     304       25304 :                                     TG1 = (2*X1 - 0.340625000000000011E+00_dp)*0.355555555555555429E+02_dp
     305       25304 :                                     TG2 = (2*X2 - 0.562500000000000000E+00_dp)*0.160000000000000000E+02_dp
     306       25304 :                                     CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 38))
     307             :                                  ELSE
     308        7500 :                                     TG1 = (2*X1 - 0.396875000000000033E+00_dp)*0.355555555555555429E+02_dp
     309        7500 :                                     TG2 = (2*X2 - 0.562500000000000000E+00_dp)*0.160000000000000000E+02_dp
     310        7500 :                                     CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 39))
     311             :                                  END IF
     312             :                               ELSE
     313       12964 :                                  IF (X1 <= 0.184375000000000011E+00_dp) THEN
     314           0 :                                     TG1 = (2*X1 - 0.340625000000000011E+00_dp)*0.355555555555555429E+02_dp
     315           0 :                                     TG2 = (2*X2 - 0.687500000000000000E+00_dp)*0.160000000000000000E+02_dp
     316           0 :                                     CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 40))
     317             :                                  ELSE
     318       12964 :                                     TG1 = (2*X1 - 0.396875000000000033E+00_dp)*0.355555555555555429E+02_dp
     319       12964 :                                     TG2 = (2*X2 - 0.687500000000000000E+00_dp)*0.160000000000000000E+02_dp
     320       12964 :                                     CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 41))
     321             :                                  END IF
     322             :                               END IF
     323             :                            ELSE
     324           0 :                               IF (X1 <= 0.184375000000000011E+00_dp) THEN
     325           0 :                                  TG1 = (2*X1 - 0.340625000000000011E+00_dp)*0.355555555555555429E+02_dp
     326           0 :                                  TG2 = (2*X2 - 0.875000000000000000E+00_dp)*0.800000000000000000E+01_dp
     327           0 :                                  CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 42))
     328             :                               ELSE
     329           0 :                                  TG1 = (2*X1 - 0.396875000000000033E+00_dp)*0.355555555555555429E+02_dp
     330           0 :                                  TG2 = (2*X2 - 0.875000000000000000E+00_dp)*0.800000000000000000E+01_dp
     331           0 :                                  CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 43))
     332             :                               END IF
     333             :                            END IF
     334             :                         END IF
     335             :                      ELSE
     336       61948 :                         IF (X2 <= 0.375000000000000000E+00_dp) THEN
     337       51136 :                            IF (X2 <= 0.312500000000000000E+00_dp) THEN
     338       26340 :                               IF (X1 <= 0.268750000000000044E+00_dp) THEN
     339        4680 :                                  TG1 = (2*X1 - 0.481250000000000067E+00_dp)*0.177777777777777715E+02_dp
     340        4680 :                                  TG2 = (2*X2 - 0.562500000000000000E+00_dp)*0.160000000000000000E+02_dp
     341        4680 :                                  CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 44))
     342             :                               ELSE
     343       21660 :                                  TG1 = (2*X1 - 0.593750000000000000E+00_dp)*0.177777777777777892E+02_dp
     344       21660 :                                  TG2 = (2*X2 - 0.562500000000000000E+00_dp)*0.160000000000000000E+02_dp
     345       21660 :                                  CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 45))
     346             :                               END IF
     347             :                            ELSE
     348       24796 :                               IF (X1 <= 0.268750000000000044E+00_dp) THEN
     349       20320 :                                  TG1 = (2*X1 - 0.481250000000000067E+00_dp)*0.177777777777777715E+02_dp
     350       20320 :                                  TG2 = (2*X2 - 0.687500000000000000E+00_dp)*0.160000000000000000E+02_dp
     351       20320 :                                  CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 46))
     352             :                               ELSE
     353        4476 :                                  TG1 = (2*X1 - 0.593750000000000000E+00_dp)*0.177777777777777892E+02_dp
     354        4476 :                                  TG2 = (2*X2 - 0.687500000000000000E+00_dp)*0.160000000000000000E+02_dp
     355        4476 :                                  CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 47))
     356             :                               END IF
     357             :                            END IF
     358             :                         ELSE
     359       10812 :                            IF (X1 <= 0.268750000000000044E+00_dp) THEN
     360        1076 :                               TG1 = (2*X1 - 0.481250000000000067E+00_dp)*0.177777777777777715E+02_dp
     361        1076 :                               TG2 = (2*X2 - 0.875000000000000000E+00_dp)*0.800000000000000000E+01_dp
     362        1076 :                               CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 48))
     363             :                            ELSE
     364        9736 :                               TG1 = (2*X1 - 0.593750000000000000E+00_dp)*0.177777777777777892E+02_dp
     365        9736 :                               TG2 = (2*X2 - 0.875000000000000000E+00_dp)*0.800000000000000000E+01_dp
     366        9736 :                               CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 49))
     367             :                            END IF
     368             :                         END IF
     369             :                      END IF
     370             :                   ELSE
     371       38864 :                      IF (X2 <= 0.375000000000000000E+00_dp) THEN
     372       25120 :                         IF (X1 <= 0.437500000000000000E+00_dp) THEN
     373       11392 :                            TG1 = (2*X1 - 0.762499999999999956E+00_dp)*0.888888888888888928E+01_dp
     374       11392 :                            TG2 = (2*X2 - 0.625000000000000000E+00_dp)*0.800000000000000000E+01_dp
     375       11392 :                            CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 50))
     376             :                         ELSE
     377       13728 :                            TG1 = (2*X1 - 0.987500000000000044E+00_dp)*0.888888888888888573E+01_dp
     378       13728 :                            TG2 = (2*X2 - 0.625000000000000000E+00_dp)*0.800000000000000000E+01_dp
     379       13728 :                            CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 51))
     380             :                         END IF
     381             :                      ELSE
     382       13744 :                         IF (X2 <= 0.437500000000000000E+00_dp) THEN
     383        3896 :                            IF (X1 <= 0.437500000000000000E+00_dp) THEN
     384        3104 :                               TG1 = (2*X1 - 0.762499999999999956E+00_dp)*0.888888888888888928E+01_dp
     385        3104 :                               TG2 = (2*X2 - 0.812500000000000000E+00_dp)*0.160000000000000000E+02_dp
     386        3104 :                               CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 52))
     387             :                            ELSE
     388         792 :                               TG1 = (2*X1 - 0.987500000000000044E+00_dp)*0.888888888888888573E+01_dp
     389         792 :                               TG2 = (2*X2 - 0.812500000000000000E+00_dp)*0.160000000000000000E+02_dp
     390         792 :                               CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 53))
     391             :                            END IF
     392             :                         ELSE
     393        9848 :                            IF (X1 <= 0.437500000000000000E+00_dp) THEN
     394        3136 :                               TG1 = (2*X1 - 0.762499999999999956E+00_dp)*0.888888888888888928E+01_dp
     395        3136 :                               TG2 = (2*X2 - 0.937500000000000000E+00_dp)*0.160000000000000000E+02_dp
     396        3136 :                               CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 54))
     397             :                            ELSE
     398        6712 :                               TG1 = (2*X1 - 0.987500000000000044E+00_dp)*0.888888888888888573E+01_dp
     399        6712 :                               TG2 = (2*X2 - 0.937500000000000000E+00_dp)*0.160000000000000000E+02_dp
     400        6712 :                               CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 55))
     401             :                            END IF
     402             :                         END IF
     403             :                      END IF
     404             :                   END IF
     405             :                ELSE
     406       79240 :                   IF (X2 <= 0.375000000000000000E+00_dp) THEN
     407       66438 :                      IF (X2 <= 0.312500000000000000E+00_dp) THEN
     408       37350 :                         TG1 = (2*X1 - 0.155000000000000004E+01_dp)*0.222222222222222232E+01_dp
     409       37350 :                         TG2 = (2*X2 - 0.562500000000000000E+00_dp)*0.160000000000000000E+02_dp
     410       37350 :                         CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 56))
     411             :                      ELSE
     412       29088 :                         TG1 = (2*X1 - 0.155000000000000004E+01_dp)*0.222222222222222232E+01_dp
     413       29088 :                         TG2 = (2*X2 - 0.687500000000000000E+00_dp)*0.160000000000000000E+02_dp
     414       29088 :                         CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 57))
     415             :                      END IF
     416             :                   ELSE
     417       12802 :                      IF (X2 <= 0.437500000000000000E+00_dp) THEN
     418        5278 :                         TG1 = (2*X1 - 0.155000000000000004E+01_dp)*0.222222222222222232E+01_dp
     419        5278 :                         TG2 = (2*X2 - 0.812500000000000000E+00_dp)*0.160000000000000000E+02_dp
     420        5278 :                         CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 58))
     421             :                      ELSE
     422        7524 :                         IF (X1 <= 0.775000000000000022E+00_dp) THEN
     423        1224 :                            TG1 = (2*X1 - 0.132500000000000018E+01_dp)*0.444444444444444464E+01_dp
     424        1224 :                            TG2 = (2*X2 - 0.937500000000000000E+00_dp)*0.160000000000000000E+02_dp
     425        1224 :                            CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 59))
     426             :                         ELSE
     427        6300 :                            TG1 = (2*X1 - 0.177499999999999991E+01_dp)*0.444444444444444464E+01_dp
     428        6300 :                            TG2 = (2*X2 - 0.937500000000000000E+00_dp)*0.160000000000000000E+02_dp
     429        6300 :                            CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 60))
     430             :                         END IF
     431             :                      END IF
     432             :                   END IF
     433             :                END IF
     434             :             END IF
     435             :          ELSE
     436         200 :             IF (X1 <= 0.550000000000000044E+00_dp) THEN
     437         116 :                IF (X1 <= 0.325000000000000011E+00_dp) THEN
     438           0 :                   IF (X1 <= 0.212500000000000022E+00_dp) THEN
     439           0 :                      IF (X2 <= 0.750000000000000000E+00_dp) THEN
     440           0 :                         IF (X1 <= 0.156250000000000000E+00_dp) THEN
     441           0 :                            TG1 = (2*X1 - 0.256249999999999978E+00_dp)*0.177777777777777786E+02_dp
     442           0 :                            TG2 = (2*X2 - 0.125000000000000000E+01_dp)*0.400000000000000000E+01_dp
     443           0 :                            CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 61))
     444             :                         ELSE
     445           0 :                            TG1 = (2*X1 - 0.368750000000000022E+00_dp)*0.177777777777777715E+02_dp
     446           0 :                            TG2 = (2*X2 - 0.125000000000000000E+01_dp)*0.400000000000000000E+01_dp
     447           0 :                            CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 62))
     448             :                         END IF
     449             :                      ELSE
     450           0 :                         TG1 = (2*X1 - 0.312500000000000000E+00_dp)*0.888888888888888751E+01_dp
     451           0 :                         TG2 = (2*X2 - 0.175000000000000000E+01_dp)*0.400000000000000000E+01_dp
     452           0 :                         CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 63))
     453             :                      END IF
     454             :                   ELSE
     455           0 :                      IF (X2 <= 0.750000000000000000E+00_dp) THEN
     456           0 :                         IF (X2 <= 0.625000000000000000E+00_dp) THEN
     457           0 :                            IF (X1 <= 0.268750000000000044E+00_dp) THEN
     458           0 :                               TG1 = (2*X1 - 0.481250000000000067E+00_dp)*0.177777777777777715E+02_dp
     459           0 :                               TG2 = (2*X2 - 0.112500000000000000E+01_dp)*0.800000000000000000E+01_dp
     460           0 :                               CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 64))
     461             :                            ELSE
     462           0 :                               TG1 = (2*X1 - 0.593750000000000000E+00_dp)*0.177777777777777892E+02_dp
     463           0 :                               TG2 = (2*X2 - 0.112500000000000000E+01_dp)*0.800000000000000000E+01_dp
     464           0 :                               CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 65))
     465             :                            END IF
     466             :                         ELSE
     467           0 :                            TG1 = (2*X1 - 0.537500000000000089E+00_dp)*0.888888888888888928E+01_dp
     468           0 :                            TG2 = (2*X2 - 0.137500000000000000E+01_dp)*0.800000000000000000E+01_dp
     469           0 :                            CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 66))
     470             :                         END IF
     471             :                      ELSE
     472           0 :                         TG1 = (2*X1 - 0.537500000000000089E+00_dp)*0.888888888888888928E+01_dp
     473           0 :                         TG2 = (2*X2 - 0.175000000000000000E+01_dp)*0.400000000000000000E+01_dp
     474           0 :                         CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 67))
     475             :                      END IF
     476             :                   END IF
     477             :                ELSE
     478         116 :                   IF (X2 <= 0.750000000000000000E+00_dp) THEN
     479         116 :                      IF (X2 <= 0.625000000000000000E+00_dp) THEN
     480         116 :                         IF (X1 <= 0.437500000000000000E+00_dp) THEN
     481          36 :                            TG1 = (2*X1 - 0.762499999999999956E+00_dp)*0.888888888888888928E+01_dp
     482          36 :                            TG2 = (2*X2 - 0.112500000000000000E+01_dp)*0.800000000000000000E+01_dp
     483          36 :                            CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 68))
     484             :                         ELSE
     485          80 :                            TG1 = (2*X1 - 0.987500000000000044E+00_dp)*0.888888888888888573E+01_dp
     486          80 :                            TG2 = (2*X2 - 0.112500000000000000E+01_dp)*0.800000000000000000E+01_dp
     487          80 :                            CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 69))
     488             :                         END IF
     489             :                      ELSE
     490           0 :                         IF (X1 <= 0.437500000000000000E+00_dp) THEN
     491           0 :                            TG1 = (2*X1 - 0.762499999999999956E+00_dp)*0.888888888888888928E+01_dp
     492           0 :                            TG2 = (2*X2 - 0.137500000000000000E+01_dp)*0.800000000000000000E+01_dp
     493           0 :                            CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 70))
     494             :                         ELSE
     495           0 :                            TG1 = (2*X1 - 0.987500000000000044E+00_dp)*0.888888888888888573E+01_dp
     496           0 :                            TG2 = (2*X2 - 0.137500000000000000E+01_dp)*0.800000000000000000E+01_dp
     497           0 :                            CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 71))
     498             :                         END IF
     499             :                      END IF
     500             :                   ELSE
     501           0 :                      IF (X1 <= 0.437500000000000000E+00_dp) THEN
     502           0 :                         TG1 = (2*X1 - 0.762499999999999956E+00_dp)*0.888888888888888928E+01_dp
     503           0 :                         TG2 = (2*X2 - 0.175000000000000000E+01_dp)*0.400000000000000000E+01_dp
     504           0 :                         CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 72))
     505             :                      ELSE
     506           0 :                         TG1 = (2*X1 - 0.987500000000000044E+00_dp)*0.888888888888888573E+01_dp
     507           0 :                         TG2 = (2*X2 - 0.175000000000000000E+01_dp)*0.400000000000000000E+01_dp
     508           0 :                         CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 73))
     509             :                      END IF
     510             :                   END IF
     511             :                END IF
     512             :             ELSE
     513          84 :                IF (X2 <= 0.750000000000000000E+00_dp) THEN
     514          84 :                   IF (X2 <= 0.625000000000000000E+00_dp) THEN
     515          84 :                      IF (X1 <= 0.775000000000000022E+00_dp) THEN
     516          16 :                         TG1 = (2*X1 - 0.132500000000000018E+01_dp)*0.444444444444444464E+01_dp
     517          16 :                         TG2 = (2*X2 - 0.112500000000000000E+01_dp)*0.800000000000000000E+01_dp
     518          16 :                         CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 74))
     519             :                      ELSE
     520          68 :                         TG1 = (2*X1 - 0.177499999999999991E+01_dp)*0.444444444444444464E+01_dp
     521          68 :                         TG2 = (2*X2 - 0.112500000000000000E+01_dp)*0.800000000000000000E+01_dp
     522          68 :                         CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 75))
     523             :                      END IF
     524             :                   ELSE
     525           0 :                      IF (X1 <= 0.775000000000000022E+00_dp) THEN
     526           0 :                         TG1 = (2*X1 - 0.132500000000000018E+01_dp)*0.444444444444444464E+01_dp
     527           0 :                         TG2 = (2*X2 - 0.137500000000000000E+01_dp)*0.800000000000000000E+01_dp
     528           0 :                         CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 76))
     529             :                      ELSE
     530           0 :                         TG1 = (2*X1 - 0.177499999999999991E+01_dp)*0.444444444444444464E+01_dp
     531           0 :                         TG2 = (2*X2 - 0.137500000000000000E+01_dp)*0.800000000000000000E+01_dp
     532           0 :                         CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 77))
     533             :                      END IF
     534             :                   END IF
     535             :                ELSE
     536           0 :                   IF (X2 <= 0.875000000000000000E+00_dp) THEN
     537           0 :                      TG1 = (2*X1 - 0.155000000000000004E+01_dp)*0.222222222222222232E+01_dp
     538           0 :                      TG2 = (2*X2 - 0.162500000000000000E+01_dp)*0.800000000000000000E+01_dp
     539           0 :                      CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 78))
     540             :                   ELSE
     541           0 :                      TG1 = (2*X1 - 0.155000000000000004E+01_dp)*0.222222222222222232E+01_dp
     542           0 :                      TG2 = (2*X2 - 0.187500000000000000E+01_dp)*0.800000000000000000E+01_dp
     543           0 :                      CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 79))
     544             :                   END IF
     545             :                END IF
     546             :             END IF
     547             :          END IF
     548             :       ELSE
     549      309120 :          X1 = SQRT(81.0_dp/T)
     550      309120 :          lower = (SQRT(T) - SQRT(eps))/n
     551      309120 :          IF (R >= lower) THEN
     552      309120 :             X2 = lower/R
     553      309120 :             IF (X2 <= 0.500000000000000000E+00_dp) THEN
     554       74656 :                IF (X1 <= 0.500000000000000000E+00_dp) THEN
     555           0 :                   IF (X2 <= 0.250000000000000000E+00_dp) THEN
     556           0 :                      TG1 = (2*X1 - 0.500000000000000000E+00_dp)*0.200000000000000000E+01_dp
     557           0 :                      TG2 = (2*X2 - 0.250000000000000000E+00_dp)*0.400000000000000000E+01_dp
     558           0 :                      CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 80))
     559             :                   ELSE
     560           0 :                      IF (X2 <= 0.375000000000000000E+00_dp) THEN
     561           0 :                         IF (X1 <= 0.250000000000000000E+00_dp) THEN
     562           0 :                            TG1 = (2*X1 - 0.250000000000000000E+00_dp)*0.400000000000000000E+01_dp
     563           0 :                            TG2 = (2*X2 - 0.625000000000000000E+00_dp)*0.800000000000000000E+01_dp
     564           0 :                            CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 81))
     565             :                         ELSE
     566           0 :                            IF (X2 <= 0.312500000000000000E+00_dp) THEN
     567           0 :                               TG1 = (2*X1 - 0.750000000000000000E+00_dp)*0.400000000000000000E+01_dp
     568           0 :                               TG2 = (2*X2 - 0.562500000000000000E+00_dp)*0.160000000000000000E+02_dp
     569           0 :                               CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 82))
     570             :                            ELSE
     571           0 :                               IF (X1 <= 0.375000000000000000E+00_dp) THEN
     572           0 :                                  TG1 = (2*X1 - 0.625000000000000000E+00_dp)*0.800000000000000000E+01_dp
     573           0 :                                  TG2 = (2*X2 - 0.687500000000000000E+00_dp)*0.160000000000000000E+02_dp
     574           0 :                                  CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 83))
     575             :                               ELSE
     576           0 :                                  TG1 = (2*X1 - 0.875000000000000000E+00_dp)*0.800000000000000000E+01_dp
     577           0 :                                  TG2 = (2*X2 - 0.687500000000000000E+00_dp)*0.160000000000000000E+02_dp
     578           0 :                                  CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 84))
     579             :                               END IF
     580             :                            END IF
     581             :                         END IF
     582             :                      ELSE
     583           0 :                         IF (X1 <= 0.250000000000000000E+00_dp) THEN
     584           0 :                            IF (X2 <= 0.437500000000000000E+00_dp) THEN
     585           0 :                               IF (X1 <= 0.125000000000000000E+00_dp) THEN
     586           0 :                                  TG1 = (2*X1 - 0.125000000000000000E+00_dp)*0.800000000000000000E+01_dp
     587           0 :                                  TG2 = (2*X2 - 0.812500000000000000E+00_dp)*0.160000000000000000E+02_dp
     588           0 :                                  CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 85))
     589             :                               ELSE
     590           0 :                                  TG1 = (2*X1 - 0.375000000000000000E+00_dp)*0.800000000000000000E+01_dp
     591           0 :                                  TG2 = (2*X2 - 0.812500000000000000E+00_dp)*0.160000000000000000E+02_dp
     592           0 :                                  CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 86))
     593             :                               END IF
     594             :                            ELSE
     595           0 :                               IF (X1 <= 0.125000000000000000E+00_dp) THEN
     596           0 :                                  IF (X2 <= 0.468750000000000000E+00_dp) THEN
     597           0 :                                     TG1 = (2*X1 - 0.125000000000000000E+00_dp)*0.800000000000000000E+01_dp
     598           0 :                                     TG2 = (2*X2 - 0.906250000000000000E+00_dp)*0.320000000000000000E+02_dp
     599           0 :                                     CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 87))
     600             :                                  ELSE
     601           0 :                                     TG1 = (2*X1 - 0.125000000000000000E+00_dp)*0.800000000000000000E+01_dp
     602           0 :                                     TG2 = (2*X2 - 0.968750000000000000E+00_dp)*0.320000000000000000E+02_dp
     603           0 :                                     CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 88))
     604             :                                  END IF
     605             :                               ELSE
     606           0 :                                  IF (X2 <= 0.468750000000000000E+00_dp) THEN
     607           0 :                                     TG1 = (2*X1 - 0.375000000000000000E+00_dp)*0.800000000000000000E+01_dp
     608           0 :                                     TG2 = (2*X2 - 0.906250000000000000E+00_dp)*0.320000000000000000E+02_dp
     609           0 :                                     CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 89))
     610             :                                  ELSE
     611           0 :                                     TG1 = (2*X1 - 0.375000000000000000E+00_dp)*0.800000000000000000E+01_dp
     612           0 :                                     TG2 = (2*X2 - 0.968750000000000000E+00_dp)*0.320000000000000000E+02_dp
     613           0 :                                     CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 90))
     614             :                                  END IF
     615             :                               END IF
     616             :                            END IF
     617             :                         ELSE
     618           0 :                            IF (X2 <= 0.437500000000000000E+00_dp) THEN
     619           0 :                               IF (X2 <= 0.406250000000000000E+00_dp) THEN
     620           0 :                                  IF (X1 <= 0.375000000000000000E+00_dp) THEN
     621           0 :                                     TG1 = (2*X1 - 0.625000000000000000E+00_dp)*0.800000000000000000E+01_dp
     622           0 :                                     TG2 = (2*X2 - 0.781250000000000000E+00_dp)*0.320000000000000000E+02_dp
     623           0 :                                     CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 91))
     624             :                                  ELSE
     625           0 :                                     TG1 = (2*X1 - 0.875000000000000000E+00_dp)*0.800000000000000000E+01_dp
     626           0 :                                     TG2 = (2*X2 - 0.781250000000000000E+00_dp)*0.320000000000000000E+02_dp
     627           0 :                                     CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 92))
     628             :                                  END IF
     629             :                               ELSE
     630           0 :                                  TG1 = (2*X1 - 0.750000000000000000E+00_dp)*0.400000000000000000E+01_dp
     631           0 :                                  TG2 = (2*X2 - 0.843750000000000000E+00_dp)*0.320000000000000000E+02_dp
     632           0 :                                  CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 93))
     633             :                               END IF
     634             :                            ELSE
     635           0 :                               TG1 = (2*X1 - 0.750000000000000000E+00_dp)*0.400000000000000000E+01_dp
     636           0 :                               TG2 = (2*X2 - 0.937500000000000000E+00_dp)*0.160000000000000000E+02_dp
     637           0 :                               CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 94))
     638             :                            END IF
     639             :                         END IF
     640             :                      END IF
     641             :                   END IF
     642             :                ELSE
     643       74656 :                   IF (X2 <= 0.250000000000000000E+00_dp) THEN
     644           0 :                      IF (X2 <= 0.125000000000000000E+00_dp) THEN
     645           0 :                         TG1 = (2*X1 - 0.150000000000000000E+01_dp)*0.200000000000000000E+01_dp
     646           0 :                         TG2 = (2*X2 - 0.125000000000000000E+00_dp)*0.800000000000000000E+01_dp
     647           0 :                         CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 95))
     648             :                      ELSE
     649           0 :                         IF (X2 <= 0.187500000000000000E+00_dp) THEN
     650           0 :                            IF (X1 <= 0.750000000000000000E+00_dp) THEN
     651           0 :                               TG1 = (2*X1 - 0.125000000000000000E+01_dp)*0.400000000000000000E+01_dp
     652           0 :                               TG2 = (2*X2 - 0.312500000000000000E+00_dp)*0.160000000000000000E+02_dp
     653           0 :                               CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 96))
     654             :                            ELSE
     655           0 :                               IF (X1 <= 0.875000000000000000E+00_dp) THEN
     656           0 :                                  TG1 = (2*X1 - 0.162500000000000000E+01_dp)*0.800000000000000000E+01_dp
     657           0 :                                  TG2 = (2*X2 - 0.312500000000000000E+00_dp)*0.160000000000000000E+02_dp
     658           0 :                                  CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 97))
     659             :                               ELSE
     660           0 :                                  IF (X2 <= 0.156250000000000000E+00_dp) THEN
     661           0 :                                     TG1 = (2*X1 - 0.187500000000000000E+01_dp)*0.800000000000000000E+01_dp
     662           0 :                                     TG2 = (2*X2 - 0.281250000000000000E+00_dp)*0.320000000000000000E+02_dp
     663           0 :                                     CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 98))
     664             :                                  ELSE
     665           0 :                                     TG1 = (2*X1 - 0.187500000000000000E+01_dp)*0.800000000000000000E+01_dp
     666           0 :                                     TG2 = (2*X2 - 0.343750000000000000E+00_dp)*0.320000000000000000E+02_dp
     667           0 :                                     CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 99))
     668             :                                  END IF
     669             :                               END IF
     670             :                            END IF
     671             :                         ELSE
     672           0 :                            IF (X1 <= 0.750000000000000000E+00_dp) THEN
     673           0 :                               IF (X1 <= 0.625000000000000000E+00_dp) THEN
     674           0 :                                  TG1 = (2*X1 - 0.112500000000000000E+01_dp)*0.800000000000000000E+01_dp
     675           0 :                                  TG2 = (2*X2 - 0.437500000000000000E+00_dp)*0.160000000000000000E+02_dp
     676           0 :                                  CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 100))
     677             :                               ELSE
     678           0 :                                  TG1 = (2*X1 - 0.137500000000000000E+01_dp)*0.800000000000000000E+01_dp
     679           0 :                                  TG2 = (2*X2 - 0.437500000000000000E+00_dp)*0.160000000000000000E+02_dp
     680           0 :                                  CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 101))
     681             :                               END IF
     682             :                            ELSE
     683           0 :                               IF (X1 <= 0.875000000000000000E+00_dp) THEN
     684           0 :                                  IF (X2 <= 0.218750000000000000E+00_dp) THEN
     685           0 :                                     TG1 = (2*X1 - 0.162500000000000000E+01_dp)*0.800000000000000000E+01_dp
     686           0 :                                     TG2 = (2*X2 - 0.406250000000000000E+00_dp)*0.320000000000000000E+02_dp
     687           0 :                                     CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 102))
     688             :                                  ELSE
     689           0 :                                     TG1 = (2*X1 - 0.162500000000000000E+01_dp)*0.800000000000000000E+01_dp
     690           0 :                                     TG2 = (2*X2 - 0.468750000000000000E+00_dp)*0.320000000000000000E+02_dp
     691           0 :                                     CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 103))
     692             :                                  END IF
     693             :                               ELSE
     694           0 :                                  IF (X2 <= 0.218750000000000000E+00_dp) THEN
     695           0 :                                     TG1 = (2*X1 - 0.187500000000000000E+01_dp)*0.800000000000000000E+01_dp
     696           0 :                                     TG2 = (2*X2 - 0.406250000000000000E+00_dp)*0.320000000000000000E+02_dp
     697           0 :                                     CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 104))
     698             :                                  ELSE
     699           0 :                                     TG1 = (2*X1 - 0.187500000000000000E+01_dp)*0.800000000000000000E+01_dp
     700           0 :                                     TG2 = (2*X2 - 0.468750000000000000E+00_dp)*0.320000000000000000E+02_dp
     701           0 :                                     CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 105))
     702             :                                  END IF
     703             :                               END IF
     704             :                            END IF
     705             :                         END IF
     706             :                      END IF
     707             :                   ELSE
     708       74656 :                      IF (X2 <= 0.375000000000000000E+00_dp) THEN
     709       13000 :                         IF (X1 <= 0.750000000000000000E+00_dp) THEN
     710           0 :                            IF (X2 <= 0.312500000000000000E+00_dp) THEN
     711           0 :                               IF (X1 <= 0.625000000000000000E+00_dp) THEN
     712           0 :                                  TG1 = (2*X1 - 0.112500000000000000E+01_dp)*0.800000000000000000E+01_dp
     713           0 :                                  TG2 = (2*X2 - 0.562500000000000000E+00_dp)*0.160000000000000000E+02_dp
     714           0 :                                  CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 106))
     715             :                               ELSE
     716           0 :                                  TG1 = (2*X1 - 0.137500000000000000E+01_dp)*0.800000000000000000E+01_dp
     717           0 :                                  TG2 = (2*X2 - 0.562500000000000000E+00_dp)*0.160000000000000000E+02_dp
     718           0 :                                  CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 107))
     719             :                               END IF
     720             :                            ELSE
     721           0 :                               IF (X1 <= 0.625000000000000000E+00_dp) THEN
     722           0 :                                  TG1 = (2*X1 - 0.112500000000000000E+01_dp)*0.800000000000000000E+01_dp
     723           0 :                                  TG2 = (2*X2 - 0.687500000000000000E+00_dp)*0.160000000000000000E+02_dp
     724           0 :                                  CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 108))
     725             :                               ELSE
     726           0 :                                  TG1 = (2*X1 - 0.137500000000000000E+01_dp)*0.800000000000000000E+01_dp
     727           0 :                                  TG2 = (2*X2 - 0.687500000000000000E+00_dp)*0.160000000000000000E+02_dp
     728           0 :                                  CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 109))
     729             :                               END IF
     730             :                            END IF
     731             :                         ELSE
     732       13000 :                            IF (X2 <= 0.312500000000000000E+00_dp) THEN
     733         816 :                               IF (X1 <= 0.875000000000000000E+00_dp) THEN
     734           0 :                                  TG1 = (2*X1 - 0.162500000000000000E+01_dp)*0.800000000000000000E+01_dp
     735           0 :                                  TG2 = (2*X2 - 0.562500000000000000E+00_dp)*0.160000000000000000E+02_dp
     736           0 :                                  CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 110))
     737             :                               ELSE
     738         816 :                                  TG1 = (2*X1 - 0.187500000000000000E+01_dp)*0.800000000000000000E+01_dp
     739         816 :                                  TG2 = (2*X2 - 0.562500000000000000E+00_dp)*0.160000000000000000E+02_dp
     740         816 :                                  CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 111))
     741             :                               END IF
     742             :                            ELSE
     743       12184 :                               IF (X1 <= 0.875000000000000000E+00_dp) THEN
     744           0 :                                  TG1 = (2*X1 - 0.162500000000000000E+01_dp)*0.800000000000000000E+01_dp
     745           0 :                                  TG2 = (2*X2 - 0.687500000000000000E+00_dp)*0.160000000000000000E+02_dp
     746           0 :                                  CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 112))
     747             :                               ELSE
     748       12184 :                                  IF (X1 <= 0.937500000000000000E+00_dp) THEN
     749        1144 :                                     TG1 = (2*X1 - 0.181250000000000000E+01_dp)*0.160000000000000000E+02_dp
     750        1144 :                                     TG2 = (2*X2 - 0.687500000000000000E+00_dp)*0.160000000000000000E+02_dp
     751        1144 :                                     CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 113))
     752             :                                  ELSE
     753       11040 :                                     TG1 = (2*X1 - 0.193750000000000000E+01_dp)*0.160000000000000000E+02_dp
     754       11040 :                                     TG2 = (2*X2 - 0.687500000000000000E+00_dp)*0.160000000000000000E+02_dp
     755       11040 :                                     CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 114))
     756             :                                  END IF
     757             :                               END IF
     758             :                            END IF
     759             :                         END IF
     760             :                      ELSE
     761       61656 :                         IF (X1 <= 0.750000000000000000E+00_dp) THEN
     762          84 :                            IF (X1 <= 0.625000000000000000E+00_dp) THEN
     763           0 :                               TG1 = (2*X1 - 0.112500000000000000E+01_dp)*0.800000000000000000E+01_dp
     764           0 :                               TG2 = (2*X2 - 0.875000000000000000E+00_dp)*0.800000000000000000E+01_dp
     765           0 :                               CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 115))
     766             :                            ELSE
     767          84 :                               IF (X2 <= 0.437500000000000000E+00_dp) THEN
     768           0 :                                  TG1 = (2*X1 - 0.137500000000000000E+01_dp)*0.800000000000000000E+01_dp
     769           0 :                                  TG2 = (2*X2 - 0.812500000000000000E+00_dp)*0.160000000000000000E+02_dp
     770           0 :                                  CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 116))
     771             :                               ELSE
     772          84 :                                  TG1 = (2*X1 - 0.137500000000000000E+01_dp)*0.800000000000000000E+01_dp
     773          84 :                                  TG2 = (2*X2 - 0.937500000000000000E+00_dp)*0.160000000000000000E+02_dp
     774          84 :                                  CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 117))
     775             :                               END IF
     776             :                            END IF
     777             :                         ELSE
     778       61572 :                            IF (X1 <= 0.875000000000000000E+00_dp) THEN
     779       41724 :                               IF (X2 <= 0.437500000000000000E+00_dp) THEN
     780        8848 :                                  IF (X1 <= 0.812500000000000000E+00_dp) THEN
     781           0 :                                     TG1 = (2*X1 - 0.156250000000000000E+01_dp)*0.160000000000000000E+02_dp
     782           0 :                                     TG2 = (2*X2 - 0.812500000000000000E+00_dp)*0.160000000000000000E+02_dp
     783           0 :                                     CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 118))
     784             :                                  ELSE
     785        8848 :                                     TG1 = (2*X1 - 0.168750000000000000E+01_dp)*0.160000000000000000E+02_dp
     786        8848 :                                     TG2 = (2*X2 - 0.812500000000000000E+00_dp)*0.160000000000000000E+02_dp
     787        8848 :                                     CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 119))
     788             :                                  END IF
     789             :                               ELSE
     790       32876 :                                  TG1 = (2*X1 - 0.162500000000000000E+01_dp)*0.800000000000000000E+01_dp
     791       32876 :                                  TG2 = (2*X2 - 0.937500000000000000E+00_dp)*0.160000000000000000E+02_dp
     792       32876 :                                  CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 120))
     793             :                               END IF
     794             :                            ELSE
     795       19848 :                               IF (X2 <= 0.437500000000000000E+00_dp) THEN
     796       19848 :                                  IF (X1 <= 0.937500000000000000E+00_dp) THEN
     797       16364 :                                     TG1 = (2*X1 - 0.181250000000000000E+01_dp)*0.160000000000000000E+02_dp
     798       16364 :                                     TG2 = (2*X2 - 0.812500000000000000E+00_dp)*0.160000000000000000E+02_dp
     799       16364 :                                     CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 121))
     800             :                                  ELSE
     801        3484 :                                     TG1 = (2*X1 - 0.193750000000000000E+01_dp)*0.160000000000000000E+02_dp
     802        3484 :                                     TG2 = (2*X2 - 0.812500000000000000E+00_dp)*0.160000000000000000E+02_dp
     803        3484 :                                     CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 122))
     804             :                                  END IF
     805             :                               ELSE
     806           0 :                                  TG1 = (2*X1 - 0.187500000000000000E+01_dp)*0.800000000000000000E+01_dp
     807           0 :                                  TG2 = (2*X2 - 0.937500000000000000E+00_dp)*0.160000000000000000E+02_dp
     808           0 :                                  CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 123))
     809             :                               END IF
     810             :                            END IF
     811             :                         END IF
     812             :                      END IF
     813             :                   END IF
     814             :                END IF
     815             :             ELSE
     816      234464 :                IF (X1 <= 0.500000000000000000E+00_dp) THEN
     817      177940 :                   IF (X2 <= 0.750000000000000000E+00_dp) THEN
     818       40768 :                      IF (X1 <= 0.250000000000000000E+00_dp) THEN
     819           0 :                         TG1 = (2*X1 - 0.250000000000000000E+00_dp)*0.400000000000000000E+01_dp
     820           0 :                         TG2 = (2*X2 - 0.125000000000000000E+01_dp)*0.400000000000000000E+01_dp
     821           0 :                         CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 124))
     822             :                      ELSE
     823       40768 :                         IF (X2 <= 0.625000000000000000E+00_dp) THEN
     824           0 :                            IF (X1 <= 0.375000000000000000E+00_dp) THEN
     825           0 :                               TG1 = (2*X1 - 0.625000000000000000E+00_dp)*0.800000000000000000E+01_dp
     826           0 :                               TG2 = (2*X2 - 0.112500000000000000E+01_dp)*0.800000000000000000E+01_dp
     827           0 :                               CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 125))
     828             :                            ELSE
     829           0 :                               TG1 = (2*X1 - 0.875000000000000000E+00_dp)*0.800000000000000000E+01_dp
     830           0 :                               TG2 = (2*X2 - 0.112500000000000000E+01_dp)*0.800000000000000000E+01_dp
     831           0 :                               CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 126))
     832             :                            END IF
     833             :                         ELSE
     834       40768 :                            IF (X1 <= 0.375000000000000000E+00_dp) THEN
     835         120 :                               IF (X2 <= 0.687500000000000000E+00_dp) THEN
     836           0 :                                  TG1 = (2*X1 - 0.625000000000000000E+00_dp)*0.800000000000000000E+01_dp
     837           0 :                                  TG2 = (2*X2 - 0.131250000000000000E+01_dp)*0.160000000000000000E+02_dp
     838           0 :                                  CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 127))
     839             :                               ELSE
     840         120 :                                  TG1 = (2*X1 - 0.625000000000000000E+00_dp)*0.800000000000000000E+01_dp
     841         120 :                                  TG2 = (2*X2 - 0.143750000000000000E+01_dp)*0.160000000000000000E+02_dp
     842         120 :                                  CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 128))
     843             :                               END IF
     844             :                            ELSE
     845       40648 :                               IF (X2 <= 0.687500000000000000E+00_dp) THEN
     846       12296 :                                  IF (X1 <= 0.437500000000000000E+00_dp) THEN
     847           0 :                                     TG1 = (2*X1 - 0.812500000000000000E+00_dp)*0.160000000000000000E+02_dp
     848           0 :                                     TG2 = (2*X2 - 0.131250000000000000E+01_dp)*0.160000000000000000E+02_dp
     849           0 :                                     CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 129))
     850             :                                  ELSE
     851       12296 :                                     TG1 = (2*X1 - 0.937500000000000000E+00_dp)*0.160000000000000000E+02_dp
     852       12296 :                                     TG2 = (2*X2 - 0.131250000000000000E+01_dp)*0.160000000000000000E+02_dp
     853       12296 :                                     CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 130))
     854             :                                  END IF
     855             :                               ELSE
     856       28352 :                                  TG1 = (2*X1 - 0.875000000000000000E+00_dp)*0.800000000000000000E+01_dp
     857       28352 :                                  TG2 = (2*X2 - 0.143750000000000000E+01_dp)*0.160000000000000000E+02_dp
     858       28352 :                                  CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 131))
     859             :                               END IF
     860             :                            END IF
     861             :                         END IF
     862             :                      END IF
     863             :                   ELSE
     864      137172 :                      IF (X1 <= 0.250000000000000000E+00_dp) THEN
     865       97068 :                         IF (X2 <= 0.875000000000000000E+00_dp) THEN
     866       26924 :                            IF (X1 <= 0.125000000000000000E+00_dp) THEN
     867           0 :                               TG1 = (2*X1 - 0.125000000000000000E+00_dp)*0.800000000000000000E+01_dp
     868           0 :                               TG2 = (2*X2 - 0.162500000000000000E+01_dp)*0.800000000000000000E+01_dp
     869           0 :                               CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 132))
     870             :                            ELSE
     871       26924 :                               IF (X2 <= 0.812500000000000000E+00_dp) THEN
     872           0 :                                  TG1 = (2*X1 - 0.375000000000000000E+00_dp)*0.800000000000000000E+01_dp
     873           0 :                                  TG2 = (2*X2 - 0.156250000000000000E+01_dp)*0.160000000000000000E+02_dp
     874           0 :                                  CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 133))
     875             :                               ELSE
     876       26924 :                                  IF (X1 <= 0.187500000000000000E+00_dp) THEN
     877         192 :                                     TG1 = (2*X1 - 0.312500000000000000E+00_dp)*0.160000000000000000E+02_dp
     878         192 :                                     TG2 = (2*X2 - 0.168750000000000000E+01_dp)*0.160000000000000000E+02_dp
     879         192 :                                     CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 134))
     880             :                                  ELSE
     881       26732 :                                     TG1 = (2*X1 - 0.437500000000000000E+00_dp)*0.160000000000000000E+02_dp
     882       26732 :                                     TG2 = (2*X2 - 0.168750000000000000E+01_dp)*0.160000000000000000E+02_dp
     883       26732 :                                     CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 135))
     884             :                                  END IF
     885             :                               END IF
     886             :                            END IF
     887             :                         ELSE
     888       70144 :                            IF (X1 <= 0.125000000000000000E+00_dp) THEN
     889       47684 :                               IF (X2 <= 0.937500000000000000E+00_dp) THEN
     890       16628 :                                  IF (X1 <= 0.625000000000000000E-01_dp) THEN
     891           0 :                                     TG1 = (2*X1 - 0.625000000000000000E-01_dp)*0.160000000000000000E+02_dp
     892           0 :                                     TG2 = (2*X2 - 0.181250000000000000E+01_dp)*0.160000000000000000E+02_dp
     893           0 :                                     CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 136))
     894             :                                  ELSE
     895       16628 :                                     IF (X2 <= 0.906250000000000000E+00_dp) THEN
     896           0 :                                        TG1 = (2*X1 - 0.187500000000000000E+00_dp)*0.160000000000000000E+02_dp
     897           0 :                                        TG2 = (2*X2 - 0.178125000000000000E+01_dp)*0.320000000000000000E+02_dp
     898           0 :                                        CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 137))
     899             :                                     ELSE
     900       16628 :                                        TG1 = (2*X1 - 0.187500000000000000E+00_dp)*0.160000000000000000E+02_dp
     901       16628 :                                        TG2 = (2*X2 - 0.184375000000000000E+01_dp)*0.320000000000000000E+02_dp
     902       16628 :                                        CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 138))
     903             :                                     END IF
     904             :                                  END IF
     905             :                               ELSE
     906       31056 :                                  IF (X1 <= 0.625000000000000000E-01_dp) THEN
     907       25884 :                                     IF (X2 <= 0.968750000000000000E+00_dp) THEN
     908       12452 :                                        IF (X1 <= 0.312500000000000000E-01_dp) THEN
     909           0 :                                           TG1 = (2*X1 - 0.312500000000000000E-01_dp)*0.320000000000000000E+02_dp
     910           0 :                                           TG2 = (2*X2 - 0.190625000000000000E+01_dp)*0.320000000000000000E+02_dp
     911           0 :                                           CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 139))
     912             :                                        ELSE
     913       12452 :                                           TG1 = (2*X1 - 0.937500000000000000E-01_dp)*0.320000000000000000E+02_dp
     914       12452 :                                           TG2 = (2*X2 - 0.190625000000000000E+01_dp)*0.320000000000000000E+02_dp
     915       12452 :                                           CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 140))
     916             :                                        END IF
     917             :                                     ELSE
     918       13432 :                                        IF (X1 <= 0.312500000000000000E-01_dp) THEN
     919        9704 :                                           IF (X2 <= 0.984375000000000000E+00_dp) THEN
     920        6284 :                                              TG1 = (2*X1 - 0.312500000000000000E-01_dp)*0.320000000000000000E+02_dp
     921        6284 :                                              TG2 = (2*X2 - 0.195312500000000000E+01_dp)*0.640000000000000000E+02_dp
     922        6284 :                                              CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 141))
     923             :                                           ELSE
     924        3420 :                                              TG1 = (2*X1 - 0.312500000000000000E-01_dp)*0.320000000000000000E+02_dp
     925        3420 :                                              TG2 = (2*X2 - 0.198437500000000000E+01_dp)*0.640000000000000000E+02_dp
     926        3420 :                                              CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 142))
     927             :                                           END IF
     928             :                                        ELSE
     929        3728 :                                           TG1 = (2*X1 - 0.937500000000000000E-01_dp)*0.320000000000000000E+02_dp
     930        3728 :                                           TG2 = (2*X2 - 0.196875000000000000E+01_dp)*0.320000000000000000E+02_dp
     931        3728 :                                           CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 143))
     932             :                                        END IF
     933             :                                     END IF
     934             :                                  ELSE
     935        5172 :                                     IF (X2 <= 0.968750000000000000E+00_dp) THEN
     936        5172 :                                        IF (X1 <= 0.937500000000000000E-01_dp) THEN
     937        4508 :                                           TG1 = (2*X1 - 0.156250000000000000E+00_dp)*0.320000000000000000E+02_dp
     938        4508 :                                           TG2 = (2*X2 - 0.190625000000000000E+01_dp)*0.320000000000000000E+02_dp
     939        4508 :                                           CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 144))
     940             :                                        ELSE
     941         664 :                                           TG1 = (2*X1 - 0.218750000000000000E+00_dp)*0.320000000000000000E+02_dp
     942         664 :                                           TG2 = (2*X2 - 0.190625000000000000E+01_dp)*0.320000000000000000E+02_dp
     943         664 :                                           CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 145))
     944             :                                        END IF
     945             :                                     ELSE
     946           0 :                                        TG1 = (2*X1 - 0.187500000000000000E+00_dp)*0.160000000000000000E+02_dp
     947           0 :                                        TG2 = (2*X2 - 0.196875000000000000E+01_dp)*0.320000000000000000E+02_dp
     948           0 :                                        CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 146))
     949             :                                     END IF
     950             :                                  END IF
     951             :                               END IF
     952             :                            ELSE
     953       22460 :                               IF (X2 <= 0.937500000000000000E+00_dp) THEN
     954       22460 :                                  IF (X1 <= 0.187500000000000000E+00_dp) THEN
     955       19548 :                                     IF (X2 <= 0.906250000000000000E+00_dp) THEN
     956       17220 :                                        TG1 = (2*X1 - 0.312500000000000000E+00_dp)*0.160000000000000000E+02_dp
     957       17220 :                                        TG2 = (2*X2 - 0.178125000000000000E+01_dp)*0.320000000000000000E+02_dp
     958       17220 :                                        CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 147))
     959             :                                     ELSE
     960        2328 :                                        TG1 = (2*X1 - 0.312500000000000000E+00_dp)*0.160000000000000000E+02_dp
     961        2328 :                                        TG2 = (2*X2 - 0.184375000000000000E+01_dp)*0.320000000000000000E+02_dp
     962        2328 :                                        CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 148))
     963             :                                     END IF
     964             :                                  ELSE
     965        2912 :                                     TG1 = (2*X1 - 0.437500000000000000E+00_dp)*0.160000000000000000E+02_dp
     966        2912 :                                     TG2 = (2*X2 - 0.181250000000000000E+01_dp)*0.160000000000000000E+02_dp
     967        2912 :                                     CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 149))
     968             :                                  END IF
     969             :                               ELSE
     970           0 :                                  TG1 = (2*X1 - 0.375000000000000000E+00_dp)*0.800000000000000000E+01_dp
     971           0 :                                  TG2 = (2*X2 - 0.193750000000000000E+01_dp)*0.160000000000000000E+02_dp
     972           0 :                                  CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 150))
     973             :                               END IF
     974             :                            END IF
     975             :                         END IF
     976             :                      ELSE
     977       40104 :                         IF (X2 <= 0.875000000000000000E+00_dp) THEN
     978       40104 :                            IF (X1 <= 0.375000000000000000E+00_dp) THEN
     979       39736 :                               IF (X2 <= 0.812500000000000000E+00_dp) THEN
     980       30532 :                                  IF (X1 <= 0.312500000000000000E+00_dp) THEN
     981       15536 :                                     TG1 = (2*X1 - 0.562500000000000000E+00_dp)*0.160000000000000000E+02_dp
     982       15536 :                                     TG2 = (2*X2 - 0.156250000000000000E+01_dp)*0.160000000000000000E+02_dp
     983       15536 :                                     CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 151))
     984             :                                  ELSE
     985       14996 :                                     TG1 = (2*X1 - 0.687500000000000000E+00_dp)*0.160000000000000000E+02_dp
     986       14996 :                                     TG2 = (2*X2 - 0.156250000000000000E+01_dp)*0.160000000000000000E+02_dp
     987       14996 :                                     CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 152))
     988             :                                  END IF
     989             :                               ELSE
     990        9204 :                                  TG1 = (2*X1 - 0.625000000000000000E+00_dp)*0.800000000000000000E+01_dp
     991        9204 :                                  TG2 = (2*X2 - 0.168750000000000000E+01_dp)*0.160000000000000000E+02_dp
     992        9204 :                                  CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 153))
     993             :                               END IF
     994             :                            ELSE
     995         368 :                               IF (X2 <= 0.812500000000000000E+00_dp) THEN
     996         368 :                                  TG1 = (2*X1 - 0.875000000000000000E+00_dp)*0.800000000000000000E+01_dp
     997         368 :                                  TG2 = (2*X2 - 0.156250000000000000E+01_dp)*0.160000000000000000E+02_dp
     998         368 :                                  CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 154))
     999             :                               ELSE
    1000           0 :                                  TG1 = (2*X1 - 0.875000000000000000E+00_dp)*0.800000000000000000E+01_dp
    1001           0 :                                  TG2 = (2*X2 - 0.168750000000000000E+01_dp)*0.160000000000000000E+02_dp
    1002           0 :                                  CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 155))
    1003             :                               END IF
    1004             :                            END IF
    1005             :                         ELSE
    1006           0 :                            TG1 = (2*X1 - 0.750000000000000000E+00_dp)*0.400000000000000000E+01_dp
    1007           0 :                            TG2 = (2*X2 - 0.187500000000000000E+01_dp)*0.800000000000000000E+01_dp
    1008           0 :                            CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 156))
    1009             :                         END IF
    1010             :                      END IF
    1011             :                   END IF
    1012             :                ELSE
    1013       56524 :                   IF (X2 <= 0.750000000000000000E+00_dp) THEN
    1014       56524 :                      IF (X1 <= 0.750000000000000000E+00_dp) THEN
    1015       52284 :                         IF (X2 <= 0.625000000000000000E+00_dp) THEN
    1016       34140 :                            IF (X1 <= 0.625000000000000000E+00_dp) THEN
    1017        9856 :                               IF (X2 <= 0.562500000000000000E+00_dp) THEN
    1018           0 :                                  TG1 = (2*X1 - 0.112500000000000000E+01_dp)*0.800000000000000000E+01_dp
    1019           0 :                                  TG2 = (2*X2 - 0.106250000000000000E+01_dp)*0.160000000000000000E+02_dp
    1020           0 :                                  CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 157))
    1021             :                               ELSE
    1022        9856 :                                  IF (X1 <= 0.562500000000000000E+00_dp) THEN
    1023        1272 :                                     TG1 = (2*X1 - 0.106250000000000000E+01_dp)*0.160000000000000000E+02_dp
    1024        1272 :                                     TG2 = (2*X2 - 0.118750000000000000E+01_dp)*0.160000000000000000E+02_dp
    1025        1272 :                                     CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 158))
    1026             :                                  ELSE
    1027        8584 :                                     TG1 = (2*X1 - 0.118750000000000000E+01_dp)*0.160000000000000000E+02_dp
    1028        8584 :                                     TG2 = (2*X2 - 0.118750000000000000E+01_dp)*0.160000000000000000E+02_dp
    1029        8584 :                                     CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 159))
    1030             :                                  END IF
    1031             :                               END IF
    1032             :                            ELSE
    1033       24284 :                               IF (X2 <= 0.562500000000000000E+00_dp) THEN
    1034       18040 :                                  TG1 = (2*X1 - 0.137500000000000000E+01_dp)*0.800000000000000000E+01_dp
    1035       18040 :                                  TG2 = (2*X2 - 0.106250000000000000E+01_dp)*0.160000000000000000E+02_dp
    1036       18040 :                                  CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 160))
    1037             :                               ELSE
    1038        6244 :                                  TG1 = (2*X1 - 0.137500000000000000E+01_dp)*0.800000000000000000E+01_dp
    1039        6244 :                                  TG2 = (2*X2 - 0.118750000000000000E+01_dp)*0.160000000000000000E+02_dp
    1040        6244 :                                  CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 161))
    1041             :                               END IF
    1042             :                            END IF
    1043             :                         ELSE
    1044       18144 :                            IF (X1 <= 0.625000000000000000E+00_dp) THEN
    1045       18144 :                               IF (X2 <= 0.687500000000000000E+00_dp) THEN
    1046       18144 :                                  TG1 = (2*X1 - 0.112500000000000000E+01_dp)*0.800000000000000000E+01_dp
    1047       18144 :                                  TG2 = (2*X2 - 0.131250000000000000E+01_dp)*0.160000000000000000E+02_dp
    1048       18144 :                                  CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 162))
    1049             :                               ELSE
    1050           0 :                                  TG1 = (2*X1 - 0.112500000000000000E+01_dp)*0.800000000000000000E+01_dp
    1051           0 :                                  TG2 = (2*X2 - 0.143750000000000000E+01_dp)*0.160000000000000000E+02_dp
    1052           0 :                                  CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 163))
    1053             :                               END IF
    1054             :                            ELSE
    1055           0 :                               TG1 = (2*X1 - 0.137500000000000000E+01_dp)*0.800000000000000000E+01_dp
    1056           0 :                               TG2 = (2*X2 - 0.137500000000000000E+01_dp)*0.800000000000000000E+01_dp
    1057           0 :                               CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 164))
    1058             :                            END IF
    1059             :                         END IF
    1060             :                      ELSE
    1061        4240 :                         IF (X2 <= 0.625000000000000000E+00_dp) THEN
    1062        4240 :                            IF (X1 <= 0.875000000000000000E+00_dp) THEN
    1063        4240 :                               IF (X2 <= 0.562500000000000000E+00_dp) THEN
    1064        4240 :                                  TG1 = (2*X1 - 0.162500000000000000E+01_dp)*0.800000000000000000E+01_dp
    1065        4240 :                                  TG2 = (2*X2 - 0.106250000000000000E+01_dp)*0.160000000000000000E+02_dp
    1066        4240 :                                  CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 165))
    1067             :                               ELSE
    1068           0 :                                  TG1 = (2*X1 - 0.162500000000000000E+01_dp)*0.800000000000000000E+01_dp
    1069           0 :                                  TG2 = (2*X2 - 0.118750000000000000E+01_dp)*0.160000000000000000E+02_dp
    1070           0 :                                  CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 166))
    1071             :                               END IF
    1072             :                            ELSE
    1073           0 :                               TG1 = (2*X1 - 0.187500000000000000E+01_dp)*0.800000000000000000E+01_dp
    1074           0 :                               TG2 = (2*X2 - 0.112500000000000000E+01_dp)*0.800000000000000000E+01_dp
    1075           0 :                               CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 167))
    1076             :                            END IF
    1077             :                         ELSE
    1078           0 :                            TG1 = (2*X1 - 0.175000000000000000E+01_dp)*0.400000000000000000E+01_dp
    1079           0 :                            TG2 = (2*X2 - 0.137500000000000000E+01_dp)*0.800000000000000000E+01_dp
    1080           0 :                            CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 168))
    1081             :                         END IF
    1082             :                      END IF
    1083             :                   ELSE
    1084           0 :                      IF (X1 <= 0.750000000000000000E+00_dp) THEN
    1085           0 :                         TG1 = (2*X1 - 0.125000000000000000E+01_dp)*0.400000000000000000E+01_dp
    1086           0 :                         TG2 = (2*X2 - 0.175000000000000000E+01_dp)*0.400000000000000000E+01_dp
    1087           0 :                         CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 169))
    1088             :                      ELSE
    1089           0 :                         TG1 = (2*X1 - 0.175000000000000000E+01_dp)*0.400000000000000000E+01_dp
    1090           0 :                         TG2 = (2*X2 - 0.175000000000000000E+01_dp)*0.400000000000000000E+01_dp
    1091           0 :                         CALL PD2VAL(RES, NDERIV, TG1, TG2, C0(1, 170))
    1092             :                      END IF
    1093             :                   END IF
    1094             :                END IF
    1095             :             END IF
    1096             :          ELSE
    1097           0 :             DO i = 1, NDERIV + 1
    1098           0 :                RES(i) = 0.0_dp
    1099             :             END DO
    1100             :          END IF
    1101             :       END IF
    1102     1160636 :    END SUBROUTINE trunc_CS_poly_n20
    1103             : 
    1104             : ! **************************************************************************************************
    1105             : !> \brief ...
    1106             : !> \param Nder the number of derivatives that will actually be used
    1107             : !> \param iunit contains the data file to initialize the table
    1108             : !> \param mepos ...
    1109             : !> \param group ...
    1110             : ! **************************************************************************************************
    1111           2 :    SUBROUTINE INIT(Nder, iunit, mepos, group)
    1112             :       INTEGER, INTENT(IN)                                :: Nder, iunit, mepos
    1113             : 
    1114             :       CLASS(mp_comm_type), INTENT(IN)                     :: group
    1115             : 
    1116             :       INTEGER                                            :: I
    1117           2 :       REAL(KIND=dp), ALLOCATABLE, DIMENSION(:)           :: chunk
    1118             : 
    1119           2 :       patches = 170
    1120           2 :       IF (Nder > nderiv_max) CPABORT("Reading data for initialization of C0 failed")
    1121           2 :       nderiv_init = Nder
    1122           2 :       IF (ALLOCATED(C0)) DEALLOCATE (C0)
    1123             :       ! round up to a multiple of 32 to give some generous alignment for each C0
    1124           8 :       ALLOCATE (C0(32*((31 + (Nder + 1)*(degree + 1)*(degree + 2)/2)/32), patches))
    1125             :       ! valgrind workaround
    1126      609622 :       C0 = HUGE(0.0_dp)
    1127           2 :       IF (mepos == 0) THEN
    1128           2 :          ALLOCATE (chunk((nderiv_max + 1)*(degree + 1)*(degree + 2)/2))
    1129         342 :          DO I = 1, patches
    1130         340 :             READ (iunit, *) chunk
    1131      601462 :             C0(1:(Nder + 1)*(degree + 1)*(degree + 2)/2, I) = chunk(1:(Nder + 1)*(degree + 1)*(degree + 2)/2)
    1132             :          END DO
    1133           2 :          DEALLOCATE (chunk)
    1134             :       END IF
    1135           2 :       CALL group%bcast(C0, 0)
    1136           2 :    END SUBROUTINE INIT
    1137             : 
    1138             : ! **************************************************************************************************
    1139             : !> \brief ...
    1140             : ! **************************************************************************************************
    1141           2 :    SUBROUTINE free_C0()
    1142           2 :       IF (ALLOCATED(C0)) DEALLOCATE (C0)
    1143           2 :       nderiv_init = -1
    1144           2 :    END SUBROUTINE free_C0
    1145             : 
    1146             : ! **************************************************************************************************
    1147             : !> \brief ...
    1148             : !> \param RES ...
    1149             : !> \param NDERIV ...
    1150             : !> \param TG1 ...
    1151             : !> \param TG2 ...
    1152             : !> \param C0 ...
    1153             : ! **************************************************************************************************
    1154     1160636 :    SUBROUTINE PD2VAL(RES, NDERIV, TG1, TG2, C0)
    1155             :       REAL(KIND=dp), INTENT(OUT)                         :: res(*)
    1156             :       INTEGER, INTENT(IN)                                :: NDERIV
    1157             :       REAL(KIND=dp), INTENT(IN)                          :: TG1, TG2, C0(136, *)
    1158             : 
    1159             :       REAL(KIND=dp), PARAMETER :: SQRT2 = 1.4142135623730950488016887242096980785696718753_dp
    1160             : 
    1161             :       INTEGER                                            :: K
    1162             :       REAL(KIND=dp)                                      :: T1(0:15), T2(0:15)
    1163             : 
    1164     1160636 :       T1(0) = 1.0_dp
    1165     1160636 :       T2(0) = 1.0_dp
    1166     1160636 :       T1(1) = SQRT2*TG1
    1167     1160636 :       T2(1) = SQRT2*TG2
    1168     1160636 :       T1(2) = 2*TG1*T1(1) - SQRT2
    1169     1160636 :       T2(2) = 2*TG2*T2(1) - SQRT2
    1170     1160636 :       T1(3) = 2*TG1*T1(2) - T1(1)
    1171     1160636 :       T2(3) = 2*TG2*T2(2) - T2(1)
    1172     1160636 :       T1(4) = 2*TG1*T1(3) - T1(2)
    1173     1160636 :       T2(4) = 2*TG2*T2(3) - T2(2)
    1174     1160636 :       T1(5) = 2*TG1*T1(4) - T1(3)
    1175     1160636 :       T2(5) = 2*TG2*T2(4) - T2(3)
    1176     1160636 :       T1(6) = 2*TG1*T1(5) - T1(4)
    1177     1160636 :       T2(6) = 2*TG2*T2(5) - T2(4)
    1178     1160636 :       T1(7) = 2*TG1*T1(6) - T1(5)
    1179     1160636 :       T2(7) = 2*TG2*T2(6) - T2(5)
    1180     1160636 :       T1(8) = 2*TG1*T1(7) - T1(6)
    1181     1160636 :       T2(8) = 2*TG2*T2(7) - T2(6)
    1182     1160636 :       T1(9) = 2*TG1*T1(8) - T1(7)
    1183     1160636 :       T2(9) = 2*TG2*T2(8) - T2(7)
    1184     1160636 :       T1(10) = 2*TG1*T1(9) - T1(8)
    1185     1160636 :       T2(10) = 2*TG2*T2(9) - T2(8)
    1186     1160636 :       T1(11) = 2*TG1*T1(10) - T1(9)
    1187     1160636 :       T2(11) = 2*TG2*T2(10) - T2(9)
    1188     1160636 :       T1(12) = 2*TG1*T1(11) - T1(10)
    1189     1160636 :       T2(12) = 2*TG2*T2(11) - T2(10)
    1190     1160636 :       T1(13) = 2*TG1*T1(12) - T1(11)
    1191     1160636 :       T2(13) = 2*TG2*T2(12) - T2(11)
    1192     1160636 :       T1(14) = 2*TG1*T1(13) - T1(12)
    1193     1160636 :       T2(14) = 2*TG2*T2(13) - T2(12)
    1194     1160636 :       T1(15) = 2*TG1*T1(14) - T1(13)
    1195     1160636 :       T2(15) = 2*TG2*T2(14) - T2(13)
    1196     6054296 :       DO K = 1, NDERIV + 1
    1197     4893660 :          RES(K) = 0.0_dp
    1198    83192220 :          RES(K) = RES(K) + DOT_PRODUCT(T1(0:15), C0(1:16, K))*T2(0)
    1199    78298560 :          RES(K) = RES(K) + DOT_PRODUCT(T1(0:14), C0(17:31, K))*T2(1)
    1200    73404900 :          RES(K) = RES(K) + DOT_PRODUCT(T1(0:13), C0(32:45, K))*T2(2)
    1201    68511240 :          RES(K) = RES(K) + DOT_PRODUCT(T1(0:12), C0(46:58, K))*T2(3)
    1202    63617580 :          RES(K) = RES(K) + DOT_PRODUCT(T1(0:11), C0(59:70, K))*T2(4)
    1203    58723920 :          RES(K) = RES(K) + DOT_PRODUCT(T1(0:10), C0(71:81, K))*T2(5)
    1204    53830260 :          RES(K) = RES(K) + DOT_PRODUCT(T1(0:9), C0(82:91, K))*T2(6)
    1205    48936600 :          RES(K) = RES(K) + DOT_PRODUCT(T1(0:8), C0(92:100, K))*T2(7)
    1206    44042940 :          RES(K) = RES(K) + DOT_PRODUCT(T1(0:7), C0(101:108, K))*T2(8)
    1207    39149280 :          RES(K) = RES(K) + DOT_PRODUCT(T1(0:6), C0(109:115, K))*T2(9)
    1208    34255620 :          RES(K) = RES(K) + DOT_PRODUCT(T1(0:5), C0(116:121, K))*T2(10)
    1209    29361960 :          RES(K) = RES(K) + DOT_PRODUCT(T1(0:4), C0(122:126, K))*T2(11)
    1210    24468300 :          RES(K) = RES(K) + DOT_PRODUCT(T1(0:3), C0(127:130, K))*T2(12)
    1211    19574640 :          RES(K) = RES(K) + DOT_PRODUCT(T1(0:2), C0(131:133, K))*T2(13)
    1212    14680980 :          RES(K) = RES(K) + DOT_PRODUCT(T1(0:1), C0(134:135, K))*T2(14)
    1213    10947956 :          RES(K) = RES(K) + DOT_PRODUCT(T1(0:0), C0(136:136, K))*T2(15)
    1214             :       END DO
    1215     1160636 :    END SUBROUTINE PD2VAL
    1216             : 
    1217             : END MODULE t_sh_p_s_c

Generated by: LCOV version 1.15