code: def trans_I_2x2_3x3(Iw, I, minimal=False):
      if minimal:
          T0 = np.empty((4, 4))
          T1 = np.empty((4, 4))
  
          for O, I in ((T0, I), (T1, T0.T)):
              O[0, :] = I[0, :] - I[2, :]
              O[1, :] = I[1, :] + I[2, :]
              O[2, :] = I[2, :] - I[1, :]
              O[3, :] = I[1, :] - I[3, :]
  
          Iw[:] = T1.T
  
          # TI00 = I[0,0] - I[2,0]
          # TI01 = I[0,1] - I[2,1]
          # TI02 = I[0,2] - I[2,2]
          # TI03 = I[0,3] - I[2,3]
          # TI30 = I[1,0] - I[3,0]
          # TI31 = I[1,1] - I[3,1]
          # TI32 = I[1,2] - I[3,2]
          # TI33 = I[1,3] - I[3,3]
          # TI10 = I[1,0] + I[2,0]
          # TI11 = I[1,1] + I[2,1]
          # TI12 = I[1,2] + I[2,2]
          # TI13 = I[1,3] + I[2,3]
          # TI20 = I[2,0] - I[1,0]
          # TI21 = I[2,1] - I[1,1]
          # TI22 = I[2,2] - I[1,2]
          # TI23 = I[2,3] - I[1,3]
  
          # Iw[0,0] = TI00 - TI02
          # Iw[0,3] = TI01 - TI03
          # Iw[3,0] = TI30 - TI32
          # Iw[3,3] = TI31 - TI33
          # Iw[1,0] = TI10 - TI12
          # Iw[2,0] = TI20 - TI22
          # Iw[1,3] = TI11 - TI13
          # Iw[2,3] = TI21 - TI23
          # Iw[2,1] = TI21 + TI22
          # Iw[2,2] = TI22 - TI21
          # Iw[0,1] = TI01 + TI02
          # Iw[0,2] = TI02 - TI01
          # Iw[1,1] = TI11 + TI12
          # Iw[1,2] = TI12 - TI11
          # Iw[3,1] = TI31 + TI32
          # Iw[3,2] = TI32 - TI31
  
      else:
          Iw[:] = np.dot(np.dot(I_2x2_3x3, I), I_2x2_3x3.T)
  
imports: from __future__ import division
  import numpy
  from struct import pack, unpack
  from neon import logger
label_desc: Use image node_id 9 for calling a global function with example usage: trans_I_2x2_3x3(Iw, I, minimal) without return types