code: def test_compose_decompose_matrix(rng):
      for translate in permutations(40 * rng.random(3), 3):
          for angles in permutations(np.deg2rad(90 * rng.random(3)), 3):
              for shears in permutations(3 * rng.random(3), 3):
                  for scale in permutations(3 * rng.random(3), 3):
                      mat = compose_matrix(
                          translate=translate,
                          angles=angles,
                          shear=shears,
                          scale=scale,
                      )
                      sc, sh, ang, trans, _ = decompose_matrix(mat)
  
                      assert_array_almost_equal(translate, trans)
                      assert_array_almost_equal(angles, ang)
  
                      assert_array_almost_equal(shears, sh)
                      assert_array_almost_equal(scale, sc)
  
imports: import numpy
  import random
  from dipy.core.geometry import sphere2cart, cart2sphere, nearest_pos_semi_def, sphere_distance, cart_distance, vector_cosine, lambert_equal_area_projection_polar, circumradius, vec2vec_rotmat, vector_norm, compose_transformations, compose_matrix, decompose_matrix, perpendicular_directions, dist_to_corner, is_hemispherical
  from numpy.testing import assert_array_equal, assert_array_almost_equal, assert_equal, assert_raises, assert_almost_equal
  from dipy.testing.spherepoints import sphere_points
  from dipy.testing.decorators import set_random_number_generator
  from dipy.core.sphere_stats import random_uniform_on_sphere
  from itertools import permutations
label_desc: Use image node_id 13 for calling a global function with example usage: test_compose_decompose_matrix(rng) without return types