* SUBROUTINE TIUB18 ALL SYSTEMS 92/12/01 C PORTABILITY : ALL SYSTEMS C 92/12/01 LU : ORIGINAL VERSION * * PURPOSE : * INITIAL VALUES OF THE VARIABLES FOR NONLINEAR APPROXIMATION. * UNCONSTRAINED AND DENSE VERSION. * * PARAMETERS : * II N NUMBER OF VARIABLES. * IO NA NUMBER OF APPROXIMATED FUNCTIONS. * II MA NUMBER OF ELEMENTS OF THE SPARSE MATRIX. * RO X(N) VECTOR OF VARIABLES. * IO IA(NA+1) POINTERS OF THE DIAGONAL ELEMENTS OF THE HESSIAN MATRIX. * IO JA(MA) INDICES OF THE NONZERO ELEMENTS OF THE HESSIAN MATRIX IN * THE PACKED ROW. * RO FMIN LOWER BOUND FOR VALUE OF THE OBJECTIVE FUNCTION. * RO XMAX MAXIMUM STEPSIZE. * II NEXT NUMBER OF THE TEST PROBLEM. * IO IERR ERROR INDICATOR. * SUBROUTINE TIUB18(N,NA,MA,X,IA,JA,FMIN,XMAX,NEXT,IERR) INTEGER N,NA,MA,NEXT,IEXT,IERR INTEGER IA(NA+1),JA(*) REAL*8 X(N),FMIN,XMAX,PAR INTEGER I,J,K,L,M,I1,I2,J1,J2,N1,ND REAL*8 T,S COMMON /EMPR18/ PAR,M FMIN=0.0D 0 XMAX=1.0D 4 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,230,240,250,260,270,280,290,300,320, & 310,420,430,440,450,470,480,490,500,520,530,540,550), & NEXT 10 IF (N.LT.4) GO TO 999 N=N-MOD(N,2) NA=N MA=0 IA(1)=1 DO 11 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 11 CONTINUE RETURN 20 IF (N.LT.5) GO TO 999 N=N-MOD(N,2) NA=N MA=0 IA(1)=1 DO 21 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 MA=MA+1 JA(MA)=1 IF (I.GT.3) THEN MA=MA+1 JA(MA)=I-2 ENDIF IF (I.GT.2) THEN MA=MA+1 JA(MA)=I-1 ENDIF IF (I.GT.1) THEN MA=MA+1 JA(MA)=I ENDIF IF (I.EQ.1) THEN MA=MA+1 JA(MA)=I+1 ENDIF IF (I.LT.N-1) THEN MA=MA+1 JA(MA)=I+2 ENDIF IA(I+1)=MA+1 21 CONTINUE RETURN 30 IF (N.LT.5) GO TO 999 N=N-MOD(N,5) NA=N MA=0 IA(1)=1 DO 31 I=1,N X(I)=1.0D 0/DBLE(N) J=(I-1)/5*5 MA=MA+5 JA(MA-4)=J+1 JA(MA-3)=J+2 JA(MA-2)=J+3 JA(MA-1)=J+4 JA(MA)=J+5 IA(I+1)=MA+1 31 CONTINUE RETURN 40 IF (N.LT.3) GO TO 999 DO 41 I=1,N X(I)=0.0D 0 41 CONTINUE 42 NA=N MA=0 IA(1)=1 DO 43 I=1,N 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 43 CONTINUE RETURN 50 IF (N.LT.3) GO TO 999 IF (MOD(N,2).NE.1) N=N-1 NA=N MA=0 IA(1)=1 DO 51 I=1,N X(I)=1.0D 0 IF (MOD(I,2).EQ.1) THEN IF(I.GT.1) THEN MA=MA+2 JA(MA-1)=I-2 JA(MA)=I-1 ENDIF MA=MA+1 JA(MA)=I IF(I.LT.N) THEN MA=MA+2 JA(MA-1)=I+1 JA(MA)=I+2 ENDIF ELSE MA=MA+3 JA(MA-2)=I-1 JA(MA-1)=I JA(MA)=I+1 ENDIF IA(I+1)=MA+1 51 CONTINUE RETURN 60 IF (N.LT.3) GO TO 999 DO 61 I=1,N X(I)=-1.0D 0 61 CONTINUE GO TO 42 70 IF (N.LT.3) GO TO 999 DO 71 I=1,N X(I)=1.2D 1 71 CONTINUE XMAX=1.0D 3 GO TO 42 80 IF (N.LT.5) GO TO 999 NA=N MA=0 IA(1)=1 DO 81 I=1,N X(I)=-2.0D 0 IF(I.GT.2) THEN MA=MA+1 JA(MA)=I-2 ENDIF 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 IF(I.LT.N-1) THEN MA=MA+1 JA(MA)=I+2 ENDIF IA(I+1)=MA+1 81 CONTINUE RETURN 90 IF (N.LT.7) GO TO 999 NA=N MA=0 IA(1)=1 DO 91 I=1,N X(I)=-3.0D 0 IF(I.GT.3) THEN MA=MA+1 JA(MA)=I-3 ENDIF IF(I.GT.2) THEN MA=MA+1 JA(MA)=I-2 ENDIF 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 IF(I.LT.N-1) THEN MA=MA+1 JA(MA)=I+2 ENDIF IF(I.LT.N-2) THEN MA=MA+1 JA(MA)=I+3 ENDIF IA(I+1)=MA+1 91 CONTINUE XMAX=1.0D 1 RETURN 100 IF (N.LT.7) GO TO 999 NA=N MA=0 IA(1)=1 DO 101 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 101 CONTINUE RETURN 110 IF (N.LT.2) GO TO 999 N=N-MOD(N,2) NA=N MA=0 IA(1)=1 DO 111 I=1,N IF(MOD(I,2).EQ.1) THEN X(I)=9.0D 1 MA=MA+2 JA(MA-1)=I JA(MA)=I+1 ELSE X(I)=6.0D 1 MA=MA+2 JA(MA-1)=I-1 JA(MA)=I ENDIF IA(I+1)=MA+1 111 CONTINUE RETURN 120 IF (N.LT.4) GO TO 999 N=N-MOD(N,4) NA=N MA=0 IA(1)=1 DO 121 I=1,N IF (MOD(I,4).EQ.1) THEN X(I)=3.0D 0 MA=MA+2 JA(MA-1)=I JA(MA)=I+1 ELSE IF (MOD(I,4).EQ.2) THEN X(I)=-1.0D 0 MA=MA+2 JA(MA-1)=I+1 JA(MA)=I+2 ELSE IF (MOD(I,4).EQ.3) THEN X(I)=0.0D 0 MA=MA+2 JA(MA-1)=I-1 JA(MA)=I ELSE X(I)=1.0D 0 MA=MA+2 JA(MA-1)=I-3 JA(MA)=I ENDIF IA(I+1)=MA+1 121 CONTINUE XMAX=1.0D 2 RETURN 130 IF (N.LT.4) GO TO 999 N=N-MOD(N,4) NA=N MA=0 IA(1)=1 DO 131 I=1,N IF (MOD(I,4).EQ.1) THEN X(I)=1.0D 0 MA=MA+2 JA(MA-1)=I JA(MA)=I+1 ELSE IF (MOD(I,4).EQ.2) THEN X(I)=2.0D 0 MA=MA+2 JA(MA-1)=I JA(MA)=I+1 ELSE IF (MOD(I,4).EQ.3) THEN X(I)=2.0D 0 MA=MA+2 JA(MA-1)=I JA(MA)=I+1 ELSE X(I)=2.0D 0 MA=MA+1 JA(MA)=I ENDIF IA(I+1)=MA+1 131 CONTINUE XMAX=1.0D 1 RETURN 140 IF (N.LT.3) GO TO 999 DO 141 I=1,N X(I)=-1.0D 0 141 CONTINUE GO TO 42 150 IF (N.LT.7) GO TO 999 NA=N MA=0 IA(1)=1 DO 152 I=1,5 X(I)=-1.0D 0 DO 151 K=1,I+1 MA=MA+1 JA(MA)=K 151 CONTINUE IA(I+1)=MA+1 152 CONTINUE DO 154 I=6,N-1 X(I)=-1.0D 0 DO 153 K=I-5,I+1 MA=MA+1 JA(MA)=K 153 CONTINUE IA(I+1)=MA+1 154 CONTINUE X(N)=-1.0D 0 DO 155 K=N-5,N MA=MA+1 JA(MA)=K 155 CONTINUE IA(N+1)=MA+1 RETURN 160 IF (N.LT.2) GO TO 999 N=N-MOD(N,2) NA=N DO 161 I=1,N IF (MOD(I,2).EQ.1) THEN X(I)=0.0D 0 ELSE X(I)=1.0D 0 ENDIF 161 CONTINUE MA=1 DO 163 I=1,N-1,2 IA(I)=2*I-1 IA(I+1)=2*I+1 DO 162 J=1,2 JA(MA)=I MA=MA+1 JA(MA)=I+1 MA=MA+1 162 CONTINUE 163 CONTINUE IA(N+1)=MA MA=MA-1 RETURN 170 IF (N.LT.4) GO TO 999 N=N-MOD(N,4) NA=N IA(1)=1 J=0 DO 171 I=2,N,2 X(I-1)=-3.0D 0 X(I)=-1.0D 0 IA(I)=IA(I-1)+2 IA(I+1)=IA(I)+3 MA=IA(I-1)+4 JA(MA-4)=I-1 JA(MA-3)=I IF (J.EQ.0) THEN JA(MA-2)=I-1 JA(MA-1)=I JA(MA)=I+2 J=1 ELSE JA(MA-2)=I-2 JA(MA-1)=I-1 JA(MA)=I J=0 ENDIF 171 CONTINUE RETURN 190 IF (N.LT.3) GO TO 999 DO 191 I=1,N X(I)=DBLE(I)/DBLE(N+1) X(I)=X(I)*(X(I)-1.0D 0) 191 CONTINUE GO TO 42 310 IF (N.LT.3) GO TO 999 DO 311 I=1,N X(I)=5.0D 0*MIN(DBLE(I)/DBLE(N+1),1.0D 0-DBLE(I)/DBLE(N+1)) 311 CONTINUE XMAX=1.0D 4 GO TO 42 200 IF (N.LT.3) GO TO 999 DO 201 I=1,N X(I)=1.0D 1 201 CONTINUE GO TO 42 240 IF (N.LT.16) GO TO 999 M=INT(SQRT(DBLE(N))) PAR=6.7D 0/DBLE(M+1)**2 N=M*M K=0 DO 242 J=1,M DO 241 I=1,M K=K+1 X(K)=0.0D 0 241 CONTINUE 242 CONTINUE GO TO 263 300 IF (N.LT.16) GO TO 999 M=INT(SQRT(DBLE(N))) N=M*M PAR=500.0D 0 K=0 DO 302 J=1,M DO 301 I=1,M K=K+1 X(K)=0.0D 0 301 CONTINUE 302 CONTINUE 303 NA=N MA=0 IA(1)=1 K=0 DO 305 J=1,M DO 304 I=1,M K=K+1 IF (J.GT.2) THEN MA=MA+1 JA(MA)=K-M-M ENDIF IF (J.GT.1) THEN IF (I.GT.1) THEN MA=MA+1 JA(MA)=K-M-1 ENDIF MA=MA+1 JA(MA)=K-M IF (I.LT.M) THEN MA=MA+1 JA(MA)=K-M+1 ENDIF ENDIF IF (I.GT.1) THEN IF (I.GT.2) THEN MA=MA+1 JA(MA)=K-2 ENDIF MA=MA+1 JA(MA)=K-1 ENDIF MA=MA+1 JA(MA)=K IF (I.LT.M) THEN MA=MA+1 JA(MA)=K+1 IF (I.LT.M-1) THEN MA=MA+1 JA(MA)=K+2 ENDIF ENDIF IF (J.LT.M) THEN IF (I.GT.1) THEN MA=MA+1 JA(MA)=K+M-1 ENDIF MA=MA+1 JA(MA)=K+M IF (I.LT.M) THEN MA=MA+1 JA(MA)=K+M+1 ENDIF ENDIF IF (J.LT.M-1) THEN MA=MA+1 JA(MA)=K+M+M ENDIF IA(K+1)=MA+1 304 CONTINUE 305 CONTINUE RETURN 320 IF (N.LT.3) GO TO 999 DO 321 I=1,N X(I)=5.0D 0*MIN(DBLE(I)/DBLE(N+1),1.0D 0-DBLE(I)/DBLE(N+1)) 321 CONTINUE GO TO 42 210 IF (N.LT.3) GO TO 999 DO 211 I=1,N X(I)=1.0D 0 211 CONTINUE PAR=1.0D 1 GO TO 42 180 IF (N.LT.3) GO TO 999 DO 181 I=1,N X(I)=1.5D 0 181 CONTINUE XMAX=1.0D 0 GO TO 42 290 IF (N.LT.16) GO TO 999 M=INT(SQRT(DBLE(N))) N=M*M PAR=500.0D 0/DBLE(M+2)**4 K=0 DO 292 J=1,M DO 291 I=1,M K=K+1 X(K)=0.0D 0 291 CONTINUE 292 CONTINUE GO TO 303 270 IF (N.LT.16) GO TO 999 M=INT(SQRT(DBLE(N))) PAR=5.0D 1/DBLE(M+1) N=M*M K=0 DO 272 J=1,M DO 271 I=1,M K=K+1 X(K)=1.0D 0-DBLE(I)*DBLE(J)/DBLE(M+1)**2 271 CONTINUE 272 CONTINUE GO TO 263 250 IF (N.LT.16) GO TO 999 M=INT(SQRT(DBLE(N))) PAR=1.0D 0/DBLE(M+1)**2 N=M*M K=0 DO 252 J=1,M DO 251 I=1,M K=K+1 X(K)=-1.0D 0 251 CONTINUE 252 CONTINUE GO TO 263 280 IF (N.LT.16) GO TO 999 M=INT(SQRT(DBLE(N))) PAR=1.0D 0/DBLE(M+1) N=M*M K=0 DO 282 J=1,M DO 281 I=1,M K=K+1 X(K)=0.0D 0 281 CONTINUE 282 CONTINUE GO TO 263 260 IF (N.LT.16) GO TO 999 M=INT(SQRT(DBLE(N))) PAR=1.0D 0/DBLE(M+1)**2 N=M*M K=0 DO 262 J=1,M DO 261 I=1,M K=K+1 X(K)=0.0D 0 261 CONTINUE 262 CONTINUE 263 NA=N MA=0 IA(1)=1 K=0 DO 265 J=1,M DO 264 I=1,M K=K+1 IF (J.GT.1) THEN MA=MA+1 JA(MA)=K-M ENDIF IF (I.GT.1) THEN MA=MA+1 JA(MA)=K-1 ENDIF MA=MA+1 JA(MA)=K IF (I.LT.M) THEN MA=MA+1 JA(MA)=K+1 ENDIF IF (J.LT.M) THEN MA=MA+1 JA(MA)=K+M ENDIF IA(K+1)=MA+1 264 CONTINUE 265 CONTINUE RETURN 220 IF (N.LT.5) GO TO 999 PAR=5.0D 2/DBLE(N+2) NA=N MA=0 IA(1)=1 DO 221 I=1,N X(I)=((DBLE(I)+0.5D 0)/DBLE(N+2)-0.5D 0)**2 IF (I.GT.2) THEN MA=MA+1 JA(MA)=I-2 ENDIF 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 IF (I.LT.N-1) THEN MA=MA+1 JA(MA)=I+2 ENDIF IA(I+1)=MA+1 221 CONTINUE RETURN 230 IF (N.LT.10) GO TO 999 N=N-MOD(N,2) M=N/2 PAR=5.0D 2 NA=N MA=0 IA(1)=1 DO 231 I=1,M K=I+M X(I)=(DBLE(I)/DBLE(M+1)-0.5D 0)**2 IF (I.GT.2) THEN MA=MA+1 JA(MA)=I-2 ENDIF IF (I.GT.1) THEN MA=MA+1 JA(MA)=I-1 ENDIF MA=MA+1 JA(MA)=I IF (I.LT.M) THEN MA=MA+1 JA(MA)=I+1 ENDIF IF (I.LT.M-1) THEN MA=MA+1 JA(MA)=I+2 ENDIF IF(I.GT.1) THEN MA=MA+1 JA(MA)=K-1 ENDIF MA=MA+1 JA(MA)=K IF(I.LT.M) THEN MA=MA+1 JA(MA)=K+1 ENDIF IA(I+1)=MA+1 231 CONTINUE DO 232 I=M+1,N K=I-M X(I)=DBLE(K)/DBLE(M+1)-0.5D 0 IF (K.GT.1) THEN MA=MA+1 JA(MA)=K-1 ENDIF MA=MA+1 JA(MA)=K IF (K.LT.M) THEN MA=MA+1 JA(MA)=K+1 ENDIF IF(K.GT.1) THEN MA=MA+1 JA(MA)=I-1 ENDIF MA=MA+1 JA(MA)=I IF(K.LT.M) THEN MA=MA+1 JA(MA)=I+1 ENDIF IA(I+1)=MA+1 232 CONTINUE RETURN 410 IF (N.LT.2) GO TO 999 N1=N-1 DO 411 I=1,N1 X(I)=-1.2D 0 411 CONTINUE X(N)=-1.0D 0 412 NA=N MA=0 IA(1)=1 DO 413 I=1,N IF (I.GT.1) THEN MA=MA+1 JA(MA)=I-1 ENDIF MA=MA+1 JA(MA)=I IA(I+1)=MA+1 413 CONTINUE RETURN 420 IF (N.LT.3) GO TO 999 DO 421 I=1,N X(I)=2.0D 0 421 CONTINUE NA=N MA=0 IA(1)=1 DO 422 I=1,N IF (I.EQ.N) THEN MA=MA+1 JA(MA)=1 MA=MA+1 JA(MA)=N ELSE MA=MA+1 JA(MA)=I IF (I.LE.N-1) THEN MA=MA+1 JA(MA)=I+1 ENDIF ENDIF IA(I+1)=MA+1 422 CONTINUE RETURN 430 IF (N.LT.3) GO TO 999 DO 431 I=1,N X(I)=0.0D 0 431 CONTINUE GO TO 42 440 IF (N.LT.3) GO TO 999 DO 441 I=1,N X(I)=-1.0D 0 441 CONTINUE GO TO 42 450 IF (N.LT.7) GO TO 999 DO 451 I=1,N X(I)=-1.0D 0 451 CONTINUE NA=N MA=0 IA(1)=1 J1=3 J2=3 DO 453 I=1,N IF (I-J1.GT.1) THEN I1=I-J1 ELSE I1=1 ENDIF IF (I+J2.LT.N) THEN I2=I+J2 ELSE I2=N ENDIF DO 452 J=I1,I2 MA=MA+1 JA(MA)=J 452 CONTINUE IA(I+1)=MA+1 453 CONTINUE RETURN 460 IF (N.LT.2) GO TO 999 DO 461 I=1,N X(I)=0.5D 0 461 CONTINUE GO TO 412 RETURN 470 IF (N.LT.2) GO TO 999 DO 471 I=1,N X(I)=0.5D 0 471 CONTINUE GO TO 412 480 IF (N.LT.3) GO TO 999 DO 481 I=1,N X(I)=1.0D 0 481 CONTINUE GO TO 42 490 IF (N.LT.7) GO TO 999 DO 491 I=1,N X(I)=-1.0D 0 491 CONTINUE NA=N MA=0 IA(1)=1 DO 493 I=1,N IF (I-5.GT.1) THEN I1=I-5 ELSE I1=1 ENDIF IF (I+1.LT.N) THEN I2=I+1 ELSE I2=N ENDIF DO 492 J=I1,I2 MA=MA+1 JA(MA)=J 492 CONTINUE IA(I+1)=MA+1 493 CONTINUE RETURN 500 IF (N.LT.3) GO TO 999 DO 501 I=1,N X(I)=1.0D 0 501 CONTINUE GO TO 42 520 IF (N.LT.3) GO TO 999 DO 521 I=1,N X(I)=1.0D 0 521 CONTINUE GO TO 42 530 T=DBLE(2)/DBLE(N+2) N1=N/2 DO 531 I=1,N1 S=DBLE(I)*T X(I)=S*(1.0D 0-S) X(N1+I)=X(I) 531 CONTINUE NA=N N1=N/2 MA=0 IA(1)=1 DO 532 I=1,N IF (I.EQ.1) THEN MA=MA+1 JA(MA)=I MA=MA+1 JA(MA)=I+1 MA=MA+1 JA(MA)=I+N1 ELSE IF (I.EQ.N1+1) THEN MA=MA+1 JA(MA)=1 MA=MA+1 JA(MA)=I MA=MA+1 JA(MA)=I+1 ELSE IF (I.EQ.N1) THEN MA=MA+1 JA(MA)=I-1 MA=MA+1 JA(MA)=I MA=MA+1 JA(MA)=I+N1 ELSE IF (I.EQ.N) THEN MA=MA+1 JA(MA)=N1 MA=MA+1 JA(MA)=I-1 MA=MA+1 JA(MA)=I ELSE IF (I.LT.N1) THEN MA=MA+1 JA(MA)=I-1 MA=MA+1 JA(MA)=I MA=MA+1 JA(MA)=I+1 MA=MA+1 JA(MA)=I+N1 ELSE MA=MA+1 JA(MA)=I-N1 MA=MA+1 JA(MA)=I-1 MA=MA+1 JA(MA)=I MA=MA+1 JA(MA)=I+1 ENDIF IA(I+1)=MA+1 532 CONTINUE RETURN 540 N1=INT(SQRT(DBLE(N))) N=N1*N1 DO 541 I=1,N X(I)=1.0D 0 541 CONTINUE 542 NA=N ND=INT(SQRT(DBLE(N))) MA=0 IA(1)=1 DO 543 I=1,N L=MOD(I,ND) IF (L.EQ.0) THEN K=I/ND L=ND ELSE K=INT(I/ND)+1 ENDIF IF (L.EQ.1.AND.K.EQ.1) THEN MA=MA+1 JA(MA)=1 MA=MA+1 JA(MA)=2 MA=MA+1 JA(MA)=ND+1 ENDIF IF (1.LT.L.AND.L.LT.ND.AND.K.EQ.1) THEN MA=MA+1 JA(MA)=L-1 MA=MA+1 JA(MA)=L MA=MA+1 JA(MA)=L+1 MA=MA+1 JA(MA)=L+ND ENDIF IF (L.EQ.ND.AND.K.EQ.1) THEN MA=MA+1 JA(MA)=ND-1 MA=MA+1 JA(MA)=ND MA=MA+1 JA(MA)=2*ND ENDIF IF (L.EQ.1.AND.1.LT.K.AND.K.LT.ND) THEN MA=MA+1 JA(MA)=I-ND MA=MA+1 JA(MA)=I MA=MA+1 JA(MA)=I+1 MA=MA+1 JA(MA)=I+ND ENDIF IF (L.EQ.ND.AND.1.LT.K.AND.K.LT.ND) THEN MA=MA+1 JA(MA)=I-ND MA=MA+1 JA(MA)=I-1 MA=MA+1 JA(MA)=I MA=MA+1 JA(MA)=I+ND ENDIF IF (L.EQ.1.AND.K.EQ.ND) THEN MA=MA+1 JA(MA)=I-ND MA=MA+1 JA(MA)=I MA=MA+1 JA(MA)=I+1 ENDIF IF (1.LT.L.AND.L.LT.ND.AND.K.EQ.ND) THEN MA=MA+1 JA(MA)=I-ND MA=MA+1 JA(MA)=I-1 MA=MA+1 JA(MA)=I MA=MA+1 JA(MA)=I+1 ENDIF IF (L.EQ.ND.AND.K.EQ.ND) THEN MA=MA+1 JA(MA)=I-ND MA=MA+1 JA(MA)=I-1 MA=MA+1 JA(MA)=I ENDIF IF (1.LT.L.AND.L.LT.ND.AND.1.LT.K.AND.K.LT.ND) THEN MA=MA+1 JA(MA)=I-ND MA=MA+1 JA(MA)=I-1 MA=MA+1 JA(MA)=I MA=MA+1 JA(MA)=I+1 MA=MA+1 JA(MA)=I+ND ENDIF IA(I+1)=MA+1 543 CONTINUE RETURN 550 N1=INT(SQRT(DBLE(N))) N=N1*N1 DO 551 I=1,N X(I)=1.0D 0 551 CONTINUE GO TO 542 999 IERR=1 RETURN END * SUBROUTINE TIUD18 ALL SYSTEMS 92/12/01 C PORTABILITY : ALL SYSTEMS C 92/12/01 LU : ORIGINAL VERSION * * PURPOSE : * INITIAL VALUES OF THE VARIABLES FOR NONLINEAR APPROXIMATION. * UNCONSTRAINED AND DENSE VERSION. * * PARAMETERS : * II N NUMBER OF VARIABLES. * IO NA NUMBER OF APPROXIMATED FUNCTIONS. * RO X(N) VECTOR OF VARIABLES. * RO FMIN LOWER BOUND FOR VALUE OF THE OBJECTIVE FUNCTION. * RO XMAX MAXIMUM STEPSIZE. * II NEXT NUMBER OF THE TEST PROBLEM. * IO IERR ERROR INDICATOR. * SUBROUTINE TIUD18(N,NA,X,FMIN,XMAX,NEXT,IERR) INTEGER N,NA,NEXT,IEXT,IERR REAL*8 X(N),FMIN,XMAX,PAR INTEGER I,J,K,M,N1 REAL*8 S,T COMMON /EMPR18/ PAR,M FMIN=0.0D 0 XMAX=1.0D 4 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,230,240,250,260,270,280,290,300,310, & 310,420,430,440,450,470,480,490,500,520,530,540,550), & NEXT 10 IF(N.GE.4) THEN N=N-MOD(N,2) NA=N DO 11 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 11 CONTINUE ELSE IERR=1 ENDIF RETURN 20 IF(N.GE.5) THEN N=N-MOD(N,2) NA=N DO 21 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 21 CONTINUE ELSE IERR=1 ENDIF RETURN 30 IF(N.GE.5) THEN N=N-MOD(N,5) NA=N DO 31 I=1,N X(I)=1.0D 0/DBLE(N) 31 CONTINUE ELSE IERR=1 ENDIF RETURN 40 IF(N.GE.3) THEN DO 41 I=1,N X(I)=0.0D 0 41 CONTINUE 42 NA=N ELSE IERR=1 ENDIF RETURN 50 IF(N.GE.3) THEN IF (MOD(N,2).NE.1) N=N-1 NA=N DO 51 I=1,N X(I)=1.0D 0 51 CONTINUE ELSE IERR=1 ENDIF RETURN 60 IF(N.GE.3) THEN DO 61 I=1,N X(I)=-1.0D 0 61 CONTINUE NA=N ELSE IERR=1 ENDIF RETURN 70 IF(N.GE.3) THEN DO 71 I=1,N X(I)=1.2D 1 71 CONTINUE XMAX=1.0D 2 NA=N ELSE IERR=1 ENDIF RETURN 80 IF(N.GE.5) THEN NA=N DO 81 I=1,N X(I)=-2.0D 0 81 CONTINUE ELSE IERR=1 ENDIF RETURN 90 IF(N.GE.7) THEN NA=N DO 91 I=1,N X(I)=-3.0D 0 91 CONTINUE XMAX=1.0D 1 ELSE IERR=1 ENDIF RETURN 100 IF(N.GE.7) THEN NA=N DO 101 I=1,N X(I)=-1.0D 0 101 CONTINUE ELSE IERR=1 ENDIF RETURN 110 IF(N.GE.2) THEN N=N-MOD(N,2) NA=N DO 111 I=1,N IF(MOD(I,2).EQ.1) THEN X(I)=9.0D 1 ELSE X(I)=6.0D 1 ENDIF 111 CONTINUE ELSE IERR=1 ENDIF RETURN 120 IF(N.GE.4) THEN N=N-MOD(N,4) NA=N DO 121 I=1,N IF (MOD(I,4).EQ.1) THEN X(I)=3.0D 0 ELSE IF(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 121 CONTINUE XMAX=1.0D 2 ELSE IERR=1 ENDIF RETURN 130 IF(N.GE.4) THEN N=N-MOD(N,4) NA=N DO 131 I=1,N IF (MOD(I,4).EQ.1) THEN X(I)=1.0D 0 ELSE IF(MOD(I,4).EQ.2) THEN X(I)=2.0D 0 ELSEIF(MOD(I,4).EQ.3) THEN X(I)=2.0D 0 ELSE X(I)=2.0D 0 ENDIF 131 CONTINUE XMAX=1.0D 1 ELSE IERR=1 ENDIF RETURN 140 IF(N.GE.3) THEN DO 141 I=1,N X(I)=-1.0D 0 141 CONTINUE NA=N ELSE IERR=1 ENDIF RETURN 150 IF(N.GE.7) THEN NA=N DO 152 I=1,5 X(I)=-1.0D 0 152 CONTINUE DO 154 I=6,N-1 X(I)=-1.0D 0 154 CONTINUE X(N)=-1.0D 0 ELSE IERR=1 ENDIF RETURN 160 IF(N.GE.2) THEN N=N-MOD(N,2) NA=N DO 161 I=1,N IF (MOD(I,2).EQ.1) THEN X(I)=0.0D 0 ELSE X(I)=1.0D 0 ENDIF 161 CONTINUE ELSE IERR=1 ENDIF RETURN 170 IF (N.GE.4) THEN N=N-MOD(N,4) NA=N DO 171 I=2,N,2 X(I-1)=-3.0D 0 X(I)=-1.0D 0 171 CONTINUE ELSE IERR=1 ENDIF RETURN 190 IF(N.GE.3) THEN DO 191 I=1,N X(I)=DBLE(I)/DBLE(N+1) X(I)=X(I)*(X(I)-1.0D 0) 191 CONTINUE NA=N ELSE IERR=1 ENDIF RETURN 310 IF(N.GE.3) THEN DO 311 I=1,N X(I)=5.0D 0*MIN(DBLE(I)/DBLE(N+1),1.0D 0-DBLE(I)/DBLE(N+1)) 311 CONTINUE XMAX=1.0D 4 NA=N ELSE IERR=1 ENDIF RETURN 200 IF(N.GE.3) THEN DO 201 I=1,N X(I)=1.0D 1 201 CONTINUE NA=N ELSE IERR=1 ENDIF RETURN 240 IF (N.GE.16) THEN M=INT(SQRT(DBLE(N))) PAR=6.8D 0/DBLE(M+1)**2 N=M*M K=0 DO 242 J=1,M DO 241 I=1,M K=K+1 X(K)=0.0D 0 241 CONTINUE 242 CONTINUE NA=N ELSE IERR=1 ENDIF RETURN 300 IF (N.GE.16) THEN M=INT(SQRT(DBLE(N))) N=M*M PAR=500.0D 0 K=0 DO 302 J=1,M DO 301 I=1,M K=K+1 X(K)=0.0D 0 301 CONTINUE 302 CONTINUE NA=N ELSE IERR=1 ENDIF RETURN 320 IF (N.GE.3) THEN DO 321 I=1,N X(I)=5.0D 0*MIN(DBLE(I)/DBLE(N+1),1.0D 0-DBLE(I)/DBLE(N+1)) 321 CONTINUE NA=N ELSE IERR=1 ENDIF RETURN 210 IF (N.GE.3) THEN DO 211 I=1,N X(I)=1.0D 0 211 CONTINUE PAR=1.0D 1 NA=N ELSE IERR=1 ENDIF RETURN 180 IF (N.GE.3) THEN DO 181 I=1,N X(I)=1.5D 0 181 CONTINUE C XMAX=1.0D 0 NA=N ELSE IERR=1 ENDIF RETURN 290 IF (N.GE.16) THEN M=INT(SQRT(DBLE(N))) N=M*M PAR=500.0D 0/DBLE(M+2)**4 K=0 DO 292 J=1,M DO 291 I=1,M K=K+1 X(K)=0.0D 0 291 CONTINUE 292 CONTINUE NA=N ELSE IERR=1 ENDIF RETURN 270 IF (N.GE.16) THEN M=INT(SQRT(DBLE(N))) PAR=5.0D 1/DBLE(M+1) N=M*M K=0 DO 272 J=1,M DO 271 I=1,M K=K+1 X(K)=1.0D 0-DBLE(I)*DBLE(J)/DBLE(M+1)**2 271 CONTINUE 272 CONTINUE NA=N ELSE IERR=1 ENDIF RETURN 250 IF (N.GE.16) THEN M=INT(SQRT(DBLE(N))) PAR=1.0D 0/DBLE(M+1)**2 N=M*M K=0 DO 252 J=1,M DO 251 I=1,M K=K+1 X(K)=-1.0D 0 251 CONTINUE 252 CONTINUE NA=N ELSE IERR=1 ENDIF RETURN 280 IF (N.GE.16) THEN M=INT(SQRT(DBLE(N))) PAR=1.0D 0/DBLE(M+1) N=M*M K=0 DO 282 J=1,M DO 281 I=1,M K=K+1 X(K)=0.0D 0 281 CONTINUE 282 CONTINUE NA=N ELSE IERR=1 ENDIF RETURN 260 IF (N.GE.16) THEN M=INT(SQRT(DBLE(N))) PAR=1.0D 0/DBLE(M+1)**2 N=M*M K=0 DO 262 J=1,M DO 261 I=1,M K=K+1 X(K)=0.0D 0 261 CONTINUE 262 CONTINUE NA=N ELSE IERR=1 ENDIF RETURN 220 IF (N.GE.5) THEN PAR=5.0D 2/DBLE(N+2) NA=N DO 221 I=1,N X(I)=((DBLE(I)+0.5D 0)/DBLE(N+2)-0.5D 0)**2 221 CONTINUE ELSE IERR=1 ENDIF RETURN 230 IF (N.GE.10) THEN N=N-MOD(N,2) M=N/2 PAR=5.0D 2 NA=N DO 231 I=1,M X(I)=(DBLE(I)/DBLE(M+1)-0.5D 0)**2 231 CONTINUE DO 232 I=M+1,N K=I-M X(I)=DBLE(K)/DBLE(M+1)-0.5D 0 232 CONTINUE ELSE IERR=1 ENDIF RETURN 410 IF (N.LT.2) GO TO 999 N1=N-1 DO 411 I=1,N1 X(I)=-1.2D 0 411 CONTINUE X(N)=-1.0D 0 NA=N RETURN 420 IF (N.LT.3) GO TO 999 DO 421 I=1,N X(I)=2.0D 0 421 CONTINUE NA=N RETURN 430 IF (N.LT.3) GO TO 999 DO 431 I=1,N X(I)=0.0D 0 431 CONTINUE NA=N RETURN 440 IF (N.LT.3) GO TO 999 DO 441 I=1,N X(I)=-1.0D 0 441 CONTINUE NA=N RETURN 450 IF (N.LT.7) GO TO 999 DO 451 I=1,N X(I)=-1.0D 0 451 CONTINUE NA=N RETURN 460 IF (N.LT.2) GO TO 999 DO 461 I=1,N X(I)=0.5D 0 461 CONTINUE NA=N RETURN 470 IF (N.LT.2) GO TO 999 DO 471 I=1,N X(I)=0.5D 0 471 CONTINUE NA=N RETURN 480 IF (N.LT.3) GO TO 999 DO 481 I=1,N X(I)=1.0D 0 481 CONTINUE NA=N RETURN 490 IF (N.LT.7) GO TO 999 DO 491 I=1,N X(I)=-1.0D 0 491 CONTINUE NA=N RETURN 500 IF (N.LT.3) GO TO 999 DO 501 I=1,N X(I)=1.0D 0 501 CONTINUE NA=N RETURN 520 IF (N.LT.3) GO TO 999 DO 521 I=1,N X(I)=1.0D 0 521 CONTINUE NA=N RETURN 530 T=DBLE(2)/DBLE(N+2) N1=N/2 DO 531 I=1,N1 S=DBLE(I)*T X(I)=S*(1.0D 0-S) X(N1+I)=X(I) 531 CONTINUE NA=N RETURN 540 N1=INT(SQRT(DBLE(N))) N=N1*N1 NA=N DO 541 I=1,N X(I)=1.0D 0 541 CONTINUE RETURN 550 N1=INT(SQRT(DBLE(N))) N=N1*N1 NA=N DO 551 I=1,N X(I)=1.0D 0 551 CONTINUE RETURN 999 IERR=1 RETURN END * SUBROUTINE TIST18 ALL SYSTEMS 97/12/01 C PORTABILITY : ALL SYSTEMS C 97/12/01 LU : ORIGINAL VERSION * * PURPOSE : * SETTING PARAMETERS. * * PARAMETERS : * RI PARM PARAMETER. * SUBROUTINE TIST18(PARM) INTEGER M REAL*8 PAR,PARM COMMON /EMPR18/ PAR,M PAR=PARM RETURN END * SUBROUTINE TAFU18 ALL SYSTEMS 92/12/01 C PORTABILITY : ALL SYSTEMS C 92/12/01 LU : ORIGINAL VERSION * * PURPOSE : * VALUES OF TEST FUNCTIONS FOR NONLINEAR EQUATIONS. * UNIVERSAL VERSION. * * PARAMETERS : * II N NUMBER OF VARIABLES. * II KA INDEX OF THE APPROXIMATED FUNCTION. * RI X(N) VECTOR OF VARIABLES. * RO FA VALUE OF THE APPROXIMATED FUNCTION AT THE * SELECTED POINT. * II NEXT NUMBER OF THE TEST PROBLEM. * SUBROUTINE TAFU18(N,KA,X,FA,NEXT) INTEGER N,KA,NEXT REAL*8 X(N),FA INTEGER I,J,K,L,M,I1,I2,J1,J2,N1,ND,LA REAL*8 A,B,A1,A2,A3,A4,AL,AL1,AL2,FF,H,PAR,PI,BE,BE1,BE2,CA,CB, & GA,H2,S,S1,S2,S3,T,U COMMON /EMPR18/ PAR,M PI=3.14159265358979323846D 0 GOTO (10,20,30,40,50,60,70,80,90,100,110,120,130,140,150,160, & 170,180,190,200,210,220,230,240,250,260,270,280,290,300,320, & 310,420,430,440,450,470,480,490,500,520,530,540,550), & NEXT 10 A2=0.5D 0 IF (KA.EQ.1) THEN FA=A2-(1.0D 0-A2)*X(3)-X(1)*(1.0D 0+4.0D 0*X(2)) ELSEIF(KA.EQ.2) THEN FA=-(2.0D 0-A2)*X(4)-X(2)*(1.0D 0+4.0D 0*X(1)) ELSEIF(KA.EQ.N-1) THEN FA=A2*X(N-3)-X(N-1)*(1.0D 0+4.0D 0*X(N)) ELSEIF (KA.EQ.N) THEN FA=A2*X(N-2)-(2.0D 0-A2)-X(N)*(1.0D 0+4.0D 0*X(N-1)) ELSEIF (MOD(KA,2).EQ.1) THEN FA=A2*X(KA-2)-(1.0D 0-A2)*X(KA+2)- & X(KA)*(1.0D 0+4.0D 0*X(KA+1)) ELSE FA=A2*X(KA-2)-(2.0D 0-A2)*X(KA+2)- & X(KA)*(1.0D 0+4.0D 0*X(KA-1)) ENDIF RETURN 20 A1=0.414214D 0 IF (KA.EQ.1) THEN FA=X(1)-(1.0D 0-X(1))*X(3)-A1*(1.0D 0+4.0D 0*X(2)) ELSEIF (KA.EQ.2) THEN FA=-(1.0D 0-X(1))*X(4)-A1*(1.0D 0+4.0D 0*X(2)) ELSEIF (KA.EQ.3) THEN FA=A1*X(1)-(1.0D 0-X(1))*X(5)-X(3)*(1.0D 0+4.0D 0*X(2)) ELSEIF (KA.LE.N-2) THEN FA=X(1)*X(KA-2)-(1.0D 0-X(1))*X(KA+2)- & X(KA)*(1.0D 0+4.0D 0*X(KA-1)) ELSEIF (KA.EQ.N-1) THEN FA=X(1)*X(N-3)-X(N-1)*(1.0D 0+4.0D 0*X(N-2)) ELSE FA=X(1)*X(N-2)-(1.0D 0-X(1))-X(N)*(1.0D 0+4.0D 0*X(N-1)) ENDIF RETURN 30 J=(KA-1)/5 FA=5.0D 0-DBLE(J+1)*(1.0D 0-COS(X(KA)))-SIN(X(KA)) J=J*5 DO 31 I=J+1,J+5 FA=FA-COS(X(I)) 31 CONTINUE RETURN 40 IF (KA.LT.2) THEN FA=3.0D 0*X(KA)**3+2.0D 0*X(KA+1)-5.0D 0+ & SIN(X(KA)-X(KA+1))*SIN(X(KA)+X(KA+1)) ELSEIF (KA.LT.N) THEN FA=3.0D 0*X(KA)**3+2.0D 0*X(KA+1)-5.0D 0+ & SIN(X(KA)-X(KA+1))*SIN(X(KA)+X(KA+1))+4.0D 0*X(KA)- & X(KA-1)*EXP(X(KA-1)-X(KA))-3.0D 0 ELSE FA=4.0D 0*X(KA)-X(KA-1)*EXP(X(KA-1)-X(KA))-3.0D 0 ENDIF RETURN 50 IF (MOD(KA,2).EQ.1) THEN FA=0.0D 0 IF (KA.NE.1) FA=FA-6.0D 0*(X(KA-2)-X(KA))**3+1.0D 1- & 4.0D 0*X(KA-1)-2.0D 0*SIN(X(KA-2)-X(KA-1)-X(KA))* & SIN(X(KA-2)+X(KA-1)-X(KA)) IF (KA.NE.N) FA=FA+3.0D 0*(X(KA)-X(KA+2))**3-5.0D 0+ & 2.0D 0*X(KA+1)+SIN(X(KA)-X(KA+1)-X(KA+2))* & SIN(X(KA)+X(KA+1)-X(KA+2)) ELSE FA=4.0D 0*X(KA)-(X(KA-1)-X(KA+1))*EXP(X(KA-1)-X(KA)-X(KA+1))- & 3.0D 0 ENDIF RETURN 60 H=2.0D 0 IF (KA.EQ.1) THEN FA=((3.0D 0-H*X(1))*X(1)-2.0D 0*X(2)+1.0D 0)**2 ELSEIF (KA.LE.N-1) THEN FA=((3.0D 0-H*X(KA))*X(KA)-X(KA-1)-2.0D 0*X(KA+1)+1.0D 0)**2 ELSE FA=((3.0D 0-H*X(N))*X(N)-X(N-1)+1.0D 0)**2 ENDIF RETURN 70 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 80 IF (KA.LT.2) THEN FA=4.0D 0*(X(KA)-X(KA+1)**2)+X(KA+1)-X(KA+2)**2 ELSEIF (KA.LT.3) 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)+X(KA+1)-X(KA+2)**2 ELSEIF (KA.LT.N-1) 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)+X(KA-1)**2-X(KA-2)+X(KA+1)- & X(KA+2)**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)+X(KA-1)**2-X(KA-2) ELSE FA=8.0D 0*X(KA)*(X(KA)**2-X(KA-1))-2.0D 0*(1.0D 0-X(KA)) & +X(KA-1)**2-X(KA-2) ENDIF RETURN 90 IF (KA.LT.2) THEN FA=4.0D 0*(X(KA)-X(KA+1)**2)+X(KA+1)-X(KA+2)**2+ & X(KA+2)-X(KA+3)**2 ELSEIF (KA.LT.3) 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)+X(KA-1)**2+X(KA+1)-X(KA+2)**2+ & X(KA+2)-X(KA+3)**2 ELSEIF (KA.LT.4) 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)+X(KA-1)**2-X(KA-2)+ & X(KA+1)-X(KA+2)**2+X(KA-2)**2+X(KA+2)-X(KA+3)**2 ELSEIF (KA.LT.N-2) 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)+X(KA-1)**2-X(KA-2)+ & X(KA+1)-X(KA+2)**2+X(KA-2)**2-X(KA-3)+X(KA+2)-X(KA+3)**2 ELSEIF (KA.LT.N-1) 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)+X(KA-1)**2-X(KA-2)+ & X(KA+1)-X(KA+2)**2+X(KA-2)**2-X(KA-3)+X(KA+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)+X(KA-1)**2-X(KA-2)+ & X(KA+1)+X(KA-2)**2-X(KA-3) ELSE FA=8.0D 0*X(KA)*(X(KA)**2-X(KA-1))-2.0D 0*(1.0D 0-X(KA)) & +X(KA-1)**2-X(KA-2)+X(KA-2)**2-X(KA-3) ENDIF RETURN 100 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 110 IF(MOD(KA,2).EQ.1) THEN FA=X(KA)+((5.0D 0-X(KA+1))*X(KA+1)-2.0D 0)*X(KA+1)-1.3D 1 ELSE FA=X(KA-1)+((X(KA)+1.0D 0)*X(KA)-1.4D 1)*X(KA)-2.9D 1 ENDIF RETURN 120 IF(MOD(KA,4).EQ.1) THEN FA=X(KA)+1.0D 1*X(KA+1) ELSEIF(MOD(KA,4).EQ.2) THEN FA=2.23606797749979D 0*(X(KA+1)-X(KA+2)) ELSEIF(MOD(KA,4).EQ.3) THEN FA=(X(KA-1)-2.0D 0*X(KA))**2 ELSE FA=3.16227766016838D 0*(X(KA-3)-X(KA))**2 ENDIF RETURN 130 IF(MOD(KA,4).EQ.1) THEN FA=(EXP(X(KA))-X(KA+1))**2 ELSEIF (MOD(KA,4).EQ.2) THEN FA=1.0D 1*(X(KA)-X(KA+1))**3 ELSEIF (MOD(KA,4).EQ.3) THEN FA=X(KA)-X(KA+1) FA=(SIN(FA)/COS(FA))**2 ELSE FA=X(KA)-1.0D 0 ENDIF RETURN 140 IF(KA.LT.2) THEN FA=X(KA)*(0.5D 0*X(KA)-3.0D 0)-1.0D 0+2.0D 0*X(KA+1) ELSEIF (KA.LT.N) THEN FA=X(KA-1)+X(KA)*(0.5D 0*X(KA)-3.0D 0)-1.0D 0+2.0D 0*X(KA+1) ELSE FA=X(KA-1)+X(KA)*(0.5D 0*X(KA)-3.0D 0)-1.0D 0 ENDIF RETURN 150 FA=(2.0D 0+5.0D 0*X(KA)**2)*X(KA)+1.0D 0 DO 151 I=MAX(1,KA-5),MIN(N,KA+1) FA=FA+X(I)*(1.0D 0+X(I)) 151 CONTINUE RETURN 160 IF(MOD(KA,2).EQ.1) THEN FA=1.0D 4*X(KA)*X(KA+1)-1.0D 0 ELSE FA=EXP(-X(KA-1))+EXP(-X(KA))-1.0001D 0 ENDIF RETURN 170 IF(MOD(KA,4).EQ.1) THEN FA=-2.0D 2*X(KA)*(X(KA+1)-X(KA)**2)-(1.0D 0-X(KA)) ELSEIF(MOD(KA,4).EQ.2) THEN FA=2.0D 2*(X(KA)-X(KA-1)**2)+2.02D 1*(X(KA)-1.0D 0)+ & 1.98D 1*(X(KA+2)-1.0D 0) ELSEIF(MOD(KA,4).EQ.3) THEN FA=-1.8D 2*X(KA)*(X(KA+1)-X(KA)**2)-(1.0D 0-X(KA)) ELSE FA=1.8D 2*(X(KA)-X(KA-1)**2)+2.02D 1*(X(KA)-1.0D 0)+ & 1.98D 1*(X(KA-2)-1.0D 0) ENDIF RETURN 180 IF (KA.LT.2) THEN FA=X(KA)-EXP(COS(DBLE(KA)*(X(KA)+X(KA+1)))) ELSEIF (KA.LT.N) THEN FA=X(KA)-EXP(COS(DBLE(KA)*(X(KA-1)+X(KA)+X(KA+1)))) ELSE FA=X(KA)-EXP(COS(DBLE(KA)*(X(KA-1)+X(KA)))) ENDIF RETURN 190 A3=1.0D 0/DBLE(N+1) A4=DBLE(KA)*A3 FA=2.0D 0*X(KA)+0.5D 0*A3*A3*(X(KA)+A4+1.0D 0)**3 IF(KA.GT.1) FA=FA-X(KA-1) IF(KA.LT.N) FA=FA-X(KA+1) RETURN 200 IF(KA.EQ.1) THEN FA=3.0D 0*X(KA)*(X(KA+1)-2.0D 0*X(KA))+0.25D 0*X(KA+1)**2 ELSEIF(KA.EQ.N) THEN FA=3.0D 0*X(KA)*(2.0D 1-2.0D 0*X(KA)+X(KA-1))+ & 0.25D 0*(2.0D 1-X(KA-1))**2 ELSE FA=3.0D 0*X(KA)*(X(KA+1)-2.0D 0*X(KA)+X(KA-1))+ & 0.25D 0*(X(KA+1)-X(KA-1))**2 ENDIF RETURN 210 H=1.0D 0/DBLE(N+1) IF (KA.LT.2) THEN FA=2.0D 0*X(KA)+PAR*H**2*SINH(PAR*X(KA))-X(KA+1) ELSE IF (KA.LT.N) THEN FA=2.0D 0*X(KA)+PAR*H**2*SINH(PAR*X(KA))-X(KA-1)-X(KA+1) ELSE FA=2.0D 0*X(KA)+PAR*H**2*SINH(PAR*X(KA))-X(KA-1)-1.0D 0 ENDIF RETURN 220 FA=6.0D 0*X(KA) A1=0.0D 0 A2=0.0D 0 A3=0.0D 0 IF (KA.GT.1) THEN FA=FA-4.0D 0*X(KA-1) A1=A1-X(KA-1) A2=A2+X(KA-1) A3=A3+2.0D 0*X(KA-1) ENDIF IF (KA.GT.2) THEN FA=FA+X(KA-2) A3=A3-X(KA-2) ENDIF IF (KA.LT.N-1) THEN FA=FA+X(KA+2) A3=A3+X(KA+2) ENDIF IF (KA.LT.N) THEN FA=FA-4.0D 0*X(KA+1) A1=A1+X(KA+1) A2=A2+X(KA+1) A3=A3-2.0D 0*X(KA+1) ENDIF IF (KA.GE.N-1) THEN FA=FA+1.0D 0 A3=A3+1.0D 0 ENDIF IF (KA.GE.N) THEN FA=FA-4.0D 0 A1=A1+1.0D 0 A2=A2+1.0D 0 A3=A3-2.0D 0 ENDIF FA=FA-0.5D 0*PAR*(A1*A2-X(KA)*A3) RETURN 230 H=1.0D 0/DBLE(M+1) IF(KA.LE.M) THEN J=KA+M FA=6.0D 0*X(KA) A1=0.0D 0 A2=0.0D 0 IF (KA.EQ.1) THEN A1=A1+1.0D 0 ENDIF IF (KA.GT.1) THEN FA=FA-4.0D 0*X(KA-1) A1=A1-X(J-1) A2=A2+2.0D 0*X(KA-1) ENDIF IF (KA.GT.2) THEN FA=FA+X(KA-2) A2=A2-X(KA-2) ENDIF IF (KA.LT.M-1) THEN FA=FA+X(KA+2) A2=A2+X(KA+2) ENDIF IF (KA.LT.M) THEN FA=FA-4.0D 0*X(KA+1) A1=A1+X(J+1) A2=A2-2.0D 0*X(KA+1) ENDIF IF (KA.EQ.M) THEN A1=A1+1.0D 0 ENDIF FA=FA+0.5D 0*PAR*H*(X(KA)*A2+X(J)*A1*H**2) ELSE J=KA-M FA=-2.0D 0*X(KA) A1=0.0D 0 A2=0.0D 0 IF (J.EQ.1) THEN A2=A2+1.0D 0 ENDIF IF (J.GT.1) THEN FA=FA+X(KA-1) A1=A1-X(J-1) A2=A2-X(KA-1) ENDIF IF (J.LT.M) THEN FA=FA+X(KA+1) A1=A1+X(J+1) A2=A2+X(KA+1) ENDIF IF (J.EQ.M) THEN A2=A2+1.0D 0 ENDIF FA=FA+0.5D 0*PAR*H*(X(KA)*A1+X(J)*A2) ENDIF RETURN 240 FA=4.0D 0*X(KA)-PAR*EXP(X(KA)) J=(KA-1)/M+1 I=KA-(J-1)*M IF(I.GT.1) FA=FA-X(KA-1) IF(I.LT.M) FA=FA-X(KA+1) IF(J.GT.1) FA=FA-X(KA-M) IF(J.LT.M) FA=FA-X(KA+M) RETURN 250 FA=4.0D 0*X(KA) J=(KA-1)/M+1 I=KA-(J-1)*M FA=FA+PAR*X(KA)**3/(1.0D 0+PAR*DBLE(I)**2+ & PAR*DBLE(J)**2) IF(I.EQ.1) FA=FA-1.0D 0 IF(I.GT.1) FA=FA-X(KA-1) IF(I.LT.M) FA=FA-X(KA+1) IF(I.EQ.M) FA=FA-2.0D 0+EXP(DBLE(J)/DBLE(M+1)) IF(J.EQ.1) FA=FA-1.0D 0 IF(J.GT.1) FA=FA-X(KA-M) IF(J.LT.M) FA=FA-X(KA+M) IF(J.EQ.M) FA=FA-2.0D 0+EXP(DBLE(I)/DBLE(M+1)) RETURN 260 FA=4.0D 0*X(KA)-PAR*SIN(2.0D 0*PI*X(KA)) J=(KA-1)/M+1 I=KA-(J-1)*M A1=DBLE(I)/DBLE(M+1) A2=DBLE(J)/DBLE(M+1) FA=FA-1.0D 4*((A1-0.25D 0)**2+(A2-0.75D 0)**2)*PAR IF(I.EQ.1) FA=FA-X(KA+1)-PAR*SIN(PI*X(KA+1)*DBLE(M+1)) IF(I.GT.1.AND.I.LT.M) FA=FA-X(KA+1)-X(KA-1)- & PAR*SIN(PI*(X(KA+1)-X(KA-1))*DBLE(M+1)) IF(I.EQ.M) FA=FA-X(KA-1)+PAR*SIN(PI*X(KA-1)*DBLE(M+1)) IF(J.EQ.1) FA=FA-X(KA+M)-PAR*SIN(PI*X(KA+M)*DBLE(M+1)) IF(J.GT.1.AND.J.LT.M) FA=FA-X(KA+M)-X(KA-M)- & PAR*SIN(PI*(X(KA+M)-X(KA-M))*DBLE(M+1)) IF(J.EQ.M) FA=FA-X(KA-M)+PAR*SIN(PI*X(KA-M)*DBLE(M+1)) RETURN 270 FA=8.0D 0*X(KA)**2 J=(KA-1)/M+1 I=KA-(J-1)*M IF(I.EQ.1) FA=FA-2.0D 0*X(KA)*(X(KA+1)+1.0D 0)- & 0.5D 0*(X(KA+1)-1.0D 0)**2- & 1.5D 0*X(KA)**2*(X(KA+1)-1.0D 0)*PAR IF(I.GT.1.AND.I.LT.M) FA=FA-2.0D 0*X(KA)*(X(KA+1)+X(KA-1))- & 0.5D 0*(X(KA+1)-X(KA-1))**2- & 1.5D 0*X(KA)**2*(X(KA+1)-X(KA-1))*PAR IF(I.EQ.M) FA=FA-2.0D 0*X(KA)*X(KA-1)- & 0.5D 0*X(KA-1)**2+ & 1.5D 0*X(KA)**2*X(KA-1)*PAR IF(J.EQ.1) FA=FA-2.0D 0*X(KA)*(X(KA+M)+1.0D 0)- & 0.5D 0*(X(KA+M)-1.0D 0)**2 IF(J.GT.1.AND.J.LT.M) FA=FA-2.0D 0*X(KA)*(X(KA+M)+X(KA-M))- & 0.5D 0*(X(KA+M)-X(KA-M))**2 IF(J.EQ.M) FA=FA-2.0D 0*X(KA)*X(KA-M)- & 0.5D 0*X(KA-M)**2 IF (I.EQ.1.AND.J.EQ.1) FA=FA-PAR/DBLE(M+1) RETURN 280 FA=4.0D 0*X(KA) A3=0.0D 0 J=(KA-1)/M+1 I=KA-(J-1)*M A1=PAR*DBLE(I) A2=PAR*DBLE(J) FA=FA-2.0D 3*A1*A2*(1.0D 0-A1)*(1.0D 0-A2)*PAR**2 IF(I.GT.1) THEN FA=FA-X(KA-1) A3=A3-X(KA-1) ENDIF IF(I.LT.M) THEN FA=FA-X(KA+1) A3=A3+X(KA+1) ENDIF IF(J.GT.1) THEN FA=FA-X(KA-M) A3=A3-X(KA-M) ENDIF IF(J.LT.M) THEN FA=FA-X(KA+M) A3=A3+X(KA+M) ENDIF FA=FA+2.0D 1*PAR*A3*X(KA) RETURN 290 FA=2.0D 1*X(KA)-PAR*MAX(0.0D 0,X(KA)) J=(KA-1)/M+1 I=KA-(J-1)*M FA=FA-SIGN(PAR,(DBLE(I)/DBLE(M+2)-0.5D 0)) IF (J.GT.2) THEN FA=FA+X(KA-M-M) ENDIF IF (J.GT.1) THEN IF (I.GT.1) THEN FA=FA+2.0D 0*X(KA-M-1) ENDIF FA=FA-8.0D 0*X(KA-M) IF (I.LT.M) THEN FA=FA+2.0D 0*X(KA-M+1) ENDIF ENDIF IF (I.GT.1) THEN IF (I.GT.2) THEN FA=FA+X(KA-2) ENDIF FA=FA-8.0D 0*X(KA-1) ENDIF IF (I.LT.M) THEN FA=FA-8.0D 0*X(KA+1) IF (I.LT.M-1) THEN FA=FA+X(KA+2) ENDIF ENDIF IF (J.LT.M) THEN IF (I.GT.1) THEN FA=FA+2.0D 0*X(KA+M-1) ENDIF FA=FA-8.0D 0*X(KA+M) IF (I.LT.M) THEN FA=FA+2.0D 0*X(KA+M+1) ENDIF ENDIF IF (J.LT.M-1) THEN FA=FA+X(KA+M+M) ENDIF RETURN 300 H=0.5D 0/DBLE(M+2) J=(KA-1)/M+1 I=KA-(J-1)*M FA=2.0D 1*X(KA) A1=0.0D 0 A2=0.0D 0 A3=0.0D 0 A4=0.0D 0 IF (J.GT.2) THEN FA=FA+X(KA-M-M) A4=A4+X(KA-M-M) ENDIF IF (J.GT.1) THEN IF (I.GT.1) THEN FA=FA+2.0D 0*X(KA-M-1) A3=A3+X(KA-M-1) A4=A4+X(KA-M-1) ENDIF FA=FA-8.0D 0*X(KA-M) A1=A1-X(KA-M) A4=A4-4.0D 0*X(KA-M) IF (I.LT.M) THEN FA=FA+2.0D 0*X(KA-M+1) A3=A3-X(KA-M+1) A4=A4+X(KA-M+1) ENDIF ENDIF IF (I.GT.1) THEN IF (I.GT.2) THEN FA=FA+X(KA-2) A3=A3+X(KA-2) ENDIF FA=FA-8.0D 0*X(KA-1) A2=A2-X(KA-1) A3=A3-4.0D 0*X(KA-1) ENDIF IF (I.LT.M) THEN FA=FA-8.0D 0*X(KA+1) A2=A2+X(KA+1) A3=A3+4.0D 0*X(KA+1) IF (I.LT.M-1) THEN FA=FA+X(KA+2) A3=A3-X(KA+2) ENDIF ENDIF IF (J.LT.M) THEN IF (I.GT.1) THEN FA=FA+2.0D 0*X(KA+M-1) A3=A3+X(KA+M-1) A4=A4-X(KA+M-1) ENDIF FA=FA-8.0D 0*X(KA+M) A1=A1+X(KA+M) A4=A4+4.0D 0*X(KA+M) IF (I.LT.M) THEN FA=FA+2.0D 0*X(KA+M+1) A3=A3-X(KA+M+1) A4=A4-X(KA+M+1) ENDIF ENDIF IF (J.LT.M-1) THEN FA=FA+X(KA+M+M) A4=A4-X(KA+M+M) ENDIF IF (J.EQ.M) THEN IF (I.GT.1) THEN FA=FA-H-H A3=A3-H A4=A4+H ENDIF FA=FA+8.0D 0*H A1=A1-H A4=A4-4.0D 0*H IF (I.LT.M) THEN FA=FA-2.0D 0*H A3=A3+H A4=A4+H ENDIF FA=FA+H A4=A4-H ENDIF IF (J.EQ.M-1) THEN FA=FA-H A4=A4+H ENDIF FA=FA+0.25D 0*PAR*(A1*A3-A2*A4) RETURN 310 H=1.0D 0/DBLE(N+1) A1=DBLE(KA)*H A2=(A1-0.5D 0)**2 IF (A1.GE.0.5D 0) THEN A3= 1.0D 6 ELSE A3=-1.0D 6 ENDIF IF (KA.LT.2) THEN FA=2.0D 0*X(KA)-X(KA+1)+H**2*(X(KA)**3*EXP(X(KA))+ & 5.0D 8*EXP(-1.0D 4*A2)*SQRT(ABS(A1-0.5D 0))*X(KA+1)+A3) ELSEIF (KA.LT.N) THEN FA=2.0D 0*X(KA)-X(KA+1)-X(KA-1)+H**2*(X(KA)**3*EXP(X(KA))+ & 5.0D 8*EXP(-1.0D 4*A2)*SQRT(ABS(A1-0.5D 0))*(X(KA+1)-X(KA-1))+ & A3) ELSE FA=2.0D 0*X(KA)-X(KA-1)+H**2*(X(KA)**3*EXP(X(KA))- & 5.0D 8*EXP(-1.0D 4*A2)*SQRT(ABS(A1-0.5D 0))*X(KA-1)-A3) ENDIF RETURN 320 H=1.0D 0/DBLE(N+1) A1=DBLE(KA)*H A2=(A1-0.5D 0)**2 IF (KA.LT.2) THEN FA=2.0D 0*X(KA)-X(KA+1)+H**2*(X(KA)**3+ & 2.0D-4*(2.0D-4*A2-1.0D 0)*X(KA)-1.0D 9*EXP(-3.0D 4*A2)) ELSEIF (KA.LT.N) THEN FA=2.0D 0*X(KA)-X(KA+1)-X(KA-1)+H**2*(X(KA)**3+ & 2.0D-4*(2.0D-4*A2-1.0D 0)*X(KA)-1.0D 9*EXP(-3.0D 4*A2)) ELSE FA=2.0D 0*X(KA)-X(KA-1)+H**2*(X(KA)**3+ & 2.0D-4*(2.0D-4*A2-1.0D 0)*X(KA)-1.0D 9*EXP(-3.0D 4*A2)) ENDIF RETURN 410 IF (KA.EQ.1) THEN FA=1.0D 0-X(1) ELSE FA=10.0D 0*DBLE(KA-1)*(X(KA)-X(KA-1))**2 ENDIF RETURN 420 IF (KA.EQ.N) THEN FA=X(KA)-0.1D 0*X(1)**2 ELSE FA=X(KA)-0.1D 0*X(KA+1)**2 ENDIF RETURN 430 S=(1.0D 0/DBLE(N+1))**2*EXP(X(KA)) IF (N.EQ.1) THEN FA=-2.0D 0*X(KA)-S ELSE IF (KA.EQ.1) THEN FA=-2.0D 0*X(KA)+X(KA+1)-S ELSE IF (KA.EQ.N) THEN FA=X(KA-1)-2.0D 0*X(KA)-S ELSE FA=X(KA-1)-2.0D 0*X(KA)+X(KA+1)-S ENDIF RETURN 440 S=0.1D 0 IF (N.EQ.1) THEN FA=(3.0D 0-S*X(KA))*X(KA)+1.0D 0 ELSE IF (KA.EQ.1) THEN FA=(3.0D 0-S*X(KA))*X(KA)+1.0D 0-2.0D 0*X(KA+1) ELSE IF (KA.EQ.N) THEN FA=(3.0D 0-S*X(KA))*X(KA)+1.0D 0-X(KA-1) ELSE FA=(3.0D 0-S*X(KA))*X(KA)+1.0D 0-X(KA-1)-2.0D 0*X(KA+1) ENDIF RETURN 450 S1=1.0D 0 S2=1.0D 0 S3=1.0D 0 J1=3 J2=3 IF (KA-J1.GT.1) THEN I1=KA-J1 ELSE I1=1 ENDIF IF (KA+J2.LT.N) THEN I2=KA+J2 ELSE I2=N ENDIF S=0.0D 0 DO 451 J=I1,I2 IF(J.NE.KA) S=S+X(J)+X(J)**2 451 CONTINUE FA=(S1+S2*X(KA)**2)*X(KA)+1.D 0-S3*S RETURN 460 IF (KA.EQ.1) THEN FA=X(1)**2-1.0D 0 ELSE FA=X(KA-1)**2+LOG(X(KA))-1.0D 0 ENDIF RETURN 470 IF(KA.EQ.1) THEN FA=X(1) ELSE FA=COS(X(KA-1))+X(KA)-1.0D 0 ENDIF RETURN 480 S=(1.0D 0/DBLE(N+1))**2 IF (N.EQ.1) THEN FA=2.0D 0*X(KA)-1.0D 0+S*(X(KA)+SIN(X(KA))) ELSE IF (KA.EQ.1) THEN FA=2.0D 0*X(KA)-X(KA+1)+S*(X(KA)+SIN(X(KA))) ELSE IF (KA.EQ.N) THEN FA=-X(KA-1)+2.0D 0*X(KA)-1.0D 0+S*(X(KA)+SIN(X(KA))) ELSE FA=-X(KA-1)+2.0D 0*X(KA)-X(KA+1)+S*(X(KA)+SIN(X(KA))) ENDIF RETURN 490 IF (KA-5.GT.1) THEN I1=KA-5 ELSE I1=1 ENDIF IF (KA+1.LT.N) THEN I2=KA+1 ELSE I2=N ENDIF S=0.0D 0 DO 491 J=I1,I2 IF (J.NE.KA) S=S+X(J)*(1.0D 0+X(J)) 491 CONTINUE FA=X(KA)*(2.0D 0+5.0D 0*X(KA)**2)+1.0D 0-S RETURN 500 H=1.0D 0/DBLE(N+1) T=2.0D 0*H**2 IF (KA.EQ.1) THEN FA=2.0D 0*X(KA)-X(KA+1)-T*X(KA)**2-H*X(KA+1) ELSE IF (1.LT.KA.AND.KA.LT.N) THEN FA=-X(KA-1)+2.0D 0*X(KA)-X(KA+1)-T*X(KA)**2-H*(X(KA+1)-X(KA-1)) ELSE IF (KA.EQ.N) THEN FA=-X(KA-1)+2.0D 0*X(KA)-0.5D 0-T*X(KA)**2-H*(0.5D 0-X(KA-1)) ENDIF RETURN 520 A=-5.0D-1 B=5.0D-1 AL=0.0D 0 BE=25.0D 0 GA=20.0D 0 CA=0.3D 0 CB=0.3D 0 H=(B-A)/DBLE(N+1) T=A+DBLE(KA)*H H=H**2 S=DBLE(KA)/DBLE(N+1) U=AL*(1.0D 0-S)+BE*S+X(KA) FF=CB*EXP(GA*(U-BE))-CA*EXP(GA*(AL-U)) IF (T.LE.0) THEN FF=FF+CA ELSE FF=FF-CB ENDIF IF (N.EQ.1) THEN FA=-AL+2.0D 0*X(KA)-BE+H*FF ELSE IF (KA.EQ.1) THEN FA=-AL+2.0D 0*X(KA)-X(KA+1)+H*FF ELSE IF (KA.LT.N) THEN FA=-X(KA-1)+2.0D 0*X(KA)-X(KA+1)+H*FF ELSE FA=-X(KA-1)+2.0D 0*X(KA)-BE+H*FF ENDIF RETURN 530 AL1=0.0D 0 AL2=0.0D 0 BE1=0.0D 0 BE2=0.0D 0 N1=N/2 H=1.0D 0/DBLE(N1+1) T=DBLE(KA)*H IF (KA.EQ.1) THEN S1=2.0D 0*X(KA)-X(KA+1) B=AL1 ELSE IF (KA.EQ.N1+1) THEN S1=2.0D 0*X(KA)-X(KA+1) B=AL2 ELSE IF ( KA.EQ.N1) THEN S1=-X(KA-1)+2.0D 0*X(KA) B=BE1 ELSE IF (KA.EQ.N) THEN S1=-X(KA-1)+2.0D 0*X(KA) B=BE2 ELSE S1=-X(KA-1)+2.0D 0*X(KA)-X(KA+1) B=0.0D 0 ENDIF IF (KA.LE.N1) THEN S2=X(KA)**2+X(KA)+0.1D 0*X(N1+KA)**2-1.2D 0 ELSE S2=0.2D 0*X(KA-N1)**2+X(KA)**2+2.0D 0*X(KA)-0.6D 0 ENDIF FA=S1+H**2*S2-B RETURN 540 ND=INT(SQRT(DBLE(N))) L=MOD(KA,ND) IF (L.EQ.0) THEN K=KA/ND L=ND ELSE K=INT(KA/ND)+1 ENDIF LA=1.0D 0 H=1.0D 0/DBLE(ND+1) H2=LA*H*H IF (L.EQ.1.AND.K.EQ.1) THEN FA=4.0D 0*X(1)-X(2)-X(ND+1)+H2*EXP(X(1)) ENDIF IF (1.LT.L.AND.L.LT.ND.AND.K.EQ.1) THEN FA=4.0D 0*X(L)-X(L-1)-X(L+1)-X(L+ND)+H2*EXP(X(L)) ENDIF IF (L.EQ.ND.AND.K.EQ.1) THEN FA=4.0D 0*X(ND)-X(ND-1)-X(ND+ND)+H2*EXP(X(ND)) ENDIF IF (L.EQ.1.AND.1.LT.K.AND.K.LT.ND) THEN FA=4.0D 0*X(KA)-X(KA+1)-X(KA-ND)-X(KA+ND)+H2*EXP(X(KA)) ENDIF IF (L.EQ.ND.AND.1.LT.K.AND.K.LT.ND) THEN FA=4.0D 0*X(KA)-X(KA-ND)-X(KA-1)-X(KA+ND)+H2*EXP(X(KA)) ENDIF IF (L.EQ.1.AND.K.EQ.ND) THEN FA=4.0D 0*X(KA)-X(KA+1)-X(KA-ND)+H2*EXP(X(KA)) ENDIF IF (1.LT.L.AND.L.LT.ND.AND.K.EQ.ND) THEN FA=4.0D 0*X(KA)-X(KA-1)-X(KA+1)-X(KA-ND)+H2*EXP(X(KA)) ENDIF IF (L.EQ.ND.AND.K.EQ.ND) THEN FA=4.0D 0*X(KA)-X(KA-1)-X(KA-ND)+H2*EXP(X(KA)) ENDIF IF (1.LT.L.AND.L.LT.ND.AND.1.LT.K.AND.K.LT.ND) THEN FA=4.0D 0*X(KA)-X(KA-1)-X(KA+1)-X(KA-ND)-X(KA+ND)+H2*EXP(X(KA)) ENDIF RETURN 550 ND=INT(SQRT(DBLE(N))) L=MOD(KA,ND) IF (L.EQ.0) THEN K=KA/ND L=ND ELSE K=INT(KA/ND)+1 ENDIF H=1.0D 0/DBLE(ND+1) H2=H*H IF (L.EQ.1.AND.K.EQ.1) THEN FA=4.0D 0*X(1)-X(2)-X(ND+1)+H2*X(1)**2-24.0D 0/(H+1.0D 0)**2 ENDIF IF (1.LT.L.AND.L.LT.ND.AND.K.EQ.1) THEN FA=4.0D 0*X(L)-X(L-1)-X(L+1)-X(L+ND)+H2*X(L)**2 & -12.0D 0/(DBLE(L)*H+1.0D 0)**2 ENDIF IF (L.EQ.ND.AND.K.EQ.1) THEN FA=4.0D 0*X(ND)-X(ND-1)-X(ND+ND)+H2*X(ND)**2 & -12.0D 0/(DBLE(ND)*H+1.0D 0)**2-12.0D 0/(H+2.0D 0)**2 ENDIF IF (L.EQ.1.AND.1.LT.K.AND.K.LT.ND) THEN FA=4.0D 0*X(KA)-X(KA+1)-X(KA-ND)-X(KA+ND)+H2*X(KA)**2 & -12.0D 0/(DBLE(K)*H+1.0D 0)**2 ENDIF IF (L.EQ.ND.AND.1.LT.K.AND.K.LT.ND) THEN FA=4.0D 0*X(KA)-X(KA-ND)-X(KA-1)-X(KA+ND)+H2*X(KA)**2 & -12.0D 0/(DBLE(K)*H+2.0D 0)**2 ENDIF IF (L.EQ.1.AND.K.EQ.ND) THEN FA=4.0D 0*X(KA)-X(KA+1)-X(KA-ND)+H2*X(KA)**2 & -12.0D 0/(DBLE(ND)*H+1.0D 0)**2-12.0D 0/(H+2.0D 0)**2 ENDIF IF (1.LT.L.AND.L.LT.ND.AND.K.EQ.ND) THEN FA=4.0D 0*X(KA)-X(KA-1)-X(KA+1)-X(KA-ND)+H2*X(KA)**2 & -12.0D 0/(DBLE(L)*H+2.0D 0)**2 ENDIF IF (L.EQ.ND.AND.K.EQ.ND) THEN FA=4.0D 0*X(KA)-X(KA-1)-X(KA-ND)+H2*X(KA)**2 & -24.0D 0/(DBLE(ND)*H+2.0D 0)**2 ENDIF IF (1.LT.L.AND.L.LT.ND.AND.1.LT.K.AND.K.LT.ND) THEN FA=4.0D 0*X(KA)-X(KA-1)-X(KA+1)-X(KA-ND)-X(KA+ND)+H2*X(KA)**2 ENDIF RETURN END * SUBROUTINE TAGU18 ALL SYSTEMS 92/12/01 C PORTABILITY : ALL SYSTEMS C 92/12/01 LU : ORIGINAL VERSION * * PURPOSE : * GRADIENTS OF TEST FUNCTIONS FOR NONLINEAR EQUATIONS. * UNIVERSAL VERSION. * * PARAMETERS : * II N NUMBER OF VARIABLES. * II KA INDEX OF THE APPROXIMATED FUNCTION. * RI X(N) VECTOR OF VARIABLES. * RO GA(N) GRADIENT OF THE APPROXIMATED FUNCTION AT THE * SELECTED POINT. * II NEXT NUMBER OF THE TEST PROBLEM. * SUBROUTINE TAGU18(N,KA,X,GA,NEXT) INTEGER N,KA,NEXT REAL*8 X(N),GA(N) INTEGER I,J,K,L,M,I1,I2,J1,J2,N1,ND,LA REAL*8 A,B,A1,A2,A3,A4,AL,AL1,AL2,FF,FG,PAR,PI,BE,BE1,BE2, & CA,CB,D1S,D2S,GB,H,H2,S,S1,S2,S3,T,U,V,W,EX,ALFA REAL*8 GA1(2),GA2(2),GA3(6),GA4(6) COMMON /EMPR18/ PAR,M PI=3.14159265358979323846D 0 GOTO (10,20,30,40,50,60,70,80,90,100,110,120,130,140,150,160, & 170,180,190,200,210,220,230,240,250,260,270,280,290,300,320, & 310,420,430,440,450,470,480,490,500,520,530,540,550), & NEXT 10 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 20 A1=0.414214D 0 IF (KA.EQ.1) THEN GA(1)=1.0D 0+X(3) GA(2)=-4.0D 0*A1 GA(3)=-1.0D 0+X(1) ELSEIF (KA.EQ.2) THEN GA(1)=X(4) GA(2)=-4.0D 0*A1 GA(4)=-1.0D 0+X(1) ELSEIF (KA.EQ.3) THEN GA(1)=A1+X(5) GA(2)=-4.0D 0*X(3) GA(3)=-1.0D 0-4.0D 0*X(2) GA(5)=-1.0D 0+X(1) ELSEIF (KA.LE.N-2) THEN GA(1)= X(KA-2)+X(KA+2) GA(KA-2)=X(1) GA(KA-1)=-4.0D 0*X(KA) GA(KA)=-1.0D 0-4.0D 0*X(KA-1) GA(KA+2)=-1.0D 0+X(1) ELSEIF (KA.EQ.N-1) THEN GA(1)= X(N-3) GA(N-3)=X(1) GA(N-2)=-4.0D 0*X(N-1) GA(N-1)=-1.0D 0-4.0D 0*X(N-2) ELSE GA(1)= X(N-2)+1.0D 0 GA(N-2)=X(1) GA(N-1)=-4.0D 0*X(N) GA(N)=-1.0D 0-4.0D 0*X(N-1) ENDIF RETURN 30 J=(KA-1)/5 GA(KA)=-DBLE(J+1)*SIN(X(KA))-COS(X(KA)) J=J*5 DO 31 I=J+1,J+5 IF (I.EQ.KA) THEN GA(I)=GA(I)+SIN(X(I)) ELSE GA(I)=SIN(X(I)) ENDIF 31 CONTINUE RETURN 40 IF (KA.LT.2) THEN D1S=COS(X(KA)-X(KA+1))*SIN(X(KA)+X(KA+1)) D2S=SIN(X(KA)-X(KA+1))*COS(X(KA)+X(KA+1)) GA(KA)=9.0D 0*X(KA)**2+D1S+D2S GA(KA+1)=2.0D 0-D1S+D2S ELSE IF (KA.LT.N) THEN D1S=COS(X(KA)-X(KA+1))*SIN(X(KA)+X(KA+1)) D2S=SIN(X(KA)-X(KA+1))*COS(X(KA)+X(KA+1)) EX=EXP(X(KA-1)-X(KA)) GA(KA-1)=-EX-X(KA-1)*EX GA(KA)=9.0D 0*X(KA)**2+D1S+D2S+4.0D 0+X(KA-1)*EX GA(KA+1)=2.0D 0-D1S+D2S ELSE EX=EXP(X(KA-1)-X(KA)) GA(KA-1)=-EX-X(KA-1)*EX GA(KA)=4.0D 0+X(KA-1)*EX ENDIF RETURN 50 IF (MOD(KA,2).EQ.1) THEN GA(KA)=0.0D 0 IF (KA.NE.1) THEN D1S=COS(X(KA-2)-X(KA-1)-X(KA))*SIN(X(KA-2)+X(KA-1)-X(KA)) D2S=SIN(X(KA-2)-X(KA-1)-X(KA))*COS(X(KA-2)+X(KA-1)-X(KA)) GA(KA-2)=-18.0D 0*(X(KA-2)-X(KA))**2-2.0D 0*(D1S+D2S) GA(KA-1)=-4.0D 0+2.0D 0*(D1S-D2S) GA(KA)=GA(KA)+18.0D 0*(X(KA-2)-X(KA))**2+2.0D 0*(D1S+D2S) ENDIF IF (KA.NE.N) THEN D1S=COS(X(KA)-X(KA+1)-X(KA+2))*SIN(X(KA)+X(KA+1)-X(KA+2)) D2S=SIN(X(KA)-X(KA+1)-X(KA+2))*COS(X(KA)+X(KA+1)-X(KA+2)) GA(KA)=GA(KA)+9.0D 0*(X(KA)-X(KA+2))**2+D1S+D2S GA(KA+1)=2.0D 0-D1S+D2S GA(KA+2)=-9.0D 0*(X(KA)-X(KA+2))**2-D1S-D2S ENDIF ELSE EX=EXP(X(KA-1)-X(KA)-X(KA+1)) W=X(KA-1)-X(KA+1) GA(KA-1)=-EX-W*EX GA(KA)=4.0D 0+W*EX GA(KA+1)=EX+W*EX ENDIF RETURN 60 H=2.0D 0 IF (KA.EQ.1) THEN GA(1)=2.0D 0*((3.0D 0-H*X(1))*X(1)-2.0D 0*X(2)+1.0D 0)* & (3.0D 0-2.0D 0*H*X(1)) GA(2)=-4.0D 0*((3.0D 0-H*X(1))*X(1)-2.0D 0*X(2)+1.0D 0) ELSE IF (KA.LE.N-1) THEN GA(KA-1)=-2.0D 0* & ((3.0D 0-H*X(KA))*X(KA)-X(KA-1)-2.0D 0*X(KA+1)+1.0D 0) GA(KA)=2.0D 0* & ((3.0D 0-H*X(KA))*X(KA)-X(KA-1)-2.0D 0*X(KA+1)+1.0D 0)* & (3.0D 0-2.0D 0*H*X(KA)) GA(KA+1)=-4.0D 0* & ((3.0D 0-H*X(KA))*X(KA)-X(KA-1)-2.0D 0*X(KA+1)+1.0D 0) ELSE GA(N-1)=-2.0D 0*((3.0D 0-H*X(N))*X(N)-X(N-1)+1.0D 0) GA(N)=2.0D 0* & ((3.0D 0-H*X(N))*X(N)-X(N-1)+1.0D 0)* & (3.0D 0-2.0D 0*H*X(N)) ENDIF RETURN 70 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 80 IF (KA.LT.2) THEN GA(KA)=4.0D 0 GA(KA+1)=-8.0D 0*X(KA+1)+1.0D 0 GA(KA+2)=-2.0D 0*X(KA+2) ELSE IF (KA.LT.3) 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)+1.0D 0 GA(KA+2)=-2.0D 0*X(KA+2) ELSE IF (KA.LT.N-1) THEN GA(KA-2)=-1.0D 0 GA(KA-1)=-8.0D 0*X(KA)+2.0D 0*X(KA-1) 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)+1.0D 0 GA(KA+2)=-2.0D 0*X(KA+2) ELSE IF (KA.LT.N) THEN GA(KA-2)=-1.0D 0 GA(KA-1)=-8.0D 0*X(KA)+2.0D 0*X(KA-1) 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-2)=-1.0D 0 GA(KA-1)=-8.0D 0*X(KA)+2.0D 0*X(KA-1) GA(KA)=24.0D 0*X(KA)**2-8.0D 0*X(KA-1)+2.0D 0 ENDIF RETURN 90 IF (KA.LT.2) THEN GA(KA)=4.0D 0 GA(KA+1)=-8.0D 0*X(KA+1)+1.0D 0 GA(KA+2)=-2.0D 0*X(KA+2)+1.0D 0 GA(KA+3)=-2.0D 0*X(KA+3) ELSE IF (KA.LT.3) THEN GA(KA-1)=-8.0D 0*X(KA)+2.0D 0*X(KA-1) 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)+1.0D 0 GA(KA+2)=-2.0D 0*X(KA+2)+1.0D 0 GA(KA+3)=-2.0D 0*X(KA+3) ELSE IF (KA.LT.4) THEN GA(KA-2)=2.0D 0*X(KA-2)-1.0D 0 GA(KA-1)=-8.0D 0*X(KA)+2.0D 0*X(KA-1) 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)+1.0D 0 GA(KA+2)=-2.0D 0*X(KA+2)+1.0D 0 GA(KA+3)=-2.0D 0*X(KA+3) ELSE IF (KA.LT.N-2) THEN GA(KA-3)=-1.0D 0 GA(KA-2)=2.0D 0*X(KA-2)-1.0D 0 GA(KA-1)=-8.0D 0*X(KA)+2.0D 0*X(KA-1) 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)+1.0D 0 GA(KA+2)=-2.0D 0*X(KA+2)+1.0D 0 GA(KA+3)=-2.0D 0*X(KA+3) ELSE IF (KA.LT.N-1) THEN GA(KA-3)=-1.0D 0 GA(KA-2)=2.0D 0*X(KA-2)-1.0D 0 GA(KA-1)=-8.0D 0*X(KA)+2.0D 0*X(KA-1) 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)+1.0D 0 GA(KA+2)=-2.0D 0*X(KA+2)+1.0D 0 ELSE IF (KA.LT.N) THEN GA(KA-3)=-1.0D 0 GA(KA-2)=2.0D 0*X(KA-2)-1.0D 0 GA(KA-1)=-8.0D 0*X(KA)+2.0D 0*X(KA-1) 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)+1.0D 0 ELSE GA(KA-3)=-1.0D 0 GA(KA-2)=2.0D 0*X(KA-2)-1.0D 0 GA(KA-1)=-8.0D 0*X(KA)+2.0D 0*X(KA-1) GA(KA)=24.0D 0*X(KA)**2-8.0D 0*X(KA-1)+2.0D 0 ENDIF RETURN 100 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.5D 0 GA(N)=-4.0D 0*X(N)+2.0D 0 ENDIF RETURN 110 IF(MOD(KA,2).EQ.1) THEN GA(KA)=1.0D 0 GA(KA+1)=10.0D 0*X(KA+1)-3.0D 0*X(KA+1)**2-2.0D 0 ELSE GA(KA-1)=1.0D 0 GA(KA)=3.0D 0*X(KA)**2+2.0D 0*X(KA)-1.4D 1 ENDIF RETURN 120 IF(MOD(KA,4).EQ.1) THEN GA(KA)=1.0D 0 GA(KA+1)=1.0D 1 ELSE IF(MOD(KA,4).EQ.2) THEN GA(KA+1)=2.23606797749979D 0 GA(KA+2)=-GA(KA+1) ELSE IF(MOD(KA,4).EQ.3) THEN GA(KA-1)=2.0D 0*(X(KA-1)-2.0D 0*X(KA)) GA(KA)= -4.0D 0*(X(KA-1)-2.0D 0*X(KA)) ELSE GA(KA-3)=3.16227766016838D 0*2.0D 0*(X(KA-3)-X(KA)) GA(KA)= -3.16227766016838D 0*2.0D 0*(X(KA-3)-X(KA)) ENDIF RETURN 130 IF (MOD(KA,4).EQ.1) THEN GA(KA)=2.0D 0*(EXP(X(KA))-X(KA+1))*EXP(X(KA)) IF (GA(KA).EQ.0.0D 0) GA(KA)=1.0D-32 GA(KA+1)=-2.0D 0*(EXP(X(KA))-X(KA+1)) ELSE IF (MOD(KA,4).EQ.2) THEN GA(KA)=3.0D 1*(X(KA)-X(KA+1))**2 IF (GA(KA).EQ.0.0D 0) GA(KA)=1.0D-32 GA(KA+1)=-GA(KA) ELSE IF (MOD(KA,4).EQ.3) THEN GA(KA)=2.0D 0*SIN(X(KA)-X(KA+1))/(COS(X(KA)-X(KA+1)))**3 IF (GA(KA).EQ.0.0D 0) GA(KA)=1.0D-32 GA(KA+1)=-GA(KA) ELSE GA(KA)=1.0D 0 ENDIF RETURN 140 IF (KA.LT.2) THEN GA(KA)=X(KA)-3.0D 0 GA(KA+1)=2.0D 0 ELSE IF (KA.LT.N) THEN GA(KA-1)=1.0D 0 GA(KA)=X(KA)-3.0D 0 GA(KA+1)=2.0D 0 ELSE GA(KA-1)=1.0D 0 GA(KA)=X(KA)-3.0D 0 ENDIF RETURN 150 DO 151 J=MAX(1,KA-5),MIN(N,KA+1) GA(J)=1.0D 0+2.0D 0*X(J) 151 CONTINUE GA(KA)=GA(KA)+2.0D 0+15.0D 0*X(KA)**2 RETURN 160 IF(MOD(KA,2).EQ.1) THEN GA(KA)=1.0D 4*X(KA+1) GA(KA+1)=1.0D 4*X(KA) ELSE GA(KA-1)=-EXP(-X(KA-1)) GA(KA)=-EXP(-X(KA)) ENDIF RETURN 170 IF(MOD(KA,4).EQ.1) THEN GA(KA)=-2.0D 2*(X(KA+1)-3.0D 0*X(KA)**2)+1.0D 0 GA(KA+1)=-2.0D 2*X(KA) ELSE IF(MOD(KA,4).EQ.2) THEN GA(KA-1)=-4.0D 2*X(KA-1) GA(KA)=2.202D 2 GA(KA+2)=1.98D 1 ELSE IF(MOD(KA,4).EQ.3) THEN GA(KA)=-1.8D 2*(X(KA+1)-3.0D 0*X(KA)**2)+1.0D 0 GA(KA+1)=-1.8D 2*X(KA) ELSE GA(KA-2)=1.98D 1 GA(KA-1)=-3.6D 2*X(KA-1) GA(KA)=2.002D 2 ENDIF RETURN 180 IF (KA.LT.2) THEN GA(KA+1)=EXP(COS(DBLE(KA)*(X(KA)+X(KA+1))))* & DBLE(KA)*SIN(DBLE(KA)*(X(KA)+X(KA+1))) GA(KA)=GA(KA+1)+1.0D 0 ELSEIF (KA.LT.N) THEN GA(KA-1)=EXP(COS(DBLE(KA)*(X(KA-1)+X(KA)+X(KA+1))))* & SIN(DBLE(KA)*(X(KA-1)+X(KA)+X(KA+1)))*DBLE(KA) GA(KA+1)=GA(KA-1) GA(KA)=1.0D 0+GA(KA-1) ELSE GA(KA-1)=EXP(COS(DBLE(KA)*(X(KA-1)+X(KA))))* & SIN(DBLE(KA)*(X(KA-1)+X(KA)))*DBLE(KA) GA(KA)=1.0D 0+GA(KA-1) ENDIF RETURN 190 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 200 IF(KA.EQ.1) THEN GA(KA)=3.0D 0*(X(KA+1)-4.0D 0*X(KA)) GA(KA+1)=3.0D 0*X(KA)+0.5D 0*X(KA+1) ELSEIF(KA.EQ.N) THEN GA(KA-1)=3.0D 0*X(KA)-0.5D 0*(2.0D 1-X(KA-1)) GA(KA)=3.0D 0*(2.0D 1-4.0D 0*X(KA)+X(KA-1)) ELSE GA(KA-1)=3.0D 0*X(KA)-0.5D 0*(X(KA+1)-X(KA-1)) GA(KA)=3.0D 0*(X(KA+1)-4.0D 0*X(KA)+X(KA-1)) GA(KA+1)=3.0D 0*X(KA)+0.5D 0*(X(KA+1)-X(KA-1)) ENDIF RETURN 210 H=1.0D 0/DBLE(N+1) IF (KA.LT.2) THEN GA(KA)=2.0D 0+PAR**2*H**2*COSH(PAR*X(KA)) GA(KA+1)=-1.0D 0 ELSE IF (KA.LT.N) THEN GA(KA-1)=-1.0D 0 GA(KA)=2.0D 0+PAR**2*H**2*COSH(PAR*X(KA)) GA(KA+1)=-1.0D 0 ELSE GA(KA)=2.0D 0+PAR**2*H**2*COSH(PAR*X(KA)) GA(KA-1)=-1.0D 0 ENDIF RETURN 220 GA(KA)=6.0D 0 C FA=6.0D 0*X(KA) A1=0.0D 0 A2=0.0D 0 A3=0.0D 0 GA1(1)=0.0D 0 GA1(2)=0.0D 0 GA2(1)=0.0D 0 GA2(2)=0.0D 0 IF (KA.GT.1) THEN GA(KA-1)=-4.0D 0+PAR*X(KA) A1=A1-X(KA-1) A2=A2+X(KA-1) A3=A3+2.0D 0*X(KA-1) GA1(1)=-1.0D 0 GA2(1)= 1.0D 0 ENDIF IF (KA.GT.2) THEN GA(KA-2)=1.0D 0-0.5D 0*PAR*X(KA) A3=A3-X(KA-2) ENDIF IF (KA.LT.N-1) THEN GA(KA+2)=1.0D 0+0.5D 0*PAR*X(KA) A3=A3+X(KA+2) ENDIF IF (KA.LT.N) THEN GA(KA+1)=-4.0D 0-PAR*X(KA) A1=A1+X(KA+1) A2=A2+X(KA+1) A3=A3-2.0D 0*X(KA+1) GA1(2)= 1.0D 0 GA2(2)= 1.0D 0 ENDIF IF (KA.GE.N-1) THEN A3=A3+1.0D 0 ENDIF IF (KA.GE.N) THEN A1=A1+1.0D 0 A2=A2+1.0D 0 A3=A3-2.0D 0 ENDIF GA(KA)=GA(KA)+0.5D 0*PAR*A3 IF (KA.GT.1) & GA(KA-1)=GA(KA-1)-0.5D 0*PAR*(GA1(1)*A2+A1*GA2(1)) IF (KA.LT.N) & GA(KA+1)=GA(KA+1)-0.5D 0*PAR*(GA1(2)*A2+A1*GA2(2)) RETURN 230 H=1.0D 0/(M+1) IF(KA.LE.M) THEN J=KA+M GA(KA)=6.0D 0 GA(J)=0.0D 0 A1=0.0D 0 A2=0.0D 0 IF (KA.EQ.1) THEN A1=A1+1.0D 0 ENDIF IF (KA.GT.1) THEN A1=A1-X(J-1) A2=A2+2.0D 0*X(KA-1) GA(KA-1)=-4.0D 0+PAR*H*X(KA) GA(J-1)=-0.5D 0*PAR*H**3*X(J) ENDIF IF (KA.GT.2) THEN A2=A2-X(KA-2) GA(KA-2)=1.0D 0-0.5D 0*PAR*H*X(KA) ENDIF IF (KA.LT.M-1) THEN A2=A2+X(KA+2) GA(KA+2)=1.0D 0+0.5D 0*PAR*H*X(KA) ENDIF IF (KA.LT.M) THEN A1=A1+X(J+1) A2=A2-2.0D 0*X(KA+1) GA(KA+1)=-4.0D 0-PAR*H*X(KA) GA(J+1)= 0.5D 0*PAR*H**3*X(J) ENDIF IF (KA.EQ.M) THEN A1=A1+1.0D 0 ENDIF GA(KA)=GA(KA)+0.5D 0*PAR*H*A2 GA(J)=GA(J)+0.5D 0*PAR*H**3*A1 ELSE J=KA-M GA(KA)=-2.0D 0 GA(J)=0.0D 0 A1=0.0D 0 A2=0.0D 0 IF (J.EQ.1) THEN A2=A2+1.0D 0 ENDIF IF (J.GT.1) THEN A1=A1-X(J-1) A2=A2-X(KA-1) GA(KA-1)=1.0D 0-0.5D 0*PAR*H*X(J) GA(J-1)=-0.5D 0*PAR*H*X(KA) ENDIF IF (J.LT.M) THEN A1=A1+X(J+1) A2=A2+X(KA+1) GA(KA+1)=1.0D 0+0.5D 0*PAR*H*X(J) GA(J+1)= 0.5D 0*PAR*H*X(KA) ENDIF IF (J.EQ.M) THEN A2=A2+1.0D 0 ENDIF GA(KA)=GA(KA)+0.5D 0*PAR*H*A1 GA(J)=GA(J)+0.5D 0*PAR*H*A2 ENDIF RETURN 240 GA(KA)=4.0D 0-PAR*EXP(X(KA)) J=(KA-1)/M+1 I=KA-(J-1)*M IF(J.GT.1) GA(KA-M)=-1.0D 0 IF(I.GT.1) GA(KA-1)=-1.0D 0 IF(I.LT.M) GA(KA+1)=-1.0D 0 IF(J.LT.M) GA(KA+M)=-1.0D 0 RETURN 250 GA(KA)=4.0D 0 J=(KA-1)/M+1 I=KA-(J-1)*M GA(KA)=GA(KA)+3.0D 0*PAR*X(KA)**2/(1.0D 0+PAR*DBLE(I)**2+ & PAR*DBLE(J)**2) IF(I.GT.1) GA(KA-1)=-1.0D 0 IF(I.LT.M) GA(KA+1)=-1.0D 0 IF(J.GT.1) GA(KA-M)=-1.0D 0 IF(J.LT.M) GA(KA+M)=-1.0D 0 RETURN 260 GA(KA)=4.0D 0-2.0D 0*PI*PAR*COS(2.0D 0*PI*X(KA)) J=(KA-1)/M+1 I=KA-(J-1)*M A1=DBLE(I)/DBLE(M+1) A2=DBLE(J)/DBLE(M+1) IF(I.EQ.1) GA(KA+1)=-1.0D 0-PI*DBLE(M+1)*PAR*COS(PI*X(KA+1)* & DBLE(M+1)) IF(I.GT.1.AND.I.LT.M) THEN GA(KA-1)=-1.0D 0+PI*DBLE(M+1)*PAR*COS(PI*(X(KA+1)-X(KA-1))* & DBLE(M+1)) GA(KA+1)=-1.0D 0-PI*DBLE(M+1)*PAR*COS(PI*(X(KA+1)-X(KA-1))* & DBLE(M+1)) ENDIF IF(I.EQ.M) GA(KA-1)=-1.0D 0+PI*DBLE(M+1)*PAR*COS(PI*X(KA-1)* & DBLE(M+1)) IF(J.EQ.1) GA(KA+M)=-1.0D 0-PI*DBLE(M+1)*PAR*COS(PI*X(KA+M)* & DBLE(M+1)) IF(J.GT.1.AND.J.LT.M) THEN GA(KA-M)=-1.0D 0+PI*DBLE(M+1)*PAR*COS(PI*(X(KA+M)-X(KA-M))* & DBLE(M+1)) GA(KA+M)=-1.0D 0-PI*DBLE(M+1)*PAR*COS(PI*(X(KA+M)-X(KA-M))* & DBLE(M+1)) ENDIF IF(J.EQ.M) GA(KA-M)=-1.0D 0+PI*DBLE(M+1)*PAR*COS(PI*X(KA-M)* & DBLE(M+1)) RETURN 270 GA(KA)=1.6D 1*X(KA) J=(KA-1)/M+1 I=KA-(J-1)*M IF(I.EQ.1) THEN GA(KA)=GA(KA)-2.0D 0*(X(KA+1)+1.0D 0)-3.0D 0*X(KA)* & (X(KA+1)-1.0D 0)*PAR GA(KA+1)=-2.0D 0*X(KA)-(X(KA+1)-1.0D 0)-1.5D 0*X(KA)**2*PAR ENDIF IF(I.GT.1.AND.I.LT.M) THEN GA(KA)=GA(KA)-2.0D 0*(X(KA+1)+X(KA-1))-3.0D 0*X(KA)* & (X(KA+1)-X(KA-1))*PAR GA(KA-1)=-2.0D 0*X(KA)+(X(KA+1)-X(KA-1))+1.5D 0*X(KA)**2*PAR GA(KA+1)=-2.0D 0*X(KA)-(X(KA+1)-X(KA-1))-1.5D 0*X(KA)**2*PAR ENDIF IF(I.EQ.M) THEN GA(KA)=GA(KA)-2.0D 0*X(KA-1)+3.0D 0*X(KA)*X(KA-1)*PAR GA(KA-1)=-2.0D 0*X(KA)-X(KA-1)+1.5D 0*X(KA)**2*PAR ENDIF IF(J.EQ.1) THEN GA(KA)=GA(KA)-2.0D 0*(X(KA+M)+1.0D 0) GA(KA+M)=-2.0D 0*X(KA)-(X(KA+M)-1.0D 0) ENDIF IF(J.GT.1.AND.J.LT.M) THEN GA(KA)=GA(KA)-2.0D 0*(X(KA+M)+X(KA-M)) GA(KA-M)=-2.0D 0*X(KA)+(X(KA+M)-X(KA-M)) GA(KA+M)=-2.0D 0*X(KA)-(X(KA+M)-X(KA-M)) ENDIF IF(J.EQ.M) THEN GA(KA)=GA(KA)-2.0D 0*X(KA-M) GA(KA-M)=-2.0D 0*X(KA)-X(KA-M) ENDIF RETURN 280 GA(KA)=4.0D 0 J=(KA-1)/M+1 I=KA-(J-1)*M A1=PAR*DBLE(I) A2=PAR*DBLE(J) A3=0.0D 0 IF(I.GT.1) THEN GA(KA-1)=-1.0D 0-2.0D 1*PAR*X(KA) A3=A3-X(KA-1) ENDIF IF(I.LT.M) THEN GA(KA+1)=-1.0D 0+2.0D 1*PAR*X(KA) A3=A3+X(KA+1) ENDIF IF(J.GT.1) THEN GA(KA-M)=-1.0D 0-2.0D 1*PAR*X(KA) A3=A3-X(KA-M) ENDIF IF(J.LT.M) THEN GA(KA+M)=-1.0D 0+2.0D 1*PAR*X(KA) A3=A3+X(KA+M) ENDIF GA(KA)=GA(KA)+2.0D 1*PAR*A3 RETURN 290 GA(KA)=2.0D 1-PAR J=(KA-1)/M+1 I=KA-(J-1)*M IF (J.GT.2) THEN GA(KA-M-M)=1.0D 0 ENDIF IF (J.GT.1) THEN IF (I.GT.1) THEN GA(KA-M-1)=2.0D 0 ENDIF GA(KA-M)=-8.0D 0 IF (I.LT.M) THEN GA(KA-M+1)=2.0D 0 ENDIF ENDIF IF (I.GT.1) THEN IF (I.GT.2) THEN GA(KA-2)=1.0D 0 ENDIF GA(KA-1)=-8.0D 0 ENDIF IF (I.LT.M) THEN GA(KA+1)=-8.0D 0 IF (I.LT.M-1) THEN GA(KA+2)=1.0D 0 ENDIF ENDIF IF (J.LT.M) THEN IF (I.GT.1) THEN GA(KA+M-1)=2.0D 0 ENDIF GA(KA+M)=-8.0D 0 IF (I.LT.M) THEN GA(KA+M+1)=2.0D 0 ENDIF ENDIF IF (J.LT.M-1) THEN GA(KA+M+M)=1.0D 0 ENDIF RETURN 300 H=0.5D 0/DBLE(M+2) J=(KA-1)/M+1 I=KA-(J-1)*M GA(KA)=2.0D 1 A1=0.0D 0 A2=0.0D 0 A3=0.0D 0 A4=0.0D 0 GA1(1)=0.0D 0 GA1(2)=0.0D 0 GA2(1)=0.0D 0 GA2(2)=0.0D 0 DO 301 K=1,6 GA3(K)=0.0D 0 GA4(K)=0.0D 0 301 CONTINUE IF (J.GT.2) THEN GA(KA-M-M)=1.0D 0 GA4(1)=GA4(1)+1.0D 0 A4=A4+X(KA-M-M) ENDIF IF (J.GT.1) THEN IF (I.GT.1) THEN GA(KA-M-1)=2.0D 0 GA3(1)=GA3(1)+1.0D 0 GA4(2)=GA4(2)+1.0D 0 A3=A3+X(KA-M-1) A4=A4+X(KA-M-1) ENDIF GA(KA-M)=-8.0D 0 GA1(1)=GA1(1)-1.0D 0 A1=A1-X(KA-M) IF (I.LT.M) THEN GA(KA-M+1)=2.0D 0 GA3(2)=GA3(2)-1.0D 0 GA4(3)=GA4(3)+1.0D 0 A3=A3-X(KA-M+1) A4=A4+X(KA-M+1) ENDIF ENDIF IF (I.GT.1) THEN IF (I.GT.2) THEN GA(KA-2)=1.0D 0 GA3(3)=GA3(3)+1.0D 0 A3=A3+X(KA-2) ENDIF GA(KA-1)=-8.0D 0 GA2(1)=GA2(1)-1.0D 0 A2=A2-X(KA-1) ENDIF IF (I.LT.M) THEN GA(KA+1)=-8.0D 0 GA2(2)=GA2(2)+1.0D 0 A2=A2+X(KA+1) IF (I.LT.M-1) THEN GA(KA+2)=1.0D 0 GA3(4)=GA3(4)-1.0D 0 A3=A3-X(KA+2) ENDIF ENDIF IF (J.LT.M) THEN IF (I.GT.1) THEN GA(KA+M-1)=2.0D 0 GA3(5)=GA3(5)+1.0D 0 GA4(4)=GA4(4)-1.0D 0 A3=A3+X(KA+M-1) A4=A4-X(KA+M-1) ENDIF GA(KA+M)=-8.0D 0 GA1(2)=GA1(2)+1.0D 0 A1=A1+X(KA+M) IF (I.LT.M) THEN GA(KA+M+1)=2.0D 0 GA3(6)=GA3(6)-1.0D 0 GA4(5)=GA4(5)-1.0D 0 A3=A3-X(KA+M+1) A4=A4-X(KA+M+1) ENDIF ENDIF IF (J.LT.M-1) THEN GA(KA+M+M)=1.0D 0 GA4(6)=GA4(6)-1.0D 0 A4=A4-X(KA+M+M) ENDIF IF (J.EQ.M) THEN IF (I.GT.1) THEN A3=A3-H A4=A4+H ENDIF A1=A1-H IF (I.LT.M) THEN A3=A3+H A4=A4+H ENDIF A4=A4-H ENDIF IF (J.EQ.M-1) THEN A4=A4+H ENDIF IF (KA.GT.M+M) & GA(KA-M-M)=GA(KA-M-M)+0.25D 0*PAR*(-A2*GA4(1)) IF (KA.GT.M+1) & GA(KA-M-1)=GA(KA-M-1)+0.25D 0*PAR*(+A1*GA3(1)-A2*GA4(2)) IF (KA.GT.M) & GA(KA-M)=GA(KA-M)+0.25D 0*PAR*(GA1(1)*A3) IF (KA.GT.M-1) & GA(KA-M+1)=GA(KA-M+1)+0.25D 0*PAR*(+A1*GA3(2)-A2*GA4(3)) IF (KA.GT.2) & GA(KA-2)=GA(KA-2)+0.25D 0*PAR*(+A1*GA3(3)) IF (KA.GT.1) & GA(KA-1)=GA(KA-1)+0.25D 0*PAR*(-GA2(1)*A4) IF (KA.LE.N-1) & GA(KA+1)=GA(KA+1)+0.25D 0*PAR*(-GA2(2)*A4) IF (KA.LE.N-2) & GA(KA+2)=GA(KA+2)+0.25D 0*PAR*(+A1*GA3(4)) IF (KA.LE.N-M+1) & GA(KA+M-1)=GA(KA+M-1)+0.25D 0*PAR*(+A1*GA3(5)-A2*GA4(4)) IF (KA.LE.N-M) & GA(KA+M)=GA(KA+M)+0.25D 0*PAR*(GA1(2)*A3) IF (KA.LE.N-M-1) & GA(KA+M+1)=GA(KA+M+1)+0.25D 0*PAR*(+A1*GA3(6)-A2*GA4(5)) IF (KA.LE.N-M-M) & GA(KA+M+M)=GA(KA+M+M)+0.25D 0*PAR*(-A2*GA4(6)) RETURN 310 H=1.0D 0/DBLE(N+1) A1=DBLE(KA)*H A2=(A1-0.5D 0)**2 IF (A1.GE.0.5D 0) THEN A3= 1.0D 6 ELSE A3=-1.0D 6 ENDIF IF (KA.LT.2) THEN GA(KA)=2.0D 0+ & H**2*(3.0D 0*X(KA)**2*EXP(X(KA))+X(KA)**3*EXP(X(KA))) GA(KA+1)=-1.0D 0+ & H**2*5.0D 8*EXP(-1.0D 4*A2)*SQRT(ABS(A1-0.5D 0)) ELSEIF (KA.LT.N) THEN GA(KA-1)=-1.0D 0- & H**2*5.0D 8*EXP(-1.0D 4*A2)*SQRT(ABS(A1-0.5D 0)) GA(KA)=2.0D 0+ & H**2*(3.0D 0*X(KA)**2*EXP(X(KA))+X(KA)**3*EXP(X(KA))) GA(KA+1)=-1.0D 0+ & H**2*5.0D 8*EXP(-1.0D 4*A2)*SQRT(ABS(A1-0.5D 0)) ELSE GA(KA-1)=-1.0D 0+ & H**2*5.0D 8*EXP(-1.0D 4*A2)*SQRT(ABS(A1-0.5D 0)) GA(KA)=2.0D 0+ & H**2*(3.0D 0*X(KA)**2*EXP(X(KA))+X(KA)**3*EXP(X(KA))) ENDIF RETURN 320 H=1.0D 0/DBLE(N+1) A1=DBLE(KA)*H A2=(A1-0.5D 0)**2 IF (KA.LT.2) THEN GA(KA+1)=-1.0D 0 GA(KA)=2.0D 0+H**2*(3*X(KA)**2+2.0D-4*(2.0D-4*A2-1.0D 0)) ELSEIF (KA.LT.N) THEN GA(KA-1)=-1.0D 0 GA(KA)=2.0D 0+H**2*(3*X(KA)**2+2.0D-4*(2.0D-4*A2-1.0D 0)) GA(KA+1)=-1.0D 0 ELSE GA(KA-1)=-1.0D 0 GA(KA)=2.0D 0+H**2*(3*X(KA)**2+2.0D-4*(2.0D-4*A2-1.0D 0)) ENDIF RETURN 410 IF (KA.EQ.1) THEN GA(1)=-1.0D 0 ELSE GA(KA)=20.0D 0*DBLE(KA-1)*(X(KA)-X(KA-1)) GA(KA-1)=-20.0D 0*DBLE(KA-1)*(X(KA)-X(KA-1)) ENDIF RETURN 420 IF (KA.EQ.N) THEN GA(1)=-0.20D 0*X(1) GA(N)=1.0D 0 ELSE GA(KA)=1.0D 0 GA(KA+1)=-0.2D 0*X(KA+1) ENDIF RETURN 430 S=(1.0D 0/DBLE(N+1))**2*EXP(X(KA)) IF (N.EQ.1) THEN GA(KA)=-(2.0D 0+S) ELSE IF (KA.EQ.1) THEN GA(KA)=-(2.0D 0+S) GA(KA+1)=1.0D 0 ELSE IF (KA.EQ.N) THEN GA(KA)=-(2.0D 0+S) GA(KA-1)=1.0D 0 ELSE GA(KA)=-(2.0D 0+S) GA(KA-1)=1.0D 0 GA(KA+1)=1.0D 0 ENDIF RETURN 440 S=0.1D 0 IF (N.EQ.1) THEN GA(KA)=3.0D 0-2.0D 0*S*X(KA) ELSE IF (KA.EQ.1) THEN GA(KA)=3.0D 0-2.0D 0*S*X(KA) GA(KA+1)=-2.0D 0 ELSE IF (KA.EQ.N) THEN GA(KA)=3.0D 0-2.0D 0*S*X(KA) GA(KA-1)=-1.0D 0 ELSE GA(KA)=3.0D 0-2.0D 0*S*X(KA) GA(KA-1)=-1.0D 0 GA(KA+1)=-2.0D 0 ENDIF RETURN 450 S1=1.0D 0 S2=1.0D 0 S3=1.0D 0 J1=3 J2=3 IF (KA-J1.GT.1) THEN I1=KA-J1 ELSE I1=1 ENDIF IF (KA+J2.LT.N) THEN I2=KA+J2 ELSE I2=N ENDIF S=0.0D 0 DO 451 J=I1,I2 IF (J.NE.KA) S=S+X(J)+X(J)**2 451 CONTINUE GA(KA)=S1+3.0D 0*S2*X(KA)**2 DO 452 J=I1,I2 IF (J.NE.KA) GA(J)=-S3*(1.0D 0+2.0D 0*X(J)) 452 CONTINUE RETURN 460 IF (KA.EQ.1) THEN GA(1)=2.0D 0*X(1) ELSE GA(KA-1)=2.0D 0*X(KA-1) GA(KA)=1.0D 0/X(KA) ENDIF RETURN 470 IF (KA.EQ.1) THEN GA(1)=1.0D 0 ELSE GA(KA)=1.0D 0 GA(KA-1)=-SIN(X(KA-1)) ENDIF RETURN 480 S=(1.0D 0/DBLE(N+1))**2 IF (N.EQ.1) THEN GA(KA)=2.0D 0+S*(1.0D 0+COS(X(KA))) ELSE IF (KA.EQ.1) THEN GA(KA)=2.0D 0+S*(1.0D 0+COS(X(KA))) GA(KA+1)=-1.0D 0 ELSE IF (KA.EQ.N) THEN GA(KA)=2.0D 0+S*(1.0D 0+COS(X(KA))) GA(KA-1)=-1.0D 0 ELSE GA(KA)=2.0D 0+S*(1.0D 0+COS(X(KA))) GA(KA-1)=-1.0D 0 GA(KA+1)=-1.0D 0 ENDIF RETURN 490 IF (KA-5.GT.1) THEN I1=KA-5 ELSE I1=1 ENDIF IF (KA+1.LT.N) THEN I2=KA+1 ELSE I2=N ENDIF S=0.0D 0 DO 491 J=I1,I2 IF (J.NE.KA) S=S+X(J)*(1.0D 0+X(J)) 491 CONTINUE GA(KA)=2.0D 0+15.0D 0*X(KA)**2 DO 492 J=I1,I2 IF (J.NE.KA) GA(J)=-(1.0D 0+2.0D 0*X(J)) 492 CONTINUE RETURN 500 H=1.0D 0/DBLE(N+1) T=2.0D 0*H**2 IF (KA.EQ.1) THEN GA(KA)=2.0D 0*(1.0D 0-T*X(KA)) GA(KA+1)=-(1.0D 0+H) ELSE IF (1.LT.KA.AND.KA.LT.N) THEN GA(KA)=2.0D 0*(1.0D 0-T*X(KA)) GA(KA-1)=-(1.0D 0-H) GA(KA+1)=-(1.0D 0+H) ELSE IF (KA.EQ.N) THEN GA(KA)=2.0D 0*(1.0D 0-T*X(KA)) GA(KA-1)=-(1.0D 0-H) ENDIF RETURN 520 A=-5.0D-1 B=5.0D-1 AL=0.0D 0 BE=25.0D 0 GB=20.0D 0 CA=0.3D 0 CB=0.3D 0 H=(B-A)/DBLE(N+1) T=A+DBLE(KA)*H H=H**2 S=DBLE(KA)/DBLE(N+1) U=AL*(1.0D 0-S)+BE*S+X(KA) FF=CB*EXP(GB*(U-BE))-CA*EXP(GB*(AL-U)) FG=GB*(CB*EXP(GB*(U-BE))+CA*EXP(GB*(AL-U))) IF (T.LE.0) THEN FF=FF+CA ELSE FF=FF-CB ENDIF IF (N.EQ.1) THEN GA(KA)=2.0D 0+H*FG ELSE IF (KA.EQ.1) THEN GA(KA)=2.0D 0+H*FG GA(KA+1)=-1.0D 0 ELSE IF (KA.LT.N) THEN GA(KA)=2.0D 0+H*FG GA(KA-1)=-1.0D 0 GA(KA+1)=-1.0D 0 ELSE GA(KA)=2.0D 0+H*FG GA(KA-1)=-1.0D 0 ENDIF RETURN 530 AL1=0.0D 0 AL2=0.0D 0 BE1=0.0D 0 BE2=0.0D 0 N1=N/2 H=1.0D 0/DBLE(N1+1) T=DBLE(KA)*H IF (KA.EQ.1) THEN S1=2.0D 0*X(KA)-X(KA+1) B=AL1 ELSE IF (KA.EQ.N1+1) THEN S1=2.0D 0*X(KA)-X(KA+1) B=AL2 ELSE IF (KA.EQ.N1) THEN S1=-X(KA-1)+2.0D 0*X(KA) B=BE1 ELSE IF (KA.EQ.N) THEN S1=-X(KA-1)+2.0D 0*X(KA) B=BE2 ELSE S1=-X(KA-1)+2.0D 0*X(KA)-X(KA+1) B=0.0D 0 ENDIF IF (KA.LE.N1) THEN S2=X(KA)**2+X(KA)+0.1D 0*X(N1+KA)**2-1.2D 0 ELSE S2=0.2D 0*X(KA-N1)**2+X(KA)**2+2.0D 0*X(KA)-0.6D 0 ENDIF H=1.0D 0/DBLE(N1+1)**2 IF (KA.EQ.1) THEN GA(KA)=2.0D 0+H*(2.0D 0*X(KA)+1.0D 0) GA(KA+1)=-1.0D 0 GA(N1+KA)=H*0.2D 0*X(N1+KA) ELSE IF (KA.EQ.N1+1) THEN GA(1)=H*0.4D 0*X(1) GA(KA)=2.0D 0+H*(2.0D 0*X(KA)+2.0D 0) GA(KA+1)=-1.0D 0 ELSE IF (KA.EQ.N1) THEN GA(KA-1)=-1.0D 0 GA(KA)=2.0D 0+H*(2.0D 0*X(KA)+1.0D 0) GA(N1+KA)=H*0.2D 0*X(N1+KA) ELSE IF (KA.EQ.N) THEN GA(N1)=H*0.4D 0*X(N1) GA(KA-1)=-1.0D 0 GA(KA)=2.0D 0+H*(2.0D 0*X(KA)+2.0D 0) ELSE IF (KA.LT.N1) THEN GA(KA-1)=-1.0D 0 GA(KA)=2.0D 0+H*(2.0D 0*X(KA)+1.0D 0) GA(KA+1)=-1.0D 0 GA(N1+KA)=H*0.2D 0*X(N1+KA) ELSE GA(KA-N1)=H*0.4D 0*X(KA-N1) GA(KA-1)=-1.0D 0 GA(KA)=2.0D 0+H*(2.0D 0*X(KA)+2.0D 0) GA(KA+1)=-1.0D 0 ENDIF RETURN 540 ND=INT(SQRT(DBLE(N))) L=MOD(KA,ND) IF (L.EQ.0) THEN K=KA/ND L=ND ELSE K=INT(KA/ND)+1 ENDIF LA=1.0D 0 H=1.0D 0/DBLE(ND+1) H2=LA*H*H IF (L.EQ.1.AND.K.EQ.1) THEN GA(1)=4.0D 0+H2*EXP(X(1)) GA(2)=-1.0D 0 GA(ND+1)=-1.0D 0 ENDIF IF (1.LT.L.AND.L.LT.ND.AND.K.EQ.1) THEN GA(L)=4.0D 0+H2*EXP(X(L)) GA(L-1)=-1.0D 0 GA(L+1)=-1.0D 0 GA(L+ND)=-1.0D 0 ENDIF IF (L.EQ.ND.AND.K.EQ.1) THEN GA(ND)=4.0D 0+H2*EXP(X(ND)) GA(ND-1)=-1.0D 0 GA(ND+ND)=-1.0D 0 ENDIF IF (L.EQ.1.AND.1.LT.K.AND.K.LT.ND) THEN GA(KA)=4.0D 0+H2*EXP(X(KA)) GA(KA-ND)=-1.0D 0 GA(KA+1)=-1.0D 0 GA(KA+ND)=-1.0D 0 ENDIF IF (L.EQ.ND.AND.1.LT.K.AND.K.LT.ND) THEN GA(KA)=4.0D 0+H2*EXP(X(KA)) GA(KA-ND)=-1.0D 0 GA(KA-1)=-1.0D 0 GA(KA+ND)=-1.0D 0 ENDIF IF (L.EQ.1.AND.K.EQ.ND) THEN GA(KA)=4.0D 0+H2*EXP(X(KA)) GA(KA-ND)=-1.0D 0 GA(KA+1)=-1.0D 0 ENDIF IF (1.LT.L.AND.L.LT.ND.AND.K.EQ.ND) THEN GA(KA)=4.0D 0+H2*EXP(X(KA)) GA(KA-ND)=-1.0D 0 GA(KA-1)=-1.0D 0 GA(KA+1)=-1.0D 0 ENDIF IF (L.EQ.ND.AND.K.EQ.ND) THEN GA(KA)=4.0D 0+H2*EXP(X(KA)) GA(KA-ND)=-1.0D 0 GA(KA-1)=-1.0D 0 ENDIF IF (1.LT.L.AND.L.LT.ND.AND.1.LT.K.AND.K.LT.ND) THEN GA(KA)=4.0D 0+H2*EXP(X(KA)) GA(KA-ND)=-1.0D 0 GA(KA-1)=-1.0D 0 GA(KA+1)=-1.0D 0 GA(KA+ND)=-1.0D 0 ENDIF RETURN 550 ND=INT(SQRT(DBLE(N))) L=MOD(KA,ND) IF (L.EQ.0) THEN K=KA/ND L=ND ELSE K=INT(KA/ND)+1 ENDIF H=1.0D 0/DBLE(ND+1) H2=H*H IF (L.EQ.1.AND.K.EQ.1) THEN GA(1)=4.0D 0+H2*X(1)*2.0D 0 GA(2)=-1.0D 0 GA(ND+1)=-1.0D 0 ENDIF IF (1.LT.L.AND.L.LT.ND.AND.K.EQ.1) THEN GA(L)=4.0D 0+H2*X(L)*2.0D 0 GA(L-1)=-1.0D 0 GA(L+1)=-1.0D 0 GA(L+ND)=-1.0D 0 ENDIF IF (L.EQ.ND.AND.K.EQ.1) THEN GA(ND)=4.0D 0+H2*X(ND)*2.0D 0 GA(ND-1)=-1.0D 0 GA(ND+ND)=-1.0D 0 ENDIF IF (L.EQ.1.AND.1.LT.K.AND.K.LT.ND) THEN GA(KA)=4.0D 0+H2*X(KA)*2.0D 0 GA(KA-ND)=-1.0D 0 GA(KA+1)=-1.0D 0 GA(KA+ND)=-1.0D 0 ENDIF IF (L.EQ.ND.AND.1.LT.K.AND.K.LT.ND) THEN GA(KA)=4.0D 0+H2*X(KA)*2.0D 0 GA(KA-ND)=-1.0D 0 GA(KA-1)=-1.0D 0 GA(KA+ND)=-1.0D 0 ENDIF IF (L.EQ.1.AND.K.EQ.ND) THEN GA(KA)=4.0D 0+H2*X(KA)*2.0D 0 GA(KA-ND)=-1.0D 0 GA(KA+1)=-1.0D 0 ENDIF IF (1.LT.L.AND.L.LT.ND.AND.K.EQ.ND) THEN GA(KA)=4.0D 0+H2*X(KA)*2.0D 0 GA(KA-ND)=-1.0D 0 GA(KA-1)=-1.0D 0 GA(KA+1)=-1.0D 0 ENDIF IF (L.EQ.ND.AND.K.EQ.ND) THEN GA(KA)=4.0D 0+H2*X(KA)*2.0D 0 GA(KA-ND)=-1.0D 0 GA(KA-1)=-1.0D 0 ENDIF IF (1.LT.L.AND.L.LT.ND.AND.1.LT.K.AND.K.LT.ND) THEN GA(KA)=4.0D 0+H2*X(KA)*2.0D 0 GA(KA-ND)=-1.0D 0 GA(KA-1)=-1.0D 0 GA(KA+1)=-1.0D 0 GA(KA+ND)=-1.0D 0 ENDIF RETURN END