Q_QADDI(3)

NAME
Q_QADDI, Q_QDIVI, Q_QMULI, Q_QSUBI, Q_QFRACI, Q_QCPYVALI - fixed-point math functions which apply integers to a Q number

SYNOPSIS
#include <sys/qmath.h>
int
Q_QADDI(QTYPE *a, ITYPE b);
int
Q_QDIVI(QTYPE *a, ITYPE b);
int
Q_QMULI(QTYPE *a, ITYPE b);
int
Q_QSUBI(QTYPE *a, ITYPE b);
int
Q_QFRACI(QTYPE *q, ITYPE n, ITYPE d);
int
Q_QCPYVALI(QTYPE *q, ITYPE i);

DESCRIPTION
The Q_QADDI(), Q_QDIVI(), Q_QMULI() and Q_QSUBI() functions add, divide, multiply or subtract b to/by/from a respectively, storing the result in a.

The Q_QFRACI() function computes the fraction n divided by d and stores the fixed-point result in q.

The Q_QCPYVALI() function overwrites q's integer and fractional bits with the Q representation of integer value i.

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).

RETURN VALUES
Q_QADDI(), Q_QDIVI(), Q_QMULI(), Q_QSUBI(), Q_QFRACI() and Q_QCPYVALI() functions return 0 on success, or an errno on failure. EINVAL is returned for divide-by-zero. EOVERFLOW and ERANGE are returned for overflow and underflow respectively.

SEE ALSO
errno(2), qmath(3), stdint(7)

HISTORY
The qmath(3) functions first appeared in FreeBSD 13.0.

AUTHORS
-nosplit The qmath(3) functions and this manual page were written by Lawrence Stewart <lstewart@FreeBSD.org> and sponsored by Netflix, Inc.