public static uint4 hashwide(int4x4 v) { return((asuint(v.c0) * uint4(0x8196B06Fu, 0xD24EFA19u, 0x7D8048BBu, 0x713BD06Fu) + asuint(v.c1) * uint4(0x753AD6ADu, 0xD19764C7u, 0xB5D0BF63u, 0xF9102C5Fu) + asuint(v.c2) * uint4(0x9881FB9Fu, 0x56A1530Du, 0x804B722Du, 0x738E50E5u) + asuint(v.c3) * uint4(0x4FC93C25u, 0xCD0445A5u, 0xD2B90D9Bu, 0xD35C9B2Du)) + 0xA10D9E27u); }
public static uint hash(int4x4 v) { return(csum(asuint(v.c0) * uint4(0x5D1B165Bu, 0x87096CD7u, 0x4C7F6DD1u, 0x4822A3E9u) + asuint(v.c1) * uint4(0xAAC3C25Du, 0xD21D0945u, 0x88FCAB2Du, 0x614DA60Du) + asuint(v.c2) * uint4(0x5BA2C50Bu, 0x8C455ACBu, 0xCD266C89u, 0xF1852A33u) + asuint(v.c3) * uint4(0x77E35E77u, 0x863E3729u, 0xE191B035u, 0x68586FAFu)) + 0xD4DFF6D3u); }
public static uint hash(int4x4 v) { return(csum(asuint(v.c0) * uint4(0xAC60D0C3u, 0x9263662Fu, 0xE69626FFu, 0xBD010EEBu) + asuint(v.c1) * uint4(0x9CEDE1D1u, 0x43BE0B51u, 0xAF836EE1u, 0xB130C137u) + asuint(v.c2) * uint4(0x54834775u, 0x7C022221u, 0xA2D00EDFu, 0xA8977779u) + asuint(v.c3) * uint4(0x9F1C739Bu, 0x4B1BD187u, 0x9DF50593u, 0xF18EEB85u)) + 0x9E19BFC3u); }
public static uint hash(int4x4 v) { return(csum(asuint(v.c0) * uint4(0x9C9F0823u, 0x5A9CA13Bu, 0xAFCDD5EFu, 0xA88D187Du) + asuint(v.c1) * uint4(0xCF6EBA1Du, 0x9D88E5A1u, 0xEADF0775u, 0x747A9D7Bu) + asuint(v.c2) * uint4(0x4111F799u, 0xB5F05AF1u, 0xFD80290Bu, 0x8B65ADB7u) + asuint(v.c3) * uint4(0xDFF4F563u, 0x7069770Du, 0xD1224537u, 0xE99ED6F3u)) + 0x48125549u); }
public static uint hash(int4x4 v) { return(csum(asuint(v.c0) * uint4(0x6BF6693Fu, 0x9D1B1D9Bu, 0xF842F5C1u, 0xA47EC335u) + asuint(v.c1) * uint4(0xA477DF57u, 0xC4B1493Fu, 0xBA0966D3u, 0xAFBEE253u) + asuint(v.c2) * uint4(0x5B419C01u, 0x515D90F5u, 0xEC9F68F3u, 0xF9EA92D5u) + asuint(v.c3) * uint4(0xC2FAFCB9u, 0x616E9CA1u, 0xC5C5394Bu, 0xCAE78587u)) + 0x7A1541C9u); }
public static uint4 hashwide(int4x4 v) { return((asuint(v.c0) * uint4(0xCB634F4Du, 0x9B13B92Du, 0x4ABF0813u, 0x86068063u) + asuint(v.c1) * uint4(0xD75513F9u, 0x5AB3E8CDu, 0x676E8407u, 0xB36DE767u) + asuint(v.c2) * uint4(0x6FCA387Du, 0xAF0F3103u, 0xE4A056C7u, 0x841D8225u) + asuint(v.c3) * uint4(0xC9393C7Du, 0xD42EAFA3u, 0xD9AFD06Du, 0x97A65421u)) + 0x7809205Fu); }
public static uint hash(int4x4 v) { return(csum(asuint(v.c0) * uint4(0x685835CFu, 0xC3D32AE1u, 0xB966942Fu, 0xFE9856B3u) + asuint(v.c1) * uint4(0xFA3A3285u, 0xAD55999Du, 0xDCDD5341u, 0x94DDD769u) + asuint(v.c2) * uint4(0xA1E92D39u, 0x4583C801u, 0x9536A0F5u, 0xAF816615u) + asuint(v.c3) * uint4(0x9AF8D62Du, 0xE3600729u, 0x5F17300Du, 0x670D6809u)) + 0x7AF32C49u); }
public static uint4 hashwide(int4x4 v) { return((asuint(v.c0) * uint4(0xD75513F9u, 0x5AB3E8CDu, 0x676E8407u, 0xB36DE767u) + asuint(v.c1) * uint4(0x6FCA387Du, 0xAF0F3103u, 0xE4A056C7u, 0x841D8225u) + asuint(v.c2) * uint4(0xC9393C7Du, 0xD42EAFA3u, 0xD9AFD06Du, 0x97A65421u) + asuint(v.c3) * uint4(0x7809205Fu, 0x9C9F0823u, 0x5A9CA13Bu, 0xAFCDD5EFu)) + 0xA88D187Du); }
public static uint hash(int4x4 v) { return(csum(asuint(v.c0) * uint4(0xAAC3C25Du, 0xD21D0945u, 0x88FCAB2Du, 0x614DA60Du) + asuint(v.c1) * uint4(0x5BA2C50Bu, 0x8C455ACBu, 0xCD266C89u, 0xF1852A33u) + asuint(v.c2) * uint4(0x77E35E77u, 0x863E3729u, 0xE191B035u, 0x68586FAFu) + asuint(v.c3) * uint4(0xD4DFF6D3u, 0xCB634F4Du, 0x9B13B92Du, 0x4ABF0813u)) + 0x86068063u); }
public uint4x4(int4x4 v) { this.c0 = (uint4)v.c0; this.c1 = (uint4)v.c1; this.c2 = (uint4)v.c2; this.c3 = (uint4)v.c3; }
public double4x4(int4x4 v) { this.c0 = v.c0; this.c1 = v.c1; this.c2 = v.c2; this.c3 = v.c3; }
public float4x4(int4x4 v) { this.c0 = v.c0; this.c1 = v.c1; this.c2 = v.c2; this.c3 = v.c3; }
public fix64p4x4(int4x4 v) { this.c0 = (fix64p4)v.c0; this.c1 = (fix64p4)v.c1; this.c2 = (fix64p4)v.c2; this.c3 = (fix64p4)v.c3; }
public static int4x4 transpose(int4x4 v) { return(int4x4( 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)); }
/// <summary>Returns the determinant of a int4x4 matrix.</summary> public static int determinant(int4x4 m) { int4 c0 = m.c0; int4 c1 = m.c1; int4 c2 = m.c2; int4 c3 = m.c3; int m00 = c1.y * (c2.z * c3.w - c2.w * c3.z) - c2.y * (c1.z * c3.w - c1.w * c3.z) + c3.y * (c1.z * c2.w - c1.w * c2.z); int m01 = c0.y * (c2.z * c3.w - c2.w * c3.z) - c2.y * (c0.z * c3.w - c0.w * c3.z) + c3.y * (c0.z * c2.w - c0.w * c2.z); int m02 = c0.y * (c1.z * c3.w - c1.w * c3.z) - c1.y * (c0.z * c3.w - c0.w * c3.z) + c3.y * (c0.z * c1.w - c0.w * c1.z); int m03 = c0.y * (c1.z * c2.w - c1.w * c2.z) - c1.y * (c0.z * c2.w - c0.w * c2.z) + c2.y * (c0.z * c1.w - c0.w * c1.z); return(c0.x * m00 - c1.x * m01 + c2.x * m02 - c3.x * m03); }
public static double4x4 double4x4(int4x4 v) { return(new double4x4(v)); }
public static uint4x4 uint4x4(int4x4 v) { return(new uint4x4(v)); }
public static float4x4 float4x4(int4x4 v) { return(new float4x4(v)); }
public static fix64p4x4 fix64p4x4(int4x4 v) { return(new fix64p4x4(v)); }