using System; using System.Numerics; namespace SkeletonTest.tests; /// /// /// public static class REFFTest { private static readonly Complex ii = new Complex(0, 1); [Test] public static void M22RREFtest() { Assert.IsTrue(new R22(2, 3, 4, 5).RowReduce().ReducedForm.IsEqualApprox(R22.One)); Assert.IsTrue(new R22(4, 8, 1, 2).RowReduce().ReducedForm.IsEqualApprox(new R22(1, 2, 0, 0))); Assert.IsTrue(new C22(2, 3, 4, 3 + 3 * ii).RowReduce().ReducedForm.IsEqualApprox(C22.One)); Assert.IsTrue(new C22(1 + ii, 1, 2 + 2 * ii, 2).RowReduce().ReducedForm .IsEqualApprox(new C22(1, new Complex(0.5, -0.5), 0, 0))); } [Test] public static void M33RREFTest() { var s = new R33( 2, 3, 4, 0, 6, 7, 8, 9, 0 ).RowReduce().ReducedForm.Representation; Assert.IsTrue(new R33( 2, 3, 4, 0, 6, 7, 8, 9, 0 ).RowReduce().ReducedForm.IsEqualApprox(R33.One)); Assert.IsTrue(R33.Zero.RowReduce().ReducedForm.IsEqualApprox(R33.Zero)); Assert.IsTrue(new C33( 0, 2 + ii, 2 + 2 * ii, 3 + ii, 0, 3 + 3 * ii, 4 + 2 * ii, 2 + 6 * ii, 0 ).RowReduce().ReducedForm.IsEqualApprox(C33.One) ); Assert.IsTrue(new C33( 0, 0, 2 + 2 * ii, 3, 3 * ii, 1 + 2 * ii, 6 + ii, 0, 0 ).RowReduce().ReducedForm.IsEqualApprox(C33.One) ); Console.WriteLine( new C33( 0, 0, 2 + 2 * ii, 3, 3 * ii, 1 + 2 * ii, 0, 0, 0 ).RowReduce().ReducedForm.Representation); Console.WriteLine( new C33( 0, 0, 2 + 2 * ii, 3, 3 * ii, 1 + 2 * ii, 0, 0, 0 ).Representation ); Assert.IsTrue( new C33( 0, 0, 2 + 2 * ii, 3, 3 * ii, 1 + 2 * ii, 0, 0, 0 ).RowReduce().ReducedForm.IsEqualApprox( new C33( 1, ii, 0, 0, 0, 1, 0, 0, 0 ) ) ); } [Test] public static void M44RREFTest() { Assert.IsTrue( new R44( 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1 ).RowReduce().ReducedForm.IsEqualApprox( new R44( 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0 ) ) ); Assert.IsTrue( new R44( 0, 1, 0, 1, 1, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0 ).RowReduce().ReducedForm.IsEqualApprox( new R44( 1, 0, 0, -1, 0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0 ) ) ); Assert.IsTrue( new R44( 0, 1, 0, 1, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 1 ).RowReduce().ReducedForm.IsEqualApprox(R44.One) ); Assert.IsTrue( new C44( 0, 1, 0, 1 + ii, 1, 0, 1, 0, 0, 0, 1, 1 + ii, 1, 0, 1, 1 ).RowReduce().ReducedForm.IsEqualApprox(C44.One) ); Assert.IsTrue( new C44( 0, 1, 0, 1 + ii, 1, 0, 1, 0, 0, 0, 1, 1 + ii, 1, 1, 0, 0 ).RowReduce().ReducedForm.IsEqualApprox( new C44( 1, 0, 0, -1 - ii, 0, 1, 0, 1 + ii, 0, 0, 1, 1 + ii, 0, 0, 0, 0 ) ) ); } }