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