7 static inline double cubic(
double factor,
double start,
double end) {
8 return start + factor * factor * (3.0 - 2.0 * factor) * (end - start);
11 static inline double linear(
double factor,
double start,
double end) {
12 return start + factor * (end - start);
15 static inline std::array<double, k> linear(
double factor, std::vector<std::array<double, k>> vec) {
16 std::array<std::vector<double>, k> result;
17 std::array<double, k> result_array;
19 for (
size_t j = 0; j < k; j++) {
20 for (
size_t i = 0; i < vec.size(); i++) {
21 result[j].push_back(vec[i][j]);
25 while (result[0].size() > 1) {
26 std::array<std::vector<double>, k> temp_result;
29 for (
size_t i = 0; i < k; i++) {
30 for (
size_t j = 0; j < result[i].size() - 1; j++) {
31 temp_result[i].push_back(linear(factor, result[i][j], result[i][j + 1]));
38 for (
int i = 0; i < k; i++) {
39 result_array[i] = result[i][0];