@@ -43,6 +43,20 @@ def _write_diff_file(a_file_name, b_file_name, diff_file_name):
4343 with open (diff_file_name , "w" ) as file :
4444 subprocess .call (diff_command , stdout = file )
4545
46+ def _symmetric_relative_error (old , new ):
47+ denom = abs (old ) + abs (new )
48+ if denom == 0 :
49+ return 0.0
50+ return 2 * (new - old ) / denom
51+
52+ def _unbounded_relative_error (old , new ):
53+ e = _symmetric_relative_error (old , new )
54+ if e >= 2 :
55+ return float ("inf" )
56+ if e <= - 2 :
57+ return float ("-inf" )
58+ return 2.0 * math .atanh (e / 2.0 )
59+
4660def _remove_attr_lines (file_path ):
4761 with open (file_path , 'r' ) as file :
4862 lines = file .readlines ()
@@ -114,8 +128,7 @@ def check_simulation_task_result(self, simulation_task_result, result_name_filte
114128 (merged ['value_stored' ].isna () & merged ['value_current' ].notna ()) |
115129 (merged ['value_stored' ].notna () & merged ['value_current' ].isna ()) |
116130 (merged ['value_stored' ] != merged ['value_current' ])].dropna (subset = ['value_stored' , 'value_current' ], how = 'all' ).copy ()
117- df ["absolute_error" ] = df .apply (lambda row : abs (row ["value_current" ] - row ["value_stored" ]), axis = 1 )
118- df ["relative_error" ] = df .apply (lambda row : row ["absolute_error" ] / abs (row ["value_stored" ]) if row ["value_stored" ] != 0 else (float ("inf" ) if row ["value_current" ] != 0 else 0 ), axis = 1 )
131+ df ["relative_error" ] = df .apply (lambda row : _unbounded_relative_error (row ["value_current" ], row ["value_stored" ]), axis = 1 )
119132 df = df [df .apply (lambda row : matches_filter (row ["name" ], result_name_filter , exclude_result_name_filter , full_match ) and \
120133 matches_filter (row ["module" ], result_module_filter , exclude_result_module_filter , full_match ), axis = 1 )]
121134 if df .empty :
0 commit comments