custom type support
- 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