142 lines
2.8 KiB
C#
142 lines
2.8 KiB
C#
using System;
|
|
using System.Numerics;
|
|
|
|
namespace Skeleton.Test.tests;
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
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
|
|
)
|
|
)
|
|
);
|
|
}
|
|
|
|
} |