public static uint hash(fix64p4x4 v)
 {
     return(csum(fold_to_uint(v.c0) * uint4(0x48125549u, 0xEEE2123Bu, 0xE3AD9FE5u, 0xCE1CF8BFu) +
                 fold_to_uint(v.c1) * uint4(0x7BE39F3Bu, 0xFAB9913Fu, 0xB4501269u, 0xE04B89FDu) +
                 fold_to_uint(v.c2) * uint4(0xDB3DE101u, 0x7B6D1B4Bu, 0x58399E77u, 0x5EAC29C9u) +
                 fold_to_uint(v.c3) * uint4(0xFC6014F9u, 0x6BF6693Fu, 0x9D1B1D9Bu, 0xF842F5C1u)) + 0xA47EC335u);
 }
 public static uint4 hashwide(fix64p4x4 v)
 {
     return((fold_to_uint(v.c0) * uint4(0xA477DF57u, 0xC4B1493Fu, 0xBA0966D3u, 0xAFBEE253u) +
             fold_to_uint(v.c1) * uint4(0x5B419C01u, 0x515D90F5u, 0xEC9F68F3u, 0xF9EA92D5u) +
             fold_to_uint(v.c2) * uint4(0xC2FAFCB9u, 0x616E9CA1u, 0xC5C5394Bu, 0xCAE78587u) +
             fold_to_uint(v.c3) * uint4(0x7A1541C9u, 0xF83BD927u, 0x6A243BCBu, 0x509B84C9u)) + 0x91D13847u);
 }
 public static fix64p4x4 transpose(fix64p4x4 v)
 {
     return(fix64p4x4(
                v.c0.x, v.c0.y, v.c0.z, v.c0.w,
                v.c1.x, v.c1.y, v.c1.z, v.c1.w,
                v.c2.x, v.c2.y, v.c2.z, v.c2.w,
                v.c3.x, v.c3.y, v.c3.z, v.c3.w));
 }