diff options
author | Eric Kunze <eric.kunze@arm.com> | 2022-03-11 15:12:38 -0800 |
---|---|---|
committer | Eric Kunze <eric.kunze@arm.com> | 2022-03-15 13:40:39 -0700 |
commit | ce6e02cec3a06d991e112f0f875123f1d1f928dc (patch) | |
tree | 7f2f6aba746321c9b14af6287157db782d7c6c22 /chapters/comparison.adoc | |
parent | 2ff79fe6b31f41685cf2cecfca5410db40440aaf (diff) | |
download | specification-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.adoc | 20 |
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); } ---- |