#include "imatrix.h"
#include <stdio.h>
#include <stdlib.h>

#include "stackmem.h"

#ifdef MEMDEBUG
#include "mnemosyne.h"
#endif

imatrix *imatrix_new(int i, int j) {
  imatrix *this = claim(sizeof(imatrix));
  this->Nr = i; this->Nc = j;
  this->p = claim((sizeof(int *)) * this->Nr);
  for(i = 0; i < this->Nr; i++)
    this->p[i] = claim((sizeof(int)) * this->Nc);
  return this;
}

int imatrix_crc(imatrix *im) {
  int i, j, crc = 0;
  for (i = 0; i < im->Nr; i++) {
    for (j = 0; j < im->Nc; j++) {
      /*if (i < 16 && j < 8) fprintf(stderr, "%06x ", im->p[i][j]);*/
      crc = (crc + im->p[i][j])&0x7fffffff;
    }
    /*if (i < 16) fprintf(stderr, "\n");*/
  }
  return crc;
}