25namespace ffv_loop_functions {
43 return (2.0 - 9.0 * r + 18.0 * r * r - 11.0 * r * r * r +
52 const double y = r - 1.0;
55 }
else if (std::abs(y) < 0.23) {
57 return (1.0000000000000000000 -
58 0.4000000000000000000 * y +
59 0.2000000000000000000 * y * y -
60 0.11428571428571428571 * y * y * y +
61 0.07142857142857142857 * y * y * y * y -
62 0.04761904761904761905 * y * y * y * y * y +
63 0.03333333333333333333 * y * y * y * y * y * y -
64 0.02424242424242424242 * y * y * y * y * y * y * y +
65 0.0181818181818181818 * y * y * y * y * y * y * y * y -
66 0.01398601398601398601 * y * y * y * y * y * y * y * y * y +
67 0.01098901098901098901 * y * y * y * y * y * y * y * y * y * y -
68 0.0087912087912087912 * y * y * y * y * y * y * y * y * y * y * y +
69 0.00714285714285714286 * y * y * y * y * y * y * y * y * y * y * y * y -
70 0.0058823529411764706 * y * y * y * y * y * y * y * y * y * y * y * y * y +
71 0.0049019607843137255 * y * y * y * y * y * y * y * y * y * y * y * y * y * y -
72 0.0041279669762641899 * y * y * y * y * y * y * y * y * y * y * y * y * y * y * y);
75 (1.0 - 6.0 * r + 3.0 * r * r + 2.0 * r * r * r -
84 const double y = r - 1.0;
87 }
else if (std::isinf(r)) {
89 }
else if (std::abs(y) < 0.185) {
91 return (1.0000000000000000000 -
92 0.50000000000000000000 * y +
93 0.30000000000000000000 * y * y -
94 0.2000000000000000000 * y * y * y +
95 0.14285714285714285714 * y * y * y * y -
96 0.10714285714285714286 * y * y * y * y * y +
97 0.08333333333333333333 * y * y * y * y * y * y -
98 0.06666666666666666667 * y * y * y * y * y * y * y +
99 0.05454545454545454545 * y * y * y * y * y * y * y * y -
100 0.0454545454545454545 * y * y * y * y * y * y * y * y * y +
101 0.0384615384615384615 * y * y * y * y * y * y * y * y * y * y -
102 0.03296703296703296703 * y * y * y * y * y * y * y * y * y * y * y +
103 0.0285714285714285714 * y * y * y * y * y * y * y * y * y * y * y * y -
104 0.02500000000000000000 * y * y * y * y * y * y * y * y * y * y * y * y * y +
105 0.0220588235294117647 * y * y * y * y * y * y * y * y * y * y * y * y * y * y -
106 0.0196078431372549020 * y * y * y * y * y * y * y * y * y * y * y * y * y * y * y);
108 return 3. * (1.0 - r * r + 2.0 * r *
std::log(r)) /
Power3(1.0 - r);
120 return (16.0 - 45.0 * r + 36.0 * r * r - 7.0 * r * r * r +
121 6.0 * (2.0 - 3.0 * r) *
std::log(r)) /
129 const double y = r - 1.0;
132 }
else if (std::abs(y) < 0.21) {
134 return (1.0000000000000000000 -
135 0.60000000000000000000 * y +
136 0.40000000000000000000 * y * y -
137 0.28571428571428571429 * y * y * y +
138 0.21428571428571428571 * y * y * y * y -
139 0.16666666666666666667 * y * y * y * y * y +
140 0.13333333333333333333 * y * y * y * y * y * y -
141 0.10909090909090909091 * y * y * y * y * y * y * y +
142 0.090909090909090909091 * y * y * y * y * y * y * y * y -
143 0.076923076923076923077 * y * y * y * y * y * y * y * y * y +
144 0.065934065934065934066 * y * y * y * y * y * y * y * y * y * y -
145 0.057142857142857142857 * y * y * y * y * y * y * y * y * y * y * y +
146 0.050000000000000000000 * y * y * y * y * y * y * y * y * y * y * y * y -
147 0.044117647058823529412 * y * y * y * y * y * y * y * y * y * y * y * y * y +
148 0.039215686274509803922 * y * y * y * y * y * y * y * y * y * y * y * y * y * y -
149 0.035087719298245614035 * y * y * y * y * y * y * y * y * y * y * y * y * y * y * y);
152 (2.0 + 3.0 * r - 6.0 * r * r + r * r * r + 6.0 * r *
std::log(r)) /
160 const double y = r - 1.0;
161 if (std::abs(y) < 0.155) {
166 0.50000000000000000000 * y * y * y +
167 0.4285714285714285714 * y * y * y * y -
168 0.37500000000000000000 * y * y * y * y * y +
169 0.33333333333333333333 * y * y * y * y * y * y -
170 0.3000000000000000000 * y * y * y * y * y * y * y +
171 0.2727272727272727273 * y * y * y * y * y * y * y * y -
172 0.2500000000000000000 * y * y * y * y * y * y * y * y * y +
173 0.23076923076923076923 * y * y * y * y * y * y * y * y * y * y -
174 0.21428571428571428571 * y * y * y * y * y * y * y * y * y * y * y +
175 0.2000000000000000000 * y * y * y * y * y * y * y * y * y * y * y * y -
176 0.1875000000000000000 * y * y * y * y * y * y * y * y * y * y * y * y * y +
177 0.1764705882352941176 * y * y * y * y * y * y * y * y * y * y * y * y * y * y -
178 0.16666666666666666667 * y * y * y * y * y * y * y * y * y * y * y * y * y * y * y);
180 return 3. / 2. * (-3.0 + 4.0 * r - r * r - 2.0 *
std::log(r)) /
194 return (41.0 - 207.0 * r + 279.0 * r * r - 113.0 * r * r * r + 6.0 * r * r * (-15.0 + 13.0 * r)
222 return (7.0 - 33.0 * r + 57.0 * r * r - 31.0 * r * r * r + 6.0 * r * r * (3.0 * r - 1.0)
235 return (1.0 - 4.0 * r + 3.0 * r * r - 2 * r * r *
std::log(r)) /
Power3(1.0 - r);
245 }
else if (std::isinf(r)) {
248 return (2.0 + 27.0 * r - 54.0 * r * r + 25.0 * r * r * r - 6.0 * (2.0 - 9.0 * r + 6.0 * r * r)
260 }
else if (std::isinf(r)) {
263 return (4.0 - 9.0 * r + 5.0 * r * r * r + 6.0 * (1.0 - 2.0 * r) * r *
std::log(r)) /
269double FN(
double r,
double s)
277 return (1.0 - 4.0 * r + 3 * r * r - 2 * r * r *
std::log(r)) / 2.0 /
Power3(1.0 - r);
280 return s * (r *
Power2(r - s) *
std::log(r) + (r - 1.0) * ((r - s) * (s - 1.0) - (r - 1.0)
double FN(double r, double s)
constexpr Base Power3(Base b) noexcept
std::enable_if_t< std::is_unsigned< T >::value, bool > is_zero(T a, T prec=std::numeric_limits< T >::epsilon()) noexcept
compares a number for being close to zero
constexpr Base Power4(Base b) noexcept
Complex< T > log(const Complex< T > &z) noexcept
constexpr Base Power2(Base b) noexcept