code: def trans_O_2x2_5x5(Mw, minimal=False, trans=False):
      if minimal:
          T0 = np.empty((6, 6))
          T1 = np.empty((6, 6))
  
          for O, I in ((T0, Mw), (T1, T0.T)):
              # 16*6 + 16*6 = 192
  
              t0 = I[1, :] + I[2, :]
              t1 = I[3, :] + I[4, :]
              t2 = I[1, :] - I[2, :]
              t3 = I[3, :] - I[4, :]
  
              O[0, :] = I[0, :] * 1.265625
              O[4, :] = I[0, :] + t0 + t1
              O[2, :] = t0 * -2.25 + t1 * -0.5625 + I[0, :] * -2.8125
              O[1, :] = (
                  t2 * -1.6875 + t3 * -0.84375 + I[5, :] * 1.265625
              )
              O[3, :] = t2 * 0.75 + t3 * 1.5 + I[5, :] * -2.8125
              O[5, :] = I[5, :]
  
          return T1.T
  
      else:
          return np.dot(
              np.dot(O_2x2_5x5[trans[0]], Mw), O_2x2_5x5[trans[1]].T
          )
  
file_path: neon/neon/backends/winograd5.py
imports: from __future__ import division
  import numpy
  from struct import pack, unpack
  from neon import logger
label_desc: Use image node_id 12 for calling a global function with example usage: trans_O_2x2_5x5(Mw, minimal, trans) and returns: T1, np