\section{CUMPROD Cumulative Product Function}

\subsection{Usage}

Computes the cumulative product of an n-dimensional array along a given
dimension.  The general syntax for its use is
\begin{verbatim}
  y = cumprod(x,d)
\end{verbatim}
where \verb|x| is a multidimensional array of numerical type, and \verb|d|
is the dimension along which to perform the cumulative product.  The
output \verb|y| is the same size of \verb|x|.  Integer types are promoted
to \verb|int32|. If the dimension \verb|d| is not specified, then the
cumulative sum is applied along the first non-singular dimension.
\subsection{Function Internals}

The output is computed via
\[
  y(m_1,\ldots,m_{d-1},j,m_{d+1},\ldots,m_{p}) = 
  \prod_{k=1}^{j} x(m_1,\ldots,m_{d-1},k,m_{d+1},\ldots,m_{p}).
\]
\subsection{Example}

The default action is to perform the cumulative product along the
first non-singular dimension.
\begin{verbatim}
--> A = [5,1,3;3,2,1;0,3,1]

A = 

 5 1 3 
 3 2 1 
 0 3 1 

--> cumprod(A)

ans = 

  5  1  3 
 15  2  3 
  0  6  3 


\end{verbatim}
To compute the cumulative product along the columns:
\begin{verbatim}
--> cumprod(A,2)

ans = 

  5  5 15 
  3  6  6 
  0  0  0 


\end{verbatim}
The cumulative product also works along arbitrary dimensions
\begin{verbatim}
--> B(:,:,1) = [5,2;8,9];
--> B(:,:,2) = [1,0;3,0]

B = 

(:,:,1) = 

 5 2 
 8 9 

(:,:,2) = 

 1 0 
 3 0 

--> cumprod(B,3)

ans = 

(:,:,1) = 

  5  2 
  8  9 

(:,:,2) = 

  5  0 
 24  0 


\end{verbatim}
