#include<stdio.h>

#define N  (2)

void mult(double *ma, double *mb, double *mc, int n)
{
    int i, j, k;
    double sum;
    for (j = 0; j < n; j++) {
        for (i = 0; i < n; i++) {
            sum = 0.0;
            for (k = 0; k < n; k++) {
                sum += *(ma + j * n + k) * (*(mb + k * n + i));
            }
            *(mc + j * n + i) = sum;
        }
    }
}

void print_matrix(double *x, char *s)
{
    int i, j;
    printf("%s =\n", s);
    for (j = 0; j < N; j++) {
        printf("  | ");
        for (i = 0; i < N; i++) {
            printf("%f ", *(x + j * N + i));
        }
        printf("|\n");
    }
}

int main()
{
    double ma[N][N] = { {1.0, 2.0}, {3.0, 4.0} };
    double mb[N][N] = { {1.0, 2.0}, {-2.0, -1.0} };
    double mc[N][N] = { 0.0 };

    mult((double *) ma, (double *) mb, (double *) mc, N);
    print_matrix((double *) ma, "ma");
    print_matrix((double *) mb, "mb");
    print_matrix((double *) mc, "mc = ma * mb");

    return 0;
}