public void ToUpperTriangularTest()
{
double[,] U =
{
{ 1, 2, 1, },
{ 0, 2, 1, },
{ 0, 0, 1, },
};
double[,] L =
{
{ 1, 0, 0, },
{ 5, 2, 0, },
{ 2, 1, 1, },
};
double[,] X =
{
{ 1, 0, 5, },
{ 0, 2, 0, },
{ 6, 0, 3, },
};
Assert.IsTrue(U.ToUpperTriangular(from: MatrixType.UpperTriangular).GetUpperTriangle(true).IsEqual(U));
Assert.IsTrue(U.ToLowerTriangular(from: MatrixType.UpperTriangular).GetLowerTriangle(true).IsEqual(U.Transpose()));
Assert.IsTrue(L.ToUpperTriangular(from: MatrixType.LowerTriangular).GetUpperTriangle(true).IsEqual(L.Transpose()));
Assert.IsTrue(L.ToLowerTriangular(from: MatrixType.LowerTriangular).GetLowerTriangle(true).IsEqual(L));
var LowerToUpper = X.ToUpperTriangular(from: MatrixType.LowerTriangular);
var UpperToUpper = X.ToUpperTriangular(from: MatrixType.UpperTriangular);
var LowerToLower = X.ToLowerTriangular(from: MatrixType.LowerTriangular);
var UpperToLower = X.ToLowerTriangular(from: MatrixType.UpperTriangular);
var a = LowerToUpper.ToCSharp();
var b = UpperToUpper.ToCSharp();
var c = LowerToLower.ToCSharp();
var d = UpperToLower.ToCSharp();
Assert.IsTrue(LowerToUpper.IsEqual(new double[,] {
{ 1, 0, 6 },
{ 0, 2, 0 },
{ 5, 0, 3 }
}));
Assert.IsTrue(UpperToUpper.IsEqual(new double[,] {
{ 1, 0, 5 },
{ 0, 2, 0 },
{ 6, 0, 3 }
}));
Assert.IsTrue(LowerToLower.IsEqual(new double[,] {
{ 1, 0, 5 },
{ 0, 2, 0 },
{ 6, 0, 3 }
}));
Assert.IsTrue(UpperToLower.IsEqual(new double[,] {
{ 1, 0, 6 },
{ 0, 2, 0 },
{ 5, 0, 3 }
}));
}