summaryrefslogtreecommitdiffstats
path: root/.vim/c-support/codesnippets/calloc_double_matrix.c
blob: ec71658ff3c514af335d37d6ef063c38e79d095d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36

/* 
 * ===  FUNCTION  ======================================================================
 *         Name:  calloc_double_matrix
 *  Description:  Allocate a dynamic double-matrix of size rows*columns;
 *                return a pointer.
 * =====================================================================================
 */
  double**
calloc_double_matrix ( int rows, int columns )
{
  int      i;
  double **m;
  m     = calloc ( rows, sizeof(double*) );       /* allocate pointer array     */
  assert( m != NULL);                             /* abort if allocation failed */
  *m    = calloc ( rows*columns, sizeof(double) );/* allocate data array        */
  assert(*m != NULL);                             /* abort if allocation failed */
  for ( i=1; i<rows; i+=1 )                       /* set pointers               */
    m[i]  = m[i-1] + columns;
  return m;
}  /* ----------  end of function calloc_double_matrix  ---------- */

/* 
 * ===  FUNCTION  ======================================================================
 *         Name:  free_matrix_double
 *  Description:  Free a dynamic double-matrix.
 * =====================================================================================
 */
  void
free_double_matrix ( double **m )
{
  free(*m);                                       /* free data array            */
  free( m);                                       /* free pointer array         */
  return ;
}  /* ----------  end of function free_double_matrix  ---------- */