aboutsummaryrefslogtreecommitdiff
path: root/pseudocode/library/numeric_accuracy_helpers.tosac
diff options
context:
space:
mode:
Diffstat (limited to 'pseudocode/library/numeric_accuracy_helpers.tosac')
-rw-r--r--pseudocode/library/numeric_accuracy_helpers.tosac14
1 files changed, 14 insertions, 0 deletions
diff --git a/pseudocode/library/numeric_accuracy_helpers.tosac b/pseudocode/library/numeric_accuracy_helpers.tosac
index b89d898..dbff2dd 100644
--- a/pseudocode/library/numeric_accuracy_helpers.tosac
+++ b/pseudocode/library/numeric_accuracy_helpers.tosac
@@ -56,3 +56,17 @@ int normal_frac<in_t> () {
case fp8e5m2_t: return 2;
}
}
+
+double calcAbsErrorBound<in_t>(double bound_magnitude, double bounds_value,
+ double lower_bound, double normal_divisor) {
+ double error_bound = 0.0;
+ // Avoid cases where we generate an error_bound of NaN by multiplying inf * 0
+ if (is_finite(bounds_value) || abs(bound_magnitude) != 0.0) {
+ double value_bound = abs(bound_magnitude) * bounds_value;
+ if (lower_bound > 0) {
+ value_bound = max(lower_bound, value_bound);
+ }
+ error_bound = exp2(-normal_frac<in_t> / normal_divisor) * value_bound;
+ }
+ return error_bound;
+} \ No newline at end of file