diff --git a/.gitignore b/.gitignore index 1dae78f..76cab79 100644 --- a/.gitignore +++ b/.gitignore @@ -83,3 +83,5 @@ docs_build/xml-matlab docs_build/sphinx/_doxygen toolbox/lib/cmake-build-debug toolbox/cmake-build-debug + +/Xcode diff --git a/src/SplineConstant.cc b/src/SplineConstant.cc index e123f9a..1296725 100644 --- a/src/SplineConstant.cc +++ b/src/SplineConstant.cc @@ -72,8 +72,8 @@ namespace Splines { //! Evalute spline value at `x` real_type ConstantSpline::eval( real_type x ) const { - std::pair res; - this->search( x, res ); + std::pair res(0,x); + this->search( res ); return m_Y[res.first]; } diff --git a/src/SplineCubicBase.cc b/src/SplineCubicBase.cc index e42545a..06d1871 100644 --- a/src/SplineCubicBase.cc +++ b/src/SplineCubicBase.cc @@ -136,8 +136,8 @@ namespace Splines { real_type CubicSplineBase::eval( real_type x ) const { - std::pair res; - this->search( x, res ); + std::pair res(0,x); + this->search( res ); return this->id_eval( res.first, res.second ); } @@ -160,8 +160,8 @@ namespace Splines { real_type CubicSplineBase::D( real_type x ) const { - std::pair res; - this->search( x, res ); + std::pair res(0,x); + this->search( res ); return this->id_D( res.first, res.second ); } @@ -184,8 +184,8 @@ namespace Splines { real_type CubicSplineBase::DD( real_type x ) const { - std::pair res; - this->search( x, res ); + std::pair res(0,x); + this->search( res ); return this->id_DD( res.first, res.second ); } @@ -208,8 +208,8 @@ namespace Splines { real_type CubicSplineBase::DDD( real_type x ) const { - std::pair res; - this->search( x, res ); + std::pair res(0,x); + this->search( res ); return this->id_DDD( res.first, res.second ); } diff --git a/src/SplineLinear.cc b/src/SplineLinear.cc index a4cbf15..a1e628b 100644 --- a/src/SplineLinear.cc +++ b/src/SplineLinear.cc @@ -46,8 +46,8 @@ namespace Splines { real_type LinearSpline::eval( real_type x ) const { - std::pair res; - this->search( x, res ); + std::pair res(0,x); + this->search( res ); return this->id_eval( res.first, res.second ); } @@ -64,8 +64,8 @@ namespace Splines { if ( m_curve_can_extend && m_curve_extended_constant ) { if ( x <= m_X[0] || x >= m_X[m_npts-1] ) return 0; } - std::pair res; - this->search( x, res ); + std::pair res(0,x); + this->search( res ); return this->id_D( res.first, res.second ); } diff --git a/src/SplineQuinticBase.cc b/src/SplineQuinticBase.cc index fb25c55..1ae6376 100644 --- a/src/SplineQuinticBase.cc +++ b/src/SplineQuinticBase.cc @@ -105,8 +105,8 @@ namespace Splines { real_type QuinticSplineBase::eval( real_type x ) const { - std::pair res; - this->search( x, res ); + std::pair res(0,x); + this->search( res ); return this->id_eval( res.first, res.second ); } @@ -130,8 +130,8 @@ namespace Splines { real_type QuinticSplineBase::D( real_type x ) const { - std::pair res; - this->search( x, res ); + std::pair res(0,x); + this->search( res ); return this->id_D( res.first, res.second ); } @@ -155,8 +155,8 @@ namespace Splines { real_type QuinticSplineBase::DD( real_type x ) const { - std::pair res; - this->search( x, res ); + std::pair res(0,x); + this->search( res ); return this->id_DD( res.first, res.second ); } @@ -180,8 +180,8 @@ namespace Splines { real_type QuinticSplineBase::DDD( real_type x ) const { - std::pair res; - this->search( x, res ); + std::pair res(0,x); + this->search( res ); return this->id_DDD( res.first, res.second ); } @@ -205,8 +205,8 @@ namespace Splines { real_type QuinticSplineBase::DDDD( real_type x ) const { - std::pair res; - this->search( x, res ); + std::pair res(0,x); + this->search( res ); return this->id_DDDD( res.first, res.second ); } @@ -230,8 +230,8 @@ namespace Splines { real_type QuinticSplineBase::DDDDD( real_type x ) const { - std::pair res; - this->search( x, res ); + std::pair res(0,x); + this->search( res ); return this->id_DDDDD( res.first, res.second ); } diff --git a/src/SplineSet.cc b/src/SplineSet.cc index b09209d..53564ab 100644 --- a/src/SplineSet.cc +++ b/src/SplineSet.cc @@ -45,12 +45,14 @@ namespace Splines { size_t U{ data.size() }; size_t L{ 0 }; while ( U-L > 1 ) { - size_t pos{ (L+U)>>1 }; - std::string const & id_pos = data[pos].first; + size_t pos{ (L+U)>>1 }; // se L=U+1 --> (L+U)/2 ==> L + std::string const & id_pos{ data[pos].first }; if ( id_pos < id ) L = pos; else U = pos; } if ( data[L].first == id ) return data[L].second; - if ( data[U].first == id ) return data[U].second; + if ( U < data.size() ) + if ( data[U].first == id ) + return data[U].second; return -1; // non trovato } @@ -61,7 +63,7 @@ namespace Splines { size_t pos{ data.size() }; data.push_back(DATA_TYPE(id,position)); while ( pos > 0 ) { - size_t pos1 = pos-1; + size_t pos1{pos-1}; data[pos].first = data[pos1].first; data[pos].second = data[pos1].second; if ( data[pos1].first < id ) break; diff --git a/src/SplineSetGC.cc b/src/SplineSetGC.cc index 26337b1..4a4b7eb 100644 --- a/src/SplineSetGC.cc +++ b/src/SplineSetGC.cc @@ -346,7 +346,7 @@ namespace Splines { real_type x; intersect( indep, zeta, x ); for ( integer pos{0}; pos < m_header_to_position.n_elem(); ++pos ) { - BinarySearch::DATA_TYPE const & D = m_header_to_position.get_elem( pos ); + BinarySearch::DATA_TYPE const & D{ m_header_to_position.get_elem( pos ) }; vals[D.first] = m_splines[size_t(D.second)]->eval(x); } } @@ -367,7 +367,7 @@ namespace Splines { // preallocation for ( integer pos{0}; pos < m_header_to_position.n_elem(); ++pos ) { - BinarySearch::DATA_TYPE const & D = m_header_to_position.get_elem( pos ); + BinarySearch::DATA_TYPE const & D{ m_header_to_position.get_elem( pos ) }; vals[D.first].set_vec_real(unsigned(npts)); } diff --git a/src/SplineVec.cc b/src/SplineVec.cc index 420f334..32222ed 100644 --- a/src/SplineVec.cc +++ b/src/SplineVec.cc @@ -57,7 +57,7 @@ namespace Splines { // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void - SplineVec::search( real_type x, std::pair & res ) const { + SplineVec::search( std::pair & res ) const { UTILS_ASSERT( m_npts > 0, "in SplineVec[{}]::search(...), npts == 0!", m_name ); #ifdef SPLINES_USE_THREADS bool ok{true}; @@ -69,13 +69,12 @@ namespace Splines { Utils::search_interval( m_npts, m_X, - x, + res.second, last_interval, m_curve_is_closed, m_curve_can_extend ); - res.first = last_interval; - res.second = x; + res.first = last_interval; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -286,8 +285,8 @@ namespace Splines { real_type SplineVec::eval( real_type x, integer j ) const { - std::pair res; - this->search( x, res ); + std::pair res(0,x); + this->search( res ); real_type base[4]; integer i{res.first}; Hermite3( res.second-m_X[i], m_X[i+1]-m_X[i], base ); @@ -301,8 +300,8 @@ namespace Splines { real_type SplineVec::D( real_type x, integer j ) const { - std::pair res; - this->search( x, res ); + std::pair res(0,x); + this->search( res ); real_type base_D[4]; integer i{res.first}; Hermite3_D( res.second-m_X[i], m_X[i+1]-m_X[i], base_D ); @@ -316,8 +315,8 @@ namespace Splines { real_type SplineVec::DD( real_type x, integer j ) const { - std::pair res; - this->search( x, res ); + std::pair res(0,x); + this->search( res ); real_type base_DD[4]; integer i{res.first}; Hermite3_DD( res.second-m_X[i], m_X[i+1]-m_X[i], base_DD ); @@ -331,8 +330,8 @@ namespace Splines { real_type SplineVec::DDD( real_type x, integer j ) const { - std::pair res; - this->search( x, res ); + std::pair res(0,x); + this->search( res ); real_type base_DDD[4]; integer i{res.first}; Hermite3_DDD( res.second-m_X[i], m_X[i+1]-m_X[i], base_DDD ); @@ -350,8 +349,8 @@ namespace Splines { real_type vals[], integer inc ) const { - std::pair res; - this->search( x, res ); + std::pair res(0,x); + this->search( res ); real_type base[4]; integer i{res.first}; Hermite3( res.second-m_X[i], m_X[i+1]-m_X[i], base ); @@ -371,8 +370,8 @@ namespace Splines { real_type vals[], integer inc ) const { - std::pair res; - this->search( x, res ); + std::pair res(0,x); + this->search( res ); real_type base_D[4]; integer i{res.first}; Hermite3_D( res.second-m_X[i], m_X[i+1]-m_X[i], base_D ); @@ -392,8 +391,8 @@ namespace Splines { real_type vals[], integer inc ) const { - std::pair res; - this->search( x, res ); + std::pair res(0,x); + this->search( res ); real_type base_DD[4]; integer i{res.first}; Hermite3_DD( res.second-m_X[i], m_X[i+1]-m_X[i], base_DD ); @@ -413,8 +412,8 @@ namespace Splines { real_type vals[], integer inc ) const { - std::pair res; - this->search( x, res ); + std::pair res(0,x); + this->search( res ); real_type base_DDD[4]; integer i{res.first}; Hermite3_DDD( res.second-m_X[i], m_X[i+1]-m_X[i], base_DDD ); diff --git a/src/Splines.cc b/src/Splines.cc index f50fbdc..c5d3978 100644 --- a/src/Splines.cc +++ b/src/Splines.cc @@ -238,7 +238,7 @@ namespace Splines { // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void - Spline::search( real_type x, std::pair & res ) const { + Spline::search( std::pair & res ) const { UTILS_ASSERT( m_npts > 0, "in Spline[{}]::search(...), npts == 0!", m_name ); #ifdef SPLINES_USE_THREADS bool ok{true}; @@ -250,13 +250,12 @@ namespace Splines { Utils::search_interval( m_npts, m_X, - x, + res.second, last_interval, m_curve_is_closed, m_curve_can_extend ); - res.first = last_interval; - res.second = x; + res.first = last_interval; } void diff --git a/src/Splines.hh b/src/Splines.hh index 8007870..64959d3 100644 --- a/src/Splines.hh +++ b/src/Splines.hh @@ -415,7 +415,7 @@ namespace Splines { //! //! Find interval containing `x` using binary search. //! - void search( real_type x, std::pair & res ) const; + void search( std::pair & res ) const; //! //! \name Open/Close diff --git a/src/Splines/SplineVec.hxx b/src/Splines/SplineVec.hxx index 3ece017..817702c 100644 --- a/src/Splines/SplineVec.hxx +++ b/src/Splines/SplineVec.hxx @@ -85,7 +85,7 @@ namespace Splines { //! //! Search the segment containing `x` //! - void search( real_type x, std::pair & res ) const; + void search( std::pair & res ) const; //! //! Spline name usd in the constructor