/*
 * Scilab ( https://www.scilab.org/ ) - This file is part of Scilab
 * Copyright (C) INRIA -
 *
 * This file is released under the 3-clause BSD license. See COPYING-BSD.
 */
#include "matmul.h"

/*--------------------------------------------------------
 *  Matrix multiplication C= A*B, (A,B,C stored columnwise)
 *  C function
 *--------------------------------------------------------*/

#define A(i,k) a[i + k*n]
#define B(k,j) b[k + j*m]
#define C(i,j) c[i + j*n]

void matmul(double a[], int n, int m, double b[], int l, double c[])
{
    int i = 0, j = 0, k = 0;
    double s = 0.0;

    for ( i = 0 ; i < n; i++)
    {
        for ( j = 0; j < l; j++)
        {
            s = 0.;
            for ( k = 0; k < m; k++)
            {
                s += A(i, k) * B(k, j);
            }
            C(i, j) = s;
        }
    }
}
