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/pseudocode.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/pseudocode.adoc')
-rw-r--r-- | chapters/pseudocode.adoc | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/chapters/pseudocode.adoc b/chapters/pseudocode.adoc index 71cc14d..238aa33 100644 --- a/chapters/pseudocode.adoc +++ b/chapters/pseudocode.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 2021 ARM Limited +// (C) COPYRIGHT 2021-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 @@ -85,14 +85,30 @@ in_t apply_floor<in_t>(in_t input) { } in_t apply_log<in_t>(in_t input) { + if (input == 0) { + return -INFINITY + } + else if (input < 0) { + return NaN; + } return the natural logarithm of input } in_t apply_max<in_t>(in_t a, in_t b) { + if (in_t == float_t) { + if (isNaN(a) || isNaN(b)) { + return NaN; + } + } if (a >= b) return a; else return b; } in_t apply_min<in_t>(in_t a, in_t b) { + if (in_t == float_t) { + if (isNaN(a) || isNaN(b)) { + return NaN; + } + } if (a < b) return a; else return b; } @@ -177,4 +193,7 @@ int rank(in_t input) int sum(in_t input[]) return the sum of values of an input list + +bool isNaN(float input) + return True if floating-point input value is NaN ---- |