GCC Code Coverage Report


Directory: ./
File: s21_inverse_matrix.c
Date: 2025-08-15 23:01:21
Exec Total Coverage
Lines: 16 16 100.0%
Branches: 10 10 100.0%

Line Branch Exec Source
1 #include "s21_matrix.h"
2
3 18 int s21_inverse_matrix(matrix_t *A, matrix_t *result) {
4
4/4
✓ Branch 1 taken 16 times.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 14 times.
18 if (s21_check_matrix_is_invalid(A) || result == NULL) {
5 4 return ERROR;
6 }
7
8 14 int code = OK;
9 double det;
10 14 s21_determinant(A, &det);
11
4/4
✓ Branch 0 taken 12 times.
✓ Branch 1 taken 2 times.
✓ Branch 3 taken 10 times.
✓ Branch 4 taken 2 times.
14 if (A->columns == A->rows && !s21_are_doubles_equal(det, 0)) {
12
2/2
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
10 if (A->columns == 1) {
13 2 s21_create_matrix(A->rows, A->columns, result);
14 2 result->matrix[0][0] = 1.0 / A->matrix[0][0];
15 } else {
16 matrix_t temp1;
17 matrix_t temp2;
18
19 8 s21_calc_complements(A, &temp1);
20 8 s21_transpose(&temp1, &temp2);
21 8 s21_mult_number(&temp2, 1.0 / det, result);
22
23 8 s21_remove_matrix(&temp1);
24 8 s21_remove_matrix(&temp2);
25 }
26 } else {
27 4 code = CALC_ERROR;
28 }
29
30 14 return code;
31 }
32