- edited description
Missing arithmetic functions for boost.units
Hello Klaus,
I have found that and arithmetic functions such as min() max(), etc. don’t work with boost.units:
For example, this piece of code works:
const blaze::DynamicVector<double> x(100);
double max = blaze::max(x);
double min = blaze::min(x);
double mean = blaze::mean(x);
double stdDev = blaze::sqrt(blaze::mean(blaze::pow2(x - mean)));
Whereas the same with boost.units does not:
using unit = boost::units::quantity<boost::units::si::plane_angle>;
const blaze::DynamicVector<unit> x(100, 1.0 * boost::units::si::radian);
unit max = blaze::max(x);
unit min = blaze::min(x);
unit mean = blaze::mean(x);
unit stdDev = blaze::sqrt(blaze::mean(blaze::pow2(x - mean)));
Resulting in the following compile output:
16:30:03: Running steps for project LaserCalibration...
16:30:03: Starting: "/usr/local/Cellar/cmake/3.17.3/bin/cmake" --build . --target all
Scanning dependencies of target LaserCalibration
[ 10%] Building CXX object CMakeFiles/LaserCalibration.dir/LaserCalibration.cpp.o
In file included from /Users/dwright/projects/dv-laser-calibration/LaserCalibration.cpp:1:
In file included from /Users/dwright/projects/dv-laser-calibration/LaserCalibration.hpp:6:
In file included from /Users/dwright/projects/dv-laser-calibration/blaze-units/Include.hpp:4:
In file included from /Users/dwright/projects/dv-laser-calibration/blaze-units/Angle.hpp:4:
In file included from /usr/local/include/blaze/math/DynamicMatrix.h:44:
In file included from /usr/local/include/blaze/math/dense/DynamicMatrix.h:78:
/usr/local/include/blaze/math/traits/SubTrait.h:163:1: error: no type named 'Type' in 'blaze::SubTrait<double, boost::units::quantity<boost::units::unit<boost::units::list<boost::units::dim<boost::units::plane_angle_base_dimension, boost::units::static_rational<1, 1> >, boost::units::dimensionless_type>, boost::units::homogeneous_system<boost::units::list<boost::units::si::meter_base_unit, boost::units::list<boost::units::scaled_base_unit<boost::units::cgs::gram_base_unit, boost::units::scale<10, static_rational<3> > >, boost::units::list<boost::units::si::second_base_unit, boost::units::list<boost::units::si::ampere_base_unit, boost::units::list<boost::units::si::kelvin_base_unit, boost::units::list<boost::units::si::mole_base_unit, boost::units::list<boost::units::si::candela_base_unit, boost::units::list<boost::units::angle::radian_base_unit, boost::units::list<boost::units::angle::steradian_base_unit, boost::units::dimensionless_type> > > > > > > > > >, void>, double>, void>'
using SubTrait_t = typename SubTrait<T1,T2>::Type;
^~~~~
/usr/local/include/blaze/math/expressions/DVecMapExpr.h:2767:23: note: in instantiation of template type alias 'SubTrait_t' requested here
using ScalarType = SubTrait_t< UnderlyingBuiltin_t<VT>, ST >;
^
/Users/dwright/projects/dv-laser-calibration/calibration-manager/ErrorStatistics.hpp:57:54: note: in instantiation of function template specialization 'blaze::operator-<blaze::DynamicVector<boost::units::quantity<boost::units::unit<boost::units::list<boost::units::dim<boost::units::plane_angle_base_dimension, boost::units::static_rational<1, 1> >, boost::units::dimensionless_type>, boost::units::homogeneous_system<boost::units::list<boost::units::si::meter_base_unit, boost::units::list<boost::units::scaled_base_unit<boost::units::cgs::gram_base_unit, boost::units::scale<10, static_rational<3> > >, boost::units::list<boost::units::si::second_base_unit, boost::units::list<boost::units::si::ampere_base_unit, boost::units::list<boost::units::si::kelvin_base_unit, boost::units::list<boost::units::si::mole_base_unit, boost::units::list<boost::units::si::candela_base_unit, boost::units::list<boost::units::angle::radian_base_unit, boost::units::list<boost::units::angle::steradian_base_unit, boost::units::dimensionless_type> > > > > > > > > >, void>, double>, false, blaze::GroupTag<0> >, false, boost::units::quantity<boost::units::unit<boost::units::list<boost::units::dim<boost::units::plane_angle_base_dimension, boost::units::static_rational<1, 1> >, boost::units::dimensionless_type>, boost::units::homogeneous_system<boost::units::list<boost::units::si::meter_base_unit, boost::units::list<boost::units::scaled_base_unit<boost::units::cgs::gram_base_unit, boost::units::scale<10, static_rational<3> > >, boost::units::list<boost::units::si::second_base_unit, boost::units::list<boost::units::si::ampere_base_unit, boost::units::list<boost::units::si::kelvin_base_unit, boost::units::list<boost::units::si::mole_base_unit, boost::units::list<boost::units::si::candela_base_unit, boost::units::list<boost::units::angle::radian_base_unit, boost::units::list<boost::units::angle::steradian_base_unit, boost::units::dimensionless_type> > > > > > > > > >, void>, double>, nullptr>' requested here
unit stdDev = blaze::sqrt(blaze::mean(blaze::pow2(x - mean)));
^
In file included from /Users/dwright/projects/dv-laser-calibration/LaserCalibration.cpp:1:
In file included from /Users/dwright/projects/dv-laser-calibration/LaserCalibration.hpp:6:
In file included from /Users/dwright/projects/dv-laser-calibration/blaze-units/Include.hpp:4:
In file included from /Users/dwright/projects/dv-laser-calibration/blaze-units/Angle.hpp:4:
In file included from /usr/local/include/blaze/math/DynamicMatrix.h:46:
In file included from /usr/local/include/blaze/math/DynamicVector.h:45:
In file included from /usr/local/include/blaze/math/DenseVector.h:57:
/usr/local/include/blaze/math/expressions/DVecMapExpr.h:2768:45: error: cannot convert 'boost::units::quantity<boost::units::unit<boost::units::list<boost::units::dim<boost::units::plane_angle_base_dimension, boost::units::static_rational<1, 1> >, boost::units::dimensionless_type>, boost::units::homogeneous_system<boost::units::list<boost::units::si::meter_base_unit, boost::units::list<boost::units::scaled_base_unit<boost::units::cgs::gram_base_unit, boost::units::scale<10, static_rational<3> > >, boost::units::list<boost::units::si::second_base_unit, boost::units::list<boost::units::si::ampere_base_unit, boost::units::list<boost::units::si::kelvin_base_unit, boost::units::list<boost::units::si::mole_base_unit, boost::units::list<boost::units::si::candela_base_unit, boost::units::list<boost::units::angle::radian_base_unit, boost::units::list<boost::units::angle::steradian_base_unit, boost::units::dimensionless_type> > > > > > > > > >, void>, double>' to 'ScalarType' (aka 'int') without a conversion operator
return map( ~vec, blaze::bind2nd( Sub{}, ScalarType( scalar ) ) );
^~~~~~~~~~~~~~~~~~
/Users/dwright/projects/dv-laser-calibration/calibration-manager/ErrorStatistics.hpp:57:54: note: in instantiation of function template specialization 'blaze::operator-<blaze::DynamicVector<boost::units::quantity<boost::units::unit<boost::units::list<boost::units::dim<boost::units::plane_angle_base_dimension, boost::units::static_rational<1, 1> >, boost::units::dimensionless_type>, boost::units::homogeneous_system<boost::units::list<boost::units::si::meter_base_unit, boost::units::list<boost::units::scaled_base_unit<boost::units::cgs::gram_base_unit, boost::units::scale<10, static_rational<3> > >, boost::units::list<boost::units::si::second_base_unit, boost::units::list<boost::units::si::ampere_base_unit, boost::units::list<boost::units::si::kelvin_base_unit, boost::units::list<boost::units::si::mole_base_unit, boost::units::list<boost::units::si::candela_base_unit, boost::units::list<boost::units::angle::radian_base_unit, boost::units::list<boost::units::angle::steradian_base_unit, boost::units::dimensionless_type> > > > > > > > > >, void>, double>, false, blaze::GroupTag<0> >, false, boost::units::quantity<boost::units::unit<boost::units::list<boost::units::dim<boost::units::plane_angle_base_dimension, boost::units::static_rational<1, 1> >, boost::units::dimensionless_type>, boost::units::homogeneous_system<boost::units::list<boost::units::si::meter_base_unit, boost::units::list<boost::units::scaled_base_unit<boost::units::cgs::gram_base_unit, boost::units::scale<10, static_rational<3> > >, boost::units::list<boost::units::si::second_base_unit, boost::units::list<boost::units::si::ampere_base_unit, boost::units::list<boost::units::si::kelvin_base_unit, boost::units::list<boost::units::si::mole_base_unit, boost::units::list<boost::units::si::candela_base_unit, boost::units::list<boost::units::angle::radian_base_unit, boost::units::list<boost::units::angle::steradian_base_unit, boost::units::dimensionless_type> > > > > > > > > >, void>, double>, nullptr>' requested here
unit stdDev = blaze::sqrt(blaze::mean(blaze::pow2(x - mean)));
^
/Users/dwright/projects/dv-laser-calibration/calibration-manager/ErrorStatistics.hpp:41:82: warning: unused parameter 'actual' [-Wunused-parameter]
ErrorStatistics<DataType>::ErrorStatistics(const blaze::DynamicVector<DataType> &actual, const DataType &expected) {
^
/Users/dwright/projects/dv-laser-calibration/calibration-manager/ErrorStatistics.hpp:41:106: warning: unused parameter 'expected' [-Wunused-parameter]
ErrorStatistics<DataType>::ErrorStatistics(const blaze::DynamicVector<DataType> &actual, const DataType &expected) {
^
/Users/dwright/projects/dv-laser-calibration/calibration-manager/ErrorStatistics.hpp:83:96: warning: unused parameter 'other' [-Wunused-parameter]
template<class DataType> void ErrorStatistics<DataType>::swap(const ErrorStatistics<DataType> &other) {
^
In file included from /Users/dwright/projects/dv-laser-calibration/LaserCalibration.cpp:1:
/Users/dwright/projects/dv-laser-calibration/LaserCalibration.hpp:59:51: warning: parameter 'config' shadows member inherited from type 'ModuleBase' [-Wshadow-field]
static void initConfigOptions(dv::RuntimeConfig &config) {
^
/usr/local/include/dv-sdk/module_base.hpp:92:16: note: declared here
RuntimeConfig config;
^
In file included from /Users/dwright/projects/dv-laser-calibration/LaserCalibration.cpp:3:
/Users/dwright/projects/dv-laser-calibration/exceptions/CameraCalibrationException.hpp:8:8: warning: 'CameraCalibrationException' has no out-of-line virtual method definitions; its vtable will be emitted in every translation unit [-Wweak-vtables]
struct CameraCalibrationException : virtual LaserCalibrationException {
^
In file included from /Users/dwright/projects/dv-laser-calibration/LaserCalibration.cpp:1:
In file included from /Users/dwright/projects/dv-laser-calibration/LaserCalibration.hpp:9:
/Users/dwright/projects/dv-laser-calibration/exceptions/LaserCalibrationException.hpp:6:8: warning: 'LaserCalibrationException' has no out-of-line virtual method definitions; its vtable will be emitted in every translation unit [-Wweak-vtables]
struct LaserCalibrationException : virtual std::exception, virtual boost::exception {};
^
In file included from /Users/dwright/projects/dv-laser-calibration/LaserCalibration.cpp:1:
In file included from /Users/dwright/projects/dv-laser-calibration/LaserCalibration.hpp:6:
In file included from /Users/dwright/projects/dv-laser-calibration/blaze-units/Include.hpp:4:
In file included from /Users/dwright/projects/dv-laser-calibration/blaze-units/Angle.hpp:4:
In file included from /usr/local/include/blaze/math/DynamicMatrix.h:45:
In file included from /usr/local/include/blaze/math/DenseMatrix.h:73:
In file included from /usr/local/include/blaze/math/expressions/DMatDMatMapExpr.h:62:
/usr/local/include/blaze/math/functors/Max.h:92:14: error: no matching function for call to 'max'
return max( a, b );
^~~
/usr/local/include/blaze/math/expressions/DVecReduceExpr.h:142:20: note: in instantiation of function template specialization 'blaze::Max::operator()<boost::units::quantity<boost::units::unit<boost::units::list<boost::units::dim<boost::units::plane_angle_base_dimension, boost::units::static_rational<1, 1> >, boost::units::dimensionless_type>, boost::units::homogeneous_system<boost::units::list<boost::units::si::meter_base_unit, boost::units::list<boost::units::scaled_base_unit<boost::units::cgs::gram_base_unit, boost::units::scale<10, static_rational<3> > >, boost::units::list<boost::units::si::second_base_unit, boost::units::list<boost::units::si::ampere_base_unit, boost::units::list<boost::units::si::kelvin_base_unit, boost::units::list<boost::units::si::mole_base_unit, boost::units::list<boost::units::si::candela_base_unit, boost::units::list<boost::units::angle::radian_base_unit, boost::units::list<boost::units::angle::steradian_base_unit, boost::units::dimensionless_type> > > > > > > > > >, void>, double>, boost::units::quantity<boost::units::unit<boost::units::list<boost::units::dim<boost::units::plane_angle_base_dimension, boost::units::static_rational<1, 1> >, boost::units::dimensionless_type>, boost::units::homogeneous_system<boost::units::list<boost::units::si::meter_base_unit, boost::units::list<boost::units::scaled_base_unit<boost::units::cgs::gram_base_unit, boost::units::scale<10, static_rational<3> > >, boost::units::list<boost::units::si::second_base_unit, boost::units::list<boost::units::si::ampere_base_unit, boost::units::list<boost::units::si::kelvin_base_unit, boost::units::list<boost::units::si::mole_base_unit, boost::units::list<boost::units::si::candela_base_unit, boost::units::list<boost::units::angle::radian_base_unit, boost::units::list<boost::units::angle::steradian_base_unit, boost::units::dimensionless_type> > > > > > > > > >, void>, double> >' requested here
redux1 = op( op( redux1, tmp[i ] ), tmp[i+1UL] );
^
/usr/local/include/blaze/math/expressions/DVecReduceExpr.h:390:11: note: in instantiation of function template specialization 'blaze::dvecreduce<blaze::DynamicVector<boost::units::quantity<boost::units::unit<boost::units::list<boost::units::dim<boost::units::plane_angle_base_dimension, boost::units::static_rational<1, 1> >, boost::units::dimensionless_type>, boost::units::homogeneous_system<boost::units::list<boost::units::si::meter_base_unit, boost::units::list<boost::units::scaled_base_unit<boost::units::cgs::gram_base_unit, boost::units::scale<10, static_rational<3> > >, boost::units::list<boost::units::si::second_base_unit, boost::units::list<boost::units::si::ampere_base_unit, boost::units::list<boost::units::si::kelvin_base_unit, boost::units::list<boost::units::si::mole_base_unit, boost::units::list<boost::units::si::candela_base_unit, boost::units::list<boost::units::angle::radian_base_unit, boost::units::list<boost::units::angle::steradian_base_unit, boost::units::dimensionless_type> > > > > > > > > >, void>, double>, false, blaze::GroupTag<0> >, false, blaze::Max>' requested here
return dvecreduce( ~dv, std::move(op) );
^
/usr/local/include/blaze/math/simd/Max.h:66:36: note: candidate function not viable: no known conversion from 'const boost::units::quantity<boost::units::unit<boost::units::list<boost::units::dim<boost::units::plane_angle_base_dimension, boost::units::static_rational<1, 1> >, boost::units::dimensionless_type>, boost::units::homogeneous_system<boost::units::list<boost::units::si::meter_base_unit, boost::units::list<boost::units::scaled_base_unit<boost::units::cgs::gram_base_unit, boost::units::scale<10, static_rational<3> > >, boost::units::list<boost::units::si::second_base_unit, boost::units::list<boost::units::si::ampere_base_unit, boost::units::list<boost::units::si::kelvin_base_unit, boost::units::list<boost::units::si::mole_base_unit, boost::units::list<boost::units::si::candela_base_unit, boost::units::list<boost::units::angle::radian_base_unit, boost::units::list<boost::units::angle::steradian_base_unit, boost::units::dimensionless_type> > > > > > > > > >, void>, double>' to 'const blaze::SIMDint8' for 1st argument
BLAZE_ALWAYS_INLINE const SIMDint8 max( const SIMDint8& a, const SIMDint8& b ) noexcept
^
/usr/local/include/blaze/math/simd/Max.h:95:37: note: candidate function not viable: no known conversion from 'const boost::units::quantity<boost::units::unit<boost::units::list<boost::units::dim<boost::units::plane_angle_base_dimension, boost::units::static_rational<1, 1> >, boost::units::dimensionless_type>, boost::units::homogeneous_system<boost::units::list<boost::units::si::meter_base_unit, boost::units::list<boost::units::scaled_base_unit<boost::units::cgs::gram_base_unit, boost::units::scale<10, static_rational<3> > >, boost::units::list<boost::units::si::second_base_unit, boost::units::list<boost::units::si::ampere_base_unit, boost::units::list<boost::units::si::kelvin_base_unit, boost::units::list<boost::units::si::mole_base_unit, boost::units::list<boost::units::si::candela_base_unit, boost::units::list<boost::units::angle::radian_base_unit, boost::units::list<boost::units::angle::steradian_base_unit, boost::units::dimensionless_type> > > > > > > > > >, void>, double>' to 'const blaze::SIMDuint8' for 1st argument
BLAZE_ALWAYS_INLINE const SIMDuint8 max( const SIMDuint8& a, const SIMDuint8& b ) noexcept
^
/usr/local/include/blaze/math/simd/Max.h:132:37: note: candidate function not viable: no known conversion from 'const boost::units::quantity<boost::units::unit<boost::units::list<boost::units::dim<boost::units::plane_angle_base_dimension, boost::units::static_rational<1, 1> >, boost::units::dimensionless_type>, boost::units::homogeneous_system<boost::units::list<boost::units::si::meter_base_unit, boost::units::list<boost::units::scaled_base_unit<boost::units::cgs::gram_base_unit, boost::units::scale<10, static_rational<3> > >, boost::units::list<boost::units::si::second_base_unit, boost::units::list<boost::units::si::ampere_base_unit, boost::units::list<boost::units::si::kelvin_base_unit, boost::units::list<boost::units::si::mole_base_unit, boost::units::list<boost::units::si::candela_base_unit, boost::units::list<boost::units::angle::radian_base_unit, boost::units::list<boost::units::angle::steradian_base_unit, boost::units::dimensionless_type> > > > > > > > > >, void>, double>' to 'const blaze::SIMDint16' for 1st argument
BLAZE_ALWAYS_INLINE const SIMDint16 max( const SIMDint16& a, const SIMDint16& b ) noexcept
^
/usr/local/include/blaze/math/simd/Max.h:161:38: note: candidate function not viable: no known conversion from 'const boost::units::quantity<boost::units::unit<boost::units::list<boost::units::dim<boost::units::plane_angle_base_dimension, boost::units::static_rational<1, 1> >, boost::units::dimensionless_type>, boost::units::homogeneous_system<boost::units::list<boost::units::si::meter_base_unit, boost::units::list<boost::units::scaled_base_unit<boost::units::cgs::gram_base_unit, boost::units::scale<10, static_rational<3> > >, boost::units::list<boost::units::si::second_base_unit, boost::units::list<boost::units::si::ampere_base_unit, boost::units::list<boost::units::si::kelvin_base_unit, boost::units::list<boost::units::si::mole_base_unit, boost::units::list<boost::units::si::candela_base_unit, boost::units::list<boost::units::angle::radian_base_unit, boost::units::list<boost::units::angle::steradian_base_unit, boost::units::dimensionless_type> > > > > > > > > >, void>, double>' to 'const blaze::SIMDuint16' for 1st argument
BLAZE_ALWAYS_INLINE const SIMDuint16 max( const SIMDuint16& a, const SIMDuint16& b ) noexcept
^
/usr/local/include/blaze/math/simd/Max.h:198:37: note: candidate function not viable: no known conversion from 'const boost::units::quantity<boost::units::unit<boost::units::list<boost::units::dim<boost::units::plane_angle_base_dimension, boost::units::static_rational<1, 1> >, boost::units::dimensionless_type>, boost::units::homogeneous_system<boost::units::list<boost::units::si::meter_base_unit, boost::units::list<boost::units::scaled_base_unit<boost::units::cgs::gram_base_unit, boost::units::scale<10, static_rational<3> > >, boost::units::list<boost::units::si::second_base_unit, boost::units::list<boost::units::si::ampere_base_unit, boost::units::list<boost::units::si::kelvin_base_unit, boost::units::list<boost::units::si::mole_base_unit, boost::units::list<boost::units::si::candela_base_unit, boost::units::list<boost::units::angle::radian_base_unit, boost::units::list<boost::units::angle::steradian_base_unit, boost::units::dimensionless_type> > > > > > > > > >, void>, double>' to 'const blaze::SIMDint32' for 1st argument
BLAZE_ALWAYS_INLINE const SIMDint32 max( const SIMDint32& a, const SIMDint32& b ) noexcept
^
/usr/local/include/blaze/math/simd/Max.h:227:38: note: candidate function not viable: no known conversion from 'const boost::units::quantity<boost::units::unit<boost::units::list<boost::units::dim<boost::units::plane_angle_base_dimension, boost::units::static_rational<1, 1> >, boost::units::dimensionless_type>, boost::units::homogeneous_system<boost::units::list<boost::units::si::meter_base_unit, boost::units::list<boost::units::scaled_base_unit<boost::units::cgs::gram_base_unit, boost::units::scale<10, static_rational<3> > >, boost::units::list<boost::units::si::second_base_unit, boost::units::list<boost::units::si::ampere_base_unit, boost::units::list<boost::units::si::kelvin_base_unit, boost::units::list<boost::units::si::mole_base_unit, boost::units::list<boost::units::si::candela_base_unit, boost::units::list<boost::units::angle::radian_base_unit, boost::units::list<boost::units::angle::steradian_base_unit, boost::units::dimensionless_type> > > > > > > > > >, void>, double>' to 'const blaze::SIMDuint32' for 1st argument
BLAZE_ALWAYS_INLINE const SIMDuint32 max( const SIMDuint32& a, const SIMDuint32& b ) noexcept
^
/usr/local/include/blaze/math/simd/Max.h:267:4: note: candidate template ignored: could not match 'SIMDf32' against 'quantity'
max( const SIMDf32<T1>& a, const SIMDf32<T2>& b ) noexcept
^
/usr/local/include/blaze/math/simd/Max.h:307:4: note: candidate template ignored: could not match 'SIMDf64' against 'quantity'
max( const SIMDf64<T1>& a, const SIMDf64<T2>& b ) noexcept
^
/usr/local/include/blaze/util/algorithms/Max.h:72:4: note: candidate template ignored: substitution failure [with T1 = boost::units::quantity<boost::units::unit<boost::units::list<boost::units::dim<boost::units::plane_angle_base_dimension, boost::units::static_rational<1, 1> >, boost::units::dimensionless_type>, boost::units::homogeneous_system<boost::units::list<boost::units::si::meter_base_unit, boost::units::list<boost::units::scaled_base_unit<boost::units::cgs::gram_base_unit, boost::units::scale<10, static_rational<3> > >, boost::units::list<boost::units::si::second_base_unit, boost::units::list<boost::units::si::ampere_base_unit, boost::units::list<boost::units::si::kelvin_base_unit, boost::units::list<boost::units::si::mole_base_unit, boost::units::list<boost::units::si::candela_base_unit, boost::units::list<boost::units::angle::radian_base_unit, boost::units::list<boost::units::angle::steradian_base_unit, boost::units::dimensionless_type> > > > > > > > > >, void>, double>, T2 = boost::units::quantity<boost::units::unit<boost::units::list<boost::units::dim<boost::units::plane_angle_base_dimension, boost::units::static_rational<1, 1> >, boost::units::dimensionless_type>, boost::units::homogeneous_system<boost::units::list<boost::units::si::meter_base_unit, boost::units::list<boost::units::scaled_base_unit<boost::units::cgs::gram_base_unit, boost::units::scale<10, static_rational<3> > >, boost::units::list<boost::units::si::second_base_unit, boost::units::list<boost::units::si::ampere_base_unit, boost::units::list<boost::units::si::kelvin_base_unit, boost::units::list<boost::units::si::mole_base_unit, boost::units::list<boost::units::si::candela_base_unit, boost::units::list<boost::units::angle::radian_base_unit, boost::units::list<boost::units::angle::steradian_base_unit, boost::units::dimensionless_type> > > > > > > > > >, void>, double>]: no type named 'Type' in 'blaze::EnableIf<false, void>'
max( const T1& a, const T2& b ) noexcept
^
/usr/local/include/blaze/math/proxy/Proxy.h:2124:23: note: candidate template ignored: could not match 'Proxy' against 'quantity'
inline decltype(auto) max( const Proxy<PT1,RT1>& lhs, const Proxy<PT2,RT2>& rhs )
^
/usr/local/include/blaze/math/proxy/Proxy.h:2142:23: note: candidate template ignored: could not match 'Proxy' against 'quantity'
inline decltype(auto) max( const Proxy<PT,RT>& lhs, const T& rhs )
^
/usr/local/include/blaze/math/proxy/Proxy.h:2160:23: note: candidate template ignored: could not match 'Proxy' against 'quantity'
inline decltype(auto) max( const T& lhs, const Proxy<PT,RT>& rhs )
^
/usr/local/include/blaze/util/algorithms/Max.h:93:4: note: candidate function template not viable: requires 3 arguments, but 2 were provided
max( const T1& a, const T2& b, const T3& c ) noexcept
^
/usr/local/include/blaze/util/algorithms/Max.h:117:4: note: candidate function template not viable: requires at least 3 arguments, but 2 were provided
max( const T1& a, const T2& b, const T3& c, const Ts&... args ) noexcept
^
In file included from /Users/dwright/projects/dv-laser-calibration/LaserCalibration.cpp:1:
In file included from /Users/dwright/projects/dv-laser-calibration/LaserCalibration.hpp:6:
In file included from /Users/dwright/projects/dv-laser-calibration/blaze-units/Include.hpp:4:
In file included from /Users/dwright/projects/dv-laser-calibration/blaze-units/Angle.hpp:4:
In file included from /usr/local/include/blaze/math/DynamicMatrix.h:46:
In file included from /usr/local/include/blaze/math/DynamicVector.h:45:
In file included from /usr/local/include/blaze/math/DenseVector.h:62:
/usr/local/include/blaze/math/expressions/DVecReduceExpr.h:143:20: error: no matching function for call to object of type 'blaze::Max'
redux2 = op( op( redux2, tmp[i+2UL] ), tmp[i+3UL] );
^~
/usr/local/include/blaze/math/expressions/DVecReduceExpr.h:390:11: note: in instantiation of function template specialization 'blaze::dvecreduce<blaze::DynamicVector<boost::units::quantity<boost::units::unit<boost::units::list<boost::units::dim<boost::units::plane_angle_base_dimension, boost::units::static_rational<1, 1> >, boost::units::dimensionless_type>, boost::units::homogeneous_system<boost::units::list<boost::units::si::meter_base_unit, boost::units::list<boost::units::scaled_base_unit<boost::units::cgs::gram_base_unit, boost::units::scale<10, static_rational<3> > >, boost::units::list<boost::units::si::second_base_unit, boost::units::list<boost::units::si::ampere_base_unit, boost::units::list<boost::units::si::kelvin_base_unit, boost::units::list<boost::units::si::mole_base_unit, boost::units::list<boost::units::si::candela_base_unit, boost::units::list<boost::units::angle::radian_base_unit, boost::units::list<boost::units::angle::steradian_base_unit, boost::units::dimensionless_type> > > > > > > > > >, void>, double>, false, blaze::GroupTag<0> >, false, blaze::Max>' requested here
return dvecreduce( ~dv, std::move(op) );
^
/usr/local/include/blaze/math/functors/Max.h:90:61: note: candidate template ignored: substitution failure [with T1 = boost::units::quantity<boost::units::unit<boost::units::list<boost::units::dim<boost::units::plane_angle_base_dimension, boost::units::static_rational<1, 1> >, boost::units::dimensionless_type>, boost::units::homogeneous_system<boost::units::list<boost::units::si::meter_base_unit, boost::units::list<boost::units::scaled_base_unit<boost::units::cgs::gram_base_unit, boost::units::scale<10, static_rational<3> > >, boost::units::list<boost::units::si::second_base_unit, boost::units::list<boost::units::si::ampere_base_unit, boost::units::list<boost::units::si::kelvin_base_unit, boost::units::list<boost::units::si::mole_base_unit, boost::units::list<boost::units::si::candela_base_unit, boost::units::list<boost::units::angle::radian_base_unit, boost::units::list<boost::units::angle::steradian_base_unit, boost::units::dimensionless_type> > > > > > > > > >, void>, double>, T2 = boost::units::quantity<boost::units::unit<boost::units::list<boost::units::dim<boost::units::plane_angle_base_dimension, boost::units::static_rational<1, 1> >, boost::units::dimensionless_type>, boost::units::homogeneous_system<boost::units::list<boost::units::si::meter_base_unit, boost::units::list<boost::units::scaled_base_unit<boost::units::cgs::gram_base_unit, boost::units::scale<10, static_rational<3> > >, boost::units::list<boost::units::si::second_base_unit, boost::units::list<boost::units::si::ampere_base_unit, boost::units::list<boost::units::si::kelvin_base_unit, boost::units::list<boost::units::si::mole_base_unit, boost::units::list<boost::units::si::candela_base_unit, boost::units::list<boost::units::angle::radian_base_unit, boost::units::list<boost::units::angle::steradian_base_unit, boost::units::dimensionless_type> > > > > > > > > >, void>, double>]
BLAZE_ALWAYS_INLINE BLAZE_DEVICE_CALLABLE decltype(auto) operator()( const T1& a, const T2& b ) const
^
In file included from /Users/dwright/projects/dv-laser-calibration/LaserCalibration.cpp:1:
In file included from /Users/dwright/projects/dv-laser-calibration/LaserCalibration.hpp:6:
In file included from /Users/dwright/projects/dv-laser-calibration/blaze-units/Include.hpp:4:
In file included from /Users/dwright/projects/dv-laser-calibration/blaze-units/Angle.hpp:4:
In file included from /usr/local/include/blaze/math/DynamicMatrix.h:46:
In file included from /usr/local/include/blaze/math/DynamicVector.h:45:
In file included from /usr/local/include/blaze/math/DenseVector.h:62:
/usr/local/include/blaze/math/expressions/DVecReduceExpr.h:146:16: error: no matching function for call to object of type 'blaze::Max'
redux1 = op( redux1, tmp[i ] );
^~
/usr/local/include/blaze/math/functors/Max.h:90:61: note: candidate template ignored: substitution failure [with T1 = boost::units::quantity<boost::units::unit<boost::units::list<boost::units::dim<boost::units::plane_angle_base_dimension, boost::units::static_rational<1, 1> >, boost::units::dimensionless_type>, boost::units::homogeneous_system<boost::units::list<boost::units::si::meter_base_unit, boost::units::list<boost::units::scaled_base_unit<boost::units::cgs::gram_base_unit, boost::units::scale<10, static_rational<3> > >, boost::units::list<boost::units::si::second_base_unit, boost::units::list<boost::units::si::ampere_base_unit, boost::units::list<boost::units::si::kelvin_base_unit, boost::units::list<boost::units::si::mole_base_unit, boost::units::list<boost::units::si::candela_base_unit, boost::units::list<boost::units::angle::radian_base_unit, boost::units::list<boost::units::angle::steradian_base_unit, boost::units::dimensionless_type> > > > > > > > > >, void>, double>, T2 = boost::units::quantity<boost::units::unit<boost::units::list<boost::units::dim<boost::units::plane_angle_base_dimension, boost::units::static_rational<1, 1> >, boost::units::dimensionless_type>, boost::units::homogeneous_system<boost::units::list<boost::units::si::meter_base_unit, boost::units::list<boost::units::scaled_base_unit<boost::units::cgs::gram_base_unit, boost::units::scale<10, static_rational<3> > >, boost::units::list<boost::units::si::second_base_unit, boost::units::list<boost::units::si::ampere_base_unit, boost::units::list<boost::units::si::kelvin_base_unit, boost::units::list<boost::units::si::mole_base_unit, boost::units::list<boost::units::si::candela_base_unit, boost::units::list<boost::units::angle::radian_base_unit, boost::units::list<boost::units::angle::steradian_base_unit, boost::units::dimensionless_type> > > > > > > > > >, void>, double>]
BLAZE_ALWAYS_INLINE BLAZE_DEVICE_CALLABLE decltype(auto) operator()( const T1& a, const T2& b ) const
^
In file included from /Users/dwright/projects/dv-laser-calibration/LaserCalibration.cpp:1:
In file included from /Users/dwright/projects/dv-laser-calibration/LaserCalibration.hpp:6:
In file included from /Users/dwright/projects/dv-laser-calibration/blaze-units/Include.hpp:4:
In file included from /Users/dwright/projects/dv-laser-calibration/blaze-units/Angle.hpp:4:
In file included from /usr/local/include/blaze/math/DynamicMatrix.h:46:
In file included from /usr/local/include/blaze/math/DynamicVector.h:45:
In file included from /usr/local/include/blaze/math/DenseVector.h:62:
/usr/local/include/blaze/math/expressions/DVecReduceExpr.h:147:16: error: no matching function for call to object of type 'blaze::Max'
redux2 = op( redux2, tmp[i+1UL] );
^~
/usr/local/include/blaze/math/functors/Max.h:90:61: note: candidate template ignored: substitution failure [with T1 = boost::units::quantity<boost::units::unit<boost::units::list<boost::units::dim<boost::units::plane_angle_base_dimension, boost::units::static_rational<1, 1> >, boost::units::dimensionless_type>, boost::units::homogeneous_system<boost::units::list<boost::units::si::meter_base_unit, boost::units::list<boost::units::scaled_base_unit<boost::units::cgs::gram_base_unit, boost::units::scale<10, static_rational<3> > >, boost::units::list<boost::units::si::second_base_unit, boost::units::list<boost::units::si::ampere_base_unit, boost::units::list<boost::units::si::kelvin_base_unit, boost::units::list<boost::units::si::mole_base_unit, boost::units::list<boost::units::si::candela_base_unit, boost::units::list<boost::units::angle::radian_base_unit, boost::units::list<boost::units::angle::steradian_base_unit, boost::units::dimensionless_type> > > > > > > > > >, void>, double>, T2 = boost::units::quantity<boost::units::unit<boost::units::list<boost::units::dim<boost::units::plane_angle_base_dimension, boost::units::static_rational<1, 1> >, boost::units::dimensionless_type>, boost::units::homogeneous_system<boost::units::list<boost::units::si::meter_base_unit, boost::units::list<boost::units::scaled_base_unit<boost::units::cgs::gram_base_unit, boost::units::scale<10, static_rational<3> > >, boost::units::list<boost::units::si::second_base_unit, boost::units::list<boost::units::si::ampere_base_unit, boost::units::list<boost::units::si::kelvin_base_unit, boost::units::list<boost::units::si::mole_base_unit, boost::units::list<boost::units::si::candela_base_unit, boost::units::list<boost::units::angle::radian_base_unit, boost::units::list<boost::units::angle::steradian_base_unit, boost::units::dimensionless_type> > > > > > > > > >, void>, double>]
BLAZE_ALWAYS_INLINE BLAZE_DEVICE_CALLABLE decltype(auto) operator()( const T1& a, const T2& b ) const
^
In file included from /Users/dwright/projects/dv-laser-calibration/LaserCalibration.cpp:1:
In file included from /Users/dwright/projects/dv-laser-calibration/LaserCalibration.hpp:6:
In file included from /Users/dwright/projects/dv-laser-calibration/blaze-units/Include.hpp:4:
In file included from /Users/dwright/projects/dv-laser-calibration/blaze-units/Angle.hpp:4:
In file included from /usr/local/include/blaze/math/DynamicMatrix.h:46:
In file included from /usr/local/include/blaze/math/DynamicVector.h:45:
In file included from /usr/local/include/blaze/math/DenseVector.h:62:
/usr/local/include/blaze/math/expressions/DVecReduceExpr.h:150:16: error: no matching function for call to object of type 'blaze::Max'
redux1 = op( redux1, tmp[i] );
^~
/usr/local/include/blaze/math/functors/Max.h:90:61: note: candidate template ignored: substitution failure [with T1 = boost::units::quantity<boost::units::unit<boost::units::list<boost::units::dim<boost::units::plane_angle_base_dimension, boost::units::static_rational<1, 1> >, boost::units::dimensionless_type>, boost::units::homogeneous_system<boost::units::list<boost::units::si::meter_base_unit, boost::units::list<boost::units::scaled_base_unit<boost::units::cgs::gram_base_unit, boost::units::scale<10, static_rational<3> > >, boost::units::list<boost::units::si::second_base_unit, boost::units::list<boost::units::si::ampere_base_unit, boost::units::list<boost::units::si::kelvin_base_unit, boost::units::list<boost::units::si::mole_base_unit, boost::units::list<boost::units::si::candela_base_unit, boost::units::list<boost::units::angle::radian_base_unit, boost::units::list<boost::units::angle::steradian_base_unit, boost::units::dimensionless_type> > > > > > > > > >, void>, double>, T2 = boost::units::quantity<boost::units::unit<boost::units::list<boost::units::dim<boost::units::plane_angle_base_dimension, boost::units::static_rational<1, 1> >, boost::units::dimensionless_type>, boost::units::homogeneous_system<boost::units::list<boost::units::si::meter_base_unit, boost::units::list<boost::units::scaled_base_unit<boost::units::cgs::gram_base_unit, boost::units::scale<10, static_rational<3> > >, boost::units::list<boost::units::si::second_base_unit, boost::units::list<boost::units::si::ampere_base_unit, boost::units::list<boost::units::si::kelvin_base_unit, boost::units::list<boost::units::si::mole_base_unit, boost::units::list<boost::units::si::candela_base_unit, boost::units::list<boost::units::angle::radian_base_unit, boost::units::list<boost::units::angle::steradian_base_unit, boost::units::dimensionless_type> > > > > > > > > >, void>, double>]
BLAZE_ALWAYS_INLINE BLAZE_DEVICE_CALLABLE decltype(auto) operator()( const T1& a, const T2& b ) const
^
In file included from /Users/dwright/projects/dv-laser-calibration/LaserCalibration.cpp:1:
In file included from /Users/dwright/projects/dv-laser-calibration/LaserCalibration.hpp:6:
In file included from /Users/dwright/projects/dv-laser-calibration/blaze-units/Include.hpp:4:
In file included from /Users/dwright/projects/dv-laser-calibration/blaze-units/Angle.hpp:4:
In file included from /usr/local/include/blaze/math/DynamicMatrix.h:46:
In file included from /usr/local/include/blaze/math/DynamicVector.h:45:
In file included from /usr/local/include/blaze/math/DenseVector.h:62:
/usr/local/include/blaze/math/expressions/DVecReduceExpr.h:153:11: error: no matching function for call to object of type 'blaze::Max'
return op( redux1, redux2 );
^~
/usr/local/include/blaze/math/functors/Max.h:90:61: note: candidate template ignored: substitution failure [with T1 = boost::units::quantity<boost::units::unit<boost::units::list<boost::units::dim<boost::units::plane_angle_base_dimension, boost::units::static_rational<1, 1> >, boost::units::dimensionless_type>, boost::units::homogeneous_system<boost::units::list<boost::units::si::meter_base_unit, boost::units::list<boost::units::scaled_base_unit<boost::units::cgs::gram_base_unit, boost::units::scale<10, static_rational<3> > >, boost::units::list<boost::units::si::second_base_unit, boost::units::list<boost::units::si::ampere_base_unit, boost::units::list<boost::units::si::kelvin_base_unit, boost::units::list<boost::units::si::mole_base_unit, boost::units::list<boost::units::si::candela_base_unit, boost::units::list<boost::units::angle::radian_base_unit, boost::units::list<boost::units::angle::steradian_base_unit, boost::units::dimensionless_type> > > > > > > > > >, void>, double>, T2 = boost::units::quantity<boost::units::unit<boost::units::list<boost::units::dim<boost::units::plane_angle_base_dimension, boost::units::static_rational<1, 1> >, boost::units::dimensionless_type>, boost::units::homogeneous_system<boost::units::list<boost::units::si::meter_base_unit, boost::units::list<boost::units::scaled_base_unit<boost::units::cgs::gram_base_unit, boost::units::scale<10, static_rational<3> > >, boost::units::list<boost::units::si::second_base_unit, boost::units::list<boost::units::si::ampere_base_unit, boost::units::list<boost::units::si::kelvin_base_unit, boost::units::list<boost::units::si::mole_base_unit, boost::units::list<boost::units::si::candela_base_unit, boost::units::list<boost::units::angle::radian_base_unit, boost::units::list<boost::units::angle::steradian_base_unit, boost::units::dimensionless_type> > > > > > > > > >, void>, double>]
BLAZE_ALWAYS_INLINE BLAZE_DEVICE_CALLABLE decltype(auto) operator()( const T1& a, const T2& b ) const
^
In file included from /Users/dwright/projects/dv-laser-calibration/LaserCalibration.cpp:1:
In file included from /Users/dwright/projects/dv-laser-calibration/LaserCalibration.hpp:6:
In file included from /Users/dwright/projects/dv-laser-calibration/blaze-units/Include.hpp:4:
In file included from /Users/dwright/projects/dv-laser-calibration/blaze-units/Angle.hpp:4:
In file included from /usr/local/include/blaze/math/DynamicMatrix.h:45:
In file included from /usr/local/include/blaze/math/DenseMatrix.h:73:
In file included from /usr/local/include/blaze/math/expressions/DMatDMatMapExpr.h:63:
/usr/local/include/blaze/math/functors/Min.h:92:14: error: no matching function for call to 'min'
return min( a, b );
^~~
/usr/local/include/blaze/math/expressions/DVecReduceExpr.h:142:20: note: in instantiation of function template specialization 'blaze::Min::operator()<boost::units::quantity<boost::units::unit<boost::units::list<boost::units::dim<boost::units::plane_angle_base_dimension, boost::units::static_rational<1, 1> >, boost::units::dimensionless_type>, boost::units::homogeneous_system<boost::units::list<boost::units::si::meter_base_unit, boost::units::list<boost::units::scaled_base_unit<boost::units::cgs::gram_base_unit, boost::units::scale<10, static_rational<3> > >, boost::units::list<boost::units::si::second_base_unit, boost::units::list<boost::units::si::ampere_base_unit, boost::units::list<boost::units::si::kelvin_base_unit, boost::units::list<boost::units::si::mole_base_unit, boost::units::list<boost::units::si::candela_base_unit, boost::units::list<boost::units::angle::radian_base_unit, boost::units::list<boost::units::angle::steradian_base_unit, boost::units::dimensionless_type> > > > > > > > > >, void>, double>, boost::units::quantity<boost::units::unit<boost::units::list<boost::units::dim<boost::units::plane_angle_base_dimension, boost::units::static_rational<1, 1> >, boost::units::dimensionless_type>, boost::units::homogeneous_system<boost::units::list<boost::units::si::meter_base_unit, boost::units::list<boost::units::scaled_base_unit<boost::units::cgs::gram_base_unit, boost::units::scale<10, static_rational<3> > >, boost::units::list<boost::units::si::second_base_unit, boost::units::list<boost::units::si::ampere_base_unit, boost::units::list<boost::units::si::kelvin_base_unit, boost::units::list<boost::units::si::mole_base_unit, boost::units::list<boost::units::si::candela_base_unit, boost::units::list<boost::units::angle::radian_base_unit, boost::units::list<boost::units::angle::steradian_base_unit, boost::units::dimensionless_type> > > > > > > > > >, void>, double> >' requested here
redux1 = op( op( redux1, tmp[i ] ), tmp[i+1UL] );
^
/usr/local/include/blaze/math/expressions/DVecReduceExpr.h:390:11: note: in instantiation of function template specialization 'blaze::dvecreduce<blaze::DynamicVector<boost::units::quantity<boost::units::unit<boost::units::list<boost::units::dim<boost::units::plane_angle_base_dimension, boost::units::static_rational<1, 1> >, boost::units::dimensionless_type>, boost::units::homogeneous_system<boost::units::list<boost::units::si::meter_base_unit, boost::units::list<boost::units::scaled_base_unit<boost::units::cgs::gram_base_unit, boost::units::scale<10, static_rational<3> > >, boost::units::list<boost::units::si::second_base_unit, boost::units::list<boost::units::si::ampere_base_unit, boost::units::list<boost::units::si::kelvin_base_unit, boost::units::list<boost::units::si::mole_base_unit, boost::units::list<boost::units::si::candela_base_unit, boost::units::list<boost::units::angle::radian_base_unit, boost::units::list<boost::units::angle::steradian_base_unit, boost::units::dimensionless_type> > > > > > > > > >, void>, double>, false, blaze::GroupTag<0> >, false, blaze::Min>' requested here
return dvecreduce( ~dv, std::move(op) );
^
/usr/local/include/blaze/math/simd/Min.h:66:36: note: candidate function not viable: no known conversion from 'const boost::units::quantity<boost::units::unit<boost::units::list<boost::units::dim<boost::units::plane_angle_base_dimension, boost::units::static_rational<1, 1> >, boost::units::dimensionless_type>, boost::units::homogeneous_system<boost::units::list<boost::units::si::meter_base_unit, boost::units::list<boost::units::scaled_base_unit<boost::units::cgs::gram_base_unit, boost::units::scale<10, static_rational<3> > >, boost::units::list<boost::units::si::second_base_unit, boost::units::list<boost::units::si::ampere_base_unit, boost::units::list<boost::units::si::kelvin_base_unit, boost::units::list<boost::units::si::mole_base_unit, boost::units::list<boost::units::si::candela_base_unit, boost::units::list<boost::units::angle::radian_base_unit, boost::units::list<boost::units::angle::steradian_base_unit, boost::units::dimensionless_type> > > > > > > > > >, void>, double>' to 'const blaze::SIMDint8' for 1st argument
BLAZE_ALWAYS_INLINE const SIMDint8 min( const SIMDint8& a, const SIMDint8& b ) noexcept
^
/usr/local/include/blaze/math/simd/Min.h:95:37: note: candidate function not viable: no known conversion from 'const boost::units::quantity<boost::units::unit<boost::units::list<boost::units::dim<boost::units::plane_angle_base_dimension, boost::units::static_rational<1, 1> >, boost::units::dimensionless_type>, boost::units::homogeneous_system<boost::units::list<boost::units::si::meter_base_unit, boost::units::list<boost::units::scaled_base_unit<boost::units::cgs::gram_base_unit, boost::units::scale<10, static_rational<3> > >, boost::units::list<boost::units::si::second_base_unit, boost::units::list<boost::units::si::ampere_base_unit, boost::units::list<boost::units::si::kelvin_base_unit, boost::units::list<boost::units::si::mole_base_unit, boost::units::list<boost::units::si::candela_base_unit, boost::units::list<boost::units::angle::radian_base_unit, boost::units::list<boost::units::angle::steradian_base_unit, boost::units::dimensionless_type> > > > > > > > > >, void>, double>' to 'const blaze::SIMDuint8' for 1st argument
BLAZE_ALWAYS_INLINE const SIMDuint8 min( const SIMDuint8& a, const SIMDuint8& b ) noexcept
^
/usr/local/include/blaze/math/simd/Min.h:132:37: note: candidate function not viable: no known conversion from 'const boost::units::quantity<boost::units::unit<boost::units::list<boost::units::dim<boost::units::plane_angle_base_dimension, boost::units::static_rational<1, 1> >, boost::units::dimensionless_type>, boost::units::homogeneous_system<boost::units::list<boost::units::si::meter_base_unit, boost::units::list<boost::units::scaled_base_unit<boost::units::cgs::gram_base_unit, boost::units::scale<10, static_rational<3> > >, boost::units::list<boost::units::si::second_base_unit, boost::units::list<boost::units::si::ampere_base_unit, boost::units::list<boost::units::si::kelvin_base_unit, boost::units::list<boost::units::si::mole_base_unit, boost::units::list<boost::units::si::candela_base_unit, boost::units::list<boost::units::angle::radian_base_unit, boost::units::list<boost::units::angle::steradian_base_unit, boost::units::dimensionless_type> > > > > > > > > >, void>, double>' to 'const blaze::SIMDint16' for 1st argument
BLAZE_ALWAYS_INLINE const SIMDint16 min( const SIMDint16& a, const SIMDint16& b ) noexcept
^
/usr/local/include/blaze/math/simd/Min.h:161:38: note: candidate function not viable: no known conversion from 'const boost::units::quantity<boost::units::unit<boost::units::list<boost::units::dim<boost::units::plane_angle_base_dimension, boost::units::static_rational<1, 1> >, boost::units::dimensionless_type>, boost::units::homogeneous_system<boost::units::list<boost::units::si::meter_base_unit, boost::units::list<boost::units::scaled_base_unit<boost::units::cgs::gram_base_unit, boost::units::scale<10, static_rational<3> > >, boost::units::list<boost::units::si::second_base_unit, boost::units::list<boost::units::si::ampere_base_unit, boost::units::list<boost::units::si::kelvin_base_unit, boost::units::list<boost::units::si::mole_base_unit, boost::units::list<boost::units::si::candela_base_unit, boost::units::list<boost::units::angle::radian_base_unit, boost::units::list<boost::units::angle::steradian_base_unit, boost::units::dimensionless_type> > > > > > > > > >, void>, double>' to 'const blaze::SIMDuint16' for 1st argument
BLAZE_ALWAYS_INLINE const SIMDuint16 min( const SIMDuint16& a, const SIMDuint16& b ) noexcept
^
/usr/local/include/blaze/math/simd/Min.h:198:37: note: candidate function not viable: no known conversion from 'const boost::units::quantity<boost::units::unit<boost::units::list<boost::units::dim<boost::units::plane_angle_base_dimension, boost::units::static_rational<1, 1> >, boost::units::dimensionless_type>, boost::units::homogeneous_system<boost::units::list<boost::units::si::meter_base_unit, boost::units::list<boost::units::scaled_base_unit<boost::units::cgs::gram_base_unit, boost::units::scale<10, static_rational<3> > >, boost::units::list<boost::units::si::second_base_unit, boost::units::list<boost::units::si::ampere_base_unit, boost::units::list<boost::units::si::kelvin_base_unit, boost::units::list<boost::units::si::mole_base_unit, boost::units::list<boost::units::si::candela_base_unit, boost::units::list<boost::units::angle::radian_base_unit, boost::units::list<boost::units::angle::steradian_base_unit, boost::units::dimensionless_type> > > > > > > > > >, void>, double>' to 'const blaze::SIMDint32' for 1st argument
BLAZE_ALWAYS_INLINE const SIMDint32 min( const SIMDint32& a, const SIMDint32& b ) noexcept
^
/usr/local/include/blaze/math/simd/Min.h:227:38: note: candidate function not viable: no known conversion from 'const boost::units::quantity<boost::units::unit<boost::units::list<boost::units::dim<boost::units::plane_angle_base_dimension, boost::units::static_rational<1, 1> >, boost::units::dimensionless_type>, boost::units::homogeneous_system<boost::units::list<boost::units::si::meter_base_unit, boost::units::list<boost::units::scaled_base_unit<boost::units::cgs::gram_base_unit, boost::units::scale<10, static_rational<3> > >, boost::units::list<boost::units::si::second_base_unit, boost::units::list<boost::units::si::ampere_base_unit, boost::units::list<boost::units::si::kelvin_base_unit, boost::units::list<boost::units::si::mole_base_unit, boost::units::list<boost::units::si::candela_base_unit, boost::units::list<boost::units::angle::radian_base_unit, boost::units::list<boost::units::angle::steradian_base_unit, boost::units::dimensionless_type> > > > > > > > > >, void>, double>' to 'const blaze::SIMDuint32' for 1st argument
BLAZE_ALWAYS_INLINE const SIMDuint32 min( const SIMDuint32& a, const SIMDuint32& b ) noexcept
^
/usr/local/include/blaze/math/simd/Min.h:267:4: note: candidate template ignored: could not match 'SIMDf32' against 'quantity'
min( const SIMDf32<T1>& a, const SIMDf32<T2>& b ) noexcept
^
/usr/local/include/blaze/math/simd/Min.h:307:4: note: candidate template ignored: could not match 'SIMDf64' against 'quantity'
min( const SIMDf64<T1>& a, const SIMDf64<T2>& b ) noexcept
^
/usr/local/include/blaze/util/algorithms/Min.h:72:4: note: candidate template ignored: substitution failure [with T1 = boost::units::quantity<boost::units::unit<boost::units::list<boost::units::dim<boost::units::plane_angle_base_dimension, boost::units::static_rational<1, 1> >, boost::units::dimensionless_type>, boost::units::homogeneous_system<boost::units::list<boost::units::si::meter_base_unit, boost::units::list<boost::units::scaled_base_unit<boost::units::cgs::gram_base_unit, boost::units::scale<10, static_rational<3> > >, boost::units::list<boost::units::si::second_base_unit, boost::units::list<boost::units::si::ampere_base_unit, boost::units::list<boost::units::si::kelvin_base_unit, boost::units::list<boost::units::si::mole_base_unit, boost::units::list<boost::units::si::candela_base_unit, boost::units::list<boost::units::angle::radian_base_unit, boost::units::list<boost::units::angle::steradian_base_unit, boost::units::dimensionless_type> > > > > > > > > >, void>, double>, T2 = boost::units::quantity<boost::units::unit<boost::units::list<boost::units::dim<boost::units::plane_angle_base_dimension, boost::units::static_rational<1, 1> >, boost::units::dimensionless_type>, boost::units::homogeneous_system<boost::units::list<boost::units::si::meter_base_unit, boost::units::list<boost::units::scaled_base_unit<boost::units::cgs::gram_base_unit, boost::units::scale<10, static_rational<3> > >, boost::units::list<boost::units::si::second_base_unit, boost::units::list<boost::units::si::ampere_base_unit, boost::units::list<boost::units::si::kelvin_base_unit, boost::units::list<boost::units::si::mole_base_unit, boost::units::list<boost::units::si::candela_base_unit, boost::units::list<boost::units::angle::radian_base_unit, boost::units::list<boost::units::angle::steradian_base_unit, boost::units::dimensionless_type> > > > > > > > > >, void>, double>]: no type named 'Type' in 'blaze::EnableIf<false, void>'
min( const T1& a, const T2& b ) noexcept
^
/usr/local/include/blaze/math/proxy/Proxy.h:2070:23: note: candidate template ignored: could not match 'Proxy' against 'quantity'
inline decltype(auto) min( const Proxy<PT1,RT1>& lhs, const Proxy<PT2,RT2>& rhs )
^
/usr/local/include/blaze/math/proxy/Proxy.h:2088:23: note: candidate template ignored: could not match 'Proxy' against 'quantity'
inline decltype(auto) min( const Proxy<PT,RT>& lhs, const T& rhs )
^
/usr/local/include/blaze/math/proxy/Proxy.h:2106:23: note: candidate template ignored: could not match 'Proxy' against 'quantity'
inline decltype(auto) min( const T& lhs, const Proxy<PT,RT>& rhs )
^
/usr/local/include/blaze/util/algorithms/Min.h:93:4: note: candidate function template not viable: requires 3 arguments, but 2 were provided
min( const T1& a, const T2& b, const T3& c ) noexcept
^
/usr/local/include/blaze/util/algorithms/Min.h:117:4: note: candidate function template not viable: requires at least 3 arguments, but 2 were provided
min( const T1& a, const T2& b, const T3& c, const Ts&... args ) noexcept
^
In file included from /Users/dwright/projects/dv-laser-calibration/LaserCalibration.cpp:1:
In file included from /Users/dwright/projects/dv-laser-calibration/LaserCalibration.hpp:6:
In file included from /Users/dwright/projects/dv-laser-calibration/blaze-units/Include.hpp:4:
In file included from /Users/dwright/projects/dv-laser-calibration/blaze-units/Angle.hpp:4:
In file included from /usr/local/include/blaze/math/DynamicMatrix.h:46:
In file included from /usr/local/include/blaze/math/DynamicVector.h:45:
In file included from /usr/local/include/blaze/math/DenseVector.h:62:
/usr/local/include/blaze/math/expressions/DVecReduceExpr.h:143:20: error: no matching function for call to object of type 'blaze::Min'
redux2 = op( op( redux2, tmp[i+2UL] ), tmp[i+3UL] );
^~
/usr/local/include/blaze/math/expressions/DVecReduceExpr.h:390:11: note: in instantiation of function template specialization 'blaze::dvecreduce<blaze::DynamicVector<boost::units::quantity<boost::units::unit<boost::units::list<boost::units::dim<boost::units::plane_angle_base_dimension, boost::units::static_rational<1, 1> >, boost::units::dimensionless_type>, boost::units::homogeneous_system<boost::units::list<boost::units::si::meter_base_unit, boost::units::list<boost::units::scaled_base_unit<boost::units::cgs::gram_base_unit, boost::units::scale<10, static_rational<3> > >, boost::units::list<boost::units::si::second_base_unit, boost::units::list<boost::units::si::ampere_base_unit, boost::units::list<boost::units::si::kelvin_base_unit, boost::units::list<boost::units::si::mole_base_unit, boost::units::list<boost::units::si::candela_base_unit, boost::units::list<boost::units::angle::radian_base_unit, boost::units::list<boost::units::angle::steradian_base_unit, boost::units::dimensionless_type> > > > > > > > > >, void>, double>, false, blaze::GroupTag<0> >, false, blaze::Min>' requested here
return dvecreduce( ~dv, std::move(op) );
^
/usr/local/include/blaze/math/functors/Min.h:90:61: note: candidate template ignored: substitution failure [with T1 = boost::units::quantity<boost::units::unit<boost::units::list<boost::units::dim<boost::units::plane_angle_base_dimension, boost::units::static_rational<1, 1> >, boost::units::dimensionless_type>, boost::units::homogeneous_system<boost::units::list<boost::units::si::meter_base_unit, boost::units::list<boost::units::scaled_base_unit<boost::units::cgs::gram_base_unit, boost::units::scale<10, static_rational<3> > >, boost::units::list<boost::units::si::second_base_unit, boost::units::list<boost::units::si::ampere_base_unit, boost::units::list<boost::units::si::kelvin_base_unit, boost::units::list<boost::units::si::mole_base_unit, boost::units::list<boost::units::si::candela_base_unit, boost::units::list<boost::units::angle::radian_base_unit, boost::units::list<boost::units::angle::steradian_base_unit, boost::units::dimensionless_type> > > > > > > > > >, void>, double>, T2 = boost::units::quantity<boost::units::unit<boost::units::list<boost::units::dim<boost::units::plane_angle_base_dimension, boost::units::static_rational<1, 1> >, boost::units::dimensionless_type>, boost::units::homogeneous_system<boost::units::list<boost::units::si::meter_base_unit, boost::units::list<boost::units::scaled_base_unit<boost::units::cgs::gram_base_unit, boost::units::scale<10, static_rational<3> > >, boost::units::list<boost::units::si::second_base_unit, boost::units::list<boost::units::si::ampere_base_unit, boost::units::list<boost::units::si::kelvin_base_unit, boost::units::list<boost::units::si::mole_base_unit, boost::units::list<boost::units::si::candela_base_unit, boost::units::list<boost::units::angle::radian_base_unit, boost::units::list<boost::units::angle::steradian_base_unit, boost::units::dimensionless_type> > > > > > > > > >, void>, double>]
BLAZE_ALWAYS_INLINE BLAZE_DEVICE_CALLABLE decltype(auto) operator()( const T1& a, const T2& b ) const
^
In file included from /Users/dwright/projects/dv-laser-calibration/LaserCalibration.cpp:1:
In file included from /Users/dwright/projects/dv-laser-calibration/LaserCalibration.hpp:6:
In file included from /Users/dwright/projects/dv-laser-calibration/blaze-units/Include.hpp:4:
In file included from /Users/dwright/projects/dv-laser-calibration/blaze-units/Angle.hpp:4:
In file included from /usr/local/include/blaze/math/DynamicMatrix.h:46:
In file included from /usr/local/include/blaze/math/DynamicVector.h:45:
In file included from /usr/local/include/blaze/math/DenseVector.h:62:
/usr/local/include/blaze/math/expressions/DVecReduceExpr.h:146:16: error: no matching function for call to object of type 'blaze::Min'
redux1 = op( redux1, tmp[i ] );
^~
/usr/local/include/blaze/math/functors/Min.h:90:61: note: candidate template ignored: substitution failure [with T1 = boost::units::quantity<boost::units::unit<boost::units::list<boost::units::dim<boost::units::plane_angle_base_dimension, boost::units::static_rational<1, 1> >, boost::units::dimensionless_type>, boost::units::homogeneous_system<boost::units::list<boost::units::si::meter_base_unit, boost::units::list<boost::units::scaled_base_unit<boost::units::cgs::gram_base_unit, boost::units::scale<10, static_rational<3> > >, boost::units::list<boost::units::si::second_base_unit, boost::units::list<boost::units::si::ampere_base_unit, boost::units::list<boost::units::si::kelvin_base_unit, boost::units::list<boost::units::si::mole_base_unit, boost::units::list<boost::units::si::candela_base_unit, boost::units::list<boost::units::angle::radian_base_unit, boost::units::list<boost::units::angle::steradian_base_unit, boost::units::dimensionless_type> > > > > > > > > >, void>, double>, T2 = boost::units::quantity<boost::units::unit<boost::units::list<boost::units::dim<boost::units::plane_angle_base_dimension, boost::units::static_rational<1, 1> >, boost::units::dimensionless_type>, boost::units::homogeneous_system<boost::units::list<boost::units::si::meter_base_unit, boost::units::list<boost::units::scaled_base_unit<boost::units::cgs::gram_base_unit, boost::units::scale<10, static_rational<3> > >, boost::units::list<boost::units::si::second_base_unit, boost::units::list<boost::units::si::ampere_base_unit, boost::units::list<boost::units::si::kelvin_base_unit, boost::units::list<boost::units::si::mole_base_unit, boost::units::list<boost::units::si::candela_base_unit, boost::units::list<boost::units::angle::radian_base_unit, boost::units::list<boost::units::angle::steradian_base_unit, boost::units::dimensionless_type> > > > > > > > > >, void>, double>]
BLAZE_ALWAYS_INLINE BLAZE_DEVICE_CALLABLE decltype(auto) operator()( const T1& a, const T2& b ) const
^
In file included from /Users/dwright/projects/dv-laser-calibration/LaserCalibration.cpp:1:
In file included from /Users/dwright/projects/dv-laser-calibration/LaserCalibration.hpp:6:
In file included from /Users/dwright/projects/dv-laser-calibration/blaze-units/Include.hpp:4:
In file included from /Users/dwright/projects/dv-laser-calibration/blaze-units/Angle.hpp:4:
In file included from /usr/local/include/blaze/math/DynamicMatrix.h:46:
In file included from /usr/local/include/blaze/math/DynamicVector.h:45:
In file included from /usr/local/include/blaze/math/DenseVector.h:62:
/usr/local/include/blaze/math/expressions/DVecReduceExpr.h:147:16: error: no matching function for call to object of type 'blaze::Min'
redux2 = op( redux2, tmp[i+1UL] );
^~
/usr/local/include/blaze/math/functors/Min.h:90:61: note: candidate template ignored: substitution failure [with T1 = boost::units::quantity<boost::units::unit<boost::units::list<boost::units::dim<boost::units::plane_angle_base_dimension, boost::units::static_rational<1, 1> >, boost::units::dimensionless_type>, boost::units::homogeneous_system<boost::units::list<boost::units::si::meter_base_unit, boost::units::list<boost::units::scaled_base_unit<boost::units::cgs::gram_base_unit, boost::units::scale<10, static_rational<3> > >, boost::units::list<boost::units::si::second_base_unit, boost::units::list<boost::units::si::ampere_base_unit, boost::units::list<boost::units::si::kelvin_base_unit, boost::units::list<boost::units::si::mole_base_unit, boost::units::list<boost::units::si::candela_base_unit, boost::units::list<boost::units::angle::radian_base_unit, boost::units::list<boost::units::angle::steradian_base_unit, boost::units::dimensionless_type> > > > > > > > > >, void>, double>, T2 = boost::units::quantity<boost::units::unit<boost::units::list<boost::units::dim<boost::units::plane_angle_base_dimension, boost::units::static_rational<1, 1> >, boost::units::dimensionless_type>, boost::units::homogeneous_system<boost::units::list<boost::units::si::meter_base_unit, boost::units::list<boost::units::scaled_base_unit<boost::units::cgs::gram_base_unit, boost::units::scale<10, static_rational<3> > >, boost::units::list<boost::units::si::second_base_unit, boost::units::list<boost::units::si::ampere_base_unit, boost::units::list<boost::units::si::kelvin_base_unit, boost::units::list<boost::units::si::mole_base_unit, boost::units::list<boost::units::si::candela_base_unit, boost::units::list<boost::units::angle::radian_base_unit, boost::units::list<boost::units::angle::steradian_base_unit, boost::units::dimensionless_type> > > > > > > > > >, void>, double>]
BLAZE_ALWAYS_INLINE BLAZE_DEVICE_CALLABLE decltype(auto) operator()( const T1& a, const T2& b ) const
^
In file included from /Users/dwright/projects/dv-laser-calibration/LaserCalibration.cpp:1:
In file included from /Users/dwright/projects/dv-laser-calibration/LaserCalibration.hpp:6:
In file included from /Users/dwright/projects/dv-laser-calibration/blaze-units/Include.hpp:4:
In file included from /Users/dwright/projects/dv-laser-calibration/blaze-units/Angle.hpp:4:
In file included from /usr/local/include/blaze/math/DynamicMatrix.h:46:
In file included from /usr/local/include/blaze/math/DynamicVector.h:45:
In file included from /usr/local/include/blaze/math/DenseVector.h:62:
/usr/local/include/blaze/math/expressions/DVecReduceExpr.h:150:16: error: no matching function for call to object of type 'blaze::Min'
redux1 = op( redux1, tmp[i] );
^~
/usr/local/include/blaze/math/functors/Min.h:90:61: note: candidate template ignored: substitution failure [with T1 = boost::units::quantity<boost::units::unit<boost::units::list<boost::units::dim<boost::units::plane_angle_base_dimension, boost::units::static_rational<1, 1> >, boost::units::dimensionless_type>, boost::units::homogeneous_system<boost::units::list<boost::units::si::meter_base_unit, boost::units::list<boost::units::scaled_base_unit<boost::units::cgs::gram_base_unit, boost::units::scale<10, static_rational<3> > >, boost::units::list<boost::units::si::second_base_unit, boost::units::list<boost::units::si::ampere_base_unit, boost::units::list<boost::units::si::kelvin_base_unit, boost::units::list<boost::units::si::mole_base_unit, boost::units::list<boost::units::si::candela_base_unit, boost::units::list<boost::units::angle::radian_base_unit, boost::units::list<boost::units::angle::steradian_base_unit, boost::units::dimensionless_type> > > > > > > > > >, void>, double>, T2 = boost::units::quantity<boost::units::unit<boost::units::list<boost::units::dim<boost::units::plane_angle_base_dimension, boost::units::static_rational<1, 1> >, boost::units::dimensionless_type>, boost::units::homogeneous_system<boost::units::list<boost::units::si::meter_base_unit, boost::units::list<boost::units::scaled_base_unit<boost::units::cgs::gram_base_unit, boost::units::scale<10, static_rational<3> > >, boost::units::list<boost::units::si::second_base_unit, boost::units::list<boost::units::si::ampere_base_unit, boost::units::list<boost::units::si::kelvin_base_unit, boost::units::list<boost::units::si::mole_base_unit, boost::units::list<boost::units::si::candela_base_unit, boost::units::list<boost::units::angle::radian_base_unit, boost::units::list<boost::units::angle::steradian_base_unit, boost::units::dimensionless_type> > > > > > > > > >, void>, double>]
BLAZE_ALWAYS_INLINE BLAZE_DEVICE_CALLABLE decltype(auto) operator()( const T1& a, const T2& b ) const
^
In file included from /Users/dwright/projects/dv-laser-calibration/LaserCalibration.cpp:1:
In file included from /Users/dwright/projects/dv-laser-calibration/LaserCalibration.hpp:6:
In file included from /Users/dwright/projects/dv-laser-calibration/blaze-units/Include.hpp:4:
In file included from /Users/dwright/projects/dv-laser-calibration/blaze-units/Angle.hpp:4:
In file included from /usr/local/include/blaze/math/DynamicMatrix.h:46:
In file included from /usr/local/include/blaze/math/DynamicVector.h:45:
In file included from /usr/local/include/blaze/math/DenseVector.h:62:
/usr/local/include/blaze/math/expressions/DVecReduceExpr.h:153:11: error: no matching function for call to object of type 'blaze::Min'
return op( redux1, redux2 );
^~
/usr/local/include/blaze/math/functors/Min.h:90:61: note: candidate template ignored: substitution failure [with T1 = boost::units::quantity<boost::units::unit<boost::units::list<boost::units::dim<boost::units::plane_angle_base_dimension, boost::units::static_rational<1, 1> >, boost::units::dimensionless_type>, boost::units::homogeneous_system<boost::units::list<boost::units::si::meter_base_unit, boost::units::list<boost::units::scaled_base_unit<boost::units::cgs::gram_base_unit, boost::units::scale<10, static_rational<3> > >, boost::units::list<boost::units::si::second_base_unit, boost::units::list<boost::units::si::ampere_base_unit, boost::units::list<boost::units::si::kelvin_base_unit, boost::units::list<boost::units::si::mole_base_unit, boost::units::list<boost::units::si::candela_base_unit, boost::units::list<boost::units::angle::radian_base_unit, boost::units::list<boost::units::angle::steradian_base_unit, boost::units::dimensionless_type> > > > > > > > > >, void>, double>, T2 = boost::units::quantity<boost::units::unit<boost::units::list<boost::units::dim<boost::units::plane_angle_base_dimension, boost::units::static_rational<1, 1> >, boost::units::dimensionless_type>, boost::units::homogeneous_system<boost::units::list<boost::units::si::meter_base_unit, boost::units::list<boost::units::scaled_base_unit<boost::units::cgs::gram_base_unit, boost::units::scale<10, static_rational<3> > >, boost::units::list<boost::units::si::second_base_unit, boost::units::list<boost::units::si::ampere_base_unit, boost::units::list<boost::units::si::kelvin_base_unit, boost::units::list<boost::units::si::mole_base_unit, boost::units::list<boost::units::si::candela_base_unit, boost::units::list<boost::units::angle::radian_base_unit, boost::units::list<boost::units::angle::steradian_base_unit, boost::units::dimensionless_type> > > > > > > > > >, void>, double>]
BLAZE_ALWAYS_INLINE BLAZE_DEVICE_CALLABLE decltype(auto) operator()( const T1& a, const T2& b ) const
^
6 warnings and 14 errors generated.
make[2]: *** [CMakeFiles/LaserCalibration.dir/LaserCalibration.cpp.o] Error 1
make[1]: *** [CMakeFiles/LaserCalibration.dir/all] Error 2
make: *** [all] Error 2
16:30:09: The process "/usr/local/Cellar/cmake/3.17.3/bin/cmake" exited with code 2.
Error while building/deploying project LaserCalibration (kit: Imported Kit)
When executing step "CMake Build"
16:30:09: Elapsed time: 00:06.
Comments (10)
-
reporter -
Hi David!
Thanks again for reporting problems with Blaze. Luckily, this time all problems can be resolved rather easily:
- boost.units does not provide a
min()
andmax()
function. However, they provide afmin()
andfmax()
function in<boost/units/cmath.hpp>
. You can provide the according wrappers for them and use them in combination withblaze::reduce()
. - In order to compute the standard deviation, please create a uniform vector from the
mean
value by means ofblaze::uniform()
.
The following shows the complete code, which should compile and work flawlessly:
struct Fmin { template< typename T1, typename T2 > constexpr decltype(auto) operator()( const T1& a, const T2& b ) const { return fmin( a, b ); } }; struct Fmax { template< typename T1, typename T2 > constexpr decltype(auto) operator()( const T1& a, const T2& b ) const { return fmax( a, b ); } }; int main() { using namespace boost::units; using unit = boost::units::quantity<boost::units::si::plane_angle>; const DynamicVector<unit> x{ 1.0 * si::radian, 2.0 * si::radian }; const unit max = blaze::reduce( x, Fmax{} ); const unit min = blaze::reduce( x, Fmin{} ); const unit mean = blaze::mean(x); const unit stddev = sqrt( blaze::mean( blaze::pow2( x - blaze::uniform(2,mean) ) ) ); std::cerr << "\n" << "max = " << max << "\n" << "min = " << min << "\n" << "mean = " << mean << "\n" << "stddev = " << stddev << "\n" << "\n"; }
On my machine this prints:
max = 2 rad min = 1 rad mean = 1.5 rad stddev = 0.5 rad
Does this solve the problem for you?
Best regards,
Klaus!
- boost.units does not provide a
-
reporter Indeed this solves the problem perfectly! Thank you for your fantastic support once again, Klaus!
And have a nice weekend!
-
-
assigned issue to
-
assigned issue to
-
- changed status to open
-
Hi David!
Thanks again for reporting this problem. It took some time and some refactoring, but now you’re able to use your original code without any problems. In case you encounter a similar problem, please feel free to report it again. Thanks,
Best regards,
Klaus!
-
- changed status to resolved
-
reporter Hello Klaus,
thank you very much for your continuous effort! I was just trying out your latest changes (I pulled f7d985dd85) but I now seem to again run into similar problems with vector/scalar multiplication and division as you have resolved in a previous issue that I opened:
#385.
Code producing the error:
const boost::units::quantity<boost::units::si::length> bandwidth = 1.0 * boost::units::si::metre; const blaze::DynamicVector<boost::units::quantity<boost::units::si::length>> sample = {1.0 * boost::units::si::metre, 1.0 * boost::units::si::metre}; const blaze::DynamicVector<boost::units::quantity<boost::units::si::dimensionless>> weights = sample / bandwidth; const double scale = 1.0; const blaze::DynamicVector<boost::units::quantity<boost::units::si::length>> scaled = sample / scale;
Compiler log:
/usr/local/include/blaze/math/expressions/DVecScalarDivExpr.h:1090:11: error: no matching constructor for initialization of 'ReturnType' (aka 'const DVecScalarMultExpr<blaze::DynamicVector<boost::units::quantity<boost::units::unit<boost::units::list<boost::units::dim<boost::units::length_base_dimension, boost::units::static_rational<1, 1> >, boost::units::dimensionless_type>, boost::units::homogeneous_system<boost::units::list<boost::units::si::meter_base_unit, boost::units::list<boost::units::scaled_base_unit<boost::units::cgs::gram_base_unit, boost::units::scale<10, static_rational<3> > >, boost::units::list<boost::units::si::second_base_unit, boost::units::list<boost::units::si::ampere_base_unit, boost::units::list<boost::units::si::kelvin_base_unit, boost::units::list<boost::units::si::mole_base_unit, boost::units::list<boost::units::si::candela_base_unit, boost::units::list<boost::units::angle::radian_base_unit, boost::units::list<boost::units::angle::steradian_base_unit, boost::units::dimensionless_type> > > > > > > > > >, void>, double>, false, blaze::GroupTag<0> >, boost::units::quantity<boost::units::unit<boost::units::dimensionless_type, boost::units::homogeneous_system<boost::units::list<boost::units::si::meter_base_unit, boost::units::list<boost::units::scaled_base_unit<boost::units::cgs::gram_base_unit, boost::units::scale<10, static_rational<3> > >, boost::units::list<boost::units::si::second_base_unit, boost::units::list<boost::units::si::ampere_base_unit, boost::units::list<boost::units::si::kelvin_base_unit, boost::units::list<boost::units::si::mole_base_unit, boost::units::list<boost::units::si::candela_base_unit, boost::units::list<boost::units::angle::radian_base_unit, boost::units::list<boost::units::angle::steradian_base_unit, boost::units::dimensionless_type> > > > > > > > > >, void>, double>, false>')
return ReturnType( ~vec, inv(scalar) );
^
~~~~~/usr/local/include/blaze/math/expressions/DVecScalarDivExpr.h:1130:11: note: in instantiation of function template specialization 'blaze::dvecscalardiv<blaze::DynamicVector<boost::units::quantity<boost::units::unit<boost::units::list<boost::units::dim<boost::units::length_base_dimension, boost::units::static_rational<1, 1> >, boost::units::dimensionless_type>, boost::units::homogeneous_system<boost::units::list<boost::units::si::meter_base_unit, boost::units::list<boost::units::scaled_base_unit<boost::units::cgs::gram_base_unit, boost::units::scale<10, static_rational<3> > >, boost::units::list<boost::units::si::second_base_unit, boost::units::list<boost::units::si::ampere_base_unit, boost::units::list<boost::units::si::kelvin_base_unit, boost::units::list<boost::units::si::mole_base_unit, boost::units::list<boost::units::si::candela_base_unit, boost::units::list<boost::units::angle::radian_base_unit, boost::units::list<boost::units::angle::steradian_base_unit, boost::units::dimensionless_type> > > > > > > > > >, void>, double>, false, blaze::GroupTag<0> >, false, boost::units::quantity<boost::units::unit<boost::units::list<boost::units::dim<boost::units::length_base_dimension, boost::units::static_rational<1, 1> >, boost::units::dimensionless_type>, boost::units::homogeneous_system<boost::units::list<boost::units::si::meter_base_unit, boost::units::list<boost::units::scaled_base_unit<boost::units::cgs::gram_base_unit, boost::units::scale<10, static_rational<3> > >, boost::units::list<boost::units::si::second_base_unit, boost::units::list<boost::units::si::ampere_base_unit, boost::units::list<boost::units::si::kelvin_base_unit, boost::units::list<boost::units::si::mole_base_unit, boost::units::list<boost::units::si::candela_base_unit, boost::units::list<boost::units::angle::radian_base_unit, boost::units::list<boost::units::angle::steradian_base_unit, boost::units::dimensionless_type> > > > > > > > > >, void>, double>, nullptr>' requested here
return dvecscalardiv( ~vec, scalar );
^
/Users/dwright/projects/dv-laser-calibration/calibration-manager/MeanShift.hpp:168:14: note: in instantiation of function template specialization 'blaze::operator/<blaze::DynamicVector<boost::units::quantity<boost::units::unit<boost::units::list<boost::units::dim<boost::units::length_base_dimension, boost::units::static_rational<1, 1> >, boost::units::dimensionless_type>, boost::units::homogeneous_system<boost::units::list<boost::units::si::meter_base_unit, boost::units::list<boost::units::scaled_base_unit<boost::units::cgs::gram_base_unit, boost::units::scale<10, static_rational<3> > >, boost::units::list<boost::units::si::second_base_unit, boost::units::list<boost::units::si::ampere_base_unit, boost::units::list<boost::units::si::kelvin_base_unit, boost::units::list<boost::units::si::mole_base_unit, boost::units::list<boost::units::si::candela_base_unit, boost::units::list<boost::units::angle::radian_base_unit, boost::units::list<boost::units::angle::steradian_base_unit, boost::units::dimensionless_type> > > > > > > > > >, void>, double>, false, blaze::GroupTag<0> >, boost::units::quantity<boost::units::unit<boost::units::list<boost::units::dim<boost::units::length_base_dimension, boost::units::static_rational<1, 1> >, boost::units::dimensionless_type>, boost::units::homogeneous_system<boost::units::list<boost::units::si::meter_base_unit, boost::units::list<boost::units::scaled_base_unit<boost::units::cgs::gram_base_unit, boost::units::scale<10, static_rational<3> > >, boost::units::list<boost::units::si::second_base_unit, boost::units::list<boost::units::si::ampere_base_unit, boost::units::list<boost::units::si::kelvin_base_unit, boost::units::list<boost::units::si::mole_base_unit, boost::units::list<boost::units::si::candela_base_unit, boost::units::list<boost::units::angle::radian_base_unit, boost::units::list<boost::units::angle::steradian_base_unit, boost::units::dimensionless_type> > > > > > > > > >, void>, double>, false, nullptr>' requested here
= sample / bandwidth;
^
/usr/local/include/blaze/math/expressions/DVecScalarMultExpr.h:449:11: note: candidate constructor not viable: no known conversion from 'quantity<unit<boost::units::list<boost::units::dim<boost::units::length_base_dimension, boost::units::static_rational<-1, 1> >, boost::units::dimensionless_type>, [2 * ...]>, [...]>' to 'quantity<unit<boost::units::dimensionless_type, [2 * ...]>, [...]>' for 2nd argument
inline DVecScalarMultExpr( const VT& vector, ST scalar ) noexcept
^
/usr/local/include/blaze/math/expressions/Forward.h:138:44: note: candidate constructor (the implicit copy constructor) not viable: requires 1 argument, but 2 were provided
template< typename, typename, bool > class DVecScalarMultExpr;
^
/usr/local/include/blaze/math/expressions/Forward.h:138:44: note: candidate constructor (the implicit move constructor) not viable: requires 1 argument, but 2 were provided
In file included from /Users/dwright/projects/dv-laser-calibration/calibration-manager/CalibrationManager.cpp:3:
/Users/dwright/projects/dv-laser-calibration/calibration-manager/MeanShift.hpp:170:17: warning: declaration shadows a local variable [-Wshadow]
const double scale = 1.0;
^
/Users/dwright/projects/dv-laser-calibration/calibration-manager/MeanShift.hpp:155:9: note: previous declaration is here
double scale;
^
In file included from /Users/dwright/projects/dv-laser-calibration/calibration-manager/CalibrationManager.cpp:1:
In file included from /Users/dwright/projects/dv-laser-calibration/calibration-manager/CalibrationManager.hpp:8:
In file included from /Users/dwright/projects/dv-laser-calibration/calibration-manager/CalibrationParameters.hpp:6:
In file included from /Users/dwright/projects/dv-laser-calibration/blaze-units/Include.hpp:4:
In file included from /Users/dwright/projects/dv-laser-calibration/blaze-units/Angle.hpp:4:
In file included from /usr/local/include/blaze/math/DynamicMatrix.h:46:
In file included from /usr/local/include/blaze/math/DynamicVector.h:45:
In file included from /usr/local/include/blaze/math/DenseVector.h:64:
/usr/local/include/blaze/math/expressions/DVecScalarDivExpr.h:1090:11: error: no matching constructor for initialization of 'ReturnType' (aka 'const DVecScalarMultExpr<blaze::DynamicVector<boost::units::quantity<boost::units::unit<boost::units::list<boost::units::dim<boost::units::length_base_dimension, boost::units::static_rational<1, 1> >, boost::units::dimensionless_type>, boost::units::homogeneous_system<boost::units::list<boost::units::si::meter_base_unit, boost::units::list<boost::units::scaled_base_unit<boost::units::cgs::gram_base_unit, boost::units::scale<10, static_rational<3> > >, boost::units::list<boost::units::si::second_base_unit, boost::units::list<boost::units::si::ampere_base_unit, boost::units::list<boost::units::si::kelvin_base_unit, boost::units::list<boost::units::si::mole_base_unit, boost::units::list<boost::units::si::candela_base_unit, boost::units::list<boost::units::angle::radian_base_unit, boost::units::list<boost::units::angle::steradian_base_unit, boost::units::dimensionless_type> > > > > > > > > >, void>, double>, false, blaze::GroupTag<0> >, boost::units::quantity<boost::units::unit<boost::units::list<boost::units::dim<boost::units::length_base_dimension, boost::units::static_rational<1, 1> >, boost::units::dimensionless_type>, boost::units::homogeneous_system<boost::units::list<boost::units::si::meter_base_unit, boost::units::list<boost::units::scaled_base_unit<boost::units::cgs::gram_base_unit, boost::units::scale<10, static_rational<3> > >, boost::units::list<boost::units::si::second_base_unit, boost::units::list<boost::units::si::ampere_base_unit, boost::units::list<boost::units::si::kelvin_base_unit, boost::units::list<boost::units::si::mole_base_unit, boost::units::list<boost::units::si::candela_base_unit, boost::units::list<boost::units::angle::radian_base_unit, boost::units::list<boost::units::angle::steradian_base_unit, boost::units::dimensionless_type> > > > > > > > > >, void>, double>, false>')
return ReturnType( ~vec, inv(scalar) );
^
~~~~~/usr/local/include/blaze/math/expressions/DVecScalarDivExpr.h:1130:11: note: in instantiation of function template specialization 'blaze::dvecscalardiv<blaze::DynamicVector<boost::units::quantity<boost::units::unit<boost::units::list<boost::units::dim<boost::units::length_base_dimension, boost::units::static_rational<1, 1> >, boost::units::dimensionless_type>, boost::units::homogeneous_system<boost::units::list<boost::units::si::meter_base_unit, boost::units::list<boost::units::scaled_base_unit<boost::units::cgs::gram_base_unit, boost::units::scale<10, static_rational<3> > >, boost::units::list<boost::units::si::second_base_unit, boost::units::list<boost::units::si::ampere_base_unit, boost::units::list<boost::units::si::kelvin_base_unit, boost::units::list<boost::units::si::mole_base_unit, boost::units::list<boost::units::si::candela_base_unit, boost::units::list<boost::units::angle::radian_base_unit, boost::units::list<boost::units::angle::steradian_base_unit, boost::units::dimensionless_type> > > > > > > > > >, void>, double>, false, blaze::GroupTag<0> >, false, double, nullptr>' requested here
return dvecscalardiv( ~vec, scalar );
^
/Users/dwright/projects/dv-laser-calibration/calibration-manager/MeanShift.hpp:171:97: note: in instantiation of function template specialization 'blaze::operator/<blaze::DynamicVector<boost::units::quantity<boost::units::unit<boost::units::list<boost::units::dim<boost::units::length_base_dimension, boost::units::static_rational<1, 1> >, boost::units::dimensionless_type>, boost::units::homogeneous_system<boost::units::list<boost::units::si::meter_base_unit, boost::units::list<boost::units::scaled_base_unit<boost::units::cgs::gram_base_unit, boost::units::scale<10, static_rational<3> > >, boost::units::list<boost::units::si::second_base_unit, boost::units::list<boost::units::si::ampere_base_unit, boost::units::list<boost::units::si::kelvin_base_unit, boost::units::list<boost::units::si::mole_base_unit, boost::units::list<boost::units::si::candela_base_unit, boost::units::list<boost::units::angle::radian_base_unit, boost::units::list<boost::units::angle::steradian_base_unit, boost::units::dimensionless_type> > > > > > > > > >, void>, double>, false, blaze::GroupTag<0> >, double, false, nullptr>' requested here
const blaze::DynamicVector<boost::units::quantity<boost::units::si::length>> scaled = sample / scale;
^
/usr/local/include/blaze/math/expressions/DVecScalarMultExpr.h:449:11: note: candidate constructor not viable: no known conversion from 'double' to 'boost::units::quantity<boost::units::unit<boost::units::list<boost::units::dim<boost::units::length_base_dimension, boost::units::static_rational<1, 1> >, boost::units::dimensionless_type>, boost::units::homogeneous_system<boost::units::list<boost::units::si::meter_base_unit, boost::units::list<boost::units::scaled_base_unit<boost::units::cgs::gram_base_unit, boost::units::scale<10, static_rational<3> > >, boost::units::list<boost::units::si::second_base_unit, boost::units::list<boost::units::si::ampere_base_unit, boost::units::list<boost::units::si::kelvin_base_unit, boost::units::list<boost::units::si::mole_base_unit, boost::units::list<boost::units::si::candela_base_unit, boost::units::list<boost::units::angle::radian_base_unit, boost::units::list<boost::units::angle::steradian_base_unit, boost::units::dimensionless_type> > > > > > > > > >, void>, double>' for 2nd argument
inline DVecScalarMultExpr( const VT& vector, ST scalar ) noexcept
^
/usr/local/include/blaze/math/expressions/Forward.h:138:44: note: candidate constructor (the implicit copy constructor) not viable: requires 1 argument, but 2 were provided
template< typename, typename, bool > class DVecScalarMultExpr;
^
/usr/local/include/blaze/math/expressions/Forward.h:138:44: note: candidate constructor (the implicit move constructor) not viable: requires 1 argument, but 2 were provided
-
Hi David!
I apologize for the regression. Commit 119b90a fixes the compilation issues and you should now be able to cleanly compile all your examples.
Best regards,
Klaus!
-
reporter Hi Klaus,
no problem at all! Works perfectly now, thank you!
Best,
David
- Log in to comment