#include <stdio.h>		/* printf */
#include <stdlib.h>		/* malloc, abort */
#include <assert.h>

#include "matrix.h"

struct matrix *matrix_sum(struct matrix *A,
			  struct matrix *B)
{
  struct matrix *S;
  int num_rows;
  int num_columns;
  
  /* Dimensionen ueberpruefen */
  assert((*A).num_rows == (*B).num_rows && (*A).num_columns == (*B).num_columns);
  num_rows = (*A).num_rows;
  num_columns = (*A).num_columns;
  /* Speicher bereitstellen */
  S = alloc_matrix(num_rows, num_columns);
  /* Summe berechnen */
  {
    int i, j;
    for (i = 0; i<num_rows; i++)
      for (j = 0; j<num_columns; j++)
	set_matrix_element(S, i, j,
			   matrix_element(A, i, j)
			   + matrix_element(B, i, j));
  }
  /* Wert zurueckgeben */
  return S;
}
