class_docstr: SDE abstract class. Functions are designed for a mini-batch of inputs.
docstr: Discretize the SDE in the form: x_{i+1} = x_i + f_i(x_i) + G_i z_i.
  
  Useful for reverse diffusion sampling and probabiliy flow sampling.
  Defaults to Euler-Maruyama discretization.
  
  Args:
      x: a torch tensor
      t: a torch float representing the time step (from 0 to `self.T`)
  
  Returns:
      f, G
code: def discretize(self, x, t, *args):
      """Discretize the SDE in the form: x_{i+1} = x_i + f_i(x_i) + G_i z_i.
  
      Useful for reverse diffusion sampling and probabiliy flow sampling.
      Defaults to Euler-Maruyama discretization.
  
      Args:
          x: a torch tensor
          t: a torch float representing the time step (from 0 to `self.T`)
  
      Returns:
          f, G
      """
      dt = 1 / self.N
      drift, diffusion = self.sde(x, t, *args)
      f = drift * dt
      G = diffusion * torch.sqrt(torch.tensor(dt, device=t.device))
      return f, G
  
imports: import abc
  import warnings
  import numpy
  import torch
label_desc: Use image node_id 7 for calling the SDE obj's underlying member method code with example usage: obj.discretize(x, t) and returns: f,  G