class_docstr: Test utility functions found in 'sigm.py'.
code: def test_parse_mul_tree(self):
      x, y, z = tensor.vectors("x", "y", "z")
      assert parse_mul_tree(x * y) == [False, [[False, x], [False, y]]]
      assert parse_mul_tree(-(x * y)) == [
          True,
          [[False, x], [False, y]],
      ]
      assert parse_mul_tree(-x * y) == [False, [[True, x], [False, y]]]
      assert parse_mul_tree(-x) == [True, x]
      assert parse_mul_tree((x * y) * -z) == [
          False,
          [[False, [[False, x], [False, y]]], [True, z]],
      ]
  
imports: from __future__ import absolute_import, print_function, division
  import unittest
  import numpy
  from theano.compat import imap
  import theano.tensor.inplace
  from theano.tensor import basic
  from theano import tensor
  from theano import config
  from theano.gof.opt import check_stack_trace
  from theano.tests import unittest_tools
  from theano.tensor.nnet import sigmoid, sigmoid_inplace, softplus, ultra_fast_sigmoid, hard_sigmoid
  from theano.tensor.nnet.sigm import compute_mul, is_1pexp, parse_mul_tree, perform_sigm_times_exp, register_local_1msigmoid, simplify_mul
  from theano.tensor.tests.test_basic import makeBroadcastTester, copymod, check_floatX, upcast_int8_nfunc, _good_broadcast_unary_normal_no_complex
label_desc: Use image node_id 2 for calling the T_sigmoid_utils obj's underlying member method code with example usage: obj.test_parse_mul_tree() without return types