diff --git a/splinterpolator.h b/splinterpolator.h index fbd7b4f96839375bbc8450218e01a0db9522db51..e7c43cfa48ce56b6a6fcea307df81a391fc26fa7 100644 --- a/splinterpolator.h +++ b/splinterpolator.h @@ -1431,16 +1431,19 @@ void Splinterpolator<T>::assign(const Splinterpolator<T>& src) template<class T> bool Splinterpolator<T>::calc_coef(const T *data_or_coefs, bool copy, bool data_are_coefs) { - if (_order < 2 && !copy) { _cptr = data_or_coefs; return(false); } + // No copy, and nearest/interp, or pre-calculated + // coefficients - just take a pointer to the data + if (_order < 2 && !copy) { _cptr = data_or_coefs; return(false); } + if (data_are_coefs && !copy) { _cptr = data_or_coefs; return(false); } // Allocate memory and put the original data into _coef - // unsigned int ts=1; for (unsigned int i=0; i<_dim.size(); i++) ts *= _dim[i]; _coef = new T[ts]; memcpy(_coef,data_or_coefs,ts*sizeof(T)); - if (_order < 2) return(true); // If nearest neighbour or linear, that's all we need + if (_order < 2) return(true); // If nearest neighbour or linear, that's all we need + if (data_are_coefs) return(true); // User has given us pre-calculated coefficients // Loop over all non-singleton dimensions and deconvolve along them //