示例#1
0
 public static fp4x3 mul(fp4x4 a, fp4x3 b)
 {
     return(fp4x3(
                a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z + a.c3 * b.c0.w,
                a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z + a.c3 * b.c1.w,
                a.c0 * b.c2.x + a.c1 * b.c2.y + a.c2 * b.c2.z + a.c3 * b.c2.w));
 }
示例#2
0
 public static uint4 hashwide(fp4x4 v)
 {
     return((fpmath.asuint(v.c0) * uint4(0x4942CA39u, 0xB40EC62Du, 0x565ED63Fu, 0x93C30C2Bu) +
             fpmath.asuint(v.c1) * uint4(0xDCAF0351u, 0x6E050B01u, 0x750FDBF5u, 0x7F3DD499u) +
             fpmath.asuint(v.c2) * uint4(0x52EAAEBBu, 0x4599C793u, 0x83B5E729u, 0xC267163Fu) +
             fpmath.asuint(v.c3) * uint4(0x67BC9149u, 0xAD7C5EC1u, 0x822A7D6Du, 0xB492BF15u)) + 0xD37220E3u);
 }
示例#3
0
 public static uint hash(fp4x4 v)
 {
     return(math.csum(fpmath.asuint(v.c0) * uint4(0x68EEE0F5u, 0xBC3B0A59u, 0x816EFB5Du, 0xA24E82B7u) +
                      fpmath.asuint(v.c1) * uint4(0x45A22087u, 0xFC104C3Bu, 0x5FFF6B19u, 0x5E6CBF3Bu) +
                      fpmath.asuint(v.c2) * uint4(0xB546F2A5u, 0xBBCF63E7u, 0xC53F4755u, 0x6985C229u) +
                      fpmath.asuint(v.c3) * uint4(0xE133B0B3u, 0xC3E0A3B9u, 0xFE31134Fu, 0x712A34D7u)) + 0x9D77A59Bu);
 }
示例#4
0
 public static fp3x4 mul(fp3x4 a, fp4x4 b)
 {
     return(fp3x4(
                a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z + a.c3 * b.c0.w,
                a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z + a.c3 * b.c1.w,
                a.c0 * b.c2.x + a.c1 * b.c2.y + a.c2 * b.c2.z + a.c3 * b.c2.w,
                a.c0 * b.c3.x + a.c1 * b.c3.y + a.c2 * b.c3.z + a.c3 * b.c3.w));
 }
示例#5
0
 public static fp4 mul(fp4 a, fp4x4 b)
 {
     return(fp4(
                a.x * b.c0.x + a.y * b.c0.y + a.z * b.c0.z + a.w * b.c0.w,
                a.x * b.c1.x + a.y * b.c1.y + a.z * b.c1.z + a.w * b.c1.w,
                a.x * b.c2.x + a.y * b.c2.y + a.z * b.c2.z + a.w * b.c2.w,
                a.x * b.c3.x + a.y * b.c3.y + a.z * b.c3.z + a.w * b.c3.w));
 }
示例#6
0
 public static fp4x4 transpose(fp4x4 v)
 {
     return(fp4x4(
                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));
 }
示例#7
0
 public static fp4x2 mul(fp4x4 a, fp4x2 b)
 {
     return(fp4x2(
                a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z + a.c3 * b.c0.w,
                a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z + a.c3 * b.c1.w));
 }
示例#8
0
 public static fp4 mul(fp4x4 a, fp4 b)
 {
     return(a.c0 * b.x + a.c1 * b.y + a.c2 * b.z + a.c3 * b.w);
 }