\HeaderA{ltrMatrix-class}{Triangular Dense Logical Matrices}{ltrMatrix.Rdash.class}
\aliasA{"!,ltpMatrix-method}{ltrMatrix-class}{"!,ltpMatrix.Rdash.method}
\aliasA{"!,ltrMatrix-method}{ltrMatrix-class}{"!,ltrMatrix.Rdash.method}
\aliasA{coerce,ltpMatrix,dtpMatrix-method}{ltrMatrix-class}{coerce,ltpMatrix,dtpMatrix.Rdash.method}
\aliasA{coerce,ltpMatrix,lgeMatrix-method}{ltrMatrix-class}{coerce,ltpMatrix,lgeMatrix.Rdash.method}
\aliasA{coerce,ltpMatrix,ltrMatrix-method}{ltrMatrix-class}{coerce,ltpMatrix,ltrMatrix.Rdash.method}
\aliasA{coerce,ltrMatrix,dtrMatrix-method}{ltrMatrix-class}{coerce,ltrMatrix,dtrMatrix.Rdash.method}
\aliasA{coerce,ltrMatrix,lgeMatrix-method}{ltrMatrix-class}{coerce,ltrMatrix,lgeMatrix.Rdash.method}
\aliasA{coerce,ltrMatrix,ltpMatrix-method}{ltrMatrix-class}{coerce,ltrMatrix,ltpMatrix.Rdash.method}
\aliasA{coerce,matrix,ltpMatrix-method}{ltrMatrix-class}{coerce,matrix,ltpMatrix.Rdash.method}
\aliasA{coerce,matrix,ltrMatrix-method}{ltrMatrix-class}{coerce,matrix,ltrMatrix.Rdash.method}
\aliasA{diag,ltpMatrix-method}{ltrMatrix-class}{diag,ltpMatrix.Rdash.method}
\aliasA{diag,ltrMatrix-method}{ltrMatrix-class}{diag,ltrMatrix.Rdash.method}
\aliasA{ltpMatrix-class}{ltrMatrix-class}{ltpMatrix.Rdash.class}
\aliasA{t,ltpMatrix-method}{ltrMatrix-class}{t,ltpMatrix.Rdash.method}
\aliasA{t,ltrMatrix-method}{ltrMatrix-class}{t,ltrMatrix.Rdash.method}
\keyword{classes}{ltrMatrix-class}
\begin{Description}\relax
The \code{"ltrMatrix"} class is the class of triangular, dense,
logical matrices in nonpacked storage.  The \code{"ltpMatrix"} class
is the same except in packed storage.
\end{Description}
\begin{Section}{Slots}
\describe{
\item[\code{x}:] Object of class \code{"logical"}. The logical
values that constitute the matrix, stored in column-major order.
\item[\code{uplo}:] Object of class \code{"character"}. Must be
either "U", for upper triangular, and "L", for lower triangular.
\item[\code{diag}:] Object of class \code{"character"}. Must be
either \code{"U"}, for unit triangular (diagonal is all ones), or
\code{"N"}; see \code{\LinkA{triangularMatrix}{triangularMatrix.Rdash.class}}.
\item[\code{Dim},\code{Dimnames}:] The dimension (a length-2
\code{"integer"}) and corresponding names (or \code{NULL}), see the
\code{\LinkA{Matrix}{Matrix.Rdash.class}} class.
\item[\code{factors}:] Object of class \code{"list"}.  A named
list of factorizations that have been computed for the matrix.
}
\end{Section}
\begin{Section}{Extends}
\code{"ltrMatrix"} extends class \code{"lgeMatrix"}, directly, whereas\\
\code{"ltpMatrix"} extends class \code{"ldenseMatrix"}, directly.

Both extend Class \code{"triangularMatrix"}, directly,
and class \code{"denseMatrix"}, \code{"lMatrix"} and others,
\emph{in}directly, use \code{\LinkA{showClass}{showClass}("lsyMatrix")}, e.g., for
details.
\end{Section}
\begin{Section}{Methods}
Currently, mainly \code{\LinkA{t}{t}()} and coercion methods (for
\code{\LinkA{as}{as}(.)}; use, e.g.,
\code{\LinkA{showMethods}{showMethods}(class="lsyMatrix")} for details.
\end{Section}
\begin{SeeAlso}\relax
Classes \code{\LinkA{lgeMatrix}{lgeMatrix.Rdash.class}}, \code{\LinkA{Matrix}{Matrix.Rdash.class}};
function \code{\LinkA{t}{t}}
\end{SeeAlso}
\begin{Examples}
\begin{ExampleCode}
showClass("ltrMatrix")

str(new("ltpMatrix"))
(lutr <- as(upper.tri(matrix(,4,4)), "ltrMatrix"))
str(lutp <- as(lutr, "ltpMatrix"))# packed matrix: only 10 = (4+1)*4/2 entries
!lutp ## the logical negation (is *not* logical triangular !)
## but this one is:
stopifnot(all.equal(lutp, as(!!lutp, "ltpMatrix")))
\end{ExampleCode}
\end{Examples}

