35 #define MAX_SEGMENTS 2
38 #define MAX_EXPONENTS 304
39 #define MAX_MANTISSAS 1024
41 #define MAX_MSTR_EXP 2
42 #define MAX_BIAS_EXP 50
94 5, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4,
95 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5, 5
109 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
110 2, 2, 2, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 6, 6,
115 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2,
116 2, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 5, 5, 6, 7, 7,
117 8, 9, 10, 11, 12, 13, 15, 16, 18, 20, 22, 25,
121 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3,
122 3, 4, 4, 5, 5, 6, 6, 7, 8, 9, 9, 10, 12, 13, 14, 16,
123 18, 19, 22, 24, 27, 29, 32, 36, 40, 44, 49, 54, 60, 66, 74, 82,
130 { 50, { 27, 23 }, 0, 0,
nb_mantissa_50, 2, 0, 1152, 0, 1408, 0 },
134 { 38, { 12, 26 }, 0, 0,
nb_mantissa_38, 0, 0, 192, 0, 256, 0 },
135 { 38, { 12, 26 }, 38, 128,
nb_mantissa_38, 0, 1, 256, 64, 448, 0 },
136 { 38, { 12, 26 }, 76, 256,
nb_mantissa_38, 0, 1, 256, 192, 704, 0 },
137 { 38, { 12, 26 }, 114, 384,
nb_mantissa_38, 0, 1, 256, 320, 0, 0 },
138 { 38, { 12, 26 }, 152, 512,
nb_mantissa_38, 0, 1, 256, 448, 0, 0 },
139 { 38, { 12, 26 }, 190, 640,
nb_mantissa_38, 0, 1, 256, 576, 0, 0 },
140 { 38, { 12, 26 }, 228, 768,
nb_mantissa_38, 0, 1, 256, 704, 0, 0 },
141 { 38, { 12, 26 }, 266, 896,
nb_mantissa_38, 0, 1, 256, 832, 0, 0 },
145 { 38, { 12, 26 }, 0, 0,
nb_mantissa_38, 0, 0, 192, 0, 256, 0 },
146 { 38, { 12, 26 }, 38, 128,
nb_mantissa_38, 0, 1, 256, 64, 448, 0 },
147 { 38, { 12, 26 }, 76, 256,
nb_mantissa_38, 0, 1, 256, 192, 704, 0 },
148 { 38, { 12, 26 }, 114, 384,
nb_mantissa_38, 0, 1, 256, 320, 0, 0 },
149 { 38, { 12, 26 }, 152, 512,
nb_mantissa_38, 0, 1, 256, 448, 0, 0 },
150 { 38, { 12, 26 }, 190, 640,
nb_mantissa_38, 0, 1, 256, 576, 0, 0 },
151 { 44, { 19, 25 }, 228, 768,
nb_mantissa_44, 1, 1, 448, 704, 960, 64 },
155 { 21, { 21 }, 0, 0,
nb_mantissa_50, 2, 0, 1152, 0, 1408, 0 },
159 { 50, { 27, 23 }, 0, 0,
nb_mantissa_50, 2, 2, 1152, 0, 1408, 896 },
163 { 38, { 12, 26 }, 0, 0,
nb_mantissa_38, 0, 1, 256, 64, 0, 0 },
164 { 38, { 12, 26 }, 38, 128,
nb_mantissa_38, 0, 1, 256, 192, 0, 0 },
165 { 38, { 12, 26 }, 76, 256,
nb_mantissa_38, 0, 1, 256, 320, 0, 0 },
166 { 38, { 12, 26 }, 114, 384,
nb_mantissa_38, 0, 1, 256, 448, 0, 0 },
167 { 38, { 12, 26 }, 152, 512,
nb_mantissa_38, 0, 1, 256, 576, 0, 0 },
168 { 38, { 12, 26 }, 190, 640,
nb_mantissa_38, 0, 1, 256, 704, 3008, 0 },
169 { 38, { 12, 26 }, 228, 768,
nb_mantissa_38, 0, 1, 256, 832, 2752, 0 },
170 { 38, { 12, 26 }, 266, 896,
nb_mantissa_38, 0, 2, 192, 960, 2560, 64 },
174 { 44, { 19, 25 }, 0, 0,
nb_mantissa_44, 1, 1, 448, 0, 3264, 0 },
175 { 38, { 12, 26 }, 44, 256,
nb_mantissa_38, 0, 1, 256, 320, 0, 0 },
176 { 38, { 12, 26 }, 82, 384,
nb_mantissa_38, 0, 1, 256, 448, 0, 0 },
177 { 38, { 12, 26 }, 120, 512,
nb_mantissa_38, 0, 1, 256, 576, 0, 0 },
178 { 38, { 12, 26 }, 158, 640,
nb_mantissa_38, 0, 1, 256, 704, 3008, 0 },
179 { 38, { 12, 26 }, 196, 768,
nb_mantissa_38, 0, 1, 256, 832, 2752, 0 },
180 { 38, { 12, 26 }, 234, 896,
nb_mantissa_38, 0, 2, 192, 960, 2560, 64 },
184 { 21, { 21 }, 0, 0,
nb_mantissa_50, 2, 2, 1152, 0, 1408, 896 },
193 { 0, 0, 0, 0 }, { 2, 1, 1, 1 }, { 3, 2, 1, 1 }, { 4, 3, 2, 1 },
194 { 5, 4, 3, 2 }, { 6, 5, 4, 3 }, { 7, 6, 5, 4 }, { 8, 7, 6, 5 },
195 { 9, 8, 7, 6 }, { 10, 9, 8, 7 }, { 11, 10, 9, 8 }, { 12, 11, 10, 9 },
196 { 13, 12, 11, 10 }, { 14, 13, 12, 11 }, { 15, 14, 13, 12 }, { 16, 15, 14, 13 },
200 { 0, 0, 0, 0 }, { 2, 1, 2, 2 }, { 3, 2, 3, 3 }, { 4, 3, 4, 4 },
201 { 5, 4, 5, 5 }, { 6, 5, 6, 6 }, { 7, 6, 7, 7 }, { 8, 7, 8, 8 },
202 { 9, 8, 9, 9 }, { 10, 9, 10, 10 }, { 11, 10, 11, 11 }, { 12, 11, 12, 12 },
203 { 13, 12, 13, 13 }, { 14, 13, 14, 14 }, { 15, 14, 15, 15 }, { 16, 15, 16, 16 },
207 0.00161569379826, 0.00185748233347, 0.00198562758548, 0.00207834078104,
208 0.00215717748523, 0.00223067096393, 0.00230299213147, 0.00237651215396,
209 0.00245275561606, 0.00253281402069, 0.00261754673613, 0.00270768786168,
210 0.00280390761895, 0.00290684998656, 0.00301715751161, 0.00313548872798,
211 0.00326253122934, 0.00339901215995, 0.00354570716636, 0.00370344845023,
212 0.00387313232586, 0.00405572653911, 0.00425227750970, 0.00446391759265,
213 0.00469187240551, 0.00493746822816, 0.00520213944619, 0.00548743597507,
214 0.00579503056737, 0.00612672586953, 0.00648446105606, 0.00687031782873,
215 0.00728652552677, 0.00773546505205, 0.00821967127415, 0.00874183354619,
216 0.00930479393832, 0.00991154278653, 0.01056521116692, 0.01126905994567,
217 0.01202646513050, 0.01284089936559, 0.01371590957417, 0.01465509096066,
218 0.01566205783408, 0.01674041199523, 0.01789370972358, 0.01912542867865,
219 0.02043893626265, 0.02183746113793, 0.02332406961796, 0.02490164852364,
220 0.02657289580178, 0.02834031974193, 0.03020624702903, 0.03217283918354,
221 0.03424211623810, 0.03641598586180, 0.03869627565015, 0.04108476601498,
222 0.04358322107390, 0.04619341515939, 0.04891715301882, 0.05175628239149,
224 0.05471237327267, 0.05778734733755, 0.06098291402413, 0.06430101352084,
225 0.06774345212186, 0.07131188644726, 0.07500780649199, 0.07883251748595,
226 0.08278712056651, 0.08687249228061, 0.09108926295730, 0.09543779401074,
227 0.09991815425851, 0.10453009536427, 0.10927302653894, 0.11414598865987,
228 0.11914762799220, 0.12427616972097, 0.12952939152560, 0.13490459744934,
229 0.14039859233595, 0.14600765712201, 0.15172752528722, 0.15755336077528,
230 0.16347973770491, 0.16950062219342, 0.17560935661442, 0.18179864660619,
231 0.18806055113821, 0.19438647593012, 0.20076717050010, 0.20719272909882,
232 0.21365259576030, 0.22013557367283, 0.22662983904194, 0.23312295958328,
233 0.23960191774666, 0.24605313873388, 0.25246252333253, 0.25881548554631,
234 0.26509699495987, 0.27129162373316, 0.27738359807707, 0.28335685401987,
235 0.28919509723179, 0.29488186663467, 0.30040060148455, 0.30573471157819,
236 0.31086765019993, 0.31578298939317, 0.32046449711227, 0.32489621578468,
237 0.32906254179156, 0.33294830535654, 0.33653885031840, 0.33982011325336,
238 0.34277870140679, 0.34540196889300, 0.34767809062480, 0.34959613344194,
239 0.35114612391958, 0.35231911235422, 0.35310723244504, 0.35350375621308,
241 0.35350314372945, 0.35310108725579, 0.35229454943591, 0.35108179521634,
242 0.34946241721522, 0.34743735430290, 0.34500890320420, 0.34218072298001,
243 0.33895783229541, 0.33534659943168, 0.33135472505060, 0.32699121776996,
244 0.32226636266000, 0.31719168282019, 0.31177989424432, 0.30604485422875,
245 0.30000150362379, 0.29366580327088, 0.28705466500775, 0.28018587766131,
246 0.27307802848095, 0.26575042049535, 0.25822298630189, 0.25051619882000,
247 0.24265097955783, 0.23464860495522, 0.22653061137548, 0.21831869932335,
248 0.21003463746705, 0.20170016703857, 0.19333690717811, 0.18496626177620,
249 0.17660932835062, 0.16828680947474, 0.16001892724986, 0.15182534128597,
250 0.14372507062477, 0.13573642000364, 0.12787691082233, 0.12016321713317,
251 0.11261110693234, 0.10523538898282, 0.09804986534955, 0.09106728977263,
252 0.08429933194438, 0.07775654768810, 0.07144835495683, 0.06538301547324,
253 0.05956762170687, 0.05400808871425, 0.04870915012107, 0.04367435714993,
254 0.03890607899172, 0.03440550179663, 0.03017262174627, 0.02620622428513,
255 0.02250383492507, 0.01906161305732, 0.01587412848221, 0.01293388032354,
256 0.01023019677288, 0.00774641320626, 0.00545109736891, 0.00325868651263,
260 0.00018861094606, 0.00033433010202, 0.00050309624485, 0.00070306161748,
261 0.00093995174533, 0.00121913067128, 0.00154606505568, 0.00192647806126,
262 0.00236641248692, 0.00287225985240, 0.00345077377440, 0.00410907465023,
263 0.00485464855241, 0.00569534163219, 0.00663935063508, 0.00769520981249,
264 0.00887177436246, 0.01017820046395, 0.01162392194150, 0.01321862359335,
265 0.01497221122468, 0.01689477844427, 0.01899657030441, 0.02128794388846,
266 0.02377932597692, 0.02648116795039, 0.02940389811590, 0.03255787167130,
267 0.03595331854986, 0.03960028941437, 0.04350860009563, 0.04768777479454,
268 0.05214698838949, 0.05689500821121, 0.06194013566525, 0.06729014809766,
269 0.07295224131210, 0.07893297315602, 0.08523820859989, 0.09187306673620,
270 0.09884187012422, 0.10614809690222, 0.11379433608064, 0.12178224641797,
271 0.13011251926531, 0.13878484574660, 0.14779788861830, 0.15714925912610,
272 0.16683549914631, 0.17685206886673, 0.18719334022589, 0.19785259629099,
273 0.20882203671372, 0.22009278936030, 0.23165492816694, 0.24349749722585,
274 0.25560854105961, 0.26797514099368, 0.28058345748882, 0.29341877824732,
275 0.30646557185942, 0.31970754671026, 0.33312771482295, 0.34670846027024,
277 0.36043161174692, 0.37427851885723, 0.38823013163645, 0.40226708279486,
278 0.41636977214436, 0.43051845264462, 0.44469331748632, 0.45887458761470,
279 0.47304259908636, 0.48717788964798, 0.50126128392546, 0.51527397661778,
280 0.52919761310050, 0.54301436685998, 0.55670701320069, 0.57025899869448,
281 0.58365450587230, 0.59687851269542, 0.60991684638414, 0.62275623122793,
282 0.63538433005035, 0.64778977905593, 0.65996221584264, 0.67189230042379,
283 0.68357172916486, 0.69499324160511, 0.70615062019861, 0.71703868307548,
284 0.72765326998919, 0.73799122168099, 0.74805035295521, 0.75782941981995,
285 0.76732808110520, 0.77654685502339, 0.78548707118622, 0.79415081863423,
286 0.80254089047207, 0.81066072573188, 0.81851434910893, 0.82610630922734,
287 0.83344161609862, 0.84052567843230, 0.84736424144524, 0.85396332579459,
288 0.86032916822973, 0.86646816451999, 0.87238681516918, 0.87809167437532,
289 0.88358930263537, 0.88888622333073, 0.89398888356256, 0.89890361943564,
290 0.90363662591861, 0.90819393133744, 0.91258137648979, 0.91680459830070,
291 0.92086901787718, 0.92477983276087, 0.92854201312583, 0.93216030163834,
292 0.93563921662343, 0.93898305819384, 0.94219591693690, 0.94528168477979,
294 0.94823843319821, 0.95106834367330, 0.95377776558539, 0.95636718335775,
295 0.95883679961479, 0.96118650212341, 0.96341583179195, 0.96552395212906,
296 0.96750962060547, 0.96937116231768, 0.97110644638309, 0.97271286544154,
297 0.97418731862798, 0.97552619834964, 0.97672538116257, 0.97778022299974,
298 0.97868555895586, 0.97943570778357, 0.98002448120255, 0.98044519806866,
299 0.98069070339493, 0.98075339216123, 0.98062523779637, 0.98029782516478,
300 0.97976238784222, 0.97900984942031, 0.97803086854002, 0.97681588731895,
301 0.97535518280755, 0.97363892108474, 0.97165721358452, 0.96940017523145,
302 0.96685798395452, 0.96402094114589, 0.96087953263194, 0.95742448973047,
303 0.95364684997699, 0.94953801711660, 0.94508981997396, 0.94029456983253,
304 0.93514511597504, 0.92963489905951, 0.92375800202883, 0.91750919827624,
305 0.91088399681406, 0.90387868421832, 0.89649036314692, 0.88871698725397,
306 0.88055739234735, 0.87201132366062, 0.86307945913336, 0.85376342861693,
307 0.84406582894455, 0.83399023482637, 0.82354120554757, 0.81272428745995,
308 0.80154601230457, 0.79001389138101, 0.77813640562199, 0.76592299164227,
309 0.75338402384395, 0.74053079267526, 0.72737547915460, 0.71393112578527,
313 0.00326887936450, 0.00550242900936, 0.00786846643791, 0.01045683453520,
314 0.01330402120132, 0.01643221072863, 0.01985798040609, 0.02359509464766,
315 0.02765559221954, 0.03205025893128, 0.03678884369614, 0.04188015679495,
316 0.04733210987781, 0.05315172583924, 0.05934513287609, 0.06591755045290,
317 0.07287327156378, 0.08021564389822, 0.08794705152307, 0.09606889811179,
318 0.10458159240070, 0.11348453632940, 0.12277611617809, 0.13245369691511,
319 0.14251361989876, 0.15295120402567, 0.16376075037904, 0.17493555039885,
320 0.18646789757072, 0.19834910260891, 0.21056951208995, 0.22311853047787,
321 0.23598464546683, 0.24915545655419, 0.26261770674500, 0.27635731727778,
322 0.29035942525136, 0.30460842402318, 0.31908800624032, 0.33378120935681,
323 0.34867046348260, 0.36373764140285, 0.37896411059909, 0.39433078709788,
324 0.40981819096657, 0.42540650327031, 0.44107562429959, 0.45680523287270,
325 0.47257484651351, 0.48836388230077, 0.50415171818214, 0.51991775454258,
326 0.53564147581496, 0.55130251191887, 0.56688069931047, 0.58235614142007,
327 0.59770926827271, 0.61292089506118, 0.62797227945823, 0.64284517745255,
328 0.65752189749349, 0.67198535273209, 0.68621911114984, 0.70020744337099,
336 { 12, 8, 4, 0 }, { 14, 10, 6, 0 }, { 12, 8, 4, 0 }
342 128, 256, 384, 512, 640, 768, 896, 1024
348 { { 354, -1 }, { 425, 425 } },
349 { { 266, -1 }, { 320, -1 } },
350 { { 213, -1 }, { 256, -1 } }
355 142, 142, 142, 142, 142, 142, 142, 142, 142, 142,
356 142, 142, 142, 142, 142, 142, 142, 142, 142, 142,
357 142, 142, 142, 142, 142, 142, 142, 142, 142, 142,
358 142, 142, 142, 142, 142, 142, 142, 142,
360 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
361 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
362 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
363 -1, -1, -1, -1, -1, -1, -1, -1,
365 170, 170, 170, 170, 170, 170, 170, 170, 170, 170,
366 170, 170, 170, 170, 170, 170, 170, 170, 170, 170,
367 170, 170, 170, 170, 170, 170, 170, 170, 170, 170,
368 170, 170, 170, 170, 170, 170, 170, 170,
370 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
371 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
372 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
373 64, 64, 64, 64, 64, 64, 64, 64,
375 266, 266, 106, 106, 106, 106, 106, 106, 106, 106,
376 106, 106, 106, 106, 106, 106, 106, 106, 106, 106,
377 106, 106, 106, 106, 106, 106, 106, 106, 106, 106,
378 106, 106, 106, 106, 106, 106, 106, 106, 106, 106,
381 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
382 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
383 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
384 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
387 319, 319, 128, 128, 128, 128, 128, 128, 128, 128,
388 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
389 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
390 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
393 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
394 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
395 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
396 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
399 106, 106, 106, 106, 106, 106, 106, 106, 106, 106,
400 106, 106, 106, 106, 106, 106, 106, 106, 106, 106,
401 106, 106, 106, 106, 106, 106, 106, 106, 106, 106,
402 106, 106, 106, 106, 106, 106, 106, 106, 106, 106,
403 106, 106, 106, 106, 106, 106, 106, 106, 106, 106,
405 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
406 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
407 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
408 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
409 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
411 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
412 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
413 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
414 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
415 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
417 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
418 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
419 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
420 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
421 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
427 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
428 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
429 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
430 0, 1, 2, 4, 7, 11, 16, 29, 44, 59,
431 76, 94, 116, 142, 179, 221, 252, 285, 312, 334,
433 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
434 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
435 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
436 2, 5, 8, 10, 15, 28, 42, 57, 75, 93,
437 115, 140, 177, 219, 247, 280, 308, 330, 427, 533,
439 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
440 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
441 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
442 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
443 0, 2, 5, 8, 12, 21, 35, 51, 69, 89,
444 111, 138, 176, 220, 251, 284, 312, 334,
446 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
447 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
448 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
449 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,
450 5, 8, 11, 18, 33, 49, 65, 84, 106, 132,
451 168, 214, 245, 279, 308, 329, 427, 533,
453 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
454 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
455 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
456 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
457 0, 0, 0, 0, 0, 1, 4, 7, 10, 17,
458 31, 47, 65, 84, 107, 134, 171, 215, 250, 283,
461 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
462 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
463 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
464 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
465 0, 0, 0, 0, 3, 6, 9, 13, 27, 43,
466 60, 79, 100, 126, 160, 207, 242, 276, 307, 329,
473 3072, 3072, 3072, 3072, 3072, 3072, 1063, 1063, 1063, 1063,
474 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063,
475 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063,
476 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063,
478 3072, 3072, 3072, 3072, 3072, 3072, 850, 850, 850, 850,
479 850, 850, 850, 850, 850, 850, 850, 850, 850, 850,
480 850, 850, 850, 850, 850, 850, 850, 850, 850, 850,
481 850, 850, 850, 850, 850, 850, 850, 850,
483 3072, 1212, 1212, 1212, 999, 999, 999, 999, 999, 999,
484 999, 999, 999, 999, 999, 999, 999, 999, 999, 999,
485 999, 999, 999, 999, 999, 999, 999, 999, 999, 999,
486 999, 999, 999, 999, 999, 999, 999, 999, 999, 999,
489 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
490 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
491 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
492 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
495 3072, 3072, 3072, 3072, 3072, 3072, 3072, 3072, 3072, 3072,
496 999, 999, 999, 999, 999, 999, 999, 999, 999, 999,
497 999, 999, 999, 999, 999, 999, 999, 999, 999, 999,
498 999, 999, 999, 999, 999, 999, 999, 999, 999, 999,
499 999, 999, 999, 999, 999, 999, 999, 999, 999, 999,
501 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
502 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
503 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
504 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
505 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
511 1403, 1141, 1000, 959, 948, 957, 946, 925, 899, 871,
512 843, 815, 789, 766, 745, 727, 705, 687, 681, 686,
513 701, 725, 768, 854, 940, 1018, 1075, 1103, 1111, 1106,
514 1098, 1105, 1142, 1237, 1419, 1721, 2169, 2805,
516 1401, 1130, 995, 957, 947, 955, 941, 918, 890, 861,
517 831, 803, 777, 754, 734, 717, 698, 684, 682, 692,
518 712, 743, 798, 894, 976, 1045, 1091, 1109, 1110, 1102,
519 1098, 1116, 1174, 1300, 1526, 1884, 2401, 3072,
521 1393, 1086, 974, 949, 957, 941, 913, 878, 843, 808,
522 777, 750, 727, 708, 695, 686, 681, 689, 714, 752,
523 811, 888, 971, 1044, 1087, 1108, 1110, 1102, 1098, 1115,
524 1172, 1290, 1489, 1812, 2293, 2964, 3072, 3072,
526 1412, 1343, 1141, 1047, 1000, 974, 959, 951, 948, 947,
527 957, 953, 946, 936, 925, 906, 878, 850, 822, 795,
528 771, 745, 719, 700, 687, 681, 685, 701, 733, 784,
529 885, 977, 1047, 1092, 1110, 1108, 1099, 1102, 1138, 1233,
530 1413, 1711, 2157, 2797,
532 1412, 1336, 1130, 1040, 995, 970, 957, 950, 947, 947,
533 955, 950, 941, 930, 918, 897, 868, 838, 810, 783,
534 759, 734, 710, 693, 684, 681, 690, 712, 752, 823,
535 924, 1009, 1069, 1102, 1111, 1104, 1098, 1111, 1168, 1295,
536 1518, 1873, 2388, 3072,
538 1411, 1293, 1086, 1009, 974, 957, 949, 947, 957, 951,
539 941, 928, 913, 896, 878, 852, 817, 785, 756, 732,
540 713, 695, 683, 682, 689, 710, 746, 811, 906, 992,
541 1061, 1099, 1111, 1106, 1098, 1107, 1155, 1266, 1471, 1799,
542 2277, 2945, 3072, 3072,
544 1431, 1412, 1403, 1379, 1343, 1293, 1229, 1180, 1125, 1075,
545 1040, 1014, 996, 979, 965, 957, 951, 948, 947, 957,
546 951, 940, 924, 903, 877, 846, 815, 785, 753, 725,
547 702, 686, 681, 689, 714, 760, 847, 947, 1028, 1083,
548 1108, 1109, 1101, 1100, 1132, 1222, 1402, 1705, 2160, 2803,
550 1431, 1412, 1401, 1375, 1336, 1278, 1215, 1168, 1115, 1066,
551 1032, 1008, 991, 975, 962, 954, 950, 947, 947, 955,
552 948, 935, 916, 894, 866, 835, 803, 772, 742, 715,
553 695, 683, 683, 697, 729, 784, 887, 982, 1054, 1096,
554 1111, 1106, 1098, 1107, 1159, 1281, 1505, 1865, 2391, 3072,
556 1427, 1411, 1393, 1353, 1293, 1215, 1160, 1118, 1072, 1031,
557 1003, 984, 971, 960, 952, 948, 947, 957, 952, 941,
558 924, 902, 876, 847, 815, 781, 750, 723, 700, 685,
559 681, 691, 719, 766, 858, 958, 1039, 1089, 1109, 1108,
560 1099, 1102, 1141, 1245, 1442, 1766, 2250, 2930, 3072, 3072,
565 { -21, -197, -271, -466, 32767, 32767, 32767 },
566 { -197, -29, -244, -271, -540, 32767, 32767 },
567 { -271, -244, -29, -249, -271, -593, 32767 },
568 { -466, -271, -249, -29, -251, -271, -632 },
569 { -540, -271, -251, -29, -251, -271, -664 },
570 { -593, -271, -251, -29, -252, -271, -690 },
571 { -632, -271, -252, -29, -252, -271, -711 },
572 { -664, -271, -252, -29, -252, -271, -730 },
573 { -690, -271, -252, -29, -252, -271, -745 },
574 { -711, -271, -252, -29, -253, -271, -759 },
575 { -730, -271, -253, -29, -253, -271, -771 },
579 -192, -320, -448, -512, -448, -320, -192,
583 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 52, 51, 50,
584 49, 48, 47, 47, 46, 45, 44, 44, 43, 42, 41, 41, 40, 39, 38, 38,
585 37, 36, 36, 35, 35, 34, 33, 33, 32, 32, 31, 30, 30, 29, 29, 28,
586 28, 27, 27, 26, 26, 25, 25, 24, 24, 23, 23, 22, 22, 21, 21, 21,
587 20, 20, 19, 19, 19, 18, 18, 18, 17, 17, 17, 16, 16, 16, 15, 15,
588 15, 14, 14, 14, 13, 13, 13, 13, 12, 12, 12, 12, 11, 11, 11, 11,
589 10, 10, 10, 10, 10, 9, 9, 9, 9, 9, 8, 8, 8, 8, 8, 8,
590 7, 7, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 6, 5, 5,
591 5, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
592 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2,
593 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
594 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
595 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
600 0, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 4,
601 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 8,
602 8, 8, 8, 9, 9, 9, 9, 10, 10, 10, 10, 11, 11, 11, 11, 12,
603 12, 12, 12, 13, 13, 13, 13, 14, 14, 14, 14, 15, 15, 15, 15, 15,
616 if (nb_words >
s->input_size) {
621 s->input += nb_words *
s->word_bytes;
622 s->input_size -= nb_words;
628 if (
s->key_present) {
629 const uint8_t *
key =
s->input;
641 if (
s->metadata.mtd_ext_size)
642 return skip_input(
s,
s->key_present +
s->metadata.mtd_ext_size + 1);
652 for (
i = 0;
i <
c->nb_mstr_exp;
i++)
655 for (
i = 0;
i <
g->nb_exponent;
i++)
658 for (
i = k = 0;
i <
c->nb_mstr_exp;
i++)
659 for (j = 0; j <
g->nb_bias_exp[
i]; j++, k++)
660 c->exponents[
g->exp_ofs + k] = mstr_exp[
i] + bias_exp[k];
668 for (
i = 0, p =
NULL,
g =
c->groups; i < c->nb_groups;
i++, p =
g,
g++) {
670 if (
c->exp_strategy[
i]) {
673 memcpy(
c->exponents +
g->exp_ofs,
675 g->nb_exponent *
sizeof(
c->exponents[0]));
690 int lwc_val[17] = { 0 };
693 for (
i = 0;
i < 11;
i++) {
698 for (j =
FFMAX(
i - 3, 0), k = 0; j <=
i + 3; j++, k++) {
707 if (msk_val[
i] < thr) {
708 for (j =
FFMAX(max_j - 3, 0),
709 k =
FFMAX(3 - max_j, 0);
710 j <= max_j + 3; j++, k++)
715 for (
i = 0;
i < 16;
i++) {
716 int v =
FFMAX(lwc_val[
i], -512);
717 msk_val[
i] =
FFMAX(msk_val[
i] + v, 0);
723 int fg_spc,
int fg_ofs,
int msk_mod,
int snr_ofs)
735 const uint16_t *fast_decay =
fast_decay_tab[nb_code][dc_code][msk_mod];
740 for (
i = 0;
i < nb_exponent;
i++)
741 psd_val[
i] = (48 -
exp[
i]) * 64;
744 for (
i = 0;
i < nb_exponent;
i++) {
745 fast_leak =
log_add(fast_leak - fast_decay[
i],
746 psd_val[
i] - fast_gain + fast_gain_adj[
i]);
747 slow_leak =
log_add(slow_leak - slow_decay,
748 psd_val[
i] - slow_gain[
i]);
749 msk_val[
i] =
FFMAX(fast_leak, slow_leak);
754 fast_leak =
log_add(fast_leak - misc_decay, psd_val[
i] - fast_gain);
755 msk_val[
i] =
FFMAX(msk_val[
i], fast_leak);
758 for (
i = 0;
i < nb_exponent;
i++)
759 msk_val[
i] =
FFMAX(msk_val[
i], hearing_thresh[
i]);
764 for (
i = 0;
i < nb_exponent;
i++) {
765 int v = 16 * (snr_ofs - 64) + psd_val[
i] - msk_val[
i] >> 5;
778 for (
i = 0;
i <
c->nb_groups;
i++) {
780 if (bap_strategy[
i]) {
785 fg_spc[
i] = fg_spc[
i - 1];
786 fg_ofs[
i] = fg_ofs[
i - 1];
787 msk_mod[
i] = msk_mod[
i - 1];
798 memset(
c->bap, 0,
sizeof(
c->bap));
802 for (
i = 0, p =
NULL,
g =
c->groups; i < c->nb_groups;
i++, p =
g,
g++) {
803 if (
c->exp_strategy[
i] || bap_strategy[
i]) {
805 c->exponents +
g->exp_ofs,
c->bap +
g->exp_ofs,
806 fg_spc[
i], fg_ofs[
i], msk_mod[
i], snr_ofs);
808 memcpy(
c->bap +
g->exp_ofs,
810 g->nb_exponent *
sizeof(
c->bap[0]));
822 for (
i = 0, p =
NULL,
g =
c->groups; i < c->nb_groups;
i++, p =
g,
g++) {
826 if (start >
g->nb_exponent) {
831 for (j = 0; j < start; j++)
832 c->idx[
g->exp_ofs + j] = 0;
834 for (; j <
g->nb_exponent; j++)
837 memcpy(
c->idx +
g->exp_ofs,
839 g->nb_exponent *
sizeof(
c->idx[0]));
841 memset(
c->idx +
g->exp_ofs, 0,
g->nb_exponent *
sizeof(
c->idx[0]));
853 for (
i = 0,
g =
c->groups; i < c->nb_groups;
i++,
g++) {
854 float *mnt =
c->mantissas +
g->mnt_ofs;
856 for (j = 0; j <
g->nb_exponent; j++) {
857 int bap =
c->bap[
g->exp_ofs + j];
858 int idx =
c->idx[
g->exp_ofs + j];
860 int count =
g->nb_mantissa[j];
865 memset(mnt, 0, count *
sizeof(*mnt));
868 int escape = -(1 << size1 - 1);
870 for (k = 0; k < count; k++)
873 for (k = 0; k < count; k++) {
874 if (
values[k] != escape) {
888 for (k = 0; k < count; k++)
895 for (; j <
g->nb_exponent +
c->bw_code; j++) {
896 memset(mnt, 0,
g->nb_mantissa[j] *
sizeof(*mnt));
897 mnt +=
g->nb_mantissa[j];
910 if (
s->metadata.rev_id[ch] > 1) {
921 if (
c->gr_code == 3) {
930 for (
i = 0;
i <
c->nb_groups;
i++) {
932 if (
c->nb_mstr_exp == 2) {
933 c->groups[
i].nb_exponent -=
c->bw_code;
934 c->groups[
i].nb_bias_exp[1] -=
c->bw_code;
963 for (ch = start; ch < end; ch++) {
964 if (!
s->metadata.ch_size[ch]) {
965 s1->channels[seg_id][ch].nb_groups = 0;
974 s1->channels[seg_id][ch].nb_groups = 0;
986 if (
s->metadata.meter_size)
987 return skip_input(
s,
s->key_present +
s->metadata.meter_size + 1);
994 av_tx_fn imdct_fn =
s1->imdct_fn[
g->imdct_phs == 1][
g->imdct_idx];
998 switch (
g->imdct_phs) {
1001 for (
int i = 0;
i < n2;
i++)
1009 for (
int i = 0;
i < n2;
i++)
1024 memset(
result, 0, 1152 *
sizeof(
float));
1025 for (
i = 0,
g =
c->groups; i < c->nb_groups;
i++,
g++) {
1027 float *dst =
result +
g->dst_ofs;
1031 s1->fdsp->vector_fmul_add(dst,
src,
win, dst,
g->win_len);
1034 for (
i = 0;
i < 256;
i++)
1036 for (
i = 256;
i < 896;
i++)
1038 for (
i = 0;
i < 256;
i++)
1044 if (begin == 960 && end == 960)
1062 const uint8_t *reorder;
1089 int *got_frame_ptr,
AVPacket *avpkt)
1098 if (
s->metadata.nb_programs > 1 && !
s->metadata.multi_prog_warned) {
1100 "channels will be output in native order.\n",
1101 s->metadata.nb_programs,
s->metadata.prog_conf);
1102 s->metadata.multi_prog_warned = 1;
1106 switch (
s->metadata.nb_channels) {
1125 i =
s->metadata.nb_channels / 2;
1126 j =
s->metadata.nb_channels;
1150 memset(
s->history, 0,
sizeof(
s->history));
1157 for (
int i = 0;
i < 3;
i++) {
1171 for (
i = 1;
i < 17;
i++)
1174 for (
i = 2;
i < 16;
i++) {
1184 for (
i = 1;
i < 17;
i++) {
1188 for (j = 1; j < 4; j++)
1194 for (
i = 0;
i < 25;
i++) {
1199 for (
i = 1;
i < 1024;
i++)
1204 for (
i = 0;
i < 128;
i++)
1208 for (
i = 0;
i < 192;
i++)
1212 for (
i = 0;
i < 192;
i++)
1214 for (
i = 0;
i < 64;
i++)
1218 for (
i = 0;
i < 64;
i++)
1220 for (
i = 0;
i < 192;
i++)
1224 for (
i = 0;
i < 128;
i++)
1226 for (
i = 0;
i < 64;
i++)
1231 for (
i = 0;
i < 640;
i++)
1233 for (
i = 0;
i < 256;
i++)
1237 for (
i = 0;
i < 192;
i++)
1241 for (
i = 0;
i < 256;
i++)
1245 for (
i = 0;
i < 256;
i++)
1249 for (
i = 0;
i < 448;
i++)
1263 for (
int i = 0;
i < 3;
i++) {
1275 s->dectx.metadata.multi_prog_warned =
s->dectx.metadata.output_channel_order ==
CHANNEL_ORDER_CODED;
1276 s->dectx.avctx =
s->avctx = avctx;
1280 #define OFFSET(x) offsetof(DBEDecodeContext, x)
1281 #define FLAGS (AV_OPT_FLAG_DECODING_PARAM | AV_OPT_FLAG_AUDIO_PARAM)
1283 {
"channel_order",
"Order in which the channels are to be exported",
1288 {
"coded",
"order in which the channels are coded in the bitstream",
1302 .
p.
name =
"dolby_e",