aboutsummaryrefslogtreecommitdiff
path: root/chapters
diff options
context:
space:
mode:
authorEric Kunze <eric.kunze@arm.com>2024-02-13 16:51:17 -0800
committerEric Kunze <eric.kunze@arm.com>2024-02-14 21:17:21 -0800
commit1f05883799957300ea88d7ec314a5897e6c0ccb1 (patch)
treeb4113fd73a80f9e7ac252c057663b2ff39d9eb65 /chapters
parent74e2ceba954ed6111b3e3ce40c5ff88fe79ff043 (diff)
downloadspecification-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.adoc36
-rw-r--r--chapters/introduction.adoc12
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