00001 // This is core/vnl/algo/vnl_adjugate.h 00002 #ifndef vnl_adjugate_h_ 00003 #define vnl_adjugate_h_ 00004 //: 00005 // \file 00006 // \author fsm and Peter Vanroose 00007 // The adjoint matrix of a square matrix, sometimes also called the adjugate 00008 // matrix (although that name is also used for the transpose of the complex 00009 // conjugate), is defined as the matrix whose (i,k)-th entry is the cofactor 00010 // of the (k,i)-th entry of the given matrix. The cofactor of entry (k,i) 00011 // is the determinant of the matrix obtained by deleting row k and column i 00012 // from the given matrix. 00013 // 00014 // The adjugate matrix is useful in finding the inverse of a square matrix 00015 // since det(A) * A_inverse = A_adj. 00016 // 00017 // In contrast to the inverse matrix, however, calculating the adjoint matrix 00018 // does not involve divisions, so the adjoint of an integer matrix is integer. 00019 00020 template <class T> class vnl_matrix; 00021 00022 template <class T> 00023 void vnl_adjugate(vnl_matrix<T> const &A, vnl_matrix<T> *out); 00024 00025 template <class T> 00026 vnl_matrix<T> vnl_adjugate(vnl_matrix<T> const &A); 00027 00028 #endif // vnl_adjugate_h_