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