code: def test_dotvecmat_three_dimensional_vector_times_non_quadratic_matrix():
      A_numpy = np.array(
          [[1, 2, 3, 4, 5], [6, 7, 8, 9, 10], [11, 12, 13, 14, 15]]
      )
      A_river = {
          (0, 0): 1,
          (0, 1): 2,
          (0, 2): 3,
          (0, 3): 4,
          (0, 5): 5,
          (1, 0): 6,
          (1, 1): 7,
          (1, 2): 8,
          (1, 3): 9,
          (1, 5): 10,
          (2, 0): 11,
          (2, 1): 12,
          (2, 2): 13,
          (2, 3): 14,
          (2, 5): 15,
      }
      x_numpy = np.array([1, 2, 3])
      x_river = {0: 1, 1: 2, 2: 3}
  
      numpy_dotvecmat = x_numpy.dot(A_numpy)
      river_dotvecmat = utils.math.dotvecmat(x_river, A_river)
  
      assert numpy_dotvecmat[0] == river_dotvecmat[0]
      assert numpy_dotvecmat[1] == river_dotvecmat[1]
  
file_path: river/river/utils/test_math.py
imports: from __future__ import annotations
  import numpy
  from river import utils
label_desc: Use image node_id 7 for calling a global function with example usage: test_dotvecmat_three_dimensional_vector_times_non_quadratic_matrix() without return types