0
|
1 /*
|
|
2 * Structures, typedefs etc used in Locfit
|
|
3 */
|
|
4
|
|
5 typedef struct {
|
|
6 double *wk, *coef, *xbar, *f;
|
|
7 jacobian xtwx;
|
|
8 int lwk, haspc;
|
|
9 } paramcomp;
|
|
10 #define haspc(pc) ((pc)->haspc)
|
|
11
|
|
12 typedef struct {
|
|
13 double *x[MXDIM];
|
|
14 double *y;
|
|
15 double *w;
|
|
16 double *b;
|
|
17 double *c;
|
|
18 double sca[MXDIM];
|
|
19 double xl[2*MXDIM];
|
|
20 int n, d, ord;
|
|
21 int sty[MXDIM];
|
|
22 varname yname, xname[MXDIM], wname, bname, cname;
|
|
23 } lfdata;
|
|
24 #define resp(lfd,i) (((lfd)->y==NULL) ? 0.0 : (lfd)->y[i])
|
|
25 #define base(lfd,i) (((lfd)->b==NULL) ? 0.0 : (lfd)->b[i])
|
|
26 #define prwt(lfd,i) (((lfd)->w==NULL) ? 1.0 : (lfd)->w[i])
|
|
27 #define cens(lfd,i) (((lfd)->c==NULL) ? 0 : (int)(lfd)->c[i])
|
|
28 #define datum(lfd,i,j) ((lfd)->x[i][j])
|
|
29 #define dvari(lfd,i) ((lfd)->x[i])
|
|
30
|
|
31 typedef struct {
|
|
32 int deflink, canlink, quasi, robust;
|
|
33 int (*vallink)(), (*family)(), (*initial)(), (*like)(), (*pcheck)();
|
|
34 } family;
|
|
35 #define isquasi(fam) ((fam)->quasi)
|
|
36 #define isrobust(fam) ((fam)->robust)
|
|
37 extern int inllmix; /* flag needed to ensure correct behavior in llmix. */
|
|
38
|
|
39 typedef struct {
|
|
40 double nn, fixh, adpen;
|
|
41 int ker, kt;
|
|
42 int deg, deg0, p;
|
|
43 int acri;
|
|
44 int fam, lin;
|
|
45 family fami;
|
|
46 int ubas;
|
|
47 double (*vb)();
|
|
48 void (*vbasis)();
|
|
49 } smpar;
|
|
50 #define nn(sp) ((sp)->nn)
|
|
51 #define fixh(sp) ((sp)->fixh)
|
|
52 #define pen(sp) ((sp)->adpen)
|
|
53 #define ker(sp) ((sp)->ker)
|
|
54 #define kt(sp) ((sp)->kt)
|
|
55 #define deg(sp) ((sp)->deg)
|
|
56 #define deg0(sp) ((sp)->deg0)
|
|
57 #define npar(sp) ((sp)->p)
|
|
58 #define acri(sp) ((sp)->acri)
|
|
59 #define ubas(sp) ((sp)->ubas)
|
|
60 #define fam(sp) ((sp)->fam)
|
|
61 #define fami(sp) (&(sp)->fami)
|
|
62 #define link(sp) ((sp)->lin)
|
|
63
|
|
64 typedef struct {
|
|
65 int deriv[MXDEG+2];
|
|
66 int nd;
|
|
67 } deriv;
|
|
68
|
|
69 typedef struct {
|
|
70 int ev;
|
|
71 double *sv;
|
|
72 double cut;
|
|
73 double fl[2*MXDIM];
|
|
74 Sint *iwk, *ce, *s, *lo, *hi;
|
|
75 int liw, nce, ncm, maxk;
|
|
76 int mg[MXDIM];
|
|
77 void (*espec)();
|
|
78 } evstruc;
|
|
79 #define ev(evs) ((evs)->ev)
|
|
80 #define cut(evs) ((evs)->cut)
|
|
81 #define mk(evs) ((evs)->maxk)
|
|
82 #define mg(evs) ((evs)->mg)
|
|
83
|
|
84 typedef struct {
|
|
85 double *xev, *coef, *nlx, *t0, *lik, *h, *deg, *kap;
|
|
86 int lev, lwk;
|
|
87 int d, dcor, geth, hasd;
|
|
88 int nv, nvm;
|
|
89 } fitpt;
|
|
90 #define evp(fp) ((fp)->xev)
|
|
91 #define evpt(fp,i) (&(fp)->xev[(i)*(fp)->d])
|
|
92 #define evptx(fp,i,k) ((fp)->xev[(i)*(fp)->d+(k)])
|
|
93 #define llk(fp) ((fp)->kap[0])
|
|
94 #define df0(fp) ((fp)->kap[1])
|
|
95 #define df1(fp) ((fp)->kap[2])
|
|
96 #define rv(fp) ((fp)->kap[3])
|
|
97 #define rsc(fp) ((fp)->kap[5])
|
|
98 #define dc(fp) ((fp)->dcor)
|
|
99 #define geth(fp) ((fp)->geth)
|
|
100
|
|
101 typedef struct {
|
|
102 int (*procv)(), keepv, keepc, nopc, isset;
|
|
103 void (*alloc)(), (*pp)();
|
|
104 } module;
|
|
105
|
|
106 typedef struct {
|
|
107 int lf_init_id;
|
|
108 lfdata lfd;
|
|
109 smpar sp;
|
|
110 evstruc evs;
|
|
111 fitpt fp;
|
|
112 deriv dv;
|
|
113 paramcomp pc;
|
|
114 module mdl;
|
|
115 } lfit;
|
|
116 #define LF_INIT_ID 34897239
|