예제 #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 fp3x4 transpose(fp4x3 v)
 {
     return(fp3x4(
                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));
 }
예제 #3
0
 public static fp4x3 mul(fp4x3 a, fp3x3 b)
 {
     return(fp4x3(
                a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z,
                a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z,
                a.c0 * b.c2.x + a.c1 * b.c2.y + a.c2 * b.c2.z));
 }
예제 #4
0
 public static fp3 mul(fp4 a, fp4x3 b)
 {
     return(fp3(
                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));
 }
예제 #5
0
 public static fp4x4 mul(fp4x3 a, fp3x4 b)
 {
     return(fp4x4(
                a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z,
                a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z,
                a.c0 * b.c2.x + a.c1 * b.c2.y + a.c2 * b.c2.z,
                a.c0 * b.c3.x + a.c1 * b.c3.y + a.c2 * b.c3.z));
 }
예제 #6
0
 public static uint4 hashwide(fp4x3 v)
 {
     return((fpmath.asuint(v.c0) * uint4(0x624256A3u, 0x5292ADE1u, 0xD2E590E5u, 0xF25BE857u) +
             fpmath.asuint(v.c1) * uint4(0x9BC17CE7u, 0xC8B86851u, 0x64095221u, 0xADF428FFu) +
             fpmath.asuint(v.c2) * uint4(0xA3977109u, 0x745ED837u, 0x9CDC88F5u, 0xFA62D721u)) + 0x7E4DB1CFu);
 }
예제 #7
0
 public static uint hash(fp4x3 v)
 {
     return(math.csum(fpmath.asuint(v.c0) * uint4(0x5C4D6CEDu, 0xF9137117u, 0xE857DCE1u, 0xF62213C5u) +
                      fpmath.asuint(v.c1) * uint4(0x9CDAA959u, 0xAA269ABFu, 0xD54BA36Fu, 0xFD0847B9u) +
                      fpmath.asuint(v.c2) * uint4(0x8189A683u, 0xB139D651u, 0xE7579997u, 0xEF7D56C7u)) + 0x66F38F0Bu);
 }
예제 #8
0
 public static fp4x2 mul(fp4x3 a, fp3x2 b)
 {
     return(fp4x2(
                a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z,
                a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z));
 }
예제 #9
0
 public static fp4 mul(fp4x3 a, fp3 b)
 {
     return(a.c0 * b.x + a.c1 * b.y + a.c2 * b.z);
 }