code: def test_cumulative():
      x = np.random.default_rng(0).random((20, 24, 13))
      dx = da.from_array(x, chunks=(6, 5, 4))
      mx = np.ma.masked_greater(x, 0.4)
      dmx = da.ma.masked_greater(dx, 0.4)
  
      for axis in [0, 1, 2]:
          assert_eq_ma(dmx.cumsum(axis=axis), mx.cumsum(axis=axis))
          assert_eq_ma(dmx.cumprod(axis=axis), mx.cumprod(axis=axis))
  
imports: from __future__ import annotations
  import random
  import sys
  from copy import deepcopy
  from itertools import product
  import numpy
  import pytest
  import dask.array
  from dask.array.numpy_compat import ComplexWarning, _numpy_123
  from dask.array.utils import assert_eq
  from dask.base import tokenize
  from dask.utils import typename
label_desc: Use image node_id 15 for calling a global function with example usage: test_cumulative() without return types