forked from albertocasagrande/AD_strassen_template
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmatrix.c
57 lines (43 loc) · 1.19 KB
/
matrix.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#include <stdio.h>
#include <stdlib.h>
#include "matrix.h"
void naive_matrix_multiplication(float **C, float const *const *const A,
float const *const *const B,
const size_t n)
{
// IMPLEMENT THE NAIVE ALGORITHM HERE
}
int same_matrix(float const *const *const A, float const *const *const B,
const size_t rows, const size_t cols) {
for (size_t i = 0; i < rows; i++) {
for (size_t j = 0; j < cols; j++) {
if (A[i][j] != B[i][j]) {
return 0;
}
}
}
return 1;
}
float **allocate_matrix(const size_t rows, const size_t cols) {
float **M = (float **)malloc(sizeof(float *) * rows);
for (size_t i = 0; i < rows; i++) {
M[i] = (float *)malloc(sizeof(float) * cols);
}
return M;
}
void deallocate_matrix(float **A, const size_t rows) {
for (size_t i = 0; i < rows; i++) {
free(A[i]);
}
free(A);
}
float **allocate_random_matrix(const size_t rows, const size_t cols) {
float **A = allocate_matrix(rows, cols);
srand(10);
for (size_t i = 0; i < rows; i++) {
for (size_t j = 0; j < cols; j++) {
A[i][j] = (rand() - RAND_MAX / 2) % 5;
}
}
return A;
}