10 {
11 SEXP z, mm,
tau, pivot, retval, retvalnames;
12 int n, nx, np, df, dim[2];
13
14 np = *(INTEGER(AS_INTEGER(order)));
15 df = *(INTEGER(AS_INTEGER(diff)));
16 n = LENGTH(ref);
17 nx = n - df;
18 dim[0] = nx; dim[1] = np;
19
20 if (nx < 1)
err(
"must have diff < number of observations");
21
22 PROTECT(z = duplicate(AS_NUMERIC(ref)));
24 PROTECT(
tau = NEW_NUMERIC(np));
25 PROTECT(pivot = NEW_INTEGER(np));
26
27 PROTECT(retval = NEW_LIST(3));
28 PROTECT(retvalnames = NEW_CHARACTER(3));
29 SET_STRING_ELT(retvalnames,0,mkChar("mm"));
30 SET_STRING_ELT(retvalnames,1,mkChar("tau"));
31 SET_STRING_ELT(retvalnames,2,mkChar("pivot"));
32 SET_ELEMENT(retval,0,mm);
33 SET_ELEMENT(retval,1,
tau);
34 SET_ELEMENT(retval,2,pivot);
35 SET_NAMES(retval,retvalnames);
36
38
39 UNPROTECT(6);
40 return(retval);
41}
static R_INLINE SEXP makearray(int rank, const int *dim)
static void order_reg_model_matrix(double *z, double *X, double *tau, int *pivot, int n, int np, int diff)