boostorg / boostorg/ublas

custom type support

Open
#48 4 comments 0 reactions 0 assignees View on GitHub
Dominant language
C++
Stars
122
Forks
151
PR merge metrics
No merged PRs in 30d

Description

matrix template has incomplete support for custom types or it was broken.

can try it with this https://github.com/ohhmm/openmind/blob/master/omnn/extrapolator/Number.h

the error message:
[ 4%] Built target omnn
[ 8%] Built target ct
[ 12%] Built target TrainedUnit
[ 16%] Built target MathTool
[ 20%] Built target Mnist
[ 24%] Built target opengl_rt_laby
[ 26%] Building CXX object omnn/extrapolator/CMakeFiles/extrapolator.dir/Extrapolator.cpp.o
[ 28%] Building CXX object omnn/extrapolator/CMakeFiles/extrapolator.dir/System.cpp.o
[ 68%] Built target OpenMind
[ 72%] Built target IdleTimeWorker
[ 78%] Built target chatbot
[ 90%] Built target arithm
In file included from /Users/sergejkrivonos/Projects/openmind/omnn/extrapolator/System.cpp:5:
In file included from /Users/sergejkrivonos/Projects/openmind/omnn/extrapolator/System.h:11:
In file included from /Users/sergejkrivonos/Projects/openmind/omnn/extrapolator/Extrapolator.h:13:
In file included from /usr/local/include/boost/numeric/ublas/matrix.hpp:20:
/usr/local/include/boost/numeric/ublas/detail/matrix_assign.hpp:33:35: error: invalid operands to binary expression ('typename matrix_scalar_unary_traits, unbounded_array > >, basic_unit_lower >, triangular_adaptor, unbounded_array > >, basic_upper >, matrix_matrix_prod, unbounded_array > >, basic_unit_lower >, triangular_adaptor, unbounded_array > >, basic_upper >, Number> >, matrix, unbounded_array > >, scalar_minus >, matrix_norm_inf, unbounded_array > >, basic_unit_lower >, triangular_adaptor, unbounded_array > >, basic_upper >, matrix_matrix_prod, unbounded_array > >, basic_unit_lower >, triangular_adaptor, unbounded_array > >, basic_upper >, Number> >, matrix, unbounded_array > >, scalar_minus > > >::result_type' (aka 'matrix_scalar_unary, boost::numeric::ublas::unbounded_array > >, boost::numeric::ublas::basic_unit_lower >, boost::numeric::ublas::triangular_adaptor, boost::numeric::ublas::unbounded_array > >, boost::numeric::ublas::basic_upper >, boost::numeric::ublas::matrix_matrix_prod, boost::numeric::ublas::unbounded_array > >, boost::numeric::ublas::basic_unit_lower >, boost::numeric::ublas::triangular_adaptor, boost::numeric::ublas::unbounded_array > >, boost::numeric::ublas::basic_upper >, omnn::extrapolator::Number> >, boost::numeric::ublas::matrix, boost::numeric::ublas::unbounded_array > >, boost::numeric::ublas::scalar_minus >, boost::numeric::ublas::matrix_norm_inf, boost::numeric::ublas::unbounded_array > >, boost::numeric::ublas::basic_unit_lower >, boost::numeric::ublas::triangular_adaptor, boost::numeric::ublas::unbounded_array > >, boost::numeric::ublas::basic_upper >, boost::numeric::ublas::matrix_matrix_prod, boost::numeric::ublas::unbounded_array > >, boost::numeric::ublas::basic_unit_lower >, boost::numeric::ublas::triangular_adaptor, boost::numeric::ublas::unbounded_array > >, boost::numeric::ublas::basic_upper >, omnn::extrapolator::Number> >, boost::numeric::ublas::matrix, boost::numeric::ublas::unbounded_array > >, boost::numeric::ublas::scalar_minus > > >') and 'omnn::extrapolator::Number')
return norm_inf (e1 - e2) < epsilon *
~~~~~~~~~~~~~~~~~~ ^ ~~~~~~~~~
/usr/local/include/boost/numeric/ublas/detail/matrix_assign.hpp:42:16: note: in instantiation of function template specialization 'boost::numeric::ublas::detail::equals, boost::numeric::ublas::unbounded_array > >, boost::numeric::ublas::basic_unit_lower >, boost::numeric::ublas::triangular_adaptor, boost::numeric::ublas::unbounded_array > >, boost::numeric::ublas::basic_upper >, boost::numeric::ublas::matrix_matrix_prod, boost::numeric::ublas::unbounded_array > >, boost::numeric::ublas::basic_unit_lower >, boost::numeric::ublas::triangular_adaptor, boost::numeric::ublas::unbounded_array > >, boost::numeric::ublas::basic_upper >, omnn::extrapolator::Number> >, boost::numeric::ublas::matrix, boost::numeric::ublas::unbounded_array > >, omnn::extrapolator::Number>' requested here
return equals (e1, e2, BOOST_UBLAS_TYPE_CHECK_EPSILON, BOOST_UBLAS_TYPE_CHECK_MIN);
^
/usr/local/include/boost/numeric/ublas/lu.hpp:166:36: note: in instantiation of function template specialization 'boost::numeric::ublas::detail::expression_type_check, boost::numeric::ublas::unbounded_array > >, boost::numeric::ublas::basic_unit_lower >, boost::numeric::ublas::triangular_adaptor, boost::numeric::ublas::unbounded_array > >, boost::numeric::ublas::basic_upper >, boost::numeric::ublas::matrix_matrix_prod, boost::numeric::ublas::unbounded_array > >, boost::numeric::ublas::basic_unit_lower >, boost::numeric::ublas::triangular_adaptor, boost::numeric::ublas::unbounded_array > >, boost::numeric::ublas::basic_upper >, omnn::extrapolator::Number> >, boost::numeric::ublas::matrix, boost::numeric::ublas::unbounded_array > > >' requested here
detail::expression_type_check (prod (triangular_adaptor (m),
^
/Users/sergejkrivonos/Projects/openmind/omnn/extrapolator/Extrapolator.h:26:30: note: in instantiation of function template specialization 'boost::numeric::ublas::lu_factorize, boost::numeric::ublas::unbounded_array > >, boost::numeric::ublas::permutation_matrix > > >' requested here
auto isSingular = ublas::lu_factorize(matrix, pivots);
^
In file included from /Users/sergejkrivonos/Projects/openmind/omnn/extrapolator/Extrapolator.cpp:5:
In file included from /Users/sergejkrivonos/Projects/openmind/omnn/extrapolator/Extrapolator.h:13:
In file included from /usr/local/include/boost/numeric/ublas/matrix.hpp:20:
/usr/local/include/boost/numeric/ublas/detail/matrix_assign.hpp:33:35: error: invalid operands to binary expression ('typename matrix_scalar_unary_traits, unbounded_array > >, basic_unit_lower >, triangular_adaptor, unbounded_array > >, basic_upper >, matrix_matrix_prod, unbounded_array > >, basic_unit_lower >, triangular_adaptor, unbounded_array > >, basic_upper >, Number> >, matrix, unbounded_array > >, scalar_minus >, matrix_norm_inf, unbounded_array > >, basic_unit_lower >, triangular_adaptor, unbounded_array > >, basic_upper >, matrix_matrix_prod, unbounded_array > >, basic_unit_lower >, triangular_adaptor, unbounded_array > >, basic_upper >, Number> >, matrix, unbounded_array > >, scalar_minus > > >::result_type' (aka 'matrix_scalar_unary, boost::numeric::ublas::unbounded_array > >, boost::numeric::ublas::basic_unit_lower >, boost::numeric::ublas::triangular_adaptor, boost::numeric::ublas::unbounded_array > >, boost::numeric::ublas::basic_upper >, boost::numeric::ublas::matrix_matrix_prod, boost::numeric::ublas::unbounded_array > >, boost::numeric::ublas::basic_unit_lower >, boost::numeric::ublas::triangular_adaptor, boost::numeric::ublas::unbounded_array > >, boost::numeric::ublas::basic_upper >, omnn::extrapolator::Number> >, boost::numeric::ublas::matrix, boost::numeric::ublas::unbounded_array > >, boost::numeric::ublas::scalar_minus >, boost::numeric::ublas::matrix_norm_inf, boost::numeric::ublas::unbounded_array > >, boost::numeric::ublas::basic_unit_lower >, boost::numeric::ublas::triangular_adaptor, boost::numeric::ublas::unbounded_array > >, boost::numeric::ublas::basic_upper >, boost::numeric::ublas::matrix_matrix_prod, boost::numeric::ublas::unbounded_array > >, boost::numeric::ublas::basic_unit_lower >, boost::numeric::ublas::triangular_adaptor, boost::numeric::ublas::unbounded_array > >, boost::numeric::ublas::basic_upper >, omnn::extrapolator::Number> >, boost::numeric::ublas::matrix, boost::numeric::ublas::unbounded_array > >, boost::numeric::ublas::scalar_minus > > >') and 'omnn::extrapolator::Number')
return norm_inf (e1 - e2) < epsilon *
~~~~~~~~~~~~~~~~~~ ^ ~~~~~~~~~
/usr/local/include/boost/numeric/ublas/detail/matrix_assign.hpp:42:16: note: in instantiation of function template specialization 'boost::numeric::ublas::detail::equals, boost::numeric::ublas::unbounded_array > >, boost::numeric::ublas::basic_unit_lower >, boost::numeric::ublas::triangular_adaptor, boost::numeric::ublas::unbounded_array > >, boost::numeric::ublas::basic_upper >, boost::numeric::ublas::matrix_matrix_prod, boost::numeric::ublas::unbounded_array > >, boost::numeric::ublas::basic_unit_lower >, boost::numeric::ublas::triangular_adaptor, boost::numeric::ublas::unbounded_array > >, boost::numeric::ublas::basic_upper >, omnn::extrapolator::Number> >, boost::numeric::ublas::matrix, boost::numeric::ublas::unbounded_array > >, omnn::extrapolator::Number>' requested here
return equals (e1, e2, BOOST_UBLAS_TYPE_CHECK_EPSILON, BOOST_UBLAS_TYPE_CHECK_MIN);
^
/usr/local/include/boost/numeric/ublas/lu.hpp:166:36: note: in instantiation of function template specialization 'boost::numeric::ublas::detail::expression_type_check, boost::numeric::ublas::unbounded_array > >, boost::numeric::ublas::basic_unit_lower >, boost::numeric::ublas::triangular_adaptor, boost::numeric::ublas::unbounded_array > >, boost::numeric::ublas::basic_upper >, boost::numeric::ublas::matrix_matrix_prod, boost::numeric::ublas::unbounded_array > >, boost::numeric::ublas::basic_unit_lower >, boost::numeric::ublas::triangular_adaptor, boost::numeric::ublas::unbounded_array > >, boost::numeric::ublas::basic_upper >, omnn::extrapolator::Number> >, boost::numeric::ublas::matrix, boost::numeric::ublas::unbounded_array > > >' requested here
detail::expression_type_check (prod (triangular_adaptor (m),
^
/Users/sergejkrivonos/Projects/openmind/omnn/extrapolator/Extrapolator.h:26:30: note: in instantiation of function template specialization 'boost::numeric::ublas::lu_factorize, boost::numeric::ublas::unbounded_array > >, boost::numeric::ublas::permutation_matrix > > >' requested here
auto isSingular = ublas::lu_factorize(matrix, pivots);
^
In file included from /Users/sergejkrivonos/Projects/openmind/omnn/extrapolator/System.cpp:5:
In file included from /Users/sergejkrivonos/Projects/openmind/omnn/extrapolator/System.h:11:
In file included from /Users/sergejkrivonos/Projects/openmind/omnn/extrapolator/Extrapolator.h:13:
In file included from /usr/local/include/boost/numeric/ublas/matrix.hpp:20:
/usr/local/include/boost/numeric/ublas/detail/matrix_assign.hpp:33:35: error: invalid operands to binary expression ('typename matrix_scalar_unary_traits >, triangular_adaptor >, matrix_matrix_prod >, triangular_adaptor >, Number> >, matrix, unbounded_array > >, scalar_minus >, matrix_norm_inf >, triangular_adaptor >, matrix_matrix_prod >, triangular_adaptor >, Number> >, matrix, unbounded_array > >, scalar_minus > > >::result_type' (aka 'matrix_scalar_unary >, boost::numeric::ublas::triangular_adaptor >, boost::numeric::ublas::matrix_matrix_prod >, boost::numeric::ublas::triangular_adaptor >, omnn::extrapolator::Number> >, boost::numeric::ublas::matrix, boost::numeric::ublas::unbounded_array > >, boost::numeric::ublas::scalar_minus >, boost::numeric::ublas::matrix_norm_inf >, boost::numeric::ublas::triangular_adaptor >, boost::numeric::ublas::matrix_matrix_prod >, boost::numeric::ublas::triangular_adaptor >, omnn::extrapolator::Number> >, boost::numeric::ublas::matrix, boost::numeric::ublas::unbounded_array > >, boost::numeric::ublas::scalar_minus > > >') and 'omnn::extrapolator::Number')
return norm_inf (e1 - e2) < epsilon *
~~~~~~~~~~~~~~~~~~ ^ ~~~~~~~~~
/usr/local/include/boost/numeric/ublas/detail/matrix_assign.hpp:42:16: note: in instantiation of function template specialization 'boost::numeric::ublas::detail::equals >, boost::numeric::ublas::triangular_adaptor >, boost::numeric::ublas::matrix_matrix_prod >, boost::numeric::ublas::triangular_adaptor >, omnn::extrapolator::Number> >, boost::numeric::ublas::matrix, boost::numeric::ublas::unbounded_array > >, omnn::extrapolator::Number>' requested here
return equals (e1, e2, BOOST_UBLAS_TYPE_CHECK_EPSILON, BOOST_UBLAS_TYPE_CHECK_MIN);
^
/usr/local/include/boost/numeric/ublas/lu.hpp:166:36: note: in instantiation of function template specialization 'boost::numeric::ublas::detail::expression_type_check >, boost::numeric::ublas::triangular_adaptor >, boost::numeric::ublas::matrix_matrix_prod >, boost::numeric::ublas::triangular_adaptor >, omnn::extrapolator::Number> >, boost::numeric::ublas::matrix, boost::numeric::ublas::unbounded_array > > >' requested here
detail::expression_type_check (prod (triangular_adaptor (m),
^
/Users/sergejkrivonos/Projects/openmind/omnn/extrapolator/Extrapolator.h:87:34: note: in instantiation of function template specialization 'boost::numeric::ublas::lu_factorize > > >' requested here
auto isSingular = ublas::lu_factorize(mLu, pivots);
^
/usr/local/include/boost/array.hpp:346:10: note: candidate template ignored: could not match 'array' against 'matrix_scalar_unary'
bool operator< (const array& x, const array& y) {
^
In file included from /Users/sergejkrivonos/Projects/openmind/omnn/extrapolator/Extrapolator.cpp:5:
In file included from /Users/sergejkrivonos/Projects/openmind/omnn/extrapolator/Extrapolator.h:13:
In file included from /usr/local/include/boost/numeric/ublas/matrix.hpp:20:
/usr/local/include/boost/numeric/ublas/detail/matrix_assign.hpp:33:35: error: invalid operands to binary expression ('typename matrix_scalar_unary_traits >, triangular_adaptor >, matrix_matrix_prod >, triangular_adaptor >, Number> >, matrix, unbounded_array > >, scalar_minus >, matrix_norm_inf >, triangular_adaptor >, matrix_matrix_prod >, triangular_adaptor >, Number> >, matrix, unbounded_array > >, scalar_minus > > >::result_type' (aka 'matrix_scalar_unary >, boost::numeric::ublas::triangular_adaptor >, boost::numeric::ublas::matrix_matrix_prod >, boost::numeric::ublas::triangular_adaptor >, omnn::extrapolator::Number> >, boost::numeric::ublas::matrix, boost::numeric::ublas::unbounded_array > >, boost::numeric::ublas::scalar_minus >, boost::numeric::ublas::matrix_norm_inf >, boost::numeric::ublas::triangular_adaptor >, boost::numeric::ublas::matrix_matrix_prod >, boost::numeric::ublas::triangular_adaptor >, omnn::extrapolator::Number> >, boost::numeric::ublas::matrix, boost::numeric::ublas::unbounded_array > >, boost::numeric::ublas::scalar_minus > > >') and 'omnn::extrapolator::Number')
return norm_inf (e1 - e2) < epsilon *
~~~~~~~~~~~~~~~~~~ ^ ~~~~~~~~~
/usr/local/include/boost/numeric/ublas/detail/matrix_assign.hpp:42:16: note: in instantiation of function template specialization 'boost::numeric::ublas::detail::equals >, boost::numeric::ublas::triangular_adaptor >, boost::numeric::ublas::matrix_matrix_prod >, boost::numeric::ublas::triangular_adaptor >, omnn::extrapolator::Number> >, boost::numeric::ublas::matrix, boost::numeric::ublas::unbounded_array > >, omnn::extrapolator::Number>' requested here
return equals (e1, e2, BOOST_UBLAS_TYPE_CHECK_EPSILON, BOOST_UBLAS_TYPE_CHECK_MIN);
^
/usr/local/include/boost/numeric/ublas/lu.hpp:166:36: note: in instantiation of function template specialization 'boost::numeric::ublas::detail::expression_type_check >, boost::numeric::ublas::triangular_adaptor >, boost::numeric::ublas::matrix_matrix_prod >, boost::numeric::ublas::triangular_adaptor >, omnn::extrapolator::Number> >, boost::numeric::ublas::matrix, boost::numeric::ublas::unbounded_array > > >' requested here
detail::expression_type_check (prod (triangular_adaptor (m),
^
/Users/sergejkrivonos/Projects/openmind/omnn/extrapolator/Extrapolator.h:87:34: note: in instantiation of function template specialization 'boost::numeric::ublas::lu_factorize > > >' requested here
auto isSingular = ublas::lu_factorize(mLu, pivots);
^
/usr/local/include/boost/array.hpp:346:10: note: candidate template ignored: could not match 'array' against 'matrix_scalar_unary'
bool operator< (const array& x, const array& y) {
^
2 errors generated.
2 errors generated.
gmake[2]: *** [omnn/extrapolator/CMakeFiles/extrapolator.dir/build.make:87: omnn/extrapolator/CMakeFiles/extrapolator.dir/System.cpp.o] Error 1
gmake[2]: *** Waiting for unfinished jobs....
gmake[2]: *** [omnn/extrapolator/CMakeFiles/extrapolator.dir/build.make:63: omnn/extrapolator/CMakeFiles/extrapolator.dir/Extrapolator.cpp.o] Error 1
gmake[1]: *** [CMakeFiles/Makefile2:222: omnn/extrapolator/CMakeFiles/extrapolator.dir/all] Error 2
gmake: *** [Makefile:95: all] Error 2

Contributor guide

No contributing guide indexed for this repository

Research direction

Start by reproducing the build failure with omnn/extrapolator/Number.h, then read omnn/extrapolator/Extrapolator.h and the references from Extrapolator.cpp and System.cpp. Trace the Boost uBLAS lu_factorize instantiation shown in the error and determine the scope of custom-type support. Done means the Number example builds successfully through this path.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
data
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.