Functions for multiplying and solving with the \(P_r\) and \(P_l\) operators as well as the latent precision matrix \(Q = P_l C^{-1}P_l\) and covariance matrix \(\Sigma = P_r Q^{-1} P_r^T\). These operations are done without first assembling \(P_r\), \(P_l\) in order to avoid numerical problems caused by ill-conditioned matrices.

## Usage

```
Pr.mult(obj, v, transpose = FALSE)
Pr.solve(obj, v, transpose = FALSE)
Pl.mult(obj, v, transpose = FALSE)
Pl.solve(obj, v, transpose = FALSE)
Q.mult(obj, v)
Q.solve(obj, v)
Qsqrt.mult(obj, v, transpose = FALSE)
Qsqrt.solve(obj, v, transpose = FALSE)
Sigma.mult(obj, v)
Sigma.solve(obj, v)
```

## Arguments

- obj
rSPDE object

- v
vector to apply the operation to

- transpose
set to TRUE if the operation should be performed with the transposed object

## Details

`Pl.mult`

, `Pr.mult`

, and `Q.mult`

multiplies the vector with the respective object.
Changing `mult`

to `solve`

in the function names
multiplies the vector with the inverse of the object.
`Qsqrt.mult`

and `Qsqrt.solve`

performs the
operations with the square-root type object
\(Q_r = C^{-1/2}P_l\) defined so that \(Q = Q_r^T Q_r\).