98 const int kmax_in_range = std::min(kmax, input_size - 1);
102 const int index = -k;
103 assert(0 <= index && index < input_size);
104 BSplines_value += BSplines_product(index, relative_position - k, if_deriv);
106 for (; k <= kmax_in_range; ++k)
109 assert(0 <= index && index < input_size);
110 BSplines_value += BSplines_product(index, relative_position - k, if_deriv);
112 for (; k <= kmax; ++k)
114 const int index = 2 * input_size - 2 - k;
115 assert(0 <= index && index < input_size);
116 BSplines_value += BSplines_product(index, relative_position - k, if_deriv);
119 return BSplines_value;
122template <
typename out_elemT,
typename in_elemT,
typename constantsT>
124BSplines1DRegularGrid<out_elemT, in_elemT, constantsT>::BSplines(
const pos_type relative_position)
const
126 return compute_BSplines_value(relative_position,
false);
129template <
typename out_elemT,
typename in_elemT,
typename constantsT>
131BSplines1DRegularGrid<out_elemT, in_elemT, constantsT>::BSplines_1st_der(
const pos_type relative_position)
const
133 return compute_BSplines_value(relative_position,
true);
136template <
typename out_elemT,
typename in_elemT,
typename constantsT>
138BSplines1DRegularGrid<out_elemT, in_elemT, constantsT>::BSplines_product(
const int index,
139 const pos_type relative_position,
140 const bool if_deriv)
const
142 if (if_deriv ==
true)
145 return BSplines_coef_vector[index] *
BSplines_weights(relative_position, spline_type);
148template <
typename out_elemT,
typename in_elemT,
typename constantsT>
152 return BSplines1DRegularGrid<out_elemT, in_elemT, constantsT>::BSplines(relative_position);
168 *current_iterator = BSplines1DRegularGrid<out_elemT, in_elemT, constantsT>::BSplines(*current_relative_position_iterator);
174BSplines1DRegularGrid<out_elemT, in_elemT, constantsT>::BSplines_output_sequence(std::vector<pos_type> output_relative_position)