code: def test_taper_matrix_ops(operation, op_wires, op_gen):
      """Test that taper_operation can be used with gate operation built using matrices"""
  
      symbols, geometry, charge = (
          ["He", "H"],
          np.array([[0.0, 0.0, 0.0], [0.0, 0.0, 1.4588684632]]),
          1,
      )
      mol = qml.qchem.Molecule(symbols, geometry, charge)
      hamiltonian = qml.qchem.diff_hamiltonian(mol)(geometry)
  
      generators = qml.symmetry_generators(hamiltonian)
      paulixops = qml.paulix_ops(generators, len(hamiltonian.wires))
      paulix_sector = optimal_sector(
          hamiltonian, generators, mol.n_electrons
      )
      wire_order = hamiltonian.wires
  
      taper_op1 = taper_operation(
          qml.IsingXX,
          generators,
          paulixops,
          paulix_sector,
          wire_order,
          op_wires=op_wires,
      )
      assert callable(taper_op1)
  
      for params in [0.0, 1.3, np.pi / 2, 2.37, np.pi]:
          taper_op2 = taper_operation(
              operation(params, wires=op_wires),
              generators,
              paulixops,
              paulix_sector,
              wire_order,
              op_wires=op_wires,
              op_gen=functools.partial(op_gen, phi=params),
          )
          assert np.all(
              [
                  qml.equal(op1.base, op2.base)
                  for op1, op2 in zip(taper_op1(params), taper_op2)
              ]
          )
  
imports: import functools
  import pytest
  import scipy
  import pennylane
  from pennylane import numpy
  from pennylane.pauli import pauli_sentence
  from pennylane.qchem.tapering import _kernel, _reduced_row_echelon, clifford, optimal_sector, taper_hf, taper_operation, _split_pauli_sentence, _taper_pauli_sentence
  from pennylane.operation import enable_new_opmath, disable_new_opmath
label_desc: Use image node_id 16 for calling a global function with example usage: test_taper_matrix_ops(operation, op_wires, op_gen) without return types