Go to the documentation of this file.
15 #define VAPOR_MIX_DERIV_TEST(f, a, b, x, tol) \
17 const Real da = REL_PERTURBATION * a; \
18 const Real db = REL_PERTURBATION * b; \
19 std::vector<Real> dx(x.size()); \
20 for (unsigned int i = 0; i < x.size(); ++i) \
21 dx[i] = REL_PERTURBATION * x[i]; \
22 const Real df_da_fd = (f(a + da, b, x) - f(a - da, b, x)) / (2 * da); \
23 const Real df_db_fd = (f(a, b + db, x) - f(a, b - db, x)) / (2 * db); \
24 std::vector<Real> df_dx_fd(x.size()); \
25 for (unsigned int i = 0; i < x.size(); ++i) \
27 std::vector<Real> x_forward(x); \
28 x_forward[i] += dx[i]; \
29 std::vector<Real> x_backward(x); \
30 x_backward[i] -= dx[i]; \
31 df_dx_fd[i] = (f(a, b, x_forward) - f(a, b, x_backward)) / (2 * dx[i]); \
33 Real f_value, df_da, df_db; \
34 std::vector<Real> df_dx(x.size()); \
35 f(a, b, x, f_value, df_da, df_db, df_dx); \
36 REL_TEST(f(a, b, x), f_value, REL_TOL_CONSISTENCY); \
37 REL_TEST(df_da, df_da_fd, tol); \
38 REL_TEST(df_db, df_db_fd, tol); \
39 for (unsigned int i = 0; i < x.size(); ++i) \
40 REL_TEST(df_dx[i], df_dx_fd[i], tol); \