% File src/library/base/man/kronecker.Rd
% Part of the R package, https://www.R-project.org
% Copyright 1995-2011 R Core Team
% Distributed under GPL 2 or later

\name{kronecker}

\alias{kronecker}
\alias{.kronecker} % an internal version.
\alias{\%x\%}

\title{Kronecker Products on Arrays}

\description{
  Computes the generalised kronecker product of two arrays,
  \code{X} and \code{Y}.
}


\usage{
kronecker(X, Y, FUN = "*", make.dimnames = FALSE, \dots)
X \%x\% Y
}

\arguments{
 \item{X}{A vector or array.}
 \item{Y}{A vector or array.}
 \item{FUN}{a function; it may be a quoted string.}
 \item{make.dimnames}{Provide dimnames that are the product of the
   dimnames of \code{X} and \code{Y}.}
 \item{\dots}{optional arguments to be passed to \code{FUN}.}
}

\details{
  If \code{X} and \code{Y} do not have the same number of
  dimensions, the smaller array is padded with dimensions of size
  one.  The returned array comprises submatrices constructed by
  taking \code{X} one term at a time and expanding that term as
  \code{FUN(x, Y, ...)}.

  \code{\%x\%} is an alias for \code{kronecker} (where
  \code{FUN} is hardwired to \code{"*"}).
}

\value{
  An array \code{A} with dimensions \code{dim(X) * dim(Y)}.
}

\references{
  Shayle R. Searle (1982)
  \emph{Matrix Algebra Useful for Statistics.} John Wiley and Sons.
}

\author{Jonathan Rougier}

\seealso{
  \code{\link{outer}}, on which \code{kronecker} is built
  and \code{\link{\%*\%}} for usual matrix multiplication.
}

\examples{
# simple scalar multiplication
( M <- matrix(1:6, ncol = 2) )
kronecker(4, M)
# Block diagonal matrix:
kronecker(diag(1, 3), M)

# ask for dimnames

fred <- matrix(1:12, 3, 4, dimnames = list(LETTERS[1:3], LETTERS[4:7]))
bill <- c("happy" = 100, "sad" = 1000)
kronecker(fred, bill, make.dimnames = TRUE)

bill <- outer(bill, c("cat" = 3, "dog" = 4))
kronecker(fred, bill, make.dimnames = TRUE)
}

\keyword{array}
