code: def more_complex_test():
      notimpl = NotImplementedOp()
      ifelseifelseif = IfElseIfElseIf()
  
      x1 = T.scalar("x1")
      x2 = T.scalar("x2")
      c1 = T.scalar("c1")
      c2 = T.scalar("c2")
      t1 = ifelse(c1, x1, notimpl(x2))
      t1.name = "t1"
      t2 = t1 * 10
      t2.name = "t2"
      t3 = ifelse(c2, t2, x1 + t1)
      t3.name = "t3"
      t4 = ifelseifelseif(
          T.eq(x1, x2), x1, T.eq(x1, 5), x2, c2, t3, t3 + 0.5
      )
      t4.name = "t4"
  
      f = function(
          [c1, c2, x1, x2],
          t4,
          mode=Mode(linker="vm", optimizer="fast_run"),
      )
      if theano.config.vm.lazy is False:
          try:
              f(1, 0, np.array(10, dtype=x1.dtype), 0)
              assert False
          except NotImplementedOp.E:
              pass
      else:
          print(f(1, 0, np.array(10, dtype=x1.dtype), 0))
          assert f(1, 0, np.array(10, dtype=x1.dtype), 0) == 20.5
      print("... passed")
  
imports: from __future__ import absolute_import, print_function, division
  from copy import deepcopy
  import numpy
  import theano
  from theano.gof.op import PureOp
  from theano.gof import Apply, generic
  from theano import function, Mode
  from theano.ifelse import ifelse
  import theano.tensor
label_desc: Use image node_id 2 for calling a global function with example usage: more_complex_test() without return types