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