\section{PROD Product Function}

\subsection{Usage}

Computes the product of an array along a given dimension.  The general
syntax for its use is
\begin{verbatim}
   y = prod(x,d)
\end{verbatim}
where \verb|x| is an \verb|n|-dimensions array of numerical type.
The output is of the same numerical type as the input, except 
for integer types, which are automatically promoted to \verb|int32|.
 The argument \verb|d| is optional, and denotes the dimension along 
which to take the product.  The output is computed via
\[
  y(m_1,\ldots,m_{d-1},1,m_{d+1},\ldots,m_{p}) = 
    \prod_{k} x(m_1,\ldots,m_{d-1},k,m_{d+1},\ldots,m_{p})
\]
If \verb|d| is omitted, then the product is taken along the 
first non-singleton dimension of \verb|x|. Note that by definition
(starting with FreeMat 2.1) \verb|prod([]) = 1|.
\subsection{Example}

The following piece of code demonstrates various uses of the product
function
\begin{verbatim}
--> A = [5,1,3;3,2,1;0,3,1]

A = 

 5 1 3 
 3 2 1 
 0 3 1 


\end{verbatim}
We start by calling \verb|prod| without a dimension argument, in which case it defaults to the first nonsingular dimension (in this case, along the columns or \verb|d = 1|).
\begin{verbatim}
--> prod(A)

ans = 

 0 6 3 


\end{verbatim}
Next, we take the product along the rows.
\begin{verbatim}
--> prod(A,2)

ans = 

 15 
  6 
  0 


\end{verbatim}
