Add real_iszero to real.*

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.
This commit is contained in:
Aldy Hernandez 2022-08-26 16:57:09 +02:00
parent 33cae27763
commit 1d3145360f
2 changed files with 22 additions and 0 deletions

View file

@ -1272,6 +1272,22 @@ real_isneg (const REAL_VALUE_TYPE *r)
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

View file

@ -295,6 +295,12 @@ extern bool real_isneg (const REAL_VALUE_TYPE *);
/* 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 *);