code: def test_form_preconditioner(self):
      code = """
  def vadd(x, y): return list(map(lambda a, b: a + b, x, y))
  def vmul(x, y): return list(map(lambda a, b: a * b, x, y))
  def form_preconditioner(a, b, c):
      def det_inverse(ai, bi, ci):
          return 1.0/(ai * ci - bi * bi)
      indets = list(map(det_inverse, a, b, c))
      p_a = vmul(indets, c)
      p_b = list(map(lambda a, b: -a * b, indets, b))
      p_c = vmul(indets, a)
      return p_a, p_b, p_c
  """
      self.run_test(
          code,
          [1, 2, 3],
          [0, 1, 2],
          [5.5, 6.6, 7.7],
          form_preconditioner=[List[int], List[int], List[float]],
      )
  
imports: from pythran.tests import TestEnv
  from pythran.typing import *
label_desc: Use image node_id 21 for calling the TestCopperhead obj's underlying member method code with example usage: obj.test_form_preconditioner() without return types