Q_QADDI(3)

Q_QADDI3

Fixed-point math functions which apply integers to a q number

Usage

#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);

Overview

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.

Releases

15 releases since FreeBSD 13.0-RELEASE; the text changed 1 time.

  1. 13.0–13.2
  2. 13.3–16.0

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 ⟨[email protected]⟩ and sponsored by Netflix, Inc.

From base 16.0-CURRENT-20261027-61c70dc16a79 in FreeBSD 16.0-CURRENT (2026-10-27). Parsed by carta from the page's mdoc source.