diff options
author | Eric Kunze <eric.kunze@arm.com> | 2024-02-13 16:51:17 -0800 |
---|---|---|
committer | Eric Kunze <eric.kunze@arm.com> | 2024-02-14 21:17:21 -0800 |
commit | 1f05883799957300ea88d7ec314a5897e6c0ccb1 (patch) | |
tree | b4113fd73a80f9e7ac252c057663b2ff39d9eb65 /chapters | |
parent | 74e2ceba954ed6111b3e3ce40c5ff88fe79ff043 (diff) | |
download | specification-1f05883799957300ea88d7ec314a5897e6c0ccb1.tar.gz |
Add SIN/COS to elementwise operator set
Only defined for floating-point types.
Signed-off-by: Eric Kunze <eric.kunze@arm.com>
Change-Id: Ieae355076f9aac6882fab8530e6d7d9985a6e661
Diffstat (limited to 'chapters')
-rw-r--r-- | chapters/ewise_unary.adoc | 36 | ||||
-rw-r--r-- | chapters/introduction.adoc | 12 |
2 files changed, 48 insertions, 0 deletions
diff --git a/chapters/ewise_unary.adoc b/chapters/ewise_unary.adoc index 4b8cd4d..e2d3779 100644 --- a/chapters/ewise_unary.adoc +++ b/chapters/ewise_unary.adoc @@ -67,6 +67,24 @@ include::{generated}/operators/CLZ.adoc[] include::{pseudocode}/operators/CLZ.tosac[lines=10..-1] ---- +==== COS + +Elementwise cosine operation for values given in radians. + +include::{generated}/operators/COS.adoc[] + +[source, c++] +---- +include::{pseudocode}/operators/COS.tosac[] +---- + +*Floating-point behavior:* +|=== +|Input|-infinity|+infinity|-0|+0|NaN + +|Output|NaN|NaN|+1|+1|NaN +|=== + ==== EXP Elementwise e to the x operation @@ -185,3 +203,21 @@ include::{generated}/operators/RSQRT.adoc[] ---- include::{pseudocode}/operators/RSQRT.tosac[lines=10..-1] ---- + +==== SIN + +Elementwise sine operation for values given in radians. + +include::{generated}/operators/COS.adoc[] + +[source, c++] +---- +include::{pseudocode}/operators/COS.tosac[] +---- + +*Floating-point behavior:* +|=== +|Input|-infinity|+infinity|-0|+0|NaN + +|Output|NaN|NaN|-0|+0|NaN +|=== diff --git a/chapters/introduction.adoc b/chapters/introduction.adoc index 17c16a8..a580472 100644 --- a/chapters/introduction.adoc +++ b/chapters/introduction.adoc @@ -309,6 +309,18 @@ Let n be number of elements in the product, out_imp the implementation result, a Let `err_bnd = abs(out_ref) * (pow(1 + pow(2, -normal_frac<in_out_t> - 1), n) - 1)` + Then `tosa_reference_check_fp_bnd<in_out_t>(out_imp, out_ref, err_bnd)` must be true +| <<COS>> +| Let `x` be an input element and `out_imp` the implementation output of `cos(x)`. + +Let `out_ref` be the result of the fp64_t reference implementation of `cos(x)`. + +Let `err_bnd = abs(out_ref) * exp2(-normal_frac<in_out_t>/2)` + +Then `tosa_reference_check_fp_bnd<in_out_t>(out_imp, out_ref, err_bnd)` must be true + +| <<SIN>> +| Let `x` be an input element and `out_imp` the implementation output of `sin(x)`. + +Let `out_ref` be the result of the fp64_t reference implementation of `sin(x)`. + +Let `err_bnd = abs(out_ref) * exp2(-normal_frac<in_out_t>/2)` + +Then `tosa_reference_check_fp_bnd<in_out_t>(out_imp, out_ref, err_bnd)` must be true + |=== ===== Operator sequence precision requirement |