def METHOD_NAME(
    self,
    model_output: torch.FloatTensor,
    timestep: int,
    x_alpha: torch.FloatTensor,
) -> torch.FloatTensor:
    """
    Predict the sample at the previous timestep by reversing the ODE. Core function to propagate the diffusion
    process from the learned model outputs (most often the predicted noise).
    Args:
        model_output (`torch.FloatTensor`): direct output from learned diffusion model. It is the direction from x0 to x1.
        timestep (`float`): current timestep in the diffusion chain.
        x_alpha (`torch.FloatTensor`): x_alpha sample for the current timestep
    Returns:
        `torch.FloatTensor`: the sample at the previous timestep
    """
    if self.num_inference_steps is None:
        raise ValueError(
            "Number of inference steps is 'None', you need to run 'set_timesteps' after creating the scheduler"
        )
    alpha = timestep / self.num_inference_steps
    alpha_next = (timestep + 1) / self.num_inference_steps
    d = model_output
    x_alpha = x_alpha + (alpha_next - alpha) * d
    return x_alpha