* SUBROUTINE TIUB15                ALL SYSTEMS                92/12/01
C PORTABILITY : ALL SYSTEMS
C 92/12/01 RA : ORIGINAL VERSION
*
* PURPOSE :
*  INITIATION OF VARIABLES AND DEFINITION OF STRUCTURE OF THE SPARSE
*  JACOBIAN MATRIX FOR THE SUM OF SQUARES.
*
* PARAMETERS :
*  IU  N  NUMBER OF VARIABLES.
*  IO  NA  NUMBER OF PARTIAL FUNCTIONS.
*  IO  MA  NUMBER OF NONZERO ELEMENTS IN THE SPARSE JACOBIAN MATRIX.
*  RO  X(N)  VECTOR OF VARIABLES.
*  IO  IA(NA+1)  POINTERS OF FIRST IN THE ROW ELEMENTS IN THE
*         SPARSE JACOBIAN MATRIX.
*  IO  JA(MA)  COLUMN INDICES OF NONZERO ELEMENTS IN THE SPARSE
*         JACOBIAN MATRIX.
*  RO  FMIN  LOWER BOUND FOR THE OBJECTIVE FUNCTION VALUE.
*  RO  XMAX  MAXIMUM ALLOWED STEPSIZE.
*  II  NEXT  NUMBER OF THE SELECTED TEST PROBLEM.
*  IO  IERR  ERROR INDICATOR. IERR=0 FOR CORRECT OUTPUT.
*
      SUBROUTINE TIUB15(N,NA,MA,X,IA,JA,FMIN,XMAX,NEXT,IERR)
      INTEGER N,NA,MA,NEXT,IEXT,IERR
      INTEGER IA(NA+1),JA(MA)
      REAL*8 X(N),FMIN,XMAX
      INTEGER I,J,K,L,II,JJ,KK,LL,MM,KA
      REAL*8 Y(20)
      COMMON /EMPR15/ Y
      REAL*8 ETA9
      PARAMETER (ETA9=1.0D 60)
      FMIN=0.0D 0
      XMAX=1.0D 3
      IEXT=0
      IERR=0
      GOTO(10,20,30,40,50,60,70,80,90,100,110,120,130,140,150,160,
     & 170,180,190,200,210,220),NEXT
   10 IF (N.LT.2) GO TO 999
      N=N-MOD(N,2)
      DO 11 I=1,N
        IF(MOD(I,2).EQ.1) THEN
          X(I)=-1.2D 0
        ELSE
          X(I)=1.0D 0
        ENDIF
   11 CONTINUE
      DO 12 I=1,N-1
        L=3*(I-1)+1
        JA(L)=I
        JA(L+1)=I+1
        JA(L+2)=I
        K=2*(I-1)+1
        IA(K)=L
        IA(K+1)=L+2
   12 CONTINUE
      IA(K+2)=L+3
      NA=2*(N-1)
      MA=3*(N-1)
      RETURN
   20 IF (N.LT.4) GO TO 999
      N=N-MOD(N,2)
      DO 21 I=1,N
        IF(MOD(I,2).EQ.1) THEN
          X(I)=-2.0D 0
          IF(I.LE.4) X(I)=-3.0D 0
        ELSE
          X(I)=0.0D 0
          IF(I.LE.4) X(I)=-1.0D 0
        ENDIF
   21 CONTINUE
      DO 22 I=2,N-2,2
        L=5*(I-2)+1
        JA(L)=I-1
        JA(L+1)=I
        JA(L+2)=I-1
        JA(L+3)=I+1
        JA(L+4)=I+2
        JA(L+5)=I+1
        JA(L+6)=I
        JA(L+7)=I+2
        JA(L+8)=I
        JA(L+9)=I+2
        K=3*(I-2)+1
        IA(K)=L
        IA(K+1)=L+2
        IA(K+2)=L+3
        IA(K+3)=L+5
        IA(K+4)=L+6
        IA(K+5)=L+8
   22 CONTINUE
      IA(K+6)=L+10
      NA=K+5
      MA=L+9
      RETURN
   30 IF (N.LT.4) GO TO 999
      N=N-MOD(N,2)
      DO 31 I=1,N
        IF(MOD(I,4).EQ.1) THEN
          X(I)=3.0D 0
        ELSEIF(MOD(I,4).EQ.2) THEN
          X(I)=-1.0D 0
        ELSEIF(MOD(I,4).EQ.3) THEN
          X(I)=0.0D 0
        ELSE
          X(I)=1.0D 0
        ENDIF
   31 CONTINUE
      DO 32 I=2,N-2,2
        L=4*(I-2)+1
        JA(L)=I-1
        JA(L+1)=I
        JA(L+2)=I+1
        JA(L+3)=I+2
        JA(L+4)=I
        JA(L+5)=I+1
        JA(L+6)=I-1
        JA(L+7)=I+2
        K=2*(I-2)+1
        IA(K)=L
        IA(K+1)=L+2
        IA(K+2)=L+4
        IA(K+3)=L+6
   32 CONTINUE
      IA(K+4)=L+8
      NA=K+3
      MA=L+7
      RETURN
   40 IF (N.LT.4) GO TO 999
      N=N-MOD(N,2)
      DO 41 I=1,N
        X(I)=2.0D 0
   41 CONTINUE
      X(1)=1.0D 0
      DO 42 I=2,N-2,2
        L=4*(I-2)+1
        JA(L)=I-1
        JA(L+1)=I
        JA(L+2)=I
        JA(L+3)=I+1
        JA(L+4)=I+1
        JA(L+5)=I+2
        JA(L+6)=I-1
        JA(L+7)=I+2
        K=5*(I-2)/2+1
        IA(K)=L
        IA(K+1)=L+2
        IA(K+2)=L+4
        IA(K+3)=L+6
        IA(K+4)=L+7
   42 CONTINUE
      IA(K+5)=L+8
      NA=K+4
      MA=L+7
      XMAX=1.0D 1
      RETURN
   50 IF (N.LT.3) GO TO 999
      DO 51 I=1,N
        X(I)=-1.0D 0
   51 CONTINUE
      JA(1)=1
      JA(2)=2
      IA(1)=1
      DO 52 I=2,N-1
        K=3*(I-2)+3
        JA(K)=I-1
        JA(K+1)=I
        JA(K+2)=I+1
        IA(I)=K
   52 CONTINUE
      JA(K+3)=N-1
      JA(K+4)=N
      IA(N)=K+3
      IA(N+1)=IA(N)+2
      NA=N
      MA=3*N-2
      RETURN
   60 IF (N.LT.6) GO TO 999
      DO 61 I=1,N
        X(I)=-1.0D 0
   61 CONTINUE
      L=1
      DO 62 I=1,5
        IA(I)=L
        DO 63 K=1,I+1
          JA(L)=K
          L=L+1
   63   CONTINUE
   62 CONTINUE
      DO 64 I=6,N-1
      IA(I)=L
        DO 65 K=I-5,I+1
        JA(L)=K
        L=L+1
   65   CONTINUE
   64 CONTINUE
      IA(N)=L
      DO 66 K=N-5,N
        JA(L)=K
        L=L+1
   66 CONTINUE
      IA(N+1)=L
      NA=N
      MA=L-1
      RETURN
   70 IF (N.LT.2) GO TO 999
      DO 71 I=1,N-1
        X(I)=0.5D 0
        K=4*(I-1)+1
        JA(K)=I
        JA(K+1)=I+1
        JA(K+2)=I
        JA(K+3)=I+1
        L=2*(I-1)+1
        IA(L)=K
        IA(L+1)=K+2
   71 CONTINUE
      X(N)=-2.0D 0
      IA(L+2)=IA(L+1)+2
      NA=2*(N-1)
      MA=2*NA
      RETURN
   80 IF (N.LT.4) GO TO 999
      N=N-MOD(N,4)
      DO 81 I=1,N
        X(I)=SIN(DBLE(I))**2
   81 CONTINUE
      MM=5*N
      K=1
      DO 82 KA=1,MM
        I=MOD(KA,N/2)+1
        J=I+N/2
        K=2*(KA-1)+1
        JA(K)=I
        JA(K+1)=J
        IA(KA)=K
   82 CONTINUE
      IA(MM+1)=K+2
      NA=MM
      MA=2*MM
      RETURN
   90 IF (N.LT.4) GO TO 999
      N=N-MOD(N,2)
      DO 91 I=1,N
        X(I)=5.0D 0
   91 CONTINUE
      DO 93 I=2,N-2,2
        L=12*(I-2)+1
        DO 92 J=1,6
          K=(J-1)*4
          JA(L+K)=I-1
          JA(L+K+1)=I
          JA(L+K+2)=I+1
          JA(L+K+3)=I+2
   92   CONTINUE
        K=3*(I-2)+1
        IA(K)=L
        IA(K+1)=L+4
        IA(K+2)=L+8
        IA(K+3)=L+12
        IA(K+4)=L+16
        IA(K+5)=L+20
   93 CONTINUE
      IA(K+6)=L+24
      NA=K+5
      MA=L+23
      RETURN
  100 IF (N.LT.2) GO TO 999
      DO 101 I=1,N
        X(I)=0.2D 0
  101 CONTINUE
      MM=2*N-2
      JA(1)=1
      JA(2)=2
      JA(3)=1
      JA(4)=2
      IA(1)=1
      IA(2)=3
      K=5
      L=3
      DO 102 KA=3,MM,2
        I=(KA+1)/2-1
        JA(K)=I
        JA(K+1)=I+1
        JA(K+2)=I+2
        JA(K+3)=I+1
        JA(K+4)=I+2
        IA(L)=K
        IA(L+1)=K+3
        K=K+5
        L=L+2
  102 CONTINUE
      JA(K)=N-1
      JA(K+1)=N
      IA(L)=K
      IA(L+1)=K+2
      NA=L
      MA=K+1
      RETURN
  110 CONTINUE
      IF (N.LT.2) GO TO 999
      N=N-MOD(N,2)
      DO 111 I=1,N
        IF(MOD(I,2).EQ.1) THEN
          X(I)=-0.8D 0
        ELSE
          X(I)=-0.8D 0
        ENDIF
  111 CONTINUE
      IA(1)=1
      NA=2*(N-1)
      MA=1
      L=1
      DO 112 K=1,N-1
        JA(MA)=K
        MA=MA+1
        JA(MA)=K+1
        MA=MA+1
        L=L+1
        IA(L)=MA
        JA(MA)=K
        MA=MA+1
        L=L+1
        IA(L)=MA
  112 CONTINUE
      MA=IA(NA+1)-1
      RETURN
  120 CONTINUE
      IF (N.LT.5) GO TO 999
      IF (MOD(N-5,3).NE.0) N=N-MOD(N-5,3)
      DO 121 I=1,N
        X(I)=-1.0D 0
  121 CONTINUE
      IA(1)=1
      KK=(N-5)/3+1
      NA=6*KK
      MA=1
      L=1
      DO 122 K=1,KK
        I=3*(K-1)+1
        JA(MA)=I
        MA=MA+1
        JA(MA)=I+1
        MA=MA+1
        L=L+1
        IA(L)=MA
        JA(MA)=I+2
        MA=MA+1
        L=L+1
        IA(L)=MA
        JA(MA)=I+3
        MA=MA+1
        L=L+1
        IA(L)=MA
        JA(MA)=I+4
        MA=MA+1
        L=L+1
        IA(L)=MA
        JA(MA)=I
        MA=MA+1
        JA(MA)=I+3
        MA=MA+1
        JA(MA)=I+4
        MA=MA+1
        L=L+1
        IA(L)=MA
        JA(MA)=I+1
        MA=MA+1
        JA(MA)=I+2
        MA=MA+1
        JA(MA)=I+3
        MA=MA+1
        L=L+1
        IA(L)=MA
  122 CONTINUE
      MA=IA(NA+1)-1
      RETURN
  130 CONTINUE
      IF (N.LT.5) GO TO 999
      IF (MOD(N-5,3).NE.0) N=N-MOD(N-5,3)
      DO 131 I=1,N
        X(I)=-1.0D 0
  131 CONTINUE
      IA(1)=1
      KK=(N-5)/3+1
      NA=7*KK
      MA=1
      L=1
      DO 132 K=1,KK
        I=3*(K-1)+1
        JA(MA)=I
        MA=MA+1
        JA(MA)=I+1
        MA=MA+1
        L=L+1
        IA(L)=MA
        JA(MA)=I+1
        MA=MA+1
        JA(MA)=I+2
        MA=MA+1
        L=L+1
        IA(L)=MA
        JA(MA)=I+2
        MA=MA+1
        JA(MA)=I+3
        MA=MA+1
        L=L+1
        IA(L)=MA
        JA(MA)=I+3
        MA=MA+1
        JA(MA)=I+4
        MA=MA+1
        L=L+1
        IA(L)=MA
        JA(MA)=I
        MA=MA+1
        JA(MA)=I+1
        MA=MA+1
        JA(MA)=I+2
        MA=MA+1
        L=L+1
        IA(L)=MA
        JA(MA)=I+1
        MA=MA+1
        JA(MA)=I+2
        MA=MA+1
        JA(MA)=I+3
        MA=MA+1
        L=L+1
        IA(L)=MA
        JA(MA)=I
        MA=MA+1
        JA(MA)=I+4
        MA=MA+1
        L=L+1
        IA(L)=MA
  132 CONTINUE
      MA=IA(NA+1)-1
      RETURN
  140 CONTINUE
      IF (N.LT.4) GO TO 999
      DO 141 I=1,N
        IF (MOD(I,4).EQ.1) THEN
          X(I)=-0.8D 0
        ELSE IF (MOD(I,4).EQ.2) THEN
          X(I)= 1.2D 0
        ELSE IF (MOD(I,4).EQ.3) THEN
          X(I)=-1.2D 0
        ELSE
          X(I)= 0.8D 0
        ENDIF
  141 CONTINUE
      Y(1)=14.4D 0
      Y(2)=6.8D 0
      Y(3)=4.2D 0
      Y(4)=3.2D 0
      II=4
      JJ=4
      LL=2
      IA(1)=1
  142 IF (MOD(N-II,LL).NE.0) N=N-MOD(N-II,LL)
      KK=(N-II)/LL+1
      NA=JJ*KK
      MA=1
      L=1
      DO 145 K=1,KK
        MM=(K-1)*LL
        DO 144 J=1,JJ
          DO 143 I=1,II
            JA(MA)=MM+I
            MA=MA+1
  143     CONTINUE
          L=L+1
          IA(L)=MA
  144   CONTINUE
  145 CONTINUE
      MA=IA(NA+1)-1
      RETURN
  150 CONTINUE
      IF (N.LT.4) GO TO 999
      DO 151 I=1,N
        IF (MOD(I,4).EQ.1) THEN
          X(I)=-0.8D 0
        ELSE IF (MOD(I,4).EQ.2) THEN
          X(I)= 1.2D 0
        ELSE IF (MOD(I,4).EQ.3) THEN
          X(I)=-1.2D 0
        ELSE
          X(I)= 0.8D 0
        ENDIF
  151 CONTINUE
      Y(1)=35.8D 0
      Y(2)=11.2D 0
      Y(3)=6.2D 0
      Y(4)=4.4D 0
      II=4
      JJ=4
      LL=2
      IA(1)=1
      GO TO 142
  160 CONTINUE
      IF (N.LT.4) GO TO 999
      DO 161 I=1,N
        IF (MOD(I,4).EQ.1) THEN
          X(I)=-0.8D 0
        ELSE IF (MOD(I,4).EQ.2) THEN
          X(I)= 1.2D 0
        ELSE IF (MOD(I,4).EQ.3) THEN
          X(I)=-1.2D 0
        ELSE
          X(I)= 0.8D 0
        ENDIF
  161 CONTINUE
      Y(1)=30.6D 0
      Y(2)=72.2D 0
      Y(3)=124.4D 0
      Y(4)=187.4D 0
      II=4
      JJ=4
      LL=2
      IA(1)=1
      GO TO 142
  170 IF (N.LT.4) GO TO 999
      N=N-MOD(N,2)
      NA=N
      MA=0
      IA(1)=1
      DO 171 I=1,N
        IF (MOD(I,8).EQ.1) X(I)=1.0D-1
        IF (MOD(I,8).EQ.2.OR.MOD(I,8).EQ.0) X(I)=2.0D-1
        IF (MOD(I,8).EQ.3.OR.MOD(I,8).EQ.7) X(I)=3.0D-1
        IF (MOD(I,8).EQ.4.OR.MOD(I,8).EQ.6) X(I)=4.0D-1
        IF (MOD(I,8).EQ.5) X(I)=5.0D-1
        IF (I.GT.2) THEN
          MA=MA+1
          JA(MA)=I-2
        ENDIF
        MA=MA+2
        IF (MOD(I,2).EQ.1) THEN
          JA(MA-1)=I
          JA(MA)=I+1
        ELSE
          JA(MA-1)=I-1
          JA(MA)=I
        ENDIF
        IF (I.LT.N-1) THEN
          MA=MA+1
          JA(MA)=I+2
        ENDIF
        IA(I+1)=MA+1
  171 CONTINUE
      RETURN
  180 IF (N.LT.3) GO TO 999
      NA=N
      MA=0
      IA(1)=1
      DO 181 I=1,N
        X(I)=1.2D 1
        IF(I.GT.1) THEN
          MA=MA+1
          JA(MA)=I-1
        ENDIF
        MA=MA+1
        JA(MA)=I
        IF(I.LT.N) THEN
          MA=MA+1
          JA(MA)=I+1
        ENDIF
        IA(I+1)=MA+1
  181 CONTINUE
      RETURN
  190 IF (N.LT.7) GO TO 999
      NA=N
      MA=0
      IA(1)=1
      DO 191 I=1,N
        X(I)=-1.0D 0
        IF (I.GT.1.AND.I.LT.N-3) THEN
          MA=MA+1
          JA(MA)=I-1
        ENDIF
        IF (I.LT.N-4) THEN
          MA=MA+1
          JA(MA)=I
        ENDIF
        IF (I.LT.N-5) THEN
          MA=MA+1
          JA(MA)=I+1
        ENDIF
        MA=MA+5
        JA(MA-4)=N-4
        JA(MA-3)=N-3
        JA(MA-2)=N-2
        JA(MA-1)=N-1
        JA(MA)=N
        IA(I+1)=MA+1
  191 CONTINUE
      RETURN
  200 IF (N.LT.3) GO TO 999
      NA=N
      MA=0
      IA(1)=1
      DO 201 I=1,N
        X(I)=DBLE(I)/DBLE(N+1)
        X(I)=X(I)*(X(I)-1.0D 0)
        IF(I.GT.1) THEN
          MA=MA+1
          JA(MA)=I-1
        ENDIF
        MA=MA+1
        JA(MA)=I
        IF (I.LT.N) THEN
          MA=MA+1
          JA(MA)=I+1
        ENDIF
        IA(I+1)=MA+1
  201 CONTINUE
      RETURN
  210 CONTINUE
      IF (N.LT.5) GO TO 999
      IF (MOD(N-5,3).NE.0) N=N-MOD(N-5,3)
      DO 211 I=1,N
        X(I)=-1.0D 0
  211 CONTINUE
      IA(1)=1
      KK=(N-5)/3+1
      NA=7*KK
      MA=1
      L=1
      DO 212 K=1,KK
        I=3*(K-1)+1
        JA(MA)=I
        MA=MA+1
        JA(MA)=I+1
        MA=MA+1
        L=L+1
        IA(L)=MA
        JA(MA)=I+1
        MA=MA+1
        JA(MA)=I+2
        MA=MA+1
        L=L+1
        IA(L)=MA
        JA(MA)=I+3
        MA=MA+1
        L=L+1
        IA(L)=MA
        JA(MA)=I+4
        MA=MA+1
        L=L+1
        IA(L)=MA
        JA(MA)=I
        MA=MA+1
        JA(MA)=I+1
        MA=MA+1
        L=L+1
        IA(L)=MA
        JA(MA)=I+2
        MA=MA+1
        JA(MA)=I+3
        MA=MA+1
        JA(MA)=I+4
        MA=MA+1
        L=L+1
        IA(L)=MA
        JA(MA)=I+1
        MA=MA+1
        JA(MA)=I+4
        MA=MA+1
        L=L+1
        IA(L)=MA
  212 CONTINUE
      MA=IA(NA+1)-1
      RETURN
  220 IF (N.LT.3) GO TO 999
      DO 221 I=1,N
        IF(MOD(I,2).EQ.1) THEN
          X(I)=-1.2D 0
        ELSE
          X(I)= 1.0D 0
        ENDIF
  221 CONTINUE
      NA=2*(N-1)
      MA=2
      IA(1)=1
      IA(2)=2
      JA(1)=1
      DO 222 KA=1,NA-1
        I=(KA+1)/2
        IF (MOD(KA,2).EQ.1) THEN
          JA(MA)=I
          MA=MA+1
          JA(MA)=I+1
          MA=MA+1
        ELSE
          JA(MA)=I
          MA=MA+1
          JA(MA)=I+1
          MA=MA+1
          JA(MA)=I+2
          MA=MA+1
        ENDIF
        IA(KA+2)=MA
  222 CONTINUE
      MA=MA-1
      RETURN
  999 IERR=1
      RETURN
      END
* SUBROUTINE TAFU15             ALL SYSTEMS                92/12/01
C PORTABILITY : ALL SYSTEMS
C 92/12/01 RA : ORIGINAL VERSION
*
* PURPOSE :
*  VALUES OF PARTIAL FUNCTIONS IN THE SUM OF SQUARES.
*
* PARAMETERS :
*  II  N  NUMBER OF VARIABLES.
*  II  KA  INDEX OF THE GIVEN PARTIAL FUNCTION.
*  RI  X(N)  VECTOR OF VARIABLES.
*  RO  FA  VALUE OF THE KA-TH PARTIAL FUNCTION AT THE POINT X.
*  II  NEXT  NUMBER OF THE SELECTED TEST PROBLEM.
*
      SUBROUTINE TAFU15(N,KA,X,FA,NEXT)
      INTEGER N,KA,NEXT
      REAL*8 X(N),FA
      REAL*8 A,C,D,P,ALFA,U,V
      INTEGER I,J,K,L,M,IA,IB,IC
      REAL*8 Y(20)
      COMMON /EMPR15/ Y
      GOTO(10,20,30,40,50,60,70,80,90,100,110,120,130,140,150,160,
     & 170,180,190,200,210,220),NEXT
   10 I=(KA+1)/2
      IF (MOD(KA,2).EQ.1) THEN
      FA=1.0D 1*(X(I)**2-X(I+1))
      ELSE
      FA=X(I)-1.0D 0
      ENDIF
      RETURN
   20 A=SQRT(10.0D 0)
      D=SQRT(90.0D 0)
      I=2*((KA+5)/6)
      IF (MOD(KA,6).EQ.1) THEN
      FA=1.0D 1*(X(I-1)**2-X(I))
      ELSEIF (MOD(KA,6).EQ.2) THEN
      FA=X(I-1)-1.0D 0
      ELSEIF (MOD(KA,6).EQ.3) THEN
      FA=D*(X(I+1)**2-X(I+2))
      ELSEIF (MOD(KA,6).EQ.4) THEN
      FA=X(I+1)-1.0D 0
      ELSEIF (MOD(KA,6).EQ.5) THEN
      FA=A*(X(I)+X(I+2)-2.0D 0)
      ELSE
      FA=(X(I)-X(I+2))/A
      ENDIF
      RETURN
   30 A=SQRT(1.0D 1)
      C=SQRT(5.0D 0)
      I=2*((KA+3)/4)
      IF (MOD(KA,4).EQ.1) THEN
      FA=X(I-1)+1.0D 1*X(I)
      ELSEIF (MOD(KA,4).EQ.2) THEN
      FA=C*(X(I+1)-X(I+2))
      ELSEIF (MOD(KA,4).EQ.3) THEN
      FA=(X(I)-2.0D 0*X(I+1))**2
      ELSE
      FA=A*(X(I-1)-X(I+2))**2
      ENDIF
      RETURN
   40 I=2*((KA+4)/5)
      IF (MOD(KA,5).EQ.1) THEN
      FA=(EXP(X(I-1))-X(I))**2
      ELSEIF (MOD(KA,5).EQ.2) THEN
      FA=1.0D 1*(X(I)-X(I+1))**3
      ELSEIF (MOD(KA,5).EQ.3) THEN
      P=X(I+1)-X(I+2)
      FA=(SIN(P)/COS(P))**2
      ELSEIF (MOD(KA,5).EQ.4) THEN
      FA=X(I-1)**4
      ELSE
      FA=X(I+2)-1.0D 0
      ENDIF
      RETURN
   50 I=KA
      FA=(3.0D 0-2.0D 0*X(I))*X(I)+1.0D 0
      IF (I.GT.1) FA=FA-X(I-1)
      IF (I.LT.N) FA=FA-X(I+1)
      RETURN
   60 I=KA
      FA=(2.0D 0+5.0D 0*X(I)**2)*X(I)+1.0D 0
      DO 61 J=MAX(1,I-5),MIN(N,I+1)
      FA=FA+X(J)*(1.0D 0+X(J))
   61 CONTINUE
      RETURN
   70 I=(KA+1)/2
      IF (MOD(KA,2).EQ.1) THEN
      FA=X(I)+X(I+1)*((5.0D 0-X(I+1))*X(I+1)-2.0D 0)-1.3D 1
      ELSE
      FA=X(I)+X(I+1)*((1.0D 0+X(I+1))*X(I+1)-1.4D 1)-2.9D 1
      ENDIF
      RETURN
   80 I=MOD(KA,N/2)+1
      J=I+N/2
      M=5*N
      IF (KA.LE.M/2) THEN
      IA=1
      ELSE
      IA=2
      ENDIF
      IB=5-KA/(M/4)
      IC=MOD(KA,5)+1
      FA=(X(I)**IA-X(J)**IB)**IC
      RETURN
   90 I=2*((KA+5)/6)-1
      IF (MOD(KA,6).EQ.1) THEN
      FA=X(I)+3.0D 0*X(I+1)*(X(I+2)-1.0D 0)+X(I+3)**2-1.0D 0
      ELSEIF (MOD(KA,6).EQ.2) THEN
      FA=(X(I)+X(I+1))**2+(X(I+2)-1.0D 0)**2-X(I+3)-3.0D 0
      ELSEIF (MOD(KA,6).EQ.3) THEN
      FA=X(I)*X(I+1)-X(I+2)*X(I+3)
      ELSEIF (MOD(KA,6).EQ.4) THEN
      FA=2.0D 0*X(I)*X(I+2)+X(I+1)*X(I+3)-3.0D 0
      ELSEIF (MOD(KA,6).EQ.5) THEN
      FA=(X(I)+X(I+1)+X(I+2)+X(I+3))**2+(X(I)-1.0D 0)**2
      ELSE
      FA=X(I)*X(I+1)*X(I+2)*X(I+3)+(X(I+3)-1.0D 0)**2-1.0D 0
      ENDIF
      RETURN
  100 I=(KA+1)/2
      J=MOD(KA,2)
      IF (J.EQ.0) THEN
      FA=6.0D 0-EXP(2.0D 0*X(I))-EXP(2.0D 0*X(I+1))
      ELSEIF (I.EQ.1) THEN
      FA=4.0D 0-EXP(X(I))-EXP(X(I+1))
      ELSEIF (I.EQ.N) THEN
      FA=8.0D 0-EXP(3.0D 0*X(I-1))-EXP(3.0D 0*X(I))
      ELSE
      FA=8.0D 0-EXP(3.0D 0*X(I-1))-EXP(3.0D 0*X(I))+
     & 4.0D 0-EXP(X(I))-EXP(X(I+1))
      ENDIF
      RETURN
  110 I=(KA+1)/2
      IF (MOD(KA,2).EQ.1) THEN
      FA=1.0D 1*(2.0D 0*X(I)/(1.0D 0+X(I)**2)-X(I+1))
      ELSE
      FA=X(I)-1.0D 0
      ENDIF
      RETURN
  120 I=3*((KA+5)/6)-2
      IF (MOD(KA,6).EQ.1) THEN
      FA=1.0D 1*(X(I)**2-X(I+1))
      ELSEIF (MOD(KA,6).EQ.2) THEN
      FA=X(I+2)-1.0D 0
      ELSEIF (MOD(KA,6).EQ.3) THEN
      FA=(X(I+3)-1.0D 0)**2
      ELSEIF (MOD(KA,6).EQ.4) THEN
      FA=(X(I+4)-1.0D 0)**3
      ELSEIF (MOD(KA,6).EQ.5) THEN
      FA=X(I)**2*X(I+3)+SIN(X(I+3)-X(I+4))-1.0D 1
      ELSE
      FA=X(I+1)+(X(I+2)**2*X(I+3))**2-2.0D 1
      ENDIF
      RETURN
  130 I=3*((KA+6)/7)-2
      IF (MOD(KA,7).EQ.1) THEN
      FA=1.0D 1*(X(I)**2-X(I+1))
      ELSEIF (MOD(KA,7).EQ.2) THEN
      FA=1.0D 1*(X(I+1)**2-X(I+2))
      ELSEIF (MOD(KA,7).EQ.3) THEN
      FA=(X(I+2)-X(I+3))**2
      ELSEIF (MOD(KA,7).EQ.4) THEN
      FA=(X(I+3)-X(I+4))**2
      ELSEIF (MOD(KA,7).EQ.5) THEN
      FA=X(I)+X(I+1)**2+X(I+2)-3.0D 1
      ELSEIF (MOD(KA,7).EQ.6) THEN
      FA=X(I+1)-X(I+2)**2+X(I+3)-1.0D 1
      ELSE
      FA=X(I)*X(I+4)-1.0D 1
      ENDIF
      RETURN
  140 I=2*((KA+3)/4)-2
      L=MOD((KA-1),4)+1
      FA=-Y(L)
      DO 142 K=1,3
      A=DBLE(K*K)/DBLE(L)
      DO 141 J=1,4
      IF (X(I+J).EQ.0) X(I+J)=1.0D-16
      A=A*SIGN(1.0D 0,X(I+J))*ABS(X(I+J))**(DBLE(J)/DBLE(K*L))
  141 CONTINUE
      FA=FA+A
  142 CONTINUE
      RETURN
  150 I=2*((KA+3)/4)-2
      L=MOD((KA-1),4)+1
      FA=-Y(L)
      DO 152 K=1,3
      A=0.0D 0
      DO 151 J=1,4
      A=A+X(I+J)*(DBLE(J)/DBLE(K*L))
  151 CONTINUE
      FA=FA+EXP(A)*DBLE(K*K)/DBLE(L)
  152 CONTINUE
      RETURN
  160 I=2*((KA+3)/4)-2
      L=MOD((KA-1),4)+1
      FA=-Y(L)
      DO 161 J=1,4
      FA=FA+DBLE((1-2*MOD(J,2))*L*J*J)*SIN(X(I+J))+
     & DBLE(L*L*J)*COS(X(I+J))
  161 CONTINUE
      RETURN
  170 ALFA=0.5D 0
      IF (KA.EQ.1) THEN
      FA=ALFA-(1.0D 0-ALFA)*X(3)-X(1)*(1.0D 0+4.0D 0*X(2))
      ELSEIF(KA.EQ.2) THEN
      FA=-(2.0D 0-ALFA)*X(4)-X(2)*(1.0D 0+4.0D 0*X(1))
      ELSEIF(KA.EQ.N-1) THEN
      FA=ALFA*X(N-3)-X(N-1)*(1.0D 0+4.0D 0*X(N))
      ELSEIF (KA.EQ.N) THEN
      FA=ALFA*X(N-2)-(2.0D 0-ALFA)-X(N)*(1.0D 0+4.0D 0*X(N-1))
      ELSEIF (MOD(KA,2).EQ.1) THEN
      FA=ALFA*X(KA-2)-(1.0D 0-ALFA)*X(KA+2)-
     & X(KA)*(1.0D 0+4.0D 0*X(KA+1))
      ELSE
      FA=ALFA*X(KA-2)-(2.0D 0-ALFA)*X(KA+2)-
     & X(KA)*(1.0D 0+4.0D 0*X(KA-1))
      ENDIF
      RETURN
  180 IF (KA.LT.2) THEN
      FA=4.0D 0*(X(KA)-X(KA+1)**2)
      ELSEIF (KA.LT.N) THEN
      FA=8.0D 0*X(KA)*(X(KA)**2-X(KA-1))-2.0D 0*(1.0D 0-X(KA))+
     & 4.0D 0*(X(KA)-X(KA+1)**2)
      ELSE
      FA=8.0D 0*X(KA)*(X(KA)**2-X(KA-1))-2.0D 0*(1.0D 0-X(KA))
      ENDIF
      RETURN
  190 IF (KA.EQ.1) THEN
      FA=-2.0D 0*X(KA)**2+3.0D 0*X(KA)-2.0D 0*X(KA+1)+
     & 3.0D 0*X(N-4)-X(N-3)-X(N-2)+0.5D 0*X(N-1)-X(N)+1.0D 0
      ELSEIF (KA.LE.N-1) THEN
      FA=-2.0D 0*X(KA)**2+3.0D 0*X(KA)-X(KA-1)-2.0D 0*X(KA+1)+
     & 3.0D 0*X(N-4)-X(N-3)-X(N-2)+0.5D 0*X(N-1)-X(N)+1.0D 0
      ELSE
      FA=-2.0D 0*X(N)**2+3.0D 0*X(N)-X(N-1)+
     & 3.0D 0*X(N-4)-X(N-3)-X(N-2)+0.5D 0*X(N-1)-X(N)+1.0D 0
      ENDIF
      RETURN
  200 U=1.0D 0/DBLE(N+1)
      V=DBLE(KA)*U
      FA=2.0D 0*X(KA)+0.5D 0*U*U*(X(KA)+V+1.0D 0)**3+1.0D 0
      IF(KA.GT.1) FA=FA-X(KA-1)
      IF(KA.LT.N) FA=FA-X(KA+1)
      RETURN
  210 I=3*((KA+6)/7)-2
      IF (MOD(KA,7).EQ.1) THEN
      FA=1.0D 1*(X(I)**2-X(I+1))
      ELSEIF (MOD(KA,7).EQ.2) THEN
      FA=X(I+1)+X(I+2)-2.0D 0
      ELSEIF (MOD(KA,7).EQ.3) THEN
      FA=X(I+3)-1.0D 0
      ELSEIF (MOD(KA,7).EQ.4) THEN
      FA=X(I+4)-1.0D 0
      ELSEIF (MOD(KA,7).EQ.5) THEN
      FA=X(I)+3.0D 0*X(I+1)
      ELSEIF (MOD(KA,7).EQ.6) THEN
      FA=X(I+2)+X(I+3)-2.0D 0*X(I+4)
      ELSE
      FA=1.0D 1*(X(I+1)**2-X(I+4))
      ENDIF
      RETURN
  220 I=KA/2
      IF (KA.EQ.1) THEN
      FA=X(KA)-1.0D 0
      ELSE IF (MOD(KA,2).EQ.0) THEN
      FA=1.0D 1*(X(I)**2-X(I+1))
      ELSE
      FA=2.0D 0*EXP(-(X(I)-X(I+1))**2)+
     & EXP(-2.0D 0*(X(I+1)-X(I+2))**2)
      ENDIF
      RETURN
      END
* SUBROUTINE TAGU15                ALL SYSTEMS                92/12/01
C PORTABILITY : ALL SYSTEMS
C 92/12/01 RA : ORIGINAL VERSION
*
* PURPOSE :
*  GRADIENTS OF PARTIAL FUNCTIONS IN THE SUM OF SQUARES.
*
* PARAMETERS :
*  II  N  NUMBER OF VARIABLES.
*  II  KA  INDEX OF THE GIVEN PARTIAL FUNCTION.
*  RI  X(N)  VECTOR OF VARIABLES.
*  RO  GA(N)  GRADIENT OF THE KA-TH PARTIAL FUNCTION AT THE POINT X.
*  II  NEXT  NUMBER OF THE SELECTED TEST PROBLEM.
*
      SUBROUTINE TAGU15(N,KA,X,GA,NEXT)
      INTEGER N,KA,NEXT
      REAL*8 X(N),GA(N)
      REAL*8 A,B,C,D,Q,R,E,ALFA,U,V
      INTEGER I,J,K,L,M,IA,IB,IC
      REAL*8 Y(20)
      COMMON /EMPR15/ Y
      GOTO(10,20,30,40,50,60,70,80,90,100,110,120,130,140,150,160,
     & 170,180,190,200,210,220),NEXT
   10 I=(KA+1)/2
      IF (MOD(KA,2).EQ.1) THEN
      GA(I)=2.0D 1*X(I)
      GA(I+1)=-1.0D 1
      ELSE
      GA(I)=1.0D 0
      ENDIF
      RETURN
   20 I=2*((KA+5)/6)
      A=SQRT(9.0D 1)
      B=SQRT(1.0D 1)
      IF (MOD(KA,6).EQ.1) THEN
      GA(I-1)=2.0D 1 *X(I-1)
      GA(I)=-1.0D 1
      ELSEIF (MOD(KA,6).EQ.2) THEN
      GA(I-1)=1.0D 0
      ELSEIF (MOD(KA,6).EQ.3) THEN
      GA(I+1)=2.0D 0*A*X(I+1)
      GA(I+2)=-A
      ELSEIF (MOD(KA,6).EQ.4) THEN
      GA(I+1)=1.0D 0
      ELSEIF (MOD(KA,6).EQ.5) THEN
      GA(I)=B
      GA(I+2)=B
      ELSE
      GA(I)=1.0D 0/B
      GA(I+2)=-1.0D 0/B
      ENDIF
      RETURN
   30 I=2*((KA+3)/4)
      A=SQRT(5.0D 0)
      B=SQRT(1.0D 1)
      IF (MOD(KA,4).EQ.1) THEN
      GA(I-1)=1.0D 0
      GA(I)=1.0D 1
      ELSEIF (MOD(KA,4).EQ.2) THEN
      GA(I+1)=A
      GA(I+2)=-A
      ELSEIF (MOD(KA,4).EQ.3) THEN
      C=X(I)-2.0D 0*X(I+1)
      GA(I)=2.0D 0*C
      GA(I+1)=-4.0D 0*C
      ELSE
      C=X(I-1)-X(I+2)
      D=2.0D 0*B*C
      GA(I-1)=D
      GA(I+2)=-D
      ENDIF
      RETURN
   40 I=2*((KA+4)/5)
      IF (MOD(KA,5).EQ.1) THEN
      A=EXP(X(I-1))
      B=A-X(I)
      C=2.0D 0*B
      GA(I-1)=C*A
      GA(I)=-C
      ELSEIF (MOD(KA,5).EQ.2) THEN
      A=X(I)-X(I+1)
      B=3.0D 1*A**2
      GA(I)=B
      GA(I+1)=-B
      ELSEIF (MOD(KA,5).EQ.3) THEN
      C=X(I+1)-X(I+2)
      Q=SIN(C)/COS(C)
      R=COS(C)
      D=2.0D 0*Q/R**2
      GA(I+1)=D
      GA(I+2)=-D
      ELSEIF (MOD(KA,5).EQ.4) THEN
      GA(I-1)=4.0D 0*X(I-1)**3
      ELSE
      GA(I+2)=1.0D 0
      ENDIF
      RETURN
   50 I=KA
      GA(I)=3.0D 0-4.0D 0*X(I)
      IF (I.GT.1) GA(I-1)=-1.0D 0
      IF (I.LT.N) GA(I+1)=-1.0D 0
      RETURN
   60 I=KA
      DO 61 J=MAX(1,I-5),MIN(N,I+1)
      GA(J)=1.0D 0+2.0D 0*X(J)
   61 CONTINUE
      GA(I)=GA(I)+2.0D 0+1.5D 1*X(I)**2
      RETURN
   70 I=(KA+1)/2
      IF (MOD(KA,2).EQ.1) THEN
      GA(I)=1.0D 0
      GA(I+1)=1.0D 1*X(I+1)-3.0D 0*X(I+1)**2-2.0D 0
      ELSE
      GA(I)=1.0D 0
      GA(I+1)=2.0D 0*X(I+1)+3.0D 0*X(I+1)**2-1.4D 1
      ENDIF
      RETURN
   80 I=MOD(KA,N/2)+1
      J=I+N/2
      M=5*N
      IF (KA.LE.M/2) THEN
      IA=1
      ELSE
      IA=2
      ENDIF
      IB=5.0D 0-KA/(M/4)
      IC=MOD(KA,5)+1
      A=DBLE(IA)
      B=DBLE(IB)
      C=DBLE(IC)
      E=C*(X(I)**IA-X(J)**IB)**(IC-1)
      GA(I)= E*A*X(I)**(IA-1.0D 0)
      GA(J)=-E*B*X(J)**(IB-1.0D 0)
      RETURN
   90 I=2*((KA+5)/6)-1
      IF (MOD(KA,6).EQ.1) THEN
      GA(I)=1.0D 0
      GA(I+1)=3.0D 0*(X(I+2)-1.0D 0)
      GA(I+2)=3.0D 0*X(I+1)
      GA(I+3)=2.0D 0*X(I+3)
      ELSEIF (MOD(KA,6).EQ.2) THEN
      GA(I)=2.0D 0*(X(I)+X(I+1))
      GA(I+1)=2.0D 0*(X(I)+X(I+1))
      GA(I+2)=2.0D 0*(X(I+2)-1.0D 0)
      GA(I+3)=-1.0D 0
      ELSEIF (MOD(KA,6).EQ.3) THEN
      GA(I)=X(I+1)
      GA(I+1)=X(I)
      GA(I+2)=-X(I+3)
      GA(I+3)=-X(I+2)
      ELSEIF (MOD(KA,6).EQ.4) THEN
      GA(I)=2.0D 0*X(I+2)
      GA(I+1)=X(I+3)
      GA(I+2)=2.0D 0*X(I)
      GA(I+3)=X(I+1)
      ELSEIF (MOD(KA,6).EQ.5) THEN
      GA(I)=2.0D 0*(X(I)+X(I+1)+X(I+2)+X(I+3))+2.0D 0*(X(I)-1.0D 0)
      GA(I+1)=2.0D 0*(X(I)+X(I+1)+X(I+2)+X(I+3))
      GA(I+2)=2.0D 0*(X(I)+X(I+1)+X(I+2)+X(I+3))
      GA(I+3)=2.0D 0*(X(I)+X(I+1)+X(I+2)+X(I+3))
      ELSE
      GA(I)=X(I+1)*X(I+2)*X(I+3)
      GA(I+1)=X(I)*X(I+2)*X(I+3)
      GA(I+2)=X(I)*X(I+1)*X(I+3)
      GA(I+3)=X(I)*X(I+1)*X(I+2)+2.0D 0*(X(I+3)-1.0D 0)
      ENDIF
      RETURN
  100 IF (N.GE.2) THEN
      I=(KA+1)/2
      J=MOD(KA,2)
      IF (J.EQ.0) THEN
      GA(I)=-2.0D 0*EXP(2.0D 0*X(I))
      GA(I+1)=-2.0D 0*EXP(2.0D 0*X(I+1))
      ELSEIF (I.EQ.1) THEN
      GA(I)=-EXP(X(I))
      GA(I+1)=-EXP(X(I+1))
      ELSEIF (I.EQ.N) THEN
      GA(I-1)=-3.0D 0*EXP(3.0D 0*X(I-1))
      GA(I)=-3.0D 0*EXP(3.0D 0*X(I))
      ELSE
      GA(I-1)=-3.0D 0*EXP(3.0D 0*X(I-1))
      GA(I)=-3.0D 0*EXP(3.0D 0*X(I))-EXP(X(I))
      GA(I+1)=-EXP(X(I+1))
      ENDIF
      ENDIF
      RETURN
  110 I=(KA+1)/2
      IF (MOD(KA,2).EQ.1) THEN
      GA(I)=2.0D 1*(1.0D 0-X(I)**2)/(1.0D 0+X(I)**2)**2
      GA(I+1)=-1.0D 1
      ELSE
      GA(I)=1.0D 0
      ENDIF
      RETURN
  120 I=3*((KA+5)/6)-2
      IF (MOD(KA,6).EQ.1) THEN
      GA(I)=2.0D 1*X(I)
      GA(I+1)=-1.0D 1
      ELSEIF (MOD(KA,6).EQ.2) THEN
      GA(I+2)=1.0D 0
      ELSEIF (MOD(KA,6).EQ.3) THEN
      GA(I+3)=2.0D 0*(X(I+3)-1.0D 0)
      ELSEIF (MOD(KA,6).EQ.4) THEN
      GA(I+4)=3.0D 0*(X(I+4)-1.0D 0)**2
      ELSEIF (MOD(KA,6).EQ.5) THEN
      GA(I)=2.0D 0*X(I)*X(I+3)
      GA(I+3)=X(I)**2+COS(X(I+3)-X(I+4))
      GA(I+4)=-COS(X(I+3)-X(I+4))
      ELSE
      GA(I+1)=1.0D 0
      GA(I+2)=4.0D 0*X(I+2)*(X(I+2)*X(I+3))**2
      GA(I+3)=2.0D 0*X(I+2)**4*X(I+3)
      ENDIF
      RETURN
  130 I=3*((KA+6)/7)-2
      IF (MOD(KA,7).EQ.1) THEN
      GA(I)=2.0D 1*X(I)
      GA(I+1)=-1.0D 1
      ELSEIF (MOD(KA,7).EQ.2) THEN
      GA(I+1)=2.0D 1*X(I+1)
      GA(I+2)=-1.0D 1
      ELSEIF (MOD(KA,7).EQ.3) THEN
      GA(I+2)= 2.0D 0*(X(I+2)-X(I+3))
      GA(I+3)=-2.0D 0*(X(I+2)-X(I+3))
      ELSEIF (MOD(KA,7).EQ.4) THEN
      GA(I+3)= 2.0D 0*(X(I+3)-X(I+4))
      GA(I+4)=-2.0D 0*(X(I+3)-X(I+4))
      ELSEIF (MOD(KA,7).EQ.5) THEN
      GA(I)=1.0D 0
      GA(I+1)=2.0D 0*X(I+1)
      GA(I+2)=1.0D 0
      ELSEIF (MOD(KA,7).EQ.6) THEN
      GA(I+1)=1.0D 0
      GA(I+2)=-2.0D 0*X(I+2)
      GA(I+3)=1.0D 0
      ELSE
      GA(I)=X(I+4)
      GA(I+4)=X(I)
      ENDIF
      RETURN
  140 I=2*((KA+3)/4)-2
      L=MOD((KA-1),4)+1
      DO 141 J=1,4
      GA(I+J)=0.0D 0
  141 CONTINUE
      DO 144 K=1,3
      A=DBLE(K*K)/DBLE(L)
      DO 142 J=1,4
      A=A*SIGN(1.0D 0,X(I+J))*ABS(X(I+J))**(DBLE(J)/DBLE(K*L))
  142 CONTINUE
      DO 143 J=1,4
      GA(I+J)=GA(I+J)+(DBLE(J)/DBLE(K*L))*A/X(I+J)
  143 CONTINUE
  144 CONTINUE
      RETURN
  150 I=2*((KA+3)/4)-2
      L=MOD((KA-1),4)+1
      DO 151 J=1,4
      GA(I+J)=0.0D 0
  151 CONTINUE
      DO 154 K=1,3
      A=0.0D 0
      DO 152 J=1,4
      A=A+X(I+J)*(DBLE(J)/DBLE(K*L))
  152 CONTINUE
      A=EXP(A)*DBLE(K*K)/DBLE(L)
      DO 153 J=1,4
      GA(I+J)=GA(I+J)+A*(DBLE(J)/DBLE(K*L))
  153 CONTINUE
  154 CONTINUE
      RETURN
  160 I=2*((KA+3)/4)-2
      L=MOD((KA-1),4)+1
      DO 161 J=1,4
      GA(I+J)=DBLE((1-2*MOD(J,2))*L*J*J)*COS(X(I+J))-
     & DBLE(L*L*J)*SIN(X(I+J))
  161 CONTINUE
      RETURN
  170 ALFA=0.5D 0
      IF (KA.EQ.1) THEN
      GA(1)=-1.0D 0-4.0D 0*X(2)
      GA(2)=-4.0D 0*X(1)
      GA(3)=ALFA-1.0D 0
      ELSEIF(KA.EQ.2) THEN
      GA(1)=-4.0D 0*X(2)
      GA(2)=-1.0D 0-4.0D 0*X(1)
      GA(4)=-2.0D 0+ALFA
      ELSEIF(KA.EQ.N-1) THEN
      GA(N-3)=ALFA
      GA(N-1)=-1.0D 0-4.0D 0*X(N)
      GA(N)=-4.0D 0*X(N-1)
      ELSEIF (KA.EQ.N) THEN
      GA(N-2)=ALFA
      GA(N-1)=-4.0D 0*X(N)
      GA(N)=-1.0D 0-4.0D 0*X(N-1)
      ELSEIF (MOD(KA,2).EQ.1) THEN
      GA(KA-2)=ALFA
      GA(KA)=-1.0D 0-4.0D 0*X(KA+1)
      GA(KA+1)=-4.0D 0*X(KA)
      GA(KA+2)=-1.0D 0+ALFA
      ELSE
      GA(KA-2)=ALFA
      GA(KA-1)=-4.0D 0*X(KA)
      GA(KA)=-1.0D 0-4.0D 0*X(KA-1)
      GA(KA+2)=-2.0D 0+ALFA
      ENDIF
      RETURN
  180 IF (KA.LT.2) THEN
      GA(KA)=4.0D 0
      GA(KA+1)=-8.0D 0*X(KA+1)
      ELSE IF (KA.LT.N) THEN
      GA(KA-1)=-8.0D 0*X(KA)
      GA(KA)=24.0D 0*X(KA)**2-8.0D 0*X(KA-1)+6.0D 0
      GA(KA+1)=-8.0D 0*X(KA+1)
      ELSE
      GA(KA-1)=-8.0D 0*X(KA)
      GA(KA)=24.0D 0*X(KA)**2-8.0D 0*X(KA-1)+2.0D 0
      ENDIF
      RETURN
  190 IF (KA.EQ.1) THEN
      GA(N-4)=3.0D 0
      GA(N-3)=-1.0D 0
      GA(N-2)=-1.0D 0
      GA(N-1)=0.50D 0
      GA(N)=-1.0D 0
      GA(KA)=-4.0D 0*X(KA)+3.0D 0
      GA(KA+1)=-2.0D 0
      ELSEIF (KA.LE.N-1) THEN
      GA(KA-1)=0.0D 0
      GA(KA)=0.0D 0
      GA(KA+1)=0.0D 0
      GA(N-4)=3.0D 0
      GA(N-3)=-1.0D 0
      GA(N-2)=-1.0D 0
      GA(N-1)=0.50D 0
      GA(N)=-1.0D 0
      GA(KA-1)=GA(KA-1)-1.0D 0
      GA(KA)=GA(KA)-4.0D 0*X(KA)+3.0D 0
      GA(KA+1)=GA(KA+1)-2.0D 0
      ELSE
      GA(N-4)=3.0D 0
      GA(N-3)=-1.0D 0
      GA(N-2)=-1.0D 0
      GA(N-1)=0.50D 0
      GA(N)=-4.0D 0*X(N)+2.0D 0
      ENDIF
      RETURN
  200 U=1.0D 0/DBLE(N+1)
      V=DBLE(KA)*U
      GA(KA)=2.0D 0+1.5D 0*U**2*(X(KA)+V+1.0D 0)**2
      IF(KA.GT.1) GA(KA-1)=-1.0D 0
      IF(KA.LT.N) GA(KA+1)=-1.0D 0
      RETURN
  210 I=3*((KA+6)/7)-2
      IF (MOD(KA,7).EQ.1) THEN
      GA(I)=2.0D 1*X(I)
      GA(I+1)=-1.0D 1
      ELSEIF (MOD(KA,7).EQ.2) THEN
      GA(I+1)=1.0D 0
      GA(I+2)=1.0D 0
      ELSEIF (MOD(KA,7).EQ.3) THEN
      GA(I+3)=1.0D 0
      ELSEIF (MOD(KA,7).EQ.4) THEN
      GA(I+4)=1.0D 0
      ELSEIF (MOD(KA,7).EQ.5) THEN
      GA(I)=1.0D 0
      GA(I+1)=3.0D 0
      ELSEIF (MOD(KA,7).EQ.6) THEN
      GA(I+2)=1.0D 0
      GA(I+3)=1.0D 0
      GA(I+4)=-2.0D 0
      ELSE
      GA(I+1)=2.0D 1*X(I+1)
      GA(I+4)=-1.0D 1
      ENDIF
      RETURN
  220 I=KA/2
      IF (KA.EQ.1) THEN
      GA(KA)=1.0D 0
      ELSE IF (MOD(KA,2).EQ.0) THEN
      GA(I)=2.0D 1*X(I)
      GA(I+1)=-1.0D 1
      ELSE
      A=2.0D 0*EXP(-(X(I)-X(I+1))**2)
      B=EXP(-2.0D 0*(X(I+1)-X(I+2))**2)
      GA(I)= -2.0D 0*(X(I)-X(I+1))*A
      GA(I+1)=2.0D 0*(X(I)-X(I+1))*A-4.0D 0*(X(I+1)-X(I+2))*B
      GA(I+2)=4.0D 0*(X(I+1)-X(I+2))*B
      ENDIF
      RETURN
      END
