jax_privacy.matrix_factorization.buffered_toeplitz.blt_pair_from_theta_pair

jax_privacy.matrix_factorization.buffered_toeplitz.blt_pair_from_theta_pair(theta, theta_hat)[source]

Computes BLTs (C, C_inv) from theta and theta_hat.

This implements Lemma 5.2 of https://arxiv.org/abs/2404.16706 (See also Algorithm 5 of https://arxiv.org/abs/2408.08868). The simplified computation used in the implementation here appears as Theorem 2 of https://arxiv.org/abs/2504.21413.

This function uses quantities like 1 /(1/theta[i] - 1/theta[j]), and so can be numerically unstable if abs(theta[i] - theta[j]) is too small; hence, by default the Parameterization based on blt.inverse() should be used instead.

Parameters:
  • theta (Array) – Array of thetas for the denominator q of r(x) = p(x; theta_hat) / q(x; theta).

  • theta_hat (Array) – Array of thetas for the numerator of r(x).

Return type:

tuple[BufferedToeplitz, BufferedToeplitz]

Returns:

A tuple of BLTs (C, C_inv) where C.buf_decay = theta and C_inv.buf_decay = theta_hat, with the output_scale (omega) parameters for each computed to make these inverses.