\HeaderA{dMatrix-class}{(Virtual) Class "dMatrix" of "double" Matrices}{dMatrix.Rdash.class}
\aliasA{Arith,dMatrix,dMatrix-method}{dMatrix-class}{Arith,dMatrix,dMatrix.Rdash.method}
\aliasA{Arith,lMatrix,numeric-method}{dMatrix-class}{Arith,lMatrix,numeric.Rdash.method}
\aliasA{Arith,numeric,lMatrix-method}{dMatrix-class}{Arith,numeric,lMatrix.Rdash.method}
\aliasA{coerce,dMatrix,lMatrix-method}{dMatrix-class}{coerce,dMatrix,lMatrix.Rdash.method}
\aliasA{coerce,lMatrix,dgCMatrix-method}{dMatrix-class}{coerce,lMatrix,dgCMatrix.Rdash.method}
\aliasA{coerce,lMatrix,dMatrix-method}{dMatrix-class}{coerce,lMatrix,dMatrix.Rdash.method}
\aliasA{coerce,matrix,lMatrix-method}{dMatrix-class}{coerce,matrix,lMatrix.Rdash.method}
\aliasA{Compare,dMatrix,numeric-method}{dMatrix-class}{Compare,dMatrix,numeric.Rdash.method}
\aliasA{Compare,numeric,dMatrix-method}{dMatrix-class}{Compare,numeric,dMatrix.Rdash.method}
\aliasA{crossprod,dMatrix,integer-method}{dMatrix-class}{crossprod,dMatrix,integer.Rdash.method}
\aliasA{crossprod,integer,dMatrix-method}{dMatrix-class}{crossprod,integer,dMatrix.Rdash.method}
\aliasA{gamma,dMatrix-method}{dMatrix-class}{gamma,dMatrix.Rdash.method}
\aliasA{lgamma,dMatrix-method}{dMatrix-class}{lgamma,dMatrix.Rdash.method}
\aliasA{lMatrix-class}{dMatrix-class}{lMatrix.Rdash.class}
\aliasA{log,dMatrix-method}{dMatrix-class}{log,dMatrix.Rdash.method}
\aliasA{Logic,lMatrix,logical-method}{dMatrix-class}{Logic,lMatrix,logical.Rdash.method}
\aliasA{Logic,logical,lMatrix-method}{dMatrix-class}{Logic,logical,lMatrix.Rdash.method}
\aliasA{Math2,dMatrix-method}{dMatrix-class}{Math2,dMatrix.Rdash.method}
\aliasA{Ops,dMatrix,dMatrix-method}{dMatrix-class}{Ops,dMatrix,dMatrix.Rdash.method}
\aliasA{Ops,dMatrix,lMatrix-method}{dMatrix-class}{Ops,dMatrix,lMatrix.Rdash.method}
\aliasA{Ops,dMatrix,nMatrix-method}{dMatrix-class}{Ops,dMatrix,nMatrix.Rdash.method}
\aliasA{Ops,lMatrix,dMatrix-method}{dMatrix-class}{Ops,lMatrix,dMatrix.Rdash.method}
\aliasA{Ops,lMatrix,lMatrix-method}{dMatrix-class}{Ops,lMatrix,lMatrix.Rdash.method}
\aliasA{Ops,lMatrix,numeric-method}{dMatrix-class}{Ops,lMatrix,numeric.Rdash.method}
\aliasA{Ops,nMatrix,dMatrix-method}{dMatrix-class}{Ops,nMatrix,dMatrix.Rdash.method}
\aliasA{Ops,numeric,lMatrix-method}{dMatrix-class}{Ops,numeric,lMatrix.Rdash.method}
\aliasA{show,dMatrix-method}{dMatrix-class}{show,dMatrix.Rdash.method}
\aliasA{solve,dMatrix,integer-method}{dMatrix-class}{solve,dMatrix,integer.Rdash.method}
\aliasA{Summary,lMatrix-method}{dMatrix-class}{Summary,lMatrix.Rdash.method}
\aliasA{zapsmall,dMatrix-method}{dMatrix-class}{zapsmall,dMatrix.Rdash.method}
\aliasA{[,dMatrix,lMatrix,missing,ANY-method}{dMatrix-class}{[,dMatrix,lMatrix,missing,ANY.Rdash.method}
\aliasA{[,dMatrix,logical,missing,ANY-method}{dMatrix-class}{[,dMatrix,logical,missing,ANY.Rdash.method}
\aliasA{\%*\%,dMatrix,integer-method}{dMatrix-class}{.Rpcent.*.Rpcent.,dMatrix,integer.Rdash.method}
\aliasA{\%*\%,integer,dMatrix-method}{dMatrix-class}{.Rpcent.*.Rpcent.,integer,dMatrix.Rdash.method}
\keyword{classes}{dMatrix-class}
\keyword{algebra}{dMatrix-class}
\begin{Description}\relax
The \code{dMatrix} class is a virtual class contained by all actual
classes of numeric matrices in the \pkg{Matrix} package.  Similarly,
all the actual classes of logical matrices inherit from the
\code{lMatrix} class.
\end{Description}
\begin{Section}{Slots}
Common to \emph{all} matrix object in the package:
\describe{
\item[\code{Dim}:] Object of class \code{"integer"} - the dimensions
of the matrix - must be an integer vector with exactly two
non-negative values.
\item[\code{Dimnames}:] list of length two; each component
containing NULL or a \code{\LinkA{character}{character}} vector length
equal the corresponding \code{Dim} element.
}
\end{Section}
\begin{Section}{Methods}
There are (relatively simple) group methods (see, e.g., \code{\LinkA{Arith}{Arith}})
\describe{
\item[Arith] \code{signature(e1 = "dMatrix", e2 = "dMatrix")}: ... 
\item[Arith] \code{signature(e1 = "dMatrix", e2 = "numeric")}: ... 
\item[Arith] \code{signature(e1 = "numeric", e2 = "dMatrix")}: ... 
\item[Math] \code{signature(x = "dMatrix")}: ... 
\item[Math2] \code{signature(x = "dMatrix", digits = "numeric")}:
this group contains \code{\LinkA{round}{round}()} and \code{\LinkA{signif}{signif}()}.
\item[Compare] \code{signature(e1 = "numeric", e2 = "dMatrix")}: ... 
\item[Compare] \code{signature(e1 = "dMatrix", e2 = "numeric")}: ... 
\item[Compare] \code{signature(e1 = "dMatrix", e2 = "dMatrix")}: ... 
\item[Summary] \code{signature(x = "dMatrix")}: The \code{"Summary"}
group contains the seven functions
\code{\LinkA{max}{max}()}, \code{\LinkA{min}{min}()}, \code{\LinkA{range}{range}()},
\code{\LinkA{prod}{prod}()}, \code{\LinkA{sum}{sum}()},
\code{\LinkA{any}{any}()}, and \code{\LinkA{all}{all}()}.
}
The following methods are also defined for all double matrices:
\describe{
\item[coerce] \code{signature(from = "dMatrix", to = "matrix")}: ... 
\item[expm] \code{signature(x = "dMatrix")}: computes the
\emph{\dQuote{Matrix Exponential}}, see \code{\LinkA{expm}{expm}}.
\item[zapsmall] \code{signature(x = "dMatrix")}: ... 
}
\end{Section}
\begin{SeeAlso}\relax
The nonzero-pattern matrix class \code{\LinkA{nMatrix}{nMatrix.Rdash.class}},
and the numeric matrix classes \code{\LinkA{dgeMatrix}{dgeMatrix.Rdash.class}},
\code{\LinkA{dgCMatrix}{dgCMatrix.Rdash.class}}, and \code{\LinkA{Matrix}{Matrix.Rdash.class}}.
\end{SeeAlso}
\begin{Examples}
\begin{ExampleCode}
 showClass("dMatrix")

 set.seed(101)
 round(Matrix(rnorm(28), 4,7), 2)
 (M <- zapsmall(Matrix(rlnorm(56, sd=10), 4,14)))
 table(as.logical(M == 0))
\end{ExampleCode}
\end{Examples}

