]> Cypherpunks repositories - gostls13.git/commitdiff
math: simplify comparison in FMA when swapping p and z
authorsmasher164 <aindurti@gmail.com>
Thu, 6 Aug 2020 22:37:10 +0000 (18:37 -0400)
committerEmmanuel Odeke <emmanuel@orijtech.com>
Mon, 29 Mar 2021 06:45:05 +0000 (06:45 +0000)
Discovered by Junchen Li on CL 246858, the comparison before p and z are
swapped can be simplified from

    pe < ze || (pe == ze && (pm1 < zm1 || (pm1 == zm1 && pm2 < zm2)))

to

    pe < ze || pe == ze && pm1 < zm1

because zm2 is initialized to 0 before the branch.

Change-Id: Iee92d570038df2b0f8941ef6e422a022654ab2d6
Reviewed-on: https://go-review.googlesource.com/c/go/+/247241
Run-TryBot: Akhil Indurti <aindurti@gmail.com>
Run-TryBot: Emmanuel Odeke <emmanuel@orijtech.com>
Trust: Emmanuel Odeke <emmanuel@orijtech.com>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Keith Randall <khr@golang.org>
src/math/fma.go

index db78dfa5e15ccfe413ba39a99e4cb70f5a9e89fa..ca0bf99f215603579286bf250cf6ae31c51cb193 100644 (file)
@@ -128,7 +128,7 @@ func FMA(x, y, z float64) float64 {
        pe -= int32(is62zero)
 
        // Swap addition operands so |p| >= |z|
-       if pe < ze || (pe == ze && (pm1 < zm1 || (pm1 == zm1 && pm2 < zm2))) {
+       if pe < ze || pe == ze && pm1 < zm1 {
                ps, pe, pm1, pm2, zs, ze, zm1, zm2 = zs, ze, zm1, zm2, ps, pe, pm1, pm2
        }