code: def test_add(shape, dim):
      x = random_gamma_gaussian(shape, dim)
      y = random_gamma_gaussian(shape, dim)
      value = torch.randn(dim)
      s = torch.randn(()).exp()
      assert_close(
          (x + y).log_density(value, s),
          x.log_density(value, s) + y.log_density(value, s),
      )
  
imports: import math
  import pytest
  import torch
  from torch.nn.functional import pad
  import pyro.distributions
  from pyro.distributions.util import broadcast_shape
  from pyro.ops.gamma_gaussian import GammaGaussian, gamma_and_mvn_to_gamma_gaussian, gamma_gaussian_tensordot, matrix_and_mvn_to_gamma_gaussian
  from tests.common import assert_close
  from tests.ops.gamma_gaussian import assert_close_gamma_gaussian, random_gamma, random_gamma_gaussian
  from tests.ops.gaussian import random_mvn
label_desc: Use image node_id 5 for calling a global function with example usage: test_add(shape, dim) without return types