13#ifndef BSPLINE_DOXYGEN_IGNORE
28template <
typename T,
size_t size>
29std::array<T, size> make_array(T val) {
30 std::array<T, size> ret;
46template <
typename T,
size_t sizea,
size_t sizeb>
47std::array<T, std::max(sizea, sizeb)> add(
const std::array<T, sizea> &a,
48 const std::array<T, sizeb> &b) {
49 if constexpr (sizeb > sizea) {
52 std::array<T, sizea> ret = a;
53 for (
size_t i = 0; i < sizeb; i++) {
70template <
typename T,
size_t sizein,
size_t sizeout>
71std::array<T, sizeout> changearraysize(
const std::array<T, sizein> &in) {
72 static_assert(sizeout >= sizein,
73 "sizeout must be bigger or equal to sizein.");
74 if constexpr (sizeout == sizein)
77 std::array<T, sizeout> ret;
78 for (
size_t i = 0; i < sizein; i++) ret[i] = in[i];
79 for (
size_t i = sizein; i < sizeout; i++) ret[i] = static_cast<T>(0);
98template <
typename T,
size_t size>
99T evaluateInterval(
const T &x,
const std::array<T, size> &coeffs,
const T &xm) {
102 T result = coeffs.back();
103 for (
auto it = coeffs.rbegin() + 1; it != coeffs.rend(); it++) {
104 result = dx * result + (*it);
118 T retVal =
static_cast<T
>(1);
119 for (
size_t i = 2; i <= n; i++) {
120 retVal *=
static_cast<T
>(i);
134T facultyRatio(
size_t counter,
size_t denominator) {
135 if (denominator > counter) {
136 return static_cast<T
>(1) / facultyRatio<T>(denominator, counter);
138 T retVal =
static_cast<T
>(1);
139 for (
size_t i = denominator + 1; i <= counter; i++) {
140 retVal *=
static_cast<T
>(i);
156T binomialCoefficient(
size_t n,
size_t k) {
158 return static_cast<T
>(0);
161 const size_t smaller = std::min(k, n - k);
162 const size_t larger = std::max(k, n - k);
164 return facultyRatio<T>(n, larger) / faculty<T>(smaller);
Represents a global Grid.
Definition Grid.h:27