Test code cleanup

This commit is contained in:
numzero 2024-06-11 14:08:29 +03:00
parent 22339fb331
commit 8ad9f04ece

View File

@ -675,25 +675,32 @@ mod fns {
let margin = 1.0 / 16.0; let margin = 1.0 / 16.0;
let mul = 1.0 + margin; let mul = 1.0 + margin;
for x in itertools_num::linspace(-mul * testee.external, mul * testee.external, 100) { for x in itertools_num::linspace(-mul * testee.external, mul * testee.external, 100) {
let u = testee.u(x); let ux = testee.u(x);
assert!(abs_diff_eq!(x, testee.x(u), epsilon = ε), "At x={}:\nu(x): {}\nx(u(x)): {}\n", x, u, testee.x(u)); let xux = testee.x(ux);
assert!(abs_diff_eq!(x, xux, epsilon = ε), "At x={}:\nu(x): {}\nx(u(x)): {}\n", x, ux, xux);
let du = (testee.u(x + δ) - testee.u(x - δ)) / (2. * δ); let du_num = (testee.u(x + δ) - testee.u(x - δ)) / (2. * δ);
assert!(abs_diff_eq!(du, testee.du(x), epsilon = ε), "At x={}, u':\nexpected: {}\nactual: {}\n", x, du, testee.du(x)); let du_expl = testee.du(x);
assert!(abs_diff_eq!(du_expl, du_num, epsilon = ε), "At x={}, du/dx:\nnumerical: {}\nexplicit: {}\n", x, du_num, du_expl);
assert!(abs_diff_eq!(testee.du(x) * testee.dx(u), 1.0, epsilon = ε), "At x={}:\nu'x': {}\n", x, testee.du(x) * testee.dx(u)); let dudx = du_expl * testee.dx(ux);
assert!(abs_diff_eq!(dudx, 1.0, epsilon = ε), "At x={}:\ndu/dx * dx/du: {}\n", x, dudx);
let d2u = (testee.du(x + δ) - testee.du(x - δ)) / (2. * δ); let d2u_num = (testee.du(x + δ) - testee.du(x - δ)) / (2. * δ);
assert!(abs_diff_eq!(d2u, testee.d2u(x), epsilon = ε), "At x={}, u'':\nexpected: {}\nactual: {}\n", x, d2u, testee.d2u(x)); let d2u_expl = testee.d2u(x);
assert!(abs_diff_eq!(d2u_expl, d2u_num, epsilon = ε), "At x={}, d^2u/dx^2:\nnumerical: {}\nexplicit: {}\n", x, d2u_num, d2u_expl);
} }
for u in itertools_num::linspace(-mul * testee.internal, mul * testee.internal, 100) { for u in itertools_num::linspace(-mul * testee.internal, mul * testee.internal, 100) {
let x = testee.x(u); let xu = testee.x(u);
assert!(abs_diff_eq!(x, testee.x(u), epsilon = ε), "At u={}:\nx(u): {}\nu(x(u)): {}\n", u, x, testee.u(x)); let uxu = testee.u(xu);
assert!(abs_diff_eq!(u, uxu, epsilon = ε), "At u={}:\nx(u): {}\nu(x(u)): {}\n", u, xu, uxu);
let dx = (testee.x(u + δ) - testee.x(u - δ)) / (2. * δ); let dx_num = (testee.x(u + δ) - testee.x(u - δ)) / (2. * δ);
assert!(abs_diff_eq!(dx, testee.dx(u), epsilon = ε), "At u={}, x':\nexpected: {}\nactual: {}\n", u, dx, testee.dx(u)); let dx_expl = testee.dx(u);
assert!(abs_diff_eq!(dx_expl, dx_num, epsilon = ε), "At u={}, dx/du:\nnumerical: {}\nexplicit: {}\n", u, dx_num, dx_expl);
assert!(abs_diff_eq!(testee.du(x) * testee.dx(u), 1.0, epsilon = ε), "At u={}:\nu'x': {}\n", u, testee.du(x) * testee.dx(u)); let dudx = testee.du(xu) * dx_expl;
assert!(abs_diff_eq!(dudx, 1.0, epsilon = ε), "At u={}:\ndu/dx * dx/du: {}\n", u, dudx);
} }
} }
} }