\name{crossn}
\alias{crossn}
\title{n-dimensional Vector Cross Product}
\description{
  Vector cross product of \code{n-1} vectors in n-dimensional space
}
\usage{
crossn(A)
}
\arguments{
  \item{A}{matrix of size \code{(n-1) x n} where \code{n >= 2}.}
}
\details{
  The rows of the matrix \code{A} are taken as\code{(n-1)} vectors in
  \code{n}-dimensional space. The cross product generates a vector in this
  space that is orthogonal to all these rows in \code{A} and its length is
  the volume of the geometric hypercube spanned by the vectors.
}
\value{
  a vector of length \code{n}
}
\note{
  The `scalar triple product' in \eqn{R^3} can be defined as

  \code{spatproduct <- function(a, b, c) dot(a, crossn(b, c))}

  It represents the volume of the parallelepiped spanned by the three vectors.
}
\seealso{
\code{\link{cross}}, \code{\link{dot}}
}
\examples{
A <- matrix(c(1,0,0, 0,1,0), nrow=2, ncol=3, byrow=TRUE)
crossn(A)  #=> 0 0 1

x <- c(1.0, 0.0, 0.0)
y <- c(1.0, 0.5, 0.0)
z <- c(0.0, 0.0, 1.0)
identical(dot(x, crossn(rbind(y, z))), det(rbind(x, y, z)))
}
\keyword{ array }
