|
Message-ID: <557979287957451E9255CCBC4CD7CBE5@H270> Date: Wed, 11 Dec 2019 10:55:29 +0100 From: "Stefan Kanthak" <stefan.kanthak@...go.de> To: <musl@...ts.openwall.com> Subject: [PATCH] fmax(), fmaxf(), fmaxl(), fmin(), fminf(), fminl() simplified Still more optimisations/simplifications in the math subtree. JFTR: I'm NOT subscribed to your mailing list, so CC: me in replies! --- -/src/math/fmax.c +++ +/src/math/fmax.c @@ -3,11 +3,9 @@ double fmax(double x, double y) { - if (isnan(x)) + if (x != x) return y; - if (isnan(y)) - return x; /* handle signed zeros, see C99 Annex F.9.9.2 */ - if (signbit(x) != signbit(y)) + if (x == y) return signbit(x) ? y : x; return x < y ? y : x; } --- -/src/math/fmaxf.c +++ +/src/math/fmaxf.c @@ -3,11 +3,9 @@ float fmaxf(float x, float y) { - if (isnan(x)) + if (x != x) return y; - if (isnan(y)) - return x; /* handle signed zeros, see C99 Annex F.9.9.2 */ - if (signbit(x) != signbit(y)) + if (x == y) return signbit(x) ? y : x; return x < y ? y : x; } --- -/src/math/fmaxl.c +++ +/src/math/fmaxl.c @@ -10,11 +10,9 @@ long double fmaxl(long double x, long double y) { - if (isnan(x)) + if (x != x) return y; - if (isnan(y)) - return x; /* handle signed zeros, see C99 Annex F.9.9.2 */ - if (signbit(x) != signbit(y)) + if (x == y) return signbit(x) ? y : x; return x < y ? y : x; } --- -/src/math/fmin.c +++ +/src/math/fmin.c @@ -3,11 +3,9 @@ double fmin(double x, double y) { - if (isnan(x)) + if (x != x) return y; - if (isnan(y)) - return x; /* handle signed zeros, see C99 Annex F.9.9.2 */ - if (signbit(x) != signbit(y)) + if (x == y) return signbit(x) ? x : y; - return x < y ? x : y; + return x > y ? y : x; } --- -/src/math/fminf.c +++ +/src/math/fminf.c @@ -3,11 +3,9 @@ float fminf(float x, float y) { - if (isnan(x)) + if (x != x) return y; - if (isnan(y)) - return x; /* handle signed zeros, see C99 Annex F.9.9.2 */ - if (signbit(x) != signbit(y)) + if (x == y) return signbit(x) ? x : y; - return x < y ? x : y; + return x > y ? y : x; } --- -/src/math/fminl.c +++ +/src/math/fminl.c @@ -10,11 +10,9 @@ long double fminl(long double x, long double y) { - if (isnan(x)) + if (x != x) return y; - if (isnan(y)) - return x; /* handle signed zeros, see C99 Annex F.9.9.2 */ - if (signbit(x) != signbit(y)) + if (x == y) return signbit(x) ? x : y; - return x < y ? x : y; + return x > y ? y : x; }
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.