home *** CD-ROM | disk | FTP | other *** search
/ Shareware Overload / ShartewareOverload.cdr / progm / elem-c.zip / M_INVERT.C < prev    next >
C/C++ Source or Header  |  1985-05-18  |  4KB  |  26 lines

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