xref: /freebsd-src/share/man/man3/Q_QADDQ.3 (revision fa9896e082a1046ff4fbc75fcba4d18d1f2efc19)
1*5a38af1fSEdward Tomasz Napierala.\"
2*5a38af1fSEdward Tomasz Napierala.\" Copyright (c) 2018 Netflix, Inc.
3*5a38af1fSEdward Tomasz Napierala.\" All rights reserved.
4*5a38af1fSEdward Tomasz Napierala.\"
5*5a38af1fSEdward Tomasz Napierala.\" Redistribution and use in source and binary forms, with or without
6*5a38af1fSEdward Tomasz Napierala.\" modification, are permitted provided that the following conditions
7*5a38af1fSEdward Tomasz Napierala.\" are met:
8*5a38af1fSEdward Tomasz Napierala.\" 1. Redistributions of source code must retain the above copyright
9*5a38af1fSEdward Tomasz Napierala.\"    notice, this list of conditions, and the following disclaimer,
10*5a38af1fSEdward Tomasz Napierala.\"    without modification, immediately at the beginning of the file.
11*5a38af1fSEdward Tomasz Napierala.\" 2. The name of the author may not be used to endorse or promote products
12*5a38af1fSEdward Tomasz Napierala.\"    derived from this software without specific prior written permission.
13*5a38af1fSEdward Tomasz Napierala.\"
14*5a38af1fSEdward Tomasz Napierala.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
15*5a38af1fSEdward Tomasz Napierala.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16*5a38af1fSEdward Tomasz Napierala.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
17*5a38af1fSEdward Tomasz Napierala.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR
18*5a38af1fSEdward Tomasz Napierala.\" ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19*5a38af1fSEdward Tomasz Napierala.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20*5a38af1fSEdward Tomasz Napierala.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
21*5a38af1fSEdward Tomasz Napierala.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
22*5a38af1fSEdward Tomasz Napierala.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
23*5a38af1fSEdward Tomasz Napierala.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
24*5a38af1fSEdward Tomasz Napierala.\" SUCH DAMAGE.
25*5a38af1fSEdward Tomasz Napierala.\"
26*5a38af1fSEdward Tomasz Napierala.Dd July 8, 2018
27*5a38af1fSEdward Tomasz Napierala.Dt Q_QADDQ 3
28*5a38af1fSEdward Tomasz Napierala.Os
29*5a38af1fSEdward Tomasz Napierala.Sh NAME
30*5a38af1fSEdward Tomasz Napierala.Nm Q_QADDQ ,
31*5a38af1fSEdward Tomasz Napierala.Nm Q_QDIVQ ,
32*5a38af1fSEdward Tomasz Napierala.Nm Q_QMULQ ,
33*5a38af1fSEdward Tomasz Napierala.Nm Q_QSUBQ ,
34*5a38af1fSEdward Tomasz Napierala.Nm Q_NORMPREC ,
35*5a38af1fSEdward Tomasz Napierala.Nm Q_QMAXQ ,
36*5a38af1fSEdward Tomasz Napierala.Nm Q_QMINQ ,
37*5a38af1fSEdward Tomasz Napierala.Nm Q_QCLONEQ ,
38*5a38af1fSEdward Tomasz Napierala.Nm Q_CPYVALQ
39*5a38af1fSEdward Tomasz Napierala.Nd fixed-point math functions which operate on two Q numbers
40*5a38af1fSEdward Tomasz Napierala.Sh SYNOPSIS
41*5a38af1fSEdward Tomasz Napierala.In sys/qmath.h
42*5a38af1fSEdward Tomasz Napierala.Ft int
43*5a38af1fSEdward Tomasz Napierala.Fn Q_QADDQ "QTYPE *a" "QTYPE b"
44*5a38af1fSEdward Tomasz Napierala.Ft int
45*5a38af1fSEdward Tomasz Napierala.Fn Q_QDIVQ "QTYPE *a" "QTYPE b"
46*5a38af1fSEdward Tomasz Napierala.Ft int
47*5a38af1fSEdward Tomasz Napierala.Fn Q_QMULQ "QTYPE *a" "QTYPE b"
48*5a38af1fSEdward Tomasz Napierala.Ft int
49*5a38af1fSEdward Tomasz Napierala.Fn Q_QSUBQ "QTYPE *a" "QTYPE b"
50*5a38af1fSEdward Tomasz Napierala.Ft int
51*5a38af1fSEdward Tomasz Napierala.Fn Q_NORMPREC "QTYPE *a" "QTYPE *b"
52*5a38af1fSEdward Tomasz Napierala.Ft QTYPE
53*5a38af1fSEdward Tomasz Napierala.Fn Q_QMAXQ "QTYPE a" "QTYPE b"
54*5a38af1fSEdward Tomasz Napierala.Ft QTYPE
55*5a38af1fSEdward Tomasz Napierala.Fn Q_QMINQ "QTYPE a" "QTYPE b"
56*5a38af1fSEdward Tomasz Napierala.Ft int
57*5a38af1fSEdward Tomasz Napierala.Fn Q_QCLONEQ "QTYPE *l" "QTYPE r"
58*5a38af1fSEdward Tomasz Napierala.Ft int
59*5a38af1fSEdward Tomasz Napierala.Fn Q_QCPYVALQ "QTYPE *l" "QTYPE r"
60*5a38af1fSEdward Tomasz Napierala.Sh DESCRIPTION
61*5a38af1fSEdward Tomasz NapieralaThe
62*5a38af1fSEdward Tomasz Napierala.Fn Q_QADDQ ,
63*5a38af1fSEdward Tomasz Napierala.Fn Q_QDIVQ ,
64*5a38af1fSEdward Tomasz Napierala.Fn Q_QMULQ ,
65*5a38af1fSEdward Tomasz Napieralaand
66*5a38af1fSEdward Tomasz Napierala.Fn Q_QSUBQ
67*5a38af1fSEdward Tomasz Napieralafunctions add, divide, multiply or subtract
68*5a38af1fSEdward Tomasz Napierala.Fa b
69*5a38af1fSEdward Tomasz Napieralato/by/from
70*5a38af1fSEdward Tomasz Napierala.Fa a
71*5a38af1fSEdward Tomasz Napieralarespectively, storing the result in
72*5a38af1fSEdward Tomasz Napierala.Fa a .
73*5a38af1fSEdward Tomasz NapieralaBoth arguments must be initialized with the same fractional radix point.
74*5a38af1fSEdward Tomasz Napierala.Pp
75*5a38af1fSEdward Tomasz NapieralaThe
76*5a38af1fSEdward Tomasz Napierala.Fn Q_NORMPREC
77*5a38af1fSEdward Tomasz Napieralafunction attempts to normalise the precision of
78*5a38af1fSEdward Tomasz Napierala.Fa a
79*5a38af1fSEdward Tomasz Napieralaand
80*5a38af1fSEdward Tomasz Napierala.Fa b
81*5a38af1fSEdward Tomasz Napieralaif they differ.
82*5a38af1fSEdward Tomasz NapieralaThe greater of the two precisions is preferred if possible, unless that would
83*5a38af1fSEdward Tomasz Napieralatruncate integer component data for the other operand, in which case the highest
84*5a38af1fSEdward Tomasz Napieralaprecision that preserves the integer component of both
85*5a38af1fSEdward Tomasz Napierala.Fa a
86*5a38af1fSEdward Tomasz Napieralaand
87*5a38af1fSEdward Tomasz Napierala.Fa b
88*5a38af1fSEdward Tomasz Napieralais selected.
89*5a38af1fSEdward Tomasz Napierala.Pp
90*5a38af1fSEdward Tomasz NapieralaThe
91*5a38af1fSEdward Tomasz Napierala.Fn Q_QMAXQ
92*5a38af1fSEdward Tomasz Napieralaand
93*5a38af1fSEdward Tomasz Napierala.Fn Q_QMINQ
94*5a38af1fSEdward Tomasz Napieralafunctions return the larger or smaller of
95*5a38af1fSEdward Tomasz Napierala.Fa a
96*5a38af1fSEdward Tomasz Napieralaand
97*5a38af1fSEdward Tomasz Napierala.Fa b
98*5a38af1fSEdward Tomasz Napieralarespectively.
99*5a38af1fSEdward Tomasz Napierala.Pp
100*5a38af1fSEdward Tomasz NapieralaThe
101*5a38af1fSEdward Tomasz Napierala.Fn Q_QCLONEQ
102*5a38af1fSEdward Tomasz Napieralaand
103*5a38af1fSEdward Tomasz Napierala.Fn Q_QCPYVALQ
104*5a38af1fSEdward Tomasz Napieralafunctions attempt to store identical or representational copies of
105*5a38af1fSEdward Tomasz Napierala.Fa r ,
106*5a38af1fSEdward Tomasz Napieralain
107*5a38af1fSEdward Tomasz Napierala.Fa l
108*5a38af1fSEdward Tomasz Napieralarespectively.
109*5a38af1fSEdward Tomasz NapieralaAn identical Q number produced by cloning copies the control bits as well as the
110*5a38af1fSEdward Tomasz Napieralaverbatim integer/fractional bits.
111*5a38af1fSEdward Tomasz NapieralaA representational copy only copies the values of
112*5a38af1fSEdward Tomasz Napierala.Fa r Ap s
113*5a38af1fSEdward Tomasz Napieralainteger and fractional bits, representing them in the bits available per
114*5a38af1fSEdward Tomasz Napierala.Fa l Ap s
115*5a38af1fSEdward Tomasz NapieralaQ format.
116*5a38af1fSEdward Tomasz Napierala.Pp
117*5a38af1fSEdward Tomasz NapieralaAll of those functions operate on the following data types:
118*5a38af1fSEdward Tomasz Napierala.Vt s8q_t ,
119*5a38af1fSEdward Tomasz Napierala.Vt u8q_t ,
120*5a38af1fSEdward Tomasz Napierala.Vt s16q_t ,
121*5a38af1fSEdward Tomasz Napierala.Vt u16q_t ,
122*5a38af1fSEdward Tomasz Napierala.Vt s32q_t ,
123*5a38af1fSEdward Tomasz Napierala.Vt u32q_t ,
124*5a38af1fSEdward Tomasz Napierala.Vt s64q_t ,
125*5a38af1fSEdward Tomasz Napieralaand
126*5a38af1fSEdward Tomasz Napierala.Vt u64q_t ,
127*5a38af1fSEdward Tomasz Napieralawhich are referred to generically as
128*5a38af1fSEdward Tomasz Napierala.Fa QTYPE .
129*5a38af1fSEdward Tomasz Napierala.Pp
130*5a38af1fSEdward Tomasz NapieralaFor more details, see
131*5a38af1fSEdward Tomasz Napierala.Xr qmath 3 .
132*5a38af1fSEdward Tomasz Napierala.Sh RETURN VALUES
133*5a38af1fSEdward Tomasz NapieralaThe
134*5a38af1fSEdward Tomasz Napierala.Fn Q_QADDQ ,
135*5a38af1fSEdward Tomasz Napierala.Fn Q_QDIVQ ,
136*5a38af1fSEdward Tomasz Napierala.Fn Q_QMULQ ,
137*5a38af1fSEdward Tomasz Napierala.Fn Q_QSUBQ
138*5a38af1fSEdward Tomasz Napierala.Fn Q_NORMPREC ,
139*5a38af1fSEdward Tomasz Napierala.Fn Q_QCLONEQ
140*5a38af1fSEdward Tomasz Napieralaand
141*5a38af1fSEdward Tomasz Napierala.Fn Q_QCPYVALQ
142*5a38af1fSEdward Tomasz Napieralafunctions return 0 on success, or an errno on failure.
143*5a38af1fSEdward Tomasz Napierala.Er EINVAL
144*5a38af1fSEdward Tomasz Napieralais returned for divide-by-zero.
145*5a38af1fSEdward Tomasz Napierala.Er EOVERFLOW
146*5a38af1fSEdward Tomasz Napieralaand
147*5a38af1fSEdward Tomasz Napierala.Er ERANGE
148*5a38af1fSEdward Tomasz Napieralaare returned for overflow and underflow respectively.
149*5a38af1fSEdward Tomasz Napierala.Er ERANGE is also returned when the precision of arguments
150*5a38af1fSEdward Tomasz Napieraladoes not match.
151*5a38af1fSEdward Tomasz Napierala.Pp
152*5a38af1fSEdward Tomasz NapieralaThe
153*5a38af1fSEdward Tomasz Napierala.Fn Q_QMAXQ
154*5a38af1fSEdward Tomasz Napieralaand
155*5a38af1fSEdward Tomasz Napierala.Fn Q_QMINQ
156*5a38af1fSEdward Tomasz Napieralafunctions return the numerically larger or smaller of their two inputs
157*5a38af1fSEdward Tomasz Napieralarespectively.
158*5a38af1fSEdward Tomasz Napierala.Sh SEE ALSO
159*5a38af1fSEdward Tomasz Napierala.Xr errno 2 ,
160*5a38af1fSEdward Tomasz Napierala.Xr qmath 3 ,
161*5a38af1fSEdward Tomasz Napierala.Xr stdint 7
162*5a38af1fSEdward Tomasz Napierala.Sh HISTORY
163*5a38af1fSEdward Tomasz NapieralaThe
164*5a38af1fSEdward Tomasz Napierala.Xr qmath 3
165*5a38af1fSEdward Tomasz Napieralafunctions first appeared in
166*5a38af1fSEdward Tomasz Napierala.Fx 13.0 .
167*5a38af1fSEdward Tomasz Napierala.Sh AUTHORS
168*5a38af1fSEdward Tomasz Napierala.An -nosplit
169*5a38af1fSEdward Tomasz NapieralaThe
170*5a38af1fSEdward Tomasz Napierala.Xr qmath 3
171*5a38af1fSEdward Tomasz Napieralafunctions and this manual page were written by
172*5a38af1fSEdward Tomasz Napierala.An Lawrence Stewart Aq Mt lstewart@FreeBSD.org
173*5a38af1fSEdward Tomasz Napieralaand sponsored by Netflix, Inc.
174