Last change
on this file since 145 was 145, checked in by Izuru Yakumo, 22 months ago |
Updated the Makefile and vendored depedencies
Signed-off-by: Izuru Yakumo <yakumo.izuru@…>
|
File size:
6.0 KB
|
Line | |
---|
1 | package brotli
|
---|
2 |
|
---|
3 | import (
|
---|
4 | "math"
|
---|
5 | "math/bits"
|
---|
6 | )
|
---|
7 |
|
---|
8 | /* Copyright 2013 Google Inc. All Rights Reserved.
|
---|
9 |
|
---|
10 | Distributed under MIT license.
|
---|
11 | See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
|
---|
12 | */
|
---|
13 |
|
---|
14 | /* Utilities for fast computation of logarithms. */
|
---|
15 |
|
---|
16 | func log2FloorNonZero(n uint) uint32 {
|
---|
17 | return uint32(bits.Len(n)) - 1
|
---|
18 | }
|
---|
19 |
|
---|
20 | /* A lookup table for small values of log2(int) to be used in entropy
|
---|
21 | computation.
|
---|
22 |
|
---|
23 | ", ".join(["%.16ff" % x for x in [0.0]+[log2(x) for x in range(1, 256)]]) */
|
---|
24 | var kLog2Table = []float32{
|
---|
25 | 0.0000000000000000,
|
---|
26 | 0.0000000000000000,
|
---|
27 | 1.0000000000000000,
|
---|
28 | 1.5849625007211563,
|
---|
29 | 2.0000000000000000,
|
---|
30 | 2.3219280948873622,
|
---|
31 | 2.5849625007211561,
|
---|
32 | 2.8073549220576042,
|
---|
33 | 3.0000000000000000,
|
---|
34 | 3.1699250014423126,
|
---|
35 | 3.3219280948873626,
|
---|
36 | 3.4594316186372978,
|
---|
37 | 3.5849625007211565,
|
---|
38 | 3.7004397181410922,
|
---|
39 | 3.8073549220576037,
|
---|
40 | 3.9068905956085187,
|
---|
41 | 4.0000000000000000,
|
---|
42 | 4.0874628412503400,
|
---|
43 | 4.1699250014423122,
|
---|
44 | 4.2479275134435852,
|
---|
45 | 4.3219280948873626,
|
---|
46 | 4.3923174227787607,
|
---|
47 | 4.4594316186372973,
|
---|
48 | 4.5235619560570131,
|
---|
49 | 4.5849625007211570,
|
---|
50 | 4.6438561897747244,
|
---|
51 | 4.7004397181410926,
|
---|
52 | 4.7548875021634691,
|
---|
53 | 4.8073549220576037,
|
---|
54 | 4.8579809951275728,
|
---|
55 | 4.9068905956085187,
|
---|
56 | 4.9541963103868758,
|
---|
57 | 5.0000000000000000,
|
---|
58 | 5.0443941193584534,
|
---|
59 | 5.0874628412503400,
|
---|
60 | 5.1292830169449664,
|
---|
61 | 5.1699250014423122,
|
---|
62 | 5.2094533656289501,
|
---|
63 | 5.2479275134435852,
|
---|
64 | 5.2854022188622487,
|
---|
65 | 5.3219280948873626,
|
---|
66 | 5.3575520046180838,
|
---|
67 | 5.3923174227787607,
|
---|
68 | 5.4262647547020979,
|
---|
69 | 5.4594316186372973,
|
---|
70 | 5.4918530963296748,
|
---|
71 | 5.5235619560570131,
|
---|
72 | 5.5545888516776376,
|
---|
73 | 5.5849625007211570,
|
---|
74 | 5.6147098441152083,
|
---|
75 | 5.6438561897747244,
|
---|
76 | 5.6724253419714961,
|
---|
77 | 5.7004397181410926,
|
---|
78 | 5.7279204545631996,
|
---|
79 | 5.7548875021634691,
|
---|
80 | 5.7813597135246599,
|
---|
81 | 5.8073549220576046,
|
---|
82 | 5.8328900141647422,
|
---|
83 | 5.8579809951275719,
|
---|
84 | 5.8826430493618416,
|
---|
85 | 5.9068905956085187,
|
---|
86 | 5.9307373375628867,
|
---|
87 | 5.9541963103868758,
|
---|
88 | 5.9772799234999168,
|
---|
89 | 6.0000000000000000,
|
---|
90 | 6.0223678130284544,
|
---|
91 | 6.0443941193584534,
|
---|
92 | 6.0660891904577721,
|
---|
93 | 6.0874628412503400,
|
---|
94 | 6.1085244567781700,
|
---|
95 | 6.1292830169449672,
|
---|
96 | 6.1497471195046822,
|
---|
97 | 6.1699250014423122,
|
---|
98 | 6.1898245588800176,
|
---|
99 | 6.2094533656289510,
|
---|
100 | 6.2288186904958804,
|
---|
101 | 6.2479275134435861,
|
---|
102 | 6.2667865406949019,
|
---|
103 | 6.2854022188622487,
|
---|
104 | 6.3037807481771031,
|
---|
105 | 6.3219280948873617,
|
---|
106 | 6.3398500028846252,
|
---|
107 | 6.3575520046180847,
|
---|
108 | 6.3750394313469254,
|
---|
109 | 6.3923174227787598,
|
---|
110 | 6.4093909361377026,
|
---|
111 | 6.4262647547020979,
|
---|
112 | 6.4429434958487288,
|
---|
113 | 6.4594316186372982,
|
---|
114 | 6.4757334309663976,
|
---|
115 | 6.4918530963296748,
|
---|
116 | 6.5077946401986964,
|
---|
117 | 6.5235619560570131,
|
---|
118 | 6.5391588111080319,
|
---|
119 | 6.5545888516776376,
|
---|
120 | 6.5698556083309478,
|
---|
121 | 6.5849625007211561,
|
---|
122 | 6.5999128421871278,
|
---|
123 | 6.6147098441152092,
|
---|
124 | 6.6293566200796095,
|
---|
125 | 6.6438561897747253,
|
---|
126 | 6.6582114827517955,
|
---|
127 | 6.6724253419714952,
|
---|
128 | 6.6865005271832185,
|
---|
129 | 6.7004397181410917,
|
---|
130 | 6.7142455176661224,
|
---|
131 | 6.7279204545631988,
|
---|
132 | 6.7414669864011465,
|
---|
133 | 6.7548875021634691,
|
---|
134 | 6.7681843247769260,
|
---|
135 | 6.7813597135246599,
|
---|
136 | 6.7944158663501062,
|
---|
137 | 6.8073549220576037,
|
---|
138 | 6.8201789624151887,
|
---|
139 | 6.8328900141647422,
|
---|
140 | 6.8454900509443757,
|
---|
141 | 6.8579809951275719,
|
---|
142 | 6.8703647195834048,
|
---|
143 | 6.8826430493618416,
|
---|
144 | 6.8948177633079437,
|
---|
145 | 6.9068905956085187,
|
---|
146 | 6.9188632372745955,
|
---|
147 | 6.9307373375628867,
|
---|
148 | 6.9425145053392399,
|
---|
149 | 6.9541963103868758,
|
---|
150 | 6.9657842846620879,
|
---|
151 | 6.9772799234999168,
|
---|
152 | 6.9886846867721664,
|
---|
153 | 7.0000000000000000,
|
---|
154 | 7.0112272554232540,
|
---|
155 | 7.0223678130284544,
|
---|
156 | 7.0334230015374501,
|
---|
157 | 7.0443941193584534,
|
---|
158 | 7.0552824355011898,
|
---|
159 | 7.0660891904577721,
|
---|
160 | 7.0768155970508317,
|
---|
161 | 7.0874628412503400,
|
---|
162 | 7.0980320829605272,
|
---|
163 | 7.1085244567781700,
|
---|
164 | 7.1189410727235076,
|
---|
165 | 7.1292830169449664,
|
---|
166 | 7.1395513523987937,
|
---|
167 | 7.1497471195046822,
|
---|
168 | 7.1598713367783891,
|
---|
169 | 7.1699250014423130,
|
---|
170 | 7.1799090900149345,
|
---|
171 | 7.1898245588800176,
|
---|
172 | 7.1996723448363644,
|
---|
173 | 7.2094533656289492,
|
---|
174 | 7.2191685204621621,
|
---|
175 | 7.2288186904958804,
|
---|
176 | 7.2384047393250794,
|
---|
177 | 7.2479275134435861,
|
---|
178 | 7.2573878426926521,
|
---|
179 | 7.2667865406949019,
|
---|
180 | 7.2761244052742384,
|
---|
181 | 7.2854022188622487,
|
---|
182 | 7.2946207488916270,
|
---|
183 | 7.3037807481771031,
|
---|
184 | 7.3128829552843557,
|
---|
185 | 7.3219280948873617,
|
---|
186 | 7.3309168781146177,
|
---|
187 | 7.3398500028846243,
|
---|
188 | 7.3487281542310781,
|
---|
189 | 7.3575520046180847,
|
---|
190 | 7.3663222142458151,
|
---|
191 | 7.3750394313469254,
|
---|
192 | 7.3837042924740528,
|
---|
193 | 7.3923174227787607,
|
---|
194 | 7.4008794362821844,
|
---|
195 | 7.4093909361377026,
|
---|
196 | 7.4178525148858991,
|
---|
197 | 7.4262647547020979,
|
---|
198 | 7.4346282276367255,
|
---|
199 | 7.4429434958487288,
|
---|
200 | 7.4512111118323299,
|
---|
201 | 7.4594316186372973,
|
---|
202 | 7.4676055500829976,
|
---|
203 | 7.4757334309663976,
|
---|
204 | 7.4838157772642564,
|
---|
205 | 7.4918530963296748,
|
---|
206 | 7.4998458870832057,
|
---|
207 | 7.5077946401986964,
|
---|
208 | 7.5156998382840436,
|
---|
209 | 7.5235619560570131,
|
---|
210 | 7.5313814605163119,
|
---|
211 | 7.5391588111080319,
|
---|
212 | 7.5468944598876373,
|
---|
213 | 7.5545888516776376,
|
---|
214 | 7.5622424242210728,
|
---|
215 | 7.5698556083309478,
|
---|
216 | 7.5774288280357487,
|
---|
217 | 7.5849625007211561,
|
---|
218 | 7.5924570372680806,
|
---|
219 | 7.5999128421871278,
|
---|
220 | 7.6073303137496113,
|
---|
221 | 7.6147098441152075,
|
---|
222 | 7.6220518194563764,
|
---|
223 | 7.6293566200796095,
|
---|
224 | 7.6366246205436488,
|
---|
225 | 7.6438561897747244,
|
---|
226 | 7.6510516911789290,
|
---|
227 | 7.6582114827517955,
|
---|
228 | 7.6653359171851765,
|
---|
229 | 7.6724253419714952,
|
---|
230 | 7.6794800995054464,
|
---|
231 | 7.6865005271832185,
|
---|
232 | 7.6934869574993252,
|
---|
233 | 7.7004397181410926,
|
---|
234 | 7.7073591320808825,
|
---|
235 | 7.7142455176661224,
|
---|
236 | 7.7210991887071856,
|
---|
237 | 7.7279204545631996,
|
---|
238 | 7.7347096202258392,
|
---|
239 | 7.7414669864011465,
|
---|
240 | 7.7481928495894596,
|
---|
241 | 7.7548875021634691,
|
---|
242 | 7.7615512324444795,
|
---|
243 | 7.7681843247769260,
|
---|
244 | 7.7747870596011737,
|
---|
245 | 7.7813597135246608,
|
---|
246 | 7.7879025593914317,
|
---|
247 | 7.7944158663501062,
|
---|
248 | 7.8008998999203047,
|
---|
249 | 7.8073549220576037,
|
---|
250 | 7.8137811912170374,
|
---|
251 | 7.8201789624151887,
|
---|
252 | 7.8265484872909159,
|
---|
253 | 7.8328900141647422,
|
---|
254 | 7.8392037880969445,
|
---|
255 | 7.8454900509443757,
|
---|
256 | 7.8517490414160571,
|
---|
257 | 7.8579809951275719,
|
---|
258 | 7.8641861446542798,
|
---|
259 | 7.8703647195834048,
|
---|
260 | 7.8765169465650002,
|
---|
261 | 7.8826430493618425,
|
---|
262 | 7.8887432488982601,
|
---|
263 | 7.8948177633079446,
|
---|
264 | 7.9008668079807496,
|
---|
265 | 7.9068905956085187,
|
---|
266 | 7.9128893362299619,
|
---|
267 | 7.9188632372745955,
|
---|
268 | 7.9248125036057813,
|
---|
269 | 7.9307373375628867,
|
---|
270 | 7.9366379390025719,
|
---|
271 | 7.9425145053392399,
|
---|
272 | 7.9483672315846778,
|
---|
273 | 7.9541963103868758,
|
---|
274 | 7.9600019320680806,
|
---|
275 | 7.9657842846620870,
|
---|
276 | 7.9715435539507720,
|
---|
277 | 7.9772799234999168,
|
---|
278 | 7.9829935746943104,
|
---|
279 | 7.9886846867721664,
|
---|
280 | 7.9943534368588578,
|
---|
281 | }
|
---|
282 |
|
---|
283 | /* Faster logarithm for small integers, with the property of log2(0) == 0. */
|
---|
284 | func fastLog2(v uint) float64 {
|
---|
285 | if v < uint(len(kLog2Table)) {
|
---|
286 | return float64(kLog2Table[v])
|
---|
287 | }
|
---|
288 |
|
---|
289 | return math.Log2(float64(v))
|
---|
290 | }
|
---|
Note:
See
TracBrowser
for help on using the repository browser.