libavutil/inverse.c
Go to the documentation of this file.
00001 /*
00002  * Inverse table
00003  * Copyright (c) 2002-2004 Michael Niedermayer <michaelni@gmx.at>
00004  *
00005  * This file is part of FFmpeg.
00006  *
00007  * FFmpeg is free software; you can redistribute it and/or
00008  * modify it under the terms of the GNU Lesser General Public
00009  * License as published by the Free Software Foundation; either
00010  * version 2.1 of the License, or (at your option) any later version.
00011  *
00012  * FFmpeg is distributed in the hope that it will be useful,
00013  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00014  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00015  * Lesser General Public License for more details.
00016  *
00017  * You should have received a copy of the GNU Lesser General Public
00018  * License along with FFmpeg; if not, write to the Free Software
00019  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
00020  */
00021 
00022 #include <stdint.h>
00023 
00024 /* a*inverse[b]>>32 == a/b for all 0<=a<=16909558 && 2<=b<=256
00025  * for a>16909558, is an overestimate by less than 1 part in 1<<24 */
00026 const uint32_t ff_inverse[257]={
00027          0, 4294967295U,2147483648U,1431655766, 1073741824,  858993460,  715827883,  613566757,
00028  536870912,  477218589,  429496730,  390451573,  357913942,  330382100,  306783379,  286331154,
00029  268435456,  252645136,  238609295,  226050911,  214748365,  204522253,  195225787,  186737709,
00030  178956971,  171798692,  165191050,  159072863,  153391690,  148102321,  143165577,  138547333,
00031  134217728,  130150525,  126322568,  122713352,  119304648,  116080198,  113025456,  110127367,
00032  107374183,  104755300,  102261127,   99882961,   97612894,   95443718,   93368855,   91382283,
00033   89478486,   87652394,   85899346,   84215046,   82595525,   81037119,   79536432,   78090315,
00034   76695845,   75350304,   74051161,   72796056,   71582789,   70409300,   69273667,   68174085,
00035   67108864,   66076420,   65075263,   64103990,   63161284,   62245903,   61356676,   60492498,
00036   59652324,   58835169,   58040099,   57266231,   56512728,   55778797,   55063684,   54366675,
00037   53687092,   53024288,   52377650,   51746594,   51130564,   50529028,   49941481,   49367441,
00038   48806447,   48258060,   47721859,   47197443,   46684428,   46182445,   45691142,   45210183,
00039   44739243,   44278014,   43826197,   43383509,   42949673,   42524429,   42107523,   41698712,
00040   41297763,   40904451,   40518560,   40139882,   39768216,   39403370,   39045158,   38693400,
00041   38347923,   38008561,   37675152,   37347542,   37025581,   36709123,   36398028,   36092163,
00042   35791395,   35495598,   35204650,   34918434,   34636834,   34359739,   34087043,   33818641,
00043   33554432,   33294321,   33038210,   32786010,   32537632,   32292988,   32051995,   31814573,
00044   31580642,   31350127,   31122952,   30899046,   30678338,   30460761,   30246249,   30034737,
00045   29826162,   29620465,   29417585,   29217465,   29020050,   28825284,   28633116,   28443493,
00046   28256364,   28071682,   27889399,   27709467,   27531842,   27356480,   27183338,   27012373,
00047   26843546,   26676816,   26512144,   26349493,   26188825,   26030105,   25873297,   25718368,
00048   25565282,   25414008,   25264514,   25116768,   24970741,   24826401,   24683721,   24542671,
00049   24403224,   24265352,   24129030,   23994231,   23860930,   23729102,   23598722,   23469767,
00050   23342214,   23216040,   23091223,   22967740,   22845571,   22724695,   22605092,   22486740,
00051   22369622,   22253717,   22139007,   22025474,   21913099,   21801865,   21691755,   21582751,
00052   21474837,   21367997,   21262215,   21157475,   21053762,   20951060,   20849356,   20748635,
00053   20648882,   20550083,   20452226,   20355296,   20259280,   20164166,   20069941,   19976593,
00054   19884108,   19792477,   19701685,   19611723,   19522579,   19434242,   19346700,   19259944,
00055   19173962,   19088744,   19004281,   18920561,   18837576,   18755316,   18673771,   18592933,
00056   18512791,   18433337,   18354562,   18276457,   18199014,   18122225,   18046082,   17970575,
00057   17895698,   17821442,   17747799,   17674763,   17602325,   17530479,   17459217,   17388532,
00058   17318417,   17248865,   17179870,   17111424,   17043522,   16976156,   16909321,   16843010,
00059   16777216
00060 };