Changeset View
Changeset View
Standalone View
Standalone View
share/man/man3/Q_QADDQ.3
- This file was added.
.\" | |||||
.\" Copyright (c) 2018 Netflix, Inc. | |||||
.\" All rights reserved. | |||||
.\" | |||||
.\" Redistribution and use in source and binary forms, with or without | |||||
.\" modification, are permitted provided that the following conditions | |||||
.\" are met: | |||||
.\" 1. Redistributions of source code must retain the above copyright | |||||
.\" notice, this list of conditions, and the following disclaimer, | |||||
.\" without modification, immediately at the beginning of the file. | |||||
.\" 2. The name of the author may not be used to endorse or promote products | |||||
.\" derived from this software without specific prior written permission. | |||||
.\" | |||||
.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND | |||||
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | |||||
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | |||||
.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR | |||||
.\" ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | |||||
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | |||||
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | |||||
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | |||||
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | |||||
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | |||||
.\" SUCH DAMAGE. | |||||
.\" | |||||
.\" $FreeBSD$ | |||||
.\" | |||||
.Dd July 8, 2018 | |||||
.Dt Q_QADDQ 3 | |||||
.Os | |||||
.Sh NAME | |||||
.Nm Q_QADDQ , | |||||
.Nm Q_QDIVQ , | |||||
.Nm Q_QMULQ , | |||||
.Nm Q_QSUBQ , | |||||
.Nm Q_NORMPREC , | |||||
.Nm Q_QMAXQ , | |||||
.Nm Q_QMINQ , | |||||
.Nm Q_QCLONEQ , | |||||
.Nm Q_CPYVALQ | |||||
.Nd fixed-point math functions which operate on two Q numbers | |||||
.Sh SYNOPSIS | |||||
.In sys/qmath.h | |||||
.Ft int | |||||
.Fn Q_QADDQ "QTYPE *a" "QTYPE b" | |||||
.Ft int | |||||
.Fn Q_QDIVQ "QTYPE *a" "QTYPE b" | |||||
.Ft int | |||||
.Fn Q_QMULQ "QTYPE *a" "QTYPE b" | |||||
.Ft int | |||||
.Fn Q_QSUBQ "QTYPE *a" "QTYPE b" | |||||
.Ft int | |||||
.Fn Q_NORMPREC "QTYPE *a" "QTYPE *b" | |||||
.Ft QTYPE | |||||
.Fn Q_QMAXQ "QTYPE a" "QTYPE b" | |||||
.Ft QTYPE | |||||
.Fn Q_QMINQ "QTYPE a" "QTYPE b" | |||||
.Ft int | |||||
.Fn Q_QCLONEQ "QTYPE *l" "QTYPE r" | |||||
.Ft int | |||||
.Fn Q_QCPYVALQ "QTYPE *l" "QTYPE r" | |||||
.Sh DESCRIPTION | |||||
The | |||||
.Fn Q_QADDQ , | |||||
.Fn Q_QDIVQ , | |||||
.Fn Q_QMULQ , | |||||
and | |||||
.Fn Q_QSUBQ | |||||
functions add, divide, multiply or subtract | |||||
.Fa b | |||||
to/by/from | |||||
.Fa a | |||||
respectively, storing the result in | |||||
.Fa a . | |||||
Both arguments must be initialized with the same fractional radix point. | |||||
.Pp | |||||
The | |||||
.Fn Q_NORMPREC | |||||
function attempts to normalise the precision of | |||||
.Fa a | |||||
and | |||||
.Fa b | |||||
if they differ. | |||||
The greater of the two precisions is preferred if possible, unless that would | |||||
truncate integer component data for the other operand, in which case the highest | |||||
precision that preserves the integer component of both | |||||
.Fa a | |||||
and | |||||
.Fa b | |||||
is selected. | |||||
.Pp | |||||
The | |||||
.Fn Q_QMAXQ | |||||
and | |||||
.Fn Q_QMINQ | |||||
functions return the larger or smaller of | |||||
.Fa a | |||||
and | |||||
.Fa b | |||||
respectively. | |||||
.Pp | |||||
The | |||||
.Fn Q_QCLONEQ | |||||
and | |||||
.Fn Q_QCPYVALQ | |||||
functions attempt to store identical or representational copies of | |||||
.Fa r , | |||||
in | |||||
.Fa l | |||||
respectively. | |||||
An identical Q number produced by cloning copies the control bits as well as the | |||||
verbatim integer/fractional bits. | |||||
A representational copy only copies the values of | |||||
.Fa r Ap s | |||||
integer and fractional bits, representing them in the bits available per | |||||
.Fa l Ap s | |||||
Q format. | |||||
.Pp | |||||
All of those functions operate on the following data types: | |||||
.Vt s8q_t , | |||||
.Vt u8q_t , | |||||
.Vt s16q_t , | |||||
.Vt u16q_t , | |||||
.Vt s32q_t , | |||||
.Vt u32q_t , | |||||
.Vt s64q_t , | |||||
and | |||||
.Vt u64q_t , | |||||
which are referred to generically as | |||||
.Fa QTYPE . | |||||
.Pp | |||||
For more details, see | |||||
.Xr qmath 3 . | |||||
.Sh RETURN VALUES | |||||
The | |||||
.Fn Q_QADDQ , | |||||
.Fn Q_QDIVQ , | |||||
.Fn Q_QMULQ , | |||||
.Fn Q_QSUBQ | |||||
.Fn Q_NORMPREC , | |||||
.Fn Q_QCLONEQ | |||||
and | |||||
.Fn Q_QCPYVALQ | |||||
functions return 0 on success, or an errno on failure. | |||||
.Er EINVAL | |||||
is returned for divide-by-zero. | |||||
.Er EOVERFLOW | |||||
and | |||||
.Er ERANGE | |||||
are returned for overflow and underflow respectively. | |||||
.Er ERANGE is also returned when the precision of arguments | |||||
does not match. | |||||
.Pp | |||||
The | |||||
.Fn Q_QMAXQ | |||||
and | |||||
.Fn Q_QMINQ | |||||
functions return the numerically larger or smaller of their two inputs | |||||
respectively. | |||||
.Sh SEE ALSO | |||||
.Xr errno 2 , | |||||
.Xr qmath 3 , | |||||
.Xr stdint 7 | |||||
.Sh HISTORY | |||||
The | |||||
.Xr qmath 3 | |||||
functions first appeared in | |||||
.Fx 13.0 . | |||||
.Sh AUTHORS | |||||
.An -nosplit | |||||
The | |||||
.Xr qmath 3 | |||||
functions and this manual page were written by | |||||
.An Lawrence Stewart Aq Mt lstewart@FreeBSD.org | |||||
and sponsored by Netflix, Inc. |