diff --git a/Skeleton.Test.sln.DotSettings.user b/Skeleton.Test.sln.DotSettings.user index fcd20b8..1b8c771 100644 --- a/Skeleton.Test.sln.DotSettings.user +++ b/Skeleton.Test.sln.DotSettings.user @@ -1,11 +1,16 @@  + ForceIncluded + ForceIncluded + ForceIncluded + ForceIncluded + ForceIncluded /usr/lib/dotnet/sdk/8.0.110/MSBuild.dll /usr/lib/dotnet/dotnet 4294967294 True - <SessionState ContinuousTestingMode="0" Name="All tests from Solution" xmlns="urn:schemas-jetbrains-com:jetbrains-ut-session"> + <SessionState ContinuousTestingMode="0" IsActive="True" Name="All tests from Solution" xmlns="urn:schemas-jetbrains-com:jetbrains-ut-session"> <Solution /> </SessionState> - <SessionState ContinuousTestingMode="0" IsActive="True" Name="All tests from &lt;Skeleton.Test&gt;" xmlns="urn:schemas-jetbrains-com:jetbrains-ut-session"> + <SessionState ContinuousTestingMode="0" Name="All tests from &lt;Skeleton.Test&gt;" xmlns="urn:schemas-jetbrains-com:jetbrains-ut-session"> <Project Location="/home/hzhang/RiderProjects/Marshmallow/Skeleton.Test" Presentation="&lt;Skeleton.Test&gt;" /> </SessionState> \ No newline at end of file diff --git a/tests/CayleySU3Test.cs b/tests/CayleySU3Test.cs index da932d6..60960d8 100644 --- a/tests/CayleySU3Test.cs +++ b/tests/CayleySU3Test.cs @@ -5,7 +5,6 @@ using Skeleton.Algebra.Extensions; using Skeleton.Samples; using Skeleton.Utils; using Skeleton.Utils.Helpers; -using Skeleton.Utils.RandomEngines; namespace Skeleton.Test; [TestFixture] @@ -23,8 +22,13 @@ public class CayleySU3Test : BaseTest { Action rawTest = x => { + Assert.IsTrue(x.Property.IsSkewHermitian); U3 cN = x.CayleyNegative(); - Assert.IsTrue((cN * cN.Hermitian()).IsEqualApprox(C33.One)); + Assert.IsTrue(cN.Property.IsUnitary); + Console.WriteLine(cN.Representation); + U3 h =cN.Hermitian(); + U3 xx = cN * cN.Hermitian(); + Assert.IsTrue((xx).IsEqualApprox(C33.One)); }; rawTest.OnFail(OnFail)(data); } diff --git a/tests/CayleySU4Test.cs b/tests/CayleySU4Test.cs index f45ec38..32a1b78 100644 --- a/tests/CayleySU4Test.cs +++ b/tests/CayleySU4Test.cs @@ -11,7 +11,7 @@ namespace Skeleton.Test; public class CayleySU4Test : BaseTest { [DatapointSource] - private static readonly LieSU4[] Data = 40 + private static readonly LieSU4[] Data = 80 .WithSeed(Seed) .ScaleSamples(-1, 1) .LieSU4LogSU4Samples() diff --git a/tests/EigenDecompositionTest.cs b/tests/EigenDecompositionTest.cs index 2802857..d080539 100644 --- a/tests/EigenDecompositionTest.cs +++ b/tests/EigenDecompositionTest.cs @@ -32,6 +32,9 @@ public class EigenDecompositionTest : BaseTest { U2 unitaryData = new U2(data); Console.WriteLine(data.Representation); + Console.WriteLine(unitaryData.Representation); + Console.WriteLine(unitaryData.Hermitian().Representation); + Console.WriteLine((unitaryData * unitaryData.Hermitian()).Representation); Assert.IsTrue((unitaryData * unitaryData.Hermitian()).IsEqualApprox(U2.One)); Assert.IsTrue(unitaryData.Det().Magnitude.IsEqualApprox(1)); JDPair decomp = unitaryData.EigenDecomposition(); @@ -86,6 +89,9 @@ public class EigenDecompositionTest : BaseTest 0.8666666666666667 - 0.8666666666666667 * I, -0.4 + 0.46666666666666656 * I, -0.8666666666666667 - 0.6 * I, 0.6666666666666667 ); + + Console.WriteLine(m.PythonRepresentation); + Assert.IsTrue((m * m.Hermitian()).IsEqualApprox(C22.One)); } } diff --git a/tests/RandomFixTest.cs b/tests/RandomFixTest.cs index cad019d..f6cb8dc 100644 --- a/tests/RandomFixTest.cs +++ b/tests/RandomFixTest.cs @@ -14,7 +14,9 @@ public class RandomFixTest : BaseTest [Test] public static void DatapointTest() { + /* Assert.AreEqual(x.Count(), 36); + */ } @@ -28,11 +30,11 @@ public class RandomFixTest : BaseTest [Test] public static void SampleTest() { - RandomSource.SetSeed(22222); + /*RandomSource.SetSeed(22222); LieSU3[] a = 40.ScaleSamples(-1, 1).LieSU3LogSU3Samples().ToArray(); RandomSource.SetSeed(22222); LieSU3[] b = 40.ScaleSamples(-1, 1).LieSU3LogSU3Samples().ToArray(); Assert.AreEqual(a.Length, b.Length); - Console.WriteLine(a.Length); + Console.WriteLine(a.Length);*/ } } \ No newline at end of file diff --git a/tests/SUTestFix.cs b/tests/SUTestFix.cs index a541824..afed49c 100644 --- a/tests/SUTestFix.cs +++ b/tests/SUTestFix.cs @@ -24,6 +24,7 @@ public class SUTestFix : BaseTest -0.5330307462242154 + 0.669854044098976 * AlgebraConstant.I ); Console.WriteLine(y.Det()); + Console.WriteLine((x.U * x.U.Hermitian()).Representation); Assert.IsTrue((x.U * x.U.Hermitian()).IsEqualApprox(C22.One)); Assert.IsTrue(x.D.Det().IsEqualApprox(1)); Console.WriteLine(x.D.PythonRepresentation); diff --git a/tests/UnitaryConjugateTest.cs b/tests/UnitaryConjugateTest.cs new file mode 100644 index 0000000..b9a4eae --- /dev/null +++ b/tests/UnitaryConjugateTest.cs @@ -0,0 +1,119 @@ +using System; +using System.Numerics; +using Skeleton.Algebra; +using Skeleton.Algebra.DimensionProviders; +using Skeleton.Constants; +using Skeleton.DataStructure.Packs.MatrixDecompositions; + +namespace Skeleton.Test; +[TestFixture] +public class UnitaryConjugateTest +{ + + [Test] + public void UnitaryDecompositionShouldMatchTest() + { + C33 x = new C33( + -0.29637473524541746 - 0.4164563198193952 * AlgebraConstant.I, + 0.47019945345152797 - 0.18885780773580182 * AlgebraConstant.I, + -0.5414450753609832 - 0.4345210959080704 * AlgebraConstant.I, + 0.05140609295069032 - 0.17133718304221346 * AlgebraConstant.I, + -0.46675346988465705 + 0.6421597806755671 * AlgebraConstant.I, + -0.5775735169777234 + 0.06466707225491593 * AlgebraConstant.I, + -0.7911152098361764 - 0.28436571184174053 * AlgebraConstant.I, + -0.300392405520825 + 0.15093581274788961 * AlgebraConstant.I, + 0.41395268302160826 - 0.09433358918942991 * AlgebraConstant.I + ); + + JDPair jdV1 = x.InternalUnitaryDecompositionV1(); + + Console.WriteLine($"j1 = {jdV1.J.PythonRepresentation}"); + Console.WriteLine($"d1 = {jdV1.D.PythonRepresentation}"); + + + + + + //x.TestInternalUnitaryDecomposition(); + /* + SU3 o = new SU3( + -0.29637473524541746 - 0.4164563198193952 * AlgebraConstant.I, + 0.47019945345152797 - 0.18885780773580182 * AlgebraConstant.I, + -0.5414450753609832 - 0.4345210959080704 * AlgebraConstant.I, + 0.05140609295069032 - 0.17133718304221346 * AlgebraConstant.I, + -0.46675346988465705 + 0.6421597806755671 * AlgebraConstant.I, + -0.5775735169777234 + 0.06466707225491593 * AlgebraConstant.I, + -0.7911152098361764 - 0.28436571184174053 * AlgebraConstant.I, + -0.300392405520825 + 0.15093581274788961 * AlgebraConstant.I, + 0.41395268302160826 - 0.09433358918942991 * AlgebraConstant.I + ); + + Assert.IsTrue(x.IsEqualApprox(o.U * o.D * o.U.Hermitian())); + */ + + /*Console.WriteLine(o.U.PythonRepresentation); + Console.WriteLine(o.D.PythonRepresentation); + + + Assert.IsTrue(x.TestEqual(o.U.Hermitian() * o.D * o.U)); + + SU3 ox = new SU3(x.Copy()); + Assert.IsTrue(x.TestEqual(ox)); + Assert.IsTrue(x.TestEqual(o)); + Assert.IsTrue(x.TestEqual(o.U * o.D * o.U.Hermitian())); + Assert.IsTrue(o.TestEqual(o.U * o.D * o.U.Hermitian())); + + Console.WriteLine(o.PythonRepresentation); + Console.WriteLine((x-o).PythonRepresentation);*/ + } + + [Test] + public void UnitaryConjugateShouldEqualTest() + { + + SU3 a = new SU3( + -0.46622721713303866 - 0.060475409668431644 * AlgebraConstant.I, + -0.1425326880495955 - 0.11337596851236675 * AlgebraConstant.I, + 0.5124598007869261 - 0.6951188258193564 * AlgebraConstant.I, + -0.07977662445969419 - 0.15645179782505836 * AlgebraConstant.I, + 0.13131935891627658 + 0.9689404759173665 * AlgebraConstant.I, + 0.10764157750707277 - 0.038488908035408866 * AlgebraConstant.I, + -0.7605308190317062 + 0.4119785252654601 * AlgebraConstant.I, + -0.09712183746948519 + 0.036155931610674256 * AlgebraConstant.I, + 0.003739510338355845 + 0.4910322610393366 * AlgebraConstant.I + ); + + SU3 b = new SU3( + 0.671500127639027 + 0.7392727634547986 * AlgebraConstant.I, + 0.018353719975610416 + 0.0009182549015047939 * AlgebraConstant.I, + -0.040341093124168115 - 0.024459226709268145 * AlgebraConstant.I, + -0.003595329870842521 + 0.011339024383085235 * AlgebraConstant.I, + 0.5491128634189678 + 0.6130727033953424 * AlgebraConstant.I, + 0.07005362848802227 + 0.563531643161386 * AlgebraConstant.I, + 0.007924807904311937 - 0.04857012809860661 * AlgebraConstant.I, + 0.3699849579680355 + 0.43056979948404905 * AlgebraConstant.I, + -0.08442219397132456 - 0.8174177707212459 * AlgebraConstant.I + ); + + //Assert.IsTrue(a.TestEqual(a.U * a.D * a.U.Hermitian())); + //Assert.IsTrue(b.TestEqual(b.U * b.D * b.U.Hermitian())); + SU3 ax = a.ConjugateOn(b); + SU3 bx = a * b * a.Hermitian(); + CategoryOf.OnField.FMatrix wx = a.AsMatrix * b.AsMatrix * a.AsMatrix.Hermitian(); + + + //Assert.IsTrue(wx.TestEqual(bx)); + + Console.WriteLine($"a = {a.PythonRepresentation}"); + Console.WriteLine($"b = {b.PythonRepresentation}"); + + Console.WriteLine($"ax = {ax.PythonRepresentation}"); + Console.WriteLine($"bx = {bx.PythonRepresentation}"); + Console.WriteLine($"wx = {wx.PythonRepresentation}"); + + Assert.IsTrue(a.AsMatrix.Hermitian().IsEqualApprox(a.Hermitian())); + Assert.IsTrue(bx.IsEqualApprox(ax)); + Assert.IsTrue(bx.IsEqualApprox(wx)); + Assert.IsTrue(ax.IsEqualApprox(wx)); + } +} \ No newline at end of file diff --git a/tests/UnitaryMatrixFixTest.cs b/tests/UnitaryMatrixFixTest.cs index 49451cd..707eed7 100644 --- a/tests/UnitaryMatrixFixTest.cs +++ b/tests/UnitaryMatrixFixTest.cs @@ -131,7 +131,7 @@ public class UnitaryMatrixFixTest : BaseTest Complex det = detTest.Det(); Console.WriteLine(det); - SU2 s = new SU2(detTest); + SU2 s = new SU2(detTest.Copy()); Assert.IsTrue(s.IsEqualApprox(detTest)); } @@ -151,7 +151,7 @@ public class UnitaryMatrixFixTest : BaseTest 0.3738133333164022 + 0.17859171769725135 * I ); Assert.IsTrue((a * a.Hermitian()).IsEqualApprox(C33.One)); - SU3 x = new SU3(a); + SU3 x = new SU3(a.Copy()); Assert.IsTrue(x.IsEqualApprox(a)); Assert.IsTrue(C33.One.IsEqualApprox(SU3.One)); } @@ -164,7 +164,7 @@ public class UnitaryMatrixFixTest : BaseTest 0.23603845886157196+ 0.2882268492733082*I, 0.2598386072534029+ -0.5491251329056467*I, 0.6806580836521512+ -0.16988581178893247*I ); Assert.IsTrue((a * a.Hermitian()).IsEqualApprox(C33.One)); - SU3 x = new (a); + SU3 x = new (a.Copy()); Assert.IsTrue(x.IsEqualApprox(a)); Assert.IsTrue(C33.One.IsEqualApprox(SU3.One)); SU3 w = x * x.Hermitian();