Files
Skeleton.Test/tests/REFFTest.cs
2024-11-30 20:11:27 +00:00

144 lines
2.8 KiB
C#

using System;
using System.Numerics;
namespace Skeleton.Test;
/// <summary>
///
/// </summary>
[TestFixture]
public class REFFTest : BaseTest
{
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
)
)
);
}
}