int TestCaseFunctionOperatorObj(){ SparseMatrix A{3,3, true}; A(0, 0) = 1; A(0, 1) = 1; A(0, 2) = 1; A(1, 2) = 5; A(2, 2) = -1; A.build(); DenseMatrix b{3}; b(0) = 6; b(1) = -4; b(2) = 27; // Ax = b Factor factor = A.analyze(); bool res = factor.factorize(A); TINYTEST_ASSERT(res); DenseMatrix x = solve(factor, b); double expected[] = {2.78571f,4.57143f,-1.35714f}; assertEqual(expected, x.getData(), 3); // update values A.zero(); A(0, 0) = 2; A(0, 1) = 9; A(0, 2) = 7; A(1, 2) = 8; A(2, 2) = -3; factor.factorize(A); x = solve(factor, b); double expected2[] = {1.0935,1.76937,-1.73019}; assertEqual(expected2, x.getData(), 3); return 1; }
int SolveSparseDenseFactorTestObj() { SparseMatrix A{3,3, true}; A(0, 0) = 1; A(0, 1) = 1; A(0, 2) = 1; A(1, 2) = 5; A(2, 2) = -1; A.build(); DenseMatrix b{3}; b(0) = 6; b(1) = -4; b(2) = 27; Factor F; F = A.analyze(); bool res = F.factorize(A); DenseMatrix x = solve(F, b); double expected[] = {2.78571f,4.57143f,-1.35714f}; assertEqual(expected, x.getData(), 3); // update values A.zero(); A(0, 0) = 2; A(0, 1) = 9; A(0, 2) = 7; A(1, 2) = 8; A(2, 2) = -3; F.factorize(A); x = solve(F, b); double expected2[] = {1.0935,1.76937,-1.73019}; assertEqual(expected2, x.getData(), 3); return 1; }
int SingularTestObj(){ SparseMatrix A{3,3, true}; A(2, 2) = 1; A.build(); DenseMatrix b{3}; b(0) = 0; b(1) = 1; b(2) = 0; Factor factor = A.analyze(); bool res = factor.factorize(A); TINYTEST_ASSERT(!res); DenseMatrix x = solve(factor, b); return 1; }