code: def trans_F_2x2_3x3(Fw, F, minimal=False):
      if minimal:
          T0 = np.empty((4, 3))
          T1 = np.empty((4, 4))
  
          for O, I in ((T0, F), (T1, T0.T)):
              t0 = (I[0, :] + I[2, :]) * 0.5
  
              O[0, :] = I[0, :]
              O[1, :] = t0 + I[1, :] * 0.5
              O[2, :] = t0 - I[1, :] * 0.5
              O[3, :] = I[2, :]
  
          Fw[:] = T1.T
  
          # TF00 = F[0,0]
          # TF01 = F[0,1]
          # TF02 = F[0,2]
          # TF30 = F[2,0]
          # TF31 = F[2,1]
          # TF32 = F[2,2]
          # Fw[0,0] = TF00
          # Fw[0,3] = TF02
          # Fw[3,0] = TF30
          # Fw[3,3] = TF32
          # tb0 = TF00 + TF02
          # tb3 = TF30 + TF32
          # ta0 = F[0,0] + F[2,0]
          # ta1 = F[0,1] + F[2,1]
          # ta2 = F[0,2] + F[2,2]
          # tb0 = tb0 * 0.5
          # tb3 = tb3 * 0.5
          # ta0 = ta0 * 0.5
          # ta1 = ta1 * 0.5
          # ta2 = ta2 * 0.5
          # Fw[0,1] = tb0 + TF01*0.5
          # Fw[0,2] = tb0 - TF01*0.5
          # Fw[3,1] = tb3 + TF31*0.5
          # Fw[3,2] = tb3 - TF31*0.5
          # TF10 = ta0 + F[1,0]*0.5
          # TF20 = ta0 - F[1,0]*0.5
          # TF11 = ta1 + F[1,1]*0.5
          # TF21 = ta1 - F[1,1]*0.5
          # TF12 = ta2 + F[1,2]*0.5
          # TF22 = ta2 - F[1,2]*0.5
          # Fw[1,0] = TF10
          # Fw[2,0] = TF20
          # Fw[1,3] = TF12
          # Fw[2,3] = TF22
          # tb1 = TF10 + TF12
          # tb2 = TF20 + TF22
          # tb1 = tb1 * 0.5
          # tb2 = tb2 * 0.5
          # Fw[1,1] = tb1 + TF11*0.5
          # Fw[1,2] = tb1 - TF11*0.5
          # Fw[2,1] = tb2 + TF21*0.5
          # Fw[2,2] = tb2 - TF21*0.5
  
      else:
          Fw[:] = np.dot(np.dot(F_2x2_3x3, F), F_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 10 for calling a global function with example usage: trans_F_2x2_3x3(Fw, F, minimal) without return types