code: def test_batch_quadratic_form_3d(self) -> None:
      x = torch.tensor(
          [[[1.0, 4.3], [3.2, 9.8]], [[1.2, 4.1], [3.0, 7.8]]]
      )
      A = torch.tensor([[2.0, 1.0], [2.4, 0.5]])
      batch_result = batch_quadratic_form(x, A)
      loop_result = torch.zeros(2, 2)
      for i in range(2):
          for j in range(2):
              loop_result[i][j] = x[i, j].t() @ A @ x[i, j]
      npt.assert_allclose(batch_result.numpy(), loop_result.numpy())
  
file_path: ReAgent/reagent/test/models/test_linear_regression_ucb.py
imports: import unittest
  import numpy
  import numpy.testing
  import torch
  from reagent.gym.policies.policy import Policy
  from reagent.gym.policies.samplers.discrete_sampler import GreedyActionSampler
  from reagent.models.linear_regression import batch_quadratic_form, LinearRegressionUCB
  from reagent.training.cb.linucb_trainer import LinUCBTrainer
label_desc: Use image node_id 2 for calling the TestLinearRegressionUCBUtils obj's underlying member method code with example usage: obj.test_batch_quadratic_form_3d() without return types