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

Function nsl_diff_first_deriv_second_order

src/backend/nsl/nsl_diff.c:64–96  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

62}
63
64int nsl_diff_first_deriv_second_order(const double* x, double* y, const size_t n) {
65 if (n < 3)
66 return -1;
67
68 double dy = 0, oldy = 0, oldy2 = 0, xdata[3], ydata[3];
69 size_t i, j;
70 for (i = 0; i < n; i++) {
71 if (i == 0) {
72 /* 3-point forward */
73 for (j = 0; j < 3; j++)
74 xdata[j] = x[j], ydata[j] = y[j];
75 dy = nsl_sf_poly_interp_lagrange_2_deriv(x[0], xdata, ydata);
76 } else if (i < n - 1) {
77 /* 3-point center */
78 for (j = 0; j < 3; j++)
79 xdata[j] = x[i - 1 + j], ydata[j] = y[i - 1 + j];
80 dy = nsl_sf_poly_interp_lagrange_2_deriv(x[i], xdata, ydata);
81 } else if (i == n - 1) {
82 /* 3-point backward */
83 y[i] = nsl_sf_poly_interp_lagrange_2_deriv(x[i], xdata, ydata);
84 y[i - 1] = oldy;
85 }
86
87 if (i > 1)
88 y[i - 2] = oldy2;
89 if (i > 0 && i < n - 1)
90 oldy2 = oldy;
91
92 oldy = dy;
93 }
94
95 return 0;
96}
97
98int nsl_diff_first_deriv_fourth_order(const double* x, double* y, const size_t n) {
99 if (n < 5)

Callers 2

recalculateSpecificMethod · 0.85
nsl_diff_first_derivFunction · 0.85

Tested by

no test coverage detected