1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
c subroutine xfit.f
c
c source
c Bevington, page 76.
c
c purpose
c calculate the mean and estimated errors for a set of data points
c
c usage
c call xfit (x, sigmax, npts, mode, xmean, sigmam, sigma)
c
c description of parameters
c x - array of data points
c sigmax - array of standard deviations for data points
c npts - number of data points
c mode - determines method of weighting
c +1 (instrumental) weight(i) = 1./sigmax(i)**2
c 0 (no weighting) weight(i) = 1.
c -1 (statistical) weight(i) = 1.
c xmean - weighted mean
c sigmam - standard deviation of mean
c sigma - standard deviation of data
c
c subroutines and function subprograms required
c none
c
subroutine xfit (x,sigmax,npts,mode,xmean,sigmam,sigma)
double precision sum,sumx,weight,free
dimension x(1),sigmax(1)
c
c accumulate weighted sums
c
11 sum=0.
sumx=0.
sigma=0.
sigmam=0.
20 do 32 i=1,npts
21 if (mode) 22,22,24
22 weight=1.
goto 31
24 weight=1./sigmax(i)**2
31 sum=sum+weight
32 sumx=sumx+weight*x(i)
c
c evaluate mean and standard deviations
c
41 xmean=sumx/sum
51 do 52 i=1,npts
52 sigma=sigma+(x(i)-xmean)**2
free=npts-1
54 sigma=dsqrt(sigma/free)
61 if (mode) 62,64,66
62 sigmam=dsqrt(xmean/sum)
goto 70
64 sigmam=sigma/dsqrt(sum)
goto 70
66 sigmam=dsqrt(1./sum)
70 return
end
|