868 const std::array<Number2, n_entries> &x,
869 const unsigned int n_derivatives,
870 std::array<Number2, n_entries> *values)
const
873 if (in_lagrange_product_form ==
true)
878 const unsigned int n_supp = lagrange_support_points.size();
879 const number weight = lagrange_weight;
880 switch (n_derivatives)
883 for (
unsigned int e = 0; e < n_entries; ++e)
884 values[0][e] = weight;
885 for (
unsigned int k = 1; k <= n_derivatives; ++k)
886 for (
unsigned int e = 0; e < n_entries; ++e)
888 for (
unsigned int i = 0; i < n_supp; ++i)
890 std::array<Number2, n_entries> v = x;
891 for (
unsigned int e = 0; e < n_entries; ++e)
892 v[e] -= lagrange_support_points[i];
900 for (
unsigned int k = n_derivatives; k > 0; --k)
901 for (
unsigned int e = 0; e < n_entries; ++e)
902 values[k][e] = (values[k][e] * v[e] + values[k - 1][e]);
903 for (
unsigned int e = 0; e < n_entries; ++e)
904 values[0][e] *= v[e];
909 number k_factorial = 2;
910 for (
unsigned int k = 2; k <= n_derivatives; ++k)
912 for (
unsigned int e = 0; e < n_entries; ++e)
913 values[k][e] *= k_factorial;
914 k_factorial *=
static_cast<number
>(k + 1);
926 std::array<Number2, n_entries> value;
927 for (
unsigned int e = 0; e < n_entries; ++e)
929 for (
unsigned int i = 0; i < n_supp; ++i)
930 for (
unsigned int e = 0; e < n_entries; ++e)
931 value[e] *= (x[e] - lagrange_support_points[i]);
933 for (
unsigned int e = 0; e < n_entries; ++e)
934 values[0][e] = value[e];
940 std::array<Number2, n_entries> value, derivative = {};
941 for (
unsigned int e = 0; e < n_entries; ++e)
943 for (
unsigned int i = 0; i < n_supp; ++i)
944 for (
unsigned int e = 0; e < n_entries; ++e)
946 const Number2 v = x[e] - lagrange_support_points[i];
947 derivative[e] = derivative[e] * v + value[e];
951 for (
unsigned int e = 0; e < n_entries; ++e)
953 values[0][e] = value[e];
954 values[1][e] = derivative[e];
961 std::array<Number2, n_entries> value, derivative = {},
963 for (
unsigned int e = 0; e < n_entries; ++e)
965 for (
unsigned int i = 0; i < n_supp; ++i)
966 for (
unsigned int e = 0; e < n_entries; ++e)
968 const Number2 v = x[e] - lagrange_support_points[i];
970 derivative[e] = derivative[e] * v + value[e];
974 for (
unsigned int e = 0; e < n_entries; ++e)
976 values[0][e] = value[e];
977 values[1][e] = derivative[e];
978 values[2][e] =
static_cast<number
>(2) *
second[e];
990 const unsigned int m = coefficients.size();
991 std::vector<std::array<Number2, n_entries>> a(coefficients.size());
992 for (
unsigned int i = 0; i < coefficients.size(); ++i)
993 for (
unsigned int e = 0; e < n_entries; ++e)
994 a[i][e] = coefficients[i];
996 unsigned int j_factorial = 1;
1001 const unsigned int min_valuessize_m =
std::min(n_derivatives + 1, m);
1002 for (
unsigned int j = 0; j < min_valuessize_m; ++j)
1004 for (
int k = m - 2; k >=
static_cast<int>(j); --k)
1005 for (
unsigned int e = 0; e < n_entries; ++e)
1006 a[k][e] += x[e] * a[k + 1][e];
1007 for (
unsigned int e = 0; e < n_entries; ++e)
1008 values[j][e] =
static_cast<number
>(j_factorial) * a[j][e];
1010 j_factorial *= j + 1;
1014 for (
unsigned int j = min_valuessize_m; j <= n_derivatives; ++j)
1015 for (
unsigned int e = 0; e < n_entries; ++e)