code: def test_expand(
      extra_shape,
      log_normalizer_shape,
      info_vec_shape,
      precision_shape,
      dim,
  ):
      rank = dim + dim
      log_normalizer = torch.randn(log_normalizer_shape)
      info_vec = torch.randn(info_vec_shape + (dim,))
      precision = torch.randn(precision_shape + (dim, rank))
      precision = precision.matmul(precision.transpose(-1, -2))
      gaussian = Gaussian(log_normalizer, info_vec, precision)
  
      expected_shape = extra_shape + broadcast_shape(
          log_normalizer_shape, info_vec_shape, precision_shape
      )
      actual = gaussian.expand(expected_shape)
      assert actual.batch_shape == expected_shape
  
imports: import math
  from collections import OrderedDict
  import pytest
  import torch
  from torch.distributions import constraints, transform_to
  from torch.nn.functional import pad
  import pyro.distributions
  from pyro.distributions.util import broadcast_shape
  from pyro.ops.gaussian import AffineNormal, Gaussian, gaussian_tensordot, matrix_and_gaussian_to_gaussian, matrix_and_mvn_to_gaussian, mvn_to_gaussian, sequential_gaussian_filter_sample, sequential_gaussian_tensordot
  from tests.common import assert_close
  from tests.ops.gaussian import assert_close_gaussian, random_gaussian, random_mvn
label_desc: Use image node_id 1 for calling a global function with example usage: test_expand(extra_shape, log_normalizer_shape, info_vec_shape, precision_shape, dim) without return types