code: def _pinv_jvp(rcond, hermitian, primals, tangents):
      # The Differentiation of Pseudo-Inverses and Nonlinear Least Squares Problems
      # Whose Variables Separate. Author(s): G. H. Golub and V. Pereyra. SIAM
      # Journal on Numerical Analysis, Vol. 10, No. 2 (Apr., 1973), pp. 413-432.
      # (via https://en.wikipedia.org/wiki/Moore%E2%80%93Penrose_inverse#Derivative)
      (a,) = primals  # m x n
      (a_dot,) = tangents
      p = pinv(a, rcond=rcond, hermitian=hermitian)  # n x m
      if hermitian:
          # svd(..., hermitian=True) symmetrizes its input, and the JVP must match.
          a = _symmetrize(a)
          a_dot = _symmetrize(a_dot)
  
      # TODO(phawkins): this could be simplified in the Hermitian case if we
      # supported triangular matrix multiplication.
      m, n = a.shape[-2:]
      if m >= n:
          s = (p @ _H(p)) @ _H(a_dot)  # nxm
          t = (_H(a_dot) @ _H(p)) @ p  # nxm
          p_dot = -(p @ a_dot) @ p + s - (s @ a) @ p + t - (p @ a) @ t
      else:  # m < n
          s = p @ (_H(p) @ _H(a_dot))
          t = _H(a_dot) @ (_H(p) @ p)
          p_dot = -p @ (a_dot @ p) + s - s @ (a @ p) + t - p @ (a @ t)
      return p, p_dot
  
imports: from __future__ import annotations
  from collections.abc import Sequence
  from functools import partial
  import numpy
  import textwrap
  import operator
  from typing import Literal, cast, overload
  import jax
  from jax import jit, custom_jvp
  from jax import lax
  from jax._src.lax import lax
  from jax._src.lax import linalg
  from jax._src.numpy import lax_numpy
  from jax._src.numpy import reductions, ufuncs
  from jax._src.numpy.util import _wraps, promote_dtypes_inexact, check_arraylike
  from jax._src.util import canonicalize_axis
  from jax._src.typing import ArrayLike, Array
label_desc: Use image node_id 26 for calling a global function with example usage: _pinv_jvp(rcond, hermitian, primals, tangents) and returns: p,  p_dot