code: def test_elementwise(self):
      a = Tensor.rand(3, 2, 0)
      a_exp = a.exp()
      assert a_exp.shape == (3, 2, 0)
      np.testing.assert_equal(a_exp.numpy(), np.exp(a.numpy()))
  
      b = Tensor.rand(3, 2, 0)
      assert b.shape == (3, 2, 0)
      ab = a * b
      assert ab.shape == (3, 2, 0)
      np.testing.assert_equal(ab.numpy(), a.numpy() * b.numpy())
  
      mask = Tensor.rand(3, 2, 0) > 0.5
      assert mask.shape == (3, 2, 0)
      c = mask.where(a, b)
      assert c.shape == (3, 2, 0)
      np.testing.assert_equal(
          c.numpy(), np.where(mask.numpy(), a.numpy(), b.numpy())
      )
  
imports: import numpy
  import torch
  import unittest, copy
  import mmap
  from tinygrad import Tensor, Device, dtypes
  from tinygrad.helpers import temp
  from extra.gradcheck import numerical_jacobian, jacobian, gradcheck
label_desc: Use image node_id 9 for calling the TestZeroShapeTensor obj's underlying member method code with example usage: obj.test_elementwise() without return types