public static uint hash(fix64p3x4 v) { return(csum(fold_to_uint(v.c0) * uint3(0x6E624EB7u, 0x7383ED49u, 0xDD49C23Bu) + fold_to_uint(v.c1) * uint3(0xEBD0D005u, 0x91475DF7u, 0x55E84827u) + fold_to_uint(v.c2) * uint3(0x90A285BBu, 0x5D19E1D5u, 0xFAAF07DDu) + fold_to_uint(v.c3) * uint3(0x625C45BDu, 0xC9F27FCBu, 0x6D2523B1u)) + 0x6E2BF6A9u); }
public static uint3 hashwide(fix64p3x4 v) { return((fold_to_uint(v.c0) * uint3(0xCC74B3B7u, 0x83B58237u, 0x833E3E29u) + fold_to_uint(v.c1) * uint3(0xA9D919BFu, 0xC3EC1D97u, 0xB8B208C7u) + fold_to_uint(v.c2) * uint3(0x5D3ED947u, 0x4473BBB1u, 0xCBA11D5Fu) + fold_to_uint(v.c3) * uint3(0x685835CFu, 0xC3D32AE1u, 0xB966942Fu)) + 0xFE9856B3u); }
public static fix64p4x3 transpose(fix64p3x4 v) { return(fix64p4x3( v.c0.x, v.c0.y, v.c0.z, v.c1.x, v.c1.y, v.c1.z, v.c2.x, v.c2.y, v.c2.z, v.c3.x, v.c3.y, v.c3.z)); }