public static fp3 mul(fp2 a, fp2x3 b) { return(fp3( a.x * b.c0.x + a.y * b.c0.y, a.x * b.c1.x + a.y * b.c1.y, a.x * b.c2.x + a.y * b.c2.y)); }
public static fp3x2 transpose(fp2x3 v) { return(fp3x2( v.c0.x, v.c0.y, v.c1.x, v.c1.y, v.c2.x, v.c2.y)); }
public static fp4x3 mul(fp4x2 a, fp2x3 b) { return(fp4x3( a.c0 * b.c0.x + a.c1 * b.c0.y, a.c0 * b.c1.x + a.c1 * b.c1.y, a.c0 * b.c2.x + a.c1 * b.c2.y)); }
public static fp2x3 mul(fp2x3 a, fp3x3 b) { return(fp2x3( 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)); }
public static fp2x4 mul(fp2x3 a, fp3x4 b) { return(fp2x4( 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)); }
public static uint2 hashwide(fp2x3 v) { return((fpmath.asuint(v.c0) * uint2(0xC3D32AE1u, 0xB966942Fu) + fpmath.asuint(v.c1) * uint2(0xFE9856B3u, 0xFA3A3285u) + fpmath.asuint(v.c2) * uint2(0xAD55999Du, 0xDCDD5341u)) + 0x94DDD769u); }
public static uint hash(fp2x3 v) { return(math.csum(fpmath.asuint(v.c0) * uint2(0xA9D919BFu, 0xC3EC1D97u) + fpmath.asuint(v.c1) * uint2(0xB8B208C7u, 0x5D3ED947u) + fpmath.asuint(v.c2) * uint2(0x4473BBB1u, 0xCBA11D5Fu)) + 0x685835CFu); }
public static fp2x2 mul(fp2x3 a, fp3x2 b) { return(fp2x2( 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)); }
public static fp2 mul(fp2x3 a, fp3 b) { return(a.c0 * b.x + a.c1 * b.y + a.c2 * b.z); }