Nothing
## METHODS FOR GENERIC: BunchKaufman
## ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
setMethod("BunchKaufman", signature(x = "dsyMatrix"),
function(x, warnSing = TRUE, ...)
.Call(dsyMatrix_trf, x, as.logical(warnSing)))
setMethod("BunchKaufman", signature(x = "dspMatrix"),
function(x, warnSing = TRUE, ...)
.Call(dspMatrix_trf, x, as.logical(warnSing)))
setMethod("BunchKaufman", signature(x = "matrix"),
function(x, uplo = "U", ...)
BunchKaufman(.m2dense(x, ",sy", uplo), ...))
## METHODS FOR CLASS: p?BunchKaufman
## ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
setAs("BunchKaufman", "dtrMatrix",
function(from) {
to <- new("dtrMatrix")
to@Dim <- from@Dim
to@uplo <- from@uplo
to@x <- from@x
to
})
setAs("pBunchKaufman", "dtpMatrix",
function(from) {
to <- new("dtpMatrix")
to@Dim <- from@Dim
to@uplo <- from@uplo
to@x <- from@x
to
})
.def.unpacked <- .def.packed <- function(x, which, ...) {
r <- .Call(BunchKaufman_expand, x, .PACKED)
b <- length(r) - 1L
switch(which,
"DU" =, "DL" = {
if(!endsWith(which, x@uplo))
stop(gettextf("%s=\"%s\" invalid for %s@uplo=\"%s\"",
"which", which, "x", x@uplo),
domain = NA)
r[[b + 1L]]
},
"U" =, "U." =, "L" =, "L." = {
if(!startsWith(which, x@uplo))
stop(gettextf("%s=\"%s\" invalid for %s@uplo=\"%s\"",
"which", which, "x", x@uplo),
domain = NA)
if(b > 0L) {
m <- r[[b]]
if(b > 1L)
for(i in (b - 1L):1L)
m <- r[[i]] %*% m
if(endsWith(which, ".")) t(m) else m
} else {
m <- new("ddiMatrix")
m@Dim <- x@Dim
m@diag <- "U"
m
}
},
stop(gettextf("'%s' is not \"%1$s\", \"D%1$s\", or \"%1$s.\"",
"which", x@uplo),
domain = NA))
}
body(.def.unpacked) <-
do.call(substitute, list(body(.def.unpacked), list(.PACKED = FALSE)))
body(.def.packed) <-
do.call(substitute, list(body(.def.packed ), list(.PACKED = TRUE)))
setMethod("expand1", signature(x = "BunchKaufman"), .def.unpacked)
setMethod("expand1", signature(x = "pBunchKaufman"), .def.packed)
rm(.def.unpacked, .def.packed)
.def.unpacked <- .def.packed <- function(x, complete = FALSE, ...) {
r <- .Call(BunchKaufman_expand, x, .PACKED)
b <- length(r) - 1L
if(complete) {
if(b > 0L)
r <- c(r, lapply(r[b:1L], t))
} else {
if(b > 0L) {
m <- r[[b]]
if(b > 1L)
for(i in (b - 1L):1L)
m <- r[[i]] %*% m
r <- list(m, r[[b + 1L]], t(m))
} else {
m <- new("ddiMatrix")
m@Dim <- x@Dim
m@diag <- "U"
r <- list(m, r[[1L]], m)
}
names(r) <- if(x@uplo == "U") c("U", "DU", "U.") else c("L", "DL", "L.")
}
dn <- x@Dimnames
if(length(r) == 1L)
r[[1L]]@Dimnames <- dn
else {
r[[1L]]@Dimnames <- c(dn[1L], list(NULL))
r[[length(r)]]@Dimnames <- c(list(NULL), dn[2L])
}
r
}
body(.def.unpacked) <-
do.call(substitute, list(body(.def.unpacked), list(.PACKED = FALSE)))
body(.def.packed) <-
do.call(substitute, list(body(.def.packed ), list(.PACKED = TRUE)))
## returning
## list(U, DU, U') where A = U DU U' and U = P[b] U[b] ... P[1] U[1]
## OR
## list(L, DL, L') where A = L DL L' and L = P[1] L[1] ... P[b] L[b]
setMethod("expand2", signature(x = "BunchKaufman"), .def.unpacked)
setMethod("expand2", signature(x = "pBunchKaufman"), .def.packed)
rm(.def.unpacked, .def.packed)
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.