code: def test_round_trip(self):
      for dtype, batch_shape in product(
          (torch.float, torch.double), ([], [2])
      ):
          with self.subTest(dtype=dtype, batch_shape=batch_shape):
              mu = 5 + torch.rand(
                  *batch_shape, 4, device=self.device, dtype=dtype
              )
              a = 0.2 * torch.randn(
                  *batch_shape, 4, 4, device=self.device, dtype=dtype
              )
              diag = 3.0 + 2 * torch.rand(
                  *batch_shape, 4, device=self.device, dtype=dtype
              )
              Cov = a @ a.transpose(-1, -2) + torch.diag_embed(diag)
              mu_n, Cov_n = lognorm_to_norm(mu, Cov)
              mu_rt, Cov_rt = norm_to_lognorm(mu_n, Cov_n)
              self.assertAllClose(mu_rt, mu, atol=1e-4)
              self.assertAllClose(Cov_rt, Cov, atol=1e-4)
  
file_path: botorch/test/models/transforms/test_utils.py
imports: import math
  from itertools import product
  import torch
  from botorch.models.transforms.utils import expand_and_copy_tensor, lognorm_to_norm, norm_to_lognorm, norm_to_lognorm_mean, norm_to_lognorm_variance
  from botorch.utils.testing import BotorchTestCase
label_desc: Use image node_id 3 for calling the TestTransformUtils obj's underlying member method code with example usage: obj.test_round_trip() without return types