using System; using System.Linq; using System.Numerics; using Skeleton.Algebra.Extensions; using Skeleton.Samples; using Skeleton.Utils; namespace Skeleton.Test; public static class CayleySU4Test { [DatapointSource] private static readonly LieSU4[] Data = 40.ScaleSamples(-1, 1).LieSU4LogSU4Samples().ToArray(); private static Action OnFail = x => Console.WriteLine(x.CSharpRepresentation); [Theory] public static void TestCayleyForLieSU4(LieSU4 data) { Action rawTest = x => { U4 cN = x.CayleyNegative(); Assert.IsTrue((cN * cN.Hermitian()).IsEqualApprox(C44.One)); }; rawTest.OnFail(OnFail)(data); } [Theory] public static void TestCayleyUnitary(LieSU4 data) { U4 cN = data.CayleyNegative(); U4 cP = data.CayleyPositive(); var udN = cN.EigenDecomposition(); var udP = cP.EigenDecomposition(); //Console.WriteLine((cN - cP.Conj()).PythonRepresentation); 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()}"); } }