public float Determinant() { //Current implementation of cross far from optimal without shuffles. This assumes it'll eventually be accelerated. Vector3 cross; Vector3x.Cross(ref Y, ref Z, out cross); return Vector3.Dot(X, cross); }