code: def slogdet(
      a: ArrayLike, *, method: str | None = None
  ) -> tuple[Array, Array]:
      check_arraylike("jnp.linalg.slogdet", a)
      (a,) = promote_dtypes_inexact(jnp.asarray(a))
      a_shape = jnp.shape(a)
      if len(a_shape) < 2 or a_shape[-1] != a_shape[-2]:
          msg = "Argument to slogdet() must have shape [..., n, n], got {}"
          raise ValueError(msg.format(a_shape))
  
      if method is None or method == "lu":
          return _slogdet_lu(a)
      elif method == "qr":
          return _slogdet_qr(a)
      else:
          raise ValueError(
              f"Unknown slogdet method '{method}'. Supported methods "
              "are 'lu' (`None`), and 'qr'."
          )
  
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 14 for calling a global function with example usage: slogdet(a) and returns: _slogdet_lu, _slogdet_qr