class tinygp.solvers.quasisep.core.StrictUpperTriQSM(p: tinygp.helpers.JAXArray, q: tinygp.helpers.JAXArray, a: tinygp.helpers.JAXArray)[source]#

Bases: QSM

A strictly upper triangular order m quasiseparable matrix

The notation here is somewhat different from that in Eidelman & Gohberg (1999), because we wanted to map StrictLowerTriQSM.transpose() -> StrictUpperTriQSM while retaining the same names for each component. Therefore, our p is their h, and our a is their b.T.

  • p (n, m) – The right quasiseparable elements.

  • q (n, m) – The left quasiseparable elements.

  • a (n, m, m) – The transition matrices.

scale(other: tinygp.helpers.JAXArray) StrictUpperTriQSM[source]#

The multiplication of this matrix times a scalar, as a QSM

self_add(other: StrictUpperTriQSM) StrictUpperTriQSM[source]#

The sum of two StrictUpperTriQSM matrices

self_mul(other: StrictUpperTriQSM) StrictUpperTriQSM[source]#

The elementwise product of two StrictUpperTriQSM matrices

property shape: tuple[int, int]#

The shape of the matrix

to_dense() tinygp.helpers.JAXArray#

Render this representation to a dense matrix

This implementation is not optimized and should really only ever be used for testing purposes.

transpose() StrictLowerTriQSM[source]#

The matrix transpose as a QSM