xref: /freebsd/share/man/man3/Q_SIGNED.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_SIGNED 3
28*5a38af1fSEdward Tomasz Napierala.Os
29*5a38af1fSEdward Tomasz Napierala.Sh NAME
30*5a38af1fSEdward Tomasz Napierala.Nm Q_SIGNED ,
31*5a38af1fSEdward Tomasz Napierala.Nm Q_LTZ ,
32*5a38af1fSEdward Tomasz Napierala.Nm Q_PRECEQ ,
33*5a38af1fSEdward Tomasz Napierala.Nm Q_QLTQ ,
34*5a38af1fSEdward Tomasz Napierala.Nm Q_QLEQ ,
35*5a38af1fSEdward Tomasz Napierala.Nm Q_QGTQ ,
36*5a38af1fSEdward Tomasz Napierala.Nm Q_QGEQ ,
37*5a38af1fSEdward Tomasz Napierala.Nm Q_QEQ ,
38*5a38af1fSEdward Tomasz Napierala.Nm Q_QNEQ ,
39*5a38af1fSEdward Tomasz Napierala.Nm Q_OFLOW ,
40*5a38af1fSEdward Tomasz Napierala.Nm Q_RELPREC
41*5a38af1fSEdward Tomasz Napierala.Nd fixed-point math comparison and logic functions
42*5a38af1fSEdward Tomasz Napierala.Sh SYNOPSIS
43*5a38af1fSEdward Tomasz Napierala.In sys/qmath.h
44*5a38af1fSEdward Tomasz Napierala.Ft bool
45*5a38af1fSEdward Tomasz Napierala.Fn Q_SIGNED "NTYPE n"
46*5a38af1fSEdward Tomasz Napierala.Ft bool
47*5a38af1fSEdward Tomasz Napierala.Fn Q_LTZ "NTYPE n"
48*5a38af1fSEdward Tomasz Napierala.Ft bool
49*5a38af1fSEdward Tomasz Napierala.Fn Q_PRECEQ "QTYPE a" "QTYPE b"
50*5a38af1fSEdward Tomasz Napierala.Ft bool
51*5a38af1fSEdward Tomasz Napierala.Fn Q_QLTQ "QTYPE a" "QTYPE b"
52*5a38af1fSEdward Tomasz Napierala.Ft bool
53*5a38af1fSEdward Tomasz Napierala.Fn Q_QLEQ "QTYPE a" "QTYPE b"
54*5a38af1fSEdward Tomasz Napierala.Ft bool
55*5a38af1fSEdward Tomasz Napierala.Fn Q_QGTQ "QTYPE a" "QTYPE b"
56*5a38af1fSEdward Tomasz Napierala.Ft bool
57*5a38af1fSEdward Tomasz Napierala.Fn Q_QGEQ "QTYPE a" "QTYPE b"
58*5a38af1fSEdward Tomasz Napierala.Ft bool
59*5a38af1fSEdward Tomasz Napierala.Fn Q_QEQ "QTYPE a" "QTYPE b"
60*5a38af1fSEdward Tomasz Napierala.Ft bool
61*5a38af1fSEdward Tomasz Napierala.Fn Q_QNEQ "QTYPE a" "QTYPE b"
62*5a38af1fSEdward Tomasz Napierala.Ft bool
63*5a38af1fSEdward Tomasz Napierala.Fn Q_OFLOW "QTYPE q" "ITYPE iv"
64*5a38af1fSEdward Tomasz Napierala.Ft int
65*5a38af1fSEdward Tomasz Napierala.Fn Q_RELPREC "QTYPE a" "QTYPE b"
66*5a38af1fSEdward Tomasz Napierala.Sh DESCRIPTION
67*5a38af1fSEdward Tomasz Napierala.Fn Q_SIGNED
68*5a38af1fSEdward Tomasz Napieralareturns
69*5a38af1fSEdward Tomasz Napierala.Ft true
70*5a38af1fSEdward Tomasz Napieralaif the numeric data type passed in as
71*5a38af1fSEdward Tomasz Napierala.Fa n
72*5a38af1fSEdward Tomasz Napieralais signed, or
73*5a38af1fSEdward Tomasz Napierala.Ft false
74*5a38af1fSEdward Tomasz Napieralaotherwise.
75*5a38af1fSEdward Tomasz Napierala.Pp
76*5a38af1fSEdward Tomasz Napierala.Fn Q_LTZ
77*5a38af1fSEdward Tomasz Napieralareturns
78*5a38af1fSEdward Tomasz Napierala.Ft true
79*5a38af1fSEdward Tomasz Napieralaif the numeric value
80*5a38af1fSEdward Tomasz Napieralapassed in as
81*5a38af1fSEdward Tomasz Napierala.Fa n
82*5a38af1fSEdward Tomasz Napieralais negative
83*5a38af1fSEdward Tomasz Napierala.Pq requires types which use the MSB as the sign bit ,
84*5a38af1fSEdward Tomasz Napieralaor
85*5a38af1fSEdward Tomasz Napierala.Ft false
86*5a38af1fSEdward Tomasz Napieralaotherwise.
87*5a38af1fSEdward Tomasz Napierala.Pp
88*5a38af1fSEdward Tomasz Napierala.Fn Q_PRECEQ
89*5a38af1fSEdward Tomasz Napieralareturns
90*5a38af1fSEdward Tomasz Napierala.Ft true
91*5a38af1fSEdward Tomasz Napieralaif the number of
92*5a38af1fSEdward Tomasz Napierala.Fa a
93*5a38af1fSEdward Tomasz Napieralaand
94*5a38af1fSEdward Tomasz Napierala.Fa b
95*5a38af1fSEdward Tomasz Napieralafractional bits is the same,
96*5a38af1fSEdward Tomasz Napierala.Ft false
97*5a38af1fSEdward Tomasz Napieralaotherwise.
98*5a38af1fSEdward Tomasz Napierala.Pp
99*5a38af1fSEdward Tomasz NapieralaThe
100*5a38af1fSEdward Tomasz Napierala.Fn Q_QLTQ ,
101*5a38af1fSEdward Tomasz Napierala.Fn Q_QLEQ ,
102*5a38af1fSEdward Tomasz Napierala.Fn Q_QGTQ ,
103*5a38af1fSEdward Tomasz Napierala.Fn Q_QGEQ ,
104*5a38af1fSEdward Tomasz Napierala.Fn Q_QEQ
105*5a38af1fSEdward Tomasz Napieralaand
106*5a38af1fSEdward Tomasz Napierala.Fn Q_QNEQ
107*5a38af1fSEdward Tomasz Napieralafunctions compare two Q numbers, returning
108*5a38af1fSEdward Tomasz Napierala.Ft true
109*5a38af1fSEdward Tomasz Napieralaif
110*5a38af1fSEdward Tomasz Napierala.Fa a
111*5a38af1fSEdward Tomasz Napieralais less than, less than or equal to, greater than, greater than or equal to,
112*5a38af1fSEdward Tomasz Napieralaequal to, or not equal to
113*5a38af1fSEdward Tomasz Napierala.Fa b
114*5a38af1fSEdward Tomasz Napieralarespectively, or
115*5a38af1fSEdward Tomasz Napierala.Ft false
116*5a38af1fSEdward Tomasz Napieralaotherwise.
117*5a38af1fSEdward Tomasz NapieralaThe integral and fractional values are used to perform the comparison, without
118*5a38af1fSEdward Tomasz Napieralaexplicit concern for the underlying number of integer versus fractional bits.
119*5a38af1fSEdward Tomasz Napierala.Pp
120*5a38af1fSEdward Tomasz Napierala.Fn Q_OFLOW
121*5a38af1fSEdward Tomasz Napieralareturns
122*5a38af1fSEdward Tomasz Napierala.Ft true
123*5a38af1fSEdward Tomasz Napieralaif integer value
124*5a38af1fSEdward Tomasz Napierala.Fa iv
125*5a38af1fSEdward Tomasz Napieralacannot be stored in
126*5a38af1fSEdward Tomasz Napierala.Fa q
127*5a38af1fSEdward Tomasz Napieralawithout truncation, or false otherwise.
128*5a38af1fSEdward Tomasz Napierala.Pp
129*5a38af1fSEdward Tomasz Napierala.Fn Q_RELPREC
130*5a38af1fSEdward Tomasz Napieralareturns the relative precision of
131*5a38af1fSEdward Tomasz Napierala.Fa a
132*5a38af1fSEdward Tomasz Napieralaversus
133*5a38af1fSEdward Tomasz Napierala.Fa b .
134*5a38af1fSEdward Tomasz NapieralaIn terms of
135*5a38af1fSEdward Tomasz Napierala.Em Qm.n
136*5a38af1fSEdward Tomasz Napieralanotation, this function returns the difference between the
137*5a38af1fSEdward Tomasz Napierala.Em n
138*5a38af1fSEdward Tomasz Napieralavalues of
139*5a38af1fSEdward Tomasz Napierala.Fa a
140*5a38af1fSEdward Tomasz Napieralaand
141*5a38af1fSEdward Tomasz Napierala.Fa b .
142*5a38af1fSEdward Tomasz NapieralaFor example, a return value of +4 means that
143*5a38af1fSEdward Tomasz Napierala.Fa a
144*5a38af1fSEdward Tomasz Napieralahas an additional 4 bits of fractional precision compared to
145*5a38af1fSEdward Tomasz Napierala.Fa b .
146*5a38af1fSEdward Tomasz Napierala.Pp
147*5a38af1fSEdward Tomasz NapieralaAll of those functions operate on
148*5a38af1fSEdward Tomasz Napieralathe following data types:
149*5a38af1fSEdward Tomasz Napierala.Vt s8q_t ,
150*5a38af1fSEdward Tomasz Napierala.Vt u8q_t ,
151*5a38af1fSEdward Tomasz Napierala.Vt s16q_t ,
152*5a38af1fSEdward Tomasz Napierala.Vt u16q_t ,
153*5a38af1fSEdward Tomasz Napierala.Vt s32q_t ,
154*5a38af1fSEdward Tomasz Napierala.Vt u32q_t ,
155*5a38af1fSEdward Tomasz Napierala.Vt s64q_t ,
156*5a38af1fSEdward Tomasz Napieralaand
157*5a38af1fSEdward Tomasz Napierala.Vt u64q_t ,
158*5a38af1fSEdward Tomasz Napieralawhich are referred to generically as
159*5a38af1fSEdward Tomasz Napierala.Fa QTYPE .
160*5a38af1fSEdward Tomasz NapieralaThe
161*5a38af1fSEdward Tomasz Napierala.Fa ITYPE
162*5a38af1fSEdward Tomasz Napieralarefers to the
163*5a38af1fSEdward Tomasz Napierala.Xr stdint 7
164*5a38af1fSEdward Tomasz Napieralainteger types.
165*5a38af1fSEdward Tomasz Napierala.Fa NTYPE
166*5a38af1fSEdward Tomasz Napieralais used to refer to any numeric type and is therefore a superset of
167*5a38af1fSEdward Tomasz Napierala.Fa QTYPE
168*5a38af1fSEdward Tomasz Napieralaand
169*5a38af1fSEdward Tomasz Napierala.Fa ITYPE .
170*5a38af1fSEdward Tomasz Napierala.Pp
171*5a38af1fSEdward Tomasz NapieralaFor more details, see
172*5a38af1fSEdward Tomasz Napierala.Xr qmath 3 .
173*5a38af1fSEdward Tomasz Napierala.Sh RETURN VALUES
174*5a38af1fSEdward Tomasz NapieralaThe
175*5a38af1fSEdward Tomasz Napierala.Fn Q_SIGNED ,
176*5a38af1fSEdward Tomasz Napierala.Fn Q_LTZ ,
177*5a38af1fSEdward Tomasz Napierala.Fn Q_PRECEQ ,
178*5a38af1fSEdward Tomasz Napierala.Fn Q_QLTQ ,
179*5a38af1fSEdward Tomasz Napierala.Fn Q_QLEQ ,
180*5a38af1fSEdward Tomasz Napierala.Fn Q_QGTQ ,
181*5a38af1fSEdward Tomasz Napierala.Fn Q_QGEQ ,
182*5a38af1fSEdward Tomasz Napierala.Fn Q_QEQ ,
183*5a38af1fSEdward Tomasz Napierala.Fn Q_QNEQ
184*5a38af1fSEdward Tomasz Napieralaand
185*5a38af1fSEdward Tomasz Napierala.Fn Q_OFLOW
186*5a38af1fSEdward Tomasz Napieralafunctions return expressions that evaluate to boolean
187*5a38af1fSEdward Tomasz Napierala.Vt true
188*5a38af1fSEdward Tomasz Napieralaor
189*5a38af1fSEdward Tomasz Napierala.Vt false .
190*5a38af1fSEdward Tomasz Napierala.Pp
191*5a38af1fSEdward Tomasz Napierala.Fn Q_RELPREC
192*5a38af1fSEdward Tomasz Napieralareturns the relative precision difference as a signed integer.
193*5a38af1fSEdward Tomasz Napierala.Sh SEE ALSO
194*5a38af1fSEdward Tomasz Napierala.Xr errno 2 ,
195*5a38af1fSEdward Tomasz Napierala.Xr qmath 3 ,
196*5a38af1fSEdward Tomasz Napierala.Xr stdint 7
197*5a38af1fSEdward Tomasz Napierala.Sh HISTORY
198*5a38af1fSEdward Tomasz NapieralaThe
199*5a38af1fSEdward Tomasz Napierala.Xr qmath 3
200*5a38af1fSEdward Tomasz Napieralafunctions first appeared in
201*5a38af1fSEdward Tomasz Napierala.Fx 13.0 .
202*5a38af1fSEdward Tomasz Napierala.Sh AUTHORS
203*5a38af1fSEdward Tomasz Napierala.An -nosplit
204*5a38af1fSEdward Tomasz NapieralaThe
205*5a38af1fSEdward Tomasz Napierala.Xr qmath 3
206*5a38af1fSEdward Tomasz Napieralafunctions and this manual page were written by
207*5a38af1fSEdward Tomasz Napierala.An Lawrence Stewart Aq Mt lstewart@FreeBSD.org
208*5a38af1fSEdward Tomasz Napieralaand sponsored by Netflix, Inc.
209