code: def _pointwise_test(
      self,
      op,
      ref,
      inputs,
      is_fastpath,
      is_inplace,
      *,
      scalars=None,
      custom_values_err=None,
      **kwargs,
  ):
      ref_inputs = (
          [
              [t.clone().detach() for t in inputs[0]],
              inputs[1],
              inputs[2],
          ]
          if is_inplace
          else inputs
      )
      try:
          with (
              InplaceForeachVersionBumpCheck(self, inputs[0])
              if is_inplace
              else nullcontext()
          ):
              actual = op(inputs, self.is_cuda, is_fastpath, **kwargs)
      except RuntimeError as e:
          with self.assertRaisesRegex(type(e), re.escape(str(e))):
              ref(ref_inputs, **kwargs)
      else:
          expected = ref(ref_inputs, **kwargs)
          self.assertEqual(expected, actual)
      if scalars is not None:
          kwargs = kwargs.copy()
          kwargs["scalars"] = scalars
          try:
              actual = op(inputs, self.is_cuda, is_fastpath, **kwargs)
          except RuntimeError as e:
              # Match with error messages from regular non-foreach reference if no
              # custom error message was provided.
              if custom_values_err is None:
                  with self.assertRaisesRegex(
                      type(e), re.escape(str(e))
                  ):
                      ref(ref_inputs, **kwargs)
              else:
                  self.assertEqual(
                      re.escape(str(e)), re.escape(custom_values_err)
                  )
          else:
              expected = ref(ref_inputs, **kwargs)
              self.assertEqual(expected, actual)
  
imports: from contextlib import nullcontext
  from numbers import Number
  import random
  import re
  import torch
  import unittest
  import itertools
  import weakref
  from torch.testing import make_tensor
  from torch.testing._comparison import default_tolerances
  from torch.testing._internal.common_cuda import TEST_MULTIGPU
  from torch.testing._internal.common_utils import TestCase, run_tests, TEST_WITH_ROCM, skipIfTorchDynamo, parametrize, gradcheck
  from torch.testing._internal.common_device_type import instantiate_device_type_tests, dtypes, onlyCUDA, ops, OpDTypes
  from torch.testing._internal.common_methods_invocations import foreach_unary_op_db, foreach_binary_op_db, foreach_pointwise_op_db, foreach_reduce_op_db, foreach_other_op_db
  from torch.testing._internal.common_dtype import all_types_and_complex_and, floating_types_and, floating_types, integral_types_and
label_desc: Use image node_id 8 for calling the TestForeach obj's underlying member method code with example usage: obj._pointwise_test(op, ref, inputs, is_fastpath, is_inplace) without return types