code: def test_complex_odeint(self):
      # https://github.com/google/jax/issues/3986
      # https://github.com/google/jax/issues/8757
  
      def dy_dt(y, t, alpha):
          return alpha * y * jnp.exp(-t).astype(y.dtype)
  
      def f(y0, ts, alpha):
          return odeint(dy_dt, y0, ts, alpha).real
  
      alpha = 3 + 4j
      y0 = 1 + 2j
      ts = jnp.linspace(0.0, 1.0, 11)
      tol = 1e-1 if jtu.num_float_bits(np.float64) == 32 else 1e-3
  
      # During the backward pass, this ravels all parameters into a single array
      # such that dtype promotion is unavoidable.
      with jax.numpy_dtype_promotion("standard"):
          jtu.check_grads(
              f,
              (y0, ts, alpha),
              modes=["rev"],
              order=2,
              atol=tol,
              rtol=tol,
          )
  
imports: from functools import partial
  from absl.testing import absltest
  import numpy
  import jax
  from jax._src import test_util
  import jax.numpy
  from jax.experimental.ode import odeint
  from jax.tree_util import tree_map
  import scipy.integrate
  from jax import config
label_desc: Use image node_id 14 for calling the ODETest obj's underlying member method code with example usage: obj.test_complex_odeint() and returns: unknown, odeint