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
|
# Copyright(c) 1986 Association of Universities for Research in Astronomy Inc.
include <gset.h>
define MSIZE 2. # Mark size
# ICG_ADD -- Add a point.
procedure icg_addd (gp, wx, wy, wt, x, y, w1, w2, npts)
pointer gp # GIO pointer
real wx # X point to insert
real wy # Y point to insert
real wt # Weight of point to add
double x[npts] # Independent variable
double y[npts] # Dependent variable
double w1[npts] # Current weights
double w2[npts] # Initial weights
int npts # Number of points
int i, j
begin
# Find the place to insert the new point.
if (x[1] < x[npts])
for (i = npts; (i > 0) && (wx < x[i]); i = i - 1)
;
else
for (i = npts; (i > 0) && (wx > x[i]); i = i - 1)
;
# Shift the data to insert the new point.
for (j = npts; j > i; j = j - 1) {
x[j+1] = x[j]
y[j+1] = y[j]
w1[j+1] = w1[j]
w2[j+1] = w2[j]
}
# Add the new point and increment the number of points.
i = i + 1
x[i] = wx
y[i] = wy
w1[i] = wt
w2[i] = wt
npts = npts + 1
# Mark the point
call gmark (gp, real (x[i]), real (y[i]), GM_PLUS, MSIZE, MSIZE)
end
|