code: def setup(self):
      from math import sin
  
      self.f_python = lambda x: sin(x)
      self.f_cython = from_cython(_ccallback_c, "sine")
  
      try:
          from scipy.integrate.tests.test_quadpack import (
              get_clib_test_routine,
          )
  
          self.f_ctypes = get_clib_test_routine(
              "_multivariate_sin",
              ctypes.c_double,
              ctypes.c_int,
              ctypes.c_double,
          )
      except ImportError:
          lib = ctypes.CDLL(clib_test.__file__)
          self.f_ctypes = lib._multivariate_sin
          self.f_ctypes.restype = ctypes.c_double
          self.f_ctypes.argtypes = (ctypes.c_int, ctypes.c_double)
  
      if cffi is not None:
          voidp = ctypes.cast(self.f_ctypes, ctypes.c_void_p)
          address = voidp.value
          ffi = cffi.FFI()
          self.f_cffi = LowLevelCallable(
              ffi.cast("double (*)(int, double *)", address)
          )
  
imports: import numpy
  from .common import Benchmark, safe_import
  from scipy.integrate import quad, cumulative_simpson
label_desc: Use image node_id 1 for calling the Quad obj's underlying member method code with example usage: obj.setup() without return types