Я сталкиваюсь со странной проблемой segfault, когда пытаюсь использовать Boost.Multiprecision, чтобы обернуть MPFR и отключить предположения выравнивания Eigen.
Пример тестового кода:
#include <boost/multiprecision/mpfr.hpp>
#include <Eigen/Dense>
#include <iostream>
int main(int argc, char** argv)
{
typedef boost::multiprecision::number<
boost::multiprecision::mpfr_float_backend<71,
boost::multiprecision::allocate_stack>,
boost::multiprecision::et_off>
real256;
Eigen::Matrix<real256, 9, 9> mat;
// set mat to identity matrix
for (size_t i = 0; i < 9; ++i)
{
for (size_t j = 0; j < 9; ++j)
{
mat(i, j) = 0;
}
}
for (size_t i = 0; i < 9; ++i)
{
mat(i, i) = 1;
}
std::cout << mat << std::endl;
Eigen::Matrix<real256, 9, 9> mat2 = mat2.inverse();
std::cout << mat2 << std::endl;
}
Когда япостройте это, используя gcc / clang с «минимальным» набором опций, он отлично работает:
g++ mat_test.cpp -L/usr/lib/x86_64-linux-gnu -lmpfr -I/usr/include/eigen3 -o mat_test
Однако, когда я пытаюсь отключить предположения о выравнивании eigen, во время обратного вычисления он вызывает ошибки.
g++ mat_test.cpp -L/usr/lib/x86_64-linux-gnu -lmpfr -I/usr/include/eigen3 -DEIGEN_MAX_ALIGN_BYTES=0 -o mat_test
Обратите внимание, что этот segfault не возникает, если я изменяю матрицы, чтобы они содержали двойные или плавающие числа. Я заметил, что раньше была ошибка в оболочках MPFR Boost Multiprecision, когда самостоятельное назначение могло вызывать странные проблемы, однако я полагаю, что я использую достаточно новую версию Boost, чтобы исправить это (1.65.1).
Есть ли что-то конкретное в конкретных опциях, которые я использую для определения типов Boost MPFR, которые негативно взаимодействуют с Eigen?
Я пытался использовать gdb, чтобы отследить, где происходит проблема, но я не могудействительно имеет много смысла в том, что же является настоящей проблемой.
Вот трассировка стека, которую я получил от gdb:
#0 __memmove_avx_unaligned_erms ()
at ../sysdeps/x86_64/multiarch/memmove-vec-unaligned-erms.S:227
#1 0x00007ffff79600b5 in mpfr_set4 ()
from /usr/lib/x86_64-linux-gnu/libmpfr.so.6
#2 0x000055555555cdda in boost::multiprecision::backends::detail::mpfr_float_imp<71u, (boost::multiprecision::mpfr_allocation_type)0>::operator= (this=0x7fffffff6d20, o=...)
at /usr/include/boost/multiprecision/mpfr.hpp:414
#3 0x000055555555c651 in boost::multiprecision::backends::mpfr_float_backend<71u, (boost::multiprecision::mpfr_allocation_type)0>::operator= (this=0x7fffffff6d20, o=...)
at /usr/include/boost/multiprecision/mpfr.hpp:709
#4 0x000055555555c0c1 in boost::multiprecision::number<boost::multiprecision::backends::mpfr_float_backend<71u, (boost::multiprecision::mpfr_allocation_type)0>, (boost::multiprecision::expression_template_option)0>::operator= (this=0x7fffffff6d20, e=...)
at /usr/include/boost/multiprecision/number.hpp:159
#5 0x00005555555649d1 in Eigen::internal::gemm_pack_rhs<boost::multiprecision::number<boost::multiprecision::backends::mpfr_float_backend<71u, (boost::multiprecision::mpfr_allocation_type)0>, (boost::multiprecision::expression_template_option)0>, long, Eigen::internal::blas_data_mapper<boost::multiprecision::number<boost::multiprecision::backends::mpfr_float_backend<71u, (boost::multiprecision::mpfr_allocation_type)0>, (boost::multiprecision::expression_template_option)0>, long, 0, 0>, 4, 0, false, true>::operator() (this=0x7fffffff542f, blockB=0x7fffffff6d20, rhs=..., depth=4, cols=9, stride=9, offset=0)
at /usr/include/eigen3/Eigen/src/Core/products/GeneralBlockPanelKernel.h:1988
#6 0x0000555555562d19 in Eigen::internal::triangular_solve_matrix<boost::multiprecision::number<boost::multiprecision::backends::mpfr_float_backend<71u, (boost::multiprecision::mpfr_allocation_type)0>, (boost::multiprecision::expression_template_option)0>, long, 1, 5, false, 0, 0>::run (size=9, otherSize=9, _tri=0x7fffffff99e0, triStride=9, _other=0x7fffffffc480, otherStride=9, blocking=...)
at /usr/include/eigen3/Eigen/src/Core/products/TriangularSolverMatrix.h:153
#7 0x000055555556f934 in Eigen::internal::triangular_solver_selector<Eigen::Matrix<boost::multiprecision::number<boost::multiprecision::backends::mpfr_float_backend<71u, (boost::multiprecision::mpfr_allocation_type)0>, (boost::multiprecision::expression_template_option)0>, 9, 9, 0, 9, 9> const, Eigen::Matrix<boost::multiprecision::number<boost::multiprecision::backends::mpfr_float_backend<71u, (boost::multiprecision::mpfr_allocation_type)0>, (boost::multiprecision::expression_template_option)0>, 9, 9, 0, 9, 9>, 1, 5, 0, -1>::run (lhs=..., rhs=...)
at /usr/include/eigen3/Eigen/src/Core/SolveTriangular.h:102
#8 0x000055555556ece1 in Eigen::TriangularViewImpl<Eigen::Matrix<boost::multiprecision::number<boost::multiprecision::backends::mpfr_float_backend<71u, (boost::multiprecision::mpfr_allocation_type)0>, (boost::multiprecision::expression_template_option)0>, 9, 9, 0, 9, 9> const, 5u, Eigen::Dense>::solveInPlace<1, Eigen::Matrix<boost::multiprecision::number<boost::multiprecision::backends::mpfr_float_backend<71u, (boost::multiprecision::mpfr_allocation_type)0>, (boost::multiprecision::expression_template_option)0>, 9, 9, 0, 9, 9> > (this=0x7fffffff8220, _other=...)
at /usr/include/eigen3/Eigen/src/Core/SolveTriangular.h:179
#9 0x000055555556d757 in Eigen::TriangularViewImpl<Eigen::Matrix<boost::multiprecision::number<boost::multiprecision::backends::mpfr_float_backend<71u, (boost::multiprecision::mpfr_allocation_type)0>, (boost::multiprecision::expression_template_option)0>, 9, 9, 0, 9, 9> const, 5u, Eigen::Dense>::solveInPlace<Eigen::Matrix<boost::multiprecision::number<boost::multiprecision::backends::mpfr_float_backend<71u, (boost::multiprecision::mpfr_allocation_type)0>, (boost::multiprecision::expression_template_option)0>, 9, 9, 0, 9, 9> > (this=0x7fffffff8220, other=...)
at /usr/include/eigen3/Eigen/src/Core/TriangularMatrix.h:511
#10 0x000055555556b541 in Eigen::PartialPivLU<Eigen::Matrix<boost::multiprecision::number<boost::multiprecision::backends::mpfr_float_backend<71u, (boost::multiprecision::mpfr_allocation_type)0>, (boost::multiprecision::expression_template_option)0>, 9, 9, 0, 9, 9> >::_solve_impl<Eigen::CwiseNullaryOp<Eigen::internal::scalar_identity_op<boost::multiprecision::number<boost::multiprecision::backends::mpfr_float_backend<71u, (boost::multiprecision::mpfr_allocation_type)0>, (boost::multiprecision::expression_template_option)0> >, Eigen::Matrix<boost::multiprecision::number<boost::multiprecision::backends::mpfr_float_backend<71u, (boost::multiprecision::mpfr_allocation_type)0>, (boost::multiprecision::expression_template_option)0>, 9, 9, 0, 9, 9> >, Eigen::Matrix<boost::multiprecision::number<boost::multiprecision::backends::mpfr_float_backend<71u, (boost::multiprecision::mpfr_allocation_type)0>, (boost::multiprecision::expression_template_option)0>, 9, 9, 0, 9, 9> > (this=0x7fffffff99e0, rhs=..., dst=...)
at /usr/include/eigen3/Eigen/src/LU/PartialPivLU.h:240
#11 0x0000555555569f3d in Eigen::internal::Assignment<Eigen::Matrix<boost::multiprecision::number<boost::multiprecision::backends::mpfr_float_backend<71u, (boost::multiprecision::mpfr_allocation_type)0>, (boost::multiprecision::expression_template_option)0>, 9, 9, 0, 9, 9>, Eigen::Solve<Eigen::PartialPivLU<Eigen::Matrix<boost::multiprecision::number<boost::multiprecision::backends::mpfr_float_backend<71u, (boost::multiprecision::mpfr_allocation_type)0>, (boost::multiprecision::expression_template_option)0>, 9, 9, 0, 9, 9> >, Eigen::CwiseNullaryOp<Eigen::internal::scalar_identity_op<boost::multiprecision::number<boost::multiprecision::backends::mpfr_float_backend<71u, (boost::multiprecision::mpfr_allocation_type)0>, (boost::multiprecision::expression_template_option)0> >, Eigen::Matrix<boost::multiprecision::number<boost::multiprecision::backends::mpfr_float_backend<71u, (boost::multiprecision::mpfr_allocation_type)0>, (boost::multiprecision::expression_template_option)0>, 9, 9, 0, 9, 9> > >, Eigen::internal::assign_op<boost::multiprecision::number<boost::multiprecision::backends::mpfr_float_backend<71u, (boost::multiprecision::mpfr_allocation_type)0>, (boost::multiprecision::expression_template_option)0>, boost::multiprecision::number<boost::multiprecision::backends::mpfr_float_backend<71u, (boost::multiprecision::mpfr_allocation_type)0>, (boost::multiprecision::expression_template_option)0> >, Eigen::internal::Dense2Dense, void>::run (dst=..., src=...)
at /usr/include/eigen3/Eigen/src/Core/Solve.h:147
#12 0x0000555555567ca4 in Eigen::internal::call_assignment_no_alias<Eigen::Matrix<boost::multiprecision::number<boost::multiprecision::backends::mpfr_float_backend<71u, (boost::multiprecision::mpfr_allocation_type)0>, (boost::multiprecision::expression_template_option)0>, 9, 9, 0, 9, 9>, Eigen::Solve<Eigen::PartialPivLU<Eigen::Matrix<boost::multiprecision::number<boost::multiprecision::backends::mpfr_float_backend<71u, (boost::multiprecision::mpfr_allocation_type)0>, (boost::multiprecision::expression_template_option)0>, 9, 9, 0, 9, 9> >, Eigen::CwiseNullaryOp<Eigen::internal::scalar_identity_op<boost::multiprecision::number<boost::multiprecision::backends::mpfr_float_backend<71u, (boost::multiprecision::mpfr_allocation_type)0>, (boost::multiprecision::expression_template_option)0> >, Eigen::Matrix<boost::multiprecision::number<boost::multiprecision::backends::mpfr_float_backend<71u, (boost::multiprecision::mpfr_allocation_type)0>, (boost::multiprecision::expression_template_option)0>, 9, 9, 0, 9, 9> > >, Eigen::internal::assign_op<boost::multiprecision::number<boost::multiprecision::backends::mpfr_float_backend<71u, (boost::multiprecision::mpfr_allocation_type)0>, (boost::multiprecision::expression_template_option)0>, boost::multiprecision::number<boost::multiprecision::backends::mpfr_float_backend<71u, (boost::multiprecision::mpfr_allocation_type)0>, (boost::multiprecision::expression_template_option)0> > > (dst=..., src=..., func=...)
at /usr/include/eigen3/Eigen/src/Core/AssignEvaluator.h:836
#13 0x0000555555563690 in Eigen::internal::call_assignment<Eigen::Matrix<boost::multiprecision::number<boost::multiprecision::backends::mpfr_float_backend<71u, (boost::multiprecision::mpfr_allocation_type)0>, (boost::multiprecision::expression_template_option)0>, 9, 9, 0, 9, 9>, Eigen::Solve<Eigen::PartialPivLU<Eigen::Matrix<boost::multiprecision::number<boost::multiprecision::backends::mpfr_float_backend<71u, (boost::multiprecision::mpfr_allocation_type)0>, (boost::multiprecision::expression_template_option)0>, 9, 9, 0, 9, 9> >, Eigen::CwiseNullaryOp<Eigen::internal::scalar_identity_op<boost::multiprecision::number<boost::multiprecision::backends::mpfr_float_backend<71u, (boost::multiprecision::mpfr_allocation_type)0>, (boost::multiprecision::expression_template_option)0> >, Eigen::Matrix<boost::multiprecision::number<boost::multiprecision::backends::mpfr_float_backend<71u, (boost::multiprecision::mpfr_allocation_type)0>, (boost::multiprecision::expression_template_option)0>, 9, 9, 0, 9, 9> > >, Eigen::internal::assign_op<boost::multiprecision::number<boost::multiprecision::backends::mpfr_float_backend<71u, (boost::multiprecision::mpfr_allocation_type)0>, (boost::multiprecision::expression_template_option)0>, boost::multiprecision::number<boost::multiprecision::backends::mpfr_float_backend<71u, (boost::multiprecision::mpfr_allocation_type)0>, (boost::multiprecision::expression_template_option)0> > >(Eigen::Matrix<boost::multiprecision::number<boost::multiprecision::backends::mpfr_float_backend<71u, (boost::multiprecision::mpfr_allocation_type)0>, (boost::multiprecision::expression_template_option)0>, 9, 9, 0, 9, 9>&, Eigen::Solve<Eigen::PartialPivLU<Eigen::Matrix<boost::multiprecision::number<boost::multiprecision::backends::mpfr_float_backend<71u, (boost::multiprecision::mpfr_allocation_type)0>, (boost::multiprecision::expression_template_option)0>, 9, 9, 0, 9, 9> >, Eigen::CwiseNullaryOp<Eigen::internal::scalar_identity_op<boost::multiprecision::number<boost::multiprecision::backends::mpfr_float_backend<71u, (boost::multiprecision::mpfr_allocation_type)0>, (boost::multiprecision::expression_template_option)0> >, Eigen::Matrix<boost::multiprecision::number<boost::multiprecision::backends::mpfr_float_backend<71u, (boost::multiprecision::mpfr_allocation_type)0>, (boost::multiprecision::expression_template_option)0>, 9, 9, 0, 9, 9> > > const&, Eigen::internal::assign_op<boost::multiprecision::number<boost::multiprecision::backends::mpfr_float_backend<71u, (boost::multiprecision::mpfr_allocation_type)0>, (boost::multiprecision::expression_template_option)0>, boost::multiprecision::number<boost::multiprecision::backends::mpfr_float_backend<71u, (boost::multiprecision::mpfr_allocation_type)0>, (boost::multiprecision::expression_template_option)0> > const&, Eigen::internal::enable_if<!Eigen::internal::evaluator_assume_aliasing<Eigen::Solve<Eigen::PartialPivLU<Eigen::Matrix<boost::multiprecision::number<boost::multiprecision::backends::mpfr_float_backend<71u, (boost::multiprecision::mpfr_allocation_type)0>, (boost::multiprecision::expression_template_option)0>, 9, 9, 0, 9, 9> >, Eigen::CwiseNullaryOp<Eigen::internal::scalar_identity_op<boost::multiprecision::number<boost::multiprecision::backends::mpfr_float_backend<71u, (boost::multiprecision::mpfr_allocation_type)0>, (boost::multiprecision::expression_template_option)0> >, Eigen::Matrix<boost::multiprecision::number<boost::multiprecision::backends::mpfr_float_backend<71u, (boost::multiprecision::mpfr_allocation_type)0>, (boost::multiprecision::expression_template_option)0>, 9, 9, 0, 9, 9> > >, Eigen::internal::evaluator_traits<Eigen::Solve<Eigen::PartialPivLU<Eigen::Matrix<boost::multiprecision::number<boost::multiprecision::backends::mpfr_float_backend<71u, (boost::multiprecision::mpfr_allocation_type)0>, (boost::multiprecision::expression_template_option)0>, 9, 9, 0, 9, 9> >, Eigen::CwiseNullaryOp<Eigen::internal::scalar_identity_op<boost::multiprecision::number<boost::multiprecision::backends::mpfr_float_backend<71u, (boost::multiprecision::mpfr_allocation_type)0>, (boost::multiprecision::expression_template_option)0> >, Eigen::Matrix<boost::multiprecision::number<boost::multiprecision::backends::mpfr_float_backend<71u, (boost::multiprecision::mpfr_allocation_type)0>, (boost::multiprecision::expression_template_option)0>, 9, 9, 0, 9, 9> > > >::Shape>::value, void*>::type) (dst=..., src=..., func=...)
at /usr/include/eigen3/Eigen/src/Core/AssignEvaluator.h:804
#14 0x0000555555561742 in Eigen::internal::call_assignment<Eigen::Matrix<boost::multiprecision::number<boost::multiprecision::backends::mpfr_float_backend<71u, (boost::multiprecision::mpfr_allocation_type)0>, (boost::multiprecision::expression_template_option)0>, 9, 9, 0, 9, 9>, Eigen::Solve<Eigen::PartialPivLU<Eigen::Matrix<boost::multiprecision::number<boost::multiprecision::backends::mpfr_float_backend<71u, (boost::multiprecision::mpfr_allocation_type)0>, (boost::multiprecision::expression_template_option)0>, 9, 9, 0, 9, 9> >, Eigen::CwiseNullaryOp<Eigen::internal::scalar_identity_op<boost::multiprecision::number<boost::multiprecision::backends::mpfr_float_backend<71u, (boost::multiprecision::mpfr_allocation_type)0>, (boost::multiprecision::expression_template_option)0> >, Eigen::Matrix<boost::multiprecision::number<boost::multiprecision::backends::mpfr_float_backend<71u, (boost::multiprecision::mpfr_allocation_type)0>, (boost::multiprecision::expression_template_option)0>, 9, 9, 0, 9, 9> > > > (dst=..., src=...)
at /usr/include/eigen3/Eigen/src/Core/AssignEvaluator.h:782
#15 0x0000555555560637 in Eigen::PlainObjectBase<Eigen::Matrix<boost::multiprecision::number<boost::multiprecision::backends::mpfr_float_backend<71u, (boost::multiprecision::mpfr_allocation_type)0>, (boost::multiprecision::expression_template_option)0>, 9, 9, 0, 9, 9> >::_set<Eigen::Solve<Eigen::PartialPivLU<Eigen::Matrix<boost::multiprecision::number<boost::multiprecision::backends::mpfr_float_backend<71u, (boost::multiprecision::mpfr_allocation_type)0>, (boost::multiprecision::expression_template_option)0>, 9, 9, 0, 9, 9> >, Eigen::CwiseNullaryOp<Eigen::internal::scalar_identity_op<boost::multiprecision::number<boost::multiprecision::backends::mpfr_float_backend<71u, (boost::multiprecision::mpfr_allocation_type)0>, (boost::multiprecision::expression_template_option)0> >, Eigen::Matrix<boost::multiprecision::number<boost::multiprecision::backends::mpfr_float_backend<71u, (boost::multiprecision::mpfr_allocation_type)0>, (boost::multiprecision::expression_template_option)0>, 9, 9, 0, 9, 9> > > > (this=0x7fffffffc480, other=...)
at /usr/include/eigen3/Eigen/src/Core/PlainObjectBase.h:710
#16 0x000055555555ef35 in Eigen::Matrix<boost::multiprecision::number<boost::multiprecision::backends::mpfr_float_backend<71u, (boost::multiprecision::mpfr_allocation_type)0>, (boost::multiprecision::expression_template_option)0>, 9, 9, 0, 9, 9>::operator=<Eigen::Solve<Eigen::PartialPivLU<Eigen::Matrix<boost::multiprecision::number<boost::multiprecision::backends::mpfr_float_backend<71u, (boost::multiprecision::mpfr_allocation_type)0>, (boost::multiprecision::expression_template_option)0>, 9, 9, 0, 9, 9> >, Eigen::CwiseNullaryOp<Eigen::internal::scalar_identity_op<boost::multiprecision::number<boost::multiprecision::backends::mpfr_float_backend<71u, (boost::multiprecision::mpfr_allocation_type)0>, (boost::multiprecision::expression_template_option)0> >, Eigen::Matrix<boost::multiprecision::number<boost::multiprecision::backends::mpfr_float_backend<71u, (boost::multiprecision::mpfr_allocation_type)0>, (boost::multiprecision::expression_template_option)0>, 9, 9, 0, 9, 9> > > > (this=0x7fffffffc480, other=...)
at /usr/include/eigen3/Eigen/src/Core/Matrix.h:225
#17 0x000055555555db42 in Eigen::internal::Assignment<Eigen::Matrix<boost::multiprecision::number<boost::multiprecision::backends::mpfr_float_backend<71u, (boost::multiprecision::mpfr_allocation_type)0>, (boost::multiprecision::expression_template_option)0>, 9, 9, 0, 9, 9>, Eigen::Inverse<Eigen::PartialPivLU<Eigen::Matrix<boost::multiprecision::number<boost::multiprecision::backends::mpfr_float_backend<71u, (boost::multiprecision::mpfr_allocation_type)0>, (boost::multiprecision::expression_template_option)0>, 9, 9, 0, 9, 9> > >, Eigen::internal::assign_op<boost::multiprecision::number<boost::multiprecision::backends::mpfr_float_backend<71u, (boost::multiprecision::mpfr_allocation_type)0>, (boost::multiprecision::expression_template_option)0>, boost::multiprecision::number<boost::multiprecision::backends::mpfr_float_backend<71u, (boost::multiprecision::mpfr_allocation_type)0>, (boost::multiprecision::expression_template_option)0> >, Eigen::internal::Dense2Dense, void>::run (dst=..., src=...)
at /usr/include/eigen3/Eigen/src/LU/PartialPivLU.h:574
#18 0x000055555555cda8 in Eigen::internal::call_assignment_no_alias<Eigen::Matrix<boost::multiprecision::number<boost::multiprecision::backends::mpfr_float_backend<71u, (boost::multiprecision::mpfr_allocation_type)0>, (boost::multiprecision::expression_template_option)0>, 9, 9, 0, 9, 9>, Eigen::Inverse<Eigen::PartialPivLU<Eigen::Matrix<boost::multiprecision::number<boost::multiprecision::backends::mpfr_float_backend<71u, (boost::multiprecision::mpfr_allocation_type)0>, (boost::multiprecision::expression_template_option)0>, 9, 9, 0, 9, 9> > >, Eigen::internal::assign_op<boost::multiprecision::number<boost::multiprecision::backends::mpfr_float_backend<71u, (boost::multiprecision::mpfr_allocation_type)0>, (boost::multiprecision::expression_template_option)0>, boost::multiprecision::number<boost::multiprecision::backends::mpfr_float_backend<71u, (boost::multiprecision::mpfr_allocation_type)0>, (boost::multiprecision::expression_template_option)0> > > (dst=..., src=..., func=...)
at /usr/include/eigen3/Eigen/src/Core/AssignEvaluator.h:836
#19 0x000055555555c62a in Eigen::internal::call_assignment<Eigen::Matrix<boost::multiprecision::number<boost::multiprecision::backends::mpfr_float_backend<71u, (boost::multiprecision::mpfr_allocation_type)0>, (boost::multiprecision::expression_template_option)0>, 9, 9, 0, 9, 9>, Eigen::Inverse<Eigen::PartialPivLU<Eigen::Matrix<boost::multiprecision::number<boost::multiprecision::backends::mpfr_float_backend<71u, (boost::multiprecision::mpfr_allocation_type)0>, (boost::multiprecision::expression_template_option)0>, 9, 9, 0, 9, 9> > >, Eigen::internal::assign_op<boost::multiprecision::number<boost::multiprecision::backends::mpfr_float_backend<71u, (boost::multiprecision::mpfr_allocation_type)0>, (boost::multiprecision::expression_template_option)0>, boost::multiprecision::number<boost::multiprecision::backends::mpfr_float_backend<71u, (boost::multiprecision::mpfr_allocation_type)0>, (boost::multiprecision::expression_template_option)0> > >(Eigen::Matrix<boost::multiprecision::number<boost::multiprecision::backends::mpfr_float_backend<71u, (boost::multiprecision::mpfr_allocation_type)0>, (boost::multiprecision::expression_template_option)0>, 9, 9, 0, 9, 9>&, Eigen::Inverse<Eigen::PartialPivLU<Eigen::Matrix<boost::multiprecision::number<boost::multiprecision::backends::mpfr_float_backend<71u, (boost::multiprecision::mpfr_allocation_type)0>, (boost::multiprecision::expression_template_option)0>, 9, 9, 0, 9, 9> > > const&, Eigen::internal::assign_op<boost::multiprecision::number<boost::multiprecision::backends::mpfr_float_backend<71u, (boost::multiprecision::mpfr_allocation_type)0>, (boost::multiprecision::expression_template_option)0>, boost::multiprecision::number<boost::multiprecision::backends::mpfr_float_backend<71u, (boost::multiprecision::mpfr_allocation_type)0>, (boost::multiprecision::expression_template_option)0> > const&, Eigen::internal::enable_if<!Eigen::internal::evaluator_assume_aliasing<Eigen::Inverse<Eigen::PartialPivLU<Eigen::Matrix<boost::multiprecision::number<boost::multiprecision::backends::mpfr_float_backend<71u, (boost::multiprecision::mpfr_allocation_type)0>, (boost::multiprecision::expression_template_option)0>, 9, 9, 0, 9, 9> > >, Eigen::internal::evaluator_traits<Eigen::Inverse<Eigen::PartialPivLU<Eigen::Matrix<boost::multiprecision::number<boost::multiprecision::backends::mpfr_float_backend<71u, (boost::multiprecision::mpfr_allocation_type)0>, (boost::multiprecision::expression_template_option)0>, 9, 9, 0, 9, 9> > > >::Shape>::value, void*>::type) (dst=..., src=..., func=...)
at /usr/include/eigen3/Eigen/src/Core/AssignEvaluator.h:804
#20 0x000055555555c086 in Eigen::internal::call_assignment<Eigen::Matrix<boost::multiprecision::number<boost::multiprecision::backends::mpfr_float_backend<71u, (boost::multiprecision::mpfr_allocation_type)0>, (boost::multiprecision::expression_template_option)0>, 9, 9, 0, 9, 9>, Eigen::Inverse<Eigen::PartialPivLU<Eigen::Matrix<boost::multiprecision::number<boost::multiprecision::backends::mpfr_float_backend<71u, (boost::multiprecision::mpfr_allocation_type)0>, (boost::multiprecision::expression_template_option)0>, 9, 9, 0, 9, 9> > > > (dst=..., src=...)
at /usr/include/eigen3/Eigen/src/Core/AssignEvaluator.h:782
#21 0x000055555555bb35 in Eigen::PlainObjectBase<Eigen::Matrix<boost::multiprecision::number<boost::multiprecision::backends::mpfr_float_backend<71u, (boost::multiprecision::mpfr_allocation_type)0>, (boost::multiprecision::expression_template_option)0>, 9, 9, 0, 9, 9> >::_set<Eigen::Inverse<Eigen::PartialPivLU<Eigen::Matrix<boost::multiprecision::number<boost::multiprecision::backends::mpfr_float_backend<71u, (boost::multiprecision::mpfr_allocation_type)0>, (boost::multiprecision::expression_template_option)0>, 9, 9, 0, 9, 9> > > > (this=0x7fffffffc480, other=...)
at /usr/include/eigen3/Eigen/src/Core/PlainObjectBase.h:710
#22 0x000055555555b54d in Eigen::Matrix<boost::multiprecision::number<boost::multiprecision::backends::mpfr_float_backend<71u, (boost::multiprecision::mpfr_allocation_type)0>, (boost::multiprecision::expression_template_option)0>, 9, 9, 0, 9, 9>::operator=<Eigen::Inverse<Eigen::PartialPivLU<Eigen::Matrix<boost::multiprecision::number<boost::multiprecision::backends::mpfr_float_backend<71u, (boost::multiprecision::mpfr_allocation_type)0>, (boost::multiprecision::expression_template_option)0>, 9, 9, 0, 9, 9> > > > (this=0x7fffffffc480, other=...)
at /usr/include/eigen3/Eigen/src/Core/Matrix.h:225
#23 0x000055555555b055 in Eigen::internal::compute_inverse<Eigen::Matrix<boost::multiprecision::number<boost::multiprecision::backends::mpfr_float_backend<71u, (boost::multiprecision::mpfr_allocation_type)0>, (boost::multiprecision::expression_template_option)0>, 9, 9, 0, 9, 9>, Eigen::Matrix<boost::multiprecision::number<boost::multiprecision::backends::mpfr_float_backend<71u, (boost::multiprecision::mpfr_allocation_type)0>, (boost::multiprecision::expression_template_option)0>, 9, 9, 0, 9, 9>, 9>::run (matrix=..., result=...)
at /usr/include/eigen3/Eigen/src/LU/InverseImpl.h:28
#24 0x000055555555ac92 in Eigen::internal::Assignment<Eigen::Matrix<boost::multiprecision::number<boost::multiprecision::backends::mpfr_float_backend<71u, (boost::multiprecision::mpfr_allocation_type)0>, (boost::multiprecision::expression_template_option)0>, 9, 9, 0, 9, 9>, Eigen::Inverse<Eigen::Matrix<boost::multiprecision::number<boost::multiprecision::backends::mpfr_float_backend<71u, (boost::multiprecision::mpfr_allocation_type)0>, (boost::multiprecision::expression_template_option)0>, 9, 9, 0, 9, 9> >, Eigen::internal::assign_op<boost::multiprecision::number<boost::multiprecision::backends::mpfr_float_backend<71u, (boost::multiprecision::mpfr_allocation_type)0>, (boost::multiprecision::expression_template_option)0>, boost::multiprecision::number<boost::multiprecision::backends::mpfr_float_backend<71u, (boost::multiprecision::mpfr_allocation_type)0>, (boost::multiprecision::expression_template_option)0> >, Eigen::internal::Dense2Dense, void>::run (dst=..., src=...)
at /usr/include/eigen3/Eigen/src/LU/InverseImpl.h:310
#25 0x0000555555559d99 in Eigen::internal::call_assignment_no_alias<Eigen::Matrix<boost::multiprecision::number<boost::multiprecision::backends::mpfr_float_backend<71u, (boost::multiprecision::mpfr_allocation_type)0>, (boost::multiprecision::expression_template_option)0>, 9, 9, 0, 9, 9>, Eigen::Inverse<Eigen::Matrix<boost::multiprecision::number<boost::multiprecision::backends::mpfr_float_backend<71u, (boost::multiprecision::mpfr_allocation_type)0>, (boost::multiprecision::expression_template_option)0>, 9, 9, 0, 9, 9> >, Eigen::internal::assign_op<boost::multiprecision::number<boost::multiprecision::backends::mpfr_float_backend<71u, (boost::multiprecision::mpfr_allocation_type)0>, (boost::multiprecision::expression_template_option)0>, boost::multiprecision::number<boost::multiprecision::backends::mpfr_float_backend<71u, (boost::multiprecision::mpfr_allocation_type)0>, (boost::multiprecision::expression_template_option)0> > > (dst=..., src=..., func=...)
at /usr/include/eigen3/Eigen/src/Core/AssignEvaluator.h:836
#26 0x00005555555599ba in Eigen::PlainObjectBase<Eigen::Matrix<boost::multiprecision::number<boost::multiprecision::backends::mpfr_float_backend<71u, (boost::multiprecision::mpfr_allocation_type)0>, (boost::multiprecision::expression_template_option)0>, 9, 9, 0, 9, 9> >::_set_noalias<Eigen::Inverse<Eigen::Matrix<boost::multiprecision::number<boost::multiprecision::backends::mpfr_float_backend<71u, (boost::multiprecision::mpfr_allocation_type)0>, (boost::multiprecision::expression_template_option)0>, 9, 9, 0, 9, 9> > > (this=0x7fffffffc480, other=...)
at /usr/include/eigen3/Eigen/src/Core/PlainObjectBase.h:728
#27 0x00005555555593ac in Eigen::PlainObjectBase<Eigen::Matrix<boost::multiprecision::number<boost::multiprecision::backends::mpfr_float_backend<71u, (boost::multiprecision::mpfr_allocation_type)0>, (boost::multiprecision::expression_template_option)0>, 9, 9, 0, 9, 9> >::PlainObjectBase<Eigen::Inverse<Eigen::Matrix<boost::multiprecision::number<boost::multiprecision::backends::mpfr_float_backend<71u, (boost::multiprecision::mpfr_allocation_type)0>, (boost::multiprecision::expression_template_option)0>, 9, 9, 0, 9, 9> > > (this=0x7fffffffc480, other=...)
at /usr/include/eigen3/Eigen/src/Core/PlainObjectBase.h:537
#28 0x0000555555558a4a in Eigen::Matrix<boost::multiprecision::number<boost::multiprecision::backends::mpfr_float_backend<71u, (boost::multiprecision::mpfr_allocation_type)0>, (boost::multiprecision::expression_template_option)0>, 9, 9, 0, 9, 9>::Matrix<Eigen::Inverse<Eigen::Matrix<boost::multiprecision::number<boost::multiprecision::backends::mpfr_float_backend<71u, (boost::multiprecision::mpfr_allocation_type)0>, (boost::multiprecision::expression_template_option)0>, 9, 9, 0, 9, 9> > > (this=0x7fffffffc480, other=...)
at /usr/include/eigen3/Eigen/src/Core/Matrix.h:379
#29 0x0000555555556f16 in main (argc=1, argv=0x7fffffffd9c8)
at mat_test.cpp:27