# dtpMatrix-class: Packed Triangular Dense Matrices - "dtpMatrix" In Matrix: Sparse and Dense Matrix Classes and Methods

## Description

The `"dtpMatrix"` class is the class of triangular, dense, numeric matrices in packed storage. The `"dtrMatrix"` class is the same except in nonpacked storage.

## Objects from the Class

Objects can be created by calls of the form ```new("dtpMatrix", ...)``` or by coercion from other classes of matrices.

## Slots

`uplo`:

Object of class `"character"`. Must be either "U", for upper triangular, and "L", for lower triangular.

`diag`:

Object of class `"character"`. Must be either `"U"`, for unit triangular (diagonal is all ones), or `"N"`; see `triangularMatrix`.

`x`:

Object of class `"numeric"`. The numeric values that constitute the matrix, stored in column-major order. For a packed square matrix of dimension d * d, `length(x)` is of length d(d+1)/2 (also when `diag == "U"`!).

`Dim`,`Dimnames`:

The dimension (a length-2 `"integer"`) and corresponding names (or `NULL`), inherited from the `Matrix`, see there.

## Extends

Class `"ddenseMatrix"`, directly. Class `"triangularMatrix"`, directly. Class `"dMatrix"` and more by class `"ddenseMatrix"` etc, see the examples.

## Methods

%*%

`signature(x = "dtpMatrix", y = "dgeMatrix")`: Matrix multiplication; ditto for several other signature combinations, see `showMethods("%*%", class = "dtpMatrix")`.

coerce

`signature(from = "dtpMatrix", to = "dtrMatrix")`

coerce

`signature(from = "dtpMatrix", to = "matrix")`

determinant

`signature(x = "dtpMatrix", logarithm = "logical")`: the `determinant(x)` trivially is `prod(diag(x))`, but computed on log scale to prevent over- and underflow.

diag

`signature(x = "dtpMatrix")`: ...

norm

`signature(x = "dtpMatrix", type = "character")`: ...

rcond

`signature(x = "dtpMatrix", norm = "character")`: ...

solve

`signature(a = "dtpMatrix", b = "...")`: efficiently using internal backsolve or forwardsolve, see `solve-methods`.

t

`signature(x = "dtpMatrix")`: `t(x)` remains a `"dtpMatrix"`, lower triangular if `x` is upper triangular, and vice versa.

Class `dtrMatrix`

## Examples

 ``` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15``` ```showClass("dtrMatrix") example("dtrMatrix-class", echo=FALSE) (p1 <- as(T2, "dtpMatrix")) str(p1) (pp <- as(T, "dtpMatrix")) ip1 <- solve(p1) stopifnot(length(p1@x) == 3, length(pp@x) == 3, p1 @ uplo == T2 @ uplo, pp @ uplo == T @ uplo, identical(t(pp), p1), identical(t(p1), pp), all((l.d <- p1 - T2) == 0), is(l.d, "dtpMatrix"), all((u.d <- pp - T ) == 0), is(u.d, "dtpMatrix"), l.d@uplo == T2@uplo, u.d@uplo == T@uplo, identical(t(ip1), solve(pp)), is(ip1, "dtpMatrix"), all.equal(as(solve(p1,p1), "diagonalMatrix"), Diagonal(2))) ```

### Example output

```Class "dtrMatrix" [package "Matrix"]

Slots:

Name:          x       Dim  Dimnames      uplo      diag
Class:   numeric   integer      list character character

Extends:
Class "ddenseMatrix", directly
Class "triangularMatrix", directly
Class "dMatrix", by class "ddenseMatrix", distance 2
Class "denseMatrix", by class "ddenseMatrix", distance 2
Class "Matrix", by class "triangularMatrix", distance 2
Class "xMatrix", by class "dMatrix", distance 3
Class "mMatrix", by class "Matrix", distance 4
Class "Mnumeric", by class "Matrix", distance 4
Class "replValueSp", by class "Matrix", distance 4

Known Subclasses: "Cholesky", "BunchKaufman"
2 x 2 Matrix of class "dtpMatrix"
[,1] [,2]
[1,]    2    .
[2,]    3   -1
Formal class 'dtpMatrix' [package "Matrix"] with 5 slots
..@ x       : num [1:3] 2 3 -1
..@ Dim     : int [1:2] 2 2
..@ Dimnames:List of 2
.. ..\$ : NULL
.. ..\$ : NULL
..@ uplo    : chr "L"
..@ diag    : chr "N"
2 x 2 Matrix of class "dtpMatrix"
[,1] [,2]
[1,]    2    3
[2,]    .   -1
```

Matrix documentation built on June 11, 2021, 3 p.m.