This commit was generated by cvs2svn to compensate for changes in r2,
[u/mrichter/AliRoot.git] / MINICERN / mathlib / gen / divon / bufopt.F
1 *
2 * $Id$
3 *
4 * $Log$
5 * Revision 1.1.1.1  1996/04/01 15:03:25  mclareni
6 * Mathlib gen
7 *
8 *
9 #include "gen/pilot.h"
10       SUBROUTINE BUFOPT (N,RXMIN,RXMAX,RXLOW,RXHI,RFMIN,RFMAX,RFLOBD,RFU
11      1PBD,W,LENW,IW,LENIW,NFCNT,IRESLT)
12       INTEGER N, LENW, LENIW, NFCNT, IRESLT
13       INTEGER IW(LENIW)
14       REAL RXMIN(N), RXMAX(N), RXLOW(N), RXHI(N), RFMIN, RFMAX,
15      1     RFLOBD, RFUPBD
16       DOUBLE PRECISION W(LENW)
17       INTEGER I, IPRINT, IXHI, IXLOW, IXMAX, JAHESS, JGACTV, JGFREE,
18      1        JGNEW, JIACTV, JIFREE, JPFREE, JX, JXHI, JXLOW, JXMAX,
19      2        JXMIN, JXTEMP, MAXFUN
20       REAL RFDIF, SNGL
21       DOUBLE PRECISION ALFMAX, DELTA, ETA, FLOBD, FMAX, FMIN,
22      1   FTOL, FUPBD, GTOL
23       JXMIN=1
24       JXMAX=JXMIN+N
25       JXLOW=JXMAX+N
26       JXHI=JXLOW+N
27       DO 10 I=1,N
28       W(I)=DBLE(RXMIN(I))
29       IXMAX=JXMAX-1+I
30       W(IXMAX)=DBLE(RXMAX(I))
31       IXLOW=JXLOW-1+I
32       W(IXLOW)=DBLE(RXLOW(I))
33       IXHI=JXHI-1+I
34       W(IXHI)=DBLE(RXHI(I))
35  10   CONTINUE
36       FMAX=DBLE(RFMAX)
37       FMIN=DBLE(RFMIN)
38       FLOBD=DBLE(RFLOBD)
39       FUPBD=DBLE(RFUPBD)
40       CALL SETTOL(N,FTOL,GTOL,DELTA,ETA,ALFMAX,MAXFUN,IPRINT)
41       IF(IPRINT.LT.0) GOTO 20
42       WRITE(6,70) (RXLOW(I),I=1,N)
43       WRITE(6,80) (RXHI(I),I=1,N)
44  20   JX=JXHI+N
45       JXTEMP=JX+N
46       JGFREE=JXTEMP+N
47       JPFREE=JGFREE+N
48       JGACTV=JPFREE+N
49       JGNEW=JGACTV+N
50       JAHESS=JGNEW+N
51       JIFREE=1
52       JIACTV=JIFREE+N
53       CALL BNDOPT(N,W(JXMIN),W(JXMAX),W(JXLOW),W(JXHI),FMIN,FMAX,FLOBD,
54      1FUPBD,W(JX),W(JXTEMP),W(JGFREE),W(JPFREE),W(JGACTV),W(JGNEW),W(JAH
55      2ESS),DELTA,FTOL,GTOL,ETA,ALFMAX,MAXFUN,NFCNT,IW(JIFREE),IW(JIACTV)
56      3,IPRINT,IRESLT)
57       DO 30 I=1,N
58       RXMIN(I)=SNGL(W(I))
59       IXMAX=N+I
60       RXMAX(I)=SNGL(W(IXMAX))
61  30   CONTINUE
62       RFMIN=SNGL(FMIN)
63       RFMAX=SNGL(FMAX)
64       RFDIF=RFMAX-RFMIN
65       IF(IPRINT.LT.0) RETURN
66       WRITE(6,40) RFDIF,RFMAX,RFMIN,NFCNT
67       WRITE(6,50) (RXMIN(I),I=1,N)
68       WRITE(6,60) (RXMAX(I),I=1,N)
69       RETURN
70  40   FORMAT('0 END OF OPTIMIZATION -- FDIF =', 1PE15.5, 4X,
71      1  'FMAX =',1PE15.5,4X,'FMIN =',1PE15.5,4X,'NFCNT =',I7)
72  50   FORMAT(' XMIN',5(1PE15.5))
73  60   FORMAT(' XMAX',5(1PE15.5))
74  70   FORMAT(' LOWER BOUNDS',5(1PE15.5))
75  80   FORMAT(' UPPER BOUNDS',5(1PE15.5))
76       END