// Matrix multiplication definition
ComplexMatrix operator*(const ComplexMatrix &A, const ComplexMatrix& B)
{
    assert(A.IsSquare());

    int numRows = A.GetNumberOfRows();
    int numCols = A.GetNumberOfCols();
    ComplexMatrix C(numRows, numCols);

    for (int i  = 0; i < numRows; i++)
    {
        for (int j = 0; j < numRows; j++)
        {
            for (int k = 0; k < numRows; k++)
            {
                C.mMemory[i][j] = C.mMemory[i][j] + A.mMemory[i][k] * B.mMemory[k][j];
            }
        }
    }

    return C;
}