code: def test_binary_func():
      def check_binary_func(x, y):
          f_add = lambda x, y: x + y
          f_add_grad = lambda x, y: [nd.ones(x.shape), nd.ones(y.shape)]
          autograd_assert(x, y, func=f_add, grad_func=f_add_grad)
          f_mul = lambda x, y: x * y
          f_mul_grad = lambda x, y: [y, x]
          autograd_assert(x, y, func=f_mul, grad_func=f_mul_grad)
          f_compose = lambda x, y: x + x * y
          f_compose_grad = lambda x, y: [nd.ones(x.shape) + y, x]
          autograd_assert(
              x, y, func=f_compose, grad_func=f_compose_grad
          )
  
      uniform_x = nd.uniform(shape=(4, 5))
      uniform_y = nd.uniform(shape=(4, 5))
      stypes = ["default", "row_sparse", "csr"]
      with environment("MXNET_STORAGE_FALLBACK_LOG_VERBOSE", "0"):
          for stype_x in stypes:
              for stype_y in stypes:
                  x = uniform_x.tostype(stype_x)
                  y = uniform_y.tostype(stype_y)
                  check_binary_func(x, y)
  
imports: import functools
  import mxnet.ndarray
  from mxnet.ndarray import zeros_like
  from mxnet.autograd import *
  from mxnet.test_utils import *
  from common import xfail_when_nonstandard_decimal_separator
  from mxnet.test_utils import environment
  import pytest
label_desc: Use image node_id 5 for calling a global function with example usage: test_binary_func() without return types