code: def _slogdet_jvp(primals, tangents):
      (x,) = primals
      (g,) = tangents
      sign, ans = slogdet(x)
      ans_dot = jnp.trace(solve(x, g), axis1=-1, axis2=-2)
      if jnp.issubdtype(jnp._dtype(x), jnp.complexfloating):
          sign_dot = (
              ans_dot - ufuncs.real(ans_dot).astype(ans_dot.dtype)
          ) * sign
          ans_dot = ufuncs.real(ans_dot)
      else:
          sign_dot = jnp.zeros_like(sign)
      return (sign, ans), (sign_dot, ans_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 15 for calling a global function with example usage: _slogdet_jvp(primals, tangents) and returns: sign,  ans,  sign_dot,  ans_dot