We have real_isnegzero but no real_iszero. We could memcmp with 0,
but that's just ugly.
gcc/ChangeLog:
* real.cc (real_iszero): New.
* real.h (real_iszero): New.
return r->sign;
}
+/* Determine whether a floating-point value X is plus or minus zero. */
+
+bool
+real_iszero (const REAL_VALUE_TYPE *r)
+{
+ return r->cl == rvc_zero;
+}
+
+/* Determine whether a floating-point value X is zero with SIGN. */
+
+bool
+real_iszero (const REAL_VALUE_TYPE *r, bool sign)
+{
+ return real_iszero (r) && r->sign == sign;
+}
+
/* Determine whether a floating-point value X is minus zero. */
bool
/* Determine whether a floating-point value X is minus zero. */
extern bool real_isnegzero (const REAL_VALUE_TYPE *);
+/* Determine whether a floating-point value X is plus or minus zero. */
+extern bool real_iszero (const REAL_VALUE_TYPE *);
+
+/* Determine whether a floating-point value X is zero with SIGN. */
+extern bool real_iszero (const REAL_VALUE_TYPE *, bool sign);
+
/* Test relationships between reals. */
extern bool real_identical (const REAL_VALUE_TYPE *, const REAL_VALUE_TYPE *);
extern bool real_equal (const REAL_VALUE_TYPE *, const REAL_VALUE_TYPE *);