docstr: Leapfrog integrator step.
  
  Half a momentum update, full position update, half momentum update.
  
  Parameters
  ----------
  epsilon: float, > 0
      step scale
  state: State namedtuple,
      current position data
  out: (optional) State namedtuple,
      preallocated arrays to write to in place
  
  Returns
  -------
  None if `out` is provided, else a State namedtuple
docstr_tok: ["Leapfrog","integrator","step",".","Half","a","momentum","update",",","full","position","update",",","half","momentum","update",".","Parameters","--","--","--","--","--","epsilon",":","float",",",">","0","step","scale","state",":","State","namedtuple",",","current","position","data","out",":","(","optional",")","State","namedtuple",",","preallocated","arrays","to","write","to","in","place","Returns","--","--","--","-","None","if","`","out","`","is","provided",",","else","a","State","namedtuple"]
code: def step(self, epsilon, state):
      """Leapfrog integrator step.
  
      Half a momentum update, full position update, half momentum update.
  
      Parameters
      ----------
      epsilon: float, > 0
          step scale
      state: State namedtuple,
          current position data
      out: (optional) State namedtuple,
          preallocated arrays to write to in place
  
      Returns
      -------
      None if `out` is provided, else a State namedtuple
      """
      try:
          return self._step(epsilon, state)
      except linalg.LinAlgError as err:
          msg = "LinAlgError during leapfrog step."
          raise IntegrationError(msg) from err
      except ValueError as err:
          # Raised by many scipy.linalg functions
          scipy_msg = "array must not contain infs or nans"
          if len(err.args) > 0 and scipy_msg in err.args[0].lower():
              msg = "Infs or nans in scipy.linalg during leapfrog step."
              raise IntegrationError(msg)
          else:
              raise
  
file_path: pymc/pymc/step_methods/hmc/integration.py
imports: from typing import NamedTuple
  import numpy
  from scipy import linalg
  from pymc.blocking import RaveledVars
  from pymc.step_methods.hmc.quadpotential import QuadPotential
label_desc: Use image node_id 3 for calling the CpuLeapfrogIntegrator obj's underlying member method code with example usage: obj.step(epsilon, state) and returns: self