#' Tensor Times Matrix (n-mode tensor matrix product) #' #' @param T array of order at least \code{mode} #' @param M matrix, the right hand side of the mode product such that #' \code{ncol(M)} equals \code{dim(T)[mode]} #' @param mode the mode of the product in the range \code{1:length(dim(T))} #' #' @returns multi-dimensional array of the same order as \code{T} with #' \code{mode} dimension equal to \code{nrow(M)} #' #' @export ttm <- function(T, M, mode = length(dim(T))) { storage.mode(T) <- storage.mode(M) <- "double" .Call("C_ttm", T, M, as.integer(mode)) } #' @rdname ttm #' @export `%x_1%` <- function(T, M) ttm(T, M, 1L) #' @rdname ttm #' @export `%x_2%` <- function(T, M) ttm(T, M, 2L) #' @rdname ttm #' @export `%x_3%` <- function(T, M) ttm(T, M, 3L) #' @rdname ttm #' @export `%x_4%` <- function(T, M) ttm(T, M, 4L)