#include"my_matrix.h"
#include<stdlib.h>
#include<stdio.h>
#include<assert.h>

my_matrix* my_matrix_alloc(int nrows, int ncols){
  my_matrix* m = (my_matrix*)malloc(sizeof(my_matrix));
  (*m).nrows = nrows;
  (*m).ncols = ncols;
  (*m).data = (double*)malloc(nrows*ncols*sizeof(double));
  if( m==NULL ){
		fprintf(stderr,"error in my_matrix_alloc\n");
		}
  return m;
}

void my_matrix_free(my_matrix* m){
	free(m->data);
	free(m);
}

void my_matrix_set(my_matrix* m, int i, int j, double value){
  assert(0<=i && i<(*m).nrows);
  assert(0<=j && j<(*m).ncols);
  int indx = i*(*m).ncols+j;
  (*m).data[indx]=value;
}

double my_matrix_get(my_matrix* m, int i, int j){
  assert(0<=i && i<(*m).nrows);
  assert(0<=j && j<(*m).ncols);
  int indx = i*(*m).ncols+j;
  return (*m).data[indx];
}
