← Back to team overview

dolfin team mailing list archive

Memory access error in DenseMatrix::invert()

 

When adding the option to compile without PETSc, I took the
opportunity change the precomputation of quadrature weights for the
ODE solvers to use DenseMatrix instead of the standard PETSc
Matrix. (The matrices are small and dense anyway.)

It seems that DenseMatrix::invert() sometimes gives unexpected results
and the reason seems to be a memory access error somewhere in ublas. I
don't know if this is a problem with ublas or the way we use
it. Garth, could you look again at DenseMatrix::invert() and see if
you can spot something obvious?

I have attached the error log from running valgrind and here is the code that
reproduces the error:

   DenseMatrix A(3, 3);
   A(0, 0) = A(1, 1) = A(2, 2) = 1.0;
   A.invert();

How about adding solve(DenseVector& x, const DenseVector& b) to DenseMatrix?

/Anders
==24946== Memcheck, a memory error detector.
==24946== Copyright (C) 2002-2005, and GNU GPL'd, by Julian Seward et al.
==24946== Using LibVEX rev 1471, a library for dynamic binary translation.
==24946== Copyright (C) 2004-2005, and GNU GPL'd, by OpenWorks LLP.
==24946== Using valgrind-3.1.0-Debian, a dynamic binary instrumentation framework.
==24946== Copyright (C) 2000-2005, and GNU GPL'd, by Julian Seward et al.
==24946== For more details, rerun with: -v
==24946== 
Initializing DOLFIN parameter system.
==24946== Conditional jump or move depends on uninitialised value(s)
==24946==    at 0x40847C6: boost::numeric::ublas::vector_scalar_unary_traits<boost::numeric::ublas::vector_range<boost::numeric::ublas::matrix_column<dolfin::DenseMatrix> >, boost::numeric::ublas::vector_index_norm_inf<boost::numeric::ublas::vector_range<boost::numeric::ublas::matrix_column<dolfin::DenseMatrix> >::value_type> >::result_type boost::numeric::ublas::index_norm_inf<boost::numeric::ublas::vector_range<boost::numeric::ublas::matrix_column<dolfin::DenseMatrix> > >(boost::numeric::ublas::vector_expression<boost::numeric::ublas::vector_range<boost::numeric::ublas::matrix_column<dolfin::DenseMatrix> > > const&) (functional.hpp:610)
==24946==    by 0x4085EF7: _ZN5boost7numeric5ublas12lu_factorizeIN6dolfin11DenseMatrixENS1_18permutation_matrixIjNS1_15unbounded_arrayIjSaIjEEEEEEENT_9size_typeERSA_RT0_ (lu.hpp:137)
==24946==    by 0x4079B3E: dolfin::DenseMatrix::invert() (DenseMatrix.cpp:90)
==24946==    by 0x804932D: main (main.cpp:9)
==24946== 
==24946== Conditional jump or move depends on uninitialised value(s)
==24946==    at 0x4085F5F: _ZN5boost7numeric5ublas12lu_factorizeIN6dolfin11DenseMatrixENS1_18permutation_matrixIjNS1_15unbounded_arrayIjSaIjEEEEEEENT_9size_typeERSA_RT0_ (lu.hpp:139)
==24946==    by 0x4079B3E: dolfin::DenseMatrix::invert() (DenseMatrix.cpp:90)
==24946==    by 0x804932D: main (main.cpp:9)
==24946== 
==24946== Conditional jump or move depends on uninitialised value(s)
==24946==    at 0x4085F61: _ZN5boost7numeric5ublas12lu_factorizeIN6dolfin11DenseMatrixENS1_18permutation_matrixIjNS1_15unbounded_arrayIjSaIjEEEEEEENT_9size_typeERSA_RT0_ (lu.hpp:139)
==24946==    by 0x4079B3E: dolfin::DenseMatrix::invert() (DenseMatrix.cpp:90)
==24946==    by 0x804932D: main (main.cpp:9)
==24946== 
==24946== Conditional jump or move depends on uninitialised value(s)
==24946==    at 0x4082E51: bool boost::numeric::ublas::detail::equals<boost::numeric::ublas::matrix_matrix_binary<boost::numeric::ublas::triangular_adaptor<dolfin::DenseMatrix, boost::numeric::ublas::basic_unit_lower<unsigned> >, boost::numeric::ublas::triangular_adaptor<dolfin::DenseMatrix, boost::numeric::ublas::basic_upper<unsigned> >, boost::numeric::ublas::matrix_matrix_prod<double, double, double> >, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > >, double>(boost::numeric::ublas::matrix_expression<boost::numeric::ublas::matrix_matrix_binary<boost::numeric::ublas::triangular_adaptor<dolfin::DenseMatrix, boost::numeric::ublas::basic_unit_lower<unsigned> >, boost::numeric::ublas::triangular_adaptor<dolfin::DenseMatrix, boost::numeric::ublas::basic_upper<unsigned> >, boost::numeric::ublas::matrix_matrix_prod<double, double, double> > > const&, boost::numeric::ublas::matrix_expression<boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > > const&, double, double) (functional.hpp:1366)
==24946==    by 0x408316F: bool boost::numeric::ublas::detail::expression_type_check<boost::numeric::ublas::matrix_matrix_binary<boost::numeric::ublas::triangular_adaptor<dolfin::DenseMatrix, boost::numeric::ublas::basic_unit_lower<unsigned> >, boost::numeric::ublas::triangular_adaptor<dolfin::DenseMatrix, boost::numeric::ublas::basic_upper<unsigned> >, boost::numeric::ublas::matrix_matrix_prod<double, double, double> >, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > >(boost::numeric::ublas::matrix_expression<boost::numeric::ublas::matrix_matrix_binary<boost::numeric::ublas::triangular_adaptor<dolfin::DenseMatrix, boost::numeric::ublas::basic_unit_lower<unsigned> >, boost::numeric::ublas::triangular_adaptor<dolfin::DenseMatrix, boost::numeric::ublas::basic_upper<unsigned> >, boost::numeric::ublas::matrix_matrix_prod<double, double, double> > > const&, boost::numeric::ublas::matrix_expression<boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > > const&) (matrix_assign.hpp:45)
==24946==    by 0x40863F8: _ZN5boost7numeric5ublas12lu_factorizeIN6dolfin11DenseMatrixENS1_18permutation_matrixIjNS1_15unbounded_arrayIjSaIjEEEEEEENT_9size_typeERSA_RT0_ (lu.hpp:156)
==24946==    by 0x4079B3E: dolfin::DenseMatrix::invert() (DenseMatrix.cpp:90)
==24946==    by 0x804932D: main (main.cpp:9)
==24946== 
==24946== Conditional jump or move depends on uninitialised value(s)
==24946==    at 0x4082A4A: bool boost::numeric::ublas::detail::equals<boost::numeric::ublas::matrix_matrix_binary<boost::numeric::ublas::triangular_adaptor<dolfin::DenseMatrix, boost::numeric::ublas::basic_unit_lower<unsigned> >, boost::numeric::ublas::triangular_adaptor<dolfin::DenseMatrix, boost::numeric::ublas::basic_upper<unsigned> >, boost::numeric::ublas::matrix_matrix_prod<double, double, double> >, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > >, double>(boost::numeric::ublas::matrix_expression<boost::numeric::ublas::matrix_matrix_binary<boost::numeric::ublas::triangular_adaptor<dolfin::DenseMatrix, boost::numeric::ublas::basic_unit_lower<unsigned> >, boost::numeric::ublas::triangular_adaptor<dolfin::DenseMatrix, boost::numeric::ublas::basic_upper<unsigned> >, boost::numeric::ublas::matrix_matrix_prod<double, double, double> > > const&, boost::numeric::ublas::matrix_expression<boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > > const&, double, double) (functional.hpp:1366)
==24946==    by 0x408316F: bool boost::numeric::ublas::detail::expression_type_check<boost::numeric::ublas::matrix_matrix_binary<boost::numeric::ublas::triangular_adaptor<dolfin::DenseMatrix, boost::numeric::ublas::basic_unit_lower<unsigned> >, boost::numeric::ublas::triangular_adaptor<dolfin::DenseMatrix, boost::numeric::ublas::basic_upper<unsigned> >, boost::numeric::ublas::matrix_matrix_prod<double, double, double> >, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > >(boost::numeric::ublas::matrix_expression<boost::numeric::ublas::matrix_matrix_binary<boost::numeric::ublas::triangular_adaptor<dolfin::DenseMatrix, boost::numeric::ublas::basic_unit_lower<unsigned> >, boost::numeric::ublas::triangular_adaptor<dolfin::DenseMatrix, boost::numeric::ublas::basic_upper<unsigned> >, boost::numeric::ublas::matrix_matrix_prod<double, double, double> > > const&, boost::numeric::ublas::matrix_expression<boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > > const&) (matrix_assign.hpp:45)
==24946==    by 0x40863F8: _ZN5boost7numeric5ublas12lu_factorizeIN6dolfin11DenseMatrixENS1_18permutation_matrixIjNS1_15unbounded_arrayIjSaIjEEEEEEENT_9size_typeERSA_RT0_ (lu.hpp:156)
==24946==    by 0x4079B3E: dolfin::DenseMatrix::invert() (DenseMatrix.cpp:90)
==24946==    by 0x804932D: main (main.cpp:9)
==24946== 
==24946== Conditional jump or move depends on uninitialised value(s)
==24946==    at 0x4082C9A: bool boost::numeric::ublas::detail::equals<boost::numeric::ublas::matrix_matrix_binary<boost::numeric::ublas::triangular_adaptor<dolfin::DenseMatrix, boost::numeric::ublas::basic_unit_lower<unsigned> >, boost::numeric::ublas::triangular_adaptor<dolfin::DenseMatrix, boost::numeric::ublas::basic_upper<unsigned> >, boost::numeric::ublas::matrix_matrix_prod<double, double, double> >, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > >, double>(boost::numeric::ublas::matrix_expression<boost::numeric::ublas::matrix_matrix_binary<boost::numeric::ublas::triangular_adaptor<dolfin::DenseMatrix, boost::numeric::ublas::basic_unit_lower<unsigned> >, boost::numeric::ublas::triangular_adaptor<dolfin::DenseMatrix, boost::numeric::ublas::basic_upper<unsigned> >, boost::numeric::ublas::matrix_matrix_prod<double, double, double> > > const&, boost::numeric::ublas::matrix_expression<boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > > const&, double, double) (functional.hpp:1366)
==24946==    by 0x408316F: bool boost::numeric::ublas::detail::expression_type_check<boost::numeric::ublas::matrix_matrix_binary<boost::numeric::ublas::triangular_adaptor<dolfin::DenseMatrix, boost::numeric::ublas::basic_unit_lower<unsigned> >, boost::numeric::ublas::triangular_adaptor<dolfin::DenseMatrix, boost::numeric::ublas::basic_upper<unsigned> >, boost::numeric::ublas::matrix_matrix_prod<double, double, double> >, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > >(boost::numeric::ublas::matrix_expression<boost::numeric::ublas::matrix_matrix_binary<boost::numeric::ublas::triangular_adaptor<dolfin::DenseMatrix, boost::numeric::ublas::basic_unit_lower<unsigned> >, boost::numeric::ublas::triangular_adaptor<dolfin::DenseMatrix, boost::numeric::ublas::basic_upper<unsigned> >, boost::numeric::ublas::matrix_matrix_prod<double, double, double> > > const&, boost::numeric::ublas::matrix_expression<boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > > const&) (matrix_assign.hpp:45)
==24946==    by 0x40863F8: _ZN5boost7numeric5ublas12lu_factorizeIN6dolfin11DenseMatrixENS1_18permutation_matrixIjNS1_15unbounded_arrayIjSaIjEEEEEEENT_9size_typeERSA_RT0_ (lu.hpp:156)
==24946==    by 0x4079B3E: dolfin::DenseMatrix::invert() (DenseMatrix.cpp:90)
==24946==    by 0x804932D: main (main.cpp:9)
==24946== 
==24946== Conditional jump or move depends on uninitialised value(s)
==24946==    at 0x4082C24: bool boost::numeric::ublas::detail::equals<boost::numeric::ublas::matrix_matrix_binary<boost::numeric::ublas::triangular_adaptor<dolfin::DenseMatrix, boost::numeric::ublas::basic_unit_lower<unsigned> >, boost::numeric::ublas::triangular_adaptor<dolfin::DenseMatrix, boost::numeric::ublas::basic_upper<unsigned> >, boost::numeric::ublas::matrix_matrix_prod<double, double, double> >, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > >, double>(boost::numeric::ublas::matrix_expression<boost::numeric::ublas::matrix_matrix_binary<boost::numeric::ublas::triangular_adaptor<dolfin::DenseMatrix, boost::numeric::ublas::basic_unit_lower<unsigned> >, boost::numeric::ublas::triangular_adaptor<dolfin::DenseMatrix, boost::numeric::ublas::basic_upper<unsigned> >, boost::numeric::ublas::matrix_matrix_prod<double, double, double> > > const&, boost::numeric::ublas::matrix_expression<boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > > const&, double, double) (stl_algobase.h:211)
==24946==    by 0x408316F: bool boost::numeric::ublas::detail::expression_type_check<boost::numeric::ublas::matrix_matrix_binary<boost::numeric::ublas::triangular_adaptor<dolfin::DenseMatrix, boost::numeric::ublas::basic_unit_lower<unsigned> >, boost::numeric::ublas::triangular_adaptor<dolfin::DenseMatrix, boost::numeric::ublas::basic_upper<unsigned> >, boost::numeric::ublas::matrix_matrix_prod<double, double, double> >, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > >(boost::numeric::ublas::matrix_expression<boost::numeric::ublas::matrix_matrix_binary<boost::numeric::ublas::triangular_adaptor<dolfin::DenseMatrix, boost::numeric::ublas::basic_unit_lower<unsigned> >, boost::numeric::ublas::triangular_adaptor<dolfin::DenseMatrix, boost::numeric::ublas::basic_upper<unsigned> >, boost::numeric::ublas::matrix_matrix_prod<double, double, double> > > const&, boost::numeric::ublas::matrix_expression<boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > > const&) (matrix_assign.hpp:45)
==24946==    by 0x40863F8: _ZN5boost7numeric5ublas12lu_factorizeIN6dolfin11DenseMatrixENS1_18permutation_matrixIjNS1_15unbounded_arrayIjSaIjEEEEEEENT_9size_typeERSA_RT0_ (lu.hpp:156)
==24946==    by 0x4079B3E: dolfin::DenseMatrix::invert() (DenseMatrix.cpp:90)
==24946==    by 0x804932D: main (main.cpp:9)
==24946== 
==24946== Conditional jump or move depends on uninitialised value(s)
==24946==    at 0x4082C36: bool boost::numeric::ublas::detail::equals<boost::numeric::ublas::matrix_matrix_binary<boost::numeric::ublas::triangular_adaptor<dolfin::DenseMatrix, boost::numeric::ublas::basic_unit_lower<unsigned> >, boost::numeric::ublas::triangular_adaptor<dolfin::DenseMatrix, boost::numeric::ublas::basic_upper<unsigned> >, boost::numeric::ublas::matrix_matrix_prod<double, double, double> >, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > >, double>(boost::numeric::ublas::matrix_expression<boost::numeric::ublas::matrix_matrix_binary<boost::numeric::ublas::triangular_adaptor<dolfin::DenseMatrix, boost::numeric::ublas::basic_unit_lower<unsigned> >, boost::numeric::ublas::triangular_adaptor<dolfin::DenseMatrix, boost::numeric::ublas::basic_upper<unsigned> >, boost::numeric::ublas::matrix_matrix_prod<double, double, double> > > const&, boost::numeric::ublas::matrix_expression<boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > > const&, double, double) (stl_algobase.h:211)
==24946==    by 0x408316F: bool boost::numeric::ublas::detail::expression_type_check<boost::numeric::ublas::matrix_matrix_binary<boost::numeric::ublas::triangular_adaptor<dolfin::DenseMatrix, boost::numeric::ublas::basic_unit_lower<unsigned> >, boost::numeric::ublas::triangular_adaptor<dolfin::DenseMatrix, boost::numeric::ublas::basic_upper<unsigned> >, boost::numeric::ublas::matrix_matrix_prod<double, double, double> >, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > >(boost::numeric::ublas::matrix_expression<boost::numeric::ublas::matrix_matrix_binary<boost::numeric::ublas::triangular_adaptor<dolfin::DenseMatrix, boost::numeric::ublas::basic_unit_lower<unsigned> >, boost::numeric::ublas::triangular_adaptor<dolfin::DenseMatrix, boost::numeric::ublas::basic_upper<unsigned> >, boost::numeric::ublas::matrix_matrix_prod<double, double, double> > > const&, boost::numeric::ublas::matrix_expression<boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > > const&) (matrix_assign.hpp:45)
==24946==    by 0x40863F8: _ZN5boost7numeric5ublas12lu_factorizeIN6dolfin11DenseMatrixENS1_18permutation_matrixIjNS1_15unbounded_arrayIjSaIjEEEEEEENT_9size_typeERSA_RT0_ (lu.hpp:156)
==24946==    by 0x4079B3E: dolfin::DenseMatrix::invert() (DenseMatrix.cpp:90)
==24946==    by 0x804932D: main (main.cpp:9)
==24946== 
==24946== Conditional jump or move depends on uninitialised value(s)
==24946==    at 0x40863FB: _ZN5boost7numeric5ublas12lu_factorizeIN6dolfin11DenseMatrixENS1_18permutation_matrixIjNS1_15unbounded_arrayIjSaIjEEEEEEENT_9size_typeERSA_RT0_ (lu.hpp:156)
==24946==    by 0x4079B3E: dolfin::DenseMatrix::invert() (DenseMatrix.cpp:90)
==24946==    by 0x804932D: main (main.cpp:9)
==24946== 
==24946== Conditional jump or move depends on uninitialised value(s)
==24946==    at 0x407FC06: void boost::numeric::ublas::inplace_solve<boost::numeric::ublas::triangular_adaptor<boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > const, boost::numeric::ublas::basic_unit_lower<unsigned> >, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > >(boost::numeric::ublas::matrix_expression<boost::numeric::ublas::triangular_adaptor<boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > const, boost::numeric::ublas::basic_unit_lower<unsigned> > > const&, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > ><boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > >&, boost::numeric::ublas::lower_tag, boost::numeric::ublas::dense_proxy_tag) (triangular.hpp:2305)
==24946==    by 0x407FF83: void boost::numeric::ublas::inplace_solve<boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > >, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > >(boost::numeric::ublas::matrix_expression<boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > > const&, boost::numeric::ublas::matrix_expression<boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > >&, boost::numeric::ublas::unit_lower_tag) (triangular.hpp:2389)
==24946==    by 0x4083FD3: void boost::numeric::ublas::lu_substitute<dolfin::DenseMatrix, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > >(dolfin::DenseMatrix const&, boost::numeric::ublas::matrix_expression<boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > >&) (lu.hpp:282)
==24946==    by 0x4084745: void boost::numeric::ublas::lu_substitute<dolfin::DenseMatrix, unsigned, boost::numeric::ublas::unbounded_array<unsigned, std::allocator<unsigned> >, dolfin::DenseMatrix>(dolfin::DenseMatrix const&, boost::numeric::ublas::permutation_matrix<unsigned, boost::numeric::ublas::unbounded_array<unsigned, std::allocator<unsigned> > > const&, dolfin::DenseMatrix&) (lu.hpp:295)
==24946==    by 0x4079B54: dolfin::DenseMatrix::invert() (DenseMatrix.cpp:93)
==24946==    by 0x804932D: main (main.cpp:9)
==24946== 
==24946== Conditional jump or move depends on uninitialised value(s)
==24946==    at 0x407FC08: void boost::numeric::ublas::inplace_solve<boost::numeric::ublas::triangular_adaptor<boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > const, boost::numeric::ublas::basic_unit_lower<unsigned> >, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > >(boost::numeric::ublas::matrix_expression<boost::numeric::ublas::triangular_adaptor<boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > const, boost::numeric::ublas::basic_unit_lower<unsigned> > > const&, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > ><boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > >&, boost::numeric::ublas::lower_tag, boost::numeric::ublas::dense_proxy_tag) (triangular.hpp:2305)
==24946==    by 0x407FF83: void boost::numeric::ublas::inplace_solve<boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > >, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > >(boost::numeric::ublas::matrix_expression<boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > > const&, boost::numeric::ublas::matrix_expression<boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > >&, boost::numeric::ublas::unit_lower_tag) (triangular.hpp:2389)
==24946==    by 0x4083FD3: void boost::numeric::ublas::lu_substitute<dolfin::DenseMatrix, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > >(dolfin::DenseMatrix const&, boost::numeric::ublas::matrix_expression<boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > >&) (lu.hpp:282)
==24946==    by 0x4084745: void boost::numeric::ublas::lu_substitute<dolfin::DenseMatrix, unsigned, boost::numeric::ublas::unbounded_array<unsigned, std::allocator<unsigned> >, dolfin::DenseMatrix>(dolfin::DenseMatrix const&, boost::numeric::ublas::permutation_matrix<unsigned, boost::numeric::ublas::unbounded_array<unsigned, std::allocator<unsigned> > > const&, dolfin::DenseMatrix&) (lu.hpp:295)
==24946==    by 0x4079B54: dolfin::DenseMatrix::invert() (DenseMatrix.cpp:93)
==24946==    by 0x804932D: main (main.cpp:9)
==24946== 
==24946== Conditional jump or move depends on uninitialised value(s)
==24946==    at 0x4080BDC: bool boost::numeric::ublas::detail::equals<boost::numeric::ublas::matrix_matrix_binary<boost::numeric::ublas::triangular_adaptor<dolfin::DenseMatrix const, boost::numeric::ublas::basic_unit_lower<unsigned> >, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > >, boost::numeric::ublas::matrix_matrix_prod<double, double, double> >, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > >, double>(boost::numeric::ublas::matrix_expression<boost::numeric::ublas::matrix_matrix_binary<boost::numeric::ublas::triangular_adaptor<dolfin::DenseMatrix const, boost::numeric::ublas::basic_unit_lower<unsigned> >, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > >, boost::numeric::ublas::matrix_matrix_prod<double, double, double> > > const&, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > ><boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > > const&, double, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > ><boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > > const&) (functional.hpp:1366)
==24946==    by 0x408101D: bool boost::numeric::ublas::detail::expression_type_check<boost::numeric::ublas::matrix_matrix_binary<boost::numeric::ublas::triangular_adaptor<dolfin::DenseMatrix const, boost::numeric::ublas::basic_unit_lower<unsigned> >, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > >, boost::numeric::ublas::matrix_matrix_prod<double, double, double> >, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > >(boost::numeric::ublas::matrix_expression<boost::numeric::ublas::matrix_matrix_binary<boost::numeric::ublas::triangular_adaptor<dolfin::DenseMatrix const, boost::numeric::ublas::basic_unit_lower<unsigned> >, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > >, boost::numeric::ublas::matrix_matrix_prod<double, double, double> > > const&, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > ><boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > > const&) (matrix_assign.hpp:45)
==24946==    by 0x4084004: void boost::numeric::ublas::lu_substitute<dolfin::DenseMatrix, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > >(dolfin::DenseMatrix const&, boost::numeric::ublas::matrix_expression<boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > >&) (lu.hpp:284)
==24946==    by 0x4084745: void boost::numeric::ublas::lu_substitute<dolfin::DenseMatrix, unsigned, boost::numeric::ublas::unbounded_array<unsigned, std::allocator<unsigned> >, dolfin::DenseMatrix>(dolfin::DenseMatrix const&, boost::numeric::ublas::permutation_matrix<unsigned, boost::numeric::ublas::unbounded_array<unsigned, std::allocator<unsigned> > > const&, dolfin::DenseMatrix&) (lu.hpp:295)
==24946==    by 0x4079B54: dolfin::DenseMatrix::invert() (DenseMatrix.cpp:93)
==24946==    by 0x804932D: main (main.cpp:9)
==24946== 
==24946== Conditional jump or move depends on uninitialised value(s)
==24946==    at 0x4080930: bool boost::numeric::ublas::detail::equals<boost::numeric::ublas::matrix_matrix_binary<boost::numeric::ublas::triangular_adaptor<dolfin::DenseMatrix const, boost::numeric::ublas::basic_unit_lower<unsigned> >, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > >, boost::numeric::ublas::matrix_matrix_prod<double, double, double> >, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > >, double>(boost::numeric::ublas::matrix_expression<boost::numeric::ublas::matrix_matrix_binary<boost::numeric::ublas::triangular_adaptor<dolfin::DenseMatrix const, boost::numeric::ublas::basic_unit_lower<unsigned> >, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > >, boost::numeric::ublas::matrix_matrix_prod<double, double, double> > > const&, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > ><boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > > const&, double, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > ><boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > > const&) (functional.hpp:1366)
==24946==    by 0x408101D: bool boost::numeric::ublas::detail::expression_type_check<boost::numeric::ublas::matrix_matrix_binary<boost::numeric::ublas::triangular_adaptor<dolfin::DenseMatrix const, boost::numeric::ublas::basic_unit_lower<unsigned> >, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > >, boost::numeric::ublas::matrix_matrix_prod<double, double, double> >, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > >(boost::numeric::ublas::matrix_expression<boost::numeric::ublas::matrix_matrix_binary<boost::numeric::ublas::triangular_adaptor<dolfin::DenseMatrix const, boost::numeric::ublas::basic_unit_lower<unsigned> >, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > >, boost::numeric::ublas::matrix_matrix_prod<double, double, double> > > const&, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > ><boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > > const&) (matrix_assign.hpp:45)
==24946==    by 0x4084004: void boost::numeric::ublas::lu_substitute<dolfin::DenseMatrix, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > >(dolfin::DenseMatrix const&, boost::numeric::ublas::matrix_expression<boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > >&) (lu.hpp:284)
==24946==    by 0x4084745: void boost::numeric::ublas::lu_substitute<dolfin::DenseMatrix, unsigned, boost::numeric::ublas::unbounded_array<unsigned, std::allocator<unsigned> >, dolfin::DenseMatrix>(dolfin::DenseMatrix const&, boost::numeric::ublas::permutation_matrix<unsigned, boost::numeric::ublas::unbounded_array<unsigned, std::allocator<unsigned> > > const&, dolfin::DenseMatrix&) (lu.hpp:295)
==24946==    by 0x4079B54: dolfin::DenseMatrix::invert() (DenseMatrix.cpp:93)
==24946==    by 0x804932D: main (main.cpp:9)
==24946== 
==24946== Conditional jump or move depends on uninitialised value(s)
==24946==    at 0x40808BA: bool boost::numeric::ublas::detail::equals<boost::numeric::ublas::matrix_matrix_binary<boost::numeric::ublas::triangular_adaptor<dolfin::DenseMatrix const, boost::numeric::ublas::basic_unit_lower<unsigned> >, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > >, boost::numeric::ublas::matrix_matrix_prod<double, double, double> >, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > >, double>(boost::numeric::ublas::matrix_expression<boost::numeric::ublas::matrix_matrix_binary<boost::numeric::ublas::triangular_adaptor<dolfin::DenseMatrix const, boost::numeric::ublas::basic_unit_lower<unsigned> >, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > >, boost::numeric::ublas::matrix_matrix_prod<double, double, double> > > const&, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > ><boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > > const&, double, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > ><boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > > const&) (stl_algobase.h:211)
==24946==    by 0x408101D: bool boost::numeric::ublas::detail::expression_type_check<boost::numeric::ublas::matrix_matrix_binary<boost::numeric::ublas::triangular_adaptor<dolfin::DenseMatrix const, boost::numeric::ublas::basic_unit_lower<unsigned> >, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > >, boost::numeric::ublas::matrix_matrix_prod<double, double, double> >, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > >(boost::numeric::ublas::matrix_expression<boost::numeric::ublas::matrix_matrix_binary<boost::numeric::ublas::triangular_adaptor<dolfin::DenseMatrix const, boost::numeric::ublas::basic_unit_lower<unsigned> >, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > >, boost::numeric::ublas::matrix_matrix_prod<double, double, double> > > const&, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > ><boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > > const&) (matrix_assign.hpp:45)
==24946==    by 0x4084004: void boost::numeric::ublas::lu_substitute<dolfin::DenseMatrix, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > >(dolfin::DenseMatrix const&, boost::numeric::ublas::matrix_expression<boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > >&) (lu.hpp:284)
==24946==    by 0x4084745: void boost::numeric::ublas::lu_substitute<dolfin::DenseMatrix, unsigned, boost::numeric::ublas::unbounded_array<unsigned, std::allocator<unsigned> >, dolfin::DenseMatrix>(dolfin::DenseMatrix const&, boost::numeric::ublas::permutation_matrix<unsigned, boost::numeric::ublas::unbounded_array<unsigned, std::allocator<unsigned> > > const&, dolfin::DenseMatrix&) (lu.hpp:295)
==24946==    by 0x4079B54: dolfin::DenseMatrix::invert() (DenseMatrix.cpp:93)
==24946==    by 0x804932D: main (main.cpp:9)
==24946== 
==24946== Conditional jump or move depends on uninitialised value(s)
==24946==    at 0x40808CC: bool boost::numeric::ublas::detail::equals<boost::numeric::ublas::matrix_matrix_binary<boost::numeric::ublas::triangular_adaptor<dolfin::DenseMatrix const, boost::numeric::ublas::basic_unit_lower<unsigned> >, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > >, boost::numeric::ublas::matrix_matrix_prod<double, double, double> >, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > >, double>(boost::numeric::ublas::matrix_expression<boost::numeric::ublas::matrix_matrix_binary<boost::numeric::ublas::triangular_adaptor<dolfin::DenseMatrix const, boost::numeric::ublas::basic_unit_lower<unsigned> >, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > >, boost::numeric::ublas::matrix_matrix_prod<double, double, double> > > const&, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > ><boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > > const&, double, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > ><boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > > const&) (stl_algobase.h:211)
==24946==    by 0x408101D: bool boost::numeric::ublas::detail::expression_type_check<boost::numeric::ublas::matrix_matrix_binary<boost::numeric::ublas::triangular_adaptor<dolfin::DenseMatrix const, boost::numeric::ublas::basic_unit_lower<unsigned> >, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > >, boost::numeric::ublas::matrix_matrix_prod<double, double, double> >, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > >(boost::numeric::ublas::matrix_expression<boost::numeric::ublas::matrix_matrix_binary<boost::numeric::ublas::triangular_adaptor<dolfin::DenseMatrix const, boost::numeric::ublas::basic_unit_lower<unsigned> >, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > >, boost::numeric::ublas::matrix_matrix_prod<double, double, double> > > const&, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > ><boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > > const&) (matrix_assign.hpp:45)
==24946==    by 0x4084004: void boost::numeric::ublas::lu_substitute<dolfin::DenseMatrix, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > >(dolfin::DenseMatrix const&, boost::numeric::ublas::matrix_expression<boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > >&) (lu.hpp:284)
==24946==    by 0x4084745: void boost::numeric::ublas::lu_substitute<dolfin::DenseMatrix, unsigned, boost::numeric::ublas::unbounded_array<unsigned, std::allocator<unsigned> >, dolfin::DenseMatrix>(dolfin::DenseMatrix const&, boost::numeric::ublas::permutation_matrix<unsigned, boost::numeric::ublas::unbounded_array<unsigned, std::allocator<unsigned> > > const&, dolfin::DenseMatrix&) (lu.hpp:295)
==24946==    by 0x4079B54: dolfin::DenseMatrix::invert() (DenseMatrix.cpp:93)
==24946==    by 0x804932D: main (main.cpp:9)
==24946== 
==24946== Conditional jump or move depends on uninitialised value(s)
==24946==    at 0x4084007: void boost::numeric::ublas::lu_substitute<dolfin::DenseMatrix, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > >(dolfin::DenseMatrix const&, boost::numeric::ublas::matrix_expression<boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > >&) (lu.hpp:284)
==24946==    by 0x4084745: void boost::numeric::ublas::lu_substitute<dolfin::DenseMatrix, unsigned, boost::numeric::ublas::unbounded_array<unsigned, std::allocator<unsigned> >, dolfin::DenseMatrix>(dolfin::DenseMatrix const&, boost::numeric::ublas::permutation_matrix<unsigned, boost::numeric::ublas::unbounded_array<unsigned, std::allocator<unsigned> > > const&, dolfin::DenseMatrix&) (lu.hpp:295)
==24946==    by 0x4079B54: dolfin::DenseMatrix::invert() (DenseMatrix.cpp:93)
==24946==    by 0x804932D: main (main.cpp:9)
==24946== 
==24946== Conditional jump or move depends on uninitialised value(s)
==24946==    at 0x408340A: void boost::numeric::ublas::inplace_solve<boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > >, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > >(boost::numeric::ublas::matrix_expression<boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > > const&, boost::numeric::ublas::matrix_expression<boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > >&, boost::numeric::ublas::upper_tag, boost::numeric::ublas::dense_proxy_tag) (triangular.hpp:2408)
==24946==    by 0x4083C05: void boost::numeric::ublas::inplace_solve<boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > >, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > >(boost::numeric::ublas::matrix_expression<boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > > const&, boost::numeric::ublas::matrix_expression<boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > >&, boost::numeric::ublas::upper_tag) (triangular.hpp:2491)
==24946==    by 0x4084059: void boost::numeric::ublas::lu_substitute<dolfin::DenseMatrix, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > >(dolfin::DenseMatrix const&, boost::numeric::ublas::matrix_expression<boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > >&) (lu.hpp:287)
==24946==    by 0x4084745: void boost::numeric::ublas::lu_substitute<dolfin::DenseMatrix, unsigned, boost::numeric::ublas::unbounded_array<unsigned, std::allocator<unsigned> >, dolfin::DenseMatrix>(dolfin::DenseMatrix const&, boost::numeric::ublas::permutation_matrix<unsigned, boost::numeric::ublas::unbounded_array<unsigned, std::allocator<unsigned> > > const&, dolfin::DenseMatrix&) (lu.hpp:295)
==24946==    by 0x4079B54: dolfin::DenseMatrix::invert() (DenseMatrix.cpp:93)
==24946==    by 0x804932D: main (main.cpp:9)
==24946== 
==24946== Conditional jump or move depends on uninitialised value(s)
==24946==    at 0x4083590: void boost::numeric::ublas::inplace_solve<boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > >, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > >(boost::numeric::ublas::matrix_expression<boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > > const&, boost::numeric::ublas::matrix_expression<boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > >&, boost::numeric::ublas::upper_tag, boost::numeric::ublas::dense_proxy_tag) (triangular.hpp:2415)
==24946==    by 0x4083C05: void boost::numeric::ublas::inplace_solve<boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > >, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > >(boost::numeric::ublas::matrix_expression<boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > > const&, boost::numeric::ublas::matrix_expression<boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > >&, boost::numeric::ublas::upper_tag) (triangular.hpp:2491)
==24946==    by 0x4084059: void boost::numeric::ublas::lu_substitute<dolfin::DenseMatrix, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > >(dolfin::DenseMatrix const&, boost::numeric::ublas::matrix_expression<boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > >&) (lu.hpp:287)
==24946==    by 0x4084745: void boost::numeric::ublas::lu_substitute<dolfin::DenseMatrix, unsigned, boost::numeric::ublas::unbounded_array<unsigned, std::allocator<unsigned> >, dolfin::DenseMatrix>(dolfin::DenseMatrix const&, boost::numeric::ublas::permutation_matrix<unsigned, boost::numeric::ublas::unbounded_array<unsigned, std::allocator<unsigned> > > const&, dolfin::DenseMatrix&) (lu.hpp:295)
==24946==    by 0x4079B54: dolfin::DenseMatrix::invert() (DenseMatrix.cpp:93)
==24946==    by 0x804932D: main (main.cpp:9)
==24946== 
==24946== Conditional jump or move depends on uninitialised value(s)
==24946==    at 0x4083592: void boost::numeric::ublas::inplace_solve<boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > >, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > >(boost::numeric::ublas::matrix_expression<boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > > const&, boost::numeric::ublas::matrix_expression<boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > >&, boost::numeric::ublas::upper_tag, boost::numeric::ublas::dense_proxy_tag) (triangular.hpp:2415)
==24946==    by 0x4083C05: void boost::numeric::ublas::inplace_solve<boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > >, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > >(boost::numeric::ublas::matrix_expression<boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > > const&, boost::numeric::ublas::matrix_expression<boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > >&, boost::numeric::ublas::upper_tag) (triangular.hpp:2491)
==24946==    by 0x4084059: void boost::numeric::ublas::lu_substitute<dolfin::DenseMatrix, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > >(dolfin::DenseMatrix const&, boost::numeric::ublas::matrix_expression<boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > >&) (lu.hpp:287)
==24946==    by 0x4084745: void boost::numeric::ublas::lu_substitute<dolfin::DenseMatrix, unsigned, boost::numeric::ublas::unbounded_array<unsigned, std::allocator<unsigned> >, dolfin::DenseMatrix>(dolfin::DenseMatrix const&, boost::numeric::ublas::permutation_matrix<unsigned, boost::numeric::ublas::unbounded_array<unsigned, std::allocator<unsigned> > > const&, dolfin::DenseMatrix&) (lu.hpp:295)
==24946==    by 0x4079B54: dolfin::DenseMatrix::invert() (DenseMatrix.cpp:93)
==24946==    by 0x804932D: main (main.cpp:9)
==24946== 
==24946== Conditional jump or move depends on uninitialised value(s)
==24946==    at 0x4081648: bool boost::numeric::ublas::detail::equals<boost::numeric::ublas::matrix_matrix_binary<boost::numeric::ublas::triangular_adaptor<dolfin::DenseMatrix const, boost::numeric::ublas::basic_upper<unsigned> >, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > >, boost::numeric::ublas::matrix_matrix_prod<double, double, double> >, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > >, double>(boost::numeric::ublas::matrix_expression<boost::numeric::ublas::matrix_matrix_binary<boost::numeric::ublas::triangular_adaptor<dolfin::DenseMatrix const, boost::numeric::ublas::basic_upper<unsigned> >, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > >, boost::numeric::ublas::matrix_matrix_prod<double, double, double> > > const&, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > ><boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > > const&, double, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > ><boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > > const&) (functional.hpp:1366)
==24946==    by 0x4081A89: bool boost::numeric::ublas::detail::expression_type_check<boost::numeric::ublas::matrix_matrix_binary<boost::numeric::ublas::triangular_adaptor<dolfin::DenseMatrix const, boost::numeric::ublas::basic_upper<unsigned> >, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > >, boost::numeric::ublas::matrix_matrix_prod<double, double, double> >, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > >(boost::numeric::ublas::matrix_expression<boost::numeric::ublas::matrix_matrix_binary<boost::numeric::ublas::triangular_adaptor<dolfin::DenseMatrix const, boost::numeric::ublas::basic_upper<unsigned> >, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > >, boost::numeric::ublas::matrix_matrix_prod<double, double, double> > > const&, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > ><boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > > const&) (matrix_assign.hpp:45)
==24946==    by 0x408408A: void boost::numeric::ublas::lu_substitute<dolfin::DenseMatrix, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > >(dolfin::DenseMatrix const&, boost::numeric::ublas::matrix_expression<boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > >&) (lu.hpp:289)
==24946==    by 0x4084745: void boost::numeric::ublas::lu_substitute<dolfin::DenseMatrix, unsigned, boost::numeric::ublas::unbounded_array<unsigned, std::allocator<unsigned> >, dolfin::DenseMatrix>(dolfin::DenseMatrix const&, boost::numeric::ublas::permutation_matrix<unsigned, boost::numeric::ublas::unbounded_array<unsigned, std::allocator<unsigned> > > const&, dolfin::DenseMatrix&) (lu.hpp:295)
==24946==    by 0x4079B54: dolfin::DenseMatrix::invert() (DenseMatrix.cpp:93)
==24946==    by 0x804932D: main (main.cpp:9)
==24946== 
==24946== Conditional jump or move depends on uninitialised value(s)
==24946==    at 0x408114C: bool boost::numeric::ublas::detail::equals<boost::numeric::ublas::matrix_matrix_binary<boost::numeric::ublas::triangular_adaptor<dolfin::DenseMatrix const, boost::numeric::ublas::basic_upper<unsigned> >, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > >, boost::numeric::ublas::matrix_matrix_prod<double, double, double> >, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > >, double>(boost::numeric::ublas::matrix_expression<boost::numeric::ublas::matrix_matrix_binary<boost::numeric::ublas::triangular_adaptor<dolfin::DenseMatrix const, boost::numeric::ublas::basic_upper<unsigned> >, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > >, boost::numeric::ublas::matrix_matrix_prod<double, double, double> > > const&, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > ><boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > > const&, double, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > ><boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > > const&) (functional.hpp:1366)
==24946==    by 0x4081A89: bool boost::numeric::ublas::detail::expression_type_check<boost::numeric::ublas::matrix_matrix_binary<boost::numeric::ublas::triangular_adaptor<dolfin::DenseMatrix const, boost::numeric::ublas::basic_upper<unsigned> >, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > >, boost::numeric::ublas::matrix_matrix_prod<double, double, double> >, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > >(boost::numeric::ublas::matrix_expression<boost::numeric::ublas::matrix_matrix_binary<boost::numeric::ublas::triangular_adaptor<dolfin::DenseMatrix const, boost::numeric::ublas::basic_upper<unsigned> >, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > >, boost::numeric::ublas::matrix_matrix_prod<double, double, double> > > const&, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > ><boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > > const&) (matrix_assign.hpp:45)
==24946==    by 0x408408A: void boost::numeric::ublas::lu_substitute<dolfin::DenseMatrix, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > >(dolfin::DenseMatrix const&, boost::numeric::ublas::matrix_expression<boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > >&) (lu.hpp:289)
==24946==    by 0x4084745: void boost::numeric::ublas::lu_substitute<dolfin::DenseMatrix, unsigned, boost::numeric::ublas::unbounded_array<unsigned, std::allocator<unsigned> >, dolfin::DenseMatrix>(dolfin::DenseMatrix const&, boost::numeric::ublas::permutation_matrix<unsigned, boost::numeric::ublas::unbounded_array<unsigned, std::allocator<unsigned> > > const&, dolfin::DenseMatrix&) (lu.hpp:295)
==24946==    by 0x4079B54: dolfin::DenseMatrix::invert() (DenseMatrix.cpp:93)
==24946==    by 0x804932D: main (main.cpp:9)
==24946== 
==24946== Conditional jump or move depends on uninitialised value(s)
==24946==    at 0x408139C: bool boost::numeric::ublas::detail::equals<boost::numeric::ublas::matrix_matrix_binary<boost::numeric::ublas::triangular_adaptor<dolfin::DenseMatrix const, boost::numeric::ublas::basic_upper<unsigned> >, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > >, boost::numeric::ublas::matrix_matrix_prod<double, double, double> >, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > >, double>(boost::numeric::ublas::matrix_expression<boost::numeric::ublas::matrix_matrix_binary<boost::numeric::ublas::triangular_adaptor<dolfin::DenseMatrix const, boost::numeric::ublas::basic_upper<unsigned> >, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > >, boost::numeric::ublas::matrix_matrix_prod<double, double, double> > > const&, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > ><boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > > const&, double, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > ><boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > > const&) (functional.hpp:1366)
==24946==    by 0x4081A89: bool boost::numeric::ublas::detail::expression_type_check<boost::numeric::ublas::matrix_matrix_binary<boost::numeric::ublas::triangular_adaptor<dolfin::DenseMatrix const, boost::numeric::ublas::basic_upper<unsigned> >, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > >, boost::numeric::ublas::matrix_matrix_prod<double, double, double> >, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > >(boost::numeric::ublas::matrix_expression<boost::numeric::ublas::matrix_matrix_binary<boost::numeric::ublas::triangular_adaptor<dolfin::DenseMatrix const, boost::numeric::ublas::basic_upper<unsigned> >, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > >, boost::numeric::ublas::matrix_matrix_prod<double, double, double> > > const&, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > ><boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > > const&) (matrix_assign.hpp:45)
==24946==    by 0x408408A: void boost::numeric::ublas::lu_substitute<dolfin::DenseMatrix, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > >(dolfin::DenseMatrix const&, boost::numeric::ublas::matrix_expression<boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > >&) (lu.hpp:289)
==24946==    by 0x4084745: void boost::numeric::ublas::lu_substitute<dolfin::DenseMatrix, unsigned, boost::numeric::ublas::unbounded_array<unsigned, std::allocator<unsigned> >, dolfin::DenseMatrix>(dolfin::DenseMatrix const&, boost::numeric::ublas::permutation_matrix<unsigned, boost::numeric::ublas::unbounded_array<unsigned, std::allocator<unsigned> > > const&, dolfin::DenseMatrix&) (lu.hpp:295)
==24946==    by 0x4079B54: dolfin::DenseMatrix::invert() (DenseMatrix.cpp:93)
==24946==    by 0x804932D: main (main.cpp:9)
==24946== 
==24946== Conditional jump or move depends on uninitialised value(s)
==24946==    at 0x4081326: bool boost::numeric::ublas::detail::equals<boost::numeric::ublas::matrix_matrix_binary<boost::numeric::ublas::triangular_adaptor<dolfin::DenseMatrix const, boost::numeric::ublas::basic_upper<unsigned> >, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > >, boost::numeric::ublas::matrix_matrix_prod<double, double, double> >, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > >, double>(boost::numeric::ublas::matrix_expression<boost::numeric::ublas::matrix_matrix_binary<boost::numeric::ublas::triangular_adaptor<dolfin::DenseMatrix const, boost::numeric::ublas::basic_upper<unsigned> >, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > >, boost::numeric::ublas::matrix_matrix_prod<double, double, double> > > const&, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > ><boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > > const&, double, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > ><boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > > const&) (stl_algobase.h:211)
==24946==    by 0x4081A89: bool boost::numeric::ublas::detail::expression_type_check<boost::numeric::ublas::matrix_matrix_binary<boost::numeric::ublas::triangular_adaptor<dolfin::DenseMatrix const, boost::numeric::ublas::basic_upper<unsigned> >, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > >, boost::numeric::ublas::matrix_matrix_prod<double, double, double> >, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > >(boost::numeric::ublas::matrix_expression<boost::numeric::ublas::matrix_matrix_binary<boost::numeric::ublas::triangular_adaptor<dolfin::DenseMatrix const, boost::numeric::ublas::basic_upper<unsigned> >, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > >, boost::numeric::ublas::matrix_matrix_prod<double, double, double> > > const&, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > ><boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > > const&) (matrix_assign.hpp:45)
==24946==    by 0x408408A: void boost::numeric::ublas::lu_substitute<dolfin::DenseMatrix, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > >(dolfin::DenseMatrix const&, boost::numeric::ublas::matrix_expression<boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > >&) (lu.hpp:289)
==24946==    by 0x4084745: void boost::numeric::ublas::lu_substitute<dolfin::DenseMatrix, unsigned, boost::numeric::ublas::unbounded_array<unsigned, std::allocator<unsigned> >, dolfin::DenseMatrix>(dolfin::DenseMatrix const&, boost::numeric::ublas::permutation_matrix<unsigned, boost::numeric::ublas::unbounded_array<unsigned, std::allocator<unsigned> > > const&, dolfin::DenseMatrix&) (lu.hpp:295)
==24946==    by 0x4079B54: dolfin::DenseMatrix::invert() (DenseMatrix.cpp:93)
==24946==    by 0x804932D: main (main.cpp:9)
==24946== 
==24946== Conditional jump or move depends on uninitialised value(s)
==24946==    at 0x4081338: bool boost::numeric::ublas::detail::equals<boost::numeric::ublas::matrix_matrix_binary<boost::numeric::ublas::triangular_adaptor<dolfin::DenseMatrix const, boost::numeric::ublas::basic_upper<unsigned> >, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > >, boost::numeric::ublas::matrix_matrix_prod<double, double, double> >, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > >, double>(boost::numeric::ublas::matrix_expression<boost::numeric::ublas::matrix_matrix_binary<boost::numeric::ublas::triangular_adaptor<dolfin::DenseMatrix const, boost::numeric::ublas::basic_upper<unsigned> >, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > >, boost::numeric::ublas::matrix_matrix_prod<double, double, double> > > const&, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > ><boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > > const&, double, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > ><boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > > const&) (stl_algobase.h:211)
==24946==    by 0x4081A89: bool boost::numeric::ublas::detail::expression_type_check<boost::numeric::ublas::matrix_matrix_binary<boost::numeric::ublas::triangular_adaptor<dolfin::DenseMatrix const, boost::numeric::ublas::basic_upper<unsigned> >, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > >, boost::numeric::ublas::matrix_matrix_prod<double, double, double> >, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > >(boost::numeric::ublas::matrix_expression<boost::numeric::ublas::matrix_matrix_binary<boost::numeric::ublas::triangular_adaptor<dolfin::DenseMatrix const, boost::numeric::ublas::basic_upper<unsigned> >, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > >, boost::numeric::ublas::matrix_matrix_prod<double, double, double> > > const&, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > ><boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > > const&) (matrix_assign.hpp:45)
==24946==    by 0x408408A: void boost::numeric::ublas::lu_substitute<dolfin::DenseMatrix, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > >(dolfin::DenseMatrix const&, boost::numeric::ublas::matrix_expression<boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > >&) (lu.hpp:289)
==24946==    by 0x4084745: void boost::numeric::ublas::lu_substitute<dolfin::DenseMatrix, unsigned, boost::numeric::ublas::unbounded_array<unsigned, std::allocator<unsigned> >, dolfin::DenseMatrix>(dolfin::DenseMatrix const&, boost::numeric::ublas::permutation_matrix<unsigned, boost::numeric::ublas::unbounded_array<unsigned, std::allocator<unsigned> > > const&, dolfin::DenseMatrix&) (lu.hpp:295)
==24946==    by 0x4079B54: dolfin::DenseMatrix::invert() (DenseMatrix.cpp:93)
==24946==    by 0x804932D: main (main.cpp:9)
==24946== 
==24946== Conditional jump or move depends on uninitialised value(s)
==24946==    at 0x408408D: void boost::numeric::ublas::lu_substitute<dolfin::DenseMatrix, boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > >(dolfin::DenseMatrix const&, boost::numeric::ublas::matrix_expression<boost::numeric::ublas::matrix<double, boost::numeric::ublas::basic_row_major<unsigned, int>, boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > >&) (lu.hpp:289)
==24946==    by 0x4084745: void boost::numeric::ublas::lu_substitute<dolfin::DenseMatrix, unsigned, boost::numeric::ublas::unbounded_array<unsigned, std::allocator<unsigned> >, dolfin::DenseMatrix>(dolfin::DenseMatrix const&, boost::numeric::ublas::permutation_matrix<unsigned, boost::numeric::ublas::unbounded_array<unsigned, std::allocator<unsigned> > > const&, dolfin::DenseMatrix&) (lu.hpp:295)
==24946==    by 0x4079B54: dolfin::DenseMatrix::invert() (DenseMatrix.cpp:93)
==24946==    by 0x804932D: main (main.cpp:9)
==24946== 
==24946== ERROR SUMMARY: 65 errors from 25 contexts (suppressed: 27 from 1)
==24946== malloc/free: in use at exit: 0 bytes in 0 blocks.
==24946== malloc/free: 319 allocs, 319 frees, 10,059 bytes allocated.
==24946== For counts of detected errors, rerun with: -v
==24946== No malloc'd blocks -- no leaks are possible.

Follow ups