* SUBROUTINE TIUS14 ALL SYSTEMS 98/12/01 C PORTABILITY : ALL SYSTEMS C 98/12/01 TU : ORIGINAL VERSION * * PURPOSE : * INITIATION OF VARIABLES AND DEFINITION OF STRUCTURE OF THE SPARSE * HESSIAN MATRIX FOR THE GENERAL OBJECTIVE FUNCTION. * * PARAMETERS : * IU N NUMBER OF VARIABLES. * IO M NUMBER OF ELEMENTS OF THE SPARSE HESSIAN MATRIX. * RO X(N) VECTOR OF VARIABLES. * IO IH(N+1) POINTERS OF THE DIAGONAL ELEMENTS OF THE HESSIAN MATRIX. * IO JH(M) INDICES OF THE NONZERO ELEMENTS OF THE HESSIAN MATRIX IN * THE PACKED ROW. * RO FMIN LOWER BOUND FOR THE OBJECTIVE FUNCTION. * RO XMAX MAXIMUM STEPSIZE. * II NEXT NUMBER OF THE TEST PROBLEM. * IO IERR ERROR INDICATOR. * SUBROUTINE TIUS14(N,M,X,IH,JH,FMIN,XMAX,NEXT,IERR) INTEGER N,M,NEXT,IERR INTEGER IH(N+1),JH(M) REAL*8 X(N),FMIN,XMAX REAL*8 P,Q INTEGER I,J,K,L,K1,K2,M1 REAL*8 ETA9 PARAMETER (ETA9=1.0D 60) FMIN=0.0D 0 XMAX=1.0D 3 IEXT=0 IERR=0 GO TO (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 12 DO 13 I=1,N-1 J=2*(I-1)+1 IH(I)=J JH(J)=I JH(J+1)=I+1 13 CONTINUE J=2*(N-1)+1 IH(N)=J JH(J)=N IH(N+1)=2*N M=2*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=1,N-1 J=2*I-1 IH(I)=J JH(J)=I JH(J+1)=I+1 IF(MOD(I,2).EQ.0) JH(J+1)=JH(J+1)+1 22 CONTINUE J=2*N-1 IH(N)=J JH(J)=N M=J IH(N+1)=J+1 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 IH(1)=1 IH(2)=4 JH(1)=1 JH(2)=2 JH(3)=4 JH(4)=2 JH(5)=3 K=5 DO 33 I=3,N-3,2 IH(I)=IH(I-2)+5 J=IH(I) DO 32 L=J,J+4 JH(L)=JH(L-5)+2 K=K+1 32 CONTINUE IH(I+1)=IH(I-1)+5 33 CONTINUE IH(N-1)=IH(N-3)+5 IH(N)=IH(N-2)+4 IH(N+1)=IH(N)+1 JH(K+1)=JH(K) JH(K+2)=JH(K)+1 JH(K+3)=JH(K+2) M=IH(N) 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=1,N-1 IH(I)=2*I-1 J=IH(I) JH(J)=I JH(J+1)=I+1 42 CONTINUE IH(N)=2*N-1 JH(J+2)=JH(J+1) IH(N+1)=2*N M=IH(N) RETURN 50 IF (N.LT.3) GO TO 999 DO 51 I=1,N X(I)=-1.0D 0 51 CONTINUE 52 DO 53 I=1,N-2 J=1+3*(I-1) IH(I)=J JH(J)=I JH(J+1)=I+1 JH(J+2)=I+2 53 CONTINUE J=3*(N-2)+1 IH(N-1)=J JH(J)=N-1 JH(J+1)=N J=IH(N-1)+2 IH(N)=J JH(J)=N IH(N+1)=IH(N)+1 M=3*N-3 RETURN 60 IF (N.LT.7) GO TO 999 DO 61 I=1,N X(I)=-1.0D 0 61 CONTINUE DO 62 I=1,N-6 J=7*(I-1)+1 IH(I)=J JH(J)=I JH(J+1)=I+1 JH(J+2)=I+2 JH(J+3)=I+3 JH(J+4)=I+4 JH(J+5)=I+5 JH(J+6)=I+6 62 CONTINUE J=7*(N-6)+1 IH(N-5)=J JH(J)=N-5 JH(J+1)=N-4 JH(J+2)=N-3 JH(J+3)=N-2 JH(J+4)=N-1 JH(J+5)=N IH(N-4)=J+6 JH(J+6)=N-4 JH(J+7)=N-3 JH(J+8)=N-2 JH(J+9)=N-1 JH(J+10)=N IH(N-3)=J+11 JH(J+11)=N-3 JH(J+12)=N-2 JH(J+13)=N-1 JH(J+14)=N IH(N-2)=J+15 JH(J+15)=N-2 JH(J+16)=N-1 JH(J+17)=N IH(N-1)=J+18 JH(J+18)=N-1 JH(J+19)=N IH(N)=J+20 JH(J+20)=N IH(N+1)=J+21 M=J+20 RETURN 70 IF (N.LT.4) GO TO 999 N=N-MOD(N,2) DO 71 I=1,N X(I)=-1.0D 0 71 CONTINUE M=0 K=N/2 IH(1)=1 DO 72 I=1,N M=M+1 JH(M)=I IF (I.LT.N) THEN M=M+1 JH(M)=I+1 ENDIF IF (I.LE.K) THEN M=M+1 JH(M)=I+K ENDIF IH(I+1)=M+1 72 CONTINUE RETURN 80 IF (N.LT.6) GO TO 999 DO 81 I=1,N X(I)=1.0D 0/DBLE(N) 81 CONTINUE 82 M=0 K=N/2 IH(1)=1 DO 83 I=1,N M=M+1 JH(M)=I IF (I.LT.N) THEN M=M+1 JH(M)=I+1 ENDIF IF (I.LT.N-1) THEN M=M+1 JH(M)=I+2 ENDIF IF (I.LE.K) THEN M=M+1 JH(M)=I+K ENDIF IH(I+1)=M+1 83 CONTINUE RETURN 90 IF (N.LT.6) GO TO 999 DO 91 I=1,N X(I)=1.0D 0/DBLE(N) 91 CONTINUE FMIN=-ETA9 GO TO 82 100 IF (N.LT.6) GO TO 999 DO 101 I=1,N X(I)=1.0D 0 101 CONTINUE FMIN=-ETA9 GO TO 82 110 IF (N.LT.5) GO TO 999 N=N-MOD(N,5) DO 111 I=0,N-5,5 X(I+1)=-1.0D 0 X(I+2)=-1.0D 0 X(I+3)=2.0D 0 X(I+4)=-1.0D 0 X(I+5)=-1.0D 0 111 CONTINUE X(1)=-2.0D 0 X(2)=2.0D 0 IH(1)=1 K=1 DO 113 I=1,N,5 M1=I K1=I K2=I+4 DO 114 M=1,5 DO 115 J=K1,K2 JH(K)=J K=K+1 115 CONTINUE K1=K1+1 M1=M1+1 IH(M1)=6-M+IH(M1-1) 114 CONTINUE 113 CONTINUE M=IH(N) XMAX=1.0D 0 RETURN 120 IF (N.LT.2) GO TO 999 N=N-MOD(N,2) DO 121 I=2,N,2 X(I-1)=0.0D 0 X(I)=-1.0D 0 121 CONTINUE XMAX=1.0D 0 GO TO 12 RETURN 130 IF (N.LT.2) GO TO 999 N=N-MOD(N,2) DO 131 I=2,N,2 X(I-1)=-1.0D 0 X(I)=1.0D 0 131 CONTINUE GO TO 12 XMAX=0.2D 0 RETURN 140 IF (N.LT.3) GO TO 999 P=1.0D 0/DBLE(N+1) DO 141 I=1,N Q=P*DBLE(I) X(I)=Q*(Q-1.0D 0) 141 CONTINUE GO TO 52 150 IF (N.LT.3) GO TO 999 P=1.0D 0/DBLE(N+1) DO 151 I=1,N X(I)=DBLE(I)*DBLE(N+1-I)*P**2 151 CONTINUE FMIN=-ETA9 XMAX=1.0D 1 GO TO 12 160 IF (N.LT.3) GO TO 999 DO 161 I=1,N X(I)=1.0D 0 161 CONTINUE FMIN=-ETA9 GO TO 52 170 IF (N.LT.3) GO TO 999 P=1.0D 0/DBLE(N+1) DO 171 I=1,N X(I)=DBLE(I)*DBLE(N+1-I)*P**2 171 CONTINUE FMIN=-ETA9 GO TO 52 180 IF (N.LT.3) GO TO 999 P=1.0D 0/DBLE(N+1) DO 181 I=1,N X(I)=DBLE(I)*DBLE(N+1-I)*P**2 181 CONTINUE FMIN=-ETA9 GO TO 52 190 IF (N.LT.3) GO TO 999 P=EXP(2.0D 0)/DBLE(N+1) DO 191 I=1,N X(I)=(P*DBLE(I)+1.0D 0)/3.0D 0 191 CONTINUE FMIN=-ETA9 GO TO 52 200 IF (N.LT.3) GO TO 999 P=1.0D 0/DBLE(N+1) DO 201 I=1,N X(I)=P*DBLE(I) 201 CONTINUE FMIN=-ETA9 GO TO 52 210 IF (N.LT.3) GO TO 999 P=1.0D 0/DBLE(N+1) DO 211 I=1,N X(I)=P*DBLE(I)+1.0D 0 211 CONTINUE FMIN=-ETA9 GO TO 52 220 IF (N.LT.3) GO TO 999 P=1.0D 0/DBLE(N+1) DO 221 I=1,N X(I)=DBLE(I)*DBLE(N+1-I)*P**2 221 CONTINUE FMIN=-ETA9 GO TO 52 999 IERR=1 RETURN END * SUBROUTINE TIUB14 ALL SYSTEMS 98/12/01 C PORTABILITY : ALL SYSTEMS C 98/12/01 RA : ORIGINAL VERSION * * PURPOSE : * INITIATION OF VARIABLES AND DEFINITION OF STRUCTURE OF THE SPARSE * JACOBIAN MATRIX FOR THE PARTIALLY SEPARABLE OBJECTIVE FUNCTION. * * 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 TIUB14(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 REAL*8 P,Q INTEGER I,J,K 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 12 NA=N-1 DO 13 I=1,NA J=2*(I-1)+1 JA(J)=I JA(J+1)=I+1 IA(I)=J 13 CONTINUE MA=2*NA IA(NA+1)=MA+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 22 NA=(N-2)/2 DO 23 I=1,NA J=4*(I-1)+1 K=2*I-1 JA(J)=K JA(J+1)=K+1 JA(J+2)=K+2 JA(J+3)=K+3 IA(I)=J 23 CONTINUE MA=4*NA IA(NA+1)=IA(NA)+4 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 GO TO 22 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 XMAX=1.0D 1 GO TO 22 50 IF (N.LT.3) GO TO 999 DO 51 I=1,N X(I)=-1.0D 0 51 CONTINUE 52 MA=1 NA=N DO 53 I=1,NA IA(I)=MA IF (I.GT.1) THEN JA(MA)=I-1 MA=MA+1 ENDIF JA(MA)=I MA=MA+1 IF (I.LT.N) THEN JA(MA)=I+1 MA=MA+1 ENDIF 53 CONTINUE IA(NA+1)=MA MA=MA-1 RETURN 60 IF (N.LT.7) GO TO 999 DO 61 I=1,N X(I)=-1.0D 0 61 CONTINUE MA=1 NA=N DO 62 I=1,NA IA(I)=MA IF (I.GT.5) THEN JA(MA)=I-5 MA=MA+1 ENDIF IF (I.GT.4) THEN JA(MA)=I-4 MA=MA+1 ENDIF IF (I.GT.3) THEN JA(MA)=I-3 MA=MA+1 ENDIF IF (I.GT.2) THEN JA(MA)=I-2 MA=MA+1 ENDIF IF (I.GT.1) THEN JA(MA)=I-1 MA=MA+1 ENDIF JA(MA)=I MA=MA+1 IF (I.LT.N) THEN JA(MA)=I+1 MA=MA+1 ENDIF 62 CONTINUE IA(NA+1)=MA MA=MA-1 RETURN 70 IF (N.LT.4) GO TO 999 N=N-MOD(N,2) DO 71 I=1,N X(I)=-1.0D 0 71 CONTINUE MA=1 K=N/2 NA=N+K DO 72 I=1,N IA(I)=MA IF (I.GT.1) THEN JA(MA)=I-1 MA=MA+1 ENDIF JA(MA)=I MA=MA+1 IF (I.LT.N) THEN JA(MA)=I+1 MA=MA+1 ENDIF 72 CONTINUE DO 73 I=1,K IA(N+I)=MA JA(MA)=I MA=MA+1 JA(MA)=I+K MA=MA+1 73 CONTINUE IA(NA+1)=MA MA=MA-1 RETURN 80 IF (N.LT.6) GO TO 999 DO 81 I=1,N X(I)=1.0D 0/DBLE(N) 81 CONTINUE 82 MA=1 NA=N K=N/2 DO 83 I=1,NA IA(I)=MA IF (I.GT.K) THEN JA(MA)=I-K MA=MA+1 ENDIF IF (I.GT.2) THEN JA(MA)=I-2 MA=MA+1 ENDIF IF (I.GT.1) THEN JA(MA)=I-1 MA=MA+1 ENDIF JA(MA)=I MA=MA+1 IF (I.LT.N) THEN JA(MA)=I+1 MA=MA+1 ENDIF IF (I.LT.N-1) THEN JA(MA)=I+2 MA=MA+1 ENDIF IF (I.LE.K) THEN JA(MA)=I+K MA=MA+1 ENDIF 83 CONTINUE IA(NA+1)=MA MA=MA-1 RETURN 90 IF (N.LT.6) GO TO 999 DO 91 I=1,N X(I)=1.0D 0/DBLE(N) 91 CONTINUE FMIN=-ETA9 GO TO 82 100 IF (N.LT.6) GO TO 999 DO 101 I=1,N X(I)=1.0D 0 101 CONTINUE FMIN=-ETA9 GO TO 82 110 IF (N.LT.5) GO TO 999 N=N-MOD(N,5) DO 111 I=0,N-5,5 X(I+1)=-1.0D 0 X(I+2)=-1.0D 0 X(I+3)=2.0D 0 X(I+4)=-1.0D 0 X(I+5)=-1.0D 0 111 CONTINUE X(1)=-2.0D 0 X(2)=2.0D 0 MA=1 NA=N/5 DO 112 I=1,NA J=5*(I-1)+1 IA(I)=MA MA=MA+5 JA(MA-5)=J JA(MA-4)=J+1 JA(MA-3)=J+2 JA(MA-2)=J+3 JA(MA-1)=J+4 112 CONTINUE IA(NA+1)=MA MA=MA-1 XMAX=1.0D 0 RETURN 120 IF (N.LT.2) GO TO 999 N=N-MOD(N,2) DO 121 I=2,N,2 X(I-1)=0.0D 0 X(I)=-1.0D 0 121 CONTINUE XMAX=1.0D 0 GO TO 12 130 IF (N.LT.2) GO TO 999 N=N-MOD(N,2) DO 131 I=2,N,2 X(I-1)=-1.0D 0 X(I)=1.0D 0 131 CONTINUE XMAX=1.0D 0 GO TO 12 140 IF (N.LT.3) GO TO 999 P=1.0D 0/DBLE(N+1) DO 141 I=1,N Q=P*DBLE(I) X(I)=Q*(Q-1.0D 0) 141 CONTINUE XMAX=1.0D 1 GO TO 52 150 IF (N.LT.2) GO TO 999 P=1.0D 0/DBLE(N+1) DO 151 I=1,N X(I)=DBLE(I)*DBLE(N+1-I)*P**2 151 CONTINUE FMIN=-ETA9 XMAX=1.0D 1 GO TO 12 160 IF (N.LT.3) GO TO 999 DO 161 I=1,N X(I)=1.0D 0 161 CONTINUE FMIN=-ETA9 GO TO 52 170 IF (N.LT.3) GO TO 999 P=1.0D 0/DBLE(N+1) DO 171 I=1,N X(I)=DBLE(I)*DBLE(N+1-I)*P**2 171 CONTINUE FMIN=-ETA9 GO TO 52 180 IF (N.LT.3) GO TO 999 P=1.0D 0/DBLE(N+1) DO 181 I=1,N X(I)=DBLE(I)*DBLE(N+1-I)*P**2 181 CONTINUE FMIN=-ETA9 GO TO 52 190 IF (N.LT.3) GO TO 999 P=EXP(2.0D 0)/DBLE(N+1) DO 191 I=1,N X(I)=(P*DBLE(I)+1.0D 0)/3.0D 0 191 CONTINUE FMIN=-ETA9 GO TO 52 200 IF (N.LT.3) GO TO 999 P=1.0D 0/DBLE(N+1) DO 201 I=1,N X(I)=P*DBLE(I) 201 CONTINUE FMIN=-ETA9 GO TO 52 210 IF (N.LT.3) GO TO 999 P=1.0D 0/DBLE(N+1) DO 211 I=1,N X(I)=P*DBLE(I)+1.0D 0 211 CONTINUE FMIN=-ETA9 GO TO 52 220 IF (N.LT.3) GO TO 999 P=1.0D 0/DBLE(N+1) DO 221 I=1,N X(I)=DBLE(I)*DBLE(N+1-I)*P**2 221 CONTINUE FMIN=-ETA9 GO TO 52 999 IERR=1 RETURN END * SUBROUTINE TFFU14 ALL SYSTEMS 98/12/01 C PORTABILITY : ALL SYSTEMS C 98/12/01 TU : ORIGINAL VERSION * * PURPOSE : * VALUE OF THE GENERAL OBJECTIVE FUNCTION. * * PARAMETERS : * II N NUMBER OF VARIABLES. * RI X(N) VECTOR OF VARIABLES. * RO F VALUE OF THE GENERAL OBJECTIVE FUNCTION AT THE POINT X. * II NEXT NUMBER OF THE SELECTED TEST PROBLEM. * SUBROUTINE TFFU14(N,X,F,NEXT) INTEGER N,NEXT REAL*8 X(N),F REAL*8 A,B,C,D,P,Q,R,U,V INTEGER I,J,K F=0.0D 0 GO TO (10,20,30,40,50,60,70,80,90,100,110,120,130,140,150,160, & 170,180,190,200,210,220),NEXT 10 DO 11 J=2,N A=X(J-1)**2-X(J) B=X(J-1)-1.0D 0 F=F+1.0D 2*A**2+B**2 11 CONTINUE RETURN 20 DO 21 J=2,N-2,2 A=X(J-1)**2-X(J) B=X(J-1)-1.0D 0 C=X(J+1)**2-X(J+2) D=X(J+1)-1.0D 0 U=X(J)+X(J+2)-2.0D 0 V=X(J)-X(J+2) F=F+1.0D 2*A**2+B**2+9.0D 1*C**2+D**2+ & 1.0D 1*U**2+0.1D 0*V**2 21 CONTINUE RETURN 30 DO 31 J=2,N-2,2 A=X(J-1)+1.0D 1*X(J) B=X(J+1)-X(J+2) C=X(J)-2.0D 0*X(J+1) D=X(J-1)-X(J+2) F=F+A**2+5.0D 0*B**2+C**4+1.0D 1*D**4 31 CONTINUE RETURN 40 DO 41 J=2,N-2,2 A=EXP(X(J-1)) B=A-X(J) D=X(J)-X(J+1) P=X(J+1)-X(J+2) Q=SIN(P)/COS(P) U=X(J-1) V=X(J+2)-1.0D 0 F=F+B**4+1.0D 2*D**6+Q**4+U**8+V**2 41 CONTINUE RETURN 50 P=7.0D 0/3.0D 0 DO 51 J=1,N A=(3.0D 0-2.0D 0*X(J))*X(J)+1.0D 0 IF (J.GT.1) A=A-X(J-1) IF (J.LT.N) A=A-X(J+1) F=F+ABS(A)**P 51 CONTINUE RETURN 60 P=7.0D 0/3.0D 0 DO 62 J=1,N A=(2.0D 0+5.0D 0*X(J)**2)*X(J)+1.0D 0 DO 61 I=MAX(1,J-5),MIN(N,J+1) A=A+X(I)*(1.0D 0+X(I)) 61 CONTINUE F=F+ABS(A)**P 62 CONTINUE RETURN 70 P=7.0D 0/3.0D 0 K=N/2 DO 71 J=1,N A=(3.0D 0-2.0D 0*X(J))*X(J)+1.0D 0 IF (J.GT.1) A=A-X(J-1) IF (J.LT.N) A=A-X(J+1) F=F+ABS(A)**P IF (J.LE.K) THEN F=F+ABS(X(J)+X(J+K))**P ENDIF 71 CONTINUE RETURN 80 K=N/2 DO 82 J=1,N P=0.0D 0 DO 81 I=J-2,J+2 IF (I.LT.1.OR.I.GT.N) GO TO 81 A=5.0D 0*(1.0D 0+MOD(I,5)+MOD(J,5)) B=DBLE(I+J)/1.0D 1 P=P+A*SIN(X(I))+B*COS(X(I)) 81 CONTINUE IF (J.GT.K) THEN I=J-K A=5.0D 0*(1.0D 0+MOD(I,5)+MOD(J,5)) B=DBLE(I+J)/1.0D 1 P=P+A*SIN(X(I))+B*COS(X(I)) ELSE I=J+K A=5.0D 0*(1.0D 0+MOD(I,5)+MOD(J,5)) B=DBLE(I+J)/1.0D 1 P=P+A*SIN(X(I))+B*COS(X(I)) ENDIF F=F+(DBLE(N+J)-P)**2/DBLE(N) 82 CONTINUE RETURN 90 K=N/2 DO 92 J=1,N P=0.0D 0 DO 91 I=J-2,J+2 IF (I.LT.1.OR.I.GT.N) GO TO 91 A=5.0D 0*(1.0D 0+MOD(I,5)+MOD(J,5)) B=DBLE(I+J)/1.0D 1 P=P+A*SIN(X(I))+B*COS(X(I)) 91 CONTINUE IF (J.GT.K) THEN I=J-K A=5.0D 0*(1.0D 0+MOD(I,5)+MOD(J,5)) B=DBLE(I+J)/1.0D 1 P=P+A*SIN(X(I))+B*COS(X(I)) ELSE I=J+K A=5.0D 0*(1.0D 0+MOD(I,5)+MOD(J,5)) B=DBLE(I+J)/1.0D 1 P=P+A*SIN(X(I))+B*COS(X(I)) ENDIF F=F+(P+DBLE(J)*(1.0D 0-COS(X(J))))/DBLE(N) 92 CONTINUE RETURN 100 K=N/2 DO 102 J=1,N P=0.0D 0 Q=1.0D 0+DBLE(J)/1.0D 1 DO 101 I=J-2,J+2 IF (I.LT.1.OR.I.GT.N) GO TO 101 A=5.0D 0*(1.0D 0+MOD(I,5)+MOD(J,5)) B=1.0D 0+DBLE(I)/1.0D 1 C=DBLE(I+J)/1.0D 1 P=P+A*SIN(Q*X(J)+B*X(I)+C) 101 CONTINUE IF (J.GT.K) THEN I=J-K A=5.0D 0*(1.0D 0+MOD(I,5)+MOD(J,5)) B=1.0D 0+DBLE(I)/1.0D 1 C=DBLE(I+J)/1.0D 1 P=P+A*SIN(Q*X(J)+B*X(I)+C) ELSE I=J+K A=5.0D 0*(1.0D 0+MOD(I,5)+MOD(J,5)) B=1.0D 0+DBLE(I)/1.0D 1 C=DBLE(I+J)/1.0D 1 P=P+A*SIN(Q*X(J)+B*X(I)+C) ENDIF F=F+P 102 CONTINUE F=F/DBLE(N) RETURN 110 P=-0.2008D-2 Q=-0.1900D-2 R=-0.0261D-2 DO 112 I=0,N-5,5 A=1.0D 0 B=0.0D 0 DO 111 J=1,5 A=A*X(I+J) B=B+X(I+J)**2 111 CONTINUE A=EXP(A) B=B-1.0D 1-P C=X(I+2)*X(I+3)-5.0D 0*X(I+4)*X(I+5)-Q D=X(I+1)**3+X(I+2)**3+1.0D 0-R F=F+A+1.0D 1*(B**2+C**2+D**2) 112 CONTINUE RETURN 120 DO 121 J=2,N A=X(J-1)-3.0D 0 B=X(J-1)-X(J) F=F+A**2+B**2+EXP(2.0D 1*B) 121 CONTINUE RETURN 130 DO 131 J=2,N A=X(J)**2 B=X(J-1)**2 C=A+1.0D 0 D=B+1.0D 0 F=F+B**C+A**D 131 CONTINUE RETURN 140 P=1.0D 0/DBLE(N+1) Q=0.5D 0*P**2 DO 141 J=1,N A=2.0D 0*X(J)+Q*(X(J)+DBLE(J)*P+1.0D 0)**3 IF(J.GT.1) A=A-X(J-1) IF(J.LT.N) A=A-X(J+1) F=F+A**2 141 CONTINUE RETURN 150 P=1.0D 0/DBLE(N+1) Q=2.0D 0/P R=2.0D 0*P DO 151 J=2,N A=X(J-1)-X(J) F=F+Q*X(J-1)*A IF (ABS(A).LE.1.0D-6) THEN F=F+R*EXP(X(J))*(1.0D 0+A/2.0D 0*(1.0D 0+A/3.0D 0*(1.0D 0+ * A/4.0D 0))) ELSE B=EXP(X(J-1))-EXP(X(J)) F=F+R*B/A ENDIF 151 CONTINUE F=F+Q*X(N)**2+R*(EXP(X(1))-1.0D 0)/X(1) & +R*(EXP(X(N))-1.0D 0)/X(N) RETURN 160 DO 161 J=1,N A=DBLE(J)*(1.0D 0-COS(X(J))) IF(J.GT.1) A=A+DBLE(J)*SIN(X(J-1)) IF(J.LT.N) A=A-DBLE(J)*SIN(X(J+1)) F=F+A 161 CONTINUE RETURN 170 P=1.0D 0/DBLE(N+1) DO 171 J=1,N IF (J.EQ.1) THEN F=F+0.25D 0*X(J)**2/P+1.25D-1*X(J+1)**2/P+ & P*(EXP(X(J))-1.0D 0) ELSE IF (J.EQ.N) THEN F=F+0.25D 0*X(J)**2/P+1.25D-1*X(J-1)**2/P+ & P*(EXP(X(J))-1.0D 0) ELSE F=F+1.25D-1*(X(J+1)-X(J-1))**2/P+P*(EXP(X(J))-1.0D 0) ENDIF 171 CONTINUE RETURN 180 P=1.0D 0/DBLE(N+1) DO 181 J=1,N Q=DBLE(J)*P IF (J.EQ.1) THEN F=F+0.5D 0*X(J)**2/P+0.25D 0*X(J+1)**2/P- & P*(X(J)**2+2.0D 0*X(J)*Q) ELSE IF (J.EQ.N) THEN F=F+0.5D 0*X(J)**2/P+0.25D 0*X(J-1)**2/P- & P*(X(J)**2+2.0D 0*X(J)*Q) ELSE F=F+2.5D-1*(X(J+1)-X(J-1))**2/P-P*(X(J)**2+ & 2.0D 0*X(J)*Q) ENDIF 181 CONTINUE RETURN 190 P=1.0D 0/DBLE(N+1) DO 191 J=1,N Q=EXP(2.0D 0*DBLE(J)*P) IF (J.EQ.1) THEN R=1.0D 0/3.0D 0 F=F+0.5D 0*(X(J)-R)**2/P+7.0D 0*R**2+ & 2.5D-1*(X(J+1)-R)**2/P+P*(X(J)**2+2.0D 0*X(J)*Q) ELSE IF (J.EQ.N) THEN R=EXP(2.0D 0)/3.0D 0 F=F+0.5D 0*(X(J)-R)**2/P+7.0D 0*R**2+ & 2.5D-1*(X(J-1)-R)**2/P+P*(X(J)**2+2.0D 0*X(J)*Q) ELSE F=F+2.5D-1*(X(J+1)-X(J-1))**2/P+P*(X(J)**2+ & 2.0D 0*X(J)*Q) ENDIF 191 CONTINUE RETURN 200 P=1.0D 0/DBLE(N+1) DO 201 J=1,N IF (J.EQ.1) THEN F=F+(0.5D 0*X(J)**2/P-P)+ & (2.5D-1*X(J+1)**2/P-P)*EXP(-2.0D 0*X(J)**2) ELSE IF (J.EQ.N) THEN F=F+(0.5D 0*X(J)**2/P-P)*EXP(-2.0D 0)+ & (2.5D-1*X(J-1)**2/P-P)*EXP(-2.0D 0*X(J)**2) ELSE F=F+(2.5D-1*(X(J+1)-X(J-1))**2/P-P)*EXP(-2.0D 0*X(J)**2) ENDIF 201 CONTINUE RETURN 210 P=1.0D 0/DBLE(N+1) DO 211 J=1,N IF (J.EQ.1) THEN A=0.5D 0*(X(J+1)-1.0D 0)/P B=(X(J)-1.0D 0)/P F=F+P*(X(J)**2+A*ATAN(A)-LOG(SQRT(1.0D 0+A**2)))+ & 0.5D 0*P*(1.0D 0+B*ATAN(B)-LOG(SQRT(1.0D 0+B**2))) ELSE IF (J.EQ.N) THEN A=0.5D 0*(2.0D 0-X(J-1))/P B=(2.0D 0-X(J))/P F=F+P*(X(J)**2+A*ATAN(A)-LOG(SQRT(1.0D 0+A**2)))+ & 0.5D 0*P*(4.0D 0+B*ATAN(B)-LOG(SQRT(1.0D 0+B**2))) ELSE A=0.5D 0*(X(J+1)-X(J-1))/P F=F+P*(X(J)**2+A*ATAN(A)-LOG(SQRT(1.0D 0+A**2))) ENDIF 211 CONTINUE RETURN 220 P=1.0D 0/DBLE(N+1) DO 221 J=1,N IF (J.EQ.1) THEN A= 0.5D 0*X(J+1)/P B= X(J)/P F=F+P*(1.0D 2*(X(J)-A**2)**2+(1.0D 0-A)**2)+ & 0.5D 0*P*(1.0D 2*B**4+(1.0D 0-B)**2) ELSE IF (J.EQ.N) THEN A=-0.5D 0*X(J-1)/P B=-X(J)/P F=F+P*(1.0D 2*(X(J)-A**2)**2+(1.0D 0-A)**2)+ & 0.5D 0*P*(1.0D 2*B**4+(1.0D 0-B)**2) ELSE A=0.5D 0*(X(J+1)-X(J-1))/P F=F+P*(1.0D 2*(X(J)-A**2)**2+(1.0D 0-A)**2) ENDIF 221 CONTINUE RETURN END * SUBROUTINE TFGU14 ALL SYSTEMS 98/12/01 C PORTABILITY : ALL SYSTEMS C 98/12/01 TU : ORIGINAL VERSION * * PURPOSE : * GRADIENT OF THE GENERAL OBJECTIVE FUNCTION. * * PARAMETERS : * II N NUMBER OF VARIABLES. * RI X(N) VECTOR OF VARIABLES. * RO G(N) GRADIENT OF THE GENERAL OBJECTIVE FUNCTION AT THE POINT X. * II NEXT NUMBER OF THE SELECTED TEST PROBLEM. * SUBROUTINE TFGU14(N,X,G,NEXT) INTEGER N,NEXT REAL*8 X(N),G(N) REAL*8 A,B,C,D,P,Q,R,U,V INTEGER I,J,K DO 1 I=1,N G(I)=0.0D 0 1 CONTINUE GO TO (10,20,30,40,50,60,70,80,90,100,110,120,130,140,150,160, & 170,180,190,200,210,220),NEXT 10 DO 11 J=2,N A=X(J-1)**2-X(J) B=X(J-1)-1.0D 0 G(J-1)=G(J-1)+4.0D 2*X(J-1)*A+2.0D 0*B G(J)=G(J)-2.0D 2*A 11 CONTINUE RETURN 20 DO 21 J=2,N-2,2 A=X(J-1)**2-X(J) B=X(J-1)-1.0D 0 C=X(J+1)**2-X(J+2) D=X(J+1)-1.0D 0 U=X(J)+X(J+2)-2.0D 0 V=X(J)-X(J+2) G(J-1)=G(J-1)+4.0D 2*X(J-1)*A+2.0D 0*B G(J)=G(J)-2.0D 2*A+2.0D 1*U+0.2D 0*V G(J+1)=G(J+1)+3.6D 2*X(J+1)*C+2.0D 0*D G(J+2)=G(J+2)-1.8D 2*C+2.0D 1*U-0.2D 0*V 21 CONTINUE RETURN 30 DO 31 J=2,N-2,2 A=X(J-1)+1.0D 1*X(J) B=X(J+1)-X(J+2) C=X(J)-2.0D 0*X(J+1) D=X(J-1)-X(J+2) G(J-1)=G(J-1)+2.0D 0*A+4.0D 1*D**3 G(J)=G(J)+2.0D 1*A+4.0D 0*C**3 G(J+1)=G(J+1)-8.0D 0*C**3+1.0D 1*B G(J+2)=G(J+2)-4.0D 1*D**3-1.0D 1*B 31 CONTINUE RETURN 40 DO 41 J=2,N-2,2 A=EXP(X(J-1)) B=A-X(J) B=4.0D 0*B**3 D=X(J)-X(J+1) D=6.0D 2*D**5 P=X(J+1)-X(J+2) C=COS(P) Q=SIN(P)/COS(P) Q=4.0D 0*Q**3/C**2 U=X(J-1) V=X(J+2)-1.0D 0 G(J-1)=G(J-1)+A*B+8.0D 0*U**7 G(J)=G(J)+D-B G(J+1)=G(J+1)+Q-D G(J+2)=G(J+2)+2.0D 0*V-Q 41 CONTINUE RETURN 50 P=7.0D 0/3.0D 0 DO 51 J=1,N A=(3.0D 0-2.0D 0*X(J))*X(J)+1.0D 0 IF (J.GT.1) A=A-X(J-1) IF (J.LT.N) A=A-X(J+1) B=P*ABS(A)**(P-1.0D 0)*SIGN(1.0D 0,A) G(J)=G(J)+B*(3.0D 0-4.0D 0*X(J)) IF (J.GT.1) G(J-1)=G(J-1)-B IF (J.LT.N) G(J+1)=G(J+1)-B 51 CONTINUE RETURN 60 P=7.0D 0/3.0D 0 DO 63 J=1,N A=(2.0D 0+5.0D 0*X(J)**2)*X(J)+1.0D 0 DO 61 I=MAX(1,J-5),MIN(N,J+1) A=A+X(I)*(1.0D 0+X(I)) 61 CONTINUE B=P*ABS(A)**(P-1.0D 0)*SIGN(1.0D 0,A) G(J)=G(J)+B*(2.0D 0+1.5D 1*X(J)**2) DO 62 I=MAX(1,J-5),MIN(N,J+1) G(I)=G(I)+B*(1.0D 0+2.0D 0*X(I)) 62 CONTINUE 63 CONTINUE RETURN 70 P=7.0D 0/3.0D 0 K=N/2 DO 71 J=1,N A=(3.0D 0-2.0D 0*X(J))*X(J)+1.0D 0 IF (J.GT.1) A=A-X(J-1) IF (J.LT.N) A=A-X(J+1) B=P*ABS(A)**(P-1.0D 0)*SIGN(1.0D 0,A) G(J)=G(J)+B*(3.0D 0-4.0D 0*X(J)) IF (J.GT.1) G(J-1)=G(J-1)-B IF (J.LT.N) G(J+1)=G(J+1)-B IF (J.LE.K) THEN A=X(J)+X(J+K) B=P*ABS(A)**(P-1.0D 0)*SIGN(1.0D 0,A) G(J)=G(J)+B G(J+K)=G(J+K)+B ENDIF 71 CONTINUE RETURN 80 K=N/2 DO 83 J=1,N P=0.0D 0 DO 81 I=J-2,J+2 IF (I.LT.1.OR.I.GT.N) GO TO 81 A=5.0D 0*(1.0D 0+MOD(I,5)+MOD(J,5)) B=DBLE(I+J)/1.0D 1 P=P+A*SIN(X(I))+B*COS(X(I)) 81 CONTINUE IF (J.GT.K) THEN I=J-K A=5.0D 0*(1.0D 0+MOD(I,5)+MOD(J,5)) B=DBLE(I+J)/1.0D 1 P=P+A*SIN(X(I))+B*COS(X(I)) ELSE I=J+K A=5.0D 0*(1.0D 0+MOD(I,5)+MOD(J,5)) B=DBLE(I+J)/1.0D 1 P=P+A*SIN(X(I))+B*COS(X(I)) ENDIF P=2.0D 0*(DBLE(N+J)-P)/DBLE(N) DO 82 I=J-2,J+2 IF (I.LT.1.OR.I.GT.N) GO TO 82 A=5.0D 0*(1.0D 0+MOD(I,5)+MOD(J,5)) B=DBLE(I+J)/1.0D 1 G(I)=G(I)-P*(A*COS(X(I))-B*SIN(X(I))) 82 CONTINUE IF (J.GT.K) THEN I=J-K A=5.0D 0*(1.0D 0+MOD(I,5)+MOD(J,5)) B=DBLE(I+J)/1.0D 1 G(I)=G(I)-P*(A*COS(X(I))-B*SIN(X(I))) ELSE I=J+K A=5.0D 0*(1.0D 0+MOD(I,5)+MOD(J,5)) B=DBLE(I+J)/1.0D 1 G(I)=G(I)-P*(A*COS(X(I))-B*SIN(X(I))) ENDIF 83 CONTINUE RETURN 90 K=N/2 P=1.0D 0/DBLE(N) DO 92 J=1,N DO 91 I=J-2,J+2 IF (I.LT.1.OR.I.GT.N) GO TO 91 A=5.0D 0*(1.0D 0+MOD(I,5)+MOD(J,5)) B=DBLE(I+J)/1.0D 1 G(I)=G(I)+P*(A*COS(X(I))-B*SIN(X(I))) 91 CONTINUE IF (J.GT.K) THEN I=J-K A=5.0D 0*(1.0D 0+MOD(I,5)+MOD(J,5)) B=DBLE(I+J)/1.0D 1 G(I)=G(I)+P*(A*COS(X(I))-B*SIN(X(I))) ELSE I=J+K A=5.0D 0*(1.0D 0+MOD(I,5)+MOD(J,5)) B=DBLE(I+J)/1.0D 1 G(I)=G(I)+P*(A*COS(X(I))-B*SIN(X(I))) ENDIF G(J)=G(J)+P*DBLE(J)*SIN(X(J)) 92 CONTINUE RETURN 100 K=N/2 DO 102 J=1,N Q=1.0D 0+DBLE(J)/1.0D 1 DO 101 I=J-2,J+2 IF (I.LT.1.OR.I.GT.N) GO TO 101 A=5.0D 0*(1.0D 0+MOD(I,5)+MOD(J,5)) B=1.0D 0+DBLE(I)/1.0D 1 C=DBLE(I+J)/1.0D 1 P=A*COS(Q*X(J)+B*X(I)+C)/DBLE(N) G(J)=G(J)+P*Q G(I)=G(I)+P*B 101 CONTINUE IF (J.GT.K) THEN I=J-K A=5.0D 0*(1.0D 0+MOD(I,5)+MOD(J,5)) B=1.0D 0+DBLE(I)/1.0D 1 C=DBLE(I+J)/1.0D 1 P=A*COS(Q*X(J)+B*X(I)+C)/DBLE(N) G(J)=G(J)+P*Q G(I)=G(I)+P*B ELSE I=J+K A=5.0D 0*(1.0D 0+MOD(I,5)+MOD(J,5)) B=1.0D 0+DBLE(I)/1.0D 1 C=DBLE(I+J)/1.0D 1 P=A*COS(Q*X(J)+B*X(I)+C)/DBLE(N) G(J)=G(J)+P*Q G(I)=G(I)+P*B ENDIF 102 CONTINUE RETURN 110 P=-0.2008D-2 Q=-0.1900D-2 R=-0.0261D-2 DO 112 I=0,N-5,5 A=1.0D 0 B=0.0D 0 DO 111 J=1,5 A=A*X(I+J) B=B+X(I+J)**2 111 CONTINUE A=A*EXP(A) B=B-1.0D 1-P C=X(I+2)*X(I+3)-5.0D 0*X(I+4)*X(I+5)-Q D=X(I+1)**3+X(I+2)**3+1.0D 0-R G(I+1)=G(I+1)+A/X(I+1)+2.0D 1*(2.0D 0*B*X(I+1) & +3.0D 0*D*X(I+1)**2) G(I+2)=G(I+2)+A/X(I+2)+2.0D 1*(2.0D 0*B*X(I+2) & +C*X(I+3)+3.0D 0*D*X(I+2)**2) G(I+3)=G(I+3)+A/X(I+3)+2.0D 1*(2.0D 0*B*X(I+3)+C*X(I+2)) G(I+4)=G(I+4)+A/X(I+4)+2.0D 1*(2.0D 0*B*X(I+4) & -5.0D 0*C*X(I+5)) G(I+5)=G(I+5)+A/X(I+5)+2.0D 1*(2.0D 0*B*X(I+5)-5.0D 0*C*X(I+4)) 112 CONTINUE RETURN 120 DO 121 J=2,N A=X(J-1)-3.0D 0 B=X(J-1)-X(J) G(J-1)=G(J-1)+2.0D 0*A+2.0D 0*B+2.0D 1*EXP(2.0D 1*B) G(J)=G(J)-2.0D 0*B-2.0D 1*EXP(2.0D 1*B) 121 CONTINUE RETURN 130 DO 131 J=2,N A=X(J)**2 B=X(J-1)**2 C=A+1.0D 0 D=B+1.0D 0 P=0.0D 0 IF (A.GT.P) P=LOG(A) Q=0.0D 0 IF (B.GT.Q) Q=LOG(B) G(J-1)=G(J-1)+2.0D 0*X(J-1)*(C*B**A+P*A**D) G(J)=G(J)+2.0D 0*X(J)*(D*A**B+Q*B**C) 131 CONTINUE RETURN 140 P=1.0D 0/DBLE(N+1) Q=0.5D 0*P**2 DO 141 J=1,N A=2.0D 0*X(J)+Q*(X(J)+DBLE(J)*P+1.0D 0)**3 IF(J.GT.1) A=A-X(J-1) IF(J.LT.N) A=A-X(J+1) G(J)=G(J)+A*(4.0D 0+6.0D 0*Q*(X(J)+DBLE(J)*P+1.0D 0)**2.0D 0) IF(J.GT.1) G(J-1)=G(J-1)-2.0D 0*A IF(J.LT.N) G(J+1)=G(J+1)-2.0D 0*A 141 CONTINUE RETURN 150 P=1.0D 0/DBLE(N+1) Q=2.0D 0/P R=2.0D 0*P DO 151 J=2,N A=X(J-1)-X(J) G(J-1)=G(J-1)+Q*(2.0D 0*X(J-1)-X(J)) G(J)=G(J)-Q*X(J-1) IF (ABS(A).LE.1.0D-6) THEN G(J-1)=G(J-1)+R*EXP(X(J))*(1.0D 0/2.0D 0+A*(1.0D 0/3.0D 0+ * A/8.0D 0)) G(J)=G(J)+R*EXP(X(J))*(1.0D 0/2.0D 0+A*(1.0D 0/6.0D 0+ * A/24.0D 0)) ELSE B=EXP(X(J-1))-EXP(X(J)) G(J-1)=G(J-1)+R*(EXP(X(J-1))*A-B)/A**2 G(J)=G(J)-R*(EXP(X(J))*A-B)/A**2 ENDIF 151 CONTINUE G(1)=G(1)+R*(EXP(X(1))*(X(1)-1.0D 0)+1.0D 0)/X(1)**2 G(N)=G(N)+2.0D 0*Q*X(N) & +R*(EXP(X(N))*(X(N)-1.0D 0)+1.0D 0)/X(N)**2 RETURN 160 DO 161 J=1,N A=DBLE(J)*SIN(X(J)) G(J)=G(J)+A IF(J.GT.1) G(J-1)=G(J-1)+DBLE(J)*COS(X(J-1)) IF(J.LT.N) G(J+1)=G(J+1)-DBLE(J)*COS(X(J+1)) 161 CONTINUE RETURN 170 P=1.0D 0/DBLE(N+1) DO 171 J=1,N IF (J.EQ.1) THEN G(J)=G(J)+0.5D 0*X(J)/P+P*EXP(X(J)) G(J+1)=G(J+1)+0.25D 0*X(J+1)/P ELSE IF (J.EQ.N) THEN G(J)=G(J)+0.5D 0*X(J)/P+P*EXP(X(J)) G(J-1)=G(J-1)+0.25D 0*X(J-1)/P ELSE A=0.25D 0*(X(J+1)-X(J-1))/P G(J)=G(J)+P*EXP(X(J)) G(J-1)=G(J-1)-A G(J+1)=G(J+1)+A ENDIF 171 CONTINUE RETURN 180 P=1.0D 0/DBLE(N+1) DO 181 J=1,N Q=DBLE(J)*P IF (J.EQ.1) THEN G(J)=G(J)+X(J)/P-2.0D 0*P*(X(J)+Q) G(J+1)=G(J+1)+0.5D 0*X(J+1)/P ELSE IF (J.EQ.N) THEN G(J)=G(J)+X(J)/P-2.0D 0*P*(X(J)+Q) G(J-1)=G(J-1)+0.5D 0*X(J-1)/P ELSE A=0.5D 0*(X(J+1)-X(J-1))/P G(J)=G(J)-2.0D 0*P*(X(J)+Q) G(J-1)=G(J-1)-A G(J+1)=G(J+1)+A ENDIF 181 CONTINUE RETURN 190 P=1.0D 0/DBLE(N+1) DO 191 J=1,N Q=EXP(2.0D 0*DBLE(J)*P) IF (J.EQ.1) THEN R=1.0D 0/3.0D 0 A=0.5D 0*(X(J+1)-R)/P G(J)=G(J)+2.0D 0*P*(X(J)+Q)+(X(J)-R)/P G(J+1)=G(J+1)+A ELSE IF (J.EQ.N) THEN R=EXP(2.0D 0)/3.0D 0 A=0.5D 0*(X(J-1)-R)/P G(J)=G(J)+2.0D 0*P*(X(J)+Q)+(X(J)-R)/P G(J-1)=G(J-1)+A ELSE A=0.5D 0*(X(J+1)-X(J-1))/P G(J)=G(J)+2.0D 0*P*(X(J)+Q) G(J-1)=G(J-1)-A G(J+1)=G(J+1)+A ENDIF 191 CONTINUE RETURN 200 P=1.0D 0/DBLE(N+1) DO 201 J=1,N A=EXP(-2.0D 0*X(J)**2) IF (J.EQ.1) THEN B=0.5D 0*X(J+1)/P G(J)=G(J)+X(J)/P-4.0D 0*X(J)*A*P*(B**2-1.0D 0) G(J+1)=G(J+1)+A*B ELSE IF (J.EQ.N) THEN B=0.5D 0*X(J-1)/P G(J)=G(J)+X(J)/P*EXP(-2.0D 0)-4.0D 0*X(J)*A*P*(B**2-1.0D 0) G(J-1)=G(J-1)+A*B ELSE B=0.5D 0*(X(J+1)-X(J-1))/P G(J)=G(J)-4.0D 0*X(J)*A*P*(B**2-1.0D 0) G(J-1)=G(J-1)-A*B G(J+1)=G(J+1)+A*B ENDIF 201 CONTINUE RETURN 210 P=1.0D 0/DBLE(N+1) DO 211 J=1,N IF (J.EQ.1) THEN A=0.5D 0*(X(J+1)-1.0D 0)/P B=(X(J)-1.0D 0)/P U=0.5D 0*ATAN(A) V=0.5D 0*ATAN(B) G(J)=G(J)+2.0D 0*P*X(J)+V G(J+1)=G(J+1)+ U ELSE IF (J.EQ.N) THEN A=0.5D 0*(2.0D 0-X(J-1))/P B=(2.0D 0-X(J))/P U=0.5D 0*ATAN(A) V=0.5D 0*ATAN(B) G(J)=G(J)+2.0D 0*P*X(J)-V G(J-1)=G(J-1)-U ELSE A=0.5D 0*(X(J+1)-X(J-1))/P U=0.5D 0*ATAN(A) G(J)=G(J)+2.0D 0*P*X(J) G(J-1)=G(J-1)-U G(J+1)=G(J+1)+U ENDIF 211 CONTINUE RETURN 220 P=1.0D 0/DBLE(N+1) DO 221 J=1,N IF (J.EQ.1) THEN A= 0.5D 0*X(J+1)/P B= X(J)/P G(J)=G(J)+2.0D 2*P*(X(J)-A**2)+2.0D 2*B**3-(1.0D 0-B) G(J+1)=G(J+1)-2.0D 2*(X(J)-A**2)*A-(1.0D 0-A) ELSE IF (J.EQ.N) THEN A=-0.5D 0*X(J-1)/P B=-X(J)/P G(J)=G(J)+2.0D 2*P*(X(J)-A**2)-2.0D 2*B**3+(1.0D 0-B) G(J-1)=G(J-1)+2.0D 2*(X(J)-A**2)*A+(1.0D 0-A) ELSE A=0.5D 0*(X(J+1)-X(J-1))/P G(J)=G(J)+2.0D 2*P*(X(J)-A**2) G(J-1)=G(J-1)+2.0D 2*(X(J)-A**2)*A+(1.0D 0-A) G(J+1)=G(J+1)-2.0D 2*(X(J)-A**2)*A-(1.0D 0-A) ENDIF 221 CONTINUE RETURN END * SUBROUTINE TAFU14 ALL SYSTEMS 98/12/01 C PORTABILITY : ALL SYSTEMS C 98/12/01 RA : ORIGINAL VERSION * * PURPOSE : * VALUES OF PARTIAL FUNCTIONS IN THE PARTIALLY SEPARABLE OBJECTIVE * FUNCTION. * * 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 TAFU14(N,KA,X,FA,NEXT) INTEGER N,NEXT REAL*8 X(N),FA REAL*8 A,B,C,D,P,Q,R,U,V INTEGER I,J,K,KA GO TO (10,20,30,40,50,60,70,80,90,100,110,120,130,140,150,160, & 170,180,190,200,210,220),NEXT 10 A=X(KA)**2-X(KA+1) B=X(KA)-1.0D 0 FA=1.0D 2*A**2+B**2 RETURN 20 I=2*KA-1 A=X(I)**2-X(I+1) B=X(I)-1.0D 0 C=X(I+2)**2-X(I+3) D=X(I+2)-1.0D 0 U=X(I+1)+X(I+3)-2.0D 0 V=X(I+1)-X(I+3) FA=1.0D 2*A**2+B**2+9.0D 1*C**2+D**2+ & 1.0D 1*U**2+0.1D 0*V**2 RETURN 30 I=2*KA-1 A=X(I)+1.0D 1*X(I+1) B=X(I+2)-X(I+3) C=X(I+1)-2.0D 0*X(I+2) D=X(I)-X(I+3) FA=A**2+5.0D 0*B**2+C**4+1.0D 1*D**4 RETURN 40 I=2*KA-1 A=EXP(X(I)) B=A-X(I+1) D=X(I+1)-X(I+2) P=X(I+2)-X(I+3) Q=SIN(P)/COS(P) U=X(I) V=X(I+3)-1.0D 0 FA=B**4+1.0D 2*D**6+Q**4+U**8+V**2 RETURN 50 P=7.0D 0/3.0D 0 A=(3.0D 0-2.0D 0*X(KA))*X(KA)+1.0D 0 IF (KA.GT.1) A=A-X(KA-1) IF (KA.LT.N) A=A-X(KA+1) FA=ABS(A)**P RETURN 60 P=7.0D 0/3.0D 0 A=(2.0D 0+5.0D 0*X(KA)**2)*X(KA)+1.0D 0 DO 61 I=MAX(1,KA-5),MIN(N,KA+1) A=A+X(I)*(1.0D 0+X(I)) 61 CONTINUE FA=ABS(A)**P RETURN 70 P=7.0D 0/3.0D 0 IF (KA.LE.N) THEN A=(3.0D 0-2.0D 0*X(KA))*X(KA)+1.0D 0 IF (KA.GT.1) A=A-X(KA-1) IF (KA.LT.N) A=A-X(KA+1) ELSE I=KA-N A=X(I)+X(I+N/2) ENDIF FA=ABS(A)**P RETURN 80 K=N/2 P=0.0D 0 DO 81 I=KA-2,KA+2 IF (I.LT.1.OR.I.GT.N) GO TO 81 A=5.0D 0*(1.0D 0+MOD(I,5)+MOD(KA,5)) B=DBLE(I+KA)/1.0D 1 P=P+A*SIN(X(I))+B*COS(X(I)) 81 CONTINUE IF (KA.GT.K) THEN I=KA-K A=5.0D 0*(1.0D 0+MOD(I,5)+MOD(KA,5)) B=DBLE(I+KA)/1.0D 1 P=P+A*SIN(X(I))+B*COS(X(I)) ELSE I=KA+K A=5.0D 0*(1.0D 0+MOD(I,5)+MOD(KA,5)) B=DBLE(I+KA)/1.0D 1 P=P+A*SIN(X(I))+B*COS(X(I)) ENDIF FA=(DBLE(N+KA)-P)**2/DBLE(N) RETURN 90 K=N/2 FA=DBLE(KA)*(1.0D 0-COS(X(KA))) DO 91 I=KA-2,KA+2 IF (I.LT.1.OR.I.GT.N) GO TO 91 A=5.0D 0*(1.0D 0+MOD(I,5)+MOD(KA,5)) B=DBLE(I+KA)/1.0D 1 FA=FA+A*SIN(X(I))+B*COS(X(I)) 91 CONTINUE IF (KA.GT.K) THEN I=KA-K A=5.0D 0*(1.0D 0+MOD(I,5)+MOD(KA,5)) B=DBLE(I+KA)/1.0D 1 FA=FA+A*SIN(X(I))+B*COS(X(I)) ELSE I=KA+K A=5.0D 0*(1.0D 0+MOD(I,5)+MOD(KA,5)) B=DBLE(I+KA)/1.0D 1 FA=FA+A*SIN(X(I))+B*COS(X(I)) ENDIF FA=FA/DBLE(N) RETURN 100 K=N/2 FA=0.0D 0 Q=1.0D 0+DBLE(KA)/1.0D 1 DO 101 I=KA-2,KA+2 IF (I.LT.1.OR.I.GT.N) GO TO 101 A=5.0D 0*(1.0D 0+MOD(I,5)+MOD(KA,5)) B=1.0D 0+DBLE(I)/1.0D 1 C=DBLE(I+KA)/1.0D 1 FA=FA+A*SIN(Q*X(KA)+B*X(I)+C) 101 CONTINUE IF (KA.GT.K) THEN I=KA-K A=5.0D 0*(1.0D 0+MOD(I,5)+MOD(KA,5)) B=1.0D 0+DBLE(I)/1.0D 1 C=DBLE(I+KA)/1.0D 1 FA=FA+A*SIN(Q*X(KA)+B*X(I)+C) ELSE I=KA+K A=5.0D 0*(1.0D 0+MOD(I,5)+MOD(KA,5)) B=1.0D 0+DBLE(I)/1.0D 1 C=DBLE(I+KA)/1.0D 1 FA=FA+A*SIN(Q*X(KA)+B*X(I)+C) ENDIF FA=FA/DBLE(N) RETURN 110 P=-0.2008D-2 Q=-0.1900D-2 R=-0.0261D-2 I=5*(KA-1) A=1.0D 0 B=0.0D 0 DO 111 J=1,5 A=A*X(I+J) B=B+X(I+J)**2 111 CONTINUE A=EXP(A) B=B-1.0D 1-P C=X(I+2)*X(I+3)-5.0D 0*X(I+4)*X(I+5)-Q D=X(I+1)**3+X(I+2)**3+1.0D 0-R FA=A+1.0D 1*(B**2+C**2+D**2) RETURN 120 A=X(KA)-3.0D 0 B=X(KA)-X(KA+1) FA=A**2+B**2+EXP(2.0D 1*B) RETURN 130 A=X(KA+1)**2 B=X(KA)**2 C=A+1.0D 0 D=B+1.0D 0 FA=B**C+A**D RETURN 140 P=1.0D 0/DBLE(N+1) Q=0.5D 0*P**2 A=2.0D 0*X(KA)+Q*(X(KA)+DBLE(KA)*P+1.0D 0)**3 IF(KA.GT.1) A=A-X(KA-1) IF(KA.LT.N) A=A-X(KA+1) FA=A**2 RETURN 150 P=1.0D 0/DBLE(N+1) Q=2.0D 0/P R=2.0D 0*P A=X(KA)-X(KA+1) FA=Q*X(KA)*A IF (ABS(A).LE.1.0D-6) THEN FA=FA+R*EXP(X(KA+1))*(1.0D 0+A/2.0D 0*(1.0D 0+A/3.0D 0*(1.0D 0+ * A/4.0D 0))) ELSE B=EXP(X(KA))-EXP(X(KA+1)) FA=FA+R*B/A ENDIF IF (KA.EQ.1) THEN FA=FA+R*(EXP(X(1))-1.0D 0)/X(1) ELSEIF (KA.EQ.N-1) THEN FA=FA+Q*X(N)**2+R*(EXP(X(N))-1.0D 0)/X(N) ENDIF RETURN 160 A=DBLE(KA)*(1.0D 0-COS(X(KA))) IF(KA.GT.1) A=A+DBLE(KA)*SIN(X(KA-1)) IF(KA.LT.N) A=A-DBLE(KA)*SIN(X(KA+1)) FA=A RETURN 170 P=1.0D 0/DBLE(N+1) IF (KA.EQ.1) THEN FA=0.25D 0*X(KA)**2/P+1.25D-1*X(KA+1)**2/P+ & P*(EXP(X(KA))-1.0D 0) ELSE IF (KA.EQ.N) THEN FA=0.25D 0*X(KA)**2/P+1.25D-1*X(KA-1)**2/P+ & P*(EXP(X(KA))-1.0D 0) ELSE FA=1.25D-1*(X(KA+1)-X(KA-1))**2/P+P*(EXP(X(KA))-1.0D 0) ENDIF RETURN 180 P=1.0D 0/DBLE(N+1) Q=DBLE(KA)*P IF (KA.EQ.1) THEN FA=0.5D 0*X(KA)**2/P+0.25D 0*X(KA+1)**2/P- & P*(X(KA)**2+2.0D 0*X(KA)*Q) ELSE IF (KA.EQ.N) THEN FA=0.5D 0*X(KA)**2/P+0.25D 0*X(KA-1)**2/P- & P*(X(KA)**2+2.0D 0*X(KA)*Q) ELSE FA=2.5D-1*(X(KA+1)-X(KA-1))**2/P-P*(X(KA)**2+2.0D 0*X(KA)*Q) ENDIF RETURN 190 P=1.0D 0/DBLE(N+1) Q=EXP(2.0D 0*DBLE(KA)*P) IF (KA.EQ.1) THEN R=1.0D 0/3.0D 0 FA=0.5D 0*(X(KA)-R)**2/P+7.0D 0*R**2+ & 2.5D-1*(X(KA+1)-R)**2/P+P*(X(KA)**2+2.0D 0*X(KA)*Q) ELSE IF (KA.EQ.N) THEN R=EXP(2.0D 0)/3.0D 0 FA=0.5D 0*(X(KA)-R)**2/P+7.0D 0*R**2+ & 2.5D-1*(X(KA-1)-R)**2/P+P*(X(KA)**2+2.0D 0*X(KA)*Q) ELSE FA=2.5D-1*(X(KA+1)-X(KA-1))**2/P+P*(X(KA)**2+2.0D 0*X(KA)*Q) ENDIF RETURN 200 P=1.0D 0/DBLE(N+1) IF (KA.EQ.1) THEN FA=(0.5D 0*X(KA)**2/P-P)+ & (2.5D-1*X(KA+1)**2/P-P)*EXP(-2.0D 0*X(KA)**2) ELSE IF (KA.EQ.N) THEN FA=(0.5D 0*X(KA)**2/P-P)*EXP(-2.0D 0)+ & (2.5D-1*X(KA-1)**2/P-P)*EXP(-2.0D 0*X(KA)**2) ELSE FA=(2.5D-1*(X(KA+1)-X(KA-1))**2/P-P)*EXP(-2.0D 0*X(KA)**2) ENDIF RETURN 210 P=1.0D 0/DBLE(N+1) IF (KA.EQ.1) THEN A=0.5D 0*(X(KA+1)-1.0D 0)/P B=(X(KA)-1.0D 0)/P FA=P*(X(KA)**2+A*ATAN(A)-LOG(SQRT(1.0D 0+A**2)))+ & 0.5D 0*P*(1.0D 0+B*ATAN(B)-LOG(SQRT(1.0D 0+B**2))) ELSE IF (KA.EQ.N) THEN A=0.5D 0*(2.0D 0-X(KA-1))/P B=(2.0D 0-X(KA))/P FA=P*(X(KA)**2+A*ATAN(A)-LOG(SQRT(1.0D 0+A**2)))+ & 0.5D 0*P*(4.0D 0+B*ATAN(B)-LOG(SQRT(1.0D 0+B**2))) ELSE A=0.5D 0*(X(KA+1)-X(KA-1))/P FA=P*(X(KA)**2+A*ATAN(A)-LOG(SQRT(1.0D 0+A**2))) ENDIF RETURN 220 P=1.0D 0/DBLE(N+1) IF (KA.EQ.1) THEN A= 0.5D 0*X(KA+1)/P B= X(KA)/P FA=P*(1.0D 2*(X(KA)-A**2)**2+(1.0D 0-A)**2)+ & 0.5D 0*P*(1.0D 2*B**4+(1.0D 0-B)**2) ELSE IF (KA.EQ.N) THEN A=-0.5D 0*X(KA-1)/P B=-X(KA)/P FA=P*(1.0D 2*(X(KA)-A**2)**2+(1.0D 0-A)**2)+ & 0.5D 0*P*(1.0D 2*B**4+(1.0D 0-B)**2) ELSE A=0.5D 0*(X(KA+1)-X(KA-1))/P FA=P*(1.0D 2*(X(KA)-A**2)**2+(1.0D 0-A)**2) ENDIF RETURN END * SUBROUTINE TAGU14 ALL SYSTEMS 98/12/01 C PORTABILITY : ALL SYSTEMS C 98/12/01 RA : ORIGINAL VERSION * * PURPOSE : * GRADIENTS OF PARTIAL FUNCTIONS IN THE PARTIALLY SEPARABLE OBJECTIVE * FUNCTION. * * 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 TAGU14(N,KA,X,GA,NEXT) INTEGER N,NEXT REAL*8 X(N),GA(N) REAL*8 A,B,C,D,P,Q,R,U,V INTEGER I,J,K,KA GO TO (10,20,30,40,50,60,70,80,90,100,110,120,130,140,150,160, & 170,180,190,200,210,220),NEXT 10 A=X(KA)**2-X(KA+1) B=X(KA)-1.0D 0 GA(KA)=4.0D 2*X(KA)*A+2.0D 0*B GA(KA+1)=-2.0D 2*A RETURN 20 I=2*KA-1 A=X(I)**2-X(I+1) B=X(I)-1.0D 0 C=X(I+2)**2-X(I+3) D=X(I+2)-1.0D 0 U=X(I+1)+X(I+3)-2.0D 0 V=X(I+1)-X(I+3) GA(I)=4.0D 2*X(I)*A+2.0D 0*B GA(I+1)=-2.0D 2*A+2.0D 1*U+0.2D 0*V GA(I+2)=3.6D 2*X(I+2)*C+2.0D 0*D GA(I+3)=-1.8D 2*C+2.0D 1*U-0.2D 0*V RETURN 30 I=2*KA-1 A=X(I)+1.0D 1*X(I+1) B=X(I+2)-X(I+3) C=X(I+1)-2.0D 0*X(I+2) D=X(I)-X(I+3) GA(I)=2.0D 0*A+4.0D 1*D**3 GA(I+1)=2.0D 1*A+4.0D 0*C**3 GA(I+2)=-8.0D 0*C**3+1.0D 1*B GA(I+3)=-4.0D 1*D**3-1.0D 1*B RETURN 40 I=2*KA-1 A=EXP(X(I)) B=A-X(I+1) B=4.0D 0*B**3 D=X(I+1)-X(I+2) D=6.0D 2*D**5 P=X(I+2)-X(I+3) C=COS(P) Q=SIN(P)/COS(P) Q=4.0D 0*Q**3/C**2 U=X(I) V=X(I+3)-1.0D 0 GA(I)=A*B+8.0D 0*U**7 GA(I+1)=D-B GA(I+2)=Q-D GA(I+3)=2.0D 0*V-Q RETURN 50 P=7.0D 0/3.0D 0 A=(3.0D 0-2.0D 0*X(KA))*X(KA)+1.0D 0 IF (KA.GT.1) A=A-X(KA-1) IF (KA.LT.N) A=A-X(KA+1) B=P*ABS(A)**(P-1.0D 0)*SIGN(1.0D 0,A) GA(KA)=B*(3.0D 0-4.0D 0*X(KA)) IF (KA.GT.1) GA(KA-1)=-B IF (KA.LT.N) GA(KA+1)=-B RETURN 60 P=7.0D 0/3.0D 0 A=(2.0D 0+5.0D 0*X(KA)**2)*X(KA)+1.0D 0 DO 61 I=MAX(1,KA-5),MIN(N,KA+1) A=A+X(I)*(1.0D 0+X(I)) 61 CONTINUE B=P*ABS(A)**(P-1.0D 0)*SIGN(1.0D 0,A) DO 62 I=MAX(1,KA-5),MIN(N,KA+1) GA(I)=B*(1.0D 0+2.0D 0*X(I)) 62 CONTINUE GA(KA)=GA(KA)+B*(2.0D 0+1.5D 1*X(KA)**2) RETURN 70 P=7.0D 0/3.0D 0 IF (KA.LE.N) THEN A=(3.0D 0-2.0D 0*X(KA))*X(KA)+1.0D 0 IF (KA.GT.1) A=A-X(KA-1) IF (KA.LT.N) A=A-X(KA+1) B=P*ABS(A)**(P-1.0D 0)*SIGN(1.0D 0,A) GA(KA)=B*(3.0D 0-4.0D 0*X(KA)) IF (KA.GT.1) GA(KA-1)=-B IF (KA.LT.N) GA(KA+1)=-B ELSE I=KA-N A=X(I)+X(I+N/2) B=P*ABS(A)**(P-1.0D 0)*SIGN(1.0D 0,A) GA(I)=B GA(I+N/2)=B ENDIF RETURN 80 K=N/2 P=0.0D 0 DO 81 I=KA-2,KA+2 IF (I.LT.1.OR.I.GT.N) GO TO 81 A=5.0D 0*(1.0D 0+MOD(I,5)+MOD(KA,5)) B=DBLE(I+KA)/1.0D 1 P=P+A*SIN(X(I))+B*COS(X(I)) 81 CONTINUE IF (KA.GT.K) THEN I=KA-K A=5.0D 0*(1.0D 0+MOD(I,5)+MOD(KA,5)) B=DBLE(I+KA)/1.0D 1 P=P+A*SIN(X(I))+B*COS(X(I)) ELSE I=KA+K A=5.0D 0*(1.0D 0+MOD(I,5)+MOD(KA,5)) B=DBLE(I+KA)/1.0D 1 P=P+A*SIN(X(I))+B*COS(X(I)) ENDIF P=2.0D 0*(DBLE(N+KA)-P)/DBLE(N) DO 82 I=KA-2,KA+2 IF (I.LT.1.OR.I.GT.N) GO TO 82 A=5.0D 0*(1.0D 0+MOD(I,5)+MOD(KA,5)) B=DBLE(I+KA)/1.0D 1 GA(I)=-P*(A*COS(X(I))-B*SIN(X(I))) 82 CONTINUE IF (KA.GT.K) THEN I=KA-K A=5.0D 0*(1.0D 0+MOD(I,5)+MOD(KA,5)) B=DBLE(I+KA)/1.0D 1 GA(I)=-P*(A*COS(X(I))-B*SIN(X(I))) ELSE I=KA+K A=5.0D 0*(1.0D 0+MOD(I,5)+MOD(KA,5)) B=DBLE(I+KA)/1.0D 1 GA(I)=-P*(A*COS(X(I))-B*SIN(X(I))) ENDIF RETURN 90 K=N/2 P=1.0D 0/DBLE(N) DO 91 I=KA-2,KA+2 IF (I.LT.1.OR.I.GT.N) GO TO 91 A=5.0D 0*(1.0D 0+MOD(I,5)+MOD(KA,5)) B=DBLE(I+KA)/1.0D 1 GA(I)=P*(A*COS(X(I))-B*SIN(X(I))) 91 CONTINUE IF (KA.GT.K) THEN I=KA-K A=5.0D 0*(1.0D 0+MOD(I,5)+MOD(KA,5)) B=DBLE(I+KA)/1.0D 1 GA(I)=P*(A*COS(X(I))-B*SIN(X(I))) ELSE I=KA+K A=5.0D 0*(1.0D 0+MOD(I,5)+MOD(KA,5)) B=DBLE(I+KA)/1.0D 1 GA(I)=P*(A*COS(X(I))-B*SIN(X(I))) ENDIF GA(KA)=GA(KA)+P*DBLE(KA)*SIN(X(KA)) RETURN 100 K=N/2 GA(KA)=0.0D 0 Q=1.0D 0+DBLE(KA)/1.0D 1 DO 101 I=KA-2,KA+2 IF (I.LT.1.OR.I.GT.N) GO TO 101 A=5.0D 0*(1.0D 0+MOD(I,5)+MOD(KA,5)) B=1.0D 0+DBLE(I)/1.0D 1 C=DBLE(I+KA)/1.0D 1 P=A*COS(Q*X(KA)+B*X(I)+C)/DBLE(N) GA(KA)=GA(KA)+P*Q IF (I.EQ.KA) THEN GA(I)=GA(I)+P*B ELSE GA(I)=P*B ENDIF 101 CONTINUE IF (KA.GT.K) THEN I=KA-K A=5.0D 0*(1.0D 0+MOD(I,5)+MOD(KA,5)) B=1.0D 0+DBLE(I)/1.0D 1 C=DBLE(I+KA)/1.0D 1 P=A*COS(Q*X(KA)+B*X(I)+C)/DBLE(N) GA(KA)=GA(KA)+P*Q GA(I)=P*B ELSE I=KA+K A=5.0D 0*(1.0D 0+MOD(I,5)+MOD(KA,5)) B=1.0D 0+DBLE(I)/1.0D 1 C=DBLE(I+KA)/1.0D 1 P=A*COS(Q*X(KA)+B*X(I)+C)/DBLE(N) GA(KA)=GA(KA)+P*Q GA(I)=P*B ENDIF RETURN 110 P=-0.2008D-2 Q=-0.1900D-2 R=-0.0261D-2 I=5*(KA-1) A=1.0D 0 B=0.0D 0 DO 111 J=1,5 A=A*X(I+J) B=B+X(I+J)**2 111 CONTINUE A=A*EXP(A) B=B-1.0D 1-P C=X(I+2)*X(I+3)-5.0D 0*X(I+4)*X(I+5)-Q D=X(I+1)**3+X(I+2)**3+1.0D 0-R GA(I+1)=A/X(I+1)+2.0D 1*(2.0D 0*B*X(I+1) & +3.0D 0*D*X(I+1)**2) GA(I+2)=A/X(I+2)+2.0D 1*(2.0D 0*B*X(I+2) & +C*X(I+3)+3.0D 0*D*X(I+2)**2) GA(I+3)=A/X(I+3)+2.0D 1*(2.0D 0*B*X(I+3)+C*X(I+2)) GA(I+4)=A/X(I+4)+2.0D 1*(2.0D 0*B*X(I+4) & -5.0D 0*C*X(I+5)) GA(I+5)=A/X(I+5)+2.0D 1*(2.0D 0*B*X(I+5)-5.0D 0*C*X(I+4)) RETURN 120 A=X(KA)-3.0D 0 B=X(KA)-X(KA+1) GA(KA)=2.0D 0*A+2.0D 0*B+2.0D 1*EXP(2.0D 1*B) GA(KA+1)=-2.0D 0*B-2.0D 1*EXP(2.0D 1*B) RETURN 130 A=X(KA+1)**2 B=X(KA)**2 C=A+1.0D 0 D=B+1.0D 0 P=0.0D 0 IF (A.GT.P) P=LOG(A) Q=0.0D 0 IF (B.GT.Q) Q=LOG(B) GA(KA)=2.0D 0*X(KA)*(C*B**A+P*A**D) GA(KA+1)=2.0D 0*X(KA+1)*(D*A**B+Q*B**C) RETURN 140 P=1.0D 0/DBLE(N+1) Q=0.5D 0*P**2 A=2.0D 0*X(KA)+Q*(X(KA)+DBLE(KA)*P+1.0D 0)**3 IF(KA.GT.1) A=A-X(KA-1) IF(KA.LT.N) A=A-X(KA+1) GA(KA)=A*(4.0D 0+6.0D 0*Q*(X(KA)+DBLE(KA)*P+1.0D 0)**2.0D 0) IF(KA.GT.1) GA(KA-1)=-2.0D 0*A IF(KA.LT.N) GA(KA+1)=-2.0D 0*A RETURN 150 P=1.0D 0/DBLE(N+1) Q=2.0D 0/P R=2.0D 0*P A=X(KA)-X(KA+1) GA(KA)=Q*(2.0D 0*X(KA)-X(KA+1)) GA(KA+1)=-Q*X(KA) IF (ABS(A).LE.1.0D-6) THEN GA(KA)=GA(KA)+R*EXP(X(KA+1))*(1.0D 0/2.0D 0+ * A*(1.0D 0/3.0D 0+A/8.0D 0)) GA(KA+1)=GA(KA+1)+R*EXP(X(KA+1))*(1.0D 0/2.0D 0+ * A*(1.0D 0/6.0D 0+A/24.0D 0)) ELSE B=EXP(X(KA))-EXP(X(KA+1)) GA(KA)=GA(KA)+R*(EXP(X(KA))*A-B)/A**2 GA(KA+1)=GA(KA+1)-R*(EXP(X(KA+1))*A-B)/A**2 ENDIF IF (KA.EQ.1) THEN GA(1)=GA(1)+R*(EXP(X(1))*(X(1)-1.0D 0)+1.0D 0)/X(1)**2 ELSEIF (KA.EQ.N-1) THEN GA(N)=GA(N)+2.0D 0*Q*X(N) & +R*(EXP(X(N))*(X(N)-1.0D 0)+1.0D 0)/X(N)**2 ENDIF RETURN 160 A=DBLE(KA)*SIN(X(KA)) GA(KA)=A IF(KA.GT.1) GA(KA-1)=+DBLE(KA)*COS(X(KA-1)) IF(KA.LT.N) GA(KA+1)=-DBLE(KA)*COS(X(KA+1)) RETURN 170 P=1.0D 0/DBLE(N+1) IF (KA.EQ.1) THEN GA(KA)=0.5D 0*X(KA)/P+P*EXP(X(KA)) GA(KA+1)=0.25D 0*X(KA+1)/P ELSE IF (KA.EQ.N) THEN GA(KA)=0.5D 0*X(KA)/P+P*EXP(X(KA)) GA(KA-1)=0.25D 0*X(KA-1)/P ELSE A=0.25D 0*(X(KA+1)-X(KA-1))/P GA(KA)=P*EXP(X(KA)) GA(KA-1)=-A GA(KA+1)= A ENDIF RETURN 180 P=1.0D 0/DBLE(N+1) Q=DBLE(KA)*P IF (KA.EQ.1) THEN GA(KA)=X(KA)/P-2.0D 0*P*(X(KA)+Q) GA(KA+1)=0.5D 0*X(KA+1)/P ELSE IF (KA.EQ.N) THEN GA(KA)=X(KA)/P-2.0D 0*P*(X(KA)+Q) GA(KA-1)=0.5D 0*X(KA-1)/P ELSE A=0.5D 0*(X(KA+1)-X(KA-1))/P GA(KA)=-2.0D 0*P*(X(KA)+Q) GA(KA-1)=-A GA(KA+1)= A ENDIF RETURN 190 P=1.0D 0/DBLE(N+1) Q=EXP(2.0D 0*DBLE(KA)*P) IF (KA.EQ.1) THEN R=1.0D 0/3.0D 0 A=0.5D 0*(X(KA+1)-R)/P GA(KA)=2.0D 0*P*(X(KA)+Q)+(X(KA)-R)/P GA(KA+1)= A ELSE IF (KA.EQ.N) THEN R=EXP(2.0D 0)/3.0D 0 A=0.5D 0*(X(KA-1)-R)/P GA(KA)=2.0D 0*P*(X(KA)+Q)+(X(KA)-R)/P GA(KA-1)= A ELSE A=0.5D 0*(X(KA+1)-X(KA-1))/P GA(KA)=2.0D 0*P*(X(KA)+Q) GA(KA-1)=-A GA(KA+1)= A ENDIF RETURN 200 P=1.0D 0/DBLE(N+1) A=EXP(-2.0D 0*X(KA)**2) IF (KA.EQ.1) THEN B=0.5D 0*X(KA+1)/P GA(KA)=X(KA)/P-4.0D 0*X(KA)*A*P*(B**2-1.0D 0) GA(KA+1)= A*B ELSE IF (KA.EQ.N) THEN B=0.5D 0*X(KA-1)/P GA(KA)=X(KA)/P*EXP(-2.0D 0)-4.0D 0*X(KA)*A*P*(B**2-1.0D 0) GA(KA-1)= A*B ELSE B=0.5D 0*(X(KA+1)-X(KA-1))/P GA(KA)=-4.0D 0*X(KA)*A*P*(B**2-1.0D 0) GA(KA-1)=-A*B GA(KA+1)= A*B ENDIF RETURN 210 P=1.0D 0/DBLE(N+1) IF (KA.EQ.1) THEN A=0.5D 0*(X(KA+1)-1.0D 0)/P B=(X(KA)-1.0D 0)/P U=0.5D 0*ATAN(A) V=0.5D 0*ATAN(B) GA(KA)=2.0D 0*P*X(KA)+V GA(KA+1)= U ELSE IF (KA.EQ.N) THEN A=0.5D 0*(2.0D 0-X(KA-1))/P B=(2.0D 0-X(KA))/P U=0.5D 0*ATAN(A) V=0.5D 0*ATAN(B) GA(KA)=2.0D 0*P*X(KA)-V GA(KA-1)=-U ELSE A=0.5D 0*(X(KA+1)-X(KA-1))/P U=0.5D 0*ATAN(A) GA(KA)=2.0D 0*P*X(KA) GA(KA-1)=-U GA(KA+1)= U ENDIF RETURN 220 P=1.0D 0/DBLE(N+1) IF (KA.EQ.1) THEN A= 0.5D 0*X(KA+1)/P B= X(KA)/P GA(KA)=2.0D 2*P*(X(KA)-A**2)+2.0D 2*B**3-(1.0D 0-B) GA(KA+1)=-2.0D 2*(X(KA)-A**2)*A-(1.0D 0-A) ELSE IF (KA.EQ.N) THEN A=-0.5D 0*X(KA-1)/P B=-X(KA)/P GA(KA)=2.0D 2*P*(X(KA)-A**2)-2.0D 2*B**3+(1.0D 0-B) GA(KA-1)= 2.0D 2*(X(KA)-A**2)*A+(1.0D 0-A) ELSE A=0.5D 0*(X(KA+1)-X(KA-1))/P GA(KA)=2.0D 2*P*(X(KA)-A**2) GA(KA-1)= 2.0D 2*(X(KA)-A**2)*A+(1.0D 0-A) GA(KA+1)=-2.0D 2*(X(KA)-A**2)*A-(1.0D 0-A) ENDIF RETURN END