Coverage Report

Created: 2026-01-20 07:37

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/openjpeg/src/lib/openjp2/opj_intmath.h
Line
Count
Source
1
/*
2
 * The copyright in this software is being made available under the 2-clauses
3
 * BSD License, included below. This software may be subject to other third
4
 * party and contributor rights, including patent rights, and no such rights
5
 * are granted under this license.
6
 *
7
 * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium
8
 * Copyright (c) 2002-2014, Professor Benoit Macq
9
 * Copyright (c) 2001-2003, David Janssens
10
 * Copyright (c) 2002-2003, Yannick Verschueren
11
 * Copyright (c) 2003-2007, Francois-Olivier Devaux
12
 * Copyright (c) 2003-2014, Antonin Descampe
13
 * Copyright (c) 2005, Herve Drolon, FreeImage Team
14
 * All rights reserved.
15
 *
16
 * Redistribution and use in source and binary forms, with or without
17
 * modification, are permitted provided that the following conditions
18
 * are met:
19
 * 1. Redistributions of source code must retain the above copyright
20
 *    notice, this list of conditions and the following disclaimer.
21
 * 2. Redistributions in binary form must reproduce the above copyright
22
 *    notice, this list of conditions and the following disclaimer in the
23
 *    documentation and/or other materials provided with the distribution.
24
 *
25
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
26
 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
27
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
28
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
29
 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
30
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
31
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
32
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
33
 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
34
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
35
 * POSSIBILITY OF SUCH DAMAGE.
36
 */
37
#ifndef OPJ_INTMATH_H
38
#define OPJ_INTMATH_H
39
/**
40
@file opj_intmath.h
41
@brief Implementation of operations on integers (INT)
42
43
The functions in OPJ_INTMATH.H have for goal to realize operations on integers.
44
*/
45
46
/** @defgroup OPJ_INTMATH OPJ_INTMATH - Implementation of operations on integers */
47
/*@{*/
48
49
/** @name Exported functions (see also openjpeg.h) */
50
/*@{*/
51
/* ----------------------------------------------------------------------- */
52
/**
53
Get the minimum of two integers
54
@return Returns a if a < b else b
55
*/
56
static INLINE OPJ_INT32 opj_int_min(OPJ_INT32 a, OPJ_INT32 b)
57
0
{
58
0
    return a < b ? a : b;
59
0
}
Unexecuted instantiation: cio.c:opj_int_min
Unexecuted instantiation: event.c:opj_int_min
Unexecuted instantiation: image.c:opj_int_min
Unexecuted instantiation: openjpeg.c:opj_int_min
Unexecuted instantiation: opj_malloc.c:opj_int_min
Unexecuted instantiation: j2k.c:opj_int_min
Unexecuted instantiation: jp2.c:opj_int_min
Unexecuted instantiation: mct.c:opj_int_min
Unexecuted instantiation: pi.c:opj_int_min
Unexecuted instantiation: tcd.c:opj_int_min
Unexecuted instantiation: tgt.c:opj_int_min
Unexecuted instantiation: function_list.c:opj_int_min
Unexecuted instantiation: thread.c:opj_int_min
Unexecuted instantiation: bio.c:opj_int_min
Unexecuted instantiation: dwt.c:opj_int_min
Unexecuted instantiation: invert.c:opj_int_min
Unexecuted instantiation: t1.c:opj_int_min
Unexecuted instantiation: t2.c:opj_int_min
Unexecuted instantiation: sparse_array.c:opj_int_min
Unexecuted instantiation: ht_dec.c:opj_int_min
Unexecuted instantiation: mqc.c:opj_int_min
60
61
/**
62
Get the minimum of two integers
63
@return Returns a if a < b else b
64
*/
65
static INLINE OPJ_UINT32 opj_uint_min(OPJ_UINT32 a, OPJ_UINT32 b)
66
0
{
67
0
    return a < b ? a : b;
68
0
}
Unexecuted instantiation: cio.c:opj_uint_min
Unexecuted instantiation: event.c:opj_uint_min
Unexecuted instantiation: image.c:opj_uint_min
Unexecuted instantiation: openjpeg.c:opj_uint_min
Unexecuted instantiation: opj_malloc.c:opj_uint_min
Unexecuted instantiation: j2k.c:opj_uint_min
Unexecuted instantiation: jp2.c:opj_uint_min
Unexecuted instantiation: mct.c:opj_uint_min
Unexecuted instantiation: pi.c:opj_uint_min
Unexecuted instantiation: tcd.c:opj_uint_min
Unexecuted instantiation: tgt.c:opj_uint_min
Unexecuted instantiation: function_list.c:opj_uint_min
Unexecuted instantiation: thread.c:opj_uint_min
Unexecuted instantiation: bio.c:opj_uint_min
Unexecuted instantiation: dwt.c:opj_uint_min
Unexecuted instantiation: invert.c:opj_uint_min
Unexecuted instantiation: t1.c:opj_uint_min
Unexecuted instantiation: t2.c:opj_uint_min
Unexecuted instantiation: sparse_array.c:opj_uint_min
Unexecuted instantiation: ht_dec.c:opj_uint_min
Unexecuted instantiation: mqc.c:opj_uint_min
69
70
/**
71
Get the maximum of two integers
72
@return Returns a if a > b else b
73
*/
74
static INLINE OPJ_INT32 opj_int_max(OPJ_INT32 a, OPJ_INT32 b)
75
0
{
76
0
    return (a > b) ? a : b;
77
0
}
Unexecuted instantiation: cio.c:opj_int_max
Unexecuted instantiation: event.c:opj_int_max
Unexecuted instantiation: image.c:opj_int_max
Unexecuted instantiation: openjpeg.c:opj_int_max
Unexecuted instantiation: opj_malloc.c:opj_int_max
Unexecuted instantiation: j2k.c:opj_int_max
Unexecuted instantiation: jp2.c:opj_int_max
Unexecuted instantiation: mct.c:opj_int_max
Unexecuted instantiation: pi.c:opj_int_max
Unexecuted instantiation: tcd.c:opj_int_max
Unexecuted instantiation: tgt.c:opj_int_max
Unexecuted instantiation: function_list.c:opj_int_max
Unexecuted instantiation: thread.c:opj_int_max
Unexecuted instantiation: bio.c:opj_int_max
Unexecuted instantiation: dwt.c:opj_int_max
Unexecuted instantiation: invert.c:opj_int_max
Unexecuted instantiation: t1.c:opj_int_max
Unexecuted instantiation: t2.c:opj_int_max
Unexecuted instantiation: sparse_array.c:opj_int_max
Unexecuted instantiation: ht_dec.c:opj_int_max
Unexecuted instantiation: mqc.c:opj_int_max
78
79
/**
80
Get the maximum of two integers
81
@return Returns a if a > b else b
82
*/
83
static INLINE OPJ_UINT32 opj_uint_max(OPJ_UINT32  a, OPJ_UINT32  b)
84
0
{
85
0
    return (a > b) ? a : b;
86
0
}
Unexecuted instantiation: cio.c:opj_uint_max
Unexecuted instantiation: event.c:opj_uint_max
Unexecuted instantiation: image.c:opj_uint_max
Unexecuted instantiation: openjpeg.c:opj_uint_max
Unexecuted instantiation: opj_malloc.c:opj_uint_max
Unexecuted instantiation: j2k.c:opj_uint_max
Unexecuted instantiation: jp2.c:opj_uint_max
Unexecuted instantiation: mct.c:opj_uint_max
Unexecuted instantiation: pi.c:opj_uint_max
Unexecuted instantiation: tcd.c:opj_uint_max
Unexecuted instantiation: tgt.c:opj_uint_max
Unexecuted instantiation: function_list.c:opj_uint_max
Unexecuted instantiation: thread.c:opj_uint_max
Unexecuted instantiation: bio.c:opj_uint_max
Unexecuted instantiation: dwt.c:opj_uint_max
Unexecuted instantiation: invert.c:opj_uint_max
Unexecuted instantiation: t1.c:opj_uint_max
Unexecuted instantiation: t2.c:opj_uint_max
Unexecuted instantiation: sparse_array.c:opj_uint_max
Unexecuted instantiation: ht_dec.c:opj_uint_max
Unexecuted instantiation: mqc.c:opj_uint_max
87
88
/**
89
 Get the saturated sum of two unsigned integers
90
 @return Returns saturated sum of a+b
91
 */
92
static INLINE OPJ_UINT32 opj_uint_adds(OPJ_UINT32 a, OPJ_UINT32 b)
93
0
{
94
0
    OPJ_UINT64 sum = (OPJ_UINT64)a + (OPJ_UINT64)b;
95
0
    return (OPJ_UINT32)(-(OPJ_INT32)(sum >> 32)) | (OPJ_UINT32)sum;
96
0
}
Unexecuted instantiation: cio.c:opj_uint_adds
Unexecuted instantiation: event.c:opj_uint_adds
Unexecuted instantiation: image.c:opj_uint_adds
Unexecuted instantiation: openjpeg.c:opj_uint_adds
Unexecuted instantiation: opj_malloc.c:opj_uint_adds
Unexecuted instantiation: j2k.c:opj_uint_adds
Unexecuted instantiation: jp2.c:opj_uint_adds
Unexecuted instantiation: mct.c:opj_uint_adds
Unexecuted instantiation: pi.c:opj_uint_adds
Unexecuted instantiation: tcd.c:opj_uint_adds
Unexecuted instantiation: tgt.c:opj_uint_adds
Unexecuted instantiation: function_list.c:opj_uint_adds
Unexecuted instantiation: thread.c:opj_uint_adds
Unexecuted instantiation: bio.c:opj_uint_adds
Unexecuted instantiation: dwt.c:opj_uint_adds
Unexecuted instantiation: invert.c:opj_uint_adds
Unexecuted instantiation: t1.c:opj_uint_adds
Unexecuted instantiation: t2.c:opj_uint_adds
Unexecuted instantiation: sparse_array.c:opj_uint_adds
Unexecuted instantiation: ht_dec.c:opj_uint_adds
Unexecuted instantiation: mqc.c:opj_uint_adds
97
98
/**
99
 Get the saturated difference of two unsigned integers
100
 @return Returns saturated sum of a-b
101
 */
102
static INLINE OPJ_UINT32 opj_uint_subs(OPJ_UINT32 a, OPJ_UINT32 b)
103
0
{
104
0
    return (a >= b) ? a - b : 0;
105
0
}
Unexecuted instantiation: cio.c:opj_uint_subs
Unexecuted instantiation: event.c:opj_uint_subs
Unexecuted instantiation: image.c:opj_uint_subs
Unexecuted instantiation: openjpeg.c:opj_uint_subs
Unexecuted instantiation: opj_malloc.c:opj_uint_subs
Unexecuted instantiation: j2k.c:opj_uint_subs
Unexecuted instantiation: jp2.c:opj_uint_subs
Unexecuted instantiation: mct.c:opj_uint_subs
Unexecuted instantiation: pi.c:opj_uint_subs
Unexecuted instantiation: tcd.c:opj_uint_subs
Unexecuted instantiation: tgt.c:opj_uint_subs
Unexecuted instantiation: function_list.c:opj_uint_subs
Unexecuted instantiation: thread.c:opj_uint_subs
Unexecuted instantiation: bio.c:opj_uint_subs
Unexecuted instantiation: dwt.c:opj_uint_subs
Unexecuted instantiation: invert.c:opj_uint_subs
Unexecuted instantiation: t1.c:opj_uint_subs
Unexecuted instantiation: t2.c:opj_uint_subs
Unexecuted instantiation: sparse_array.c:opj_uint_subs
Unexecuted instantiation: ht_dec.c:opj_uint_subs
Unexecuted instantiation: mqc.c:opj_uint_subs
106
107
/**
108
Clamp an integer inside an interval
109
@return
110
<ul>
111
<li>Returns a if (min < a < max)
112
<li>Returns max if (a > max)
113
<li>Returns min if (a < min)
114
</ul>
115
*/
116
static INLINE OPJ_INT32 opj_int_clamp(OPJ_INT32 a, OPJ_INT32 min,
117
                                      OPJ_INT32 max)
118
0
{
119
0
    if (a < min) {
120
0
        return min;
121
0
    }
122
0
    if (a > max) {
123
0
        return max;
124
0
    }
125
0
    return a;
126
0
}
Unexecuted instantiation: cio.c:opj_int_clamp
Unexecuted instantiation: event.c:opj_int_clamp
Unexecuted instantiation: image.c:opj_int_clamp
Unexecuted instantiation: openjpeg.c:opj_int_clamp
Unexecuted instantiation: opj_malloc.c:opj_int_clamp
Unexecuted instantiation: j2k.c:opj_int_clamp
Unexecuted instantiation: jp2.c:opj_int_clamp
Unexecuted instantiation: mct.c:opj_int_clamp
Unexecuted instantiation: pi.c:opj_int_clamp
Unexecuted instantiation: tcd.c:opj_int_clamp
Unexecuted instantiation: tgt.c:opj_int_clamp
Unexecuted instantiation: function_list.c:opj_int_clamp
Unexecuted instantiation: thread.c:opj_int_clamp
Unexecuted instantiation: bio.c:opj_int_clamp
Unexecuted instantiation: dwt.c:opj_int_clamp
Unexecuted instantiation: invert.c:opj_int_clamp
Unexecuted instantiation: t1.c:opj_int_clamp
Unexecuted instantiation: t2.c:opj_int_clamp
Unexecuted instantiation: sparse_array.c:opj_int_clamp
Unexecuted instantiation: ht_dec.c:opj_int_clamp
Unexecuted instantiation: mqc.c:opj_int_clamp
127
128
/**
129
Clamp an integer inside an interval
130
@return
131
<ul>
132
<li>Returns a if (min < a < max)
133
<li>Returns max if (a > max)
134
<li>Returns min if (a < min)
135
</ul>
136
*/
137
static INLINE OPJ_INT64 opj_int64_clamp(OPJ_INT64 a, OPJ_INT64 min,
138
                                        OPJ_INT64 max)
139
0
{
140
0
    if (a < min) {
141
0
        return min;
142
0
    }
143
0
    if (a > max) {
144
0
        return max;
145
0
    }
146
0
    return a;
147
0
}
Unexecuted instantiation: cio.c:opj_int64_clamp
Unexecuted instantiation: event.c:opj_int64_clamp
Unexecuted instantiation: image.c:opj_int64_clamp
Unexecuted instantiation: openjpeg.c:opj_int64_clamp
Unexecuted instantiation: opj_malloc.c:opj_int64_clamp
Unexecuted instantiation: j2k.c:opj_int64_clamp
Unexecuted instantiation: jp2.c:opj_int64_clamp
Unexecuted instantiation: mct.c:opj_int64_clamp
Unexecuted instantiation: pi.c:opj_int64_clamp
Unexecuted instantiation: tcd.c:opj_int64_clamp
Unexecuted instantiation: tgt.c:opj_int64_clamp
Unexecuted instantiation: function_list.c:opj_int64_clamp
Unexecuted instantiation: thread.c:opj_int64_clamp
Unexecuted instantiation: bio.c:opj_int64_clamp
Unexecuted instantiation: dwt.c:opj_int64_clamp
Unexecuted instantiation: invert.c:opj_int64_clamp
Unexecuted instantiation: t1.c:opj_int64_clamp
Unexecuted instantiation: t2.c:opj_int64_clamp
Unexecuted instantiation: sparse_array.c:opj_int64_clamp
Unexecuted instantiation: ht_dec.c:opj_int64_clamp
Unexecuted instantiation: mqc.c:opj_int64_clamp
148
149
/**
150
@return Get absolute value of integer
151
*/
152
static INLINE OPJ_INT32 opj_int_abs(OPJ_INT32 a)
153
0
{
154
0
    return a < 0 ? -a : a;
155
0
}
Unexecuted instantiation: cio.c:opj_int_abs
Unexecuted instantiation: event.c:opj_int_abs
Unexecuted instantiation: image.c:opj_int_abs
Unexecuted instantiation: openjpeg.c:opj_int_abs
Unexecuted instantiation: opj_malloc.c:opj_int_abs
Unexecuted instantiation: j2k.c:opj_int_abs
Unexecuted instantiation: jp2.c:opj_int_abs
Unexecuted instantiation: mct.c:opj_int_abs
Unexecuted instantiation: pi.c:opj_int_abs
Unexecuted instantiation: tcd.c:opj_int_abs
Unexecuted instantiation: tgt.c:opj_int_abs
Unexecuted instantiation: function_list.c:opj_int_abs
Unexecuted instantiation: thread.c:opj_int_abs
Unexecuted instantiation: bio.c:opj_int_abs
Unexecuted instantiation: dwt.c:opj_int_abs
Unexecuted instantiation: invert.c:opj_int_abs
Unexecuted instantiation: t1.c:opj_int_abs
Unexecuted instantiation: t2.c:opj_int_abs
Unexecuted instantiation: sparse_array.c:opj_int_abs
Unexecuted instantiation: ht_dec.c:opj_int_abs
Unexecuted instantiation: mqc.c:opj_int_abs
156
/**
157
Divide an integer and round upwards
158
@return Returns a divided by b
159
*/
160
static INLINE OPJ_INT32 opj_int_ceildiv(OPJ_INT32 a, OPJ_INT32 b)
161
0
{
162
0
    assert(b);
163
0
    return (OPJ_INT32)(((OPJ_INT64)a + b - 1) / b);
164
0
}
Unexecuted instantiation: cio.c:opj_int_ceildiv
Unexecuted instantiation: event.c:opj_int_ceildiv
Unexecuted instantiation: image.c:opj_int_ceildiv
Unexecuted instantiation: openjpeg.c:opj_int_ceildiv
Unexecuted instantiation: opj_malloc.c:opj_int_ceildiv
Unexecuted instantiation: j2k.c:opj_int_ceildiv
Unexecuted instantiation: jp2.c:opj_int_ceildiv
Unexecuted instantiation: mct.c:opj_int_ceildiv
Unexecuted instantiation: pi.c:opj_int_ceildiv
Unexecuted instantiation: tcd.c:opj_int_ceildiv
Unexecuted instantiation: tgt.c:opj_int_ceildiv
Unexecuted instantiation: function_list.c:opj_int_ceildiv
Unexecuted instantiation: thread.c:opj_int_ceildiv
Unexecuted instantiation: bio.c:opj_int_ceildiv
Unexecuted instantiation: dwt.c:opj_int_ceildiv
Unexecuted instantiation: invert.c:opj_int_ceildiv
Unexecuted instantiation: t1.c:opj_int_ceildiv
Unexecuted instantiation: t2.c:opj_int_ceildiv
Unexecuted instantiation: sparse_array.c:opj_int_ceildiv
Unexecuted instantiation: ht_dec.c:opj_int_ceildiv
Unexecuted instantiation: mqc.c:opj_int_ceildiv
165
166
/**
167
Divide an integer and round upwards
168
@return Returns a divided by b
169
*/
170
static INLINE OPJ_UINT32  opj_uint_ceildiv(OPJ_UINT32  a, OPJ_UINT32  b)
171
0
{
172
0
    assert(b);
173
0
    return (OPJ_UINT32)(((OPJ_UINT64)a + b - 1) / b);
174
0
}
Unexecuted instantiation: cio.c:opj_uint_ceildiv
Unexecuted instantiation: event.c:opj_uint_ceildiv
Unexecuted instantiation: image.c:opj_uint_ceildiv
Unexecuted instantiation: openjpeg.c:opj_uint_ceildiv
Unexecuted instantiation: opj_malloc.c:opj_uint_ceildiv
Unexecuted instantiation: j2k.c:opj_uint_ceildiv
Unexecuted instantiation: jp2.c:opj_uint_ceildiv
Unexecuted instantiation: mct.c:opj_uint_ceildiv
Unexecuted instantiation: pi.c:opj_uint_ceildiv
Unexecuted instantiation: tcd.c:opj_uint_ceildiv
Unexecuted instantiation: tgt.c:opj_uint_ceildiv
Unexecuted instantiation: function_list.c:opj_uint_ceildiv
Unexecuted instantiation: thread.c:opj_uint_ceildiv
Unexecuted instantiation: bio.c:opj_uint_ceildiv
Unexecuted instantiation: dwt.c:opj_uint_ceildiv
Unexecuted instantiation: invert.c:opj_uint_ceildiv
Unexecuted instantiation: t1.c:opj_uint_ceildiv
Unexecuted instantiation: t2.c:opj_uint_ceildiv
Unexecuted instantiation: sparse_array.c:opj_uint_ceildiv
Unexecuted instantiation: ht_dec.c:opj_uint_ceildiv
Unexecuted instantiation: mqc.c:opj_uint_ceildiv
175
176
/**
177
Divide an integer and round upwards
178
@return Returns a divided by b
179
*/
180
static INLINE OPJ_UINT32  opj_uint64_ceildiv_res_uint32(OPJ_UINT64 a,
181
        OPJ_UINT64 b)
182
0
{
183
0
    assert(b);
184
0
    return (OPJ_UINT32)((a + b - 1) / b);
185
0
}
Unexecuted instantiation: cio.c:opj_uint64_ceildiv_res_uint32
Unexecuted instantiation: event.c:opj_uint64_ceildiv_res_uint32
Unexecuted instantiation: image.c:opj_uint64_ceildiv_res_uint32
Unexecuted instantiation: openjpeg.c:opj_uint64_ceildiv_res_uint32
Unexecuted instantiation: opj_malloc.c:opj_uint64_ceildiv_res_uint32
Unexecuted instantiation: j2k.c:opj_uint64_ceildiv_res_uint32
Unexecuted instantiation: jp2.c:opj_uint64_ceildiv_res_uint32
Unexecuted instantiation: mct.c:opj_uint64_ceildiv_res_uint32
Unexecuted instantiation: pi.c:opj_uint64_ceildiv_res_uint32
Unexecuted instantiation: tcd.c:opj_uint64_ceildiv_res_uint32
Unexecuted instantiation: tgt.c:opj_uint64_ceildiv_res_uint32
Unexecuted instantiation: function_list.c:opj_uint64_ceildiv_res_uint32
Unexecuted instantiation: thread.c:opj_uint64_ceildiv_res_uint32
Unexecuted instantiation: bio.c:opj_uint64_ceildiv_res_uint32
Unexecuted instantiation: dwt.c:opj_uint64_ceildiv_res_uint32
Unexecuted instantiation: invert.c:opj_uint64_ceildiv_res_uint32
Unexecuted instantiation: t1.c:opj_uint64_ceildiv_res_uint32
Unexecuted instantiation: t2.c:opj_uint64_ceildiv_res_uint32
Unexecuted instantiation: sparse_array.c:opj_uint64_ceildiv_res_uint32
Unexecuted instantiation: ht_dec.c:opj_uint64_ceildiv_res_uint32
Unexecuted instantiation: mqc.c:opj_uint64_ceildiv_res_uint32
186
187
/**
188
Divide an integer by a power of 2 and round upwards
189
@return Returns a divided by 2^b
190
*/
191
static INLINE OPJ_INT32 opj_int_ceildivpow2(OPJ_INT32 a, OPJ_INT32 b)
192
0
{
193
0
    return (OPJ_INT32)((a + ((OPJ_INT64)1 << b) - 1) >> b);
194
0
}
Unexecuted instantiation: cio.c:opj_int_ceildivpow2
Unexecuted instantiation: event.c:opj_int_ceildivpow2
Unexecuted instantiation: image.c:opj_int_ceildivpow2
Unexecuted instantiation: openjpeg.c:opj_int_ceildivpow2
Unexecuted instantiation: opj_malloc.c:opj_int_ceildivpow2
Unexecuted instantiation: j2k.c:opj_int_ceildivpow2
Unexecuted instantiation: jp2.c:opj_int_ceildivpow2
Unexecuted instantiation: mct.c:opj_int_ceildivpow2
Unexecuted instantiation: pi.c:opj_int_ceildivpow2
Unexecuted instantiation: tcd.c:opj_int_ceildivpow2
Unexecuted instantiation: tgt.c:opj_int_ceildivpow2
Unexecuted instantiation: function_list.c:opj_int_ceildivpow2
Unexecuted instantiation: thread.c:opj_int_ceildivpow2
Unexecuted instantiation: bio.c:opj_int_ceildivpow2
Unexecuted instantiation: dwt.c:opj_int_ceildivpow2
Unexecuted instantiation: invert.c:opj_int_ceildivpow2
Unexecuted instantiation: t1.c:opj_int_ceildivpow2
Unexecuted instantiation: t2.c:opj_int_ceildivpow2
Unexecuted instantiation: sparse_array.c:opj_int_ceildivpow2
Unexecuted instantiation: ht_dec.c:opj_int_ceildivpow2
Unexecuted instantiation: mqc.c:opj_int_ceildivpow2
195
196
/**
197
 Divide a 64bits integer by a power of 2 and round upwards
198
 @return Returns a divided by 2^b
199
 */
200
static INLINE OPJ_INT32 opj_int64_ceildivpow2(OPJ_INT64 a, OPJ_INT32 b)
201
0
{
202
0
    return (OPJ_INT32)((a + ((OPJ_INT64)1 << b) - 1) >> b);
203
0
}
Unexecuted instantiation: cio.c:opj_int64_ceildivpow2
Unexecuted instantiation: event.c:opj_int64_ceildivpow2
Unexecuted instantiation: image.c:opj_int64_ceildivpow2
Unexecuted instantiation: openjpeg.c:opj_int64_ceildivpow2
Unexecuted instantiation: opj_malloc.c:opj_int64_ceildivpow2
Unexecuted instantiation: j2k.c:opj_int64_ceildivpow2
Unexecuted instantiation: jp2.c:opj_int64_ceildivpow2
Unexecuted instantiation: mct.c:opj_int64_ceildivpow2
Unexecuted instantiation: pi.c:opj_int64_ceildivpow2
Unexecuted instantiation: tcd.c:opj_int64_ceildivpow2
Unexecuted instantiation: tgt.c:opj_int64_ceildivpow2
Unexecuted instantiation: function_list.c:opj_int64_ceildivpow2
Unexecuted instantiation: thread.c:opj_int64_ceildivpow2
Unexecuted instantiation: bio.c:opj_int64_ceildivpow2
Unexecuted instantiation: dwt.c:opj_int64_ceildivpow2
Unexecuted instantiation: invert.c:opj_int64_ceildivpow2
Unexecuted instantiation: t1.c:opj_int64_ceildivpow2
Unexecuted instantiation: t2.c:opj_int64_ceildivpow2
Unexecuted instantiation: sparse_array.c:opj_int64_ceildivpow2
Unexecuted instantiation: ht_dec.c:opj_int64_ceildivpow2
Unexecuted instantiation: mqc.c:opj_int64_ceildivpow2
204
205
/**
206
 Divide an integer by a power of 2 and round upwards
207
 @return Returns a divided by 2^b
208
 */
209
static INLINE OPJ_UINT32 opj_uint_ceildivpow2(OPJ_UINT32 a, OPJ_UINT32 b)
210
0
{
211
0
    return (OPJ_UINT32)((a + ((OPJ_UINT64)1U << b) - 1U) >> b);
212
0
}
Unexecuted instantiation: cio.c:opj_uint_ceildivpow2
Unexecuted instantiation: event.c:opj_uint_ceildivpow2
Unexecuted instantiation: image.c:opj_uint_ceildivpow2
Unexecuted instantiation: openjpeg.c:opj_uint_ceildivpow2
Unexecuted instantiation: opj_malloc.c:opj_uint_ceildivpow2
Unexecuted instantiation: j2k.c:opj_uint_ceildivpow2
Unexecuted instantiation: jp2.c:opj_uint_ceildivpow2
Unexecuted instantiation: mct.c:opj_uint_ceildivpow2
Unexecuted instantiation: pi.c:opj_uint_ceildivpow2
Unexecuted instantiation: tcd.c:opj_uint_ceildivpow2
Unexecuted instantiation: tgt.c:opj_uint_ceildivpow2
Unexecuted instantiation: function_list.c:opj_uint_ceildivpow2
Unexecuted instantiation: thread.c:opj_uint_ceildivpow2
Unexecuted instantiation: bio.c:opj_uint_ceildivpow2
Unexecuted instantiation: dwt.c:opj_uint_ceildivpow2
Unexecuted instantiation: invert.c:opj_uint_ceildivpow2
Unexecuted instantiation: t1.c:opj_uint_ceildivpow2
Unexecuted instantiation: t2.c:opj_uint_ceildivpow2
Unexecuted instantiation: sparse_array.c:opj_uint_ceildivpow2
Unexecuted instantiation: ht_dec.c:opj_uint_ceildivpow2
Unexecuted instantiation: mqc.c:opj_uint_ceildivpow2
213
214
/**
215
Divide an integer by a power of 2 and round downwards
216
@return Returns a divided by 2^b
217
*/
218
static INLINE OPJ_INT32 opj_int_floordivpow2(OPJ_INT32 a, OPJ_INT32 b)
219
0
{
220
0
    return a >> b;
221
0
}
Unexecuted instantiation: cio.c:opj_int_floordivpow2
Unexecuted instantiation: event.c:opj_int_floordivpow2
Unexecuted instantiation: image.c:opj_int_floordivpow2
Unexecuted instantiation: openjpeg.c:opj_int_floordivpow2
Unexecuted instantiation: opj_malloc.c:opj_int_floordivpow2
Unexecuted instantiation: j2k.c:opj_int_floordivpow2
Unexecuted instantiation: jp2.c:opj_int_floordivpow2
Unexecuted instantiation: mct.c:opj_int_floordivpow2
Unexecuted instantiation: pi.c:opj_int_floordivpow2
Unexecuted instantiation: tcd.c:opj_int_floordivpow2
Unexecuted instantiation: tgt.c:opj_int_floordivpow2
Unexecuted instantiation: function_list.c:opj_int_floordivpow2
Unexecuted instantiation: thread.c:opj_int_floordivpow2
Unexecuted instantiation: bio.c:opj_int_floordivpow2
Unexecuted instantiation: dwt.c:opj_int_floordivpow2
Unexecuted instantiation: invert.c:opj_int_floordivpow2
Unexecuted instantiation: t1.c:opj_int_floordivpow2
Unexecuted instantiation: t2.c:opj_int_floordivpow2
Unexecuted instantiation: sparse_array.c:opj_int_floordivpow2
Unexecuted instantiation: ht_dec.c:opj_int_floordivpow2
Unexecuted instantiation: mqc.c:opj_int_floordivpow2
222
223
/**
224
Divide an integer by a power of 2 and round downwards
225
@return Returns a divided by 2^b
226
*/
227
static INLINE OPJ_UINT32 opj_uint_floordivpow2(OPJ_UINT32 a, OPJ_UINT32 b)
228
0
{
229
0
    return a >> b;
230
0
}
Unexecuted instantiation: cio.c:opj_uint_floordivpow2
Unexecuted instantiation: event.c:opj_uint_floordivpow2
Unexecuted instantiation: image.c:opj_uint_floordivpow2
Unexecuted instantiation: openjpeg.c:opj_uint_floordivpow2
Unexecuted instantiation: opj_malloc.c:opj_uint_floordivpow2
Unexecuted instantiation: j2k.c:opj_uint_floordivpow2
Unexecuted instantiation: jp2.c:opj_uint_floordivpow2
Unexecuted instantiation: mct.c:opj_uint_floordivpow2
Unexecuted instantiation: pi.c:opj_uint_floordivpow2
Unexecuted instantiation: tcd.c:opj_uint_floordivpow2
Unexecuted instantiation: tgt.c:opj_uint_floordivpow2
Unexecuted instantiation: function_list.c:opj_uint_floordivpow2
Unexecuted instantiation: thread.c:opj_uint_floordivpow2
Unexecuted instantiation: bio.c:opj_uint_floordivpow2
Unexecuted instantiation: dwt.c:opj_uint_floordivpow2
Unexecuted instantiation: invert.c:opj_uint_floordivpow2
Unexecuted instantiation: t1.c:opj_uint_floordivpow2
Unexecuted instantiation: t2.c:opj_uint_floordivpow2
Unexecuted instantiation: sparse_array.c:opj_uint_floordivpow2
Unexecuted instantiation: ht_dec.c:opj_uint_floordivpow2
Unexecuted instantiation: mqc.c:opj_uint_floordivpow2
231
232
/**
233
Get logarithm of an integer and round downwards
234
@return Returns log2(a)
235
*/
236
static INLINE OPJ_INT32 opj_int_floorlog2(OPJ_INT32 a)
237
0
{
238
0
    OPJ_INT32 l;
239
0
    for (l = 0; a > 1; l++) {
240
0
        a >>= 1;
241
0
    }
242
0
    return l;
243
0
}
Unexecuted instantiation: cio.c:opj_int_floorlog2
Unexecuted instantiation: event.c:opj_int_floorlog2
Unexecuted instantiation: image.c:opj_int_floorlog2
Unexecuted instantiation: openjpeg.c:opj_int_floorlog2
Unexecuted instantiation: opj_malloc.c:opj_int_floorlog2
Unexecuted instantiation: j2k.c:opj_int_floorlog2
Unexecuted instantiation: jp2.c:opj_int_floorlog2
Unexecuted instantiation: mct.c:opj_int_floorlog2
Unexecuted instantiation: pi.c:opj_int_floorlog2
Unexecuted instantiation: tcd.c:opj_int_floorlog2
Unexecuted instantiation: tgt.c:opj_int_floorlog2
Unexecuted instantiation: function_list.c:opj_int_floorlog2
Unexecuted instantiation: thread.c:opj_int_floorlog2
Unexecuted instantiation: bio.c:opj_int_floorlog2
Unexecuted instantiation: dwt.c:opj_int_floorlog2
Unexecuted instantiation: invert.c:opj_int_floorlog2
Unexecuted instantiation: t1.c:opj_int_floorlog2
Unexecuted instantiation: t2.c:opj_int_floorlog2
Unexecuted instantiation: sparse_array.c:opj_int_floorlog2
Unexecuted instantiation: ht_dec.c:opj_int_floorlog2
Unexecuted instantiation: mqc.c:opj_int_floorlog2
244
/**
245
Get logarithm of an integer and round downwards
246
@return Returns log2(a)
247
*/
248
static INLINE OPJ_UINT32  opj_uint_floorlog2(OPJ_UINT32  a)
249
0
{
250
0
    OPJ_UINT32  l;
251
0
    for (l = 0; a > 1; ++l) {
252
0
        a >>= 1;
253
0
    }
254
0
    return l;
255
0
}
Unexecuted instantiation: cio.c:opj_uint_floorlog2
Unexecuted instantiation: event.c:opj_uint_floorlog2
Unexecuted instantiation: image.c:opj_uint_floorlog2
Unexecuted instantiation: openjpeg.c:opj_uint_floorlog2
Unexecuted instantiation: opj_malloc.c:opj_uint_floorlog2
Unexecuted instantiation: j2k.c:opj_uint_floorlog2
Unexecuted instantiation: jp2.c:opj_uint_floorlog2
Unexecuted instantiation: mct.c:opj_uint_floorlog2
Unexecuted instantiation: pi.c:opj_uint_floorlog2
Unexecuted instantiation: tcd.c:opj_uint_floorlog2
Unexecuted instantiation: tgt.c:opj_uint_floorlog2
Unexecuted instantiation: function_list.c:opj_uint_floorlog2
Unexecuted instantiation: thread.c:opj_uint_floorlog2
Unexecuted instantiation: bio.c:opj_uint_floorlog2
Unexecuted instantiation: dwt.c:opj_uint_floorlog2
Unexecuted instantiation: invert.c:opj_uint_floorlog2
Unexecuted instantiation: t1.c:opj_uint_floorlog2
Unexecuted instantiation: t2.c:opj_uint_floorlog2
Unexecuted instantiation: sparse_array.c:opj_uint_floorlog2
Unexecuted instantiation: ht_dec.c:opj_uint_floorlog2
Unexecuted instantiation: mqc.c:opj_uint_floorlog2
256
257
/**
258
Multiply two fixed-precision rational numbers.
259
@param a
260
@param b
261
@return Returns a * b
262
*/
263
static INLINE OPJ_INT32 opj_int_fix_mul(OPJ_INT32 a, OPJ_INT32 b)
264
0
{
265
#if defined(_MSC_VER) && (_MSC_VER >= 1400) && !defined(__INTEL_COMPILER) && defined(_M_IX86)
266
    OPJ_INT64 temp = __emul(a, b);
267
#else
268
0
    OPJ_INT64 temp = (OPJ_INT64) a * (OPJ_INT64) b ;
269
0
#endif
270
0
    temp += 4096;
271
0
    assert((temp >> 13) <= (OPJ_INT64)0x7FFFFFFF);
272
0
    assert((temp >> 13) >= (-(OPJ_INT64)0x7FFFFFFF - (OPJ_INT64)1));
273
0
    return (OPJ_INT32)(temp >> 13);
274
0
}
Unexecuted instantiation: cio.c:opj_int_fix_mul
Unexecuted instantiation: event.c:opj_int_fix_mul
Unexecuted instantiation: image.c:opj_int_fix_mul
Unexecuted instantiation: openjpeg.c:opj_int_fix_mul
Unexecuted instantiation: opj_malloc.c:opj_int_fix_mul
Unexecuted instantiation: j2k.c:opj_int_fix_mul
Unexecuted instantiation: jp2.c:opj_int_fix_mul
Unexecuted instantiation: mct.c:opj_int_fix_mul
Unexecuted instantiation: pi.c:opj_int_fix_mul
Unexecuted instantiation: tcd.c:opj_int_fix_mul
Unexecuted instantiation: tgt.c:opj_int_fix_mul
Unexecuted instantiation: function_list.c:opj_int_fix_mul
Unexecuted instantiation: thread.c:opj_int_fix_mul
Unexecuted instantiation: bio.c:opj_int_fix_mul
Unexecuted instantiation: dwt.c:opj_int_fix_mul
Unexecuted instantiation: invert.c:opj_int_fix_mul
Unexecuted instantiation: t1.c:opj_int_fix_mul
Unexecuted instantiation: t2.c:opj_int_fix_mul
Unexecuted instantiation: sparse_array.c:opj_int_fix_mul
Unexecuted instantiation: ht_dec.c:opj_int_fix_mul
Unexecuted instantiation: mqc.c:opj_int_fix_mul
275
276
static INLINE OPJ_INT32 opj_int_fix_mul_t1(OPJ_INT32 a, OPJ_INT32 b)
277
0
{
278
0
#if defined(_MSC_VER) && (_MSC_VER >= 1400) && !defined(__INTEL_COMPILER) && defined(_M_IX86)
279
0
    OPJ_INT64 temp = __emul(a, b);
280
0
#else
281
0
    OPJ_INT64 temp = (OPJ_INT64) a * (OPJ_INT64) b ;
282
0
#endif
283
0
    temp += 4096;
284
0
    assert((temp >> (13 + 11 - T1_NMSEDEC_FRACBITS)) <= (OPJ_INT64)0x7FFFFFFF);
285
0
    assert((temp >> (13 + 11 - T1_NMSEDEC_FRACBITS)) >= (-(OPJ_INT64)0x7FFFFFFF -
286
0
            (OPJ_INT64)1));
287
0
    return (OPJ_INT32)(temp >> (13 + 11 - T1_NMSEDEC_FRACBITS)) ;
288
0
}
Unexecuted instantiation: cio.c:opj_int_fix_mul_t1
Unexecuted instantiation: event.c:opj_int_fix_mul_t1
Unexecuted instantiation: image.c:opj_int_fix_mul_t1
Unexecuted instantiation: openjpeg.c:opj_int_fix_mul_t1
Unexecuted instantiation: opj_malloc.c:opj_int_fix_mul_t1
Unexecuted instantiation: j2k.c:opj_int_fix_mul_t1
Unexecuted instantiation: jp2.c:opj_int_fix_mul_t1
Unexecuted instantiation: mct.c:opj_int_fix_mul_t1
Unexecuted instantiation: pi.c:opj_int_fix_mul_t1
Unexecuted instantiation: tcd.c:opj_int_fix_mul_t1
Unexecuted instantiation: tgt.c:opj_int_fix_mul_t1
Unexecuted instantiation: function_list.c:opj_int_fix_mul_t1
Unexecuted instantiation: thread.c:opj_int_fix_mul_t1
Unexecuted instantiation: bio.c:opj_int_fix_mul_t1
Unexecuted instantiation: dwt.c:opj_int_fix_mul_t1
Unexecuted instantiation: invert.c:opj_int_fix_mul_t1
Unexecuted instantiation: t1.c:opj_int_fix_mul_t1
Unexecuted instantiation: t2.c:opj_int_fix_mul_t1
Unexecuted instantiation: sparse_array.c:opj_int_fix_mul_t1
Unexecuted instantiation: ht_dec.c:opj_int_fix_mul_t1
Unexecuted instantiation: mqc.c:opj_int_fix_mul_t1
289
290
/**
291
Addition two signed integers with a wrap-around behaviour.
292
Assumes complement-to-two signed integers.
293
@param a
294
@param b
295
@return Returns a + b
296
*/
297
static INLINE OPJ_INT32 opj_int_add_no_overflow(OPJ_INT32 a, OPJ_INT32 b)
298
0
{
299
0
    void* pa = &a;
300
0
    void* pb = &b;
301
0
    OPJ_UINT32* upa = (OPJ_UINT32*)pa;
302
0
    OPJ_UINT32* upb = (OPJ_UINT32*)pb;
303
0
    OPJ_UINT32 ures = *upa + *upb;
304
0
    void* pures = &ures;
305
0
    OPJ_INT32* ipres = (OPJ_INT32*)pures;
306
0
    return *ipres;
307
0
}
Unexecuted instantiation: cio.c:opj_int_add_no_overflow
Unexecuted instantiation: event.c:opj_int_add_no_overflow
Unexecuted instantiation: image.c:opj_int_add_no_overflow
Unexecuted instantiation: openjpeg.c:opj_int_add_no_overflow
Unexecuted instantiation: opj_malloc.c:opj_int_add_no_overflow
Unexecuted instantiation: j2k.c:opj_int_add_no_overflow
Unexecuted instantiation: jp2.c:opj_int_add_no_overflow
Unexecuted instantiation: mct.c:opj_int_add_no_overflow
Unexecuted instantiation: pi.c:opj_int_add_no_overflow
Unexecuted instantiation: tcd.c:opj_int_add_no_overflow
Unexecuted instantiation: tgt.c:opj_int_add_no_overflow
Unexecuted instantiation: function_list.c:opj_int_add_no_overflow
Unexecuted instantiation: thread.c:opj_int_add_no_overflow
Unexecuted instantiation: bio.c:opj_int_add_no_overflow
Unexecuted instantiation: dwt.c:opj_int_add_no_overflow
Unexecuted instantiation: invert.c:opj_int_add_no_overflow
Unexecuted instantiation: t1.c:opj_int_add_no_overflow
Unexecuted instantiation: t2.c:opj_int_add_no_overflow
Unexecuted instantiation: sparse_array.c:opj_int_add_no_overflow
Unexecuted instantiation: ht_dec.c:opj_int_add_no_overflow
Unexecuted instantiation: mqc.c:opj_int_add_no_overflow
308
309
/**
310
Subtract two signed integers with a wrap-around behaviour.
311
Assumes complement-to-two signed integers.
312
@param a
313
@param b
314
@return Returns a - b
315
*/
316
static INLINE OPJ_INT32 opj_int_sub_no_overflow(OPJ_INT32 a, OPJ_INT32 b)
317
0
{
318
0
    void* pa = &a;
319
0
    void* pb = &b;
320
0
    OPJ_UINT32* upa = (OPJ_UINT32*)pa;
321
0
    OPJ_UINT32* upb = (OPJ_UINT32*)pb;
322
0
    OPJ_UINT32 ures = *upa - *upb;
323
0
    void* pures = &ures;
324
0
    OPJ_INT32* ipres = (OPJ_INT32*)pures;
325
0
    return *ipres;
326
0
}
Unexecuted instantiation: cio.c:opj_int_sub_no_overflow
Unexecuted instantiation: event.c:opj_int_sub_no_overflow
Unexecuted instantiation: image.c:opj_int_sub_no_overflow
Unexecuted instantiation: openjpeg.c:opj_int_sub_no_overflow
Unexecuted instantiation: opj_malloc.c:opj_int_sub_no_overflow
Unexecuted instantiation: j2k.c:opj_int_sub_no_overflow
Unexecuted instantiation: jp2.c:opj_int_sub_no_overflow
Unexecuted instantiation: mct.c:opj_int_sub_no_overflow
Unexecuted instantiation: pi.c:opj_int_sub_no_overflow
Unexecuted instantiation: tcd.c:opj_int_sub_no_overflow
Unexecuted instantiation: tgt.c:opj_int_sub_no_overflow
Unexecuted instantiation: function_list.c:opj_int_sub_no_overflow
Unexecuted instantiation: thread.c:opj_int_sub_no_overflow
Unexecuted instantiation: bio.c:opj_int_sub_no_overflow
Unexecuted instantiation: dwt.c:opj_int_sub_no_overflow
Unexecuted instantiation: invert.c:opj_int_sub_no_overflow
Unexecuted instantiation: t1.c:opj_int_sub_no_overflow
Unexecuted instantiation: t2.c:opj_int_sub_no_overflow
Unexecuted instantiation: sparse_array.c:opj_int_sub_no_overflow
Unexecuted instantiation: ht_dec.c:opj_int_sub_no_overflow
Unexecuted instantiation: mqc.c:opj_int_sub_no_overflow
327
328
/* ----------------------------------------------------------------------- */
329
/*@}*/
330
331
/*@}*/
332
333
#endif /* OPJ_INTMATH_H */