Directory: | ./ |
---|---|
File: | s21_mult_matrix.c |
Date: | 2025-08-15 23:01:21 |
Exec | Total | Coverage | |
---|---|---|---|
Lines: | 18 | 18 | 100.0% |
Branches: | 14 | 14 | 100.0% |
Line | Branch | Exec | Source |
---|---|---|---|
1 | #include "s21_matrix.h" | ||
2 | |||
3 | void s21_process_mult_matrix(matrix_t *A, matrix_t *B, matrix_t *result); | ||
4 | void s21_calc_cell(matrix_t *A, matrix_t *B, matrix_t *result, int i, int j); | ||
5 | |||
6 | 10 | int s21_mult_matrix(matrix_t *A, matrix_t *B, matrix_t *result) { | |
7 |
6/6✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✓ Branch 4 taken 6 times.
✓ Branch 5 taken 2 times.
✓ Branch 6 taken 2 times.
✓ Branch 7 taken 4 times.
|
10 | if (s21_check_matrix_is_invalid(A) || s21_check_matrix_is_invalid(B) || |
8 | result == NULL) { | ||
9 | 6 | return ERROR; | |
10 | } | ||
11 | |||
12 | 4 | int code = OK; | |
13 |
2/2✓ Branch 0 taken 2 times.
✓ Branch 1 taken 2 times.
|
4 | if (A->columns == B->rows) { |
14 | 2 | s21_create_matrix(A->rows, B->columns, result); | |
15 | |||
16 | 2 | s21_process_mult_matrix(A, B, result); | |
17 | } else { | ||
18 | 2 | code = CALC_ERROR; | |
19 | } | ||
20 | |||
21 | 4 | return code; | |
22 | } | ||
23 | |||
24 | 2 | void s21_process_mult_matrix(matrix_t *A, matrix_t *B, matrix_t *result) { | |
25 |
2/2✓ Branch 0 taken 6 times.
✓ Branch 1 taken 2 times.
|
8 | for (int i = 0; i < result->rows; i++) { |
26 |
2/2✓ Branch 0 taken 18 times.
✓ Branch 1 taken 6 times.
|
24 | for (int j = 0; j < result->columns; j++) { |
27 | 18 | s21_calc_cell(A, B, result, i, j); | |
28 | } | ||
29 | } | ||
30 | 2 | } | |
31 | |||
32 | 18 | void s21_calc_cell(matrix_t *A, matrix_t *B, matrix_t *result, int i, int j) { | |
33 |
2/2✓ Branch 0 taken 36 times.
✓ Branch 1 taken 18 times.
|
54 | for (int k = 0; k < A->columns; k++) { |
34 | 36 | result->matrix[i][j] += A->matrix[i][k] * B->matrix[k][j]; | |
35 | } | ||
36 | 18 | } | |
37 |