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

 dtpMatrix-class R Documentation

## Packed Triangular Dense Matrices - "dtpMatrix"

### 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

```showClass("dtrMatrix")

example("dtrMatrix-class", echo=FALSE)
(p1 <- pack(T2))
str(p1)
(pp <- pack(T))
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)))
```

Matrix documentation built on Sept. 13, 2022, 9:05 a.m.