matrix.c

Commit: 5e92c85e Author: jokerz Raw Copy
1
/* matrix.c — Matrix multiplication demo for Pactor64 */
2
#include "libc.h"
3
4
#define N 4
5
6
static void print_matrix(const char *name, int m[N][N]) {
7
    printf("  %s:\n", name);
8
    for (int i = 0; i < N; i++) {
9
        printf("    [");
10
        for (int j = 0; j < N; j++) {
11
            printf("%4d", m[i][j]);
12
            if (j < N - 1) printf(",");
13
        }
14
        printf("]\n");
15
    }
16
}
17
18
int main(int argc, char **argv) {
19
    printf("=== Matrix Multiplication (%dx%d) ===\n\n", N, N);
20
21
    int A[N][N], B[N][N], C[N][N];
22
23
    /* Initialize matrices */
24
    for (int i = 0; i < N; i++)
25
        for (int j = 0; j < N; j++) {
26
            A[i][j] = i * N + j + 1;
27
            B[i][j] = (i == j) ? 1 : 0;  /* Identity matrix */
28
        }
29
30
    print_matrix("Matrix A", A);
31
    printf("\n");
32
    print_matrix("Identity B", B);
33
34
    /* Multiply A * B (should give A back) */
35
    for (int i = 0; i < N; i++)
36
        for (int j = 0; j < N; j++) {
37
            C[i][j] = 0;
38
            for (int k = 0; k < N; k++)
39
                C[i][j] += A[i][k] * B[k][j];
40
        }
41
42
    printf("\n");
43
    print_matrix("A * B = ", C);
44
45
    /* Now multiply A * A */
46
    for (int i = 0; i < N; i++)
47
        for (int j = 0; j < N; j++) {
48
            C[i][j] = 0;
49
            for (int k = 0; k < N; k++)
50
                C[i][j] += A[i][k] * A[k][j];
51
        }
52
53
    printf("\n");
54
    print_matrix("A * A = ", C);
55
56
    printf("\nDone!\n");
57
    return 0;
58
}
59