From 6ab8136b4477fd75381c06fa0e7fa93c89c712a1 Mon Sep 17 00:00:00 2001 From: nsz Date: Sun, 6 May 2012 21:24:28 +0200 Subject: add FORCE_EVAL macro to evaluate float expr for their side effect updated nextafter* to use FORCE_EVAL, it can be used in many other places in the math code to improve readability. --- src/math/nextafter.c | 6 ++---- src/math/nextafterf.c | 6 ++---- src/math/nextafterl.c | 12 ++++-------- src/math/nexttoward.c | 6 ++---- src/math/nexttowardf.c | 6 ++---- 5 files changed, 12 insertions(+), 24 deletions(-) (limited to 'src/math') diff --git a/src/math/nextafter.c b/src/math/nextafter.c index e4bfb022..a3b42c99 100644 --- a/src/math/nextafter.c +++ b/src/math/nextafter.c @@ -29,9 +29,7 @@ double nextafter(double x, double y) if (e == 0x7ff) return x + x; /* raise underflow if ux.value is subnormal or zero */ - if (e == 0) { - volatile double z; - z = x*x + ux.value*ux.value; - } + if (e == 0) + FORCE_EVAL(x*x + ux.value*ux.value); return ux.value; } diff --git a/src/math/nextafterf.c b/src/math/nextafterf.c index 47775b92..b703487b 100644 --- a/src/math/nextafterf.c +++ b/src/math/nextafterf.c @@ -28,9 +28,7 @@ float nextafterf(float x, float y) if (e == 0x7f800000) return x + x; /* raise underflow if ux.value is subnormal or zero */ - if (e == 0) { - volatile float z; - z = x*x + ux.value*ux.value; - } + if (e == 0) + FORCE_EVAL(x*x + ux.value*ux.value); return ux.value; } diff --git a/src/math/nextafterl.c b/src/math/nextafterl.c index c09d9dd0..edc3cc9c 100644 --- a/src/math/nextafterl.c +++ b/src/math/nextafterl.c @@ -38,10 +38,8 @@ long double nextafterl(long double x, long double y) if (ux.bits.exp == 0x7fff) return x + x; /* raise underflow if ux.value is subnormal or zero */ - if (ux.bits.exp == 0) { - volatile float z; - z = x*x + ux.value*ux.value; - } + if (ux.bits.exp == 0) + FORCE_EVAL(x*x + ux.value*ux.value); return ux.value; } #elif LDBL_MANT_DIG == 113 && LDBL_MAX_EXP == 16384 @@ -77,10 +75,8 @@ long double nextafterl(long double x, long double y) if (ux.bits.exp == 0x7fff) return x + x; /* raise underflow if ux.value is subnormal or zero */ - if (ux.bits.exp == 0) { - volatile float z; - z = x*x + ux.value*ux.value; - } + if (ux.bits.exp == 0) + FORCE_EVAL(x*x + ux.value*ux.value); return ux.value; } #endif diff --git a/src/math/nexttoward.c b/src/math/nexttoward.c index 43f8fee8..7355f2f1 100644 --- a/src/math/nexttoward.c +++ b/src/math/nexttoward.c @@ -38,10 +38,8 @@ double nexttoward(double x, long double y) if (e == 0x7ff) return x + x; /* raise underflow if ux.value is subnormal or zero */ - if (e == 0) { - volatile float z; - z = x*x + ux.value*ux.value; - } + if (e == 0) + FORCE_EVAL(x*x + ux.value*ux.value); return ux.value; } #endif diff --git a/src/math/nexttowardf.c b/src/math/nexttowardf.c index e8e6f676..8648be6a 100644 --- a/src/math/nexttowardf.c +++ b/src/math/nexttowardf.c @@ -30,9 +30,7 @@ float nexttowardf(float x, long double y) if (e == 0x7f800000) return x + x; /* raise underflow if ux.value is subnormal or zero */ - if (e == 0) { - volatile float z; - z = x*x + ux.value*ux.value; - } + if (e == 0) + FORCE_EVAL(x*x + ux.value*ux.value); return ux.value; } -- cgit v1.2.1