diff --git a/libcxx/test/std/numerics/numeric.ops/numeric.ops.midpoint/midpoint.float.pass.cpp b/libcxx/test/std/numerics/numeric.ops/numeric.ops.midpoint/midpoint.float.pass.cpp --- a/libcxx/test/std/numerics/numeric.ops/numeric.ops.midpoint/midpoint.float.pass.cpp +++ b/libcxx/test/std/numerics/numeric.ops/numeric.ops.midpoint/midpoint.float.pass.cpp @@ -92,7 +92,7 @@ assert(d0 < d1); // sanity checking assert(d1 < d2); // sanity checking -#if defined(__PPC__) && __LONG_DOUBLE_128__ && !__LONG_DOUBLE_IEEE128__ +#if defined(__PPC__) && __LONG_DOUBLE_128__ && (!defined(__LONG_DOUBLE_IEEE128__) || !__LONG_DOUBLE_IEEE128__) // For 128 bit long double implemented as 2 doubles on PowerPC, // nextafterl() of libm gives imprecise results which fails the // midpoint() tests below. So skip the test for this case.