aboutsummaryrefslogtreecommitdiff
path: root/chapters/comparison.adoc
diff options
context:
space:
mode:
authorEric Kunze <eric.kunze@arm.com>2022-03-11 15:12:38 -0800
committerEric Kunze <eric.kunze@arm.com>2022-03-15 13:40:39 -0700
commitce6e02cec3a06d991e112f0f875123f1d1f928dc (patch)
tree7f2f6aba746321c9b14af6287157db782d7c6c22 /chapters/comparison.adoc
parent2ff79fe6b31f41685cf2cecfca5410db40440aaf (diff)
downloadspecification-ce6e02cec3a06d991e112f0f875123f1d1f928dc.tar.gz
Update floating point edge cases
Cover cases where NaN, +/- 0, +/- infinity are involved Signed-off-by: Eric Kunze <eric.kunze@arm.com> Change-Id: I1a5a23c7b856ddb997f7cdc00282420294ef3e6d
Diffstat (limited to 'chapters/comparison.adoc')
-rw-r--r--chapters/comparison.adoc20
1 files changed, 16 insertions, 4 deletions
diff --git a/chapters/comparison.adoc b/chapters/comparison.adoc
index ad574fb..67f3506 100644
--- a/chapters/comparison.adoc
+++ b/chapters/comparison.adoc
@@ -1,7 +1,7 @@
//
// This confidential and proprietary software may be used only as
// authorised by a licensing agreement from ARM Limited
-// (C) COPYRIGHT 2020-2021 ARM Limited
+// (C) COPYRIGHT 2020-2022 ARM Limited
// ALL RIGHTS RESERVED
// The entire notice above must be reproduced on all authorised
// copies and copies may only be made to the extent permitted
@@ -32,7 +32,11 @@ for_each(index in shape) {
index2 = apply_broadcast(shape, shape2, index);
in_t value1 = tensor_read<in_t>(input1, shape1, index1);
in_t value2 = tensor_read<in_t>(input2, shape2, index2);
- out_t result = (value1 == value2) ? True : False;
+ out_t result;
+ if (isNaN(value1) || isNaN(value2))
+ result = False;
+ else
+ result = (value1 == value2) ? True : False;
tensor_write<out_t>(output, shape, index, result);
}
----
@@ -69,7 +73,11 @@ for_each(index in shape) {
index2 = apply_broadcast(shape, shape2, index);
in_t value1 = tensor_read<in_t>(input1, shape1, index1);
in_t value2 = tensor_read<in_t>(input2, shape2, index2);
- out_t result = (value1 > value2) ? True : False;
+ out_t result;
+ if (isNaN(value1) || isNaN(value2))
+ result = False;
+ else
+ result = (value1 > value2) ? True : False;
tensor_write<out_t>(output, shape, index, result);
}
----
@@ -105,7 +113,11 @@ for_each(index in shape) {
index2 = apply_broadcast(shape, shape2, index);
in_t value1 = tensor_read<in_t>(input1, shape1, index1);
in_t value2 = tensor_read<in_t>(input2, shape2, index2);
- out_t result = (value1 >= value2) ? True : False;
+ out_t result;
+ if (isNaN(value1) || isNaN(value2))
+ result = False;
+ else
+ result = (value1 >= value2) ? True : False;
tensor_write<out_t>(output, shape, index, result);
}
----