Rev 6098 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed
forwardsolve <- function(l, x, k=ncol(l), upper.tri = FALSE, transpose = FALSE)backsolve(l,x, k=k, upper.tri= upper.tri, transpose= transpose)backsolve <- function(r, x, k=ncol(r), upper.tri = TRUE, transpose = FALSE){r <- as.matrix(r)# nr x kstorage.mode(r) <- "double"x.mat <- is.matrix(x)if(!x.mat) x <- as.matrix(x)# k x nbstorage.mode(x) <- "double"k <- as.integer(k)if(k <= 0 || nrow(x) != k) stop("invalid parameters in backsolve")nb <- ncol(x)upper.tri <- as.logical(upper.tri)transpose <- as.logical(transpose)job <- as.integer((upper.tri) + 10*(transpose))z <- .C("bakslv",t = r, ldt= nrow(r), n = k,b = x, ldb= k, nb = nb,x = matrix(0, k, nb),job = job,info = integer(1),DUP = FALSE, PACKAGE = "base")[c("x","info")]if(z$info != 0)stop(paste("singular matrix in backsolve. First zero in diagonal [",z$info,"].",sep=""))if(x.mat) z$x else drop(z$x)}