Skip to content

cagpjax.linalg

Linear algebra functions.

Eigh

Bases: Algorithm

Eigh algorithm for eigenvalue decomposition.

Source code in src/cagpjax/linalg/eigh.py
class Eigh(cola.linalg.Algorithm):
    """
    Eigh algorithm for eigenvalue decomposition.
    """

Lanczos

Bases: Algorithm

Lanczos algorithm for approximate partial eigenvalue decomposition.

Parameters:

Name Type Description Default
max_iters int | None

Maximum number of iterations (number of eigenvalues/vectors to compute). If None, all eigenvalues/eigenvectors are computed.

None
v0 Float[Array, N] | None

Initial vector. If None, a random vector is generated using key.

None
key PRNGKeyArray | None

Random key for generating a random initial vector if v0 is not provided.

None
Source code in src/cagpjax/linalg/eigh.py
class Lanczos(cola.linalg.Algorithm):
    """Lanczos algorithm for approximate partial eigenvalue decomposition.

    Args:
        max_iters: Maximum number of iterations (number of eigenvalues/vectors to compute).
            If `None`, all eigenvalues/eigenvectors are computed.
        v0: Initial vector. If `None`, a random vector is generated using `key`.
        key: Random key for generating a random initial vector if `v0` is
            not provided.
    """

    max_iters: int | None
    v0: Float[Array, "N"] | None
    key: PRNGKeyArray | None

    def __init__(
        self,
        max_iters: int | None = None,
        /,
        *,
        v0: Float[Array, "N"] | None = None,
        key: PRNGKeyArray | None = None,
    ):
        self.max_iters = max_iters
        self.v0 = v0
        self.key = key

congruence_transform(A, B)

congruence_transform(A: Any, B: Any) -> Any
congruence_transform(A: Diagonal, B: Diagonal) -> Diagonal
congruence_transform(A: BlockDiagonalSparse, B: Diagonal | ScalarMul) -> Diagonal

Congruence transformation A.T @ B @ A.

Parameters:

Name Type Description Default
A Any

Linear operator or array to be applied.

required
B Any

Square linear operator or array to be transformed.

required
Source code in src/cagpjax/linalg/congruence.py
@cola.dispatch
def congruence_transform(A: Any, B: Any) -> Any:
    """Congruence transformation ``A.T @ B @ A``.

    Args:
        A: Linear operator or array to be applied.
        B: Square linear operator or array to be transformed.
    """
    pass