MCPcopy Create free account
hub / github.com/KDE/labplot / nsl_diff_second_deriv_second_order

Function nsl_diff_second_deriv_second_order

src/backend/nsl/nsl_diff.c:200–234  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

198}
199
200int nsl_diff_second_deriv_second_order(const double* x, double* y, const size_t n) {
201 if (n < 4)
202 return -1;
203
204 double dy[4] = {0}, xdata[4], ydata[4];
205 size_t i, j;
206 for (i = 0; i < n; i++) {
207 if (i == 0) {
208 /* 4-point forward */
209 for (j = 0; j < 4; j++)
210 xdata[j] = x[j], ydata[j] = y[j];
211 dy[0] = nsl_sf_poly_interp_lagrange_3_deriv2(x[i], xdata, ydata);
212 } else if (i == n - 1) {
213 /* 4-point backward */
214 for (j = 0; j < 4; j++)
215 xdata[j] = x[i - 3 + j], ydata[j] = y[i - 3 + j];
216 y[i] = nsl_sf_poly_interp_lagrange_3_deriv2(x[i], xdata, ydata);
217 y[i - 1] = dy[1];
218 y[i - 2] = dy[2];
219 } else {
220 /* 3-point center */
221 for (j = 0; j < 3; j++)
222 xdata[j] = x[i - 1 + j], ydata[j] = y[i - 1 + j];
223 dy[0] = nsl_sf_poly_interp_lagrange_2_deriv2(xdata, ydata);
224 }
225
226 if (i > 2)
227 y[i - 3] = dy[3];
228 for (j = 3; j > 0; j--)
229 if (i >= j - 1)
230 dy[j] = dy[j - 1];
231 }
232
233 return 0;
234}
235
236int nsl_diff_second_deriv_third_order(const double* x, double* y, const size_t n) {
237 if (n < 5)

Callers 2

recalculateSpecificMethod · 0.85
nsl_diff_second_derivFunction · 0.85

Tested by

no test coverage detected