home *** CD-ROM | disk | FTP | other *** search
/ APDL Public Domain 1 / APDL_PD1A.iso / program / c / c_tutor / c_1 / m_multip < prev    next >
Encoding:
Text File  |  1992-11-14  |  742 b   |  30 lines

  1. static char *sccsid = "@(#)m_multiply.c 4/6/82 (U of Maryland, FLB)";
  2.  
  3. #include "mat.h"
  4.  
  5. struct matrix *
  6. m_multiply(mat1, mat2)
  7. register struct matrix *mat1, *mat2;
  8. {
  9. register struct matrix *result;
  10. register int row, col, ix;
  11. double sum;
  12.  
  13. if (mat1->m_cols != mat2->m_rows) {
  14.         printf("m_multiply: matrices not compatible.\n");
  15.         return(M_NULL);
  16.         }
  17.  
  18. m_create(result, mat1->m_rows, mat2->m_cols);
  19.  
  20. for (row = 0; row < mat1->m_rows; row++)
  21.         for (col = 0; col < mat2->m_cols; col++) {
  22.                 sum = 0.0;
  23.                 for (ix = 0; ix < mat1->m_cols; ix++)
  24.                         sum += m_v(mat1, row, ix) * m_v(mat2, ix, col);
  25.                 m_v(result, row, col) = sum;
  26.                 }
  27.  
  28. return(result);
  29. }
  30.