Sidereon.Covariance (Sidereon v0.9.0)

Copy Markdown View Source

Covariance matrix helpers for conjunction and orbit analysis.

Supports covariance extraction, frame transforms, and validation checks such as positive semidefiniteness.

The authoritative RTN->ECI frame transform and the symmetric positive-semidefinite validation live in the sidereon-core Rust core; this module marshals inputs, performs structural validation, and decodes results.

Summary

Functions

Extract a 3x3 position covariance matrix from a 6-element lower triangle (RTN). Expected order: CR_R (0,0), CT_R (1,0), CT_T (1,1), CN_R (2,0), CN_T (2,1), CN_N (2,2).

Check if a 3x3 matrix is symmetric and positive semidefinite (PSD).

Transform a 3x3 RTN covariance matrix to ECI.

Check if a matrix is symmetric.

Validate that the input is a 3x3 numeric matrix.

Types

mat3()

@type mat3() :: [[float()]]

vec3()

@type vec3() :: {float(), float(), float()}

Functions

extract_pos_cov(arg1)

@spec extract_pos_cov([float()]) :: {:ok, mat3()} | {:error, String.t()}

Extract a 3x3 position covariance matrix from a 6-element lower triangle (RTN). Expected order: CR_R (0,0), CT_R (1,0), CT_T (1,1), CN_R (2,0), CN_T (2,1), CN_N (2,2).

positive_semidefinite?(m)

@spec positive_semidefinite?(mat3()) :: boolean()

Check if a 3x3 matrix is symmetric and positive semidefinite (PSD).

A symmetric 3x3 matrix is PSD if all its principal minors are non-negative.

rtn_to_eci(cov_rtn, r, v)

@spec rtn_to_eci(mat3(), vec3(), vec3()) :: {:ok, mat3()} | {:error, String.t()}

Transform a 3x3 RTN covariance matrix to ECI.

symmetric?(m)

@spec symmetric?(any()) :: boolean()

Check if a matrix is symmetric.

valid_matrix?(m)

@spec valid_matrix?(any()) :: boolean()

Validate that the input is a 3x3 numeric matrix.