public static uint hash(fix64p2x4 v)
 {
     return(csum(fold_to_uint(v.c0) * uint2(0x77E35E77u, 0x863E3729u) +
                 fold_to_uint(v.c1) * uint2(0xE191B035u, 0x68586FAFu) +
                 fold_to_uint(v.c2) * uint2(0xD4DFF6D3u, 0xCB634F4Du) +
                 fold_to_uint(v.c3) * uint2(0x9B13B92Du, 0x4ABF0813u)) + 0x86068063u);
 }
 public static uint2 hashwide(fix64p2x4 v)
 {
     return((fold_to_uint(v.c0) * uint2(0xD75513F9u, 0x5AB3E8CDu) +
             fold_to_uint(v.c1) * uint2(0x676E8407u, 0xB36DE767u) +
             fold_to_uint(v.c2) * uint2(0x6FCA387Du, 0xAF0F3103u) +
             fold_to_uint(v.c3) * uint2(0xE4A056C7u, 0x841D8225u)) + 0xC9393C7Du);
 }
 public static fix64p4x2 transpose(fix64p2x4 v)
 {
     return(fix64p4x2(
                v.c0.x, v.c0.y,
                v.c1.x, v.c1.y,
                v.c2.x, v.c2.y,
                v.c3.x, v.c3.y));
 }