int compare_point(fields &f1, fields &f2, const vec &p) { monitor_point m1, m_test; f1.get_point(&m_test, p); f2.get_point(&m1, p); for (int i = 0; i < 10; i++) { component c = (component)i; if (f1.gv.has_field(c)) { complex<double> v1 = m_test.get_component(c), v2 = m1.get_component(c); if (abs(v1 - v2) > tol * abs(v2) && abs(v2) > thresh) { master_printf("%s differs: %g %g out of %g %g\n", component_name(c), real(v2 - v1), imag(v2 - v1), real(v2), imag(v2)); master_printf("This comes out to a fractional error of %g\n", abs(v1 - v2) / abs(v2)); master_printf("Right now I'm looking at %g, time %g\n", p.z(), f1.time()); return 0; } } } return 1; }
int compare_point(fields &f1, fields &f2, const vec &p, double eps=4e-8) { if (sizeof(realnum) == sizeof(float)) eps = sqrt(eps); monitor_point m1, m_test; f1.get_point(&m_test, p); f2.get_point(&m1, p); for (int i=0;i<10;i++) { component c = (component) i; if (f1.gv.has_field(c)) { complex<double> v1 = m_test.get_component(c), v2 = m1.get_component(c); if (abs(v1 - v2) > eps*abs(v2) && abs(v2) > eps*100) { master_printf("%s differs: %g %g out of %g %g\n", component_name(c), real(v2-v1), imag(v2-v1), real(v2), imag(v2)); master_printf("This comes out to a fractional error of %g\n", abs(v1 - v2)/abs(v2)); master_printf("Right now I'm looking at %g %g, time %g\n", p.r(), p.z(), f1.time()); all_wait(); return 0; } } } return 1; }
int compare_point(fields &f1, fields &f2, const vec &p) { monitor_point m1, m_test; f1.get_point(&m_test, p); f2.get_point(&m1, p); for (int i=0;i<10;i++) { component c = (component) i; if (f1.gv.has_field(c)) { complex<double> v1 = m_test.get_component(c), v2 = m1.get_component(c); if (!compare(real(v1),real(v2),"real part") || !compare(imag(v1),imag(v2),"imaginary part")) { master_printf("%s differs by %g%+gi from %g%+gi\n", component_name(c), real(v2-v1), imag(v2-v1), real(v2), imag(v2)); master_printf("This comes out to a fractional error of %g\n", abs(v1 - v2)/abs(v2)); master_printf("Right now I'm looking at "); LOOP_OVER_DIRECTIONS(p.dim,d) master_printf("%s = %g, ", direction_name(d), p.in_direction(d)); master_printf("time %g\n", f1.time()); return 0; } } } return 1; }