#include <boost/qvm/mat_operations.hpp>
namespace boost
{
    namespace qvm
    {
        //Only enabled if:
        //  is_mat<A>::value && is_scalar<B>::value
        //  mat_traits<A>::rows==mat_traits<A>::cols
        
        template <class A,class B>
        typename deduce_mat<A>::type
        inverse( A const & a, B det );
        
        template <class A>
        typename deduce_mat<A>::type
        inverse( A const & a );
    }
}
det!=scalar_traits<typename mat_traits<A>::scalar_type>::value(0)
Both overloads compute the inverse of a. The first overload takes the pre-computed determinant of a.
The second overload computes the determinant automatically and throws zero_determinant_error if the computed determinant is zero.