invertible.hpp serif/backend/mfem/shared/finite.hpp src/lib/serif/backend/mfem/mapping/domain_mapper.cpp serif serif::utils serif::utils::checks #pragmaonce #include"serif/backend/mfem/shared/finite.hpp" namespaceserif::utils::checks { [[nodiscard]]inlineboolhas_stable_inverse(const::mfem::DenseMatrix&matrix) { constintdimension=matrix.Width(); if(dimension<1||dimension>3||matrix.Height()!=dimension||!is_finite(matrix)) { returnfalse; } constdoubledeterminant=matrix.Det(); constdoublethreshold=1.0e-14*std::pow(matrix.FNorm()/dimension,dimension); returnstd::isfinite(determinant)&&std::abs(determinant)>threshold; } }