perm filename LINFIT.F4[NET,GUE]2 blob
sn#028800 filedate 1973-03-08 generic text, type T, neo UTF8
subroutine linfit
integer npts,mode
double precision x,y,sigmay,a,sigmaa,b,sigmab,r
double precision sum,sumx,sumy,sumx2,sumxy,sumy2
double precision xi,yi,weight,delta,varnce
dimension x(50),y(50),sigmay(50)
common /fit/x,y,sigmay,npts,mode,a,sigmaa,b,sigmab,r
11 sum=0.
sumx=0.
sumy=0.
sumx2=0.
sumxy=0.
sumy2=0.
21 do 50 i=1,npts
xi=x(i)
yi=y(i)
if (mode) 31,36,38
31 if (yi)34,36,32
32 weight=1./yi
goto 41
34 weight=1./(-yi)
goto 41
36 weight=1.
goto 41
38 weight=1./sigmay(i)**2
41 sum=sum+weight
sumx=sumx+weight*xi
sumy=sumy+weight*yi
sumx2=sumx2+weight*xi*xi
sumxy=sumxy+weight*xi*yi
sumy2=sumy2+weight*yi*yi
50 continue
51 delta=sum*sumx2-sumx*sumx
a=(sumx2*sumy-sumx*sumxy)/delta
b=(sumxy*sum-sumx*sumy)/delta
61 if (mode) 62,64,62
62 varnce=1.
goto 67
64 c=npts-2
varnce=(sumy2+a*a*sum+b*b*sumx2-2.*(a*sumy+b*sumxy-a*b*sumx))/c
67 sigmaa=dsqrt(varnce*sumx2/delta)
68 sigmab=dsqrt(varnce*sum/delta)
71 r=(sum*sumxy-sumx*sumy)/dsqrt(delta*(sum*sumy2-sumy*sumy))
return
end