diff rDiff/src/locfit/Source/lfstruc.h @ 0:0f80a5141704

version 0.3 uploaded
author vipints
date Thu, 14 Feb 2013 23:38:36 -0500
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rDiff/src/locfit/Source/lfstruc.h	Thu Feb 14 23:38:36 2013 -0500
@@ -0,0 +1,116 @@
+/*
+ *   Structures, typedefs etc used in Locfit
+ */
+
+typedef struct {
+  double *wk, *coef, *xbar, *f;
+  jacobian xtwx;
+  int lwk, haspc;
+} paramcomp;
+#define haspc(pc) ((pc)->haspc)
+
+typedef struct {
+  double *x[MXDIM];
+  double *y;
+  double *w;
+  double *b;
+  double *c;
+  double sca[MXDIM];
+  double xl[2*MXDIM];
+  int n, d, ord;
+  int sty[MXDIM];
+  varname yname, xname[MXDIM], wname, bname, cname;
+} lfdata;
+#define resp(lfd,i) (((lfd)->y==NULL) ? 0.0 : (lfd)->y[i])
+#define base(lfd,i) (((lfd)->b==NULL) ? 0.0 : (lfd)->b[i])
+#define prwt(lfd,i) (((lfd)->w==NULL) ? 1.0 : (lfd)->w[i])
+#define cens(lfd,i) (((lfd)->c==NULL) ? 0 : (int)(lfd)->c[i])
+#define datum(lfd,i,j) ((lfd)->x[i][j])
+#define dvari(lfd,i)   ((lfd)->x[i])
+
+typedef struct {
+  int deflink, canlink, quasi, robust;
+  int (*vallink)(), (*family)(), (*initial)(), (*like)(), (*pcheck)();
+} family;
+#define isquasi(fam) ((fam)->quasi)
+#define isrobust(fam) ((fam)->robust)
+extern int inllmix; /* flag needed to ensure correct behavior in llmix. */
+
+typedef struct {
+  double nn, fixh, adpen;
+  int ker, kt;
+  int deg, deg0, p;
+  int acri;
+  int fam, lin;
+  family fami;
+  int ubas;
+  double (*vb)();
+  void (*vbasis)();
+} smpar;
+#define nn(sp)   ((sp)->nn)
+#define fixh(sp) ((sp)->fixh)
+#define pen(sp)  ((sp)->adpen)
+#define ker(sp)  ((sp)->ker)
+#define kt(sp)   ((sp)->kt)
+#define deg(sp)  ((sp)->deg)
+#define deg0(sp) ((sp)->deg0)
+#define npar(sp) ((sp)->p)
+#define acri(sp) ((sp)->acri)
+#define ubas(sp) ((sp)->ubas)
+#define fam(sp)  ((sp)->fam)
+#define fami(sp)  (&(sp)->fami)
+#define link(sp) ((sp)->lin)
+
+typedef struct {
+  int deriv[MXDEG+2];
+  int nd;
+} deriv;
+
+typedef struct {
+  int ev;
+  double *sv;
+  double cut;
+  double fl[2*MXDIM];
+  Sint *iwk, *ce, *s, *lo, *hi;
+  int liw, nce, ncm, maxk;
+  int mg[MXDIM];
+  void (*espec)();
+} evstruc;
+#define ev(evs)   ((evs)->ev)
+#define cut(evs)  ((evs)->cut)
+#define mk(evs)   ((evs)->maxk)
+#define mg(evs)   ((evs)->mg)
+
+typedef struct {
+  double *xev, *coef, *nlx, *t0, *lik, *h, *deg, *kap;
+  int lev, lwk;
+  int d, dcor, geth, hasd;
+  int nv, nvm;
+} fitpt;
+#define evp(fp)     ((fp)->xev)
+#define evpt(fp,i)  (&(fp)->xev[(i)*(fp)->d])
+#define evptx(fp,i,k) ((fp)->xev[(i)*(fp)->d+(k)])
+#define llk(fp) ((fp)->kap[0])
+#define df0(fp) ((fp)->kap[1])
+#define df1(fp) ((fp)->kap[2])
+#define rv(fp)  ((fp)->kap[3])
+#define rsc(fp) ((fp)->kap[5])
+#define dc(fp)  ((fp)->dcor)
+#define geth(fp) ((fp)->geth)
+
+typedef struct {
+  int (*procv)(), keepv, keepc, nopc, isset;
+  void (*alloc)(), (*pp)();
+} module;
+
+typedef struct {
+  int       lf_init_id;
+  lfdata    lfd;
+  smpar     sp;
+  evstruc   evs;
+  fitpt     fp;
+  deriv     dv;
+  paramcomp pc;
+  module    mdl;
+  } lfit;
+#define LF_INIT_ID 34897239