@@ -18,6 +18,34 @@ def is_close(error: Error, tolerance: Tolerance) -> bool:
1818 return False
1919
2020
21+ def _format_error_diagnostics (max_abs_info , max_rel_info ) -> str :
22+ """Format diagnostic information for maximum errors among failing variables."""
23+ diagnostic_msg = ""
24+
25+ if max_abs_info :
26+ filepath , val_idx , g_val , c_val , abs_err , rel_err = max_abs_info
27+ rel_error_str = f"{ rel_err :.2E} " if not math .isnan (rel_err ) else "NaN"
28+ diagnostic_msg += f"\n \n Diagnostics - Maximum absolute error among FAILING variables:\n " \
29+ f" - File: { filepath } \n " \
30+ f" - Variable n°{ val_idx + 1 } \n " \
31+ f" - Candidate: { c_val } \n " \
32+ f" - Golden: { g_val } \n " \
33+ f" - Absolute Error: { abs_err :.2E} \n " \
34+ f" - Relative Error: { rel_error_str } "
35+
36+ if max_rel_info :
37+ filepath , val_idx , g_val , c_val , rel_err , abs_err = max_rel_info
38+ diagnostic_msg += f"\n \n Diagnostics - Maximum relative error among FAILING variables:\n " \
39+ f" - File: { filepath } \n " \
40+ f" - Variable n°{ val_idx + 1 } \n " \
41+ f" - Candidate: { c_val } \n " \
42+ f" - Golden: { g_val } \n " \
43+ f" - Relative Error: { rel_err :.2E} \n " \
44+ f" - Absolute Error: { abs_err :.2E} "
45+
46+ return diagnostic_msg
47+
48+
2149# pylint: disable=too-many-return-statements
2250def compare (candidate : Pack , golden : Pack , tol : Tolerance ) -> typing .Tuple [Error , str ]:
2351 # Keep track of the average error
@@ -48,28 +76,7 @@ def compare(candidate: Pack, golden: Pack, tol: Tolerance) -> typing.Tuple[Error
4876 def raise_err_with_failing_diagnostics (msg : str ):
4977 # Find maximum errors among FAILING variables only
5078 max_abs_info , max_rel_info = find_maximum_errors_among_failing (candidate , golden , tol )
51-
52- diagnostic_msg = ""
53- if max_abs_info :
54- max_abs_filepath , max_abs_valIndex , max_abs_gVal , max_abs_cVal , max_abs_error , max_abs_rel_error = max_abs_info
55- rel_error_str = f"{ max_abs_rel_error :.2E} " if not math .isnan (max_abs_rel_error ) else "NaN"
56- diagnostic_msg += f"\n \n Diagnostics - Maximum absolute error among FAILING variables:\n " \
57- f" - File: { max_abs_filepath } \n " \
58- f" - Variable n°{ max_abs_valIndex + 1 } \n " \
59- f" - Candidate: { max_abs_cVal } \n " \
60- f" - Golden: { max_abs_gVal } \n " \
61- f" - Absolute Error: { max_abs_error :.2E} \n " \
62- f" - Relative Error: { rel_error_str } "
63-
64- if max_rel_info :
65- max_rel_filepath , max_rel_valIndex , max_rel_gVal , max_rel_cVal , max_rel_error , max_rel_abs_error = max_rel_info
66- diagnostic_msg += f"\n \n Diagnostics - Maximum relative error among FAILING variables:\n " \
67- f" - File: { max_rel_filepath } \n " \
68- f" - Variable n°{ max_rel_valIndex + 1 } \n " \
69- f" - Candidate: { max_rel_cVal } \n " \
70- f" - Golden: { max_rel_gVal } \n " \
71- f" - Relative Error: { max_rel_error :.2E} \n " \
72- f" - Absolute Error: { max_rel_abs_error :.2E} "
79+ diagnostic_msg = _format_error_diagnostics (max_abs_info , max_rel_info )
7380
7481 return None , f"""\
7582 Variable n°{ valIndex + 1 } (1-indexed) in { gFilepath } { msg } :
@@ -131,4 +138,5 @@ def find_maximum_errors_among_failing(candidate: Pack, golden: Pack, tol: Tolera
131138 max_rel_error = error .relative
132139 max_rel_info = (gFilepath , valIndex , gVal , cVal , error .relative , error .absolute )
133140
134- return max_abs_info , max_rel_info
141+ return max_abs_info , max_rel_info
142+
0 commit comments