hdiff output

r29879/MLPB3.f90 2016-03-16 18:33:20.682928407 +0000 r29878/MLPB3.f90 2016-03-16 18:33:20.870930341 +0000
  1: SUBROUTINE MLPB3(X,V,ENERGY,GTEST,SECT)  1: svn: E195012: Unable to find repository location for 'svn+ssh://svn.ch.private.cam.ac.uk/groups/wales/trunk/GMIN/source/MLPB3.f90' in revision 29878
  2: USE MODHESS 
  3: USE COMMONS 
  4: IMPLICIT NONE 
  5: LOGICAL GTEST,SECT 
  6: DOUBLE PRECISION X(NMLP), V(NMLP), ENERGY, DUMMY1, DUMMY2, DUMMY3, DUMMY4, SUMINPUTS 
  7: DOUBLE PRECISION Y(MLPOUT), PROB(MLPOUT), PMLPOUTJ1, DMAX 
  8: DOUBLE PRECISION DYW1G(MLPHIDDEN), DPCW1BG(MLPOUT,MLPHIDDEN) 
  9: DOUBLE PRECISION DYW2G(MLPOUT,MLPHIDDEN,MLPIN), DPCW2BG(MLPHIDDEN,MLPIN), TANHSUM(MLPHIDDEN), SECH2(MLPHIDDEN) 
 10: DOUBLE PRECISION DYCDBHID(MLPOUT), DPCDBHID(MLPOUT), DPCDBHIDOUTJ1, D2PCDBHID2, D2YCDBHID2(MLPOUT) 
 11: DOUBLE PRECISION DPCDW2BG(MLPOUT,MLPHIDDEN,MLPIN), D2YCDBHIDDW2BG, D2PCDBHIDDW2BG 
 12: DOUBLE PRECISION DPCDBHIDDW1BG(MLPOUT,MLPHIDDEN) 
 13: DOUBLE PRECISION, PARAMETER :: BOUT=0.0D0 
 14: INTEGER MLPOUTJ1, MLPOFFSET, BOFFSET 
 15: INTEGER GETUNIT, LUNIT, J1, J2, J3, J4, K4, K2, K3, J5 
 16:  
 17: ! 
 18: ! Variables are ordered  
 19: ! w^2_{jk} at (j-1)*MLPIN+k 
 20: !   up to MLPHIDDEN*MLPIN, then 
 21: ! w^1_{ij} at MLPHIDDEN*MLPIN + (i-1)*MLPHIDDEN+j 
 22: !   up to MLPHIDDEN*MLPIN + MLPOUT*MLPHIDDEN 
 23: ! bhidden at MLPHIDDEN*(MLPIN+MLPOUT)+1 
 24: ! bout    at MLPHIDDEN*(MLPIN+MLPOUT)+2 
 25: ! 
 26: ! bout literally does nothing - all first and second derivatives are zero. 
 27: !      may as well remove it. 
 28: ! 
 29:  
 30: MLPOFFSET=MLPHIDDEN*MLPIN 
 31: BOFFSET=MLPHIDDEN*(MLPIN+MLPOUT) 
 32: ENERGY=0.0D0 
 33: V(1:NMLP)=0.0D0 
 34: IF (SECT) HESS(1:NMLP,1:NMLP)=0.0D0 
 35: DO J1=1,MLPDATA 
 36:    MLPOUTJ1=MLPOUTCOME(J1) 
 37:    DO J2=1,MLPHIDDEN 
 38:       DUMMY1=0.0D0 
 39:       DO J3=1,MLPIN 
 40:          DUMMY1=DUMMY1+(X((J2-1)*MLPIN+J3)+X(BOFFSET+1))*MLPDAT(J1,J3) 
 41:       ENDDO 
 42:       TANHSUM(J2)=TANH(DUMMY1)  
 43:       DYW1G(J2)=TANHSUM(J2) 
 44: !     PRINT *,'DUMMY1=',DUMMY1 
 45: !     IF (ABS(DUMMY1).GT.20.0D0) THEN 
 46: !        SECH2(J2)=0.0D0 
 47: !     ELSE 
 48:          SECH2(J2)=1.0D0/COSH(DUMMY1)**2  
 49: !     ENDIF 
 50:    ENDDO 
 51: !  DUMMY3=0.0D0 
 52:    DMAX=-1.0D100 
 53:    DO J4=1,MLPOUT 
 54:       DUMMY2=0.0D0 
 55:       DO J2=1,MLPHIDDEN 
 56:          DO J3=1,MLPIN 
 57: !           DYW2G(J4,J2,J3)=(X( MLPOFFSET + (J4-1)*MLPHIDDEN + J2 )+X(BOFFSET+2)) * MLPDAT(J1,J3)*SECH2(J2) 
 58:             DYW2G(J4,J2,J3)=(X( MLPOFFSET + (J4-1)*MLPHIDDEN + J2 )) * MLPDAT(J1,J3)*SECH2(J2) 
 59:          ENDDO 
 60: !        DUMMY2=DUMMY2+(X(MLPOFFSET+(J4-1)*MLPHIDDEN+J2)+X(BOFFSET+2))*TANHSUM(J2) 
 61:          DUMMY2=DUMMY2+X(MLPOFFSET+(J4-1)*MLPHIDDEN+J2)*TANHSUM(J2) 
 62:       ENDDO 
 63: !     IF (DUMMY2.GT.50.0D0) DUMMY2=50.0D0 ! to prevent FPE 
 64:       IF (DUMMY2.GT.DMAX) DMAX=DUMMY2 
 65:       Y(J4)=DUMMY2 
 66: !     DUMMY3=DUMMY3+EXP(DUMMY2) 
 67:    ENDDO   
 68: ! 
 69: ! Factor DMAX out of the exponentials to prevent overflow. 
 70: ! 
 71:    DUMMY3=0.0D0 
 72:    DO J4=1,MLPOUT 
 73:       Y(J4)=Y(J4)-DMAX 
 74:       DUMMY3=DUMMY3+EXP(Y(J4)) 
 75:    ENDDO 
 76:    DO J4=1,MLPOUT 
 77:       PROB(J4)=EXP(Y(J4))/DUMMY3 
 78:    ENDDO 
 79:    PMLPOUTJ1=PROB(MLPOUTJ1) 
 80: !  IF (DEBUG) THEN 
 81: !     WRITE(*,'(A,I8,A)') 'MLP3> data point ',J1,' outputs and probabilities:' 
 82: !     WRITE(*,'(8G15.5)') Y(1:MLPOUT),PROB(1:MLPOUT) 
 83: !  ENDIF 
 84:    ENERGY=ENERGY-LOG(PMLPOUTJ1) 
 85:    IF (GTEST) THEN 
 86: ! 
 87: ! We only need the probability derivative for the probability corresponding to the correct outcome for this data point 
 88: ! 
 89:       DPCW1BG(1:MLPOUT,1:MLPHIDDEN)=0.0D0 
 90:       DO J2=1,MLPHIDDEN 
 91:          DO J4=1,MLPOUT 
 92:             DPCW1BG(J4,J2)=DPCW1BG(J4,J2)-PMLPOUTJ1*PROB(J4)*DYW1G(J2) 
 93:          ENDDO 
 94:          DPCW1BG(MLPOUTJ1,J2)=DPCW1BG(MLPOUTJ1,J2)+PMLPOUTJ1*DYW1G(J2) 
 95:       ENDDO 
 96:  
 97:       DO J3=1,MLPIN 
 98:          DO J2=1,MLPHIDDEN 
 99:             DUMMY3=0.0D0 
100:             DO J4=1,MLPOUT 
101:                DUMMY3=DUMMY3+PROB(J4)*DYW2G(J4,J2,J3) 
102:             ENDDO 
103:             DPCW2BG(J2,J3)=PMLPOUTJ1*(DYW2G(MLPOUTJ1,J2,J3)-DUMMY3) 
104:          ENDDO 
105:       ENDDO 
106:  
107: !     V(BOFFSET+2)=0.0D0 
108:  
109:       SUMINPUTS=0.0D0 
110:       DO J3=1,MLPIN 
111:          SUMINPUTS=SUMINPUTS+MLPDAT(J1,J3) 
112:       ENDDO 
113:  
114:       DO J4=1,MLPOUT 
115:          DUMMY2=0.0D0 
116:          DO J2=1,MLPHIDDEN 
117: !           DUMMY2=DUMMY2+(X(MLPOFFSET+(J4-1)*MLPHIDDEN+J2)+X(BOFFSET+2))*SECH2(J2) 
118:             DUMMY2=DUMMY2+X(MLPOFFSET+(J4-1)*MLPHIDDEN+J2)*SECH2(J2) 
119:          ENDDO 
120:          DYCDBHID(J4)=DUMMY2*SUMINPUTS 
121:       ENDDO 
122:  
123:       DUMMY2=0.0D0 
124:       DO J4=1,MLPOUT 
125:          DUMMY2=DUMMY2+PROB(J4)*DYCDBHID(J4) 
126:       ENDDO 
127:       V(BOFFSET+1)=V(BOFFSET+1)-(DYCDBHID(MLPOUTJ1)-DUMMY2) 
128:       DPCDBHIDOUTJ1=PMLPOUTJ1*(DYCDBHID(MLPOUTJ1)-DUMMY2) 
129:           
130:       DO J4=1,MLPOUT 
131:          DPCDBHID(J4)=PROB(J4)*(DYCDBHID(J4)-DUMMY2) 
132:       ENDDO 
133:  
134:       DO J4=1,MLPOUT 
135:          DO J2=1,MLPHIDDEN 
136:             V(MLPOFFSET+(J4-1)*MLPHIDDEN+J2)=V(MLPOFFSET+(J4-1)*MLPHIDDEN+J2)-DPCW1BG(J4,J2)/PMLPOUTJ1 
137:          ENDDO 
138:       ENDDO 
139:  
140:       DO J3=1,MLPIN 
141:          DO J2=1,MLPHIDDEN 
142:             V((J2-1)*MLPIN+J3)=V((J2-1)*MLPIN+J3)-DPCW2BG(J2,J3)/PMLPOUTJ1 
143:          ENDDO 
144:       ENDDO 
145:    ENDIF 
146:  
147:    IF (SECT) THEN 
148:  
149:       DUMMY2=0.0D0 
150:       DO J4=1,MLPOUT 
151:          DUMMY2=DUMMY2+PROB(J4)*DYCDBHID(J4) 
152:       ENDDO 
153:  
154:       DO J2=1,MLPHIDDEN ! J2 is gamma 
155:          DO J4=1,MLPOUT ! J4 is beta  
156:             DPCDBHIDDW1BG(J4,J2)=-TANHSUM(J2)*PMLPOUTJ1*PROB(J4)*(DYCDBHID(MLPOUTJ1)-DUMMY2) & 
157:   &                  -TANHSUM(J2)*PMLPOUTJ1*PROB(J4)*(DYCDBHID(J4) - DUMMY2) - PMLPOUTJ1*PROB(J4)*SUMINPUTS*SECH2(J2)  
158:          ENDDO 
159:          DPCDBHIDDW1BG(MLPOUTJ1,J2)=DPCDBHIDDW1BG(MLPOUTJ1,J2)+TANHSUM(J2)*PMLPOUTJ1*(DYCDBHID(MLPOUTJ1)-DUMMY2) & 
160:   &              +PMLPOUTJ1*SUMINPUTS*SECH2(J2) 
161:       ENDDO 
162: ! 
163: !     b hidden with w^1 beta gamma 
164: ! 
165:       DO J2=1,MLPHIDDEN ! J2 is gamma 
166:          DO J4=1,MLPOUT ! J4 is beta  
167:             HESS(BOFFSET+1,MLPOFFSET+(J4-1)*MLPHIDDEN+J2)= & 
168:   &         HESS(BOFFSET+1,MLPOFFSET+(J4-1)*MLPHIDDEN+J2) + DPCDBHIDOUTJ1*DPCW1BG(J4,J2)/PMLPOUTJ1**2  & 
169:   &                                -DPCDBHIDDW1BG(J4,J2)/PMLPOUTJ1 
170:          ENDDO 
171:       ENDDO 
172:  
173: !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 
174:  
175:       DO J4=1,MLPOUT ! J4 is input epsilon 
176:          DUMMY1=0.0D0 
177:          DO J2=1,MLPHIDDEN ! J2 is gamma 
178: !           DUMMY1=DUMMY1+SECH2(J2)*TANHSUM(J2)*(X(MLPHIDDEN*MLPIN + (J4-1)*MLPHIDDEN+J2)+X(BOFFSET+2)) 
179:             DUMMY1=DUMMY1+SECH2(J2)*TANHSUM(J2)*X(MLPHIDDEN*MLPIN + (J4-1)*MLPHIDDEN+J2) 
180:          ENDDO 
181:          D2YCDBHID2(J4)=-2.0D0*SUMINPUTS**2*DUMMY1 
182:       ENDDO 
183:  
184:       DUMMY1=0.0D0 
185:       DUMMY3=0.0D0 
186:       DO J4=1,MLPOUT 
187:          DUMMY1=DUMMY1+PROB(J4)*D2YCDBHID2(J4)+DPCDBHID(J4)*DYCDBHID(J4) 
188:          DUMMY3=DUMMY3+PROB(J4)*DYCDBHID(J4) 
189:       ENDDO 
190:  
191:       D2PCDBHID2=DPCDBHID(MLPOUTJ1)*(DYCDBHID(MLPOUTJ1)-DUMMY3) + PMLPOUTJ1*(D2YCDBHID2(MLPOUTJ1)-DUMMY1) 
192:  
193:       HESS(BOFFSET+1,BOFFSET+1)=HESS(BOFFSET+1,BOFFSET+1)+DPCDBHID(MLPOUTJ1)**2/PMLPOUTJ1**2-D2PCDBHID2/PMLPOUTJ1 
194: ! 
195: !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 
196: ! 
197: !     b hidden with w^2 beta gamma 
198: ! 
199:       DUMMY1=0.0D0 
200:       DO J4=1,MLPOUT 
201:          DUMMY1=DUMMY1+PROB(J4)*DYCDBHID(J4) 
202:       ENDDO 
203:  
204:       DO J2=1,MLPHIDDEN ! J2 is beta 
205:          DO J3=1,MLPIN  ! J3 is gamma 
206:             DUMMY4=0.0D0 
207:             DO J4=1,MLPOUT 
208: !              DUMMY4=DUMMY4+PROB(J4)*(X(MLPOFFSET+(J4-1)*MLPHIDDEN+J2)+X(BOFFSET+2)) 
209:                DUMMY4=DUMMY4+PROB(J4)*X(MLPOFFSET+(J4-1)*MLPHIDDEN+J2) 
210:             ENDDO 
211:             DO J4=1,MLPOUT 
212: !              DPCDW2BG(J4,J2,J3)=PROB(J4)*MLPDAT(J1,J3)*SECH2(J2)*(X(MLPOFFSET+(J4-1)*MLPHIDDEN+J2)+X(BOFFSET+2)-DUMMY4) 
213:                DPCDW2BG(J4,J2,J3)=PROB(J4)*MLPDAT(J1,J3)*SECH2(J2)*(X(MLPOFFSET+(J4-1)*MLPHIDDEN+J2)-DUMMY4) 
214:             ENDDO 
215:             DUMMY2=0.0D0 
216:             DUMMY3=0.0D0 
217:             DO J4=1,MLPOUT 
218:                DUMMY2=DUMMY2+DYCDBHID(J4)*DPCDW2BG(J4,J2,J3) 
219: !              DUMMY3=DUMMY3-2.0D0*PROB(J4)*MLPDAT(J1,J3)*SUMINPUTS*(X(MLPOFFSET+(J4-1)*MLPHIDDEN+J2)+X(BOFFSET+2))*SECH2(J2)*TANHSUM(J2) 
220:                DUMMY3=DUMMY3-2.0D0*PROB(J4)*MLPDAT(J1,J3)*SUMINPUTS*X(MLPOFFSET+(J4-1)*MLPHIDDEN+J2)*SECH2(J2)*TANHSUM(J2) 
221:             ENDDO 
222:  
223: !           D2YCDBHIDDW2BG=-2.0D0*MLPDAT(J1,J3)*SUMINPUTS*(X(MLPOFFSET+(MLPOUTJ1-1)*MLPHIDDEN+J2)+X(BOFFSET+2))*SECH2(J2)*TANHSUM(J2) 
224:             D2YCDBHIDDW2BG=-2.0D0*MLPDAT(J1,J3)*SUMINPUTS*X(MLPOFFSET+(MLPOUTJ1-1)*MLPHIDDEN+J2)*SECH2(J2)*TANHSUM(J2) 
225:  
226:             D2PCDBHIDDW2BG=DPCDW2BG(MLPOUTJ1,J2,J3)*(DYCDBHID(MLPOUTJ1)-DUMMY1)+PMLPOUTJ1*(D2YCDBHIDDW2BG-DUMMY2-DUMMY3) 
227:  
228:             HESS(BOFFSET+1,(J2-1)*MLPIN+J3)= & 
229:   &         HESS(BOFFSET+1,(J2-1)*MLPIN+J3) + DPCDBHID(MLPOUTJ1)*DPCDW2BG(MLPOUTJ1,J2,J3)/PMLPOUTJ1**2 - D2PCDBHIDDW2BG/PMLPOUTJ1 
230:          ENDDO 
231:       ENDDO 
232: ! 
233: ! This block w^1 with w^1 is locally symmetric 
234: ! 
235:       DO J4=1,MLPOUT ! J4 is beta  
236:          DO J2=1,MLPHIDDEN ! J2 is gamma 
237:             DO K4=1,J4 ! K4 is alpha 
238:                DO K2=1,MLPHIDDEN ! K2 is epsilon 
239:                   DUMMY1=0.0D0 
240:                   IF ((J4.EQ.MLPOUTJ1).AND.(K4.EQ.MLPOUTJ1)) DUMMY1=1.0D0 
241:                   IF (J4.EQ.MLPOUTJ1) DUMMY1=DUMMY1-PROB(K4) 
242:                   IF (K4.EQ.MLPOUTJ1) DUMMY1=DUMMY1-PROB(J4) 
243:                   IF (K4.EQ.J4) DUMMY1=DUMMY1-PROB(J4) 
244:                   DUMMY1=DUMMY1+2.0D0*PROB(J4)*PROB(K4) 
245:                   HESS(MLPOFFSET+(J4-1)*MLPHIDDEN+J2,MLPOFFSET+(K4-1)*MLPHIDDEN+K2)= & 
246:   &               HESS(MLPOFFSET+(J4-1)*MLPHIDDEN+J2,MLPOFFSET+(K4-1)*MLPHIDDEN+K2) & ! sum over data points 
247:   &               +DPCW1BG(J4,J2)*DPCW1BG(K4,K2)/PMLPOUTJ1**2 & 
248:   &               -DUMMY1*TANHSUM(J2)*TANHSUM(K2) 
249:                ENDDO 
250:             ENDDO 
251:          ENDDO 
252:       ENDDO 
253: ! 
254: ! Off-diagonal w^1 with w^2 blocks 
255: ! 
256:       DO J3=1,MLPOUT ! J3 is beta for w^1 outputs 
257:          DO J2=1,MLPHIDDEN ! J2 is gamma for w^1 hidden 
258:             DO K4=1,MLPHIDDEN ! K4 is alpha for w^2 hidden 
259:                DUMMY3=0.0D0 
260:                DO J5=1,MLPOUT 
261:                   DUMMY3=DUMMY3+PROB(J5)*X(MLPOFFSET + (J5-1)*MLPHIDDEN + K4)  
262:                ENDDO 
263:                DO K2=1,MLPIN ! K2 is epsilon for w^2 inputs 
264:                   DUMMY1=0.0D0 
265:                   IF (K4.EQ.J2) DUMMY1=DUMMY1-PMLPOUTJ1*PROB(J3)*MLPDAT(J1,K2)*SECH2(J2) 
266:                   IF ((K4.EQ.J2).AND.(J3.EQ.MLPOUTJ1)) DUMMY1=DUMMY1+PMLPOUTJ1*MLPDAT(J1,K2)*SECH2(J2) 
267:  
268:                   DUMMY2=TANHSUM(J2)*PMLPOUTJ1*MLPDAT(J1,K2)*SECH2(K4) & 
269:   &                      *(X(MLPOFFSET+(MLPOUTJ1-1)*MLPHIDDEN+K4)-DUMMY3) 
270:                   DUMMY1=DUMMY1-PROB(J3)*DUMMY2 
271:                   IF (MLPOUTJ1.EQ.J3) DUMMY1=DUMMY1+DUMMY2 
272:                   DUMMY1=DUMMY1-PMLPOUTJ1*PROB(J3)*MLPDAT(J1,K2)*SECH2(K4)*TANHSUM(J2) & 
273:   &                             *(X(MLPOFFSET + (J3-1)*MLPHIDDEN + K4)-DUMMY3) 
274:                   HESS(MLPOFFSET+(J3-1)*MLPHIDDEN+J2,(K4-1)*MLPIN+K2)= & 
275:   &               HESS(MLPOFFSET+(J3-1)*MLPHIDDEN+J2,(K4-1)*MLPIN+K2) & ! sum over data points 
276:   &               +DPCW1BG(J3,J2)*DPCW2BG(K4,K2)/PMLPOUTJ1**2 & 
277:   &               -DUMMY1/PMLPOUTJ1 
278:                ENDDO 
279:             ENDDO 
280:          ENDDO 
281:       ENDDO 
282: ! 
283: ! diagonal w^2 with w^2  
284: ! 
285:       DO J3=1,MLPIN ! J3 is gamma for w^2 inputs 
286:          DO J2=1,MLPHIDDEN ! J2 is beta for w^2 hidden 
287:             DUMMY2=0.0D0 
288:             DO J5=1,MLPOUT 
289:                DUMMY2=DUMMY2+PROB(J5)*X(MLPOFFSET + (J5-1)*MLPHIDDEN + J2)  
290:             ENDDO 
291:             DO K4=1,MLPIN ! K4 is epsilon for w^2 inputs 
292:                DO K2=1,J2 ! K2 is alpha for w^2 hidden 
293:                   DUMMY3=0.0D0 
294:                   DO J5=1,MLPOUT 
295:                      DUMMY3=DUMMY3+PROB(J5)*X(MLPOFFSET + (J5-1)*MLPHIDDEN + K2)  
296:                   ENDDO 
297:                   DUMMY4=0.0D0 
298:                   DO J5=1,MLPOUT 
299:                      DUMMY4=DUMMY4+PROB(J5)*X(MLPOFFSET + (J5-1)*MLPHIDDEN + K2)  & ! take out of loops 
300:   &                                        *X(MLPOFFSET + (J5-1)*MLPHIDDEN + J2) 
301:                   ENDDO 
302:                   DUMMY1=DPCW2BG(K2,K4)*MLPDAT(J1,J3)*SECH2(J2) & 
303:   &                      *(X(MLPOFFSET+(MLPOUTJ1-1)*MLPHIDDEN+J2)-DUMMY2) & 
304:   &                      -PMLPOUTJ1*MLPDAT(J1,J3)*SECH2(J2)*MLPDAT(J1,K4)*SECH2(K2) & 
305:   &                      *(DUMMY4-DUMMY2*DUMMY3) 
306:                   IF (K2.EQ.J2) DUMMY1=DUMMY1-2.0D0*PMLPOUTJ1*MLPDAT(J1,K4)*MLPDAT(J1,J3) & 
307:   &                                     *SECH2(J2)*TANHSUM(J2)*(X(MLPOFFSET + (MLPOUTJ1-1)*MLPHIDDEN + J2)-DUMMY2)  
308:  
309:                   HESS((J2-1)*MLPIN+J3,(K2-1)*MLPIN+K4)= & 
310:   &               HESS((J2-1)*MLPIN+J3,(K2-1)*MLPIN+K4) & ! sum over data points 
311:   &               +DPCW2BG(J2,J3)*DPCW2BG(K2,K4)/PMLPOUTJ1**2 - DUMMY1/PMLPOUTJ1 
312:                ENDDO 
313:             ENDDO 
314:          ENDDO 
315:       ENDDO 
316:    ENDIF 
317: ENDDO 
318:  
319: DUMMY1=0.0D0 
320: DO J1=1,NMLP-1 
321:    DUMMY1=DUMMY1+X(J1)**2 
322: ENDDO 
323:  
324: ENERGY=ENERGY/MLPDATA + MLPLAMBDA*DUMMY1 
325: ! IF (DEBUG) WRITE(*,'(A,G20.10)') 'MLP3> objective function=',ENERGY 
326:  
327: IF (GTEST) V(1:NMLP)=V(1:NMLP)/MLPDATA  
328: IF (GTEST) V(1:NMLP-1)=V(1:NMLP-2) + 2.0D0*MLPLAMBDA*X(1:NMLP-1) 
329: ! 
330: ! Symmetrise Hessian here 
331: ! 
332: IF (SECT) HESS(1:NMLP,1:NMLP)=HESS(1:NMLP,1:NMLP)/MLPDATA 
333: IF (SECT) THEN 
334:    DO J1=1,NMLP-1 
335:       HESS(J1,J1)=HESS(J1,J1)+2*MLPLAMBDA 
336:    ENDDO 
337:    DO J1=1,NMLP 
338:       DO J2=1,J1-1 
339:          HESS(J2,J1)=HESS(J1,J2) 
340:       ENDDO 
341:    ENDDO 
342: ENDIF 
343:  
344: END SUBROUTINE MLPB3 


legend
Lines Added 
Lines changed
 Lines Removed

hdiff - version: 2.1.0