def trans_F_3x3_4x4(Fw, F, minimal=False, trans=False):
    if minimal:

        T0 = np.empty((6,4))
        T1 = np.empty((6,6))

        for O, I in ((T0, F), (T1, T0.T)):

            t0 =  I[0,:] + I[2,:]
            t1 =  I[0,:] + I[2,:]*4.0
            t2 =  I[1,:] + I[3,:]
            t3 =  I[1,:] + I[3,:]*4.0

            O[0,:] = I[0,:]
            O[1,:] = t0 + t2
            O[2,:] = t0 - t2
            O[3,:] = t1 + t3*2.0
            O[4,:] = t1 - t3*2.0
            O[5,:] = I[3,:]

            # t0 = (I[0,:] + I[2,:])*-rcp6
            # t1 = (I[0,:]*rcp4 + I[2,:])*rcp6
            # t2 = (I[1,:] + I[3,:])*rcp6
            # t3 = (I[1,:]*rcp4 + I[3,:])*rcp3

            # O[0,:] = I[0,:]*rcp4
            # O[1,:] = t0 - t2
            # O[2,:] = t0 + t2
            # O[3,:] = t1 + t3
            # O[4,:] = t1 - t3
            # O[5,:] = I[3,:]

        Fw[:] = T1.T

    else:
        Fw[:] = np.dot( np.dot(O_4x4_3x3[trans[0]].T, F), O_4x4_3x3[trans[1]] )
dataset/ETHPy150Open NervanaSystems/neon/neon/backends/winograd4.py/trans_F_3x3_4x4/original