public static F64Quat Normalize(F64Quat a)
        {
            long inv_norm = F64.Rcp(Length(a)).Raw;

            return(new F64Quat(
                       Fixed64.Mul(a.RawX, inv_norm),
                       Fixed64.Mul(a.RawY, inv_norm),
                       Fixed64.Mul(a.RawZ, inv_norm),
                       Fixed64.Mul(a.RawW, inv_norm)));
        }
        public static F64Quat Inverse(F64Quat a)
        {
            long inv_norm = F64.Rcp(LengthSqr(a)).Raw;

            return(new F64Quat(
                       -Fixed64.Mul(a.RawX, inv_norm),
                       -Fixed64.Mul(a.RawY, inv_norm),
                       -Fixed64.Mul(a.RawZ, inv_norm),
                       Fixed64.Mul(a.RawW, inv_norm)));
        }