1#if TATOOINE_BLAS_AND_LAPACK_AVAILABLE
2#ifndef TATOOINE_DETAIL_POINTSET_RADIAL_BASIS_FUNCTIONS_SAMPLER_H
3#define TATOOINE_DETAIL_POINTSET_RADIAL_BASIS_FUNCTIONS_SAMPLER_H
11template <floating_point Real, std::size_t NumDimensions,
typename T,
12 invocable<Real> Kernel>
14 :
field<radial_basis_functions_sampler<Real, NumDimensions, T, Kernel>,
15 Real, NumDimensions, T> {
25 typename pointset_type::template typed_vertex_property_type<T>;
43 for (std::size_t c = 0; c < N; ++c) {
44 for (std::size_t r = c + 1; r < N; ++r) {
50 for (std::size_t c = 0; c < N; ++c) {
56 for (std::size_t i = 0; i < NumDimensions; ++i) {
57 A(N + i + 1, c) = p(i);
70 for (std::size_t i = 0; i < N; ++i) {
74 for (std::size_t j = 0; j < T::num_components(); ++j) {
101 static auto for_loop(auto&& iteration, std::
size_t const degree,
102 std::
size_t const dim, std::vector<std::
size_t>& status)
104 if (dim == degree + 1) {
105 return iteration(status);
107 for (; status[dim] < (dim == 0 ?
num_dimensions() : status[dim - 1]);
130 for (std::size_t j = 0; j < T::num_components(); ++j) {
139 for (std::size_t k = 0; k < NumDimensions; ++k) {
143 for (std::size_t j = 0; j < T::num_components(); ++j) {
145 for (std::size_t k = 0; k < NumDimensions; ++k) {
155template <
floating_point Real, std::size_t NumDimensions,
typename T,
162 std::decay_t<Kernel>>;
Definition: concepts.h:33
Definition: concepts.h:39
Definition: concepts.h:30
Definition: concepts.h:121
Definition: tensor_concepts.h:20
Definition: inverse_distance_weighting_sampler.h:4
auto begin(Range &&range)
Definition: iterator_facade.h:318
auto end(Range &&range)
Definition: iterator_facade.h:322
auto solve_symmetric_lapack(TensorA &&A_, TensorB &&B_, lapack::uplo uplo=lapack::uplo::lower) -> std::optional< tensor< common_type< tatooine::value_type< decltype(A_)>, tatooine::value_type< decltype(B_)> > > >
Definition: solve.h:349
constexpr auto squared_euclidean_distance(base_tensor< Tensor0, T0, N > const &lhs, base_tensor< Tensor1, T1, N > const &rhs)
Definition: distance.h:11
static constexpr forward_tag forward
Definition: tags.h:9
Definition: radial_basis_functions_sampler.h:15
Kernel m_kernel
Definition: radial_basis_functions_sampler.h:30
tensor< Real > m_radial_and_monomial_coefficients
Definition: radial_basis_functions_sampler.h:31
auto evaluate(pos_type const &q, real_type const) const -> tensor_type
Definition: radial_basis_functions_sampler.h:116
static auto for_loop(auto &&iteration, std::size_t const degree, std::size_t const dim, std::vector< std::size_t > &status) -> void
Definition: radial_basis_functions_sampler.h:101
typename pointset_type::vertex_handle vertex_handle
Definition: radial_basis_functions_sampler.h:23
pointset_type const & m_pointset
Definition: radial_basis_functions_sampler.h:28
static auto constexpr num_dimensions()
Definition: radial_basis_functions_sampler.h:26
radial_basis_functions_sampler(radial_basis_functions_sampler &&) noexcept=default
radial_basis_functions_sampler(radial_basis_functions_sampler const &)=default
vertex_property_type const & m_property
Definition: radial_basis_functions_sampler.h:29
typename pointset_type::template typed_vertex_property_type< T > vertex_property_type
Definition: radial_basis_functions_sampler.h:25
radial_basis_functions_sampler(pointset_type const &ps, vertex_property_type const &property, convertible_to< Kernel > auto &&kernel)
Definition: radial_basis_functions_sampler.h:33
Real real_type
Definition: field.h:17
vec< real_type, NumDimensions > pos_type
Definition: field.h:20
Tensor tensor_type
Definition: field.h:18
Definition: pointset.h:83
Definition: pointset.h:69
auto vertices() const
Definition: pointset.h:226
auto vertex_at(vertex_handle const v) -> auto &
Definition: pointset.h:205
static constexpr auto zeros()
Definition: tensor.h:144
Definition: property.h:66