#include <string.h>

void matmul_naive (const double *a, const double *b, double *c, const int m,
    const int n, const int p, const int lda, const int ldb, const int ldc);
void matmul (const int loops, const int ldim, const int m, const double *a,
    const double *b, double *c);

void matmul (const int loops, const int ldim, const int m, const double *a,
    const double *b, double *c)
{
    unsigned long mul = (unsigned long) m;

    for (int l = 0; l < loops; l++)
    {
        memset (c, 0, sizeof (double) * mul * mul);
        matmul_naive (a, b, c, m, m, m, ldim, ldim, ldim);
    }
}