      program learn
      implicit real*8(a-h,o-z)
      real*8 rmean(8),rvar(8),rcorr(8,8),rcov(8,8),rport(8)
      data riskav/1.0D-03/
      open(unit=17,file='correlation.data',status='old')
      open(unit=18,file='variance.data',status='old')
      open(unit=19,file='sample.output',status='unknown')
      do 100 i=1,10
         read(17,1000,end=110) (rcorr(i,j),j=1,8)
 100  continue
 110  write(19,1010) i
      nrows=i
      do 200 i=1,nrows
         do 150 j=i+1,nrows
            rcorr(j,i)=rcorr(i,j)
 150     continue
 200  continue
      write(19,*) ' '
      do 250 i=1,nrows
         write(19,1020) (rcorr(i,j),j=1,nrows)
 250  continue
 1000 format(8(f7.4,1x))
 1010 format(' ','Number of lines read',i)
 1020 format(' ',8(f7.4,1x))
      stop
      end
      subroutine exputil(rvar,rmean,rport,riskav,utility,
     *                   ninvest)
      implicit real*8(a-h,o-z)
      real*8 rvar(ninvest,ninvest),rmean(ninvest),rport(ninvest)
      pmean=0.0
      pvar=0.0
      do 100 i=1,ninvest
         pmean=pmean+rmean(i)*rport(i)
         do 50 j=1,ninvest
            pvar=pvar+rvar(i,j)*rport(i)*rport(j)
 50      continue
 100  continue
      utility=pmean-riskav/2.0*pvar
      return
      end
