From 8754ec288dc491f3a9e936e68a1fd35783c9808e Mon Sep 17 00:00:00 2001
From: Dominic Symes <dominic.symes@arm.com>
Date: Fri, 8 Dec 2023 17:45:31 +0000
Subject: Main Conformance: TANH change, SCATTER clarification

TANH can have cancellation between exp(x) and exp(-x)
for small abs(x). To allow for this, a lower bound of
0.5*exp(-normal_fraction<in_out_t>) is set for the
error bound. The TANH formula also can contain 4
exp() values, so the error bound is increased to 4
multiplied by the exp() error bound.

SCATTER output size K must be as least as great
as the number of indices W, as each index is distinct.

Change-Id: I8d1f1c866bd59d8140cf7db76404f5006a04a3f3
Signed-off-by: Dominic Symes <dominic.symes@arm.com>
---
 chapters/introduction.adoc | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

(limited to 'chapters/introduction.adoc')

diff --git a/chapters/introduction.adoc b/chapters/introduction.adoc
index 11ba26b..dc45808 100644
--- a/chapters/introduction.adoc
+++ b/chapters/introduction.adoc
@@ -281,12 +281,18 @@ Let `out_ref` be the result of the fp64_t reference implementation of `pow(x,y)`
 Let `err_bnd = abs(out_ref) * exp2(-normal_frac<in_out_t>) * (1+abs(log(abs(x))*y))` +
 Then `tosa_reference_check_fp_bnd<in_out_t>(out_imp, out_ref, err_bnd)` must be true
 
-| <<SIGMOID>>, <<TANH>>
+| <<SIGMOID>>
 | Let `x` be an input element and `out_imp` the implementation output. +
 Let `out_ref` be the result of the fp64_t reference implementation. +
 Let `err_bnd = abs(out_ref) * exp2(-normal_frac<in_out_t>) * (2 * (1+abs(x)))` +
 Then `tosa_reference_check_fp_bnd<in_out_t>(out_imp, out_ref, err_bnd)` must be true
 
+| <<TANH>>
+| Let `x` be an input element and `out_imp` the implementation output. +
+Let `out_ref` be the result of the fp64_t reference implementation. +
+Let `err_bnd = exp2(-normal_frac<in_out_t>) * max(0.5, abs(out_ref) * (4 * (1+abs(x))))` +
+Then `tosa_reference_check_fp_bnd<in_out_t>(out_imp, out_ref, err_bnd)` must be true
+
 | <<REDUCE_SUM>>
 | Each output can be expressed as a dot product of an input vector with a vector of ones. +
 This dot product must meet the <<Dot product accuracy requirements>>
-- 
cgit v1.2.1

