using System; using System.Linq; using System.Numerics; using Skeleton.Algebra.Extensions; using Skeleton.Samples; using Skeleton.Utils; namespace Skeleton.Test; public class CayleySU3Test { [DatapointSource] private static readonly LieSU3[] Data = 40.ScaleSamples(-1, 1).LieSU3LogSU3Samples().ToArray(); private static Action OnFail = x => Console.WriteLine(x.CSharpRepresentation); [Theory] public static void TestCayleyForLieSU3(LieSU3 data) { Action rawTest = x => { U3 cN = x.CayleyNegative(); Assert.IsTrue((cN * cN.Hermitian()).IsEqualApprox(C33.One)); }; rawTest.OnFail(OnFail)(data); } [Theory] public static void TestCayleyUnitary(LieSU3 data) { U3 cN = data.CayleyNegative(); U3 cP = data.CayleyPositive(); var udN = cN.EigenDecomposition(); var udP = cP.EigenDecomposition(); Assert.IsTrue(cN.Det().IsEqualApprox(Complex.Conjugate(cP.Det()))); Console.WriteLine($"{cN.Det()} =x= {cP.Det()}"); Console.WriteLine($"{udN.J.Det()} =x= {udP.J.Det()}"); } }