Q_IFRAWMASK,
    Q_IFVALIMASK, Q_IFVALFMASK,
    Q_GIFRAW, Q_GIFABSVAL,
    Q_GIFVAL, Q_SIFVAL,
    Q_SIFVALS — fixed-point math
    functions which manipulate the combined integer/fractional data
  bits
#include
    <sys/qmath.h>
ITYPE
  
  Q_IFRAWMASK(QTYPE
    q);
ITYPE
  
  Q_IFVALIMASK(QTYPE
    q);
ITYPE
  
  Q_IFVALFMASK(QTYPE
    q);
ITYPE
  
  Q_GIFRAW(QTYPE
    q);
ITYPE
  
  Q_GIFABSVAL(QTYPE
    q);
ITYPE
  
  Q_GIFVAL(QTYPE
    q);
QTYPE
  
  Q_SIFVAL(QTYPE
    q, ITYPE ifv);
QTYPE
  
  Q_SIFVALS(QTYPE
    q, ITYPE iv,
    ITYPE fv);
Q_IFRAWMASK()
    returns a q-specific bit mask for
    q's combined integer and fractional data bits.
Q_IFVALIMASK()
    and
    Q_IFVALFMASK()
    return q-specific bit masks for the integer and
    fractional bits of q's combined integer and fractional
    data bits value, i.e., are applicable to the values returned by
    Q_GIFABSVAL() and
    Q_GIFVAL().
Q_GIFRAW()
    returns q's raw masked integer/fractional data
  bits.
Q_GIFABSVAL()
    and
    Q_GIFVAL()
    return the absolute and real values of q's
    integer/fractional data bits respectively.
Q_SIFVAL()
    sets q's combined integer/fractional data bits to the
    value ifv, whereas
    Q_SIFVALS()
    independently sets q's integer and fractional data
    bits to the separate values iv and
    fv.
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.
For more details, see
    qmath(3).
Q_IFRAWMASK(),
    Q_IFVALIMASK(),
    Q_IFVALFMASK(),
    Q_GIFABSVAL(), Q_GIFVAL(),
    Q_GIFRAW(), Q_GIFABSVAL()
    and Q_GIFVAL() return their respective values as
    integers of the same underlying ITYPE as q.
Q_SIFVAL() and
    Q_SIFVALS() return the value of
    q post change.
The
    qmath(3)
    functions first appeared in FreeBSD 13.0.