#### Define those generics that we need, if they don't exist;
#### not all will be exported
setGeneric("expand", function(x, ...) standardGeneric("expand"))
setGeneric("isDiagonal", function(object) standardGeneric("isDiagonal"))
setGeneric("isTriangular", function(object, upper = NA, ...)
standardGeneric("isTriangular"))
## Boolean Arithmetic Matrix multiplication
setGeneric("%&%", function (x, y) standardGeneric("%&%"))
## isSymmetric is "S3 generic" in R's base/R/eigen.R
setGeneric("facmul",
function(x, factor, y, transpose, left, ...)
standardGeneric("facmul"))
setGeneric("BunchKaufman", function(x, ...) standardGeneric("BunchKaufman"))
setGeneric("lu", function(x, ...) standardGeneric("lu"))
##NB ## do not redefine the "base signature"
##NB setGeneric("chol", def = function(x, pivot= FALSE,...) standardGeneric("chol"),
##NB useAsDefault= function(x, pivot= FALSE,...) base::chol(x, pivot, ...))
##NB setGeneric("qr", def = function(x, tol=1e-7,...) standardGeneric("qr"),
##NB useAsDefault= function(x, tol=1e-7,...) base::qr(x, tol, ...))
if(is.na(match("...", names(formals(implicitGeneric("crossprod")))))) {
## base:crossprod() has no '...', but since 2015-03, there's an implicit generic
setGeneric("crossprod", function(x, y=NULL, ...) standardGeneric("crossprod"),
useAsDefault= function(x, y=NULL, ...) base::crossprod(x, y))
setGeneric("tcrossprod", function(x, y=NULL, ...) standardGeneric("tcrossprod"),
useAsDefault= function(x, y=NULL, ...) base::tcrossprod(x, y))
}
setGeneric("Schur", function(x, vectors, ...) standardGeneric("Schur"))
setGeneric("unpack", function(x, ...) standardGeneric("unpack"))
setGeneric("pack", function(x, ...) standardGeneric("pack"))
setGeneric("expm", function(x) standardGeneric("expm"))
setGeneric("writeMM", function(obj, file, ...)
standardGeneric("writeMM"))
setGeneric("tril", function(x, k = 0, ...)
standardGeneric("tril"))
setGeneric("triu", function(x, k = 0, ...)
standardGeneric("triu"))
setGeneric("band", function(x, k1, k2, ...)
standardGeneric("band"))
setGeneric("Cholesky",
function(A, perm = TRUE, LDL = !super, super = FALSE,
Imult = 0, ...)
standardGeneric("Cholesky"))
setGeneric("symmpart", function(x) standardGeneric("symmpart"))
setGeneric("skewpart", function(x) standardGeneric("skewpart"))
## A version of coercion to "symmetric" which does *NOT* check,
## but just takes the ## upper (or lower) values and
## ``declares'' the symmetric:
setGeneric("forceSymmetric",
function(x, uplo) standardGeneric("forceSymmetric"))
setGeneric("nnzero", function(x, na.counted = NA) standardGeneric("nnzero"),
signature = "x")
setGeneric("updown", function(update, C, L) standardGeneric("updown"))
if(FALSE)
## only "need this", as 'Dvec' should not get its default from base::qr.Q :
## unfortunately, this masks base::qr.Q with a warning
setGeneric("qr.Q", function(qr, complete = FALSE, Dvec)
standardGeneric("qr.Q"),
useAsDefault = function(qr, complete = FALSE, Dvec) {
if(missing(Dvec))
base::qr.Q(qr, complete=complete)
else base::qr.Q(qr, complete=complete, Dvec=Dvec)
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.