12#include <autodiff/forward/real.hpp>
24 static_assert(Coordinates::dim == 1,
"LinearInterpolator1D requires 1D coordinates");
58 if (!
owner)
throw std::runtime_error(
"Cannot update data of non-owner interpolator");
75 __device__ __host__ NT
operator()(
const typename Coordinates::ctype x)
const
85 idx = max(
static_cast<decltype(idx)
>(0), min(idx,
static_cast<decltype(idx)
>(
size - 1)));
87 return m_data[
uint(floor(idx))] * (NT(1) - idx + floor(idx)) +
m_data[
uint(ceil(idx))] * (idx - floor(idx));
A linear interpolator for 1D data, both on GPU and CPU.
Definition linear_interpolation_1D.hh:23
const uint size
Definition linear_interpolation_1D.hh:105
void update(const NT2 *data)
Definition linear_interpolation_1D.hh:56
const NT & operator[](const uint i) const
const Coordinates coordinates
Definition linear_interpolation_1D.hh:106
__device__ __host__ NT operator()(const typename Coordinates::ctype x) const
Interpolate the data at a given point.
Definition linear_interpolation_1D.hh:75
std::shared_ptr< thrust::device_vector< NT > > device_data
Definition linear_interpolation_1D.hh:109
LinearInterpolator1D(const std::vector< NT > &data, const Coordinates &coordinates)
Construct a LinearInterpolator1D object from a vector of data and a coordinate system.
std::shared_ptr< NT[]> m_data
Definition linear_interpolation_1D.hh:108
const bool owner
Definition linear_interpolation_1D.hh:112
LinearInterpolator1D(const Coordinates &coordinates)
Construct a LinearInterpolator1D with internal, zeroed data and a coordinate system.
const NT * device_data_ptr
Definition linear_interpolation_1D.hh:110
LinearInterpolator1D(const LinearInterpolator1D &other)
Construct a copy of a LinearInterpolator1D object.
LinearInterpolator1D(const NT *data, const Coordinates &coordinates)
Construct a LinearInterpolator1D object from a pointer to data and a coordinate system.
NT & operator[](const uint i)
const Coordinates & get_coordinates() const
Get the coordinate system of the data.
Definition linear_interpolation_1D.hh:102
Definition complex_math.hh:14
unsigned int uint
Definition utils.hh:22