The R Project SVN R-packages

Rev

Rev 2254 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 2254 Rev 4565
Line 54... Line 54...
54
    SET_SLOT(U, Matrix_DimSym, duplicate(dd));
54
    SET_SLOT(U, Matrix_DimSym, duplicate(dd));
55
    SET_SLOT(U, Matrix_uploSym, mkString("U"));
55
    SET_SLOT(U, Matrix_uploSym, mkString("U"));
56
    SET_SLOT(U, Matrix_diagSym, mkString("N"));
56
    SET_SLOT(U, Matrix_diagSym, mkString("N"));
57
    make_d_matrix_triangular(REAL(GET_SLOT(U, Matrix_xSym)), U);
57
    make_d_matrix_triangular(REAL(GET_SLOT(U, Matrix_xSym)), U);
58
    SET_SLOT(P, Matrix_DimSym, duplicate(dd));
58
    SET_SLOT(P, Matrix_DimSym, duplicate(dd));
59
    iperm = Calloc(n, int);
59
    iperm = Alloca(n, int);
-
 
60
    R_CheckStack();
60
    perm = INTEGER(ALLOC_SLOT(P, Matrix_permSym, INTSXP, n));
61
    perm = INTEGER(ALLOC_SLOT(P, Matrix_permSym, INTSXP, n));
61
 
62
 
62
    for (i = 0; i < n; i++) iperm[i] = i + 1; /* initialize permutation*/
63
    for (i = 0; i < n; i++) iperm[i] = i + 1; /* initialize permutation*/
63
    for (i = 0; i < n; i++) {	/* generate inverse permutation */
64
    for (i = 0; i < n; i++) {	/* generate inverse permutation */
64
	int newpos = pivot[i] - 1;
65
	int newpos = pivot[i] - 1;
Line 69... Line 70...
69
	    iperm[newpos] = tmp;
70
	    iperm[newpos] = tmp;
70
	}
71
	}
71
    }
72
    }
72
				/* invert the inverse */
73
				/* invert the inverse */
73
    for (i = 0; i < n; i++) perm[iperm[i] - 1] = i + 1;
74
    for (i = 0; i < n; i++) perm[iperm[i] - 1] = i + 1;
74
    Free(iperm);
-
 
75
    UNPROTECT(1);
75
    UNPROTECT(1);
76
    return val;
76
    return val;
77
}
77
}