Nothing
# HEADER ####################################################
# This is file spam/tests/demo_timing.R. #
# It is part of the R package spam, #
# --> https://CRAN.R-project.org/package=spam #
# --> https://CRAN.R-project.org/package=spam64 #
# --> https://git.math.uzh.ch/reinhard.furrer/spam #
# by Reinhard Furrer [aut, cre], Florian Gerber [aut], #
# Roman Flury [aut], Daniel Gerber [ctb], #
# Kaspar Moesinger [ctb] #
# HEADER END ################################################
# We construct a few large matrices and we compare how much faster (slower)
# we are compared to the full matrix analysis.
# Since all the calculation are also done with full matrices, we do not
# exagerate with the sizes.
options( echo=FALSE)
library( spam, warn.conflict=FALSE)
set.seed(14)
# In the test function, we do not print out the actual times
# We would get too many differences pointed out!
compare <- function(expr1,expr2,tag=NULL)
{
if( !is.null(tag)) cat( "Comparing: ", tag, fill=TRUE)
invisible(data.frame(full=system.time( expr1, TRUE)[1:3],
sparse=system.time( expr2, TRUE)[1:3],
row.names=c("user","system","elapsed")))
}
xn <- 10
xm <- 12
# first start with a full matrix.
fmat1 <- matrix(rnorm(xn*xm),xn,xm)
smat1 <- as.spam(fmat1)
compare(fmat2 <- t(fmat1), smat2 <- t(smat1), "Transpose")
compare(ffmat <- fmat1 %*% fmat2,
ssmat <- smat1 %*% smat2, "multiplication")
compare( solve(ffmat), solve(ssmat), "solving")
compare(rbind(fmat1,fmat1),rbind(smat1,smat1))
compare(cbind(fmat1,fmat1),cbind(smat1,smat1))
# now create a sparse matrix.
fmat1[fmat1<3] <- 0
smat1 <- as.spam(fmat1)
compare(fmat2 <- t(fmat1), smat2 <- t(smat1), "Transpose")
compare(ffmat <- fmat1 %*% fmat2,
ssmat <- smat1 %*% smat2, "multiplication")
compare(ffmat <- ffmat + diag(xn),
ssmat <- ssmat + diag.spam(xn), "add identity")
compare(ffmat <- 1:xn %d+% ffmat,
ssmat <- 1:xn %d+% ssmat, "add identity quicker")
compare( solve(ffmat), solve(ssmat), "solving")
summary(ssmat)
# compare a few cbind/rbinds
compare(rbind(fmat1,fmat1),rbind(smat1,smat1))
compare(cbind(fmat1,fmat1),cbind(smat1,smat1))
options( echo=TRUE)
# illustrate the new spam x matrix multiply:
if (F){
n <- 1000
A <- spam(0,n,n)
A[cbind(1:(n-1),2:n)] <- -c(2,rep(4,n-3),2)
A[cbind(1:(n-2),3:n)] <- rep(1,n-2)
A <- A + t( A)
diag(A) <- c(1,5,rep(6,n-4),5,1)
B <- array(rnorm(n*n),c(n,n))
system.time(C1 <- .spam.matmul.mat(A,B))
system.time(C2 <- .spam.matmul(A,B))
norm(C1-C2)
}
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.