Skip to main content

implicit_adjoint

Function implicit_adjoint 

Source
pub fn implicit_adjoint<F: Float>(
    tape: &mut BytecodeTape<F>,
    z_star: &[F],
    x: &[F],
    z_bar: &[F],
    num_states: usize,
) -> Option<Vec<F>>
Expand description

Compute the implicit adjoint (dz*/dx)^T · z_bar (n-vector).

Given a multi-output residual tape F: R^(m+n) → R^m with F(z*, x) = 0, computes x_bar = -F_x^T · (F_z^{-T} · z_bar).

This is the reverse-mode (adjoint) form, useful when n > m or when propagating gradients backward through an implicit layer.

Returns None if F_z is singular.