NAME
Q_SIGNED
, Q_LTZ
,
Q_PRECEQ
, Q_QLTQ
,
Q_QLEQ
, Q_QGTQ
,
Q_QGEQ
, Q_QEQ
,
Q_QNEQ
, Q_OFLOW
,
Q_RELPREC
—
fixed-point math comparison and logic
functions
SYNOPSIS
#include
<sys/qmath.h>
bool
Q_SIGNED
(NTYPE
n);
bool
Q_LTZ
(NTYPE
n);
bool
Q_PRECEQ
(QTYPE
a, QTYPE b);
bool
Q_QLTQ
(QTYPE
a, QTYPE b);
bool
Q_QLEQ
(QTYPE
a, QTYPE b);
bool
Q_QGTQ
(QTYPE
a, QTYPE b);
bool
Q_QGEQ
(QTYPE
a, QTYPE b);
bool
Q_QEQ
(QTYPE
a, QTYPE b);
bool
Q_QNEQ
(QTYPE
a, QTYPE b);
bool
Q_OFLOW
(QTYPE
q, ITYPE iv);
int
Q_RELPREC
(QTYPE
a, QTYPE b);
DESCRIPTION
Q_SIGNED
()
returns true if the numeric data type passed in as
n is signed, or false otherwise.
Q_LTZ
()
returns true if the numeric value passed in as
n is negative (requires types which use the MSB as the
sign bit), or false otherwise.
Q_PRECEQ
()
returns true if the number of a
and b fractional bits is the same,
false otherwise.
The
Q_QLTQ
(),
Q_QLEQ
(),
Q_QGTQ
(),
Q_QGEQ
(),
Q_QEQ
()
and
Q_QNEQ
()
functions compare two Q numbers, returning true if
a is less than, less than or equal to, greater than,
greater than or equal to, equal to, or not equal to b
respectively, or false otherwise. The integral and
fractional values are used to perform the comparison, without explicit
concern for the underlying number of integer versus fractional bits.
Q_OFLOW
()
returns true if integer value iv
cannot be stored in q without truncation, or false
otherwise.
Q_RELPREC
()
returns the relative precision of a versus
b. In terms of
Qm.n
notation, this function returns the difference between the
n values of
a and b. For example, a return
value of +4 means that a has an additional 4 bits of
fractional precision compared to b.
All of those functions operate on the following data types: s8q_t, u8q_t, s16q_t, u16q_t, s32q_t, u32q_t, s64q_t, and u64q_t, which are referred to generically as QTYPE. The ITYPE refers to the stdint(7) integer types. NTYPE is used to refer to any numeric type and is therefore a superset of QTYPE and ITYPE.
For more details, see qmath(3).
RETURN VALUES
The Q_SIGNED
(),
Q_LTZ
(), Q_PRECEQ
(),
Q_QLTQ
(), Q_QLEQ
(),
Q_QGTQ
(), Q_QGEQ
(),
Q_QEQ
(), Q_QNEQ
() and
Q_OFLOW
() functions return expressions that evaluate
to boolean true or false.
Q_RELPREC
() returns the relative precision
difference as a signed integer.
SEE ALSO
HISTORY
The qmath(3) functions first appeared in FreeBSD 13.0.
AUTHORS
The qmath(3) functions and this manual page were written by Lawrence Stewart <lstewart@FreeBSD.org> and sponsored by Netflix, Inc.