/* matrix.c — Matrix multiplication demo for Pactor64 */ #include "libc.h" #define N 4 static void print_matrix(const char *name, int m[N][N]) { printf(" %s:\n", name); for (int i = 0; i < N; i++) { printf(" ["); for (int j = 0; j < N; j++) { printf("%4d", m[i][j]); if (j < N - 1) printf(","); } printf("]\n"); } } int main(int argc, char **argv) { printf("=== Matrix Multiplication (%dx%d) ===\n\n", N, N); int A[N][N], B[N][N], C[N][N]; /* Initialize matrices */ for (int i = 0; i < N; i++) for (int j = 0; j < N; j++) { A[i][j] = i * N + j + 1; B[i][j] = (i == j) ? 1 : 0; /* Identity matrix */ } print_matrix("Matrix A", A); printf("\n"); print_matrix("Identity B", B); /* Multiply A * B (should give A back) */ for (int i = 0; i < N; i++) for (int j = 0; j < N; j++) { C[i][j] = 0; for (int k = 0; k < N; k++) C[i][j] += A[i][k] * B[k][j]; } printf("\n"); print_matrix("A * B = ", C); /* Now multiply A * A */ for (int i = 0; i < N; i++) for (int j = 0; j < N; j++) { C[i][j] = 0; for (int k = 0; k < N; k++) C[i][j] += A[i][k] * A[k][j]; } printf("\n"); print_matrix("A * A = ", C); printf("\nDone!\n"); return 0; }