text:       SUBROUTINE mrqcof(x,y,sig,ndata,a,ia,ma,alpha,beta,nalp,chisq,
       *funcs)
        INTEGER ma,nalp,ndata,ia(ma),MMAX
        REAL*8 chisq,a(ma),alpha(nalp,nalp),beta(ma),sig(ndata),x(ndata),
       *y(ndata)
        EXTERNAL funcs
        PARAMETER (MMAX=6)
        INTEGER mfit,i,j,k,l,m
        REAL*8 dy,sig2i,wt,ymod,dyda(MMAX)
        mfit=0
        do 11 j=1,ma
          if (ia(j).ne.0) mfit=mfit+1
  11    continue
        do 13 j=1,mfit
          do 12 k=1,j
            alpha(j,k)=0.
  12      continue
          beta(j)=0.
  13    continue
        chisq=0.
        do 16 i=1,ndata
          call funcs(x(i),a,ymod,dyda,ma)
          sig2i=1./(sig(i)*sig(i))
          dy=y(i)-ymod
          j=0
          do 15 l=1,ma
            if(ia(l).ne.0) then
              j=j+1
              wt=dyda(l)*sig2i
              k=0
              do 14 m=1,l
                if(ia(m).ne.0) then
                  k=k+1
                  alpha(j,k)=alpha(j,k)+wt*dyda(m)
                endif
  14          continue
              beta(j)=beta(j)+dy*wt
            endif
  15      continue
          chisq=chisq+dy*dy*sig2i
  16    continue
        do 18 j=2,mfit
          do 17 k=1,j-1
            alpha(k,j)=alpha(j,k)
  17      continue
  18    continue
        return
        END
  