Go to the documentation of this file.
40 carry= (carry>>16) +
a.v[
i] +
b.v[
i];
50 carry= (carry>>16) +
a.v[
i] -
b.v[
i];
72 memset(&
out, 0,
sizeof(
out));
79 carry= (carry>>16) +
out.v[j] +
a.v[
i]*(
unsigned)
b.v[j-
i];
90 if(v)
return (v>>16)|1;
93 int v=
a.v[
i] -
b.v[
i];
94 if(v)
return (v>>16)|1;
104 unsigned int index=
i + (
s>>4);
108 out.v[
i]= v >> (
s&15);
116 if(!quot) quot = "_temp;
161 uint64_t
out =
a.v[3];
163 for (
int i = 2;
i >= 0;
i--)
int av_log2_16bit(unsigned v)
int64_t av_i2int(AVInteger a)
Convert the given AVInteger to an int64_t.
int av_log2_i(AVInteger a)
Return the rounded-down value of the base 2 logarithm of the given AVInteger.
AVInteger av_int2i(int64_t a)
Convert the given int64_t to an AVInteger.
int av_cmp_i(AVInteger a, AVInteger b)
Return 0 if a==b, 1 if a>b and -1 if a<b.
AVInteger av_add_i(AVInteger a, AVInteger b)
AVInteger av_mul_i(AVInteger a, AVInteger b)
The reader does not expect b to be semantically here and if the code is changed by maybe adding a a division or other the signedness will almost certainly be mistaken To avoid this confusion a new type was SUINT is the C unsigned type but it holds a signed int to use the same example SUINT a
AVInteger av_shr_i(AVInteger a, int s)
bitwise shift
#define av_assert2(cond)
assert() equivalent, that does lie in speed critical code.
uint16_t v[AV_INTEGER_SIZE]
#define i(width, name, range_min, range_max)
static const AVInteger zero_i
AVInteger av_div_i(AVInteger a, AVInteger b)
Return a/b.
AVInteger av_mod_i(AVInteger *quot, AVInteger a, AVInteger b)
Return a % b.
AVInteger av_sub_i(AVInteger a, AVInteger b)